@agents24/ai-sdk 0.1.0 → 0.2.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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "contractHash": "de2b507f5d56de2bf7c4d6739c03617c4b4feef6ae827aaaac5f1d6150ec678e",
2
+ "contractHash": "13f59fd11fc838b1f7a51afe15afcdb6f1429fed94e37a1341c97061882e57d2",
3
3
  "contractVersion": "0.2.0",
4
4
  "corpus": "conformance/v1/corpus.json",
5
5
  "generatedBy": "@agents24/sdk-contract",
@@ -15,11 +15,11 @@
15
15
  "reactDom": ">=19 <20"
16
16
  },
17
17
  "@agents24/client": {
18
- "contract": "de2b507f5d56de2bf7c4d6739c03617c4b4feef6ae827aaaac5f1d6150ec678e",
19
- "runtime": "run-stream.v2"
18
+ "contract": "13f59fd11fc838b1f7a51afe15afcdb6f1429fed94e37a1341c97061882e57d2",
19
+ "runtime": "run-stream.v3"
20
20
  },
21
21
  "@agents24/node": {
22
- "contract": "de2b507f5d56de2bf7c4d6739c03617c4b4feef6ae827aaaac5f1d6150ec678e",
22
+ "contract": "13f59fd11fc838b1f7a51afe15afcdb6f1429fed94e37a1341c97061882e57d2",
23
23
  "node": "^22.0.0 || ^24.0.0"
24
24
  },
25
25
  "@agents24/react": {
@@ -27,18 +27,18 @@
27
27
  "react": ">=19 <20"
28
28
  },
29
29
  "@talmudpedia/runtime-sdk": {
30
- "contract": "de2b507f5d56de2bf7c4d6739c03617c4b4feef6ae827aaaac5f1d6150ec678e",
30
+ "contract": "13f59fd11fc838b1f7a51afe15afcdb6f1429fed94e37a1341c97061882e57d2",
31
31
  "protocolOwner": "@agents24/client"
32
32
  },
33
33
  "agents24": {
34
- "contract": "de2b507f5d56de2bf7c4d6739c03617c4b4feef6ae827aaaac5f1d6150ec678e",
34
+ "contract": "13f59fd11fc838b1f7a51afe15afcdb6f1429fed94e37a1341c97061882e57d2",
35
35
  "python": ">=3.10"
36
36
  }
37
37
  },
38
38
  "protocols": {
39
39
  "runtime": {
40
40
  "minimum": "2.0.0",
41
- "wire": "run-stream.v2"
41
+ "wire": "run-stream.v3"
42
42
  },
43
43
  "threadSummary": {
44
44
  "minimum": "1.0.0",
@@ -47,8 +47,8 @@
47
47
  },
48
48
  "schemaVersion": "agents24.compatibility.v1",
49
49
  "targetOperationCounts": {
50
- "client": 19,
51
- "node": 55,
52
- "python": 55
50
+ "client": 22,
51
+ "node": 78,
52
+ "python": 69
53
53
  }
54
54
  }
package/dist/index.js CHANGED
@@ -182,8 +182,6 @@ var Agents24EventMapper = class {
182
182
  chunks.push(dataChunk("mcp", payload, `${event.run_id}:mcp:${event.seq}`));
183
183
  } else if (event.event.startsWith("attachment.")) {
184
184
  chunks.push(dataChunk("attachment", payload, `${event.run_id}:attachment:${event.seq}`));
185
- } else if (event.event === "runtime.error") {
186
- chunks.push({ type: "error", errorText: text(record(payload.error)?.message) || "The run failed." });
187
185
  }
188
186
  const blocks = Array.isArray(payload.response_blocks) ? payload.response_blocks : [];
