@lovelybunch/core 1.0.75-alpha.8 → 1.0.75

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 (48) hide show
  1. package/dist/events.d.ts +4 -4
  2. package/dist/index.d.ts +3 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/knowledge.d.ts +104 -104
  7. package/dist/knowledge.js +1 -1
  8. package/dist/knowledge.js.map +1 -1
  9. package/dist/logging/index.d.ts +5 -5
  10. package/dist/logging/index.d.ts.map +1 -1
  11. package/dist/logging/index.js +5 -5
  12. package/dist/logging/index.js.map +1 -1
  13. package/dist/logging/kinds.d.ts +71 -25
  14. package/dist/logging/kinds.d.ts.map +1 -1
  15. package/dist/logging/kinds.js +65 -24
  16. package/dist/logging/kinds.js.map +1 -1
  17. package/dist/mail.d.ts +430 -0
  18. package/dist/mail.d.ts.map +1 -0
  19. package/dist/mail.js +414 -0
  20. package/dist/mail.js.map +1 -0
  21. package/dist/markdown-storage.d.ts +6 -6
  22. package/dist/markdown-storage.d.ts.map +1 -1
  23. package/dist/markdown-storage.js +71 -118
  24. package/dist/markdown-storage.js.map +1 -1
  25. package/dist/skill-instructions.d.ts +5 -5
  26. package/dist/skill-instructions.d.ts.map +1 -1
  27. package/dist/skill-instructions.js +27 -29
  28. package/dist/skill-instructions.js.map +1 -1
  29. package/dist/slack.d.ts +102 -0
  30. package/dist/slack.d.ts.map +1 -0
  31. package/dist/slack.js +548 -0
  32. package/dist/slack.js.map +1 -0
  33. package/dist/storage.d.ts +10 -10
  34. package/dist/storage.d.ts.map +1 -1
  35. package/dist/storage.js +31 -59
  36. package/dist/storage.js.map +1 -1
  37. package/dist/system-prompts/coconut-assistant.md +40 -6
  38. package/dist/system-prompts/mail-processor.md +36 -0
  39. package/dist/system-prompts/schema/agent.schema.md +1 -1
  40. package/dist/system-prompts/schema/knowledge.schema.md +2 -2
  41. package/dist/system-prompts/schema/skill.schema.md +1 -1
  42. package/dist/system-prompts/schema/task.schema.md +65 -0
  43. package/dist/tasks.d.ts +798 -0
  44. package/dist/tasks.d.ts.map +1 -0
  45. package/dist/tasks.js +478 -0
  46. package/dist/tasks.js.map +1 -0
  47. package/package.json +3 -2
  48. package/dist/system-prompts/schema/proposal.schema.md +0 -179
