@agentick/shared 0.0.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 (85) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +322 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/.tsbuildinfo.build +1 -0
  5. package/dist/block-types.d.ts +85 -0
  6. package/dist/block-types.d.ts.map +1 -0
  7. package/dist/block-types.js +98 -0
  8. package/dist/block-types.js.map +1 -0
  9. package/dist/blocks.d.ts +396 -0
  10. package/dist/blocks.d.ts.map +1 -0
  11. package/dist/blocks.js +209 -0
  12. package/dist/blocks.js.map +1 -0
  13. package/dist/devtools.d.ts +672 -0
  14. package/dist/devtools.d.ts.map +1 -0
  15. package/dist/devtools.js +445 -0
  16. package/dist/devtools.js.map +1 -0
  17. package/dist/errors.d.ts +335 -0
  18. package/dist/errors.d.ts.map +1 -0
  19. package/dist/errors.js +529 -0
  20. package/dist/errors.js.map +1 -0
  21. package/dist/identity.d.ts +99 -0
  22. package/dist/identity.d.ts.map +1 -0
  23. package/dist/identity.js +116 -0
  24. package/dist/identity.js.map +1 -0
  25. package/dist/index.d.ts +56 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +56 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/input.d.ts +55 -0
  30. package/dist/input.d.ts.map +1 -0
  31. package/dist/input.js +83 -0
  32. package/dist/input.js.map +1 -0
  33. package/dist/messages.d.ts +98 -0
  34. package/dist/messages.d.ts.map +1 -0
  35. package/dist/messages.js +81 -0
  36. package/dist/messages.js.map +1 -0
  37. package/dist/model-catalog.d.ts +144 -0
  38. package/dist/model-catalog.d.ts.map +1 -0
  39. package/dist/model-catalog.js +861 -0
  40. package/dist/model-catalog.js.map +1 -0
  41. package/dist/models.d.ts +173 -0
  42. package/dist/models.d.ts.map +1 -0
  43. package/dist/models.js +10 -0
  44. package/dist/models.js.map +1 -0
  45. package/dist/protocol.d.ts +257 -0
  46. package/dist/protocol.d.ts.map +1 -0
  47. package/dist/protocol.js +41 -0
  48. package/dist/protocol.js.map +1 -0
  49. package/dist/streaming.d.ts +635 -0
  50. package/dist/streaming.d.ts.map +1 -0
  51. package/dist/streaming.js +134 -0
  52. package/dist/streaming.js.map +1 -0
  53. package/dist/testing/fixtures.d.ts +250 -0
  54. package/dist/testing/fixtures.d.ts.map +1 -0
  55. package/dist/testing/fixtures.js +827 -0
  56. package/dist/testing/fixtures.js.map +1 -0
  57. package/dist/testing/helpers.d.ts +95 -0
  58. package/dist/testing/helpers.d.ts.map +1 -0
  59. package/dist/testing/helpers.js +271 -0
  60. package/dist/testing/helpers.js.map +1 -0
  61. package/dist/testing/index.d.ts +42 -0
  62. package/dist/testing/index.d.ts.map +1 -0
  63. package/dist/testing/index.js +70 -0
  64. package/dist/testing/index.js.map +1 -0
  65. package/dist/timeline.d.ts +59 -0
  66. package/dist/timeline.d.ts.map +1 -0
  67. package/dist/timeline.js +11 -0
  68. package/dist/timeline.js.map +1 -0
  69. package/dist/tools.d.ts +220 -0
  70. package/dist/tools.d.ts.map +1 -0
  71. package/dist/tools.js +63 -0
  72. package/dist/tools.js.map +1 -0
  73. package/dist/utils/entity-ids.d.ts +26 -0
  74. package/dist/utils/entity-ids.d.ts.map +1 -0
  75. package/dist/utils/entity-ids.js +44 -0
  76. package/dist/utils/entity-ids.js.map +1 -0
  77. package/dist/utils/index.d.ts +3 -0
  78. package/dist/utils/index.d.ts.map +1 -0
  79. package/dist/utils/index.js +3 -0
  80. package/dist/utils/index.js.map +1 -0
  81. package/dist/utils/merge-deep.d.ts +10 -0
  82. package/dist/utils/merge-deep.d.ts.map +1 -0
  83. package/dist/utils/merge-deep.js +33 -0
  84. package/dist/utils/merge-deep.js.map +1 -0
  85. package/package.json +84 -0
