@yolk-sdk/agent 0.1.0-canary.20 → 0.1.0-canary.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +21 -1
  2. package/dist/client/state.d.mts +4 -2
  3. package/dist/client/state.d.mts.map +1 -1
  4. package/dist/client/state.mjs +42 -22
  5. package/dist/client/state.mjs.map +1 -1
  6. package/dist/loop/error.d.mts +3 -2
  7. package/dist/loop/error.d.mts.map +1 -1
  8. package/dist/loop/error.mjs +6 -3
  9. package/dist/loop/error.mjs.map +1 -1
  10. package/dist/loop/run.d.mts.map +1 -1
  11. package/dist/loop/run.mjs +17 -3
  12. package/dist/loop/run.mjs.map +1 -1
  13. package/dist/loop/services/loop-config.mjs +1 -1
  14. package/dist/loop/services/loop-config.mjs.map +1 -1
  15. package/dist/protocol/event.d.mts +17 -5
  16. package/dist/protocol/event.d.mts.map +1 -1
  17. package/dist/protocol/event.mjs +24 -3
  18. package/dist/protocol/event.mjs.map +1 -1
  19. package/dist/protocol/index.d.mts +2 -2
  20. package/dist/protocol/index.d.mts.map +1 -1
  21. package/dist/protocol/index.mjs +2 -2
  22. package/dist/providers/anthropic/claude-provider.d.mts.map +1 -1
  23. package/dist/providers/anthropic/claude-provider.mjs +36 -15
  24. package/dist/providers/anthropic/claude-provider.mjs.map +1 -1
  25. package/dist/providers/openai/codex-provider.d.mts.map +1 -1
  26. package/dist/providers/openai/codex-provider.mjs +59 -17
  27. package/dist/providers/openai/codex-provider.mjs.map +1 -1
  28. package/dist/providers/openai/provider.d.mts.map +1 -1
  29. package/dist/providers/openai/provider.mjs +16 -10
  30. package/dist/providers/openai/provider.mjs.map +1 -1
  31. package/dist/providers/provider-error.d.mts +32 -0
  32. package/dist/providers/provider-error.d.mts.map +1 -0
  33. package/dist/providers/provider-error.mjs +91 -0
  34. package/dist/providers/provider-error.mjs.map +1 -0
  35. package/dist/react/chat-core.d.mts +3 -1
  36. package/dist/react/chat-core.d.mts.map +1 -1
  37. package/dist/react/chat-core.mjs +42 -6
  38. package/dist/react/chat-core.mjs.map +1 -1
  39. package/dist/react/chat-items.d.mts +8 -2
  40. package/dist/react/chat-items.d.mts.map +1 -1
  41. package/dist/react/chat-items.mjs +16 -9
  42. package/dist/react/chat-items.mjs.map +1 -1
  43. package/package.json +1 -1
  44. package/src/client/state.ts +43 -18
  45. package/src/loop/error.ts +6 -3
  46. package/src/loop/run.ts +27 -4
  47. package/src/loop/services/loop-config.ts +1 -1
  48. package/src/protocol/event.ts +26 -2
  49. package/src/protocol/index.ts +2 -0
  50. package/src/providers/anthropic/claude-provider.ts +51 -22
  51. package/src/providers/openai/codex-provider.ts +81 -19
  52. package/src/providers/openai/provider.ts +22 -18
  53. package/src/providers/provider-error.ts +213 -0
  54. package/src/react/chat-core.ts +46 -5
  55. package/src/react/chat-items.ts +10 -3