package/dist/mail.js ADDED
@@ -0,0 +1,414 @@
1
+ import { z } from 'zod';
2
+ import { zodToJsonSchema } from 'zod-to-json-schema';
3
+ import { promises as fs } from 'fs';
4
+ import path from 'path';
5
+ import matter from 'gray-matter';
6
+ import { getLogger, MailKinds } from './logging/index.js';
7
+ // ============================================================================
8
+ // Path Resolution (matches knowledge.ts pattern)
9
+ // ============================================================================
10
+ function resolveGaitPath() {
11
+ if (process.env.NODE_ENV === 'development' && process.env.GAIT_DEV_ROOT) {
12
+ return process.env.GAIT_DEV_ROOT;
13
+ }
14
+ if (process.env.GAIT_DATA_PATH) {
15
+ return `${process.env.GAIT_DATA_PATH}/.nut`;
16
+ }
17
+ return '.nut';
18
+ }
19
+ function getMailPath(folder) {
20
+ const base = path.join(resolveGaitPath(), 'mail');
21
+ return folder ? path.join(base, folder) : base;
22
+ }
23
+ async function ensureMailDirs() {
24
+ const folders = ['inbox', 'read', 'sent'];
25
+ for (const folder of folders) {
26
+ await fs.mkdir(getMailPath(folder), { recursive: true });
27
+ }
28
+ }
29
+ function logMailEvent(kind, mailId, payload) {
30
+ try {
31
+ const logger = getLogger();
32
+ logger.log({
33
+ kind,
34
+ actor: 'cli:nut',
35
+ subject: `mail:${mailId}`,
36
+ tags: ['mail'],
37
+ payload: {
38
+ mailId,
39
+ ...payload,
40
+ },
41
+ });
42
+ }
43
+ catch (err) {
44
+ console.error('Failed to log mail event:', err);
45
+ }
46
+ }
47
+ // ============================================================================
48
+ // Zod Schemas
49
+ // ============================================================================
50
+ export const MailFolderSchema = z.enum(['inbox', 'read', 'sent']);
51
+ export const MailAttachmentSchema = z.object({
52
+ id: z.string(),
53
+ filename: z.string(),
54
+ contentType: z.string(),
55
+ contentDisposition: z.string().optional(),
56
+ contentId: z.string().optional(),
57
+ });
58
+ export const MailMessageSchema = z.object({
59
+ id: z.string(),
60
+ emailId: z.string(),
61
+ from: z.string(),
62
+ to: z.array(z.string()),
63
+ cc: z.array(z.string()).default([]),
64
+ bcc: z.array(z.string()).default([]),
65
+ subject: z.string(),
66
+ messageId: z.string(),
67
+ attachments: z.array(MailAttachmentSchema).default([]),
68
+ receivedAt: z.string(),
69
+ content: z.string().default(''),
70
+ folder: MailFolderSchema,
71
+ action: z.string().optional(),
72
+ processing: z.boolean().optional(),
73
+ processingStartedAt: z.string().optional(),
74
+ });
75
+ export const SaveMailInputSchema = z.object({
76
+ emailId: z.string().min(1, 'Email ID is required'),
77
+ from: z.string().min(1, 'From address is required'),
78
+ to: z.array(z.string()).min(1, 'At least one recipient is required'),
79
+ cc: z.array(z.string()).default([]),
80
+ bcc: z.array(z.string()).default([]),
81
+ subject: z.string().default('(no subject)'),
82
+ messageId: z.string().default(''),
83
+ attachments: z.array(MailAttachmentSchema).default([]),
84
+ receivedAt: z.string().optional(),
85
+ content: z.string().default(''),
86
+ });
87
+ export const SetMailStatusInputSchema = z.object({
88
+ status: z.enum(['read', 'unread']),
89
+ });
90
+ export const ReplyMailInputSchema = z.object({
91
+ content: z.string().min(1, 'Reply content is required'),
92
+ });
93
+ export const AddMailActionInputSchema = z.object({
94
+ id: z.string().min(1, 'Mail ID is required'),
95
+ action: z.string().min(1, 'Action message is required'),
96
+ });
97
+ // ============================================================================
98
+ // Helper Functions
99
+ // ============================================================================
100
+ function parseMailFile(raw, filename, folder) {
101
+ const { data, content } = matter(raw);
102
+ const id = filename.replace(/\.md$/, '');
103
+ const message = {
104
+ id,
105
+ emailId: data.emailId || id,
106
+ from: data.from || '',
107
+ to: Array.isArray(data.to) ? data.to : [],
108
+ cc: Array.isArray(data.cc) ? data.cc : [],
109
+ bcc: Array.isArray(data.bcc) ? data.bcc : [],
110
+ subject: data.subject || '(no subject)',
111
+ messageId: data.messageId || '',
112
+ attachments: Array.isArray(data.attachments) ? data.attachments : [],
113
+ receivedAt: data.receivedAt || '',
114
+ content: content.trim(),
115
+ folder,
116
+ };
117
+ if (data.action && typeof data.action === 'string') {
118
+ message.action = data.action;
119
+ }
120
+ if (data.processing === true) {
121
+ message.processing = true;
122
+ }
123
+ if (data.processingStartedAt && typeof data.processingStartedAt === 'string') {
124
+ message.processingStartedAt = data.processingStartedAt;
125
+ }
126
+ return message;
127
+ }
128
+ function mailToMarkdown(message) {
129
+ const frontmatter = {
130
+ emailId: message.emailId,
131
+ from: message.from,
132
+ to: message.to,
133
+ cc: message.cc || [],
134
+ bcc: message.bcc || [],
135
+ subject: message.subject,
136
+ messageId: message.messageId || '',
137
+ receivedAt: message.receivedAt || new Date().toISOString(),
138
+ };
139
+ if (message.attachments && message.attachments.length > 0) {
140
+ frontmatter.attachments = message.attachments;
141
+ }
142
+ return matter.stringify(message.content || '', frontmatter);
143
+ }
144
+ /**
145
+ * Find which folder contains a given mail ID.
146
+ * Returns the folder name or null if not found.
147
+ */
148
+ async function findMailFolder(id) {
149
+ const folders = ['inbox', 'read', 'sent'];
150
+ for (const folder of folders) {
151
+ const filePath = path.join(getMailPath(folder), `${id}.md`);
152
+ try {
153
+ await fs.access(filePath);
154
+ return folder;
155
+ }
156
+ catch {
157
+ // Not in this folder
158
+ }
159
+ }
160
+ return null;
161
+ }
162
+ // ============================================================================
163
+ // Core Functions
164
+ // ============================================================================
165
+ /**
166
+ * List all emails in a given folder
167
+ */
168
+ export async function listMail(folder) {
169
+ MailFolderSchema.parse(folder);
170
+ const folderPath = getMailPath(folder);
171
+ await fs.mkdir(folderPath, { recursive: true });
172
+ let files;
173
+ try {
174
+ files = await fs.readdir(folderPath);
175
+ }
176
+ catch (err) {
177
+ if (err.code === 'ENOENT')
178
+ return [];
179
+ throw err;
180
+ }
181
+ const markdownFiles = files.filter(f => f.endsWith('.md'));
182
+ const messages = await Promise.all(markdownFiles.map(async (file) => {
183
+ try {
184
+ const raw = await fs.readFile(path.join(folderPath, file), 'utf-8');
185
+ return parseMailFile(raw, file, folder);
186
+ }
187
+ catch (error) {
188
+ console.error(`Failed to read mail file ${file}:`, error);
189
+ return null;
190
+ }
191
+ }));
192
+ return messages
193
+ .filter((msg) => msg !== null)
194
+ .sort((a, b) => {
195
+ const dateA = new Date(a.receivedAt).getTime() || 0;
196
+ const dateB = new Date(b.receivedAt).getTime() || 0;
197
+ return dateB - dateA;
198
+ });
199
+ }
200
+ /**
201
+ * Get a single email by ID, searching across all folders or in a specific folder
202
+ */
203
+ export async function getMail(id, folder) {
204
+ const searchFolder = folder || await findMailFolder(id);
205
+ if (!searchFolder)
206
+ return null;
207
+ const filePath = path.join(getMailPath(searchFolder), `${id}.md`);
208
+ try {
209
+ const raw = await fs.readFile(filePath, 'utf-8');
210
+ return parseMailFile(raw, `${id}.md`, searchFolder);
211
+ }
212
+ catch (err) {
213
+ if (err.code === 'ENOENT')
214
+ return null;
215
+ throw err;
216
+ }
217
+ }
218
+ /**
219
+ * Save a new email to a folder (used by webhook handler and send)
220
+ */
221
+ export async function saveMail(folder, input) {
222
+ const validated = SaveMailInputSchema.parse(input);
223
+ const folderPath = getMailPath(folder);
224
+ await fs.mkdir(folderPath, { recursive: true });
225
+ const id = validated.emailId;
226
+ const filePath = path.join(folderPath, `${id}.md`);
227
+ const markdown = mailToMarkdown({
228
+ emailId: validated.emailId,
229
+ from: validated.from,
230
+ to: validated.to,
231
+ cc: validated.cc,
232
+ bcc: validated.bcc,
233
+ subject: validated.subject,
234
+ messageId: validated.messageId,
235
+ attachments: validated.attachments,
236
+ receivedAt: validated.receivedAt || new Date().toISOString(),
237
+ content: validated.content,
238
+ });
239
+ await fs.writeFile(filePath, markdown, 'utf-8');
240
+ logMailEvent(MailKinds.RECEIVE, id, {
241
+ folder,
242
+ from: validated.from,
243
+ subject: validated.subject,
244
+ });
245
+ return {
246
+ id,
247
+ emailId: validated.emailId,
248
+ from: validated.from,
249
+ to: validated.to,
250
+ cc: validated.cc,
251
+ bcc: validated.bcc,
252
+ subject: validated.subject,
253
+ messageId: validated.messageId,
254
+ attachments: validated.attachments,
255
+ receivedAt: validated.receivedAt || new Date().toISOString(),
256
+ content: validated.content,
257
+ folder,
258
+ };
259
+ }
260
+ /**
261
+ * Set an email's read/unread status by moving between inbox and read folders
262
+ */
263
+ export async function setMailStatus(id, status) {
264
+ const currentFolder = await findMailFolder(id);
265
+ if (!currentFolder) {
266
+ throw new Error(`Mail with id "${id}" not found`);
267
+ }
268
+ const targetFolder = status === 'read' ? 'read' : 'inbox';
269
+ if (currentFolder === targetFolder) {
270
+ const msg = await getMail(id, currentFolder);
271
+ if (!msg)
272
+ throw new Error(`Mail with id "${id}" not found`);
273
+ return msg;
274
+ }
275
+ if (currentFolder === 'sent') {
276
+ throw new Error('Cannot change status of sent emails');
277
+ }
278
+ const sourcePath = path.join(getMailPath(currentFolder), `${id}.md`);
279
+ const targetPath = path.join(getMailPath(targetFolder), `${id}.md`);
280
+ await fs.mkdir(getMailPath(targetFolder), { recursive: true });
281
+ await fs.rename(sourcePath, targetPath);
282
+ logMailEvent(status === 'read' ? MailKinds.READ : MailKinds.UNREAD, id, { from: currentFolder, to: targetFolder });
283
+ const msg = await getMail(id, targetFolder);
284
+ if (!msg)
285
+ throw new Error(`Failed to read moved mail "${id}"`);
286
+ return msg;
287
+ }
288
+ /**
289
+ * Delete an email from any folder
290
+ */
291
+ export async function deleteMail(id, folder) {
292
+ const actualFolder = folder || await findMailFolder(id);
293
+ if (!actualFolder)
294
+ return false;
295
+ const filePath = path.join(getMailPath(actualFolder), `${id}.md`);
296
+ try {
297
+ await fs.unlink(filePath);
298
+ logMailEvent(MailKinds.DELETE, id, { folder: actualFolder });
299
+ return true;
300
+ }
301
+ catch (err) {
302
+ if (err.code === 'ENOENT')
303
+ return false;
304
+ throw err;
305
+ }
306
+ }
307
+ /**
308
+ * Reply to an email (stores reply in sent folder)
309
+ */
310
+ export async function replyToMail(id, input) {
311
+ const validated = ReplyMailInputSchema.parse(input);
312
+ const original = await getMail(id);
313
+ if (!original) {
314
+ throw new Error(`Mail with id "${id}" not found`);
315
+ }
316
+ const replyId = `reply-${Date.now()}-${id}`;
317
+ const reply = await saveMail('sent', {
318
+ emailId: replyId,
319
+ from: original.to[0] || 'me',
320
+ to: [original.from],
321
+ cc: [],
322
+ bcc: [],
323
+ subject: original.subject.startsWith('Re: ') ? original.subject : `Re: ${original.subject}`,
324
+ messageId: `<reply-${replyId}>`,
325
+ attachments: [],
326
+ receivedAt: new Date().toISOString(),
327
+ content: validated.content,
328
+ });
329
+ logMailEvent(MailKinds.REPLY, id, { replyId });
330
+ return reply;
331
+ }
332
+ /**
333
+ * Set the processing state on an email's frontmatter.
334
+ * When processing=true, the frontend shows a spinner.
335
+ * When processing=false, the flag is removed from frontmatter.
336
+ */
337
+ export async function setMailProcessing(id, processing) {
338
+ const folder = await findMailFolder(id);
339
+ if (!folder) {
340
+ console.warn(`[mail] setMailProcessing: mail "${id}" not found, skipping`);
341
+ return;
342
+ }
343
+ const filePath = path.join(getMailPath(folder), `${id}.md`);
344
+ const raw = await fs.readFile(filePath, 'utf-8');
345
+ const { data, content } = matter(raw);
346
+ if (processing) {
347
+ data.processing = true;
348
+ data.processingStartedAt = new Date().toISOString();
349
+ }
350
+ else {
351
+ delete data.processing;
352
+ delete data.processingStartedAt;
353
+ }
354
+ const updated = matter.stringify(content, data);
355
+ await fs.writeFile(filePath, updated, 'utf-8');
356
+ }
357
+ /**
358
+ * Add an agent action summary to an email's frontmatter
359
+ */
360
+ export async function addMailAction(id, actionText) {
361
+ AddMailActionInputSchema.parse({ id, action: actionText });
362
+ const folder = await findMailFolder(id);
363
+ if (!folder) {
364
+ throw new Error(`Mail with id "${id}" not found`);
365
+ }
366
+ const filePath = path.join(getMailPath(folder), `${id}.md`);
367
+ const raw = await fs.readFile(filePath, 'utf-8');
368
+ const { data, content } = matter(raw);
369
+ data.action = actionText;
370
+ delete data.processing;
371
+ delete data.processingStartedAt;
372
+ const updated = matter.stringify(content, data);
373
+ await fs.writeFile(filePath, updated, 'utf-8');
374
+ logMailEvent(MailKinds.ACTION, id, { folder, action: actionText });
375
+ const msg = await getMail(id, folder);
376
+ if (!msg)
377
+ throw new Error(`Failed to read updated mail "${id}"`);
378
+ return msg;
379
+ }
380
+ /**
381
+ * Initialize mail directories
382
+ */
383
+ export async function initMailDirs() {
384
+ await ensureMailDirs();
385
+ }
386
+ // ============================================================================
387
+ // Export all schemas for MCP tool generation
388
+ // ============================================================================
389
+ export const mailSchemas = {
390
+ MailFolderSchema,
391
+ MailAttachmentSchema,
392
+ MailMessageSchema,
393
+ SaveMailInputSchema,
394
+ SetMailStatusInputSchema,
395
+ ReplyMailInputSchema,
396
+ AddMailActionInputSchema,
397
+ };
398
+ // ============================================================================
399
+ // Pre-computed JSON Schemas for MCP tool parameters
400
+ // ============================================================================
401
+ function extractJsonSchemaProperties(schema) {
402
+ const jsonSchema = zodToJsonSchema(schema, { $refStrategy: 'none' });
403
+ return (jsonSchema.properties || {});
404
+ }
405
+ export const mailJsonSchemas = {
406
+ list: extractJsonSchemaProperties(z.object({ folder: MailFolderSchema })),
407
+ get: extractJsonSchemaProperties(z.object({ id: z.string(), folder: MailFolderSchema.optional() })),
408
+ save: extractJsonSchemaProperties(SaveMailInputSchema),
409
+ setStatus: extractJsonSchemaProperties(SetMailStatusInputSchema),
410
+ reply: extractJsonSchemaProperties(ReplyMailInputSchema),
411
+ delete: extractJsonSchemaProperties(z.object({ id: z.string(), folder: MailFolderSchema.optional() })),
412
+ addAction: extractJsonSchemaProperties(AddMailActionInputSchema),
413
+ };
414
+ //# sourceMappingURL=mail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail.js","sourceRoot":"","sources":["../src/mail.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,18 @@
1
- import type { ChangeProposal, GaitConfig, Skill } from '@lovelybunch/types';
1
+ import type { Task, GaitConfig, Skill } from '@lovelybunch/types';
2
2
  import type { StorageAdapter } from './storage.js';