189
187
  blocks.forEach((value, index) => {
@@ -193,6 +191,7 @@ var Agents24EventMapper = class {
193
191
  if (event.event === "run.completed") chunks.push(...this.terminal("stop", { ...this.state, status: "completed" }));
194
192
  if (event.event === "run.failed") chunks.push(...this.terminal("error", { ...this.state, status: "failed" }));
195
193
  if (event.event === "run.cancelled") chunks.push(...this.terminal("other", { ...this.state, status: "cancelled" }));
194
+ if (event.event === "run.paused") chunks.push(...this.terminal("other", { ...this.state, status: "paused" }));
196
195
  return chunks;
197
196
  }
198
197
  finalize(input) {
@@ -415,10 +414,11 @@ function terminalStatus(metadata, result) {
415
414
  if (result.detached) return "detached";
416
415
  if (metadata.status === "failed") return "failed";
417
416
  if (metadata.status === "cancelled") return "cancelled";
417
+ if (metadata.status === "paused") return "paused";
418
418
  return "completed";
419
419
  }
420
420
  function validState(value) {
421
- return typeof value.messageId === "string" && value.messageId.length > 0 && (value.runId === null || typeof value.runId === "string") && (value.threadId === null || typeof value.threadId === "string") && (value.cursor === null || Number.isSafeInteger(value.cursor)) && ["active", "cancelled", "completed", "detached", "failed"].includes(value.status);
421
+ return typeof value.messageId === "string" && value.messageId.length > 0 && (value.runId === null || typeof value.runId === "string") && (value.threadId === null || typeof value.threadId === "string") && (value.cursor === null || Number.isSafeInteger(value.cursor)) && ["active", "cancelled", "completed", "detached", "failed", "paused"].includes(value.status);
422
422
  }
423
423
  function createAgents24ChatTransport(options) {
424
424
  const createId = options.createId ?? defaultId;
@@ -554,7 +554,7 @@ function createAgents24ChatTransport(options) {
554
554
  kind: "state"
555
555
  });
556
556
  }
557
- if (!previous.runId || previous.status === "completed" || previous.status === "failed" || previous.status === "cancelled") {
557
+ if (!previous.runId || previous.status === "completed" || previous.status === "failed" || previous.status === "cancelled" || previous.status === "paused") {
558
558
  return null;
559
559
  }
560
560
  return stream({
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/event-mapper.ts","../src/state-store.ts","../src/transport.ts","../src/request-policy.ts"],"sourcesContent":["export type Agents24AiSdkErrorKind = \"capability\" | \"request\" | \"state\" | \"unsupported\";\n\nexport class Agents24AiSdkError extends Error {\n readonly code: string;\n readonly kind: Agents24AiSdkErrorKind;\n\n constructor(message: string, options: { code: string; kind: Agents24AiSdkErrorKind }) {\n super(message);\n this.name = \"Agents24AiSdkError\";\n this.code = options.code;\n this.kind = options.kind;\n }\n}\n\nexport function requestError(code: string, message: string): Agents24AiSdkError {\n return new Agents24AiSdkError(message, { code, kind: \"request\" });\n}\n","import type { RuntimeEvent } from \"@agents24/client\";\nimport type { UIMessageChunk } from \"ai\";\nimport type { Agents24MessageMetadata } from \"./types.js\";\n\nconst record = (value: unknown): Record<string, unknown> | null =>\n value && typeof value === \"object\" && !Array.isArray(value) ? value as Record<string, unknown> : null;\nconst text = (value: unknown): string | null => typeof value === \"string\" && value.length > 0 ? value : null;\n\nfunction safeWebUrl(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n try {\n const parsed = new URL(value);\n return parsed.protocol === \"https:\" || parsed.protocol === \"http:\" ? parsed.toString() : null;\n } catch {\n return null;\n }\n}\n\nfunction dataChunk(name: string, data: unknown, id?: string): UIMessageChunk {\n return {\n type: `data-agents24-${name}`,\n data,\n ...(id ? { id } : {}),\n } as UIMessageChunk;\n}\n\nexport class Agents24EventMapper {\n private cursor: number | null = null;\n private finished = false;\n private reasoningOpen = false;\n private runId: string | null = null;\n private started = false;\n private textOpen = false;\n private threadId: string | null;\n private readonly toolCalls = new Set<string>();\n private readonly toolOutputs = new Set<string>();\n private status: string | undefined;\n\n constructor(\n private readonly messageId: string,\n threadId?: string | null,\n ) {\n this.threadId = threadId ?? null;\n }\n\n get state(): Agents24MessageMetadata {\n return {\n cursor: this.cursor,\n runId: this.runId,\n threadId: this.threadId,\n ...(this.status ? { status: this.status } : {}),\n };\n }\n\n private ensureStarted(): UIMessageChunk[] {\n if (this.started) return [];\n this.started = true;\n return [\n { type: \"start\", messageId: this.messageId, messageMetadata: this.state },\n { type: \"start-step\" },\n ];\n }\n\n private text(value: string, id: string): UIMessageChunk[] {\n const chunks: UIMessageChunk[] = [];\n if (!this.textOpen) {\n this.textOpen = true;\n chunks.push({ type: \"text-start\", id });\n }\n if (value) chunks.push({ type: \"text-delta\", id, delta: value });\n return chunks;\n }\n\n private reasoning(value: string, id: string): UIMessageChunk[] {\n const chunks: UIMessageChunk[] = [];\n if (!this.reasoningOpen) {\n this.reasoningOpen = true;\n chunks.push({ type: \"reasoning-start\", id });\n }\n if (value) chunks.push({ type: \"reasoning-delta\", id, delta: value });\n return chunks;\n }\n\n private toolInput(block: Record<string, unknown>, fallbackId: string): UIMessageChunk[] {\n const tool = record(block.tool) || block;\n const toolCallId = text(tool.toolCallId) || text(tool.tool_call_id) || fallbackId;\n const toolName = text(tool.action) || text(tool.title) || text(block.display_name) || \"tool\";\n if (this.toolCalls.has(toolCallId)) return [];\n this.toolCalls.add(toolCallId);\n return [{\n type: \"tool-input-available\",\n toolCallId,\n toolName,\n input: tool.input ?? block.input ?? {},\n providerExecuted: true,\n dynamic: true,\n ...(text(tool.title) || text(block.display_name) ? { title: text(tool.title) || text(block.display_name) || undefined } : {}),\n }];\n }\n\n private toolOutput(block: Record<string, unknown>, fallbackId: string): UIMessageChunk[] {\n const tool = record(block.tool) || block;\n const toolCallId = text(tool.toolCallId) || text(tool.tool_call_id) || fallbackId;\n const chunks = this.toolInput(block, fallbackId);\n if (this.toolOutputs.has(toolCallId)) return chunks;\n this.toolOutputs.add(toolCallId);\n const failed = [\"failed\", \"error\"].includes(String(block.status || \"\").toLocaleLowerCase());\n chunks.push(failed\n ? { type: \"tool-output-error\", toolCallId, errorText: text(tool.error) || text(block.error) || \"Tool execution failed.\", providerExecuted: true, dynamic: true }\n : { type: \"tool-output-available\", toolCallId, output: tool.output ?? block.output ?? block, providerExecuted: true, dynamic: true });\n return chunks;\n }\n\n private mapBlock(block: Record<string, unknown>, fallbackId: string): UIMessageChunk[] {\n const kind = String(block.kind || \"unsupported\");\n const id = text(block.id) || fallbackId;\n const chunks: UIMessageChunk[] = [dataChunk(\"response-block\", block, id)];\n if (kind === \"assistant_text\" && !this.textOpen) {\n chunks.push(...this.text(text(block.text) || \"\", `${this.runId || \"run\"}-text`));\n } else if (kind === \"reasoning_note\" && !this.reasoningOpen) {\n chunks.push(...this.reasoning(text(block.description) || text(block.label) || \"\", `${this.runId || \"run\"}-reasoning`));\n } else if (kind === \"tool_call\") {\n chunks.push(...this.toolOutput(block, id));\n } else if (kind === \"source\") {\n const url = safeWebUrl(block.url);\n if (url) chunks.push({ type: \"source-url\", sourceId: id, url, ...(text(block.title) ? { title: text(block.title) || undefined } : {}) });\n } else if (kind === \"citation\") {\n chunks.push(dataChunk(\"citation\", block, id));\n } else if (kind === \"ui_blocks\") {\n chunks.push(dataChunk(\"ui-blocks\", block, id));\n } else if (kind === \"hitl_request\") {\n chunks.push(dataChunk(\"hitl\", block, id));\n } else if (kind === \"mcp_authorization\") {\n chunks.push(dataChunk(\"mcp\", block, id));\n } else if (kind === \"attachment\") {\n chunks.push(dataChunk(\"attachment\", block, id));\n } else if (kind === \"error\") {\n chunks.push({ type: \"error\", errorText: text(record(block.error)?.message) || text(block.text) || \"The run failed.\" });\n } else if (kind === \"user_message\") {\n chunks.push(dataChunk(\"unsupported\", { feature: \"terminal-user-message-block\", block }, id));\n }\n return chunks;\n }\n\n private terminal(finishReason: \"error\" | \"other\" | \"stop\", metadata: Agents24MessageMetadata): UIMessageChunk[] {\n if (this.finished) return [];\n this.finished = true;\n this.status = metadata.status;\n const chunks: UIMessageChunk[] = [];\n if (this.textOpen) chunks.push({ type: \"text-end\", id: `${this.runId || \"run\"}-text` });\n if (this.reasoningOpen) chunks.push({ type: \"reasoning-end\", id: `${this.runId || \"run\"}-reasoning` });\n chunks.push({ type: \"finish-step\" });\n chunks.push({ type: \"finish\", finishReason, messageMetadata: metadata });\n return chunks;\n }\n\n map(event: RuntimeEvent): UIMessageChunk[] {\n this.runId = event.run_id;\n this.cursor = event.seq;\n const payload = event.payload;\n this.threadId = text(payload.thread_id) || this.threadId;\n const chunks = this.ensureStarted();\n chunks.push(dataChunk(\"event\", event, `${event.run_id}:${event.seq}`));\n chunks.push({ type: \"message-metadata\", messageMetadata: this.state });\n\n if (event.event === \"assistant.delta\") {\n chunks.push(...this.text(text(payload.content) || \"\", `${event.run_id}-text`));\n } else if (event.event === \"reasoning.update\") {\n chunks.push(...this.reasoning(text(payload.delta) || text(payload.description) || text(payload.label) || \"\", `${event.run_id}-reasoning`));\n } else if (event.event === \"tool.started\") {\n chunks.push(...this.toolInput(payload, text(payload.tool_call_id) || `${event.run_id}:tool:${event.seq}`));\n } else if (event.event === \"tool.completed\" || event.event === \"tool.failed\" || event.event === \"tool.cancelled\") {\n chunks.push(...this.toolOutput({ ...payload, status: event.event.split(\".\")[1] }, text(payload.tool_call_id) || `${event.run_id}:tool:${event.seq}`));\n } else if (event.event === \"source.added\") {\n const source = record(payload.source) || payload;\n const sourceId = text(source.id) || `${event.run_id}:source:${event.seq}`;\n const url = safeWebUrl(source.url);\n if (url) chunks.push({ type: \"source-url\", sourceId, url, ...(text(source.title) ? { title: text(source.title) || undefined } : {}) });\n } else if (event.event === \"citation.added\") {\n chunks.push(dataChunk(\"citation\", record(payload.source) || payload, `${event.run_id}:citation:${event.seq}`));\n } else if (event.event === \"ui_blocks.updated\") {\n chunks.push(dataChunk(\"ui-blocks\", payload, `${event.run_id}:ui:${event.seq}`));\n } else if (event.event === \"context_window.updated\" || event.event === \"context.compression.updated\" || event.event === \"run_usage.updated\") {\n chunks.push(dataChunk(\"context\", payload, `${event.run_id}:context:${event.seq}`));\n } else if (event.event === \"hitl.requested\" || event.event === \"hitl.resolved\") {\n chunks.push(dataChunk(\"hitl\", payload, `${event.run_id}:hitl:${event.seq}`));\n } else if (event.event.startsWith(\"mcp.authorization.\")) {\n chunks.push(dataChunk(\"mcp\", payload, `${event.run_id}:mcp:${event.seq}`));\n } else if (event.event.startsWith(\"attachment.\")) {\n chunks.push(dataChunk(\"attachment\", payload, `${event.run_id}:attachment:${event.seq}`));\n } else if (event.event === \"runtime.error\") {\n chunks.push({ type: \"error\", errorText: text(record(payload.error)?.message) || \"The run failed.\" });\n }\n\n const blocks = Array.isArray(payload.response_blocks) ? payload.response_blocks : [];\n blocks.forEach((value, index) => {\n const block = record(value);\n if (block) chunks.push(...this.mapBlock(block, `${event.run_id}:block:${event.seq}:${index}`));\n });\n\n if (event.event === \"run.completed\") chunks.push(...this.terminal(\"stop\", { ...this.state, status: \"completed\" }));\n if (event.event === \"run.failed\") chunks.push(...this.terminal(\"error\", { ...this.state, status: \"failed\" }));\n if (event.event === \"run.cancelled\") chunks.push(...this.terminal(\"other\", { ...this.state, status: \"cancelled\" }));\n return chunks;\n }\n\n finalize(input: { aborted?: boolean; detached?: boolean; error?: string }): UIMessageChunk[] {\n const chunks = this.ensureStarted();\n if (input.aborted) {\n if (!this.finished) {\n this.finished = true;\n chunks.push({ type: \"abort\", reason: \"The local stream was stopped.\" });\n }\n return chunks;\n }\n if (input.error) {\n chunks.push({ type: \"error\", errorText: input.error });\n chunks.push(...this.terminal(\"error\", { ...this.state, status: \"failed\" }));\n return chunks;\n }\n chunks.push(...this.terminal(\"other\", { ...this.state, detached: Boolean(input.detached), status: input.detached ? \"detached\" : \"completed\" }));\n return chunks;\n }\n}\n","import type { Agents24ChatStateStore, Agents24PersistedChatState } from \"./types.js\";\n\nexport function createInMemoryAgents24ChatStateStore(): Agents24ChatStateStore {\n const states = new Map<string, Agents24PersistedChatState>();\n return {\n async load(chatId) {\n const state = states.get(chatId);\n return state ? { ...state } : null;\n },\n async save(chatId, state) {\n states.set(chatId, { ...state });\n },\n };\n}\n","import { Agents24ClientError } from \"@agents24/client\";\nimport type { StreamResult } from \"@agents24/client\";\nimport type { ChatRequestOptions, UIMessageChunk } from \"ai\";\nimport { Agents24AiSdkError } from \"./errors.js\";\nimport { Agents24EventMapper } from \"./event-mapper.js\";\nimport { prepareAgents24Request, promptForRequest } from \"./request-policy.js\";\nimport { createInMemoryAgents24ChatStateStore } from \"./state-store.js\";\nimport type {\n Agents24AdapterTelemetryEvent,\n Agents24ChatTransport,\n Agents24MessageMetadata,\n Agents24PersistedChatState,\n CreateAgents24ChatTransportOptions,\n} from \"./types.js\";\n\nfunction defaultId(): string {\n const crypto = (globalThis as unknown as { crypto?: { randomUUID?: () => string } }).crypto;\n if (!crypto?.randomUUID) {\n throw new Agents24AiSdkError(\"A secure ID capability must be injected for this runtime.\", {\n code: \"MISSING_ID_CAPABILITY\",\n kind: \"capability\",\n });\n }\n return crypto.randomUUID();\n}\n\nfunction checkedId(createId: () => string): string {\n const value = createId();\n if (!value || /[\\r\\n\\0]/.test(value)) {\n throw new Agents24AiSdkError(\"The ID provider returned an invalid identifier.\", {\n code: \"INVALID_ID\",\n kind: \"capability\",\n });\n }\n return value;\n}\n\nfunction safeStreamError(error: unknown): string {\n if (error instanceof Agents24ClientError || error instanceof Agents24AiSdkError) return error.message;\n return \"The Agents24 stream failed.\";\n}\n\nfunction persistedState(\n messageId: string,\n metadata: Agents24MessageMetadata,\n status: Agents24PersistedChatState[\"status\"],\n): Agents24PersistedChatState {\n return {\n cursor: metadata.cursor ?? null,\n messageId,\n runId: metadata.runId ?? null,\n status,\n threadId: metadata.threadId ?? null,\n };\n}\n\nfunction terminalStatus(\n metadata: Agents24MessageMetadata,\n result: StreamResult,\n): Agents24PersistedChatState[\"status\"] {\n if (result.detached) return \"detached\";\n if (metadata.status === \"failed\") return \"failed\";\n if (metadata.status === \"cancelled\") return \"cancelled\";\n return \"completed\";\n}\n\nfunction validState(value: Agents24PersistedChatState): boolean {\n return (\n typeof value.messageId === \"string\" &&\n value.messageId.length > 0 &&\n (value.runId === null || typeof value.runId === \"string\") &&\n (value.threadId === null || typeof value.threadId === \"string\") &&\n (value.cursor === null || Number.isSafeInteger(value.cursor)) &&\n [\"active\", \"cancelled\", \"completed\", \"detached\", \"failed\"].includes(value.status)\n );\n}\n\nexport function createAgents24ChatTransport(\n options: CreateAgents24ChatTransportOptions,\n): Agents24ChatTransport {\n const createId = options.createId ?? defaultId;\n const stateStore = options.stateStore ?? createInMemoryAgents24ChatStateStore();\n\n const emit = async (event: Agents24AdapterTelemetryEvent): Promise<void> => {\n try {\n await options.telemetry?.emit(event);\n } catch {\n // Adapter telemetry never receives credentials and cannot affect the stream.\n }\n };\n\n const stream = (input: {\n chatId: string;\n initialThreadId?: string | null;\n messageId: string;\n operation: \"reconnect\" | \"submit\";\n abortSignal?: AbortSignal;\n content?: Agents24AdapterTelemetryEvent[\"content\"];\n execute(onEvent: Parameters<CreateAgents24ChatTransportOptions[\"client\"][\"chat\"][\"stream\"]>[1]): Promise<StreamResult>;\n }): ReadableStream<UIMessageChunk> => {\n const mapper = new Agents24EventMapper(input.messageId, input.initialThreadId);\n return new ReadableStream<UIMessageChunk>({\n async start(controller) {\n await emit({\n chatId: input.chatId,\n operation: input.operation,\n status: \"started\",\n ...(input.content ? { content: input.content } : {}),\n });\n try {\n await stateStore.save(\n input.chatId,\n persistedState(input.messageId, mapper.state, \"active\"),\n );\n const result = await input.execute(async (event) => {\n for (const chunk of mapper.map(event)) controller.enqueue(chunk);\n await stateStore.save(\n input.chatId,\n persistedState(input.messageId, mapper.state, \"active\"),\n );\n });\n const status = terminalStatus(mapper.state, result);\n for (const chunk of mapper.finalize({\n aborted: input.abortSignal?.aborted,\n detached: result.detached,\n })) controller.enqueue(chunk);\n await stateStore.save(\n input.chatId,\n persistedState(input.messageId, mapper.state, status),\n );\n await emit({\n chatId: input.chatId,\n cursor: mapper.state.cursor,\n operation: input.operation,\n runId: mapper.state.runId,\n status: \"completed\",\n });\n } catch (error) {\n const aborted = input.abortSignal?.aborted ?? false;\n for (const chunk of mapper.finalize({\n aborted,\n ...(aborted ? {} : { error: safeStreamError(error) }),\n })) controller.enqueue(chunk);\n try {\n await stateStore.save(\n input.chatId,\n persistedState(input.messageId, mapper.state, aborted ? \"detached\" : \"failed\"),\n );\n } catch {\n // A failed state store is already represented by the safe stream error.\n }\n await emit({\n chatId: input.chatId,\n cursor: mapper.state.cursor,\n operation: input.operation,\n runId: mapper.state.runId,\n status: aborted ? \"completed\" : \"failed\",\n });\n } finally {\n controller.close();\n }\n },\n });\n };\n\n return {\n async sendMessages(input) {\n if (input.trigger === \"regenerate-message\") {\n throw new Agents24AiSdkError(\n \"Agents24 V0 does not support regenerate because the frozen client-runtime routes have no regenerate operation.\",\n { code: \"REGENERATE_UNSUPPORTED\", kind: \"unsupported\" },\n );\n }\n const prepared = prepareAgents24Request(input, options.requestPolicy);\n const prompt = promptForRequest(input.messages);\n const previous = await stateStore.load(input.chatId);\n if (previous && !validState(previous)) {\n throw new Agents24AiSdkError(\"Stored Agents24 chat state is invalid.\", {\n code: \"INVALID_CHAT_STATE\",\n kind: \"state\",\n });\n }\n if (!previous?.threadId && input.messages.length > 1) {\n throw new Agents24AiSdkError(\n \"Conversation history requires persisted Agents24 thread state; client history is never replayed as forged runtime history.\",\n { code: \"CHAT_STATE_REQUIRED\", kind: \"state\" },\n );\n }\n const responseMessageId = checkedId(createId);\n const content = options.requestPolicy?.includePromptAndToolContentInTelemetry\n ? { prompt, toolInputs: prepared.toolInputs }\n : undefined;\n return stream({\n chatId: input.chatId,\n ...(previous?.threadId ? { initialThreadId: previous.threadId } : {}),\n messageId: responseMessageId,\n operation: \"submit\",\n ...(input.abortSignal ? { abortSignal: input.abortSignal } : {}),\n ...(content ? { content } : {}),\n execute: (onEvent) => options.client.chat.stream({\n input: prompt,\n attachmentIds: prepared.attachmentIds,\n headers: prepared.headers,\n idempotencyKey: checkedId(createId),\n metadata: prepared.metadata,\n ...(previous?.threadId ? { threadId: previous.threadId } : {}),\n ...(prepared.requestedModelId ? { requestedModelId: prepared.requestedModelId } : {}),\n toolInputs: prepared.toolInputs,\n ...(input.abortSignal ? { signal: input.abortSignal } : {}),\n }, onEvent),\n });\n },\n\n async reconnectToStream(input) {\n const prepared = prepareAgents24Request(input, options.requestPolicy);\n if (\n prepared.attachmentIds.length ||\n Object.keys(prepared.metadata).length ||\n prepared.requestedModelId ||\n Object.keys(prepared.toolInputs).length\n ) {\n throw new Agents24AiSdkError(\n \"Reconnect accepts allowlisted headers only; run input is immutable after submission.\",\n { code: \"RECONNECT_OPTIONS_UNSUPPORTED\", kind: \"unsupported\" },\n );\n }\n const previous = await stateStore.load(input.chatId);\n if (!previous) return null;\n if (!validState(previous)) {\n throw new Agents24AiSdkError(\"Stored Agents24 chat state is invalid.\", {\n code: \"INVALID_CHAT_STATE\",\n kind: \"state\",\n });\n }\n if (!previous.runId || previous.status === \"completed\" || previous.status === \"failed\" || previous.status === \"cancelled\") {\n return null;\n }\n return stream({\n chatId: input.chatId,\n initialThreadId: previous.threadId,\n messageId: previous.messageId,\n operation: \"reconnect\",\n execute: (onEvent) => options.client.runs.attach({\n runId: previous.runId as string,\n ...(previous.cursor === null ? {} : { cursor: previous.cursor }),\n headers: prepared.headers,\n }, onEvent),\n });\n },\n };\n}\n","import type { ChatRequestOptions } from \"ai\";\nimport { requestError } from \"./errors.js\";\nimport type { Agents24RequestPolicy, Agents24UIMessage } from \"./types.js\";\n\nconst RESERVED_KEYS = new Set([\n \"agent\", \"agentid\", \"agentversion\", \"agentversionid\", \"authorization\", \"clientid\",\n \"cursor\", \"deployment\", \"deploymentid\", \"dpop\", \"identity\", \"origin\", \"refreshgrant\",\n \"runid\", \"session\", \"sessionid\", \"tenant\", \"tenantid\", \"token\", \"userid\", \"version\",\n]);\nconst RESERVED_HEADERS = new Set([\n \"authorization\", \"cookie\", \"dpop\", \"host\", \"origin\", \"proxy-authorization\",\n \"sec-fetch-site\", \"x-agent-id\", \"x-agent-version\", \"x-agents24-deployment-id\",\n \"x-client-id\", \"x-deployment-id\", \"x-forwarded-host\", \"x-refresh-grant\", \"x-run-id\", \"x-session-id\",\n]);\n\nfunction normalizedKey(value: string): string {\n return value.toLowerCase().replace(/[^a-z0-9]/g, \"\");\n}\n\nfunction record(value: unknown): Record<string, unknown> | null {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? value as Record<string, unknown>\n : null;\n}\n\nfunction assertNoReservedFields(value: unknown, path: string): void {\n const object = record(value);\n if (!object) return;\n for (const [key, child] of Object.entries(object)) {\n if (RESERVED_KEYS.has(normalizedKey(key))) {\n throw requestError(\n \"RESERVED_REQUEST_FIELD\",\n `Agents24 reserved request field cannot be overridden: ${path}${key}`,\n );\n }\n assertNoReservedFields(child, `${path}${key}.`);\n }\n}\n\nfunction allowedRecord(value: unknown, allowed: ReadonlySet<string>, label: string): Record<string, unknown> {\n const input = record(value);\n if (!input) {\n if (value === undefined) return {};\n throw requestError(\"INVALID_REQUEST_OPTIONS\", `Agents24 ${label} must be an object.`);\n }\n assertNoReservedFields(input, `${label}.`);\n const output: Record<string, unknown> = {};\n for (const [key, child] of Object.entries(input)) {\n if (!allowed.has(key)) {\n throw requestError(\n \"REQUEST_FIELD_NOT_ALLOWLISTED\",\n `Agents24 ${label} field is not allowlisted: ${key}`,\n );\n }\n output[key] = child;\n }\n return output;\n}\n\nfunction headerEntries(headers: ChatRequestOptions[\"headers\"]): Array<[string, string]> {\n if (!headers) return [];\n if (typeof (headers as Headers).forEach === \"function\") {\n const output: Array<[string, string]> = [];\n (headers as Headers).forEach((value, key) => output.push([key, value]));\n return output;\n }\n return Object.entries(headers as Record<string, string>);\n}\n\nexport type PreparedAgents24Request = {\n attachmentIds: string[];\n headers: Readonly<Record<string, string>>;\n metadata: Readonly<Record<string, unknown>>;\n requestedModelId?: string;\n toolInputs: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n};\n\nexport function prepareAgents24Request(\n options: ChatRequestOptions,\n policy: Agents24RequestPolicy | undefined,\n): PreparedAgents24Request {\n const allowedBody = new Set(policy?.allowedBodyFields ?? [\"attachmentIds\", \"requestedModelId\", \"toolInputs\"]);\n const allowedHeaders = new Set((policy?.allowedHeaders ?? []).map((name) => name.toLowerCase()));\n const allowedMetadata = new Set(policy?.allowedMetadataFields ?? []);\n const body = allowedRecord(options.body, allowedBody, \"body\");\n const metadata = allowedRecord(options.metadata, allowedMetadata, \"metadata\");\n const headers: Record<string, string> = {};\n for (const [rawName, value] of headerEntries(options.headers)) {\n const name = rawName.toLowerCase();\n if (RESERVED_HEADERS.has(name)) {\n throw requestError(\"RESERVED_REQUEST_HEADER\", `Agents24 reserved header cannot be overridden: ${rawName}`);\n }\n if (!allowedHeaders.has(name)) {\n throw requestError(\"REQUEST_HEADER_NOT_ALLOWLISTED\", `Agents24 header is not allowlisted: ${rawName}`);\n }\n if (/[\\r\\n\\0]/.test(value)) {\n throw requestError(\"INVALID_REQUEST_HEADER\", `Agents24 header contains invalid characters: ${rawName}`);\n }\n headers[name] = value;\n }\n const attachmentIds = body.attachmentIds === undefined\n ? []\n : Array.isArray(body.attachmentIds) && body.attachmentIds.every((item) => typeof item === \"string\" && item.length > 0)\n ? body.attachmentIds\n : (() => { throw requestError(\"INVALID_ATTACHMENT_IDS\", \"Agents24 attachmentIds must be a string array.\"); })();\n const requestedModelId = body.requestedModelId === undefined\n ? undefined\n : typeof body.requestedModelId === \"string\" && body.requestedModelId.length > 0\n ? body.requestedModelId\n : (() => { throw requestError(\"INVALID_MODEL_ID\", \"Agents24 requestedModelId must be a non-empty string.\"); })();\n const toolInputs = body.toolInputs === undefined\n ? {}\n : allowedRecord(body.toolInputs, new Set(Object.keys(record(body.toolInputs) ?? {})), \"toolInputs\");\n return {\n attachmentIds,\n headers,\n metadata,\n ...(requestedModelId ? { requestedModelId } : {}),\n toolInputs: toolInputs as Readonly<Record<string, Readonly<Record<string, unknown>>>>,\n };\n}\n\nexport function promptForRequest(messages: Agents24UIMessage[]): string {\n const message = messages.at(-1);\n if (!message || message.role !== \"user\") {\n throw requestError(\n \"UNSUPPORTED_SUBMIT_SHAPE\",\n \"Agents24 submit requires the latest message to be a user message.\",\n );\n }\n const unsupported = message.parts.find((part) => part.type !== \"text\");\n if (unsupported) {\n throw requestError(\n \"UNSUPPORTED_MESSAGE_PART\",\n `Agents24 does not accept AI SDK user part type: ${unsupported.type}`,\n );\n }\n const value = message.parts\n .map((part) => part.type === \"text\" ? part.text : \"\")\n .join(\"\\n\")\n .trim();\n if (!value) {\n throw requestError(\"EMPTY_USER_MESSAGE\", \"Agents24 requires a non-empty user text message.\");\n }\n return value;\n}\n"],"mappings":"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","names":["record"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/event-mapper.ts","../src/state-store.ts","../src/transport.ts","../src/request-policy.ts"],"sourcesContent":["export type Agents24AiSdkErrorKind = \"capability\" | \"request\" | \"state\" | \"unsupported\";\n\nexport class Agents24AiSdkError extends Error {\n readonly code: string;\n readonly kind: Agents24AiSdkErrorKind;\n\n constructor(message: string, options: { code: string; kind: Agents24AiSdkErrorKind }) {\n super(message);\n this.name = \"Agents24AiSdkError\";\n this.code = options.code;\n this.kind = options.kind;\n }\n}\n\nexport function requestError(code: string, message: string): Agents24AiSdkError {\n return new Agents24AiSdkError(message, { code, kind: \"request\" });\n}\n","import type { RuntimeEvent } from \"@agents24/client\";\nimport type { UIMessageChunk } from \"ai\";\nimport type { Agents24MessageMetadata } from \"./types.js\";\n\nconst record = (value: unknown): Record<string, unknown> | null =>\n value && typeof value === \"object\" && !Array.isArray(value) ? value as Record<string, unknown> : null;\nconst text = (value: unknown): string | null => typeof value === \"string\" && value.length > 0 ? value : null;\n\nfunction safeWebUrl(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n try {\n const parsed = new URL(value);\n return parsed.protocol === \"https:\" || parsed.protocol === \"http:\" ? parsed.toString() : null;\n } catch {\n return null;\n }\n}\n\nfunction dataChunk(name: string, data: unknown, id?: string): UIMessageChunk {\n return {\n type: `data-agents24-${name}`,\n data,\n ...(id ? { id } : {}),\n } as UIMessageChunk;\n}\n\nexport class Agents24EventMapper {\n private cursor: number | null = null;\n private finished = false;\n private reasoningOpen = false;\n private runId: string | null = null;\n private started = false;\n private textOpen = false;\n private threadId: string | null;\n private readonly toolCalls = new Set<string>();\n private readonly toolOutputs = new Set<string>();\n private status: string | undefined;\n\n constructor(\n private readonly messageId: string,\n threadId?: string | null,\n ) {\n this.threadId = threadId ?? null;\n }\n\n get state(): Agents24MessageMetadata {\n return {\n cursor: this.cursor,\n runId: this.runId,\n threadId: this.threadId,\n ...(this.status ? { status: this.status } : {}),\n };\n }\n\n private ensureStarted(): UIMessageChunk[] {\n if (this.started) return [];\n this.started = true;\n return [\n { type: \"start\", messageId: this.messageId, messageMetadata: this.state },\n { type: \"start-step\" },\n ];\n }\n\n private text(value: string, id: string): UIMessageChunk[] {\n const chunks: UIMessageChunk[] = [];\n if (!this.textOpen) {\n this.textOpen = true;\n chunks.push({ type: \"text-start\", id });\n }\n if (value) chunks.push({ type: \"text-delta\", id, delta: value });\n return chunks;\n }\n\n private reasoning(value: string, id: string): UIMessageChunk[] {\n const chunks: UIMessageChunk[] = [];\n if (!this.reasoningOpen) {\n this.reasoningOpen = true;\n chunks.push({ type: \"reasoning-start\", id });\n }\n if (value) chunks.push({ type: \"reasoning-delta\", id, delta: value });\n return chunks;\n }\n\n private toolInput(block: Record<string, unknown>, fallbackId: string): UIMessageChunk[] {\n const tool = record(block.tool) || block;\n const toolCallId = text(tool.toolCallId) || text(tool.tool_call_id) || fallbackId;\n const toolName = text(tool.action) || text(tool.title) || text(block.display_name) || \"tool\";\n if (this.toolCalls.has(toolCallId)) return [];\n this.toolCalls.add(toolCallId);\n return [{\n type: \"tool-input-available\",\n toolCallId,\n toolName,\n input: tool.input ?? block.input ?? {},\n providerExecuted: true,\n dynamic: true,\n ...(text(tool.title) || text(block.display_name) ? { title: text(tool.title) || text(block.display_name) || undefined } : {}),\n }];\n }\n\n private toolOutput(block: Record<string, unknown>, fallbackId: string): UIMessageChunk[] {\n const tool = record(block.tool) || block;\n const toolCallId = text(tool.toolCallId) || text(tool.tool_call_id) || fallbackId;\n const chunks = this.toolInput(block, fallbackId);\n if (this.toolOutputs.has(toolCallId)) return chunks;\n this.toolOutputs.add(toolCallId);\n const failed = [\"failed\", \"error\"].includes(String(block.status || \"\").toLocaleLowerCase());\n chunks.push(failed\n ? { type: \"tool-output-error\", toolCallId, errorText: text(tool.error) || text(block.error) || \"Tool execution failed.\", providerExecuted: true, dynamic: true }\n : { type: \"tool-output-available\", toolCallId, output: tool.output ?? block.output ?? block, providerExecuted: true, dynamic: true });\n return chunks;\n }\n\n private mapBlock(block: Record<string, unknown>, fallbackId: string): UIMessageChunk[] {\n const kind = String(block.kind || \"unsupported\");\n const id = text(block.id) || fallbackId;\n const chunks: UIMessageChunk[] = [dataChunk(\"response-block\", block, id)];\n if (kind === \"assistant_text\" && !this.textOpen) {\n chunks.push(...this.text(text(block.text) || \"\", `${this.runId || \"run\"}-text`));\n } else if (kind === \"reasoning_note\" && !this.reasoningOpen) {\n chunks.push(...this.reasoning(text(block.description) || text(block.label) || \"\", `${this.runId || \"run\"}-reasoning`));\n } else if (kind === \"tool_call\") {\n chunks.push(...this.toolOutput(block, id));\n } else if (kind === \"source\") {\n const url = safeWebUrl(block.url);\n if (url) chunks.push({ type: \"source-url\", sourceId: id, url, ...(text(block.title) ? { title: text(block.title) || undefined } : {}) });\n } else if (kind === \"citation\") {\n chunks.push(dataChunk(\"citation\", block, id));\n } else if (kind === \"ui_blocks\") {\n chunks.push(dataChunk(\"ui-blocks\", block, id));\n } else if (kind === \"hitl_request\") {\n chunks.push(dataChunk(\"hitl\", block, id));\n } else if (kind === \"mcp_authorization\") {\n chunks.push(dataChunk(\"mcp\", block, id));\n } else if (kind === \"attachment\") {\n chunks.push(dataChunk(\"attachment\", block, id));\n } else if (kind === \"error\") {\n chunks.push({ type: \"error\", errorText: text(record(block.error)?.message) || text(block.text) || \"The run failed.\" });\n } else if (kind === \"user_message\") {\n chunks.push(dataChunk(\"unsupported\", { feature: \"terminal-user-message-block\", block }, id));\n }\n return chunks;\n }\n\n private terminal(finishReason: \"error\" | \"other\" | \"stop\", metadata: Agents24MessageMetadata): UIMessageChunk[] {\n if (this.finished) return [];\n this.finished = true;\n this.status = metadata.status;\n const chunks: UIMessageChunk[] = [];\n if (this.textOpen) chunks.push({ type: \"text-end\", id: `${this.runId || \"run\"}-text` });\n if (this.reasoningOpen) chunks.push({ type: \"reasoning-end\", id: `${this.runId || \"run\"}-reasoning` });\n chunks.push({ type: \"finish-step\" });\n chunks.push({ type: \"finish\", finishReason, messageMetadata: metadata });\n return chunks;\n }\n\n map(event: RuntimeEvent): UIMessageChunk[] {\n this.runId = event.run_id;\n this.cursor = event.seq;\n const payload = event.payload;\n this.threadId = text(payload.thread_id) || this.threadId;\n const chunks = this.ensureStarted();\n chunks.push(dataChunk(\"event\", event, `${event.run_id}:${event.seq}`));\n chunks.push({ type: \"message-metadata\", messageMetadata: this.state });\n\n if (event.event === \"assistant.delta\") {\n chunks.push(...this.text(text(payload.content) || \"\", `${event.run_id}-text`));\n } else if (event.event === \"reasoning.update\") {\n chunks.push(...this.reasoning(text(payload.delta) || text(payload.description) || text(payload.label) || \"\", `${event.run_id}-reasoning`));\n } else if (event.event === \"tool.started\") {\n chunks.push(...this.toolInput(payload, text(payload.tool_call_id) || `${event.run_id}:tool:${event.seq}`));\n } else if (event.event === \"tool.completed\" || event.event === \"tool.failed\" || event.event === \"tool.cancelled\") {\n chunks.push(...this.toolOutput({ ...payload, status: event.event.split(\".\")[1] }, text(payload.tool_call_id) || `${event.run_id}:tool:${event.seq}`));\n } else if (event.event === \"source.added\") {\n const source = record(payload.source) || payload;\n const sourceId = text(source.id) || `${event.run_id}:source:${event.seq}`;\n const url = safeWebUrl(source.url);\n if (url) chunks.push({ type: \"source-url\", sourceId, url, ...(text(source.title) ? { title: text(source.title) || undefined } : {}) });\n } else if (event.event === \"citation.added\") {\n chunks.push(dataChunk(\"citation\", record(payload.source) || payload, `${event.run_id}:citation:${event.seq}`));\n } else if (event.event === \"ui_blocks.updated\") {\n chunks.push(dataChunk(\"ui-blocks\", payload, `${event.run_id}:ui:${event.seq}`));\n } else if (event.event === \"context_window.updated\" || event.event === \"context.compression.updated\" || event.event === \"run_usage.updated\") {\n chunks.push(dataChunk(\"context\", payload, `${event.run_id}:context:${event.seq}`));\n } else if (event.event === \"hitl.requested\" || event.event === \"hitl.resolved\") {\n chunks.push(dataChunk(\"hitl\", payload, `${event.run_id}:hitl:${event.seq}`));\n } else if (event.event.startsWith(\"mcp.authorization.\")) {\n chunks.push(dataChunk(\"mcp\", payload, `${event.run_id}:mcp:${event.seq}`));\n } else if (event.event.startsWith(\"attachment.\")) {\n chunks.push(dataChunk(\"attachment\", payload, `${event.run_id}:attachment:${event.seq}`));\n }\n\n const blocks = Array.isArray(payload.response_blocks) ? payload.response_blocks : [];\n blocks.forEach((value, index) => {\n const block = record(value);\n if (block) chunks.push(...this.mapBlock(block, `${event.run_id}:block:${event.seq}:${index}`));\n });\n\n if (event.event === \"run.completed\") chunks.push(...this.terminal(\"stop\", { ...this.state, status: \"completed\" }));\n if (event.event === \"run.failed\") chunks.push(...this.terminal(\"error\", { ...this.state, status: \"failed\" }));\n if (event.event === \"run.cancelled\") chunks.push(...this.terminal(\"other\", { ...this.state, status: \"cancelled\" }));\n if (event.event === \"run.paused\") chunks.push(...this.terminal(\"other\", { ...this.state, status: \"paused\" }));\n return chunks;\n }\n\n finalize(input: { aborted?: boolean; detached?: boolean; error?: string }): UIMessageChunk[] {\n const chunks = this.ensureStarted();\n if (input.aborted) {\n if (!this.finished) {\n this.finished = true;\n chunks.push({ type: \"abort\", reason: \"The local stream was stopped.\" });\n }\n return chunks;\n }\n if (input.error) {\n chunks.push({ type: \"error\", errorText: input.error });\n chunks.push(...this.terminal(\"error\", { ...this.state, status: \"failed\" }));\n return chunks;\n }\n chunks.push(...this.terminal(\"other\", { ...this.state, detached: Boolean(input.detached), status: input.detached ? \"detached\" : \"completed\" }));\n return chunks;\n }\n}\n","import type { Agents24ChatStateStore, Agents24PersistedChatState } from \"./types.js\";\n\nexport function createInMemoryAgents24ChatStateStore(): Agents24ChatStateStore {\n const states = new Map<string, Agents24PersistedChatState>();\n return {\n async load(chatId) {\n const state = states.get(chatId);\n return state ? { ...state } : null;\n },\n async save(chatId, state) {\n states.set(chatId, { ...state });\n },\n };\n}\n","import { Agents24ClientError } from \"@agents24/client\";\nimport type { StreamResult } from \"@agents24/client\";\nimport type { ChatRequestOptions, UIMessageChunk } from \"ai\";\nimport { Agents24AiSdkError } from \"./errors.js\";\nimport { Agents24EventMapper } from \"./event-mapper.js\";\nimport { prepareAgents24Request, promptForRequest } from \"./request-policy.js\";\nimport { createInMemoryAgents24ChatStateStore } from \"./state-store.js\";\nimport type {\n Agents24AdapterTelemetryEvent,\n Agents24ChatTransport,\n Agents24MessageMetadata,\n Agents24PersistedChatState,\n CreateAgents24ChatTransportOptions,\n} from \"./types.js\";\n\nfunction defaultId(): string {\n const crypto = (globalThis as unknown as { crypto?: { randomUUID?: () => string } }).crypto;\n if (!crypto?.randomUUID) {\n throw new Agents24AiSdkError(\"A secure ID capability must be injected for this runtime.\", {\n code: \"MISSING_ID_CAPABILITY\",\n kind: \"capability\",\n });\n }\n return crypto.randomUUID();\n}\n\nfunction checkedId(createId: () => string): string {\n const value = createId();\n if (!value || /[\\r\\n\\0]/.test(value)) {\n throw new Agents24AiSdkError(\"The ID provider returned an invalid identifier.\", {\n code: \"INVALID_ID\",\n kind: \"capability\",\n });\n }\n return value;\n}\n\nfunction safeStreamError(error: unknown): string {\n if (error instanceof Agents24ClientError || error instanceof Agents24AiSdkError) return error.message;\n return \"The Agents24 stream failed.\";\n}\n\nfunction persistedState(\n messageId: string,\n metadata: Agents24MessageMetadata,\n status: Agents24PersistedChatState[\"status\"],\n): Agents24PersistedChatState {\n return {\n cursor: metadata.cursor ?? null,\n messageId,\n runId: metadata.runId ?? null,\n status,\n threadId: metadata.threadId ?? null,\n };\n}\n\nfunction terminalStatus(\n metadata: Agents24MessageMetadata,\n result: StreamResult,\n): Agents24PersistedChatState[\"status\"] {\n if (result.detached) return \"detached\";\n if (metadata.status === \"failed\") return \"failed\";\n if (metadata.status === \"cancelled\") return \"cancelled\";\n if (metadata.status === \"paused\") return \"paused\";\n return \"completed\";\n}\n\nfunction validState(value: Agents24PersistedChatState): boolean {\n return (\n typeof value.messageId === \"string\" &&\n value.messageId.length > 0 &&\n (value.runId === null || typeof value.runId === \"string\") &&\n (value.threadId === null || typeof value.threadId === \"string\") &&\n (value.cursor === null || Number.isSafeInteger(value.cursor)) &&\n [\"active\", \"cancelled\", \"completed\", \"detached\", \"failed\", \"paused\"].includes(value.status)\n );\n}\n\nexport function createAgents24ChatTransport(\n options: CreateAgents24ChatTransportOptions,\n): Agents24ChatTransport {\n const createId = options.createId ?? defaultId;\n const stateStore = options.stateStore ?? createInMemoryAgents24ChatStateStore();\n\n const emit = async (event: Agents24AdapterTelemetryEvent): Promise<void> => {\n try {\n await options.telemetry?.emit(event);\n } catch {\n // Adapter telemetry never receives credentials and cannot affect the stream.\n }\n };\n\n const stream = (input: {\n chatId: string;\n initialThreadId?: string | null;\n messageId: string;\n operation: \"reconnect\" | \"submit\";\n abortSignal?: AbortSignal;\n content?: Agents24AdapterTelemetryEvent[\"content\"];\n execute(onEvent: Parameters<CreateAgents24ChatTransportOptions[\"client\"][\"chat\"][\"stream\"]>[1]): Promise<StreamResult>;\n }): ReadableStream<UIMessageChunk> => {\n const mapper = new Agents24EventMapper(input.messageId, input.initialThreadId);\n return new ReadableStream<UIMessageChunk>({\n async start(controller) {\n await emit({\n chatId: input.chatId,\n operation: input.operation,\n status: \"started\",\n ...(input.content ? { content: input.content } : {}),\n });\n try {\n await stateStore.save(\n input.chatId,\n persistedState(input.messageId, mapper.state, \"active\"),\n );\n const result = await input.execute(async (event) => {\n for (const chunk of mapper.map(event)) controller.enqueue(chunk);\n await stateStore.save(\n input.chatId,\n persistedState(input.messageId, mapper.state, \"active\"),\n );\n });\n const status = terminalStatus(mapper.state, result);\n for (const chunk of mapper.finalize({\n aborted: input.abortSignal?.aborted,\n detached: result.detached,\n })) controller.enqueue(chunk);\n await stateStore.save(\n input.chatId,\n persistedState(input.messageId, mapper.state, status),\n );\n await emit({\n chatId: input.chatId,\n cursor: mapper.state.cursor,\n operation: input.operation,\n runId: mapper.state.runId,\n status: \"completed\",\n });\n } catch (error) {\n const aborted = input.abortSignal?.aborted ?? false;\n for (const chunk of mapper.finalize({\n aborted,\n ...(aborted ? {} : { error: safeStreamError(error) }),\n })) controller.enqueue(chunk);\n try {\n await stateStore.save(\n input.chatId,\n persistedState(input.messageId, mapper.state, aborted ? \"detached\" : \"failed\"),\n );\n } catch {\n // A failed state store is already represented by the safe stream error.\n }\n await emit({\n chatId: input.chatId,\n cursor: mapper.state.cursor,\n operation: input.operation,\n runId: mapper.state.runId,\n status: aborted ? \"completed\" : \"failed\",\n });\n } finally {\n controller.close();\n }\n },\n });\n };\n\n return {\n async sendMessages(input) {\n if (input.trigger === \"regenerate-message\") {\n throw new Agents24AiSdkError(\n \"Agents24 V0 does not support regenerate because the frozen client-runtime routes have no regenerate operation.\",\n { code: \"REGENERATE_UNSUPPORTED\", kind: \"unsupported\" },\n );\n }\n const prepared = prepareAgents24Request(input, options.requestPolicy);\n const prompt = promptForRequest(input.messages);\n const previous = await stateStore.load(input.chatId);\n if (previous && !validState(previous)) {\n throw new Agents24AiSdkError(\"Stored Agents24 chat state is invalid.\", {\n code: \"INVALID_CHAT_STATE\",\n kind: \"state\",\n });\n }\n if (!previous?.threadId && input.messages.length > 1) {\n throw new Agents24AiSdkError(\n \"Conversation history requires persisted Agents24 thread state; client history is never replayed as forged runtime history.\",\n { code: \"CHAT_STATE_REQUIRED\", kind: \"state\" },\n );\n }\n const responseMessageId = checkedId(createId);\n const content = options.requestPolicy?.includePromptAndToolContentInTelemetry\n ? { prompt, toolInputs: prepared.toolInputs }\n : undefined;\n return stream({\n chatId: input.chatId,\n ...(previous?.threadId ? { initialThreadId: previous.threadId } : {}),\n messageId: responseMessageId,\n operation: \"submit\",\n ...(input.abortSignal ? { abortSignal: input.abortSignal } : {}),\n ...(content ? { content } : {}),\n execute: (onEvent) => options.client.chat.stream({\n input: prompt,\n attachmentIds: prepared.attachmentIds,\n headers: prepared.headers,\n idempotencyKey: checkedId(createId),\n metadata: prepared.metadata,\n ...(previous?.threadId ? { threadId: previous.threadId } : {}),\n ...(prepared.requestedModelId ? { requestedModelId: prepared.requestedModelId } : {}),\n toolInputs: prepared.toolInputs,\n ...(input.abortSignal ? { signal: input.abortSignal } : {}),\n }, onEvent),\n });\n },\n\n async reconnectToStream(input) {\n const prepared = prepareAgents24Request(input, options.requestPolicy);\n if (\n prepared.attachmentIds.length ||\n Object.keys(prepared.metadata).length ||\n prepared.requestedModelId ||\n Object.keys(prepared.toolInputs).length\n ) {\n throw new Agents24AiSdkError(\n \"Reconnect accepts allowlisted headers only; run input is immutable after submission.\",\n { code: \"RECONNECT_OPTIONS_UNSUPPORTED\", kind: \"unsupported\" },\n );\n }\n const previous = await stateStore.load(input.chatId);\n if (!previous) return null;\n if (!validState(previous)) {\n throw new Agents24AiSdkError(\"Stored Agents24 chat state is invalid.\", {\n code: \"INVALID_CHAT_STATE\",\n kind: \"state\",\n });\n }\n if (\n !previous.runId\n || previous.status === \"completed\"\n || previous.status === \"failed\"\n || previous.status === \"cancelled\"\n || previous.status === \"paused\"\n ) {\n return null;\n }\n return stream({\n chatId: input.chatId,\n initialThreadId: previous.threadId,\n messageId: previous.messageId,\n operation: \"reconnect\",\n execute: (onEvent) => options.client.runs.attach({\n runId: previous.runId as string,\n ...(previous.cursor === null ? {} : { cursor: previous.cursor }),\n headers: prepared.headers,\n }, onEvent),\n });\n },\n };\n}\n","import type { ChatRequestOptions } from \"ai\";\nimport { requestError } from \"./errors.js\";\nimport type { Agents24RequestPolicy, Agents24UIMessage } from \"./types.js\";\n\nconst RESERVED_KEYS = new Set([\n \"agent\", \"agentid\", \"agentversion\", \"agentversionid\", \"authorization\", \"clientid\",\n \"cursor\", \"deployment\", \"deploymentid\", \"dpop\", \"identity\", \"origin\", \"refreshgrant\",\n \"runid\", \"session\", \"sessionid\", \"tenant\", \"tenantid\", \"token\", \"userid\", \"version\",\n]);\nconst RESERVED_HEADERS = new Set([\n \"authorization\", \"cookie\", \"dpop\", \"host\", \"origin\", \"proxy-authorization\",\n \"sec-fetch-site\", \"x-agent-id\", \"x-agent-version\", \"x-agents24-deployment-id\",\n \"x-client-id\", \"x-deployment-id\", \"x-forwarded-host\", \"x-refresh-grant\", \"x-run-id\", \"x-session-id\",\n]);\n\nfunction normalizedKey(value: string): string {\n return value.toLowerCase().replace(/[^a-z0-9]/g, \"\");\n}\n\nfunction record(value: unknown): Record<string, unknown> | null {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? value as Record<string, unknown>\n : null;\n}\n\nfunction assertNoReservedFields(value: unknown, path: string): void {\n const object = record(value);\n if (!object) return;\n for (const [key, child] of Object.entries(object)) {\n if (RESERVED_KEYS.has(normalizedKey(key))) {\n throw requestError(\n \"RESERVED_REQUEST_FIELD\",\n `Agents24 reserved request field cannot be overridden: ${path}${key}`,\n );\n }\n assertNoReservedFields(child, `${path}${key}.`);\n }\n}\n\nfunction allowedRecord(value: unknown, allowed: ReadonlySet<string>, label: string): Record<string, unknown> {\n const input = record(value);\n if (!input) {\n if (value === undefined) return {};\n throw requestError(\"INVALID_REQUEST_OPTIONS\", `Agents24 ${label} must be an object.`);\n }\n assertNoReservedFields(input, `${label}.`);\n const output: Record<string, unknown> = {};\n for (const [key, child] of Object.entries(input)) {\n if (!allowed.has(key)) {\n throw requestError(\n \"REQUEST_FIELD_NOT_ALLOWLISTED\",\n `Agents24 ${label} field is not allowlisted: ${key}`,\n );\n }\n output[key] = child;\n }\n return output;\n}\n\nfunction headerEntries(headers: ChatRequestOptions[\"headers\"]): Array<[string, string]> {\n if (!headers) return [];\n if (typeof (headers as Headers).forEach === \"function\") {\n const output: Array<[string, string]> = [];\n (headers as Headers).forEach((value, key) => output.push([key, value]));\n return output;\n }\n return Object.entries(headers as Record<string, string>);\n}\n\nexport type PreparedAgents24Request = {\n attachmentIds: string[];\n headers: Readonly<Record<string, string>>;\n metadata: Readonly<Record<string, unknown>>;\n requestedModelId?: string;\n toolInputs: Readonly<Record<string, Readonly<Record<string, unknown>>>>;\n};\n\nexport function prepareAgents24Request(\n options: ChatRequestOptions,\n policy: Agents24RequestPolicy | undefined,\n): PreparedAgents24Request {\n const allowedBody = new Set(policy?.allowedBodyFields ?? [\"attachmentIds\", \"requestedModelId\", \"toolInputs\"]);\n const allowedHeaders = new Set((policy?.allowedHeaders ?? []).map((name) => name.toLowerCase()));\n const allowedMetadata = new Set(policy?.allowedMetadataFields ?? []);\n const body = allowedRecord(options.body, allowedBody, \"body\");\n const metadata = allowedRecord(options.metadata, allowedMetadata, \"metadata\");\n const headers: Record<string, string> = {};\n for (const [rawName, value] of headerEntries(options.headers)) {\n const name = rawName.toLowerCase();\n if (RESERVED_HEADERS.has(name)) {\n throw requestError(\"RESERVED_REQUEST_HEADER\", `Agents24 reserved header cannot be overridden: ${rawName}`);\n }\n if (!allowedHeaders.has(name)) {\n throw requestError(\"REQUEST_HEADER_NOT_ALLOWLISTED\", `Agents24 header is not allowlisted: ${rawName}`);\n }\n if (/[\\r\\n\\0]/.test(value)) {\n throw requestError(\"INVALID_REQUEST_HEADER\", `Agents24 header contains invalid characters: ${rawName}`);\n }\n headers[name] = value;\n }\n const attachmentIds = body.attachmentIds === undefined\n ? []\n : Array.isArray(body.attachmentIds) && body.attachmentIds.every((item) => typeof item === \"string\" && item.length > 0)\n ? body.attachmentIds\n : (() => { throw requestError(\"INVALID_ATTACHMENT_IDS\", \"Agents24 attachmentIds must be a string array.\"); })();\n const requestedModelId = body.requestedModelId === undefined\n ? undefined\n : typeof body.requestedModelId === \"string\" && body.requestedModelId.length > 0\n ? body.requestedModelId\n : (() => { throw requestError(\"INVALID_MODEL_ID\", \"Agents24 requestedModelId must be a non-empty string.\"); })();\n const toolInputs = body.toolInputs === undefined\n ? {}\n : allowedRecord(body.toolInputs, new Set(Object.keys(record(body.toolInputs) ?? {})), \"toolInputs\");\n return {\n attachmentIds,\n headers,\n metadata,\n ...(requestedModelId ? { requestedModelId } : {}),\n toolInputs: toolInputs as Readonly<Record<string, Readonly<Record<string, unknown>>>>,\n };\n}\n\nexport function promptForRequest(messages: Agents24UIMessage[]): string {\n const message = messages.at(-1);\n if (!message || message.role !== \"user\") {\n throw requestError(\n \"UNSUPPORTED_SUBMIT_SHAPE\",\n \"Agents24 submit requires the latest message to be a user message.\",\n );\n }\n const unsupported = message.parts.find((part) => part.type !== \"text\");\n if (unsupported) {\n throw requestError(\n \"UNSUPPORTED_MESSAGE_PART\",\n `Agents24 does not accept AI SDK user part type: ${unsupported.type}`,\n );\n }\n const value = message.parts\n .map((part) => part.type === \"text\" ? part.text : \"\")\n .join(\"\\n\")\n .trim();\n if (!value) {\n throw requestError(\"EMPTY_USER_MESSAGE\", \"Agents24 requires a non-empty user text message.\");\n }\n return value;\n}\n"],"mappings":"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","names":["record"]}
package/dist/types.d.ts CHANGED
@@ -23,7 +23,7 @@ export type Agents24PersistedChatState = {
23
23
  cursor: number | null;
24
24
  messageId: string;
25
25
  runId: string | null;
26
- status: "active" | "cancelled" | "completed" | "detached" | "failed";
26
+ status: "active" | "cancelled" | "completed" | "detached" | "failed" | "paused";
27
27
  threadId: string | null;
28
28
  };
29
29
  export interface Agents24ChatStateStore {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agents24/ai-sdk",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "Vercel AI SDK v7 ChatTransport adapter for Agents24 client runtimes.",
5
5
  "keywords": [
6
6
  "agents24",
@@ -46,7 +46,7 @@
46
46
  "prepack": "pnpm run build && pnpm run check:boundaries"
47
47
  },
48
48
  "dependencies": {
49
- "@agents24/client": "0.1.0"
49
+ "@agents24/client": "0.2.1"
50
50
  },
51
51
  "peerDependencies": {
52
52
  "ai": ">=7.0.0 <8.0.0"