@@ -1 +1 @@
1
- {"version":3,"file":"run.mjs","names":["AgentLLMTextDelta","AgentLLMReasoningDelta"],"sources":["../../src/loop/run.ts"],"sourcesContent":["import { Clock, Effect, Ref, Stream } from 'effect'\nimport * as Schema from 'effect/Schema'\nimport {\n AgentAwaitingInput,\n AgentEnd,\n AgentRetry,\n AgentStart,\n AssistantMessageEvent,\n UsageUpdate,\n addAgentUsage,\n contentParts,\n contentPreview,\n LLMReasoningDelta as AgentLLMReasoningDelta,\n LLMStreamEnd,\n LLMStreamStart,\n LLMTextDelta as AgentLLMTextDelta,\n ToolExecutionCompleted,\n ToolExecutionError,\n ToolExecutionStarted,\n ToolApprovalRequested,\n ToolInputEnd,\n ToolInputDelta,\n ToolInputStart,\n QuestionRequested,\n ProviderToolResult,\n QuestionRequest,\n QuestionToolParams,\n formatQuestionResponseContent,\n hitlResponseEvent,\n questionResponseStructuredContent,\n makeSubagentRunId,\n ToolApprovalRequest,\n ToolResultMessage,\n SubagentCompleted,\n SubagentStarted,\n assistantHostToolCalls,\n type ToolCall,\n type AgentReasoningEffort,\n type HitlRequest,\n type HitlResponse,\n type QuestionPrompt,\n type QuestionResponse,\n type ToolApprovalResponse,\n ToolResult,\n TurnEnd,\n TurnStart,\n zeroAgentUsage,\n type AgentEvent,\n type AgentErrorCode,\n type AgentMessage,\n type AgentUsage,\n type AgentModelCapabilities,\n type ToolDef\n} from '@yolk-sdk/agent/protocol'\nimport { accumulateAssistantMessage, collectToolCalls } from './accumulator.ts'\nimport {\n AbortError,\n LLMError,\n ToolError,\n type AgentLoopError,\n type LLMProviderError\n} from './error.ts'\nimport type { LLMEvent } from './llm-event.ts'\nimport { ContextTransformer, type ContextTransformResult } from './services/context-transformer.ts'\nimport { LLMProvider, type LLMRequest } from './services/llm-provider.ts'\nimport { LoopConfig, type LoopConfigShape } from './services/loop-config.ts'\nimport { ToolExecutor } from './services/tool-executor.ts'\n\nexport type AgentLoopRunId = string\n\nexport type RunConfig = {\n readonly messages: ReadonlyArray<AgentMessage>\n readonly systemPrompt: string\n readonly tools: ReadonlyArray<ToolDef>\n readonly hitlResponses?: ReadonlyArray<HitlResponse>\n readonly model: string\n readonly reasoningEffort?: AgentReasoningEffort\n readonly capabilities?: AgentModelCapabilities\n}\n\nexport type ModelTurnConfig = RunConfig & {\n readonly turn: number\n}\n\nexport type ToolBatchConfig = {\n readonly calls: ReadonlyArray<ToolCall>\n readonly tools?: ReadonlyArray<ToolDef>\n readonly hitlResponses?: ReadonlyArray<HitlResponse>\n readonly model?: string\n readonly createdMessages?: ReadonlyArray<AgentMessage>\n readonly turn?: number\n readonly usage?: AgentUsage\n}\n\nconst questionToolName = 'question'\n\ntype TaskCallMetadata = {\n readonly subagentRunId: string\n readonly subagentType: string\n readonly description: string\n}\n\nconst objectField = (input: unknown, key: string) =>\n input !== null && typeof input === 'object'\n ? Object.getOwnPropertyDescriptor(input, key)?.value\n : undefined\n\nconst nonEmptyStringField = (input: unknown, key: string) => {\n const value = objectField(input, key)\n\n return typeof value === 'string' && value.trim().length > 0 ? value : undefined\n}\n\nconst taskCallMetadata = (call: ToolCall): TaskCallMetadata | undefined => {\n if (call.name !== 'task') {\n return undefined\n }\n\n const subagentType = nonEmptyStringField(call.params, 'subagent_type')\n const description = nonEmptyStringField(call.params, 'description')\n\n if (subagentType === undefined || description === undefined) {\n return undefined\n }\n\n return {\n subagentRunId: makeSubagentRunId(call.id),\n subagentType,\n description\n }\n}\n\nconst subagentStartedEvent = (input: {\n readonly call: ToolCall\n readonly model: string\n readonly startedAtMs: number\n}) => {\n const metadata = taskCallMetadata(input.call)\n\n return metadata === undefined\n ? undefined\n : SubagentStarted.make({\n parentToolCallId: input.call.id,\n subagentRunId: metadata.subagentRunId,\n subagentType: metadata.subagentType,\n description: metadata.description,\n model: input.model,\n createdAtMs: input.startedAtMs\n })\n}\n\nconst subagentCompletedEvent = (input: {\n readonly call: ToolCall\n readonly result: ToolResult\n readonly model: string\n readonly startedAtMs: number\n readonly endedAtMs: number\n}) => {\n const metadata = taskCallMetadata(input.call)\n\n return metadata === undefined\n ? undefined\n : SubagentCompleted.make({\n parentToolCallId: input.call.id,\n subagentRunId: metadata.subagentRunId,\n subagentType: metadata.subagentType,\n description: metadata.description,\n model: input.model,\n status: input.result.isError === true ? 'error' : 'completed',\n durationMs: Math.max(0, input.endedAtMs - input.startedAtMs),\n summary: contentPreview(input.result.content),\n createdAtMs: input.endedAtMs\n })\n}\n\nconst unsupportedInputError = (message: string) =>\n new LLMError({\n cause: 'validation_error',\n message,\n retryable: false\n })\n\nconst validateContent = (message: AgentMessage, capabilities: AgentModelCapabilities) =>\n Effect.forEach(contentPartsFromMessage(message), part => {\n switch (part._tag) {\n case 'Text':\n return capabilities.input.text\n ? Effect.void\n : Effect.fail(unsupportedInputError('Text input is not supported by this model'))\n case 'Image':\n return capabilities.input.image\n ? Effect.void\n : Effect.fail(unsupportedInputError('Image input is not supported by this model'))\n case 'Document':\n return capabilities.input.document\n ? Effect.void\n : Effect.fail(unsupportedInputError('Document input is not supported by this model'))\n case 'Audio':\n return capabilities.input.audio\n ? Effect.void\n : Effect.fail(unsupportedInputError('Audio input is not supported by this model'))\n }\n })\n\nconst contentPartsFromMessage = (message: AgentMessage) => {\n switch (message._tag) {\n case 'User':\n case 'ToolResult':\n return contentParts(message.content)\n case 'Assistant':\n return message.parts.flatMap(part => (part._tag === 'Text' ? contentParts(part.content) : []))\n }\n}\n\nconst validateCapabilities = (\n config: RunConfig,\n messages: ReadonlyArray<AgentMessage>\n): Effect.Effect<void, LLMError> => {\n const capabilities = config.capabilities\n\n if (capabilities === undefined) {\n return Effect.void\n }\n\n if (!capabilities.tools && config.tools.length > 0) {\n return Effect.fail(unsupportedInputError('Tools are not supported by this model'))\n }\n\n if (!capabilities.reasoning && config.reasoningEffort !== undefined) {\n return Effect.fail(unsupportedInputError('Reasoning effort is not supported by this model'))\n }\n\n return Effect.forEach(messages, message => validateContent(message, capabilities)).pipe(\n Effect.asVoid\n )\n}\n\nconst toLlmEvent = (event: LLMEvent): ReadonlyArray<AgentEvent> => {\n switch (event._tag) {\n case 'TextDelta':\n return [AgentLLMTextDelta.make({ text: event.text })]\n case 'ReasoningDelta':\n return [AgentLLMReasoningDelta.make({ text: event.text })]\n case 'ToolCall':\n return [ToolInputEnd.make({ call: event.call })]\n case 'ToolInputStart':\n return [ToolInputStart.make({ id: event.id, name: event.name })]\n case 'ToolInputDelta':\n return [ToolInputDelta.make({ id: event.id, delta: event.delta })]\n case 'ProviderToolResult':\n return [ProviderToolResult.make({ call: event.call, result: event.result })]\n case 'Usage':\n return [UsageUpdate.make({ usage: event.usage })]\n case 'Done':\n return []\n }\n}\n\nconst isLlmEvent = (event: LLMEvent | AgentEvent | AgentRetry): event is LLMEvent => {\n switch (event._tag) {\n case 'TextDelta':\n case 'ReasoningDelta':\n case 'Done':\n case 'ToolCall':\n case 'ToolInputStart':\n case 'ToolInputDelta':\n case 'ProviderToolResult':\n case 'Usage':\n return true\n default:\n return false\n }\n}\n\ntype TurnStreamInput = {\n readonly config: RunConfig\n readonly contextTransformer: {\n readonly transform: (\n messages: ReadonlyArray<AgentMessage>\n ) => Effect.Effect<ContextTransformResult, AgentLoopError>\n }\n readonly loopConfig: LoopConfigShape\n readonly provider: {\n readonly stream: (request: LLMRequest) => Stream.Stream<LLMEvent, LLMProviderError>\n }\n readonly executor: {\n readonly execute: (call: ToolCall) => Effect.Effect<ToolResult, ToolError>\n }\n readonly currentMessages: ReadonlyArray<AgentMessage>\n readonly createdMessages: Ref.Ref<ReadonlyArray<AgentMessage>>\n readonly usage: Ref.Ref<AgentUsage>\n readonly turn: number\n}\n\nconst retryDelayMs = (baseDelayMs: number, attempt: number) =>\n Math.max(0, Math.floor(baseDelayMs * 2 ** Math.max(0, attempt - 1)))\n\nconst retryReason = (error: LLMError): AgentErrorCode => error.cause\n\nconst retrySleep = (delayMs: number) =>\n delayMs === 0 ? Effect.void : Effect.sleep(`${delayMs} millis`)\n\nconst failAgentLoopError = (\n error: AgentLoopError\n): Stream.Stream<LLMEvent | AgentRetry, AgentLoopError> => Stream.fail(error)\n\nconst sleepStream = (delayMs: number): Stream.Stream<LLMEvent | AgentRetry, AgentLoopError> =>\n Stream.fromEffect(retrySleep(delayMs)).pipe(Stream.flatMap(() => Stream.empty))\n\nconst withProviderRetries = (\n stream: Stream.Stream<LLMEvent, LLMProviderError>,\n loopConfig: TurnStreamInput['loopConfig'],\n makeStream: () => Stream.Stream<LLMEvent, LLMProviderError>,\n attempt: number\n): Stream.Stream<LLMEvent | AgentRetry, AgentLoopError> =>\n Stream.unwrap(\n Ref.make(false).pipe(\n Effect.map(emittedProviderEvent =>\n stream.pipe(\n Stream.tap(() => Ref.set(emittedProviderEvent, true)),\n Stream.catchTags({\n LLMError: error =>\n Stream.unwrap(\n Ref.get(emittedProviderEvent).pipe(\n Effect.map(emitted => {\n if (\n emitted ||\n !error.retryable ||\n error.cause === 'context_overflow' ||\n attempt > loopConfig.maxRetries\n ) {\n return failAgentLoopError(error)\n }\n\n const delayMs = retryDelayMs(loopConfig.retryBaseDelayMs, attempt)\n return Stream.make(\n AgentRetry.make({\n attempt,\n reason: retryReason(error),\n delayMs,\n message: error.message\n })\n ).pipe(\n Stream.concat(sleepStream(delayMs)),\n Stream.concat(\n withProviderRetries(makeStream(), loopConfig, makeStream, attempt + 1)\n )\n )\n })\n )\n ),\n AbortError: failAgentLoopError,\n FauxExhaustedError: failAgentLoopError\n })\n )\n )\n )\n )\n\nconst makeToolExecutionStream = (\n executor: TurnStreamInput['executor'],\n call: ToolCall,\n model: string\n): Stream.Stream<AgentEvent, AgentLoopError> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const startedAtMs = yield* Clock.currentTimeMillis\n const started = subagentStartedEvent({ call, model, startedAtMs })\n const startEvents: ReadonlyArray<AgentEvent> =\n started === undefined\n ? [ToolExecutionStarted.make({ call, createdAtMs: startedAtMs })]\n : [ToolExecutionStarted.make({ call, createdAtMs: startedAtMs }), started]\n\n return Stream.fromIterable(startEvents).pipe(\n Stream.concat(\n Stream.fromEffect(\n executor.execute(call).pipe(\n Effect.flatMap(result =>\n Clock.currentTimeMillis.pipe(\n Effect.map(endedAtMs => {\n const completed = subagentCompletedEvent({\n call,\n result,\n model,\n startedAtMs,\n endedAtMs\n })\n const toolCompleted = ToolExecutionCompleted.make({\n call,\n result,\n createdAtMs: endedAtMs\n })\n\n return completed === undefined ? [toolCompleted] : [toolCompleted, completed]\n })\n )\n )\n )\n ).pipe(\n Stream.flatMap(Stream.fromIterable),\n Stream.catchTag('ToolError', error =>\n Stream.fromEffect(Clock.currentTimeMillis).pipe(\n Stream.flatMap(endedAtMs =>\n Stream.make(\n ToolExecutionError.make({\n call,\n message: error.message,\n code: toolErrorCode(error),\n createdAtMs: endedAtMs\n })\n )\n ),\n Stream.concat(Stream.fail(error))\n )\n )\n )\n )\n )\n })\n )\n\ntype IndexedToolResultMessage = {\n readonly index: number\n readonly message: AgentMessage\n}\n\ntype IndexedToolCall = {\n readonly index: number\n readonly call: ToolCall\n}\n\ntype PreparedToolCall =\n | {\n readonly _tag: 'Execute'\n readonly index: number\n readonly call: ToolCall\n readonly events: ReadonlyArray<AgentEvent>\n }\n | {\n readonly _tag: 'Result'\n readonly index: number\n readonly call: ToolCall\n readonly result: ToolResult\n readonly events: ReadonlyArray<AgentEvent>\n }\n | {\n readonly _tag: 'Pending'\n readonly request: HitlRequest\n readonly events: ReadonlyArray<AgentEvent>\n }\n\ntype PreparedToolBatch = {\n readonly callsToExecute: ReadonlyArray<IndexedToolCall>\n readonly resultMessages: ReadonlyArray<IndexedToolResultMessage>\n readonly resultEvents: ReadonlyArray<AgentEvent>\n readonly events: ReadonlyArray<AgentEvent>\n readonly pendingRequests: ReadonlyArray<HitlRequest>\n readonly pendingEvents: ReadonlyArray<AgentEvent>\n}\n\ntype NonEmptyHitlRequests = readonly [HitlRequest, ...Array<HitlRequest>]\n\nconst boundedToolConcurrency = (loopConfig: LoopConfigShape) =>\n Math.max(1, loopConfig.toolConcurrency)\n\nconst toolResultMessageFromResult = (result: ToolResult) =>\n ToolResultMessage.make({\n toolCallId: result.toolCallId,\n content: result.content,\n isError: result.isError,\n structuredContent: result.structuredContent\n })\n\nconst toolDefFor = (tools: ReadonlyArray<ToolDef>, call: ToolCall) =>\n tools.find(tool => tool.name === call.name)\n\nconst approvalRequired = (tools: ReadonlyArray<ToolDef>, call: ToolCall) =>\n toolDefFor(tools, call)?.approval?.mode === 'manual'\n\nconst approvalRequestId = (call: ToolCall) => `approval:${call.id}`\n\nconst questionRequestId = (call: ToolCall) => `question:${call.id}`\n\nconst matchesApproval = (response: ToolApprovalResponse, call: ToolCall) =>\n response.toolCallId === call.id && response.requestId === approvalRequestId(call)\n\nconst matchesQuestion = (response: QuestionResponse, call: ToolCall) =>\n response.toolCallId === call.id && response.requestId === questionRequestId(call)\n\nconst approvalResponseFor = (responses: ReadonlyArray<HitlResponse>, call: ToolCall) =>\n responses.flatMap(response =>\n response._tag === 'ToolApprovalResponse' && matchesApproval(response, call) ? [response] : []\n )[0]\n\nconst questionResponseFor = (responses: ReadonlyArray<HitlResponse>, call: ToolCall) =>\n responses.flatMap(response =>\n response._tag === 'QuestionResponse' && matchesQuestion(response, call) ? [response] : []\n )[0]\n\nconst toolApprovalRequest = (tools: ReadonlyArray<ToolDef>, call: ToolCall): ToolApprovalRequest =>\n ToolApprovalRequest.make({\n requestId: approvalRequestId(call),\n toolCallId: call.id,\n call,\n policy: toolDefFor(tools, call)?.approval\n })\n\nconst deniedToolResult = (call: ToolCall, response: ToolApprovalResponse) => {\n const reason = response.reason ?? 'Denied by user'\n\n return ToolResult.make({\n toolCallId: call.id,\n content: `Tool call denied: ${reason}`,\n isError: true,\n structuredContent: {\n type: 'tool_approval_denied',\n reason,\n source: response.source\n }\n })\n}\n\nconst questionToolResult = (\n response: QuestionResponse,\n questions: ReadonlyArray<QuestionPrompt>\n) => {\n return ToolResult.make({\n toolCallId: response.toolCallId,\n content: formatQuestionResponseContent(response, questions),\n isError: response.outcome === 'cancelled' ? true : undefined,\n structuredContent: questionResponseStructuredContent(response)\n })\n}\n\nconst invalidQuestionToolResult = (call: ToolCall) =>\n ToolResult.make({\n toolCallId: call.id,\n content: 'Invalid question arguments.',\n isError: true,\n structuredContent: { type: 'question_invalid' }\n })\n\nconst prepareQuestionCall = (\n call: ToolCall,\n index: number,\n responses: ReadonlyArray<HitlResponse>\n): Effect.Effect<PreparedToolCall> =>\n Effect.gen(function* () {\n const decoded = yield* Schema.decodeUnknownEffect(QuestionToolParams)(call.params).pipe(\n Effect.result\n )\n\n if (decoded._tag === 'Failure') {\n return {\n _tag: 'Result',\n index,\n call,\n result: invalidQuestionToolResult(call),\n events: []\n }\n }\n\n const response = questionResponseFor(responses, call)\n\n if (response !== undefined) {\n return {\n _tag: 'Result',\n index,\n call,\n result: questionToolResult(response, decoded.success.questions),\n events: [hitlResponseEvent(response)]\n }\n }\n\n const request = QuestionRequest.make({\n requestId: questionRequestId(call),\n toolCallId: call.id,\n call,\n questions: decoded.success.questions\n })\n\n return {\n _tag: 'Pending',\n request,\n events: [QuestionRequested.make({ request })]\n }\n })\n\nconst prepareApprovalCall = (\n tools: ReadonlyArray<ToolDef>,\n call: ToolCall,\n index: number,\n responses: ReadonlyArray<HitlResponse>\n): PreparedToolCall => {\n if (!approvalRequired(tools, call)) {\n return { _tag: 'Execute', index, call, events: [] }\n }\n\n const request = toolApprovalRequest(tools, call)\n const response = approvalResponseFor(responses, call)\n\n if (response === undefined) {\n return {\n _tag: 'Pending',\n request,\n events: [ToolApprovalRequested.make({ call, request })]\n }\n }\n\n if (response.decision === 'denied') {\n return {\n _tag: 'Result',\n index,\n call,\n result: deniedToolResult(call, response),\n events: [hitlResponseEvent(response)]\n }\n }\n\n return {\n _tag: 'Execute',\n index,\n call,\n events: [hitlResponseEvent(response)]\n }\n}\n\nconst prepareToolCall = (input: {\n readonly tools: ReadonlyArray<ToolDef>\n readonly responses: ReadonlyArray<HitlResponse>\n readonly call: ToolCall\n readonly index: number\n}): Effect.Effect<PreparedToolCall> =>\n input.call.name === questionToolName\n ? prepareQuestionCall(input.call, input.index, input.responses)\n : Effect.succeed(prepareApprovalCall(input.tools, input.call, input.index, input.responses))\n\nconst prepareToolBatch = (input: {\n readonly tools: ReadonlyArray<ToolDef>\n readonly responses: ReadonlyArray<HitlResponse>\n readonly calls: ReadonlyArray<ToolCall>\n}): Effect.Effect<PreparedToolBatch> =>\n Effect.gen(function* () {\n const prepared = yield* Effect.forEach(input.calls, (call, index) =>\n prepareToolCall({ tools: input.tools, responses: input.responses, call, index })\n )\n\n return {\n callsToExecute: prepared.flatMap(item =>\n item._tag === 'Execute' ? [{ index: item.index, call: item.call }] : []\n ),\n resultMessages: prepared.flatMap(item =>\n item._tag === 'Result'\n ? [{ index: item.index, message: toolResultMessageFromResult(item.result) }]\n : []\n ),\n resultEvents: syntheticToolCompletionEvents(prepared),\n events: prepared.flatMap(item => (item._tag === 'Pending' ? [] : item.events)),\n pendingRequests: prepared.flatMap(item => (item._tag === 'Pending' ? [item.request] : [])),\n pendingEvents: prepared.flatMap(item => (item._tag === 'Pending' ? item.events : []))\n }\n })\n\nconst orderedToolResultMessages = (results: ReadonlyArray<IndexedToolResultMessage>) =>\n [...results].sort((left, right) => left.index - right.index).map(result => result.message)\n\nconst syntheticToolCompletionEvents = (\n prepared: ReadonlyArray<PreparedToolCall>\n): ReadonlyArray<AgentEvent> =>\n prepared.flatMap(item =>\n item._tag === 'Result'\n ? [ToolExecutionCompleted.make({ call: item.call, result: item.result })]\n : []\n )\n\nconst toolResultIds = (messages: ReadonlyArray<AgentMessage>): ReadonlySet<string> =>\n new Set(messages.flatMap(message => (message._tag === 'ToolResult' ? [message.toolCallId] : [])))\n\nconst pendingHostToolCalls = (messages: ReadonlyArray<AgentMessage>) => {\n const completed = toolResultIds(messages)\n\n return messages.flatMap(message =>\n message._tag === 'Assistant'\n ? assistantHostToolCalls(message).filter(call => !completed.has(call.id))\n : []\n )\n}\n\nconst nonEmptyHitlRequests = (\n requests: ReadonlyArray<HitlRequest>\n): NonEmptyHitlRequests | undefined => {\n const first = requests[0]\n\n return first === undefined ? undefined : [first, ...requests.slice(1)]\n}\n\nconst parallelToolExecutionStream = (input: {\n readonly calls: ReadonlyArray<IndexedToolCall>\n readonly executor: TurnStreamInput['executor']\n readonly loopConfig: LoopConfigShape\n readonly model: string\n readonly results: Ref.Ref<ReadonlyArray<IndexedToolResultMessage>>\n}) =>\n Stream.mergeAll(\n input.calls.map(({ call, index }) =>\n makeToolExecutionStream(input.executor, call, input.model).pipe(\n Stream.tap(event => {\n if (event._tag !== 'ToolExecutionCompleted') {\n return Effect.void\n }\n\n return Ref.update(input.results, results => [\n ...results,\n { index, message: toolResultMessageFromResult(event.result) }\n ])\n })\n )\n ),\n { concurrency: boundedToolConcurrency(input.loopConfig) }\n )\n\nconst toolErrorCode = (error: ToolError): AgentErrorCode => {\n switch (error.cause) {\n case 'validation':\n case 'invalid_input':\n return 'validation_error'\n case 'timeout':\n return 'tool_timeout'\n case 'permission':\n case 'denied':\n return 'tool_denied'\n case 'execution':\n case 'not_found':\n case 'unavailable':\n return 'tool_error'\n }\n}\n\ntype TurnCompletion = {\n readonly toolCalls: ReadonlyArray<ToolCall>\n readonly stopReason: 'stop' | 'tool_use'\n}\n\nconst validateTurnCompletion = (\n events: ReadonlyArray<LLMEvent>\n): Effect.Effect<TurnCompletion, LLMError> => {\n const doneEvents = events.filter(event => event._tag === 'Done')\n const toolCalls = collectToolCalls(events)\n const stopReason: TurnCompletion['stopReason'] = toolCalls.length === 0 ? 'stop' : 'tool_use'\n\n if (doneEvents.length !== 1) {\n return Effect.fail(\n new LLMError({\n cause: 'invalid_response',\n message: `Expected exactly one LLM done event, received ${doneEvents.length}`,\n retryable: false\n })\n )\n }\n\n const doneEvent = doneEvents[0]\n\n if (doneEvent === undefined || doneEvent.stopReason !== stopReason) {\n return Effect.fail(\n new LLMError({\n cause: 'invalid_response',\n message: `LLM done reason must be ${stopReason}`,\n retryable: false\n })\n )\n }\n\n return Effect.succeed({ toolCalls, stopReason })\n}\n\nconst makeAfterLlmStream = (\n input: TurnStreamInput,\n llmEventsRef: Ref.Ref<ReadonlyArray<LLMEvent>>\n): Stream.Stream<AgentEvent, AgentLoopError> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const llmEvents = yield* Ref.get(llmEventsRef)\n const completion = yield* validateTurnCompletion(llmEvents)\n const assistantMessage = accumulateAssistantMessage(llmEvents)\n const turnEndEvents: ReadonlyArray<AgentEvent> = [\n LLMStreamEnd.make({ turn: input.turn }),\n AssistantMessageEvent.make({ message: assistantMessage })\n ]\n\n yield* Ref.update(input.createdMessages, messages => [...messages, assistantMessage])\n\n if (completion.toolCalls.length === 0) {\n const messages = yield* Ref.get(input.createdMessages)\n const usage = yield* Ref.get(input.usage)\n\n return Stream.fromIterable([\n ...turnEndEvents,\n TurnEnd.make({ turn: input.turn, reason: completion.stopReason }),\n AgentEnd.make({\n messages,\n turns: input.turn,\n usage\n })\n ])\n }\n\n const toolResultMessages = yield* Ref.make<ReadonlyArray<IndexedToolResultMessage>>([])\n const prepared = yield* prepareToolBatch({\n tools: input.config.tools,\n responses: input.config.hitlResponses ?? [],\n calls: completion.toolCalls\n })\n\n if (prepared.resultMessages.length > 0) {\n yield* Ref.update(toolResultMessages, results => [...results, ...prepared.resultMessages])\n }\n\n if (prepared.pendingRequests.length > 0) {\n const pendingRequests = nonEmptyHitlRequests(prepared.pendingRequests)\n\n if (pendingRequests === undefined) {\n return Stream.empty\n }\n\n const readyResults = orderedToolResultMessages(yield* Ref.get(toolResultMessages))\n if (readyResults.length > 0) {\n yield* Ref.update(input.createdMessages, messages => [...messages, ...readyResults])\n }\n\n const messages = yield* Ref.get(input.createdMessages)\n const usage = yield* Ref.get(input.usage)\n\n return Stream.fromIterable([\n ...turnEndEvents,\n ...prepared.events,\n ...prepared.pendingEvents,\n TurnEnd.make({ turn: input.turn, reason: completion.stopReason }),\n AgentAwaitingInput.make({\n requests: pendingRequests,\n messages,\n turns: input.turn,\n usage\n })\n ])\n }\n\n const toolExecutionStream = parallelToolExecutionStream({\n calls: prepared.callsToExecute,\n executor: input.executor,\n loopConfig: input.loopConfig,\n model: input.config.model,\n results: toolResultMessages\n })\n const nextTurnStream = Stream.unwrap(\n Ref.get(toolResultMessages).pipe(\n Effect.flatMap(results => {\n const orderedResults = orderedToolResultMessages(results)\n\n return Ref.update(input.createdMessages, messages => [\n ...messages,\n ...orderedResults\n ]).pipe(\n Effect.as(\n Stream.make(TurnEnd.make({ turn: input.turn, reason: completion.stopReason })).pipe(\n Stream.concat(\n makeTurnStream({\n ...input,\n currentMessages: [\n ...input.currentMessages,\n assistantMessage,\n ...orderedResults\n ],\n turn: input.turn + 1\n })\n )\n )\n )\n )\n })\n )\n )\n\n return Stream.fromIterable(turnEndEvents).pipe(\n Stream.concat(Stream.fromIterable(prepared.events)),\n Stream.concat(toolExecutionStream),\n Stream.concat(nextTurnStream)\n )\n })\n )\n\nconst makeModelOnlyAfterLlmStream = (\n input: TurnStreamInput,\n llmEventsRef: Ref.Ref<ReadonlyArray<LLMEvent>>\n): Stream.Stream<AgentEvent, AgentLoopError> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const llmEvents = yield* Ref.get(llmEventsRef)\n const completion = yield* validateTurnCompletion(llmEvents)\n const assistantMessage = accumulateAssistantMessage(llmEvents)\n\n yield* Ref.update(input.createdMessages, messages => [...messages, assistantMessage])\n\n return Stream.fromIterable([\n LLMStreamEnd.make({ turn: input.turn }),\n AssistantMessageEvent.make({ message: assistantMessage }),\n TurnEnd.make({ turn: input.turn, reason: completion.stopReason })\n ])\n })\n )\n\nconst makeLlmStream = (\n input: TurnStreamInput,\n llmEvents: Ref.Ref<ReadonlyArray<LLMEvent>>,\n result: ContextTransformResult\n): Stream.Stream<AgentEvent, AgentLoopError> => {\n const makeStream = () =>\n input.provider.stream({\n messages: result.messages,\n tools: input.config.tools,\n model: input.config.model,\n reasoningEffort: input.config.reasoningEffort,\n systemPrompt: input.config.systemPrompt\n })\n\n return Stream.fromIterable(result.events)\n .pipe(Stream.concat(withProviderRetries(makeStream(), input.loopConfig, makeStream, 1)))\n .pipe(\n Stream.tap(event => {\n if (!isLlmEvent(event)) {\n return Effect.void\n }\n\n const appendEvent = Ref.update(llmEvents, events => [...events, event])\n\n if (event._tag !== 'Usage') {\n return appendEvent\n }\n\n return Ref.update(input.usage, usage => addAgentUsage(usage, event.usage)).pipe(\n Effect.flatMap(() => appendEvent)\n )\n }),\n Stream.flatMap(event =>\n event._tag === 'AgentRetry'\n ? Stream.make(event)\n : isLlmEvent(event)\n ? Stream.fromIterable(toLlmEvent(event))\n : Stream.make(event)\n ),\n Stream.concat(makeAfterLlmStream(input, llmEvents))\n )\n}\n\nconst makeModelOnlyLlmStream = (\n input: TurnStreamInput,\n llmEvents: Ref.Ref<ReadonlyArray<LLMEvent>>,\n result: ContextTransformResult\n): Stream.Stream<AgentEvent, AgentLoopError> => {\n const makeStream = () =>\n input.provider.stream({\n messages: result.messages,\n tools: input.config.tools,\n model: input.config.model,\n reasoningEffort: input.config.reasoningEffort,\n systemPrompt: input.config.systemPrompt\n })\n\n return Stream.fromIterable(result.events)\n .pipe(Stream.concat(withProviderRetries(makeStream(), input.loopConfig, makeStream, 1)))\n .pipe(\n Stream.tap(event => {\n if (!isLlmEvent(event)) {\n return Effect.void\n }\n\n const appendEvent = Ref.update(llmEvents, events => [...events, event])\n\n if (event._tag !== 'Usage') {\n return appendEvent\n }\n\n return Ref.update(input.usage, usage => addAgentUsage(usage, event.usage)).pipe(\n Effect.flatMap(() => appendEvent)\n )\n }),\n Stream.flatMap(event =>\n event._tag === 'AgentRetry'\n ? Stream.make(event)\n : isLlmEvent(event)\n ? Stream.fromIterable(toLlmEvent(event))\n : Stream.make(event)\n ),\n Stream.concat(makeModelOnlyAfterLlmStream(input, llmEvents))\n )\n}\n\nconst makeTurnStream = (input: TurnStreamInput): Stream.Stream<AgentEvent, AgentLoopError> =>\n Stream.suspend(() => {\n if (input.turn > input.loopConfig.maxTurns) {\n return Stream.fail(new AbortError({ reason: 'max_turns' }))\n }\n\n const llmStream = Stream.unwrap(\n Effect.gen(function* () {\n const llmEvents = yield* Ref.make<ReadonlyArray<LLMEvent>>([])\n const result = yield* input.contextTransformer.transform(input.currentMessages)\n yield* validateCapabilities(input.config, result.messages)\n\n return makeLlmStream(input, llmEvents, result)\n })\n )\n\n return Stream.fromIterable([\n TurnStart.make({ turn: input.turn }),\n LLMStreamStart.make({ turn: input.turn })\n ]).pipe(Stream.concat(llmStream))\n })\n\nconst makePendingToolResumeStream = (\n input: TurnStreamInput\n): Stream.Stream<AgentEvent, AgentLoopError> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const pendingCalls = pendingHostToolCalls(input.currentMessages)\n\n if (pendingCalls.length === 0 || (input.config.hitlResponses ?? []).length === 0) {\n return makeTurnStream(input)\n }\n\n const toolResultMessages = yield* Ref.make<ReadonlyArray<IndexedToolResultMessage>>([])\n const prepared = yield* prepareToolBatch({\n tools: input.config.tools,\n responses: input.config.hitlResponses ?? [],\n calls: pendingCalls\n })\n\n if (prepared.resultMessages.length > 0) {\n yield* Ref.update(toolResultMessages, results => [...results, ...prepared.resultMessages])\n }\n\n if (prepared.pendingRequests.length > 0) {\n const pendingRequests = nonEmptyHitlRequests(prepared.pendingRequests)\n\n if (pendingRequests === undefined) {\n return Stream.empty\n }\n\n const readyResults = orderedToolResultMessages(yield* Ref.get(toolResultMessages))\n if (readyResults.length > 0) {\n yield* Ref.update(input.createdMessages, messages => [...messages, ...readyResults])\n }\n\n const messages = yield* Ref.get(input.createdMessages)\n const usage = yield* Ref.get(input.usage)\n\n return Stream.fromIterable([\n ...prepared.events,\n ...prepared.pendingEvents,\n AgentAwaitingInput.make({\n requests: pendingRequests,\n messages,\n turns: Math.max(0, input.turn - 1),\n usage\n })\n ])\n }\n\n const toolExecutionStream = parallelToolExecutionStream({\n calls: prepared.callsToExecute,\n executor: input.executor,\n loopConfig: input.loopConfig,\n model: input.config.model,\n results: toolResultMessages\n })\n const nextTurnStream = Stream.unwrap(\n Ref.get(toolResultMessages).pipe(\n Effect.flatMap(results => {\n const orderedResults = orderedToolResultMessages(results)\n\n return Ref.update(input.createdMessages, messages => [\n ...messages,\n ...orderedResults\n ]).pipe(\n Effect.as(\n makeTurnStream({\n ...input,\n currentMessages: [...input.currentMessages, ...orderedResults]\n })\n )\n )\n })\n )\n )\n\n return Stream.fromIterable(prepared.events).pipe(\n Stream.concat(toolExecutionStream),\n Stream.concat(nextTurnStream)\n )\n })\n )\n\nconst unavailableToolExecutor: TurnStreamInput['executor'] = {\n execute: call =>\n Effect.fail(\n new ToolError({\n tool: call.name,\n message: 'Tool execution is not available in model turn step',\n cause: 'execution'\n })\n )\n}\n\nconst makeModelOnlyTurnStream = (\n input: TurnStreamInput\n): Stream.Stream<AgentEvent, AgentLoopError> =>\n Stream.suspend(() => {\n if (input.turn > input.loopConfig.maxTurns) {\n return Stream.fail(new AbortError({ reason: 'max_turns' }))\n }\n\n const llmStream = Stream.unwrap(\n Effect.gen(function* () {\n const llmEvents = yield* Ref.make<ReadonlyArray<LLMEvent>>([])\n const result = yield* input.contextTransformer.transform(input.currentMessages)\n yield* validateCapabilities(input.config, result.messages)\n\n return makeModelOnlyLlmStream(input, llmEvents, result)\n })\n )\n\n return Stream.fromIterable([\n TurnStart.make({ turn: input.turn }),\n LLMStreamStart.make({ turn: input.turn })\n ]).pipe(Stream.concat(llmStream))\n })\n\nexport const runModelTurn = (\n config: ModelTurnConfig\n): Stream.Stream<AgentEvent, AgentLoopError, ContextTransformer | LLMProvider | LoopConfig> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const contextTransformer = yield* ContextTransformer\n const loopConfig = yield* LoopConfig\n const provider = yield* LLMProvider\n const createdMessages = yield* Ref.make<ReadonlyArray<AgentMessage>>([])\n const usage = yield* Ref.make(zeroAgentUsage)\n\n return makeModelOnlyTurnStream({\n config,\n contextTransformer,\n loopConfig,\n provider,\n executor: unavailableToolExecutor,\n currentMessages: config.messages,\n createdMessages,\n usage,\n turn: config.turn\n })\n })\n )\n\nexport const runToolBatch = (\n config: ToolBatchConfig\n): Stream.Stream<AgentEvent, AgentLoopError, LoopConfig | ToolExecutor> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const executor = yield* ToolExecutor\n const loopConfig = yield* LoopConfig\n const toolResultMessages = yield* Ref.make<ReadonlyArray<IndexedToolResultMessage>>([])\n const prepared = yield* prepareToolBatch({\n tools: config.tools ?? [],\n responses: config.hitlResponses ?? [],\n calls: config.calls\n })\n const hasPendingRequests = prepared.pendingRequests.length > 0\n const resultEvents = hasPendingRequests ? [] : prepared.resultEvents\n const pendingRequests = nonEmptyHitlRequests(prepared.pendingRequests)\n const awaitingEvents: ReadonlyArray<AgentEvent> =\n pendingRequests === undefined\n ? []\n : [\n AgentAwaitingInput.make({\n requests: pendingRequests,\n messages: config.createdMessages ?? [],\n turns: config.turn ?? 0,\n usage: config.usage ?? zeroAgentUsage\n })\n ]\n\n return Stream.fromIterable([\n ...prepared.events,\n ...resultEvents,\n ...prepared.pendingEvents,\n ...awaitingEvents\n ]).pipe(\n Stream.concat(\n parallelToolExecutionStream({\n calls: hasPendingRequests ? [] : prepared.callsToExecute,\n executor,\n loopConfig,\n model: config.model ?? '',\n results: toolResultMessages\n })\n )\n )\n })\n )\n\nexport const run = (\n config: RunConfig\n): Stream.Stream<\n AgentEvent,\n AgentLoopError,\n ContextTransformer | LLMProvider | LoopConfig | ToolExecutor\n> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const contextTransformer = yield* ContextTransformer\n const loopConfig = yield* LoopConfig\n const provider = yield* LLMProvider\n const executor = yield* ToolExecutor\n const createdMessages = yield* Ref.make<ReadonlyArray<AgentMessage>>([])\n const usage = yield* Ref.make(zeroAgentUsage)\n\n return Stream.make(AgentStart.make({})).pipe(\n Stream.concat(\n makePendingToolResumeStream({\n config,\n contextTransformer,\n loopConfig,\n provider,\n executor,\n currentMessages: config.messages,\n createdMessages,\n usage,\n turn: 1\n })\n )\n )\n })\n )\n"],"mappings":"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"}
1
+ {"version":3,"file":"run.mjs","names":["AgentLLMTextDelta","AgentLLMReasoningDelta"],"sources":["../../src/loop/run.ts"],"sourcesContent":["import { Clock, Effect, Ref, Stream } from 'effect'\nimport * as Schema from 'effect/Schema'\nimport {\n AgentAwaitingInput,\n AgentEnd,\n AgentRetry,\n AgentStart,\n AssistantMessageEvent,\n UsageUpdate,\n addAgentUsage,\n contentParts,\n contentPreview,\n LLMReasoningDelta as AgentLLMReasoningDelta,\n LLMStreamEnd,\n LLMStreamStart,\n LLMTextDelta as AgentLLMTextDelta,\n ToolExecutionCompleted,\n ToolExecutionError,\n ToolExecutionStarted,\n ToolApprovalRequested,\n ToolInputEnd,\n ToolInputDelta,\n ToolInputStart,\n QuestionRequested,\n ProviderToolResult,\n QuestionRequest,\n QuestionToolParams,\n formatQuestionResponseContent,\n hitlResponseEvent,\n questionResponseStructuredContent,\n makeSubagentRunId,\n ToolApprovalRequest,\n ToolResultMessage,\n SubagentCompleted,\n SubagentStarted,\n assistantHostToolCalls,\n type ToolCall,\n type AgentReasoningEffort,\n type HitlRequest,\n type HitlResponse,\n type QuestionPrompt,\n type QuestionResponse,\n type ToolApprovalResponse,\n ToolResult,\n TurnEnd,\n TurnStart,\n zeroAgentUsage,\n type AgentEvent,\n type AgentErrorCode,\n type AgentMessage,\n type AgentUsage,\n type AgentModelCapabilities,\n type ToolDef\n} from '@yolk-sdk/agent/protocol'\nimport { accumulateAssistantMessage, collectToolCalls } from './accumulator.ts'\nimport {\n AbortError,\n LLMError,\n ToolError,\n type AgentLoopError,\n type LLMProviderError\n} from './error.ts'\nimport type { LLMEvent } from './llm-event.ts'\nimport { ContextTransformer, type ContextTransformResult } from './services/context-transformer.ts'\nimport { LLMProvider, type LLMRequest } from './services/llm-provider.ts'\nimport { LoopConfig, type LoopConfigShape } from './services/loop-config.ts'\nimport { ToolExecutor } from './services/tool-executor.ts'\n\nexport type AgentLoopRunId = string\n\nexport type RunConfig = {\n readonly messages: ReadonlyArray<AgentMessage>\n readonly systemPrompt: string\n readonly tools: ReadonlyArray<ToolDef>\n readonly hitlResponses?: ReadonlyArray<HitlResponse>\n readonly model: string\n readonly reasoningEffort?: AgentReasoningEffort\n readonly capabilities?: AgentModelCapabilities\n}\n\nexport type ModelTurnConfig = RunConfig & {\n readonly turn: number\n}\n\nexport type ToolBatchConfig = {\n readonly calls: ReadonlyArray<ToolCall>\n readonly tools?: ReadonlyArray<ToolDef>\n readonly hitlResponses?: ReadonlyArray<HitlResponse>\n readonly model?: string\n readonly createdMessages?: ReadonlyArray<AgentMessage>\n readonly turn?: number\n readonly usage?: AgentUsage\n}\n\nconst questionToolName = 'question'\n\ntype TaskCallMetadata = {\n readonly subagentRunId: string\n readonly subagentType: string\n readonly description: string\n}\n\nconst objectField = (input: unknown, key: string) =>\n input !== null && typeof input === 'object'\n ? Object.getOwnPropertyDescriptor(input, key)?.value\n : undefined\n\nconst nonEmptyStringField = (input: unknown, key: string) => {\n const value = objectField(input, key)\n\n return typeof value === 'string' && value.trim().length > 0 ? value : undefined\n}\n\nconst taskCallMetadata = (call: ToolCall): TaskCallMetadata | undefined => {\n if (call.name !== 'task') {\n return undefined\n }\n\n const subagentType = nonEmptyStringField(call.params, 'subagent_type')\n const description = nonEmptyStringField(call.params, 'description')\n\n if (subagentType === undefined || description === undefined) {\n return undefined\n }\n\n return {\n subagentRunId: makeSubagentRunId(call.id),\n subagentType,\n description\n }\n}\n\nconst subagentStartedEvent = (input: {\n readonly call: ToolCall\n readonly model: string\n readonly startedAtMs: number\n}) => {\n const metadata = taskCallMetadata(input.call)\n\n return metadata === undefined\n ? undefined\n : SubagentStarted.make({\n parentToolCallId: input.call.id,\n subagentRunId: metadata.subagentRunId,\n subagentType: metadata.subagentType,\n description: metadata.description,\n model: input.model,\n createdAtMs: input.startedAtMs\n })\n}\n\nconst subagentCompletedEvent = (input: {\n readonly call: ToolCall\n readonly result: ToolResult\n readonly model: string\n readonly startedAtMs: number\n readonly endedAtMs: number\n}) => {\n const metadata = taskCallMetadata(input.call)\n\n return metadata === undefined\n ? undefined\n : SubagentCompleted.make({\n parentToolCallId: input.call.id,\n subagentRunId: metadata.subagentRunId,\n subagentType: metadata.subagentType,\n description: metadata.description,\n model: input.model,\n status: input.result.isError === true ? 'error' : 'completed',\n durationMs: Math.max(0, input.endedAtMs - input.startedAtMs),\n summary: contentPreview(input.result.content),\n createdAtMs: input.endedAtMs\n })\n}\n\nconst unsupportedInputError = (message: string) =>\n new LLMError({\n cause: 'validation_error',\n message,\n retryable: false\n })\n\nconst validateContent = (message: AgentMessage, capabilities: AgentModelCapabilities) =>\n Effect.forEach(contentPartsFromMessage(message), part => {\n switch (part._tag) {\n case 'Text':\n return capabilities.input.text\n ? Effect.void\n : Effect.fail(unsupportedInputError('Text input is not supported by this model'))\n case 'Image':\n return capabilities.input.image\n ? Effect.void\n : Effect.fail(unsupportedInputError('Image input is not supported by this model'))\n case 'Document':\n return capabilities.input.document\n ? Effect.void\n : Effect.fail(unsupportedInputError('Document input is not supported by this model'))\n case 'Audio':\n return capabilities.input.audio\n ? Effect.void\n : Effect.fail(unsupportedInputError('Audio input is not supported by this model'))\n }\n })\n\nconst contentPartsFromMessage = (message: AgentMessage) => {\n switch (message._tag) {\n case 'User':\n case 'ToolResult':\n return contentParts(message.content)\n case 'Assistant':\n return message.parts.flatMap(part => (part._tag === 'Text' ? contentParts(part.content) : []))\n }\n}\n\nconst validateCapabilities = (\n config: RunConfig,\n messages: ReadonlyArray<AgentMessage>\n): Effect.Effect<void, LLMError> => {\n const capabilities = config.capabilities\n\n if (capabilities === undefined) {\n return Effect.void\n }\n\n if (!capabilities.tools && config.tools.length > 0) {\n return Effect.fail(unsupportedInputError('Tools are not supported by this model'))\n }\n\n if (!capabilities.reasoning && config.reasoningEffort !== undefined) {\n return Effect.fail(unsupportedInputError('Reasoning effort is not supported by this model'))\n }\n\n return Effect.forEach(messages, message => validateContent(message, capabilities)).pipe(\n Effect.asVoid\n )\n}\n\nconst toLlmEvent = (event: LLMEvent): ReadonlyArray<AgentEvent> => {\n switch (event._tag) {\n case 'TextDelta':\n return [AgentLLMTextDelta.make({ text: event.text })]\n case 'ReasoningDelta':\n return [AgentLLMReasoningDelta.make({ text: event.text })]\n case 'ToolCall':\n return [ToolInputEnd.make({ call: event.call })]\n case 'ToolInputStart':\n return [ToolInputStart.make({ id: event.id, name: event.name })]\n case 'ToolInputDelta':\n return [ToolInputDelta.make({ id: event.id, delta: event.delta })]\n case 'ProviderToolResult':\n return [ProviderToolResult.make({ call: event.call, result: event.result })]\n case 'Usage':\n return [UsageUpdate.make({ usage: event.usage })]\n case 'Done':\n return []\n }\n}\n\nconst isLlmEvent = (event: LLMEvent | AgentEvent | AgentRetry): event is LLMEvent => {\n switch (event._tag) {\n case 'TextDelta':\n case 'ReasoningDelta':\n case 'Done':\n case 'ToolCall':\n case 'ToolInputStart':\n case 'ToolInputDelta':\n case 'ProviderToolResult':\n case 'Usage':\n return true\n default:\n return false\n }\n}\n\ntype TurnStreamInput = {\n readonly config: RunConfig\n readonly contextTransformer: {\n readonly transform: (\n messages: ReadonlyArray<AgentMessage>\n ) => Effect.Effect<ContextTransformResult, AgentLoopError>\n }\n readonly loopConfig: LoopConfigShape\n readonly provider: {\n readonly stream: (request: LLMRequest) => Stream.Stream<LLMEvent, LLMProviderError>\n }\n readonly executor: {\n readonly execute: (call: ToolCall) => Effect.Effect<ToolResult, ToolError>\n }\n readonly currentMessages: ReadonlyArray<AgentMessage>\n readonly createdMessages: Ref.Ref<ReadonlyArray<AgentMessage>>\n readonly usage: Ref.Ref<AgentUsage>\n readonly turn: number\n}\n\nconst maxUnhintedRetryDelayMs = 30_000\nconst maxHintedRetryDelayMs = 2_147_483_647\n\nconst validDelayMs = (delayMs: number) =>\n Number.isFinite(delayMs) && delayMs >= 0 ? Math.floor(delayMs) : undefined\n\nconst hintedRetryDelayMs = (error: LLMError) => {\n const delayMs = error.provider?.retryAfterMs\n const validDelay = delayMs === undefined ? undefined : validDelayMs(delayMs)\n\n return validDelay === undefined ? undefined : Math.min(validDelay, maxHintedRetryDelayMs)\n}\n\nconst retryDelayMs = (baseDelayMs: number, attempt: number, error: LLMError) => {\n const hintedDelay = hintedRetryDelayMs(error)\n\n if (hintedDelay !== undefined) {\n return hintedDelay\n }\n\n const delayMs = validDelayMs(baseDelayMs * 2 ** Math.max(0, attempt - 1)) ?? 0\n\n return Math.min(delayMs, maxUnhintedRetryDelayMs)\n}\n\nconst retryReason = (error: LLMError): AgentErrorCode => error.cause\n\nconst retrySleep = (delayMs: number) =>\n delayMs === 0 ? Effect.void : Effect.sleep(`${delayMs} millis`)\n\nconst failAgentLoopError = (\n error: AgentLoopError\n): Stream.Stream<LLMEvent | AgentRetry, AgentLoopError> => Stream.fail(error)\n\nconst sleepStream = (delayMs: number): Stream.Stream<LLMEvent | AgentRetry, AgentLoopError> =>\n Stream.fromEffect(retrySleep(delayMs)).pipe(Stream.flatMap(() => Stream.empty))\n\nconst withProviderRetries = (\n stream: Stream.Stream<LLMEvent, LLMProviderError>,\n loopConfig: TurnStreamInput['loopConfig'],\n makeStream: () => Stream.Stream<LLMEvent, LLMProviderError>,\n attempt: number\n): Stream.Stream<LLMEvent | AgentRetry, AgentLoopError> =>\n Stream.unwrap(\n Ref.make(false).pipe(\n Effect.map(emittedProviderEvent =>\n stream.pipe(\n Stream.tap(() => Ref.set(emittedProviderEvent, true)),\n Stream.catchTags({\n LLMError: error =>\n Stream.unwrap(\n Ref.get(emittedProviderEvent).pipe(\n Effect.map(emitted => {\n if (\n emitted ||\n !error.retryable ||\n error.cause === 'context_overflow' ||\n attempt > loopConfig.maxRetries\n ) {\n return failAgentLoopError(error)\n }\n\n const delayMs = retryDelayMs(loopConfig.retryBaseDelayMs, attempt, error)\n return Stream.make(\n AgentRetry.make({\n attempt,\n reason: retryReason(error),\n delayMs,\n message: error.message,\n ...(error.provider === undefined ? {} : { provider: error.provider })\n })\n ).pipe(\n Stream.concat(sleepStream(delayMs)),\n Stream.concat(\n withProviderRetries(makeStream(), loopConfig, makeStream, attempt + 1)\n )\n )\n })\n )\n ),\n AbortError: failAgentLoopError,\n FauxExhaustedError: failAgentLoopError\n })\n )\n )\n )\n )\n\nconst makeToolExecutionStream = (\n executor: TurnStreamInput['executor'],\n call: ToolCall,\n model: string\n): Stream.Stream<AgentEvent, AgentLoopError> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const startedAtMs = yield* Clock.currentTimeMillis\n const started = subagentStartedEvent({ call, model, startedAtMs })\n const startEvents: ReadonlyArray<AgentEvent> =\n started === undefined\n ? [ToolExecutionStarted.make({ call, createdAtMs: startedAtMs })]\n : [ToolExecutionStarted.make({ call, createdAtMs: startedAtMs }), started]\n\n return Stream.fromIterable(startEvents).pipe(\n Stream.concat(\n Stream.fromEffect(\n executor.execute(call).pipe(\n Effect.flatMap(result =>\n Clock.currentTimeMillis.pipe(\n Effect.map(endedAtMs => {\n const completed = subagentCompletedEvent({\n call,\n result,\n model,\n startedAtMs,\n endedAtMs\n })\n const toolCompleted = ToolExecutionCompleted.make({\n call,\n result,\n createdAtMs: endedAtMs\n })\n\n return completed === undefined ? [toolCompleted] : [toolCompleted, completed]\n })\n )\n )\n )\n ).pipe(\n Stream.flatMap(Stream.fromIterable),\n Stream.catchTag('ToolError', error =>\n Stream.fromEffect(Clock.currentTimeMillis).pipe(\n Stream.flatMap(endedAtMs =>\n Stream.make(\n ToolExecutionError.make({\n call,\n message: error.message,\n code: toolErrorCode(error),\n createdAtMs: endedAtMs\n })\n )\n ),\n Stream.concat(Stream.fail(error))\n )\n )\n )\n )\n )\n })\n )\n\ntype IndexedToolResultMessage = {\n readonly index: number\n readonly message: AgentMessage\n}\n\ntype IndexedToolCall = {\n readonly index: number\n readonly call: ToolCall\n}\n\ntype PreparedToolCall =\n | {\n readonly _tag: 'Execute'\n readonly index: number\n readonly call: ToolCall\n readonly events: ReadonlyArray<AgentEvent>\n }\n | {\n readonly _tag: 'Result'\n readonly index: number\n readonly call: ToolCall\n readonly result: ToolResult\n readonly events: ReadonlyArray<AgentEvent>\n }\n | {\n readonly _tag: 'Pending'\n readonly request: HitlRequest\n readonly events: ReadonlyArray<AgentEvent>\n }\n\ntype PreparedToolBatch = {\n readonly callsToExecute: ReadonlyArray<IndexedToolCall>\n readonly resultMessages: ReadonlyArray<IndexedToolResultMessage>\n readonly resultEvents: ReadonlyArray<AgentEvent>\n readonly events: ReadonlyArray<AgentEvent>\n readonly pendingRequests: ReadonlyArray<HitlRequest>\n readonly pendingEvents: ReadonlyArray<AgentEvent>\n}\n\ntype NonEmptyHitlRequests = readonly [HitlRequest, ...Array<HitlRequest>]\n\nconst boundedToolConcurrency = (loopConfig: LoopConfigShape) =>\n Math.max(1, loopConfig.toolConcurrency)\n\nconst toolResultMessageFromResult = (result: ToolResult) =>\n ToolResultMessage.make({\n toolCallId: result.toolCallId,\n content: result.content,\n isError: result.isError,\n structuredContent: result.structuredContent\n })\n\nconst toolDefFor = (tools: ReadonlyArray<ToolDef>, call: ToolCall) =>\n tools.find(tool => tool.name === call.name)\n\nconst approvalRequired = (tools: ReadonlyArray<ToolDef>, call: ToolCall) =>\n toolDefFor(tools, call)?.approval?.mode === 'manual'\n\nconst approvalRequestId = (call: ToolCall) => `approval:${call.id}`\n\nconst questionRequestId = (call: ToolCall) => `question:${call.id}`\n\nconst matchesApproval = (response: ToolApprovalResponse, call: ToolCall) =>\n response.toolCallId === call.id && response.requestId === approvalRequestId(call)\n\nconst matchesQuestion = (response: QuestionResponse, call: ToolCall) =>\n response.toolCallId === call.id && response.requestId === questionRequestId(call)\n\nconst approvalResponseFor = (responses: ReadonlyArray<HitlResponse>, call: ToolCall) =>\n responses.flatMap(response =>\n response._tag === 'ToolApprovalResponse' && matchesApproval(response, call) ? [response] : []\n )[0]\n\nconst questionResponseFor = (responses: ReadonlyArray<HitlResponse>, call: ToolCall) =>\n responses.flatMap(response =>\n response._tag === 'QuestionResponse' && matchesQuestion(response, call) ? [response] : []\n )[0]\n\nconst toolApprovalRequest = (tools: ReadonlyArray<ToolDef>, call: ToolCall): ToolApprovalRequest =>\n ToolApprovalRequest.make({\n requestId: approvalRequestId(call),\n toolCallId: call.id,\n call,\n policy: toolDefFor(tools, call)?.approval\n })\n\nconst deniedToolResult = (call: ToolCall, response: ToolApprovalResponse) => {\n const reason = response.reason ?? 'Denied by user'\n\n return ToolResult.make({\n toolCallId: call.id,\n content: `Tool call denied: ${reason}`,\n isError: true,\n structuredContent: {\n type: 'tool_approval_denied',\n reason,\n source: response.source\n }\n })\n}\n\nconst questionToolResult = (\n response: QuestionResponse,\n questions: ReadonlyArray<QuestionPrompt>\n) => {\n return ToolResult.make({\n toolCallId: response.toolCallId,\n content: formatQuestionResponseContent(response, questions),\n isError: response.outcome === 'cancelled' ? true : undefined,\n structuredContent: questionResponseStructuredContent(response)\n })\n}\n\nconst invalidQuestionToolResult = (call: ToolCall) =>\n ToolResult.make({\n toolCallId: call.id,\n content: 'Invalid question arguments.',\n isError: true,\n structuredContent: { type: 'question_invalid' }\n })\n\nconst prepareQuestionCall = (\n call: ToolCall,\n index: number,\n responses: ReadonlyArray<HitlResponse>\n): Effect.Effect<PreparedToolCall> =>\n Effect.gen(function* () {\n const decoded = yield* Schema.decodeUnknownEffect(QuestionToolParams)(call.params).pipe(\n Effect.result\n )\n\n if (decoded._tag === 'Failure') {\n return {\n _tag: 'Result',\n index,\n call,\n result: invalidQuestionToolResult(call),\n events: []\n }\n }\n\n const response = questionResponseFor(responses, call)\n\n if (response !== undefined) {\n return {\n _tag: 'Result',\n index,\n call,\n result: questionToolResult(response, decoded.success.questions),\n events: [hitlResponseEvent(response)]\n }\n }\n\n const request = QuestionRequest.make({\n requestId: questionRequestId(call),\n toolCallId: call.id,\n call,\n questions: decoded.success.questions\n })\n\n return {\n _tag: 'Pending',\n request,\n events: [QuestionRequested.make({ request })]\n }\n })\n\nconst prepareApprovalCall = (\n tools: ReadonlyArray<ToolDef>,\n call: ToolCall,\n index: number,\n responses: ReadonlyArray<HitlResponse>\n): PreparedToolCall => {\n if (!approvalRequired(tools, call)) {\n return { _tag: 'Execute', index, call, events: [] }\n }\n\n const request = toolApprovalRequest(tools, call)\n const response = approvalResponseFor(responses, call)\n\n if (response === undefined) {\n return {\n _tag: 'Pending',\n request,\n events: [ToolApprovalRequested.make({ call, request })]\n }\n }\n\n if (response.decision === 'denied') {\n return {\n _tag: 'Result',\n index,\n call,\n result: deniedToolResult(call, response),\n events: [hitlResponseEvent(response)]\n }\n }\n\n return {\n _tag: 'Execute',\n index,\n call,\n events: [hitlResponseEvent(response)]\n }\n}\n\nconst prepareToolCall = (input: {\n readonly tools: ReadonlyArray<ToolDef>\n readonly responses: ReadonlyArray<HitlResponse>\n readonly call: ToolCall\n readonly index: number\n}): Effect.Effect<PreparedToolCall> =>\n input.call.name === questionToolName\n ? prepareQuestionCall(input.call, input.index, input.responses)\n : Effect.succeed(prepareApprovalCall(input.tools, input.call, input.index, input.responses))\n\nconst prepareToolBatch = (input: {\n readonly tools: ReadonlyArray<ToolDef>\n readonly responses: ReadonlyArray<HitlResponse>\n readonly calls: ReadonlyArray<ToolCall>\n}): Effect.Effect<PreparedToolBatch> =>\n Effect.gen(function* () {\n const prepared = yield* Effect.forEach(input.calls, (call, index) =>\n prepareToolCall({ tools: input.tools, responses: input.responses, call, index })\n )\n\n return {\n callsToExecute: prepared.flatMap(item =>\n item._tag === 'Execute' ? [{ index: item.index, call: item.call }] : []\n ),\n resultMessages: prepared.flatMap(item =>\n item._tag === 'Result'\n ? [{ index: item.index, message: toolResultMessageFromResult(item.result) }]\n : []\n ),\n resultEvents: syntheticToolCompletionEvents(prepared),\n events: prepared.flatMap(item => (item._tag === 'Pending' ? [] : item.events)),\n pendingRequests: prepared.flatMap(item => (item._tag === 'Pending' ? [item.request] : [])),\n pendingEvents: prepared.flatMap(item => (item._tag === 'Pending' ? item.events : []))\n }\n })\n\nconst orderedToolResultMessages = (results: ReadonlyArray<IndexedToolResultMessage>) =>\n [...results].sort((left, right) => left.index - right.index).map(result => result.message)\n\nconst syntheticToolCompletionEvents = (\n prepared: ReadonlyArray<PreparedToolCall>\n): ReadonlyArray<AgentEvent> =>\n prepared.flatMap(item =>\n item._tag === 'Result'\n ? [ToolExecutionCompleted.make({ call: item.call, result: item.result })]\n : []\n )\n\nconst toolResultIds = (messages: ReadonlyArray<AgentMessage>): ReadonlySet<string> =>\n new Set(messages.flatMap(message => (message._tag === 'ToolResult' ? [message.toolCallId] : [])))\n\nconst pendingHostToolCalls = (messages: ReadonlyArray<AgentMessage>) => {\n const completed = toolResultIds(messages)\n\n return messages.flatMap(message =>\n message._tag === 'Assistant'\n ? assistantHostToolCalls(message).filter(call => !completed.has(call.id))\n : []\n )\n}\n\nconst nonEmptyHitlRequests = (\n requests: ReadonlyArray<HitlRequest>\n): NonEmptyHitlRequests | undefined => {\n const first = requests[0]\n\n return first === undefined ? undefined : [first, ...requests.slice(1)]\n}\n\nconst parallelToolExecutionStream = (input: {\n readonly calls: ReadonlyArray<IndexedToolCall>\n readonly executor: TurnStreamInput['executor']\n readonly loopConfig: LoopConfigShape\n readonly model: string\n readonly results: Ref.Ref<ReadonlyArray<IndexedToolResultMessage>>\n}) =>\n Stream.mergeAll(\n input.calls.map(({ call, index }) =>\n makeToolExecutionStream(input.executor, call, input.model).pipe(\n Stream.tap(event => {\n if (event._tag !== 'ToolExecutionCompleted') {\n return Effect.void\n }\n\n return Ref.update(input.results, results => [\n ...results,\n { index, message: toolResultMessageFromResult(event.result) }\n ])\n })\n )\n ),\n { concurrency: boundedToolConcurrency(input.loopConfig) }\n )\n\nconst toolErrorCode = (error: ToolError): AgentErrorCode => {\n switch (error.cause) {\n case 'validation':\n case 'invalid_input':\n return 'validation_error'\n case 'timeout':\n return 'tool_timeout'\n case 'permission':\n case 'denied':\n return 'tool_denied'\n case 'execution':\n case 'not_found':\n case 'unavailable':\n return 'tool_error'\n }\n}\n\ntype TurnCompletion = {\n readonly toolCalls: ReadonlyArray<ToolCall>\n readonly stopReason: 'stop' | 'tool_use'\n}\n\nconst validateTurnCompletion = (\n events: ReadonlyArray<LLMEvent>\n): Effect.Effect<TurnCompletion, LLMError> => {\n const doneEvents = events.filter(event => event._tag === 'Done')\n const toolCalls = collectToolCalls(events)\n const stopReason: TurnCompletion['stopReason'] = toolCalls.length === 0 ? 'stop' : 'tool_use'\n\n if (doneEvents.length !== 1) {\n return Effect.fail(\n new LLMError({\n cause: 'invalid_response',\n message: `Expected exactly one LLM done event, received ${doneEvents.length}`,\n retryable: false\n })\n )\n }\n\n const doneEvent = doneEvents[0]\n\n if (doneEvent === undefined || doneEvent.stopReason !== stopReason) {\n return Effect.fail(\n new LLMError({\n cause: 'invalid_response',\n message: `LLM done reason must be ${stopReason}`,\n retryable: false\n })\n )\n }\n\n return Effect.succeed({ toolCalls, stopReason })\n}\n\nconst makeAfterLlmStream = (\n input: TurnStreamInput,\n llmEventsRef: Ref.Ref<ReadonlyArray<LLMEvent>>\n): Stream.Stream<AgentEvent, AgentLoopError> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const llmEvents = yield* Ref.get(llmEventsRef)\n const completion = yield* validateTurnCompletion(llmEvents)\n const assistantMessage = accumulateAssistantMessage(llmEvents)\n const turnEndEvents: ReadonlyArray<AgentEvent> = [\n LLMStreamEnd.make({ turn: input.turn }),\n AssistantMessageEvent.make({ message: assistantMessage })\n ]\n\n yield* Ref.update(input.createdMessages, messages => [...messages, assistantMessage])\n\n if (completion.toolCalls.length === 0) {\n const messages = yield* Ref.get(input.createdMessages)\n const usage = yield* Ref.get(input.usage)\n\n return Stream.fromIterable([\n ...turnEndEvents,\n TurnEnd.make({ turn: input.turn, reason: completion.stopReason }),\n AgentEnd.make({\n messages,\n turns: input.turn,\n usage\n })\n ])\n }\n\n const toolResultMessages = yield* Ref.make<ReadonlyArray<IndexedToolResultMessage>>([])\n const prepared = yield* prepareToolBatch({\n tools: input.config.tools,\n responses: input.config.hitlResponses ?? [],\n calls: completion.toolCalls\n })\n\n if (prepared.resultMessages.length > 0) {\n yield* Ref.update(toolResultMessages, results => [...results, ...prepared.resultMessages])\n }\n\n if (prepared.pendingRequests.length > 0) {\n const pendingRequests = nonEmptyHitlRequests(prepared.pendingRequests)\n\n if (pendingRequests === undefined) {\n return Stream.empty\n }\n\n const readyResults = orderedToolResultMessages(yield* Ref.get(toolResultMessages))\n if (readyResults.length > 0) {\n yield* Ref.update(input.createdMessages, messages => [...messages, ...readyResults])\n }\n\n const messages = yield* Ref.get(input.createdMessages)\n const usage = yield* Ref.get(input.usage)\n\n return Stream.fromIterable([\n ...turnEndEvents,\n ...prepared.events,\n ...prepared.pendingEvents,\n TurnEnd.make({ turn: input.turn, reason: completion.stopReason }),\n AgentAwaitingInput.make({\n requests: pendingRequests,\n messages,\n turns: input.turn,\n usage\n })\n ])\n }\n\n const toolExecutionStream = parallelToolExecutionStream({\n calls: prepared.callsToExecute,\n executor: input.executor,\n loopConfig: input.loopConfig,\n model: input.config.model,\n results: toolResultMessages\n })\n const nextTurnStream = Stream.unwrap(\n Ref.get(toolResultMessages).pipe(\n Effect.flatMap(results => {\n const orderedResults = orderedToolResultMessages(results)\n\n return Ref.update(input.createdMessages, messages => [\n ...messages,\n ...orderedResults\n ]).pipe(\n Effect.as(\n Stream.make(TurnEnd.make({ turn: input.turn, reason: completion.stopReason })).pipe(\n Stream.concat(\n makeTurnStream({\n ...input,\n currentMessages: [\n ...input.currentMessages,\n assistantMessage,\n ...orderedResults\n ],\n turn: input.turn + 1\n })\n )\n )\n )\n )\n })\n )\n )\n\n return Stream.fromIterable(turnEndEvents).pipe(\n Stream.concat(Stream.fromIterable(prepared.events)),\n Stream.concat(toolExecutionStream),\n Stream.concat(nextTurnStream)\n )\n })\n )\n\nconst makeModelOnlyAfterLlmStream = (\n input: TurnStreamInput,\n llmEventsRef: Ref.Ref<ReadonlyArray<LLMEvent>>\n): Stream.Stream<AgentEvent, AgentLoopError> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const llmEvents = yield* Ref.get(llmEventsRef)\n const completion = yield* validateTurnCompletion(llmEvents)\n const assistantMessage = accumulateAssistantMessage(llmEvents)\n\n yield* Ref.update(input.createdMessages, messages => [...messages, assistantMessage])\n\n return Stream.fromIterable([\n LLMStreamEnd.make({ turn: input.turn }),\n AssistantMessageEvent.make({ message: assistantMessage }),\n TurnEnd.make({ turn: input.turn, reason: completion.stopReason })\n ])\n })\n )\n\nconst makeLlmStream = (\n input: TurnStreamInput,\n llmEvents: Ref.Ref<ReadonlyArray<LLMEvent>>,\n result: ContextTransformResult\n): Stream.Stream<AgentEvent, AgentLoopError> => {\n const makeStream = () =>\n input.provider.stream({\n messages: result.messages,\n tools: input.config.tools,\n model: input.config.model,\n reasoningEffort: input.config.reasoningEffort,\n systemPrompt: input.config.systemPrompt\n })\n\n return Stream.fromIterable(result.events)\n .pipe(Stream.concat(withProviderRetries(makeStream(), input.loopConfig, makeStream, 1)))\n .pipe(\n Stream.tap(event => {\n if (!isLlmEvent(event)) {\n return Effect.void\n }\n\n const appendEvent = Ref.update(llmEvents, events => [...events, event])\n\n if (event._tag !== 'Usage') {\n return appendEvent\n }\n\n return Ref.update(input.usage, usage => addAgentUsage(usage, event.usage)).pipe(\n Effect.flatMap(() => appendEvent)\n )\n }),\n Stream.flatMap(event =>\n event._tag === 'AgentRetry'\n ? Stream.make(event)\n : isLlmEvent(event)\n ? Stream.fromIterable(toLlmEvent(event))\n : Stream.make(event)\n ),\n Stream.concat(makeAfterLlmStream(input, llmEvents))\n )\n}\n\nconst makeModelOnlyLlmStream = (\n input: TurnStreamInput,\n llmEvents: Ref.Ref<ReadonlyArray<LLMEvent>>,\n result: ContextTransformResult\n): Stream.Stream<AgentEvent, AgentLoopError> => {\n const makeStream = () =>\n input.provider.stream({\n messages: result.messages,\n tools: input.config.tools,\n model: input.config.model,\n reasoningEffort: input.config.reasoningEffort,\n systemPrompt: input.config.systemPrompt\n })\n\n return Stream.fromIterable(result.events)\n .pipe(Stream.concat(withProviderRetries(makeStream(), input.loopConfig, makeStream, 1)))\n .pipe(\n Stream.tap(event => {\n if (!isLlmEvent(event)) {\n return Effect.void\n }\n\n const appendEvent = Ref.update(llmEvents, events => [...events, event])\n\n if (event._tag !== 'Usage') {\n return appendEvent\n }\n\n return Ref.update(input.usage, usage => addAgentUsage(usage, event.usage)).pipe(\n Effect.flatMap(() => appendEvent)\n )\n }),\n Stream.flatMap(event =>\n event._tag === 'AgentRetry'\n ? Stream.make(event)\n : isLlmEvent(event)\n ? Stream.fromIterable(toLlmEvent(event))\n : Stream.make(event)\n ),\n Stream.concat(makeModelOnlyAfterLlmStream(input, llmEvents))\n )\n}\n\nconst makeTurnStream = (input: TurnStreamInput): Stream.Stream<AgentEvent, AgentLoopError> =>\n Stream.suspend(() => {\n if (input.turn > input.loopConfig.maxTurns) {\n return Stream.fail(new AbortError({ reason: 'max_turns' }))\n }\n\n const llmStream = Stream.unwrap(\n Effect.gen(function* () {\n const llmEvents = yield* Ref.make<ReadonlyArray<LLMEvent>>([])\n const result = yield* input.contextTransformer.transform(input.currentMessages)\n yield* validateCapabilities(input.config, result.messages)\n\n return makeLlmStream(input, llmEvents, result)\n })\n )\n\n return Stream.fromIterable([\n TurnStart.make({ turn: input.turn }),\n LLMStreamStart.make({ turn: input.turn })\n ]).pipe(Stream.concat(llmStream))\n })\n\nconst makePendingToolResumeStream = (\n input: TurnStreamInput\n): Stream.Stream<AgentEvent, AgentLoopError> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const pendingCalls = pendingHostToolCalls(input.currentMessages)\n\n if (pendingCalls.length === 0 || (input.config.hitlResponses ?? []).length === 0) {\n return makeTurnStream(input)\n }\n\n const toolResultMessages = yield* Ref.make<ReadonlyArray<IndexedToolResultMessage>>([])\n const prepared = yield* prepareToolBatch({\n tools: input.config.tools,\n responses: input.config.hitlResponses ?? [],\n calls: pendingCalls\n })\n\n if (prepared.resultMessages.length > 0) {\n yield* Ref.update(toolResultMessages, results => [...results, ...prepared.resultMessages])\n }\n\n if (prepared.pendingRequests.length > 0) {\n const pendingRequests = nonEmptyHitlRequests(prepared.pendingRequests)\n\n if (pendingRequests === undefined) {\n return Stream.empty\n }\n\n const readyResults = orderedToolResultMessages(yield* Ref.get(toolResultMessages))\n if (readyResults.length > 0) {\n yield* Ref.update(input.createdMessages, messages => [...messages, ...readyResults])\n }\n\n const messages = yield* Ref.get(input.createdMessages)\n const usage = yield* Ref.get(input.usage)\n\n return Stream.fromIterable([\n ...prepared.events,\n ...prepared.pendingEvents,\n AgentAwaitingInput.make({\n requests: pendingRequests,\n messages,\n turns: Math.max(0, input.turn - 1),\n usage\n })\n ])\n }\n\n const toolExecutionStream = parallelToolExecutionStream({\n calls: prepared.callsToExecute,\n executor: input.executor,\n loopConfig: input.loopConfig,\n model: input.config.model,\n results: toolResultMessages\n })\n const nextTurnStream = Stream.unwrap(\n Ref.get(toolResultMessages).pipe(\n Effect.flatMap(results => {\n const orderedResults = orderedToolResultMessages(results)\n\n return Ref.update(input.createdMessages, messages => [\n ...messages,\n ...orderedResults\n ]).pipe(\n Effect.as(\n makeTurnStream({\n ...input,\n currentMessages: [...input.currentMessages, ...orderedResults]\n })\n )\n )\n })\n )\n )\n\n return Stream.fromIterable(prepared.events).pipe(\n Stream.concat(toolExecutionStream),\n Stream.concat(nextTurnStream)\n )\n })\n )\n\nconst unavailableToolExecutor: TurnStreamInput['executor'] = {\n execute: call =>\n Effect.fail(\n new ToolError({\n tool: call.name,\n message: 'Tool execution is not available in model turn step',\n cause: 'execution'\n })\n )\n}\n\nconst makeModelOnlyTurnStream = (\n input: TurnStreamInput\n): Stream.Stream<AgentEvent, AgentLoopError> =>\n Stream.suspend(() => {\n if (input.turn > input.loopConfig.maxTurns) {\n return Stream.fail(new AbortError({ reason: 'max_turns' }))\n }\n\n const llmStream = Stream.unwrap(\n Effect.gen(function* () {\n const llmEvents = yield* Ref.make<ReadonlyArray<LLMEvent>>([])\n const result = yield* input.contextTransformer.transform(input.currentMessages)\n yield* validateCapabilities(input.config, result.messages)\n\n return makeModelOnlyLlmStream(input, llmEvents, result)\n })\n )\n\n return Stream.fromIterable([\n TurnStart.make({ turn: input.turn }),\n LLMStreamStart.make({ turn: input.turn })\n ]).pipe(Stream.concat(llmStream))\n })\n\nexport const runModelTurn = (\n config: ModelTurnConfig\n): Stream.Stream<AgentEvent, AgentLoopError, ContextTransformer | LLMProvider | LoopConfig> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const contextTransformer = yield* ContextTransformer\n const loopConfig = yield* LoopConfig\n const provider = yield* LLMProvider\n const createdMessages = yield* Ref.make<ReadonlyArray<AgentMessage>>([])\n const usage = yield* Ref.make(zeroAgentUsage)\n\n return makeModelOnlyTurnStream({\n config,\n contextTransformer,\n loopConfig,\n provider,\n executor: unavailableToolExecutor,\n currentMessages: config.messages,\n createdMessages,\n usage,\n turn: config.turn\n })\n })\n )\n\nexport const runToolBatch = (\n config: ToolBatchConfig\n): Stream.Stream<AgentEvent, AgentLoopError, LoopConfig | ToolExecutor> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const executor = yield* ToolExecutor\n const loopConfig = yield* LoopConfig\n const toolResultMessages = yield* Ref.make<ReadonlyArray<IndexedToolResultMessage>>([])\n const prepared = yield* prepareToolBatch({\n tools: config.tools ?? [],\n responses: config.hitlResponses ?? [],\n calls: config.calls\n })\n const hasPendingRequests = prepared.pendingRequests.length > 0\n const resultEvents = hasPendingRequests ? [] : prepared.resultEvents\n const pendingRequests = nonEmptyHitlRequests(prepared.pendingRequests)\n const awaitingEvents: ReadonlyArray<AgentEvent> =\n pendingRequests === undefined\n ? []\n : [\n AgentAwaitingInput.make({\n requests: pendingRequests,\n messages: config.createdMessages ?? [],\n turns: config.turn ?? 0,\n usage: config.usage ?? zeroAgentUsage\n })\n ]\n\n return Stream.fromIterable([\n ...prepared.events,\n ...resultEvents,\n ...prepared.pendingEvents,\n ...awaitingEvents\n ]).pipe(\n Stream.concat(\n parallelToolExecutionStream({\n calls: hasPendingRequests ? [] : prepared.callsToExecute,\n executor,\n loopConfig,\n model: config.model ?? '',\n results: toolResultMessages\n })\n )\n )\n })\n )\n\nexport const run = (\n config: RunConfig\n): Stream.Stream<\n AgentEvent,\n AgentLoopError,\n ContextTransformer | LLMProvider | LoopConfig | ToolExecutor\n> =>\n Stream.unwrap(\n Effect.gen(function* () {\n const contextTransformer = yield* ContextTransformer\n const loopConfig = yield* LoopConfig\n const provider = yield* LLMProvider\n const executor = yield* ToolExecutor\n const createdMessages = yield* Ref.make<ReadonlyArray<AgentMessage>>([])\n const usage = yield* Ref.make(zeroAgentUsage)\n\n return Stream.make(AgentStart.make({})).pipe(\n Stream.concat(\n makePendingToolResumeStream({\n config,\n contextTransformer,\n loopConfig,\n provider,\n executor,\n currentMessages: config.messages,\n createdMessages,\n usage,\n turn: 1\n })\n )\n )\n })\n )\n"],"mappings":"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"}
@@ -5,7 +5,7 @@ var LoopConfig = class extends Context.Service()("@yolk-sdk/agent/loop/LoopConfi
5
5
  static defaultLayer = this.layer({
6
6
  maxTurns: 500,
7
7
  maxRetries: 2,
8
- retryBaseDelayMs: 1e3,
8
+ retryBaseDelayMs: 2e3,
9
9
  toolConcurrency: 4
10
10
  });
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"loop-config.mjs","names":[],"sources":["../../../src/loop/services/loop-config.ts"],"sourcesContent":["import { Context, Layer } from 'effect'\n\nexport type LoopConfigShape = {\n readonly maxTurns: number\n readonly maxRetries: number\n readonly retryBaseDelayMs: number\n readonly toolConcurrency: number\n}\n\nexport class LoopConfig extends Context.Service<LoopConfig, LoopConfigShape>()(\n '@yolk-sdk/agent/loop/LoopConfig'\n) {\n static layer = (config: LoopConfigShape) => Layer.succeed(this, config)\n static defaultLayer = this.layer({\n maxTurns: 500,\n maxRetries: 2,\n retryBaseDelayMs: 1000,\n toolConcurrency: 4\n })\n}\n"],"mappings":";;AASA,IAAa,aAAb,cAAgC,QAAQ,QAAqC,EAC3E,iCACF,EAAE;CACA,OAAO,SAAS,WAA4B,MAAM,QAAQ,MAAM,MAAM;CACtE,OAAO,eAAe,KAAK,MAAM;EAC/B,UAAU;EACV,YAAY;EACZ,kBAAkB;EAClB,iBAAiB;CACnB,CAAC;AACH"}
1
+ {"version":3,"file":"loop-config.mjs","names":[],"sources":["../../../src/loop/services/loop-config.ts"],"sourcesContent":["import { Context, Layer } from 'effect'\n\nexport type LoopConfigShape = {\n readonly maxTurns: number\n readonly maxRetries: number\n readonly retryBaseDelayMs: number\n readonly toolConcurrency: number\n}\n\nexport class LoopConfig extends Context.Service<LoopConfig, LoopConfigShape>()(\n '@yolk-sdk/agent/loop/LoopConfig'\n) {\n static layer = (config: LoopConfigShape) => Layer.succeed(this, config)\n static defaultLayer = this.layer({\n maxTurns: 500,\n maxRetries: 2,\n retryBaseDelayMs: 2000,\n toolConcurrency: 4\n })\n}\n"],"mappings":";;AASA,IAAa,aAAb,cAAgC,QAAQ,QAAqC,EAC3E,iCACF,EAAE;CACA,OAAO,SAAS,WAA4B,MAAM,QAAQ,MAAM,MAAM;CACtE,OAAO,eAAe,KAAK,MAAM;EAC/B,UAAU;EACV,YAAY;EACZ,kBAAkB;EAClB,iBAAiB;CACnB,CAAC;AACH"}
@@ -6,17 +6,28 @@ import * as Schema from "effect/Schema";
6
6
  //#region src/protocol/event.d.ts
