@agentuity/local 3.0.0-alpha.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 (56) hide show
  1. package/dist/bun/db.d.ts +4 -0
  2. package/dist/bun/db.d.ts.map +1 -0
  3. package/dist/bun/db.js +281 -0
  4. package/dist/bun/db.js.map +1 -0
  5. package/dist/bun/email.d.ts +24 -0
  6. package/dist/bun/email.d.ts.map +1 -0
  7. package/dist/bun/email.js +58 -0
  8. package/dist/bun/email.js.map +1 -0
  9. package/dist/bun/index.d.ts +14 -0
  10. package/dist/bun/index.d.ts.map +1 -0
  11. package/dist/bun/index.js +14 -0
  12. package/dist/bun/index.js.map +1 -0
  13. package/dist/bun/kv.d.ts +17 -0
  14. package/dist/bun/kv.d.ts.map +1 -0
  15. package/dist/bun/kv.js +133 -0
  16. package/dist/bun/kv.js.map +1 -0
  17. package/dist/bun/queue.d.ts +10 -0
  18. package/dist/bun/queue.d.ts.map +1 -0
  19. package/dist/bun/queue.js +96 -0
  20. package/dist/bun/queue.js.map +1 -0
  21. package/dist/bun/stream.d.ts +12 -0
  22. package/dist/bun/stream.d.ts.map +1 -0
  23. package/dist/bun/stream.js +266 -0
  24. package/dist/bun/stream.js.map +1 -0
  25. package/dist/bun/task.d.ts +55 -0
  26. package/dist/bun/task.d.ts.map +1 -0
  27. package/dist/bun/task.js +1248 -0
  28. package/dist/bun/task.js.map +1 -0
  29. package/dist/bun/util.d.ts +18 -0
  30. package/dist/bun/util.d.ts.map +1 -0
  31. package/dist/bun/util.js +44 -0
  32. package/dist/bun/util.js.map +1 -0
  33. package/dist/bun/vector.d.ts +17 -0
  34. package/dist/bun/vector.d.ts.map +1 -0
  35. package/dist/bun/vector.js +303 -0
  36. package/dist/bun/vector.js.map +1 -0
  37. package/dist/index.d.ts +13 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +14 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/runtime.d.ts +20 -0
  42. package/dist/runtime.d.ts.map +1 -0
  43. package/dist/runtime.js +44 -0
  44. package/dist/runtime.js.map +1 -0
  45. package/package.json +42 -0
  46. package/src/bun/db.ts +353 -0
  47. package/src/bun/email.ts +91 -0
  48. package/src/bun/index.ts +14 -0
  49. package/src/bun/kv.ts +174 -0
  50. package/src/bun/queue.ts +145 -0
  51. package/src/bun/stream.ts +358 -0
  52. package/src/bun/task.ts +1711 -0
  53. package/src/bun/util.ts +55 -0
  54. package/src/bun/vector.ts +438 -0
  55. package/src/index.ts +36 -0
  56. package/src/runtime.ts +56 -0
