wave-agent-sdk 0.0.7 → 0.0.8

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 (172) hide show
  1. package/dist/agent.d.ts +32 -20
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +202 -20
  4. package/dist/constants/events.d.ts +28 -0
  5. package/dist/constants/events.d.ts.map +1 -0
  6. package/dist/constants/events.js +27 -0
  7. package/dist/index.d.ts +2 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +2 -0
  10. package/dist/managers/aiManager.d.ts +34 -1
  11. package/dist/managers/aiManager.d.ts.map +1 -1
  12. package/dist/managers/aiManager.js +243 -128
  13. package/dist/managers/backgroundBashManager.d.ts.map +1 -1
  14. package/dist/managers/backgroundBashManager.js +7 -6
  15. package/dist/managers/hookManager.d.ts +9 -4
  16. package/dist/managers/hookManager.d.ts.map +1 -1
  17. package/dist/managers/hookManager.js +62 -30
  18. package/dist/managers/liveConfigManager.d.ts +58 -0
  19. package/dist/managers/liveConfigManager.d.ts.map +1 -0
  20. package/dist/managers/liveConfigManager.js +160 -0
  21. package/dist/managers/messageManager.d.ts +38 -13
  22. package/dist/managers/messageManager.d.ts.map +1 -1
  23. package/dist/managers/messageManager.js +163 -30
  24. package/dist/managers/slashCommandManager.d.ts.map +1 -1
  25. package/dist/managers/slashCommandManager.js +4 -1
  26. package/dist/managers/subagentManager.d.ts +51 -0
  27. package/dist/managers/subagentManager.d.ts.map +1 -1
  28. package/dist/managers/subagentManager.js +189 -18
  29. package/dist/services/aiService.d.ts +13 -5
  30. package/dist/services/aiService.d.ts.map +1 -1
  31. package/dist/services/aiService.js +350 -74
  32. package/dist/services/configurationWatcher.d.ts +120 -0
  33. package/dist/services/configurationWatcher.d.ts.map +1 -0
  34. package/dist/services/configurationWatcher.js +439 -0
  35. package/dist/services/fileWatcher.d.ts +69 -0
  36. package/dist/services/fileWatcher.d.ts.map +1 -0
  37. package/dist/services/fileWatcher.js +213 -0
  38. package/dist/services/hook.d.ts +91 -9
  39. package/dist/services/hook.d.ts.map +1 -1
  40. package/dist/services/hook.js +393 -43
  41. package/dist/services/jsonlHandler.d.ts +62 -0
  42. package/dist/services/jsonlHandler.d.ts.map +1 -0
  43. package/dist/services/jsonlHandler.js +257 -0
  44. package/dist/services/memory.d.ts +9 -0
  45. package/dist/services/memory.d.ts.map +1 -1
  46. package/dist/services/memory.js +81 -12
  47. package/dist/services/memoryStore.d.ts +81 -0
  48. package/dist/services/memoryStore.d.ts.map +1 -0
  49. package/dist/services/memoryStore.js +200 -0
  50. package/dist/services/session.d.ts +64 -49
  51. package/dist/services/session.d.ts.map +1 -1
  52. package/dist/services/session.js +310 -132
  53. package/dist/tools/bashTool.d.ts.map +1 -1
  54. package/dist/tools/bashTool.js +5 -4
  55. package/dist/tools/deleteFileTool.d.ts.map +1 -1
  56. package/dist/tools/deleteFileTool.js +2 -1
  57. package/dist/tools/editTool.d.ts.map +1 -1
  58. package/dist/tools/editTool.js +3 -2
  59. package/dist/tools/multiEditTool.d.ts.map +1 -1
  60. package/dist/tools/multiEditTool.js +4 -3
  61. package/dist/tools/readTool.d.ts.map +1 -1
  62. package/dist/tools/readTool.js +2 -1
  63. package/dist/tools/writeTool.d.ts.map +1 -1
  64. package/dist/tools/writeTool.js +5 -6
  65. package/dist/types/commands.d.ts +4 -0
  66. package/dist/types/commands.d.ts.map +1 -1
  67. package/dist/types/core.d.ts +35 -0
  68. package/dist/types/core.d.ts.map +1 -1
  69. package/dist/types/environment.d.ts +42 -0
  70. package/dist/types/environment.d.ts.map +1 -0
  71. package/dist/types/environment.js +21 -0
  72. package/dist/types/hooks.d.ts +8 -2
  73. package/dist/types/hooks.d.ts.map +1 -1
  74. package/dist/types/hooks.js +8 -2
  75. package/dist/types/index.d.ts +2 -0
  76. package/dist/types/index.d.ts.map +1 -1
  77. package/dist/types/index.js +2 -0
  78. package/dist/types/memoryStore.d.ts +82 -0
  79. package/dist/types/memoryStore.d.ts.map +1 -0
  80. package/dist/types/memoryStore.js +7 -0
  81. package/dist/types/messaging.d.ts +14 -2
  82. package/dist/types/messaging.d.ts.map +1 -1
  83. package/dist/types/session.d.ts +20 -0
  84. package/dist/types/session.d.ts.map +1 -0
  85. package/dist/types/session.js +7 -0
  86. package/dist/utils/bashHistory.d.ts.map +1 -1
  87. package/dist/utils/bashHistory.js +27 -26
  88. package/dist/utils/cacheControlUtils.d.ts +121 -0
  89. package/dist/utils/cacheControlUtils.d.ts.map +1 -0
  90. package/dist/utils/cacheControlUtils.js +367 -0
  91. package/dist/utils/commandPathResolver.d.ts +52 -0
  92. package/dist/utils/commandPathResolver.d.ts.map +1 -0
  93. package/dist/utils/commandPathResolver.js +145 -0
  94. package/dist/utils/configPaths.d.ts +85 -0
  95. package/dist/utils/configPaths.d.ts.map +1 -0
  96. package/dist/utils/configPaths.js +121 -0
  97. package/dist/utils/configResolver.d.ts +37 -10
  98. package/dist/utils/configResolver.d.ts.map +1 -1
  99. package/dist/utils/configResolver.js +127 -23
  100. package/dist/utils/constants.d.ts +1 -1
  101. package/dist/utils/constants.js +1 -1
  102. package/dist/utils/convertMessagesForAPI.d.ts.map +1 -1
  103. package/dist/utils/convertMessagesForAPI.js +7 -5
  104. package/dist/utils/customCommands.d.ts.map +1 -1
  105. package/dist/utils/customCommands.js +66 -21
  106. package/dist/utils/fileUtils.d.ts +15 -0
  107. package/dist/utils/fileUtils.d.ts.map +1 -0
  108. package/dist/utils/fileUtils.js +61 -0
  109. package/dist/utils/globalLogger.d.ts +102 -0
  110. package/dist/utils/globalLogger.d.ts.map +1 -0
  111. package/dist/utils/globalLogger.js +136 -0
  112. package/dist/utils/mcpUtils.d.ts.map +1 -1
  113. package/dist/utils/mcpUtils.js +25 -3
  114. package/dist/utils/messageOperations.d.ts +20 -8
  115. package/dist/utils/messageOperations.d.ts.map +1 -1
  116. package/dist/utils/messageOperations.js +25 -16
  117. package/dist/utils/pathEncoder.d.ts +104 -0
  118. package/dist/utils/pathEncoder.d.ts.map +1 -0
  119. package/dist/utils/pathEncoder.js +272 -0
  120. package/dist/utils/subagentParser.d.ts.map +1 -1
  121. package/dist/utils/subagentParser.js +2 -1
  122. package/dist/utils/tokenCalculation.d.ts +26 -0
  123. package/dist/utils/tokenCalculation.d.ts.map +1 -0
  124. package/dist/utils/tokenCalculation.js +36 -0
  125. package/package.json +6 -3
  126. package/src/agent.ts +298 -34
  127. package/src/constants/events.ts +38 -0
  128. package/src/index.ts +2 -0
  129. package/src/managers/aiManager.ts +323 -170
  130. package/src/managers/backgroundBashManager.ts +7 -6
  131. package/src/managers/hookManager.ts +83 -40
  132. package/src/managers/liveConfigManager.ts +248 -0
  133. package/src/managers/messageManager.ts +230 -63
  134. package/src/managers/slashCommandManager.ts +4 -1
  135. package/src/managers/subagentManager.ts +283 -21
  136. package/src/services/aiService.ts +474 -83
  137. package/src/services/configurationWatcher.ts +622 -0
  138. package/src/services/fileWatcher.ts +301 -0
  139. package/src/services/hook.ts +538 -47
  140. package/src/services/jsonlHandler.ts +319 -0
  141. package/src/services/memory.ts +92 -12
  142. package/src/services/memoryStore.ts +279 -0
  143. package/src/services/session.ts +381 -157
  144. package/src/tools/bashTool.ts +5 -4
  145. package/src/tools/deleteFileTool.ts +2 -1
  146. package/src/tools/editTool.ts +3 -2
  147. package/src/tools/multiEditTool.ts +4 -3
  148. package/src/tools/readTool.ts +2 -1
  149. package/src/tools/writeTool.ts +7 -6
  150. package/src/types/commands.ts +6 -0
  151. package/src/types/core.ts +44 -0
  152. package/src/types/environment.ts +60 -0
  153. package/src/types/hooks.ts +21 -8
  154. package/src/types/index.ts +2 -0
  155. package/src/types/memoryStore.ts +94 -0
  156. package/src/types/messaging.ts +14 -2
  157. package/src/types/session.ts +25 -0
  158. package/src/utils/bashHistory.ts +27 -27
  159. package/src/utils/cacheControlUtils.ts +540 -0
  160. package/src/utils/commandPathResolver.ts +189 -0
  161. package/src/utils/configPaths.ts +163 -0
  162. package/src/utils/configResolver.ts +182 -22
  163. package/src/utils/constants.ts +1 -1
  164. package/src/utils/convertMessagesForAPI.ts +7 -5
  165. package/src/utils/customCommands.ts +90 -22
  166. package/src/utils/fileUtils.ts +65 -0
  167. package/src/utils/globalLogger.ts +145 -0
  168. package/src/utils/mcpUtils.ts +34 -3
  169. package/src/utils/messageOperations.ts +42 -20
  170. package/src/utils/pathEncoder.ts +379 -0
  171. package/src/utils/subagentParser.ts +2 -1
  172. package/src/utils/tokenCalculation.ts +43 -0
