@agents24/embed-sdk 1.0.0 → 1.0.2

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.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # `@agents24/embed-sdk`
2
2
 
3
- Last Updated: 2026-03-17
3
+ Last Updated: 2026-03-19
4
4
 
5
5
  `@agents24/embed-sdk` is the canonical server-only TypeScript SDK for Talmudpedia embedded-agent runtime.
6
6
 
@@ -124,6 +124,13 @@ type StreamAgentResult = {
124
124
 
125
125
  `onEvent` receives typed `run-stream.v2` envelopes.
126
126
 
127
+ Current behavior:
128
+
129
+ - callback-based streaming only
130
+ - resolves after the full SSE stream is consumed
131
+ - returns `threadId` from the `X-Thread-ID` response header
132
+ - does not currently expose abort, timeout, retry, or async-iterator helpers
133
+
127
134
  ### `listAgentThreads(agentId, options)`
128
135
 
129
136
  Wraps:
@@ -148,6 +155,77 @@ Options:
148
155
  - `externalUserId`
149
156
  - `externalSessionId?`
150
157
 
158
+ Returned turn shape includes:
159
+
160
+ - `id`
161
+ - `run_id`
162
+ - `turn_index`
163
+ - `user_input_text`
164
+ - `assistant_output_text`
165
+ - `status`
166
+ - `usage_tokens`
167
+ - `metadata`
168
+ - `created_at`
169
+ - `completed_at`
170
+ - `run_events`
171
+
172
+ `run_events` contains ordered historical non-text `run-stream.v2` events for that turn, intended for replaying tool, reasoning, and OpenUI UI on old chats.
173
+
174
+ Current generative UI event:
175
+
176
+ - `assistant.ui`
177
+ - current platform generative UI mode is OpenUI
178
+
179
+ Current `assistant.ui` payload fields:
180
+
181
+ - `format`
182
+ - `version`
183
+ - `content`
184
+ - `content_delta`
185
+ - `ast`
186
+ - `component_library_id`
187
+ - `surface`
188
+ - `is_final`
189
+
190
+ ### `deleteAgentThread(agentId, threadId, options)`
191
+
192
+ Wraps:
193
+
194
+ - `DELETE /public/embed/agents/{agent_id}/threads/{thread_id}`
195
+
196
+ Options:
197
+
198
+ - `externalUserId`
199
+ - `externalSessionId?`
200
+
201
+ ## Exact Current Surface
202
+
203
+ This package currently exposes exactly 4 runtime methods:
204
+
205
+ - `streamAgent(...)`
206
+ - `listAgentThreads(...)`
207
+ - `getAgentThread(...)`
208
+ - `deleteAgentThread(...)`
209
+
210
+ It intentionally does not expose:
211
+
212
+ - a separate run-events fetch method beyond `getAgentThread(...).turns[].run_events`
213
+ - agent/tool/admin management
214
+ - browser auth/session helpers
215
+
216
+ If you need one of those capabilities, treat it as a platform/public-embed contract change first, not just an SDK patch.
217
+
218
+ ## Source Map
219
+
220
+ If you need to change the SDK in an integrated way, start from these files:
221
+
222
+ - SDK client methods: `src/client.ts`
223
+ - SDK request/response types: `src/types.ts`
224
+ - SDK SSE parsing: `src/sse.ts`
225
+ - SDK HTTP/runtime guards: `src/http.ts`
226
+ - public embed backend routes: `../../backend/app/api/routers/embedded_agents_public.py`
227
+ - backend serialization/runtime service: `../../backend/app/services/embedded_agent_runtime_service.py`
228
+
151
229
  ## Thread And History Usage
152
230
 
153
231
  Pass your own application user identity as `external_user_id` on every call.
@@ -200,4 +278,4 @@ See [`examples/express-typescript/`](./examples/express-typescript/) for a minim
200
278
 
201
279
  ## Release Notes
202
280
 
203
- This package is released through GitHub Actions using release-please and npm trusted publishing. Local `npm pack` and `npm run smoke:pack` are the expected pre-release verification commands.
281
+ This package is released through GitHub Actions using direct publish from `main` and npm trusted publishing. Local `npm pack` and `npm run smoke:pack` are the expected pre-release verification commands.
package/dist/index.cjs CHANGED
@@ -321,10 +321,57 @@ var EmbeddedAgentClient = class {
321
321
  `${this.baseUrl}/public/embed/agents/${agentId}/threads/${threadId}?${search.toString()}`
322
322
  );
323
323
  }