package/dist/blocks.js ADDED
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Content Blocks - Type-safe content block definitions using discriminated unions.
3
+ *
4
+ * Content blocks represent the atomic units of content in messages. They use
5
+ * discriminated unions (the `type` field) for type-safe handling:
6
+ *
7
+ * - **Text** - Plain text content (`TextBlock`)
8
+ * - **Media** - Images, audio, video, documents (`ImageBlock`, `AudioBlock`, etc.)
9
+ * - **Tool** - Tool calls and results (`ToolUseBlock`, `ToolResultBlock`)
10
+ * - **Data** - Structured data (JSON, XML, CSV, HTML, code)
11
+ * - **Events** - User actions, system events, state changes
12
+ *
13
+ * @example Type narrowing with discriminated unions
14
+ * ```typescript
15
+ * function processBlock(block: ContentBlock) {
16
+ * switch (block.type) {
17
+ * case 'text':
18
+ * console.log(block.text); // TypeScript knows this is TextBlock
19
+ * break;
20
+ * case 'tool_use':
21
+ * console.log(block.name, block.input); // ToolUseBlock
22
+ * break;
23
+ * case 'image':
24
+ * console.log(block.source); // ImageBlock
25
+ * break;
26
+ * }
27
+ * }
28
+ * ```
29
+ *
30
+ * @see {@link ContentBlock} - The union of all content block types
31
+ * @see {@link BlockType} - Enum of block type discriminators
32
+ *
33
+ * @module
34
+ */
35
+ // ============================================================================
36
+ // Helper Functions
37
+ // ============================================================================
38
+ export function isTextBlock(block) {
39
+ return block.type === "text";
40
+ }
41
+ export function isToolUseBlock(block) {
42
+ return block.type === "tool_use";
43
+ }
44
+ export function isToolResultBlock(block) {
45
+ return block.type === "tool_result";
46
+ }
47
+ export function isMediaBlock(block) {
48
+ return (block.type === "image" ||
49
+ block.type === "document" ||
50
+ block.type === "audio" ||
51
+ block.type === "video");
52
+ }
53
+ export function isEventBlock(block) {
54
+ return (block.type === "user_action" || block.type === "system_event" || block.type === "state_change");
55
+ }
56
+ export function isUserActionBlock(block) {
57
+ return block.type === "user_action";
58
+ }
59
+ export function isSystemEventBlock(block) {
60
+ return block.type === "system_event";
61
+ }
62
+ export function isStateChangeBlock(block) {
63
+ return block.type === "state_change";
64
+ }
65
+ export function extractText(blocks) {
66
+ return blocks
67
+ .filter(isTextBlock)
68
+ .map((b) => b.text)
69
+ .join("\n");
70
+ }
71
+ export function extractToolUses(blocks) {
72
+ return blocks.filter(isToolUseBlock);
73
+ }
74
+ // ============================================================================
75
+ // Media Source Helpers
76
+ // ============================================================================
77
+ /**
78
+ * Browser-compatible base64 encoding helper.
79
+ * Uses Buffer in Node.js, browser APIs in browser.
80
+ * Uses globalThis to avoid requiring @types/node in browser environments.
81
+ */
82
+ function uint8ArrayToBase64(bytes) {
83
+ // Node.js environment - use Buffer if available (via globalThis to avoid type dependency)
84
+ const BufferConstructor = globalThis.Buffer;
85
+ if (BufferConstructor && typeof BufferConstructor.from === "function") {
86
+ return BufferConstructor.from(bytes).toString("base64");
87
+ }
88
+ // Browser environment - use btoa with binary string conversion
89
+ let binary = "";
90
+ const len = bytes.byteLength;
91
+ for (let i = 0; i < len; i++) {
92
+ binary += String.fromCharCode(bytes[i]);
93
+ }
94
+ return btoa(binary);
95
+ }
96
+ /**
97
+ * Browser-compatible base64 decoding helper.
98
+ * Uses Buffer in Node.js, browser APIs in browser.
99
+ * Uses globalThis to avoid requiring @types/node in browser environments.
100
+ */
101
+ function base64ToUint8Array(base64) {
102
+ // Node.js environment - use Buffer if available (via globalThis to avoid type dependency)
103
+ const BufferConstructor = globalThis.Buffer;
104
+ if (BufferConstructor && typeof BufferConstructor.from === "function") {
105
+ return new Uint8Array(BufferConstructor.from(base64, "base64"));
106
+ }
107
+ // Browser environment - use atob
108
+ const binary = atob(base64);
109
+ const bytes = new Uint8Array(binary.length);
110
+ for (let i = 0; i < binary.length; i++) {
111
+ bytes[i] = binary.charCodeAt(i);
112
+ }
113
+ return bytes;
114
+ }
115
+ /**
116
+ * Convert a Buffer or Uint8Array to a serializable Base64Source.
117
+ *
118
+ * Browser-compatible: works in both Node.js and browser environments.
119
+ * Uses globalThis to avoid requiring @types/node in browser environments.
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * // Node.js
124
+ * const imageBuffer = await fs.readFile('image.png');
125
+ * const imageBlock: ImageBlock = {
126
+ * type: 'image',
127
+ * source: bufferToBase64Source(imageBuffer, 'image/png'),
128
+ * };
129
+ *
130
+ * // Browser
131
+ * const response = await fetch('image.png');
132
+ * const arrayBuffer = await response.arrayBuffer();
133
+ * const uint8Array = new Uint8Array(arrayBuffer);
134
+ * const imageBlock: ImageBlock = {
135
+ * type: 'image',
136
+ * source: bufferToBase64Source(uint8Array, 'image/png'),
137
+ * };
138
+ * ```
139
+ */
140
+ export function bufferToBase64Source(buffer, mimeType) {
141
+ // Convert Buffer-like object to Uint8Array if needed (Node.js)
142
+ // Check via globalThis to avoid requiring @types/node
143
+ const BufferConstructor = globalThis.Buffer;
144
+ let bytes;
145
+ if (BufferConstructor &&
146
+ typeof BufferConstructor.isBuffer === "function" &&
147
+ BufferConstructor.isBuffer(buffer)) {
148
+ // It's a Node.js Buffer - extract underlying ArrayBuffer
149
+ bytes = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
150
+ }
151
+ else {
152
+ // It's already a Uint8Array
153
+ bytes = buffer;
154
+ }
155
+ const data = uint8ArrayToBase64(bytes);
156
+ return {
157
+ type: "base64",
158
+ data,
159
+ mimeType: mimeType,
160
+ };
161
+ }
162
+ /**
163
+ * Convert a Base64Source back to a Uint8Array.
164
+ *
165
+ * Browser-compatible: returns Uint8Array which works in both Node.js and browser.
166
+ * In Node.js, you can convert to Buffer if needed: `Buffer.from(uint8Array)`
167
+ *
168
+ * @example
169
+ * ```typescript
170
+ * if (imageBlock.source.type === 'base64') {
171
+ * const uint8Array = base64SourceToBuffer(imageBlock.source);
172
+ *
173
+ * // In Node.js, convert to Buffer if needed:
174
+ * // const buffer = Buffer.from(uint8Array);
175
+ *
176
+ * // In browser, use directly:
177
+ * // const blob = new Blob([uint8Array], { type: 'image/png' });
178
+ * }
179
+ * ```
180
+ */
181
+ export function base64SourceToBuffer(source) {
182
+ return base64ToUint8Array(source.data);
183
+ }
184
+ /**
185
+ * Check if a string looks like a URL (http:// or https://).
186
+ * Useful for determining source type from string data.
187
+ */
188
+ export function isUrlString(str) {
189
+ return str.startsWith("http://") || str.startsWith("https://");
190
+ }
191
+ /**
192
+ * Create a MediaSource from a string (auto-detects URL vs base64).
193
+ *
194
+ * @example
195
+ * ```typescript
196
+ * const source = stringToMediaSource('https://example.com/image.png');
197
+ * // { type: 'url', url: 'https://example.com/image.png' }
198
+ *
199
+ * const source = stringToMediaSource('iVBORw0KGgo...');
200
+ * // { type: 'base64', data: 'iVBORw0KGgo...' }
201
+ * ```
202
+ */
203
+ export function stringToMediaSource(str, mimeType) {
204
+ if (isUrlString(str)) {
205
+ return { type: "url", url: str, mimeType };
206
+ }
207
+ return { type: "base64", data: str, mimeType };
208
+ }
209
+ //# sourceMappingURL=blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"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"}