7
7
  declare const SubagentStatus: Schema.Literals<readonly ["running", "completed", "error"]>;
8
8
  type SubagentStatus = typeof SubagentStatus.Type;
9
- declare const AgentErrorCode: Schema.Literals<readonly ["validation_error", "provider_error", "rate_limit", "context_overflow", "invalid_response", "tool_error", "tool_denied", "tool_timeout", "store_error", "aborted", "session_not_found", "conflict", "unknown"]>;
9
+ declare const AgentErrorCode: Schema.Literals<readonly ["validation_error", "provider_error", "rate_limit", "overloaded", "context_overflow", "invalid_response", "tool_error", "tool_denied", "tool_timeout", "store_error", "aborted", "session_not_found", "conflict", "unknown"]>;
10
10
  type AgentErrorCode = typeof AgentErrorCode.Type;
11
+ declare const ProviderFailureKind: Schema.Literals<readonly ["rate_limit", "overloaded", "server_error", "network", "stream", "auth", "context_overflow", "invalid_response", "unknown"]>;
12
+ type ProviderFailureKind = typeof ProviderFailureKind.Type;
13
+ declare const ProviderErrorInfo_base: Schema.Class<ProviderErrorInfo, Schema.Struct<{
14
+ readonly provider: Schema.Trimmed;
15
+ readonly kind: Schema.Literals<readonly ["rate_limit", "overloaded", "server_error", "network", "stream", "auth", "context_overflow", "invalid_response", "unknown"]>;
16
+ readonly status: Schema.optional<Schema.Number>;
17
+ readonly providerCode: Schema.optional<Schema.String>;
18
+ readonly retryAfterMs: Schema.optional<Schema.Number>;
19
+ }>, {}>;
20
+ declare class ProviderErrorInfo extends ProviderErrorInfo_base {}
11
21
  declare const AgentStart_base: Schema.Class<AgentStart, Schema.TaggedStruct<"AgentStart", {
12
22
  readonly eventId: Schema.optional<Schema.Trimmed>;
13
23
  readonly createdAtMs: Schema.optional<Schema.Number>;
14
24
  }>, {}>;
