@strands-agents/sdk 0.3.0 → 0.4.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 (215) hide show
  1. package/README.md +43 -0
  2. package/dist/src/__fixtures__/mock-hook-provider.d.ts +3 -7
  3. package/dist/src/__fixtures__/mock-hook-provider.d.ts.map +1 -1
  4. package/dist/src/__fixtures__/mock-hook-provider.js +3 -9
  5. package/dist/src/__fixtures__/mock-hook-provider.js.map +1 -1
  6. package/dist/src/__fixtures__/mock-message-model.d.ts +8 -2
  7. package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -1
  8. package/dist/src/__fixtures__/mock-message-model.js +1 -0
  9. package/dist/src/__fixtures__/mock-message-model.js.map +1 -1
  10. package/dist/src/__fixtures__/mock-storage-provider.d.ts +37 -0
  11. package/dist/src/__fixtures__/mock-storage-provider.d.ts.map +1 -0
  12. package/dist/src/__fixtures__/mock-storage-provider.js +105 -0
  13. package/dist/src/__fixtures__/mock-storage-provider.js.map +1 -0
  14. package/dist/src/__fixtures__/slim-types.d.ts +50 -0
  15. package/dist/src/__fixtures__/slim-types.d.ts.map +1 -0
  16. package/dist/src/__fixtures__/slim-types.js +6 -0
  17. package/dist/src/__fixtures__/slim-types.js.map +1 -0
  18. package/dist/src/__fixtures__/tool-helpers.d.ts +8 -3
  19. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  20. package/dist/src/__fixtures__/tool-helpers.js +1 -1
  21. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  22. package/dist/src/agent/__tests__/agent.hook.test.js +18 -18
  23. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
  24. package/dist/src/agent/__tests__/agent.test.js +124 -8
  25. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  26. package/dist/src/agent/__tests__/printer.test.js +5 -9
  27. package/dist/src/agent/__tests__/printer.test.js.map +1 -1
  28. package/dist/src/agent/__tests__/snapshot.test.d.ts +2 -0
  29. package/dist/src/agent/__tests__/snapshot.test.d.ts.map +1 -0
  30. package/dist/src/agent/__tests__/snapshot.test.js +249 -0
  31. package/dist/src/agent/__tests__/snapshot.test.js.map +1 -0
  32. package/dist/src/agent/__tests__/state.test.js +19 -0
  33. package/dist/src/agent/__tests__/state.test.js.map +1 -1
  34. package/dist/src/agent/agent.d.ts +19 -4
  35. package/dist/src/agent/agent.d.ts.map +1 -1
  36. package/dist/src/agent/agent.js +104 -34
  37. package/dist/src/agent/agent.js.map +1 -1
  38. package/dist/src/agent/printer.d.ts +4 -0
  39. package/dist/src/agent/printer.d.ts.map +1 -1
  40. package/dist/src/agent/printer.js +18 -6
  41. package/dist/src/agent/printer.js.map +1 -1
  42. package/dist/src/agent/snapshot.d.ts +132 -0
  43. package/dist/src/agent/snapshot.d.ts.map +1 -0
  44. package/dist/src/agent/snapshot.js +151 -0
  45. package/dist/src/agent/snapshot.js.map +1 -0
  46. package/dist/src/agent/state.d.ts +14 -1
  47. package/dist/src/agent/state.d.ts.map +1 -1
  48. package/dist/src/agent/state.js +21 -0
  49. package/dist/src/agent/state.js.map +1 -1
  50. package/dist/src/errors.d.ts +15 -0
  51. package/dist/src/errors.d.ts.map +1 -1
  52. package/dist/src/errors.js +18 -0
  53. package/dist/src/errors.js.map +1 -1
  54. package/dist/src/hooks/__tests__/events.test.js +102 -21
  55. package/dist/src/hooks/__tests__/events.test.js.map +1 -1
  56. package/dist/src/hooks/events.d.ts +156 -22
  57. package/dist/src/hooks/events.d.ts.map +1 -1
  58. package/dist/src/hooks/events.js +158 -18
  59. package/dist/src/hooks/events.js.map +1 -1
  60. package/dist/src/hooks/index.d.ts +12 -4
  61. package/dist/src/hooks/index.d.ts.map +1 -1
  62. package/dist/src/hooks/index.js +11 -3
  63. package/dist/src/hooks/index.js.map +1 -1
  64. package/dist/src/hooks/registry.d.ts +5 -5
  65. package/dist/src/hooks/registry.d.ts.map +1 -1
  66. package/dist/src/hooks/registry.js.map +1 -1
  67. package/dist/src/hooks/types.d.ts +5 -5
  68. package/dist/src/hooks/types.d.ts.map +1 -1
  69. package/dist/src/index.d.ts +4 -2
  70. package/dist/src/index.d.ts.map +1 -1
  71. package/dist/src/index.js +4 -3
  72. package/dist/src/index.js.map +1 -1
  73. package/dist/src/models/__tests__/anthropic.test.js +31 -42
  74. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  75. package/dist/src/models/__tests__/bedrock.test.js +70 -107
  76. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  77. package/dist/src/models/__tests__/gemini.test.js +18 -18
  78. package/dist/src/models/__tests__/gemini.test.js.map +1 -1
  79. package/dist/src/models/__tests__/model.test.js +14 -13
  80. package/dist/src/models/__tests__/model.test.js.map +1 -1
  81. package/dist/src/models/__tests__/openai.test.js +73 -83
  82. package/dist/src/models/__tests__/openai.test.js.map +1 -1
  83. package/dist/src/models/streaming.d.ts +8 -0
  84. package/dist/src/models/streaming.d.ts.map +1 -1
  85. package/dist/src/models/streaming.js +17 -0
  86. package/dist/src/models/streaming.js.map +1 -1
  87. package/dist/src/multiagent/__tests__/nodes.test.d.ts +2 -0
  88. package/dist/src/multiagent/__tests__/nodes.test.d.ts.map +1 -0
  89. package/dist/src/multiagent/__tests__/nodes.test.js +98 -0
  90. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -0
  91. package/dist/src/multiagent/events.d.ts +24 -0
  92. package/dist/src/multiagent/events.d.ts.map +1 -0
  93. package/dist/src/multiagent/events.js +19 -0
  94. package/dist/src/multiagent/events.js.map +1 -0
  95. package/dist/src/multiagent/index.d.ts +11 -0
  96. package/dist/src/multiagent/index.d.ts.map +1 -0
  97. package/dist/src/multiagent/index.js +7 -0
  98. package/dist/src/multiagent/index.js.map +1 -0
  99. package/dist/src/multiagent/nodes.d.ts +75 -0
  100. package/dist/src/multiagent/nodes.d.ts.map +1 -0
  101. package/dist/src/multiagent/nodes.js +101 -0
  102. package/dist/src/multiagent/nodes.js.map +1 -0
  103. package/dist/src/multiagent/state.d.ts +55 -0
  104. package/dist/src/multiagent/state.d.ts.map +1 -0
  105. package/dist/src/multiagent/state.js +43 -0
  106. package/dist/src/multiagent/state.js.map +1 -0
  107. package/dist/src/multiagent/types.d.ts +5 -0
  108. package/dist/src/multiagent/types.d.ts.map +1 -0
  109. package/dist/src/multiagent/types.js +2 -0
  110. package/dist/src/multiagent/types.js.map +1 -0
  111. package/dist/src/registry/tool-registry.d.ts +2 -1
  112. package/dist/src/registry/tool-registry.d.ts.map +1 -1
  113. package/dist/src/registry/tool-registry.js +4 -2
  114. package/dist/src/registry/tool-registry.js.map +1 -1
  115. package/dist/src/session/__tests__/file-storage.test.node.d.ts +2 -0
  116. package/dist/src/session/__tests__/file-storage.test.node.d.ts.map +1 -0
  117. package/dist/src/session/__tests__/file-storage.test.node.js +218 -0
  118. package/dist/src/session/__tests__/file-storage.test.node.js.map +1 -0
  119. package/dist/src/session/__tests__/s3-storage.test.node.d.ts +2 -0
  120. package/dist/src/session/__tests__/s3-storage.test.node.d.ts.map +1 -0
  121. package/dist/src/session/__tests__/s3-storage.test.node.js +375 -0
  122. package/dist/src/session/__tests__/s3-storage.test.node.js.map +1 -0
  123. package/dist/src/session/__tests__/validation.test.d.ts +2 -0
  124. package/dist/src/session/__tests__/validation.test.d.ts.map +1 -0
  125. package/dist/src/session/__tests__/validation.test.js +20 -0
  126. package/dist/src/session/__tests__/validation.test.js.map +1 -0
  127. package/dist/src/session/file-storage.d.ts +79 -0
  128. package/dist/src/session/file-storage.d.ts.map +1 -0
  129. package/dist/src/session/file-storage.js +144 -0
  130. package/dist/src/session/file-storage.js.map +1 -0
  131. package/dist/src/session/index.d.ts +19 -0
  132. package/dist/src/session/index.d.ts.map +1 -0
  133. package/dist/src/session/index.js +18 -0
  134. package/dist/src/session/index.js.map +1 -0
  135. package/dist/src/session/s3-storage.d.ts +93 -0
  136. package/dist/src/session/s3-storage.d.ts.map +1 -0
  137. package/dist/src/session/s3-storage.js +150 -0
  138. package/dist/src/session/s3-storage.js.map +1 -0
  139. package/dist/src/session/storage.d.ts +91 -0
  140. package/dist/src/session/storage.d.ts.map +1 -0
  141. package/dist/src/session/storage.js +2 -0
  142. package/dist/src/session/storage.js.map +1 -0
  143. package/dist/src/session/types.d.ts +49 -0
  144. package/dist/src/session/types.d.ts.map +1 -0
  145. package/dist/src/session/types.js +2 -0
  146. package/dist/src/session/types.js.map +1 -0
  147. package/dist/src/session/validation.d.ts +10 -0
  148. package/dist/src/session/validation.d.ts.map +1 -0
  149. package/dist/src/session/validation.js +16 -0
  150. package/dist/src/session/validation.js.map +1 -0
  151. package/dist/src/structured-output/__tests__/context.test.d.ts +2 -0
  152. package/dist/src/structured-output/__tests__/context.test.d.ts.map +1 -0
  153. package/dist/src/structured-output/__tests__/context.test.js +201 -0
  154. package/dist/src/structured-output/__tests__/context.test.js.map +1 -0
  155. package/dist/src/structured-output/__tests__/exceptions.test.d.ts +2 -0
  156. package/dist/src/structured-output/__tests__/exceptions.test.d.ts.map +1 -0
  157. package/dist/src/structured-output/__tests__/exceptions.test.js +103 -0
  158. package/dist/src/structured-output/__tests__/exceptions.test.js.map +1 -0
  159. package/dist/src/structured-output/__tests__/tool.test.d.ts +2 -0
  160. package/dist/src/structured-output/__tests__/tool.test.d.ts.map +1 -0
  161. package/dist/src/structured-output/__tests__/tool.test.js +256 -0
  162. package/dist/src/structured-output/__tests__/tool.test.js.map +1 -0
  163. package/dist/src/structured-output/__tests__/utils.test.d.ts +2 -0
  164. package/dist/src/structured-output/__tests__/utils.test.d.ts.map +1 -0
  165. package/dist/src/structured-output/__tests__/utils.test.js +183 -0
  166. package/dist/src/structured-output/__tests__/utils.test.js.map +1 -0
  167. package/dist/src/structured-output/context.d.ts +91 -0
  168. package/dist/src/structured-output/context.d.ts.map +1 -0
  169. package/dist/src/structured-output/context.js +112 -0
  170. package/dist/src/structured-output/context.js.map +1 -0
  171. package/dist/src/structured-output/exceptions.d.ts +18 -0
  172. package/dist/src/structured-output/exceptions.d.ts.map +1 -0
  173. package/dist/src/structured-output/exceptions.js +28 -0
  174. package/dist/src/structured-output/exceptions.js.map +1 -0
  175. package/dist/src/structured-output/tool.d.ts +33 -0
  176. package/dist/src/structured-output/tool.d.ts.map +1 -0
  177. package/dist/src/structured-output/tool.js +73 -0
  178. package/dist/src/structured-output/tool.js.map +1 -0
  179. package/dist/src/structured-output/utils.d.ts +23 -0
  180. package/dist/src/structured-output/utils.d.ts.map +1 -0
  181. package/dist/src/structured-output/utils.js +104 -0
  182. package/dist/src/structured-output/utils.js.map +1 -0
  183. package/dist/src/tools/zod-tool.d.ts.map +1 -1
  184. package/dist/src/tools/zod-tool.js +2 -5
  185. package/dist/src/tools/zod-tool.js.map +1 -1
  186. package/dist/src/tsconfig.tsbuildinfo +1 -1
  187. package/dist/src/types/__tests__/media.test.js +216 -1
  188. package/dist/src/types/__tests__/media.test.js.map +1 -1
  189. package/dist/src/types/__tests__/messages.test.js +193 -4
  190. package/dist/src/types/__tests__/messages.test.js.map +1 -1
  191. package/dist/src/types/agent.d.ts +13 -7
  192. package/dist/src/types/agent.d.ts.map +1 -1
  193. package/dist/src/types/agent.js +8 -1
  194. package/dist/src/types/agent.js.map +1 -1
  195. package/dist/src/types/json.d.ts +61 -0
  196. package/dist/src/types/json.d.ts.map +1 -1
  197. package/dist/src/types/json.js +24 -0
  198. package/dist/src/types/json.js.map +1 -1
  199. package/dist/src/types/media.d.ts +84 -4
  200. package/dist/src/types/media.d.ts.map +1 -1
  201. package/dist/src/types/media.js +194 -0
  202. package/dist/src/types/media.js.map +1 -1
  203. package/dist/src/types/messages.d.ts +148 -9
  204. package/dist/src/types/messages.d.ts.map +1 -1
  205. package/dist/src/types/messages.js +234 -7
  206. package/dist/src/types/messages.js.map +1 -1
  207. package/dist/src/types/serializable.d.ts +31 -0
  208. package/dist/src/types/serializable.d.ts.map +1 -0
  209. package/dist/src/types/serializable.js +19 -0
  210. package/dist/src/types/serializable.js.map +1 -0
  211. package/dist/src/utils/zod.d.ts +11 -0
  212. package/dist/src/utils/zod.d.ts.map +1 -0
  213. package/dist/src/utils/zod.js +14 -0
  214. package/dist/src/utils/zod.js.map +1 -0
  215. package/package.json +7 -2
