@strands-agents/sdk 0.3.0 → 0.5.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 (302) hide show
  1. package/README.md +43 -0
  2. package/dist/src/__fixtures__/agent-helpers.d.ts +10 -1
  3. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  4. package/dist/src/__fixtures__/agent-helpers.js +13 -2
  5. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  6. package/dist/src/__fixtures__/mock-hook-provider.d.ts +3 -7
  7. package/dist/src/__fixtures__/mock-hook-provider.d.ts.map +1 -1
  8. package/dist/src/__fixtures__/mock-hook-provider.js +3 -9
  9. package/dist/src/__fixtures__/mock-hook-provider.js.map +1 -1
  10. package/dist/src/__fixtures__/mock-message-model.d.ts +8 -2
  11. package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -1
  12. package/dist/src/__fixtures__/mock-message-model.js +1 -0
  13. package/dist/src/__fixtures__/mock-message-model.js.map +1 -1
  14. package/dist/src/__fixtures__/mock-span.d.ts +78 -0
  15. package/dist/src/__fixtures__/mock-span.d.ts.map +1 -0
  16. package/dist/src/__fixtures__/mock-span.js +93 -0
  17. package/dist/src/__fixtures__/mock-span.js.map +1 -0
  18. package/dist/src/__fixtures__/mock-storage-provider.d.ts +37 -0
  19. package/dist/src/__fixtures__/mock-storage-provider.d.ts.map +1 -0
  20. package/dist/src/__fixtures__/mock-storage-provider.js +105 -0
  21. package/dist/src/__fixtures__/mock-storage-provider.js.map +1 -0
  22. package/dist/src/__fixtures__/slim-types.d.ts +50 -0
  23. package/dist/src/__fixtures__/slim-types.d.ts.map +1 -0
  24. package/dist/src/__fixtures__/slim-types.js +6 -0
  25. package/dist/src/__fixtures__/slim-types.js.map +1 -0
  26. package/dist/src/__fixtures__/tool-helpers.d.ts +10 -5
  27. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  28. package/dist/src/__fixtures__/tool-helpers.js +5 -5
  29. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  30. package/dist/src/__tests__/app-state.test.d.ts +2 -0
  31. package/dist/src/__tests__/app-state.test.d.ts.map +1 -0
  32. package/dist/src/{agent/__tests__/state.test.js → __tests__/app-state.test.js} +62 -43
  33. package/dist/src/__tests__/app-state.test.js.map +1 -0
  34. package/dist/src/__tests__/mcp.test.js +96 -15
  35. package/dist/src/__tests__/mcp.test.js.map +1 -1
  36. package/dist/src/agent/__tests__/agent.hook.test.js +18 -18
  37. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
  38. package/dist/src/agent/__tests__/agent.test.js +234 -8
  39. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  40. package/dist/src/agent/__tests__/agent.tracer.test.d.ts +2 -0
  41. package/dist/src/agent/__tests__/agent.tracer.test.d.ts.map +1 -0
  42. package/dist/src/agent/__tests__/agent.tracer.test.js +470 -0
  43. package/dist/src/agent/__tests__/agent.tracer.test.js.map +1 -0
  44. package/dist/src/agent/__tests__/printer.test.js +5 -9
  45. package/dist/src/agent/__tests__/printer.test.js.map +1 -1
  46. package/dist/src/agent/__tests__/snapshot.test.d.ts +2 -0
  47. package/dist/src/agent/__tests__/snapshot.test.d.ts.map +1 -0
  48. package/dist/src/agent/__tests__/snapshot.test.js +249 -0
  49. package/dist/src/agent/__tests__/snapshot.test.js.map +1 -0
  50. package/dist/src/agent/agent.d.ts +78 -10
  51. package/dist/src/agent/agent.d.ts.map +1 -1
  52. package/dist/src/agent/agent.js +252 -55
  53. package/dist/src/agent/agent.js.map +1 -1
  54. package/dist/src/agent/printer.d.ts +4 -0
  55. package/dist/src/agent/printer.d.ts.map +1 -1
  56. package/dist/src/agent/printer.js +18 -6
  57. package/dist/src/agent/printer.js.map +1 -1
  58. package/dist/src/agent/snapshot.d.ts +132 -0
  59. package/dist/src/agent/snapshot.d.ts.map +1 -0
  60. package/dist/src/agent/snapshot.js +151 -0
  61. package/dist/src/agent/snapshot.js.map +1 -0
  62. package/dist/src/{agent/state.d.ts → app-state.d.ts} +19 -6
  63. package/dist/src/app-state.d.ts.map +1 -0
  64. package/dist/src/{agent/state.js → app-state.js} +27 -6
  65. package/dist/src/app-state.js.map +1 -0
  66. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +1 -1
  67. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +1 -1
  68. package/dist/src/errors.d.ts +15 -0
  69. package/dist/src/errors.d.ts.map +1 -1
  70. package/dist/src/errors.js +18 -0
  71. package/dist/src/errors.js.map +1 -1
  72. package/dist/src/hooks/__tests__/events.test.js +102 -21
  73. package/dist/src/hooks/__tests__/events.test.js.map +1 -1
  74. package/dist/src/hooks/events.d.ts +156 -22
  75. package/dist/src/hooks/events.d.ts.map +1 -1
  76. package/dist/src/hooks/events.js +158 -18
  77. package/dist/src/hooks/events.js.map +1 -1
  78. package/dist/src/hooks/index.d.ts +12 -4
  79. package/dist/src/hooks/index.d.ts.map +1 -1
  80. package/dist/src/hooks/index.js +11 -3
  81. package/dist/src/hooks/index.js.map +1 -1
  82. package/dist/src/hooks/registry.d.ts +5 -5
  83. package/dist/src/hooks/registry.d.ts.map +1 -1
  84. package/dist/src/hooks/registry.js.map +1 -1
  85. package/dist/src/hooks/types.d.ts +5 -5
  86. package/dist/src/hooks/types.d.ts.map +1 -1
  87. package/dist/src/index.d.ts +6 -3
  88. package/dist/src/index.d.ts.map +1 -1
  89. package/dist/src/index.js +8 -3
  90. package/dist/src/index.js.map +1 -1
  91. package/dist/src/mcp.d.ts +3 -0
  92. package/dist/src/mcp.d.ts.map +1 -1
  93. package/dist/src/mcp.js +38 -1
  94. package/dist/src/mcp.js.map +1 -1
  95. package/dist/src/models/__tests__/anthropic.test.js +31 -42
  96. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  97. package/dist/src/models/__tests__/bedrock.test.js +70 -107
  98. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  99. package/dist/src/models/__tests__/gemini.test.js +18 -18
  100. package/dist/src/models/__tests__/gemini.test.js.map +1 -1
  101. package/dist/src/models/__tests__/model.test.js +21 -13
  102. package/dist/src/models/__tests__/model.test.js.map +1 -1
  103. package/dist/src/models/__tests__/openai.test.js +73 -83
  104. package/dist/src/models/__tests__/openai.test.js.map +1 -1
  105. package/dist/src/models/model.d.ts +4 -0
  106. package/dist/src/models/model.d.ts.map +1 -1
  107. package/dist/src/models/model.js +6 -0
  108. package/dist/src/models/model.js.map +1 -1
  109. package/dist/src/models/streaming.d.ts +9 -1
  110. package/dist/src/models/streaming.d.ts.map +1 -1
  111. package/dist/src/models/streaming.js +17 -0
  112. package/dist/src/models/streaming.js.map +1 -1
  113. package/dist/src/multiagent/__tests__/events.test.d.ts +2 -0
  114. package/dist/src/multiagent/__tests__/events.test.d.ts.map +1 -0
  115. package/dist/src/multiagent/__tests__/events.test.js +189 -0
  116. package/dist/src/multiagent/__tests__/events.test.js.map +1 -0
  117. package/dist/src/multiagent/__tests__/nodes.test.d.ts +2 -0
  118. package/dist/src/multiagent/__tests__/nodes.test.d.ts.map +1 -0
  119. package/dist/src/multiagent/__tests__/nodes.test.js +194 -0
  120. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -0
  121. package/dist/src/multiagent/__tests__/queue.test.d.ts +2 -0
  122. package/dist/src/multiagent/__tests__/queue.test.d.ts.map +1 -0
  123. package/dist/src/multiagent/__tests__/queue.test.js +96 -0
  124. package/dist/src/multiagent/__tests__/queue.test.js.map +1 -0
  125. package/dist/src/multiagent/base.d.ts +25 -0
  126. package/dist/src/multiagent/base.d.ts.map +1 -0
  127. package/dist/src/multiagent/base.js +2 -0
  128. package/dist/src/multiagent/base.js.map +1 -0
  129. package/dist/src/multiagent/edge.d.ts +29 -0
  130. package/dist/src/multiagent/edge.d.ts.map +1 -0
  131. package/dist/src/multiagent/edge.js +15 -0
  132. package/dist/src/multiagent/edge.js.map +1 -0
  133. package/dist/src/multiagent/events.d.ts +135 -0
  134. package/dist/src/multiagent/events.d.ts.map +1 -0
  135. package/dist/src/multiagent/events.js +140 -0
  136. package/dist/src/multiagent/events.js.map +1 -0
  137. package/dist/src/multiagent/index.d.ts +13 -0
  138. package/dist/src/multiagent/index.d.ts.map +1 -0
  139. package/dist/src/multiagent/index.js +8 -0
  140. package/dist/src/multiagent/index.js.map +1 -0
  141. package/dist/src/multiagent/nodes.d.ts +123 -0
  142. package/dist/src/multiagent/nodes.d.ts.map +1 -0
  143. package/dist/src/multiagent/nodes.js +148 -0
  144. package/dist/src/multiagent/nodes.js.map +1 -0
  145. package/dist/src/multiagent/queue.d.ts +67 -0
  146. package/dist/src/multiagent/queue.d.ts.map +1 -0
  147. package/dist/src/multiagent/queue.js +59 -0
  148. package/dist/src/multiagent/queue.js.map +1 -0
  149. package/dist/src/multiagent/state.d.ts +122 -0
  150. package/dist/src/multiagent/state.d.ts.map +1 -0
  151. package/dist/src/multiagent/state.js +132 -0
  152. package/dist/src/multiagent/state.js.map +1 -0
  153. package/dist/src/registry/tool-registry.d.ts +2 -1
  154. package/dist/src/registry/tool-registry.d.ts.map +1 -1
  155. package/dist/src/registry/tool-registry.js +4 -2
  156. package/dist/src/registry/tool-registry.js.map +1 -1
  157. package/dist/src/session/__tests__/file-storage.test.node.d.ts +2 -0
  158. package/dist/src/session/__tests__/file-storage.test.node.d.ts.map +1 -0
  159. package/dist/src/session/__tests__/file-storage.test.node.js +218 -0
  160. package/dist/src/session/__tests__/file-storage.test.node.js.map +1 -0
  161. package/dist/src/session/__tests__/s3-storage.test.node.d.ts +2 -0
  162. package/dist/src/session/__tests__/s3-storage.test.node.d.ts.map +1 -0
  163. package/dist/src/session/__tests__/s3-storage.test.node.js +375 -0
  164. package/dist/src/session/__tests__/s3-storage.test.node.js.map +1 -0
  165. package/dist/src/session/__tests__/validation.test.d.ts +2 -0
  166. package/dist/src/session/__tests__/validation.test.d.ts.map +1 -0
  167. package/dist/src/session/__tests__/validation.test.js +20 -0
  168. package/dist/src/session/__tests__/validation.test.js.map +1 -0
  169. package/dist/src/session/file-storage.d.ts +79 -0
  170. package/dist/src/session/file-storage.d.ts.map +1 -0
  171. package/dist/src/session/file-storage.js +144 -0
  172. package/dist/src/session/file-storage.js.map +1 -0
  173. package/dist/src/session/index.d.ts +19 -0
  174. package/dist/src/session/index.d.ts.map +1 -0
  175. package/dist/src/session/index.js +18 -0
  176. package/dist/src/session/index.js.map +1 -0
  177. package/dist/src/session/s3-storage.d.ts +93 -0
  178. package/dist/src/session/s3-storage.d.ts.map +1 -0
  179. package/dist/src/session/s3-storage.js +150 -0
  180. package/dist/src/session/s3-storage.js.map +1 -0
  181. package/dist/src/session/storage.d.ts +91 -0
  182. package/dist/src/session/storage.d.ts.map +1 -0
  183. package/dist/src/session/storage.js +2 -0
  184. package/dist/src/session/storage.js.map +1 -0
  185. package/dist/src/session/types.d.ts +49 -0
  186. package/dist/src/session/types.d.ts.map +1 -0
  187. package/dist/src/session/types.js +2 -0
  188. package/dist/src/session/types.js.map +1 -0
  189. package/dist/src/session/validation.d.ts +10 -0
  190. package/dist/src/session/validation.d.ts.map +1 -0
  191. package/dist/src/session/validation.js +16 -0
  192. package/dist/src/session/validation.js.map +1 -0
  193. package/dist/src/structured-output/__tests__/context.test.d.ts +2 -0
  194. package/dist/src/structured-output/__tests__/context.test.d.ts.map +1 -0
  195. package/dist/src/structured-output/__tests__/context.test.js +201 -0
  196. package/dist/src/structured-output/__tests__/context.test.js.map +1 -0
  197. package/dist/src/structured-output/__tests__/exceptions.test.d.ts +2 -0
  198. package/dist/src/structured-output/__tests__/exceptions.test.d.ts.map +1 -0
  199. package/dist/src/structured-output/__tests__/exceptions.test.js +103 -0
  200. package/dist/src/structured-output/__tests__/exceptions.test.js.map +1 -0
  201. package/dist/src/structured-output/__tests__/tool.test.d.ts +2 -0
  202. package/dist/src/structured-output/__tests__/tool.test.d.ts.map +1 -0
  203. package/dist/src/structured-output/__tests__/tool.test.js +256 -0
  204. package/dist/src/structured-output/__tests__/tool.test.js.map +1 -0
  205. package/dist/src/structured-output/__tests__/utils.test.d.ts +2 -0
  206. package/dist/src/structured-output/__tests__/utils.test.d.ts.map +1 -0
  207. package/dist/src/structured-output/__tests__/utils.test.js +183 -0
  208. package/dist/src/structured-output/__tests__/utils.test.js.map +1 -0
  209. package/dist/src/structured-output/context.d.ts +91 -0
  210. package/dist/src/structured-output/context.d.ts.map +1 -0
  211. package/dist/src/structured-output/context.js +112 -0
  212. package/dist/src/structured-output/context.js.map +1 -0
  213. package/dist/src/structured-output/exceptions.d.ts +18 -0
  214. package/dist/src/structured-output/exceptions.d.ts.map +1 -0
  215. package/dist/src/structured-output/exceptions.js +28 -0
  216. package/dist/src/structured-output/exceptions.js.map +1 -0
  217. package/dist/src/structured-output/tool.d.ts +33 -0
  218. package/dist/src/structured-output/tool.d.ts.map +1 -0
  219. package/dist/src/structured-output/tool.js +73 -0
  220. package/dist/src/structured-output/tool.js.map +1 -0
  221. package/dist/src/structured-output/utils.d.ts +23 -0
  222. package/dist/src/structured-output/utils.d.ts.map +1 -0
  223. package/dist/src/structured-output/utils.js +104 -0
  224. package/dist/src/structured-output/utils.js.map +1 -0
  225. package/dist/src/telemetry/__tests__/config.test.node.d.ts +2 -0
  226. package/dist/src/telemetry/__tests__/config.test.node.d.ts.map +1 -0
  227. package/dist/src/telemetry/__tests__/config.test.node.js +129 -0
  228. package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -0
  229. package/dist/src/telemetry/__tests__/json.test.d.ts +2 -0
  230. package/dist/src/telemetry/__tests__/json.test.d.ts.map +1 -0
  231. package/dist/src/telemetry/__tests__/json.test.js +89 -0
  232. package/dist/src/telemetry/__tests__/json.test.js.map +1 -0
  233. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts +2 -0
  234. package/dist/src/telemetry/__tests__/tracer.test.node.d.ts.map +1 -0
  235. package/dist/src/telemetry/__tests__/tracer.test.node.js +611 -0
  236. package/dist/src/telemetry/__tests__/tracer.test.node.js.map +1 -0
  237. package/dist/src/telemetry/config.d.ts +61 -0
  238. package/dist/src/telemetry/config.d.ts.map +1 -0
  239. package/dist/src/telemetry/config.js +101 -0
  240. package/dist/src/telemetry/config.js.map +1 -0
  241. package/dist/src/telemetry/index.d.ts +34 -0
  242. package/dist/src/telemetry/index.d.ts.map +1 -0
  243. package/dist/src/telemetry/index.js +33 -0
  244. package/dist/src/telemetry/index.js.map +1 -0
  245. package/dist/src/telemetry/json.d.ts +11 -0
  246. package/dist/src/telemetry/json.d.ts.map +1 -0
  247. package/dist/src/telemetry/json.js +25 -0
  248. package/dist/src/telemetry/json.js.map +1 -0
  249. package/dist/src/telemetry/tracer.d.ts +219 -0
  250. package/dist/src/telemetry/tracer.d.ts.map +1 -0
  251. package/dist/src/telemetry/tracer.js +610 -0
  252. package/dist/src/telemetry/tracer.js.map +1 -0
  253. package/dist/src/telemetry/types.d.ts +101 -0
  254. package/dist/src/telemetry/types.d.ts.map +1 -0
  255. package/dist/src/telemetry/types.js +5 -0
  256. package/dist/src/telemetry/types.js.map +1 -0
  257. package/dist/src/tools/tool.d.ts +1 -1
  258. package/dist/src/tools/tool.js +1 -1
  259. package/dist/src/tools/zod-tool.d.ts.map +1 -1
  260. package/dist/src/tools/zod-tool.js +2 -5
  261. package/dist/src/tools/zod-tool.js.map +1 -1
  262. package/dist/src/tsconfig.tsbuildinfo +1 -1
  263. package/dist/src/types/__tests__/media.test.js +216 -1
  264. package/dist/src/types/__tests__/media.test.js.map +1 -1
  265. package/dist/src/types/__tests__/messages.test.js +193 -4
  266. package/dist/src/types/__tests__/messages.test.js.map +1 -1
  267. package/dist/src/types/agent.d.ts +16 -10
  268. package/dist/src/types/agent.d.ts.map +1 -1
  269. package/dist/src/types/agent.js +8 -1
  270. package/dist/src/types/agent.js.map +1 -1
  271. package/dist/src/types/json.d.ts +61 -0
  272. package/dist/src/types/json.d.ts.map +1 -1
  273. package/dist/src/types/json.js +24 -0
  274. package/dist/src/types/json.js.map +1 -1
  275. package/dist/src/types/media.d.ts +84 -4
  276. package/dist/src/types/media.d.ts.map +1 -1
  277. package/dist/src/types/media.js +194 -0
  278. package/dist/src/types/media.js.map +1 -1
  279. package/dist/src/types/messages.d.ts +152 -13
  280. package/dist/src/types/messages.d.ts.map +1 -1
  281. package/dist/src/types/messages.js +235 -8
  282. package/dist/src/types/messages.js.map +1 -1
  283. package/dist/src/types/serializable.d.ts +31 -0
  284. package/dist/src/types/serializable.d.ts.map +1 -0
  285. package/dist/src/types/serializable.js +19 -0
  286. package/dist/src/types/serializable.js.map +1 -0
  287. package/dist/src/utils/zod.d.ts +11 -0
  288. package/dist/src/utils/zod.d.ts.map +1 -0
  289. package/dist/src/utils/zod.js +14 -0
  290. package/dist/src/utils/zod.js.map +1 -0
  291. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +2 -2
  292. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  293. package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js +4 -4
  294. package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js.map +1 -1
  295. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +2 -2
  296. package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
  297. package/package.json +17 -3
  298. package/dist/src/agent/__tests__/state.test.d.ts +0 -2
  299. package/dist/src/agent/__tests__/state.test.d.ts.map +0 -1
  300. package/dist/src/agent/__tests__/state.test.js.map +0 -1
  301. package/dist/src/agent/state.d.ts.map +0 -1
  302. package/dist/src/agent/state.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import type { JSONValue } from './json.js';