15
25
  declare class AgentStart extends AgentStart_base {}
16
26
  declare const AgentError_base: Schema.Class<AgentError, Schema.TaggedStruct<"AgentError", {
17
- readonly code: Schema.Literals<readonly ["validation_error", "provider_error", "rate_limit", "context_overflow", "invalid_response", "tool_error", "tool_denied", "tool_timeout", "store_error", "aborted", "session_not_found", "conflict", "unknown"]>;
27
+ readonly code: Schema.Literals<readonly ["validation_error", "provider_error", "rate_limit", "overloaded", "context_overflow", "invalid_response", "tool_error", "tool_denied", "tool_timeout", "store_error", "aborted", "session_not_found", "conflict", "unknown"]>;
18
28
  readonly message: Schema.String;
19
29
  readonly retryable: Schema.Boolean;
30
+ readonly provider: Schema.optional<typeof ProviderErrorInfo>;
20
31
  readonly eventId: Schema.optional<Schema.Trimmed>;
21
32
  readonly createdAtMs: Schema.optional<Schema.Number>;
22
33
  }>, {}>;
@@ -46,9 +57,10 @@ declare const UsageUpdate_base: Schema.Class<UsageUpdate, Schema.TaggedStruct<"U
46
57
  declare class UsageUpdate extends UsageUpdate_base {}