@@ -1,13 +1,70 @@
1
- import type { AgentData } from '../types/agent.js';
1
+ import type { AgentData, AgentResult } from '../types/agent.js';
2
2
  import type { ContentBlock, Message, StopReason, ToolResultBlock } from '../types/messages.js';
3
- import type { Tool } from '../tools/tool.js';
3
+ import { type Tool, ToolStreamEvent } from '../tools/tool.js';
4
4
  import type { JSONValue } from '../types/json.js';
5
5
  import type { ModelStreamEvent } from '../models/streaming.js';
6
6
  /**
7
- * Base class for all hook events.
8
- * Hook events are emitted at specific points in the agent lifecycle.
7
+ * Agent hook events.
8
+ *
9
+ * All events extend {@link StreamEvent} and carry `readonly agent: AgentData` with a
10
+ * `readonly type` discriminator (camelCase of the class name) for switch-based narrowing.
11
+ * Constructor takes a single data-object parameter. All properties are readonly except
12
+ * explicit mutable flags (`retry`).
13
+ *
14
+ * All current events extend {@link HookableEvent} (which itself extends {@link StreamEvent}),
15
+ * making them both streamable and subscribable via hook callbacks. {@link StreamEvent} exists
16
+ * as the base class for potential future events that should be stream-only without hookability.
17
+ *
18
+ * ## Event categories
19
+ *
20
+ * **Lifecycle events** — Before/After pairs that bracket agent operations.
21
+ * - Naming: `Before<Noun>Event` / `After<Noun>Event`
22
+ * - `After*` events override `_shouldReverseCallbacks()` → `true` for cleanup ordering.
23
+ * - Examples: {@link BeforeInvocationEvent}/{@link AfterInvocationEvent},
24
+ * {@link BeforeModelCallEvent}/{@link AfterModelCallEvent},
25
+ * {@link BeforeToolsEvent}/{@link AfterToolsEvent},
26
+ * {@link BeforeToolCallEvent}/{@link AfterToolCallEvent}
27
+ *
28
+ * **State-change events** — Signal that agent state was mutated.
29
+ * - Naming: `<Noun><PastTense>Event`
30
+ * - Examples: {@link InitializedEvent}, {@link MessageAddedEvent}
31
+ *
32
+ * **Data events** — Wrap data objects produced during agent execution.
33
+ * Two sub-categories:
34
+ *
35
+ * *Update events* — wrap transient streaming data from lower layers.
36
+ * - Naming: `<Source>StreamUpdateEvent`, payload field: `.event`
37
+ * - Examples: {@link ModelStreamUpdateEvent}, {@link ToolStreamUpdateEvent}
38
+ *
39
+ * *Completion events* — wrap finished data after processing completes.
40
+ * - Naming: descriptive `<Noun>Event`, payload field matches data type
41
+ * (`.result` for results, `.message` for messages, `.contentBlock` for content blocks).
42
+ * - Examples: {@link ContentBlockEvent}, {@link ModelMessageEvent},
43
+ * {@link ToolResultEvent}, {@link AgentResultEvent}
44
+ *
45
+ * ## Field naming conventions
46
+ *
47
+ * | Field | Usage |
48
+ * |----------------|---------------------------------------------|
49
+ * | `agent` | Present on every event (`AgentData`) |
50
+ * | `.event` | Inner event in update wrappers |
51
+ * | `.result` | Finished result object |
52
+ * | `.message` | Message object |
53
+ * | `.contentBlock`| Content block object |
54
+ */
55
+ /**
56
+ * Base class for all events yielded by `agent.stream()`.
57
+ * Carries no hookability — subclasses that should be hookable extend {@link HookableEvent} instead.
58
+ */
59
+ export declare abstract class StreamEvent {
60
+ }
61
+ /**
62
+ * Base class for events that can be subscribed to via the hook system.
63
+ * Only events extending this class are dispatched to {@link HookRegistry} callbacks.
64
+ * All current events extend this class. {@link StreamEvent} exists as the base for
65
+ * potential future stream-only events that should not be hookable.
9
66
  */
