session-weaver 1.1.1

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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +227 -0
  3. package/dist/index.d.ts +7 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +401 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/managers/context.d.ts +15 -0
  8. package/dist/managers/context.d.ts.map +1 -0
  9. package/dist/managers/context.js +209 -0
  10. package/dist/managers/context.js.map +1 -0
  11. package/dist/managers/delete.d.ts +12 -0
  12. package/dist/managers/delete.d.ts.map +1 -0
  13. package/dist/managers/delete.js +135 -0
  14. package/dist/managers/delete.js.map +1 -0
  15. package/dist/managers/handoff.d.ts +32 -0
  16. package/dist/managers/handoff.d.ts.map +1 -0
  17. package/dist/managers/handoff.js +239 -0
  18. package/dist/managers/handoff.js.map +1 -0
  19. package/dist/managers/module.d.ts +12 -0
  20. package/dist/managers/module.d.ts.map +1 -0
  21. package/dist/managers/module.js +88 -0
  22. package/dist/managers/module.js.map +1 -0
  23. package/dist/managers/pitfall.d.ts +12 -0
  24. package/dist/managers/pitfall.d.ts.map +1 -0
  25. package/dist/managers/pitfall.js +70 -0
  26. package/dist/managers/pitfall.js.map +1 -0
  27. package/dist/managers/session.d.ts +16 -0
  28. package/dist/managers/session.d.ts.map +1 -0
  29. package/dist/managers/session.js +248 -0
  30. package/dist/managers/session.js.map +1 -0
  31. package/dist/managers/storage.d.ts +46 -0
  32. package/dist/managers/storage.d.ts.map +1 -0
  33. package/dist/managers/storage.js +166 -0
  34. package/dist/managers/storage.js.map +1 -0
  35. package/dist/types.d.ts +238 -0
  36. package/dist/types.d.ts.map +1 -0
  37. package/dist/types.js +6 -0
  38. package/dist/types.js.map +1 -0
  39. package/dist/utils/format.d.ts +39 -0
  40. package/dist/utils/format.d.ts.map +1 -0
  41. package/dist/utils/format.js +442 -0
  42. package/dist/utils/format.js.map +1 -0
  43. package/package.json +54 -0