1
+ import type { JSONValue, Serialized, MaybeSerializedInput, JSONSerializable } from './json.js';
2
2
  import type { ImageBlockData, VideoBlockData, DocumentBlockData } from './media.js';
3
3
  import { ImageBlock, VideoBlock, DocumentBlock } from './media.js';
4
4
  /**
5
5
  * Message types and content blocks for conversational AI interactions.
6
6
  *
7
- * This module follows a pattern where <name>Data interfaces define the structure
7
+ * This module follows a pattern where "Data" interfaces define the structure
8
8
  * for objects, while corresponding classes extend those interfaces with additional
9
9
  * functionality and type discrimination.
10
10
  */
@@ -25,7 +25,7 @@ export interface MessageData {
25
25
  * A message in a conversation between user and assistant.
26
26
  * Each message has a role (user or assistant) and an array of content blocks.
27
27
  */
28
- export declare class Message {
28
+ export declare class Message implements JSONSerializable<MessageData> {
29
29
  /**
30
30
  * Discriminator for message type.
31
31
  */
@@ -46,6 +46,19 @@ export declare class Message {
46
46
  * Creates a Message instance from MessageData.
47
47
  */
48
48
  static fromMessageData(data: MessageData): Message;
49
+ /**
50
+ * Serializes the Message to a JSON-compatible MessageData object.
51
+ * Called automatically by JSON.stringify().
52
+ */
53
+ toJSON(): MessageData;
54
+ /**
55
+ * Creates a Message instance from MessageData.
56
+ * Alias for fromMessageData for API consistency.
57
+ *
58
+ * @param data - MessageData to deserialize
59
+ * @returns Message instance
60
+ */
61
+ static fromJSON(data: MessageData): Message;
49
62
  }
50
63
  /**
51
64
  * Role of a message in a conversation.
@@ -95,7 +108,7 @@ export interface TextBlockData {
95
108
  /**
96
109
  * Text content block within a message.
97
110
  */
98
- export declare class TextBlock implements TextBlockData {
111
+ export declare class TextBlock implements TextBlockData, JSONSerializable<TextBlockData> {
99
112
  /**
100
113
  * Discriminator for text content.
101
114
  */
@@ -105,6 +118,18 @@ export declare class TextBlock implements TextBlockData {
105
118
  */
106
119
  readonly text: string;
107
120
  constructor(data: string);
121
+ /**
122
+ * Serializes the TextBlock to a JSON-compatible TextBlockData object.
123
+ * Called automatically by JSON.stringify().
124
+ */
125
+ toJSON(): TextBlockData;
126
+ /**
127
+ * Creates a TextBlock instance from TextBlockData.
128
+ *
129
+ * @param data - TextBlockData to deserialize
130
+ * @returns TextBlock instance
131
+ */
132
+ static fromJSON(data: TextBlockData): TextBlock;
108
133
  }
109
134
  /**
110
135
  * Data for a tool use block.
@@ -132,7 +157,9 @@ export interface ToolUseBlockData {
132
157
  /**
133
158
  * Tool use content block.
134
159
  */
135
- export declare class ToolUseBlock implements ToolUseBlockData {
160
+ export declare class ToolUseBlock implements ToolUseBlockData, JSONSerializable<{
161
+ toolUse: ToolUseBlockData;
162
+ }> {
136
163
  /**
137
164
  * Discriminator for tool use content.
138
165
  */
@@ -156,6 +183,22 @@ export declare class ToolUseBlock implements ToolUseBlockData {
156
183
  */
157
184
  readonly reasoningSignature?: string;
158
185
  constructor(data: ToolUseBlockData);
186
+ /**
187
+ * Serializes the ToolUseBlock to a JSON-compatible ContentBlockData object.
188
+ * Called automatically by JSON.stringify().
189
+ */
190
+ toJSON(): {
191
+ toolUse: ToolUseBlockData;
192
+ };
193
+ /**
194
+ * Creates a ToolUseBlock instance from its wrapped data format.
195
+ *
196
+ * @param data - Wrapped ToolUseBlockData to deserialize
197
+ * @returns ToolUseBlock instance
198
+ */
199
+ static fromJSON(data: {
200
+ toolUse: ToolUseBlockData;
201
+ }): ToolUseBlock;
159
202
  }
160
203
  /**
161
204
  * Content within a tool result.
@@ -183,7 +226,7 @@ export interface ToolResultBlockData {
183
226
  content: ToolResultContentData[];
184
227
  /**
185
228
  * The original error object when status is 'error'.
186
- * Available for inspection by hooks, error handlers, and event loop.
229
+ * Available for inspection by hooks, error handlers, and agent loop.
187
230
  * Tools must wrap non-Error thrown values into Error objects.
188
231
  */
189
232
  error?: Error;
@@ -191,7 +234,9 @@ export interface ToolResultBlockData {
191
234
  /**
192
235
  * Tool result content block.
193
236
  */
194
- export declare class ToolResultBlock implements ToolResultBlockData {
237
+ export declare class ToolResultBlock implements ToolResultBlockData, JSONSerializable<{
238
+ toolResult: ToolResultBlockData;
239
+ }> {
195
240
  /**
196
241
  * Discriminator for tool result content.
197
242
  */
@@ -210,7 +255,7 @@ export declare class ToolResultBlock implements ToolResultBlockData {
210
255
  readonly content: ToolResultContent[];
211
256
  /**
212
257
  * The original error object when status is 'error'.
213
- * Available for inspection by hooks, error handlers, and event loop.
258
+ * Available for inspection by hooks, error handlers, and agent loop.
214
259
  * Tools must wrap non-Error thrown values into Error objects.
215
260
  */
216
261
  readonly error?: Error;
@@ -220,6 +265,23 @@ export declare class ToolResultBlock implements ToolResultBlockData {
220
265
  content: ToolResultContent[];
221
266
  error?: Error;
222
267
  });
268
+ /**
269
+ * Serializes the ToolResultBlock to a JSON-compatible ContentBlockData object.
270
+ * Called automatically by JSON.stringify().
271
+ * Note: The error field is not serialized (deferred for future implementation).
272
+ */
273
+ toJSON(): {
274
+ toolResult: ToolResultBlockData;
275
+ };
276
+ /**
277
+ * Creates a ToolResultBlock instance from its wrapped data format.
278
+ *
279
+ * @param data - Wrapped ToolResultBlockData to deserialize
280
+ * @returns ToolResultBlock instance
281
+ */
282
+ static fromJSON(data: {
283
+ toolResult: ToolResultBlockData;
284
+ }): ToolResultBlock;
223
285
  }
224
286
  /**
225
287
  * Data for a reasoning block.
@@ -241,7 +303,9 @@ export interface ReasoningBlockData {
241
303
  /**
242
304
  * Reasoning content block within a message.
243
305
  */
244
- export declare class ReasoningBlock implements ReasoningBlockData {
306
+ export declare class ReasoningBlock implements ReasoningBlockData, JSONSerializable<{
307
+ reasoning: Serialized<ReasoningBlockData>;
308
+ }> {
245
309
  /**
246
310
  * Discriminator for reasoning content.
247
311
  */
@@ -259,6 +323,24 @@ export declare class ReasoningBlock implements ReasoningBlockData {
259
323
  */
260
324
  readonly redactedContent?: Uint8Array;
261
325
  constructor(data: ReasoningBlockData);
326
+ /**
327
+ * Serializes the ReasoningBlock to a JSON-compatible ContentBlockData object.
328
+ * Called automatically by JSON.stringify().
329
+ * Uint8Array redactedContent is encoded as base64 string.
330
+ */
331
+ toJSON(): {
332
+ reasoning: Serialized<ReasoningBlockData>;
333
+ };
334
+ /**
335
+ * Creates a ReasoningBlock instance from its wrapped data format.
336
+ * Base64-encoded redactedContent is decoded back to Uint8Array.
337
+ *
338
+ * @param data - Wrapped ReasoningBlockData to deserialize (accepts both string and Uint8Array for redactedContent)
339
+ * @returns ReasoningBlock instance
340
+ */
341
+ static fromJSON(data: {
342
+ reasoning: MaybeSerializedInput<ReasoningBlockData>;
343
+ }): ReasoningBlock;
262
344
  }
263
345
  /**
264
346
  * Data for a cache point block.
@@ -273,7 +355,9 @@ export interface CachePointBlockData {
273
355
  * Cache point block for prompt caching.
274
356
  * Marks a position in a message or system prompt where caching should occur.
275
357
  */
276
- export declare class CachePointBlock implements CachePointBlockData {
358
+ export declare class CachePointBlock implements CachePointBlockData, JSONSerializable<{
359
+ cachePoint: CachePointBlockData;
360
+ }> {
277
361
  /**
278
362
  * Discriminator for cache point.
279
363
  */
@@ -283,6 +367,22 @@ export declare class CachePointBlock implements CachePointBlockData {
283
367
  */
284
368
  readonly cacheType: 'default';
285
369
  constructor(data: CachePointBlockData);
370
+ /**
371
+ * Serializes the CachePointBlock to a JSON-compatible ContentBlockData object.
372
+ * Called automatically by JSON.stringify().
373
+ */
374
+ toJSON(): {
375
+ cachePoint: CachePointBlockData;
376
+ };
377
+ /**
378
+ * Creates a CachePointBlock instance from its wrapped data format.
379
+ *
380
+ * @param data - Wrapped CachePointBlockData to deserialize
381
+ * @returns CachePointBlock instance
382
+ */
383
+ static fromJSON(data: {
384
+ cachePoint: CachePointBlockData;
385
+ }): CachePointBlock;
286
386
  }
287
387
  /**
288
388
  * Data for a JSON block.
@@ -297,7 +397,7 @@ export interface JsonBlockData {
297
397
  * JSON content block within a message.
298
398
  * Used for structured data returned from tools or model responses.
299
399
  */
300
- export declare class JsonBlock implements JsonBlockData {
400
+ export declare class JsonBlock implements JsonBlockData, JSONSerializable<JsonBlockData> {
301
401
  /**
302
402
  * Discriminator for JSON content.
303
403
  */
@@ -307,6 +407,18 @@ export declare class JsonBlock implements JsonBlockData {
307
407
  */
308
408
  readonly json: JSONValue;
309
409
  constructor(data: JsonBlockData);
410
+ /**
411
+ * Serializes the JsonBlock to a JSON-compatible JsonBlockData object.
412
+ * Called automatically by JSON.stringify().
413
+ */
414
+ toJSON(): JsonBlockData;
415
+ /**
416
+ * Creates a JsonBlock instance from JsonBlockData.
417
+ *
418
+ * @param data - JsonBlockData to deserialize
419
+ * @returns JsonBlock instance
420
+ */
421
+ static fromJSON(data: JsonBlockData): JsonBlock;
310
422
  }
311
423
  /**
312
424
  * Reason why the model stopped generating content.
@@ -342,7 +454,7 @@ export type SystemPrompt = string | SystemContentBlock[];
342
454
  * Data representation of a system prompt.
343
455
  * Can be a simple string or an array of system content block data for advanced caching.
344
456
  *
345
- * This is the data interface counterpart to SystemPrompt, following the <name>Data pattern.
457
+ * This is the data interface counterpart to SystemPrompt, following the "Data" pattern.
346
458
  */
347
459
  export type SystemPromptData = string | SystemContentBlockData[];
348
460
  /**
@@ -353,6 +465,13 @@ export type SystemPromptData = string | SystemContentBlockData[];
353
465
  * @returns SystemPrompt with class-based content blocks
354
466
  */
355
467
  export declare function systemPromptFromData(data: SystemPromptData | SystemPrompt): SystemPrompt;
468
+ /**
469
+ * Converts a SystemPrompt to its data representation for serialization.
470
+ *
471
+ * @param prompt - System prompt to convert (string or content block array)
472
+ * @returns SystemPromptData suitable for JSON serialization
473
+ */
474
+ export declare function systemPromptToData(prompt: SystemPrompt): SystemPromptData;
356
475
  /**
357
476
  * A block of content within a system prompt.
358
477
  * Supports text content, cache points, and guard content for prompt caching and guardrail evaluation.
@@ -431,7 +550,9 @@ export interface GuardContentBlockData {
431
550
  * Marks content that should be evaluated by guardrails for safety, grounding, or other policies.
432
551
  * Can be used in both message content and system prompts.
433
552
  */
434
- export declare class GuardContentBlock implements GuardContentBlockData {
553
+ export declare class GuardContentBlock implements GuardContentBlockData, JSONSerializable<{
554
+ guardContent: Serialized<GuardContentBlockData>;
555
+ }> {
435
556
  /**
436
557
  * Discriminator for guard content.
437
558
  */
@@ -445,6 +566,24 @@ export declare class GuardContentBlock implements GuardContentBlockData {
445
566
  */
446
567
  readonly image?: GuardContentImage;
447
568
  constructor(data: GuardContentBlockData);
569
+ /**
570
+ * Serializes the GuardContentBlock to a JSON-compatible ContentBlockData object.
571
+ * Called automatically by JSON.stringify().
572
+ * Uint8Array image bytes are encoded as base64 string.
573
+ */
574
+ toJSON(): {
575
+ guardContent: Serialized<GuardContentBlockData>;
576
+ };
577
+ /**
578
+ * Creates a GuardContentBlock instance from its wrapped data format.
579
+ * Base64-encoded image bytes are decoded back to Uint8Array.
580
+ *
581
+ * @param data - Wrapped GuardContentBlockData to deserialize (accepts both string and Uint8Array for image bytes)
582
+ * @returns GuardContentBlock instance
583
+ */
584
+ static fromJSON(data: {
585
+ guardContent: MaybeSerializedInput<GuardContentBlockData>;
586
+ }): GuardContentBlock;
448
587
  }
449
588
  /**
450
589
  * Converts ContentBlockData to a ContentBlock instance.
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/types/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/types/messages.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { ImageBlock, VideoBlock, DocumentBlock } from './media.js';
1
+ import { omitUndefined } from './json.js';
2
+ import { ImageBlock, VideoBlock, DocumentBlock, encodeBase64, decodeBase64 } from './media.js';
2
3
  /**
3
4
  * A message in a conversation between user and assistant.
4
5
  * Each message has a role (user or assistant) and an array of content blocks.
@@ -30,6 +31,26 @@ export class Message {
30
31
  content: contentBlocks,
31
32
  });
32
33
  }
34
+ /**
35
+ * Serializes the Message to a JSON-compatible MessageData object.
36
+ * Called automatically by JSON.stringify().
37
+ */
38
+ toJSON() {
39
+ return {
40
+ role: this.role,
41
+ content: this.content.map((block) => block.toJSON()),
42
+ };
43
+ }
44
+ /**
45
+ * Creates a Message instance from MessageData.
46
+ * Alias for fromMessageData for API consistency.
47
+ *
48
+ * @param data - MessageData to deserialize
49
+ * @returns Message instance
50
+ */
51
+ static fromJSON(data) {
52
+ return Message.fromMessageData(data);
53
+ }
33
54
  }
34
55
  /**
35
56
  * Text content block within a message.
@@ -46,6 +67,22 @@ export class TextBlock {
46
67
  constructor(data) {
47
68
  this.text = data;
48
69
  }
70
+ /**
71
+ * Serializes the TextBlock to a JSON-compatible TextBlockData object.
72
+ * Called automatically by JSON.stringify().
73
+ */
74
+ toJSON() {
75
+ return { text: this.text };
76
+ }
77
+ /**
78
+ * Creates a TextBlock instance from TextBlockData.
79
+ *
80
+ * @param data - TextBlockData to deserialize
81
+ * @returns TextBlock instance
82
+ */
83
+ static fromJSON(data) {
84
+ return new TextBlock(data.text);
85
+ }
49
86
  }
50
87
  /**
51
88
  * Tool use content block.
@@ -81,6 +118,29 @@ export class ToolUseBlock {
81
118
  this.reasoningSignature = data.reasoningSignature;
82
119
  }
83
120
  }
121
+ /**
122
+ * Serializes the ToolUseBlock to a JSON-compatible ContentBlockData object.
123
+ * Called automatically by JSON.stringify().
124
+ */
125
+ toJSON() {
126
+ return {
127
+ toolUse: omitUndefined({
128
+ name: this.name,
129
+ toolUseId: this.toolUseId,
130
+ input: this.input,
131
+ reasoningSignature: this.reasoningSignature,
132
+ }),
133
+ };
134
+ }
135
+ /**
136
+ * Creates a ToolUseBlock instance from its wrapped data format.
137
+ *
138
+ * @param data - Wrapped ToolUseBlockData to deserialize
139
+ * @returns ToolUseBlock instance
140
+ */
141
+ static fromJSON(data) {
142
+ return new ToolUseBlock(data.toolUse);
143
+ }
84
144
  }
85
145
  /**
86
146
  * Tool result content block.
@@ -104,7 +164,7 @@ export class ToolResultBlock {
104
164
  content;
105
165
  /**
106
166
  * The original error object when status is 'error'.
107
- * Available for inspection by hooks, error handlers, and event loop.
167
+ * Available for inspection by hooks, error handlers, and agent loop.
108
168
  * Tools must wrap non-Error thrown values into Error objects.
109
169
  */
110
170
  error;
@@ -116,6 +176,44 @@ export class ToolResultBlock {
116
176
  this.error = data.error;
117
177
  }
118
178
  }
179
+ /**
180
+ * Serializes the ToolResultBlock to a JSON-compatible ContentBlockData object.
181
+ * Called automatically by JSON.stringify().
182
+ * Note: The error field is not serialized (deferred for future implementation).
183
+ */
184
+ toJSON() {
185
+ return {
186
+ toolResult: {
187
+ toolUseId: this.toolUseId,
188
+ status: this.status,
189
+ content: this.content.map((block) => block.toJSON()),
190
+ },
191
+ };
192
+ }
193
+ /**
194
+ * Creates a ToolResultBlock instance from its wrapped data format.
195
+ *
196
+ * @param data - Wrapped ToolResultBlockData to deserialize
197
+ * @returns ToolResultBlock instance
198
+ */
199
+ static fromJSON(data) {
200
+ const content = data.toolResult.content.map((contentItem) => {
201
+ if ('text' in contentItem) {
202
+ return new TextBlock(contentItem.text);
203
+ }
204
+ else if ('json' in contentItem) {
205
+ return new JsonBlock(contentItem);
206
+ }
207
+ else {
208
+ throw new Error('Unknown ToolResultContentData type');
209
+ }
210
+ });
211
+ return new ToolResultBlock({
212
+ toolUseId: data.toolResult.toolUseId,
213
+ status: data.toolResult.status,
214
+ content,
215
+ });
216
+ }
119
217
  }
120
218
  /**
121
219
  * Reasoning content block within a message.
@@ -148,6 +246,44 @@ export class ReasoningBlock {
148
246
  this.redactedContent = data.redactedContent;
149
247
  }
150
248
  }
249
+ /**
250
+ * Serializes the ReasoningBlock to a JSON-compatible ContentBlockData object.
251
+ * Called automatically by JSON.stringify().
252
+ * Uint8Array redactedContent is encoded as base64 string.
253
+ */
254
+ toJSON() {
255
+ return {
256
+ reasoning: omitUndefined({
257
+ text: this.text,
258
+ signature: this.signature,
259
+ redactedContent: this.redactedContent ? encodeBase64(this.redactedContent) : undefined,
260
+ }),
261
+ };
262
+ }
263
+ /**
264
+ * Creates a ReasoningBlock instance from its wrapped data format.
265
+ * Base64-encoded redactedContent is decoded back to Uint8Array.
266
+ *
267
+ * @param data - Wrapped ReasoningBlockData to deserialize (accepts both string and Uint8Array for redactedContent)
268
+ * @returns ReasoningBlock instance
269
+ */
270
+ static fromJSON(data) {
271
+ const reasoning = data.reasoning;
272
+ const result = {};
273
+ if (reasoning.text !== undefined) {
274
+ result.text = reasoning.text;
275
+ }
276
+ if (reasoning.signature !== undefined) {
277
+ result.signature = reasoning.signature;
278
+ }
279
+ if (reasoning.redactedContent !== undefined) {
280
+ result.redactedContent =
281
+ typeof reasoning.redactedContent === 'string'
282
+ ? decodeBase64(reasoning.redactedContent)
283
+ : reasoning.redactedContent;
284
+ }
285
+ return new ReasoningBlock(result);
286
+ }
151
287
  }
152
288
  /**
153
289
  * Cache point block for prompt caching.
@@ -165,6 +301,26 @@ export class CachePointBlock {
165
301
  constructor(data) {
166
302
  this.cacheType = data.cacheType;
167
303
  }
304
+ /**
305
+ * Serializes the CachePointBlock to a JSON-compatible ContentBlockData object.
306
+ * Called automatically by JSON.stringify().
307
+ */
308
+ toJSON() {
309
+ return {
310
+ cachePoint: {
311
+ cacheType: this.cacheType,
312
+ },
313
+ };
314
+ }
315
+ /**
316
+ * Creates a CachePointBlock instance from its wrapped data format.
317
+ *
318
+ * @param data - Wrapped CachePointBlockData to deserialize
319
+ * @returns CachePointBlock instance
320
+ */
321
+ static fromJSON(data) {
322
+ return new CachePointBlock(data.cachePoint);
323
+ }
168
324
  }
169
325
  /**
170
326
  * JSON content block within a message.
@@ -182,6 +338,22 @@ export class JsonBlock {
182
338
  constructor(data) {
183
339
  this.json = data.json;
184
340
  }
341
+ /**
342
+ * Serializes the JsonBlock to a JSON-compatible JsonBlockData object.
343
+ * Called automatically by JSON.stringify().
344
+ */
345
+ toJSON() {
346
+ return { json: this.json };
347
+ }
348
+ /**
349
+ * Creates a JsonBlock instance from JsonBlockData.
350
+ *
351
+ * @param data - JsonBlockData to deserialize
352
+ * @returns JsonBlock instance
353
+ */
354
+ static fromJSON(data) {
355
+ return new JsonBlock(data);
356
+ }
185
357
  }
186
358
  /**
187
359
  * Converts SystemPromptData to SystemPrompt by converting data blocks to class instances.
@@ -213,6 +385,19 @@ export function systemPromptFromData(data) {
213
385
  }
214
386
  });
215
387
  }
388
+ /**
389
+ * Converts a SystemPrompt to its data representation for serialization.
390
+ *
391
+ * @param prompt - System prompt to convert (string or content block array)
392
+ * @returns SystemPromptData suitable for JSON serialization
393
+ */
394
+ export function systemPromptToData(prompt) {
395
+ if (typeof prompt === 'string') {
396
+ return prompt;
397
+ }
398
+ // Convert content blocks to their data representation
399
+ return prompt.map((block) => block.toJSON());
400
+ }
216
401
  /**
217
402
  * Guard content block for guardrail evaluation.
218
403
  * Marks content that should be evaluated by guardrails for safety, grounding, or other policies.
@@ -245,6 +430,48 @@ export class GuardContentBlock {
245
430
  this.image = data.image;
246
431
  }
247
432
  }
433
+ /**
434
+ * Serializes the GuardContentBlock to a JSON-compatible ContentBlockData object.
435
+ * Called automatically by JSON.stringify().
436
+ * Uint8Array image bytes are encoded as base64 string.
437
+ */
438
+ toJSON() {
439
+ const data = {};
440
+ if (this.text) {
441
+ data.text = this.text;
442
+ }
443
+ if (this.image) {
444
+ data.image = {
445
+ format: this.image.format,
446
+ source: { bytes: encodeBase64(this.image.source.bytes) },
447
+ };
448
+ }
449
+ return { guardContent: data };
450
+ }
451
+ /**
452
+ * Creates a GuardContentBlock instance from its wrapped data format.
453
+ * Base64-encoded image bytes are decoded back to Uint8Array.
454
+ *
455
+ * @param data - Wrapped GuardContentBlockData to deserialize (accepts both string and Uint8Array for image bytes)
456
+ * @returns GuardContentBlock instance
457
+ */
458
+ static fromJSON(data) {
459
+ const guardContent = data.guardContent;
460
+ const result = {};
461
+ if (guardContent.text) {
462
+ result.text = guardContent.text;
463
+ }
464
+ if (guardContent.image) {
465
+ const bytes = guardContent.image.source.bytes;
466
+ result.image = {
467
+ format: guardContent.image.format,
468
+ source: {
469
+ bytes: typeof bytes === 'string' ? decodeBase64(bytes) : bytes,
470
+ },
471
+ };
472
+ }
473
+ return new GuardContentBlock(result);
474
+ }
248
475
  }
249
476
  /**
250
477
  * Converts ContentBlockData to a ContentBlock instance.
@@ -279,22 +506,22 @@ export function contentBlockFromData(data) {
279
506
  });
280
507
  }
281
508
  else if ('reasoning' in data) {
282
- return new ReasoningBlock(data.reasoning);
509
+ return ReasoningBlock.fromJSON(data);
283
510
  }
284
511
  else if ('cachePoint' in data) {
285
- return new CachePointBlock(data.cachePoint);
512
+ return CachePointBlock.fromJSON(data);
286
513
  }
287
514
  else if ('guardContent' in data) {
288
- return new GuardContentBlock(data.guardContent);
515
+ return GuardContentBlock.fromJSON(data);
289
516
  }
290
517
  else if ('image' in data) {
291
- return new ImageBlock(data.image);
518
+ return ImageBlock.fromJSON(data);
292
519
  }
293
520
  else if ('video' in data) {
294
- return new VideoBlock(data.video);
521
+ return VideoBlock.fromJSON(data);
295
522
  }
296
523
  else if ('document' in data) {
297
- return new DocumentBlock(data.document);
524
+ return DocumentBlock.fromJSON(data);
298
525
  }
299
526
  else {
300
527
  throw new Error('Unknown ContentBlockData type');