jazz-ai 0.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.
Files changed (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +182 -0
  3. package/dist/cli/commands/auth.d.ts +18 -0
  4. package/dist/cli/commands/auth.d.ts.map +1 -0
  5. package/dist/cli/commands/auth.js +128 -0
  6. package/dist/cli/commands/auth.js.map +1 -0
  7. package/dist/cli/commands/chat-agent.d.ts +18 -0
  8. package/dist/cli/commands/chat-agent.d.ts.map +1 -0
  9. package/dist/cli/commands/chat-agent.js +421 -0
  10. package/dist/cli/commands/chat-agent.js.map +1 -0
  11. package/dist/cli/commands/edit-agent.d.ts +10 -0
  12. package/dist/cli/commands/edit-agent.d.ts.map +1 -0
  13. package/dist/cli/commands/edit-agent.js +310 -0
  14. package/dist/cli/commands/edit-agent.js.map +1 -0
  15. package/dist/cli/commands/task-agent.d.ts +126 -0
  16. package/dist/cli/commands/task-agent.d.ts.map +1 -0
  17. package/dist/cli/commands/task-agent.js +345 -0
  18. package/dist/cli/commands/task-agent.js.map +1 -0
  19. package/dist/core/agent/agent-prompt.d.ts +47 -0
  20. package/dist/core/agent/agent-prompt.d.ts.map +1 -0
  21. package/dist/core/agent/agent-prompt.js +146 -0
  22. package/dist/core/agent/agent-prompt.js.map +1 -0
  23. package/dist/core/agent/agent-runner.d.ts +63 -0
  24. package/dist/core/agent/agent-runner.d.ts.map +1 -0
  25. package/dist/core/agent/agent-runner.js +346 -0
  26. package/dist/core/agent/agent-runner.js.map +1 -0
  27. package/dist/core/agent/agent-service.d.ts +164 -0
  28. package/dist/core/agent/agent-service.d.ts.map +1 -0
  29. package/dist/core/agent/agent-service.js +463 -0
  30. package/dist/core/agent/agent-service.js.map +1 -0
  31. package/dist/core/agent/gmail-agent.d.ts +17 -0
  32. package/dist/core/agent/gmail-agent.d.ts.map +1 -0
  33. package/dist/core/agent/gmail-agent.js +191 -0
  34. package/dist/core/agent/gmail-agent.js.map +1 -0
  35. package/dist/core/agent/prompts/default/v1.d.ts +2 -0
  36. package/dist/core/agent/prompts/default/v1.d.ts.map +1 -0
  37. package/dist/core/agent/prompts/default/v1.js +202 -0
  38. package/dist/core/agent/prompts/default/v1.js.map +1 -0
  39. package/dist/core/agent/prompts/default/v2.d.ts +2 -0
  40. package/dist/core/agent/prompts/default/v2.d.ts.map +1 -0
  41. package/dist/core/agent/prompts/default/v2.js +72 -0
  42. package/dist/core/agent/prompts/default/v2.js.map +1 -0
  43. package/dist/core/agent/prompts/gmail/v1.d.ts +2 -0
  44. package/dist/core/agent/prompts/gmail/v1.d.ts.map +1 -0
  45. package/dist/core/agent/prompts/gmail/v1.js +206 -0
  46. package/dist/core/agent/prompts/gmail/v1.js.map +1 -0
  47. package/dist/core/agent/prompts/gmail/v2.d.ts +2 -0
  48. package/dist/core/agent/prompts/gmail/v2.d.ts.map +1 -0
  49. package/dist/core/agent/prompts/gmail/v2.js +59 -0
  50. package/dist/core/agent/prompts/gmail/v2.js.map +1 -0
  51. package/dist/core/agent/tools/base-tool.d.ts +161 -0
  52. package/dist/core/agent/tools/base-tool.d.ts.map +1 -0
  53. package/dist/core/agent/tools/base-tool.js +153 -0
  54. package/dist/core/agent/tools/base-tool.js.map +1 -0
  55. package/dist/core/agent/tools/fs-tools.d.ts +21 -0
  56. package/dist/core/agent/tools/fs-tools.d.ts.map +1 -0
  57. package/dist/core/agent/tools/fs-tools.js +1210 -0
  58. package/dist/core/agent/tools/fs-tools.js.map +1 -0
  59. package/dist/core/agent/tools/git-tools.d.ts +63 -0
  60. package/dist/core/agent/tools/git-tools.d.ts.map +1 -0
  61. package/dist/core/agent/tools/git-tools.js +600 -0
  62. package/dist/core/agent/tools/git-tools.js.map +1 -0
  63. package/dist/core/agent/tools/gmail-tools.d.ts +22 -0
  64. package/dist/core/agent/tools/gmail-tools.d.ts.map +1 -0
  65. package/dist/core/agent/tools/gmail-tools.js +779 -0
  66. package/dist/core/agent/tools/gmail-tools.js.map +1 -0
  67. package/dist/core/agent/tools/register-tools.d.ts +13 -0
  68. package/dist/core/agent/tools/register-tools.d.ts.map +1 -0
  69. package/dist/core/agent/tools/register-tools.js +169 -0
  70. package/dist/core/agent/tools/register-tools.js.map +1 -0
  71. package/dist/core/agent/tools/shell-tools.d.ts +19 -0
  72. package/dist/core/agent/tools/shell-tools.d.ts.map +1 -0
  73. package/dist/core/agent/tools/shell-tools.js +367 -0
  74. package/dist/core/agent/tools/shell-tools.js.map +1 -0
  75. package/dist/core/agent/tools/tool-registry.d.ts +62 -0
  76. package/dist/core/agent/tools/tool-registry.d.ts.map +1 -0
  77. package/dist/core/agent/tools/tool-registry.js +187 -0
  78. package/dist/core/agent/tools/tool-registry.js.map +1 -0
  79. package/dist/core/agent/tools/web-search-tools.d.ts +39 -0
  80. package/dist/core/agent/tools/web-search-tools.d.ts.map +1 -0
  81. package/dist/core/agent/tools/web-search-tools.js +220 -0
  82. package/dist/core/agent/tools/web-search-tools.js.map +1 -0
  83. package/dist/core/types/errors.d.ts +300 -0
  84. package/dist/core/types/errors.d.ts.map +1 -0
  85. package/dist/core/types/errors.js +115 -0
  86. package/dist/core/types/errors.js.map +1 -0
  87. package/dist/core/types/index.d.ts +208 -0
  88. package/dist/core/types/index.d.ts.map +1 -0
  89. package/dist/core/types/index.js +30 -0
  90. package/dist/core/types/index.js.map +1 -0
  91. package/dist/core/utils/error-handler.d.ts +114 -0
  92. package/dist/core/utils/error-handler.d.ts.map +1 -0
  93. package/dist/core/utils/error-handler.js +551 -0
  94. package/dist/core/utils/error-handler.js.map +1 -0
  95. package/dist/core/utils/markdown-renderer.d.ts +52 -0
  96. package/dist/core/utils/markdown-renderer.d.ts.map +1 -0
  97. package/dist/core/utils/markdown-renderer.js +134 -0
  98. package/dist/core/utils/markdown-renderer.js.map +1 -0
  99. package/dist/main.d.ts +3 -0
  100. package/dist/main.d.ts.map +1 -0
  101. package/dist/main.js +255 -0
  102. package/dist/main.js.map +1 -0
  103. package/dist/services/config.d.ts +29 -0
  104. package/dist/services/config.d.ts.map +1 -0
  105. package/dist/services/config.js +204 -0
  106. package/dist/services/config.js.map +1 -0
  107. package/dist/services/gmail.d.ts +197 -0
  108. package/dist/services/gmail.d.ts.map +1 -0
  109. package/dist/services/gmail.js +592 -0
  110. package/dist/services/gmail.js.map +1 -0
  111. package/dist/services/llm/ai-sdk-service.d.ts +5 -0
  112. package/dist/services/llm/ai-sdk-service.d.ts.map +1 -0
  113. package/dist/services/llm/ai-sdk-service.js +326 -0
  114. package/dist/services/llm/ai-sdk-service.js.map +1 -0
  115. package/dist/services/llm/context-manager.d.ts +51 -0
  116. package/dist/services/llm/context-manager.d.ts.map +1 -0
  117. package/dist/services/llm/context-manager.js +269 -0
  118. package/dist/services/llm/context-manager.js.map +1 -0
  119. package/dist/services/llm/types.d.ts +114 -0
  120. package/dist/services/llm/types.d.ts.map +1 -0
  121. package/dist/services/llm/types.js +51 -0
  122. package/dist/services/llm/types.js.map +1 -0
  123. package/dist/services/logger.d.ts +28 -0
  124. package/dist/services/logger.d.ts.map +1 -0
  125. package/dist/services/logger.js +267 -0
  126. package/dist/services/logger.js.map +1 -0
  127. package/dist/services/shell.d.ts +37 -0
  128. package/dist/services/shell.d.ts.map +1 -0
  129. package/dist/services/shell.js +197 -0
  130. package/dist/services/shell.js.map +1 -0
  131. package/dist/services/storage/file.d.ts +37 -0
  132. package/dist/services/storage/file.d.ts.map +1 -0
  133. package/dist/services/storage/file.js +221 -0
  134. package/dist/services/storage/file.js.map +1 -0
  135. package/dist/services/storage/inMemory.d.ts +25 -0
  136. package/dist/services/storage/inMemory.d.ts.map +1 -0
  137. package/dist/services/storage/inMemory.js +106 -0
  138. package/dist/services/storage/inMemory.js.map +1 -0
  139. package/dist/services/storage/service.d.ts +26 -0
  140. package/dist/services/storage/service.d.ts.map +1 -0
  141. package/dist/services/storage/service.js +48 -0
  142. package/dist/services/storage/service.js.map +1 -0
  143. package/package.json +92 -0
@@ -0,0 +1,592 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GmailServiceTag = exports.GmailServiceResource = exports.GmailOperationError = exports.GmailAuthenticationError = void 0;
4
+ exports.createGmailServiceLayer = createGmailServiceLayer;
5
+ exports.authenticateGmail = authenticateGmail;
6
+ exports.listGmailEmails = listGmailEmails;
7
+ exports.getGmailEmail = getGmailEmail;
8
+ exports.sendGmailEmail = sendGmailEmail;
9
+ exports.searchGmailEmails = searchGmailEmails;
10
+ exports.listGmailLabels = listGmailLabels;
11
+ exports.createGmailLabel = createGmailLabel;
12
+ exports.updateGmailLabel = updateGmailLabel;
13
+ exports.deleteGmailLabel = deleteGmailLabel;
14
+ exports.modifyGmailEmail = modifyGmailEmail;
15
+ exports.batchModifyGmailEmails = batchModifyGmailEmails;
16
+ exports.trashGmailEmail = trashGmailEmail;
17
+ exports.deleteGmailEmail = deleteGmailEmail;
18
+ const tslib_1 = require("tslib");
19
+ const platform_1 = require("@effect/platform");
20
+ const effect_1 = require("effect");
21
+ const gaxios_1 = require("gaxios");
22
+ const googleapis_1 = require("googleapis");
23
+ const node_http_1 = tslib_1.__importDefault(require("node:http"));
24
+ const open_1 = tslib_1.__importDefault(require("open"));
25
+ const config_1 = require("./config");
26
+ // Helper function to extract HTTP status code from gaxios errors
27
+ function getHttpStatusFromError(error) {
28
+ if (error instanceof gaxios_1.GaxiosError) {
29
+ return error.status ?? error.response?.status;
30
+ }
31
+ return undefined;
32
+ }
33
+ /**
34
+ * Gmail service for interacting with Gmail API
35
+ */
36
+ // Gmail service errors
37
+ class GmailAuthenticationError extends Error {
38
+ _tag = "GmailAuthenticationError";
39
+ constructor(message) {
40
+ super(message);
41
+ this.name = "GmailAuthenticationError";
42
+ }
43
+ }
44
+ exports.GmailAuthenticationError = GmailAuthenticationError;
45
+ class GmailOperationError extends Error {
46
+ _tag = "GmailOperationError";
47
+ status;
48
+ constructor(message, status) {
49
+ super(message);
50
+ this.name = "GmailOperationError";
51
+ this.status = status;
52
+ }
53
+ }
54
+ exports.GmailOperationError = GmailOperationError;
55
+ class GmailServiceResource {
56
+ fs;
57
+ tokenFilePath;
58
+ oauthClient;
59
+ gmail;
60
+ requireCredentials;
61
+ constructor(fs, tokenFilePath, oauthClient, gmail, requireCredentials) {
62
+ this.fs = fs;
63
+ this.tokenFilePath = tokenFilePath;
64
+ this.oauthClient = oauthClient;
65
+ this.gmail = gmail;
66
+ this.requireCredentials = requireCredentials;
67
+ }
68
+ authenticate() {
69
+ return effect_1.Effect.gen(function* () {
70
+ const exists = yield* this.readTokenIfExists();
71
+ if (!exists) {
72
+ yield* this.performOAuthFlow();
73
+ }
74
+ return void 0;
75
+ }.bind(this));
76
+ }
77
+ listEmails(maxResults = 10, query) {
78
+ return effect_1.Effect.gen(function* () {
79
+ yield* this.ensureAuthenticated();
80
+ try {
81
+ const paramsList = query !== undefined && query !== ""
82
+ ? { userId: "me", maxResults, q: query }
83
+ : { userId: "me", maxResults };
84
+ const listResp = yield* effect_1.Effect.promise(() => this.gmail.users.messages.list(paramsList));
85
+ const messages = listResp.data.messages || [];
86
+ if (messages.length === 0)
87
+ return [];
88
+ const emails = [];
89
+ for (const message of messages) {
90
+ if (!message.id)
91
+ continue;
92
+ const paramsGet = {
93
+ userId: "me",
94
+ id: message.id,
95
+ format: "metadata",
96
+ metadataHeaders: ["Subject", "From", "To", "Date", "Cc", "Bcc"],
97
+ };
98
+ const full = yield* effect_1.Effect.promise(() => this.gmail.users.messages.get(paramsGet));
99
+ const email = this.parseMessageToEmail(full.data);
100
+ emails.push(email);
101
+ }
102
+ return emails;
103
+ }
104
+ catch (err) {
105
+ const status = getHttpStatusFromError(err);
106
+ throw new GmailOperationError(`Failed to list emails: ${err instanceof Error ? err.message : String(err)}`, status);
107
+ }
108
+ }.bind(this));
109
+ }
110
+ getEmail(emailId) {
111
+ return effect_1.Effect.gen(function* () {
112
+ yield* this.ensureAuthenticated();
113
+ try {
114
+ const paramsGet = {
115
+ userId: "me",
116
+ id: emailId,
117
+ format: "full",
118
+ };
119
+ const full = yield* effect_1.Effect.promise(() => this.gmail.users.messages.get(paramsGet));
120
+ const email = this.parseMessageToEmail(full.data, true);
121
+ return email;
122
+ }
123
+ catch (err) {
124
+ const status = getHttpStatusFromError(err);
125
+ throw new GmailOperationError(`Failed to get email: ${err instanceof Error ? err.message : String(err)}`, status);
126
+ }
127
+ }.bind(this));
128
+ }
129
+ sendEmail(to, subject, body, options) {
130
+ return effect_1.Effect.gen(function* () {
131
+ yield* this.ensureAuthenticated();
132
+ try {
133
+ const raw = this.buildRawEmail({
134
+ to,
135
+ subject,
136
+ body,
137
+ cc: options?.cc ?? [],
138
+ bcc: options?.bcc ?? [],
139
+ });
140
+ // Attachments not implemented in this first pass
141
+ yield* effect_1.Effect.promise(() => this.gmail.users.drafts.create({ userId: "me", requestBody: { message: { raw } } }));
142
+ return void 0;
143
+ }
144
+ catch (err) {
145
+ const status = getHttpStatusFromError(err);
146
+ throw new GmailOperationError(`Failed to create draft: ${err instanceof Error ? err.message : String(err)}`, status);
147
+ }
148
+ }.bind(this));
149
+ }
150
+ searchEmails(query, maxResults = 10) {
151
+ return this.listEmails(maxResults, query);
152
+ }
153
+ // Label management methods
154
+ listLabels() {
155
+ return effect_1.Effect.gen(function* () {
156
+ yield* this.ensureAuthenticated();
157
+ try {
158
+ const response = yield* effect_1.Effect.promise(() => this.gmail.users.labels.list({ userId: "me" }));
159
+ const labels = (response.data.labels || []).map((label) => this.parseLabelToGmailLabel(label));
160
+ return labels;
161
+ }
162
+ catch (err) {
163
+ const status = getHttpStatusFromError(err);
164
+ throw new GmailOperationError(`Failed to list labels: ${err instanceof Error ? err.message : String(err)}`, status);
165
+ }
166
+ }.bind(this));
167
+ }
168
+ createLabel(name, options) {
169
+ return effect_1.Effect.gen(function* () {
170
+ yield* this.ensureAuthenticated();
171
+ try {
172
+ const requestBody = {
173
+ name,
174
+ ...(options?.labelListVisibility && {
175
+ labelListVisibility: options.labelListVisibility,
176
+ }),
177
+ ...(options?.messageListVisibility && {
178
+ messageListVisibility: options.messageListVisibility,
179
+ }),
180
+ ...(options?.color && { color: options.color }),
181
+ };
182
+ const response = yield* effect_1.Effect.promise(() => this.gmail.users.labels.create({ userId: "me", requestBody }));
183
+ return this.parseLabelToGmailLabel(response.data);
184
+ }
185
+ catch (err) {
186
+ const status = getHttpStatusFromError(err);
187
+ throw new GmailOperationError(`Failed to create label: ${err instanceof Error ? err.message : String(err)}`, status);
188
+ }
189
+ }.bind(this));
190
+ }
191
+ updateLabel(labelId, updates) {
192
+ return effect_1.Effect.gen(function* () {
193
+ yield* this.ensureAuthenticated();
194
+ try {
195
+ const requestBody = {};
196
+ if (updates.name !== undefined)
197
+ requestBody.name = updates.name;
198
+ if (updates.labelListVisibility !== undefined)
199
+ requestBody.labelListVisibility = updates.labelListVisibility;
200
+ if (updates.messageListVisibility !== undefined)
201
+ requestBody.messageListVisibility = updates.messageListVisibility;
202
+ if (updates.color !== undefined)
203
+ requestBody.color = updates.color;
204
+ const response = yield* effect_1.Effect.promise(() => this.gmail.users.labels.update({ userId: "me", id: labelId, requestBody }));
205
+ return this.parseLabelToGmailLabel(response.data);
206
+ }
207
+ catch (err) {
208
+ const status = getHttpStatusFromError(err);
209
+ throw new GmailOperationError(`Failed to update label: ${err instanceof Error ? err.message : String(err)}`, status);
210
+ }
211
+ }.bind(this));
212
+ }
213
+ deleteLabel(labelId) {
214
+ return effect_1.Effect.gen(function* () {
215
+ yield* this.ensureAuthenticated();
216
+ try {
217
+ yield* effect_1.Effect.promise(() => this.gmail.users.labels.delete({ userId: "me", id: labelId }));
218
+ return void 0;
219
+ }
220
+ catch (err) {
221
+ const status = getHttpStatusFromError(err);
222
+ throw new GmailOperationError(`Failed to delete label: ${err instanceof Error ? err.message : String(err)}`, status);
223
+ }
224
+ }.bind(this));
225
+ }
226
+ // Email modification methods
227
+ modifyEmail(emailId, options) {
228
+ return effect_1.Effect.gen(function* () {
229
+ yield* this.ensureAuthenticated();
230
+ try {
231
+ const requestBody = {};
232
+ if (options.addLabelIds)
233
+ requestBody.addLabelIds = options.addLabelIds;
234
+ if (options.removeLabelIds)
235
+ requestBody.removeLabelIds = options.removeLabelIds;
236
+ const response = yield* effect_1.Effect.promise(() => this.gmail.users.messages.modify({ userId: "me", id: emailId, requestBody }));
237
+ return this.parseMessageToEmail(response.data);
238
+ }
239
+ catch (err) {
240
+ const status = getHttpStatusFromError(err);
241
+ throw new GmailOperationError(`Failed to modify email: ${err instanceof Error ? err.message : String(err)}`, status);
242
+ }
243
+ }.bind(this));
244
+ }
245
+ batchModifyEmails(emailIds, options) {
246
+ return effect_1.Effect.gen(function* () {
247
+ yield* this.ensureAuthenticated();
248
+ try {
249
+ const requestBody = {
250
+ ids: emailIds,
251
+ };
252
+ if (options.addLabelIds)
253
+ requestBody.addLabelIds = options.addLabelIds;
254
+ if (options.removeLabelIds)
255
+ requestBody.removeLabelIds = options.removeLabelIds;
256
+ yield* effect_1.Effect.promise(() => this.gmail.users.messages.batchModify({ userId: "me", requestBody }));
257
+ return void 0;
258
+ }
259
+ catch (err) {
260
+ const status = getHttpStatusFromError(err);
261
+ throw new GmailOperationError(`Failed to batch modify emails: ${err instanceof Error ? err.message : String(err)}`, status);
262
+ }
263
+ }.bind(this));
264
+ }
265
+ trashEmail(emailId) {
266
+ return effect_1.Effect.gen(function* () {
267
+ yield* this.ensureAuthenticated();
268
+ try {
269
+ yield* effect_1.Effect.promise(() => this.gmail.users.messages.trash({ userId: "me", id: emailId }));
270
+ return void 0;
271
+ }
272
+ catch (err) {
273
+ const status = getHttpStatusFromError(err);
274
+ throw new GmailOperationError(`Failed to trash email: ${err instanceof Error ? err.message : String(err)}`, status);
275
+ }
276
+ }.bind(this));
277
+ }
278
+ deleteEmail(emailId) {
279
+ return effect_1.Effect.gen(function* () {
280
+ yield* this.ensureAuthenticated();
281
+ try {
282
+ yield* effect_1.Effect.promise(() => this.gmail.users.messages.delete({ userId: "me", id: emailId }));
283
+ return void 0;
284
+ }
285
+ catch (err) {
286
+ const status = getHttpStatusFromError(err);
287
+ throw new GmailOperationError(`Failed to delete email: ${err instanceof Error ? err.message : String(err)}`, status);
288
+ }
289
+ }.bind(this));
290
+ }
291
+ ensureAuthenticated() {
292
+ return effect_1.Effect.gen(function* () {
293
+ // Fail fast if credentials are missing when a Gmail operation is invoked
294
+ yield* this.requireCredentials();
295
+ const tokenLoaded = yield* this.readTokenIfExists();
296
+ if (!tokenLoaded) {
297
+ yield* this.performOAuthFlow();
298
+ }
299
+ return void 0;
300
+ }.bind(this));
301
+ }
302
+ readTokenIfExists() {
303
+ return effect_1.Effect.gen(function* () {
304
+ const token = yield* this.fs.readFileString(this.tokenFilePath).pipe(effect_1.Effect.mapError(() => undefined), effect_1.Effect.catchAll(() => effect_1.Effect.succeed(undefined)));
305
+ if (!token)
306
+ return false;
307
+ try {
308
+ const parsed = JSON.parse(token);
309
+ this.oauthClient.setCredentials(parsed);
310
+ return true;
311
+ }
312
+ catch {
313
+ return false;
314
+ }
315
+ }.bind(this));
316
+ }
317
+ performOAuthFlow() {
318
+ return effect_1.Effect.gen(function* () {
319
+ const port = Number(process.env["GOOGLE_REDIRECT_PORT"] || 53682);
320
+ const redirectUri = `http://localhost:${port}/oauth2callback`;
321
+ // Recreate OAuth client with runtime redirectUri (property is readonly)
322
+ const currentCreds = this.oauthClient.credentials;
323
+ const clientId = this.oauthClient._clientId;
324
+ if (!clientId) {
325
+ throw new GmailAuthenticationError("Missing client ID");
326
+ }
327
+ const clientSecret = this.oauthClient._clientSecret;
328
+ if (!clientSecret) {
329
+ throw new GmailAuthenticationError("Missing client secret");
330
+ }
331
+ const freshClient = new googleapis_1.google.auth.OAuth2({ clientId, clientSecret, redirectUri });
332
+ freshClient.setCredentials(currentCreds);
333
+ this.oauthClient = freshClient;
334
+ this.gmail = googleapis_1.google.gmail({ version: "v1", auth: this.oauthClient });
335
+ const scopes = [
336
+ "https://www.googleapis.com/auth/gmail.readonly",
337
+ "https://www.googleapis.com/auth/gmail.send",
338
+ "https://www.googleapis.com/auth/gmail.modify",
339
+ "https://www.googleapis.com/auth/gmail.labels",
340
+ "https://www.googleapis.com/auth/gmail.compose",
341
+ ];
342
+ const authUrl = this.oauthClient.generateAuthUrl({
343
+ access_type: "offline",
344
+ scope: scopes,
345
+ prompt: "consent",
346
+ });
347
+ // Start local server to capture the OAuth code
348
+ const code = yield* effect_1.Effect.async((resume) => {
349
+ const server = node_http_1.default.createServer((req, res) => {
350
+ if (!req.url)
351
+ return;
352
+ const url = new URL(req.url, `http://localhost:${port}`);
353
+ if (url.pathname === "/oauth2callback") {
354
+ const codeParam = url.searchParams.get("code");
355
+ if (codeParam) {
356
+ res.writeHead(200, { "Content-Type": "text/html" });
357
+ res.end("<html><body><h1>Authentication successful</h1>You can close this window.</body></html>");
358
+ server.close(() => resume(effect_1.Effect.succeed(codeParam)));
359
+ }
360
+ else {
361
+ res.writeHead(400);
362
+ res.end("Missing code");
363
+ }
364
+ }
365
+ else {
366
+ res.writeHead(404);
367
+ res.end("Not found");
368
+ }
369
+ });
370
+ server.listen(port, () => {
371
+ void (0, open_1.default)(authUrl).catch(() => {
372
+ // ignore browser open failures; user can copy URL
373
+ });
374
+ // Also print URL to console for visibility in CLI
375
+ console.log(`Open this URL in your browser to authenticate with Google: ${authUrl}`);
376
+ });
377
+ });
378
+ try {
379
+ const tokenResp = (yield* effect_1.Effect.promise(() => this.oauthClient.getToken(code)));
380
+ this.oauthClient.setCredentials(tokenResp.tokens);
381
+ yield* this.persistToken(tokenResp.tokens);
382
+ }
383
+ catch (err) {
384
+ throw new GmailAuthenticationError(`OAuth flow failed: ${err instanceof Error ? err.message : String(err)}`);
385
+ }
386
+ }.bind(this));
387
+ }
388
+ persistToken(token) {
389
+ return effect_1.Effect.gen(function* () {
390
+ const dir = this.tokenFilePath.substring(0, this.tokenFilePath.lastIndexOf("/"));
391
+ yield* this.fs
392
+ .makeDirectory(dir, { recursive: true })
393
+ .pipe(effect_1.Effect.catchAll(() => effect_1.Effect.void));
394
+ const content = JSON.stringify(token, null, 2);
395
+ yield* this.fs
396
+ .writeFileString(this.tokenFilePath, content)
397
+ .pipe(effect_1.Effect.mapError((err) => new GmailAuthenticationError(`Failed to persist token: ${String(err.message ?? err)}`)));
398
+ }.bind(this));
399
+ }
400
+ parseMessageToEmail(message, includeBody = false) {
401
+ const headers = (message.payload?.headers ?? []).reduce((acc, h) => {
402
+ if (h.name && h.value)
403
+ acc[h.name.toLowerCase()] = h.value;
404
+ return acc;
405
+ }, {});
406
+ const subject = headers["subject"] || "";
407
+ const from = headers["from"] || "";
408
+ const to = (headers["to"] || "").split(/,\s*/).filter(Boolean);
409
+ const cc = headers["cc"] ? headers["cc"].split(/,\s*/).filter(Boolean) : undefined;
410
+ const bcc = headers["bcc"] ? headers["bcc"].split(/,\s*/).filter(Boolean) : undefined;
411
+ const date = headers["date"] || new Date().toISOString();
412
+ const attachments = [];
413
+ let bodyText;
414
+ if (includeBody) {
415
+ bodyText = this.extractPlainTextBody(message.payload);
416
+ }
417
+ return {
418
+ id: message.id || "",
419
+ threadId: message.threadId || "",
420
+ subject,
421
+ from,
422
+ to,
423
+ ...(cc ? { cc } : {}),
424
+ ...(bcc ? { bcc } : {}),
425
+ date,
426
+ snippet: message.snippet || "",
427
+ body: bodyText,
428
+ labels: message.labelIds || [],
429
+ attachments,
430
+ };
431
+ }
432
+ parseLabelToGmailLabel(label) {
433
+ return {
434
+ id: label.id || "",
435
+ name: label.name || "",
436
+ type: label.type === "system" ? "system" : "user",
437
+ messagesTotal: label.messagesTotal ?? undefined,
438
+ messagesUnread: label.messagesUnread ?? undefined,
439
+ threadsTotal: label.threadsTotal ?? undefined,
440
+ threadsUnread: label.threadsUnread ?? undefined,
441
+ color: label.color
442
+ ? {
443
+ textColor: label.color.textColor || "#000000",
444
+ backgroundColor: label.color.backgroundColor || "#ffffff",
445
+ }
446
+ : undefined,
447
+ labelListVisibility: label.labelListVisibility,
448
+ messageListVisibility: label.messageListVisibility,
449
+ };
450
+ }
451
+ extractPlainTextBody(part) {
452
+ if (!part)
453
+ return undefined;
454
+ if (part.mimeType === "text/plain" && part.body?.data) {
455
+ return Buffer.from(part.body.data, "base64").toString("utf8");
456
+ }
457
+ if (part.parts && part.parts.length > 0) {
458
+ for (const p of part.parts) {
459
+ const text = this.extractPlainTextBody(p);
460
+ if (text)
461
+ return text;
462
+ }
463
+ }
464
+ return undefined;
465
+ }
466
+ buildRawEmail(input) {
467
+ const lines = [
468
+ `To: ${input.to.join(", ")}`,
469
+ input.cc && input.cc.length > 0 ? `Cc: ${input.cc.join(", ")}` : undefined,
470
+ input.bcc && input.bcc.length > 0 ? `Bcc: ${input.bcc.join(", ")}` : undefined,
471
+ `Subject: ${input.subject}`,
472
+ "MIME-Version: 1.0",
473
+ "Content-Type: text/plain; charset=utf-8",
474
+ "Content-Transfer-Encoding: 7bit",
475
+ "",
476
+ input.body,
477
+ ].filter(Boolean);
478
+ const message = lines.join("\r\n");
479
+ return Buffer.from(message).toString("base64url");
480
+ }
481
+ }
482
+ exports.GmailServiceResource = GmailServiceResource;
483
+ // Service tag for dependency injection
484
+ exports.GmailServiceTag = effect_1.Context.GenericTag("GmailService");
485
+ // Layer for providing the real Gmail service
486
+ function createGmailServiceLayer() {
487
+ return effect_1.Layer.effect(exports.GmailServiceTag, effect_1.Effect.gen(function* () {
488
+ const fs = yield* platform_1.FileSystem.FileSystem;
489
+ const agentConfig = yield* config_1.AgentConfigService;
490
+ const appConfig = yield* agentConfig.appConfig;
491
+ const clientId = appConfig.google?.clientId;
492
+ const clientSecret = appConfig.google?.clientSecret;
493
+ const missingCreds = !clientId || !clientSecret;
494
+ function requireCredentials() {
495
+ if (missingCreds) {
496
+ return effect_1.Effect.fail(new GmailAuthenticationError("Missing Google OAuth credentials. Set config.google.clientId and config.google.clientSecret."));
497
+ }
498
+ return effect_1.Effect.void;
499
+ }
500
+ const port = 53682;
501
+ const redirectUri = `http://localhost:${port}/oauth2callback`;
502
+ const oauth2Client = new googleapis_1.google.auth.OAuth2(clientId, clientSecret, redirectUri);
503
+ const gmail = googleapis_1.google.gmail({ version: "v1", auth: oauth2Client });
504
+ const { storage } = yield* agentConfig.appConfig;
505
+ const dataDir = storage.type === "file" ? storage.path : "./.jazz";
506
+ const tokenFilePath = `${dataDir}/google/gmail-token.json`;
507
+ const service = new GmailServiceResource(fs, tokenFilePath, oauth2Client, gmail, requireCredentials);
508
+ return service;
509
+ }));
510
+ }
511
+ // Helper functions for common Gmail operations
512
+ function authenticateGmail() {
513
+ return effect_1.Effect.gen(function* () {
514
+ const gmailService = yield* exports.GmailServiceTag;
515
+ return yield* gmailService.authenticate();
516
+ });
517
+ }
518
+ function listGmailEmails(maxResults, query) {
519
+ return effect_1.Effect.gen(function* () {
520
+ const gmailService = yield* exports.GmailServiceTag;
521
+ return yield* gmailService.listEmails(maxResults, query);
522
+ });
523
+ }
524
+ function getGmailEmail(emailId) {
525
+ return effect_1.Effect.gen(function* () {
526
+ const gmailService = yield* exports.GmailServiceTag;
527
+ return yield* gmailService.getEmail(emailId);
528
+ });
529
+ }
530
+ function sendGmailEmail(to, subject, body, options) {
531
+ return effect_1.Effect.gen(function* () {
532
+ const gmailService = yield* exports.GmailServiceTag;
533
+ return yield* gmailService.sendEmail(to, subject, body, options);
534
+ });
535
+ }
536
+ function searchGmailEmails(query, maxResults) {
537
+ return effect_1.Effect.gen(function* () {
538
+ const gmailService = yield* exports.GmailServiceTag;
539
+ return yield* gmailService.searchEmails(query, maxResults);
540
+ });
541
+ }
542
+ // Label management helper functions
543
+ function listGmailLabels() {
544
+ return effect_1.Effect.gen(function* () {
545
+ const gmailService = yield* exports.GmailServiceTag;
546
+ return yield* gmailService.listLabels();
547
+ });
548
+ }
549
+ function createGmailLabel(name, options) {
550
+ return effect_1.Effect.gen(function* () {
551
+ const gmailService = yield* exports.GmailServiceTag;
552
+ return yield* gmailService.createLabel(name, options);
553
+ });
554
+ }
555
+ function updateGmailLabel(labelId, updates) {
556
+ return effect_1.Effect.gen(function* () {
557
+ const gmailService = yield* exports.GmailServiceTag;
558
+ return yield* gmailService.updateLabel(labelId, updates);
559
+ });
560
+ }
561
+ function deleteGmailLabel(labelId) {
562
+ return effect_1.Effect.gen(function* () {
563
+ const gmailService = yield* exports.GmailServiceTag;
564
+ return yield* gmailService.deleteLabel(labelId);
565
+ });
566
+ }
567
+ // Email modification helper functions
568
+ function modifyGmailEmail(emailId, options) {
569
+ return effect_1.Effect.gen(function* () {
570
+ const gmailService = yield* exports.GmailServiceTag;
571
+ return yield* gmailService.modifyEmail(emailId, options);
572
+ });
573
+ }
574
+ function batchModifyGmailEmails(emailIds, options) {
575
+ return effect_1.Effect.gen(function* () {
576
+ const gmailService = yield* exports.GmailServiceTag;
577
+ return yield* gmailService.batchModifyEmails(emailIds, options);
578
+ });
579
+ }
580
+ function trashGmailEmail(emailId) {
581
+ return effect_1.Effect.gen(function* () {
582
+ const gmailService = yield* exports.GmailServiceTag;
583
+ return yield* gmailService.trashEmail(emailId);
584
+ });
585
+ }
586
+ function deleteGmailEmail(emailId) {
587
+ return effect_1.Effect.gen(function* () {
588
+ const gmailService = yield* exports.GmailServiceTag;
589
+ return yield* gmailService.deleteEmail(emailId);
590
+ });
591
+ }
592
+ //# sourceMappingURL=gmail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail.js","sourceRoot":"","sources":["../../src/services/gmail.ts"],"names":[],"mappings":";;;AAqvBA,0DA8CC;AAGD,8CAKC;AAED,0CAQC;AAED,sCAOC;AAED,wCAkBC;AAED,8CAQC;AAGD,0CASC;AAED,4CAYC;AAED,4CAaC;AAED,4CAOC;AAGD,4CAWC;AAED,wDAWC;AAED,0CAOC;AAED,4CAOC;;AA37BD,+CAA8C;AAC9C,mCAAgD;AAChD,mCAAqC;AACrC,2CAAmD;AACnD,kEAA6B;AAC7B,wDAAwB;AAExB,qCAA8C;AAG9C,iEAAiE;AACjE,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,oBAAW,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;IAChD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AAEH,uBAAuB;AACvB,MAAa,wBAAyB,SAAQ,KAAK;IACxC,IAAI,GAAG,0BAA0B,CAAC;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAND,4DAMC;AAED,MAAa,mBAAoB,SAAQ,KAAK;IACnC,IAAI,GAAG,qBAAqB,CAAC;IAC7B,MAAM,CAAqB;IACpC,YAAY,OAAe,EAAE,MAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AARD,kDAQC;AAiID,MAAa,oBAAoB;IAEZ;IACA;IACT;IACA;IACS;IALnB,YACmB,EAAyB,EACzB,aAAqB,EAC9B,WAAoD,EACpD,KAAqB,EACZ,kBAAuE;QAJvE,OAAE,GAAF,EAAE,CAAuB;QACzB,kBAAa,GAAb,aAAa,CAAQ;QAC9B,gBAAW,GAAX,WAAW,CAAyC;QACpD,UAAK,GAAL,KAAK,CAAgB;QACZ,uBAAkB,GAAlB,kBAAkB,CAAqD;IACvF,CAAC;IAEJ,YAAY;QACV,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,CAAC;YACD,OAAO,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,UAAU,CACR,aAAqB,EAAE,EACvB,KAAc;QAEd,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,UAAU,GACd,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;oBACjC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE;oBACxC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBACzF,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAiB,EAAE,CAAC;gBAChC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,EAAE;wBAAE,SAAS;oBAC1B,MAAM,SAAS,GAAgD;wBAC7D,MAAM,EAAE,IAAI;wBACZ,EAAE,EAAE,OAAO,CAAC,EAAE;wBACd,MAAM,EAAE,UAAU;wBAClB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;qBAChE,CAAC;oBACF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;oBACnF,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,mBAAmB,CAC3B,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC5E,MAAM,CACP,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,QAAQ,CACN,OAAe;QAEf,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,SAAS,GAAgD;oBAC7D,MAAM,EAAE,IAAI;oBACZ,EAAE,EAAE,OAAO;oBACX,MAAM,EAAE,MAAM;iBACf,CAAC;gBACF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnF,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACxD,OAAO,KAAK,CAAC;YACf,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,mBAAmB,CAC3B,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC1E,MAAM,CACP,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,SAAS,CACP,EAAY,EACZ,OAAe,EACf,IAAY,EACZ,OAIC;QAED,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;oBAC7B,EAAE;oBACF,OAAO;oBACP,IAAI;oBACJ,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE;oBACrB,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE;iBACxB,CAAC,CAAC;gBACH,iDAAiD;gBACjD,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CACpF,CAAC;gBACF,OAAO,KAAK,CAAC,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,mBAAmB,CAC3B,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC7E,MAAM,CACP,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,YAAY,CACV,KAAa,EACb,aAAqB,EAAE;QAEvB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,2BAA2B;IAC3B,UAAU;QACR,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAC/C,CAAC;gBACF,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACxD,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CACnC,CAAC;gBACF,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,mBAAmB,CAC3B,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC5E,MAAM,CACP,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,WAAW,CACT,IAAY,EACZ,OAIC;QAED,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,WAAW,GAA0B;oBACzC,IAAI;oBACJ,GAAG,CAAC,OAAO,EAAE,mBAAmB,IAAI;wBAClC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;qBACjD,CAAC;oBACF,GAAG,CAAC,OAAO,EAAE,qBAAqB,IAAI;wBACpC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;qBACrD,CAAC;oBACF,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;iBAChD,CAAC;gBACF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAC9D,CAAC;gBACF,OAAO,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,mBAAmB,CAC3B,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC7E,MAAM,CACP,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,WAAW,CACT,OAAe,EACf,OAKC;QAED,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,WAAW,GAA0B,EAAE,CAAC;gBAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;oBAAE,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAChE,IAAI,OAAO,CAAC,mBAAmB,KAAK,SAAS;oBAC3C,WAAW,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;gBAChE,IAAI,OAAO,CAAC,qBAAqB,KAAK,SAAS;oBAC7C,WAAW,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;gBACpE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;oBAAE,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;gBAEnE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAC3E,CAAC;gBACF,OAAO,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,mBAAmB,CAC3B,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC7E,MAAM,CACP,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,WAAW,CACT,OAAe;QAEf,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAC9D,CAAC;gBACF,OAAO,KAAK,CAAC,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,mBAAmB,CAC3B,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC7E,MAAM,CACP,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,WAAW,CACT,OAAe,EACf,OAGC;QAED,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAyC,EAAE,CAAC;gBAC7D,IAAI,OAAO,CAAC,WAAW;oBAAE,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;gBACvE,IAAI,OAAO,CAAC,cAAc;oBAAE,WAAW,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;gBAEhF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAC7E,CAAC;gBACF,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,mBAAmB,CAC3B,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC7E,MAAM,CACP,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,iBAAiB,CACf,QAAkB,EAClB,OAGC;QAED,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,WAAW,GAA+C;oBAC9D,GAAG,EAAE,QAAQ;iBACd,CAAC;gBACF,IAAI,OAAO,CAAC,WAAW;oBAAE,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;gBACvE,IAAI,OAAO,CAAC,cAAc;oBAAE,WAAW,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;gBAEhF,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CACrE,CAAC;gBACF,OAAO,KAAK,CAAC,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,mBAAmB,CAC3B,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACpF,MAAM,CACP,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAC/D,CAAC;gBACF,OAAO,KAAK,CAAC,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,mBAAmB,CAC3B,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC5E,MAAM,CACP,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,WAAW,CACT,OAAe;QAEf,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAChE,CAAC;gBACF,OAAO,KAAK,CAAC,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,mBAAmB,CAC3B,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC7E,MAAM,CACP,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAEO,mBAAmB;QACzB,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,yEAAyE;YACzE,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,CAAC;YACD,OAAO,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAEO,iBAAiB;QACvB,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAClE,eAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAChC,eAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,eAAM,CAAC,OAAO,CAAC,SAA8B,CAAC,CAAC,CACtE,CAAC;YACF,IAAI,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAqB,CAAC;gBACrD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAEO,gBAAgB;QACtB,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,KAAK,CAAC,CAAC;YAClE,MAAM,WAAW,GAAG,oBAAoB,IAAI,iBAAiB,CAAC;YAC9D,wEAAwE;YACxE,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAA+B,CAAC;YACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;YAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;YAC1D,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YACpD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,WAAW,GAAG,IAAI,mBAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YACpF,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YACzC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC/B,IAAI,CAAC,KAAK,GAAG,mBAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAErE,MAAM,MAAM,GAAG;gBACb,gDAAgD;gBAChD,4CAA4C;gBAC5C,8CAA8C;gBAC9C,8CAA8C;gBAC9C,+CAA+C;aAChD,CAAC;YAEF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;gBAC/C,WAAW,EAAE,SAAS;gBACtB,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;YAEH,+CAA+C;YAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,KAAK,CAAmC,CAAC,MAAM,EAAE,EAAE;gBAC5E,MAAM,MAAM,GAAG,mBAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBAC5C,IAAI,CAAC,GAAG,CAAC,GAAG;wBAAE,OAAO;oBACrB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;oBACzD,IAAI,GAAG,CAAC,QAAQ,KAAK,iBAAiB,EAAE,CAAC;wBACvC,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC/C,IAAI,SAAS,EAAE,CAAC;4BACd,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;4BACpD,GAAG,CAAC,GAAG,CACL,wFAAwF,CACzF,CAAC;4BACF,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,eAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBACxD,CAAC;6BAAM,CAAC;4BACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4BACnB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;wBAC1B,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;oBACvB,KAAK,IAAA,cAAI,EAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBAC5B,kDAAkD;oBACpD,CAAC,CAAC,CAAC;oBACH,kDAAkD;oBAClD,OAAO,CAAC,GAAG,CAAC,8DAA8D,OAAO,EAAE,CAAC,CAAC;gBACvF,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAE9E,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAClD,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,wBAAwB,CAChC,sBAAsB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACzE,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,KAAuB;QAC1C,OAAO,eAAM,CAAC,GAAG,CACf,QAAQ,CAAC;YACP,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACjF,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;iBACX,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;iBACvC,IAAI,CAAC,eAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,eAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/C,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;iBACX,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC;iBAC5C,IAAI,CACH,eAAM,CAAC,QAAQ,CACb,CAAC,GAAG,EAAE,EAAE,CACN,IAAI,wBAAwB,CAC1B,4BAA4B,MAAM,CAAE,GAAa,CAAC,OAAO,IAAI,GAAG,CAAC,EAAE,CACpE,CACJ,CACF,CAAC;QACN,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAEO,mBAAmB,CACzB,OAAgC,EAChC,cAAuB,KAAK;QAE5B,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACzF,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK;gBAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAC3D,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtF,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAEzD,MAAM,WAAW,GAA0C,EAAE,CAAC;QAE9D,IAAI,QAA4B,CAAC;QACjC,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC;QAED,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;YAChC,OAAO;YACP,IAAI;YACJ,EAAE;YACF,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,IAAI;YACJ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9B,WAAW;SACZ,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,KAA4B;QACzD,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;YACjD,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,SAAS;YAC/C,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,SAAS;YACjD,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,SAAS;YAC7C,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,SAAS;YAC/C,KAAK,EAAE,KAAK,CAAC,KAAK;gBAChB,CAAC,CAAC;oBACE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,SAAS;oBAC7C,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe,IAAI,SAAS;iBAC1D;gBACH,CAAC,CAAC,SAAS;YACb,mBAAmB,EAAE,KAAK,CAAC,mBAA4D;YACvF,qBAAqB,EAAE,KAAK,CAAC,qBAAoD;SAClF,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,IAAkC;QAC7D,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;YACtD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAI,IAAI;oBAAE,OAAO,IAAI,CAAC;YACxB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,aAAa,CAAC,KAMrB;QACC,MAAM,KAAK,GAAG;YACZ,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5B,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YAC1E,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YAC9E,YAAY,KAAK,CAAC,OAAO,EAAE;YAC3B,mBAAmB;YACnB,yCAAyC;YACzC,iCAAiC;YACjC,EAAE;YACF,KAAK,CAAC,IAAI;SACX,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;QAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACF;AAvkBD,oDAukBC;AAED,uCAAuC;AAC1B,QAAA,eAAe,GAAG,gBAAO,CAAC,UAAU,CAAe,cAAc,CAAC,CAAC;AAEhF,6CAA6C;AAC7C,SAAgB,uBAAuB;IAKrC,OAAO,cAAK,CAAC,MAAM,CACjB,uBAAe,EACf,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,qBAAU,CAAC,UAAU,CAAC;QAExC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,2BAAkB,CAAC;QAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC;QAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC5C,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;QACpD,MAAM,YAAY,GAAG,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC;QAEhD,SAAS,kBAAkB;YACzB,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,eAAM,CAAC,IAAI,CAChB,IAAI,wBAAwB,CAC1B,8FAA8F,CAC/F,CACF,CAAC;YACJ,CAAC;YACD,OAAO,eAAM,CAAC,IAAqD,CAAC;QACtE,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC;QACnB,MAAM,WAAW,GAAG,oBAAoB,IAAI,iBAAiB,CAAC;QAC9D,MAAM,YAAY,GAAG,IAAI,mBAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,mBAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAElE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC;QACjD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,MAAM,aAAa,GAAG,GAAG,OAAO,0BAA0B,CAAC;QAC3D,MAAM,OAAO,GAAiB,IAAI,oBAAoB,CACpD,EAAE,EACF,aAAa,EACb,YAAY,EACZ,KAAK,EACL,kBAAkB,CACnB,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,+CAA+C;AAC/C,SAAgB,iBAAiB;IAC/B,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,uBAAe,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,eAAe,CAC7B,UAAmB,EACnB,KAAc;IAEd,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,uBAAe,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,aAAa,CAC3B,OAAe;IAEf,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,uBAAe,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,cAAc,CAC5B,EAAY,EACZ,OAAe,EACf,IAAY,EACZ,OAQC;IAED,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,uBAAe,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,iBAAiB,CAC/B,KAAa,EACb,UAAmB;IAEnB,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,uBAAe,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oCAAoC;AACpC,SAAgB,eAAe;IAK7B,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,uBAAe,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,gBAAgB,CAC9B,IAAY,EACZ,OAIC;IAED,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,uBAAe,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,gBAAgB,CAC9B,OAAe,EACf,OAKC;IAED,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,uBAAe,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,gBAAgB,CAC9B,OAAe;IAEf,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,uBAAe,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sCAAsC;AACtC,SAAgB,gBAAgB,CAC9B,OAAe,EACf,OAGC;IAED,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,uBAAe,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,sBAAsB,CACpC,QAAkB,EAClB,OAGC;IAED,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,uBAAe,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,eAAe,CAC7B,OAAe;IAEf,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,uBAAe,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,gBAAgB,CAC9B,OAAe;IAEf,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,uBAAe,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Layer } from "effect";
2
+ import { type ConfigService } from "../config";
3
+ import { LLMConfigurationError, type LLMService } from "./types";
4
+ export declare function createAISDKServiceLayer(): Layer.Layer<LLMService, LLMConfigurationError, ConfigService>;
5
+ //# sourceMappingURL=ai-sdk-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-sdk-service.d.ts","sourceRoot":"","sources":["../../../src/services/llm/ai-sdk-service.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAEL,qBAAqB,EAQrB,KAAK,UAAU,EAEhB,MAAM,SAAS,CAAC;AAgWjB,wBAAgB,uBAAuB,IAAI,KAAK,CAAC,KAAK,CACpD,UAAU,EACV,qBAAqB,EACrB,aAAa,CACd,CAmCA"}