@@ -0,0 +1,239 @@
1
+ /**
2
+ * Handoff Manager - 跨 AI 交接
3
+ * 实现 export_handoff 和 import_handoff 工具
4
+ * 支持全量数据的导出和导入
5
+ */
6
+ import { nanoid } from 'nanoid';
7
+ import { StorageManager } from './storage.js';
8
+ // Handoff 文档版本,用于兼容性检查
9
+ const HANDOFF_VERSION = '2.0.0';
10
+ export class HandoffManager {
11
+ storage;
12
+ constructor(storage) {
13
+ this.storage = storage || new StorageManager();
14
+ }
15
+ /**
16
+ * 导出交接文档
17
+ * 包含项目的全量数据:所有模块、所有会话、所有踩坑记录
18
+ */
19
+ async exportHandoff(input) {
20
+ const projectFile = await this.storage.loadProjectFile(input.project);
21
+ if (!projectFile) {
22
+ return null;
23
+ }
24
+ const handoffId = nanoid(12);
25
+ const exportedAt = new Date().toISOString();
26
+ // 构建全量数据对象
27
+ const handoffData = {
28
+ version: HANDOFF_VERSION,
29
+ exportedAt,
30
+ project: projectFile.project,
31
+ currentModule: projectFile.currentModule,
32
+ modules: projectFile.modules,
33
+ sessions: input.includeSessions !== false ? projectFile.sessions : [],
34
+ pitfalls: input.includePitfalls !== false ? projectFile.pitfalls : []
35
+ };
36
+ // 生成 Markdown 格式的交接文档
37
+ const markdown = this.generateHandoffMarkdown(handoffData);
38
+ // 保存交接文档
39
+ await this.storage.saveHandoff(handoffId, markdown);
40
+ return {
41
+ handoffId,
42
+ markdown,
43
+ exportedAt
44
+ };
45
+ }
46
+ /**
47
+ * 导入交接文档
48
+ * 从 Markdown 解析并重建完整的项目结构
49
+ */
50
+ async importHandoff(input) {
51
+ let markdown;
52
+ if (input.handoffId) {
53
+ const loaded = await this.storage.loadHandoff(input.handoffId);
54
+ if (!loaded) {
55
+ throw new Error(`交接文档 ${input.handoffId} 不存在`);
56
+ }
57
+ markdown = loaded;
58
+ }
59
+ else if (input.markdown) {
60
+ markdown = input.markdown;
61
+ }
62
+ else {
63
+ throw new Error('必须提供 handoffId 或 markdown');
64
+ }
65
+ const warnings = [];
66
+ // 解析 Markdown 中的 JSON 数据块
67
+ const handoffData = this.parseHandoffMarkdown(markdown);
68
+ if (!handoffData.project) {
69
+ throw new Error('无法从交接文档解析项目名');
70
+ }
71
+ // 检查版本兼容性
72
+ if (handoffData.version && handoffData.version !== HANDOFF_VERSION) {
73
+ warnings.push(`版本不匹配:文档版本 ${handoffData.version},当前版本 ${HANDOFF_VERSION}`);
74
+ }
75
+ const projectName = input.projectName || handoffData.project;
76
+ const now = new Date().toISOString();
77
+ // 构建完整的项目文件
78
+ const projectFile = {
79
+ project: projectName,
80
+ metadata: {
81
+ createdAt: now,
82
+ updatedAt: now,
83
+ version: HANDOFF_VERSION
84
+ },
85
+ currentModule: handoffData.currentModule,
86
+ modules: handoffData.modules || {},
87
+ sessions: (handoffData.sessions || []).map((s) => ({
88
+ ...s,
89
+ project: projectName,
90
+ metadata: {
91
+ aiTool: input.aiTool || 'imported',
92
+ version: HANDOFF_VERSION
93
+ }
94
+ })),
95
+ pitfalls: (handoffData.pitfalls || []).map((p) => ({
96
+ ...p,
97
+ project: projectName
98
+ }))
99
+ };
100
+ // 保存项目文件
101
+ await this.storage.saveProjectFile(projectFile);
102
+ return {
103
+ success: true,
104
+ project: projectName,
105
+ importedModules: Object.keys(projectFile.modules),
106
+ importedSessions: projectFile.sessions.length,
107
+ importedPitfalls: projectFile.pitfalls.length,
108
+ importedAt: now,
109
+ warnings: warnings.length > 0 ? warnings : undefined
110
+ };
111
+ }
112
+ /**
113
+ * 生成交接文档 Markdown
114
+ * 包含人类可读的摘要 + 机器可解析的 JSON 数据块
115
+ */
116
+ generateHandoffMarkdown(data) {
117
+ const sections = [];
118
+ // === 头部信息 ===
119
+ sections.push(`# 🤖 AI 会话交接文档`);
120
+ sections.push('');
121
+ sections.push(`> **版本**: ${data.version}`);
122
+ sections.push(`> **导出时间**: ${data.exportedAt}`);
123
+ sections.push('');
124
+ // === 项目概览 ===
125
+ sections.push(`## 📋 项目概览`);
126
+ sections.push('');
127
+ sections.push(`- **项目名称**: ${data.project}`);
128
+ sections.push(`- **当前模块**: ${data.currentModule || '未设置'}`);
129
+ sections.push(`- **模块数量**: ${Object.keys(data.modules).length}`);
130
+ sections.push(`- **会话数量**: ${data.sessions?.length || 0}`);
131
+ sections.push(`- **踩坑记录**: ${data.pitfalls?.length || 0}`);
132
+ sections.push('');
133
+ // === 模块详情 ===
134
+ if (Object.keys(data.modules).length > 0) {
135
+ sections.push(`## 📦 模块详情 (${Object.keys(data.modules).length} 个)`);
136
+ sections.push('');
137
+ for (const [name, mod] of Object.entries(data.modules)) {
138
+ sections.push(`### ${name}`);
139
+ sections.push(`- 状态: ${mod.status}`);
140
+ sections.push(`- 摘要: ${mod.summary || '无'}`);
141
+ sections.push(`- 待办 (${mod.todos.length}): ${mod.todos.join(', ') || '无'}`);
142
+ sections.push(`- 决策 (${mod.decisions.length}): ${mod.decisions.map(d => d.description).join('; ') || '无'}`);
143
+ sections.push(`- 技术栈: ${mod.techStack.join(', ') || '无'}`);
144
+ sections.push(`- 更新时间: ${mod.updatedAt}`);
145
+ sections.push('');
146
+ }
147
+ }
148
+ // === 会话历史 ===
149
+ if (data.sessions && data.sessions.length > 0) {
150
+ sections.push(`## 📝 会话历史 (${data.sessions.length} 条)`);
151
+ sections.push('');
152
+ for (const session of data.sessions) {
153
+ sections.push(`### ${session.sessionId}`);
154
+ sections.push(`- 模块: ${session.module || '无'}`);
155
+ sections.push(`- 摘要: ${session.summary}`);
156
+ sections.push(`- 状态: ${session.status}`);
157
+ sections.push(`- 时间: ${session.createdAt}`);
158
+ if (session.techStack && session.techStack.length > 0) {
159
+ sections.push(`- 技术栈: ${session.techStack.join(', ')}`);
160
+ }
161
+ sections.push('');
162
+ }
163
+ }
164
+ // === 踩坑记录 ===
165
+ if (data.pitfalls && data.pitfalls.length > 0) {
166
+ sections.push(`## 🐛 踩坑记录 (${data.pitfalls.length} 条)`);
167
+ sections.push('');
168
+ for (const pitfall of data.pitfalls) {
169
+ sections.push(`### ${pitfall.problem.slice(0, 50)}${pitfall.problem.length > 50 ? '...' : ''}`);
170
+ sections.push(`- 模块: ${pitfall.module || '通用'}`);
171
+ sections.push(`- 问题: ${pitfall.problem}`);
172
+ sections.push(`- 解决: ${pitfall.solution}`);
173
+ sections.push(`- 标签: ${pitfall.tags.join(', ') || '无'}`);
174
+ sections.push(`- 时间: ${pitfall.createdAt}`);
175
+ sections.push('');
176
+ }
177
+ }
178
+ // === 机器可读数据块 ===
179
+ sections.push('---');
180
+ sections.push('');
181
+ sections.push('## 🔧 机器可读数据 (JSON)');
182
+ sections.push('');
183
+ sections.push('```json');
184
+ sections.push(JSON.stringify(data, null, 2));
185
+ sections.push('```');
186
+ sections.push('');
187
+ // === 导入说明 ===
188
+ sections.push('---');
189
+ sections.push('');
190
+ sections.push('## 🚀 导入说明');
191
+ sections.push('');
192
+ sections.push('使用以下命令导入此交接文档:');
193
+ sections.push('');
194
+ sections.push('```typescript');
195
+ sections.push(`import_handoff({ handoffId: "${nanoid(12)}" })`);
196
+ sections.push('// 或');
197
+ sections.push(`import_handoff({ markdown: "..." })`);
198
+ sections.push('```');
199
+ sections.push('');
200
+ return sections.join('\n');
201
+ }
202
+ /**
203
+ * 解析交接文档 Markdown
204
+ * 提取 JSON 数据块并解析
205
+ */
206
+ parseHandoffMarkdown(markdown) {
207
+ // 尝试提取 JSON 代码块
208
+ const jsonMatch = markdown.match(/```json\n([\s\S]*?)\n```/);
209
+ if (jsonMatch) {
210
+ try {
211
+ return JSON.parse(jsonMatch[1]);
212
+ }
213
+ catch (e) {
214
+ // JSON 解析失败,尝试降级解析
215
+ }
216
+ }
217
+ // 降级:从 Markdown 中提取关键信息
218
+ const data = {
219
+ version: HANDOFF_VERSION,
220
+ exportedAt: new Date().toISOString(),
221
+ project: '',
222
+ modules: {},
223
+ sessions: [],
224
+ pitfalls: []
225
+ };
226
+ // 提取项目名
227
+ const projectMatch = markdown.match(/\*\*项目名称\*\*:\s*(.+)/);
228
+ if (projectMatch) {
229
+ data.project = projectMatch[1].trim();
230
+ }
231
+ // 提取当前模块
232
+ const currentModuleMatch = markdown.match(/\*\*当前模块\*\*:\s*(.+)/);
233
+ if (currentModuleMatch && currentModuleMatch[1].trim() !== '未设置') {
234
+ data.currentModule = currentModuleMatch[1].trim();
235
+ }
236
+ return data;
237
+ }
238
+ }
239
+ //# sourceMappingURL=handoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/managers/handoff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Module Manager - 模块列表查询
3
+ * 实现 list_modules 工具
4
+ */
5
+ import type { ListModulesInput, ListModulesOutput } from '../types.js';
6
+ import { StorageManager } from './storage.js';
7
+ export declare class ModuleManager {
8
+ private storage;
9
+ constructor(storage?: StorageManager);
10
+ listModules(input: ListModulesInput): Promise<ListModulesOutput>;
11
+ }
12
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/managers/module.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EAGlB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAiB;gBAEpB,OAAO,CAAC,EAAE,cAAc;IAI9B,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA0FvE"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Module Manager - 模块列表查询
3
+ * 实现 list_modules 工具
4
+ */
5
+ import { StorageManager } from './storage.js';
6
+ export class ModuleManager {
7
+ storage;
8
+ constructor(storage) {
9
+ this.storage = storage || new StorageManager();
10
+ }
11
+ async listModules(input) {
12
+ // 模式 1:列出所有项目
13
+ if (!input.project) {
14
+ const projectList = await this.storage.listProjects();
15
+ const projects = [];
16
+ for (const { name, modifiedAt } of projectList) {
17
+ const projectFile = await this.storage.loadProjectFile(name);
18
+ if (projectFile) {
19
+ projects.push({
20
+ name,
21
+ moduleCount: Object.keys(projectFile.modules).length,
22
+ sessionCount: projectFile.sessions.length,
23
+ lastActivityAt: projectFile.metadata.updatedAt
24
+ });
25
+ }
26
+ }
27
+ return {
28
+ type: 'projects',
29
+ projects,
30
+ total: projects.length
31
+ };
32
+ }
33
+ // 模式 2:列出指定项目的模块
34
+ const projectFile = await this.storage.loadProjectFile(input.project);
35
+ if (!projectFile) {
36
+ return {
37
+ type: 'modules',
38
+ projects: [],
39
+ total: 0
40
+ };
41
+ }
42
+ let modules = Object.values(projectFile.modules);
43
+ // 过滤 archived
44
+ if (!input.includeArchived) {
45
+ modules = modules.filter(m => m.status !== 'archived');
46
+ }
47
+ // 过滤 status
48
+ if (input.status) {
49
+ modules = modules.filter(m => m.status === input.status);
50
+ }
51
+ // 排序:按更新时间倒序
52
+ modules.sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime());
53
+ const withStats = input.withStats !== false;
54
+ const moduleSummaries = modules.map(m => {
55
+ const base = {
56
+ name: m.name,
57
+ status: m.status,
58
+ summary: m.summary,
59
+ todoCount: m.todos.length,
60
+ updatedAt: m.updatedAt
61
+ };
62
+ if (withStats) {
63
+ const moduleSessions = projectFile.sessions.filter(s => s.module === m.name);
64
+ const modulePitfalls = projectFile.pitfalls.filter(p => p.module === m.name);
65
+ base.sessionCount = moduleSessions.length;
66
+ base.pitfallCount = modulePitfalls.length;
67
+ base.lastSessionAt = moduleSessions.length > 0
68
+ ? moduleSessions.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())[0].createdAt
69
+ : undefined;
70
+ }
71
+ return base;
72
+ });
73
+ return {
74
+ type: 'modules',
75
+ projects: [{
76
+ name: input.project,
77
+ moduleCount: moduleSummaries.length,
78
+ sessionCount: projectFile.sessions.length,
79
+ lastActivityAt: projectFile.metadata.updatedAt,
80
+ modules: moduleSummaries
81
+ }],
82
+ currentProject: input.project,
83
+ currentModule: projectFile.currentModule,
84
+ total: moduleSummaries.length
85
+ };
86
+ }
87
+ }
88
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/managers/module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Pitfall Manager - 踩坑记录查询
3
+ * 实现 list_pitfalls 工具
4
+ */
5
+ import type { ListPitfallsInput, ListPitfallsOutput } from '../types.js';
6
+ import { StorageManager } from './storage.js';
7
+ export declare class PitfallManager {
8
+ private storage;
9
+ constructor(storage?: StorageManager);
10
+ listPitfalls(input: ListPitfallsInput): Promise<ListPitfallsOutput>;
11
+ }
12
+ //# sourceMappingURL=pitfall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pitfall.d.ts","sourceRoot":"","sources":["../../src/managers/pitfall.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAiB;gBAEpB,OAAO,CAAC,EAAE,cAAc;IAI9B,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAuE1E"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Pitfall Manager - 踩坑记录查询
3
+ * 实现 list_pitfalls 工具
4
+ */
5
+ import { StorageManager } from './storage.js';
6
+ export class PitfallManager {
7
+ storage;
8
+ constructor(storage) {
9
+ this.storage = storage || new StorageManager();
10
+ }
11
+ async listPitfalls(input) {
12
+ let allPitfalls = [];
13
+ if (input.project) {
14
+ // 查询指定项目
15
+ const projectFile = await this.storage.loadProjectFile(input.project);
16
+ if (projectFile) {
17
+ let pitfalls = projectFile.pitfalls;
18
+ // 按模块过滤
19
+ if (input.module) {
20
+ pitfalls = pitfalls.filter(p => p.module === input.module);
21
+ }
22
+ // 按标签过滤
23
+ if (input.tags && input.tags.length > 0) {
24
+ pitfalls = pitfalls.filter(p => input.tags.some(tag => p.tags.includes(tag)));
25
+ }
26
+ allPitfalls = pitfalls.map(p => ({
27
+ pitfallId: p.pitfallId,
28
+ project: p.project,
29
+ module: p.module,
30
+ problem: p.problem,
31
+ tags: p.tags,
32
+ createdAt: p.createdAt
33
+ }));
34
+ }
35
+ }
36
+ else {
37
+ // 跨项目查询
38
+ const projects = await this.storage.listProjects();
39
+ for (const { name } of projects) {
40
+ const projectFile = await this.storage.loadProjectFile(name);
41
+ if (projectFile) {
42
+ let pitfalls = projectFile.pitfalls;
43
+ // 按标签过滤
44
+ if (input.tags && input.tags.length > 0) {
45
+ pitfalls = pitfalls.filter(p => input.tags.some(tag => p.tags.includes(tag)));
46
+ }
47
+ allPitfalls.push(...pitfalls.map(p => ({
48
+ pitfallId: p.pitfallId,
49
+ project: p.project,
50
+ module: p.module,
51
+ problem: p.problem,
52
+ tags: p.tags,
53
+ createdAt: p.createdAt
54
+ })));
55
+ }
56
+ }
57
+ }
58
+ // 按时间倒序排序
59
+ allPitfalls.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
60
+ // 限制数量
61
+ const limit = input.limit ?? 20;
62
+ const total = allPitfalls.length;
63
+ allPitfalls = allPitfalls.slice(0, limit);
64
+ return {
65
+ pitfalls: allPitfalls,
66
+ total
67
+ };
68
+ }
69
+ }
70
+ //# sourceMappingURL=pitfall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pitfall.js","sourceRoot":"","sources":["../../src/managers/pitfall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Session Manager - 会话管理
3
+ */
4
+ import type { SaveSessionInput, SaveSessionOutput, LoadSessionInput, LoadSessionOutput, ListSessionsInput, ListSessionsOutput, DeleteSessionInput, DeleteSessionOutput, ArchiveSessionInput, ArchiveSessionOutput, UnarchiveSessionInput, UnarchiveSessionOutput } from '../types.js';
5
+ import { StorageManager } from './storage.js';
6
+ export declare class SessionManager {
7
+ private storage;
8
+ constructor(storage?: StorageManager);
9
+ saveSession(input: SaveSessionInput): Promise<SaveSessionOutput>;
10
+ loadSession(input: LoadSessionInput): Promise<LoadSessionOutput | null>;
11
+ listSessions(input: ListSessionsInput): Promise<ListSessionsOutput>;
12
+ deleteSession(input: DeleteSessionInput): Promise<DeleteSessionOutput>;
13
+ archiveSession(input: ArchiveSessionInput): Promise<ArchiveSessionOutput>;
14
+ unarchiveSession(input: UnarchiveSessionInput): Promise<UnarchiveSessionOutput>;
15
+ }
16
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/managers/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAEV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EAKvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAK9C,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAiB;gBAEpB,OAAO,CAAC,EAAE,cAAc;IAI9B,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiFhE,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IA4CvE,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0DnE,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA8BtE,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA8BzE,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CA6BtF"}