47
58
  declare const AgentRetry_base: Schema.Class<AgentRetry, Schema.TaggedStruct<"AgentRetry", {
48
59
  readonly attempt: Schema.Number;
49
- readonly reason: Schema.Literals<readonly ["validation_error", "provider_error", "rate_limit", "context_overflow", "invalid_response", "tool_error", "tool_denied", "tool_timeout", "store_error", "aborted", "session_not_found", "conflict", "unknown"]>;
60
+ readonly reason: Schema.Literals<readonly ["validation_error", "provider_error", "rate_limit", "overloaded", "context_overflow", "invalid_response", "tool_error", "tool_denied", "tool_timeout", "store_error", "aborted", "session_not_found", "conflict", "unknown"]>;
50
61
  readonly delayMs: Schema.Number;
51
62
  readonly message: Schema.String;
63
+ readonly provider: Schema.optional<typeof ProviderErrorInfo>;
52
64
  readonly eventId: Schema.optional<Schema.Trimmed>;
53
65
  readonly createdAtMs: Schema.optional<Schema.Number>;
54
66
  }>, {}>;
@@ -186,7 +198,7 @@ declare class ToolExecutionCompleted extends ToolExecutionCompleted_base {}
186
198
  declare const ToolExecutionError_base: Schema.Class<ToolExecutionError, Schema.TaggedStruct<"ToolExecutionError", {
187
199
  readonly call: typeof ToolCall;
188
200
  readonly message: Schema.String;
189
- readonly code: Schema.Literals<readonly ["validation_error", "provider_error", "rate_limit", "context_overflow", "invalid_response", "tool_error", "tool_denied", "tool_timeout", "store_error", "aborted", "session_not_found", "conflict", "unknown"]>;
201
+ readonly code: Schema.Literals<readonly ["validation_error", "provider_error", "rate_limit", "overloaded", "context_overflow", "invalid_response", "tool_error", "tool_denied", "tool_timeout", "store_error", "aborted", "session_not_found", "conflict", "unknown"]>;
190
202
  readonly eventId: Schema.optional<Schema.Trimmed>;
191
203
  readonly createdAtMs: Schema.optional<Schema.Number>;
192
204
  }>, {}>;
@@ -226,5 +238,5 @@ declare const hitlResponseEvent: (response: HitlResponse) => AgentEvent;
226
238
  declare const AgentEvent: Schema.Union<readonly [typeof AgentStart, typeof AgentError, typeof AgentEnd, typeof AgentAwaitingInput, typeof UsageUpdate, typeof AgentRetry, typeof CompactionStart, typeof CompactionEnd, typeof TurnStart, typeof TurnEnd, typeof LLMStreamStart, typeof LLMTextDelta, typeof LLMReasoningDelta, typeof ToolInputStart, typeof ToolInputDelta, typeof ToolInputEnd, typeof LLMStreamEnd, typeof AssistantMessageEvent, typeof ToolApprovalRequested, typeof ToolApprovalGranted, typeof ToolApprovalDenied, typeof QuestionRequested, typeof QuestionAnswered, typeof QuestionCancelled, typeof ToolExecutionStarted, typeof ToolExecutionCompleted, typeof ToolExecutionError, typeof ProviderToolResult, typeof SubagentStarted, typeof SubagentCompleted]>;
227
239
  type AgentEvent = typeof AgentEvent.Type;
228
240
  //#endregion