10
- export declare abstract class HookEvent {
67
+ export declare abstract class HookableEvent extends StreamEvent {
11
68
  /**
12
69
  * @internal
13
70
  * Check if callbacks should be reversed for this event.
@@ -19,7 +76,7 @@ export declare abstract class HookEvent {
19
76
  * Event triggered when an agent has finished initialization.
20
77
  * Fired after the agent has been fully constructed and all built-in components have been initialized.
21
78
  */
22
- export declare class InitializedEvent extends HookEvent {
79
+ export declare class InitializedEvent extends HookableEvent {
23
80
  readonly type: "initializedEvent";
24
81
  readonly agent: AgentData;
25
82
  constructor(data: {
@@ -30,7 +87,7 @@ export declare class InitializedEvent extends HookEvent {
30
87
  * Event triggered at the beginning of a new agent request.
31
88
  * Fired before any model inference or tool execution occurs.
32
89
  */
33
- export declare class BeforeInvocationEvent extends HookEvent {
90
+ export declare class BeforeInvocationEvent extends HookableEvent {
34
91
  readonly type: "beforeInvocationEvent";
35
92
  readonly agent: AgentData;
36
93
  constructor(data: {
@@ -42,7 +99,7 @@ export declare class BeforeInvocationEvent extends HookEvent {
42
99
  * Fired after all processing completes, regardless of success or error.
43
100
  * Uses reverse callback ordering for proper cleanup semantics.
44
101
  */
45
- export declare class AfterInvocationEvent extends HookEvent {
102
+ export declare class AfterInvocationEvent extends HookableEvent {
46
103
  readonly type: "afterInvocationEvent";
47
104
  readonly agent: AgentData;
48
105
  constructor(data: {
@@ -55,7 +112,7 @@ export declare class AfterInvocationEvent extends HookEvent {
55
112
  * Fired during the agent loop execution for framework-generated messages.
56
113
  * Does not fire for initial messages from AgentConfig or user input messages.
57
114
  */
58
- export declare class MessageAddedEvent extends HookEvent {
115
+ export declare class MessageAddedEvent extends HookableEvent {
59
116
  readonly type: "messageAddedEvent";
60
117
  readonly agent: AgentData;
61
118
  readonly message: Message;
@@ -68,7 +125,7 @@ export declare class MessageAddedEvent extends HookEvent {
68
125
  * Event triggered just before a tool is executed.
69
126
  * Fired after tool lookup but before execution begins.
70
127
  */
71
- export declare class BeforeToolCallEvent extends HookEvent {
128
+ export declare class BeforeToolCallEvent extends HookableEvent {
72
129
  readonly type: "beforeToolCallEvent";
73
130
  readonly agent: AgentData;
74
131
  readonly toolUse: {
@@ -92,7 +149,7 @@ export declare class BeforeToolCallEvent extends HookEvent {
92
149
  * Fired after tool execution finishes, whether successful or failed.
93
150
  * Uses reverse callback ordering for proper cleanup semantics.
94
151
  */
95
- export declare class AfterToolCallEvent extends HookEvent {
152
+ export declare class AfterToolCallEvent extends HookableEvent {
96
153
  readonly type: "afterToolCallEvent";
97
154
  readonly agent: AgentData;
98
155
  readonly toolUse: {
@@ -125,7 +182,7 @@ export declare class AfterToolCallEvent extends HookEvent {
125
182
  * Event triggered just before the model is invoked.
126
183
  * Fired before sending messages to the model for inference.
127
184
  */
128
- export declare class BeforeModelCallEvent extends HookEvent {
185
+ export declare class BeforeModelCallEvent extends HookableEvent {
129
186
  readonly type: "beforeModelCallEvent";
130
187
  readonly agent: AgentData;
131
188
  constructor(data: {
@@ -152,7 +209,7 @@ export interface ModelStopData {
152
209
  *
153
210
  * Note: stopData may be undefined if an error occurs before the model completes.
154
211
  */
155
- export declare class AfterModelCallEvent extends HookEvent {
212
+ export declare class AfterModelCallEvent extends HookableEvent {
156
213
  readonly type: "afterModelCallEvent";
157
214
  readonly agent: AgentData;
158
215
  readonly stopData?: ModelStopData;
@@ -171,25 +228,102 @@ export declare class AfterModelCallEvent extends HookEvent {
171
228
  }
172
229
  /**
173
230
  * Event triggered for each streaming event from the model.
174
- * Allows hooks to observe individual streaming events during model inference.
175
- * Provides read-only access to streaming events.
231
+ * Wraps a {@link ModelStreamEvent} (transient streaming delta) during model inference.
232
+ * Completed content blocks are handled separately by {@link ContentBlockEvent}
233
+ * because they represent different granularities: partial deltas vs fully assembled results.
234
+ */
235
+ export declare class ModelStreamUpdateEvent extends HookableEvent {
236
+ readonly type: "modelStreamUpdateEvent";
237
+ readonly agent: AgentData;
238
+ readonly event: ModelStreamEvent;
239
+ constructor(data: {
240
+ agent: AgentData;
241
+ event: ModelStreamEvent;
242
+ });
243
+ }
244
+ /**
245
+ * Event triggered when a content block completes during model inference.
246
+ * Wraps completed content blocks (TextBlock, ToolUseBlock, ReasoningBlock) from model streaming.
247
+ * This is intentionally separate from {@link ModelStreamUpdateEvent}. The model's
248
+ * `streamAggregated()` yields two kinds of output: {@link ModelStreamEvent} (transient
249
+ * streaming deltas — partial data arriving while the model generates) and
250
+ * {@link ContentBlock} (fully assembled results after all deltas accumulate).
251
+ * These represent different granularities with different semantics, so they are
252
+ * wrapped in distinct event classes rather than combined into a single event.
253
+ */
254
+ export declare class ContentBlockEvent extends HookableEvent {
255
+ readonly type: "contentBlockEvent";
256
+ readonly agent: AgentData;
257
+ readonly contentBlock: ContentBlock;
258
+ constructor(data: {
259
+ agent: AgentData;
260
+ contentBlock: ContentBlock;
261
+ });
262
+ }
263
+ /**
264
+ * Event triggered when the model completes a full message.
265
+ * Wraps the assembled message and stop reason after model streaming finishes.
266
+ */
267
+ export declare class ModelMessageEvent extends HookableEvent {
268
+ readonly type: "modelMessageEvent";
269
+ readonly agent: AgentData;
270
+ readonly message: Message;
271
+ readonly stopReason: StopReason;
272
+ constructor(data: {
273
+ agent: AgentData;
274
+ message: Message;
275
+ stopReason: StopReason;
276
+ });
277
+ }
278
+ /**
279
+ * Event triggered when a tool execution completes.
280
+ * Wraps the tool result block after a tool finishes execution.
281
+ */
282
+ export declare class ToolResultEvent extends HookableEvent {
283
+ readonly type: "toolResultEvent";
284
+ readonly agent: AgentData;
285
+ readonly result: ToolResultBlock;
286
+ constructor(data: {
287
+ agent: AgentData;
288
+ result: ToolResultBlock;
289
+ });
290
+ }
291
+ /**
292
+ * Event triggered for each streaming progress event from a tool during execution.
293
+ * Wraps a {@link ToolStreamEvent} with agent context, keeping the tool authoring
294
+ * interface unchanged — tools construct `ToolStreamEvent` without knowledge of agents
295
+ * or hooks, and the agent layer wraps them at the boundary.
176
296
  *
177
- * Currently private pending https://github.com/strands-agents/sdk-typescript/issues/288
297
+ * Consistent with {@link ModelStreamUpdateEvent} which wraps model streaming events
298
+ * the same way.
299
+ */
300
+ export declare class ToolStreamUpdateEvent extends HookableEvent {
301
+ readonly type: "toolStreamUpdateEvent";
302
+ readonly agent: AgentData;
303
+ readonly event: ToolStreamEvent;
304
+ constructor(data: {
305
+ agent: AgentData;
306
+ event: ToolStreamEvent;
307
+ });
308
+ }
309
+ /**
310
+ * Event triggered as the final event in the agent stream.
311
+ * Wraps the agent result containing the stop reason and last message.
178
312
  */
179
- export declare class ModelStreamEventHook extends HookEvent {
180
- readonly type: "modelStreamEventHook";
313
+ export declare class AgentResultEvent extends HookableEvent {
314
+ readonly type: "agentResultEvent";
181
315
  readonly agent: AgentData;
182
- readonly event: ModelStreamEvent | ContentBlock;
316
+ readonly result: AgentResult;
183
317
  constructor(data: {
184
318
  agent: AgentData;
185
- event: ModelStreamEvent | ContentBlock;
319
+ result: AgentResult;
186
320
  });
187
321
  }
188
322
  /**
189
323
  * Event triggered before executing tools.
190
324
  * Fired when the model returns tool use blocks that need to be executed.
191
325
  */
192
- export declare class BeforeToolsEvent extends HookEvent {
326
+ export declare class BeforeToolsEvent extends HookableEvent {
193
327
  readonly type: "beforeToolsEvent";
194
328
  readonly agent: AgentData;
195
329
  readonly message: Message;
@@ -203,7 +337,7 @@ export declare class BeforeToolsEvent extends HookEvent {
203
337
  * Fired after tool results are collected and ready to be added to conversation.
204
338
  * Uses reverse callback ordering for proper cleanup semantics.
205
339
  */
206
- export declare class AfterToolsEvent extends HookEvent {
340
+ export declare class AfterToolsEvent extends HookableEvent {
207
341
  readonly type: "afterToolsEvent";
208
342
  readonly agent: AgentData;
209
343
  readonly message: Message;
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/hooks/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/hooks/events.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,66 @@
1
+ import { ToolStreamEvent } from '../tools/tool.js';
1
2
  /**
2
- * Base class for all hook events.
3
- * Hook events are emitted at specific points in the agent lifecycle.
3
+ * Agent hook events.
4
+ *
5
+ * All events extend {@link StreamEvent} and carry `readonly agent: AgentData` with a
6
+ * `readonly type` discriminator (camelCase of the class name) for switch-based narrowing.
7
+ * Constructor takes a single data-object parameter. All properties are readonly except
8
+ * explicit mutable flags (`retry`).
9
+ *
10
+ * All current events extend {@link HookableEvent} (which itself extends {@link StreamEvent}),
11
+ * making them both streamable and subscribable via hook callbacks. {@link StreamEvent} exists
12
+ * as the base class for potential future events that should be stream-only without hookability.
13
+ *
14
+ * ## Event categories
15
+ *
16
+ * **Lifecycle events** — Before/After pairs that bracket agent operations.
17
+ * - Naming: `Before<Noun>Event` / `After<Noun>Event`
18
+ * - `After*` events override `_shouldReverseCallbacks()` → `true` for cleanup ordering.
19
+ * - Examples: {@link BeforeInvocationEvent}/{@link AfterInvocationEvent},
20
+ * {@link BeforeModelCallEvent}/{@link AfterModelCallEvent},
21
+ * {@link BeforeToolsEvent}/{@link AfterToolsEvent},
22
+ * {@link BeforeToolCallEvent}/{@link AfterToolCallEvent}
23
+ *
24
+ * **State-change events** — Signal that agent state was mutated.
25
+ * - Naming: `<Noun><PastTense>Event`
26
+ * - Examples: {@link InitializedEvent}, {@link MessageAddedEvent}
27
+ *
28
+ * **Data events** — Wrap data objects produced during agent execution.
29
+ * Two sub-categories:
30
+ *
31
+ * *Update events* — wrap transient streaming data from lower layers.
32
+ * - Naming: `<Source>StreamUpdateEvent`, payload field: `.event`
33
+ * - Examples: {@link ModelStreamUpdateEvent}, {@link ToolStreamUpdateEvent}
34
+ *
35
+ * *Completion events* — wrap finished data after processing completes.
36
+ * - Naming: descriptive `<Noun>Event`, payload field matches data type
37
+ * (`.result` for results, `.message` for messages, `.contentBlock` for content blocks).
38
+ * - Examples: {@link ContentBlockEvent}, {@link ModelMessageEvent},
39
+ * {@link ToolResultEvent}, {@link AgentResultEvent}
40
+ *
41
+ * ## Field naming conventions
42
+ *
43
+ * | Field | Usage |
44
+ * |----------------|---------------------------------------------|
45
+ * | `agent` | Present on every event (`AgentData`) |
46
+ * | `.event` | Inner event in update wrappers |
47
+ * | `.result` | Finished result object |
48
+ * | `.message` | Message object |
49
+ * | `.contentBlock`| Content block object |
50
+ */
51
+ /**
52
+ * Base class for all events yielded by `agent.stream()`.
53
+ * Carries no hookability — subclasses that should be hookable extend {@link HookableEvent} instead.
4
54
  */
5
- export class HookEvent {
55
+ export class StreamEvent {
56
+ }
57
+ /**
58
+ * Base class for events that can be subscribed to via the hook system.
59
+ * Only events extending this class are dispatched to {@link HookRegistry} callbacks.
60
+ * All current events extend this class. {@link StreamEvent} exists as the base for
61
+ * potential future stream-only events that should not be hookable.
62
+ */
63
+ export class HookableEvent extends StreamEvent {
6
64
  /**
7
65
  * @internal
8
66
  * Check if callbacks should be reversed for this event.
@@ -16,7 +74,7 @@ export class HookEvent {
16
74
  * Event triggered when an agent has finished initialization.
17
75
  * Fired after the agent has been fully constructed and all built-in components have been initialized.
18
76
  */
19
- export class InitializedEvent extends HookEvent {
77
+ export class InitializedEvent extends HookableEvent {
20
78
  type = 'initializedEvent';
21
79
  agent;
22
80
  constructor(data) {
@@ -28,7 +86,7 @@ export class InitializedEvent extends HookEvent {
28
86
  * Event triggered at the beginning of a new agent request.
29
87
  * Fired before any model inference or tool execution occurs.
30
88
  */
31
- export class BeforeInvocationEvent extends HookEvent {
89
+ export class BeforeInvocationEvent extends HookableEvent {
32
90
  type = 'beforeInvocationEvent';
33
91
  agent;
34
92
  constructor(data) {
@@ -41,7 +99,7 @@ export class BeforeInvocationEvent extends HookEvent {
41
99
  * Fired after all processing completes, regardless of success or error.
42
100
  * Uses reverse callback ordering for proper cleanup semantics.
43
101
  */
44
- export class AfterInvocationEvent extends HookEvent {
102
+ export class AfterInvocationEvent extends HookableEvent {
45
103
  type = 'afterInvocationEvent';
46
104
  agent;
47
105
  constructor(data) {
@@ -57,7 +115,7 @@ export class AfterInvocationEvent extends HookEvent {
57
115
  * Fired during the agent loop execution for framework-generated messages.
58
116
  * Does not fire for initial messages from AgentConfig or user input messages.
59
117
  */
60
- export class MessageAddedEvent extends HookEvent {
118
+ export class MessageAddedEvent extends HookableEvent {
61
119
  type = 'messageAddedEvent';
62
120
  agent;
63
121
  message;
@@ -71,7 +129,7 @@ export class MessageAddedEvent extends HookEvent {
71
129
  * Event triggered just before a tool is executed.
72
130
  * Fired after tool lookup but before execution begins.
73
131
  */
74
- export class BeforeToolCallEvent extends HookEvent {
132
+ export class BeforeToolCallEvent extends HookableEvent {
75
133
  type = 'beforeToolCallEvent';
76
134
  agent;
77
135
  toolUse;
@@ -88,7 +146,7 @@ export class BeforeToolCallEvent extends HookEvent {
88
146
  * Fired after tool execution finishes, whether successful or failed.
89
147
  * Uses reverse callback ordering for proper cleanup semantics.
90
148
  */
91
- export class AfterToolCallEvent extends HookEvent {
149
+ export class AfterToolCallEvent extends HookableEvent {
92
150
  type = 'afterToolCallEvent';
93
151
  agent;
94
152
  toolUse;
@@ -118,7 +176,7 @@ export class AfterToolCallEvent extends HookEvent {
118
176
  * Event triggered just before the model is invoked.
119
177
  * Fired before sending messages to the model for inference.
120
178
  */
121
- export class BeforeModelCallEvent extends HookEvent {
179
+ export class BeforeModelCallEvent extends HookableEvent {
122
180
  type = 'beforeModelCallEvent';
123
181
  agent;
124
182
  constructor(data) {
@@ -133,7 +191,7 @@ export class BeforeModelCallEvent extends HookEvent {
133
191
  *
134
192
  * Note: stopData may be undefined if an error occurs before the model completes.
135
193
  */
136
- export class AfterModelCallEvent extends HookEvent {
194
+ export class AfterModelCallEvent extends HookableEvent {
137
195
  type = 'afterModelCallEvent';
138
196
  agent;
139
197
  stopData;
@@ -159,13 +217,81 @@ export class AfterModelCallEvent extends HookEvent {
159
217
  }
160
218
  /**
161
219
  * Event triggered for each streaming event from the model.
162
- * Allows hooks to observe individual streaming events during model inference.
163
- * Provides read-only access to streaming events.
220
+ * Wraps a {@link ModelStreamEvent} (transient streaming delta) during model inference.
221
+ * Completed content blocks are handled separately by {@link ContentBlockEvent}
222
+ * because they represent different granularities: partial deltas vs fully assembled results.
223
+ */
224
+ export class ModelStreamUpdateEvent extends HookableEvent {
225
+ type = 'modelStreamUpdateEvent';
226
+ agent;
227
+ event;
228
+ constructor(data) {
229
+ super();
230
+ this.agent = data.agent;
231
+ this.event = data.event;
232
+ }
233
+ }
234
+ /**
235
+ * Event triggered when a content block completes during model inference.
236
+ * Wraps completed content blocks (TextBlock, ToolUseBlock, ReasoningBlock) from model streaming.
237
+ * This is intentionally separate from {@link ModelStreamUpdateEvent}. The model's
238
+ * `streamAggregated()` yields two kinds of output: {@link ModelStreamEvent} (transient
239
+ * streaming deltas — partial data arriving while the model generates) and
240
+ * {@link ContentBlock} (fully assembled results after all deltas accumulate).
241
+ * These represent different granularities with different semantics, so they are
242
+ * wrapped in distinct event classes rather than combined into a single event.
243
+ */
244
+ export class ContentBlockEvent extends HookableEvent {
245
+ type = 'contentBlockEvent';
246
+ agent;
247
+ contentBlock;
248
+ constructor(data) {
249
+ super();
250
+ this.agent = data.agent;
251
+ this.contentBlock = data.contentBlock;
252
+ }
253
+ }
254
+ /**
255
+ * Event triggered when the model completes a full message.
256
+ * Wraps the assembled message and stop reason after model streaming finishes.
257
+ */
258
+ export class ModelMessageEvent extends HookableEvent {
259
+ type = 'modelMessageEvent';
260
+ agent;
261
+ message;
262
+ stopReason;
263
+ constructor(data) {
264
+ super();
265
+ this.agent = data.agent;
266
+ this.message = data.message;
267
+ this.stopReason = data.stopReason;
268
+ }
269
+ }
270
+ /**
271
+ * Event triggered when a tool execution completes.
272
+ * Wraps the tool result block after a tool finishes execution.
273
+ */
274
+ export class ToolResultEvent extends HookableEvent {
275
+ type = 'toolResultEvent';
276
+ agent;
277
+ result;
278
+ constructor(data) {
279
+ super();
280
+ this.agent = data.agent;
281
+ this.result = data.result;
282
+ }
283
+ }
284
+ /**
285
+ * Event triggered for each streaming progress event from a tool during execution.
286
+ * Wraps a {@link ToolStreamEvent} with agent context, keeping the tool authoring
287
+ * interface unchanged — tools construct `ToolStreamEvent` without knowledge of agents
288
+ * or hooks, and the agent layer wraps them at the boundary.
164
289
  *
165
- * Currently private pending https://github.com/strands-agents/sdk-typescript/issues/288
290
+ * Consistent with {@link ModelStreamUpdateEvent} which wraps model streaming events
291
+ * the same way.
166
292
  */
167
- export class ModelStreamEventHook extends HookEvent {
168
- type = 'modelStreamEventHook';
293
+ export class ToolStreamUpdateEvent extends HookableEvent {
294
+ type = 'toolStreamUpdateEvent';
169
295
  agent;
170
296
  event;
171
297
  constructor(data) {
@@ -174,11 +300,25 @@ export class ModelStreamEventHook extends HookEvent {
174
300
  this.event = data.event;
175
301
  }
176
302
  }
303
+ /**
304
+ * Event triggered as the final event in the agent stream.
305
+ * Wraps the agent result containing the stop reason and last message.
306
+ */
307
+ export class AgentResultEvent extends HookableEvent {
308
+ type = 'agentResultEvent';
309
+ agent;
310
+ result;
311
+ constructor(data) {
312
+ super();
313
+ this.agent = data.agent;
314
+ this.result = data.result;
315
+ }
316
+ }
177
317
  /**
178
318
  * Event triggered before executing tools.
179
319
  * Fired when the model returns tool use blocks that need to be executed.
180
320
  */
181
- export class BeforeToolsEvent extends HookEvent {
321
+ export class BeforeToolsEvent extends HookableEvent {
182
322
  type = 'beforeToolsEvent';
183
323
  agent;
184
324
  message;
@@ -193,7 +333,7 @@ export class BeforeToolsEvent extends HookEvent {
193
333
  * Fired after tool results are collected and ready to be added to conversation.
194
334
  * Uses reverse callback ordering for proper cleanup semantics.
195
335
  */
196
- export class AfterToolsEvent extends HookEvent {
336
+ export class AfterToolsEvent extends HookableEvent {
197
337
  type = 'afterToolsEvent';
198
338
  agent;
199
339
  message;
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/hooks/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/hooks/events.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,19 @@
1
1
  /**
2
2
  * Hooks module for event-driven extensibility.
3
3
  *
4
- * Hooks provide a composable mechanism for extending agent functionality
5
- * by subscribing to events throughout the agent lifecycle.
4
+ * This module has two concerns with distinct naming:
5
+ *
6
+ * - **Events** (`StreamEvent` and subclasses) — the data objects yielded by `agent.stream()`.
7
+ * Named `Stream*` because they are members of the agent stream.
8
+ * All current events extend {@link HookableEvent}, making them subscribable via hook callbacks.
9
+ * See {@link StreamEvent} and `events.ts` for the full taxonomy.
10
+ *
11
+ * - **Hook infrastructure** (`HookProvider`, `HookCallback`, `HookRegistry`, `HookCleanup`) —
12
+ * the subscription mechanism that lets providers register callbacks for {@link HookableEvent} types.
13
+ * Named `Hook*` because they describe the hooking/subscription pattern, not the events themselves.
6
14
  */
7
- export { HookEvent, InitializedEvent, BeforeInvocationEvent, AfterInvocationEvent, MessageAddedEvent, BeforeToolCallEvent, AfterToolCallEvent, BeforeModelCallEvent, AfterModelCallEvent, ModelStreamEventHook, BeforeToolsEvent, AfterToolsEvent, } from './events.js';
15
+ export { StreamEvent, HookableEvent, InitializedEvent, BeforeInvocationEvent, AfterInvocationEvent, MessageAddedEvent, BeforeToolCallEvent, AfterToolCallEvent, BeforeModelCallEvent, AfterModelCallEvent, ModelStreamUpdateEvent, ContentBlockEvent, ModelMessageEvent, ToolResultEvent, ToolStreamUpdateEvent, AgentResultEvent, BeforeToolsEvent, AfterToolsEvent, } from './events.js';
8
16
  export type { ModelStopData as ModelStopResponse } from './events.js';
9
17
  export { HookRegistryImplementation as HookRegistry } from './registry.js';
10
- export type { HookCallback, HookProvider, HookEventConstructor, HookCleanup } from './types.js';
18
+ export type { HookCallback, HookProvider, HookableEventConstructor, HookCleanup } from './types.js';
11
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAA;AAGpB,YAAY,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGrE,OAAO,EAAE,0BAA0B,IAAI,YAAY,EAAE,MAAM,eAAe,CAAA;AAG1E,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAA;AAGpB,YAAY,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGrE,OAAO,EAAE,0BAA0B,IAAI,YAAY,EAAE,MAAM,eAAe,CAAA;AAG1E,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
@@ -1,11 +1,19 @@
1
1
  /**
2
2
  * Hooks module for event-driven extensibility.
3
3
  *
4
- * Hooks provide a composable mechanism for extending agent functionality
5
- * by subscribing to events throughout the agent lifecycle.
4
+ * This module has two concerns with distinct naming:
5
+ *
6
+ * - **Events** (`StreamEvent` and subclasses) — the data objects yielded by `agent.stream()`.
7
+ * Named `Stream*` because they are members of the agent stream.
8
+ * All current events extend {@link HookableEvent}, making them subscribable via hook callbacks.
9
+ * See {@link StreamEvent} and `events.ts` for the full taxonomy.
10
+ *
11
+ * - **Hook infrastructure** (`HookProvider`, `HookCallback`, `HookRegistry`, `HookCleanup`) —
12
+ * the subscription mechanism that lets providers register callbacks for {@link HookableEvent} types.
13
+ * Named `Hook*` because they describe the hooking/subscription pattern, not the events themselves.
6
14
  */
7
15
  // Event classes
8
- export { HookEvent, InitializedEvent, BeforeInvocationEvent, AfterInvocationEvent, MessageAddedEvent, BeforeToolCallEvent, AfterToolCallEvent, BeforeModelCallEvent, AfterModelCallEvent, ModelStreamEventHook, BeforeToolsEvent, AfterToolsEvent, } from './events.js';
16
+ export { StreamEvent, HookableEvent, InitializedEvent, BeforeInvocationEvent, AfterInvocationEvent, MessageAddedEvent, BeforeToolCallEvent, AfterToolCallEvent, BeforeModelCallEvent, AfterModelCallEvent, ModelStreamUpdateEvent, ContentBlockEvent, ModelMessageEvent, ToolResultEvent, ToolStreamUpdateEvent, AgentResultEvent, BeforeToolsEvent, AfterToolsEvent, } from './events.js';
9
17
  // Registry
10
18
  export { HookRegistryImplementation as HookRegistry } from './registry.js';
11
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gBAAgB;AAChB,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAA;AAKpB,WAAW;AACX,OAAO,EAAE,0BAA0B,IAAI,YAAY,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,gBAAgB;AAChB,OAAO,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAA;AAKpB,WAAW;AACX,OAAO,EAAE,0BAA0B,IAAI,YAAY,EAAE,MAAM,eAAe,CAAA"}