@strands-agents/sdk 0.0.1 → 0.1.1

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 (203) hide show
  1. package/README.md +112 -61
  2. package/dist/src/agent/__tests__/agent.test.js +269 -2
  3. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  4. package/dist/src/agent/agent.d.ts +40 -6
  5. package/dist/src/agent/agent.d.ts.map +1 -1
  6. package/dist/src/agent/agent.js +73 -12
  7. package/dist/src/agent/agent.js.map +1 -1
  8. package/dist/src/hooks/__tests__/registry.test.js +209 -58
  9. package/dist/src/hooks/__tests__/registry.test.js.map +1 -1
  10. package/dist/src/hooks/events.d.ts +2 -0
  11. package/dist/src/hooks/events.d.ts.map +1 -1
  12. package/dist/src/hooks/events.js +2 -0
  13. package/dist/src/hooks/events.js.map +1 -1
  14. package/dist/src/hooks/index.d.ts +1 -1
  15. package/dist/src/hooks/index.d.ts.map +1 -1
  16. package/dist/src/hooks/registry.d.ts +18 -3
  17. package/dist/src/hooks/registry.d.ts.map +1 -1
  18. package/dist/src/hooks/registry.js +43 -3
  19. package/dist/src/hooks/registry.js.map +1 -1
  20. package/dist/src/hooks/types.d.ts +6 -0
  21. package/dist/src/hooks/types.d.ts.map +1 -1
  22. package/dist/src/index.d.ts +4 -2
  23. package/dist/src/index.d.ts.map +1 -1
  24. package/dist/src/index.js +6 -2
  25. package/dist/src/index.js.map +1 -1
  26. package/dist/src/logging/__tests__/logger.test.d.ts +2 -0
  27. package/dist/src/logging/__tests__/logger.test.d.ts.map +1 -0
  28. package/dist/src/logging/__tests__/logger.test.js +70 -0
  29. package/dist/src/logging/__tests__/logger.test.js.map +1 -0
  30. package/dist/src/logging/index.d.ts +6 -0
  31. package/dist/src/logging/index.d.ts.map +1 -0
  32. package/dist/src/logging/index.js +5 -0
  33. package/dist/src/logging/index.js.map +1 -0
  34. package/dist/src/logging/logger.d.ts +30 -0
  35. package/dist/src/logging/logger.d.ts.map +1 -0
  36. package/dist/src/logging/logger.js +42 -0
  37. package/dist/src/logging/logger.js.map +1 -0
  38. package/dist/src/logging/types.d.ts +27 -0
  39. package/dist/src/logging/types.d.ts.map +1 -0
  40. package/dist/src/logging/types.js +5 -0
  41. package/dist/{tools → src/logging}/types.js.map +1 -1
  42. package/dist/src/models/__tests__/bedrock.test.js +79 -19
  43. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  44. package/dist/src/models/__tests__/model.test.js +185 -2
  45. package/dist/src/models/__tests__/model.test.js.map +1 -1
  46. package/dist/src/models/__tests__/openai.test.js +5 -5
  47. package/dist/src/models/__tests__/openai.test.js.map +1 -1
  48. package/dist/src/models/bedrock.d.ts +8 -2
  49. package/dist/src/models/bedrock.d.ts.map +1 -1
  50. package/dist/src/models/bedrock.js +61 -22
  51. package/dist/src/models/bedrock.js.map +1 -1
  52. package/dist/src/models/model.d.ts +41 -8
  53. package/dist/src/models/model.d.ts.map +1 -1
  54. package/dist/src/models/model.js +40 -23
  55. package/dist/src/models/model.js.map +1 -1
  56. package/dist/src/models/openai.d.ts +9 -3
  57. package/dist/src/models/openai.d.ts.map +1 -1
  58. package/dist/src/models/openai.js +7 -8
  59. package/dist/src/models/openai.js.map +1 -1
  60. package/dist/src/tools/__tests__/tool.test.js +122 -0
  61. package/dist/src/tools/__tests__/tool.test.js.map +1 -1
  62. package/dist/src/tools/__tests__/zod-tool.test.js +197 -5
  63. package/dist/src/tools/__tests__/zod-tool.test.js.map +1 -1
  64. package/dist/src/tools/function-tool.d.ts +11 -3
  65. package/dist/src/tools/function-tool.d.ts.map +1 -1
  66. package/dist/src/tools/function-tool.js +16 -2
  67. package/dist/src/tools/function-tool.js.map +1 -1
  68. package/dist/src/tools/types.d.ts +2 -1
  69. package/dist/src/tools/types.d.ts.map +1 -1
  70. package/dist/src/tools/zod-tool.d.ts +21 -5
  71. package/dist/src/tools/zod-tool.d.ts.map +1 -1
  72. package/dist/src/tools/zod-tool.js +33 -11
  73. package/dist/src/tools/zod-tool.js.map +1 -1
  74. package/dist/src/types/messages.d.ts +9 -0
  75. package/dist/src/types/messages.d.ts.map +1 -1
  76. package/dist/src/types/messages.js +55 -46
  77. package/dist/src/types/messages.js.map +1 -1
  78. package/dist/vended_tools/file_editor/file-editor.d.ts +1 -1
  79. package/dist/vended_tools/notebook/notebook.d.ts +1 -1
  80. package/package.json +11 -11
  81. package/dist/__fixtures__/model-test-helpers.d.ts +0 -56
  82. package/dist/__fixtures__/model-test-helpers.d.ts.map +0 -1
  83. package/dist/__fixtures__/model-test-helpers.js +0 -85
  84. package/dist/__fixtures__/model-test-helpers.js.map +0 -1
  85. package/dist/__fixtures__/tool-helpers.d.ts +0 -15
  86. package/dist/__fixtures__/tool-helpers.d.ts.map +0 -1
  87. package/dist/__fixtures__/tool-helpers.js +0 -22
  88. package/dist/__fixtures__/tool-helpers.js.map +0 -1
  89. package/dist/__tests__/errors.test.d.ts +0 -2
  90. package/dist/__tests__/errors.test.d.ts.map +0 -1
  91. package/dist/__tests__/errors.test.js +0 -20
  92. package/dist/__tests__/errors.test.js.map +0 -1
  93. package/dist/__tests__/index.test.d.ts +0 -2
  94. package/dist/__tests__/index.test.d.ts.map +0 -1
  95. package/dist/__tests__/index.test.js +0 -27
  96. package/dist/__tests__/index.test.js.map +0 -1
  97. package/dist/errors.d.ts +0 -22
  98. package/dist/errors.d.ts.map +0 -1
  99. package/dist/errors.js +0 -25
  100. package/dist/errors.js.map +0 -1
  101. package/dist/index.d.ts +0 -19
  102. package/dist/index.d.ts.map +0 -1
  103. package/dist/index.js +0 -17
  104. package/dist/index.js.map +0 -1
  105. package/dist/models/__tests__/bedrock.test.d.ts +0 -2
  106. package/dist/models/__tests__/bedrock.test.d.ts.map +0 -1
  107. package/dist/models/__tests__/bedrock.test.js +0 -1161
  108. package/dist/models/__tests__/bedrock.test.js.map +0 -1
  109. package/dist/models/__tests__/model.test.d.ts +0 -2
  110. package/dist/models/__tests__/model.test.d.ts.map +0 -1
  111. package/dist/models/__tests__/model.test.js +0 -297
  112. package/dist/models/__tests__/model.test.js.map +0 -1
  113. package/dist/models/__tests__/openai.test.d.ts +0 -2
  114. package/dist/models/__tests__/openai.test.d.ts.map +0 -1
  115. package/dist/models/__tests__/openai.test.js +0 -1016
  116. package/dist/models/__tests__/openai.test.js.map +0 -1
  117. package/dist/models/__tests__/test-utils.d.ts +0 -10
  118. package/dist/models/__tests__/test-utils.d.ts.map +0 -1
  119. package/dist/models/__tests__/test-utils.js +0 -17
  120. package/dist/models/__tests__/test-utils.js.map +0 -1
  121. package/dist/models/bedrock.d.ts +0 -272
  122. package/dist/models/bedrock.d.ts.map +0 -1
  123. package/dist/models/bedrock.js +0 -679
  124. package/dist/models/bedrock.js.map +0 -1
  125. package/dist/models/model.d.ts +0 -89
  126. package/dist/models/model.d.ts.map +0 -1
  127. package/dist/models/model.js +0 -122
  128. package/dist/models/model.js.map +0 -1
  129. package/dist/models/openai.d.ts +0 -262
  130. package/dist/models/openai.d.ts.map +0 -1
  131. package/dist/models/openai.js +0 -625
  132. package/dist/models/openai.js.map +0 -1
  133. package/dist/models/streaming.d.ts +0 -226
  134. package/dist/models/streaming.d.ts.map +0 -1
  135. package/dist/models/streaming.js +0 -2
  136. package/dist/models/streaming.js.map +0 -1
  137. package/dist/src/agent/streaming.d.ts +0 -91
  138. package/dist/src/agent/streaming.d.ts.map +0 -1
  139. package/dist/src/agent/streaming.js +0 -2
  140. package/dist/src/agent/streaming.js.map +0 -1
  141. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts +0 -2
  142. package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts.map +0 -1
  143. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +0 -10
  144. package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +0 -1
  145. package/dist/src/conversation-manager/conversation-manager.d.ts +0 -73
  146. package/dist/src/conversation-manager/conversation-manager.d.ts.map +0 -1
  147. package/dist/src/conversation-manager/conversation-manager.js +0 -24
  148. package/dist/src/conversation-manager/conversation-manager.js.map +0 -1
  149. package/dist/tools/__tests__/registry.test.d.ts +0 -2
  150. package/dist/tools/__tests__/registry.test.d.ts.map +0 -1
  151. package/dist/tools/__tests__/registry.test.js +0 -253
  152. package/dist/tools/__tests__/registry.test.js.map +0 -1
  153. package/dist/tools/__tests__/tool.test.d.ts +0 -2
  154. package/dist/tools/__tests__/tool.test.d.ts.map +0 -1
  155. package/dist/tools/__tests__/tool.test.js +0 -761
  156. package/dist/tools/__tests__/tool.test.js.map +0 -1
  157. package/dist/tools/__tests__/zod-tool.test-d.d.ts +0 -2
  158. package/dist/tools/__tests__/zod-tool.test-d.d.ts.map +0 -1
  159. package/dist/tools/__tests__/zod-tool.test-d.js +0 -227
  160. package/dist/tools/__tests__/zod-tool.test-d.js.map +0 -1
  161. package/dist/tools/__tests__/zod-tool.test.d.ts +0 -2
  162. package/dist/tools/__tests__/zod-tool.test.d.ts.map +0 -1
  163. package/dist/tools/__tests__/zod-tool.test.js +0 -342
  164. package/dist/tools/__tests__/zod-tool.test.js.map +0 -1
  165. package/dist/tools/function-tool.d.ts +0 -156
  166. package/dist/tools/function-tool.d.ts.map +0 -1
  167. package/dist/tools/function-tool.js +0 -237
  168. package/dist/tools/function-tool.js.map +0 -1
  169. package/dist/tools/registry.d.ts +0 -43
  170. package/dist/tools/registry.d.ts.map +0 -1
  171. package/dist/tools/registry.js +0 -82
  172. package/dist/tools/registry.js.map +0 -1
  173. package/dist/tools/tool.d.ts +0 -157
  174. package/dist/tools/tool.d.ts.map +0 -1
  175. package/dist/tools/tool.js +0 -2
  176. package/dist/tools/tool.js.map +0 -1
  177. package/dist/tools/types.d.ts +0 -119
  178. package/dist/tools/types.d.ts.map +0 -1
  179. package/dist/tools/types.js +0 -2
  180. package/dist/tools/zod-tool.d.ts +0 -70
  181. package/dist/tools/zod-tool.d.ts.map +0 -1
  182. package/dist/tools/zod-tool.js +0 -96
  183. package/dist/tools/zod-tool.js.map +0 -1
  184. package/dist/types/__tests__/json.test.d.ts +0 -2
  185. package/dist/types/__tests__/json.test.d.ts.map +0 -1
  186. package/dist/types/__tests__/json.test.js +0 -129
  187. package/dist/types/__tests__/json.test.js.map +0 -1
  188. package/dist/types/__tests__/validation.test.d.ts +0 -2
  189. package/dist/types/__tests__/validation.test.d.ts.map +0 -1
  190. package/dist/types/__tests__/validation.test.js +0 -30
  191. package/dist/types/__tests__/validation.test.js.map +0 -1
  192. package/dist/types/json.d.ts +0 -45
  193. package/dist/types/json.d.ts.map +0 -1
  194. package/dist/types/json.js +0 -17
  195. package/dist/types/json.js.map +0 -1
  196. package/dist/types/messages.d.ts +0 -160
  197. package/dist/types/messages.d.ts.map +0 -1
  198. package/dist/types/messages.js +0 -2
  199. package/dist/types/messages.js.map +0 -1
  200. package/dist/types/validation.d.ts +0 -10
  201. package/dist/types/validation.d.ts.map +0 -1
  202. package/dist/types/validation.js +0 -15
  203. package/dist/types/validation.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { AgentResult, type AgentStreamEvent, type JSONValue, McpClient, Message, type MessageData, type SystemPrompt, type SystemPromptData, type Tool } from '../index.js';