@@ -0,0 +1,96 @@
1
+ export class LocalQueueStorage {
2
+ #db;
3
+ #projectPath;
4
+ constructor(db, projectPath) {
5
+ this.#db = db;
6
+ this.#projectPath = projectPath;
7
+ this.#initializeTable();
8
+ }
9
+ #initializeTable() {
10
+ this.#db.run(`
11
+ CREATE TABLE IF NOT EXISTS queue_messages (
12
+ id TEXT PRIMARY KEY,
13
+ project_path TEXT NOT NULL,
14
+ queue_name TEXT NOT NULL,
15
+ offset INTEGER NOT NULL,
16
+ payload TEXT NOT NULL,
17
+ metadata TEXT,
18
+ partition_key TEXT,
19
+ idempotency_key TEXT,
20
+ ttl_seconds INTEGER,
21
+ expires_at TEXT,
22
+ state TEXT NOT NULL DEFAULT 'pending',
23
+ created_at TEXT NOT NULL,
24
+ published_at TEXT NOT NULL
25
+ )
26
+ `);
27
+ this.#db.run(`
28
+ CREATE INDEX IF NOT EXISTS idx_queue_name
29
+ ON queue_messages(project_path, queue_name)
30
+ `);
31
+ this.#db.run(`
32
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_queue_idempotency_unique
33
+ ON queue_messages(project_path, queue_name, idempotency_key)
34
+ WHERE idempotency_key IS NOT NULL
35
+ `);
36
+ }
37
+ async publish(queueName, payload, params) {
38
+ const id = crypto.randomUUID();
39
+ const timestamp = new Date().toISOString();
40
+ const payloadStr = typeof payload === 'string' ? payload : JSON.stringify(payload);
41
+ const metadataStr = params?.metadata ? JSON.stringify(params.metadata) : null;
42
+ const ttlSeconds = params?.ttl ?? null;
43
+ const expiresAt = ttlSeconds ? new Date(Date.now() + ttlSeconds * 1000).toISOString() : null;
44
+ const publishInTransaction = this.#db.transaction(() => {
45
+ if (params?.idempotencyKey) {
46
+ const existing = this.#db
47
+ .query(`
48
+ SELECT id, offset, published_at
49
+ FROM queue_messages
50
+ WHERE project_path = ? AND queue_name = ? AND idempotency_key = ?
51
+ `)
52
+ .get(this.#projectPath, queueName, params.idempotencyKey);
53
+ if (existing) {
54
+ return {
55
+ id: existing.id,
56
+ offset: existing.offset,
57
+ publishedAt: existing.published_at,
58
+ };
59
+ }
60
+ }
61
+ const offsetResult = this.#db
62
+ .query(`
63
+ SELECT COALESCE(MAX(offset), -1) + 1 as next_offset
64
+ FROM queue_messages
65
+ WHERE project_path = ? AND queue_name = ?
66
+ `)
67
+ .get(this.#projectPath, queueName);
68
+ const offset = offsetResult.next_offset;
69
+ this.#db
70
+ .prepare(`
71
+ INSERT INTO queue_messages (
72
+ id, project_path, queue_name, offset, payload, metadata,
73
+ partition_key, idempotency_key, ttl_seconds, expires_at, state, created_at, published_at
74
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'pending', ?, ?)
75
+ `)
76
+ .run(id, this.#projectPath, queueName, offset, payloadStr, metadataStr, params?.partitionKey ?? null, params?.idempotencyKey ?? null, ttlSeconds, expiresAt, timestamp, timestamp);
77
+ return {
78
+ id,
79
+ offset,
80
+ publishedAt: timestamp,
81
+ };
82
+ });
83
+ return publishInTransaction.immediate();
84
+ }
85
+ async createQueue(queueName, params) {
86
+ console.debug(`[local] createQueue: ${queueName}`);
87
+ return {
88
+ name: queueName,
89
+ queueType: params?.queueType ?? 'worker',
90
+ };
91
+ }
92
+ async deleteQueue(_queueName) {
93
+ // No-op in local mode — queues don't need provisioning locally
94
+ }
95
+ }
96
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/bun/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Database } from 'bun:sqlite';
2
+ import type { StreamStorage, Stream, CreateStreamProps, ListStreamsParams, ListStreamsResponse, StreamInfo } from '@agentuity/core';
3
+ export declare class LocalStreamStorage implements StreamStorage {
4
+ #private;
5
+ constructor(db: Database, projectPath: string, serverUrl: string);
6
+ create(namespace: string, props?: CreateStreamProps): Promise<Stream>;
7
+ list(params?: ListStreamsParams): Promise<ListStreamsResponse>;
8
+ get(id: string): Promise<StreamInfo>;
9
+ download(id: string): Promise<ReadableStream<Uint8Array>>;
10
+ delete(id: string): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/bun/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EACX,aAAa,EACb,MAAM,EACN,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,MAAM,iBAAiB,CAAC;AAQzB,qBAAa,kBAAmB,YAAW,aAAa;;gBAM3C,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAY1D,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAsCrE,IAAI,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkE9D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAkCpC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IA0BzD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAYvC"}
@@ -0,0 +1,266 @@
1
+ import { now } from './util';
2
+ import { join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ import { randomUUID } from 'node:crypto';
5
+ import { mkdirSync, existsSync, unlinkSync } from 'node:fs';
6
+ import { openSync, writeSync, closeSync, readFileSync } from 'node:fs';
7
+ export class LocalStreamStorage {
8
+ #db;
9
+ #projectPath;
10
+ #serverUrl;
11
+ #tempDir;
12
+ constructor(db, projectPath, serverUrl) {
13
+ this.#db = db;
14
+ this.#projectPath = projectPath;
15
+ this.#serverUrl = serverUrl;
16
+ // Create temp directory for stream buffering
17
+ this.#tempDir = join(homedir(), '.config', 'agentuity', 'streams');
18
+ if (!existsSync(this.#tempDir)) {
19
+ mkdirSync(this.#tempDir, { recursive: true });
20
+ }
21
+ }
22
+ async create(namespace, props) {
23
+ if (!namespace || namespace.length < 1 || namespace.length > 254) {
24
+ throw new Error('Stream namespace must be between 1 and 254 characters');
25
+ }
26
+ const id = randomUUID();
27
+ const timestamp = now();
28
+ const metadata = props?.metadata ? JSON.stringify(props.metadata) : null;
29
+ // Insert stream record with NULL data
30
+ const stmt = this.#db.prepare(`
31
+ INSERT INTO stream_storage (
32
+ project_path, id, name, metadata, content_type, created_at
33
+ )
34
+ VALUES (?, ?, ?, ?, ?, ?)
35
+ `);
36
+ stmt.run(this.#projectPath, id, namespace, metadata, props?.contentType || 'application/octet-stream', timestamp);
37
+ const url = `${this.#serverUrl}/_agentuity/local/stream/${id}`;
38
+ return new LocalStream(id, url, this.#db, this.#projectPath, this.#tempDir, props?.compress ?? false);
39
+ }
40
+ async list(params) {
41
+ if (params?.limit && (params.limit <= 0 || params.limit > 1000)) {
42
+ throw new Error('limit must be between 1 and 1000');
43
+ }
44
+ let query = `
45
+ SELECT id, name, metadata, size_bytes
46
+ FROM stream_storage
47
+ WHERE project_path = ?
48
+ `;
49
+ const queryParams = [this.#projectPath];
50
+ // Add filters (map namespace to name for the database)
51
+ if (params?.namespace) {
52
+ query += ` AND name = ?`;
53
+ queryParams.push(params.namespace);
54
+ }
55
+ if (params?.metadata) {
56
+ // Simple JSON matching - check if metadata contains all key-value pairs
57
+ for (const [key, value] of Object.entries(params.metadata)) {
58
+ query += ` AND metadata LIKE ?`;
59
+ queryParams.push(`%"${key}":"${value}"%`);
60
+ }
61
+ }
62
+ // Get total count
63
+ const countQuery = this.#db.query(query.replace('SELECT id, name, metadata, size_bytes', 'SELECT COUNT(*) as count'));
64
+ const { count } = countQuery.get(...queryParams);
65
+ // Add pagination
66
+ query += ` ORDER BY created_at DESC`;
67
+ if (params?.limit) {
68
+ query += ` LIMIT ${params.limit}`;
69
+ }
70
+ if (params?.offset) {
71
+ query += ` OFFSET ${params.offset}`;
72
+ }
73
+ const stmt = this.#db.query(query);
74
+ const rows = stmt.all(...queryParams);
75
+ // Map name to namespace for the SDK interface
76
+ const streams = rows.map((row) => ({
77
+ id: row.id,
78
+ namespace: row.name,
79
+ metadata: row.metadata ? JSON.parse(row.metadata) : {},
80
+ url: `${this.#serverUrl}/_agentuity/local/stream/${row.id}`,
81
+ sizeBytes: row.size_bytes,
82
+ expiresAt: null,
83
+ }));
84
+ return {
85
+ success: true,
86
+ streams,
87
+ total: count,
88
+ };
89
+ }
90
+ async get(id) {
91
+ if (!id?.trim()) {
92
+ throw new Error('Stream id is required');
93
+ }
94
+ const stmt = this.#db.query(`
95
+ SELECT id, name, metadata, size_bytes
96
+ FROM stream_storage
97
+ WHERE project_path = ? AND id = ?
98
+ `);
99
+ const row = stmt.get(this.#projectPath, id);
100
+ if (!row) {
101
+ throw new Error(`Stream not found: ${id}`);
102
+ }
103
+ const metadata = row.metadata ? JSON.parse(row.metadata) : {};
104
+ const url = `${this.#serverUrl}/_agentuity/local/stream/${id}`;
105
+ // Map name to namespace for the SDK interface
106
+ return {
107
+ id: row.id,
108
+ namespace: row.name,
109
+ metadata,
110
+ url,
111
+ sizeBytes: row.size_bytes,
112
+ expiresAt: null,
113
+ };
114
+ }
115
+ async download(id) {
116
+ if (!id?.trim()) {
117
+ throw new Error('Stream id is required');
118
+ }
119
+ const stmt = this.#db.query(`
120
+ SELECT data FROM stream_storage
121
+ WHERE project_path = ? AND id = ?
122
+ `);
123
+ const row = stmt.get(this.#projectPath, id);
124
+ if (!row || !row.data) {
125
+ throw new Error(`Stream not found or empty: ${id}`);
126
+ }
127
+ // Convert Buffer to ReadableStream
128
+ const buffer = row.data;
129
+ return new ReadableStream({
130
+ start(controller) {
131
+ controller.enqueue(new Uint8Array(buffer));
132
+ controller.close();
133
+ },
134
+ });
135
+ }
136
+ async delete(id) {
137
+ if (!id?.trim()) {
138
+ throw new Error('Stream id is required');
139
+ }
140
+ const stmt = this.#db.prepare(`
141
+ DELETE FROM stream_storage
142
+ WHERE project_path = ? AND id = ?
143
+ `);
144
+ stmt.run(this.#projectPath, id);
145
+ }
146
+ }
147
+ class LocalStream extends WritableStream {
148
+ id;
149
+ url;
150
+ #db;
151
+ #projectPath;
152
+ #compressed;
153
+ #tempFilePath;
154
+ #fileHandle = null;
155
+ #bytesWritten = 0;
156
+ #closed = false;
157
+ constructor(id, url, db, projectPath, tempDir, compressed) {
158
+ super({
159
+ write: async (chunk) => {
160
+ await this.#writeToFile(chunk);
161
+ },
162
+ close: async () => {
163
+ await this.#persist();
164
+ },
165
+ });
166
+ this.id = id;
167
+ this.url = url;
168
+ this.#db = db;
169
+ this.#projectPath = projectPath;
170
+ this.#compressed = compressed;
171
+ this.#tempFilePath = join(tempDir, `${id}.tmp`);
172
+ // Open file for writing
173
+ this.#fileHandle = openSync(this.#tempFilePath, 'w');
174
+ }
175
+ get bytesWritten() {
176
+ return this.#bytesWritten;
177
+ }
178
+ get compressed() {
179
+ return this.#compressed;
180
+ }
181
+ async write(chunk) {
182
+ if (this.#closed) {
183
+ throw new Error('Stream is closed');
184
+ }
185
+ let binary;
186
+ if (chunk instanceof Uint8Array) {
187
+ binary = chunk;
188
+ }
189
+ else if (typeof chunk === 'string') {
190
+ binary = new TextEncoder().encode(chunk);
191
+ }
192
+ else if (chunk instanceof ArrayBuffer) {
193
+ binary = new Uint8Array(chunk);
194
+ }
195
+ else if (typeof chunk === 'object') {
196
+ binary = new TextEncoder().encode(JSON.stringify(chunk));
197
+ }
198
+ else {
199
+ binary = new TextEncoder().encode(String(chunk));
200
+ }
201
+ await this.#writeToFile(binary);
202
+ }
203
+ async close() {
204
+ if (this.#closed) {
205
+ return;
206
+ }
207
+ this.#closed = true;
208
+ // Close file handle if open
209
+ if (this.#fileHandle !== null) {
210
+ closeSync(this.#fileHandle);
211
+ this.#fileHandle = null;
212
+ }
213
+ await this.#persist();
214
+ }
215
+ getReader() {
216
+ const db = this.#db;
217
+ const projectPath = this.#projectPath;
218
+ const id = this.id;
219
+ return new ReadableStream({
220
+ start(controller) {
221
+ const query = db.query(`
222
+ SELECT data FROM stream_storage
223
+ WHERE project_path = ? AND id = ?
224
+ `);
225
+ const row = query.get(projectPath, id);
226
+ if (!row || !row.data) {
227
+ controller.error(new Error('Stream not found or not finalized'));
228
+ return;
229
+ }
230
+ controller.enqueue(new Uint8Array(row.data));
231
+ controller.close();
232
+ },
233
+ });
234
+ }
235
+ async #writeToFile(chunk) {
236
+ if (this.#fileHandle === null) {
237
+ throw new Error('File handle is closed');
238
+ }
239
+ const written = writeSync(this.#fileHandle, chunk);
240
+ this.#bytesWritten += written;
241
+ }
242
+ async #persist() {
243
+ // Read buffered file
244
+ let data = readFileSync(this.#tempFilePath);
245
+ // Optional: Apply compression if enabled
246
+ if (this.#compressed) {
247
+ const { gzipSync } = await import('node:zlib');
248
+ data = gzipSync(data);
249
+ }
250
+ // Update DB with finalized data
251
+ const stmt = this.#db.prepare(`
252
+ UPDATE stream_storage
253
+ SET data = ?, size_bytes = ?
254
+ WHERE project_path = ? AND id = ?
255
+ `);
256
+ stmt.run(data, this.#bytesWritten, this.#projectPath, this.id);
257
+ // Clean up temp file
258
+ try {
259
+ unlinkSync(this.#tempFilePath);
260
+ }
261
+ catch {
262
+ // Ignore cleanup errors
263
+ }
264
+ }
265
+ }
266
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/bun/stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { Database } from 'bun:sqlite';
2
+ import type { TaskStorage, Task, CreateTaskParams, UpdateTaskParams, ListTasksParams, ListTasksResult, BatchDeleteTasksParams, BatchDeleteTasksResult, BatchUpdateTasksParams, BatchUpdateTasksResult, BatchCloseTasksParams, BatchCloseTasksResult, TaskChangelogResult, Comment, Tag, ListCommentsResult, ListTagsResult, ListUsersResult, ListProjectsResult, Attachment, CreateAttachmentParams, PresignUploadResponse, PresignDownloadResponse, ListAttachmentsResult, TaskActivityParams, TaskActivityResult, UserEntityRef, EntityRef } from '@agentuity/core';
3
+ export declare class LocalTaskStorage implements TaskStorage {
4
+ #private;
5
+ constructor(db: Database, projectPath: string);
6
+ create(params: CreateTaskParams): Promise<Task>;
7
+ get(id: string): Promise<Task | null>;
8
+ list(params?: ListTasksParams): Promise<ListTasksResult>;
9
+ update(id: string, params: UpdateTaskParams): Promise<Task>;
10
+ close(id: string): Promise<Task>;
11
+ changelog(id: string, params?: {
12
+ limit?: number;
13
+ offset?: number;
14
+ }): Promise<TaskChangelogResult>;
15
+ softDelete(id: string): Promise<Task>;
16
+ batchDelete(params: BatchDeleteTasksParams): Promise<BatchDeleteTasksResult>;
17
+ batchUpdate(params: BatchUpdateTasksParams): Promise<BatchUpdateTasksResult>;
18
+ batchClose(params: BatchCloseTasksParams): Promise<BatchCloseTasksResult>;
19
+ createComment(taskId: string, body: string, userId: string): Promise<Comment>;
20
+ getComment(commentId: string): Promise<Comment>;
21
+ updateComment(commentId: string, body: string): Promise<Comment>;
22
+ deleteComment(commentId: string): Promise<void>;
23
+ listComments(taskId: string, params?: {
24
+ limit?: number;
25
+ offset?: number;
26
+ }): Promise<ListCommentsResult>;
27
+ createTag(name: string, color?: string): Promise<Tag>;
28
+ getTag(tagId: string): Promise<Tag>;
29
+ updateTag(tagId: string, name: string, color?: string): Promise<Tag>;
30
+ deleteTag(tagId: string): Promise<void>;
31
+ listTags(): Promise<ListTagsResult>;
32
+ addTagToTask(taskId: string, tagId: string): Promise<void>;
33
+ removeTagFromTask(taskId: string, tagId: string): Promise<void>;
34
+ listTagsForTask(taskId: string): Promise<Tag[]>;
35
+ uploadAttachment(_taskId: string, _params: CreateAttachmentParams): Promise<PresignUploadResponse>;
36
+ confirmAttachment(_attachmentId: string): Promise<Attachment>;
37
+ downloadAttachment(_attachmentId: string): Promise<PresignDownloadResponse>;
38
+ listAttachments(_taskId: string): Promise<ListAttachmentsResult>;
39
+ deleteAttachment(_attachmentId: string): Promise<void>;
40
+ listUsers(): Promise<ListUsersResult>;
41
+ listProjects(): Promise<ListProjectsResult>;
42
+ createUser(params: {
43
+ name: string;
44
+ type?: 'human' | 'agent';
45
+ }): Promise<UserEntityRef>;
46
+ getUser(userId: string): Promise<UserEntityRef>;
47
+ deleteUser(userId: string): Promise<void>;
48
+ createProject(params: {
49
+ name: string;
50
+ }): Promise<EntityRef>;
51
+ getProject(projectId: string): Promise<EntityRef>;
52
+ deleteProject(projectId: string): Promise<void>;
53
+ getActivity(params?: TaskActivityParams): Promise<TaskActivityResult>;
54
+ }
55
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/bun/task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EACX,WAAW,EACX,IAAI,EAKJ,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,OAAO,EACP,GAAG,EACH,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,UAAU,EACV,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,MAAM,iBAAiB,CAAC;AAsNzB,qBAAa,gBAAiB,YAAW,WAAW;;gBAIvC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM;IAKvC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+E/C,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAgCrC,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IA6FxD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqL3D,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoFhC,SAAS,CACd,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,mBAAmB,CAAC;IAiCzB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCrC,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA+F5E,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA2N5E,UAAU,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAoJzE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqC7E,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAe/C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBhE,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/C,YAAY,CACjB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,kBAAkB,CAAC;IA2BxB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAyBrD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAenC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAoBpE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAevC,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAenC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB1D,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/D,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAgB/C,gBAAgB,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,sBAAsB,GAC7B,OAAO,CAAC,qBAAqB,CAAC;IAI3B,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7D,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAI3E,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIhE,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAuBrC,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAqB3C,UAAU,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAqBtF,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAoB/C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC,aAAa,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAoB3D,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAmBjD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/C,WAAW,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAsC3E"}