create-merlin-brain 2.2.2 → 2.3.2

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 (41) hide show
  1. package/dist/server/lite/client.d.ts +49 -0
  2. package/dist/server/lite/client.d.ts.map +1 -0
  3. package/dist/server/lite/client.js +166 -0
  4. package/dist/server/lite/client.js.map +1 -0
  5. package/dist/server/lite/generator.d.ts +56 -0
  6. package/dist/server/lite/generator.d.ts.map +1 -0
  7. package/dist/server/lite/generator.js +474 -0
  8. package/dist/server/lite/generator.js.map +1 -0
  9. package/dist/server/lite/index.d.ts +10 -0
  10. package/dist/server/lite/index.d.ts.map +1 -0
  11. package/dist/server/lite/index.js +10 -0
  12. package/dist/server/lite/index.js.map +1 -0
  13. package/dist/server/lite/storage.d.ts +42 -0
  14. package/dist/server/lite/storage.d.ts.map +1 -0
  15. package/dist/server/lite/storage.js +283 -0
  16. package/dist/server/lite/storage.js.map +1 -0
  17. package/dist/server/lite/types.d.ts +122 -0
  18. package/dist/server/lite/types.d.ts.map +1 -0
  19. package/dist/server/lite/types.js +40 -0
  20. package/dist/server/lite/types.js.map +1 -0
  21. package/dist/server/server.d.ts.map +1 -1
  22. package/dist/server/server.js +157 -5
  23. package/dist/server/server.js.map +1 -1
  24. package/dist/server/stats.d.ts.map +1 -1
  25. package/dist/server/stats.js +18 -0
  26. package/dist/server/stats.js.map +1 -1
  27. package/dist/server/tools/config-sync.d.ts +13 -0
  28. package/dist/server/tools/config-sync.d.ts.map +1 -0
  29. package/dist/server/tools/config-sync.js +414 -0
  30. package/dist/server/tools/config-sync.js.map +1 -0
  31. package/dist/server/tools/lite.d.ts +20 -0
  32. package/dist/server/tools/lite.d.ts.map +1 -0
  33. package/dist/server/tools/lite.js +374 -0
  34. package/dist/server/tools/lite.js.map +1 -0
  35. package/dist/server/tools/types.d.ts +3 -0
  36. package/dist/server/tools/types.d.ts.map +1 -1
  37. package/dist/server/version.d.ts +1 -1
  38. package/dist/server/version.js +1 -1
  39. package/files/CLAUDE.md +267 -0
  40. package/files/agents/merlin.md +80 -0
  41. package/package.json +1 -1
