fivocell 1.0.4 → 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,95 @@
1
+ export interface ModelProfile {
2
+ id?: number;
3
+ modelName: string;
4
+ taskType: string;
5
+ acceptanceRate: number;
6
+ rejectionRate: number;
7
+ avgTimeMs: number;
8
+ bestUseCases: string[];
9
+ worstUseCases: string[];
10
+ totalInteractions: number;
11
+ createdAt: string;
12
+ }
13
+ export interface ModelInteraction {
14
+ id?: number;
15
+ modelName: string;
16
+ taskType: string;
17
+ suggestion: string;
18
+ accepted: boolean;
19
+ rejectionReason?: string;
20
+ timeToAcceptMs?: number;
21
+ project: string;
22
+ createdAt: string;
23
+ }
24
+ export interface PromptRecord {
25
+ id?: number;
26
+ modelName: string;
27
+ taskType: string;
28
+ promptPattern: string;
29
+ successRate: number;
30
+ useCount: number;
31
+ avgIterations: number;
32
+ project: string;
33
+ createdAt: string;
34
+ }
35
+ export interface ToolComparison {
36
+ tool: string;
37
+ totalSessions: number;
38
+ acceptanceRate: number;
39
+ avgSessionMinutes: number;
40
+ taskBreakdown: Array<{
41
+ task: string;
42
+ count: number;
43
+ successRate: number;
44
+ }>;
45
+ bestFor: string[];
46
+ worstFor: string[];
47
+ recommendation: string;
48
+ }
49
+ export interface ToolSuggestion {
50
+ tool: string;
51
+ confidence: number;
52
+ reason: string;
53
+ successRate: number;
54
+ basedOnSessions: number;
55
+ }
56
+ export interface PromptSuggestion {
57
+ pattern: string;
58
+ tool: string;
59
+ confidence: number;
60
+ successRate: number;
61
+ example: string;
62
+ }
63
+ export interface ModelHistoryEntry {
64
+ tool: string;
65
+ taskType: string;
66
+ sessionsCount: number;
67
+ totalFilesTouched: number;
68
+ totalDecisions: number;
69
+ avgSessionMinutes: number;
70
+ lastUsed: string;
71
+ }
72
+ export declare function recordInteraction(params: {
73
+ modelName: string;
74
+ taskType: string;
75
+ suggestion: string;
76
+ accepted: boolean;
77
+ rejectionReason?: string;
78
+ timeToAcceptMs?: number;
79
+ project: string;
80
+ }): number;
81
+ export declare function getModelProfiles(): ModelProfile[];
82
+ export declare function compareTools(): ToolComparison[];
83
+ export declare function suggestTool(taskType: string): ToolSuggestion[];
84
+ export declare function recordPrompt(params: {
85
+ modelName: string;
86
+ taskType: string;
87
+ promptPattern: string;
88
+ success: boolean;
89
+ iterations: number;
90
+ project: string;
91
+ }): number;
92
+ export declare function suggestPrompt(taskType: string, modelName?: string): PromptSuggestion[];
93
+ export declare function buildToolSpecificContext(toolName: string): string;
94
+ export declare function getModelHistory(): ModelHistoryEntry[];
95
+ //# sourceMappingURL=cross-model-memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-model-memory.d.ts","sourceRoot":"","sources":["../src/cross-model-memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.recordInteraction = recordInteraction;
4
+ exports.getModelProfiles = getModelProfiles;
5
+ exports.compareTools = compareTools;
6
+ exports.suggestTool = suggestTool;
7
+ exports.recordPrompt = recordPrompt;
8
+ exports.suggestPrompt = suggestPrompt;
9
+ exports.buildToolSpecificContext = buildToolSpecificContext;
10
+ exports.getModelHistory = getModelHistory;
11
+ const database_1 = require("./core/database");
12
+ // ─── Model Profile Builder ───────────────────────────────────────────────────
13
+ function recordInteraction(params) {
14
+ (0, database_1.initializeDatabase)();
15
+ const db = (0, database_1.getDb)();
16
+ const now = new Date().toISOString();
17
+ const result = db.prepare(`INSERT INTO model_interactions (model_name, task_type, suggestion, accepted, rejection_reason, time_to_accept_ms, project, created_at)
18
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(params.modelName, params.taskType, params.suggestion, params.accepted ? 1 : 0, params.rejectionReason || null, params.timeToAcceptMs || null, params.project, now);
19
+ updateModelProfile(params.modelName, params.taskType);
20
+ return Number(result.lastInsertRowid);
21
+ }
22
+ function updateModelProfile(modelName, taskType) {
23
+ const db = (0, database_1.getDb)();
24
+ const stats = db.prepare("SELECT COUNT(*) as total, SUM(CASE WHEN accepted = 1 THEN 1 ELSE 0 END) as accepted, SUM(CASE WHEN accepted = 0 THEN 1 ELSE 0 END) as rejected, AVG(time_to_accept_ms) as avg_time FROM model_interactions WHERE model_name = ? AND task_type = ?").get(modelName, taskType);
25
+ if (!stats || stats.total === 0)
26
+ return;
27
+ const acceptanceRate = stats.total > 0 ? (stats.accepted || 0) / stats.total : 0;
28
+ const rejectionRate = stats.total > 0 ? (stats.rejected || 0) / stats.total : 0;
29
+ const bestCases = db.prepare("SELECT task_type, COUNT(*) as cnt FROM model_interactions WHERE model_name = ? AND accepted = 1 GROUP BY task_type ORDER BY cnt DESC LIMIT 3").all(modelName);
30
+ const worstCases = db.prepare("SELECT task_type, COUNT(*) as cnt FROM model_interactions WHERE model_name = ? AND accepted = 0 GROUP BY task_type ORDER BY cnt DESC LIMIT 3").all(modelName);
31
+ db.prepare(`INSERT OR REPLACE INTO model_profiles (model_name, task_type, acceptance_rate, rejection_rate, avg_time_ms, best_use_cases, worst_use_cases)
32
+ VALUES (?, ?, ?, ?, ?, ?, ?)`).run(modelName, taskType, Math.round(acceptanceRate * 100) / 100, Math.round(rejectionRate * 100) / 100, Math.round(stats.avg_time || 0), JSON.stringify(bestCases.map(b => b.task_type)), JSON.stringify(worstCases.map(w => w.task_type)));
33
+ }
34
+ function getModelProfiles() {
35
+ (0, database_1.initializeDatabase)();
36
+ const db = (0, database_1.getDb)();
37
+ const rows = db.prepare('SELECT mp.*, (SELECT COUNT(*) FROM model_interactions mi WHERE mi.model_name = mp.model_name) as total_interactions FROM model_profiles mp ORDER BY acceptance_rate DESC').all();
38
+ return rows.map(r => ({
39
+ id: Number(r.id),
40
+ modelName: String(r.model_name || ''),
41
+ taskType: String(r.task_type || ''),
42
+ acceptanceRate: Number(r.acceptance_rate || 0),
43
+ rejectionRate: Number(r.rejection_rate || 0),
44
+ avgTimeMs: Number(r.avg_time_ms || 0),
45
+ bestUseCases: safeJson(String(r.best_use_cases || '[]')) || [],
46
+ worstUseCases: safeJson(String(r.worst_use_cases || '[]')) || [],
47
+ totalInteractions: Number(r.total_interactions || 0),
48
+ createdAt: String(r.created_at || ''),
49
+ }));
50
+ }
51
+ // ─── Tool Performance Analyzer ───────────────────────────────────────────────
52
+ function compareTools() {
53
+ const db = (0, database_1.getDb)();
54
+ const tools = db.prepare('SELECT tool_name, COUNT(*) as sessions FROM sessions GROUP BY tool_name ORDER BY sessions DESC').all();
55
+ const comparisons = [];
56
+ for (const tool of tools) {
57
+ const sessions = db.prepare('SELECT files_touched, key_decisions, start_time, end_time FROM sessions WHERE tool_name = ? AND end_time IS NOT NULL').all(tool.tool_name);
58
+ let totalMinutes = 0;
59
+ let totalFiles = 0;
60
+ let totalDecisions = 0;
61
+ for (const s of sessions) {
62
+ const start = new Date(s.start_time).getTime();
63
+ const end = new Date(s.end_time).getTime();
64
+ totalMinutes += (end - start) / (1000 * 60);
65
+ try {
66
+ totalFiles += JSON.parse(s.files_touched).length;
67
+ totalDecisions += JSON.parse(s.key_decisions).length;
68
+ }
69
+ catch { /* skip */ }
70
+ }
71
+ const decisions = db.prepare("SELECT technology, was_right FROM decisions WHERE project IN (SELECT DISTINCT project FROM sessions WHERE tool_name = ?)").all(tool.tool_name);
72
+ const rightCount = decisions.filter(d => d.was_right === 1).length;
73
+ const acceptanceRate = decisions.length > 0 ? rightCount / decisions.length : 0.5;
74
+ const taskTypes = db.prepare("SELECT task_type, COUNT(*) as cnt, SUM(CASE WHEN accepted = 1 THEN 1 ELSE 0 END) as acc FROM model_interactions WHERE model_name = ? GROUP BY task_type").all(tool.tool_name);
75
+ const taskBreakdown = taskTypes.map(t => ({
76
+ task: t.task_type,
77
+ count: t.cnt,
78
+ successRate: t.cnt > 0 ? Math.round((t.acc / t.cnt) * 100) / 100 : 0,
79
+ }));
80
+ const bestTasks = taskBreakdown.filter(t => t.successRate >= 0.7).map(t => t.task);
81
+ const worstTasks = taskBreakdown.filter(t => t.successRate < 0.4).map(t => t.task);
82
+ let recommendation = '';
83
+ if (acceptanceRate >= 0.7)
84
+ recommendation = `${tool.tool_name} is a strong choice — ${Math.round(acceptanceRate * 100)}% decision success rate.`;
85
+ else if (acceptanceRate >= 0.5)
86
+ recommendation = `${tool.tool_name} is decent — ${Math.round(acceptanceRate * 100)}% success. Consider alternatives for critical tasks.`;
87
+ else
88
+ recommendation = `${tool.tool_name} has a ${Math.round(acceptanceRate * 100)}% success rate. Consider switching tools for better results.`;
89
+ comparisons.push({
90
+ tool: tool.tool_name,
91
+ totalSessions: tool.sessions,
92
+ acceptanceRate: Math.round(acceptanceRate * 100) / 100,
93
+ avgSessionMinutes: sessions.length > 0 ? Math.round(totalMinutes / sessions.length) : 0,
94
+ taskBreakdown,
95
+ bestFor: bestTasks,
96
+ worstFor: worstTasks,
97
+ recommendation,
98
+ });
99
+ }
100
+ return comparisons.sort((a, b) => b.acceptanceRate - a.acceptanceRate);
101
+ }
102
+ function suggestTool(taskType) {
103
+ const db = (0, database_1.getDb)();
104
+ const suggestions = [];
105
+ const toolStats = db.prepare("SELECT model_name, COUNT(*) as total, SUM(CASE WHEN accepted = 1 THEN 1 ELSE 0 END) as accepted FROM model_interactions WHERE task_type = ? GROUP BY model_name").all(taskType);
106
+ for (const t of toolStats) {
107
+ if (t.total < 1)
108
+ continue;
109
+ const successRate = t.total > 0 ? t.accepted / t.total : 0;
110
+ suggestions.push({
111
+ tool: t.model_name,
112
+ confidence: Math.min(0.95, 0.3 + t.total * 0.05),
113
+ reason: successRate >= 0.7
114
+ ? `${t.model_name} has ${Math.round(successRate * 100)}% success rate for ${taskType}`
115
+ : `${t.model_name} has only ${Math.round(successRate * 100)}% success for ${taskType} — consider alternatives`,
116
+ successRate: Math.round(successRate * 100) / 100,
117
+ basedOnSessions: t.total,
118
+ });
119
+ }
120
+ if (suggestions.length === 0) {
121
+ const allTools = db.prepare('SELECT tool_name, COUNT(*) as sessions FROM sessions GROUP BY tool_name ORDER BY sessions DESC').all();
122
+ for (const tool of allTools) {
123
+ suggestions.push({
124
+ tool: tool.tool_name,
125
+ confidence: 0.2,
126
+ reason: `No specific data for "${taskType}" with ${tool.tool_name} — using general session data`,
127
+ successRate: 0.5,
128
+ basedOnSessions: tool.sessions,
129
+ });
130
+ }
131
+ }
132
+ return suggestions.sort((a, b) => b.confidence - a.confidence);
133
+ }
134
+ // ─── Prompt Optimizer ────────────────────────────────────────────────────────
135
+ function recordPrompt(params) {
136
+ const db = (0, database_1.getDb)();
137
+ const now = new Date().toISOString();
138
+ const existing = db.prepare('SELECT id, success_rate, use_count, avg_iterations FROM prompt_history WHERE model_name = ? AND task_type = ? AND prompt_pattern = ?').get(params.modelName, params.taskType, params.promptPattern);
139
+ if (existing) {
140
+ const newCount = existing.use_count + 1;
141
+ const newSuccessRate = ((existing.success_rate * existing.use_count) + (params.success ? 1 : 0)) / newCount;
142
+ const newAvgIterations = ((existing.avg_iterations * existing.use_count) + params.iterations) / newCount;
143
+ db.prepare('UPDATE prompt_history SET success_rate = ?, use_count = ?, avg_iterations = ? WHERE id = ?').run(Math.round(newSuccessRate * 100) / 100, newCount, Math.round(newAvgIterations * 10) / 10, existing.id);
144
+ return existing.id;
145
+ }
146
+ const result = db.prepare('INSERT INTO prompt_history (model_name, task_type, prompt_pattern, success_rate, use_count, avg_iterations, project) VALUES (?, ?, ?, ?, ?, ?, ?)').run(params.modelName, params.taskType, params.promptPattern, params.success ? 1 : 0, 1, params.iterations, params.project);
147
+ return Number(result.lastInsertRowid);
148
+ }
149
+ function suggestPrompt(taskType, modelName) {
150
+ const db = (0, database_1.getDb)();
151
+ const query = modelName
152
+ ? 'SELECT * FROM prompt_history WHERE task_type = ? AND model_name = ? ORDER BY success_rate DESC, use_count DESC LIMIT 5'
153
+ : 'SELECT * FROM prompt_history WHERE task_type = ? ORDER BY success_rate DESC, use_count DESC LIMIT 5';
154
+ const params = modelName ? [taskType, modelName] : [taskType];
155
+ const rows = db.prepare(query).all(...params);
156
+ return rows.map(r => ({
157
+ pattern: String(r.prompt_pattern || ''),
158
+ tool: String(r.model_name || ''),
159
+ confidence: Number(r.success_rate || 0),
160
+ successRate: Number(r.success_rate || 0),
161
+ example: `Used ${r.use_count} times, ${Math.round(Number(r.avg_iterations || 0))} avg iterations`,
162
+ }));
163
+ }
164
+ // ─── Model-Specific @Cell ────────────────────────────────────────────────────
165
+ function buildToolSpecificContext(toolName) {
166
+ const db = (0, database_1.getDb)();
167
+ const lines = [];
168
+ const profile = db.prepare('SELECT * FROM model_profiles WHERE model_name = ? ORDER BY acceptance_rate DESC LIMIT 1').get(toolName);
169
+ if (profile) {
170
+ const bestCases = (safeJson(String(profile.best_use_cases || '[]')) || []);
171
+ const worstCases = (safeJson(String(profile.worst_use_cases || '[]')) || []);
172
+ const accRate = Number(profile.acceptance_rate || 0);
173
+ lines.push(`## ${toolName} Profile`);
174
+ lines.push(`- Acceptance rate: ${Math.round(accRate * 100)}%`);
175
+ if (bestCases.length > 0)
176
+ lines.push(`- Best for: ${bestCases.join(', ')}`);
177
+ if (worstCases.length > 0)
178
+ lines.push(`- Avoid for: ${worstCases.join(', ')}`);
179
+ }
180
+ const recentSessions = db.prepare("SELECT key_decisions, context_snapshot, start_time FROM sessions WHERE tool_name = ? ORDER BY start_time DESC LIMIT 3").all(toolName);
181
+ if (recentSessions.length > 0) {
182
+ lines.push(`\n## Recent ${toolName} History`);
183
+ for (const s of recentSessions) {
184
+ const decisions = safeJson(String(s.key_decisions)) || [];
185
+ if (decisions.length > 0) {
186
+ lines.push(`- ${decisions.slice(0, 2).join('; ')}`);
187
+ }
188
+ }
189
+ }
190
+ const toolRight = db.prepare("SELECT technology, was_right FROM decisions WHERE project IN (SELECT DISTINCT project FROM sessions WHERE tool_name = ?) ORDER BY created_at DESC LIMIT 10").all(toolName);
191
+ if (toolRight.length > 0) {
192
+ const rightCount = toolRight.filter(d => d.was_right === 1).length;
193
+ lines.push(`\n## Decision Success with ${toolName}`);
194
+ lines.push(`- ${rightCount}/${toolRight.length} decisions were correct (${Math.round((rightCount / toolRight.length) * 100)}%)`);
195
+ }
196
+ return lines.join('\n') || `No specific data yet for ${toolName}. Use it more to build a profile.`;
197
+ }
198
+ // ─── History ─────────────────────────────────────────────────────────────────
199
+ function getModelHistory() {
200
+ const db = (0, database_1.getDb)();
201
+ const rows = db.prepare(`SELECT tool_name,
202
+ COUNT(*) as sessions_count,
203
+ SUM(CASE WHEN files_touched != '[]' THEN 1 ELSE 0 END) as files_sessions,
204
+ SUM(CASE WHEN key_decisions != '[]' THEN 1 ELSE 0 END) as decision_sessions,
205
+ AVG(strftime('%s', end_time) - strftime('%s', start_time)) / 60 as avg_min,
206
+ MAX(start_time) as last_used
207
+ FROM sessions WHERE end_time IS NOT NULL GROUP BY tool_name ORDER BY sessions_count DESC`).all();
208
+ return rows.map(r => ({
209
+ tool: String(r.tool_name || ''),
210
+ taskType: 'general',
211
+ sessionsCount: Number(r.sessions_count || 0),
212
+ totalFilesTouched: Number(r.files_sessions || 0),
213
+ totalDecisions: Number(r.decision_sessions || 0),
214
+ avgSessionMinutes: Math.round(Number(r.avg_min || 0)),
215
+ lastUsed: String(r.last_used || ''),
216
+ }));
217
+ }
218
+ // ─── Utility ─────────────────────────────────────────────────────────────────
219
+ function safeJson(val) {
220
+ if (!val || val === '[]' || val === '{}')
221
+ return null;
222
+ try {
223
+ return JSON.parse(val);
224
+ }
225
+ catch {
226
+ return val;
227
+ }
228
+ }
229
+ //# sourceMappingURL=cross-model-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-model-memory.js","sourceRoot":"","sources":["../src/cross-model-memory.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,24 @@ export declare function restartDaemon(): Promise<{
10
10
  pid: number;