3
3
  export declare class MarkdownStorageAdapter implements StorageAdapter {
4
4
  private basePath;
5
- private proposalsPath;
5
+ private tasksPath;
6
6
  private configPath;
7
7
  private skillsPath;
8
8
  constructor(basePath?: string);
9
9
  init(): Promise<void>;
10
10
  private ensureSchemaFiles;
11
11
  resetSchemas(): Promise<void>;
12
- saveProposal(proposal: ChangeProposal): Promise<void>;
13
- loadProposal(id: string): Promise<ChangeProposal | null>;
14
- loadAllProposals(): Promise<ChangeProposal[]>;
15
- deleteProposal(id: string): Promise<boolean>;
12
+ saveTask(task: Task): Promise<void>;
13
+ loadTask(id: string): Promise<Task | null>;
14
+ loadAllTasks(): Promise<Task[]>;
15
+ deleteTask(id: string): Promise<boolean>;
16
16
  saveConfig(config: GaitConfig): Promise<void>;
17
17
  loadConfig(): Promise<GaitConfig | null>;
18
18
  private fileExists;
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-storage.d.ts","sourceRoot":"","sources":["../src/markdown-storage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAoG,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC9K,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAyCnD,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;gBAEf,QAAQ,GAAE,MAAe;IAO/B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YA2Cb,iBAAiB;IAazB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmHrD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA+ExD,gBAAgB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAiB7C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW5C,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,UAAU,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAShC,UAAU;IASxB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,uBAAuB;IA0F/B,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvC;;OAEG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAM/C,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCtC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAW5C,aAAa,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAoBjC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY/C,OAAO,CAAC,kBAAkB;CAkD3B;AAGD,eAAO,MAAM,eAAe,wBAA+B,CAAC"}
1
+ {"version":3,"file":"markdown-storage.d.ts","sourceRoot":"","sources":["../src/markdown-storage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAoB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAwCnD,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;gBAEf,QAAQ,GAAE,MAAe;IAO/B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAiDb,iBAAiB;IAazB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA+GnC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAyE1C,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAiB/B,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWxC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,UAAU,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAShC,UAAU;IASxB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,uBAAuB;IAqD/B,OAAO,CAAC,oBAAoB;IAQ5B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvC;;OAEG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAM/C,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCtC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAW5C,aAAa,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAoBjC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY/C,OAAO,CAAC,kBAAkB;CAkD3B;AAGD,eAAO,MAAM,eAAe,wBAA+B,CAAC"}