@mozaik-ai/core 3.13.1 → 3.14.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/README.md +2 -2
- package/dist/index.d.mts +81 -16
- package/dist/index.d.ts +81 -16
- package/dist/index.js +111 -15
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +109 -15
- package/dist/index.mjs.map +1 -1
- package/package.json +12 -4
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../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/generative-model/request-validation/structured-output.ts","../src/domain/model-context/context-item/client-item/function-call-output.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/domain/model-context/semantic-event/semantic-event.ts","../src/domain/agentic-environment/inference/response.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/function-call-runner.ts","../src/application/participants/participant.ts","../src/application/use-cases/send-message.ts","../src/infrastructure/providers/anthropic/endpoints/anthropic-messages-mapper.ts","../src/infrastructure/providers/anthropic/endpoints/anthropic-messages.ts","../src/infrastructure/providers/openai/endpoints/openai-responses.ts","../src/domain/model-context/context-item/item-content/summary-text.ts","../src/infrastructure/providers/openai/endpoints/openai-responses-mapper.ts","../src/infrastructure/providers/gemini/endpoints/gemini-generate-content.ts","../src/infrastructure/providers/gemini/endpoints/gemini-generate-content-mapper.ts","../src/infrastructure/providers/openai/endpoints/openai-chat-completions-mapper.ts","../src/infrastructure/providers/openai/endpoints/openai-chat-completions.ts","../src/infrastructure/providers/anthropic/models/claude-4-6-sonnet.ts","../src/infrastructure/providers/anthropic/models/claude-4-8-opus.ts","../src/infrastructure/providers/anthropic/models/claude-4-7-opus.ts","../src/infrastructure/providers/gemini/models/gemini-3-5-flash.ts","../src/infrastructure/providers/gemini/models/gemini-3-1-pro.ts","../src/infrastructure/providers/deepseek/models/deepseek-v4-flash.ts","../src/infrastructure/providers/deepseek/models/deepseek-v4-pro.ts","../src/infrastructure/providers/openai/models/gpt-5-4.ts","../src/infrastructure/providers/openai/models/gpt-5-4-mini.ts","../src/infrastructure/providers/openai/models/gpt-5-4-nano.ts","../src/infrastructure/providers/openai/models/gpt-5-5.ts","../src/infrastructure/providers/anthropic/models/claude-4-5-haiku.ts","../src/infrastructure/repository/generative-model-repository.ts","../src/domain/generative-model/request-validation/reasoning-effort.ts","../src/domain/generative-model/request-validation/tool-calling.ts","../src/domain/generative-model/request-validation/streaming.ts","../src/domain/generative-model/request-validation/context.ts","../src/domain/generative-model/request-validation/inference-request-validator.ts","../src/index.ts"],"sourcesContent":["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","export abstract class ContextItem {\n\tabstract readonly type: string\n\n\tgetType(): string {\n\t\treturn this.type\n\t}\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","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","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\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","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","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","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","import { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { ModelName, ModelSpecification } from \"../generative-model\"\nimport { RequestValidationRule } from \"./rule\"\n\nexport type StructuredOutputFormat = {\n\tname?: string\n\tschema: Record<string, any>\n\tstrict?: boolean\n}\n\nexport class StructuredOutputValidation implements RequestValidationRule {\n\treadonly name = \"structured-output\"\n\n\tisValid(inferenceParams: InferenceParams<ModelName>, model: ModelSpecification): boolean {\n\t\tif (inferenceParams.structuredOutput === undefined) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn model.supportsStructuredOutput\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","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\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(\n\t\t\t\t\t\t\t`[AgenticEnvironment] Participant.onError() failed. Reason: ${error as Error}\\n ${JSON.stringify({ error }, null, 2)}`,\n\t\t\t\t\t\t)\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(\n\t\t\t\t\t\t\t`[AgenticEnvironment] Participant.onError() failed. Reason: ${error as Error}\\n ${JSON.stringify({ error }, null, 2)}`,\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\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\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\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","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 { 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 { 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 { Endpoint } from \"@domain/generative-model/endpoint\"\nimport { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { ModelName } from \"@domain/generative-model/generative-model\"\n\ntype InferenceItem = ReasoningItem | FunctionCallItem | ModelMessageItem | SemanticEvent<unknown>\n\nexport interface InferenceRunner {\n\trun(request: InferenceParams<ModelName>, endpoint: Endpoint): AsyncIterable<InferenceItem>\n}\n\nexport class StreamingInference implements InferenceRunner {\n\tasync *run(request: InferenceParams<ModelName>, endpoint: Endpoint): AsyncIterable<InferenceItem> {\n\t\tif (request.signal?.aborted) {\n\t\t\treturn\n\t\t}\n\t\tyield* endpoint.stream(request, request.signal)\n\t}\n}\n\nexport class NonStreamingInference implements InferenceRunner {\n\tasync *run(request: InferenceParams<ModelName>, endpoint: Endpoint): AsyncIterable<InferenceItem> {\n\t\tif (request.signal?.aborted) {\n\t\t\treturn\n\t\t}\n\t\tconst response = await endpoint.infer(request)\n\t\tfor (const item of response.contextItems) {\n\t\t\tif (request.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","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, NonStreamingInference, StreamingInference } from \"@app/services/inference-runner\"\nimport { InferenceRequestValidator } from \"@domain/generative-model/request-validation/inference-request-validator\"\nimport { ModelName } from \"@domain/generative-model/generative-model\"\nimport { GenerativeModelRepository } from \"@domain/generative-model/generative-model-repository\"\n\nexport class RunInference implements RunInferenceUseCase<ModelName> {\n\tconstructor(\n\t\tprivate readonly generativeModelRepository: GenerativeModelRepository,\n\t\tprivate readonly requestValidator: InferenceRequestValidator,\n\t) {}\n\n\tasync execute(inferenceParams: InferenceParams<ModelName>): Promise<void> {\n\t\tconst { caller, environment, signal } = inferenceParams\n\n\t\tconst generativeModel = await this.generativeModelRepository.getByModelName(inferenceParams.model)\n\n\t\tthis.requestValidator.validate(inferenceParams, generativeModel.specification)\n\n\t\tconst resolvedParams: InferenceParams<ModelName> = {\n\t\t\t...inferenceParams,\n\t\t\tmaxOutputTokens: inferenceParams.maxOutputTokens ?? generativeModel.specification.maxOutputTokens,\n\t\t}\n\n\t\tconst inferenceRunner: InferenceRunner = inferenceParams.streaming\n\t\t\t? new StreamingInference()\n\t\t\t: new NonStreamingInference()\n\n\t\tconst result = inferenceRunner.run(resolvedParams, generativeModel.endpoint)\n\n\t\tfor await (const item of result) {\n\t\t\tif (signal?.aborted) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif (item instanceof ReasoningItem) {\n\t\t\t\tenvironment.deliverReasoning(caller, item)\n\t\t\t} else if (item instanceof FunctionCallItem) {\n\t\t\t\tenvironment.deliverFunctionCall(caller, item)\n\t\t\t} else if (item instanceof ModelMessageItem) {\n\t\t\t\tenvironment.deliverModelMessage(caller, item)\n\t\t\t} else if (item instanceof SemanticEvent) {\n\t\t\t\tenvironment.deliverSemanticEvent(caller, item)\n\t\t\t}\n\t\t}\n\t}\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\tconstructor(private readonly functionCallRunner: FunctionCallRunner) {}\n\n\tasync execute(\n\t\tenvironment: AgenticEnvironment,\n\t\tfunctionCallItem: FunctionCallItem,\n\t\ttool: Tool,\n\t\tcaller: Participant,\n\t\tsignal?: AbortSignal,\n\t): Promise<void> {\n\t\tconst stream = this.functionCallRunner.run(functionCallItem, tool, signal)\n\n\t\tfor await (const item of stream) {\n\t\t\tenvironment.deliverFunctionCallOutput(caller, item)\n\t\t}\n\t}\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\tasync *run(call: FunctionCallItem, tool: Tool, signal?: AbortSignal): AsyncIterable<FunctionCallOutputItem> {\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\tasync execute(environment: AgenticEnvironment, message: string, caller: Participant): Promise<void> {\n\t\tif (!caller.isJoinedTo(environment)) {\n\t\t\tthrow new Error(\"Not joined to environment\")\n\t\t}\n\n\t\tenvironment.deliverMessage(caller, message)\n\t}\n}\n","import { ModelName } from \"@domain/generative-model/generative-model\"\nimport { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\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 { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport Anthropic from \"@anthropic-ai/sdk\"\n\nexport class AnthropicMessagesMapper implements InferenceEndpointMapper {\n\ttoRequest(inferenceParams: InferenceParams<ModelName>) {\n\t\tconst { messages, system } = this.mapContextItems(inferenceParams)\n\t\tconst outputConfig: any = {}\n\n\t\tconst request: any = {\n\t\t\tmodel: inferenceParams.model,\n\t\t\tmessages,\n\t\t}\n\n\t\trequest.max_tokens = inferenceParams.maxOutputTokens!\n\n\t\tif (system) {\n\t\t\trequest.system = system\n\t\t}\n\n\t\tif (inferenceParams.tools && inferenceParams.tools.length > 0) {\n\t\t\trequest.tools = inferenceParams.tools.map((tool) => ({\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description,\n\t\t\t\tinput_schema: tool.parameters,\n\t\t\t}))\n\t\t}\n\n\t\tif (inferenceParams.structuredOutput) {\n\t\t\toutputConfig.format = {\n\t\t\t\ttype: \"json_schema\",\n\t\t\t\tjson_schema: inferenceParams.structuredOutput.schema,\n\t\t\t}\n\t\t}\n\n\t\tif (inferenceParams.reasoningEffort) {\n\t\t\trequest.thinking = { type: \"adaptive\" }\n\t\t\toutputConfig.effort = inferenceParams.reasoningEffort\n\t\t}\n\n\t\tif (Object.keys(outputConfig).length > 0) {\n\t\t\trequest.output_config = outputConfig\n\t\t}\n\n\t\tif (inferenceParams.streaming) {\n\t\t\trequest.stream = inferenceParams.streaming\n\t\t}\n\n\t\treturn request\n\t}\n\n\ttoResponse(response: any): InferenceResponse {\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\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\tmapContextItems(inferenceParams: InferenceParams<ModelName>): { messages: any[]; system?: string } {\n\t\tconst context = inferenceParams.context\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 ReasoningItem) {\n\t\t\t\tthis.addContentBlock(messages, \"assistant\", {\n\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\tthinking: item.content?.text ?? \"\",\n\t\t\t\t\tsignature: item.encryptedContent ?? \"\",\n\t\t\t\t})\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\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\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: block.signature,\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","import { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { Endpoint } from \"@domain/generative-model/endpoint\"\nimport { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { ModelName } from \"@domain/generative-model/generative-model\"\nimport { AnthropicMessagesMapper } from \"./anthropic-messages-mapper\"\nimport Anthropic from \"@anthropic-ai/sdk\"\nimport { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\n\n/**\n * Native Anthropic adapter on the `@anthropic-ai/sdk` (`messages.create`).\n * Maps domain context to Anthropic's `messages`/`content` blocks shape,\n * system prompt, tools, adaptive thinking, and structured output config.\n */\nexport class AnthropicMessages implements Endpoint {\n\tendpointMapper: InferenceEndpointMapper\n\tprivate readonly client: Anthropic\n\n\tconstructor(endpointMapper: InferenceEndpointMapper = new AnthropicMessagesMapper()) {\n\t\tthis.endpointMapper = endpointMapper\n\t\tthis.client = new Anthropic()\n\t}\n\n\tasync infer(inferenceParams: InferenceParams<ModelName>): Promise<InferenceResponse> {\n\t\tconst inferenceRequest = this.endpointMapper.toRequest(inferenceParams)\n\t\tconst response = await this.client.messages.create(inferenceRequest)\n\n\t\treturn this.endpointMapper.toResponse(response)\n\t}\n\n\tasync *stream(\n\t\tinferenceParams: InferenceParams<ModelName>,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<SemanticEvent<unknown>> {\n\t\tconst inferenceRequest = this.endpointMapper.toRequest(inferenceParams)\n\t\tconst stream: any = await this.client.messages.create(inferenceRequest)\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","import { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { Endpoint } from \"@domain/generative-model/endpoint\"\nimport OpenAI from \"openai\"\nimport { ModelName } from \"@domain/generative-model/generative-model\"\nimport { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { OpenAIResponsesMapper } from \"./openai-responses-mapper\"\nimport { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\n\nexport class OpenAIResponses implements Endpoint {\n\tendpointMapper: InferenceEndpointMapper\n\tprivate readonly client: OpenAI\n\n\tconstructor(endpointMapper: InferenceEndpointMapper = new OpenAIResponsesMapper()) {\n\t\tthis.endpointMapper = endpointMapper\n\t\tthis.client = new OpenAI()\n\t}\n\n\tasync infer(inferenceParams: InferenceParams<ModelName>): Promise<InferenceResponse> {\n\t\tconst request = this.endpointMapper.toRequest(inferenceParams)\n\t\tconst response = await this.client.responses.create(request)\n\n\t\treturn this.endpointMapper.toResponse(response)\n\t}\n\n\tasync *stream(\n\t\tinferenceParams: InferenceParams<ModelName>,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<SemanticEvent<unknown>> {\n\t\tconst request = this.endpointMapper.toRequest(inferenceParams)\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","import { ItemContent } from \"@domain/model-context/context-item/item-content/item-content\"\n\nexport class SummaryText extends ItemContent {\n\treadonly type = \"summary_text\"\n\n\tprivate constructor(public readonly text: string) {\n\t\tsuper()\n\t}\n\n\tstatic rehydrate(data: { text: string }): SummaryText {\n\t\treturn new SummaryText(data.text)\n\t}\n}\n","import { ModelName } from \"@domain/generative-model/generative-model\"\nimport { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\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 { 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 { SummaryText } from \"@domain/model-context/context-item/item-content/summary-text\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport OpenAI from \"openai\"\n\nexport class OpenAIResponsesMapper implements InferenceEndpointMapper {\n\ttoRequest(inferenceParams: InferenceParams<ModelName>): any {\n\t\tconst request: any = {\n\t\t\tmodel: inferenceParams.model,\n\t\t\tinput: this.mapContextItems(inferenceParams),\n\t\t}\n\n\t\tif (inferenceParams.tools && inferenceParams.tools.length > 0) {\n\t\t\trequest.tools = inferenceParams.tools.map((tool) => ({\n\t\t\t\ttype: tool.type,\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description,\n\t\t\t\tparameters: tool.parameters,\n\t\t\t}))\n\t\t}\n\n\t\tif (inferenceParams.reasoningEffort) {\n\t\t\trequest.reasoning = {\n\t\t\t\teffort: inferenceParams.reasoningEffort,\n\t\t\t}\n\t\t}\n\n\t\tif (inferenceParams.structuredOutput) {\n\t\t\tconst format = inferenceParams.structuredOutput\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\tif (inferenceParams.streaming) {\n\t\t\trequest.stream = inferenceParams.streaming\n\t\t}\n\n\t\treturn request\n\t}\n\n\ttoResponse(response: any): InferenceResponse {\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\tmapContextItems(inferenceParams: InferenceParams<ModelName>): any[] {\n\t\tconst input: any[] = []\n\n\t\tfor (const item of inferenceParams.context.getItems()) {\n\t\t\tif (\n\t\t\t\titem instanceof DeveloperMessageItem ||\n\t\t\t\titem instanceof SystemMessageItem ||\n\t\t\t\titem instanceof UserMessageItem\n\t\t\t) {\n\t\t\t\tinput.push({\n\t\t\t\t\ttype: item.type,\n\t\t\t\t\trole: item.role,\n\t\t\t\t\tcontent: [{ type: \"input_text\", text: item.content.text }],\n\t\t\t\t})\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof ModelMessageItem) {\n\t\t\t\tinput.push({\n\t\t\t\t\ttype: item.type,\n\t\t\t\t\trole: item.role,\n\t\t\t\t\tcontent: [{ type: \"output_text\", text: item.content.text }],\n\t\t\t\t})\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof FunctionCallItem) {\n\t\t\t\tinput.push({\n\t\t\t\t\ttype: item.type,\n\t\t\t\t\tcall_id: item.callId,\n\t\t\t\t\tname: item.name,\n\t\t\t\t\targuments: item.args,\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\tinput.push({\n\t\t\t\t\ttype: item.type,\n\t\t\t\t\tcall_id: item.callId,\n\t\t\t\t\toutput: [{ type: \"input_text\", text: item.output.text }],\n\t\t\t\t})\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof ReasoningItem) {\n\t\t\t\tconst reasoningInput: Record<string, unknown> = {\n\t\t\t\t\ttype: item.type,\n\t\t\t\t\tsummary: item.summary.map((summary) => ({ type: \"summary_text\", text: summary.text })),\n\t\t\t\t}\n\t\t\t\tif (item.encryptedContent !== undefined) {\n\t\t\t\t\treasoningInput.encrypted_content = item.encryptedContent\n\t\t\t\t}\n\t\t\t\tinput.push(reasoningInput)\n\t\t\t}\n\t\t}\n\n\t\treturn input\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 ?? 0),\n\t\t\tnew OutputTokenDetails(response.usage.output_tokens_details?.reasoning_tokens ?? 0),\n\t\t)\n\t}\n\n\textractContextItems(response: any): ContextItem[] {\n\t\tconst items: ContextItem[] = []\n\n\t\tfor (const item of response.output ?? []) {\n\t\t\tif (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\tconst firstContent = item.content?.[0]\n\t\t\t\tif (firstContent) {\n\t\t\t\t\titems.push(ModelMessageItem.rehydrate(firstContent as { text: string }))\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (item.type === \"function_call\") {\n\t\t\t\titems.push(\n\t\t\t\t\tFunctionCallItem.rehydrate({\n\t\t\t\t\t\tcallId: item.call_id,\n\t\t\t\t\t\tname: item.name,\n\t\t\t\t\t\targs: item.arguments,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\titems.push(\n\t\t\t\t\tReasoningItem.rehydrate({\n\t\t\t\t\t\tcontent: undefined,\n\t\t\t\t\t\tencryptedContent: item.encrypted_content,\n\t\t\t\t\t\tsummary: (item.summary ?? []).map((summary: { text: string }) =>\n\t\t\t\t\t\t\tSummaryText.rehydrate({ text: summary.text }),\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\treturn items\n\t}\n}\n","import { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { GoogleGenAI } from \"@google/genai\"\nimport { Endpoint } from \"@domain/generative-model/endpoint\"\nimport { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { ModelName } from \"@domain/generative-model/generative-model\"\nimport { GeminiGenerateContentMapper } from \"./gemini-generate-content-mapper\"\nimport { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\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\tendpointMapper: InferenceEndpointMapper\n\tprivate readonly client: GoogleGenAI\n\n\tconstructor(endpointMapper: InferenceEndpointMapper = new GeminiGenerateContentMapper()) {\n\t\tthis.endpointMapper = endpointMapper\n\t\tthis.client = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY })\n\t}\n\n\tasync infer(inferenceParams: InferenceParams<ModelName>): Promise<InferenceResponse> {\n\t\tconst inferenceRequest = this.endpointMapper.toRequest(inferenceParams)\n\t\tconst response = await this.client.models.generateContent(inferenceRequest)\n\n\t\treturn this.endpointMapper.toResponse(response)\n\t}\n\n\tasync *stream(\n\t\tinferenceParams: InferenceParams<ModelName>,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<SemanticEvent<unknown>> {\n\t\tconst inferenceRequest = this.endpointMapper.toRequest(inferenceParams)\n\t\tconst stream = await this.client.models.generateContentStream(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","import { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { ModelName } from \"@domain/generative-model/generative-model\"\nimport { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\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 { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\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\"\n\nexport class GeminiGenerateContentMapper implements InferenceEndpointMapper {\n\ttoRequest(inferenceParams: InferenceParams<ModelName>) {\n\t\tconst { contents, systemInstruction } = this.mapContextItems(inferenceParams)\n\t\tconst config: any = {}\n\n\t\tif (systemInstruction) {\n\t\t\tconfig.systemInstruction = systemInstruction\n\t\t}\n\n\t\tif (inferenceParams.tools && inferenceParams.tools.length > 0) {\n\t\t\tconfig.tools = [\n\t\t\t\t{\n\t\t\t\t\tfunctionDeclarations: inferenceParams.tools.map((tool) => ({\n\t\t\t\t\t\tname: tool.name,\n\t\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\t\tparametersJsonSchema: tool.parameters,\n\t\t\t\t\t})),\n\t\t\t\t},\n\t\t\t]\n\t\t}\n\n\t\tif (inferenceParams.structuredOutput) {\n\t\t\tconfig.responseMimeType = \"application/json\"\n\t\t\tconfig.responseSchema = inferenceParams.structuredOutput.schema\n\t\t}\n\n\t\tif (inferenceParams.reasoningEffort) {\n\t\t\tconfig.thinkingConfig = {\n\t\t\t\tthinkingLevel: inferenceParams.reasoningEffort,\n\t\t\t\tincludeThoughts: true,\n\t\t\t}\n\t\t}\n\n\t\tconst request: any = {\n\t\t\tmodel: inferenceParams.model,\n\t\t\tcontents,\n\t\t\tconfig,\n\t\t}\n\n\t\tif (inferenceParams.streaming) {\n\t\t\trequest.stream = inferenceParams.streaming\n\t\t}\n\n\t\treturn request\n\t}\n\n\ttoResponse(response: any): InferenceResponse {\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\tmapContextItems(inferenceParams: InferenceParams<ModelName>): { contents: any[]; systemInstruction?: string } {\n\t\tconst context = inferenceParams.context\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\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\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\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\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","import { ModelName } from \"@domain/generative-model/generative-model\"\nimport { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\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 { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\n\nexport class OpenAIChatCompletionsMapper implements InferenceEndpointMapper {\n\ttoRequest(inferenceParams: InferenceParams<ModelName>) {\n\t\tconst request: any = {\n\t\t\tmodel: inferenceParams.model,\n\t\t\tmessages: this.mapContextItems(inferenceParams),\n\t\t}\n\n\t\tif (inferenceParams.tools && inferenceParams.tools.length > 0) {\n\t\t\trequest.tools = inferenceParams.tools.map((tool) => ({\n\t\t\t\ttype: \"function\",\n\t\t\t\tfunction: {\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 (inferenceParams.reasoningEffort) {\n\t\t\trequest.reasoning_effort = inferenceParams.reasoningEffort\n\t\t}\n\n\t\tif (inferenceParams.streaming) {\n\t\t\trequest.stream = inferenceParams.streaming\n\t\t}\n\n\t\treturn request\n\t}\n\n\ttoResponse(response: any): InferenceResponse {\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\tmapContextItems(inferenceParams: InferenceParams<ModelName>): any[] {\n\t\tconst messages: any[] = []\n\n\t\tfor (const item of inferenceParams.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\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\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 { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { Endpoint } from \"@domain/generative-model/endpoint\"\nimport { OpenAIChatCompletionsMapper } from \"./openai-chat-completions-mapper\"\nimport { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { ModelName } from \"@domain/generative-model/generative-model\"\nimport OpenAI from \"openai\"\nimport { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\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\tendpointMapper: InferenceEndpointMapper\n\tprivate readonly client: OpenAI\n\tprivate readonly extraBody: Record<string, unknown>\n\n\tconstructor(\n\t\tendpointMapper: InferenceEndpointMapper = new OpenAIChatCompletionsMapper(),\n\t\tconfig: OpenAICompatibleConfig = {},\n\t) {\n\t\tthis.endpointMapper = endpointMapper\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\tprivate buildRequest(inferenceParams: InferenceParams<ModelName>): any {\n\t\treturn {\n\t\t\t...this.extraBody,\n\t\t\t...this.endpointMapper.toRequest(inferenceParams),\n\t\t}\n\t}\n\n\tasync infer(inferenceParams: InferenceParams<ModelName>): Promise<InferenceResponse> {\n\t\tconst response = await this.client.chat.completions.create(this.buildRequest(inferenceParams))\n\n\t\treturn this.endpointMapper.toResponse(response)\n\t}\n\n\tasync *stream(\n\t\tinferenceParams: InferenceParams<ModelName>,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<SemanticEvent<unknown>> {\n\t\tconst stream: any = await this.client.chat.completions.create(this.buildRequest(inferenceParams))\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","import { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const claudeSonnet46Specification: ModelSpecification = {\n\tname: \"claude-sonnet-4-6\",\n\tprovider: \"anthropic\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"max\", \"high\", \"medium\", \"low\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 200_000,\n\tmaxOutputTokens: 64_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const claudeOpus48Specification: ModelSpecification = {\n\tname: \"claude-opus-4-8\",\n\tprovider: \"anthropic\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"max\", \"xhigh\", \"high\", \"medium\", \"low\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 200_000,\n\tmaxOutputTokens: 32_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const claudeOpus47Specification: ModelSpecification = {\n\tname: \"claude-opus-4-7\",\n\tprovider: \"anthropic\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"max\", \"xhigh\", \"high\", \"medium\", \"low\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 200_000,\n\tmaxOutputTokens: 32_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const gemini35FlashSpecification: ModelSpecification = {\n\tname: \"gemini-3.5-flash\",\n\tprovider: \"google\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"high\", \"medium\", \"low\", \"minimal\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 1_048_576,\n\tmaxOutputTokens: 64_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const gemini31ProSpecification: ModelSpecification = {\n\tname: \"gemini-3.1-pro-preview\",\n\tprovider: \"google\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"high\", \"medium\", \"low\", \"minimal\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 1_048_576,\n\tmaxOutputTokens: 64_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const deepSeekV4FlashSpecification: ModelSpecification = {\n\tname: \"deepseek-v4-flash\",\n\tprovider: \"deepseek\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"max\", \"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 1_000_000,\n\tmaxOutputTokens: 384_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: false,\n}\n","import { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const deepSeekV4ProSpecification: ModelSpecification = {\n\tname: \"deepseek-v4-pro\",\n\tprovider: \"deepseek\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"max\", \"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 1_000_000,\n\tmaxOutputTokens: 384_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: false,\n}\n","import { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const gpt54Specification: ModelSpecification = {\n\tname: \"gpt-5.4\",\n\tprovider: \"openai\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"xhigh\", \"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 1_050_000,\n\tmaxOutputTokens: 128_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const gpt54MiniSpecification: ModelSpecification = {\n\tname: \"gpt-5.4-mini\",\n\tprovider: \"openai\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"xhigh\", \"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 400_000,\n\tmaxOutputTokens: 128_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const gpt54NanoSpecification: ModelSpecification = {\n\tname: \"gpt-5.4-nano\",\n\tprovider: \"openai\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"xhigh\", \"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 400_000,\n\tmaxOutputTokens: 128_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const gpt55Specification: ModelSpecification = {\n\tname: \"gpt-5.5\",\n\tprovider: \"openai\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"xhigh\", \"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 1_050_000,\n\tmaxOutputTokens: 128_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const claudeHaiku45Specification: ModelSpecification = {\n\tname: \"claude-haiku-4-5\",\n\tprovider: \"anthropic\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 200_000,\n\tmaxOutputTokens: 64_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import { AnthropicMessages } from \"@infra/providers/anthropic/endpoints/anthropic-messages\"\nimport { OpenAIResponses } from \"@infra/providers/openai/endpoints/openai-responses\"\nimport { GeminiGenerateContent } from \"@infra/providers/gemini/endpoints/gemini-generate-content\"\nimport { OpenAIChatCompletions } from \"@infra/providers/openai/endpoints/openai-chat-completions\"\nimport { claudeSonnet46Specification } from \"@infra/providers/anthropic/models/claude-4-6-sonnet\"\nimport { claudeOpus48Specification } from \"@infra/providers/anthropic/models/claude-4-8-opus\"\nimport { claudeOpus47Specification } from \"@infra/providers/anthropic/models/claude-4-7-opus\"\nimport { gemini35FlashSpecification } from \"@infra/providers/gemini/models/gemini-3-5-flash\"\nimport { gemini31ProSpecification } from \"@infra/providers/gemini/models/gemini-3-1-pro\"\nimport { deepSeekV4FlashSpecification } from \"@infra/providers/deepseek/models/deepseek-v4-flash\"\nimport { deepSeekV4ProSpecification } from \"@infra/providers/deepseek/models/deepseek-v4-pro\"\nimport { gpt54Specification } from \"@infra/providers/openai/models/gpt-5-4\"\nimport { gpt54MiniSpecification } from \"@infra/providers/openai/models/gpt-5-4-mini\"\nimport { gpt54NanoSpecification } from \"@infra/providers/openai/models/gpt-5-4-nano\"\nimport { gpt55Specification } from \"@infra/providers/openai/models/gpt-5-5\"\nimport { claudeHaiku45Specification } from \"@infra/providers/anthropic/models/claude-4-5-haiku\"\nimport { GenerativeModel, ModelName } from \"@domain/generative-model/generative-model\"\nimport { GenerativeModelRepository } from \"@domain/generative-model/generative-model-repository\"\n\nexport class InMemoryGenerativeModelRepository implements GenerativeModelRepository {\n\tgetByModelName(modelName: ModelName): Promise<GenerativeModel> {\n\t\tlet generativeModel = undefined\n\t\tswitch (modelName) {\n\t\t\tcase \"gpt-5.4\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new OpenAIResponses(),\n\t\t\t\t\tspecification: gpt54Specification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"gpt-5.4-mini\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new OpenAIResponses(),\n\t\t\t\t\tspecification: gpt54MiniSpecification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"gpt-5.4-nano\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new OpenAIResponses(),\n\t\t\t\t\tspecification: gpt54NanoSpecification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"gpt-5.5\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new OpenAIResponses(),\n\t\t\t\t\tspecification: gpt55Specification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"claude-haiku-4-5\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new AnthropicMessages(),\n\t\t\t\t\tspecification: claudeHaiku45Specification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"claude-sonnet-4-6\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new AnthropicMessages(),\n\t\t\t\t\tspecification: claudeSonnet46Specification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"claude-opus-4-7\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new AnthropicMessages(),\n\t\t\t\t\tspecification: claudeOpus47Specification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"claude-opus-4-8\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new AnthropicMessages(),\n\t\t\t\t\tspecification: claudeOpus48Specification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"gemini-3.5-flash\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new GeminiGenerateContent(),\n\t\t\t\t\tspecification: gemini35FlashSpecification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"gemini-3.1-pro-preview\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new GeminiGenerateContent(),\n\t\t\t\t\tspecification: gemini31ProSpecification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"deepseek-v4-flash\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new OpenAIChatCompletions(),\n\t\t\t\t\tspecification: deepSeekV4FlashSpecification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"deepseek-v4-pro\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new OpenAIChatCompletions(),\n\t\t\t\t\tspecification: deepSeekV4ProSpecification,\n\t\t\t\t}\n\t\t}\n\n\t\tif (!generativeModel) {\n\t\t\tthrow new Error(`Unsupported model: ${modelName}`)\n\t\t}\n\n\t\treturn Promise.resolve(generativeModel)\n\t}\n}\n","import { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { RequestValidationRule } from \"./rule\"\nimport { ModelName, ModelSpecification } from \"../generative-model\"\n\nexport class ReasoningEffortValidation implements RequestValidationRule {\n\treadonly name = \"reasoning-effort\"\n\n\tisValid(inferenceParams: InferenceParams<ModelName>, model: ModelSpecification): boolean {\n\t\tif (inferenceParams.reasoningEffort === undefined) {\n\t\t\treturn true\n\t\t}\n\n\t\tif (!model.supportsReasoningEffort) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn model.supportedReasoningEfforts.includes(inferenceParams.reasoningEffort)\n\t}\n}\n","import { RequestValidationRule } from \"./rule\"\nimport { ModelName, ModelSpecification } from \"../generative-model\"\nimport { InferenceParams } from \"@domain/agentic-environment/inference/params\"\n\nexport class ToolCallingValidation implements RequestValidationRule {\n\treadonly name = \"tool-calling\"\n\n\tisValid(inferenceParams: InferenceParams<ModelName>, model: ModelSpecification): boolean {\n\t\tif (inferenceParams.tools === undefined) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn model.supportsFunctionCalling\n\t}\n}\n","import { ModelSpecification } from \"@domain/generative-model/generative-model\"\nimport { RequestValidationRule } from \"./rule\"\nimport { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { ModelName } from \"@domain/generative-model/generative-model\"\n\nexport class StreamingValidation implements RequestValidationRule {\n\treadonly name = \"streaming\"\n\n\tisValid(inferenceParams: InferenceParams<ModelName>, model: ModelSpecification): boolean {\n\t\tif (!inferenceParams.streaming) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn model.supportsStreaming\n\t}\n}\n","import { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\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 { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { RequestValidationRule } from \"./rule\"\nimport { ModelName, ModelSpecification } from \"../generative-model\"\n\nfunction getContextItemValidationKey(item: ContextItem): string {\n\tif (item instanceof UserMessageItem) {\n\t\treturn \"user_message\"\n\t}\n\tif (item instanceof SystemMessageItem) {\n\t\treturn \"system_message\"\n\t}\n\tif (item instanceof DeveloperMessageItem) {\n\t\treturn \"developer_message\"\n\t}\n\tif (item instanceof ModelMessageItem) {\n\t\treturn \"model_message\"\n\t}\n\treturn item.getType()\n}\n\nexport class ContextValidation implements RequestValidationRule {\n\treadonly name = \"context\"\n\n\tisValid(inferenceParams: InferenceParams<ModelName>, model: ModelSpecification): boolean {\n\t\treturn inferenceParams.context.items.every((item) =>\n\t\t\tmodel.supportedContextItemTypes.includes(getContextItemValidationKey(item)),\n\t\t)\n\t}\n}\n","import { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { ModelName, ModelSpecification } from \"../generative-model\"\nimport { RequestValidationRule } from \"./rule\"\nimport { ReasoningEffortValidation } from \"./reasoning-effort\"\nimport { ToolCallingValidation } from \"./tool-calling\"\nimport { StreamingValidation } from \"./streaming\"\nimport { StructuredOutputValidation } from \"./structured-output\"\nimport { ContextValidation } from \"./context\"\n\nexport const defaultRequestValidationRules: RequestValidationRule[] = [\n\tnew ReasoningEffortValidation(),\n\tnew ToolCallingValidation(),\n\tnew StreamingValidation(),\n\tnew StructuredOutputValidation(),\n\tnew ContextValidation(),\n]\n\nexport class InferenceRequestValidator {\n\tconstructor(private readonly rules: RequestValidationRule[] = defaultRequestValidationRules) {}\n\n\tvalidate(inferenceParams: InferenceParams<ModelName>, model: ModelSpecification): void {\n\t\tfor (const rule of this.rules) {\n\t\t\tif (!rule.isValid(inferenceParams, model)) {\n\t\t\t\tthrow new Error(`Request validation \"${rule.name}\" failed for model \"${model.name}\"`)\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 { 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 { StructuredOutputFormat } from \"@domain/generative-model/request-validation/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 { 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 { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { Endpoint } from \"@domain/generative-model/endpoint\"\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 { FunctionCallRunner } from \"@app/services/function-call-runner\"\nimport { BaseParticipant } from \"@app/participants/participant\"\nimport { SendMessage } from \"@app/use-cases/send-message\"\nimport { ModelName } from \"@domain/generative-model/generative-model\"\nimport { GenerativeModelRepository } from \"@domain/generative-model/generative-model-repository\"\nimport { InMemoryGenerativeModelRepository } from \"@infra/repository/generative-model-repository\"\nimport { InferenceRequestValidator } from \"@domain/generative-model/request-validation/inference-request-validator\"\n\nconst generativeModelRepository: GenerativeModelRepository = new InMemoryGenerativeModelRepository()\nconst inferenceRequestValidator = new InferenceRequestValidator()\nconst runInferenceUseCase = new RunInference(generativeModelRepository, inferenceRequestValidator)\nconst executeFunctionCallUseCase = new ExecuteFunctionCall(new FunctionCallRunner())\nconst sendMessageUseCase = new SendMessage()\n\nconst runInference = (inferenceParams: InferenceParams<ModelName>): void => {\n\trunInferenceUseCase.execute(inferenceParams)\n}\n\nconst executeFunctionCall = (\n\tenvironment: AgenticEnvironment,\n\tfunctionCallItem: FunctionCallItem,\n\ttool: Tool,\n\tcaller: Participant,\n): 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\tModelName,\n\tInMemoryModelContextRepository,\n\tContextItem,\n\tSemanticEvent,\n\tUserMessageItem,\n\tDeveloperMessageItem,\n\tSystemMessageItem,\n\tModelMessageItem,\n\tFunctionCallItem,\n\tFunctionCallOutputItem,\n\tReasoningItem,\n\tStructuredOutputFormat,\n\tTokenUsage,\n\tInputTokenDetails,\n\tOutputTokenDetails,\n\tTool,\n\tEndpoint,\n\tAgenticEnvironment,\n\tParticipant,\n\tBaseParticipant,\n\tAgenticError,\n\tInferenceResponse,\n\tInferenceParams,\n\trunInference,\n\texecuteFunctionCall,\n\tsendMessage,\n}\n"],"mappings":"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","names":["error","generativeModelRepository","OpenAI"]}
|
|
1
|
+
{"version":3,"sources":["../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/generative-model/request-validation/structured-output.ts","../src/domain/model-context/context-item/client-item/function-call-output.ts","../src/domain/generative-model/token-usage.ts","../src/infrastructure/mcp/mcp-client.ts","../src/infrastructure/mcp/mcp-tool-registry.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/domain/model-context/semantic-event/semantic-event.ts","../src/domain/agentic-environment/inference/response.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/function-call-runner.ts","../src/application/participants/participant.ts","../src/application/use-cases/send-message.ts","../src/infrastructure/providers/anthropic/endpoints/anthropic-messages-mapper.ts","../src/infrastructure/providers/anthropic/endpoints/anthropic-messages.ts","../src/infrastructure/providers/openai/endpoints/openai-responses.ts","../src/domain/model-context/context-item/item-content/summary-text.ts","../src/infrastructure/providers/openai/endpoints/openai-responses-mapper.ts","../src/infrastructure/providers/gemini/endpoints/gemini-generate-content.ts","../src/infrastructure/providers/gemini/endpoints/gemini-generate-content-mapper.ts","../src/infrastructure/providers/openai/endpoints/openai-chat-completions-mapper.ts","../src/infrastructure/providers/openai/endpoints/openai-chat-completions.ts","../src/infrastructure/providers/anthropic/models/claude-4-6-sonnet.ts","../src/infrastructure/providers/anthropic/models/claude-4-8-opus.ts","../src/infrastructure/providers/anthropic/models/claude-4-7-opus.ts","../src/infrastructure/providers/gemini/models/gemini-3-5-flash.ts","../src/infrastructure/providers/gemini/models/gemini-3-1-pro.ts","../src/infrastructure/providers/deepseek/models/deepseek-v4-flash.ts","../src/infrastructure/providers/deepseek/models/deepseek-v4-pro.ts","../src/infrastructure/providers/openai/models/gpt-5-4.ts","../src/infrastructure/providers/openai/models/gpt-5-4-mini.ts","../src/infrastructure/providers/openai/models/gpt-5-4-nano.ts","../src/infrastructure/providers/openai/models/gpt-5-5.ts","../src/infrastructure/providers/anthropic/models/claude-4-5-haiku.ts","../src/infrastructure/repository/generative-model-repository.ts","../src/domain/generative-model/request-validation/reasoning-effort.ts","../src/domain/generative-model/request-validation/tool-calling.ts","../src/domain/generative-model/request-validation/streaming.ts","../src/domain/generative-model/request-validation/context.ts","../src/domain/generative-model/request-validation/inference-request-validator.ts","../src/index.ts"],"sourcesContent":["import type { 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","export abstract class ContextItem {\n\tabstract readonly type: string\n\n\tgetType(): string {\n\t\treturn this.type\n\t}\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","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","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\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","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","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","import type { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport type { 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","import type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport type { ModelName, ModelSpecification } from \"../generative-model\"\nimport type { RequestValidationRule } from \"./rule\"\n\nexport type StructuredOutputFormat = {\n\tname?: string\n\tschema: Record<string, any>\n\tstrict?: boolean\n}\n\nexport class StructuredOutputValidation implements RequestValidationRule {\n\treadonly name = \"structured-output\"\n\n\tisValid(inferenceParams: InferenceParams<ModelName>, model: ModelSpecification): boolean {\n\t\tif (inferenceParams.structuredOutput === undefined) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn model.supportsStructuredOutput\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","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 { Client } from \"@modelcontextprotocol/sdk/client/index.js\"\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\"\n\nexport interface McpServerConfig {\n\t/** The MCP server URL, e.g. https://api.githubcopilot.com/mcp/ */\n\turl: string\n\t/** Bearer token sent as `Authorization: Bearer <token>` (e.g. a GitHub token). */\n\tauthToken?: string\n\t/** Extra headers merged into every request (overridden by `authToken` for Authorization). */\n\theaders?: Record<string, string>\n\t/** Client name reported to the server (defaults to \"mozaik\"). */\n\tname?: string\n}\n\nexport interface McpToolSpec {\n\tname: string\n\tdescription: string\n\t/** JSON Schema for the tool's arguments (maps 1:1 to FunctionTool.parameters). */\n\tinputSchema: Record<string, any>\n}\n\n/**\n * A thin wrapper over the MCP TypeScript SDK using the Streamable HTTP transport — what\n * remote MCP servers (e.g. GitHub's `api.githubcopilot.com/mcp/`) speak. One client per\n * server; lazily connects on first use. Infrastructure-only: the domain never sees this.\n */\nexport class McpClient {\n\tprivate readonly client: Client\n\tprivate readonly transport: StreamableHTTPClientTransport\n\tprivate connected = false\n\n\tconstructor(private readonly config: McpServerConfig) {\n\t\tconst headers: Record<string, string> = { ...(config.headers ?? {}) }\n\t\tif (config.authToken) headers.Authorization = `Bearer ${config.authToken}`\n\t\tthis.transport = new StreamableHTTPClientTransport(\n\t\t\tnew URL(config.url),\n\t\t\tObject.keys(headers).length > 0 ? { requestInit: { headers } } : undefined,\n\t\t)\n\t\tthis.client = new Client({ name: config.name ?? \"mozaik\", version: \"1.0.0\" }, { capabilities: {} })\n\t}\n\n\tasync connect(): Promise<void> {\n\t\tif (this.connected) return\n\t\tawait this.client.connect(this.transport)\n\t\tthis.connected = true\n\t}\n\n\t/** The tools this server exposes. */\n\tasync listTools(): Promise<McpToolSpec[]> {\n\t\tawait this.connect()\n\t\tconst res = await this.client.listTools()\n\t\treturn (res.tools ?? []).map((t) => ({\n\t\t\tname: t.name,\n\t\t\tdescription: t.description ?? \"\",\n\t\t\tinputSchema: (t.inputSchema as Record<string, any>) ?? { type: \"object\", properties: {} },\n\t\t}))\n\t}\n\n\t/** Call a tool by name; returns its text output. Throws if the server flags an error. */\n\tasync callTool(name: string, args: Record<string, any>): Promise<string> {\n\t\tawait this.connect()\n\t\tconst res = await this.client.callTool({ name, arguments: args ?? {} })\n\t\tconst text = extractText(res)\n\t\tif ((res as { isError?: boolean }).isError) {\n\t\t\tthrow new Error(`MCP tool \"${name}\" failed: ${text || \"unknown error\"}`)\n\t\t}\n\t\treturn text\n\t}\n\n\tasync close(): Promise<void> {\n\t\tif (!this.connected) return\n\t\ttry {\n\t\t\tawait this.client.close()\n\t\t} catch {\n\t\t\t// best-effort teardown — the transport may already be gone\n\t\t}\n\t\tthis.connected = false\n\t}\n}\n\n/** Concatenate the text blocks of an MCP tool result (ignores non-text content). */\nfunction extractText(res: unknown): string {\n\tconst content = (res as { content?: unknown }).content\n\tif (!Array.isArray(content)) return \"\"\n\treturn content\n\t\t.filter((c): c is { type: \"text\"; text: string } => (c as { type?: string })?.type === \"text\" && typeof (c as { text?: unknown }).text === \"string\")\n\t\t.map((c) => c.text)\n\t\t.join(\"\\n\")\n}\n","import type { FunctionTool } from \"@domain/generative-model/tool\"\nimport { McpClient, type McpServerConfig } from \"./mcp-client.js\"\n\n/** The slice of an MCP client the registry needs — lets tests inject a fake. */\nexport interface McpClientLike {\n\tlistTools(): Promise<Array<{ name: string; description: string; inputSchema: Record<string, any> }>>\n\tcallTool(name: string, args: Record<string, any>): Promise<string>\n\tclose(): Promise<void>\n}\n\n/**\n * Connects to one or more MCP servers and exposes their tools as mozaik `FunctionTool`s.\n * Each tool's `invoke()` proxies the call back to its MCP server. Because they are plain\n * FunctionTools, every provider mapper and the existing function-call loop handle them\n * with no changes — MCP support adds no new tool type and touches no provider code.\n *\n * `strict` is false: MCP servers publish arbitrary JSON Schemas that won't always satisfy\n * a provider's strict function-calling mode.\n */\nexport class McpToolRegistry {\n\tprivate readonly clients: McpClientLike[] = []\n\n\tconstructor(\n\t\tprivate readonly servers: McpServerConfig[],\n\t\tprivate readonly createClient: (config: McpServerConfig) => McpClientLike = (config) => new McpClient(config),\n\t) {}\n\n\t/** Discover every tool across the configured servers, as FunctionTools ready to pass to a model. */\n\tasync discoverTools(): Promise<FunctionTool[]> {\n\t\tconst tools: FunctionTool[] = []\n\t\tfor (const server of this.servers) {\n\t\t\tconst client = this.createClient(server)\n\t\t\tthis.clients.push(client)\n\t\t\tfor (const spec of await client.listTools()) {\n\t\t\t\ttools.push({\n\t\t\t\t\ttype: \"function\",\n\t\t\t\t\tname: spec.name,\n\t\t\t\t\tdescription: spec.description,\n\t\t\t\t\tparameters: spec.inputSchema,\n\t\t\t\t\tstrict: false,\n\t\t\t\t\tinvoke: (args: unknown) => client.callTool(spec.name, (args as Record<string, any>) ?? {}),\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn tools\n\t}\n\n\t/** Close all underlying MCP connections. */\n\tasync close(): Promise<void> {\n\t\tawait Promise.all(this.clients.map((c) => c.close()))\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport type { 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\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 type { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport type { AgenticEnvironment } from \"./agentic-environment\"\nimport type { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport type { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport type { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport type { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport type { 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 type { Participant } from \"@domain/agentic-environment/participant\"\nimport type { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport type { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport type { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport type { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport type { 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(\n\t\t\t\t\t\t\t`[AgenticEnvironment] Participant.onError() failed. Reason: ${error as Error}\\n ${JSON.stringify({ error }, null, 2)}`,\n\t\t\t\t\t\t)\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(\n\t\t\t\t\t\t\t`[AgenticEnvironment] Participant.onError() failed. Reason: ${error as Error}\\n ${JSON.stringify({ error }, null, 2)}`,\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\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\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\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","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 type { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport type { 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 type { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport type { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport type { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport type { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport type { Endpoint } from \"@domain/generative-model/endpoint\"\nimport type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport type { ModelName } from \"@domain/generative-model/generative-model\"\n\ntype InferenceItem = ReasoningItem | FunctionCallItem | ModelMessageItem | SemanticEvent<unknown>\n\nexport interface InferenceRunner {\n\trun(request: InferenceParams<ModelName>, endpoint: Endpoint): AsyncIterable<InferenceItem>\n}\n\nexport class StreamingInference implements InferenceRunner {\n\tasync *run(request: InferenceParams<ModelName>, endpoint: Endpoint): AsyncIterable<InferenceItem> {\n\t\tif (request.signal?.aborted) {\n\t\t\treturn\n\t\t}\n\t\tyield* endpoint.stream(request, request.signal)\n\t}\n}\n\nexport class NonStreamingInference implements InferenceRunner {\n\tasync *run(request: InferenceParams<ModelName>, endpoint: Endpoint): AsyncIterable<InferenceItem> {\n\t\tif (request.signal?.aborted) {\n\t\t\treturn\n\t\t}\n\t\tconst response = await endpoint.infer(request)\n\t\tfor (const item of response.contextItems) {\n\t\t\tif (request.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","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 type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport type { RunInferenceUseCase } from \"@domain/agentic-environment/use-cases/run-inference\"\nimport type { InferenceRunner } from \"@app/services/inference-runner\"\nimport { NonStreamingInference, StreamingInference } from \"@app/services/inference-runner\"\nimport type { InferenceRequestValidator } from \"@domain/generative-model/request-validation/inference-request-validator\"\nimport type { ModelName } from \"@domain/generative-model/generative-model\"\nimport type { GenerativeModelRepository } from \"@domain/generative-model/generative-model-repository\"\n\nexport class RunInference implements RunInferenceUseCase<ModelName> {\n\tconstructor(\n\t\tprivate readonly generativeModelRepository: GenerativeModelRepository,\n\t\tprivate readonly requestValidator: InferenceRequestValidator,\n\t) {}\n\n\tasync execute(inferenceParams: InferenceParams<ModelName>): Promise<void> {\n\t\tconst { caller, environment, signal } = inferenceParams\n\n\t\tconst generativeModel = await this.generativeModelRepository.getByModelName(inferenceParams.model)\n\n\t\tthis.requestValidator.validate(inferenceParams, generativeModel.specification)\n\n\t\tconst resolvedParams: InferenceParams<ModelName> = {\n\t\t\t...inferenceParams,\n\t\t\tmaxOutputTokens: inferenceParams.maxOutputTokens ?? generativeModel.specification.maxOutputTokens,\n\t\t}\n\n\t\tconst inferenceRunner: InferenceRunner = inferenceParams.streaming\n\t\t\t? new StreamingInference()\n\t\t\t: new NonStreamingInference()\n\n\t\tconst result = inferenceRunner.run(resolvedParams, generativeModel.endpoint)\n\n\t\tfor await (const item of result) {\n\t\t\tif (signal?.aborted) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif (item instanceof ReasoningItem) {\n\t\t\t\tenvironment.deliverReasoning(caller, item)\n\t\t\t} else if (item instanceof FunctionCallItem) {\n\t\t\t\tenvironment.deliverFunctionCall(caller, item)\n\t\t\t} else if (item instanceof ModelMessageItem) {\n\t\t\t\tenvironment.deliverModelMessage(caller, item)\n\t\t\t} else if (item instanceof SemanticEvent) {\n\t\t\t\tenvironment.deliverSemanticEvent(caller, item)\n\t\t\t}\n\t\t}\n\t}\n}\n","import type { FunctionCallRunner } from \"@app/services/function-call-runner\"\nimport type { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport type { Participant } from \"@domain/agentic-environment/participant\"\nimport type { ExecuteFunctionCallUseCase } from \"@domain/agentic-environment/use-cases/execute-function-call\"\nimport type { Tool } from \"@domain/generative-model/tool\"\nimport type { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\n\nexport class ExecuteFunctionCall implements ExecuteFunctionCallUseCase {\n\tconstructor(private readonly functionCallRunner: FunctionCallRunner) {}\n\n\tasync execute(\n\t\tenvironment: AgenticEnvironment,\n\t\tfunctionCallItem: FunctionCallItem,\n\t\ttool: Tool,\n\t\tcaller: Participant,\n\t\tsignal?: AbortSignal,\n\t): Promise<void> {\n\t\tconst stream = this.functionCallRunner.run(functionCallItem, tool, signal)\n\n\t\tfor await (const item of stream) {\n\t\t\tenvironment.deliverFunctionCallOutput(caller, item)\n\t\t}\n\t}\n}\n","import type { Tool } from \"@domain/generative-model/tool\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport type { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\n\nexport class FunctionCallRunner {\n\tasync *run(call: FunctionCallItem, tool: Tool, signal?: AbortSignal): AsyncIterable<FunctionCallOutputItem> {\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 type { AgenticError } from \"@domain/agentic-environment/errors/base-error\"\nimport { Participant } from \"@domain/agentic-environment/participant\"\nimport type { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport type { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport type { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport type { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport type { 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 type { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport type { Participant } from \"@domain/agentic-environment/participant\"\nimport type { SendMessageUseCase } from \"@domain/agentic-environment/use-cases/send-message\"\n\nexport class SendMessage implements SendMessageUseCase {\n\tasync execute(environment: AgenticEnvironment, message: string, caller: Participant): Promise<void> {\n\t\tif (!caller.isJoinedTo(environment)) {\n\t\t\tthrow new Error(\"Not joined to environment\")\n\t\t}\n\n\t\tenvironment.deliverMessage(caller, message)\n\t}\n}\n","import type { ModelName } from \"@domain/generative-model/generative-model\"\nimport type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\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 { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport type { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport type { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport type Anthropic from \"@anthropic-ai/sdk\"\n\nexport class AnthropicMessagesMapper implements InferenceEndpointMapper {\n\ttoRequest(inferenceParams: InferenceParams<ModelName>) {\n\t\tconst { messages, system } = this.mapContextItems(inferenceParams)\n\t\tconst outputConfig: any = {}\n\n\t\tconst request: any = {\n\t\t\tmodel: inferenceParams.model,\n\t\t\tmessages,\n\t\t}\n\n\t\trequest.max_tokens = inferenceParams.maxOutputTokens!\n\n\t\tif (system) {\n\t\t\trequest.system = system\n\t\t}\n\n\t\tif (inferenceParams.tools && inferenceParams.tools.length > 0) {\n\t\t\trequest.tools = inferenceParams.tools.map((tool) => ({\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description,\n\t\t\t\tinput_schema: tool.parameters,\n\t\t\t}))\n\t\t}\n\n\t\tif (inferenceParams.structuredOutput) {\n\t\t\toutputConfig.format = {\n\t\t\t\ttype: \"json_schema\",\n\t\t\t\tjson_schema: inferenceParams.structuredOutput.schema,\n\t\t\t}\n\t\t}\n\n\t\tif (inferenceParams.reasoningEffort) {\n\t\t\trequest.thinking = { type: \"adaptive\" }\n\t\t\toutputConfig.effort = inferenceParams.reasoningEffort\n\t\t}\n\n\t\tif (Object.keys(outputConfig).length > 0) {\n\t\t\trequest.output_config = outputConfig\n\t\t}\n\n\t\tif (inferenceParams.streaming) {\n\t\t\trequest.stream = inferenceParams.streaming\n\t\t}\n\n\t\treturn request\n\t}\n\n\ttoResponse(response: any): InferenceResponse {\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\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\tmapContextItems(inferenceParams: InferenceParams<ModelName>): { messages: any[]; system?: string } {\n\t\tconst context = inferenceParams.context\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 ReasoningItem) {\n\t\t\t\tthis.addContentBlock(messages, \"assistant\", {\n\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\tthinking: item.content?.text ?? \"\",\n\t\t\t\t\tsignature: item.encryptedContent ?? \"\",\n\t\t\t\t})\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\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\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: block.signature,\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","import type { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport type { Endpoint } from \"@domain/generative-model/endpoint\"\nimport type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport type { ModelName } from \"@domain/generative-model/generative-model\"\nimport { AnthropicMessagesMapper } from \"./anthropic-messages-mapper\"\nimport Anthropic from \"@anthropic-ai/sdk\"\nimport type { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\n\n/**\n * Native Anthropic adapter on the `@anthropic-ai/sdk` (`messages.create`).\n * Maps domain context to Anthropic's `messages`/`content` blocks shape,\n * system prompt, tools, adaptive thinking, and structured output config.\n */\nexport class AnthropicMessages implements Endpoint {\n\tendpointMapper: InferenceEndpointMapper\n\tprivate readonly client: Anthropic\n\n\tconstructor(endpointMapper: InferenceEndpointMapper = new AnthropicMessagesMapper()) {\n\t\tthis.endpointMapper = endpointMapper\n\t\tthis.client = new Anthropic()\n\t}\n\n\tasync infer(inferenceParams: InferenceParams<ModelName>): Promise<InferenceResponse> {\n\t\tconst inferenceRequest = this.endpointMapper.toRequest(inferenceParams)\n\t\tconst response = await this.client.messages.create(inferenceRequest)\n\n\t\treturn this.endpointMapper.toResponse(response)\n\t}\n\n\tasync *stream(\n\t\tinferenceParams: InferenceParams<ModelName>,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<SemanticEvent<unknown>> {\n\t\tconst inferenceRequest = this.endpointMapper.toRequest(inferenceParams)\n\t\tconst stream: any = await this.client.messages.create(inferenceRequest)\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","import { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport type { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport type { Endpoint } from \"@domain/generative-model/endpoint\"\nimport OpenAI from \"openai\"\nimport type { ModelName } from \"@domain/generative-model/generative-model\"\nimport type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { OpenAIResponsesMapper } from \"./openai-responses-mapper\"\nimport type { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\n\nexport class OpenAIResponses implements Endpoint {\n\tendpointMapper: InferenceEndpointMapper\n\tprivate readonly client: OpenAI\n\n\tconstructor(endpointMapper: InferenceEndpointMapper = new OpenAIResponsesMapper()) {\n\t\tthis.endpointMapper = endpointMapper\n\t\tthis.client = new OpenAI()\n\t}\n\n\tasync infer(inferenceParams: InferenceParams<ModelName>): Promise<InferenceResponse> {\n\t\tconst request = this.endpointMapper.toRequest(inferenceParams)\n\t\tconst response = await this.client.responses.create(request)\n\n\t\treturn this.endpointMapper.toResponse(response)\n\t}\n\n\tasync *stream(\n\t\tinferenceParams: InferenceParams<ModelName>,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<SemanticEvent<unknown>> {\n\t\tconst request = this.endpointMapper.toRequest(inferenceParams)\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","import { ItemContent } from \"@domain/model-context/context-item/item-content/item-content\"\n\nexport class SummaryText extends ItemContent {\n\treadonly type = \"summary_text\"\n\n\tprivate constructor(public readonly text: string) {\n\t\tsuper()\n\t}\n\n\tstatic rehydrate(data: { text: string }): SummaryText {\n\t\treturn new SummaryText(data.text)\n\t}\n}\n","import type { ModelName } from \"@domain/generative-model/generative-model\"\nimport type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport type { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\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 { 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 { SummaryText } from \"@domain/model-context/context-item/item-content/summary-text\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport type { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport type OpenAI from \"openai\"\n\nexport class OpenAIResponsesMapper implements InferenceEndpointMapper {\n\ttoRequest(inferenceParams: InferenceParams<ModelName>): any {\n\t\tconst request: any = {\n\t\t\tmodel: inferenceParams.model,\n\t\t\tinput: this.mapContextItems(inferenceParams),\n\t\t}\n\n\t\tif (inferenceParams.tools && inferenceParams.tools.length > 0) {\n\t\t\trequest.tools = inferenceParams.tools.map((tool) => ({\n\t\t\t\ttype: tool.type,\n\t\t\t\tname: tool.name,\n\t\t\t\tdescription: tool.description,\n\t\t\t\tparameters: tool.parameters,\n\t\t\t}))\n\t\t}\n\n\t\tif (inferenceParams.reasoningEffort) {\n\t\t\trequest.reasoning = {\n\t\t\t\teffort: inferenceParams.reasoningEffort,\n\t\t\t}\n\t\t}\n\n\t\tif (inferenceParams.structuredOutput) {\n\t\t\tconst format = inferenceParams.structuredOutput\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\tif (inferenceParams.streaming) {\n\t\t\trequest.stream = inferenceParams.streaming\n\t\t}\n\n\t\treturn request\n\t}\n\n\ttoResponse(response: any): InferenceResponse {\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\tmapContextItems(inferenceParams: InferenceParams<ModelName>): any[] {\n\t\tconst input: any[] = []\n\n\t\tfor (const item of inferenceParams.context.getItems()) {\n\t\t\tif (\n\t\t\t\titem instanceof DeveloperMessageItem ||\n\t\t\t\titem instanceof SystemMessageItem ||\n\t\t\t\titem instanceof UserMessageItem\n\t\t\t) {\n\t\t\t\tinput.push({\n\t\t\t\t\ttype: item.type,\n\t\t\t\t\trole: item.role,\n\t\t\t\t\tcontent: [{ type: \"input_text\", text: item.content.text }],\n\t\t\t\t})\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof ModelMessageItem) {\n\t\t\t\tinput.push({\n\t\t\t\t\ttype: item.type,\n\t\t\t\t\trole: item.role,\n\t\t\t\t\tcontent: [{ type: \"output_text\", text: item.content.text }],\n\t\t\t\t})\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof FunctionCallItem) {\n\t\t\t\tinput.push({\n\t\t\t\t\ttype: item.type,\n\t\t\t\t\tcall_id: item.callId,\n\t\t\t\t\tname: item.name,\n\t\t\t\t\targuments: item.args,\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\tinput.push({\n\t\t\t\t\ttype: item.type,\n\t\t\t\t\tcall_id: item.callId,\n\t\t\t\t\toutput: [{ type: \"input_text\", text: item.output.text }],\n\t\t\t\t})\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (item instanceof ReasoningItem) {\n\t\t\t\tconst reasoningInput: Record<string, unknown> = {\n\t\t\t\t\ttype: item.type,\n\t\t\t\t\tsummary: item.summary.map((summary) => ({ type: \"summary_text\", text: summary.text })),\n\t\t\t\t}\n\t\t\t\tif (item.encryptedContent !== undefined) {\n\t\t\t\t\treasoningInput.encrypted_content = item.encryptedContent\n\t\t\t\t}\n\t\t\t\tinput.push(reasoningInput)\n\t\t\t}\n\t\t}\n\n\t\treturn input\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 ?? 0),\n\t\t\tnew OutputTokenDetails(response.usage.output_tokens_details?.reasoning_tokens ?? 0),\n\t\t)\n\t}\n\n\textractContextItems(response: any): ContextItem[] {\n\t\tconst items: ContextItem[] = []\n\n\t\tfor (const item of response.output ?? []) {\n\t\t\tif (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\tconst firstContent = item.content?.[0]\n\t\t\t\tif (firstContent) {\n\t\t\t\t\titems.push(ModelMessageItem.rehydrate(firstContent as { text: string }))\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (item.type === \"function_call\") {\n\t\t\t\titems.push(\n\t\t\t\t\tFunctionCallItem.rehydrate({\n\t\t\t\t\t\tcallId: item.call_id,\n\t\t\t\t\t\tname: item.name,\n\t\t\t\t\t\targs: item.arguments,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\titems.push(\n\t\t\t\t\tReasoningItem.rehydrate({\n\t\t\t\t\t\tcontent: undefined,\n\t\t\t\t\t\tencryptedContent: item.encrypted_content,\n\t\t\t\t\t\tsummary: (item.summary ?? []).map((summary: { text: string }) =>\n\t\t\t\t\t\t\tSummaryText.rehydrate({ text: summary.text }),\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\treturn items\n\t}\n}\n","import type { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { GoogleGenAI } from \"@google/genai\"\nimport type { Endpoint } from \"@domain/generative-model/endpoint\"\nimport type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport type { ModelName } from \"@domain/generative-model/generative-model\"\nimport { GeminiGenerateContentMapper } from \"./gemini-generate-content-mapper\"\nimport type { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\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\tendpointMapper: InferenceEndpointMapper\n\tprivate readonly client: GoogleGenAI\n\n\tconstructor(endpointMapper: InferenceEndpointMapper = new GeminiGenerateContentMapper()) {\n\t\tthis.endpointMapper = endpointMapper\n\t\tthis.client = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY })\n\t}\n\n\tasync infer(inferenceParams: InferenceParams<ModelName>): Promise<InferenceResponse> {\n\t\tconst inferenceRequest = this.endpointMapper.toRequest(inferenceParams)\n\t\tconst response = await this.client.models.generateContent(inferenceRequest)\n\n\t\treturn this.endpointMapper.toResponse(response)\n\t}\n\n\tasync *stream(\n\t\tinferenceParams: InferenceParams<ModelName>,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<SemanticEvent<unknown>> {\n\t\tconst inferenceRequest = this.endpointMapper.toRequest(inferenceParams)\n\t\tconst stream = await this.client.models.generateContentStream(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","import type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport type { ModelName } from \"@domain/generative-model/generative-model\"\nimport type { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\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 type { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\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\"\n\nexport class GeminiGenerateContentMapper implements InferenceEndpointMapper {\n\ttoRequest(inferenceParams: InferenceParams<ModelName>) {\n\t\tconst { contents, systemInstruction } = this.mapContextItems(inferenceParams)\n\t\tconst config: any = {}\n\n\t\tif (systemInstruction) {\n\t\t\tconfig.systemInstruction = systemInstruction\n\t\t}\n\n\t\tif (inferenceParams.tools && inferenceParams.tools.length > 0) {\n\t\t\tconfig.tools = [\n\t\t\t\t{\n\t\t\t\t\tfunctionDeclarations: inferenceParams.tools.map((tool) => ({\n\t\t\t\t\t\tname: tool.name,\n\t\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\t\tparametersJsonSchema: tool.parameters,\n\t\t\t\t\t})),\n\t\t\t\t},\n\t\t\t]\n\t\t}\n\n\t\tif (inferenceParams.structuredOutput) {\n\t\t\tconfig.responseMimeType = \"application/json\"\n\t\t\tconfig.responseSchema = inferenceParams.structuredOutput.schema\n\t\t}\n\n\t\tif (inferenceParams.reasoningEffort) {\n\t\t\tconfig.thinkingConfig = {\n\t\t\t\tthinkingLevel: inferenceParams.reasoningEffort,\n\t\t\t\tincludeThoughts: true,\n\t\t\t}\n\t\t}\n\n\t\tconst request: any = {\n\t\t\tmodel: inferenceParams.model,\n\t\t\tcontents,\n\t\t\tconfig,\n\t\t}\n\n\t\tif (inferenceParams.streaming) {\n\t\t\trequest.stream = inferenceParams.streaming\n\t\t}\n\n\t\treturn request\n\t}\n\n\ttoResponse(response: any): InferenceResponse {\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\tmapContextItems(inferenceParams: InferenceParams<ModelName>): { contents: any[]; systemInstruction?: string } {\n\t\tconst context = inferenceParams.context\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\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\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\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\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","import type { ModelName } from \"@domain/generative-model/generative-model\"\nimport type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport type { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\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 { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport type { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\n\nexport class OpenAIChatCompletionsMapper implements InferenceEndpointMapper {\n\ttoRequest(inferenceParams: InferenceParams<ModelName>) {\n\t\tconst request: any = {\n\t\t\tmodel: inferenceParams.model,\n\t\t\tmessages: this.mapContextItems(inferenceParams),\n\t\t}\n\n\t\tif (inferenceParams.tools && inferenceParams.tools.length > 0) {\n\t\t\trequest.tools = inferenceParams.tools.map((tool) => ({\n\t\t\t\ttype: \"function\",\n\t\t\t\tfunction: {\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 (inferenceParams.reasoningEffort) {\n\t\t\trequest.reasoning_effort = inferenceParams.reasoningEffort\n\t\t}\n\n\t\tif (inferenceParams.streaming) {\n\t\t\trequest.stream = inferenceParams.streaming\n\t\t}\n\n\t\treturn request\n\t}\n\n\ttoResponse(response: any): InferenceResponse {\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\tmapContextItems(inferenceParams: InferenceParams<ModelName>): any[] {\n\t\tconst messages: any[] = []\n\n\t\tfor (const item of inferenceParams.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\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\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 type { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport type { Endpoint } from \"@domain/generative-model/endpoint\"\nimport { OpenAIChatCompletionsMapper } from \"./openai-chat-completions-mapper\"\nimport type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport type { ModelName } from \"@domain/generative-model/generative-model\"\nimport OpenAI from \"openai\"\nimport type { InferenceEndpointMapper } from \"@domain/generative-model/inference-endpoint-mapper\"\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\tendpointMapper: InferenceEndpointMapper\n\tprivate readonly client: OpenAI\n\tprivate readonly extraBody: Record<string, unknown>\n\n\tconstructor(\n\t\tendpointMapper: InferenceEndpointMapper = new OpenAIChatCompletionsMapper(),\n\t\tconfig: OpenAICompatibleConfig = {},\n\t) {\n\t\tthis.endpointMapper = endpointMapper\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\tprivate buildRequest(inferenceParams: InferenceParams<ModelName>): any {\n\t\treturn {\n\t\t\t...this.extraBody,\n\t\t\t...this.endpointMapper.toRequest(inferenceParams),\n\t\t}\n\t}\n\n\tasync infer(inferenceParams: InferenceParams<ModelName>): Promise<InferenceResponse> {\n\t\tconst response = await this.client.chat.completions.create(this.buildRequest(inferenceParams))\n\n\t\treturn this.endpointMapper.toResponse(response)\n\t}\n\n\tasync *stream(\n\t\tinferenceParams: InferenceParams<ModelName>,\n\t\tsignal?: AbortSignal,\n\t): AsyncIterable<SemanticEvent<unknown>> {\n\t\tconst stream: any = await this.client.chat.completions.create(this.buildRequest(inferenceParams))\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","import type { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const claudeSonnet46Specification: ModelSpecification = {\n\tname: \"claude-sonnet-4-6\",\n\tprovider: \"anthropic\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"max\", \"high\", \"medium\", \"low\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 200_000,\n\tmaxOutputTokens: 64_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import type { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const claudeOpus48Specification: ModelSpecification = {\n\tname: \"claude-opus-4-8\",\n\tprovider: \"anthropic\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"max\", \"xhigh\", \"high\", \"medium\", \"low\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 200_000,\n\tmaxOutputTokens: 32_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import type { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const claudeOpus47Specification: ModelSpecification = {\n\tname: \"claude-opus-4-7\",\n\tprovider: \"anthropic\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"max\", \"xhigh\", \"high\", \"medium\", \"low\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 200_000,\n\tmaxOutputTokens: 32_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import type { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const gemini35FlashSpecification: ModelSpecification = {\n\tname: \"gemini-3.5-flash\",\n\tprovider: \"google\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"high\", \"medium\", \"low\", \"minimal\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 1_048_576,\n\tmaxOutputTokens: 64_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import type { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const gemini31ProSpecification: ModelSpecification = {\n\tname: \"gemini-3.1-pro-preview\",\n\tprovider: \"google\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"high\", \"medium\", \"low\", \"minimal\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 1_048_576,\n\tmaxOutputTokens: 64_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import type { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const deepSeekV4FlashSpecification: ModelSpecification = {\n\tname: \"deepseek-v4-flash\",\n\tprovider: \"deepseek\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"max\", \"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 1_000_000,\n\tmaxOutputTokens: 384_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: false,\n}\n","import type { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const deepSeekV4ProSpecification: ModelSpecification = {\n\tname: \"deepseek-v4-pro\",\n\tprovider: \"deepseek\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"max\", \"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 1_000_000,\n\tmaxOutputTokens: 384_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: false,\n}\n","import type { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const gpt54Specification: ModelSpecification = {\n\tname: \"gpt-5.4\",\n\tprovider: \"openai\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"xhigh\", \"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 1_050_000,\n\tmaxOutputTokens: 128_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import type { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const gpt54MiniSpecification: ModelSpecification = {\n\tname: \"gpt-5.4-mini\",\n\tprovider: \"openai\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"xhigh\", \"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 400_000,\n\tmaxOutputTokens: 128_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import type { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const gpt54NanoSpecification: ModelSpecification = {\n\tname: \"gpt-5.4-nano\",\n\tprovider: \"openai\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"xhigh\", \"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 400_000,\n\tmaxOutputTokens: 128_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import type { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const gpt55Specification: ModelSpecification = {\n\tname: \"gpt-5.5\",\n\tprovider: \"openai\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"xhigh\", \"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 1_050_000,\n\tmaxOutputTokens: 128_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import type { ModelSpecification } from \"@domain/generative-model/generative-model\"\n\nexport const claudeHaiku45Specification: ModelSpecification = {\n\tname: \"claude-haiku-4-5\",\n\tprovider: \"anthropic\",\n\tsupportsReasoningEffort: true,\n\tsupportedReasoningEfforts: [\"high\", \"medium\", \"low\", \"none\"],\n\tsupportedContextItemTypes: [\n\t\t\"user_message\",\n\t\t\"system_message\",\n\t\t\"developer_message\",\n\t\t\"reasoning\",\n\t\t\"function_call\",\n\t\t\"function_call_output\",\n\t\t\"model_message\",\n\t],\n\tsupportsStreaming: true,\n\tcontextWindowSize: 200_000,\n\tmaxOutputTokens: 64_000,\n\tsupportsFunctionCalling: true,\n\tsupportsStructuredOutput: true,\n}\n","import { AnthropicMessages } from \"@infra/providers/anthropic/endpoints/anthropic-messages\"\nimport { OpenAIResponses } from \"@infra/providers/openai/endpoints/openai-responses\"\nimport { GeminiGenerateContent } from \"@infra/providers/gemini/endpoints/gemini-generate-content\"\nimport { OpenAIChatCompletions } from \"@infra/providers/openai/endpoints/openai-chat-completions\"\nimport { claudeSonnet46Specification } from \"@infra/providers/anthropic/models/claude-4-6-sonnet\"\nimport { claudeOpus48Specification } from \"@infra/providers/anthropic/models/claude-4-8-opus\"\nimport { claudeOpus47Specification } from \"@infra/providers/anthropic/models/claude-4-7-opus\"\nimport { gemini35FlashSpecification } from \"@infra/providers/gemini/models/gemini-3-5-flash\"\nimport { gemini31ProSpecification } from \"@infra/providers/gemini/models/gemini-3-1-pro\"\nimport { deepSeekV4FlashSpecification } from \"@infra/providers/deepseek/models/deepseek-v4-flash\"\nimport { deepSeekV4ProSpecification } from \"@infra/providers/deepseek/models/deepseek-v4-pro\"\nimport { gpt54Specification } from \"@infra/providers/openai/models/gpt-5-4\"\nimport { gpt54MiniSpecification } from \"@infra/providers/openai/models/gpt-5-4-mini\"\nimport { gpt54NanoSpecification } from \"@infra/providers/openai/models/gpt-5-4-nano\"\nimport { gpt55Specification } from \"@infra/providers/openai/models/gpt-5-5\"\nimport { claudeHaiku45Specification } from \"@infra/providers/anthropic/models/claude-4-5-haiku\"\nimport type { GenerativeModel, ModelName } from \"@domain/generative-model/generative-model\"\nimport type { GenerativeModelRepository } from \"@domain/generative-model/generative-model-repository\"\n\nexport class InMemoryGenerativeModelRepository implements GenerativeModelRepository {\n\tgetByModelName(modelName: ModelName): Promise<GenerativeModel> {\n\t\tlet generativeModel = undefined\n\t\tswitch (modelName) {\n\t\t\tcase \"gpt-5.4\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new OpenAIResponses(),\n\t\t\t\t\tspecification: gpt54Specification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"gpt-5.4-mini\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new OpenAIResponses(),\n\t\t\t\t\tspecification: gpt54MiniSpecification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"gpt-5.4-nano\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new OpenAIResponses(),\n\t\t\t\t\tspecification: gpt54NanoSpecification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"gpt-5.5\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new OpenAIResponses(),\n\t\t\t\t\tspecification: gpt55Specification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"claude-haiku-4-5\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new AnthropicMessages(),\n\t\t\t\t\tspecification: claudeHaiku45Specification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"claude-sonnet-4-6\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new AnthropicMessages(),\n\t\t\t\t\tspecification: claudeSonnet46Specification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"claude-opus-4-7\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new AnthropicMessages(),\n\t\t\t\t\tspecification: claudeOpus47Specification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"claude-opus-4-8\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new AnthropicMessages(),\n\t\t\t\t\tspecification: claudeOpus48Specification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"gemini-3.5-flash\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new GeminiGenerateContent(),\n\t\t\t\t\tspecification: gemini35FlashSpecification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"gemini-3.1-pro-preview\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new GeminiGenerateContent(),\n\t\t\t\t\tspecification: gemini31ProSpecification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"deepseek-v4-flash\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new OpenAIChatCompletions(),\n\t\t\t\t\tspecification: deepSeekV4FlashSpecification,\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase \"deepseek-v4-pro\":\n\t\t\t\tgenerativeModel = {\n\t\t\t\t\tendpoint: new OpenAIChatCompletions(),\n\t\t\t\t\tspecification: deepSeekV4ProSpecification,\n\t\t\t\t}\n\t\t}\n\n\t\tif (!generativeModel) {\n\t\t\tthrow new Error(`Unsupported model: ${modelName}`)\n\t\t}\n\n\t\treturn Promise.resolve(generativeModel)\n\t}\n}\n","import type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport type { RequestValidationRule } from \"./rule\"\nimport type { ModelName, ModelSpecification } from \"../generative-model\"\n\nexport class ReasoningEffortValidation implements RequestValidationRule {\n\treadonly name = \"reasoning-effort\"\n\n\tisValid(inferenceParams: InferenceParams<ModelName>, model: ModelSpecification): boolean {\n\t\tif (inferenceParams.reasoningEffort === undefined) {\n\t\t\treturn true\n\t\t}\n\n\t\tif (!model.supportsReasoningEffort) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn model.supportedReasoningEfforts.includes(inferenceParams.reasoningEffort)\n\t}\n}\n","import type { RequestValidationRule } from \"./rule\"\nimport type { ModelName, ModelSpecification } from \"../generative-model\"\nimport type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\n\nexport class ToolCallingValidation implements RequestValidationRule {\n\treadonly name = \"tool-calling\"\n\n\tisValid(inferenceParams: InferenceParams<ModelName>, model: ModelSpecification): boolean {\n\t\tif (inferenceParams.tools === undefined) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn model.supportsFunctionCalling\n\t}\n}\n","import type { ModelSpecification } from \"@domain/generative-model/generative-model\"\nimport type { RequestValidationRule } from \"./rule\"\nimport type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport type { ModelName } from \"@domain/generative-model/generative-model\"\n\nexport class StreamingValidation implements RequestValidationRule {\n\treadonly name = \"streaming\"\n\n\tisValid(inferenceParams: InferenceParams<ModelName>, model: ModelSpecification): boolean {\n\t\tif (!inferenceParams.streaming) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn model.supportsStreaming\n\t}\n}\n","import type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport type { ContextItem } from \"@domain/model-context/context-item/context-item\"\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 { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport type { RequestValidationRule } from \"./rule\"\nimport type { ModelName, ModelSpecification } from \"../generative-model\"\n\nfunction getContextItemValidationKey(item: ContextItem): string {\n\tif (item instanceof UserMessageItem) {\n\t\treturn \"user_message\"\n\t}\n\tif (item instanceof SystemMessageItem) {\n\t\treturn \"system_message\"\n\t}\n\tif (item instanceof DeveloperMessageItem) {\n\t\treturn \"developer_message\"\n\t}\n\tif (item instanceof ModelMessageItem) {\n\t\treturn \"model_message\"\n\t}\n\treturn item.getType()\n}\n\nexport class ContextValidation implements RequestValidationRule {\n\treadonly name = \"context\"\n\n\tisValid(inferenceParams: InferenceParams<ModelName>, model: ModelSpecification): boolean {\n\t\treturn inferenceParams.context.items.every((item) =>\n\t\t\tmodel.supportedContextItemTypes.includes(getContextItemValidationKey(item)),\n\t\t)\n\t}\n}\n","import type { InferenceParams } from \"@domain/agentic-environment/inference/params\"\nimport type { ModelName, ModelSpecification } from \"../generative-model\"\nimport type { RequestValidationRule } from \"./rule\"\nimport { ReasoningEffortValidation } from \"./reasoning-effort\"\nimport { ToolCallingValidation } from \"./tool-calling\"\nimport { StreamingValidation } from \"./streaming\"\nimport { StructuredOutputValidation } from \"./structured-output\"\nimport { ContextValidation } from \"./context\"\n\nexport const defaultRequestValidationRules: RequestValidationRule[] = [\n\tnew ReasoningEffortValidation(),\n\tnew ToolCallingValidation(),\n\tnew StreamingValidation(),\n\tnew StructuredOutputValidation(),\n\tnew ContextValidation(),\n]\n\nexport class InferenceRequestValidator {\n\tconstructor(private readonly rules: RequestValidationRule[] = defaultRequestValidationRules) {}\n\n\tvalidate(inferenceParams: InferenceParams<ModelName>, model: ModelSpecification): void {\n\t\tfor (const rule of this.rules) {\n\t\t\tif (!rule.isValid(inferenceParams, model)) {\n\t\t\t\tthrow new Error(`Request validation \"${rule.name}\" failed for model \"${model.name}\"`)\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 { 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 { StructuredOutputFormat } from \"@domain/generative-model/request-validation/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 { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { McpClient, type McpServerConfig, type McpToolSpec } from \"@infra/mcp/mcp-client\"\nimport { McpToolRegistry } from \"@infra/mcp/mcp-tool-registry\"\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 { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport { InferenceResponse } from \"@domain/agentic-environment/inference/response\"\nimport { Endpoint } from \"@domain/generative-model/endpoint\"\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 { FunctionCallRunner } from \"@app/services/function-call-runner\"\nimport { BaseParticipant } from \"@app/participants/participant\"\nimport { SendMessage } from \"@app/use-cases/send-message\"\nimport { ModelName } from \"@domain/generative-model/generative-model\"\nimport type { GenerativeModelRepository } from \"@domain/generative-model/generative-model-repository\"\nimport { InMemoryGenerativeModelRepository } from \"@infra/repository/generative-model-repository\"\nimport { InferenceRequestValidator } from \"@domain/generative-model/request-validation/inference-request-validator\"\n\nconst generativeModelRepository: GenerativeModelRepository = new InMemoryGenerativeModelRepository()\nconst inferenceRequestValidator = new InferenceRequestValidator()\nconst runInferenceUseCase = new RunInference(generativeModelRepository, inferenceRequestValidator)\nconst executeFunctionCallUseCase = new ExecuteFunctionCall(new FunctionCallRunner())\nconst sendMessageUseCase = new SendMessage()\n\nconst runInference = (inferenceParams: InferenceParams<ModelName>): void => {\n\trunInferenceUseCase.execute(inferenceParams)\n}\n\nconst executeFunctionCall = (\n\tenvironment: AgenticEnvironment,\n\tfunctionCallItem: FunctionCallItem,\n\ttool: Tool,\n\tcaller: Participant,\n): 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\tModelName,\n\tInMemoryModelContextRepository,\n\tContextItem,\n\tSemanticEvent,\n\tUserMessageItem,\n\tDeveloperMessageItem,\n\tSystemMessageItem,\n\tModelMessageItem,\n\tFunctionCallItem,\n\tFunctionCallOutputItem,\n\tReasoningItem,\n\tStructuredOutputFormat,\n\tTokenUsage,\n\tInputTokenDetails,\n\tOutputTokenDetails,\n\tTool,\n\tMcpClient,\n\ttype McpServerConfig,\n\ttype McpToolSpec,\n\tMcpToolRegistry,\n\tEndpoint,\n\tAgenticEnvironment,\n\tParticipant,\n\tBaseParticipant,\n\tAgenticError,\n\tInferenceResponse,\n\tInferenceParams,\n\trunInference,\n\texecuteFunctionCall,\n\tsendMessage,\n}\n"],"mappings":"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","names":["_a","error","generativeModelRepository","OpenAI"]}
|