@memorycode/mcp-server 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # MemoryCode MCP Server
2
2
 
3
+ > **MemoryCode (product):** [MemoryCode](https://memorycode.ai/en/) is a **local-first** **Identity + Cognitive Chip** layer for Claude, Cursor, Windsurf, and other AI tools. This package (**`@memorycode/mcp-server`**) exposes your exported profile over MCP. **Step-by-step install (all clients):** [memorycode.ai/en/mcp-manual](https://memorycode.ai/en/mcp-manual).
4
+
3
5
  将 MemoryCode 记忆配置通过 MCP 暴露给 **Claude Desktop**、**Cursor** 等客户端。**Claude 桌面版**的 MCP 交互方式为:**自然语言**(如「请使用职场配置」)与点击输入框旁的 **「+」** 展开后选择记忆配置;**@ 在 Claude 桌面版中对 MCP 无任何作用**(参见 YIS-20 研究)。其他 AI 客户端的引用方式以各产品为准,本 Server 均支持通过自然语言(Tool)及 Resources 供客户端加载。
4
6
 
5
7
  ---
@@ -283,11 +285,32 @@ MemoryCode 应用内 MCP Connect 支持为 Windsurf 一键写入配置,配置
283
285
 
284
286
  ---
285
287
 
288
+ ## MCP 1.1:认知芯片切换
289
+
290
+ 从 schema **1.1** 起,MemoryCode 导出文件支持在 **不换档案** 的情况下切换 **认知芯片**:
291
+
292
+ | 概念 | 说明 | MCP 操作 |
293
+ |------|------|----------|
294
+ | **档案** | 个人记忆(身份、背景、技能) | `list_configs` / `load_config` |
295
+ | **认知芯片** | 思考与输出模式(可热插拔) | `list_chips` / `load_chip` / `unload_chip` |
296
+
297
+ - **Resources**:`memorycode://profile/{id}` 返回档案当前组合 prompt;`memorycode://chip/{id}` 查看芯片说明(不自动切换状态)。
298
+ - **写回**:`load_config` / `load_chip` / `unload_chip` 会将当前选择写入 `mcp.runtime`(仅 MCP 文件内,不修改 `data.state`,也不会自动同步回浏览器)。
299
+ - **兼容**:旧版 1.0 导出文件仍可使用 `load_config`;芯片相关工具会提示重新导出。
300
+
301
+ 自然语言示例:
302
+
303
+ - 「切换到严谨分析芯片」(需已 `load_config` 选择档案)
304
+ - 「列出有哪些认知芯片」
305
+ - 「卸载当前芯片」
306
+
307
+ ---
308
+
286
309
  ## 使用场景
287
310
 
288
311
  - **Claude Desktop**:用**自然语言**(如「请使用职场配置」「有哪些配置可用」)由模型调用 Tool 加载;或点击输入框旁 **「+」**,在展开的菜单中选择 MemoryCode 记忆配置加载。@ 在桌面版中对 MCP 无作用。
289
312
  - **其他客户端**(如 Cursor):以该客户端实际支持的引用方式为准(可能包含 @ 或菜单入口);自然语言在两端均可用。
290
- - **多配置组合**:不同对话选用不同配置,或在同一对话中先选一个再自然语言切换另一个,按需切换身份/风格。
313
+ - **多配置组合**:不同对话选用不同档案,或在同一对话中切换认知芯片,按需调整身份与思考模式。
291
314
  - **热更新**:在 MemoryCode 中调整配置后重新导出并覆盖 `memorycode-mcp.json`,Server 会自动重载,无需重启 Claude/Cursor。
292
315
 
293
316
  ---
@@ -308,7 +331,7 @@ npm test # 集成测试(导出→加载、热更新、错误恢复)
308
331
  ## 相关链接
309
332
 
310
333
  - 应用内 **完整教程**:安装、Cursor/Claude 配置、云盘同步、FAQ 等。
311
- - Resource URI 格式:`memorycode://profile/{id}`。
334
+ - Resource URI 格式:`memorycode://profile/{id}`、`memorycode://chip/{id}`(MCP 1.1)。
312
335
 
313
336
  ---
314
337
 
@@ -2,15 +2,15 @@
2
2
  * YIS-15 Task 2.3: 文件监听与热更新
3
3
  * chokidar 监听单文件,防抖 500ms,解析 meta/mcp.resources,错误保留上次有效状态
4
4
  */
5
- import type { McpResource } from './types.js';
5
+ import type { ParsedMcpData } from './types.js';
6
6
  export interface FileWatcherOptions {
7
7
  filePath: string;
8
- onChange: (resources: McpResource[], payload: unknown) => void;
8
+ onChange: (parsed: ParsedMcpData, payload: unknown) => void;
9
9
  onError: (error: Error) => void;
10
10
  }
11
11
  export declare class FileWatcher {
12
12
  private options;
13
- private lastValidResources;
13
+ private lastValidParsed;
14
14
  private debounceTimer;
15
15
  private watcher;
16
16
  constructor(options: FileWatcherOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"fileWatcher.d.ts","sourceRoot":"","sources":["../src/fileWatcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/D,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED,qBAAa,WAAW;IAKV,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,OAAO,CAAkD;gBAE7C,OAAO,EAAE,kBAAkB;IAE/C,OAAO,CAAC,cAAc;YAQR,QAAQ;IAoBhB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B5B,IAAI,IAAI,IAAI;CAUb"}
1
+ {"version":3,"file":"fileWatcher.d.ts","sourceRoot":"","sources":["../src/fileWatcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAOhD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED,qBAAa,WAAW;IAKV,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,OAAO,CAAkD;gBAE7C,OAAO,EAAE,kBAAkB;IAE/C,OAAO,CAAC,cAAc;YAQR,QAAQ;IAuBhB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C5B,IAAI,IAAI,IAAI;CAUb"}
@@ -4,13 +4,13 @@
4
4
  */
5
5
  import chokidar from 'chokidar';
6
6
  import { readFile } from 'node:fs/promises';
7
- import { isMemoryCodeExport, parseResources } from './utils/validator.js';
7
+ import { isMemoryCodeExport, parseMcpData } from './utils/validator.js';
8
8
  import { logInfo, logWarn } from './utils/logger.js';
9
9
  const DEBOUNCE_MS = 500;
10
10
  const INITIAL_LOAD_TIMEOUT_MS = 8000;
11
11
  export class FileWatcher {
12
12
  options;
13
- lastValidResources = [];
13
+ lastValidParsed = null;
14
14
  debounceTimer = null;
15
15
  watcher = null;
16
16
  constructor(options) {
@@ -33,15 +33,16 @@ export class FileWatcher {
33
33
  logWarn(`File is not a MemoryCode export (meta.origin_app): ${filePath}`);
34
34
  return;
35
35
  }
36
- const resources = parseResources(data);
37
- this.lastValidResources = resources;
38
- onChange(resources, data);
39
- logInfo(`Loaded ${resources.length} resources from ${filePath}`);
36
+ const parsed = parseMcpData(data);
37
+ this.lastValidParsed = parsed;
38
+ onChange(parsed, data);
39
+ logInfo(`Loaded ${parsed.resources.length} resources, ${parsed.chips.length} chips from ${filePath}`);
40
40
  }
41
41
  catch (err) {
42
42
  const error = err instanceof Error ? err : new Error(String(err));
43
43
  onError(error);
44
- logWarn(`Failed to load ${filePath}, keeping previous ${this.lastValidResources.length} resources`);
44
+ const prevCount = this.lastValidParsed?.resources.length ?? 0;
45
+ logWarn(`Failed to load ${filePath}, keeping previous ${prevCount} resources`);
45
46
  }
46
47
  }
47
48
  async start() {
@@ -60,8 +61,19 @@ export class FileWatcher {
60
61
  this.watcher.on('add', () => this.scheduleReload());
61
62
  this.watcher.on('change', () => this.scheduleReload());
62
63
  this.watcher.on('unlink', () => {
63
- this.lastValidResources = [];
64
- onChange([], null);
64
+ this.lastValidParsed = null;
65
+ onChange({
66
+ schemaVersion: '1.0',
67
+ resources: [],
68
+ profiles: [],
69
+ chips: [],
70
+ compositions: [],
71
+ runtime: {
72
+ activeProfileId: null,
73
+ activeChipByProfile: {},
74
+ updatedAt: new Date().toISOString(),
75
+ },
76
+ }, null);
65
77
  logInfo(`File removed, cleared resources: ${filePath}`);
66
78
  });
67
79
  logInfo(`Watching ${filePath} (debounce ${DEBOUNCE_MS}ms)`);
@@ -1 +1 @@
1
- {"version":3,"file":"fileWatcher.js","sourceRoot":"","sources":["../src/fileWatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fileWatcher.js","sourceRoot":"","sources":["../src/fileWatcher.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -86,9 +86,10 @@ async function main() {
86
86
  const config = await loadConfig();
87
87
  setLogLevel(config.logLevel);
88
88
  const server = new MemoryCodeMCPServer();
89
+ server.setWatchFilePath(config.watchFile);
89
90
  const watcher = new FileWatcher({
90
91
  filePath: config.watchFile,
91
- onChange: (resources, payload) => server.updateMemorySnapshot(resources, payload),
92
+ onChange: (parsed, payload) => server.updateMemorySnapshot(parsed, payload),
92
93
  onError: (err) => console.error('FileWatcher error:', err),
93
94
  });
94
95
  // 先连接 stdio 再启动 watcher,让 Cursor 等客户端尽快收到 initialize 响应,减少 "No server info found" 竞态
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * MCP 1.1: 安全写回 mcp.runtime 到本地 memorycode-mcp.json
3
+ * 仅修改 runtime 区域,不触碰 data.state
4
+ */
5
+ import type { McpRuntime } from './types.js';
6
+ export declare function writeRuntime(filePath: string, runtime: McpRuntime): Promise<void>;
7
+ //# sourceMappingURL=runtimeStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeStore.d.ts","sourceRoot":"","sources":["../src/runtimeStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDvF"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * MCP 1.1: 安全写回 mcp.runtime 到本地 memorycode-mcp.json
3
+ * 仅修改 runtime 区域,不触碰 data.state
4
+ */
5
+ import { constants } from 'node:fs';
6
+ import { copyFile, readFile, rename, writeFile } from 'node:fs/promises';
7
+ import path from 'node:path';
8
+ import { isMemoryCodeExport } from './utils/validator.js';
9
+ import { logInfo, logWarn } from './utils/logger.js';
10
+ export async function writeRuntime(filePath, runtime) {
11
+ let content;
12
+ try {
13
+ content = await readFile(filePath, 'utf-8');
14
+ }
15
+ catch (err) {
16
+ throw new Error(`无法读取 MCP 文件: ${filePath} (${err})`);
17
+ }
18
+ let data;
19
+ try {
20
+ data = JSON.parse(content);
21
+ }
22
+ catch {
23
+ throw new Error(`MCP 文件不是有效 JSON: ${filePath}`);
24
+ }
25
+ if (!isMemoryCodeExport(data)) {
26
+ throw new Error(`不是 MemoryCode 导出文件: ${filePath}`);
27
+ }
28
+ const root = data;
29
+ const mcp = (root.mcp && typeof root.mcp === 'object' ? root.mcp : {});
30
+ mcp.runtime = {
31
+ activeProfileId: runtime.activeProfileId,
32
+ activeChipByProfile: runtime.activeChipByProfile,
33
+ updatedAt: runtime.updatedAt,
34
+ };
35
+ root.mcp = mcp;
36
+ const dir = path.dirname(filePath);
37
+ const base = path.basename(filePath, '.json');
38
+ const backupPath = path.join(dir, `${base}.backup.json`);
39
+ const tempPath = path.join(dir, `${base}.tmp.json`);
40
+ try {
41
+ await copyFile(filePath, backupPath, constants.COPYFILE_EXCL);
42
+ }
43
+ catch (err) {
44
+ const code = err && typeof err === 'object' && 'code' in err ? String(err.code) : '';
45
+ if (code !== 'EEXIST') {
46
+ logWarn(`无法创建备份 ${backupPath}: ${err}`);
47
+ }
48
+ }
49
+ const serialized = JSON.stringify(root, null, 2);
50
+ await writeFile(tempPath, serialized, 'utf-8');
51
+ await rename(tempPath, filePath);
52
+ logInfo(`Runtime written to ${filePath}`);
53
+ }
54
+ //# sourceMappingURL=runtimeStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeStore.js","sourceRoot":"","sources":["../src/runtimeStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,OAAmB;IACtE,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gBAAgB,QAAQ,KAAK,GAAG,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,IAAI,GAAG,IAA+B,CAAC;IAC7C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAGpE,CAAC;IAEF,GAAG,CAAC,OAAO,GAAG;QACZ,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC;IACF,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAEf,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,UAAU,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;AAC5C,CAAC"}
package/dist/server.d.ts CHANGED
@@ -1,25 +1,48 @@
1
1
  /**
2
- * YIS-15 Task 2.2 / YIS-20 / YIS-21: MCP Server 实现
3
- * YIS-22: 添加 load_config、list_configs Tool,支持自然语言唤起配置切换
2
+ * YIS-15 Task 2.2 / YIS-20 / YIS-21 / MCP 1.1: MCP Server 实现
3
+ * 档案 = 个人记忆;认知芯片 = 可在 AI 中直接切换的思考/输出模式。
4
4
  */
5
- import type { McpResource } from './types.js';
5
+ import type { ParsedMcpData } from './types.js';
6
6
  export declare class MemoryCodeMCPServer {
7
- private resources;
7
+ private parsed;
8
8
  private memorySnapshot;
9
+ private watchFilePath;
9
10
  private server;
10
11
  private transport;
11
12
  constructor();
12
- updateMemorySnapshot(resources: McpResource[], payload: unknown): void;
13
+ setWatchFilePath(filePath: string): void;
14
+ updateMemorySnapshot(parsed: ParsedMcpData, payload: unknown): void;
15
+ private handleToolCall;
16
+ private toolLoadConfig;
17
+ private toolListConfigs;
18
+ private toolListChips;
19
+ private toolLoadChip;
20
+ private toolUnloadChip;
21
+ private toolGetCognitiveChip;
22
+ private chipUnsupportedError;
23
+ private listAllResources;
24
+ private handleReadResource;
25
+ private supportsChipSwitching;
26
+ private resolvePrompt;
27
+ private resolveActiveChipForProfile;
28
+ private runtimeWriteQueue;
29
+ private queueRuntimePersist;
30
+ private getProfileNames;
31
+ private getRuntimeActiveProfile;
32
+ private findProfileByName;
33
+ private findChipByName;
34
+ private findChipById;
35
+ private findResourceByConfigName;
36
+ private normalizeName;
13
37
  private getUserProfile;
14
38
  private getExpertise;
15
- private getActiveProfile;
39
+ /** 优先 runtime 档案,其次 data.state.activeProfileId */
40
+ private getActiveProfileRecord;
16
41
  private asRecord;
17
42
  private toSafeString;
18
43
  private toSafeStringArray;
19
44
  private toDepthValue;
20
45
  private mapDepth;
21
- private findResourceByConfigName;
22
- private normalizeConfigName;
23
46
  run(): Promise<void>;
24
47
  }
25
48
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA6E9C,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAqC;;IAoItD,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAQtE,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,mBAAmB;IAOrB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAK3B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,KAAK,EAMV,aAAa,EACd,MAAM,YAAY,CAAC;AAsJpB,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAA4E;IAC1F,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAqC;;IAmDtD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxC,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;YAQrD,cAAc;YAgCd,cAAc;IA8D5B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,aAAa;YAoBP,YAAY;YAsEZ,cAAc;IA8C5B,OAAO,CAAC,oBAAoB;IA2E5B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,kBAAkB;IAkD1B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,2BAA2B;IA0BnC,OAAO,CAAC,iBAAiB,CAAoC;IAE7D,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,YAAY;IA0BpB,kDAAkD;IAClD,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;IAMV,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAK3B"}