@ugm/desiagent 0.1.21

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 (202) hide show
  1. package/README.md +251 -0
  2. package/dist/__tests__/test-utils.d.ts +24 -0
  3. package/dist/__tests__/test-utils.d.ts.map +1 -0
  4. package/dist/__tests__/test-utils.js +32 -0
  5. package/dist/__tests__/test-utils.js.map +1 -0
  6. package/dist/core/execution/agents.d.ts +60 -0
  7. package/dist/core/execution/agents.d.ts.map +1 -0
  8. package/dist/core/execution/agents.js +249 -0
  9. package/dist/core/execution/agents.js.map +1 -0
  10. package/dist/core/execution/artifacts.d.ts +27 -0
  11. package/dist/core/execution/artifacts.d.ts.map +1 -0
  12. package/dist/core/execution/artifacts.js +93 -0
  13. package/dist/core/execution/artifacts.js.map +1 -0
  14. package/dist/core/execution/costs.d.ts +160 -0
  15. package/dist/core/execution/costs.d.ts.map +1 -0
  16. package/dist/core/execution/costs.js +196 -0
  17. package/dist/core/execution/costs.js.map +1 -0
  18. package/dist/core/execution/dagExecutor.d.ts +112 -0
  19. package/dist/core/execution/dagExecutor.d.ts.map +1 -0
  20. package/dist/core/execution/dagExecutor.js +647 -0
  21. package/dist/core/execution/dagExecutor.js.map +1 -0
  22. package/dist/core/execution/dags.d.ts +167 -0
  23. package/dist/core/execution/dags.d.ts.map +1 -0
  24. package/dist/core/execution/dags.js +713 -0
  25. package/dist/core/execution/dags.js.map +1 -0
  26. package/dist/core/execution/executions.d.ts +158 -0
  27. package/dist/core/execution/executions.d.ts.map +1 -0
  28. package/dist/core/execution/executions.js +258 -0
  29. package/dist/core/execution/executions.js.map +1 -0
  30. package/dist/core/execution/goals.d.ts +62 -0
  31. package/dist/core/execution/goals.d.ts.map +1 -0
  32. package/dist/core/execution/goals.js +245 -0
  33. package/dist/core/execution/goals.js.map +1 -0
  34. package/dist/core/execution/runs.d.ts +65 -0
  35. package/dist/core/execution/runs.d.ts.map +1 -0
  36. package/dist/core/execution/runs.js +219 -0
  37. package/dist/core/execution/runs.js.map +1 -0
  38. package/dist/core/execution/tools.d.ts +24 -0
  39. package/dist/core/execution/tools.d.ts.map +1 -0
  40. package/dist/core/execution/tools.js +33 -0
  41. package/dist/core/execution/tools.js.map +1 -0
  42. package/dist/core/orchestration/index.d.ts +7 -0
  43. package/dist/core/orchestration/index.d.ts.map +1 -0
  44. package/dist/core/orchestration/index.js +7 -0
  45. package/dist/core/orchestration/index.js.map +1 -0
  46. package/dist/core/orchestration/orchestrator.d.ts +39 -0
  47. package/dist/core/orchestration/orchestrator.d.ts.map +1 -0
  48. package/dist/core/orchestration/orchestrator.js +141 -0
  49. package/dist/core/orchestration/orchestrator.js.map +1 -0
  50. package/dist/core/orchestration/planner.d.ts +63 -0
  51. package/dist/core/orchestration/planner.d.ts.map +1 -0
  52. package/dist/core/orchestration/planner.js +99 -0
  53. package/dist/core/orchestration/planner.js.map +1 -0
  54. package/dist/core/providers/factory.d.ts +25 -0
  55. package/dist/core/providers/factory.d.ts.map +1 -0
  56. package/dist/core/providers/factory.js +86 -0
  57. package/dist/core/providers/factory.js.map +1 -0
  58. package/dist/core/providers/index.d.ts +11 -0
  59. package/dist/core/providers/index.d.ts.map +1 -0
  60. package/dist/core/providers/index.js +10 -0
  61. package/dist/core/providers/index.js.map +1 -0
  62. package/dist/core/providers/ollama.d.ts +36 -0
  63. package/dist/core/providers/ollama.d.ts.map +1 -0
  64. package/dist/core/providers/ollama.js +123 -0
  65. package/dist/core/providers/ollama.js.map +1 -0
  66. package/dist/core/providers/openai.d.ts +33 -0
  67. package/dist/core/providers/openai.d.ts.map +1 -0
  68. package/dist/core/providers/openai.js +114 -0
  69. package/dist/core/providers/openai.js.map +1 -0
  70. package/dist/core/providers/openrouter.d.ts +38 -0
  71. package/dist/core/providers/openrouter.d.ts.map +1 -0
  72. package/dist/core/providers/openrouter.js +269 -0
  73. package/dist/core/providers/openrouter.js.map +1 -0
  74. package/dist/core/providers/types.d.ts +101 -0
  75. package/dist/core/providers/types.d.ts.map +1 -0
  76. package/dist/core/providers/types.js +7 -0
  77. package/dist/core/providers/types.js.map +1 -0
  78. package/dist/core/tools/base.d.ts +56 -0
  79. package/dist/core/tools/base.d.ts.map +1 -0
  80. package/dist/core/tools/base.js +60 -0
  81. package/dist/core/tools/base.js.map +1 -0
  82. package/dist/core/tools/bash.d.ts +50 -0
  83. package/dist/core/tools/bash.d.ts.map +1 -0
  84. package/dist/core/tools/bash.js +179 -0
  85. package/dist/core/tools/bash.js.map +1 -0
  86. package/dist/core/tools/edit.d.ts +39 -0
  87. package/dist/core/tools/edit.d.ts.map +1 -0
  88. package/dist/core/tools/edit.js +67 -0
  89. package/dist/core/tools/edit.js.map +1 -0
  90. package/dist/core/tools/executor.d.ts +33 -0
  91. package/dist/core/tools/executor.d.ts.map +1 -0
  92. package/dist/core/tools/executor.js +105 -0
  93. package/dist/core/tools/executor.js.map +1 -0
  94. package/dist/core/tools/fetchPage.d.ts +46 -0
  95. package/dist/core/tools/fetchPage.d.ts.map +1 -0
  96. package/dist/core/tools/fetchPage.js +87 -0
  97. package/dist/core/tools/fetchPage.js.map +1 -0
  98. package/dist/core/tools/fetchURLs.d.ts +39 -0
  99. package/dist/core/tools/fetchURLs.d.ts.map +1 -0
  100. package/dist/core/tools/fetchURLs.js +67 -0
  101. package/dist/core/tools/fetchURLs.js.map +1 -0
  102. package/dist/core/tools/glob.d.ts +36 -0
  103. package/dist/core/tools/glob.d.ts.map +1 -0
  104. package/dist/core/tools/glob.js +78 -0
  105. package/dist/core/tools/glob.js.map +1 -0
  106. package/dist/core/tools/grep.d.ts +51 -0
  107. package/dist/core/tools/grep.d.ts.map +1 -0
  108. package/dist/core/tools/grep.js +152 -0
  109. package/dist/core/tools/grep.js.map +1 -0
  110. package/dist/core/tools/index.d.ts +22 -0
  111. package/dist/core/tools/index.d.ts.map +1 -0
  112. package/dist/core/tools/index.js +22 -0
  113. package/dist/core/tools/index.js.map +1 -0
  114. package/dist/core/tools/llmExecute.d.ts +153 -0
  115. package/dist/core/tools/llmExecute.d.ts.map +1 -0
  116. package/dist/core/tools/llmExecute.js +105 -0
  117. package/dist/core/tools/llmExecute.js.map +1 -0
  118. package/dist/core/tools/readEmail.d.ts +68 -0
  119. package/dist/core/tools/readEmail.d.ts.map +1 -0
  120. package/dist/core/tools/readEmail.js +182 -0
  121. package/dist/core/tools/readEmail.js.map +1 -0
  122. package/dist/core/tools/readFile.d.ts +42 -0
  123. package/dist/core/tools/readFile.d.ts.map +1 -0
  124. package/dist/core/tools/readFile.js +79 -0
  125. package/dist/core/tools/readFile.js.map +1 -0
  126. package/dist/core/tools/registry.d.ts +53 -0
  127. package/dist/core/tools/registry.d.ts.map +1 -0
  128. package/dist/core/tools/registry.js +112 -0
  129. package/dist/core/tools/registry.js.map +1 -0
  130. package/dist/core/tools/sendEmail.d.ts +83 -0
  131. package/dist/core/tools/sendEmail.d.ts.map +1 -0
  132. package/dist/core/tools/sendEmail.js +132 -0
  133. package/dist/core/tools/sendEmail.js.map +1 -0
  134. package/dist/core/tools/sendWebhook.d.ts +48 -0
  135. package/dist/core/tools/sendWebhook.d.ts.map +1 -0
  136. package/dist/core/tools/sendWebhook.js +61 -0
  137. package/dist/core/tools/sendWebhook.js.map +1 -0
  138. package/dist/core/tools/webSearch.d.ts +34 -0
  139. package/dist/core/tools/webSearch.d.ts.map +1 -0
  140. package/dist/core/tools/webSearch.js +104 -0
  141. package/dist/core/tools/webSearch.js.map +1 -0
  142. package/dist/core/tools/writeFile.d.ts +49 -0
  143. package/dist/core/tools/writeFile.d.ts.map +1 -0
  144. package/dist/core/tools/writeFile.js +120 -0
  145. package/dist/core/tools/writeFile.js.map +1 -0
  146. package/dist/db/client.d.ts +22 -0
  147. package/dist/db/client.d.ts.map +1 -0
  148. package/dist/db/client.js +178 -0
  149. package/dist/db/client.js.map +1 -0
  150. package/dist/db/schema.d.ts +1846 -0
  151. package/dist/db/schema.d.ts.map +1 -0
  152. package/dist/db/schema.js +175 -0
  153. package/dist/db/schema.js.map +1 -0
  154. package/dist/errors/index.d.ts +80 -0
  155. package/dist/errors/index.d.ts.map +1 -0
  156. package/dist/errors/index.js +135 -0
  157. package/dist/errors/index.js.map +1 -0
  158. package/dist/index.d.ts +52 -0
  159. package/dist/index.d.ts.map +1 -0
  160. package/dist/index.js +172 -0
  161. package/dist/index.js.map +1 -0
  162. package/dist/services/initDB.d.ts +17 -0
  163. package/dist/services/initDB.d.ts.map +1 -0
  164. package/dist/services/initDB.js +212 -0
  165. package/dist/services/initDB.js.map +1 -0
  166. package/dist/types/agent.d.ts +354 -0
  167. package/dist/types/agent.d.ts.map +1 -0
  168. package/dist/types/agent.js +63 -0
  169. package/dist/types/agent.js.map +1 -0
  170. package/dist/types/client.d.ts +309 -0
  171. package/dist/types/client.d.ts.map +1 -0
  172. package/dist/types/client.js +2 -0
  173. package/dist/types/client.js.map +1 -0
  174. package/dist/types/config.d.ts +96 -0
  175. package/dist/types/config.d.ts.map +1 -0
  176. package/dist/types/config.js +33 -0
  177. package/dist/types/config.js.map +1 -0
  178. package/dist/types/dag.d.ts +253 -0
  179. package/dist/types/dag.d.ts.map +1 -0
  180. package/dist/types/dag.js +46 -0
  181. package/dist/types/dag.js.map +1 -0
  182. package/dist/types/execution.d.ts +171 -0
  183. package/dist/types/execution.d.ts.map +1 -0
  184. package/dist/types/execution.js +41 -0
  185. package/dist/types/execution.js.map +1 -0
  186. package/dist/types/index.d.ts +12 -0
  187. package/dist/types/index.d.ts.map +1 -0
  188. package/dist/types/index.js +11 -0
  189. package/dist/types/index.js.map +1 -0
  190. package/dist/util/cron-validator.d.ts +16 -0
  191. package/dist/util/cron-validator.d.ts.map +1 -0
  192. package/dist/util/cron-validator.js +31 -0
  193. package/dist/util/cron-validator.js.map +1 -0
  194. package/dist/util/dag-utils.d.ts +54 -0
  195. package/dist/util/dag-utils.d.ts.map +1 -0
  196. package/dist/util/dag-utils.js +167 -0
  197. package/dist/util/dag-utils.js.map +1 -0
  198. package/dist/util/logger.d.ts +21 -0
  199. package/dist/util/logger.d.ts.map +1 -0
  200. package/dist/util/logger.js +87 -0
  201. package/dist/util/logger.js.map +1 -0
  202. package/package.json +82 -0
