@blazingagents/sdk 0.18.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -216,14 +216,14 @@ export declare const sessionMessagesQuerySchema: z.ZodObject<{
216
216
  cursor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
217
217
  after: z.ZodOptional<z.ZodNullable<z.ZodString>>;
218
218
  }, z.core.$strict>;
219
- /** Decision-only input for one server-owned Tool approval. */
220
- export declare const decideToolApprovalBodySchema: z.ZodObject<{
219
+ /** One decision in the current Tool approval round. */
220
+ export declare const toolApprovalDecisionSchema: z.ZodObject<{
221
+ approvalId: z.ZodString;
221
222
  approved: z.ZodBoolean;
222
223
  reason: z.ZodOptional<z.ZodString>;
223
224
  }, z.core.$strict>;
224
225
  export declare const toolApprovalContinuationStateSchema: z.ZodEnum<{
225
226
  failed: "failed";
226
- queued: "queued";
227
227
  running: "running";
228
228
  succeeded: "succeeded";
229
229
  waiting: "waiting";
@@ -273,7 +273,6 @@ export declare const toolApprovalContinuationSchema: z.ZodObject<{
273
273
  id: z.ZodString;
274
274
  state: z.ZodEnum<{
275
275
  failed: "failed";
276
- queued: "queued";
277
276
  running: "running";
278
277
  succeeded: "succeeded";
279
278
  waiting: "waiting";
@@ -325,23 +324,23 @@ export declare const toolApprovalsResponseSchema: z.ZodObject<{
325
324
  id: z.ZodString;
326
325
  state: z.ZodEnum<{
327
326
  failed: "failed";
328
- queued: "queued";
329
327
  running: "running";
330
328
  succeeded: "succeeded";
331
329
  waiting: "waiting";
332
330
  }>;
333
331
  }, z.core.$strip>>;
334
332
  }, z.core.$strip>;
335
- export declare const toolApprovalDecisionResponseSchema: z.ZodObject<{
336
- continuationId: z.ZodString;
337
- state: z.ZodEnum<{
338
- failed: "failed";
339
- queued: "queued";
340
- running: "running";
341
- succeeded: "succeeded";
342
- waiting: "waiting";
343
- }>;
344
- }, z.core.$strip>;
333
+ export declare const continueToolApprovalsBodySchema: z.ZodObject<{
334
+ decisions: z.ZodArray<z.ZodObject<{
335
+ approvalId: z.ZodString;
336
+ approved: z.ZodBoolean;
337
+ reason: z.ZodOptional<z.ZodString>;
338
+ }, z.core.$strict>>;
339
+ functions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
340
+ description: z.ZodString;
341
+ inputSchema: z.ZodCustom<z.core.JSONSchema.JSONSchema, z.core.JSONSchema.JSONSchema>;
342
+ }, z.core.$strict>>>;
343
+ }, z.core.$strict>;
345
344
  export type SessionListItem = z.infer<typeof sessionListItemSchema>;
346
345
  export type SessionResponse = z.infer<typeof sessionResponseSchema>;
347
346
  export type SessionsListResponse = z.infer<typeof sessionsListResponseSchema>;
@@ -350,8 +349,8 @@ export type LatestSessionsListResponse = z.infer<typeof latestSessionsListRespon
350
349
  export type SessionMessage = z.infer<typeof sessionMessageSchema>;
351
350
  export type SessionMessagesResponse = z.infer<typeof sessionMessagesResponseSchema>;
352
351
  export type SessionMessagesQuery = z.infer<typeof sessionMessagesQuerySchema>;
353
- export type DecideToolApprovalBody = z.infer<typeof decideToolApprovalBodySchema>;
352
+ export type ToolApprovalDecision = z.infer<typeof toolApprovalDecisionSchema>;
353
+ export type ContinueToolApprovalsBody = z.infer<typeof continueToolApprovalsBodySchema>;
354
354
  export type ToolApprovalContinuationState = z.infer<typeof toolApprovalContinuationStateSchema>;
355
355
  export type ToolApprovalState = z.infer<typeof toolApprovalStateSchema>;
356
356
  export type ToolApprovalsResponse = z.infer<typeof toolApprovalsResponseSchema>;
357
- export type ToolApprovalDecisionResponse = z.infer<typeof toolApprovalDecisionResponseSchema>;
@@ -5,6 +5,7 @@ import { DEFAULT_SESSION_MESSAGES_LIMIT, MAX_SESSION_MESSAGES_LIMIT, } from "../
5
5
  import { toolExecutionReferenceSchema } from "./agent-approval.js";
6
6
  import { agentConfigSchema, agentSchema } from "./agents.js";
7
7
  import { metadataSchema, userIdSchema } from "./attribution.js";
8
+ import { chatFunctionDefinitionsSchema } from "./chat.js";
8
9
  /**
9
10
  * `GET /v1/agents/{agentId}/sessions` list item. `agentId`/`tenantId` never
10
11
  * leak to the wire; `userId`/`metadata` come from the first successful Turn.
@@ -90,16 +91,16 @@ export const sessionMessagesQuerySchema = z
90
91
  message: "cursor and after are mutually exclusive.",
91
92
  path: ["after"],
92
93
  });
93
- /** Decision-only input for one server-owned Tool approval. */
94
- export const decideToolApprovalBodySchema = z
94
+ /** One decision in the current Tool approval round. */
95
+ export const toolApprovalDecisionSchema = z
95
96
  .object({
97
+ approvalId: z.string().min(1),
96
98
  approved: z.boolean(),
97
99
  reason: z.string().trim().min(1).max(1000).optional(),
98
100
  })
99
101
  .strict();
100
102
  export const toolApprovalContinuationStateSchema = z.enum([
101
103
  "waiting",
102
- "queued",
103
104
  "running",
104
105
  "succeeded",
105
106
  "failed",
@@ -130,9 +131,13 @@ export const toolApprovalsResponseSchema = z
130
131
  continuation: toolApprovalContinuationSchema.nullable(),
131
132
  })
132
133
  .strip();
133
- export const toolApprovalDecisionResponseSchema = z
134
+ export const continueToolApprovalsBodySchema = z
134
135
  .object({
135
- continuationId: z.string().min(1),
136
- state: toolApprovalContinuationStateSchema,
136
+ decisions: z
137
+ .array(toolApprovalDecisionSchema)
138
+ .min(1)
139
+ .refine((decisions) => new Set(decisions.map((decision) => decision.approvalId)).size ===
140
+ decisions.length, { message: "Approval IDs must be distinct." }),
141
+ functions: chatFunctionDefinitionsSchema.optional(),
137
142
  })
138
- .strip();
143
+ .strict();
@@ -7,17 +7,17 @@ export { agentConfigSchema, agentResponseSchema, agentSchema, agentStatusSchema,
7
7
  export { artifactDownloadUrlResponseSchema, artifactListItemSchema, artifactsListResponseSchema, } from "./entities/artifacts.ts";
8
8
  export { attributionCreateInputSchema, metadataSchema, } from "./entities/attribution.ts";
9
9
  export type { ChatFunctionCallEvent, ChatFunctionDefinition, ChatFunctionDefinitions, ChatFunctionOutcome, ClaimChatFunctionBody, PromptVariables, ResolveChatFunctionBody, UsageSummary, } from "./entities/chat.ts";
10
- export { blazingAgentsChatMessageMetadataSchema, chatFunctionCallEventSchema, chatFunctionDefinitionSchema, chatFunctionDefinitionsSchema, chatFunctionOutcomeSchema, chatModeSchema, chatRequestBodySchema, chatTriggerSchema, claimChatFunctionBodySchema, claimChatFunctionResponseSchema, generationRequestBodySchema, jsonSchemaShapeSchema, MAX_CHAT_FUNCTION_DEFINITIONS_BYTES, MAX_CHAT_FUNCTION_PAYLOAD_BYTES, MAX_CHAT_FUNCTIONS, promptVariablesSchema, resolveChatFunctionBodySchema, resolveChatFunctionResponseSchema, resumeToolApprovalContinuationBodySchema, usageSummarySchema, } from "./entities/chat.ts";
10
+ export { blazingAgentsChatMessageMetadataSchema, chatFunctionCallEventSchema, chatFunctionDefinitionSchema, chatFunctionDefinitionsSchema, chatFunctionOutcomeSchema, chatModeSchema, chatRequestBodySchema, chatTriggerSchema, claimChatFunctionBodySchema, claimChatFunctionResponseSchema, generationRequestBodySchema, jsonSchemaShapeSchema, MAX_CHAT_FUNCTION_DEFINITIONS_BYTES, MAX_CHAT_FUNCTION_PAYLOAD_BYTES, MAX_CHAT_FUNCTIONS, promptVariablesSchema, resolveChatFunctionBodySchema, resolveChatFunctionResponseSchema, usageSummarySchema, } from "./entities/chat.ts";
11
11
  export { chatConfigurationSchema, chatConnectionSchema, chatConnectionsResponseSchema, chatCredentialsSchema, chatDeliveriesResponseSchema, chatDeliveryListStatusSchema, chatDeliverySchema, chatDeliveryStatusSchema, chatHealthCheckSchema, chatHealthSchema, chatIdentitySchema, createChatConnectionBodySchema, rotateChatConnectionBodySchema, tenantChatDeliverySchema, updateChatConnectionBodySchema, } from "./entities/chat-connections.ts";
12
12
  export { approveMcpOauthAuthorizationBodySchema, createMcpConnectionBodySchema, mcpAttachmentResponseSchema, mcpAttachmentsResponseSchema, mcpConnectionAuthTypeSchema, mcpConnectionOauthConnectResponseSchema, mcpConnectionReconnectResultSchema, mcpConnectionResponseSchema, mcpConnectionStatusSchema, mcpConnectionsResponseSchema, mcpConnectionTestErrorCodeSchema, mcpConnectionTestResponseSchema, mcpOauthAuthorizationLaunchResponseSchema, reconnectMcpConnectionBodySchema, updateMcpAttachmentBodySchema, updateMcpConnectionBodySchema, } from "./entities/mcp-connections.ts";
13
13
  export { createMemoryBodySchema, memoriesListResponseSchema, memoryResponseSchema, memorySchema, updateMemoryBodySchema, } from "./entities/memories.ts";
14
14
  export { createMerchantConnectionBodySchema, merchantBindingResponseSchema, merchantBindingsResponseSchema, merchantConnectionResponseSchema, merchantConnectionSchema, merchantConnectionStatusSchema, merchantCustomerBindingSchema, merchantEnvironmentSchema, merchantGuardSchema, merchantProviderSchema, merchantUsageEventNextAction, merchantUsageEventNextActionSchema, merchantUsageEventSchema, merchantUsageEventStatusSchema, merchantUsageEventsResponseSchema, merchantUsageSummaryQuerySchema, merchantUsageSummaryResponseSchema, merchantUsageSummarySchema, merchantWorkflowIssueSchema, updateMerchantConnectionBodySchema, upsertMerchantBindingBodySchema, } from "./entities/merchant.ts";
15
15
  export { createPromptBodySchema, parsePromptVariables, promptResponseSchema, promptSchema, promptsListQuerySchema, promptsResponseSchema, promptTemplateSchema, renderPromptTemplate, updatePromptBodySchema, } from "./entities/prompts.ts";
16
16
  export { createProviderBodySchema, providerListItemSchema, providerModelsResponseSchema, providerResponseSchema, providersResponseSchema, providerTypeSchema, thinkingLevelsResponseSchema, updateProviderBodySchema, } from "./entities/providers.ts";
17
- export type { ResumeSessionInputsResponse, RunSessionInputsBody, SessionActivity, SessionInput, SessionInputMode, SessionInputResponse, SessionInputState, SessionInputsQuery, SessionInputsResponse, StopSessionBody, StopSessionResponse, SubmitSessionInputBody, } from "./entities/session-inputs.ts";
18
- export { resumeSessionInputsResponseSchema, runSessionInputsBodySchema, sessionActivitySchema, sessionInputModeSchema, sessionInputRequestIdSchema, sessionInputResponseSchema, sessionInputSchema, sessionInputStateSchema, sessionInputsQuerySchema, sessionInputsResponseSchema, stopSessionBodySchema, stopSessionResponseSchema, submitSessionInputBodySchema, } from "./entities/session-inputs.ts";
19
- export type { ToolApprovalDecisionResponse, ToolApprovalsResponse, } from "./entities/sessions.ts";
20
- export { decideToolApprovalBodySchema, latestSessionListItemSchema, latestSessionsListResponseSchema, sessionListItemSchema, sessionMessageSchema, sessionMessagesResponseSchema, sessionResponseSchema, sessionsListResponseSchema, toolApprovalContinuationStateSchema, toolApprovalDecisionResponseSchema, toolApprovalStateSchema, toolApprovalsResponseSchema, } from "./entities/sessions.ts";
17
+ export type { ChatSteerConsumedEvent, SessionActivity, SessionInput, SessionInputResponse, SessionInputState, SessionInputsQuery, SessionInputsResponse, StopSessionBody, StopSessionResponse, SubmitSessionInputBody, } from "./entities/session-inputs.ts";
18
+ export { chatSteerConsumedEventSchema, sessionActivitySchema, sessionInputRequestIdSchema, sessionInputResponseSchema, sessionInputSchema, sessionInputStateSchema, sessionInputsQuerySchema, sessionInputsResponseSchema, stopSessionBodySchema, stopSessionResponseSchema, submitSessionInputBodySchema, } from "./entities/session-inputs.ts";
19
+ export type { ContinueToolApprovalsBody, ToolApprovalContinuationState, ToolApprovalDecision, ToolApprovalsResponse, } from "./entities/sessions.ts";
20
+ export { continueToolApprovalsBodySchema, latestSessionListItemSchema, latestSessionsListResponseSchema, sessionListItemSchema, sessionMessageSchema, sessionMessagesResponseSchema, sessionResponseSchema, sessionsListResponseSchema, toolApprovalContinuationStateSchema, toolApprovalDecisionSchema, toolApprovalStateSchema, toolApprovalsResponseSchema, } from "./entities/sessions.ts";
21
21
  export { copySkillBodySchema, createSkillBodySchema, skillCopyResultsSchema, skillDetailSchema, skillsListResponseSchema, } from "./entities/skills.ts";
22
22
  export { createTaskBodySchema, createTaskResponseSchema, createTaskRunBodySchema, createTaskRunResponseSchema, taskCronConfigSchema, taskIntervalConfigSchema, taskListItemSchema, taskOnceConfigSchema, taskResponseSchema, taskRunMessagesResponseSchema, taskRunResponseSchema, taskRunSchema, taskRunStatusSchema, taskRunsListResponseSchema, taskScheduleInputSchema, taskScheduleKindSchema, taskSchema, tasksListResponseSchema, updateTaskBodySchema, } from "./entities/tasks.ts";
23
23
  export { quotaSchema, subscriptionStatusSchema, tenantDeletionSchema, tenantResponseSchema, tenantSchema, tenantSettingsResponseSchema, updateTenantSettingsBodySchema, } from "./entities/tenants.ts";
@@ -6,15 +6,15 @@ export { chatFunctionNameSchema } from "./entities/agent-tools.js";
6
6
  export { agentConfigSchema, agentResponseSchema, agentSchema, agentStatusSchema, agentsListQuerySchema, agentsResponseSchema, createAgentBodySchema, updateAgentBodySchema, } from "./entities/agents.js";
7
7
  export { artifactDownloadUrlResponseSchema, artifactListItemSchema, artifactsListResponseSchema, } from "./entities/artifacts.js";
8
8
  export { attributionCreateInputSchema, metadataSchema, } from "./entities/attribution.js";
9
- export { blazingAgentsChatMessageMetadataSchema, chatFunctionCallEventSchema, chatFunctionDefinitionSchema, chatFunctionDefinitionsSchema, chatFunctionOutcomeSchema, chatModeSchema, chatRequestBodySchema, chatTriggerSchema, claimChatFunctionBodySchema, claimChatFunctionResponseSchema, generationRequestBodySchema, jsonSchemaShapeSchema, MAX_CHAT_FUNCTION_DEFINITIONS_BYTES, MAX_CHAT_FUNCTION_PAYLOAD_BYTES, MAX_CHAT_FUNCTIONS, promptVariablesSchema, resolveChatFunctionBodySchema, resolveChatFunctionResponseSchema, resumeToolApprovalContinuationBodySchema, usageSummarySchema, } from "./entities/chat.js";
9
+ export { blazingAgentsChatMessageMetadataSchema, chatFunctionCallEventSchema, chatFunctionDefinitionSchema, chatFunctionDefinitionsSchema, chatFunctionOutcomeSchema, chatModeSchema, chatRequestBodySchema, chatTriggerSchema, claimChatFunctionBodySchema, claimChatFunctionResponseSchema, generationRequestBodySchema, jsonSchemaShapeSchema, MAX_CHAT_FUNCTION_DEFINITIONS_BYTES, MAX_CHAT_FUNCTION_PAYLOAD_BYTES, MAX_CHAT_FUNCTIONS, promptVariablesSchema, resolveChatFunctionBodySchema, resolveChatFunctionResponseSchema, usageSummarySchema, } from "./entities/chat.js";
10
10
  export { chatConfigurationSchema, chatConnectionSchema, chatConnectionsResponseSchema, chatCredentialsSchema, chatDeliveriesResponseSchema, chatDeliveryListStatusSchema, chatDeliverySchema, chatDeliveryStatusSchema, chatHealthCheckSchema, chatHealthSchema, chatIdentitySchema, createChatConnectionBodySchema, rotateChatConnectionBodySchema, tenantChatDeliverySchema, updateChatConnectionBodySchema, } from "./entities/chat-connections.js";
11
11
  export { approveMcpOauthAuthorizationBodySchema, createMcpConnectionBodySchema, mcpAttachmentResponseSchema, mcpAttachmentsResponseSchema, mcpConnectionAuthTypeSchema, mcpConnectionOauthConnectResponseSchema, mcpConnectionReconnectResultSchema, mcpConnectionResponseSchema, mcpConnectionStatusSchema, mcpConnectionsResponseSchema, mcpConnectionTestErrorCodeSchema, mcpConnectionTestResponseSchema, mcpOauthAuthorizationLaunchResponseSchema, reconnectMcpConnectionBodySchema, updateMcpAttachmentBodySchema, updateMcpConnectionBodySchema, } from "./entities/mcp-connections.js";
12
12
  export { createMemoryBodySchema, memoriesListResponseSchema, memoryResponseSchema, memorySchema, updateMemoryBodySchema, } from "./entities/memories.js";
13
13
  export { createMerchantConnectionBodySchema, merchantBindingResponseSchema, merchantBindingsResponseSchema, merchantConnectionResponseSchema, merchantConnectionSchema, merchantConnectionStatusSchema, merchantCustomerBindingSchema, merchantEnvironmentSchema, merchantGuardSchema, merchantProviderSchema, merchantUsageEventNextAction, merchantUsageEventNextActionSchema, merchantUsageEventSchema, merchantUsageEventStatusSchema, merchantUsageEventsResponseSchema, merchantUsageSummaryQuerySchema, merchantUsageSummaryResponseSchema, merchantUsageSummarySchema, merchantWorkflowIssueSchema, updateMerchantConnectionBodySchema, upsertMerchantBindingBodySchema, } from "./entities/merchant.js";
14
14
  export { createPromptBodySchema, parsePromptVariables, promptResponseSchema, promptSchema, promptsListQuerySchema, promptsResponseSchema, promptTemplateSchema, renderPromptTemplate, updatePromptBodySchema, } from "./entities/prompts.js";
15
15
  export { createProviderBodySchema, providerListItemSchema, providerModelsResponseSchema, providerResponseSchema, providersResponseSchema, providerTypeSchema, thinkingLevelsResponseSchema, updateProviderBodySchema, } from "./entities/providers.js";
16
- export { resumeSessionInputsResponseSchema, runSessionInputsBodySchema, sessionActivitySchema, sessionInputModeSchema, sessionInputRequestIdSchema, sessionInputResponseSchema, sessionInputSchema, sessionInputStateSchema, sessionInputsQuerySchema, sessionInputsResponseSchema, stopSessionBodySchema, stopSessionResponseSchema, submitSessionInputBodySchema, } from "./entities/session-inputs.js";
17
- export { decideToolApprovalBodySchema, latestSessionListItemSchema, latestSessionsListResponseSchema, sessionListItemSchema, sessionMessageSchema, sessionMessagesResponseSchema, sessionResponseSchema, sessionsListResponseSchema, toolApprovalContinuationStateSchema, toolApprovalDecisionResponseSchema, toolApprovalStateSchema, toolApprovalsResponseSchema, } from "./entities/sessions.js";
16
+ export { chatSteerConsumedEventSchema, sessionActivitySchema, sessionInputRequestIdSchema, sessionInputResponseSchema, sessionInputSchema, sessionInputStateSchema, sessionInputsQuerySchema, sessionInputsResponseSchema, stopSessionBodySchema, stopSessionResponseSchema, submitSessionInputBodySchema, } from "./entities/session-inputs.js";
17
+ export { continueToolApprovalsBodySchema, latestSessionListItemSchema, latestSessionsListResponseSchema, sessionListItemSchema, sessionMessageSchema, sessionMessagesResponseSchema, sessionResponseSchema, sessionsListResponseSchema, toolApprovalContinuationStateSchema, toolApprovalDecisionSchema, toolApprovalStateSchema, toolApprovalsResponseSchema, } from "./entities/sessions.js";
18
18
  export { copySkillBodySchema, createSkillBodySchema, skillCopyResultsSchema, skillDetailSchema, skillsListResponseSchema, } from "./entities/skills.js";
19
19
  export { createTaskBodySchema, createTaskResponseSchema, createTaskRunBodySchema, createTaskRunResponseSchema, taskCronConfigSchema, taskIntervalConfigSchema, taskListItemSchema, taskOnceConfigSchema, taskResponseSchema, taskRunMessagesResponseSchema, taskRunResponseSchema, taskRunSchema, taskRunStatusSchema, taskRunsListResponseSchema, taskScheduleInputSchema, taskScheduleKindSchema, taskSchema, tasksListResponseSchema, updateTaskBodySchema, } from "./entities/tasks.js";
20
20
  export { quotaSchema, subscriptionStatusSchema, tenantDeletionSchema, tenantResponseSchema, tenantSchema, tenantSettingsResponseSchema, updateTenantSettingsBodySchema, } from "./entities/tenants.js";
@@ -22,13 +22,10 @@ export type BlazingAgentsDirectChatTransportOptions = {
22
22
  export declare class BlazingAgentsDirectChatTransport<UI_MESSAGE extends UIMessage = UIMessage> extends DefaultChatTransport<UI_MESSAGE> {
23
23
  #private;
24
24
  constructor(options: BlazingAgentsDirectChatTransportOptions);
25
- joinInputTurn(input: {
26
- turnId: string;
27
- abortSignal?: AbortSignal;
28
- }): Promise<ReadableStream<import("ai").UIMessageChunk<unknown, import("ai").UIDataTypes>>>;
29
- runInputs(input?: {
25
+ sendUserMessages(input: {
26
+ messages: UI_MESSAGE[];
30
27
  abortSignal?: AbortSignal;
31
28
  }): Promise<ReadableStream<import("ai").UIMessageChunk<unknown, import("ai").UIDataTypes>>>;
32
29
  sendMessages(input: Parameters<ChatTransport<UI_MESSAGE>["sendMessages"]>[0]): Promise<ReadableStream<import("ai").UIMessageChunk<unknown, import("ai").UIDataTypes>>>;
33
- reconnectToStream(_input: Parameters<ChatTransport<UI_MESSAGE>["reconnectToStream"]>[0]): Promise<ReadableStream<import("ai").UIMessageChunk<unknown, import("ai").UIDataTypes>> | null>;
30
+ reconnectToStream(_input: Parameters<ChatTransport<UI_MESSAGE>["reconnectToStream"]>[0]): Promise<null>;
34
31
  }
@@ -1,5 +1,5 @@
1
1
  import { DefaultChatTransport, lastAssistantMessageIsCompleteWithApprovalResponses, } from "ai";
2
- import { decideApprovalResponses } from "./approvals.js";
2
+ import { extractApprovalDecisions } from "./approvals.js";
3
3
  import { sessionIdSchema } from "./contracts/ids.js";
4
4
  /** Connects useChat directly to the SDK, including native streaming fetch clients. */
5
5
  export class BlazingAgentsDirectChatTransport extends DefaultChatTransport {
@@ -13,31 +13,17 @@ export class BlazingAgentsDirectChatTransport extends DefaultChatTransport {
13
13
  ? undefined
14
14
  : sessionIdSchema.parse(options.sessionId);
15
15
  }
16
- async joinInputTurn(input) {
17
- if (this.#sessionId === undefined) {
18
- throw new Error("Input Turn attachment requires an existing Session.");
19
- }
16
+ async sendUserMessages(input) {
20
17
  const client = await this.#options.getClient();
21
- const result = await client.sessions.joinInputTurn({
18
+ const result = await client.chat({
22
19
  ...input,
23
20
  agentId: this.#options.agentId,
24
21
  sessionId: this.#sessionId,
25
22
  functions: this.#options.functions,
23
+ userId: this.#options.userId,
24
+ metadata: this.#options.metadata,
26
25
  });
27
- return this.processResponseStream(result.toStream());
28
- }
29
- async runInputs(input = {}) {
30
- if (this.#sessionId === undefined) {
31
- throw new Error("Input batch admission requires an existing Session.");
32
- }
33
- const client = await this.#options.getClient();
34
- const result = await client.sessions.runInputs({
35
- ...input,
36
- agentId: this.#options.agentId,
37
- sessionId: this.#sessionId,
38
- functions: this.#options.functions,
39
- });
40
- return this.processResponseStream(result.toStream());
26
+ return this.#processChatResult(result);
41
27
  }
42
28
  async sendMessages(input) {
43
29
  if (input.trigger === "regenerate-message" && !this.#sessionId) {
@@ -92,6 +78,9 @@ export class BlazingAgentsDirectChatTransport extends DefaultChatTransport {
92
78
  trigger: input.trigger,
93
79
  });
94
80
  }
81
+ return this.#processChatResult(result);
82
+ }
83
+ async #processChatResult(result) {
95
84
  const stream = result.toStream();
96
85
  try {
97
86
  const sessionId = await result.sessionId;
@@ -106,25 +95,8 @@ export class BlazingAgentsDirectChatTransport extends DefaultChatTransport {
106
95
  }
107
96
  return this.processResponseStream(stream);
108
97
  }
109
- async reconnectToStream(_input) {
110
- if (this.#sessionId === undefined) {
111
- return null;
112
- }
113
- const client = await this.#options.getClient();
114
- const { continuation } = await client.sessions.toolApprovals({
115
- agentId: this.#options.agentId,
116
- sessionId: this.#sessionId,
117
- });
118
- if (continuation?.state !== "queued" && continuation?.state !== "running") {
119
- return null;
120
- }
121
- const result = await client.resumeChat({
122
- agentId: this.#options.agentId,
123
- sessionId: this.#sessionId,
124
- continuationId: continuation.id,
125
- functions: this.#options.functions ?? {},
126
- });
127
- return this.processResponseStream(result.toStream());
98
+ reconnectToStream(_input) {
99
+ return Promise.resolve(null);
128
100
  }
129
101
  async #sendApprovalContinuation(input, last) {
130
102
  if (this.#sessionId === undefined) {
@@ -136,16 +108,10 @@ export class BlazingAgentsDirectChatTransport extends DefaultChatTransport {
136
108
  sessionId: this.#sessionId,
137
109
  abortSignal: input.abortSignal,
138
110
  };
139
- const continuationId = await decideApprovalResponses(client, {
140
- ...target,
141
- message: last,
142
- });
143
- if (continuationId === undefined) {
144
- throw new Error("Tool approval response is missing an approval.");
145
- }
146
- const continuation = await client.resumeChat({
111
+ const decisions = extractApprovalDecisions(last);
112
+ const continuation = await client.continueChat({
147
113
  ...target,
148
- continuationId,
114
+ decisions,
149
115
  functions: this.#options.functions ?? {},
150
116
  });
151
117
  return this.processResponseStream(continuation.toStream());
@@ -1,6 +1,6 @@
1
- import type { ChatInput, ChatResult, CompletionInput, CompletionResult, HttpConfig, ObjectInput, ObjectResult, ResumeChatInput, TerminalStreamResult } from "./types.ts";
1
+ import type { ChatInput, ChatResult, CompletionInput, CompletionResult, ContinueChatInput, HttpConfig, ObjectInput, ObjectResult, TerminalStreamResult } from "./types.ts";
2
2
  export declare function chat(config: HttpConfig, input: ChatInput): Promise<ChatResult>;
3
- export declare function resumeChat(config: HttpConfig, input: ResumeChatInput): Promise<ChatResult>;
3
+ export declare function continueChat(config: HttpConfig, input: ContinueChatInput): Promise<ChatResult>;
4
4
  /**
5
5
  * Keeps status and headers while filtering the SSE body. Missing or locked
6
6
  * bodies pass through so the stream result reports them as `stream_error`.
@@ -1,9 +1,8 @@
1
1
  import { createTextStreamResponse, parsePartialJson } from "ai";
2
- import { toolApprovalsResponseSchema } from "./contracts/entities/sessions.js";
3
2
  import { sessionIdSchema } from "./contracts/ids.js";
4
3
  import { BlazingAgentsError } from "./errors.js";
5
4
  import { dispatchChatFunctions, toChatFunctionDefinitions, } from "./functions.js";
6
- import { requestJson, requestStream } from "./http.js";
5
+ import { requestStream } from "./http.js";
7
6
  export async function chat(config, input) {
8
7
  const body = buildChatBody(input);
9
8
  if (input.functions && Object.keys(input.functions).length > 0) {
@@ -30,14 +29,17 @@ export async function chat(config, input) {
30
29
  abortSignal: input.abortSignal,
31
30
  });
32
31
  }
33
- export async function resumeChat(config, input) {
34
- const sessionPath = `/v1/agents/${input.agentId}/sessions/${input.sessionId}`;
35
- const continuationId = input.continuationId ?? (await activeContinuationId(config, input));
36
- const response = await requestStream(config, `${sessionPath}/tool-approval-continuations/${continuationId}/resume`, {
37
- json: {},
32
+ export async function continueChat(config, input) {
33
+ const response = await requestStream(config, `/v1/agents/${input.agentId}/sessions/${input.sessionId}/tool-approvals/continue`, {
34
+ json: {
35
+ decisions: input.decisions,
36
+ ...(input.functions === undefined
37
+ ? {}
38
+ : { functions: toChatFunctionDefinitions(input.functions) }),
39
+ },
38
40
  method: "POST",
39
41
  clientRequestId: input.clientRequestId,
40
- ...(input.abortSignal ? { signal: input.abortSignal } : {}),
42
+ signal: input.abortSignal,
41
43
  });
42
44
  return buildChatResult(config, response, input.sessionId, {
43
45
  agentId: input.agentId,
@@ -45,16 +47,6 @@ export async function resumeChat(config, input) {
45
47
  abortSignal: input.abortSignal,
46
48
  });
47
49
  }
48
- async function activeContinuationId(config, { agentId, sessionId, abortSignal }) {
49
- const { continuation } = await requestJson(config, `/v1/agents/${agentId}/sessions/${sessionId}/tool-approvals`, { signal: abortSignal }, toolApprovalsResponseSchema);
50
- if (continuation?.state !== "queued" && continuation?.state !== "running") {
51
- throw new BlazingAgentsError({
52
- code: "not_found",
53
- message: "The Session has no tool approval continuation to resume.",
54
- });
55
- }
56
- return continuation.id;
57
- }
58
50
  /**
59
51
  * Keeps status and headers while filtering the SSE body. Missing or locked
60
52
  * bodies pass through so the stream result reports them as `stream_error`.
@@ -80,7 +72,10 @@ function buildChatBody(input) {
80
72
  base.messageId = input.messageId;
81
73
  }
82
74
  if ("message" in input) {
83
- base.message = input.message;
75
+ base.messages = [input.message];
76
+ }
77
+ else if ("messages" in input) {
78
+ base.messages = input.messages;
84
79
  }
85
80
  else {
86
81
  base.promptId = input.promptId;
package/dist/index.d.ts CHANGED
@@ -15,8 +15,8 @@ export type { CreateMcpConnectionBody, McpAttachmentResponse, McpAttachmentsResp
15
15
  export type { CreateMerchantConnectionBody, MerchantBindingResponse, MerchantBindingsResponse, MerchantConnection, MerchantConnectionResponse, MerchantCustomerBinding, MerchantGuard, MerchantProviderKind, MerchantUsageEvent, MerchantUsageEventResponse, MerchantUsageEventStatus, MerchantUsageEventsResponse, MerchantUsageSummary, MerchantUsageSummaryResponse, UpdateMerchantConnectionBody, UpsertMerchantBindingBody, } from "./contracts/entities/merchant.ts";
16
16
  export type { CreatePromptBody, PromptResponse, PromptsListQuery, PromptsResponse, UpdatePromptBody, } from "./contracts/entities/prompts.ts";
17
17
  export type { CreateProviderBody, ProviderListItem, ProviderModel, ProviderModelsResponse, ProviderResponse, ProvidersResponse, ProviderType, ThinkingLevelsResponse, UpdateProviderBody, } from "./contracts/entities/providers.ts";
18
- export type { ResumeSessionInputsResponse, RunSessionInputsBody, SessionActivity, SessionInput, SessionInputMode, SessionInputResponse, SessionInputState, SessionInputsQuery, SessionInputsResponse, StopSessionBody, StopSessionResponse, SubmitSessionInputBody, } from "./contracts/entities/session-inputs.ts";
19
- export type { SessionResponse, ToolApprovalDecisionResponse, ToolApprovalState, ToolApprovalsResponse, } from "./contracts/entities/sessions.ts";
18
+ export type { ChatSteerConsumedEvent, SessionActivity, SessionInput, SessionInputResponse, SessionInputState, SessionInputsQuery, SessionInputsResponse, StopSessionBody, StopSessionResponse, SubmitSessionInputBody, } from "./contracts/entities/session-inputs.ts";
19
+ export type { ContinueToolApprovalsBody, SessionResponse, ToolApprovalDecision, ToolApprovalState, ToolApprovalsResponse, } from "./contracts/entities/sessions.ts";
20
20
  export { sessionResponseSchema } from "./contracts/entities/sessions.ts";
21
21
  export type { CreateSkillBody, Skill, SkillArchiveType, SkillCopyResult, SkillCopyResults, SkillDetail, SkillFile, SkillsListResponse, } from "./contracts/entities/skills.ts";
22
22
  export type { SessionUsageQuery, SessionUsageResponse, UsageBucket, UsageOverviewQuery, UsageOverviewResponse, UsageTotals, } from "./contracts/entities/usage.ts";
@@ -25,4 +25,4 @@ export { BlazingAgentsDirectChatTransport, type BlazingAgentsDirectChatTransport
25
25
  export { BlazingAgentsError } from "./errors.ts";
26
26
  export { type ChatFunction, type ChatFunctionContext, type ChatFunctions, defineFunction, } from "./functions.ts";
27
27
  export { createChatRelay, createCompletionRelay, type RelayContext, type SessionOwnershipStore, } from "./relay.ts";
28
- export type { AgentClient, AgentSkillsResource, AgentsListOptions, AgentsResource, ArtifactsResource, AttributionInput, BlazingAgentsErrorCode, BlazingAgentsOptions, BlazingAgentsRequestOptions, BlazingAgentsUIMessage, BlazingAgentsUIMessageChunk, ChatConnectionsResource, ChatDeliveriesListOptions, ChatDeliveriesResource, ChatInput, ChatMessageInput, ChatPromptInput, ChatResult, ChatTrigger, CompletionInput, CompletionPromptIdInput, CompletionPromptInput, CompletionResult, KnownBlazingAgentsErrorCode, LatestSessionsListOptions, McpConnectionsResource, MemoriesListOptions, MemoriesResource, MerchantBindingsListOptions, MerchantBindingsResource, MerchantConnectionResource, MerchantUsageEventsListOptions, MerchantUsageEventsResource, ObjectInput, ObjectPromptIdInput, ObjectPromptInput, ObjectResult, PromptsResource, ProvidersResource, ResourceRequestOptions, ResponseObservation, ResumeChatInput, SessionsResource, SkillsListOptions, TasksResource, TenantResource, TerminalStreamResult, UsageResource, UserClient, WorkspacesListOptions, WorkspacesResource, } from "./types.ts";
28
+ export type { AgentClient, AgentSkillsResource, AgentsListOptions, AgentsResource, ArtifactsResource, AttributionInput, BlazingAgentsErrorCode, BlazingAgentsOptions, BlazingAgentsRequestOptions, BlazingAgentsUIMessage, BlazingAgentsUIMessageChunk, ChatConnectionsResource, ChatDeliveriesListOptions, ChatDeliveriesResource, ChatInput, ChatMessageInput, ChatMessagesInput, ChatPromptInput, ChatResult, ChatTrigger, CompletionInput, CompletionPromptIdInput, CompletionPromptInput, CompletionResult, ContinueChatInput, KnownBlazingAgentsErrorCode, LatestSessionsListOptions, McpConnectionsResource, MemoriesListOptions, MemoriesResource, MerchantBindingsListOptions, MerchantBindingsResource, MerchantConnectionResource, MerchantUsageEventsListOptions, MerchantUsageEventsResource, ObjectInput, ObjectPromptIdInput, ObjectPromptInput, ObjectResult, PromptsResource, ProvidersResource, ResourceRequestOptions, ResponseObservation, SessionsResource, SkillsListOptions, TasksResource, TenantResource, TerminalStreamResult, UsageResource, UserClient, WorkspacesListOptions, WorkspacesResource, } from "./types.ts";
package/dist/relay.d.ts CHANGED
@@ -2,7 +2,7 @@ import type { BlazingAgents } from "./client.ts";
2
2
  import type { ChatFunctions } from "./functions.ts";
3
3
  export interface RelayContext {
4
4
  agentId: string;
5
- /** Handlers for this authenticated request; they also resume approved continuations. */
5
+ /** Handlers for this authenticated request and its approved continuation. */
6
6
  functions?: ChatFunctions;
7
7
  metadata?: Record<string, unknown>;
8
8
  userId: string;
@@ -17,9 +17,9 @@ interface RelayOptions<Method extends keyof BlazingAgents> {
17
17
  }
18
18
  /**
19
19
  * Relays useChat submissions. An assistant message carrying approval
20
- * responses records each decision and then streams the continuation.
20
+ * responses submits the complete round and streams the continuation.
21
21
  */
22
- export declare function createChatRelay(options: RelayOptions<"chat" | "resumeChat" | "sessions"> & {
22
+ export declare function createChatRelay(options: RelayOptions<"chat" | "continueChat"> & {
23
23
  sessions: SessionOwnershipStore;
24
24
  }): (request: Request) => Promise<Response>;
25
25
  export declare function createCompletionRelay(options: RelayOptions<"completion">): (request: Request) => Promise<Response>;
package/dist/relay.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { safeValidateUIMessages } from "ai";
2
2
  import { z } from "zod";
3
- import { decideApprovalResponses } from "./approvals.js";
3
+ import { extractApprovalDecisions } from "./approvals.js";
4
4
  import { sessionIdSchema } from "./contracts/ids.js";
5
5
  import { BlazingAgentsError } from "./errors.js";
6
6
  const chatBodySchema = z.object({
@@ -14,7 +14,7 @@ const chatBodySchema = z.object({
14
14
  const completionBodySchema = z.object({ prompt: z.string().trim().min(1) });
15
15
  /**
16
16
  * Relays useChat submissions. An assistant message carrying approval
17
- * responses records each decision and then streams the continuation.
17
+ * responses submits the complete round and streams the continuation.
18
18
  */
19
19
  export function createChatRelay(options) {
20
20
  return async (request) => {
@@ -44,6 +44,9 @@ export function createChatRelay(options) {
44
44
  sessionId: body.sessionId,
45
45
  });
46
46
  }
47
+ if (message.role !== "user") {
48
+ return errorResponse(400, "invalid_request", "Chat submission requires a user message.");
49
+ }
47
50
  const chatInput = {
48
51
  agentId: context.agentId,
49
52
  functions: context.functions,
@@ -92,17 +95,13 @@ async function relayApprovalResponses(client, { functions, message, request, ...
92
95
  sessionId: input.sessionId,
93
96
  abortSignal: request.signal,
94
97
  };
95
- const continuationId = await decideApprovalResponses(client, {
96
- ...target,
97
- message,
98
- });
99
- if (continuationId === undefined) {
98
+ const decisions = extractApprovalDecisions(message);
99
+ if (decisions.length === 0) {
100
100
  return errorResponse(400, "invalid_request", "The message has no tool approval responses.");
101
101
  }
102
- /** An absent registry still resumes, so missing handlers become tool errors instead of a stalled observer. */
103
- const continuation = await client.resumeChat({
102
+ const continuation = await client.continueChat({
104
103
  ...target,
105
- continuationId,
104
+ decisions,
106
105
  functions: functions ?? {},
107
106
  });
108
107
  return continuation.toResponse();
@@ -1,9 +1,7 @@
1
- import { resumeSessionInputsResponseSchema, sessionInputRequestIdSchema, sessionInputResponseSchema, sessionInputsResponseSchema, stopSessionResponseSchema, } from "../contracts/entities/session-inputs.js";
2
- import { latestSessionsListResponseSchema, sessionMessagesResponseSchema, sessionResponseSchema, sessionsListResponseSchema, toolApprovalDecisionResponseSchema, toolApprovalsResponseSchema, } from "../contracts/entities/sessions.js";
1
+ import { sessionInputResponseSchema, sessionInputsResponseSchema, stopSessionResponseSchema, } from "../contracts/entities/session-inputs.js";
2
+ import { latestSessionsListResponseSchema, sessionMessagesResponseSchema, sessionResponseSchema, sessionsListResponseSchema, toolApprovalsResponseSchema, } from "../contracts/entities/sessions.js";
3
3
  import { agentIdSchema, sessionIdSchema, turnIdSchema, } from "../contracts/ids.js";
4
- import { dispatchChatFunctions, stripFunctionEvents, toChatFunctionDefinitions, } from "../functions.js";
5
- import { buildTerminalStreamResult, withFilteredBody } from "../generation.js";
6
- import { requestJson, requestStream } from "../http.js";
4
+ import { requestJson } from "../http.js";
7
5
  /**
8
6
  * `client.sessions` reads, paginates, and deletes Sessions under
9
7
  * `/v1/agents/:agentId/sessions`. Pagination is manual: the SDK returns
@@ -12,38 +10,12 @@ import { requestJson, requestStream } from "../http.js";
12
10
  */
13
11
  export function createSessionsResource(config) {
14
12
  return {
15
- async joinInputTurn({ agentId, sessionId, turnId, functions, abortSignal, }) {
16
- const response = await requestStream(config, `/v1/agents/${agentIdSchema.parse(agentId)}/sessions/${sessionIdSchema.parse(sessionId)}/input-turns/${turnIdSchema.parse(turnId)}`, { signal: abortSignal });
17
- return buildTerminalStreamResult(response, "input Turn", (body) => functions
18
- ? dispatchChatFunctions(config, { agentId, sessionId, functions, abortSignal }, body)
19
- : stripFunctionEvents(body));
20
- },
21
- async runInputs({ agentId, sessionId, functions, abortSignal }) {
22
- const response = await requestStream(config, `/v1/agents/${agentIdSchema.parse(agentId)}/sessions/${sessionIdSchema.parse(sessionId)}/inputs/run`, {
23
- method: "POST",
24
- json: functions === undefined
25
- ? {}
26
- : { functions: toChatFunctionDefinitions(functions) },
27
- signal: abortSignal,
28
- });
29
- return buildTerminalStreamResult(response, "input Turn", (body) => functions
30
- ? dispatchChatFunctions(config, { agentId, sessionId, functions, abortSignal }, body)
31
- : stripFunctionEvents(body));
32
- },
33
13
  async submitInput({ agentId, sessionId, abortSignal, ...body }) {
34
14
  return await requestJson(config, `/v1/agents/${agentIdSchema.parse(agentId)}/sessions/${sessionIdSchema.parse(sessionId)}/inputs`, { method: "POST", json: body, signal: abortSignal }, sessionInputResponseSchema);
35
15
  },
36
16
  async inputs({ agentId, sessionId, abortSignal, ...query }) {
37
17
  return await requestJson(config, `/v1/agents/${agentIdSchema.parse(agentId)}/sessions/${sessionIdSchema.parse(sessionId)}/inputs`, { query, signal: abortSignal }, sessionInputsResponseSchema);
38
18
  },
39
- async promoteInput({ agentId, sessionId, requestId, abortSignal }) {
40
- const inputId = sessionInputRequestIdSchema.parse(requestId);
41
- return await requestJson(config, `/v1/agents/${agentIdSchema.parse(agentId)}/sessions/${sessionIdSchema.parse(sessionId)}/inputs/${encodeURIComponent(inputId)}/promote`, { method: "POST", signal: abortSignal }, sessionInputResponseSchema);
42
- },
43
- async deleteInput({ agentId, sessionId, requestId, abortSignal }) {
44
- const inputId = sessionInputRequestIdSchema.parse(requestId);
45
- return await requestJson(config, `/v1/agents/${agentIdSchema.parse(agentId)}/sessions/${sessionIdSchema.parse(sessionId)}/inputs/${encodeURIComponent(inputId)}`, { method: "DELETE", signal: abortSignal }, sessionInputResponseSchema);
46
- },
47
19
  async stop({ agentId, sessionId, turnId, abortSignal }) {
48
20
  return await requestJson(config, `/v1/agents/${agentIdSchema.parse(agentId)}/sessions/${sessionIdSchema.parse(sessionId)}/stop`, {
49
21
  method: "POST",
@@ -51,19 +23,9 @@ export function createSessionsResource(config) {
51
23
  signal: abortSignal,
52
24
  }, stopSessionResponseSchema);
53
25
  },
54
- async resumeInputs({ agentId, sessionId, abortSignal }) {
55
- return await requestJson(config, `/v1/agents/${agentIdSchema.parse(agentId)}/sessions/${sessionIdSchema.parse(sessionId)}/inputs/resume`, { method: "POST", signal: abortSignal }, resumeSessionInputsResponseSchema);
56
- },
57
26
  async get({ agentId, sessionId, abortSignal }) {
58
27
  return await requestJson(config, `/v1/agents/${agentId}/sessions/${sessionId}`, { signal: abortSignal }, sessionResponseSchema);
59
28
  },
60
- async decideToolApproval({ agentId, sessionId, approvalId, abortSignal, ...decision }) {
61
- return await requestJson(config, `/v1/agents/${agentId}/sessions/${sessionId}/tool-approvals/${approvalId}`, {
62
- json: decision,
63
- method: "POST",
64
- signal: abortSignal,
65
- }, toolApprovalDecisionResponseSchema);
66
- },
67
29
  async list({ agentId, ...options }) {
68
30
  return await requestJson(config, `/v1/agents/${agentId}/sessions`, {
69
31
  signal: options.abortSignal,
@@ -99,11 +61,6 @@ export function createSessionsResource(config) {
99
61
  },
100
62
  }, sessionMessagesResponseSchema);
101
63
  },
102
- async joinToolApprovalContinuation({ agentId, sessionId, continuationId, abortSignal, }) {
103
- const response = await requestStream(config, `/v1/agents/${agentId}/sessions/${sessionId}/tool-approval-continuations/${continuationId}`, { signal: abortSignal });
104
- /** Observers never execute calls; private events are removed unclaimed. */
105
- return buildTerminalStreamResult(withFilteredBody(response, stripFunctionEvents), "continuation");
106
- },
107
64
  async toolApprovals({ agentId, sessionId, abortSignal }) {
108
65
  return await requestJson(config, `/v1/agents/${agentId}/sessions/${sessionId}/tool-approvals`, { signal: abortSignal }, toolApprovalsResponseSchema);
109
66
  },