229
- export { AgentAwaitingInput, AgentEnd, AgentError, AgentErrorCode, AgentEvent, AgentRetry, AgentStart, AssistantMessageEvent, CompactionEnd, CompactionStart, LLMReasoningDelta, LLMStreamEnd, LLMStreamStart, LLMTextDelta, ProviderToolResult, QuestionAnswered, QuestionCancelled, QuestionRequested, SubagentCompleted, SubagentStarted, SubagentStatus, ToolApprovalDenied, ToolApprovalGranted, ToolApprovalRequested, ToolExecutionCompleted, ToolExecutionError, ToolExecutionStarted, ToolInputDelta, ToolInputEnd, ToolInputStart, TurnEnd, TurnStart, UsageUpdate, hitlResponseEvent, makeSubagentRunId };
241
+ export { AgentAwaitingInput, AgentEnd, AgentError, AgentErrorCode, AgentEvent, AgentRetry, AgentStart, AssistantMessageEvent, CompactionEnd, CompactionStart, LLMReasoningDelta, LLMStreamEnd, LLMStreamStart, LLMTextDelta, ProviderErrorInfo, ProviderFailureKind, ProviderToolResult, QuestionAnswered, QuestionCancelled, QuestionRequested, SubagentCompleted, SubagentStarted, SubagentStatus, ToolApprovalDenied, ToolApprovalGranted, ToolApprovalRequested, ToolExecutionCompleted, ToolExecutionError, ToolExecutionStarted, ToolInputDelta, ToolInputEnd, ToolInputStart, TurnEnd, TurnStart, UsageUpdate, hitlResponseEvent, makeSubagentRunId };
230
242
  //# sourceMappingURL=event.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event.d.mts","names":[],"sources":["../../src/protocol/event.ts"],"mappings":";;;;;;cAsBa,cAAA,EAAc,MAAA,CAAA,QAAA;AAAA,KACf,cAAA,UAAwB,cAAA,CAAe,IAAI;AAAA,cAE1C,cAAA,EAAc,MAAA,CAAA,QAAA;AAAA,KAef,cAAA,UAAwB,cAAA,CAAe,IAAI;AAAA,cAAA,eAAA;;;;cAE1C,UAAA,SAAmB,eAE9B;AAAA,cAAG,eAAA;;;;;;;cAEQ,UAAA,SAAmB,eAK9B;AAAA,cAAG,aAAA;;;;;;;cAEQ,QAAA,SAAiB,aAK5B;AAAA,cAAG,uBAAA;;;;;;;;cAEQ,kBAAA,SAA2B,uBASvC;AAAA,cAAG,gBAAA;;;;;cAES,WAAA,SAAoB,gBAG/B;AAAA,cAAG,eAAA;;;;;;;;cAEQ,UAAA,SAAmB,eAM9B;AAAA,cAAG,oBAAA;;;;;cAEQ,eAAA,SAAwB,oBAGnC;AAAA,cAAG,kBAAA;;;;;;;cAEQ,aAAA,SAAsB,kBAKjC;AAAA,cAAG,cAAA;;;;;cAEQ,SAAA,SAAkB,cAG7B;AAAA,cAAG,YAAA;;;;;;cAEQ,OAAA,SAAgB,YAI3B;AAAA,cAAG,mBAAA;;;;;cAEQ,cAAA,SAAuB,mBAGlC;AAAA,cAAG,iBAAA;;;;;cAEQ,YAAA,SAAqB,iBAGhC;AAAA,cAAG,sBAAA;;;;;cAEQ,iBAAA,SAA0B,sBAMtC;AAAA,cAAG,mBAAA;;;;;;cAES,cAAA,SAAuB,mBAIlC;AAAA,cAAG,mBAAA;;;;;;cAEQ,cAAA,SAAuB,mBAIlC;AAAA,cAAG,iBAAA;;;;;cAEQ,YAAA,SAAqB,iBAGhC;AAAA,cAAG,0BAAA;;;;;;cAEQ,qBAAA,SAA8B,0BAO1C;AAAA,cAAG,wBAAA;;;;;;cAES,mBAAA,SAA4B,wBAOxC;AAAA,cAAG,uBAAA;;;;;;;cAES,kBAAA,SAA2B,uBAQvC;AAAA,cAAG,sBAAA;;;;;cAES,iBAAA,SAA0B,sBAMtC;AAAA,cAAG,qBAAA;;;;;cAES,gBAAA,SAAyB,qBAGpC;AAAA,cAAG,sBAAA;;;;;cAEQ,iBAAA,SAA0B,sBAMtC;AAAA,cAAG,iBAAA;;;;;cAES,YAAA,SAAqB,iBAGhC;AAAA,cAAG,0BAAA;;;;;cAEQ,qBAAA,SAA8B,0BAM1C;AAAA,cAAG,yBAAA;;;;;cAES,oBAAA,SAA6B,yBAMzC;AAAA,cAAG,2BAAA;;;;;;cAES,sBAAA,SAA+B,2BAO3C;AAAA,cAAG,uBAAA;;;;;;;cAES,kBAAA,SAA2B,uBAQvC;AAAA,cAAG,uBAAA;;;;;;cAES,kBAAA,SAA2B,uBAOvC;AAAA,cAAG,oBAAA;;;;;;;;;cAES,eAAA,SAAwB,oBAOnC;AAAA,cAAG,sBAAA;;;;;;;;;;;;cAEQ,iBAAA,SAA0B,sBAatC;AAAA,cAEY,iBAAA,GAAqB,gBAAwB;AAAA,cA8B7C,iBAAA,GAAqB,QAAA,EAAU,YAAA,KAAe,UAqB1D;AAAA,cAEY,UAAA,EAAU,MAAA,CAAA,KAAA,kBAAA,UAAA,SAAA,UAAA,SAAA,QAAA,SAAA,kBAAA,SAAA,WAAA,SAAA,UAAA,SAAA,eAAA,SAAA,aAAA,SAAA,SAAA,SAAA,OAAA,SAAA,cAAA,SAAA,YAAA,SAAA,iBAAA,SAAA,cAAA,SAAA,cAAA,SAAA,YAAA,SAAA,YAAA,SAAA,qBAAA,SAAA,qBAAA,SAAA,mBAAA,SAAA,kBAAA,SAAA,iBAAA,SAAA,gBAAA,SAAA,iBAAA,SAAA,oBAAA,SAAA,sBAAA,SAAA,kBAAA,SAAA,kBAAA,SAAA,eAAA,SAAA,iBAAA;AAAA,KAgCX,UAAA,UAAoB,UAAA,CAAW,IAAI"}