@@ -0,0 +1,283 @@
1
+ /**
2
+ * Merlin Lite Storage
3
+ * Handles reading/writing .merlin/ local files
4
+ */
5
+ import * as fs from 'fs/promises';
6
+ import * as path from 'path';
7
+ import { createHash } from 'crypto';
8
+ import { LITE_LIMITS, LITE_VERSION } from './types.js';
9
+ export class LiteStorage {
10
+ basePath;
11
+ repoRoot;
12
+ constructor(repoRoot) {
13
+ this.repoRoot = repoRoot;
14
+ this.basePath = path.join(repoRoot, '.merlin');
15
+ }
16
+ /** Check if .merlin/ exists */
17
+ async exists() {
18
+ try {
19
+ await fs.access(this.basePath);
20
+ return true;
21
+ }
22
+ catch {
23
+ return false;
24
+ }
25
+ }
26
+ /** Initialize .merlin/ directory structure */
27
+ async initialize(repoUrl, repoName) {
28
+ // Create directories
29
+ await fs.mkdir(this.basePath, { recursive: true });
30
+ await fs.mkdir(path.join(this.basePath, 'context'), { recursive: true });
31
+ await fs.mkdir(path.join(this.basePath, 'howto'), { recursive: true });
32
+ // Create initial manifest
33
+ const manifest = {
34
+ version: LITE_VERSION,
35
+ repoUrl,
36
+ repoName,
37
+ createdAt: new Date().toISOString(),
38
+ updatedAt: new Date().toISOString(),
39
+ stats: {
40
+ fileCount: 0,
41
+ lineCount: 0,
42
+ lastAnalyzed: new Date().toISOString(),
43
+ },
44
+ limits: {
45
+ maxFiles: 0, // No file limit - only lines matter
46
+ maxLines: LITE_LIMITS.MAX_LINES,
47
+ isOverLimit: false,
48
+ warningShown: false,
49
+ },
50
+ sync: {
51
+ enabled: true,
52
+ },
53
+ };
54
+ await this.writeManifest(manifest);
55
+ // Create empty files
56
+ await this.writeFiles([]);
57
+ await this.writeConventions({ conventions: [], antiPatterns: [] });
58
+ await this.writeDiscoveries([]);
59
+ // Add to .gitignore if not already there
60
+ await this.ensureGitignore();
61
+ }
62
+ /** Ensure .merlin/ is in .gitignore */
63
+ async ensureGitignore() {
64
+ const gitignorePath = path.join(this.repoRoot, '.gitignore');
65
+ try {
66
+ let content = '';
67
+ try {
68
+ content = await fs.readFile(gitignorePath, 'utf-8');
69
+ }
70
+ catch {
71
+ // File doesn't exist
72
+ }
73
+ if (!content.includes('.merlin/')) {
74
+ const addition = '\n# Merlin Lite local context\n.merlin/\n';
75
+ await fs.writeFile(gitignorePath, content + addition);
76
+ }
77
+ }
78
+ catch (error) {
79
+ // Ignore gitignore errors
80
+ }
81
+ }
82
+ // ============================================================
83
+ // MANIFEST
84
+ // ============================================================
85
+ async readManifest() {
86
+ try {
87
+ const content = await fs.readFile(path.join(this.basePath, 'manifest.json'), 'utf-8');
88
+ return JSON.parse(content);
89
+ }
90
+ catch {
91
+ return null;
92
+ }
93
+ }
94
+ async writeManifest(manifest) {
95
+ manifest.updatedAt = new Date().toISOString();
96
+ await fs.writeFile(path.join(this.basePath, 'manifest.json'), JSON.stringify(manifest, null, 2));
97
+ }
98
+ async updateStats(fileCount, lineCount) {
99
+ const manifest = await this.readManifest();
100
+ if (!manifest)
101
+ throw new Error('Manifest not found');
102
+ manifest.stats.fileCount = fileCount;
103
+ manifest.stats.lineCount = lineCount;
104
+ manifest.stats.lastAnalyzed = new Date().toISOString();
105
+ // Check limits - only lines matter for free tier
106
+ const isOverLimit = lineCount > LITE_LIMITS.MAX_LINES;
107
+ manifest.limits.isOverLimit = isOverLimit;
108
+ await this.writeManifest(manifest);
109
+ return {
110
+ isOverLimit,
111
+ fileCount,
112
+ lineCount,
113
+ fileLimit: 0, // No file limit
114
+ lineLimit: LITE_LIMITS.MAX_LINES,
115
+ percentUsed: {
116
+ files: 0, // Not tracked
117
+ lines: (lineCount / LITE_LIMITS.MAX_LINES) * 100,
118
+ },
119
+ upgradeReason: isOverLimit ? 'line_limit' : undefined,
120
+ };
121
+ }
122
+ // ============================================================
123
+ // FILES
124
+ // ============================================================
125
+ async readFiles() {
126
+ try {
127
+ const content = await fs.readFile(path.join(this.basePath, 'context', 'files.json'), 'utf-8');
128
+ return JSON.parse(content);
129
+ }
130
+ catch {
131
+ return [];
132
+ }
133
+ }
134
+ async writeFiles(files) {
135
+ await fs.writeFile(path.join(this.basePath, 'context', 'files.json'), JSON.stringify(files, null, 2));
136
+ }
137
+ // ============================================================
138
+ // CONVENTIONS
139
+ // ============================================================
140
+ async readConventions() {
141
+ try {
142
+ const content = await fs.readFile(path.join(this.basePath, 'context', 'conventions.json'), 'utf-8');
143
+ return JSON.parse(content);
144
+ }
145
+ catch {
146
+ return { conventions: [], antiPatterns: [] };
147
+ }
148
+ }
149
+ async writeConventions(conventions) {
150
+ await fs.writeFile(path.join(this.basePath, 'context', 'conventions.json'), JSON.stringify(conventions, null, 2));
151
+ }
152
+ // ============================================================
153
+ // QUICKSTART
154
+ // ============================================================
155
+ async readQuickstart() {
156
+ try {
157
+ return await fs.readFile(path.join(this.basePath, 'context', 'quickstart.md'), 'utf-8');
158
+ }
159
+ catch {
160
+ return null;
161
+ }
162
+ }
163
+ async writeQuickstart(content) {
164
+ await fs.writeFile(path.join(this.basePath, 'context', 'quickstart.md'), content);
165
+ }
166
+ // ============================================================
167
+ // HOW-TO CACHE
168
+ // ============================================================
169
+ getHowToKey(task) {
170
+ return createHash('md5').update(task.toLowerCase().trim()).digest('hex').slice(0, 12);
171
+ }
172
+ async readHowTo(task) {
173
+ try {
174
+ const key = this.getHowToKey(task);
175
+ const content = await fs.readFile(path.join(this.basePath, 'howto', `${key}.json`), 'utf-8');
176
+ const howto = JSON.parse(content);
177
+ // Check if cache is stale (older than 24 hours)
178
+ const age = Date.now() - new Date(howto.generatedAt).getTime();
179
+ if (age > 24 * 60 * 60 * 1000) {
180
+ return null; // Stale
181
+ }
182
+ return howto;
183
+ }
184
+ catch {
185
+ return null;
186
+ }
187
+ }
188
+ async writeHowTo(task, guide, relevantFiles) {
189
+ const key = this.getHowToKey(task);
190
+ const howto = {
191
+ task,
192
+ guide,
193
+ relevantFiles,
194
+ generatedAt: new Date().toISOString(),
195
+ };
196
+ await fs.writeFile(path.join(this.basePath, 'howto', `${key}.json`), JSON.stringify(howto, null, 2));
197
+ }
198
+ // ============================================================
199
+ // DISCOVERIES
200
+ // ============================================================
201
+ async readDiscoveries() {
202
+ try {
203
+ const content = await fs.readFile(path.join(this.basePath, 'discoveries.json'), 'utf-8');
204
+ return JSON.parse(content);
205
+ }
206
+ catch {
207
+ return [];
208
+ }
209
+ }
210
+ async writeDiscoveries(discoveries) {
211
+ await fs.writeFile(path.join(this.basePath, 'discoveries.json'), JSON.stringify(discoveries, null, 2));
212
+ }
213
+ async addDiscovery(discovery) {
214
+ const discoveries = await this.readDiscoveries();
215
+ const newDiscovery = {
216
+ ...discovery,
217
+ id: createHash('md5').update(discovery.query + Date.now()).digest('hex').slice(0, 12),
218
+ createdAt: new Date().toISOString(),
219
+ };
220
+ discoveries.push(newDiscovery);
221
+ await this.writeDiscoveries(discoveries);
222
+ return newDiscovery;
223
+ }
224
+ // ============================================================
225
+ // SYNC STATUS
226
+ // ============================================================
227
+ async readSyncStatus() {
228
+ try {
229
+ const content = await fs.readFile(path.join(this.basePath, 'sync.json'), 'utf-8');
230
+ return JSON.parse(content);
231
+ }
232
+ catch {
233
+ return { pendingChanges: true, localVersion: 1 };
234
+ }
235
+ }
236
+ async writeSyncStatus(status) {
237
+ await fs.writeFile(path.join(this.basePath, 'sync.json'), JSON.stringify(status, null, 2));
238
+ }
239
+ // ============================================================
240
+ // EXPORT ALL DATA (for server sync)
241
+ // ============================================================
242
+ async exportAll() {
243
+ const [manifest, files, conventions, quickstart, discoveries] = await Promise.all([
244
+ this.readManifest(),
245
+ this.readFiles(),
246
+ this.readConventions(),
247
+ this.readQuickstart(),
248
+ this.readDiscoveries(),
249
+ ]);
250
+ return { manifest, files, conventions, quickstart, discoveries };
251
+ }
252
+ // ============================================================
253
+ // CHECK LIMITS
254
+ // ============================================================
255
+ async checkLimits() {
256
+ const manifest = await this.readManifest();
257
+ if (!manifest) {
258
+ return {
259
+ isOverLimit: false,
260
+ fileCount: 0,
261
+ lineCount: 0,
262
+ fileLimit: 0,
263
+ lineLimit: LITE_LIMITS.MAX_LINES,
264
+ percentUsed: { files: 0, lines: 0 },
265
+ };
266
+ }
267
+ const { fileCount, lineCount } = manifest.stats;
268
+ const isOverLimit = lineCount > LITE_LIMITS.MAX_LINES;
269
+ return {
270
+ isOverLimit,
271
+ fileCount,
272
+ lineCount,
273
+ fileLimit: 0, // No file limit
274
+ lineLimit: LITE_LIMITS.MAX_LINES,
275
+ percentUsed: {
276
+ files: 0, // Not tracked
277
+ lines: (lineCount / LITE_LIMITS.MAX_LINES) * 100,
278
+ },
279
+ upgradeReason: isOverLimit ? 'line_limit' : undefined,
280
+ };
281
+ }
282
+ }
283
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/server/lite/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Merlin Lite Types
3
+ * Type definitions for the local file-based context system
4
+ */
5
+ /** Manifest stored in .merlin/manifest.json */
6
+ export interface LiteManifest {
7
+ version: string;
8
+ repoUrl: string;
9
+ repoName: string;
10
+ createdAt: string;
11
+ updatedAt: string;
12
+ stats: {
13
+ fileCount: number;
14
+ lineCount: number;
15
+ lastAnalyzed: string;
16
+ };
17
+ limits: {
18
+ maxFiles: number;
19
+ maxLines: number;
20
+ isOverLimit: boolean;
21
+ warningShown: boolean;
22
+ };
23
+ sync: {
24
+ enabled: boolean;
25
+ serverId?: string;
26
+ lastSyncedAt?: string;
27
+ };
28
+ }
29
+ /** File summary stored in .merlin/context/files.json */
30
+ export interface LiteFileSummary {
31
+ path: string;
32
+ purpose: string;
33
+ layer: string;
34
+ exports: Array<{
35
+ name: string;
36
+ type: 'function' | 'class' | 'constant' | 'type' | 'interface';
37
+ }>;
38
+ dependencies: string[];
39
+ modifyFor: string[];
40
+ }
41
+ /** Conventions stored in .merlin/context/conventions.json */
42
+ export interface LiteConventions {
43
+ conventions: Array<{
44
+ category: string;
45
+ rule: string;
46
+ example?: string;
47
+ exampleFiles: string[];
48
+ }>;
49
+ antiPatterns: Array<{
50
+ pattern: string;
51
+ reason: string;
52
+ instead: string;
53
+ severity: 'low' | 'medium' | 'high';
54
+ }>;
55
+ }
56
+ /** How-to cache entry */
57
+ export interface LiteHowTo {
58
+ task: string;
59
+ guide: string;
60
+ relevantFiles: string[];
61
+ generatedAt: string;
62
+ }
63
+ /** Discovery taught by user */
64
+ export interface LiteDiscovery {
65
+ id: string;
66
+ query: string;
67
+ summary: string;
68
+ relevantFiles: Array<{
69
+ path: string;
70
+ reason: string;
71
+ }>;
72
+ patterns: string[];
73
+ confidence: number;
74
+ createdAt: string;
75
+ }
76
+ /** Sync status */
77
+ export interface LiteSyncStatus {
78
+ lastSyncedAt?: string;
79
+ pendingChanges: boolean;
80
+ serverVersion?: number;
81
+ localVersion: number;
82
+ }
83
+ /** Limit check result */
84
+ export interface LimitCheckResult {
85
+ isOverLimit: boolean;
86
+ fileCount: number;
87
+ lineCount: number;
88
+ fileLimit: number;
89
+ lineLimit: number;
90
+ percentUsed: {
91
+ files: number;
92
+ lines: number;
93
+ };
94
+ upgradeReason?: 'file_limit' | 'line_limit';
95
+ }
96
+ /** Pricing tier definition */
97
+ export interface PricingTier {
98
+ name: string;
99
+ displayName: string;
100
+ minLines: number;
101
+ maxLines: number;
102
+ price: number;
103
+ priceId: string;
104
+ }
105
+ /** All pricing tiers */
106
+ export declare const PRICING_TIERS: PricingTier[];
107
+ /** Get the tier for a given line count */
108
+ export declare function getTierForLines(lineCount: number): PricingTier;
109
+ /** Get upgrade recommendation based on current usage */
110
+ export declare function getUpgradeRecommendation(lineCount: number): {
111
+ currentTier: PricingTier;
112
+ nextTier: PricingTier | null;
113
+ isOverLimit: boolean;
114
+ percentToNextTier: number;
115
+ };
116
+ /** Constants for free tier (Lite mode) */
117
+ export declare const LITE_LIMITS: {
118
+ readonly MAX_LINES: 5000;
119
+ readonly WARNING_THRESHOLD: 0.8;
120
+ };
121
+ export declare const LITE_VERSION = "1.0.0";
122
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/lite/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Merlin Lite Types
3
+ * Type definitions for the local file-based context system
4
+ */
5
+ /** All pricing tiers */
6
+ export const PRICING_TIERS = [
7
+ { name: 'free', displayName: 'Free', minLines: 0, maxLines: 5000, price: 0, priceId: '' },
8
+ { name: 'small', displayName: 'Small', minLines: 5000, maxLines: 10000, price: 99, priceId: 'price_1SsZDLGZjZMfoSqgxlSumOpi' },
9
+ { name: 'medium', displayName: 'Medium', minLines: 10000, maxLines: 50000, price: 250, priceId: 'price_1SsZCOGZjZMfoSqgxEuLrH3K' },
10
+ { name: 'large', displayName: 'Large', minLines: 50000, maxLines: 500000, price: 399, priceId: 'price_1SsacBGZjZMfoSqgxYWIStKm' },
11
+ { name: 'enterprise', displayName: 'Enterprise', minLines: 500000, maxLines: Infinity, price: -1, priceId: '' }, // Contact us
12
+ ];
13
+ /** Get the tier for a given line count */
14
+ export function getTierForLines(lineCount) {
15
+ for (const tier of PRICING_TIERS) {
16
+ if (lineCount >= tier.minLines && lineCount < tier.maxLines) {
17
+ return tier;
18
+ }
19
+ }
20
+ // Default to enterprise for very large repos
21
+ return PRICING_TIERS[PRICING_TIERS.length - 1];
22
+ }
23
+ /** Get upgrade recommendation based on current usage */
24
+ export function getUpgradeRecommendation(lineCount) {
25
+ const currentTier = getTierForLines(lineCount);
26
+ const tierIndex = PRICING_TIERS.findIndex(t => t.name === currentTier.name);
27
+ const nextTier = tierIndex < PRICING_TIERS.length - 1 ? PRICING_TIERS[tierIndex + 1] : null;
28
+ const isOverLimit = currentTier.name === 'free' && lineCount >= currentTier.maxLines;
29
+ const percentToNextTier = nextTier
30
+ ? ((lineCount - currentTier.minLines) / (currentTier.maxLines - currentTier.minLines)) * 100
31
+ : 100;
32
+ return { currentTier, nextTier, isOverLimit, percentToNextTier };
33
+ }
34
+ /** Constants for free tier (Lite mode) */
35
+ export const LITE_LIMITS = {
36
+ MAX_LINES: 5000, // Hard limit - 5K lines free
37
+ WARNING_THRESHOLD: 0.8, // Warn at 80% (4K lines)
38
+ };
39
+ export const LITE_VERSION = '1.0.0';
40
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/server/lite/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2GH,wBAAwB;AACxB,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACzF,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,gCAAgC,EAAE;IAC9H,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,gCAAgC,EAAE;IAClI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,gCAAgC,EAAE;IACjI,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,aAAa;CAC/H,CAAC;AAEF,0CAA0C;AAC1C,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,6CAA6C;IAC7C,OAAO,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IAMxD,MAAM,WAAW,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5F,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,IAAI,WAAW,CAAC,QAAQ,CAAC;IACrF,MAAM,iBAAiB,GAAG,QAAQ;QAChC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG;QAC5F,CAAC,CAAC,GAAG,CAAC;IAER,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AACnE,CAAC;AAED,0CAA0C;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,IAAI,EAAS,6BAA6B;IACrD,iBAAiB,EAAE,GAAG,EAAE,yBAAyB;CACzC,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoCpE,0CAA0C;AAC1C,wBAAgB,YAAY,IAAI,SAAS,CAmwExC;AAED,gDAAgD;AAChD,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAQjD"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsCpE,0CAA0C;AAC1C,wBAAgB,YAAY,IAAI,SAAS,CA66ExC;AAED,gDAAgD;AAChD,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAQjD"}