324
- async requestJson(url) {
324
+ async deleteAgentThread(agentId, threadId, {
325
+ externalUserId,
326
+ externalSessionId
327
+ }) {
328
+ const search = new URLSearchParams({
329
+ external_user_id: externalUserId
330
+ });
331
+ if (externalSessionId) {
332
+ search.set("external_session_id", externalSessionId);
333
+ }
334
+ return this.requestJson(
335
+ `${this.baseUrl}/public/embed/agents/${agentId}/threads/${threadId}?${search.toString()}`,
336
+ {
337
+ method: "DELETE",
338
+ headers: buildJsonHeaders(this.apiKey)
339
+ }
340
+ );
341
+ }
342
+ async uploadAgentAttachments(agentId, {
343
+ externalUserId,
344
+ externalSessionId,
345
+ threadId,
346
+ files
347
+ }) {
348
+ const formData = new FormData();
349
+ formData.set("external_user_id", externalUserId);
350
+ if (externalSessionId) {
351
+ formData.set("external_session_id", externalSessionId);
352
+ }
353
+ if (threadId) {
354
+ formData.set("thread_id", threadId);
355
+ }
356
+ for (const file of files) {
357
+ formData.append("files", file, file.name);
358
+ }
359
+ return this.requestJson(
360
+ `${this.baseUrl}/public/embed/agents/${agentId}/attachments/upload`,
361
+ {
362
+ method: "POST",
363
+ headers: {
364
+ Authorization: `Bearer ${this.apiKey}`,
365
+ Accept: "application/json"
366
+ },
367
+ body: formData
368
+ }
369
+ );
370
+ }
371
+ async requestJson(url, init) {
325
372
  const response = await this.fetchOrThrow(
326
373
  url,
327
- {
374
+ init || {
328
375
  method: "GET",
329
376
  headers: buildJsonHeaders(this.apiKey)
330
377
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/sse.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export type EmbeddedAgentSDKErrorKind = \"http\" | \"network\" | \"protocol\";\n\ntype EmbeddedAgentSDKErrorOptions = {\n kind: EmbeddedAgentSDKErrorKind;\n status?: number;\n details?: unknown;\n cause?: unknown;\n};\n\nexport class EmbeddedAgentSDKError extends Error {\n public readonly kind: EmbeddedAgentSDKErrorKind;\n public readonly status?: number;\n public readonly details?: unknown;\n\n constructor(message: string, options: EmbeddedAgentSDKErrorOptions) {\n super(message, \"cause\" in Error.prototype ? { cause: options.cause } : undefined);\n this.name = \"EmbeddedAgentSDKError\";\n this.kind = options.kind;\n this.status = options.status;\n this.details = options.details;\n if (!(\"cause\" in this) && options.cause !== undefined) {\n Object.defineProperty(this, \"cause\", {\n configurable: true,\n enumerable: false,\n value: options.cause,\n writable: true,\n });\n }\n }\n}\n","import { EmbeddedAgentSDKError } from \"./errors\";\n\nconst SERVER_ONLY_MESSAGE =\n \"EmbeddedAgentClient is server-only. Keep your Talmudpedia API key on your backend and call the SDK from Node.\";\n\nexport function assertServerRuntime(): void {\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n throw new EmbeddedAgentSDKError(SERVER_ONLY_MESSAGE, { kind: \"protocol\" });\n }\n}\n\nexport function normalizeBaseUrl(baseUrl: string): string {\n const normalized = String(baseUrl || \"\").trim().replace(/\\/+$/, \"\");\n if (!normalized) {\n throw new EmbeddedAgentSDKError(\"EmbeddedAgentClient requires a non-empty baseUrl.\", {\n kind: \"protocol\",\n });\n }\n try {\n return new URL(normalized).toString().replace(/\\/+$/, \"\");\n } catch (cause) {\n throw new EmbeddedAgentSDKError(\"EmbeddedAgentClient received an invalid baseUrl.\", {\n kind: \"protocol\",\n cause,\n details: { baseUrl },\n });\n }\n}\n\nexport function resolveFetchImpl(fetchImpl?: typeof fetch): typeof fetch {\n if (fetchImpl) {\n return fetchImpl;\n }\n if (typeof fetch === \"function\") {\n return fetch;\n }\n throw new EmbeddedAgentSDKError(\n \"No fetch implementation is available. Use Node 18.17+ or pass fetchImpl explicitly.\",\n { kind: \"protocol\" },\n );\n}\n\nexport function buildStreamHeaders(apiKey: string): HeadersInit {\n return {\n Authorization: `Bearer ${apiKey}`,\n Accept: \"text/event-stream\",\n \"Content-Type\": \"application/json\",\n };\n}\n\nexport function buildJsonHeaders(apiKey: string): HeadersInit {\n return {\n Authorization: `Bearer ${apiKey}`,\n Accept: \"application/json\",\n };\n}\n\nfunction extractMessageFromDetails(details: unknown): string | undefined {\n if (!details || typeof details !== \"object\" || Array.isArray(details)) {\n return undefined;\n }\n const detail = (details as { detail?: unknown }).detail;\n return typeof detail === \"string\" && detail.trim() ? detail.trim() : undefined;\n}\n\nasync function parseErrorDetails(response: Response): Promise<unknown> {\n if (typeof response.text === \"function\") {\n try {\n const raw = await response.text();\n if (!raw) {\n return null;\n }\n try {\n return JSON.parse(raw) as unknown;\n } catch {\n return raw;\n }\n } catch {\n return null;\n }\n }\n if (typeof response.json === \"function\") {\n try {\n return await response.json();\n } catch {\n return null;\n }\n }\n return null;\n}\n\nexport async function assertOk(response: Response): Promise<void> {\n if (response.ok) {\n return;\n }\n const details = await parseErrorDetails(response);\n const message =\n extractMessageFromDetails(details) ||\n (typeof details === \"string\" && details.trim()) ||\n response.statusText ||\n \"Request failed\";\n throw new EmbeddedAgentSDKError(message, {\n kind: \"http\",\n status: response.status,\n details,\n });\n}\n\nexport function wrapNetworkError(message: string, cause: unknown): EmbeddedAgentSDKError {\n if (cause instanceof EmbeddedAgentSDKError) {\n return cause;\n }\n return new EmbeddedAgentSDKError(message, {\n kind: \"network\",\n cause,\n details: cause instanceof Error ? { name: cause.name } : undefined,\n });\n}\n","import { EmbeddedAgentSDKError } from \"./errors\";\nimport type { EmbeddedAgentRuntimeDiagnostic, EmbeddedAgentRuntimeEvent } from \"./types\";\n\nfunction parseSSEBlock(block: string): string | null {\n const dataLines: string[] = [];\n const lines = block.split(\"\\n\");\n for (const line of lines) {\n if (!line || line.startsWith(\":\")) {\n continue;\n }\n const separatorIndex = line.indexOf(\":\");\n const field = separatorIndex === -1 ? line : line.slice(0, separatorIndex);\n let value = separatorIndex === -1 ? \"\" : line.slice(separatorIndex + 1);\n if (value.startsWith(\" \")) {\n value = value.slice(1);\n }\n if (field === \"data\") {\n dataLines.push(value);\n }\n }\n if (dataLines.length === 0) {\n return null;\n }\n return dataLines.join(\"\\n\");\n}\n\nfunction assertDiagnostics(value: unknown): EmbeddedAgentRuntimeDiagnostic[] {\n if (!Array.isArray(value)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: diagnostics must be an array.\", {\n kind: \"protocol\",\n details: value,\n });\n }\n return value.map((item) => {\n if (!item || typeof item !== \"object\" || Array.isArray(item)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: diagnostics entries must be objects.\", {\n kind: \"protocol\",\n details: item,\n });\n }\n return item as EmbeddedAgentRuntimeDiagnostic;\n });\n}\n\nfunction assertPayload(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: payload must be an object.\", {\n kind: \"protocol\",\n details: value,\n });\n }\n return value as Record<string, unknown>;\n}\n\nexport function parseRuntimeEvent(rawPayload: string): EmbeddedAgentRuntimeEvent {\n let parsed: unknown;\n try {\n parsed = JSON.parse(rawPayload) as unknown;\n } catch (cause) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: invalid JSON payload.\", {\n kind: \"protocol\",\n cause,\n details: rawPayload,\n });\n }\n\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: expected an object envelope.\", {\n kind: \"protocol\",\n details: parsed,\n });\n }\n\n const candidate = parsed as Record<string, unknown>;\n if (candidate.version !== \"run-stream.v2\") {\n throw new EmbeddedAgentSDKError(\n \"Embedded-agent SSE protocol mismatch: expected run-stream.v2 event envelopes.\",\n {\n kind: \"protocol\",\n details: candidate,\n },\n );\n }\n\n if (\n typeof candidate.seq !== \"number\" ||\n !Number.isFinite(candidate.seq) ||\n typeof candidate.ts !== \"string\" ||\n typeof candidate.event !== \"string\" ||\n typeof candidate.run_id !== \"string\" ||\n typeof candidate.stage !== \"string\"\n ) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: missing required envelope fields.\", {\n kind: \"protocol\",\n details: candidate,\n });\n }\n\n return {\n version: \"run-stream.v2\",\n seq: candidate.seq,\n ts: candidate.ts,\n event: candidate.event,\n run_id: candidate.run_id,\n stage: candidate.stage,\n payload: assertPayload(candidate.payload ?? {}),\n diagnostics: assertDiagnostics(candidate.diagnostics ?? []),\n };\n}\n\nexport async function consumeEventStream(\n response: Response,\n onEvent?: (event: EmbeddedAgentRuntimeEvent) => void | Promise<void>,\n): Promise<void> {\n if (!response.body) {\n throw new EmbeddedAgentSDKError(\"Embedded-agent stream response did not include a readable body.\", {\n kind: \"protocol\",\n });\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n while (true) {\n const { done, value } = await reader.read();\n buffer += decoder.decode(value ?? new Uint8Array(), { stream: !done }).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\n let separatorIndex = buffer.indexOf(\"\\n\\n\");\n while (separatorIndex !== -1) {\n const block = buffer.slice(0, separatorIndex);\n buffer = buffer.slice(separatorIndex + 2);\n const payload = parseSSEBlock(block);\n if (payload) {\n const event = parseRuntimeEvent(payload);\n if (onEvent) {\n await onEvent(event);\n }\n }\n separatorIndex = buffer.indexOf(\"\\n\\n\");\n }\n\n if (done) {\n break;\n }\n }\n\n const trailingPayload = parseSSEBlock(buffer.trim());\n if (trailingPayload) {\n const event = parseRuntimeEvent(trailingPayload);\n if (onEvent) {\n await onEvent(event);\n }\n }\n}\n","import { EmbeddedAgentSDKError } from \"./errors\";\nimport {\n assertOk,\n assertServerRuntime,\n buildJsonHeaders,\n buildStreamHeaders,\n normalizeBaseUrl,\n resolveFetchImpl,\n wrapNetworkError,\n} from \"./http\";\nimport { consumeEventStream } from \"./sse\";\nimport type {\n EmbeddedAgentClientOptions,\n EmbeddedAgentRuntimeEvent,\n EmbeddedAgentStreamRequest,\n EmbeddedAgentThreadDetail,\n EmbeddedAgentThreadDetailOptions,\n EmbeddedAgentThreadListOptions,\n EmbeddedAgentThreadsResponse,\n StreamAgentResult,\n} from \"./types\";\n\nexport class EmbeddedAgentClient {\n private readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly fetchImpl: typeof fetch;\n\n constructor({ baseUrl, apiKey, fetchImpl }: EmbeddedAgentClientOptions) {\n assertServerRuntime();\n const normalizedApiKey = String(apiKey || \"\").trim();\n if (!normalizedApiKey) {\n throw new EmbeddedAgentSDKError(\"EmbeddedAgentClient requires a non-empty apiKey.\", {\n kind: \"protocol\",\n });\n }\n this.baseUrl = normalizeBaseUrl(baseUrl);\n this.apiKey = normalizedApiKey;\n this.fetchImpl = resolveFetchImpl(fetchImpl);\n }\n\n async streamAgent(\n agentId: string,\n payload: EmbeddedAgentStreamRequest,\n onEvent?: (event: EmbeddedAgentRuntimeEvent) => void | Promise<void>,\n ): Promise<StreamAgentResult> {\n const response = await this.fetchOrThrow(\n `${this.baseUrl}/public/embed/agents/${agentId}/chat/stream`,\n {\n method: \"POST\",\n headers: buildStreamHeaders(this.apiKey),\n body: JSON.stringify(payload),\n },\n \"Failed to connect to the embedded-agent stream endpoint.\",\n );\n\n await assertOk(response);\n const threadId = response.headers.get(\"X-Thread-ID\");\n await consumeEventStream(response, onEvent);\n return { threadId };\n }\n\n async listAgentThreads(\n agentId: string,\n {\n externalUserId,\n externalSessionId,\n skip = 0,\n limit = 20,\n }: EmbeddedAgentThreadListOptions,\n ): Promise<EmbeddedAgentThreadsResponse> {\n const search = new URLSearchParams({\n external_user_id: externalUserId,\n skip: String(skip),\n limit: String(limit),\n });\n if (externalSessionId) {\n search.set(\"external_session_id\", externalSessionId);\n }\n return this.requestJson<EmbeddedAgentThreadsResponse>(\n `${this.baseUrl}/public/embed/agents/${agentId}/threads?${search.toString()}`,\n );\n }\n\n async getAgentThread(\n agentId: string,\n threadId: string,\n {\n externalUserId,\n externalSessionId,\n }: EmbeddedAgentThreadDetailOptions,\n ): Promise<EmbeddedAgentThreadDetail> {\n const search = new URLSearchParams({\n external_user_id: externalUserId,\n });\n if (externalSessionId) {\n search.set(\"external_session_id\", externalSessionId);\n }\n return this.requestJson<EmbeddedAgentThreadDetail>(\n `${this.baseUrl}/public/embed/agents/${agentId}/threads/${threadId}?${search.toString()}`,\n );\n }\n\n private async requestJson<T>(url: string): Promise<T> {\n const response = await this.fetchOrThrow(\n url,\n {\n method: \"GET\",\n headers: buildJsonHeaders(this.apiKey),\n },\n \"Failed to connect to the embedded-agent API.\",\n );\n await assertOk(response);\n return (await response.json()) as T;\n }\n\n private async fetchOrThrow(url: string, init: RequestInit, networkMessage: string): Promise<Response> {\n try {\n return await this.fetchImpl(url, init);\n } catch (cause) {\n throw wrapNetworkError(networkMessage, cause);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/sse.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export type EmbeddedAgentSDKErrorKind = \"http\" | \"network\" | \"protocol\";\n\ntype EmbeddedAgentSDKErrorOptions = {\n kind: EmbeddedAgentSDKErrorKind;\n status?: number;\n details?: unknown;\n cause?: unknown;\n};\n\nexport class EmbeddedAgentSDKError extends Error {\n public readonly kind: EmbeddedAgentSDKErrorKind;\n public readonly status?: number;\n public readonly details?: unknown;\n\n constructor(message: string, options: EmbeddedAgentSDKErrorOptions) {\n super(message, \"cause\" in Error.prototype ? { cause: options.cause } : undefined);\n this.name = \"EmbeddedAgentSDKError\";\n this.kind = options.kind;\n this.status = options.status;\n this.details = options.details;\n if (!(\"cause\" in this) && options.cause !== undefined) {\n Object.defineProperty(this, \"cause\", {\n configurable: true,\n enumerable: false,\n value: options.cause,\n writable: true,\n });\n }\n }\n}\n","import { EmbeddedAgentSDKError } from \"./errors\";\n\nconst SERVER_ONLY_MESSAGE =\n \"EmbeddedAgentClient is server-only. Keep your Talmudpedia API key on your backend and call the SDK from Node.\";\n\nexport function assertServerRuntime(): void {\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n throw new EmbeddedAgentSDKError(SERVER_ONLY_MESSAGE, { kind: \"protocol\" });\n }\n}\n\nexport function normalizeBaseUrl(baseUrl: string): string {\n const normalized = String(baseUrl || \"\").trim().replace(/\\/+$/, \"\");\n if (!normalized) {\n throw new EmbeddedAgentSDKError(\"EmbeddedAgentClient requires a non-empty baseUrl.\", {\n kind: \"protocol\",\n });\n }\n try {\n return new URL(normalized).toString().replace(/\\/+$/, \"\");\n } catch (cause) {\n throw new EmbeddedAgentSDKError(\"EmbeddedAgentClient received an invalid baseUrl.\", {\n kind: \"protocol\",\n cause,\n details: { baseUrl },\n });\n }\n}\n\nexport function resolveFetchImpl(fetchImpl?: typeof fetch): typeof fetch {\n if (fetchImpl) {\n return fetchImpl;\n }\n if (typeof fetch === \"function\") {\n return fetch;\n }\n throw new EmbeddedAgentSDKError(\n \"No fetch implementation is available. Use Node 18.17+ or pass fetchImpl explicitly.\",\n { kind: \"protocol\" },\n );\n}\n\nexport function buildStreamHeaders(apiKey: string): HeadersInit {\n return {\n Authorization: `Bearer ${apiKey}`,\n Accept: \"text/event-stream\",\n \"Content-Type\": \"application/json\",\n };\n}\n\nexport function buildJsonHeaders(apiKey: string): HeadersInit {\n return {\n Authorization: `Bearer ${apiKey}`,\n Accept: \"application/json\",\n };\n}\n\nfunction extractMessageFromDetails(details: unknown): string | undefined {\n if (!details || typeof details !== \"object\" || Array.isArray(details)) {\n return undefined;\n }\n const detail = (details as { detail?: unknown }).detail;\n return typeof detail === \"string\" && detail.trim() ? detail.trim() : undefined;\n}\n\nasync function parseErrorDetails(response: Response): Promise<unknown> {\n if (typeof response.text === \"function\") {\n try {\n const raw = await response.text();\n if (!raw) {\n return null;\n }\n try {\n return JSON.parse(raw) as unknown;\n } catch {\n return raw;\n }\n } catch {\n return null;\n }\n }\n if (typeof response.json === \"function\") {\n try {\n return await response.json();\n } catch {\n return null;\n }\n }\n return null;\n}\n\nexport async function assertOk(response: Response): Promise<void> {\n if (response.ok) {\n return;\n }\n const details = await parseErrorDetails(response);\n const message =\n extractMessageFromDetails(details) ||\n (typeof details === \"string\" && details.trim()) ||\n response.statusText ||\n \"Request failed\";\n throw new EmbeddedAgentSDKError(message, {\n kind: \"http\",\n status: response.status,\n details,\n });\n}\n\nexport function wrapNetworkError(message: string, cause: unknown): EmbeddedAgentSDKError {\n if (cause instanceof EmbeddedAgentSDKError) {\n return cause;\n }\n return new EmbeddedAgentSDKError(message, {\n kind: \"network\",\n cause,\n details: cause instanceof Error ? { name: cause.name } : undefined,\n });\n}\n","import { EmbeddedAgentSDKError } from \"./errors\";\nimport type { EmbeddedAgentRuntimeDiagnostic, EmbeddedAgentRuntimeEvent } from \"./types\";\n\nfunction parseSSEBlock(block: string): string | null {\n const dataLines: string[] = [];\n const lines = block.split(\"\\n\");\n for (const line of lines) {\n if (!line || line.startsWith(\":\")) {\n continue;\n }\n const separatorIndex = line.indexOf(\":\");\n const field = separatorIndex === -1 ? line : line.slice(0, separatorIndex);\n let value = separatorIndex === -1 ? \"\" : line.slice(separatorIndex + 1);\n if (value.startsWith(\" \")) {\n value = value.slice(1);\n }\n if (field === \"data\") {\n dataLines.push(value);\n }\n }\n if (dataLines.length === 0) {\n return null;\n }\n return dataLines.join(\"\\n\");\n}\n\nfunction assertDiagnostics(value: unknown): EmbeddedAgentRuntimeDiagnostic[] {\n if (!Array.isArray(value)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: diagnostics must be an array.\", {\n kind: \"protocol\",\n details: value,\n });\n }\n return value.map((item) => {\n if (!item || typeof item !== \"object\" || Array.isArray(item)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: diagnostics entries must be objects.\", {\n kind: \"protocol\",\n details: item,\n });\n }\n return item as EmbeddedAgentRuntimeDiagnostic;\n });\n}\n\nfunction assertPayload(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: payload must be an object.\", {\n kind: \"protocol\",\n details: value,\n });\n }\n return value as Record<string, unknown>;\n}\n\nexport function parseRuntimeEvent(rawPayload: string): EmbeddedAgentRuntimeEvent {\n let parsed: unknown;\n try {\n parsed = JSON.parse(rawPayload) as unknown;\n } catch (cause) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: invalid JSON payload.\", {\n kind: \"protocol\",\n cause,\n details: rawPayload,\n });\n }\n\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: expected an object envelope.\", {\n kind: \"protocol\",\n details: parsed,\n });\n }\n\n const candidate = parsed as Record<string, unknown>;\n if (candidate.version !== \"run-stream.v2\") {\n throw new EmbeddedAgentSDKError(\n \"Embedded-agent SSE protocol mismatch: expected run-stream.v2 event envelopes.\",\n {\n kind: \"protocol\",\n details: candidate,\n },\n );\n }\n\n if (\n typeof candidate.seq !== \"number\" ||\n !Number.isFinite(candidate.seq) ||\n typeof candidate.ts !== \"string\" ||\n typeof candidate.event !== \"string\" ||\n typeof candidate.run_id !== \"string\" ||\n typeof candidate.stage !== \"string\"\n ) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: missing required envelope fields.\", {\n kind: \"protocol\",\n details: candidate,\n });\n }\n\n return {\n version: \"run-stream.v2\",\n seq: candidate.seq,\n ts: candidate.ts,\n event: candidate.event,\n run_id: candidate.run_id,\n stage: candidate.stage,\n payload: assertPayload(candidate.payload ?? {}),\n diagnostics: assertDiagnostics(candidate.diagnostics ?? []),\n };\n}\n\nexport async function consumeEventStream(\n response: Response,\n onEvent?: (event: EmbeddedAgentRuntimeEvent) => void | Promise<void>,\n): Promise<void> {\n if (!response.body) {\n throw new EmbeddedAgentSDKError(\"Embedded-agent stream response did not include a readable body.\", {\n kind: \"protocol\",\n });\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n while (true) {\n const { done, value } = await reader.read();\n buffer += decoder.decode(value ?? new Uint8Array(), { stream: !done }).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\n let separatorIndex = buffer.indexOf(\"\\n\\n\");\n while (separatorIndex !== -1) {\n const block = buffer.slice(0, separatorIndex);\n buffer = buffer.slice(separatorIndex + 2);\n const payload = parseSSEBlock(block);\n if (payload) {\n const event = parseRuntimeEvent(payload);\n if (onEvent) {\n await onEvent(event);\n }\n }\n separatorIndex = buffer.indexOf(\"\\n\\n\");\n }\n\n if (done) {\n break;\n }\n }\n\n const trailingPayload = parseSSEBlock(buffer.trim());\n if (trailingPayload) {\n const event = parseRuntimeEvent(trailingPayload);\n if (onEvent) {\n await onEvent(event);\n }\n }\n}\n","import { EmbeddedAgentSDKError } from \"./errors\";\nimport {\n assertOk,\n assertServerRuntime,\n buildJsonHeaders,\n buildStreamHeaders,\n normalizeBaseUrl,\n resolveFetchImpl,\n wrapNetworkError,\n} from \"./http\";\nimport { consumeEventStream } from \"./sse\";\nimport type {\n EmbeddedAgentAttachmentUploadOptions,\n EmbeddedAgentAttachmentUploadResult,\n EmbeddedAgentClientOptions,\n EmbeddedAgentRuntimeEvent,\n EmbeddedAgentStreamRequest,\n EmbeddedAgentThreadDetail,\n EmbeddedAgentThreadDeleteOptions,\n EmbeddedAgentThreadDeleteResult,\n EmbeddedAgentThreadDetailOptions,\n EmbeddedAgentThreadListOptions,\n EmbeddedAgentThreadsResponse,\n StreamAgentResult,\n} from \"./types\";\n\nexport class EmbeddedAgentClient {\n private readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly fetchImpl: typeof fetch;\n\n constructor({ baseUrl, apiKey, fetchImpl }: EmbeddedAgentClientOptions) {\n assertServerRuntime();\n const normalizedApiKey = String(apiKey || \"\").trim();\n if (!normalizedApiKey) {\n throw new EmbeddedAgentSDKError(\"EmbeddedAgentClient requires a non-empty apiKey.\", {\n kind: \"protocol\",\n });\n }\n this.baseUrl = normalizeBaseUrl(baseUrl);\n this.apiKey = normalizedApiKey;\n this.fetchImpl = resolveFetchImpl(fetchImpl);\n }\n\n async streamAgent(\n agentId: string,\n payload: EmbeddedAgentStreamRequest,\n onEvent?: (event: EmbeddedAgentRuntimeEvent) => void | Promise<void>,\n ): Promise<StreamAgentResult> {\n const response = await this.fetchOrThrow(\n `${this.baseUrl}/public/embed/agents/${agentId}/chat/stream`,\n {\n method: \"POST\",\n headers: buildStreamHeaders(this.apiKey),\n body: JSON.stringify(payload),\n },\n \"Failed to connect to the embedded-agent stream endpoint.\",\n );\n\n await assertOk(response);\n const threadId = response.headers.get(\"X-Thread-ID\");\n await consumeEventStream(response, onEvent);\n return { threadId };\n }\n\n async listAgentThreads(\n agentId: string,\n {\n externalUserId,\n externalSessionId,\n skip = 0,\n limit = 20,\n }: EmbeddedAgentThreadListOptions,\n ): Promise<EmbeddedAgentThreadsResponse> {\n const search = new URLSearchParams({\n external_user_id: externalUserId,\n skip: String(skip),\n limit: String(limit),\n });\n if (externalSessionId) {\n search.set(\"external_session_id\", externalSessionId);\n }\n return this.requestJson<EmbeddedAgentThreadsResponse>(\n `${this.baseUrl}/public/embed/agents/${agentId}/threads?${search.toString()}`,\n );\n }\n\n async getAgentThread(\n agentId: string,\n threadId: string,\n {\n externalUserId,\n externalSessionId,\n }: EmbeddedAgentThreadDetailOptions,\n ): Promise<EmbeddedAgentThreadDetail> {\n const search = new URLSearchParams({\n external_user_id: externalUserId,\n });\n if (externalSessionId) {\n search.set(\"external_session_id\", externalSessionId);\n }\n return this.requestJson<EmbeddedAgentThreadDetail>(\n `${this.baseUrl}/public/embed/agents/${agentId}/threads/${threadId}?${search.toString()}`,\n );\n }\n\n async deleteAgentThread(\n agentId: string,\n threadId: string,\n {\n externalUserId,\n externalSessionId,\n }: EmbeddedAgentThreadDeleteOptions,\n ): Promise<EmbeddedAgentThreadDeleteResult> {\n const search = new URLSearchParams({\n external_user_id: externalUserId,\n });\n if (externalSessionId) {\n search.set(\"external_session_id\", externalSessionId);\n }\n return this.requestJson<EmbeddedAgentThreadDeleteResult>(\n `${this.baseUrl}/public/embed/agents/${agentId}/threads/${threadId}?${search.toString()}`,\n {\n method: \"DELETE\",\n headers: buildJsonHeaders(this.apiKey),\n },\n );\n }\n\n async uploadAgentAttachments(\n agentId: string,\n {\n externalUserId,\n externalSessionId,\n threadId,\n files,\n }: EmbeddedAgentAttachmentUploadOptions,\n ): Promise<EmbeddedAgentAttachmentUploadResult> {\n const formData = new FormData();\n formData.set(\"external_user_id\", externalUserId);\n if (externalSessionId) {\n formData.set(\"external_session_id\", externalSessionId);\n }\n if (threadId) {\n formData.set(\"thread_id\", threadId);\n }\n for (const file of files) {\n formData.append(\"files\", file, file.name);\n }\n return this.requestJson<EmbeddedAgentAttachmentUploadResult>(\n `${this.baseUrl}/public/embed/agents/${agentId}/attachments/upload`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.apiKey}`,\n Accept: \"application/json\",\n },\n body: formData,\n },\n );\n }\n\n private async requestJson<T>(url: string, init?: RequestInit): Promise<T> {\n const response = await this.fetchOrThrow(\n url,\n init || {\n method: \"GET\",\n headers: buildJsonHeaders(this.apiKey),\n },\n \"Failed to connect to the embedded-agent API.\",\n );\n await assertOk(response);\n return (await response.json()) as T;\n }\n\n private async fetchOrThrow(url: string, init: RequestInit, networkMessage: string): Promise<Response> {\n try {\n return await this.fetchImpl(url, init);\n } catch (cause) {\n throw wrapNetworkError(networkMessage, cause);\n }\n }\n}\n"]}
package/dist/index.d.cts CHANGED
@@ -15,12 +15,26 @@ declare class EmbeddedAgentSDKError extends Error {
15
15
  type EmbeddedAgentStreamRequest = {
16
16
  input?: string;
17
17
  messages?: Array<Record<string, unknown>>;
18
+ attachment_ids?: string[];
18
19
  thread_id?: string;
19
20
  external_user_id: string;
20
21
  external_session_id?: string;
21
22
  metadata?: Record<string, unknown>;
22
23
  client?: Record<string, unknown>;
23
24
  };
25
+ type EmbeddedAgentAttachment = {
26
+ id: string;
27
+ thread_id: string | null;
28
+ kind: string;
29
+ filename: string;
30
+ mime_type: string;
31
+ byte_size: number;
32
+ status: string;
33
+ processing_error: string | null;
34
+ metadata: Record<string, unknown>;
35
+ created_at: string;
36
+ updated_at: string;
37
+ };
24
38
  type EmbeddedAgentThreadSummary = {
25
39
  id: string;
26
40
  agent_id: string | null;
@@ -43,8 +57,10 @@ type EmbeddedAgentThreadTurn = {
43
57
  status: string;
44
58
  usage_tokens: number;
45
59
  metadata: Record<string, unknown>;
60
+ attachments: EmbeddedAgentAttachment[];
46
61
  created_at: string;
47
62
  completed_at: string | null;
63
+ run_events: EmbeddedAgentRuntimeEvent[];
48
64
  };
49
65
  type EmbeddedAgentThreadDetail = EmbeddedAgentThreadSummary & {
50
66
  turns: EmbeddedAgentThreadTurn[];
@@ -56,7 +72,17 @@ type EmbeddedAgentThreadsResponse = {
56
72
  type EmbeddedAgentRuntimeDiagnostic = {
57
73
  message?: string;
58
74
  } & Record<string, unknown>;
59
- type EmbeddedAgentRuntimeEvent = {
75
+ type EmbeddedAgentUiPayload = {
76
+ format: "openui";
77
+ version: 1;
78
+ content?: string | null;
79
+ content_delta?: string | null;
80
+ ast?: Record<string, unknown> | null;
81
+ component_library_id?: string | null;
82
+ surface?: "chat_inline" | "app_canvas" | string | null;
83
+ is_final?: boolean;
84
+ };
85
+ type EmbeddedAgentRuntimeEventBase = {
60
86
  version: "run-stream.v2";
61
87
  seq: number;
62
88
  ts: string;
@@ -66,6 +92,12 @@ type EmbeddedAgentRuntimeEvent = {
66
92
  payload: Record<string, unknown>;
67
93
  diagnostics: EmbeddedAgentRuntimeDiagnostic[];
68
94
  };
95
+ type EmbeddedAgentUiRuntimeEvent = Omit<EmbeddedAgentRuntimeEventBase, "event" | "stage" | "payload"> & {
96
+ event: "assistant.ui";
97
+ stage: "assistant";
98
+ payload: EmbeddedAgentUiPayload;
99
+ };
100
+ type EmbeddedAgentRuntimeEvent = EmbeddedAgentUiRuntimeEvent | EmbeddedAgentRuntimeEventBase;
69
101
  type StreamAgentResult = {
70
102
  threadId: string | null;
71
103
  };
@@ -79,6 +111,22 @@ type EmbeddedAgentThreadDetailOptions = {
79
111
  externalUserId: string;
80
112
  externalSessionId?: string;
81
113
  };
114
+ type EmbeddedAgentThreadDeleteOptions = {
115
+ externalUserId: string;
116
+ externalSessionId?: string;
117
+ };
118
+ type EmbeddedAgentThreadDeleteResult = {
119
+ deleted: boolean;
120
+ };
121
+ type EmbeddedAgentAttachmentUploadOptions = {
122
+ externalUserId: string;
123
+ externalSessionId?: string;
124
+ threadId?: string;
125
+ files: File[];
126
+ };
127
+ type EmbeddedAgentAttachmentUploadResult = {
128
+ items: EmbeddedAgentAttachment[];
129
+ };
82
130
  type EmbeddedAgentClientOptions = {
83
131
  baseUrl: string;
84
132
  apiKey: string;
@@ -99,8 +147,10 @@ declare class EmbeddedAgentClient {
99
147
  streamAgent(agentId: string, payload: EmbeddedAgentStreamRequest, onEvent?: (event: EmbeddedAgentRuntimeEvent) => void | Promise<void>): Promise<StreamAgentResult>;
100
148
  listAgentThreads(agentId: string, { externalUserId, externalSessionId, skip, limit, }: EmbeddedAgentThreadListOptions): Promise<EmbeddedAgentThreadsResponse>;
101
149
  getAgentThread(agentId: string, threadId: string, { externalUserId, externalSessionId, }: EmbeddedAgentThreadDetailOptions): Promise<EmbeddedAgentThreadDetail>;
150
+ deleteAgentThread(agentId: string, threadId: string, { externalUserId, externalSessionId, }: EmbeddedAgentThreadDeleteOptions): Promise<EmbeddedAgentThreadDeleteResult>;
151
+ uploadAgentAttachments(agentId: string, { externalUserId, externalSessionId, threadId, files, }: EmbeddedAgentAttachmentUploadOptions): Promise<EmbeddedAgentAttachmentUploadResult>;
102
152
  private requestJson;
103
153
  private fetchOrThrow;
104
154
  }
105
155
 
106
- export { EmbeddedAgentClient, type EmbeddedAgentClientOptions, type EmbeddedAgentRuntimeDiagnostic, type EmbeddedAgentRuntimeEvent, EmbeddedAgentSDKError, type EmbeddedAgentSDKErrorKind, type EmbeddedAgentSDKSerializedError, type EmbeddedAgentStreamRequest, type EmbeddedAgentThreadDetail, type EmbeddedAgentThreadDetailOptions, type EmbeddedAgentThreadListOptions, type EmbeddedAgentThreadSummary, type EmbeddedAgentThreadTurn, type EmbeddedAgentThreadsResponse, type StreamAgentResult };
156
+ export { type EmbeddedAgentAttachment, type EmbeddedAgentAttachmentUploadOptions, type EmbeddedAgentAttachmentUploadResult, EmbeddedAgentClient, type EmbeddedAgentClientOptions, type EmbeddedAgentRuntimeDiagnostic, type EmbeddedAgentRuntimeEvent, EmbeddedAgentSDKError, type EmbeddedAgentSDKErrorKind, type EmbeddedAgentSDKSerializedError, type EmbeddedAgentStreamRequest, type EmbeddedAgentThreadDeleteOptions, type EmbeddedAgentThreadDeleteResult, type EmbeddedAgentThreadDetail, type EmbeddedAgentThreadDetailOptions, type EmbeddedAgentThreadListOptions, type EmbeddedAgentThreadSummary, type EmbeddedAgentThreadTurn, type EmbeddedAgentThreadsResponse, type EmbeddedAgentUiPayload, type EmbeddedAgentUiRuntimeEvent, type StreamAgentResult };
package/dist/index.d.ts CHANGED
@@ -15,12 +15,26 @@ declare class EmbeddedAgentSDKError extends Error {
15
15
  type EmbeddedAgentStreamRequest = {
16
16
  input?: string;
17
17
  messages?: Array<Record<string, unknown>>;
18
+ attachment_ids?: string[];
18
19
  thread_id?: string;
19
20
  external_user_id: string;
20
21
  external_session_id?: string;
21
22
  metadata?: Record<string, unknown>;
22
23
  client?: Record<string, unknown>;
23
24
  };
25
+ type EmbeddedAgentAttachment = {
26
+ id: string;
27
+ thread_id: string | null;
28
+ kind: string;
29
+ filename: string;
30
+ mime_type: string;
31
+ byte_size: number;
32
+ status: string;
33
+ processing_error: string | null;
34
+ metadata: Record<string, unknown>;
35
+ created_at: string;
36
+ updated_at: string;
37
+ };
24
38
  type EmbeddedAgentThreadSummary = {
25
39
  id: string;
26
40
  agent_id: string | null;
@@ -43,8 +57,10 @@ type EmbeddedAgentThreadTurn = {
43
57
  status: string;
44
58
  usage_tokens: number;
45
59
  metadata: Record<string, unknown>;
60
+ attachments: EmbeddedAgentAttachment[];
46
61
  created_at: string;
47
62
  completed_at: string | null;
63
+ run_events: EmbeddedAgentRuntimeEvent[];
48
64
  };
49
65
  type EmbeddedAgentThreadDetail = EmbeddedAgentThreadSummary & {
50
66
  turns: EmbeddedAgentThreadTurn[];
@@ -56,7 +72,17 @@ type EmbeddedAgentThreadsResponse = {
56
72
  type EmbeddedAgentRuntimeDiagnostic = {
57
73
  message?: string;
58
74
  } & Record<string, unknown>;
59
- type EmbeddedAgentRuntimeEvent = {
75
+ type EmbeddedAgentUiPayload = {
76
+ format: "openui";
77
+ version: 1;
78
+ content?: string | null;
79
+ content_delta?: string | null;
80
+ ast?: Record<string, unknown> | null;
81
+ component_library_id?: string | null;
82
+ surface?: "chat_inline" | "app_canvas" | string | null;
83
+ is_final?: boolean;
84
+ };
85
+ type EmbeddedAgentRuntimeEventBase = {
60
86
  version: "run-stream.v2";
61
87
  seq: number;
62
88
  ts: string;
@@ -66,6 +92,12 @@ type EmbeddedAgentRuntimeEvent = {
66
92
  payload: Record<string, unknown>;
67
93
  diagnostics: EmbeddedAgentRuntimeDiagnostic[];
68
94
  };
95
+ type EmbeddedAgentUiRuntimeEvent = Omit<EmbeddedAgentRuntimeEventBase, "event" | "stage" | "payload"> & {
96
+ event: "assistant.ui";
97
+ stage: "assistant";
98
+ payload: EmbeddedAgentUiPayload;
99
+ };
100
+ type EmbeddedAgentRuntimeEvent = EmbeddedAgentUiRuntimeEvent | EmbeddedAgentRuntimeEventBase;
69
101
  type StreamAgentResult = {
70
102
  threadId: string | null;
71
103
  };
@@ -79,6 +111,22 @@ type EmbeddedAgentThreadDetailOptions = {
79
111
  externalUserId: string;
80
112
  externalSessionId?: string;
81
113
  };
114
+ type EmbeddedAgentThreadDeleteOptions = {
115
+ externalUserId: string;
116
+ externalSessionId?: string;
117
+ };
118
+ type EmbeddedAgentThreadDeleteResult = {
119
+ deleted: boolean;
120
+ };
121
+ type EmbeddedAgentAttachmentUploadOptions = {
122
+ externalUserId: string;
123
+ externalSessionId?: string;
124
+ threadId?: string;
125
+ files: File[];
126
+ };
127
+ type EmbeddedAgentAttachmentUploadResult = {
128
+ items: EmbeddedAgentAttachment[];
129
+ };
82
130
  type EmbeddedAgentClientOptions = {
83
131
  baseUrl: string;
84
132
  apiKey: string;
@@ -99,8 +147,10 @@ declare class EmbeddedAgentClient {
99
147
  streamAgent(agentId: string, payload: EmbeddedAgentStreamRequest, onEvent?: (event: EmbeddedAgentRuntimeEvent) => void | Promise<void>): Promise<StreamAgentResult>;
100
148
  listAgentThreads(agentId: string, { externalUserId, externalSessionId, skip, limit, }: EmbeddedAgentThreadListOptions): Promise<EmbeddedAgentThreadsResponse>;
101
149
  getAgentThread(agentId: string, threadId: string, { externalUserId, externalSessionId, }: EmbeddedAgentThreadDetailOptions): Promise<EmbeddedAgentThreadDetail>;
150
+ deleteAgentThread(agentId: string, threadId: string, { externalUserId, externalSessionId, }: EmbeddedAgentThreadDeleteOptions): Promise<EmbeddedAgentThreadDeleteResult>;
151
+ uploadAgentAttachments(agentId: string, { externalUserId, externalSessionId, threadId, files, }: EmbeddedAgentAttachmentUploadOptions): Promise<EmbeddedAgentAttachmentUploadResult>;
102
152
  private requestJson;
103
153
  private fetchOrThrow;
104
154
  }
105
155
 
106
- export { EmbeddedAgentClient, type EmbeddedAgentClientOptions, type EmbeddedAgentRuntimeDiagnostic, type EmbeddedAgentRuntimeEvent, EmbeddedAgentSDKError, type EmbeddedAgentSDKErrorKind, type EmbeddedAgentSDKSerializedError, type EmbeddedAgentStreamRequest, type EmbeddedAgentThreadDetail, type EmbeddedAgentThreadDetailOptions, type EmbeddedAgentThreadListOptions, type EmbeddedAgentThreadSummary, type EmbeddedAgentThreadTurn, type EmbeddedAgentThreadsResponse, type StreamAgentResult };
156
+ export { type EmbeddedAgentAttachment, type EmbeddedAgentAttachmentUploadOptions, type EmbeddedAgentAttachmentUploadResult, EmbeddedAgentClient, type EmbeddedAgentClientOptions, type EmbeddedAgentRuntimeDiagnostic, type EmbeddedAgentRuntimeEvent, EmbeddedAgentSDKError, type EmbeddedAgentSDKErrorKind, type EmbeddedAgentSDKSerializedError, type EmbeddedAgentStreamRequest, type EmbeddedAgentThreadDeleteOptions, type EmbeddedAgentThreadDeleteResult, type EmbeddedAgentThreadDetail, type EmbeddedAgentThreadDetailOptions, type EmbeddedAgentThreadListOptions, type EmbeddedAgentThreadSummary, type EmbeddedAgentThreadTurn, type EmbeddedAgentThreadsResponse, type EmbeddedAgentUiPayload, type EmbeddedAgentUiRuntimeEvent, type StreamAgentResult };
package/dist/index.js CHANGED
@@ -319,10 +319,57 @@ var EmbeddedAgentClient = class {
319
319
  `${this.baseUrl}/public/embed/agents/${agentId}/threads/${threadId}?${search.toString()}`
320
320
  );
321
321
  }
322
- async requestJson(url) {
322
+ async deleteAgentThread(agentId, threadId, {
323
+ externalUserId,
324
+ externalSessionId
325
+ }) {
326
+ const search = new URLSearchParams({
327
+ external_user_id: externalUserId
328
+ });
329
+ if (externalSessionId) {
330
+ search.set("external_session_id", externalSessionId);
331
+ }
332
+ return this.requestJson(
333
+ `${this.baseUrl}/public/embed/agents/${agentId}/threads/${threadId}?${search.toString()}`,
334
+ {
335
+ method: "DELETE",
336
+ headers: buildJsonHeaders(this.apiKey)
337
+ }
338
+ );
339
+ }
340
+ async uploadAgentAttachments(agentId, {
341
+ externalUserId,
342
+ externalSessionId,
343
+ threadId,
344
+ files
345
+ }) {
346
+ const formData = new FormData();
347
+ formData.set("external_user_id", externalUserId);
348
+ if (externalSessionId) {
349
+ formData.set("external_session_id", externalSessionId);
350
+ }
351
+ if (threadId) {
352
+ formData.set("thread_id", threadId);
353
+ }
354
+ for (const file of files) {
355
+ formData.append("files", file, file.name);
356
+ }
357
+ return this.requestJson(
358
+ `${this.baseUrl}/public/embed/agents/${agentId}/attachments/upload`,
359
+ {
360
+ method: "POST",
361
+ headers: {
362
+ Authorization: `Bearer ${this.apiKey}`,
363
+ Accept: "application/json"
364
+ },
365
+ body: formData
366
+ }
367
+ );
368
+ }
369
+ async requestJson(url, init) {
323
370
  const response = await this.fetchOrThrow(
324
371
  url,
325
- {
372
+ init || {
326
373
  method: "GET",
327
374
  headers: buildJsonHeaders(this.apiKey)
328
375
  },
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/sse.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export type EmbeddedAgentSDKErrorKind = \"http\" | \"network\" | \"protocol\";\n\ntype EmbeddedAgentSDKErrorOptions = {\n kind: EmbeddedAgentSDKErrorKind;\n status?: number;\n details?: unknown;\n cause?: unknown;\n};\n\nexport class EmbeddedAgentSDKError extends Error {\n public readonly kind: EmbeddedAgentSDKErrorKind;\n public readonly status?: number;\n public readonly details?: unknown;\n\n constructor(message: string, options: EmbeddedAgentSDKErrorOptions) {\n super(message, \"cause\" in Error.prototype ? { cause: options.cause } : undefined);\n this.name = \"EmbeddedAgentSDKError\";\n this.kind = options.kind;\n this.status = options.status;\n this.details = options.details;\n if (!(\"cause\" in this) && options.cause !== undefined) {\n Object.defineProperty(this, \"cause\", {\n configurable: true,\n enumerable: false,\n value: options.cause,\n writable: true,\n });\n }\n }\n}\n","import { EmbeddedAgentSDKError } from \"./errors\";\n\nconst SERVER_ONLY_MESSAGE =\n \"EmbeddedAgentClient is server-only. Keep your Talmudpedia API key on your backend and call the SDK from Node.\";\n\nexport function assertServerRuntime(): void {\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n throw new EmbeddedAgentSDKError(SERVER_ONLY_MESSAGE, { kind: \"protocol\" });\n }\n}\n\nexport function normalizeBaseUrl(baseUrl: string): string {\n const normalized = String(baseUrl || \"\").trim().replace(/\\/+$/, \"\");\n if (!normalized) {\n throw new EmbeddedAgentSDKError(\"EmbeddedAgentClient requires a non-empty baseUrl.\", {\n kind: \"protocol\",\n });\n }\n try {\n return new URL(normalized).toString().replace(/\\/+$/, \"\");\n } catch (cause) {\n throw new EmbeddedAgentSDKError(\"EmbeddedAgentClient received an invalid baseUrl.\", {\n kind: \"protocol\",\n cause,\n details: { baseUrl },\n });\n }\n}\n\nexport function resolveFetchImpl(fetchImpl?: typeof fetch): typeof fetch {\n if (fetchImpl) {\n return fetchImpl;\n }\n if (typeof fetch === \"function\") {\n return fetch;\n }\n throw new EmbeddedAgentSDKError(\n \"No fetch implementation is available. Use Node 18.17+ or pass fetchImpl explicitly.\",\n { kind: \"protocol\" },\n );\n}\n\nexport function buildStreamHeaders(apiKey: string): HeadersInit {\n return {\n Authorization: `Bearer ${apiKey}`,\n Accept: \"text/event-stream\",\n \"Content-Type\": \"application/json\",\n };\n}\n\nexport function buildJsonHeaders(apiKey: string): HeadersInit {\n return {\n Authorization: `Bearer ${apiKey}`,\n Accept: \"application/json\",\n };\n}\n\nfunction extractMessageFromDetails(details: unknown): string | undefined {\n if (!details || typeof details !== \"object\" || Array.isArray(details)) {\n return undefined;\n }\n const detail = (details as { detail?: unknown }).detail;\n return typeof detail === \"string\" && detail.trim() ? detail.trim() : undefined;\n}\n\nasync function parseErrorDetails(response: Response): Promise<unknown> {\n if (typeof response.text === \"function\") {\n try {\n const raw = await response.text();\n if (!raw) {\n return null;\n }\n try {\n return JSON.parse(raw) as unknown;\n } catch {\n return raw;\n }\n } catch {\n return null;\n }\n }\n if (typeof response.json === \"function\") {\n try {\n return await response.json();\n } catch {\n return null;\n }\n }\n return null;\n}\n\nexport async function assertOk(response: Response): Promise<void> {\n if (response.ok) {\n return;\n }\n const details = await parseErrorDetails(response);\n const message =\n extractMessageFromDetails(details) ||\n (typeof details === \"string\" && details.trim()) ||\n response.statusText ||\n \"Request failed\";\n throw new EmbeddedAgentSDKError(message, {\n kind: \"http\",\n status: response.status,\n details,\n });\n}\n\nexport function wrapNetworkError(message: string, cause: unknown): EmbeddedAgentSDKError {\n if (cause instanceof EmbeddedAgentSDKError) {\n return cause;\n }\n return new EmbeddedAgentSDKError(message, {\n kind: \"network\",\n cause,\n details: cause instanceof Error ? { name: cause.name } : undefined,\n });\n}\n","import { EmbeddedAgentSDKError } from \"./errors\";\nimport type { EmbeddedAgentRuntimeDiagnostic, EmbeddedAgentRuntimeEvent } from \"./types\";\n\nfunction parseSSEBlock(block: string): string | null {\n const dataLines: string[] = [];\n const lines = block.split(\"\\n\");\n for (const line of lines) {\n if (!line || line.startsWith(\":\")) {\n continue;\n }\n const separatorIndex = line.indexOf(\":\");\n const field = separatorIndex === -1 ? line : line.slice(0, separatorIndex);\n let value = separatorIndex === -1 ? \"\" : line.slice(separatorIndex + 1);\n if (value.startsWith(\" \")) {\n value = value.slice(1);\n }\n if (field === \"data\") {\n dataLines.push(value);\n }\n }\n if (dataLines.length === 0) {\n return null;\n }\n return dataLines.join(\"\\n\");\n}\n\nfunction assertDiagnostics(value: unknown): EmbeddedAgentRuntimeDiagnostic[] {\n if (!Array.isArray(value)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: diagnostics must be an array.\", {\n kind: \"protocol\",\n details: value,\n });\n }\n return value.map((item) => {\n if (!item || typeof item !== \"object\" || Array.isArray(item)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: diagnostics entries must be objects.\", {\n kind: \"protocol\",\n details: item,\n });\n }\n return item as EmbeddedAgentRuntimeDiagnostic;\n });\n}\n\nfunction assertPayload(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: payload must be an object.\", {\n kind: \"protocol\",\n details: value,\n });\n }\n return value as Record<string, unknown>;\n}\n\nexport function parseRuntimeEvent(rawPayload: string): EmbeddedAgentRuntimeEvent {\n let parsed: unknown;\n try {\n parsed = JSON.parse(rawPayload) as unknown;\n } catch (cause) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: invalid JSON payload.\", {\n kind: \"protocol\",\n cause,\n details: rawPayload,\n });\n }\n\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: expected an object envelope.\", {\n kind: \"protocol\",\n details: parsed,\n });\n }\n\n const candidate = parsed as Record<string, unknown>;\n if (candidate.version !== \"run-stream.v2\") {\n throw new EmbeddedAgentSDKError(\n \"Embedded-agent SSE protocol mismatch: expected run-stream.v2 event envelopes.\",\n {\n kind: \"protocol\",\n details: candidate,\n },\n );\n }\n\n if (\n typeof candidate.seq !== \"number\" ||\n !Number.isFinite(candidate.seq) ||\n typeof candidate.ts !== \"string\" ||\n typeof candidate.event !== \"string\" ||\n typeof candidate.run_id !== \"string\" ||\n typeof candidate.stage !== \"string\"\n ) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: missing required envelope fields.\", {\n kind: \"protocol\",\n details: candidate,\n });\n }\n\n return {\n version: \"run-stream.v2\",\n seq: candidate.seq,\n ts: candidate.ts,\n event: candidate.event,\n run_id: candidate.run_id,\n stage: candidate.stage,\n payload: assertPayload(candidate.payload ?? {}),\n diagnostics: assertDiagnostics(candidate.diagnostics ?? []),\n };\n}\n\nexport async function consumeEventStream(\n response: Response,\n onEvent?: (event: EmbeddedAgentRuntimeEvent) => void | Promise<void>,\n): Promise<void> {\n if (!response.body) {\n throw new EmbeddedAgentSDKError(\"Embedded-agent stream response did not include a readable body.\", {\n kind: \"protocol\",\n });\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n while (true) {\n const { done, value } = await reader.read();\n buffer += decoder.decode(value ?? new Uint8Array(), { stream: !done }).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\n let separatorIndex = buffer.indexOf(\"\\n\\n\");\n while (separatorIndex !== -1) {\n const block = buffer.slice(0, separatorIndex);\n buffer = buffer.slice(separatorIndex + 2);\n const payload = parseSSEBlock(block);\n if (payload) {\n const event = parseRuntimeEvent(payload);\n if (onEvent) {\n await onEvent(event);\n }\n }\n separatorIndex = buffer.indexOf(\"\\n\\n\");\n }\n\n if (done) {\n break;\n }\n }\n\n const trailingPayload = parseSSEBlock(buffer.trim());\n if (trailingPayload) {\n const event = parseRuntimeEvent(trailingPayload);\n if (onEvent) {\n await onEvent(event);\n }\n }\n}\n","import { EmbeddedAgentSDKError } from \"./errors\";\nimport {\n assertOk,\n assertServerRuntime,\n buildJsonHeaders,\n buildStreamHeaders,\n normalizeBaseUrl,\n resolveFetchImpl,\n wrapNetworkError,\n} from \"./http\";\nimport { consumeEventStream } from \"./sse\";\nimport type {\n EmbeddedAgentClientOptions,\n EmbeddedAgentRuntimeEvent,\n EmbeddedAgentStreamRequest,\n EmbeddedAgentThreadDetail,\n EmbeddedAgentThreadDetailOptions,\n EmbeddedAgentThreadListOptions,\n EmbeddedAgentThreadsResponse,\n StreamAgentResult,\n} from \"./types\";\n\nexport class EmbeddedAgentClient {\n private readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly fetchImpl: typeof fetch;\n\n constructor({ baseUrl, apiKey, fetchImpl }: EmbeddedAgentClientOptions) {\n assertServerRuntime();\n const normalizedApiKey = String(apiKey || \"\").trim();\n if (!normalizedApiKey) {\n throw new EmbeddedAgentSDKError(\"EmbeddedAgentClient requires a non-empty apiKey.\", {\n kind: \"protocol\",\n });\n }\n this.baseUrl = normalizeBaseUrl(baseUrl);\n this.apiKey = normalizedApiKey;\n this.fetchImpl = resolveFetchImpl(fetchImpl);\n }\n\n async streamAgent(\n agentId: string,\n payload: EmbeddedAgentStreamRequest,\n onEvent?: (event: EmbeddedAgentRuntimeEvent) => void | Promise<void>,\n ): Promise<StreamAgentResult> {\n const response = await this.fetchOrThrow(\n `${this.baseUrl}/public/embed/agents/${agentId}/chat/stream`,\n {\n method: \"POST\",\n headers: buildStreamHeaders(this.apiKey),\n body: JSON.stringify(payload),\n },\n \"Failed to connect to the embedded-agent stream endpoint.\",\n );\n\n await assertOk(response);\n const threadId = response.headers.get(\"X-Thread-ID\");\n await consumeEventStream(response, onEvent);\n return { threadId };\n }\n\n async listAgentThreads(\n agentId: string,\n {\n externalUserId,\n externalSessionId,\n skip = 0,\n limit = 20,\n }: EmbeddedAgentThreadListOptions,\n ): Promise<EmbeddedAgentThreadsResponse> {\n const search = new URLSearchParams({\n external_user_id: externalUserId,\n skip: String(skip),\n limit: String(limit),\n });\n if (externalSessionId) {\n search.set(\"external_session_id\", externalSessionId);\n }\n return this.requestJson<EmbeddedAgentThreadsResponse>(\n `${this.baseUrl}/public/embed/agents/${agentId}/threads?${search.toString()}`,\n );\n }\n\n async getAgentThread(\n agentId: string,\n threadId: string,\n {\n externalUserId,\n externalSessionId,\n }: EmbeddedAgentThreadDetailOptions,\n ): Promise<EmbeddedAgentThreadDetail> {\n const search = new URLSearchParams({\n external_user_id: externalUserId,\n });\n if (externalSessionId) {\n search.set(\"external_session_id\", externalSessionId);\n }\n return this.requestJson<EmbeddedAgentThreadDetail>(\n `${this.baseUrl}/public/embed/agents/${agentId}/threads/${threadId}?${search.toString()}`,\n );\n }\n\n private async requestJson<T>(url: string): Promise<T> {\n const response = await this.fetchOrThrow(\n url,\n {\n method: \"GET\",\n headers: buildJsonHeaders(this.apiKey),\n },\n \"Failed to connect to the embedded-agent API.\",\n );\n await assertOk(response);\n return (await response.json()) as T;\n }\n\n private async fetchOrThrow(url: string, init: RequestInit, networkMessage: string): Promise<Response> {\n try {\n return await this.fetchImpl(url, init);\n } catch (cause) {\n throw wrapNetworkError(networkMessage, cause);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/sse.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export type EmbeddedAgentSDKErrorKind = \"http\" | \"network\" | \"protocol\";\n\ntype EmbeddedAgentSDKErrorOptions = {\n kind: EmbeddedAgentSDKErrorKind;\n status?: number;\n details?: unknown;\n cause?: unknown;\n};\n\nexport class EmbeddedAgentSDKError extends Error {\n public readonly kind: EmbeddedAgentSDKErrorKind;\n public readonly status?: number;\n public readonly details?: unknown;\n\n constructor(message: string, options: EmbeddedAgentSDKErrorOptions) {\n super(message, \"cause\" in Error.prototype ? { cause: options.cause } : undefined);\n this.name = \"EmbeddedAgentSDKError\";\n this.kind = options.kind;\n this.status = options.status;\n this.details = options.details;\n if (!(\"cause\" in this) && options.cause !== undefined) {\n Object.defineProperty(this, \"cause\", {\n configurable: true,\n enumerable: false,\n value: options.cause,\n writable: true,\n });\n }\n }\n}\n","import { EmbeddedAgentSDKError } from \"./errors\";\n\nconst SERVER_ONLY_MESSAGE =\n \"EmbeddedAgentClient is server-only. Keep your Talmudpedia API key on your backend and call the SDK from Node.\";\n\nexport function assertServerRuntime(): void {\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n throw new EmbeddedAgentSDKError(SERVER_ONLY_MESSAGE, { kind: \"protocol\" });\n }\n}\n\nexport function normalizeBaseUrl(baseUrl: string): string {\n const normalized = String(baseUrl || \"\").trim().replace(/\\/+$/, \"\");\n if (!normalized) {\n throw new EmbeddedAgentSDKError(\"EmbeddedAgentClient requires a non-empty baseUrl.\", {\n kind: \"protocol\",\n });\n }\n try {\n return new URL(normalized).toString().replace(/\\/+$/, \"\");\n } catch (cause) {\n throw new EmbeddedAgentSDKError(\"EmbeddedAgentClient received an invalid baseUrl.\", {\n kind: \"protocol\",\n cause,\n details: { baseUrl },\n });\n }\n}\n\nexport function resolveFetchImpl(fetchImpl?: typeof fetch): typeof fetch {\n if (fetchImpl) {\n return fetchImpl;\n }\n if (typeof fetch === \"function\") {\n return fetch;\n }\n throw new EmbeddedAgentSDKError(\n \"No fetch implementation is available. Use Node 18.17+ or pass fetchImpl explicitly.\",\n { kind: \"protocol\" },\n );\n}\n\nexport function buildStreamHeaders(apiKey: string): HeadersInit {\n return {\n Authorization: `Bearer ${apiKey}`,\n Accept: \"text/event-stream\",\n \"Content-Type\": \"application/json\",\n };\n}\n\nexport function buildJsonHeaders(apiKey: string): HeadersInit {\n return {\n Authorization: `Bearer ${apiKey}`,\n Accept: \"application/json\",\n };\n}\n\nfunction extractMessageFromDetails(details: unknown): string | undefined {\n if (!details || typeof details !== \"object\" || Array.isArray(details)) {\n return undefined;\n }\n const detail = (details as { detail?: unknown }).detail;\n return typeof detail === \"string\" && detail.trim() ? detail.trim() : undefined;\n}\n\nasync function parseErrorDetails(response: Response): Promise<unknown> {\n if (typeof response.text === \"function\") {\n try {\n const raw = await response.text();\n if (!raw) {\n return null;\n }\n try {\n return JSON.parse(raw) as unknown;\n } catch {\n return raw;\n }\n } catch {\n return null;\n }\n }\n if (typeof response.json === \"function\") {\n try {\n return await response.json();\n } catch {\n return null;\n }\n }\n return null;\n}\n\nexport async function assertOk(response: Response): Promise<void> {\n if (response.ok) {\n return;\n }\n const details = await parseErrorDetails(response);\n const message =\n extractMessageFromDetails(details) ||\n (typeof details === \"string\" && details.trim()) ||\n response.statusText ||\n \"Request failed\";\n throw new EmbeddedAgentSDKError(message, {\n kind: \"http\",\n status: response.status,\n details,\n });\n}\n\nexport function wrapNetworkError(message: string, cause: unknown): EmbeddedAgentSDKError {\n if (cause instanceof EmbeddedAgentSDKError) {\n return cause;\n }\n return new EmbeddedAgentSDKError(message, {\n kind: \"network\",\n cause,\n details: cause instanceof Error ? { name: cause.name } : undefined,\n });\n}\n","import { EmbeddedAgentSDKError } from \"./errors\";\nimport type { EmbeddedAgentRuntimeDiagnostic, EmbeddedAgentRuntimeEvent } from \"./types\";\n\nfunction parseSSEBlock(block: string): string | null {\n const dataLines: string[] = [];\n const lines = block.split(\"\\n\");\n for (const line of lines) {\n if (!line || line.startsWith(\":\")) {\n continue;\n }\n const separatorIndex = line.indexOf(\":\");\n const field = separatorIndex === -1 ? line : line.slice(0, separatorIndex);\n let value = separatorIndex === -1 ? \"\" : line.slice(separatorIndex + 1);\n if (value.startsWith(\" \")) {\n value = value.slice(1);\n }\n if (field === \"data\") {\n dataLines.push(value);\n }\n }\n if (dataLines.length === 0) {\n return null;\n }\n return dataLines.join(\"\\n\");\n}\n\nfunction assertDiagnostics(value: unknown): EmbeddedAgentRuntimeDiagnostic[] {\n if (!Array.isArray(value)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: diagnostics must be an array.\", {\n kind: \"protocol\",\n details: value,\n });\n }\n return value.map((item) => {\n if (!item || typeof item !== \"object\" || Array.isArray(item)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: diagnostics entries must be objects.\", {\n kind: \"protocol\",\n details: item,\n });\n }\n return item as EmbeddedAgentRuntimeDiagnostic;\n });\n}\n\nfunction assertPayload(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: payload must be an object.\", {\n kind: \"protocol\",\n details: value,\n });\n }\n return value as Record<string, unknown>;\n}\n\nexport function parseRuntimeEvent(rawPayload: string): EmbeddedAgentRuntimeEvent {\n let parsed: unknown;\n try {\n parsed = JSON.parse(rawPayload) as unknown;\n } catch (cause) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: invalid JSON payload.\", {\n kind: \"protocol\",\n cause,\n details: rawPayload,\n });\n }\n\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: expected an object envelope.\", {\n kind: \"protocol\",\n details: parsed,\n });\n }\n\n const candidate = parsed as Record<string, unknown>;\n if (candidate.version !== \"run-stream.v2\") {\n throw new EmbeddedAgentSDKError(\n \"Embedded-agent SSE protocol mismatch: expected run-stream.v2 event envelopes.\",\n {\n kind: \"protocol\",\n details: candidate,\n },\n );\n }\n\n if (\n typeof candidate.seq !== \"number\" ||\n !Number.isFinite(candidate.seq) ||\n typeof candidate.ts !== \"string\" ||\n typeof candidate.event !== \"string\" ||\n typeof candidate.run_id !== \"string\" ||\n typeof candidate.stage !== \"string\"\n ) {\n throw new EmbeddedAgentSDKError(\"Malformed embedded-agent SSE event: missing required envelope fields.\", {\n kind: \"protocol\",\n details: candidate,\n });\n }\n\n return {\n version: \"run-stream.v2\",\n seq: candidate.seq,\n ts: candidate.ts,\n event: candidate.event,\n run_id: candidate.run_id,\n stage: candidate.stage,\n payload: assertPayload(candidate.payload ?? {}),\n diagnostics: assertDiagnostics(candidate.diagnostics ?? []),\n };\n}\n\nexport async function consumeEventStream(\n response: Response,\n onEvent?: (event: EmbeddedAgentRuntimeEvent) => void | Promise<void>,\n): Promise<void> {\n if (!response.body) {\n throw new EmbeddedAgentSDKError(\"Embedded-agent stream response did not include a readable body.\", {\n kind: \"protocol\",\n });\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n while (true) {\n const { done, value } = await reader.read();\n buffer += decoder.decode(value ?? new Uint8Array(), { stream: !done }).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\n let separatorIndex = buffer.indexOf(\"\\n\\n\");\n while (separatorIndex !== -1) {\n const block = buffer.slice(0, separatorIndex);\n buffer = buffer.slice(separatorIndex + 2);\n const payload = parseSSEBlock(block);\n if (payload) {\n const event = parseRuntimeEvent(payload);\n if (onEvent) {\n await onEvent(event);\n }\n }\n separatorIndex = buffer.indexOf(\"\\n\\n\");\n }\n\n if (done) {\n break;\n }\n }\n\n const trailingPayload = parseSSEBlock(buffer.trim());\n if (trailingPayload) {\n const event = parseRuntimeEvent(trailingPayload);\n if (onEvent) {\n await onEvent(event);\n }\n }\n}\n","import { EmbeddedAgentSDKError } from \"./errors\";\nimport {\n assertOk,\n assertServerRuntime,\n buildJsonHeaders,\n buildStreamHeaders,\n normalizeBaseUrl,\n resolveFetchImpl,\n wrapNetworkError,\n} from \"./http\";\nimport { consumeEventStream } from \"./sse\";\nimport type {\n EmbeddedAgentAttachmentUploadOptions,\n EmbeddedAgentAttachmentUploadResult,\n EmbeddedAgentClientOptions,\n EmbeddedAgentRuntimeEvent,\n EmbeddedAgentStreamRequest,\n EmbeddedAgentThreadDetail,\n EmbeddedAgentThreadDeleteOptions,\n EmbeddedAgentThreadDeleteResult,\n EmbeddedAgentThreadDetailOptions,\n EmbeddedAgentThreadListOptions,\n EmbeddedAgentThreadsResponse,\n StreamAgentResult,\n} from \"./types\";\n\nexport class EmbeddedAgentClient {\n private readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly fetchImpl: typeof fetch;\n\n constructor({ baseUrl, apiKey, fetchImpl }: EmbeddedAgentClientOptions) {\n assertServerRuntime();\n const normalizedApiKey = String(apiKey || \"\").trim();\n if (!normalizedApiKey) {\n throw new EmbeddedAgentSDKError(\"EmbeddedAgentClient requires a non-empty apiKey.\", {\n kind: \"protocol\",\n });\n }\n this.baseUrl = normalizeBaseUrl(baseUrl);\n this.apiKey = normalizedApiKey;\n this.fetchImpl = resolveFetchImpl(fetchImpl);\n }\n\n async streamAgent(\n agentId: string,\n payload: EmbeddedAgentStreamRequest,\n onEvent?: (event: EmbeddedAgentRuntimeEvent) => void | Promise<void>,\n ): Promise<StreamAgentResult> {\n const response = await this.fetchOrThrow(\n `${this.baseUrl}/public/embed/agents/${agentId}/chat/stream`,\n {\n method: \"POST\",\n headers: buildStreamHeaders(this.apiKey),\n body: JSON.stringify(payload),\n },\n \"Failed to connect to the embedded-agent stream endpoint.\",\n );\n\n await assertOk(response);\n const threadId = response.headers.get(\"X-Thread-ID\");\n await consumeEventStream(response, onEvent);\n return { threadId };\n }\n\n async listAgentThreads(\n agentId: string,\n {\n externalUserId,\n externalSessionId,\n skip = 0,\n limit = 20,\n }: EmbeddedAgentThreadListOptions,\n ): Promise<EmbeddedAgentThreadsResponse> {\n const search = new URLSearchParams({\n external_user_id: externalUserId,\n skip: String(skip),\n limit: String(limit),\n });\n if (externalSessionId) {\n search.set(\"external_session_id\", externalSessionId);\n }\n return this.requestJson<EmbeddedAgentThreadsResponse>(\n `${this.baseUrl}/public/embed/agents/${agentId}/threads?${search.toString()}`,\n );\n }\n\n async getAgentThread(\n agentId: string,\n threadId: string,\n {\n externalUserId,\n externalSessionId,\n }: EmbeddedAgentThreadDetailOptions,\n ): Promise<EmbeddedAgentThreadDetail> {\n const search = new URLSearchParams({\n external_user_id: externalUserId,\n });\n if (externalSessionId) {\n search.set(\"external_session_id\", externalSessionId);\n }\n return this.requestJson<EmbeddedAgentThreadDetail>(\n `${this.baseUrl}/public/embed/agents/${agentId}/threads/${threadId}?${search.toString()}`,\n );\n }\n\n async deleteAgentThread(\n agentId: string,\n threadId: string,\n {\n externalUserId,\n externalSessionId,\n }: EmbeddedAgentThreadDeleteOptions,\n ): Promise<EmbeddedAgentThreadDeleteResult> {\n const search = new URLSearchParams({\n external_user_id: externalUserId,\n });\n if (externalSessionId) {\n search.set(\"external_session_id\", externalSessionId);\n }\n return this.requestJson<EmbeddedAgentThreadDeleteResult>(\n `${this.baseUrl}/public/embed/agents/${agentId}/threads/${threadId}?${search.toString()}`,\n {\n method: \"DELETE\",\n headers: buildJsonHeaders(this.apiKey),\n },\n );\n }\n\n async uploadAgentAttachments(\n agentId: string,\n {\n externalUserId,\n externalSessionId,\n threadId,\n files,\n }: EmbeddedAgentAttachmentUploadOptions,\n ): Promise<EmbeddedAgentAttachmentUploadResult> {\n const formData = new FormData();\n formData.set(\"external_user_id\", externalUserId);\n if (externalSessionId) {\n formData.set(\"external_session_id\", externalSessionId);\n }\n if (threadId) {\n formData.set(\"thread_id\", threadId);\n }\n for (const file of files) {\n formData.append(\"files\", file, file.name);\n }\n return this.requestJson<EmbeddedAgentAttachmentUploadResult>(\n `${this.baseUrl}/public/embed/agents/${agentId}/attachments/upload`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.apiKey}`,\n Accept: \"application/json\",\n },\n body: formData,\n },\n );\n }\n\n private async requestJson<T>(url: string, init?: RequestInit): Promise<T> {\n const response = await this.fetchOrThrow(\n url,\n init || {\n method: \"GET\",\n headers: buildJsonHeaders(this.apiKey),\n },\n \"Failed to connect to the embedded-agent API.\",\n );\n await assertOk(response);\n return (await response.json()) as T;\n }\n\n private async fetchOrThrow(url: string, init: RequestInit, networkMessage: string): Promise<Response> {\n try {\n return await this.fetchImpl(url, init);\n } catch (cause) {\n throw wrapNetworkError(networkMessage, cause);\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agents24/embed-sdk",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "private": false,
5
5
  "description": "Server-only TypeScript SDK for Talmudpedia embedded-agent runtime.",
6
6
  "keywords": [