1
+ {"version":3,"file":"event.d.mts","names":[],"sources":["../../src/protocol/event.ts"],"mappings":"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"}
@@ -17,6 +17,7 @@ const AgentErrorCode = Schema.Literals([
17
17
  "validation_error",
18
18
  "provider_error",
19
19
  "rate_limit",
20
+ "overloaded",
20
21
  "context_overflow",
21
22
  "invalid_response",
22
23
  "tool_error",
@@ -28,12 +29,31 @@ const AgentErrorCode = Schema.Literals([
28
29
  "conflict",
29
30
  "unknown"
30
31
  ]);
32
+ const ProviderFailureKind = Schema.Literals([
33
+ "rate_limit",
34
+ "overloaded",
35
+ "server_error",
36
+ "network",
37
+ "stream",
38
+ "auth",
39
+ "context_overflow",
40
+ "invalid_response",
41
+ "unknown"
42
+ ]);
43
+ var ProviderErrorInfo = class extends Schema.Class("ProviderErrorInfo")({
44
+ provider: NonEmptyTrimmedString,
45
+ kind: ProviderFailureKind,
46
+ status: Schema.optional(Schema.Number),
47
+ providerCode: Schema.optional(Schema.String),
48
+ retryAfterMs: Schema.optional(Schema.Number)
49
+ }) {};
31
50
  var AgentStart = class extends Schema.TaggedClass()("AgentStart", { ...EventIdentity }) {};
32
51
  var AgentError = class extends Schema.TaggedClass()("AgentError", {
33
52
  ...EventIdentity,
34
53
  code: AgentErrorCode,
35
54
  message: Schema.String,
36
- retryable: Schema.Boolean
55
+ retryable: Schema.Boolean,
56
+ provider: Schema.optional(ProviderErrorInfo)
37
57
  }) {};
38
58
  var AgentEnd = class extends Schema.TaggedClass()("AgentEnd", {
39
59
  ...EventIdentity,
@@ -57,7 +77,8 @@ var AgentRetry = class extends Schema.TaggedClass()("AgentRetry", {
57
77
  attempt: Schema.Number,
58
78
  reason: AgentErrorCode,
59
79
  delayMs: Schema.Number,
60
- message: Schema.String
80
+ message: Schema.String,
81
+ provider: Schema.optional(ProviderErrorInfo)
61
82
  }) {};
62
83
  var CompactionStart = class extends Schema.TaggedClass()("CompactionStart", {
63
84
  ...EventIdentity,
@@ -252,6 +273,6 @@ const AgentEvent = Schema.Union([
252
273
  SubagentCompleted
253
274
  ]);
254
275
  //#endregion
255
- export { AgentAwaitingInput, AgentEnd, AgentError, AgentErrorCode, AgentEvent, AgentRetry, AgentStart, AssistantMessageEvent, CompactionEnd, CompactionStart, LLMReasoningDelta, LLMStreamEnd, LLMStreamStart, LLMTextDelta, ProviderToolResult, QuestionAnswered, QuestionCancelled, QuestionRequested, SubagentCompleted, SubagentStarted, SubagentStatus, ToolApprovalDenied, ToolApprovalGranted, ToolApprovalRequested, ToolExecutionCompleted, ToolExecutionError, ToolExecutionStarted, ToolInputDelta, ToolInputEnd, ToolInputStart, TurnEnd, TurnStart, UsageUpdate, hitlResponseEvent, makeSubagentRunId };
276
+ export { AgentAwaitingInput, AgentEnd, AgentError, AgentErrorCode, AgentEvent, AgentRetry, AgentStart, AssistantMessageEvent, CompactionEnd, CompactionStart, LLMReasoningDelta, LLMStreamEnd, LLMStreamStart, LLMTextDelta, ProviderErrorInfo, ProviderFailureKind, ProviderToolResult, QuestionAnswered, QuestionCancelled, QuestionRequested, SubagentCompleted, SubagentStarted, SubagentStatus, ToolApprovalDenied, ToolApprovalGranted, ToolApprovalRequested, ToolExecutionCompleted, ToolExecutionError, ToolExecutionStarted, ToolInputDelta, ToolInputEnd, ToolInputStart, TurnEnd, TurnStart, UsageUpdate, hitlResponseEvent, makeSubagentRunId };
256
277
 
257
278
  //# sourceMappingURL=event.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"event.mjs","names":[],"sources":["../../src/protocol/event.ts"],"sourcesContent":["import * as Schema from 'effect/Schema'\nimport { AssistantAgentMessage, AgentMessage } from './message.ts'\nimport {\n HitlRequest,\n QuestionAnswer,\n QuestionRequest,\n QuestionResponse,\n ToolApprovalRequest,\n ToolApprovalResponse,\n ToolCall,\n ToolResult,\n type HitlResponse\n} from './tool.ts'\nimport { AgentUsage } from './usage.ts'\n\nconst NonEmptyTrimmedString = Schema.Trimmed.pipe(Schema.check(Schema.isNonEmpty()))\n\nconst EventIdentity = {\n eventId: Schema.optional(NonEmptyTrimmedString),\n createdAtMs: Schema.optional(Schema.Number)\n}\n\nexport const SubagentStatus = Schema.Literals(['running', 'completed', 'error'])\nexport type SubagentStatus = typeof SubagentStatus.Type\n\nexport const AgentErrorCode = Schema.Literals([\n 'validation_error',\n 'provider_error',\n 'rate_limit',\n 'context_overflow',\n 'invalid_response',\n 'tool_error',\n 'tool_denied',\n 'tool_timeout',\n 'store_error',\n 'aborted',\n 'session_not_found',\n 'conflict',\n 'unknown'\n])\nexport type AgentErrorCode = typeof AgentErrorCode.Type\n\nexport class AgentStart extends Schema.TaggedClass<AgentStart>()('AgentStart', {\n ...EventIdentity\n}) {}\n\nexport class AgentError extends Schema.TaggedClass<AgentError>()('AgentError', {\n ...EventIdentity,\n code: AgentErrorCode,\n message: Schema.String,\n retryable: Schema.Boolean\n}) {}\n\nexport class AgentEnd extends Schema.TaggedClass<AgentEnd>()('AgentEnd', {\n ...EventIdentity,\n messages: Schema.Array(AgentMessage),\n turns: Schema.Number,\n usage: AgentUsage\n}) {}\n\nexport class AgentAwaitingInput extends Schema.TaggedClass<AgentAwaitingInput>()(\n 'AgentAwaitingInput',\n {\n ...EventIdentity,\n requests: Schema.NonEmptyArray(HitlRequest),\n messages: Schema.Array(AgentMessage),\n turns: Schema.Number,\n usage: AgentUsage\n }\n) {}\n\nexport class UsageUpdate extends Schema.TaggedClass<UsageUpdate>()('UsageUpdate', {\n ...EventIdentity,\n usage: AgentUsage\n}) {}\n\nexport class AgentRetry extends Schema.TaggedClass<AgentRetry>()('AgentRetry', {\n ...EventIdentity,\n attempt: Schema.Number,\n reason: AgentErrorCode,\n delayMs: Schema.Number,\n message: Schema.String\n}) {}\n\nexport class CompactionStart extends Schema.TaggedClass<CompactionStart>()('CompactionStart', {\n ...EventIdentity,\n strategy: Schema.String\n}) {}\n\nexport class CompactionEnd extends Schema.TaggedClass<CompactionEnd>()('CompactionEnd', {\n ...EventIdentity,\n strategy: Schema.String,\n beforeTokens: Schema.optional(Schema.Number),\n afterTokens: Schema.optional(Schema.Number)\n}) {}\n\nexport class TurnStart extends Schema.TaggedClass<TurnStart>()('TurnStart', {\n ...EventIdentity,\n turn: Schema.Number\n}) {}\n\nexport class TurnEnd extends Schema.TaggedClass<TurnEnd>()('TurnEnd', {\n ...EventIdentity,\n turn: Schema.Number,\n reason: Schema.Literals(['stop', 'tool_use'])\n}) {}\n\nexport class LLMStreamStart extends Schema.TaggedClass<LLMStreamStart>()('LLMStreamStart', {\n ...EventIdentity,\n turn: Schema.Number\n}) {}\n\nexport class LLMTextDelta extends Schema.TaggedClass<LLMTextDelta>()('LLMTextDelta', {\n ...EventIdentity,\n text: Schema.String\n}) {}\n\nexport class LLMReasoningDelta extends Schema.TaggedClass<LLMReasoningDelta>()(\n 'LLMReasoningDelta',\n {\n ...EventIdentity,\n text: Schema.String\n }\n) {}\n\nexport class ToolInputStart extends Schema.TaggedClass<ToolInputStart>()('ToolInputStart', {\n ...EventIdentity,\n id: Schema.String,\n name: Schema.optional(Schema.String)\n}) {}\n\nexport class ToolInputDelta extends Schema.TaggedClass<ToolInputDelta>()('ToolInputDelta', {\n ...EventIdentity,\n id: Schema.String,\n delta: Schema.String\n}) {}\n\nexport class ToolInputEnd extends Schema.TaggedClass<ToolInputEnd>()('ToolInputEnd', {\n ...EventIdentity,\n call: ToolCall\n}) {}\n\nexport class ToolApprovalRequested extends Schema.TaggedClass<ToolApprovalRequested>()(\n 'ToolApprovalRequested',\n {\n ...EventIdentity,\n call: ToolCall,\n request: Schema.optional(ToolApprovalRequest)\n }\n) {}\n\nexport class ToolApprovalGranted extends Schema.TaggedClass<ToolApprovalGranted>()(\n 'ToolApprovalGranted',\n {\n ...EventIdentity,\n toolCallId: Schema.String,\n response: Schema.optional(ToolApprovalResponse)\n }\n) {}\n\nexport class ToolApprovalDenied extends Schema.TaggedClass<ToolApprovalDenied>()(\n 'ToolApprovalDenied',\n {\n ...EventIdentity,\n toolCallId: Schema.String,\n reason: Schema.String,\n response: Schema.optional(ToolApprovalResponse)\n }\n) {}\n\nexport class QuestionRequested extends Schema.TaggedClass<QuestionRequested>()(\n 'QuestionRequested',\n {\n ...EventIdentity,\n request: QuestionRequest\n }\n) {}\n\nexport class QuestionAnswered extends Schema.TaggedClass<QuestionAnswered>()('QuestionAnswered', {\n ...EventIdentity,\n response: QuestionResponse\n}) {}\n\nexport class QuestionCancelled extends Schema.TaggedClass<QuestionCancelled>()(\n 'QuestionCancelled',\n {\n ...EventIdentity,\n response: QuestionResponse\n }\n) {}\n\nexport class LLMStreamEnd extends Schema.TaggedClass<LLMStreamEnd>()('LLMStreamEnd', {\n ...EventIdentity,\n turn: Schema.Number\n}) {}\n\nexport class AssistantMessageEvent extends Schema.TaggedClass<AssistantMessageEvent>()(\n 'AssistantMessage',\n {\n ...EventIdentity,\n message: AssistantAgentMessage\n }\n) {}\n\nexport class ToolExecutionStarted extends Schema.TaggedClass<ToolExecutionStarted>()(\n 'ToolExecutionStarted',\n {\n ...EventIdentity,\n call: ToolCall\n }\n) {}\n\nexport class ToolExecutionCompleted extends Schema.TaggedClass<ToolExecutionCompleted>()(\n 'ToolExecutionCompleted',\n {\n ...EventIdentity,\n call: ToolCall,\n result: ToolResult\n }\n) {}\n\nexport class ToolExecutionError extends Schema.TaggedClass<ToolExecutionError>()(\n 'ToolExecutionError',\n {\n ...EventIdentity,\n call: ToolCall,\n message: Schema.String,\n code: AgentErrorCode\n }\n) {}\n\nexport class ProviderToolResult extends Schema.TaggedClass<ProviderToolResult>()(\n 'ProviderToolResult',\n {\n ...EventIdentity,\n call: ToolCall,\n result: ToolResult\n }\n) {}\n\nexport class SubagentStarted extends Schema.TaggedClass<SubagentStarted>()('SubagentStarted', {\n ...EventIdentity,\n parentToolCallId: NonEmptyTrimmedString,\n subagentRunId: NonEmptyTrimmedString,\n subagentType: NonEmptyTrimmedString,\n description: Schema.String,\n model: Schema.String\n}) {}\n\nexport class SubagentCompleted extends Schema.TaggedClass<SubagentCompleted>()(\n 'SubagentCompleted',\n {\n ...EventIdentity,\n parentToolCallId: NonEmptyTrimmedString,\n subagentRunId: NonEmptyTrimmedString,\n subagentType: NonEmptyTrimmedString,\n description: Schema.String,\n model: Schema.String,\n status: SubagentStatus,\n durationMs: Schema.Number,\n summary: Schema.optional(Schema.String)\n }\n) {}\n\nexport const makeSubagentRunId = (parentToolCallId: string) => `subagent:${parentToolCallId}`\n\nconst questionAnswerValue = (answer: QuestionAnswer) =>\n QuestionAnswer.make({\n questionId: answer.questionId,\n ...(answer.optionIds === undefined ? {} : { optionIds: [...answer.optionIds] }),\n ...(answer.customAnswer === undefined ? {} : { customAnswer: answer.customAnswer })\n })\n\nconst questionResponseValue = (response: QuestionResponse) =>\n QuestionResponse.make({\n requestId: response.requestId,\n toolCallId: response.toolCallId,\n outcome: response.outcome,\n source: response.source,\n ...(response.answers === undefined\n ? {}\n : { answers: response.answers.map(answer => questionAnswerValue(answer)) }),\n ...(response.reason === undefined ? {} : { reason: response.reason })\n })\n\nconst toolApprovalResponseValue = (response: ToolApprovalResponse) =>\n ToolApprovalResponse.make({\n requestId: response.requestId,\n toolCallId: response.toolCallId,\n decision: response.decision,\n source: response.source,\n ...(response.reason === undefined ? {} : { reason: response.reason })\n })\n\nexport const hitlResponseEvent = (response: HitlResponse): AgentEvent => {\n switch (response._tag) {\n case 'QuestionResponse': {\n const responseValue = questionResponseValue(response)\n\n return response.outcome === 'answered'\n ? QuestionAnswered.make({ response: responseValue })\n : QuestionCancelled.make({ response: responseValue })\n }\n case 'ToolApprovalResponse': {\n const responseValue = toolApprovalResponseValue(response)\n\n return response.decision === 'approved'\n ? ToolApprovalGranted.make({ toolCallId: response.toolCallId, response: responseValue })\n : ToolApprovalDenied.make({\n toolCallId: response.toolCallId,\n reason: response.reason ?? 'Denied by user',\n response: responseValue\n })\n }\n }\n}\n\nexport const AgentEvent = Schema.Union([\n AgentStart,\n AgentError,\n AgentEnd,\n AgentAwaitingInput,\n UsageUpdate,\n AgentRetry,\n CompactionStart,\n CompactionEnd,\n TurnStart,\n TurnEnd,\n LLMStreamStart,\n LLMTextDelta,\n LLMReasoningDelta,\n ToolInputStart,\n ToolInputDelta,\n ToolInputEnd,\n LLMStreamEnd,\n AssistantMessageEvent,\n ToolApprovalRequested,\n ToolApprovalGranted,\n ToolApprovalDenied,\n QuestionRequested,\n QuestionAnswered,\n QuestionCancelled,\n ToolExecutionStarted,\n ToolExecutionCompleted,\n ToolExecutionError,\n ProviderToolResult,\n SubagentStarted,\n SubagentCompleted\n])\nexport type AgentEvent = typeof AgentEvent.Type\n"],"mappings":"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"}
1
+ {"version":3,"file":"event.mjs","names":[],"sources":["../../src/protocol/event.ts"],"sourcesContent":["import * as Schema from 'effect/Schema'\nimport { AssistantAgentMessage, AgentMessage } from './message.ts'\nimport {\n HitlRequest,\n QuestionAnswer,\n QuestionRequest,\n QuestionResponse,\n ToolApprovalRequest,\n ToolApprovalResponse,\n ToolCall,\n ToolResult,\n type HitlResponse\n} from './tool.ts'\nimport { AgentUsage } from './usage.ts'\n\nconst NonEmptyTrimmedString = Schema.Trimmed.pipe(Schema.check(Schema.isNonEmpty()))\n\nconst EventIdentity = {\n eventId: Schema.optional(NonEmptyTrimmedString),\n createdAtMs: Schema.optional(Schema.Number)\n}\n\nexport const SubagentStatus = Schema.Literals(['running', 'completed', 'error'])\nexport type SubagentStatus = typeof SubagentStatus.Type\n\nexport const AgentErrorCode = Schema.Literals([\n 'validation_error',\n 'provider_error',\n 'rate_limit',\n 'overloaded',\n 'context_overflow',\n 'invalid_response',\n 'tool_error',\n 'tool_denied',\n 'tool_timeout',\n 'store_error',\n 'aborted',\n 'session_not_found',\n 'conflict',\n 'unknown'\n])\nexport type AgentErrorCode = typeof AgentErrorCode.Type\n\nexport const ProviderFailureKind = Schema.Literals([\n 'rate_limit',\n 'overloaded',\n 'server_error',\n 'network',\n 'stream',\n 'auth',\n 'context_overflow',\n 'invalid_response',\n 'unknown'\n])\nexport type ProviderFailureKind = typeof ProviderFailureKind.Type\n\nexport class ProviderErrorInfo extends Schema.Class<ProviderErrorInfo>('ProviderErrorInfo')({\n provider: NonEmptyTrimmedString,\n kind: ProviderFailureKind,\n status: Schema.optional(Schema.Number),\n providerCode: Schema.optional(Schema.String),\n retryAfterMs: Schema.optional(Schema.Number)\n}) {}\n\nexport class AgentStart extends Schema.TaggedClass<AgentStart>()('AgentStart', {\n ...EventIdentity\n}) {}\n\nexport class AgentError extends Schema.TaggedClass<AgentError>()('AgentError', {\n ...EventIdentity,\n code: AgentErrorCode,\n message: Schema.String,\n retryable: Schema.Boolean,\n provider: Schema.optional(ProviderErrorInfo)\n}) {}\n\nexport class AgentEnd extends Schema.TaggedClass<AgentEnd>()('AgentEnd', {\n ...EventIdentity,\n messages: Schema.Array(AgentMessage),\n turns: Schema.Number,\n usage: AgentUsage\n}) {}\n\nexport class AgentAwaitingInput extends Schema.TaggedClass<AgentAwaitingInput>()(\n 'AgentAwaitingInput',\n {\n ...EventIdentity,\n requests: Schema.NonEmptyArray(HitlRequest),\n messages: Schema.Array(AgentMessage),\n turns: Schema.Number,\n usage: AgentUsage\n }\n) {}\n\nexport class UsageUpdate extends Schema.TaggedClass<UsageUpdate>()('UsageUpdate', {\n ...EventIdentity,\n usage: AgentUsage\n}) {}\n\nexport class AgentRetry extends Schema.TaggedClass<AgentRetry>()('AgentRetry', {\n ...EventIdentity,\n attempt: Schema.Number,\n reason: AgentErrorCode,\n delayMs: Schema.Number,\n message: Schema.String,\n provider: Schema.optional(ProviderErrorInfo)\n}) {}\n\nexport class CompactionStart extends Schema.TaggedClass<CompactionStart>()('CompactionStart', {\n ...EventIdentity,\n strategy: Schema.String\n}) {}\n\nexport class CompactionEnd extends Schema.TaggedClass<CompactionEnd>()('CompactionEnd', {\n ...EventIdentity,\n strategy: Schema.String,\n beforeTokens: Schema.optional(Schema.Number),\n afterTokens: Schema.optional(Schema.Number)\n}) {}\n\nexport class TurnStart extends Schema.TaggedClass<TurnStart>()('TurnStart', {\n ...EventIdentity,\n turn: Schema.Number\n}) {}\n\nexport class TurnEnd extends Schema.TaggedClass<TurnEnd>()('TurnEnd', {\n ...EventIdentity,\n turn: Schema.Number,\n reason: Schema.Literals(['stop', 'tool_use'])\n}) {}\n\nexport class LLMStreamStart extends Schema.TaggedClass<LLMStreamStart>()('LLMStreamStart', {\n ...EventIdentity,\n turn: Schema.Number\n}) {}\n\nexport class LLMTextDelta extends Schema.TaggedClass<LLMTextDelta>()('LLMTextDelta', {\n ...EventIdentity,\n text: Schema.String\n}) {}\n\nexport class LLMReasoningDelta extends Schema.TaggedClass<LLMReasoningDelta>()(\n 'LLMReasoningDelta',\n {\n ...EventIdentity,\n text: Schema.String\n }\n) {}\n\nexport class ToolInputStart extends Schema.TaggedClass<ToolInputStart>()('ToolInputStart', {\n ...EventIdentity,\n id: Schema.String,\n name: Schema.optional(Schema.String)\n}) {}\n\nexport class ToolInputDelta extends Schema.TaggedClass<ToolInputDelta>()('ToolInputDelta', {\n ...EventIdentity,\n id: Schema.String,\n delta: Schema.String\n}) {}\n\nexport class ToolInputEnd extends Schema.TaggedClass<ToolInputEnd>()('ToolInputEnd', {\n ...EventIdentity,\n call: ToolCall\n}) {}\n\nexport class ToolApprovalRequested extends Schema.TaggedClass<ToolApprovalRequested>()(\n 'ToolApprovalRequested',\n {\n ...EventIdentity,\n call: ToolCall,\n request: Schema.optional(ToolApprovalRequest)\n }\n) {}\n\nexport class ToolApprovalGranted extends Schema.TaggedClass<ToolApprovalGranted>()(\n 'ToolApprovalGranted',\n {\n ...EventIdentity,\n toolCallId: Schema.String,\n response: Schema.optional(ToolApprovalResponse)\n }\n) {}\n\nexport class ToolApprovalDenied extends Schema.TaggedClass<ToolApprovalDenied>()(\n 'ToolApprovalDenied',\n {\n ...EventIdentity,\n toolCallId: Schema.String,\n reason: Schema.String,\n response: Schema.optional(ToolApprovalResponse)\n }\n) {}\n\nexport class QuestionRequested extends Schema.TaggedClass<QuestionRequested>()(\n 'QuestionRequested',\n {\n ...EventIdentity,\n request: QuestionRequest\n }\n) {}\n\nexport class QuestionAnswered extends Schema.TaggedClass<QuestionAnswered>()('QuestionAnswered', {\n ...EventIdentity,\n response: QuestionResponse\n}) {}\n\nexport class QuestionCancelled extends Schema.TaggedClass<QuestionCancelled>()(\n 'QuestionCancelled',\n {\n ...EventIdentity,\n response: QuestionResponse\n }\n) {}\n\nexport class LLMStreamEnd extends Schema.TaggedClass<LLMStreamEnd>()('LLMStreamEnd', {\n ...EventIdentity,\n turn: Schema.Number\n}) {}\n\nexport class AssistantMessageEvent extends Schema.TaggedClass<AssistantMessageEvent>()(\n 'AssistantMessage',\n {\n ...EventIdentity,\n message: AssistantAgentMessage\n }\n) {}\n\nexport class ToolExecutionStarted extends Schema.TaggedClass<ToolExecutionStarted>()(\n 'ToolExecutionStarted',\n {\n ...EventIdentity,\n call: ToolCall\n }\n) {}\n\nexport class ToolExecutionCompleted extends Schema.TaggedClass<ToolExecutionCompleted>()(\n 'ToolExecutionCompleted',\n {\n ...EventIdentity,\n call: ToolCall,\n result: ToolResult\n }\n) {}\n\nexport class ToolExecutionError extends Schema.TaggedClass<ToolExecutionError>()(\n 'ToolExecutionError',\n {\n ...EventIdentity,\n call: ToolCall,\n message: Schema.String,\n code: AgentErrorCode\n }\n) {}\n\nexport class ProviderToolResult extends Schema.TaggedClass<ProviderToolResult>()(\n 'ProviderToolResult',\n {\n ...EventIdentity,\n call: ToolCall,\n result: ToolResult\n }\n) {}\n\nexport class SubagentStarted extends Schema.TaggedClass<SubagentStarted>()('SubagentStarted', {\n ...EventIdentity,\n parentToolCallId: NonEmptyTrimmedString,\n subagentRunId: NonEmptyTrimmedString,\n subagentType: NonEmptyTrimmedString,\n description: Schema.String,\n model: Schema.String\n}) {}\n\nexport class SubagentCompleted extends Schema.TaggedClass<SubagentCompleted>()(\n 'SubagentCompleted',\n {\n ...EventIdentity,\n parentToolCallId: NonEmptyTrimmedString,\n subagentRunId: NonEmptyTrimmedString,\n subagentType: NonEmptyTrimmedString,\n description: Schema.String,\n model: Schema.String,\n status: SubagentStatus,\n durationMs: Schema.Number,\n summary: Schema.optional(Schema.String)\n }\n) {}\n\nexport const makeSubagentRunId = (parentToolCallId: string) => `subagent:${parentToolCallId}`\n\nconst questionAnswerValue = (answer: QuestionAnswer) =>\n QuestionAnswer.make({\n questionId: answer.questionId,\n ...(answer.optionIds === undefined ? {} : { optionIds: [...answer.optionIds] }),\n ...(answer.customAnswer === undefined ? {} : { customAnswer: answer.customAnswer })\n })\n\nconst questionResponseValue = (response: QuestionResponse) =>\n QuestionResponse.make({\n requestId: response.requestId,\n toolCallId: response.toolCallId,\n outcome: response.outcome,\n source: response.source,\n ...(response.answers === undefined\n ? {}\n : { answers: response.answers.map(answer => questionAnswerValue(answer)) }),\n ...(response.reason === undefined ? {} : { reason: response.reason })\n })\n\nconst toolApprovalResponseValue = (response: ToolApprovalResponse) =>\n ToolApprovalResponse.make({\n requestId: response.requestId,\n toolCallId: response.toolCallId,\n decision: response.decision,\n source: response.source,\n ...(response.reason === undefined ? {} : { reason: response.reason })\n })\n\nexport const hitlResponseEvent = (response: HitlResponse): AgentEvent => {\n switch (response._tag) {\n case 'QuestionResponse': {\n const responseValue = questionResponseValue(response)\n\n return response.outcome === 'answered'\n ? QuestionAnswered.make({ response: responseValue })\n : QuestionCancelled.make({ response: responseValue })\n }\n case 'ToolApprovalResponse': {\n const responseValue = toolApprovalResponseValue(response)\n\n return response.decision === 'approved'\n ? ToolApprovalGranted.make({ toolCallId: response.toolCallId, response: responseValue })\n : ToolApprovalDenied.make({\n toolCallId: response.toolCallId,\n reason: response.reason ?? 'Denied by user',\n response: responseValue\n })\n }\n }\n}\n\nexport const AgentEvent = Schema.Union([\n AgentStart,\n AgentError,\n AgentEnd,\n AgentAwaitingInput,\n UsageUpdate,\n AgentRetry,\n CompactionStart,\n CompactionEnd,\n TurnStart,\n TurnEnd,\n LLMStreamStart,\n LLMTextDelta,\n LLMReasoningDelta,\n ToolInputStart,\n ToolInputDelta,\n ToolInputEnd,\n LLMStreamEnd,\n AssistantMessageEvent,\n ToolApprovalRequested,\n ToolApprovalGranted,\n ToolApprovalDenied,\n QuestionRequested,\n QuestionAnswered,\n QuestionCancelled,\n ToolExecutionStarted,\n ToolExecutionCompleted,\n ToolExecutionError,\n ProviderToolResult,\n SubagentStarted,\n SubagentCompleted\n])\nexport type AgentEvent = typeof AgentEvent.Type\n"],"mappings":"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"}
@@ -3,12 +3,12 @@ import { AttachmentContentPart, AttachmentSource, AttachmentSourceResolver, Audi
3
3
  import { ErrorToolResultInput, HitlRequest, HitlResponse, HitlResponseSource, PlainHitlResponse, PlainQuestionAnswer, PlainQuestionResponse, PlainToolApprovalResponse, QuestionAnswer, QuestionOption, QuestionPrompt, QuestionRequest, QuestionResponse, QuestionResponseOutcome, QuestionResponseStructuredContent, QuestionToolParams, ToolApprovalDecision, ToolApprovalMode, ToolApprovalPolicy, ToolApprovalRequest, ToolApprovalResponse, ToolCall, ToolDef, ToolResult, formatQuestionResponseContent, makeErrorToolResult, plainHitlResponse, plainQuestionAnswer, plainQuestionResponse, plainToolApprovalResponse, questionResponseStructuredContent } from "./tool.mjs";
4
4
  import { AgentMessage, AssistantAgentMessage, AssistantPart, AssistantReasoningPart, AssistantTextPart, HostToolCallPart, MessageAnnotations, MessageAuthor, MessageEnvelope, ProviderToolCallPart, ProviderToolResultPart, ToolResultMessage, UserMessage, assistantContent, assistantHostToolCalls, assistantReasoningText, messageContextText, prependMessageContextToContent } from "./message.mjs";
5
5
  import { AgentInputUsage, AgentOutputUsage, AgentUsage, addAgentUsage, zeroAgentUsage } from "./usage.mjs";
6
- import { AgentAwaitingInput, AgentEnd, AgentError, AgentErrorCode, AgentEvent, AgentRetry, AgentStart, AssistantMessageEvent, CompactionEnd, CompactionStart, LLMReasoningDelta, LLMStreamEnd, LLMStreamStart, LLMTextDelta, ProviderToolResult, QuestionAnswered, QuestionCancelled, QuestionRequested, SubagentCompleted, SubagentStarted, SubagentStatus, ToolApprovalDenied, ToolApprovalGranted, ToolApprovalRequested, ToolExecutionCompleted, ToolExecutionError, ToolExecutionStarted, ToolInputDelta, ToolInputEnd, ToolInputStart, TurnEnd, TurnStart, UsageUpdate, hitlResponseEvent, makeSubagentRunId } from "./event.mjs";
6
+ import { AgentAwaitingInput, AgentEnd, AgentError, AgentErrorCode, AgentEvent, AgentRetry, AgentStart, AssistantMessageEvent, CompactionEnd, CompactionStart, LLMReasoningDelta, LLMStreamEnd, LLMStreamStart, LLMTextDelta, ProviderErrorInfo, ProviderFailureKind, ProviderToolResult, QuestionAnswered, QuestionCancelled, QuestionRequested, SubagentCompleted, SubagentStarted, SubagentStatus, ToolApprovalDenied, ToolApprovalGranted, ToolApprovalRequested, ToolExecutionCompleted, ToolExecutionError, ToolExecutionStarted, ToolInputDelta, ToolInputEnd, ToolInputStart, TurnEnd, TurnStart, UsageUpdate, hitlResponseEvent, makeSubagentRunId } from "./event.mjs";
7
7
  import { AgentReasoningEffort } from "./reasoning.mjs";
8
8
  import { AgentWebSocketClientMessage, AgentWebSocketServerMessage, QuestionResponseInput, SessionSnapshot, ToolApprovalResponseInput, UserInput } from "./session.mjs";
9
9
 
10
10
  //#region src/protocol/index.d.ts
11
11
  type MessageId = string;
12
12
  //#endregion
13
- export { AgentAwaitingInput, AgentContentCapabilities, AgentEnd, AgentError, AgentErrorCode, AgentEvent, AgentInputUsage, AgentMessage, AgentModelCapabilities, AgentOutputUsage, AgentReasoningEffort, AgentRetry, AgentStart, AgentUsage, AgentWebSocketClientMessage, AgentWebSocketServerMessage, AssistantAgentMessage, AssistantMessageEvent, AssistantPart, AssistantReasoningPart, AssistantTextPart, type AttachmentContentPart, AttachmentSource, type AttachmentSourceResolver, AudioPart, CompactionEnd, CompactionStart, Content, ContentPart, DocumentPart, type ErrorToolResultInput, HitlRequest, HitlResponse, HitlResponseSource, HostToolCallPart, ImagePart, InlineBase64AttachmentSource, LLMReasoningDelta, LLMStreamEnd, LLMStreamStart, LLMTextDelta, MessageAnnotations, MessageAuthor, type MessageEnvelope, MessageId, type PlainHitlResponse, type PlainQuestionAnswer, type PlainQuestionResponse, type PlainToolApprovalResponse, ProviderToolCallPart, ProviderToolResult, ProviderToolResultPart, QuestionAnswer, QuestionAnswered, QuestionCancelled, QuestionOption, QuestionPrompt, QuestionRequest, QuestionRequested, QuestionResponse, QuestionResponseInput, QuestionResponseOutcome, type QuestionResponseStructuredContent, QuestionToolParams, RefAttachmentSource, SessionSnapshot, SubagentCompleted, SubagentStarted, SubagentStatus, TextPart, ToolApprovalDecision, ToolApprovalDenied, ToolApprovalGranted, ToolApprovalMode, ToolApprovalPolicy, ToolApprovalRequest, ToolApprovalRequested, ToolApprovalResponse, ToolApprovalResponseInput, ToolCall, ToolDef, ToolExecutionCompleted, ToolExecutionError, ToolExecutionStarted, ToolInputDelta, ToolInputEnd, ToolInputStart, ToolResult, ToolResultMessage, TurnEnd, TurnStart, UrlAttachmentSource, UsageUpdate, UserInput, UserMessage, addAgentUsage, appendTextToContent, assistantContent, assistantHostToolCalls, assistantReasoningText, attachmentSourceBase64, attachmentSourceDataUrl, attachmentSourcePreview, attachmentSourceText, contentPartPreview, contentPartText, contentParts, contentPreview, contentText, documentPartFromText, formatQuestionResponseContent, hitlResponseEvent, inferTextDocumentMimeType, inlineBase64AttachmentSource, inlineBase64Source, isContentEmpty, isTextDocumentMimeType, makeErrorToolResult, makeSubagentRunId, messageContextText, plainHitlResponse, plainQuestionAnswer, plainQuestionResponse, plainToolApprovalResponse, prependMessageContextToContent, questionResponseStructuredContent, refAttachmentSource, resolveContentAttachmentSources, textDocumentMimeTypeFromFilename, textImageDocumentModelCapabilities, textImageModelCapabilities, textOnlyModelCapabilities, textToBase64Utf8, urlAttachmentSource, zeroAgentUsage };
13
+ export { AgentAwaitingInput, AgentContentCapabilities, AgentEnd, AgentError, AgentErrorCode, AgentEvent, AgentInputUsage, AgentMessage, AgentModelCapabilities, AgentOutputUsage, AgentReasoningEffort, AgentRetry, AgentStart, AgentUsage, AgentWebSocketClientMessage, AgentWebSocketServerMessage, AssistantAgentMessage, AssistantMessageEvent, AssistantPart, AssistantReasoningPart, AssistantTextPart, type AttachmentContentPart, AttachmentSource, type AttachmentSourceResolver, AudioPart, CompactionEnd, CompactionStart, Content, ContentPart, DocumentPart, type ErrorToolResultInput, HitlRequest, HitlResponse, HitlResponseSource, HostToolCallPart, ImagePart, InlineBase64AttachmentSource, LLMReasoningDelta, LLMStreamEnd, LLMStreamStart, LLMTextDelta, MessageAnnotations, MessageAuthor, type MessageEnvelope, MessageId, type PlainHitlResponse, type PlainQuestionAnswer, type PlainQuestionResponse, type PlainToolApprovalResponse, ProviderErrorInfo, ProviderFailureKind, ProviderToolCallPart, ProviderToolResult, ProviderToolResultPart, QuestionAnswer, QuestionAnswered, QuestionCancelled, QuestionOption, QuestionPrompt, QuestionRequest, QuestionRequested, QuestionResponse, QuestionResponseInput, QuestionResponseOutcome, type QuestionResponseStructuredContent, QuestionToolParams, RefAttachmentSource, SessionSnapshot, SubagentCompleted, SubagentStarted, SubagentStatus, TextPart, ToolApprovalDecision, ToolApprovalDenied, ToolApprovalGranted, ToolApprovalMode, ToolApprovalPolicy, ToolApprovalRequest, ToolApprovalRequested, ToolApprovalResponse, ToolApprovalResponseInput, ToolCall, ToolDef, ToolExecutionCompleted, ToolExecutionError, ToolExecutionStarted, ToolInputDelta, ToolInputEnd, ToolInputStart, ToolResult, ToolResultMessage, TurnEnd, TurnStart, UrlAttachmentSource, UsageUpdate, UserInput, UserMessage, addAgentUsage, appendTextToContent, assistantContent, assistantHostToolCalls, assistantReasoningText, attachmentSourceBase64, attachmentSourceDataUrl, attachmentSourcePreview, attachmentSourceText, contentPartPreview, contentPartText, contentParts, contentPreview, contentText, documentPartFromText, formatQuestionResponseContent, hitlResponseEvent, inferTextDocumentMimeType, inlineBase64AttachmentSource, inlineBase64Source, isContentEmpty, isTextDocumentMimeType, makeErrorToolResult, makeSubagentRunId, messageContextText, plainHitlResponse, plainQuestionAnswer, plainQuestionResponse, plainToolApprovalResponse, prependMessageContextToContent, questionResponseStructuredContent, refAttachmentSource, resolveContentAttachmentSources, textDocumentMimeTypeFromFilename, textImageDocumentModelCapabilities, textImageModelCapabilities, textOnlyModelCapabilities, textToBase64Utf8, urlAttachmentSource, zeroAgentUsage };
14
14
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/protocol/index.ts"],"mappings":";;;;;;;;;;KAuJY,SAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/protocol/index.ts"],"mappings":";;;;;;;;;;KAyJY,SAAA"}
@@ -3,7 +3,7 @@ import { AttachmentSource, AudioPart, Content, ContentPart, DocumentPart, ImageP
3
3
  import { HitlRequest, HitlResponse, HitlResponseSource, QuestionAnswer, QuestionOption, QuestionPrompt, QuestionRequest, QuestionResponse, QuestionResponseOutcome, QuestionToolParams, ToolApprovalDecision, ToolApprovalMode, ToolApprovalPolicy, ToolApprovalRequest, ToolApprovalResponse, ToolCall, ToolDef, ToolResult, formatQuestionResponseContent, makeErrorToolResult, plainHitlResponse, plainQuestionAnswer, plainQuestionResponse, plainToolApprovalResponse, questionResponseStructuredContent } from "./tool.mjs";
4
4
  import { AgentMessage, AssistantAgentMessage, AssistantPart, AssistantReasoningPart, AssistantTextPart, HostToolCallPart, MessageAnnotations, MessageAuthor, ProviderToolCallPart, ProviderToolResultPart, ToolResultMessage, UserMessage, assistantContent, assistantHostToolCalls, assistantReasoningText, messageContextText, prependMessageContextToContent } from "./message.mjs";
5
5
  import { AgentInputUsage, AgentOutputUsage, AgentUsage, addAgentUsage, zeroAgentUsage } from "./usage.mjs";
6
- import { AgentAwaitingInput, AgentEnd, AgentError, AgentErrorCode, AgentEvent, AgentRetry, AgentStart, AssistantMessageEvent, CompactionEnd, CompactionStart, LLMReasoningDelta, LLMStreamEnd, LLMStreamStart, LLMTextDelta, ProviderToolResult, QuestionAnswered, QuestionCancelled, QuestionRequested, SubagentCompleted, SubagentStarted, SubagentStatus, ToolApprovalDenied, ToolApprovalGranted, ToolApprovalRequested, ToolExecutionCompleted, ToolExecutionError, ToolExecutionStarted, ToolInputDelta, ToolInputEnd, ToolInputStart, TurnEnd, TurnStart, UsageUpdate, hitlResponseEvent, makeSubagentRunId } from "./event.mjs";
6
+ import { AgentAwaitingInput, AgentEnd, AgentError, AgentErrorCode, AgentEvent, AgentRetry, AgentStart, AssistantMessageEvent, CompactionEnd, CompactionStart, LLMReasoningDelta, LLMStreamEnd, LLMStreamStart, LLMTextDelta, ProviderErrorInfo, ProviderFailureKind, ProviderToolResult, QuestionAnswered, QuestionCancelled, QuestionRequested, SubagentCompleted, SubagentStarted, SubagentStatus, ToolApprovalDenied, ToolApprovalGranted, ToolApprovalRequested, ToolExecutionCompleted, ToolExecutionError, ToolExecutionStarted, ToolInputDelta, ToolInputEnd, ToolInputStart, TurnEnd, TurnStart, UsageUpdate, hitlResponseEvent, makeSubagentRunId } from "./event.mjs";
7
7
  import { AgentReasoningEffort } from "./reasoning.mjs";
8
8
  import { AgentWebSocketClientMessage, AgentWebSocketServerMessage, QuestionResponseInput, SessionSnapshot, ToolApprovalResponseInput, UserInput } from "./session.mjs";
9
- export { AgentAwaitingInput, AgentContentCapabilities, AgentEnd, AgentError, AgentErrorCode, AgentEvent, AgentInputUsage, AgentMessage, AgentModelCapabilities, AgentOutputUsage, AgentReasoningEffort, AgentRetry, AgentStart, AgentUsage, AgentWebSocketClientMessage, AgentWebSocketServerMessage, AssistantAgentMessage, AssistantMessageEvent, AssistantPart, AssistantReasoningPart, AssistantTextPart, AttachmentSource, AudioPart, CompactionEnd, CompactionStart, Content, ContentPart, DocumentPart, HitlRequest, HitlResponse, HitlResponseSource, HostToolCallPart, ImagePart, InlineBase64AttachmentSource, LLMReasoningDelta, LLMStreamEnd, LLMStreamStart, LLMTextDelta, MessageAnnotations, MessageAuthor, ProviderToolCallPart, ProviderToolResult, ProviderToolResultPart, QuestionAnswer, QuestionAnswered, QuestionCancelled, QuestionOption, QuestionPrompt, QuestionRequest, QuestionRequested, QuestionResponse, QuestionResponseInput, QuestionResponseOutcome, QuestionToolParams, RefAttachmentSource, SessionSnapshot, SubagentCompleted, SubagentStarted, SubagentStatus, TextPart, ToolApprovalDecision, ToolApprovalDenied, ToolApprovalGranted, ToolApprovalMode, ToolApprovalPolicy, ToolApprovalRequest, ToolApprovalRequested, ToolApprovalResponse, ToolApprovalResponseInput, ToolCall, ToolDef, ToolExecutionCompleted, ToolExecutionError, ToolExecutionStarted, ToolInputDelta, ToolInputEnd, ToolInputStart, ToolResult, ToolResultMessage, TurnEnd, TurnStart, UrlAttachmentSource, UsageUpdate, UserInput, UserMessage, addAgentUsage, appendTextToContent, assistantContent, assistantHostToolCalls, assistantReasoningText, attachmentSourceBase64, attachmentSourceDataUrl, attachmentSourcePreview, attachmentSourceText, contentPartPreview, contentPartText, contentParts, contentPreview, contentText, documentPartFromText, formatQuestionResponseContent, hitlResponseEvent, inferTextDocumentMimeType, inlineBase64AttachmentSource, inlineBase64Source, isContentEmpty, isTextDocumentMimeType, makeErrorToolResult, makeSubagentRunId, messageContextText, plainHitlResponse, plainQuestionAnswer, plainQuestionResponse, plainToolApprovalResponse, prependMessageContextToContent, questionResponseStructuredContent, refAttachmentSource, resolveContentAttachmentSources, textDocumentMimeTypeFromFilename, textImageDocumentModelCapabilities, textImageModelCapabilities, textOnlyModelCapabilities, textToBase64Utf8, urlAttachmentSource, zeroAgentUsage };
9
+ export { AgentAwaitingInput, AgentContentCapabilities, AgentEnd, AgentError, AgentErrorCode, AgentEvent, AgentInputUsage, AgentMessage, AgentModelCapabilities, AgentOutputUsage, AgentReasoningEffort, AgentRetry, AgentStart, AgentUsage, AgentWebSocketClientMessage, AgentWebSocketServerMessage, AssistantAgentMessage, AssistantMessageEvent, AssistantPart, AssistantReasoningPart, AssistantTextPart, AttachmentSource, AudioPart, CompactionEnd, CompactionStart, Content, ContentPart, DocumentPart, HitlRequest, HitlResponse, HitlResponseSource, HostToolCallPart, ImagePart, InlineBase64AttachmentSource, LLMReasoningDelta, LLMStreamEnd, LLMStreamStart, LLMTextDelta, MessageAnnotations, MessageAuthor, ProviderErrorInfo, ProviderFailureKind, ProviderToolCallPart, ProviderToolResult, ProviderToolResultPart, QuestionAnswer, QuestionAnswered, QuestionCancelled, QuestionOption, QuestionPrompt, QuestionRequest, QuestionRequested, QuestionResponse, QuestionResponseInput, QuestionResponseOutcome, QuestionToolParams, RefAttachmentSource, SessionSnapshot, SubagentCompleted, SubagentStarted, SubagentStatus, TextPart, ToolApprovalDecision, ToolApprovalDenied, ToolApprovalGranted, ToolApprovalMode, ToolApprovalPolicy, ToolApprovalRequest, ToolApprovalRequested, ToolApprovalResponse, ToolApprovalResponseInput, ToolCall, ToolDef, ToolExecutionCompleted, ToolExecutionError, ToolExecutionStarted, ToolInputDelta, ToolInputEnd, ToolInputStart, ToolResult, ToolResultMessage, TurnEnd, TurnStart, UrlAttachmentSource, UsageUpdate, UserInput, UserMessage, addAgentUsage, appendTextToContent, assistantContent, assistantHostToolCalls, assistantReasoningText, attachmentSourceBase64, attachmentSourceDataUrl, attachmentSourcePreview, attachmentSourceText, contentPartPreview, contentPartText, contentParts, contentPreview, contentText, documentPartFromText, formatQuestionResponseContent, hitlResponseEvent, inferTextDocumentMimeType, inlineBase64AttachmentSource, inlineBase64Source, isContentEmpty, isTextDocumentMimeType, makeErrorToolResult, makeSubagentRunId, messageContextText, plainHitlResponse, plainQuestionAnswer, plainQuestionResponse, plainToolApprovalResponse, prependMessageContextToContent, questionResponseStructuredContent, refAttachmentSource, resolveContentAttachmentSources, textDocumentMimeTypeFromFilename, textImageDocumentModelCapabilities, textImageModelCapabilities, textOnlyModelCapabilities, textToBase64Utf8, urlAttachmentSource, zeroAgentUsage };
@@ -1 +1 @@
1
- {"version":3,"file":"claude-provider.d.mts","names":[],"sources":["../../../src/providers/anthropic/claude-provider.ts"],"mappings":";;;;;;KA4CY,6BAAA;EAAA,SACD,KAAA,EAAO,gBAAA;EAAA,SACP,WAAA;EAAA,SACA,SAAA;EAAA,SACA,YAAA,GAAe,QAAA,CAAS,MAAA;AAAA;AAAA,KAG9B,kBAAA;EAAA,SACM,IAAA;EAAA,SACA,IAAI;AAAA;AAAA,KAGV,oBAAA,GAAuB,kBAAkB;AAAA,KAEzC,mBAAA;EAAA,SACM,IAAA;EAAA,SACA,MAAA;IAAA,SACE,IAAA;IAAA,SACA,UAAA;IAAA,SACA,IAAA;EAAA;AAAA;AAAA,KAIR,sBAAA;EAAA,SACM,IAAA;EAAA,SACA,MAAA;IAAA,SACE,IAAA;IAAA,SACA,UAAA;IAAA,SACA,IAAA;EAAA;EAAA,SAEF,KAAA;AAAA;AAAA,KAGN,qBAAA;EAAA,SACM,IAAA;EAAA,SACA,EAAA;EAAA,SACA,IAAA;EAAA,SACA,KAAA;AAAA;AAAA,KAGN,wBAAA;EAAA,SACM,IAAA;EAAA,SACA,WAAA;EAAA,SACA,OAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGN,kBAAA,GAAqB,kBAAA,GAAqB,mBAAA,GAAsB,sBAAA,GAAyB,wBAAA;AAAA,KACzF,uBAAA,GAA0B,kBAAA,GAAqB,qBAAqB;AAAA,KAEpE,gBAAA;EAAA,SACU,IAAA;EAAA,SAAuB,OAAA,WAAkB,aAAA,CAAc,kBAAA;AAAA;EAAA,SACvD,IAAA;EAAA,SAA4B,OAAA,EAAS,aAAA,CAAc,uBAAA;AAAA;AAAA,KAS7D,aAAA;EAAA,SACM,IAAA;EAAA,SACA,WAAA;EAAA,SACA,YAAA;AAAA;AAAA,KAGN,oBAAA;EAAA,SACM,KAAA;EAAA,SACA,MAAA,EAAQ,aAAA,CAAc,oBAAA;EAAA,SACtB,QAAA,EAAU,aAAA,CAAc,gBAAA;EAAA,SACxB,UAAA;EAAA,SACA,MAAA;EAAA,SACA,KAAA,GAAQ,aAAA,CAAc,aAAA;AAAA;AAAA,cAmqBpB,4BAAA,GACX,OAAA,EAAS,UAAA,EACT,MAAA;EAAA,SAAoB,SAAA;EAAA,SAA6B,MAAA;AAAA,MAChD,MAAA,CAAO,MAAA,CAAO,oBAAA,EAAsB,QAAA;AAAA,cA+d1B,6BAAA,GACX,QAAA,EAAU,kBAAA,CAAmB,kBAAA,KAC5B,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU,QAAA;AAAA,cA4Ed,gCAAA,GAAoC,MAAA,EAAQ,6BAAA,KAA6B,KAAA,CAAA,KAAA,CAAA,WAAA,SAAA,UAAA,CAAA,UAAA"}
1
+ {"version":3,"file":"claude-provider.d.mts","names":[],"sources":["../../../src/providers/anthropic/claude-provider.ts"],"mappings":";;;;;;KAmDY,6BAAA;EAAA,SACD,KAAA,EAAO,gBAAA;EAAA,SACP,WAAA;EAAA,SACA,SAAA;EAAA,SACA,YAAA,GAAe,QAAA,CAAS,MAAA;AAAA;AAAA,KAG9B,kBAAA;EAAA,SACM,IAAA;EAAA,SACA,IAAI;AAAA;AAAA,KAGV,oBAAA,GAAuB,kBAAkB;AAAA,KAEzC,mBAAA;EAAA,SACM,IAAA;EAAA,SACA,MAAA;IAAA,SACE,IAAA;IAAA,SACA,UAAA;IAAA,SACA,IAAA;EAAA;AAAA;AAAA,KAIR,sBAAA;EAAA,SACM,IAAA;EAAA,SACA,MAAA;IAAA,SACE,IAAA;IAAA,SACA,UAAA;IAAA,SACA,IAAA;EAAA;EAAA,SAEF,KAAA;AAAA;AAAA,KAGN,qBAAA;EAAA,SACM,IAAA;EAAA,SACA,EAAA;EAAA,SACA,IAAA;EAAA,SACA,KAAA;AAAA;AAAA,KAGN,wBAAA;EAAA,SACM,IAAA;EAAA,SACA,WAAA;EAAA,SACA,OAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGN,kBAAA,GAAqB,kBAAA,GAAqB,mBAAA,GAAsB,sBAAA,GAAyB,wBAAA;AAAA,KACzF,uBAAA,GAA0B,kBAAA,GAAqB,qBAAqB;AAAA,KAEpE,gBAAA;EAAA,SACU,IAAA;EAAA,SAAuB,OAAA,WAAkB,aAAA,CAAc,kBAAA;AAAA;EAAA,SACvD,IAAA;EAAA,SAA4B,OAAA,EAAS,aAAA,CAAc,uBAAA;AAAA;AAAA,KAS7D,aAAA;EAAA,SACM,IAAA;EAAA,SACA,WAAA;EAAA,SACA,YAAA;AAAA;AAAA,KAGN,oBAAA;EAAA,SACM,KAAA;EAAA,SACA,MAAA,EAAQ,aAAA,CAAc,oBAAA;EAAA,SACtB,QAAA,EAAU,aAAA,CAAc,gBAAA;EAAA,SACxB,UAAA;EAAA,SACA,MAAA;EAAA,SACA,KAAA,GAAQ,aAAA,CAAc,aAAA;AAAA;AAAA,cAmqBpB,4BAAA,GACX,OAAA,EAAS,UAAA,EACT,MAAA;EAAA,SAAoB,SAAA;EAAA,SAA6B,MAAA;AAAA,MAChD,MAAA,CAAO,MAAA,CAAO,oBAAA,EAAsB,QAAA;AAAA,cA6e1B,6BAAA,GACX,QAAA,EAAU,kBAAA,CAAmB,kBAAA,KAC5B,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU,QAAA;AAAA,cAoFd,gCAAA,GAAoC,MAAA,EAAQ,6BAAA,KAA6B,KAAA,CAAA,KAAA,CAAA,WAAA,SAAA,UAAA,CAAA,UAAA"}