@mozaik-ai/core 3.11.0 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/domain/model-context/model-context.ts","../src/domain/model-context/context-item/context-item.ts","../src/domain/model-context/context-item/item-content/item-content.ts","../src/domain/model-context/context-item/item-content/input-text.ts","../src/domain/model-context/context-item/client-item/user-message.ts","../src/domain/model-context/context-item/client-item/developer-message.ts","../src/domain/model-context/context-item/item-content/output-text.ts","../src/domain/model-context/context-item/model-item/model-message.ts","../src/domain/model-context/context-item/model-item/function-call.ts","../src/domain/model-context/context-item/model-item/reasoning.ts","../src/domain/model-context/context-item/client-item/function-call-output.ts","../src/infrastructure/providers/openai/reasoning-effort.ts","../src/infrastructure/providers/openai/models/gpt-5-4-nano.ts","../src/infrastructure/providers/openai/models/gpt-5-4.ts","../src/infrastructure/providers/openai/models/gpt-5-4-mini.ts","../src/domain/generative-model/token-usage.ts","../src/infrastructure/repository/in-memory-model-context-repository.ts","../src/domain/model-context/context-item/client-item/system-message.ts","../src/domain/agentic-environment/participants/participant.ts","../src/domain/agentic-environment/agentic-environment.ts","../src/domain/agentic-environment/participants/agent.ts","../src/domain/model-context/semantic-event/semantic-event.ts","../src/application/participants/agent.ts","../src/domain/agentic-environment/participants/human.ts","../src/application/participants/human.ts","../src/domain/generative-model/inference-request.ts","../src/application/runners/openai-inference-runner.ts","../src/application/runners/function-call-runner.ts","../src/infrastructure/providers/openai/models/gpt-5-5.ts","../src/domain/agentic-environment/participants/observer.ts","../src/application/participants/observer.ts","../src/domain/generative-model/inference-response.ts","../src/infrastructure/providers/openai/runtime/openai-responses.ts","../src/infrastructure/providers/anthropic/runtime/anthropic-messages.ts","../src/infrastructure/providers/anthropic/reasoning-effort.ts","../src/infrastructure/providers/anthropic/models/claude-4-7-opus.ts","../src/infrastructure/providers/anthropic/models/claude-4-6-sonnet.ts","../src/infrastructure/providers/anthropic/models/claude-4-5-haiku.ts"],"sourcesContent":["import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { UserMessageItem } from \"@domain/model-context/context-item/client-item/user-message\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { ModelContextRepository } from \"@domain/model-context/model-context-repository\"\nimport { Gpt54Nano } from \"@infra/providers/openai/models/gpt-5-4-nano\"\nimport { Gpt54 } from \"@infra/providers/openai/models/gpt-5-4\"\nimport { Gpt54Mini } from \"@infra/providers/openai/models/gpt-5-4-mini\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { InMemoryModelContextRepository } from \"@infra/repository/in-memory-model-context-repository\"\nimport { SystemMessageItem } from \"@domain/model-context/context-item/client-item/system-message\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { BaseAgent } from \"@app/participants/agent\"\nimport { BaseHuman } from \"@app/participants/human\"\nimport { FunctionCallRunner } from \"@domain/agentic-environment/runners/function-call-runner\"\nimport { InferenceRunner } from \"@domain/agentic-environment/runners/inference-runner\"\nimport { OpenAIInferenceRunner } from \"@app/runners/openai-inference-runner\"\nimport { DefaultFunctionCallRunner } from \"@app/runners/function-call-runner\"\nimport { Gpt55 } from \"@infra/providers/openai/models/gpt-5-5\"\nimport { BaseObserver } from \"@app/participants/observer\"\nimport { Human } from \"@domain/agentic-environment/participants/human\"\nimport { Agent } from \"@domain/agentic-environment/participants/agent\"\nimport { Observer } from \"@domain/agentic-environment/participants/observer\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { ModelRuntime } from \"@domain/generative-model/runtime/model-runtime\"\nimport { StreamingRuntime } from \"@domain/generative-model/runtime/streaming-runtime\"\nimport { InferenceRequest } from \"@domain/generative-model/inference-request\"\nimport { InferenceResponse } from \"@domain/generative-model/inference-response\"\nimport { OpenAIResponses } from \"@infra/providers/openai/runtime/openai-responses\"\nimport { AnthropicMessages } from \"@infra/providers/anthropic/runtime/anthropic-messages\"\nimport { ClaudeOpus47 } from \"@infra/providers/anthropic/models/claude-4-7-opus\"\nimport { ClaudeSonnet46 } from \"@infra/providers/anthropic/models/claude-4-6-sonnet\"\nimport { ClaudeHaiku45 } from \"@infra/providers/anthropic/models/claude-4-5-haiku\"\n\nexport {\n\tModelContext,\n\tModelContextRepository,\n\tInMemoryModelContextRepository,\n\tContextItem,\n\tSemanticEvent,\n\tUserMessageItem,\n\tDeveloperMessageItem,\n\tSystemMessageItem,\n\tModelMessageItem,\n\tFunctionCallItem,\n\tFunctionCallOutputItem,\n\tReasoningItem,\n\tGenerativeModel,\n\tGpt54,\n\tGpt54Mini,\n\tGpt54Nano,\n\tGpt55,\n\tTokenUsage,\n\tInputTokenDetails,\n\tOutputTokenDetails,\n\tTool,\n\tFunctionCallRunner,\n\tInferenceRunner,\n\tDefaultFunctionCallRunner,\n\tAgenticEnvironment,\n\tParticipant,\n\tHuman,\n\tAgent,\n\tObserver,\n\tBaseAgent,\n\tBaseHuman,\n\tBaseObserver,\n\tOpenAIInferenceRunner,\n\tModelRuntime,\n\tStreamingRuntime,\n\tInferenceRequest,\n\tInferenceResponse,\n\tOpenAIResponses,\n\tAnthropicMessages,\n\tClaudeOpus47,\n\tClaudeSonnet46,\n\tClaudeHaiku45,\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class ModelContext {\n\treadonly id: string\n\treadonly projectId: string\n\treadonly items: ContextItem[]\n\n\tconstructor(id: string, projectId: string, items: ContextItem[]) {\n\t\tthis.projectId = projectId\n\t\tthis.id = id\n\t\tthis.items = items\n\t}\n\n\taddContextItem(item: ContextItem): ModelContext {\n\t\tthis.items.push(item)\n\t\treturn this\n\t}\n\n\tapplyModelOutput(items: ContextItem[]): ModelContext {\n\t\tfor (const item of items) {\n\t\t\tconst itemType = item.getType()\n\t\t\tif (itemType !== \"function_call\" && itemType !== \"message\" && itemType !== \"reasoning\") {\n\t\t\t\tthrow new Error(`Invalid item type: ${itemType}`)\n\t\t\t}\n\t\t}\n\t\tthis.items.push(...items)\n\t\treturn this\n\t}\n\n\tgetItems(): ContextItem[] {\n\t\treturn this.items\n\t}\n\n\tgetLastItem(): ContextItem {\n\t\tif (this.items.length === 0) {\n\t\t\tthrow new Error(\"No items in context\")\n\t\t}\n\t\treturn this.items[this.items.length - 1]\n\t}\n\n\tstatic create(projectId: string): ModelContext {\n\t\tconst id = crypto.randomUUID()\n\t\treturn new ModelContext(id, projectId, [])\n\t}\n\n\tstatic rehydrate(data: { id: string; projectId: string; items: ContextItem[] }): ModelContext {\n\t\treturn new ModelContext(data.id, data.projectId, data.items)\n\t}\n\n\ttoJSON(): any {\n\t\treturn this.items.map((item) => item.toJSON())\n\t}\n}\n","export abstract class ContextItem {\n\tabstract readonly type: string\n\n\tgetType(): string {\n\t\treturn this.type\n\t}\n\n\tabstract toJSON(): any\n}\n","export abstract class ItemContent {\n\tabstract readonly type: string\n}\n","import { ItemContent } from \"@domain/model-context/context-item/item-content/item-content\"\n\nexport class InputText extends ItemContent {\n\treadonly type = \"input_text\"\n\n\tprivate constructor(public readonly text: string) {\n\t\tsuper()\n\t}\n\n\tstatic create(text: string): InputText {\n\t\treturn new InputText(text)\n\t}\n\n\tstatic rehydrate(data: { text: string }): InputText {\n\t\treturn new InputText(data.text)\n\t}\n\n\ttoJSON(): any[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttype: this.type,\n\t\t\t\ttext: this.text,\n\t\t\t},\n\t\t]\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\n\nexport class UserMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"user\"\n\treadonly content: InputText\n\n\tprivate constructor(content: InputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\tstatic create(text: string): UserMessageItem {\n\t\tconst content = InputText.create(text)\n\t\treturn new UserMessageItem(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): UserMessageItem {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new UserMessageItem(content)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n}\n","import { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class DeveloperMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"developer\"\n\treadonly content: InputText\n\n\tprivate constructor(content: InputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n\n\tstatic create(text: string): DeveloperMessageItem {\n\t\tconst content = InputText.create(text)\n\t\treturn new DeveloperMessageItem(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): DeveloperMessageItem {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new DeveloperMessageItem(content)\n\t}\n}\n","import { ItemContent } from \"@domain/model-context/context-item/item-content/item-content\"\n\nexport class OutputText extends ItemContent {\n\treadonly type = \"output_text\"\n\n\tprivate constructor(public readonly text: string) {\n\t\tsuper()\n\t}\n\n\tstatic rehydrate(data: { text: string }): OutputText {\n\t\treturn new OutputText(data.text)\n\t}\n\n\ttoJSON(): any[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttype: this.type,\n\t\t\t\ttext: this.text,\n\t\t\t},\n\t\t]\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { OutputText } from \"@domain/model-context/context-item/item-content/output-text\"\n\nexport class ModelMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"assistant\"\n\treadonly content: OutputText\n\n\tprivate constructor(content: OutputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\tstatic rehydrate(data: { text: string }): ModelMessageItem {\n\t\tconst content = OutputText.rehydrate(data)\n\t\treturn new ModelMessageItem(content)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class FunctionCallItem extends ContextItem {\n\treadonly type = \"function_call\"\n\treadonly callId: string\n\treadonly name: string\n\treadonly args: string\n\n\tprivate constructor(callId: string, name: string, args: string) {\n\t\tsuper()\n\t\tthis.callId = callId\n\t\tthis.name = name\n\t\tthis.args = args\n\t}\n\n\tstatic rehydrate(data: { callId: string; name: string; args: string }): FunctionCallItem {\n\t\treturn new FunctionCallItem(data.callId, data.name, data.args)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcall_id: this.callId,\n\t\t\tname: this.name,\n\t\t\targuments: this.args,\n\t\t}\n\t}\n}\n","import { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { SummaryText } from \"@domain/model-context/context-item/item-content/summary-text\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class ReasoningItem extends ContextItem {\n\treadonly type = \"reasoning\"\n\treadonly content: InputText | undefined\n\treadonly encryptedContent: string | undefined\n\treadonly summary: SummaryText[]\n\n\tprivate constructor(\n\t\tcontent: InputText | undefined,\n\t\tencryptedContent?: string | undefined,\n\t\tsummary: SummaryText[] = [],\n\t) {\n\t\tsuper()\n\t\tthis.content = content\n\t\tthis.encryptedContent = encryptedContent\n\t\tthis.summary = summary\n\t}\n\n\tstatic rehydrate(data: {\n\t\tcontent: InputText | undefined\n\t\tencryptedContent: string | undefined\n\t\tsummary: SummaryText[]\n\t}): ReasoningItem {\n\t\treturn new ReasoningItem(data.content, data.encryptedContent, data.summary)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcontent: this.content?.toJSON(),\n\t\t\tencryptedContent: this.encryptedContent,\n\t\t\tsummary: this.summary.map((s) => s.toJSON()),\n\t\t}\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\n\nexport class FunctionCallOutputItem extends ContextItem {\n\treadonly type = \"function_call_output\"\n\treadonly callId: string\n\treadonly output: InputText\n\n\tprivate constructor(callId: string, output: InputText) {\n\t\tsuper()\n\t\tthis.callId = callId\n\t\tthis.output = output\n\t}\n\n\tstatic create(callId: string, output: string): FunctionCallOutputItem {\n\t\tconst outputText = InputText.create(output)\n\t\treturn new FunctionCallOutputItem(callId, outputText)\n\t}\n\n\tstatic rehydrate(data: { callId: string; output: InputText }): FunctionCallOutputItem {\n\t\treturn new FunctionCallOutputItem(data.callId, data.output)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcall_id: this.callId,\n\t\t\toutput: this.output.toJSON(),\n\t\t}\n\t}\n}\n","import { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\n\nexport type OpenAIReasoningEffortType = \"xhigh\" | \"high\" | \"medium\" | \"low\" | \"none\"\n\nexport class OpenAIReasoningEffort implements ReasoningEffort<OpenAIReasoningEffortType> {\n\treasoningEffort: OpenAIReasoningEffortType\n\n\tconstructor(reasoningEffort: OpenAIReasoningEffortType) {\n\t\tthis.reasoningEffort = reasoningEffort\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.reasoningEffort = effort\n\t}\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\tif (!this.reasoningEffort) {\n\t\t\tthrow new Error(\"Reasoning effort not supported\")\n\t\t}\n\t\treturn this.reasoningEffort\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt54Nano implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.4-nano\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 400_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt54 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.4\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 1_050_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt54Mini implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.4-mini\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 400_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n}\n","export class InputTokenDetails {\n\treadonly cached_tokens: number\n\n\tconstructor(cached_tokens: number) {\n\t\tthis.cached_tokens = cached_tokens\n\t}\n}\n\nexport class OutputTokenDetails {\n\treadonly reasoning_tokens: number\n\n\tconstructor(reasoning_tokens: number) {\n\t\tthis.reasoning_tokens = reasoning_tokens\n\t}\n}\n\nexport class TokenUsage {\n\treadonly inputTokens: number\n\treadonly outputTokens: number\n\treadonly totalTokens: number\n\treadonly inputTokenDetails: InputTokenDetails\n\treadonly outputTokenDetails: OutputTokenDetails\n\n\tconstructor(\n\t\tinputTokens: number,\n\t\toutputTokens: number,\n\t\ttotalTokens: number,\n\t\tinputTokenDetails: InputTokenDetails,\n\t\toutputTokenDetails: OutputTokenDetails,\n\t) {\n\t\tthis.inputTokens = inputTokens\n\t\tthis.outputTokens = outputTokens\n\t\tthis.totalTokens = totalTokens\n\t\tthis.inputTokenDetails = inputTokenDetails\n\t\tthis.outputTokenDetails = outputTokenDetails\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ModelContextRepository } from \"@domain/model-context/model-context-repository\"\n\nexport class InMemoryModelContextRepository implements ModelContextRepository {\n\tprivate readonly store = new Map<string, ModelContext>()\n\tprivate readonly projectIndex = new Map<string, Set<string>>()\n\n\tasync save(context: ModelContext): Promise<void> {\n\t\tconst existing = this.store.get(context.id)\n\t\tif (existing && existing.projectId !== context.projectId) {\n\t\t\tconst prevSet = this.projectIndex.get(existing.projectId)\n\t\t\tprevSet?.delete(existing.id)\n\t\t\tif (prevSet && prevSet.size === 0) this.projectIndex.delete(existing.projectId)\n\t\t}\n\n\t\tthis.store.set(context.id, this.clone(context))\n\n\t\tlet set = this.projectIndex.get(context.projectId)\n\t\tif (!set) {\n\t\t\tset = new Set<string>()\n\t\t\tthis.projectIndex.set(context.projectId, set)\n\t\t}\n\t\tset.add(context.id)\n\t}\n\n\tasync get(id: string): Promise<ModelContext> {\n\t\tconst context = this.store.get(id)\n\t\tif (!context) {\n\t\t\tthrow new Error(`Context not found: ${id}`)\n\t\t}\n\t\treturn this.clone(context)\n\t}\n\n\tasync getByProjectId(projectId: string): Promise<ModelContext[]> {\n\t\tconst ids = this.projectIndex.get(projectId)\n\t\tif (!ids || ids.size === 0) return []\n\t\treturn [...ids]\n\t\t\t.map((id) => this.store.get(id))\n\t\t\t.filter((c): c is ModelContext => Boolean(c))\n\t\t\t.map((c) => this.clone(c))\n\t}\n\n\tprivate clone(context: ModelContext): ModelContext {\n\t\treturn ModelContext.rehydrate({\n\t\t\tid: context.id,\n\t\t\tprojectId: context.projectId,\n\t\t\titems: [...context.getItems()],\n\t\t})\n\t}\n}\n","import { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class SystemMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"system\"\n\treadonly content: InputText\n\n\tprivate constructor(content: InputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n\n\tstatic create(text: string): SystemMessageItem {\n\t\tconst content = InputText.create(text)\n\t\treturn new SystemMessageItem(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): SystemMessageItem {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new SystemMessageItem(content)\n\t}\n}\n","import { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { AgenticEnvironment } from \"../agentic-environment\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport abstract class Participant {\n\tprivate environments: AgenticEnvironment[] = []\n\n\tjoin(environment: AgenticEnvironment) {\n\t\tif (this.isJoinedTo(environment)) {\n\t\t\treturn\n\t\t}\n\t\tenvironment.subscribe(this)\n\t\tthis.environments.push(environment)\n\t}\n\n\tleave(environment: AgenticEnvironment) {\n\t\tif (!this.isJoinedTo(environment)) {\n\t\t\treturn\n\t\t}\n\t\tenvironment.unsubscribe(this)\n\t\tthis.environments = this.environments.filter((e) => e !== environment)\n\t}\n\n\tprotected isJoinedTo(environment: AgenticEnvironment): boolean {\n\t\treturn this.environments.includes(environment)\n\t}\n\n\tgetEnvironments(): AgenticEnvironment[] {\n\t\treturn this.environments\n\t}\n\n\tabstract onParticipantJoined(participant: Participant): Promise<void> | void\n\n\tabstract onParticipantLeft(participant: Participant): Promise<void> | void\n\n\tabstract onJoined(): Promise<void> | void\n\n\tabstract onLeft(): Promise<void> | void\n\n\tabstract onFunctionCall(item: FunctionCallItem): Promise<void> | void\n\n\tabstract onExternalFunctionCall(source: Participant, item: FunctionCallItem): Promise<void> | void\n\n\tabstract onFunctionCallOutput(item: FunctionCallOutputItem): Promise<void> | void\n\n\tabstract onExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem): Promise<void> | void\n\n\tabstract onReasoning(item: ReasoningItem): Promise<void> | void\n\n\tabstract onExternalReasoning(source: Participant, item: ReasoningItem): Promise<void> | void\n\n\tabstract onModelMessage(item: ModelMessageItem): Promise<void> | void\n\n\tabstract onExternalModelMessage(source: Participant, item: ModelMessageItem): Promise<void> | void\n\n\tabstract onMessage(message: string): Promise<void> | void\n\n\tabstract onInternalEvent(item: SemanticEvent<unknown>): Promise<void> | void\n\n\tabstract onExternalEvent(source: Participant, item: SemanticEvent<unknown>): Promise<void> | void\n}\n","import { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport class AgenticEnvironment {\n\tprotected subscribers: Participant[] = []\n\tprivate isActive = false\n\n\tsubscribe(participant: Participant) {\n\t\tthis.subscribers.push(participant)\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (participant === subscriber) {\n\t\t\t\tparticipant.onJoined()\n\t\t\t} else {\n\t\t\t\tsubscriber.onParticipantJoined(participant)\n\t\t\t}\n\t\t}\n\t}\n\n\tunsubscribe(participant: Participant) {\n\t\tconst exists = this.subscribers.includes(participant)\n\t\n\t\tif (!exists) {\n\t\t\treturn\n\t\t}\n\t\n\t\tparticipant.onLeft()\n\t\n\t\tthis.subscribers = this.subscribers.filter((p) => p !== participant)\n\t\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tsubscriber.onParticipantLeft(participant)\n\t\t}\n\t}\n\n\tdeliverFunctionCall(source: Participant, item: FunctionCallItem): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onFunctionCall(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalFunctionCall(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverModelMessage(source: Participant, item: ModelMessageItem): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onModelMessage(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalModelMessage(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverReasoning(source: Participant, item: ReasoningItem): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onReasoning(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalReasoning(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverFunctionCallOutput(source: Participant, item: FunctionCallOutputItem): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onFunctionCallOutput(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalFunctionCallOutput(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverMessage(source: Participant, message: string): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) continue\n\n\t\t\tsubscriber.onMessage(message)\n\t\t}\n\t}\n\n\tdeliverSemanticEvent(source: Participant, item: SemanticEvent<unknown>): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onInternalEvent(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalEvent(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tasync start() {\n\t\tthis.isActive = true\n\t\twhile (this.isActive) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 100))\n\t\t}\n\t}\n\n\tstop() {\n\t\tthis.isActive = false\n\t}\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\n\nexport abstract class Agent extends Participant {\n\tabstract executeFunctionCall(\n\t\tenvironment: AgenticEnvironment,\n\t\tfunctionCallItem: FunctionCallItem,\n\t\tsignal?: AbortSignal,\n\t): Promise<void>\n\n\tabstract runInference(\n\t\tenvironment: AgenticEnvironment,\n\t\tcontext: ModelContext,\n\t\tmodel: GenerativeModel,\n\t\tsignal?: AbortSignal,\n\t): Promise<void>\n}\n","export class SemanticEvent<T> {\n\treadonly type: string\n\treadonly data: T\n\n\tconstructor(type: string, data: T) {\n\t\tthis.type = type\n\t\tthis.data = data\n\t}\n\n\tgetType(): string {\n\t\treturn this.type\n\t}\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { InferenceRunner } from \"@domain/agentic-environment/runners/inference-runner\"\nimport { FunctionCallRunner } from \"@domain/agentic-environment/runners/function-call-runner\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { Agent } from \"@domain/agentic-environment/participants/agent\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport class BaseAgent extends Agent {\n\tprivate inferenceRunner: InferenceRunner\n\tprivate functionCallRunner: FunctionCallRunner\n\n\tconstructor(inferenceRunner: InferenceRunner, functionCallRunner: FunctionCallRunner) {\n\t\tsuper()\n\t\tthis.inferenceRunner = inferenceRunner\n\t\tthis.functionCallRunner = functionCallRunner\n\t}\n\n\tonJoined() {}\n\n\tonLeft() {}\n\n\tonParticipantJoined(participant: Participant) {}\n\n\tonParticipantLeft(participant: Participant) {}\n\n\tonFunctionCall(item: FunctionCallItem) {}\n\n\tonExternalFunctionCall(source: Participant, item: FunctionCallItem) {}\n\n\tonFunctionCallOutput(item: FunctionCallOutputItem) {}\n\n\tonExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem) {}\n\n\tonReasoning(item: ReasoningItem) {}\n\n\tonExternalReasoning(source: Participant, item: ReasoningItem) {}\n\n\tonModelMessage(item: ModelMessageItem) {}\n\n\tonExternalModelMessage(source: Participant, item: ModelMessageItem) {}\n\n\tonMessage(message: string) {}\n\n\tonInternalEvent(item: SemanticEvent<unknown>) {}\n\n\tonExternalEvent(source: Participant, item: SemanticEvent<unknown>) {}\n\n\tasync executeFunctionCall(\n\t\tenvironment: AgenticEnvironment,\n\t\tfunctionCallItem: FunctionCallItem,\n\t\tsignal?: AbortSignal,\n\t): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.functionCallRunner.run(functionCallItem, signal)\n\n\t\tfor await (const item of stream) {\n\t\t\tenvironment.deliverFunctionCallOutput(this, item)\n\t\t}\n\t}\n\n\tasync runInference(\n\t\tenvironment: AgenticEnvironment,\n\t\tcontext: ModelContext,\n\t\tmodel: GenerativeModel,\n\t\tsignal?: AbortSignal,\n\t): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.inferenceRunner.run(context, model, signal)\n\n\t\tfor await (const item of stream) {\n\t\t\tif (item instanceof ReasoningItem) {\n\t\t\t\tenvironment.deliverReasoning(this, item)\n\t\t\t} else if (item instanceof FunctionCallItem) {\n\t\t\t\tenvironment.deliverFunctionCall(this, item)\n\t\t\t} else if (item instanceof ModelMessageItem) {\n\t\t\t\tenvironment.deliverModelMessage(this, item)\n\t\t\t} else if (item instanceof SemanticEvent) {\n\t\t\t\tenvironment.deliverSemanticEvent(this, item)\n\t\t\t}\n\t\t}\n\t}\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\n\nexport abstract class Human extends Participant {\n\tsendMessage(environment: AgenticEnvironment, message: string): void {\n\t\tif (!this.isJoinedTo(environment)) throw new Error(\"Not joined to environment\")\n\t\tenvironment.deliverMessage(this, message)\n\t}\n}\n","import { Human } from \"@domain/agentic-environment/participants/human\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport class BaseHuman extends Human {\n\tonJoined() {}\n\n\tonLeft() {}\n\n\tonParticipantJoined(participant: Participant) {}\n\n\tonParticipantLeft(participant: Participant) {}\n\n\tonMessage(message: string) {}\n\n\tonFunctionCall(item: FunctionCallItem) {}\n\n\tonFunctionCallOutput(item: FunctionCallOutputItem) {}\n\n\tonReasoning(item: ReasoningItem) {}\n\n\tonModelMessage(item: ModelMessageItem) {}\n\n\tonExternalFunctionCall(source: Participant, item: FunctionCallItem) {}\n\n\tonExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem) {}\n\n\tonExternalReasoning(source: Participant, item: ReasoningItem) {}\n\n\tonExternalModelMessage(source: Participant, item: ModelMessageItem) {}\n\n\tonInternalEvent(item: SemanticEvent<unknown>) {}\n\n\tonExternalEvent(source: Participant, item: SemanticEvent<unknown>) {}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\n\nexport class InferenceRequest {\n\treadonly model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability\n\treadonly context: ModelContext\n\n\tconstructor(model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability, context: ModelContext) {\n\t\tthis.model = model\n\t\tthis.context = context\n\t}\n}\n","import { InferenceRunner } from \"@domain/agentic-environment/runners/inference-runner\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { InferenceRequest } from \"@domain/generative-model/inference-request\"\nimport { ModelRuntime } from \"@domain/generative-model/runtime/model-runtime\"\nimport { StreamingRuntime } from \"@domain/generative-model/runtime/streaming-runtime\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\ntype InferenceItem = ReasoningItem | FunctionCallItem | ModelMessageItem | SemanticEvent<unknown>\n\n/**\n * Application-layer inference runner. Provider-agnostic: it depends on\n * the {@link ModelRuntime} domain port and receives a concrete\n * infrastructure adapter (OpenAIResponses, AnthropicMessages, …)\n * through its constructor. The runner never instantiates a provider\n * client itself — wiring happens at the composition root.\n *\n * Name retained for backward compatibility; the runner works with any\n * `ModelRuntime`, not just OpenAI.\n */\nexport class OpenAIInferenceRunner implements InferenceRunner {\n\tconstructor(private readonly runtime: ModelRuntime) {}\n\n\tasync *run(context: ModelContext, model: GenerativeModel, signal?: AbortSignal): AsyncIterable<InferenceItem> {\n\t\tconst request = new InferenceRequest(model, context)\n\n\t\tif (model.getStreaming() && this.isStreamingRuntime(this.runtime)) {\n\t\t\tyield* this.runtime.stream(request, signal)\n\t\t\treturn\n\t\t}\n\n\t\tconst response = await this.runtime.infer(request)\n\t\tfor (const item of response.contextItems) {\n\t\t\tif (signal?.aborted) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tyield item as InferenceItem\n\t\t}\n\t}\n\n\tprivate isStreamingRuntime(runtime: ModelRuntime): runtime is ModelRuntime & StreamingRuntime {\n\t\treturn typeof (runtime as Partial<StreamingRuntime>).stream === \"function\"\n\t}\n}\n","import { FunctionCallRunner } from \"@domain/agentic-environment/runners/function-call-runner\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\n\nexport class DefaultFunctionCallRunner implements FunctionCallRunner {\n\tconstructor(private readonly tools: Tool[]) {}\n\n\tasync *run(call: FunctionCallItem, signal?: AbortSignal): AsyncIterable<FunctionCallOutputItem> {\n\t\tconst tool = this.tools.find((t) => t.name === call.name)\n\t\tif (!tool) throw new Error(`Unknown tool: ${call.name}`)\n\n\t\tconst result = await tool.invoke(JSON.parse(call.args))\n\t\tyield FunctionCallOutputItem.create(call.callId, JSON.stringify(result))\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt55 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.5\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 1_050_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { Participant } from \"./participant\"\n\nexport abstract class Observer extends Participant {}\n","import { Observer } from \"@domain/agentic-environment/participants/observer\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport class BaseObserver extends Observer {\n\tonFunctionCall(item: FunctionCallItem) {}\n\tonExternalFunctionCall(source: Participant, item: FunctionCallItem) {}\n\tonFunctionCallOutput(item: FunctionCallOutputItem) {}\n\tonExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem) {}\n\tonReasoning(item: ReasoningItem) {}\n\tonExternalReasoning(source: Participant, item: ReasoningItem) {}\n\tonModelMessage(item: ModelMessageItem) {}\n\tonExternalModelMessage(source: Participant, item: ModelMessageItem) {}\n\tonMessage(message: string) {}\n\tonJoined() {}\n\tonLeft() {}\n\tonParticipantJoined(participant: Participant) {}\n\tonParticipantLeft(participant: Participant) {}\n\tonInternalEvent(item: SemanticEvent<unknown>) {}\n\tonExternalEvent(source: Participant, item: SemanticEvent<unknown>) {}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { TokenUsage } from \"@domain/generative-model/token-usage\"\n\nexport class InferenceResponse {\n\treadonly contextItems: ContextItem[]\n\treadonly tokenUsage?: TokenUsage\n\n\tconstructor(contextItems: ContextItem[], tokenUsage: TokenUsage | undefined) {\n\t\tthis.contextItems = contextItems\n\t\tthis.tokenUsage = tokenUsage\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { InferenceRequest } from \"@domain/generative-model/inference-request\"\nimport { InferenceResponse } from \"@domain/generative-model/inference-response\"\nimport { ModelRuntime } from \"@domain/generative-model/runtime/model-runtime\"\nimport { StreamingRuntime } from \"@domain/generative-model/runtime/streaming-runtime\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport OpenAI from \"openai\"\n\nexport class OpenAIResponses implements ModelRuntime, StreamingRuntime {\n\tprivate readonly client: OpenAI\n\n\tconstructor() {\n\t\tthis.client = new OpenAI()\n\t}\n\n\tasync infer(inferenceRequest: InferenceRequest): Promise<InferenceResponse> {\n\t\tconst request = this.buildRequest(inferenceRequest)\n\n\t\tconst response = await this.client.responses.create(request)\n\n\t\tconst contextItems = this.extractContextItems(response)\n\t\tconst tokenUsage = this.extractTokenUsage(response)\n\t\treturn new InferenceResponse(contextItems, tokenUsage)\n\t}\n\n\tasync *stream(\n\t\tinferenceRequest: InferenceRequest,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<ReasoningItem | FunctionCallItem | ModelMessageItem | SemanticEvent<unknown>> {\n\t\tconst specification = inferenceRequest.model.specification\n\t\tif (!specification.supportStreaming) {\n\t\t\tthrow new Error(\"Streaming is not supported for this model\")\n\t\t}\n\n\t\tconst request = { ...this.buildRequest(inferenceRequest), stream: true }\n\t\tconst response: any = await this.client.responses.create(request)\n\n\t\tfor await (const event of response) {\n\t\t\tif (signal?.aborted) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tyield new SemanticEvent(event.type, event)\n\t\t}\n\t}\n\n\tprivate buildRequest(inferenceRequest: InferenceRequest): any {\n\t\tconst specification = inferenceRequest.model.specification\n\t\tconst input = this.mapContextToRequest(inferenceRequest.context)\n\n\t\tconst request: any = {\n\t\t\tmodel: specification.name,\n\t\t\tinput: input,\n\t\t}\n\n\t\tif (specification.supportFunctionCalling && inferenceRequest.model.getTools().length > 0) {\n\t\t\trequest.tools = inferenceRequest.model.getTools().map((tool) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: tool.type,\n\t\t\t\t\tname: tool.name,\n\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\tparameters: tool.parameters,\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (specification.supportReasoningEffort) {\n\t\t\trequest.reasoning = {\n\t\t\t\teffort: inferenceRequest.model.getReasoningEffort(),\n\t\t\t}\n\t\t}\n\n\t\treturn request\n\t}\n\n\textractTokenUsage(response: OpenAI.Responses.Response): TokenUsage | undefined {\n\t\tif (!response.usage) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn new TokenUsage(\n\t\t\tresponse.usage.input_tokens,\n\t\t\tresponse.usage.output_tokens,\n\t\t\tresponse.usage.total_tokens,\n\t\t\tnew InputTokenDetails(response.usage.input_tokens_details.cached_tokens),\n\t\t\tnew OutputTokenDetails(response.usage.output_tokens_details.reasoning_tokens),\n\t\t)\n\t}\n\n\tmapContextToRequest(context: ModelContext): any[] {\n\t\treturn context.getItems().map((item) => item.toJSON())\n\t}\n\n\textractContextItems(response: any): ContextItem[] {\n\t\treturn response.output.map((item: any) => {\n\t\t\tif (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\treturn ModelMessageItem.rehydrate(item.content[0] as { text: string })\n\t\t\t}\n\t\t\tif (item.type === \"function_call\") {\n\t\t\t\treturn FunctionCallItem.rehydrate({\n\t\t\t\t\tcallId: item.call_id,\n\t\t\t\t\tname: item.name,\n\t\t\t\t\targs: item.arguments,\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\treturn ReasoningItem.rehydrate(item)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { SystemMessageItem } from \"@domain/model-context/context-item/client-item/system-message\"\nimport { UserMessageItem } from \"@domain/model-context/context-item/client-item/user-message\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { InferenceRequest } from \"@domain/generative-model/inference-request\"\nimport { InferenceResponse } from \"@domain/generative-model/inference-response\"\nimport { ModelRuntime } from \"@domain/generative-model/runtime/model-runtime\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport Anthropic from \"@anthropic-ai/sdk\"\n\nexport class AnthropicMessages implements ModelRuntime {\n\tprivate readonly client: Anthropic\n\n\tconstructor() {\n\t\tthis.client = new Anthropic()\n\t}\n\n\tasync infer(inferenceRequest: InferenceRequest): Promise<InferenceResponse> {\n\t\tconst { messages, system } = this.mapContextToRequest(inferenceRequest.context)\n\n\t\tconst specification = inferenceRequest.model.specification\n\n\t\tconst request: any = {\n\t\t\tmodel: specification.name,\n\t\t\tmax_tokens: specification.maxOutputTokens,\n\t\t\tmessages: messages,\n\t\t}\n\n\t\tif (system) {\n\t\t\trequest.system = system\n\t\t}\n\n\t\tif (specification.supportFunctionCalling && inferenceRequest.model.getTools().length > 0) {\n\t\t\trequest.tools = inferenceRequest.model.getTools().map((tool) => {\n\t\t\t\treturn {\n\t\t\t\t\tname: tool.name,\n\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\tinput_schema: tool.parameters,\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (specification.supportReasoningEffort) {\n\t\t\tconst effort = inferenceRequest.model.getReasoningEffort()\n\t\t\tconst budgets: Record<string, number> = { low: 1_024, medium: 4_096, high: 8_192 }\n\t\t\tconst budget = budgets[effort]\n\t\t\tif (budget !== undefined) {\n\t\t\t\trequest.thinking = {\n\t\t\t\t\ttype: \"enabled\",\n\t\t\t\t\tbudget_tokens: Math.min(budget, specification.maxOutputTokens - 1),\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst response = await this.client.messages.create(request)\n\n\t\tconst contextItems = this.extractContextItems(response)\n\t\tconst tokenUsage = this.extractTokenUsage(response)\n\t\treturn new InferenceResponse(contextItems, tokenUsage)\n\t}\n\n\textractTokenUsage(response: Anthropic.Messages.Message): TokenUsage | undefined {\n\t\tif (!response.usage) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn new TokenUsage(\n\t\t\tresponse.usage.input_tokens,\n\t\t\tresponse.usage.output_tokens,\n\t\t\tresponse.usage.input_tokens + response.usage.output_tokens,\n\t\t\tnew InputTokenDetails(\n\t\t\t\t(response.usage.cache_creation_input_tokens ?? 0) + (response.usage.cache_read_input_tokens ?? 0),\n\t\t\t),\n\t\t\tnew OutputTokenDetails(0),\n\t\t)\n\t}\n\n\tmapContextToRequest(context: ModelContext): { messages: any[]; system?: string } {\n\t\tconst messages: any[] = []\n\t\tconst system: string[] = []\n\n\t\tfor (const item of context.getItems()) {\n\t\t\tif (item instanceof DeveloperMessageItem || item instanceof SystemMessageItem) {\n\t\t\t\tsystem.push(item.content.text)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof UserMessageItem) {\n\t\t\t\tthis.addContentBlock(messages, \"user\", { type: \"text\", text: item.content.text })\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof ModelMessageItem) {\n\t\t\t\tthis.addContentBlock(messages, \"assistant\", { type: \"text\", text: item.content.text })\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof FunctionCallItem) {\n\t\t\t\tlet input: any\n\t\t\t\ttry {\n\t\t\t\t\tinput = JSON.parse(item.args)\n\t\t\t\t} catch {\n\t\t\t\t\tinput = item.args\n\t\t\t\t}\n\t\t\t\tthis.addContentBlock(messages, \"assistant\", {\n\t\t\t\t\ttype: \"tool_use\",\n\t\t\t\t\tid: item.callId,\n\t\t\t\t\tname: item.name,\n\t\t\t\t\tinput: input,\n\t\t\t\t})\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof FunctionCallOutputItem) {\n\t\t\t\tthis.addContentBlock(messages, \"user\", {\n\t\t\t\t\ttype: \"tool_result\",\n\t\t\t\t\ttool_use_id: item.callId,\n\t\t\t\t\tcontent: item.output.text,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tmessages: messages,\n\t\t\tsystem: system.length > 0 ? system.join(\"\\n\\n\") : undefined,\n\t\t}\n\t}\n\n\textractContextItems(response: Anthropic.Messages.Message): ContextItem[] {\n\t\tconst items: ContextItem[] = []\n\n\t\tfor (const block of response.content as any[]) {\n\t\t\tif (block.type === \"text\") {\n\t\t\t\titems.push(ModelMessageItem.rehydrate({ text: block.text }))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (block.type === \"tool_use\") {\n\t\t\t\titems.push(\n\t\t\t\t\tFunctionCallItem.rehydrate({\n\t\t\t\t\t\tcallId: block.id,\n\t\t\t\t\t\tname: block.name,\n\t\t\t\t\t\targs: JSON.stringify(block.input ?? {}),\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (block.type === \"thinking\") {\n\t\t\t\titems.push(\n\t\t\t\t\tReasoningItem.rehydrate({\n\t\t\t\t\t\tcontent: block.thinking ? InputText.rehydrate({ text: block.thinking }) : undefined,\n\t\t\t\t\t\tencryptedContent: undefined,\n\t\t\t\t\t\tsummary: [],\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\treturn items\n\t}\n\n\tprivate addContentBlock(messages: any[], role: \"user\" | \"assistant\", block: any): void {\n\t\tconst lastMessage = messages[messages.length - 1]\n\t\tif (lastMessage?.role === role) {\n\t\t\tlastMessage.content.push(block)\n\t\t\treturn\n\t\t}\n\n\t\tmessages.push({\n\t\t\trole: role,\n\t\t\tcontent: [block],\n\t\t})\n\t}\n}\n","import { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\n\nexport type AnthropicReasoningEffortType = \"high\" | \"medium\" | \"low\" | \"none\"\n\nexport class AnthropicReasoningEffort implements ReasoningEffort<AnthropicReasoningEffortType> {\n\treasoningEffort: AnthropicReasoningEffortType\n\n\tconstructor(reasoningEffort: AnthropicReasoningEffortType) {\n\t\tthis.reasoningEffort = reasoningEffort\n\t}\n\n\tsetReasoningEffort(effort: AnthropicReasoningEffortType): void {\n\t\tthis.reasoningEffort = effort\n\t}\n\n\tgetReasoningEffort(): AnthropicReasoningEffortType {\n\t\tif (!this.reasoningEffort) {\n\t\t\tthrow new Error(\"Reasoning effort not supported\")\n\t\t}\n\t\treturn this.reasoningEffort\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { AnthropicReasoningEffort, AnthropicReasoningEffortType } from \"@infra/providers/anthropic/reasoning-effort\"\n\nexport class ClaudeOpus47 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"claude-opus-4-7\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as AnthropicReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 200_000,\n\t\tmaxOutputTokens: 32_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tprivate readonly effort: AnthropicReasoningEffort = new AnthropicReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetReasoningEffort(effort: AnthropicReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): AnthropicReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { AnthropicReasoningEffort, AnthropicReasoningEffortType } from \"@infra/providers/anthropic/reasoning-effort\"\n\nexport class ClaudeSonnet46 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"claude-sonnet-4-6\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as AnthropicReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 200_000,\n\t\tmaxOutputTokens: 64_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tprivate readonly effort: AnthropicReasoningEffort = new AnthropicReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetReasoningEffort(effort: AnthropicReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): AnthropicReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { AnthropicReasoningEffort, AnthropicReasoningEffortType } from \"@infra/providers/anthropic/reasoning-effort\"\n\nexport class ClaudeHaiku45 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"claude-haiku-4-5\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as AnthropicReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 200_000,\n\t\tmaxOutputTokens: 64_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tprivate readonly effort: AnthropicReasoningEffort = new AnthropicReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetReasoningEffort(effort: AnthropicReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): AnthropicReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n"],"mappings":"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","names":["OpenAI","Anthropic"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/domain/model-context/model-context.ts","../src/domain/model-context/context-item/context-item.ts","../src/domain/model-context/context-item/item-content/item-content.ts","../src/domain/model-context/context-item/item-content/input-text.ts","../src/domain/model-context/context-item/client-item/user-message.ts","../src/domain/model-context/context-item/client-item/developer-message.ts","../src/domain/model-context/context-item/item-content/output-text.ts","../src/domain/model-context/context-item/model-item/model-message.ts","../src/domain/model-context/context-item/model-item/function-call.ts","../src/domain/model-context/context-item/model-item/reasoning.ts","../src/domain/model-context/context-item/client-item/function-call-output.ts","../src/infrastructure/providers/openai/reasoning-effort.ts","../src/infrastructure/providers/openai/models/gpt-5-4-nano.ts","../src/infrastructure/providers/openai/models/gpt-5-4.ts","../src/infrastructure/providers/openai/models/gpt-5-4-mini.ts","../src/domain/generative-model/token-usage.ts","../src/infrastructure/repository/in-memory-model-context-repository.ts","../src/domain/model-context/context-item/client-item/system-message.ts","../src/domain/agentic-environment/participant.ts","../src/domain/agentic-environment/errors/base-error.ts","../src/domain/agentic-environment/agentic-environment.ts","../src/infrastructure/providers/openai/models/gpt-5-5.ts","../src/domain/model-context/semantic-event/semantic-event.ts","../src/domain/agentic-environment/inference/request.ts","../src/domain/agentic-environment/inference/response.ts","../src/infrastructure/providers/openai/runtime/openai-responses.ts","../src/infrastructure/providers/anthropic/runtime/anthropic-messages.ts","../src/infrastructure/providers/anthropic/reasoning-effort.ts","../src/infrastructure/providers/anthropic/models/claude-4-8-opus.ts","../src/infrastructure/providers/anthropic/models/claude-4-7-opus.ts","../src/infrastructure/providers/anthropic/models/claude-4-6-sonnet.ts","../src/infrastructure/providers/anthropic/models/claude-4-5-haiku.ts","../src/infrastructure/providers/deepseek/reasoning-effort.ts","../src/infrastructure/providers/deepseek/models/deepseek-v4-flash.ts","../src/infrastructure/providers/deepseek/models/deepseek-v4-pro.ts","../src/infrastructure/providers/gemini/runtime/gemini-generate-content.ts","../src/infrastructure/providers/gemini/reasoning-effort.ts","../src/infrastructure/providers/gemini/models/gemini-3-5-flash.ts","../src/infrastructure/providers/gemini/models/gemini-3-1-pro.ts","../src/infrastructure/providers/openai/runtime/openai-chat-completions.ts","../src/application/services/inference-runner.ts","../src/application/use-cases/run-inference.ts","../src/application/use-cases/execute-function-call.ts","../src/application/services/model-repository.ts","../src/application/services/function-call-runner.ts","../src/application/participants/participant.ts","../src/application/use-cases/send-message.ts"],"sourcesContent":["import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { UserMessageItem } from \"@domain/model-context/context-item/client-item/user-message\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { StructuredOutputCapability, StructuredOutputFormat } from \"@domain/generative-model/capability/structured-output\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { ModelContextRepository } from \"@domain/model-context/model-context-repository\"\nimport { Gpt54Nano } from \"@infra/providers/openai/models/gpt-5-4-nano\"\nimport { Gpt54 } from \"@infra/providers/openai/models/gpt-5-4\"\nimport { Gpt54Mini } from \"@infra/providers/openai/models/gpt-5-4-mini\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { InMemoryModelContextRepository } from \"@infra/repository/in-memory-model-context-repository\"\nimport { SystemMessageItem } from \"@domain/model-context/context-item/client-item/system-message\"\nimport { Participant } from \"@domain/agentic-environment/participant\"\nimport { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { AgenticError } from \"@domain/agentic-environment/errors/base-error\"\nimport { Gpt55 } from \"@infra/providers/openai/models/gpt-5-5\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { InferenceRequest } from \"@domain/agentic-environment/inference/request\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { OpenAIResponses } from \"@infra/providers/openai/runtime/openai-responses\"\nimport { AnthropicMessages } from \"@infra/providers/anthropic/runtime/anthropic-messages\"\nimport { ClaudeOpus48 } from \"@infra/providers/anthropic/models/claude-4-8-opus\"\nimport { ClaudeOpus47 } from \"@infra/providers/anthropic/models/claude-4-7-opus\"\nimport { ClaudeSonnet46 } from \"@infra/providers/anthropic/models/claude-4-6-sonnet\"\nimport { ClaudeHaiku45 } from \"@infra/providers/anthropic/models/claude-4-5-haiku\"\nimport { DeepSeekV4Flash } from \"@infra/providers/deepseek/models/deepseek-v4-flash\"\nimport { DeepSeekV4Pro } from \"@infra/providers/deepseek/models/deepseek-v4-pro\"\nimport { GeminiGenerateContent } from \"@infra/providers/gemini/runtime/gemini-generate-content\"\nimport { Gemini35Flash } from \"@infra/providers/gemini/models/gemini-3-5-flash\"\nimport { Gemini31Pro } from \"@infra/providers/gemini/models/gemini-3-1-pro\"\nimport { OpenAIChatCompletions } from \"@infra/providers/openai/runtime/openai-chat-completions\"\nimport { InferenceRunner } from \"@app/services/inference-runner\"\nimport { Endpoint } from \"@domain/generative-model/runtime\"\nimport { RunInference } from \"@app/use-cases/run-inference\"\nimport { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { ExecuteFunctionCall } from \"@app/use-cases/execute-function-call\"\nimport { ModelRepository } from \"@app/services/model-repository\"\nimport { FunctionCallRunner } from \"@app/services/function-call-runner\"\nimport { BaseParticipant } from \"@app/participants/participant\"\nimport { SendMessage } from \"@app/use-cases/send-message\"\n\nconst runInferenceUseCase = new RunInference(new ModelRepository(), new InferenceRunner())\nconst executeFunctionCallUseCase = new ExecuteFunctionCall(new FunctionCallRunner())\nconst sendMessageUseCase = new SendMessage()\n\nconst runInference = (inferenceParams: InferenceParams): void => {\n\trunInferenceUseCase.execute(inferenceParams)\n}\n\nconst executeFunctionCall = (environment: AgenticEnvironment, functionCallItem: FunctionCallItem, tool: Tool, caller: Participant): void => {\n\texecuteFunctionCallUseCase.execute(environment, functionCallItem, tool, caller)\n}\n\nconst sendMessage = (environment: AgenticEnvironment, message: string, caller: Participant): void => {\n\tsendMessageUseCase.execute(environment, message, caller)\n}\n\nexport {\n\tModelContext,\n\tModelContextRepository,\n\tInMemoryModelContextRepository,\n\tContextItem,\n\tSemanticEvent,\n\tUserMessageItem,\n\tDeveloperMessageItem,\n\tSystemMessageItem,\n\tModelMessageItem,\n\tFunctionCallItem,\n\tFunctionCallOutputItem,\n\tReasoningItem,\n\tGenerativeModel,\n\tStructuredOutputCapability,\n\tStructuredOutputFormat,\n\tGpt54,\n\tGpt54Mini,\n\tGpt54Nano,\n\tGpt55,\n\tTokenUsage,\n\tInputTokenDetails,\n\tOutputTokenDetails,\n\tTool,\n\tEndpoint,\n\tAgenticEnvironment,\n\tParticipant,\n\tBaseParticipant,\n\tAgenticError,\n\tInferenceRequest,\n\tInferenceResponse,\n\tOpenAIResponses,\n\tOpenAIChatCompletions,\n\tAnthropicMessages,\n\tClaudeOpus48,\n\tClaudeOpus47,\n\tClaudeSonnet46,\n\tClaudeHaiku45,\n\tDeepSeekV4Flash,\n\tDeepSeekV4Pro,\n\tGeminiGenerateContent,\n\tGemini35Flash,\n\tGemini31Pro,\n\trunInference,\n\texecuteFunctionCall,\n\tsendMessage,\n}","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class ModelContext {\n\treadonly id: string\n\treadonly projectId: string\n\treadonly items: ContextItem[]\n\n\tconstructor(id: string, projectId: string, items: ContextItem[]) {\n\t\tthis.projectId = projectId\n\t\tthis.id = id\n\t\tthis.items = items\n\t}\n\n\taddContextItem(item: ContextItem): ModelContext {\n\t\tthis.items.push(item)\n\t\treturn this\n\t}\n\n\tapplyModelOutput(items: ContextItem[]): ModelContext {\n\t\tfor (const item of items) {\n\t\t\tconst itemType = item.getType()\n\t\t\tif (itemType !== \"function_call\" && itemType !== \"message\" && itemType !== \"reasoning\") {\n\t\t\t\tthrow new Error(`Invalid item type: ${itemType}`)\n\t\t\t}\n\t\t}\n\t\tthis.items.push(...items)\n\t\treturn this\n\t}\n\n\tgetItems(): ContextItem[] {\n\t\treturn this.items\n\t}\n\n\tgetLastItem(): ContextItem {\n\t\tif (this.items.length === 0) {\n\t\t\tthrow new Error(\"No items in context\")\n\t\t}\n\t\treturn this.items[this.items.length - 1]\n\t}\n\n\tstatic create(projectId: string): ModelContext {\n\t\tconst id = crypto.randomUUID()\n\t\treturn new ModelContext(id, projectId, [])\n\t}\n\n\tstatic rehydrate(data: { id: string; projectId: string; items: ContextItem[] }): ModelContext {\n\t\treturn new ModelContext(data.id, data.projectId, data.items)\n\t}\n\n\ttoJSON(): any {\n\t\treturn this.items.map((item) => item.toJSON())\n\t}\n}\n","export abstract class ContextItem {\n\tabstract readonly type: string\n\n\tgetType(): string {\n\t\treturn this.type\n\t}\n\n\tabstract toJSON(): any\n}\n","export abstract class ItemContent {\n\tabstract readonly type: string\n}\n","import { ItemContent } from \"@domain/model-context/context-item/item-content/item-content\"\n\nexport class InputText extends ItemContent {\n\treadonly type = \"input_text\"\n\n\tprivate constructor(public readonly text: string) {\n\t\tsuper()\n\t}\n\n\tstatic create(text: string): InputText {\n\t\treturn new InputText(text)\n\t}\n\n\tstatic rehydrate(data: { text: string }): InputText {\n\t\treturn new InputText(data.text)\n\t}\n\n\ttoJSON(): any[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttype: this.type,\n\t\t\t\ttext: this.text,\n\t\t\t},\n\t\t]\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\n\nexport class UserMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"user\"\n\treadonly content: InputText\n\n\tprivate constructor(content: InputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\tstatic create(text: string): UserMessageItem {\n\t\tconst content = InputText.create(text)\n\t\treturn new UserMessageItem(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): UserMessageItem {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new UserMessageItem(content)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n}\n","import { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class DeveloperMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"developer\"\n\treadonly content: InputText\n\n\tprivate constructor(content: InputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n\n\tstatic create(text: string): DeveloperMessageItem {\n\t\tconst content = InputText.create(text)\n\t\treturn new DeveloperMessageItem(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): DeveloperMessageItem {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new DeveloperMessageItem(content)\n\t}\n}\n","import { ItemContent } from \"@domain/model-context/context-item/item-content/item-content\"\n\nexport class OutputText extends ItemContent {\n\treadonly type = \"output_text\"\n\n\tprivate constructor(public readonly text: string) {\n\t\tsuper()\n\t}\n\n\tstatic rehydrate(data: { text: string }): OutputText {\n\t\treturn new OutputText(data.text)\n\t}\n\n\ttoJSON(): any[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttype: this.type,\n\t\t\t\ttext: this.text,\n\t\t\t},\n\t\t]\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { OutputText } from \"@domain/model-context/context-item/item-content/output-text\"\n\nexport class ModelMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"assistant\"\n\treadonly content: OutputText\n\n\tprivate constructor(content: OutputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\tstatic rehydrate(data: { text: string }): ModelMessageItem {\n\t\tconst content = OutputText.rehydrate(data)\n\t\treturn new ModelMessageItem(content)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class FunctionCallItem extends ContextItem {\n\treadonly type = \"function_call\"\n\treadonly callId: string\n\treadonly name: string\n\treadonly args: string\n\n\tprivate constructor(callId: string, name: string, args: string) {\n\t\tsuper()\n\t\tthis.callId = callId\n\t\tthis.name = name\n\t\tthis.args = args\n\t}\n\n\tstatic rehydrate(data: { callId: string; name: string; args: string }): FunctionCallItem {\n\t\treturn new FunctionCallItem(data.callId, data.name, data.args)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcall_id: this.callId,\n\t\t\tname: this.name,\n\t\t\targuments: this.args,\n\t\t}\n\t}\n}\n","import { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { SummaryText } from \"@domain/model-context/context-item/item-content/summary-text\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class ReasoningItem extends ContextItem {\n\treadonly type = \"reasoning\"\n\treadonly content: InputText | undefined\n\treadonly encryptedContent: string | undefined\n\treadonly summary: SummaryText[]\n\n\tprivate constructor(\n\t\tcontent: InputText | undefined,\n\t\tencryptedContent?: string | undefined,\n\t\tsummary: SummaryText[] = [],\n\t) {\n\t\tsuper()\n\t\tthis.content = content\n\t\tthis.encryptedContent = encryptedContent\n\t\tthis.summary = summary\n\t}\n\n\tstatic rehydrate(data: {\n\t\tcontent: InputText | undefined\n\t\tencryptedContent: string | undefined\n\t\tsummary: SummaryText[]\n\t}): ReasoningItem {\n\t\treturn new ReasoningItem(data.content, data.encryptedContent, data.summary)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcontent: this.content?.toJSON(),\n\t\t\tencryptedContent: this.encryptedContent,\n\t\t\tsummary: this.summary.map((s) => s.toJSON()),\n\t\t}\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\n\nexport class FunctionCallOutputItem extends ContextItem {\n\treadonly type = \"function_call_output\"\n\treadonly callId: string\n\treadonly output: InputText\n\n\tprivate constructor(callId: string, output: InputText) {\n\t\tsuper()\n\t\tthis.callId = callId\n\t\tthis.output = output\n\t}\n\n\tstatic create(callId: string, output: string): FunctionCallOutputItem {\n\t\tconst outputText = InputText.create(output)\n\t\treturn new FunctionCallOutputItem(callId, outputText)\n\t}\n\n\tstatic rehydrate(data: { callId: string; output: InputText }): FunctionCallOutputItem {\n\t\treturn new FunctionCallOutputItem(data.callId, data.output)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcall_id: this.callId,\n\t\t\toutput: this.output.toJSON(),\n\t\t}\n\t}\n}\n","import { ReasoningEffort } from \"@domain/generative-model/capability/reasoning-effort\"\n\nexport type OpenAIReasoningEffortType = \"xhigh\" | \"high\" | \"medium\" | \"low\" | \"none\"\n\nexport class OpenAIReasoningEffort implements ReasoningEffort<OpenAIReasoningEffortType> {\n\treasoningEffort: OpenAIReasoningEffortType\n\n\tconstructor(reasoningEffort: OpenAIReasoningEffortType) {\n\t\tthis.reasoningEffort = reasoningEffort\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.reasoningEffort = effort\n\t}\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\tif (!this.reasoningEffort) {\n\t\t\tthrow new Error(\"Reasoning effort not supported\")\n\t\t}\n\t\treturn this.reasoningEffort\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { StructuredOutputFormat } from \"@domain/generative-model/capability/structured-output\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt54Nano implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.4-nano\",\n\t\tprovider: \"openai\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 400_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t\tsupportStructuredOutput: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tprivate structuredOutput: StructuredOutputFormat | undefined = undefined\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetStructuredOutput(format: StructuredOutputFormat | undefined): void {\n\t\tthis.structuredOutput = format\n\t}\n\n\tgetStructuredOutput(): StructuredOutputFormat | undefined {\n\t\treturn this.structuredOutput\n\t}\n\n\thasStructuredOutput(): boolean {\n\t\treturn this.structuredOutput !== undefined\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { StructuredOutputFormat } from \"@domain/generative-model/capability/structured-output\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt54 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.4\",\n\t\tprovider: \"openai\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 1_050_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t\tsupportStructuredOutput: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tprivate structuredOutput: StructuredOutputFormat | undefined = undefined\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetStructuredOutput(format: StructuredOutputFormat | undefined): void {\n\t\tthis.structuredOutput = format\n\t}\n\n\tgetStructuredOutput(): StructuredOutputFormat | undefined {\n\t\treturn this.structuredOutput\n\t}\n\n\thasStructuredOutput(): boolean {\n\t\treturn this.structuredOutput !== undefined\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { StructuredOutputFormat } from \"@domain/generative-model/capability/structured-output\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt54Mini implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.4-mini\",\n\t\tprovider: \"openai\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 400_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t\tsupportStructuredOutput: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tprivate structuredOutput: StructuredOutputFormat | undefined = undefined\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetStructuredOutput(format: StructuredOutputFormat | undefined): void {\n\t\tthis.structuredOutput = format\n\t}\n\n\tgetStructuredOutput(): StructuredOutputFormat | undefined {\n\t\treturn this.structuredOutput\n\t}\n\n\thasStructuredOutput(): boolean {\n\t\treturn this.structuredOutput !== undefined\n\t}\n}\n","export class InputTokenDetails {\n\treadonly cached_tokens: number\n\n\tconstructor(cached_tokens: number) {\n\t\tthis.cached_tokens = cached_tokens\n\t}\n}\n\nexport class OutputTokenDetails {\n\treadonly reasoning_tokens: number\n\n\tconstructor(reasoning_tokens: number) {\n\t\tthis.reasoning_tokens = reasoning_tokens\n\t}\n}\n\nexport class TokenUsage {\n\treadonly inputTokens: number\n\treadonly outputTokens: number\n\treadonly totalTokens: number\n\treadonly inputTokenDetails: InputTokenDetails\n\treadonly outputTokenDetails: OutputTokenDetails\n\n\tconstructor(\n\t\tinputTokens: number,\n\t\toutputTokens: number,\n\t\ttotalTokens: number,\n\t\tinputTokenDetails: InputTokenDetails,\n\t\toutputTokenDetails: OutputTokenDetails,\n\t) {\n\t\tthis.inputTokens = inputTokens\n\t\tthis.outputTokens = outputTokens\n\t\tthis.totalTokens = totalTokens\n\t\tthis.inputTokenDetails = inputTokenDetails\n\t\tthis.outputTokenDetails = outputTokenDetails\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ModelContextRepository } from \"@domain/model-context/model-context-repository\"\n\nexport class InMemoryModelContextRepository implements ModelContextRepository {\n\tprivate readonly store = new Map<string, ModelContext>()\n\tprivate readonly projectIndex = new Map<string, Set<string>>()\n\n\tasync save(context: ModelContext): Promise<void> {\n\t\tconst existing = this.store.get(context.id)\n\t\tif (existing && existing.projectId !== context.projectId) {\n\t\t\tconst prevSet = this.projectIndex.get(existing.projectId)\n\t\t\tprevSet?.delete(existing.id)\n\t\t\tif (prevSet && prevSet.size === 0) this.projectIndex.delete(existing.projectId)\n\t\t}\n\n\t\tthis.store.set(context.id, this.clone(context))\n\n\t\tlet set = this.projectIndex.get(context.projectId)\n\t\tif (!set) {\n\t\t\tset = new Set<string>()\n\t\t\tthis.projectIndex.set(context.projectId, set)\n\t\t}\n\t\tset.add(context.id)\n\t}\n\n\tasync get(id: string): Promise<ModelContext> {\n\t\tconst context = this.store.get(id)\n\t\tif (!context) {\n\t\t\tthrow new Error(`Context not found: ${id}`)\n\t\t}\n\t\treturn this.clone(context)\n\t}\n\n\tasync getByProjectId(projectId: string): Promise<ModelContext[]> {\n\t\tconst ids = this.projectIndex.get(projectId)\n\t\tif (!ids || ids.size === 0) return []\n\t\treturn [...ids]\n\t\t\t.map((id) => this.store.get(id))\n\t\t\t.filter((c): c is ModelContext => Boolean(c))\n\t\t\t.map((c) => this.clone(c))\n\t}\n\n\tprivate clone(context: ModelContext): ModelContext {\n\t\treturn ModelContext.rehydrate({\n\t\t\tid: context.id,\n\t\t\tprojectId: context.projectId,\n\t\t\titems: [...context.getItems()],\n\t\t})\n\t}\n}\n","import { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class SystemMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"system\"\n\treadonly content: InputText\n\n\tprivate constructor(content: InputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n\n\tstatic create(text: string): SystemMessageItem {\n\t\tconst content = InputText.create(text)\n\t\treturn new SystemMessageItem(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): SystemMessageItem {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new SystemMessageItem(content)\n\t}\n}\n","import { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { AgenticEnvironment } from \"./agentic-environment\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { AgenticError } from \"./errors/base-error\"\n\ntype ParticipantClassConstructor = new (...args: any[]) => Participant\n\nexport abstract class Participant {\n\tprivate environments: AgenticEnvironment[] = []\n\tprotected listens: ParticipantClassConstructor[] = []\n\tprivate active: Map<AgenticEnvironment, boolean> = new Map()\n\n\tjoin(environment: AgenticEnvironment) {\n\t\tif (this.isJoinedTo(environment)) {\n\t\t\treturn\n\t\t}\n\t\tenvironment.subscribe(this)\n\t\tthis.environments.push(environment)\n\t\tthis.active.set(environment, true)\n\t}\n\n\tleave(environment: AgenticEnvironment) {\n\t\tif (!this.isJoinedTo(environment)) {\n\t\t\treturn\n\t\t}\n\t\tenvironment.unsubscribe(this)\n\t\tthis.environments = this.environments.filter((e) => e !== environment)\n\t\tthis.active.delete(environment)\n\t}\n\n\tisJoinedTo(environment: AgenticEnvironment): boolean {\n\t\treturn this.environments.includes(environment)\n\t}\n\n\tgetEnvironments(): AgenticEnvironment[] {\n\t\treturn this.environments\n\t}\n\n\tgetListeners(): ParticipantClassConstructor[] {\n\t\treturn this.listens\n\t}\n\n\tgetEnvironmentState(environment: AgenticEnvironment) {\n\t\treturn this.active.get(environment)\n\t}\n\n\tmarkInactive(environment: AgenticEnvironment) {\n\t\tif (this.active.has(environment)) {\n\t\t\tthis.active.set(environment, false)\n\t\t}\n\t}\n\n\tmarkActive(environment: AgenticEnvironment) {\n\t\tif (this.active.has(environment)) {\n\t\t\tthis.active.set(environment, true)\n\t\t}\n\t}\n\n\tabstract onParticipantJoined(participant: Participant): Promise<void> | void\n\n\tabstract onParticipantLeft(participant: Participant): Promise<void> | void\n\n\tabstract onJoined(): Promise<void> | void\n\n\tabstract onLeft(): Promise<void> | void\n\n\tabstract onFunctionCall(item: FunctionCallItem): Promise<void> | void\n\n\tabstract onExternalFunctionCall(source: Participant, item: FunctionCallItem): Promise<void> | void\n\n\tabstract onFunctionCallOutput(item: FunctionCallOutputItem): Promise<void> | void\n\n\tabstract onExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem): Promise<void> | void\n\n\tabstract onReasoning(item: ReasoningItem): Promise<void> | void\n\n\tabstract onExternalReasoning(source: Participant, item: ReasoningItem): Promise<void> | void\n\n\tabstract onModelMessage(item: ModelMessageItem): Promise<void> | void\n\n\tabstract onExternalModelMessage(source: Participant, item: ModelMessageItem): Promise<void> | void\n\n\tabstract onMessage(message: string): Promise<void> | void\n\n\tabstract onInternalEvent(item: SemanticEvent<unknown>): Promise<void> | void\n\n\tabstract onExternalEvent(source: Participant, item: SemanticEvent<unknown>): Promise<void> | void\n\n\tabstract onError(error: AgenticError): void\n\n\tabstract onParticipantError(source: Participant, error: AgenticError): void\n}\n","import type { AgenticEnvironment } from \"../agentic-environment\"\nimport type { Participant } from \"../participant\"\n\ninterface AgenticErrorOpts {\n\tmessage: string\n\tstack?: string\n\tsource?: Participant\n\tenviornment?: AgenticEnvironment\n}\n\nexport class AgenticError extends Error {\n\tprivate source?: Participant\n\tprivate environment?: AgenticEnvironment\n\n\tconstructor({ message, stack, source, enviornment }: AgenticErrorOpts) {\n\t\tsuper()\n\n\t\tthis.message = message\n\t\tthis.stack = stack\n\t\tthis.source = source\n\t\tthis.environment = enviornment\n\t}\n\n\tgetSource() {\n\t\treturn this.source\n\t}\n\n\tgetEnvironment() {\n\t\treturn this.environment\n\t}\n}\n","import { Participant } from \"@domain/agentic-environment/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { AgenticError } from \"./errors/base-error\"\n\nexport interface AgenticEnvironmentOptions {\n\tsilent?: boolean\n}\n\nexport class AgenticEnvironment {\n\tprotected subscribers: Participant[] = []\n\tprivate name?: string\n\tprivate options?: AgenticEnvironmentOptions\n\tprivate showLogs?: boolean\n\n\tconstructor(name?: string, opts?: AgenticEnvironmentOptions) {\n\t\tthis.name = name\n\t\tthis.options = opts\n\n\t\tthis.showLogs = this.options?.silent !== false\n\t}\n\n\tsubscribe(participant: Participant) {\n\t\tthis.subscribers.push(participant)\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (participant === subscriber) {\n\t\t\t\tparticipant.onJoined()\n\t\t\t} else {\n\t\t\t\tsubscriber.onParticipantJoined(participant)\n\t\t\t}\n\t\t}\n\t}\n\n\tunsubscribe(participant: Participant) {\n\t\tconst exists = this.subscribers.includes(participant)\n\n\t\tif (!exists) {\n\t\t\treturn\n\t\t}\n\n\t\tparticipant.onLeft()\n\n\t\tthis.subscribers = this.subscribers.filter((p) => p !== participant)\n\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tsubscriber.onParticipantLeft(participant)\n\t\t}\n\t}\n\n\tdeliverFunctionCall(source: Participant, item: FunctionCallItem): void {\n\t\tthis.deliverToSubscribers(source, {\n\t\t\tinternal: (src) => src.onFunctionCall(item),\n\t\t\texternal: (sub) => sub.onExternalFunctionCall(source, item),\n\t\t})\n\t}\n\n\tdeliverModelMessage(source: Participant, item: ModelMessageItem): void {\n\t\tthis.deliverToSubscribers(source, {\n\t\t\tinternal: (src) => src.onModelMessage(item),\n\t\t\texternal: (sub) => sub.onExternalModelMessage(source, item),\n\t\t})\n\t}\n\n\tdeliverReasoning(source: Participant, item: ReasoningItem): void {\n\t\tthis.deliverToSubscribers(source, {\n\t\t\tinternal: (src) => src.onReasoning(item),\n\t\t\texternal: (sub) => sub.onExternalReasoning(source, item),\n\t\t})\n\t}\n\n\tdeliverFunctionCallOutput(source: Participant, item: FunctionCallOutputItem): void {\n\t\tthis.deliverToSubscribers(source, {\n\t\t\tinternal: (src) => src.onFunctionCallOutput(item),\n\t\t\texternal: (sub) => sub.onExternalFunctionCallOutput(source, item),\n\t\t})\n\t}\n\n\tdeliverMessage(source: Participant, message: string): void {\n\t\tthis.deliverToSubscribers(source, {\n\t\t\texternal: (sub) => sub.onMessage(message),\n\t\t})\n\t}\n\n\tdeliverSemanticEvent(source: Participant, item: SemanticEvent<unknown>): void {\n\t\tthis.deliverToSubscribers(source, {\n\t\t\tinternal: (src) => src.onInternalEvent(item),\n\t\t\texternal: (sub) => sub.onExternalEvent(source, item),\n\t\t})\n\t}\n\n\tdeliverError(source: Participant, error: AgenticError) {\n\t\tthis.deliverToSubscribers(source, {\n\t\t\tinternal: (src) => {\n\t\t\t\ttry {\n\t\t\t\t\tsrc.onError(error)\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (this.showLogs) {\n\t\t\t\t\t\tconsole.warn(`[AgenticEnvironment] Participant.onError() failed. Reason: ${error as Error}\\n ${JSON.stringify({ error }, null, 2)}`)\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tsrc.markInactive(this)\n\t\t\t\t}\n\t\t\t},\n\t\t\texternal: (sub) => {\n\t\t\t\ttry {\n\t\t\t\t\tsub.onParticipantError(source, error)\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (this.showLogs) {\n\t\t\t\t\t\tconsole.warn(`[AgenticEnvironment] Participant.onError() failed. Reason: ${error as Error}\\n ${JSON.stringify({ error }, null, 2)}`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\t}\n\n\tprivate getListeningParticipants(source: Participant) {\n\t\treturn this.subscribers.filter(\n\t\t\t(sub) =>\n\t\t\t\tsub !== source &&\n\t\t\t\t(sub.getListeners().length === 0 || sub.getListeners().some((listener) => source instanceof listener)),\n\t\t)\n\t}\n\n\tprivate deliverToSubscribers(\n\t\tsource: Participant,\n\t\thandlers: { internal?: (src: Participant) => void; external: (sub: Participant) => void },\n\t) {\n\t\tconst authorizedListeners = this.getListeningParticipants(source)\n\n\t\tfor (const subscriber of this.subscribers) {\n\n\t\t\tconst isActive = subscriber.getEnvironmentState(this)\n\n\t\t\tif (isActive) {\n\t\t\t\ttry {\n\t\t\t\t\tif (subscriber === source) {\n\t\t\t\t\t\thandlers?.internal?.(subscriber)\n\t\t\t\t\t} else if (authorizedListeners.includes(subscriber)) {\n\t\t\t\t\t\thandlers?.external?.(subscriber)\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\n\t\t\t\t\tthis.handleError(subscriber, error as Error)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate handleError(subscriber: Participant, error: Error) {\n\t\tif (error instanceof AgenticError) {\n\t\t\treturn this.deliverError(subscriber, error)\n\t\t}\n\n\t\tconst agenticError = new AgenticError({\n\t\t\tmessage: error.message,\n\t\t\tstack: error.stack,\n\t\t\tenviornment: this,\n\t\t\tsource: subscriber,\n\t\t})\n\n\t\treturn this.deliverError(subscriber, agenticError)\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { StructuredOutputFormat } from \"@domain/generative-model/capability/structured-output\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt55 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.5\",\n\t\tprovider: \"openai\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 1_050_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t\tsupportStructuredOutput: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tprivate structuredOutput: StructuredOutputFormat | undefined = undefined\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetStructuredOutput(format: StructuredOutputFormat | undefined): void {\n\t\tthis.structuredOutput = format\n\t}\n\n\tgetStructuredOutput(): StructuredOutputFormat | undefined {\n\t\treturn this.structuredOutput\n\t}\n\n\thasStructuredOutput(): boolean {\n\t\treturn this.structuredOutput !== undefined\n\t}\n}\n","export class SemanticEvent<T> {\n\treadonly type: string\n\treadonly data: T\n\n\tconstructor(type: string, data: T) {\n\t\tthis.type = type\n\t\tthis.data = data\n\t}\n\n\tgetType(): string {\n\t\treturn this.type\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\n\nexport class InferenceRequest {\n\treadonly model: GenerativeModel\n\treadonly context: ModelContext\n\n\tconstructor(model: GenerativeModel, context: ModelContext) {\n\t\tthis.model = model\n\t\tthis.context = context\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { TokenUsage } from \"@domain/generative-model/token-usage\"\n\nexport class InferenceResponse {\n\treadonly contextItems: ContextItem[]\n\treadonly tokenUsage?: TokenUsage\n\n\tconstructor(contextItems: ContextItem[], tokenUsage: TokenUsage | undefined) {\n\t\tthis.contextItems = contextItems\n\t\tthis.tokenUsage = tokenUsage\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { InferenceRequest } from \"@domain/agentic-environment/inference/request\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { Endpoint } from \"@domain/generative-model/runtime\"\nimport OpenAI from \"openai\"\n\nexport class OpenAIResponses implements Endpoint {\n\tprivate readonly client: OpenAI\n\n\tconstructor() {\n\t\tthis.client = new OpenAI()\n\t}\n\n\tasync infer(inferenceRequest: InferenceRequest): Promise<InferenceResponse> {\n\t\tconst request = this.buildRequest(inferenceRequest)\n\n\t\tconst response = await this.client.responses.create(request)\n\n\t\tconst contextItems = this.extractContextItems(response)\n\t\tconst tokenUsage = this.extractTokenUsage(response)\n\t\treturn new InferenceResponse(contextItems, tokenUsage)\n\t}\n\n\tasync *stream(\n\t\tinferenceRequest: InferenceRequest,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<SemanticEvent<unknown>> {\n\t\tconst specification = inferenceRequest.model.specification\n\t\tif (!specification.supportStreaming) {\n\t\t\tthrow new Error(\"Streaming is not supported for this model\")\n\t\t}\n\n\t\tconst request = { ...this.buildRequest(inferenceRequest), stream: true }\n\t\tconst response: any = await this.client.responses.create(request)\n\n\t\tfor await (const event of response) {\n\t\t\tif (signal?.aborted) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tyield new SemanticEvent(event.type, event)\n\t\t}\n\t}\n\n\tprivate buildRequest(inferenceRequest: InferenceRequest): any {\n\t\tconst specification = inferenceRequest.model.specification\n\t\tconst input = this.mapContextToRequest(inferenceRequest.context)\n\n\t\tconst request: any = {\n\t\t\tmodel: specification.name,\n\t\t\tinput: input,\n\t\t}\n\n\t\tif (specification.supportFunctionCalling && inferenceRequest.model.getTools().length > 0) {\n\t\t\trequest.tools = inferenceRequest.model.getTools().map((tool) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: tool.type,\n\t\t\t\t\tname: tool.name,\n\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\tparameters: tool.parameters,\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (specification.supportReasoningEffort) {\n\t\t\trequest.reasoning = {\n\t\t\t\teffort: inferenceRequest.model.getReasoningEffort(),\n\t\t\t}\n\t\t}\n\n\t\tif (inferenceRequest.model.hasStructuredOutput()) {\n\t\t\tif (!specification.supportStructuredOutput) {\n\t\t\t\tthrow new Error(`Structured output is not supported for model: ${specification.name}`)\n\t\t\t}\n\t\t\tconst format = inferenceRequest.model.getStructuredOutput()!\n\t\t\trequest.text = {\n\t\t\t\tformat: {\n\t\t\t\t\ttype: \"json_schema\",\n\t\t\t\t\tname: format.name ?? \"response\",\n\t\t\t\t\tschema: format.schema,\n\t\t\t\t\tstrict: format.strict ?? true,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\treturn request\n\t}\n\n\textractTokenUsage(response: OpenAI.Responses.Response): TokenUsage | undefined {\n\t\tif (!response.usage) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn new TokenUsage(\n\t\t\tresponse.usage.input_tokens,\n\t\t\tresponse.usage.output_tokens,\n\t\t\tresponse.usage.total_tokens,\n\t\t\tnew InputTokenDetails(response.usage.input_tokens_details.cached_tokens),\n\t\t\tnew OutputTokenDetails(response.usage.output_tokens_details.reasoning_tokens),\n\t\t)\n\t}\n\n\tmapContextToRequest(context: ModelContext): any[] {\n\t\treturn context.getItems().map((item) => item.toJSON())\n\t}\n\n\textractContextItems(response: any): ContextItem[] {\n\t\treturn response.output.map((item: any) => {\n\t\t\tif (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\treturn ModelMessageItem.rehydrate(item.content[0] as { text: string })\n\t\t\t}\n\t\t\tif (item.type === \"function_call\") {\n\t\t\t\treturn FunctionCallItem.rehydrate({\n\t\t\t\t\tcallId: item.call_id,\n\t\t\t\t\tname: item.name,\n\t\t\t\t\targs: item.arguments,\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\treturn ReasoningItem.rehydrate(item)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { SystemMessageItem } from \"@domain/model-context/context-item/client-item/system-message\"\nimport { UserMessageItem } from \"@domain/model-context/context-item/client-item/user-message\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { InferenceRequest } from \"@domain/agentic-environment/inference/request\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport Anthropic from \"@anthropic-ai/sdk\"\nimport { Endpoint } from \"@domain/generative-model/runtime\"\n\nexport class AnthropicMessages implements Endpoint {\n\tprivate readonly client: Anthropic\n\n\tconstructor() {\n\t\tthis.client = new Anthropic()\n\t}\n\n\tasync infer(inferenceRequest: InferenceRequest): Promise<InferenceResponse> {\n\t\tconst response = await this.client.messages.create(this.buildRequest(inferenceRequest))\n\n\t\tconst contextItems = this.extractContextItems(response)\n\t\tconst tokenUsage = this.extractTokenUsage(response)\n\t\treturn new InferenceResponse(contextItems, tokenUsage)\n\t}\n\n\tasync *stream(\n\t\tinferenceRequest: InferenceRequest,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<SemanticEvent<unknown>> {\n\t\tconst stream: any = await this.client.messages.create({\n\t\t\t...this.buildRequest(inferenceRequest),\n\t\t\tstream: true,\n\t\t})\n\n\t\tfor await (const event of stream) {\n\t\t\tif (signal?.aborted) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tyield new SemanticEvent(event.type, event)\n\t\t}\n\t}\n\n\tprivate buildRequest(inferenceRequest: InferenceRequest): any {\n\t\tconst { messages, system } = this.mapContextToRequest(inferenceRequest.context)\n\n\t\tconst specification = inferenceRequest.model.specification\n\n\t\tconst request: any = {\n\t\t\tmodel: specification.name,\n\t\t\tmax_tokens: specification.maxOutputTokens,\n\t\t\tmessages: messages,\n\t\t}\n\n\t\tif (system) {\n\t\t\trequest.system = system\n\t\t}\n\n\t\tif (specification.supportFunctionCalling && inferenceRequest.model.getTools().length > 0) {\n\t\t\trequest.tools = inferenceRequest.model.getTools().map((tool) => {\n\t\t\t\treturn {\n\t\t\t\t\tname: tool.name,\n\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\tinput_schema: tool.parameters,\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (specification.supportReasoningEffort) {\n\t\t\tconst effort = inferenceRequest.model.getReasoningEffort()\n\t\t\tconst budgets: Record<string, number> = { low: 1_024, medium: 4_096, high: 8_192 }\n\t\t\tconst budget = budgets[effort]\n\t\t\tif (budget !== undefined) {\n\t\t\t\trequest.thinking = {\n\t\t\t\t\ttype: \"enabled\",\n\t\t\t\t\tbudget_tokens: Math.min(budget, specification.maxOutputTokens - 1),\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (inferenceRequest.model.hasStructuredOutput()) {\n\t\t\tif (!specification.supportStructuredOutput) {\n\t\t\t\tthrow new Error(`Structured output is not supported for model: ${specification.name}`)\n\t\t\t}\n\t\t\tconst format = inferenceRequest.model.getStructuredOutput()!\n\t\t\trequest.output_config = {\n\t\t\t\tformat: {\n\t\t\t\t\ttype: \"json_schema\",\n\t\t\t\t\tjson_schema: format.schema,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\treturn request\n\t}\n\n\textractTokenUsage(response: Anthropic.Messages.Message): TokenUsage | undefined {\n\t\tif (!response.usage) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn new TokenUsage(\n\t\t\tresponse.usage.input_tokens,\n\t\t\tresponse.usage.output_tokens,\n\t\t\tresponse.usage.input_tokens + response.usage.output_tokens,\n\t\t\tnew InputTokenDetails(\n\t\t\t\t(response.usage.cache_creation_input_tokens ?? 0) + (response.usage.cache_read_input_tokens ?? 0),\n\t\t\t),\n\t\t\tnew OutputTokenDetails(0),\n\t\t)\n\t}\n\n\tmapContextToRequest(context: ModelContext): { messages: any[]; system?: string } {\n\t\tconst messages: any[] = []\n\t\tconst system: string[] = []\n\n\t\tfor (const item of context.getItems()) {\n\t\t\tif (item instanceof DeveloperMessageItem || item instanceof SystemMessageItem) {\n\t\t\t\tsystem.push(item.content.text)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof UserMessageItem) {\n\t\t\t\tthis.addContentBlock(messages, \"user\", { type: \"text\", text: item.content.text })\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof ModelMessageItem) {\n\t\t\t\tthis.addContentBlock(messages, \"assistant\", { type: \"text\", text: item.content.text })\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof FunctionCallItem) {\n\t\t\t\tlet input: any\n\t\t\t\ttry {\n\t\t\t\t\tinput = JSON.parse(item.args)\n\t\t\t\t} catch {\n\t\t\t\t\tinput = item.args\n\t\t\t\t}\n\t\t\t\tthis.addContentBlock(messages, \"assistant\", {\n\t\t\t\t\ttype: \"tool_use\",\n\t\t\t\t\tid: item.callId,\n\t\t\t\t\tname: item.name,\n\t\t\t\t\tinput: input,\n\t\t\t\t})\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof FunctionCallOutputItem) {\n\t\t\t\tthis.addContentBlock(messages, \"user\", {\n\t\t\t\t\ttype: \"tool_result\",\n\t\t\t\t\ttool_use_id: item.callId,\n\t\t\t\t\tcontent: item.output.text,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tmessages: messages,\n\t\t\tsystem: system.length > 0 ? system.join(\"\\n\\n\") : undefined,\n\t\t}\n\t}\n\n\textractContextItems(response: Anthropic.Messages.Message): ContextItem[] {\n\t\tconst items: ContextItem[] = []\n\n\t\tfor (const block of response.content as any[]) {\n\t\t\tif (block.type === \"text\") {\n\t\t\t\titems.push(ModelMessageItem.rehydrate({ text: block.text }))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (block.type === \"tool_use\") {\n\t\t\t\titems.push(\n\t\t\t\t\tFunctionCallItem.rehydrate({\n\t\t\t\t\t\tcallId: block.id,\n\t\t\t\t\t\tname: block.name,\n\t\t\t\t\t\targs: JSON.stringify(block.input ?? {}),\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (block.type === \"thinking\") {\n\t\t\t\titems.push(\n\t\t\t\t\tReasoningItem.rehydrate({\n\t\t\t\t\t\tcontent: block.thinking ? InputText.rehydrate({ text: block.thinking }) : undefined,\n\t\t\t\t\t\tencryptedContent: undefined,\n\t\t\t\t\t\tsummary: [],\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\treturn items\n\t}\n\n\tprivate addContentBlock(messages: any[], role: \"user\" | \"assistant\", block: any): void {\n\t\tconst lastMessage = messages[messages.length - 1]\n\t\tif (lastMessage?.role === role) {\n\t\t\tlastMessage.content.push(block)\n\t\t\treturn\n\t\t}\n\n\t\tmessages.push({\n\t\t\trole: role,\n\t\t\tcontent: [block],\n\t\t})\n\t}\n}\n","import { ReasoningEffort } from \"@domain/generative-model/capability/reasoning-effort\"\n\nexport type AnthropicReasoningEffortType = \"high\" | \"medium\" | \"low\" | \"none\"\n\nexport class AnthropicReasoningEffort implements ReasoningEffort<AnthropicReasoningEffortType> {\n\treasoningEffort: AnthropicReasoningEffortType\n\n\tconstructor(reasoningEffort: AnthropicReasoningEffortType) {\n\t\tthis.reasoningEffort = reasoningEffort\n\t}\n\n\tsetReasoningEffort(effort: AnthropicReasoningEffortType): void {\n\t\tthis.reasoningEffort = effort\n\t}\n\n\tgetReasoningEffort(): AnthropicReasoningEffortType {\n\t\tif (!this.reasoningEffort) {\n\t\t\tthrow new Error(\"Reasoning effort not supported\")\n\t\t}\n\t\treturn this.reasoningEffort\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { StructuredOutputFormat } from \"@domain/generative-model/capability/structured-output\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { AnthropicReasoningEffort, AnthropicReasoningEffortType } from \"@infra/providers/anthropic/reasoning-effort\"\n\nexport class ClaudeOpus48 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"claude-opus-4-8\",\n\t\tprovider: \"anthropic\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as AnthropicReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 200_000,\n\t\tmaxOutputTokens: 32_000,\n\t\tsupportFunctionCalling: true,\n\t\tsupportStructuredOutput: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tprivate structuredOutput: StructuredOutputFormat | undefined = undefined\n\n\tprivate readonly effort: AnthropicReasoningEffort = new AnthropicReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetReasoningEffort(effort: AnthropicReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): AnthropicReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetStructuredOutput(format: StructuredOutputFormat | undefined): void {\n\t\tthis.structuredOutput = format\n\t}\n\n\tgetStructuredOutput(): StructuredOutputFormat | undefined {\n\t\treturn this.structuredOutput\n\t}\n\n\thasStructuredOutput(): boolean {\n\t\treturn this.structuredOutput !== undefined\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { StructuredOutputFormat } from \"@domain/generative-model/capability/structured-output\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { AnthropicReasoningEffort, AnthropicReasoningEffortType } from \"@infra/providers/anthropic/reasoning-effort\"\n\nexport class ClaudeOpus47 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"claude-opus-4-7\",\n\t\tprovider: \"anthropic\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as AnthropicReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 200_000,\n\t\tmaxOutputTokens: 32_000,\n\t\tsupportFunctionCalling: true,\n\t\tsupportStructuredOutput: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tprivate structuredOutput: StructuredOutputFormat | undefined = undefined\n\n\tprivate readonly effort: AnthropicReasoningEffort = new AnthropicReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetReasoningEffort(effort: AnthropicReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): AnthropicReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetStructuredOutput(format: StructuredOutputFormat | undefined): void {\n\t\tthis.structuredOutput = format\n\t}\n\n\tgetStructuredOutput(): StructuredOutputFormat | undefined {\n\t\treturn this.structuredOutput\n\t}\n\n\thasStructuredOutput(): boolean {\n\t\treturn this.structuredOutput !== undefined\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { StructuredOutputFormat } from \"@domain/generative-model/capability/structured-output\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { AnthropicReasoningEffort, AnthropicReasoningEffortType } from \"@infra/providers/anthropic/reasoning-effort\"\n\nexport class ClaudeSonnet46 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"claude-sonnet-4-6\",\n\t\tprovider: \"anthropic\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as AnthropicReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 200_000,\n\t\tmaxOutputTokens: 64_000,\n\t\tsupportFunctionCalling: true,\n\t\tsupportStructuredOutput: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tprivate structuredOutput: StructuredOutputFormat | undefined = undefined\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tprivate readonly effort: AnthropicReasoningEffort = new AnthropicReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetReasoningEffort(effort: AnthropicReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): AnthropicReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetStructuredOutput(format: StructuredOutputFormat | undefined): void {\n\t\tthis.structuredOutput = format\n\t}\n\n\tgetStructuredOutput(): StructuredOutputFormat | undefined {\n\t\treturn this.structuredOutput\n\t}\n\n\thasStructuredOutput(): boolean {\n\t\treturn this.structuredOutput !== undefined\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { StructuredOutputFormat } from \"@domain/generative-model/capability/structured-output\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { AnthropicReasoningEffort, AnthropicReasoningEffortType } from \"@infra/providers/anthropic/reasoning-effort\"\n\nexport class ClaudeHaiku45 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"claude-haiku-4-5\",\n\t\tprovider: \"anthropic\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as AnthropicReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 200_000,\n\t\tmaxOutputTokens: 64_000,\n\t\tsupportFunctionCalling: true,\n\t\tsupportStructuredOutput: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tprivate structuredOutput: StructuredOutputFormat | undefined = undefined\n\n\tprivate readonly effort: AnthropicReasoningEffort = new AnthropicReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetReasoningEffort(effort: AnthropicReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): AnthropicReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetStructuredOutput(format: StructuredOutputFormat | undefined): void {\n\t\tthis.structuredOutput = format\n\t}\n\n\tgetStructuredOutput(): StructuredOutputFormat | undefined {\n\t\treturn this.structuredOutput\n\t}\n\n\thasStructuredOutput(): boolean {\n\t\treturn this.structuredOutput !== undefined\n\t}\n}\n","import { ReasoningEffort } from \"@domain/generative-model/capability/reasoning-effort\"\n\n/**\n * DeepSeek V4 reasoning levels. `\"none\"` selects non-thinking mode\n * (`thinking: { type: \"disabled\" }`); any other value enables thinking\n * mode and is forwarded as the `reasoning_effort` request parameter.\n */\nexport type DeepSeekReasoningEffortType = \"max\" | \"high\" | \"medium\" | \"low\" | \"none\"\n\nexport class DeepSeekReasoningEffort implements ReasoningEffort<DeepSeekReasoningEffortType> {\n\treasoningEffort: DeepSeekReasoningEffortType\n\n\tconstructor(reasoningEffort: DeepSeekReasoningEffortType) {\n\t\tthis.reasoningEffort = reasoningEffort\n\t}\n\n\tsetReasoningEffort(effort: DeepSeekReasoningEffortType): void {\n\t\tthis.reasoningEffort = effort\n\t}\n\n\tgetReasoningEffort(): DeepSeekReasoningEffortType {\n\t\tif (!this.reasoningEffort) {\n\t\t\tthrow new Error(\"Reasoning effort not supported\")\n\t\t}\n\t\treturn this.reasoningEffort\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { StructuredOutputFormat } from \"@domain/generative-model/capability/structured-output\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { DeepSeekReasoningEffort, DeepSeekReasoningEffortType } from \"@infra/providers/deepseek/reasoning-effort\"\n\nexport class DeepSeekV4Flash implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"deepseek-v4-flash\",\n\t\tprovider: \"deepseek\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"high\" as DeepSeekReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 1_000_000,\n\t\tmaxOutputTokens: 384_000,\n\t\tsupportFunctionCalling: true,\n\t\tsupportStructuredOutput: false,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tprivate structuredOutput: StructuredOutputFormat | undefined = undefined\n\n\tprivate readonly effort: DeepSeekReasoningEffort = new DeepSeekReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetReasoningEffort(effort: DeepSeekReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): DeepSeekReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetStructuredOutput(format: StructuredOutputFormat | undefined): void {\n\t\tthis.structuredOutput = format\n\t}\n\n\tgetStructuredOutput(): StructuredOutputFormat | undefined {\n\t\treturn this.structuredOutput\n\t}\n\n\thasStructuredOutput(): boolean {\n\t\treturn this.structuredOutput !== undefined\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { StructuredOutputFormat } from \"@domain/generative-model/capability/structured-output\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { DeepSeekReasoningEffort, DeepSeekReasoningEffortType } from \"@infra/providers/deepseek/reasoning-effort\"\n\nexport class DeepSeekV4Pro implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"deepseek-v4-pro\",\n\t\tprovider: \"deepseek\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"high\" as DeepSeekReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 1_000_000,\n\t\tmaxOutputTokens: 384_000,\n\t\tsupportFunctionCalling: true,\n\t\tsupportStructuredOutput: false,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tprivate structuredOutput: StructuredOutputFormat | undefined = undefined\n\n\tprivate readonly effort: DeepSeekReasoningEffort = new DeepSeekReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetReasoningEffort(effort: DeepSeekReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): DeepSeekReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetStructuredOutput(format: StructuredOutputFormat | undefined): void {\n\t\tthis.structuredOutput = format\n\t}\n\n\tgetStructuredOutput(): StructuredOutputFormat | undefined {\n\t\treturn this.structuredOutput\n\t}\n\n\thasStructuredOutput(): boolean {\n\t\treturn this.structuredOutput !== undefined\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { SystemMessageItem } from \"@domain/model-context/context-item/client-item/system-message\"\nimport { UserMessageItem } from \"@domain/model-context/context-item/client-item/user-message\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { InferenceRequest } from \"@domain/agentic-environment/inference/request\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { GoogleGenAI } from \"@google/genai\"\nimport { Endpoint } from \"@domain/generative-model/runtime\"\n\n/**\n * Native Gemini adapter on the `@google/genai` SDK (`generateContent` /\n * `generateContentStream`). Unlike an OpenAI-compat shim this maps our\n * domain context to Gemini's native `contents`/`parts` shape, system\n * instruction, `functionDeclarations`, and `thinkingConfig`, and reads\n * thought parts + native usage metadata back out. Another `ModelRuntime`\n * — no runner or port changes.\n */\nexport class GeminiGenerateContent implements Endpoint {\n\tprivate readonly client: GoogleGenAI\n\n\tconstructor() {\n\t\tthis.client = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY })\n\t}\n\n\tasync infer(inferenceRequest: InferenceRequest): Promise<InferenceResponse> {\n\t\tconst response = await this.client.models.generateContent(this.buildRequest(inferenceRequest))\n\n\t\tconst contextItems = this.extractContextItems(response)\n\t\tconst tokenUsage = this.extractTokenUsage(response)\n\t\treturn new InferenceResponse(contextItems, tokenUsage)\n\t}\n\n\tasync *stream(\n\t\tinferenceRequest: InferenceRequest,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<SemanticEvent<unknown>> {\n\t\tconst stream = await this.client.models.generateContentStream(this.buildRequest(inferenceRequest))\n\n\t\tfor await (const chunk of stream) {\n\t\t\tif (signal?.aborted) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tyield new SemanticEvent(\"generate_content_chunk\", chunk)\n\t\t}\n\t}\n\n\tprivate buildRequest(inferenceRequest: InferenceRequest): any {\n\t\tconst specification = inferenceRequest.model.specification\n\t\tconst { contents, systemInstruction } = this.mapContextToRequest(inferenceRequest.context)\n\n\t\tconst config: any = {}\n\n\t\tif (systemInstruction) {\n\t\t\tconfig.systemInstruction = systemInstruction\n\t\t}\n\n\t\tif (specification.supportFunctionCalling && inferenceRequest.model.getTools().length > 0) {\n\t\t\tconfig.tools = [\n\t\t\t\t{\n\t\t\t\t\tfunctionDeclarations: inferenceRequest.model.getTools().map((tool) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tname: tool.name,\n\t\t\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\t\t\tparametersJsonSchema: tool.parameters,\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t]\n\t\t}\n\n\t\tif (specification.supportReasoningEffort) {\n\t\t\tconst effort = inferenceRequest.model.getReasoningEffort()\n\t\t\t// Gemini 3.x cannot fully disable thinking; \"none\" maps to the\n\t\t\t// lowest level.\n\t\t\tconst thinkingLevel = effort === \"none\" ? \"minimal\" : effort\n\t\t\tconfig.thinkingConfig = { thinkingLevel, includeThoughts: true }\n\t\t}\n\n\t\tif (inferenceRequest.model.hasStructuredOutput()) {\n\t\t\tif (!specification.supportStructuredOutput) {\n\t\t\t\tthrow new Error(`Structured output is not supported for model: ${specification.name}`)\n\t\t\t}\n\t\t\tconst format = inferenceRequest.model.getStructuredOutput()!\n\t\t\tconfig.responseMimeType = \"application/json\"\n\t\t\tconfig.responseSchema = format.schema\n\t\t}\n\n\t\treturn { model: specification.name, contents, config }\n\t}\n\n\textractTokenUsage(response: any): TokenUsage | undefined {\n\t\tconst usage = response.usageMetadata\n\t\tif (!usage) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn new TokenUsage(\n\t\t\tusage.promptTokenCount ?? 0,\n\t\t\tusage.candidatesTokenCount ?? 0,\n\t\t\tusage.totalTokenCount ?? 0,\n\t\t\tnew InputTokenDetails(usage.cachedContentTokenCount ?? 0),\n\t\t\tnew OutputTokenDetails(usage.thoughtsTokenCount ?? 0),\n\t\t)\n\t}\n\n\tmapContextToRequest(context: ModelContext): { contents: any[]; systemInstruction?: string } {\n\t\tconst contents: any[] = []\n\t\tconst system: string[] = []\n\t\tconst callNames = new Map<string, string>()\n\n\t\tfor (const item of context.getItems()) {\n\t\t\tif (item instanceof DeveloperMessageItem || item instanceof SystemMessageItem) {\n\t\t\t\tsystem.push(item.content.text)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof UserMessageItem) {\n\t\t\t\tthis.addPart(contents, \"user\", { text: item.content.text })\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof ModelMessageItem) {\n\t\t\t\tthis.addPart(contents, \"model\", { text: item.content.text })\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof FunctionCallItem) {\n\t\t\t\tcallNames.set(item.callId, item.name)\n\t\t\t\tlet args: any\n\t\t\t\ttry {\n\t\t\t\t\targs = JSON.parse(item.args)\n\t\t\t\t} catch {\n\t\t\t\t\targs = {}\n\t\t\t\t}\n\t\t\t\tthis.addPart(contents, \"model\", { functionCall: { id: item.callId, name: item.name, args } })\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof FunctionCallOutputItem) {\n\t\t\t\tthis.addPart(contents, \"user\", {\n\t\t\t\t\tfunctionResponse: {\n\t\t\t\t\t\tid: item.callId,\n\t\t\t\t\t\tname: callNames.get(item.callId) ?? \"\",\n\t\t\t\t\t\tresponse: this.parseResponse(item.output.text),\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tcontents,\n\t\t\tsystemInstruction: system.length > 0 ? system.join(\"\\n\\n\") : undefined,\n\t\t}\n\t}\n\n\textractContextItems(response: any): ContextItem[] {\n\t\tconst items: ContextItem[] = []\n\t\tconst parts = response.candidates?.[0]?.content?.parts ?? []\n\n\t\tfor (const part of parts) {\n\t\t\tif (part.thought && part.text) {\n\t\t\t\titems.push(\n\t\t\t\t\tReasoningItem.rehydrate({\n\t\t\t\t\t\tcontent: InputText.rehydrate({ text: part.text }),\n\t\t\t\t\t\tencryptedContent: undefined,\n\t\t\t\t\t\tsummary: [],\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (part.text) {\n\t\t\t\titems.push(ModelMessageItem.rehydrate({ text: part.text }))\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (part.functionCall) {\n\t\t\t\titems.push(\n\t\t\t\t\tFunctionCallItem.rehydrate({\n\t\t\t\t\t\tcallId: part.functionCall.id ?? \"\",\n\t\t\t\t\t\tname: part.functionCall.name,\n\t\t\t\t\t\targs: JSON.stringify(part.functionCall.args ?? {}),\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\treturn items\n\t}\n\n\tprivate parseResponse(output: string): any {\n\t\ttry {\n\t\t\tconst parsed = JSON.parse(output)\n\t\t\treturn parsed && typeof parsed === \"object\" ? parsed : { output }\n\t\t} catch {\n\t\t\treturn { output }\n\t\t}\n\t}\n\n\tprivate addPart(contents: any[], role: \"user\" | \"model\", part: any): void {\n\t\tconst last = contents[contents.length - 1]\n\t\tif (last?.role === role) {\n\t\t\tlast.parts.push(part)\n\t\t\treturn\n\t\t}\n\n\t\tcontents.push({ role, parts: [part] })\n\t}\n}\n","import { ReasoningEffort } from \"@domain/generative-model/capability/reasoning-effort\"\n\n/**\n * Gemini reasoning levels, forwarded as the `reasoning_effort` request\n * parameter on the OpenAI-compatible endpoint. `\"none\"` only disables\n * thinking on Gemini 2.5 models; Gemini 3.x always thinks, so for those\n * the adapter simply omits `reasoning_effort` when set to `\"none\"` and\n * lets the model use its default thinking level.\n */\nexport type GeminiReasoningEffortType = \"high\" | \"medium\" | \"low\" | \"minimal\" | \"none\"\n\nexport class GeminiReasoningEffort implements ReasoningEffort<GeminiReasoningEffortType> {\n\treasoningEffort: GeminiReasoningEffortType\n\n\tconstructor(reasoningEffort: GeminiReasoningEffortType) {\n\t\tthis.reasoningEffort = reasoningEffort\n\t}\n\n\tsetReasoningEffort(effort: GeminiReasoningEffortType): void {\n\t\tthis.reasoningEffort = effort\n\t}\n\n\tgetReasoningEffort(): GeminiReasoningEffortType {\n\t\tif (!this.reasoningEffort) {\n\t\t\tthrow new Error(\"Reasoning effort not supported\")\n\t\t}\n\t\treturn this.reasoningEffort\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { StructuredOutputFormat } from \"@domain/generative-model/capability/structured-output\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { GeminiReasoningEffort, GeminiReasoningEffortType } from \"@infra/providers/gemini/reasoning-effort\"\n\nexport class Gemini35Flash implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gemini-3.5-flash\",\n\t\tprovider: \"google\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"medium\" as GeminiReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 1_048_576,\n\t\tmaxOutputTokens: 64_000,\n\t\tsupportFunctionCalling: true,\n\t\tsupportStructuredOutput: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tprivate structuredOutput: StructuredOutputFormat | undefined = undefined\n\n\tprivate readonly effort: GeminiReasoningEffort = new GeminiReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetReasoningEffort(effort: GeminiReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): GeminiReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetStructuredOutput(format: StructuredOutputFormat | undefined): void {\n\t\tthis.structuredOutput = format\n\t}\n\n\tgetStructuredOutput(): StructuredOutputFormat | undefined {\n\t\treturn this.structuredOutput\n\t}\n\n\thasStructuredOutput(): boolean {\n\t\treturn this.structuredOutput !== undefined\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { StructuredOutputFormat } from \"@domain/generative-model/capability/structured-output\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { GeminiReasoningEffort, GeminiReasoningEffortType } from \"@infra/providers/gemini/reasoning-effort\"\n\nexport class Gemini31Pro implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gemini-3.1-pro-preview\",\n\t\tprovider: \"google\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"high\" as GeminiReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 1_048_576,\n\t\tmaxOutputTokens: 64_000,\n\t\tsupportFunctionCalling: true,\n\t\tsupportStructuredOutput: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tprivate structuredOutput: StructuredOutputFormat | undefined = undefined\n\n\tprivate readonly effort: GeminiReasoningEffort = new GeminiReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetReasoningEffort(effort: GeminiReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): GeminiReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetStructuredOutput(format: StructuredOutputFormat | undefined): void {\n\t\tthis.structuredOutput = format\n\t}\n\n\tgetStructuredOutput(): StructuredOutputFormat | undefined {\n\t\treturn this.structuredOutput\n\t}\n\n\thasStructuredOutput(): boolean {\n\t\treturn this.structuredOutput !== undefined\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { SystemMessageItem } from \"@domain/model-context/context-item/client-item/system-message\"\nimport { UserMessageItem } from \"@domain/model-context/context-item/client-item/user-message\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { InferenceRequest } from \"@domain/agentic-environment/inference/request\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { Endpoint } from \"@domain/generative-model/runtime\"\nimport OpenAI from \"openai\"\n\n/**\n * Optional connection config. When omitted, the `openai` SDK reads\n * `OPENAI_API_KEY` and `OPENAI_BASE_URL` from the environment, so the\n * default-constructed runtime targets whatever `OPENAI_BASE_URL` points\n * at (real OpenAI when unset). Provider presets (e.g. DeepSeek) pass an\n * explicit base URL + credential.\n */\nexport interface OpenAICompatibleConfig {\n\tbaseURL?: string\n\tapiKey?: string\n\t/**\n\t * Extra request-body fields merged into every `chat.completions`\n\t * call. This is how provider-specific quirks are handled **without\n\t * a per-provider subclass in mozaik** — the consumer supplies the\n\t * vendor-only fields (e.g. DeepSeek's `{ thinking: { type } }`,\n\t * safety flags, routing hints). Standard fields the runtime already\n\t * sets (`model`, `messages`, `tools`, `reasoning_effort`) take\n\t * precedence and are not overwritten.\n\t */\n\textraBody?: Record<string, unknown>\n}\n\n/**\n * Generic adapter for any **OpenAI Chat Completions**-compatible\n * endpoint — real OpenAI, DeepSeek, Xiaomi MiMo, OpenRouter, vLLM,\n * Ollama, etc. It speaks `/chat/completions` (not the Responses API),\n * which is the dialect third-party OpenAI-compatible providers expose.\n *\n * The base URL and credential are configurable; everything else (the\n * `ModelContext` ⇄ chat-message conversion, tool-call round-trip, token\n * usage extraction) is provider-agnostic. Provider-specific request\n * shaping (e.g. DeepSeek's `thinking` field) is supplied by the\n * consumer via {@link OpenAICompatibleConfig.extraBody} — mozaik stays\n * generic and gains no per-provider subclasses.\n *\n * Was `DeepSeekChatCompletions`; generalized so consumers can point it\n * at any OpenAI-compatible endpoint.\n */\nexport class OpenAIChatCompletions implements Endpoint {\n\tprivate readonly client: OpenAI\n\tprivate readonly extraBody: Record<string, unknown>\n\n\tconstructor(config: OpenAICompatibleConfig = {}) {\n\t\t// Passing `undefined` for baseURL/apiKey lets the SDK fall back\n\t\t// to OPENAI_BASE_URL / OPENAI_API_KEY from the environment.\n\t\tthis.client = new OpenAI({\n\t\t\tbaseURL: config.baseURL,\n\t\t\tapiKey: config.apiKey,\n\t\t})\n\t\tthis.extraBody = config.extraBody ?? {}\n\t}\n\n\tasync infer(inferenceRequest: InferenceRequest): Promise<InferenceResponse> {\n\t\tconst response = await this.client.chat.completions.create(this.buildRequest(inferenceRequest))\n\n\t\tconst contextItems = this.extractContextItems(response)\n\t\tconst tokenUsage = this.extractTokenUsage(response)\n\t\treturn new InferenceResponse(contextItems, tokenUsage)\n\t}\n\n\tasync *stream(\n\t\tinferenceRequest: InferenceRequest,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<SemanticEvent<unknown>> {\n\t\tconst stream: any = await this.client.chat.completions.create({\n\t\t\t...this.buildRequest(inferenceRequest),\n\t\t\tstream: true,\n\t\t})\n\n\t\tfor await (const event of stream) {\n\t\t\tif (signal?.aborted) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tyield new SemanticEvent(event.object ?? \"chat.completion.chunk\", event)\n\t\t}\n\t}\n\n\tbuildRequest(inferenceRequest: InferenceRequest): any {\n\t\tconst specification = inferenceRequest.model.specification\n\n\t\t// Consumer-supplied vendor quirks first, so the standard fields\n\t\t// below win on key collisions.\n\t\tconst request: any = {\n\t\t\t...this.extraBody,\n\t\t\tmodel: specification.name,\n\t\t\tmessages: this.mapContextToRequest(inferenceRequest.context),\n\t\t}\n\n\t\tif (specification.supportFunctionCalling && inferenceRequest.model.getTools().length > 0) {\n\t\t\trequest.tools = inferenceRequest.model.getTools().map((tool) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"function\",\n\t\t\t\t\tfunction: {\n\t\t\t\t\t\tname: tool.name,\n\t\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\t\tparameters: tool.parameters,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\t// `reasoning_effort` is a standard OpenAI Chat Completions field;\n\t\t// emit it when the model declares reasoning support. Anything\n\t\t// non-standard (e.g. DeepSeek's `thinking` wrapper) is the\n\t\t// consumer's job via `extraBody`.\n\t\tif (specification.supportReasoningEffort) {\n\t\t\trequest.reasoning_effort = inferenceRequest.model.getReasoningEffort()\n\t\t}\n\n\t\treturn request\n\t}\n\n\textractTokenUsage(response: any): TokenUsage | undefined {\n\t\tif (!response.usage) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn new TokenUsage(\n\t\t\tresponse.usage.prompt_tokens,\n\t\t\tresponse.usage.completion_tokens,\n\t\t\tresponse.usage.total_tokens,\n\t\t\tnew InputTokenDetails(response.usage.prompt_tokens_details?.cached_tokens ?? 0),\n\t\t\tnew OutputTokenDetails(response.usage.completion_tokens_details?.reasoning_tokens ?? 0),\n\t\t)\n\t}\n\n\tmapContextToRequest(context: ModelContext): any[] {\n\t\tconst messages: any[] = []\n\n\t\tfor (const item of context.getItems()) {\n\t\t\tif (item instanceof DeveloperMessageItem || item instanceof SystemMessageItem) {\n\t\t\t\tmessages.push({ role: \"system\", content: item.content.text })\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof UserMessageItem) {\n\t\t\t\tmessages.push({ role: \"user\", content: item.content.text })\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof ModelMessageItem) {\n\t\t\t\tmessages.push({ role: \"assistant\", content: item.content.text })\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof FunctionCallItem) {\n\t\t\t\tconst toolCall = {\n\t\t\t\t\tid: item.callId,\n\t\t\t\t\ttype: \"function\",\n\t\t\t\t\tfunction: { name: item.name, arguments: item.args },\n\t\t\t\t}\n\t\t\t\tconst last = messages[messages.length - 1]\n\t\t\t\tif (last?.role === \"assistant\") {\n\t\t\t\t\tlast.tool_calls = last.tool_calls ?? []\n\t\t\t\t\tlast.tool_calls.push(toolCall)\n\t\t\t\t} else {\n\t\t\t\t\tmessages.push({ role: \"assistant\", content: null, tool_calls: [toolCall] })\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof FunctionCallOutputItem) {\n\t\t\t\tmessages.push({ role: \"tool\", tool_call_id: item.callId, content: item.output.text })\n\t\t\t}\n\t\t}\n\n\t\treturn messages\n\t}\n\n\textractContextItems(response: any): ContextItem[] {\n\t\tconst items: ContextItem[] = []\n\t\tconst message = response.choices?.[0]?.message\n\t\tif (!message) {\n\t\t\treturn items\n\t\t}\n\n\t\tif (message.reasoning_content) {\n\t\t\titems.push(\n\t\t\t\tReasoningItem.rehydrate({\n\t\t\t\t\tcontent: InputText.rehydrate({ text: message.reasoning_content }),\n\t\t\t\t\tencryptedContent: undefined,\n\t\t\t\t\tsummary: [],\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\n\t\tif (message.content) {\n\t\t\titems.push(ModelMessageItem.rehydrate({ text: message.content }))\n\t\t}\n\n\t\tfor (const toolCall of message.tool_calls ?? []) {\n\t\t\titems.push(\n\t\t\t\tFunctionCallItem.rehydrate({\n\t\t\t\t\tcallId: toolCall.id,\n\t\t\t\t\tname: toolCall.function.name,\n\t\t\t\t\targs: toolCall.function.arguments,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\n\t\treturn items\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { InferenceRequest } from \"@domain/agentic-environment/inference/request\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { ModelInfo } from \"@app/services/model-repository\"\n\ntype InferenceItem = ReasoningItem | FunctionCallItem | ModelMessageItem | SemanticEvent<unknown>\n\nexport class InferenceRunner {\n\n\tasync *run(context: ModelContext, modelInfo: ModelInfo, signal?: AbortSignal): AsyncIterable<InferenceItem> {\n\t\tconst { model, endpoint } = modelInfo\n\t\tconst request = new InferenceRequest(model, context)\n\n\n\t\tif (model.getStreaming()) {\n\t\t\tyield* endpoint.stream(request)\n\t\t\treturn\n\t\t}\n\n\t\tconst response = await endpoint.infer(request)\n\t\tfor (const item of response.contextItems) {\n\t\t\tif (signal?.aborted) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tyield item as InferenceItem\n\t\t}\n\t}\n\n\n}\n","import { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\";\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\";\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\";\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\";\nimport { InferenceParams } from \"@domain/agentic-environment/inference/params\";\nimport { RunInferenceUseCase } from \"@domain/agentic-environment/use-cases/run-inference\";\nimport { InferenceRunner } from \"@app/services/inference-runner\";\nimport { ModelRepository } from \"@app/services/model-repository\";\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\";\n\n\nexport class RunInference implements RunInferenceUseCase {\n\n constructor(private readonly modelRepository: ModelRepository, private readonly inferenceRunner: InferenceRunner) {}\n\n private setModelCapabilities(model: GenerativeModel, inferenceParams: InferenceParams) {\n const { streaming, tools, reasoningEffort, structuredOutput } = inferenceParams;\n\n if (streaming) {\n model.setStreaming(true)\n }\n\n if (tools) {\n model.setTools(tools)\n }\n\n if (reasoningEffort) {\n model.setReasoningEffort(reasoningEffort)\n }\n\n if (structuredOutput) {\n model.setStructuredOutput(structuredOutput)\n }\n \n return model;\n }\n\n async execute(inferenceParams: InferenceParams): Promise<void> {\n const { model, context, caller, environment, signal } = inferenceParams;\n\n \n const modelInfo = this.modelRepository.getModelInfo(model);\n\n const generativeModel = this.setModelCapabilities(modelInfo.model, inferenceParams);\n modelInfo.model = generativeModel;\n\n const result = this.inferenceRunner.run(context, modelInfo, signal)\n \n for await (const item of result) {\n\n if(signal?.aborted) {\n break\n }\n\n if (item instanceof ReasoningItem) {\n environment.deliverReasoning(caller, item)\n } else if (item instanceof FunctionCallItem) {\n environment.deliverFunctionCall(caller, item)\n } else if (item instanceof ModelMessageItem) {\n environment.deliverModelMessage(caller, item)\n } else if (item instanceof SemanticEvent) {\n environment.deliverSemanticEvent(caller, item)\n }\n }\n }\n}","import { FunctionCallRunner } from \"@app/services/function-call-runner\";\nimport { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\";\nimport { Participant } from \"@domain/agentic-environment/participant\";\nimport { ExecuteFunctionCallUseCase } from \"@domain/agentic-environment/use-cases/execute-function-call\";\nimport { Tool } from \"@domain/generative-model/tool\";\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\";\n\nexport class ExecuteFunctionCall implements ExecuteFunctionCallUseCase {\n\n constructor(private readonly functionCallRunner: FunctionCallRunner) {}\n\n async execute(environment: AgenticEnvironment, functionCallItem: FunctionCallItem, tool: Tool, caller: Participant, signal?: AbortSignal): Promise<void> {\n const stream = this.functionCallRunner.run(functionCallItem, tool, signal)\n\n for await (const item of stream) {\n environment.deliverFunctionCallOutput(caller, item)\n }\n }\n}","import { AnthropicMessages } from \"@infra/providers/anthropic/runtime/anthropic-messages\";\nimport { OpenAIResponses } from \"@infra/providers/openai/runtime/openai-responses\";\nimport { GeminiGenerateContent } from \"@infra/providers/gemini/runtime/gemini-generate-content\";\nimport { OpenAIChatCompletions } from \"@infra/providers/openai/runtime/openai-chat-completions\";\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\";\nimport { ClaudeHaiku45 } from \"@infra/providers/anthropic/models/claude-4-5-haiku\";\nimport { ClaudeSonnet46 } from \"@infra/providers/anthropic/models/claude-4-6-sonnet\";\nimport { ClaudeOpus48 } from \"@infra/providers/anthropic/models/claude-4-8-opus\";\nimport { ClaudeOpus47 } from \"@infra/providers/anthropic/models/claude-4-7-opus\";\nimport { Gemini35Flash } from \"@infra/providers/gemini/models/gemini-3-5-flash\";\nimport { Gemini31Pro } from \"@infra/providers/gemini/models/gemini-3-1-pro\";\nimport { DeepSeekV4Flash } from \"@infra/providers/deepseek/models/deepseek-v4-flash\";\nimport { DeepSeekV4Pro } from \"@infra/providers/deepseek/models/deepseek-v4-pro\";\nimport { Gpt54 } from \"@infra/providers/openai/models/gpt-5-4\";\nimport { Gpt54Mini } from \"@infra/providers/openai/models/gpt-5-4-mini\";\nimport { Gpt54Nano } from \"@infra/providers/openai/models/gpt-5-4-nano\";\nimport { Gpt55 } from \"@infra/providers/openai/models/gpt-5-5\";\nimport { Endpoint } from \"@domain/generative-model/runtime\";\n\nexport type ModelInfo = {\n endpoint: Endpoint;\n model: GenerativeModel;\n}\n\nexport class ModelRepository {\n \n getModelInfo(model: string): ModelInfo {\n switch (model) {\n case \"gpt-5-4\":\n return { endpoint: new OpenAIResponses(), model: new Gpt54() };\n case \"gpt-5-4-mini\":\n return { endpoint: new OpenAIResponses(), model: new Gpt54Mini() };\n case \"gpt-5-4-nano\":\n return { endpoint: new OpenAIResponses(), model: new Gpt54Nano() };\n case \"gpt-5-5\":\n return { endpoint: new OpenAIResponses(), model: new Gpt55() };\n case \"claude-4-5-haiku\":\n return { endpoint: new AnthropicMessages(), model: new ClaudeHaiku45() };\n case \"claude-4-6-sonnet\":\n return { endpoint: new AnthropicMessages(), model: new ClaudeSonnet46() };\n case \"claude-4-7-opus\":\n return { endpoint: new AnthropicMessages(), model: new ClaudeOpus47() };\n case \"claude-4-8-opus\":\n return { endpoint: new AnthropicMessages(), model: new ClaudeOpus48() };\n case \"gemini-3-5-flash\":\n return { endpoint: new GeminiGenerateContent(), model: new Gemini35Flash() };\n case \"gemini-3-1-pro\":\n return { endpoint: new GeminiGenerateContent(), model: new Gemini31Pro() };\n case \"deepseek-v4-flash\":\n return { endpoint: new OpenAIChatCompletions(), model: new DeepSeekV4Flash() };\n case \"deepseek-v4-pro\":\n return { endpoint: new OpenAIChatCompletions(), model: new DeepSeekV4Pro() };\n default:\n throw new Error(`Unsupported model: ${model}`);\n }\n }\n\n}","import { Tool } from \"@domain/generative-model/tool\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\n\nexport class FunctionCallRunner {\n\n\tasync *run(call: FunctionCallItem, tool: Tool, signal?: AbortSignal): AsyncIterable<FunctionCallOutputItem> {\n\n\t\tif(signal?.aborted) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!tool) throw new Error(`Unknown tool: ${call.name}`)\n\n\t\tconst result = await tool.invoke(JSON.parse(call.args))\n\t\tyield FunctionCallOutputItem.create(call.callId, JSON.stringify(result))\n\t}\n}\n","import { AgenticError } from \"@domain/agentic-environment/errors/base-error\"\nimport { Participant } from \"@domain/agentic-environment/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport class BaseParticipant extends Participant {\n\tonFunctionCall(item: FunctionCallItem) { }\n\tonExternalFunctionCall(source: Participant, item: FunctionCallItem) { }\n\tonFunctionCallOutput(item: FunctionCallOutputItem) { }\n\tonExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem) { }\n\tonReasoning(item: ReasoningItem) { }\n\tonExternalReasoning(source: Participant, item: ReasoningItem) { }\n\tonModelMessage(item: ModelMessageItem) { }\n\tonExternalModelMessage(source: Participant, item: ModelMessageItem) { }\n\tonMessage(message: string) { }\n\tonJoined() { }\n\tonLeft() { }\n\tonParticipantJoined(participant: Participant) { }\n\tonParticipantLeft(participant: Participant) { }\n\tonInternalEvent(item: SemanticEvent<unknown>) { }\n\tonExternalEvent(source: Participant, item: SemanticEvent<unknown>) { }\n\tonError(error: AgenticError): void { }\n\tonParticipantError(source: Participant, error: AgenticError): void { }\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { Participant } from \"@domain/agentic-environment/participant\"\nimport { SendMessageUseCase } from \"@domain/agentic-environment/use-cases/send-message\"\n\nexport class SendMessage implements SendMessageUseCase {\n async execute(environment: AgenticEnvironment, message: string, caller: Participant): Promise<void> {\n\n if (!caller.isJoinedTo(environment)) {\n throw new Error(\"Not joined to environment\")\n }\n\n environment.deliverMessage(caller, message)\n }\n}"],"mappings":"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","names":["error","OpenAI","Anthropic","import_openai","OpenAI"]}