11
11
  port: number;
12
12
  }>;
13
+ export interface ServiceStatus {
14
+ installed: boolean;
15
+ running: boolean;
16
+ taskName: string;
17
+ method: 'registry' | 'task' | 'none';
18
+ }
19
+ export declare function installService(): {
20
+ success: boolean;
21
+ message: string;
22
+ };
23
+ export declare function uninstallService(): {
24
+ success: boolean;
25
+ message: string;
26
+ };
27
+ export declare function ensureDaemon(opts?: {
28
+ silent?: boolean;
29
+ }): Promise<boolean>;
30
+ export declare function serviceStatus(): ServiceStatus;
13
31
  export declare function statusDaemon(): Promise<{
14
32
  running: boolean;
15
33
  pid: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/daemon/lifecycle.ts"],"names":[],"mappings":"AA4DA,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAuC1E;AAED,wBAAgB,UAAU,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA4BlE;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAI5E;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC,CAAC,CA2BD"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/daemon/lifecycle.ts"],"names":[],"mappings":"AA4DA,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA+C1E;AAED,wBAAgB,UAAU,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA4BlE;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAI5E;AASD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;CACtC;AAqBD,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA6CtE;AAED,wBAAgB,gBAAgB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAwBxE;AAMD,wBAAsB,YAAY,CAAC,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAgCpF;AAED,wBAAgB,aAAa,IAAI,aAAa,CAgC7C;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACxC,CAAC,CA2BD"}