1
+ import { AgentResult, type AgentStreamEvent, type ContentBlock, type ContentBlockData, type JSONValue, McpClient, Message, type MessageData, type SystemPrompt, type SystemPromptData, type Tool } from '../index.js';
2
2
  import type { BaseModelConfig, Model } from '../models/model.js';
3
3
  import { ToolRegistry } from '../registry/tool-registry.js';
4
4
  import { AgentState } from './state.js';
@@ -14,8 +14,29 @@ export type ToolList = (Tool | McpClient | ToolList)[];
14
14
  * Configuration object for creating a new Agent.
15
15
  */
16
16
  export type AgentConfig = {
17
- /** The model instance that the agent will use to make decisions. */
18
- model?: Model<BaseModelConfig>;
17
+ /**
18
+ * The model instance that the agent will use to make decisions.
19
+ * Accepts either a Model instance or a string representing a Bedrock model ID.
20
+ * When a string is provided, it will be used to create a BedrockModel instance.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * // Using a string model ID (creates BedrockModel)
25
+ * const agent = new Agent({
26
+ * model: 'anthropic.claude-3-5-sonnet-20240620-v1:0'
27
+ * })
28
+ *
29
+ * // Using an explicit BedrockModel instance with configuration
30
+ * const agent = new Agent({
31
+ * model: new BedrockModel({
32
+ * modelId: 'anthropic.claude-3-5-sonnet-20240620-v1:0',
33
+ * temperature: 0.7,
34
+ * maxTokens: 2048
35
+ * })
36
+ * })
37
+ * ```
38
+ */
39
+ model?: Model<BaseModelConfig> | string;
19
40
  /** An initial set of messages to seed the agent's conversation history. */
20
41
  messages?: Message[] | MessageData[];
21
42
  /**
@@ -49,9 +70,12 @@ export type AgentConfig = {
49
70
  /**
50
71
  * Arguments for invoking an agent.
51
72
  *
52
- * A plain string represents user input to an agent.
73
+ * Supports multiple input formats:
74
+ * - `string` - User text input (wrapped in TextBlock, creates user Message)
75
+ * - `ContentBlock[]` | `ContentBlockData[]` - Array of content blocks (creates single user Message)
76
+ * - `Message[]` | `MessageData[]` - Array of messages (appends all to conversation)
53
77
  */
54
- export type InvokeArgs = string;
78
+ export type InvokeArgs = string | ContentBlock[] | ContentBlockData[] | Message[] | MessageData[];
55
79
  /**
56
80
  * Orchestrates the interaction between a model, a set of tools, and MCP clients.
57
81
  * The Agent is responsible for managing the lifecycle of tools and clients
@@ -80,9 +104,12 @@ export declare class Agent implements AgentData {
80
104
  * The model provider used by the agent for inference.
81
105
  */
82
106
  model: Model;
107
+ /**
108
+ * The system prompt to pass to the model provider.
109
+ */
110
+ systemPrompt?: SystemPrompt;
83
111
  private _toolRegistry;
84
112
  private _mcpClients;
85
- private _systemPrompt?;
86
113
  private _initialized;
87
114
  private _isInvoking;
88
115
  private _printer?;
@@ -161,6 +188,13 @@ export declare class Agent implements AgentData {
161
188
  * @returns Async generator that yields AgentStreamEvent objects and returns AgentResult
162
189
  */
163
190
  private _stream;
191
+ /**
192
+ * Normalizes agent invocation input into an array of messages to append.
193
+ *
194
+ * @param args - Optional arguments for invoking the model
195
+ * @returns Array of messages to append to the conversation
196
+ */
197
+ private _normalizeInput;
164
198
  /**
165
199
  * Invokes the model provider and streams all events.
166
200
  *
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"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"}
@@ -50,7 +50,7 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
50
50
  var e = new Error(message);
51
51
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
52
  });
53
- import { AgentResult, BedrockModel, McpClient, Message, TextBlock, ToolResultBlock, } from '../index.js';
53
+ import { AgentResult, BedrockModel, contentBlockFromData, McpClient, Message, TextBlock, ToolResultBlock, ToolUseBlock, } from '../index.js';
54
54
  import { systemPromptFromData } from '../types/messages.js';
55
55
  import { normalizeError, ConcurrentInvocationError } from '../errors.js';
56
56
  import { ToolRegistry } from '../registry/tool-registry.js';
@@ -87,9 +87,12 @@ export class Agent {
87
87
  * The model provider used by the agent for inference.
88
88
  */
89
89
  model;
90
+ /**
91
+ * The system prompt to pass to the model provider.
92
+ */
93
+ systemPrompt;
90
94
  _toolRegistry;
91
95
  _mcpClients;
92
- _systemPrompt;
93
96
  _initialized;
94
97
  _isInvoking = false;
95
98
  _printer;
@@ -106,12 +109,17 @@ export class Agent {
106
109
  this.hooks = new HookRegistryImplementation();
107
110
  this.hooks.addHook(this.conversationManager);
108
111
  this.hooks.addAllHooks(config?.hooks ?? []);
109
- this.model = config?.model ?? new BedrockModel();
112
+ if (typeof config?.model === 'string') {
113
+ this.model = new BedrockModel({ modelId: config.model });
114
+ }
115
+ else {
116
+ this.model = config?.model ?? new BedrockModel();
117
+ }
110
118
  const { tools, mcpClients } = flattenTools(config?.tools ?? []);
111
119
  this._toolRegistry = new ToolRegistry(tools);
112
120
  this._mcpClients = mcpClients;
113
121
  if (config?.systemPrompt !== undefined) {
114
- this._systemPrompt = systemPromptFromData(config.systemPrompt);
122
+ this.systemPrompt = systemPromptFromData(config.systemPrompt);
115
123
  }
116
124
  // Create printer if printer is enabled (default: true)
117
125
  const printer = config?.printer ?? true;
@@ -280,6 +288,61 @@ export class Agent {
280
288
  yield new AfterInvocationEvent({ agent: this });
281
289
  }
282
290
  }
291
+ /**
292
+ * Normalizes agent invocation input into an array of messages to append.
293
+ *
294
+ * @param args - Optional arguments for invoking the model
295
+ * @returns Array of messages to append to the conversation
296
+ */
297
+ _normalizeInput(args) {
298
+ if (args !== undefined) {
299
+ if (typeof args === 'string') {
300
+ // String input: wrap in TextBlock and create user Message
301
+ return [
302
+ new Message({
303
+ role: 'user',
304
+ content: [new TextBlock(args)],
305
+ }),
306
+ ];
307
+ }
308
+ else if (Array.isArray(args) && args.length > 0) {
309
+ const firstElement = args[0];
310
+ // Check if it's Message[] or MessageData[]
311
+ if ('role' in firstElement && typeof firstElement.role === 'string') {
312
+ // Check if it's a Message instance or MessageData
313
+ if (firstElement instanceof Message) {
314
+ // Message[] input: return all messages
315
+ return args;
316
+ }
317
+ else {
318
+ // MessageData[] input: convert to Message[]
319
+ return args.map((data) => Message.fromMessageData(data));
320
+ }
321
+ }
322
+ else {
323
+ // It's ContentBlock[] or ContentBlockData[]
324
+ // Check if it's ContentBlock instances or ContentBlockData
325
+ let contentBlocks;
326
+ if ('type' in firstElement && typeof firstElement.type === 'string') {
327
+ // ContentBlock[] input: use as-is
328
+ contentBlocks = args;
329
+ }
330
+ else {
331
+ // ContentBlockData[] input: convert using helper function
332
+ contentBlocks = args.map(contentBlockFromData);
333
+ }
334
+ return [
335
+ new Message({
336
+ role: 'user',
337
+ content: contentBlocks,
338
+ }),
339
+ ];
340
+ }
341
+ }
342
+ }
343
+ // undefined or empty array: no messages to append
344
+ return [];
345
+ }
283
346
  /**
284
347
  * Invokes the model provider and streams all events.
285
348
  *
@@ -287,17 +350,15 @@ export class Agent {
287
350
  * @returns Object containing the assistant message and stop reason
288
351
  */
289
352
  async *invokeModel(args) {
290
- if (args !== undefined && typeof args === 'string') {
291
- // Add user message from args
292
- yield await this._appendMessage(new Message({
293
- role: 'user',
294
- content: [new TextBlock(args)],
295
- }));
353
+ // Normalize input and append messages to conversation
354
+ const messagesToAppend = this._normalizeInput(args);
355
+ for (const message of messagesToAppend) {
356
+ yield await this._appendMessage(message);
296
357
  }
297
358
  const toolSpecs = this._toolRegistry.values().map((tool) => tool.toolSpec);
298
359
  const streamOptions = { toolSpecs };
299
- if (this._systemPrompt !== undefined) {
300
- streamOptions.systemPrompt = this._systemPrompt;
360
+ if (this.systemPrompt !== undefined) {
361
+ streamOptions.systemPrompt = this.systemPrompt;
301
362
  }
302
363
  yield new BeforeModelCallEvent({ agent: this });
303
364
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EACL,WAAW,EAEX,YAAY,EACZ,oBAAoB,EAIpB,SAAS,EACT,OAAO,EAIP,SAAS,EAGT,eAAe,EACf,YAAY,GACb,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAgB,MAAM,cAAc,CAAA;AAE7E,OAAO,EAAE,gCAAgC,EAAE,MAAM,gEAAgE,CAAA;AACjH,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AA4E3B;;;;GAIG;AACH,MAAM,OAAO,KAAK;IAChB;;OAEG;IACa,QAAQ,CAAW;IACnC;;;OAGG;IACa,KAAK,CAAY;IACjC;;OAEG;IACa,mBAAmB,CAAc;IACjD;;;OAGG;IACa,KAAK,CAA4B;IAEjD;;OAEG;IACI,KAAK,CAAO;IAEnB;;OAEG;IACI,YAAY,CAAe;IAE1B,aAAa,CAAc;IAC3B,WAAW,CAAa;IACxB,YAAY,CAAS;IACrB,WAAW,GAAY,KAAK,CAAA;IAC5B,QAAQ,CAAU;IAE1B;;;OAGG;IACH,YAAY,MAAoB;QAC9B,2BAA2B;QAC3B,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,YAAY,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACpH,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC1C,IAAI,CAAC,mBAAmB,GAAG,MAAM,EAAE,mBAAmB,IAAI,IAAI,gCAAgC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAA;QAElH,2DAA2D;QAC3D,IAAI,CAAC,KAAK,GAAG,IAAI,0BAA0B,EAAE,CAAA;QAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QAC5C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAA;QAE3C,IAAI,OAAO,MAAM,EAAE,KAAK,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;QAC1D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,IAAI,YAAY,EAAE,CAAA;QAClD,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAA;QAC/D,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAA;QAC5C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAA;QAE7B,IAAI,MAAM,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAC/D,CAAC;QAED,uDAAuD;QACvD,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,IAAI,CAAA;QACvC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;IAC3B,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAM;QACR,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;YACtC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAClC,CAAC,CAAC,CACH,CAAA;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACK,WAAW;QACjB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,yBAAyB,CACjC,8HAA8H,CAC/H,CAAA;QACH,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QAEvB,OAAO;YACL,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAS,EAAE;gBAC3B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;YAC1B,CAAC;SACF,CAAA;IACH,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAA;IACpC,CAAC;IAED;;OAEG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACI,KAAK,CAAC,MAAM,CAAC,IAAgB;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QAC7B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAA;IACrB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACI,KAAK,CAAC,CAAC,MAAM,CAAC,IAAgB;;;YACnC,MAAM,KAAK,kCAAG,IAAI,CAAC,WAAW,EAAE,QAAA,CAAA;YAEhC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;YAEvB,mEAAmE;YACnE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC1C,IAAI,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAA;YAEzC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;gBAE1B,mGAAmG;gBACnG,IAAI,KAAK,YAAY,SAAS,IAAI,CAAC,CAAC,KAAK,YAAY,iBAAiB,CAAC,EAAE,CAAC;oBACxE,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;gBACzC,CAAC;gBAED,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;gBAClC,MAAM,KAAK,CAAA;gBACX,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAA;YACvC,CAAC;YAED,mCAAmC;YACnC,MAAM,MAAM,CAAC,KAAK,CAAA;YAElB,OAAO,MAAM,CAAC,KAAK,CAAA;;;;;;;;;KACpB;IAED;;;;;;OAMG;IACK,KAAK,CAAC,CAAC,OAAO,CAAC,IAAgB;QACrC,IAAI,WAAW,GAA2B,IAAI,CAAA;QAE9C,oCAAoC;QACpC,MAAM,IAAI,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAEhD,IAAI,CAAC;YACH,yEAAyE;YACzE,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;gBACxD,WAAW,GAAG,SAAS,CAAA,CAAC,qCAAqC;gBAC7D,IAAI,WAAW,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACzC,0CAA0C;oBAC1C,iDAAiD;oBACjD,MAAM,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;oBACpD,OAAO,IAAI,WAAW,CAAC;wBACrB,UAAU,EAAE,WAAW,CAAC,UAAU;wBAClC,WAAW,EAAE,WAAW,CAAC,OAAO;qBACjC,CAAC,CAAA;gBACJ,CAAC;gBAED,6BAA6B;gBAC7B,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;gBAE3F,wEAAwE;gBACxE,gFAAgF;gBAChF,MAAM,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;gBACpD,MAAM,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAA;gBAElD,gBAAgB;YAClB,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,0BAA0B;YAC1B,MAAM,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,eAAe,CAAC,IAAiB;QACvC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,0DAA0D;gBAC1D,OAAO;oBACL,IAAI,OAAO,CAAC;wBACV,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;qBAC/B,CAAC;iBACH,CAAA;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;gBAE7B,2CAA2C;gBAC3C,IAAI,MAAM,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACpE,kDAAkD;oBAClD,IAAI,YAAY,YAAY,OAAO,EAAE,CAAC;wBACpC,uCAAuC;wBACvC,OAAO,IAAiB,CAAA;oBAC1B,CAAC;yBAAM,CAAC;wBACN,4CAA4C;wBAC5C,OAAQ,IAAsB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAA;oBAC7E,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,4CAA4C;oBAC5C,2DAA2D;oBAC3D,IAAI,aAA6B,CAAA;oBACjC,IAAI,MAAM,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACpE,kCAAkC;wBAClC,aAAa,GAAG,IAAsB,CAAA;oBACxC,CAAC;yBAAM,CAAC;wBACN,0DAA0D;wBAC1D,aAAa,GAAI,IAA2B,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;oBACxE,CAAC;oBAED,OAAO;wBACL,IAAI,OAAO,CAAC;4BACV,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE,aAAa;yBACvB,CAAC;qBACH,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,kDAAkD;QAClD,OAAO,EAAE,CAAA;IACX,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,CAAC,WAAW,CACxB,IAAiB;QAEjB,sDAAsD;QACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QACnD,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,MAAM,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC1C,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC1E,MAAM,aAAa,GAAkB,EAAE,SAAS,EAAE,CAAA;QAClD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACpC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;QAChD,CAAC;QAED,MAAM,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAE/C,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;YAE1F,MAAM,IAAI,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;YAEjF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YAExC,qBAAqB;YACrB,MAAM,UAAU,GAAG,IAAI,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;YAE9E,+CAA+C;YAC/C,MAAM,UAAU,CAAA;YAEhB,0EAA0E;YAC1E,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;gBAC9B,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YACtC,CAAC;YAED,iBAAiB;YACjB,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,CAAC,gBAAgB,CAC7B,QAAmB,EACnB,aAA4B;QAE5B,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QAC5E,IAAI,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAA;QAEzC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;YAE1B,qCAAqC;YACrC,MAAM,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YAEtD,+BAA+B;YAC/B,MAAM,KAAK,CAAA;YACX,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAA;QACvC,CAAC;QAED,8DAA8D;QAC9D,OAAO,MAAM,CAAC,KAAK,CAAA;IACrB,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,CAAC,YAAY,CACzB,gBAAyB,EACzB,YAA0B;QAE1B,MAAM,IAAI,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAEtE,iDAAiD;QACjD,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CACnD,CAAC,KAAK,EAAyB,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAChE,CAAA;QAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,6DAA6D;YAC7D,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;QACpF,CAAC;QAED,MAAM,gBAAgB,GAAsB,EAAE,CAAA;QAE9C,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;YAC3E,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YAEtC,8CAA8C;YAC9C,MAAM,eAAe,CAAA;QACvB,CAAC;QAED,wCAAwC;QACxC,MAAM,iBAAiB,GAAY,IAAI,OAAO,CAAC;YAC7C,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAA;QAEF,MAAM,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAA;QAEtE,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,CAAC,WAAW,CACxB,YAA0B,EAC1B,YAA0B;QAE1B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,CAAA;QAEnE,wCAAwC;QACxC,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,KAAK,EAAE,YAAY,CAAC,KAAK;SAC1B,CAAA;QAED,MAAM,IAAI,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAE7D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,2DAA2D;YAC3D,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;gBACtC,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,CAAC,IAAI,SAAS,CAAC,SAAS,YAAY,CAAC,IAAI,yBAAyB,CAAC,CAAC;aAC9E,CAAC,CAAA;YAEF,MAAM,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;YAEjF,OAAO,WAAW,CAAA;QACpB,CAAC;QAED,kCAAkC;QAClC,MAAM,WAAW,GAAgB;YAC/B,OAAO,EAAE;gBACP,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,KAAK,EAAE,YAAY,CAAC,KAAK;aAC1B;YACD,KAAK,EAAE,IAAI;SACZ,CAAA;QAED,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAE9C,4EAA4E;YAC5E,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,aAAa,CAAA;YAEvC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,wEAAwE;gBACxE,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;oBACtC,SAAS,EAAE,YAAY,CAAC,SAAS;oBACjC,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,CAAC,IAAI,SAAS,CAAC,SAAS,YAAY,CAAC,IAAI,2BAA2B,CAAC,CAAC;iBAChF,CAAC,CAAA;gBAEF,MAAM,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;gBAEjF,OAAO,WAAW,CAAA;YACpB,CAAC;YAED,MAAM,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;YAEhF,gDAAgD;YAChD,OAAO,UAAU,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mCAAmC;YACnC,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YACvC,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;gBACtC,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC3C,KAAK,EAAE,SAAS;aACjB,CAAC,CAAA;YAEF,MAAM,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;YAEnG,OAAO,WAAW,CAAA;QACpB,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,cAAc,CAAC,OAAgB;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC3B,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAC7D,gDAAgD;QAChD,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QACvC,qFAAqF;QACrF,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,QAAkB;IACtC,MAAM,KAAK,GAAW,EAAE,CAAA;IACxB,MAAM,UAAU,GAAgB,EAAE,CAAA;IAElC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/E,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAA;YAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAA;QACtC,CAAC;aAAM,IAAI,IAAI,YAAY,SAAS,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;AAC9B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { beforeEach, describe, expect, it } from 'vitest';
1
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
2
2
  import { HookRegistryImplementation } from '../registry.js';
3
3
  import { AfterInvocationEvent, BeforeInvocationEvent } from '../events.js';
4
4
  import { Agent } from '../../agent/agent.js';
@@ -11,55 +11,36 @@ describe('HookRegistryImplementation', () => {
11
11
  });
12
12
  describe('addCallback', () => {
13
13
  it('registers callback for event type', async () => {
14
- let called = false;
15
- const callback = () => {
16
- called = true;
17
- };
14
+ const callback = vi.fn();
18
15
  registry.addCallback(BeforeInvocationEvent, callback);
19
16
  await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
20
- expect(called).toBe(true);
17
+ expect(callback).toHaveBeenCalledOnce();
21
18
  });
22
19
  it('registers multiple callbacks for same event type', async () => {
23
- const callOrder = [];
24
- const callback1 = () => {
25
- callOrder.push(1);
26
- };
27
- const callback2 = () => {
28
- callOrder.push(2);
29
- };
20
+ const callback1 = vi.fn();
21
+ const callback2 = vi.fn();
30
22
  registry.addCallback(BeforeInvocationEvent, callback1);
31
23
  registry.addCallback(BeforeInvocationEvent, callback2);
32
24
  await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
33
- expect(callOrder).toEqual([1, 2]);
25
+ expect(callback1).toHaveBeenCalledOnce();
26
+ expect(callback2).toHaveBeenCalledOnce();
34
27
  });
35
28
  it('registers callbacks for different event types separately', async () => {
36
- let beforeCalled = false;
37
- let afterCalled = false;
38
- const beforeCallback = () => {
39
- beforeCalled = true;
40
- };
41
- const afterCallback = () => {
42
- afterCalled = true;
43
- };
29
+ const beforeCallback = vi.fn();
30
+ const afterCallback = vi.fn();
44
31
  registry.addCallback(BeforeInvocationEvent, beforeCallback);
45
32
  registry.addCallback(AfterInvocationEvent, afterCallback);
46
33
  await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
47
- expect(beforeCalled).toBe(true);
48
- expect(afterCalled).toBe(false);
34
+ expect(beforeCallback).toHaveBeenCalledOnce();
35
+ expect(afterCallback).not.toHaveBeenCalled();
49
36
  await registry.invokeCallbacks(new AfterInvocationEvent({ agent: mockAgent }));
50
- expect(afterCalled).toBe(true);
37
+ expect(afterCallback).toHaveBeenCalledOnce();
51
38
  });
52
39
  });
53
40
  describe('addHook', () => {
54
41
  it('registers all callbacks from provider', async () => {
55
- let beforeCalled = false;
56
- let afterCalled = false;
57
- const beforeCallback = () => {
58
- beforeCalled = true;
59
- };
60
- const afterCallback = () => {
61
- afterCalled = true;
62
- };
42
+ const beforeCallback = vi.fn();
43
+ const afterCallback = vi.fn();
63
44
  const provider = {
64
45
  registerCallbacks: (reg) => {
65
46
  reg.addCallback(BeforeInvocationEvent, beforeCallback);
@@ -68,20 +49,35 @@ describe('HookRegistryImplementation', () => {
68
49
  };
69
50
  registry.addHook(provider);
70
51
  await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
71
- expect(beforeCalled).toBe(true);
52
+ expect(beforeCallback).toHaveBeenCalledOnce();
72
53
  await registry.invokeCallbacks(new AfterInvocationEvent({ agent: mockAgent }));
73
- expect(afterCalled).toBe(true);
54
+ expect(afterCallback).toHaveBeenCalledOnce();
55
+ });
56
+ it('clears current provider even if registerCallbacks throws', () => {
57
+ const provider = {
58
+ registerCallbacks: () => {
59
+ throw new Error('Provider failed');
60
+ },
61
+ };
62
+ expect(() => registry.addHook(provider)).toThrow('Provider failed');
63
+ // Verify _currentProvider is cleared by registering another provider successfully
64
+ const workingProvider = {
65
+ registerCallbacks: (reg) => {
66
+ reg.addCallback(BeforeInvocationEvent, vi.fn());
67
+ },
68
+ };
69
+ expect(() => registry.addHook(workingProvider)).not.toThrow();
74
70
  });
75
71
  });
76
72
  describe('invokeCallbacks', () => {
77
73
  it('calls registered callbacks in order', async () => {
78
74
  const callOrder = [];
79
- const callback1 = () => {
75
+ const callback1 = vi.fn(() => {
80
76
  callOrder.push(1);
81
- };
82
- const callback2 = () => {
77
+ });
78
+ const callback2 = vi.fn(() => {
83
79
  callOrder.push(2);
84
- };
80
+ });
85
81
  registry.addCallback(BeforeInvocationEvent, callback1);
86
82
  registry.addCallback(BeforeInvocationEvent, callback2);
87
83
  await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
@@ -89,12 +85,12 @@ describe('HookRegistryImplementation', () => {
89
85
  });
90
86
  it('reverses callback order for After events', async () => {
91
87
  const callOrder = [];
92
- const callback1 = () => {
88
+ const callback1 = vi.fn(() => {
93
89
  callOrder.push(1);
94
- };
95
- const callback2 = () => {
90
+ });
91
+ const callback2 = vi.fn(() => {
96
92
  callOrder.push(2);
97
- };
93
+ });
98
94
  registry.addCallback(AfterInvocationEvent, callback1);
99
95
  registry.addCallback(AfterInvocationEvent, callback2);
100
96
  await registry.invokeCallbacks(new AfterInvocationEvent({ agent: mockAgent }));
@@ -102,43 +98,40 @@ describe('HookRegistryImplementation', () => {
102
98
  });
103
99
  it('awaits async callbacks', async () => {
104
100
  let completed = false;
105
- const callback = async () => {
101
+ const callback = vi.fn(async () => {
106
102
  await new Promise((resolve) => globalThis.setTimeout(resolve, 10));
107
103
  completed = true;
108
- };
104
+ });
109
105
  registry.addCallback(BeforeInvocationEvent, callback);
110
106
  await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
111
107
  expect(completed).toBe(true);
112
108
  });
113
109
  it('propagates callback errors', async () => {
114
- const callback = () => {
110
+ const callback = vi.fn(() => {
115
111
  throw new Error('Hook failed');
116
- };
112
+ });
117
113
  registry.addCallback(BeforeInvocationEvent, callback);
118
114
  await expect(registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }))).rejects.toThrow('Hook failed');
119
115
  });
120
116
  it('stops execution on first error', async () => {
121
- let secondCallbackCalled = false;
122
- const callback1 = () => {
117
+ const callback1 = vi.fn(() => {
123
118
  throw new Error('First callback failed');
124
- };
125
- const callback2 = () => {
126
- secondCallbackCalled = true;
127
- };
119
+ });
120
+ const callback2 = vi.fn();
128
121
  registry.addCallback(BeforeInvocationEvent, callback1);
129
122
  registry.addCallback(BeforeInvocationEvent, callback2);
130
123
  await expect(registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }))).rejects.toThrow('First callback failed');
131
- expect(secondCallbackCalled).toBe(false);
124
+ expect(callback2).not.toHaveBeenCalled();
132
125
  });
133
126
  it('handles mixed sync and async callbacks', async () => {
134
127
  const callOrder = [];
135
- const syncCallback = () => {
128
+ const syncCallback = vi.fn(() => {
136
129
  callOrder.push('sync');
137
- };
138
- const asyncCallback = async () => {
130
+ });
131
+ const asyncCallback = vi.fn(async () => {
139
132
  await new Promise((resolve) => globalThis.globalThis.setTimeout(resolve, 10));
140
133
  callOrder.push('async');
141
- };
134
+ });
142
135
  registry.addCallback(BeforeInvocationEvent, syncCallback);
143
136
  registry.addCallback(BeforeInvocationEvent, asyncCallback);
144
137
  await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
@@ -150,5 +143,163 @@ describe('HookRegistryImplementation', () => {
150
143
  expect(result).toBe(event);
151
144
  });
152
145
  });
146
+ describe('addCallback cleanup function', () => {
147
+ it('returns cleanup function that removes the callback', async () => {
148
+ const callback = vi.fn();
149
+ const cleanup = registry.addCallback(BeforeInvocationEvent, callback);
150
+ cleanup();
151
+ await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
152
+ expect(callback).not.toHaveBeenCalled();
153
+ });
154
+ it('cleanup function is idempotent', async () => {
155
+ const callback = vi.fn();
156
+ const cleanup = registry.addCallback(BeforeInvocationEvent, callback);
157
+ cleanup();
158
+ cleanup();
159
+ cleanup();
160
+ await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
161
+ expect(callback).not.toHaveBeenCalled();
162
+ });
163
+ it('cleanup function does not affect other callbacks', async () => {
164
+ const callback1 = vi.fn();
165
+ const callback2 = vi.fn();
166
+ const cleanup1 = registry.addCallback(BeforeInvocationEvent, callback1);
167
+ registry.addCallback(BeforeInvocationEvent, callback2);
168
+ cleanup1();
169
+ await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
170
+ expect(callback1).not.toHaveBeenCalled();
171
+ expect(callback2).toHaveBeenCalledOnce();
172
+ });
173
+ it('cleanup function works with callbacks registered via provider', async () => {
174
+ const callback = vi.fn();
175
+ const provider = {
176
+ registerCallbacks: (reg) => {
177
+ reg.addCallback(BeforeInvocationEvent, callback);
178
+ },
179
+ };
180
+ registry.addHook(provider);
181
+ registry.removeHook(provider);
182
+ await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
183
+ expect(callback).not.toHaveBeenCalled();
184
+ });
185
+ });
186
+ describe('removeHook', () => {
187
+ it('removes all callbacks registered by provider', async () => {
188
+ const beforeCallback = vi.fn();
189
+ const afterCallback = vi.fn();
190
+ const provider = {
191
+ registerCallbacks: (reg) => {
192
+ reg.addCallback(BeforeInvocationEvent, beforeCallback);
193
+ reg.addCallback(AfterInvocationEvent, afterCallback);
194
+ },
195
+ };
196
+ registry.addHook(provider);
197
+ registry.removeHook(provider);
198
+ await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
199
+ await registry.invokeCallbacks(new AfterInvocationEvent({ agent: mockAgent }));
200
+ expect(beforeCallback).not.toHaveBeenCalled();
201
+ expect(afterCallback).not.toHaveBeenCalled();
202
+ });
203
+ it('removes all instances when provider registered multiple times', async () => {
204
+ const callback = vi.fn();
205
+ const provider = {
206
+ registerCallbacks: (reg) => {
207
+ reg.addCallback(BeforeInvocationEvent, callback);
208
+ },
209
+ };
210
+ registry.addHook(provider);
211
+ registry.addHook(provider);
212
+ registry.removeHook(provider);
213
+ await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
214
+ expect(callback).not.toHaveBeenCalled();
215
+ });
216
+ it('is no-op when called with non-existent provider', async () => {
217
+ const callback = vi.fn();
218
+ const provider1 = {
219
+ registerCallbacks: (reg) => {
220
+ reg.addCallback(BeforeInvocationEvent, callback);
221
+ },
222
+ };
223
+ const provider2 = {
224
+ registerCallbacks: () => { },
225
+ };
226
+ registry.addHook(provider1);
227
+ registry.removeHook(provider2);
228
+ await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
229
+ expect(callback).toHaveBeenCalledOnce();
230
+ });
231
+ it('does not affect callbacks from other providers', async () => {
232
+ const callback1 = vi.fn();
233
+ const callback2 = vi.fn();
234
+ const provider1 = {
235
+ registerCallbacks: (reg) => {
236
+ reg.addCallback(BeforeInvocationEvent, callback1);
237
+ },
238
+ };
239
+ const provider2 = {
240
+ registerCallbacks: (reg) => {
241
+ reg.addCallback(BeforeInvocationEvent, callback2);
242
+ },
243
+ };
244
+ registry.addHook(provider1);
245
+ registry.addHook(provider2);
246
+ registry.removeHook(provider1);
247
+ await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
248
+ expect(callback1).not.toHaveBeenCalled();
249
+ expect(callback2).toHaveBeenCalledOnce();
250
+ });
251
+ it('does not affect callbacks registered without provider', async () => {
252
+ const directCallback = vi.fn();
253
+ const providerCallback = vi.fn();
254
+ const provider = {
255
+ registerCallbacks: (reg) => {
256
+ reg.addCallback(BeforeInvocationEvent, providerCallback);
257
+ },
258
+ };
259
+ registry.addCallback(BeforeInvocationEvent, directCallback);
260
+ registry.addHook(provider);
261
+ registry.removeHook(provider);
262
+ await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
263
+ expect(directCallback).toHaveBeenCalledOnce();
264
+ expect(providerCallback).not.toHaveBeenCalled();
265
+ });
266
+ it('allows provider to be added and removed multiple times', async () => {
267
+ const callback = vi.fn();
268
+ const provider = {
269
+ registerCallbacks: (reg) => {
270
+ reg.addCallback(BeforeInvocationEvent, callback);
271
+ },
272
+ };
273
+ registry.addHook(provider);
274
+ await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
275
+ expect(callback).toHaveBeenCalledTimes(1);
276
+ registry.removeHook(provider);
277
+ await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
278
+ expect(callback).toHaveBeenCalledTimes(1);
279
+ registry.addHook(provider);
280
+ await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
281
+ expect(callback).toHaveBeenCalledTimes(2);
282
+ });
283
+ });
284
+ describe('cleanup function and removeHook work independently', () => {
285
+ it('cleanup function works after removeHook called', async () => {
286
+ const callback1 = vi.fn();
287
+ const callback2 = vi.fn();
288
+ const provider = {
289
+ registerCallbacks: (reg) => {
290
+ reg.addCallback(BeforeInvocationEvent, callback1);
291
+ reg.addCallback(BeforeInvocationEvent, callback2);
292
+ },
293
+ };
294
+ registry.addHook(provider);
295
+ registry.removeHook(provider);
296
+ const cleanup = registry.addCallback(BeforeInvocationEvent, callback1);
297
+ registry.addCallback(BeforeInvocationEvent, callback2);
298
+ cleanup();
299
+ await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
300
+ expect(callback1).not.toHaveBeenCalled();
301
+ expect(callback2).toHaveBeenCalledOnce();
302
+ });
303
+ });
153
304
  });
154
305
  //# sourceMappingURL=registry.test.js.map