@@ -0,0 +1,178 @@
1
+ import { drizzle } from 'drizzle-orm/bun-sqlite';
2
+ import { Database } from 'bun:sqlite';
3
+ import * as schema from './schema.js';
4
+ import { getLogger } from '../util/logger.js';
5
+ import { existsSync, mkdirSync } from 'fs';
6
+ import { dirname } from 'path';
7
+ import { DatabaseError, InitializationError } from '../errors/index.js';
8
+ let dbInstance = null;
9
+ /**
10
+ * SQL statements to create all tables based on the schema
11
+ */
12
+ const CREATE_TABLES_SQL = `
13
+ -- Agents table
14
+ CREATE TABLE IF NOT EXISTS agents (
15
+ id TEXT PRIMARY KEY,
16
+ name TEXT NOT NULL,
17
+ version TEXT NOT NULL,
18
+ prompt_template TEXT NOT NULL,
19
+ provider TEXT,
20
+ model TEXT,
21
+ active INTEGER NOT NULL DEFAULT 0,
22
+ metadata TEXT,
23
+ created_at INTEGER NOT NULL DEFAULT (unixepoch()),
24
+ updated_at INTEGER NOT NULL DEFAULT (unixepoch())
25
+ );
26
+
27
+ -- Unique index for agent name+version
28
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_name_version ON agents(name, version);
29
+
30
+ -- Partial unique index for active agent per name
31
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_active_agent ON agents(name) WHERE active = 1;
32
+
33
+ -- DAGs table
34
+ CREATE TABLE IF NOT EXISTS dags (
35
+ id TEXT PRIMARY KEY,
36
+ status TEXT NOT NULL,
37
+ result TEXT,
38
+ usage TEXT,
39
+ generation_stats TEXT,
40
+ attempts INTEGER NOT NULL DEFAULT 0,
41
+ params TEXT,
42
+ agent_name TEXT,
43
+ dag_title TEXT,
44
+ cron_schedule TEXT,
45
+ schedule_active INTEGER NOT NULL DEFAULT 0,
46
+ created_at INTEGER NOT NULL DEFAULT (unixepoch()),
47
+ updated_at INTEGER NOT NULL DEFAULT (unixepoch())
48
+ );
49
+
50
+ -- DAG Executions table
51
+ CREATE TABLE IF NOT EXISTS dag_executions (
52
+ id TEXT PRIMARY KEY,
53
+ dag_id TEXT NOT NULL REFERENCES dags(id) ON DELETE CASCADE,
54
+ status TEXT NOT NULL,
55
+ execution_results TEXT,
56
+ failure_reason TEXT,
57
+ created_at INTEGER NOT NULL DEFAULT (unixepoch()),
58
+ updated_at INTEGER NOT NULL DEFAULT (unixepoch())
59
+ );
60
+
61
+ -- DAG Sub-Steps table
62
+ CREATE TABLE IF NOT EXISTS dag_sub_steps (
63
+ id TEXT PRIMARY KEY,
64
+ execution_id TEXT NOT NULL REFERENCES dag_executions(id) ON DELETE CASCADE,
65
+ node_id TEXT NOT NULL,
66
+ "index" INTEGER NOT NULL,
67
+ type TEXT NOT NULL CHECK(type IN ('action', 'result', 'decision')),
68
+ content TEXT NOT NULL,
69
+ created_at INTEGER NOT NULL DEFAULT (unixepoch())
70
+ );
71
+ `;
72
+ /**
73
+ * Initialize database tables if they don't exist
74
+ */
75
+ function initializeTables(sqlite, logger) {
76
+ try {
77
+ sqlite.exec(CREATE_TABLES_SQL);
78
+ logger.info('Database tables initialized');
79
+ }
80
+ catch (error) {
81
+ throw new DatabaseError(`Failed to initialize database tables: ${error instanceof Error ? error.message : String(error)}`, 'initializeTables', error instanceof Error ? error : undefined);
82
+ }
83
+ }
84
+ /**
85
+ * Create and initialize database connection
86
+ */
87
+ function createDatabase(dbPath) {
88
+ const logger = getLogger();
89
+ try {
90
+ // Ensure data directory exists
91
+ const dbDir = dirname(dbPath);
92
+ if (!existsSync(dbDir)) {
93
+ mkdirSync(dbDir, { recursive: true });
94
+ logger.info(`Created database directory: ${dbDir}`);
95
+ }
96
+ // Check if database file exists (to determine if we need to create tables)
97
+ const isNewDatabase = !existsSync(dbPath);
98
+ // Open SQLite database using bun:sqlite
99
+ const sqlite = new Database(dbPath);
100
+ // Enable foreign keys and WAL mode
101
+ sqlite.exec('PRAGMA journal_mode = WAL;');
102
+ sqlite.exec('PRAGMA foreign_keys = ON;');
103
+ // Initialize tables if this is a new database
104
+ if (isNewDatabase) {
105
+ logger.info('New database detected, creating tables...');
106
+ initializeTables(sqlite, logger);
107
+ }
108
+ else {
109
+ // For existing databases, ensure tables exist (handles partial initialization)
110
+ initializeTables(sqlite, logger);
111
+ }
112
+ const db = drizzle(sqlite, { schema });
113
+ logger.info(`Database initialized: ${dbPath}`);
114
+ return db;
115
+ }
116
+ catch (error) {
117
+ const logger = getLogger();
118
+ logger.error('Failed to initialize database');
119
+ throw new InitializationError(`Failed to initialize database: ${error instanceof Error ? error.message : String(error)}`, 'DatabaseClient', error instanceof Error ? error : undefined);
120
+ }
121
+ }
122
+ /**
123
+ * Get or create the global database instance
124
+ */
125
+ export function getDatabase(dbPath) {
126
+ if (!dbInstance) {
127
+ dbInstance = createDatabase(dbPath);
128
+ }
129
+ return dbInstance;
130
+ }
131
+ /**
132
+ * Close database connection
133
+ */
134
+ export function closeDatabase() {
135
+ if (dbInstance) {
136
+ try {
137
+ const logger = getLogger();
138
+ logger.info('Closing database connection');
139
+ // bun:sqlite closes automatically when garbage collected
140
+ // but we can mark it as null
141
+ dbInstance = null;
142
+ }
143
+ catch (error) {
144
+ const logger = getLogger();
145
+ logger.error('Error closing database');
146
+ }
147
+ }
148
+ }
149
+ /**
150
+ * Run database migrations
151
+ * Note: For Phase 2, this is a placeholder.
152
+ * In production, migrations should be managed via drizzle-kit
153
+ */
154
+ export async function runMigrations(db) {
155
+ try {
156
+ void db; // Suppress unused variable warning
157
+ const logger = getLogger();
158
+ logger.info('Migrations check complete (no migrations yet)');
159
+ // TODO: Implement migration system in Phase 4
160
+ }
161
+ catch (error) {
162
+ throw new DatabaseError(`Migration failed: ${error instanceof Error ? error.message : String(error)}`, 'runMigrations', error instanceof Error ? error : undefined);
163
+ }
164
+ }
165
+ /**
166
+ * Execute a query with error handling
167
+ */
168
+ export async function withDatabase(db, operation) {
169
+ try {
170
+ return await operation(db);
171
+ }
172
+ catch (error) {
173
+ const logger = getLogger();
174
+ logger.error('Database operation failed');
175
+ throw new DatabaseError(`Database operation failed: ${error instanceof Error ? error.message : String(error)}`, 'query', error instanceof Error ? error : undefined);
176
+ }
177
+ }
178
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAIxE,IAAI,UAAU,GAAqB,IAAI,CAAC;AAExC;;GAEG;AACH,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DzB,CAAC;AAEF;;GAEG;AACH,SAAS,gBAAgB,CAAC,MAAW,EAAE,MAAW;IAChD,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CACrB,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACjG,kBAAkB,EAClB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAAc;IACpC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,IAAI,CAAC;QACH,+BAA+B;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,2EAA2E;QAC3E,MAAM,aAAa,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE1C,wCAAwC;QACxC,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEpC,mCAAmC;QACnC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAEzC,8CAA8C;QAC9C,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YACzD,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,+EAA+E;YAC/E,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAEvC,MAAM,CAAC,IAAI,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QAE/C,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC9C,MAAM,IAAI,mBAAmB,CAC3B,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC1F,gBAAgB,EAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC3C,yDAAyD;YACzD,6BAA6B;YAC7B,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAa;IAC/C,IAAI,CAAC;QACH,KAAK,EAAE,CAAC,CAAC,mCAAmC;QAC5C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC7D,8CAA8C;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CACrB,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC7E,eAAe,EACf,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAa,EACb,SAAwC;IAExC,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC1C,MAAM,IAAI,aAAa,CACrB,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACtF,OAAO,EACP,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC"}