@@ -36,6 +36,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.startDaemon = startDaemon;
37
37
  exports.stopDaemon = stopDaemon;
38
38
  exports.restartDaemon = restartDaemon;
39
+ exports.installService = installService;
40
+ exports.uninstallService = uninstallService;
41
+ exports.ensureDaemon = ensureDaemon;
42
+ exports.serviceStatus = serviceStatus;
39
43
  exports.statusDaemon = statusDaemon;
40
44
  const fs = __importStar(require("fs"));
41
45
  const path = __importStar(require("path"));
@@ -94,12 +98,24 @@ function healthCheck() {
94
98
  }
95
99
  async function startDaemon() {
96
100
  const existingPid = readPid();
97
- if (existingPid && isProcessRunning(existingPid)) {
98
- const healthy = await healthCheck();
99
- if (healthy) {
100
- return { pid: existingPid, port: PORT };
101
+ if (existingPid) {
102
+ if (isProcessRunning(existingPid)) {
103
+ const healthy = await healthCheck();
104
+ if (healthy) {
105
+ return { pid: existingPid, port: PORT };
106
+ }
107
+ console.warn(`[lifecycle] Stale daemon PID ${existingPid} running but unhealthy — killing and restarting.`);
108
+ try {
109
+ process.kill(existingPid, 'SIGKILL');
110
+ }
111
+ catch { }
112
+ removePid();
113
+ await new Promise((r) => setTimeout(r, 500));
114
+ }
115
+ else {
116
+ console.warn(`[lifecycle] Cleaning stale PID file (process ${existingPid} no longer exists).`);
117
+ removePid();
101
118
  }
102
- removePid();
103
119
  }
104
120
  return new Promise((resolve, reject) => {
105
121
  const ext = path.extname(__filename) === '.ts' ? '.ts' : '.js';
@@ -164,6 +180,167 @@ async function restartDaemon() {
164
180
  await new Promise((r) => setTimeout(r, 1000));
165
181
  return startDaemon();
166
182
  }
183
+ const SERVICE_NAME = 'FivoCellDaemon';
184
+ const SERVICE_DISPLAY = 'FIVO Cell Daemon';
185
+ const SERVICE_DESCRIPTION = 'FIVO Cell persistent cognitive layer daemon (watches files, serves MCP, learns style).';
186
+ const REG_RUN_KEY = 'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run';
187
+ const REG_VALUE_NAME = 'FivoCellDaemon';
188
+ const STARTUP_SCRIPT_NAME = 'fivo-cell-daemon.bat';
189
+ function makeLauncherScript(nodePath, cliPath, workingDir) {
190
+ const escapedWd = workingDir.replace(/"/g, '""');
191
+ return `@echo off
192
+ rem FIVO Cell Daemon + Watcher auto-start launcher (with watch-loop)
193
+ rem If watcher dies, it respawns within 2s. Daemon is fully detached.
194
+ cd /d "${escapedWd}"
195
+
196
+ rem 1. Start the daemon (detached, returns immediately)
197
+ "${nodePath}" "${cliPath}" start
198
+
199
+ rem 2. Watch-loop: keep restarting the watcher if it ever dies
200
+ :watchloop
201
+ "${nodePath}" "${cliPath}" watch
202
+ echo [%date% %time%] Watcher exited, respawning in 2s...
203
+ timeout /t 2 /nobreak >nul
204
+ goto watchloop
205
+ `;
206
+ }
207
+ function installService() {
208
+ if (process.platform !== 'win32') {
209
+ return { success: false, message: 'Service install is Windows-only. On macOS/Linux, use `cell start &` in your shell rc.' };
210
+ }
211
+ try {
212
+ const nodePath = process.execPath;
213
+ const cliPath = process.argv[1] || path.join(__dirname, '..', 'cli.js');
214
+ const workingDir = process.cwd();
215
+ const scriptPath = path.join(workingDir, STARTUP_SCRIPT_NAME);
216
+ uninstallService();
217
+ const launcher = makeLauncherScript(nodePath, cliPath, workingDir);
218
+ fs.writeFileSync(scriptPath, launcher, { encoding: 'utf-8' });
219
+ const regValue = `cmd /c "${scriptPath}"`;
220
+ const psScript = [
221
+ `Set-ItemProperty -Path '${REG_RUN_KEY}' -Name '${REG_VALUE_NAME}' -Value '${regValue.replace(/'/g, "''")}' -Type String -Force`,
222
+ ].join('\n');
223
+ const psFile = path.join(os.tmpdir(), `cell-reg-${Date.now()}.ps1`);
224
+ fs.writeFileSync(psFile, psScript, { encoding: 'utf-8' });
225
+ let result = '';
226
+ let stderr = '';
227
+ try {
228
+ result = require('child_process').execSync(`powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "${psFile}"`, { stdio: 'pipe', encoding: 'utf-8' });
229
+ }
230
+ catch (e) {
231
+ const execErr = e;
232
+ result = execErr.stdout || '';
233
+ stderr = execErr.stderr || execErr.message || String(e);
234
+ }
235
+ try {
236
+ fs.unlinkSync(psFile);
237
+ }
238
+ catch { }
239
+ if (stderr) {
240
+ return { success: false, message: `Registry write failed: ${stderr.trim()}` };
241
+ }
242
+ return { success: true, message: `Auto-start installed! Daemon will start automatically at Windows logon via registry Run key. Launcher: ${scriptPath}. (Per-user, no admin required.)` };
243
+ }
244
+ catch (err) {
245
+ const message = err instanceof Error ? err.message : String(err);
246
+ return { success: false, message: `Install failed: ${message}` };
247
+ }
248
+ }
249
+ function uninstallService() {
250
+ if (process.platform !== 'win32') {
251
+ return { success: false, message: 'Service uninstall is Windows-only.' };
252
+ }
253
+ try {
254
+ const psScript = [
255
+ `if (Get-ItemProperty -Path '${REG_RUN_KEY}' -Name '${REG_VALUE_NAME}' -ErrorAction SilentlyContinue) {`,
256
+ ` Remove-ItemProperty -Path '${REG_RUN_KEY}' -Name '${REG_VALUE_NAME}' -Force`,
257
+ ` Write-Output "REMOVED"`,
258
+ `} else {`,
259
+ ` Write-Output "NOT_PRESENT"`,
260
+ `}`,
261
+ ].join('\n');
262
+ const psFile = path.join(os.tmpdir(), `cell-unreg-${Date.now()}.ps1`);
263
+ fs.writeFileSync(psFile, psScript, { encoding: 'utf-8' });
264
+ require('child_process').execSync(`powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "${psFile}"`, { stdio: 'ignore' });
265
+ try {
266
+ fs.unlinkSync(psFile);
267
+ }
268
+ catch { }
269
+ return { success: true, message: `Auto-start removed (registry Run key + launcher script cleaned up).` };
270
+ }
271
+ catch {
272
+ return { success: true, message: `Auto-start was not installed.` };
273
+ }
274
+ }
275
+ let lastEnsureCheck = 0;
276
+ let lastEnsureResult = false;
277
+ const ENSURE_CACHE_MS = 5000;
278
+ async function ensureDaemon(opts = {}) {
279
+ const now = Date.now();
280
+ if (now - lastEnsureCheck < ENSURE_CACHE_MS) {
281
+ return lastEnsureResult;
282
+ }
283
+ lastEnsureCheck = now;
284
+ const status = await statusDaemon();
285
+ if (status.running) {
286
+ lastEnsureResult = true;
287
+ return true;
288
+ }
289
+ if (status.pid) {
290
+ if (!opts.silent)
291
+ console.warn(`[lifecycle] Daemon stale (PID ${status.pid} dead). Restarting...`);
292
+ }
293
+ else if (!opts.silent) {
294
+ console.warn(`[lifecycle] Daemon not running. Starting...`);
295
+ }
296
+ try {
297
+ await startDaemon();
298
+ lastEnsureResult = true;
299
+ if (!opts.silent)
300
+ console.log('[lifecycle] ✅ Daemon ready.');
301
+ return true;
302
+ }
303
+ catch (err) {
304
+ lastEnsureResult = false;
305
+ if (!opts.silent) {
306
+ const message = err instanceof Error ? err.message : String(err);
307
+ console.error(`[lifecycle] ❌ Could not start daemon: ${message}`);
308
+ }
309
+ return false;
310
+ }
311
+ }
312
+ function serviceStatus() {
313
+ if (process.platform !== 'win32') {
314
+ return { installed: false, running: false, taskName: SERVICE_NAME, method: 'none' };
315
+ }
316
+ try {
317
+ const psScript = [
318
+ `$val = (Get-ItemProperty -Path '${REG_RUN_KEY}' -Name '${REG_VALUE_NAME}' -ErrorAction SilentlyContinue).${REG_VALUE_NAME}`,
319
+ `if ($val) { Write-Output "PRESENT" } else { Write-Output "ABSENT" }`,
320
+ ].join('\n');
321
+ const psFile = path.join(os.tmpdir(), `cell-stat-${Date.now()}.ps1`);
322
+ fs.writeFileSync(psFile, psScript, { encoding: 'utf-8' });
323
+ const out = require('child_process').execSync(`powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "${psFile}"`, { stdio: 'pipe', encoding: 'utf-8' }).trim();
324
+ try {
325
+ fs.unlinkSync(psFile);
326
+ }
327
+ catch { }
328
+ const installed = out.includes('PRESENT');
329
+ const pid = readPid();
330
+ const alive = pid ? isProcessRunning(pid) : false;
331
+ const healthy = alive ? false : false;
332
+ void healthy;
333
+ return {
334
+ installed,
335
+ running: alive,
336
+ taskName: SERVICE_NAME,
337
+ method: installed ? 'registry' : 'none',
338
+ };
339
+ }
340
+ catch {
341
+ return { installed: false, running: false, taskName: SERVICE_NAME, method: 'none' };
342
+ }
343
+ }
167
344
  async function statusDaemon() {
168
345
  const pid = readPid();
169
346
  const processAlive = pid ? isProcessRunning(pid) : false;
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/daemon/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/daemon/lifecycle.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,kCA+CC;AAED,gCA4BC;AAED,sCAIC;AAmCD,wCA6CC;AAED,4CAwBC;AAMD,oCAgCC;AAED,sCAgCC;AAED,oCAgCC;AAnWD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,iDAAoD;AACpD,2CAA6B;AAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AACxE,MAAM,IAAI,GAAG,IAAI,CAAC;AAElB,SAAS,SAAS;IAChB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,SAAS,EAAE,CAAC;IACZ,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,OAAO;IACd,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW;IACnC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,IAAI,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9D,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE;YACxB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,WAAW;IAC/B,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC;IAC9B,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;YACpC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC1C,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,gCAAgC,WAAW,kDAAkD,CAAC,CAAC;YAC5G,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACtD,SAAS,EAAE,CAAC;YACZ,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,gDAAgD,WAAW,qBAAqB,CAAC,CAAC;YAC/F,SAAS,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC;QACxE,MAAM,KAAK,GAAiB,IAAA,qBAAK,EAAC,MAAM,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;YAChH,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAED,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,SAAS,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;YACpC,IAAI,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBACzB,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,SAAS,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,UAAU;IACxB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;IAC7E,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC;IACpF,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC7B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,IAAI,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;QACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QAChD,CAAC;QACD,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,wBAAwB,GAAG,GAAG,EAAE,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;IAClE,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa;IACjC,UAAU,EAAE,CAAC;IACb,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9C,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,YAAY,GAAG,gBAAgB,CAAC;AACtC,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAC3C,MAAM,mBAAmB,GAAG,wFAAwF,CAAC;AACrH,MAAM,WAAW,GAAG,0DAA0D,CAAC;AAC/E,MAAM,cAAc,GAAG,gBAAgB,CAAC;AACxC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AASnD,SAAS,kBAAkB,CAAC,QAAgB,EAAE,OAAe,EAAE,UAAkB;IAC/E,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO;;;SAGA,SAAS;;;GAGf,QAAQ,MAAM,OAAO;;;;GAIrB,QAAQ,MAAM,OAAO;;;;CAIvB,CAAC;AACF,CAAC;AAED,SAAgB,cAAc;IAC5B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,uFAAuF,EAAE,CAAC;IAC9H,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;QAE9D,gBAAgB,EAAE,CAAC;QAEnB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACnE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,WAAW,UAAU,GAAG,CAAC;QAC1C,MAAM,QAAQ,GAAG;YACf,2BAA2B,WAAW,YAAY,cAAc,aAAa,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,uBAAuB;SACjI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACpE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAE1D,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,CACxC,wEAAwE,MAAM,GAAG,EACjF,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CACrC,CAAC;QACJ,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,CAA2D,CAAC;YAC5E,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;YAC9B,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEvC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;QAChF,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,0GAA0G,UAAU,kCAAkC,EAAE,CAAC;IAC5L,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,OAAO,EAAE,EAAE,CAAC;IACnE,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB;IAC9B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC;IAC3E,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG;YACf,+BAA+B,WAAW,YAAY,cAAc,oCAAoC;YACxG,gCAAgC,WAAW,YAAY,cAAc,UAAU;YAC/E,0BAA0B;YAC1B,UAAU;YACV,8BAA8B;YAC9B,GAAG;SACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACtE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,CAC/B,wEAAwE,MAAM,GAAG,EACjF,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpB,CAAC;QACF,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qEAAqE,EAAE,CAAC;IAC3G,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,IAAI,eAAe,GAAG,CAAC,CAAC;AACxB,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC7B,MAAM,eAAe,GAAG,IAAI,CAAC;AAEtB,KAAK,UAAU,YAAY,CAAC,OAA6B,EAAE;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,GAAG,GAAG,eAAe,GAAG,eAAe,EAAE,CAAC;QAC5C,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,eAAe,GAAG,GAAG,CAAC;IAEtB,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IACpC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,gBAAgB,GAAG,IAAI,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,GAAG,uBAAuB,CAAC,CAAC;IACrG,CAAC;SAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,EAAE,CAAC;QACpB,gBAAgB,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,gBAAgB,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,yCAAyC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,aAAa;IAC3B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACtF,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG;YACf,mCAAmC,WAAW,YAAY,cAAc,oCAAoC,cAAc,EAAE;YAC5H,qEAAqE;SACtE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,CAC3C,wEAAwE,MAAM,GAAG,EACjF,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CACrC,CAAC,IAAI,EAAE,CAAC;QACT,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACvC,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE1C,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAClD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACtC,KAAK,OAAO,CAAC;QAEb,OAAO;YACL,SAAS;YACT,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM;SACxC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACtF,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,YAAY;IAMhC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEzD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACjE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,IAAI,OAAO,CAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChF,IAAI,CAAC,GAAG,CAAC,oBAAoB,IAAI,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;gBAClD,IAAI,IAAI,GAAG,EAAE,CAAC;gBACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC;gBAC3C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBACjB,IAAI,CAAC;wBAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC;wBAAC,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;oBAAC,CAAC;gBAChF,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3D,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AA4CrD,QAAA,MAAM,GAAG,6CAAY,CAAC;AAGtB,QAAA,MAAM,OAAO;;;mBAGuB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqChD,CAAC;AA0iCF,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAgDrD,QAAA,MAAM,GAAG,6CAAY,CAAC;AAGtB,QAAA,MAAM,OAAO;;;mBAGuB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqChD,CAAC;AA00CF,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC"}