@@ -1,6 +1,6 @@
1
1
  import { randomUUID } from "crypto";
2
2
  import { AIManager } from "./aiManager.js";
3
- import { MessageManager, } from "./messageManager.js";
3
+ import { MessageManager } from "./messageManager.js";
4
4
  export class SubagentManager {
5
5
  constructor(options) {
6
6
  this.instances = new Map();
@@ -8,10 +8,12 @@ export class SubagentManager {
8
8
  this.workdir = options.workdir;
9
9
  this.parentToolManager = options.parentToolManager;
10
10
  this.parentMessageManager = options.parentMessageManager;
11
+ this.callbacks = options.callbacks; // Store SubagentManagerCallbacks
11
12
  this.logger = options.logger;
12
13
  this.gatewayConfig = options.gatewayConfig;
13
14
  this.modelConfig = options.modelConfig;
14
15
  this.tokenLimit = options.tokenLimit;
16
+ this.hookManager = options.hookManager;
15
17
  this.onUsageAdded = options.onUsageAdded;
16
18
  }
17
19
  /**
@@ -58,23 +60,14 @@ export class SubagentManager {
58
60
  }
59
61
  const subagentId = randomUUID();
60
62
  // Create isolated MessageManager for the subagent
61
- const subagentCallbacks = {
62
- // These callbacks will be handled by the parent agent
63
- onMessagesChange: (messages) => {
64
- const instance = this.instances.get(subagentId);
65
- if (instance) {
66
- instance.messages = messages;
67
- // Update parent's subagent block with latest messages
68
- this.parentMessageManager.updateSubagentBlock(subagentId, {
69
- messages: messages,
70
- });
71
- }
72
- },
73
- };
63
+ const subagentCallbacks = this.createSubagentCallbacks(subagentId);
74
64
  const messageManager = new MessageManager({
75
65
  callbacks: subagentCallbacks,
76
66
  workdir: this.workdir,
77
67
  logger: this.logger,
68
+ sessionType: "subagent",
69
+ parentSessionId: this.parentMessageManager.getSessionId(),
70
+ subagentType: parameters.subagent_type,
78
71
  });
79
72
  // Use the parent tool manager directly - tool restrictions will be handled by allowedTools parameter
80
73
  const toolManager = this.parentToolManager;
@@ -89,6 +82,8 @@ export class SubagentManager {
89
82
  logger: this.logger,
90
83
  workdir: this.workdir,
91
84
  systemPrompt: configuration.systemPrompt,
85
+ subagentType: parameters.subagent_type, // Pass subagent type for hook context
86
+ hookManager: this.hookManager,
92
87
  gatewayConfig: this.gatewayConfig,
93
88
  modelConfig: {
94
89
  ...this.modelConfig,
@@ -107,10 +102,11 @@ export class SubagentManager {
107
102
  toolManager,
108
103
  status: "initializing",
109
104
  messages: [],
105
+ subagentType: parameters.subagent_type, // Store the subagent type
110
106
  };
111
107
  this.instances.set(subagentId, instance);
112
108
  // Create subagent block in parent message manager
113
- this.parentMessageManager.addSubagentBlock(subagentId, configuration.name, "active", [], parameters);
109
+ this.parentMessageManager.addSubagentBlock(subagentId, configuration.name, messageManager.getSessionId(), configuration, "active", parameters);
114
110
  return instance;
115
111
  }
116
112
  /**
@@ -136,7 +132,6 @@ export class SubagentManager {
136
132
  this.updateInstanceStatus(instance.subagentId, "aborted");
137
133
  this.parentMessageManager.updateSubagentBlock(instance.subagentId, {
138
134
  status: "aborted",
139
- messages: instance.messages,
140
135
  });
141
136
  });
142
137
  }
@@ -192,11 +187,10 @@ export class SubagentManager {
192
187
  // Extract text content from the last assistant message
193
188
  const textBlocks = lastAssistantMessage.blocks.filter((block) => block.type === "text");
194
189
  const response = textBlocks.map((block) => block.content).join("\n");
195
- // Update status to completed and update parent with final messages
190
+ // Update status to completed and update parent
196
191
  this.updateInstanceStatus(instance.subagentId, "completed");
197
192
  this.parentMessageManager.updateSubagentBlock(instance.subagentId, {
198
193
  status: "completed",
199
- messages: messages,
200
194
  });
201
195
  return response || "Task completed with no text response";
202
196
  }
@@ -256,4 +250,181 @@ export class SubagentManager {
256
250
  cleanup() {
257
251
  this.instances.clear();
258
252
  }
253
+ /**
254
+ * Restore subagent instances from saved session data
255
+ * This method is called during agent initialization to restore previous subagent states
256
+ */
257
+ async restoreSubagentSessions(subagentSessions) {
258
+ for (const { sessionData, subagentId, configuration } of subagentSessions) {
259
+ try {
260
+ // Use the configuration from the SubagentBlock
261
+ // Create the subagent instance without executing - just restore the state
262
+ // Create MessageManager for the restored subagent
263
+ const subagentCallbacks = this.createSubagentCallbacks(subagentId);
264
+ const messageManager = new MessageManager({
265
+ callbacks: subagentCallbacks,
266
+ workdir: this.workdir,
267
+ logger: this.logger,
268
+ sessionType: "subagent",
269
+ parentSessionId: this.parentMessageManager.getSessionId(),
270
+ subagentType: configuration.name, // Use configuration name for restored sessions
271
+ });
272
+ // Use the parent tool manager
273
+ const toolManager = this.parentToolManager;
274
+ // Determine model to use
275
+ const modelToUse = configuration.model && configuration.model !== "inherit"
276
+ ? configuration.model
277
+ : this.modelConfig.agentModel;
278
+ // Create AIManager for the restored subagent
279
+ const aiManager = new AIManager({
280
+ messageManager,
281
+ toolManager,
282
+ logger: this.logger,
283
+ workdir: this.workdir,
284
+ systemPrompt: configuration.systemPrompt,
285
+ subagentType: configuration.name, // Use configuration name as subagent type for restored instances
286
+ hookManager: this.hookManager,
287
+ gatewayConfig: this.gatewayConfig,
288
+ modelConfig: {
289
+ ...this.modelConfig,
290
+ agentModel: modelToUse,
291
+ },
292
+ tokenLimit: this.tokenLimit,
293
+ callbacks: {
294
+ onUsageAdded: this.onUsageAdded,
295
+ },
296
+ });
297
+ // Create restored instance
298
+ const instance = {
299
+ subagentId,
300
+ configuration,
301
+ aiManager,
302
+ messageManager,
303
+ toolManager,
304
+ status: "completed", // Restored sessions are considered completed
305
+ messages: sessionData.messages,
306
+ subagentType: configuration.name, // Use configuration name as subagent type for restored instances
307
+ };
308
+ // IMPORTANT: Store instance in map BEFORE calling setMessages
309
+ // This ensures the callback can find the instance
310
+ this.instances.set(subagentId, instance);
311
+ // Now restore the session data including sessionId, which will trigger the callback chain
312
+ const sessionDataObj = {
313
+ id: sessionData.id,
314
+ messages: sessionData.messages,
315
+ version: "1.0.0",
316
+ metadata: {
317
+ workdir: this.workdir,
318
+ startedAt: new Date().toISOString(),
319
+ lastActiveAt: new Date().toISOString(),
320
+ latestTotalTokens: 0,
321
+ },
322
+ };
323
+ messageManager.initializeFromSession(sessionDataObj);
324
+ }
325
+ catch (error) {
326
+ this.logger?.warn(`Failed to restore subagent session ${subagentId}:`, error);
327
+ // Continue with other sessions even if one fails
328
+ }
329
+ }
330
+ }
331
+ /**
332
+ * Create subagent callbacks for a specific subagent ID
333
+ * Extracted to reuse in both create and restore flows
334
+ */
335
+ createSubagentCallbacks(subagentId) {
336
+ return {
337
+ onUserMessageAdded: (params) => {
338
+ // Forward user message events to parent via SubagentManager callbacks
339
+ if (this.callbacks?.onSubagentUserMessageAdded) {
340
+ this.callbacks.onSubagentUserMessageAdded(subagentId, params);
341
+ }
342
+ },
343
+ onAssistantMessageAdded: () => {
344
+ // Forward assistant message events to parent via SubagentManager callbacks
345
+ if (this.callbacks?.onSubagentAssistantMessageAdded) {
346
+ this.callbacks.onSubagentAssistantMessageAdded(subagentId);
347
+ }
348
+ },
349
+ onAssistantContentUpdated: (chunk, accumulated) => {
350
+ // Forward assistant content updates to parent via SubagentManager callbacks
351
+ if (this.callbacks?.onSubagentAssistantContentUpdated) {
352
+ this.callbacks.onSubagentAssistantContentUpdated(subagentId, chunk, accumulated);
353
+ }
354
+ },
355
+ onToolBlockUpdated: (params) => {
356
+ // Forward tool block updates to parent via SubagentManager callbacks
357
+ if (this.callbacks?.onSubagentToolBlockUpdated) {
358
+ this.callbacks.onSubagentToolBlockUpdated(subagentId, params);
359
+ }
360
+ },
361
+ // These callbacks will be handled by the parent agent
362
+ onMessagesChange: (messages) => {
363
+ const instance = this.instances.get(subagentId);
364
+ if (instance) {
365
+ instance.messages = messages;
366
+ // Forward subagent message changes to parent via callbacks
367
+ if (this.callbacks?.onSubagentMessagesChange) {
368
+ this.callbacks.onSubagentMessagesChange(subagentId, messages);
369
+ }
370
+ }
371
+ },
372
+ onSessionIdChange: (newSessionId) => {
373
+ // Update the subagent block with the new session ID
374
+ this.parentMessageManager.updateSubagentBlock(subagentId, {
375
+ sessionId: newSessionId,
376
+ });
377
+ },
378
+ };
379
+ }
380
+ /**
381
+ * Update configuration for SubagentManager and all active subagents
382
+ * This method updates configuration for live config reload support
383
+ * @param newGatewayConfig - New gateway configuration
384
+ * @param newModelConfig - New model configuration
385
+ * @param newTokenLimit - New token limit
386
+ */
387
+ updateConfiguration(newGatewayConfig, newModelConfig, newTokenLimit) {
388
+ this.logger?.info("Live Config: Updating SubagentManager configuration");
389
+ // Update stored configuration
390
+ this.gatewayConfig = newGatewayConfig;
391
+ this.modelConfig = newModelConfig;
392
+ this.tokenLimit = newTokenLimit;
393
+ // Update all active subagent AIManager instances
394
+ let updatedCount = 0;
395
+ for (const [subagentId, instance] of this.instances.entries()) {
396
+ if (instance.status === "active" || instance.status === "initializing") {
397
+ try {
398
+ // For subagents, we need to preserve their model if it was explicitly set
399
+ const subagentModelConfig = {
400
+ ...newModelConfig,
401
+ // If subagent has its own model configured, preserve it
402
+ agentModel: instance.configuration.model &&
403
+ instance.configuration.model !== "inherit"
404
+ ? instance.configuration.model
405
+ : newModelConfig.agentModel,
406
+ };
407
+ instance.aiManager.updateConfiguration(newGatewayConfig, subagentModelConfig, newTokenLimit);
408
+ updatedCount++;
409
+ this.logger?.debug(`Live Config: Updated configuration for subagent ${subagentId}`);
410
+ }
411
+ catch (error) {
412
+ this.logger?.error(`Live Config: Failed to update configuration for subagent ${subagentId}: ${error.message}`);
413
+ }
414
+ }
415
+ }
416
+ this.logger?.info(`Live Config: SubagentManager configuration updated - ${updatedCount} active subagents updated`);
417
+ }
418
+ /**
419
+ * Get current configuration for debugging
420
+ */
421
+ getCurrentConfiguration() {
422
+ const activeSubagents = Array.from(this.instances.values()).filter((instance) => instance.status === "active" || instance.status === "initializing").length;
423
+ return {
424
+ gatewayConfig: { ...this.gatewayConfig },
425
+ modelConfig: { ...this.modelConfig },
426
+ tokenLimit: this.tokenLimit,
427
+ activeSubagents,
428
+ };
429
+ }
259
430
  }
@@ -1,6 +1,7 @@
1
1
  import { ChatCompletionMessageToolCall } from "openai/resources";
2
2
  import { ChatCompletionMessageParam, ChatCompletionFunctionTool } from "openai/resources.js";
3
3
  import type { GatewayConfig, ModelConfig } from "../types/index.js";
4
+ import { type ClaudeUsage } from "../utils/cacheControlUtils.js";
4
5
  export interface CallAgentOptions {
5
6
  gatewayConfig: GatewayConfig;
6
7
  modelConfig: ModelConfig;
@@ -12,15 +13,22 @@ export interface CallAgentOptions {
12
13
  tools?: ChatCompletionFunctionTool[];
13
14
  model?: string;
14
15
  systemPrompt?: string;
16
+ onContentUpdate?: (content: string) => void;
17
+ onToolUpdate?: (toolCall: {
18
+ id: string;
19
+ name: string;
20
+ parameters: string;
21
+ parametersChunk?: string;
22
+ stage?: "start" | "streaming" | "running" | "end";
23
+ }) => void;
15
24
  }
16
25
  export interface CallAgentResult {
17
26
  content?: string;
18
27
  tool_calls?: ChatCompletionMessageToolCall[];
19
- usage?: {
20
- prompt_tokens: number;
21
- completion_tokens: number;
22
- total_tokens: number;
23
- };
28
+ usage?: ClaudeUsage;
29
+ finish_reason?: "stop" | "length" | "tool_calls" | "content_filter" | "function_call" | null;
30
+ response_headers?: Record<string, string>;
31
+ metadata?: Record<string, unknown>;
24
32
  }
25
33
  export declare function callAgent(options: CallAgentOptions): Promise<CallAgentResult>;
26
34
  export interface CompressMessagesOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"aiService.d.ts","sourceRoot":"","sources":["../../src/services/aiService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAEL,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA4DpE,MAAM,WAAW,gBAAgB;IAE/B,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IAGzB,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,6BAA6B,EAAE,CAAC;IAC7C,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAoH1B;AAED,MAAM,WAAW,uBAAuB;IAEtC,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IAGzB,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAuGjC"}
1
+ {"version":3,"file":"aiService.d.ts","sourceRoot":"","sources":["../../src/services/aiService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAGL,0BAA0B,EAC1B,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;AAkEvC,MAAM,WAAW,gBAAgB;IAE/B,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IAGzB,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE;QACxB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,KAAK,CAAC;KACnD,KAAK,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,6BAA6B,EAAE,CAAC;IAC7C,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EACV,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,gBAAgB,GAChB,eAAe,GACf,IAAI,CAAC;IACT,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAgN1B;AA0ND,MAAM,WAAW,uBAAuB;IAEtC,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IAGzB,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CA2JjC"}