@mozaik-ai/core 3.10.0 → 3.10.2

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 CHANGED
@@ -56,13 +56,15 @@ OPENAI_API_KEY=your-openai-key-here
56
56
  | `onExternalReasoning` | another agent's inference returns a reasoning item |
57
57
  | `onModelMessage` | its own inference returns an assistant message |
58
58
  | `onExternalModelMessage` | another agent's inference returns an assistant message |
59
+ | `onInternalEvent` | its own inference emits a semantic stream event |
60
+ | `onExternalEvent` | another participant emits a semantic stream event |
59
61
 
60
62
  Every handler defaults to a no-op — override only the ones you care about.
61
63
 
62
64
  ```mermaid
63
65
  flowchart LR
64
- Human[BaseHumanParticipant] -->|streamInput| Env(("AgenticEnvironment"))
65
- Agent[BaseAgentParticipant] -->|"runInference / executeFunctionCall"| Env
66
+ Human[BaseHuman] -->|sendMessage| Env(("AgenticEnvironment"))
67
+ Agent[BaseAgent] -->|"runInference / executeFunctionCall"| Env
66
68
  Observer[Custom Participant] -->|join| Env
67
69
  Env -->|"onMessage / onExternal*"| Human
68
70
  Env -->|"onFunctionCall / onReasoning / …"| Agent
@@ -74,26 +76,29 @@ flowchart LR
74
76
 
75
77
  ## Non-blocking participants
76
78
 
77
- Mozaik ships two ready-to-use participants:
79
+ Mozaik ships three ready-to-use participants:
78
80
 
79
- | Participant | Capabilities | Pulls from |
80
- | ---------------------- | --------------------------------------------------------- | ------------------------------------------------------ |
81
- | `BaseHumanParticipant` | `InputCapable` | `InputStream` |
82
- | `BaseAgentParticipant` | `InputCapable`, `InferenceCapable`, `FunctionCallCapable` | `InputStream`, `InferenceRunner`, `FunctionCallRunner` |
81
+ | Participant | Role |
82
+ | --------------- | ---- |
83
+ | `BaseHuman` | Sends messages with `sendMessage(environment, text)` |
84
+ | `BaseAgent` | Runs inference and function calls via `InferenceRunner` and `FunctionCallRunner` |
85
+ | `BaseObserver` | Listens only; no inference |
83
86
 
84
87
  ```ts
85
88
  import {
86
89
  AgenticEnvironment,
87
- BaseAgentParticipant,
88
- BaseHumanParticipant,
90
+ BaseAgent,
91
+ BaseHuman,
92
+ OpenAIInferenceRunner,
93
+ DefaultFunctionCallRunner,
89
94
  Gpt54Mini,
90
95
  ModelContext,
91
96
  } from "@mozaik-ai/core"
92
97
 
93
98
  const environment = new AgenticEnvironment()
94
99
 
95
- const human = new BaseHumanParticipant(humanInputSource)
96
- const agent = new BaseAgentParticipant(agentInputSource, inferenceRunner, functionCallRunner)
100
+ const human = new BaseHuman()
101
+ const agent = new BaseAgent(new OpenAIInferenceRunner(), new DefaultFunctionCallRunner())
97
102
 
98
103
  human.join(environment)
99
104
  agent.join(environment)
@@ -104,7 +109,7 @@ const context = ModelContext.create("demo")
104
109
  const model = new Gpt54Mini()
105
110
 
106
111
  // Both participants produce items in parallel — neither awaits the other.
107
- human.streamInput(environment)
112
+ human.sendMessage(environment, "Hello")
108
113
  agent.runInference(environment, context, model)
109
114
  ```
110
115
 
@@ -114,32 +119,33 @@ The environment fans every item out to every subscriber synchronously and withou
114
119
 
115
120
  ## Reactive agent
116
121
 
117
- A reactive agent extends `BaseAgentParticipant` and overrides the handlers it wants to react on. Each handler is already a no-op in the base class, so only the relevant ones need bodies:
122
+ A reactive agent extends `BaseAgent` and overrides the handlers it wants to react on. Each handler is already a no-op in the base class, so only the relevant ones need bodies:
118
123
 
119
124
  ```ts
120
125
  import {
121
- BaseAgentParticipant,
126
+ BaseAgent,
122
127
  Participant,
123
128
  UserMessageItem,
124
129
  FunctionCallItem,
130
+ FunctionCallOutputItem,
131
+ ReasoningItem,
132
+ ModelMessageItem,
125
133
  AgenticEnvironment,
126
134
  ModelContext,
127
135
  GenerativeModel,
128
- InputStream,
129
136
  InferenceRunner,
130
137
  FunctionCallRunner,
131
138
  } from "@mozaik-ai/core"
132
139
 
133
- export class ReactiveAgent extends BaseAgentParticipant {
140
+ export class ReactiveAgent extends BaseAgent {
134
141
  constructor(
135
- inputSource: InputStream,
136
142
  inferenceRunner: InferenceRunner,
137
143
  functionCallRunner: FunctionCallRunner,
138
144
  private readonly environment: AgenticEnvironment,
139
145
  private readonly context: ModelContext,
140
146
  private readonly model: GenerativeModel,
141
147
  ) {
142
- super(inputSource, inferenceRunner, functionCallRunner)
148
+ super(inferenceRunner, functionCallRunner)
143
149
  }
144
150
 
145
151
  // A message from a human (or any other participant) → record it and think.
@@ -179,12 +185,29 @@ Three things to note:
179
185
 
180
186
  ---
181
187
 
188
+ ## Streaming and semantic events
189
+
190
+ Enable streaming on a model that supports it, then run inference as usual:
191
+
192
+ ```ts
193
+ const model = new Gpt54Mini()
194
+ model.setStreaming(true)
195
+
196
+ await agent.runInference(environment, context, model)
197
+ ```
198
+
199
+ With streaming enabled, `OpenAIInferenceRunner` emits **`SemanticEvent`** chunks (provider `type` + `data`) into the environment. The producing agent receives `onInternalEvent`; everyone else receives `onExternalEvent(source, event)`. Use these handlers to drive a live UI—for example, print text deltas from `response.output_text.delta` events.
200
+
201
+ `setStreaming(true)` on a model without `supportStreaming` throws before the API is called.
202
+
203
+ ---
204
+
182
205
  ## Lifecycle hooks
183
206
 
184
207
  Every participant receives lifecycle notifications when it or others join/leave an environment:
185
208
 
186
209
  ```ts
187
- export class TeamAgent extends BaseAgentParticipant {
210
+ export class TeamAgent extends BaseAgent {
188
211
  // Called when this participant joins an environment.
189
212
  onJoined(environment: AgenticEnvironment): void {
190
213
  console.log("I joined the environment")
@@ -270,64 +293,41 @@ await repo.save(context)
270
293
 
271
294
  Implement `ModelContextRepository` to plug in any storage backend.
272
295
 
273
- The default OpenAI provider is `OpenAIResponses`, implementing the [OpenResponses](https://www.openresponses.org/) spec. It maps `ModelContext` to the OpenAI Responses API and back into typed `ContextItem`s. Bundled models: `Gpt54`, `Gpt54Mini`, `Gpt54Nano`, `Gpt55`.
296
+ The default inference path is `OpenAIInferenceRunner`, which maps `ModelContext` to the OpenAI Responses API and back into typed `ContextItem`s (and `SemanticEvent`s when streaming). Bundled models: `Gpt54`, `Gpt54Mini`, `Gpt54Nano`, `Gpt55`.
274
297
 
275
298
  ```ts
276
- import { OpenAIResponses, InferenceRequest, Gpt54 } from "@mozaik-ai/core"
299
+ import { OpenAIInferenceRunner, DefaultFunctionCallRunner, Gpt54, ModelContext } from "@mozaik-ai/core"
300
+
301
+ const runner = new OpenAIInferenceRunner()
302
+ const context = ModelContext.create("demo")
277
303
 
278
- const runtime = new OpenAIResponses()
279
- const response = await runtime.infer(new InferenceRequest(new Gpt54(), context))
304
+ for await (const item of runner.run(context, new Gpt54())) {
305
+ // ReasoningItem | FunctionCallItem | ModelMessageItem | SemanticEvent
306
+ }
280
307
  ```
281
308
 
282
309
  ---
283
310
 
284
311
  ## Overriding Generators
285
312
 
286
- Mozaik uses generators for inference, function calls, and message streams — that's what lets the system emit events incrementally so participants can react to them as they arrive. Swap any generator to change _how_ events are produced.
287
-
288
- ### Custom `InputStream`
289
-
290
- ```ts
291
- import { InputStream } from "@mozaik-ai/core"
292
-
293
- export class HelloInputStream implements InputStream {
294
- async *stream(): AsyncIterable<string> {
295
- yield "Hello"
296
- yield "World"
297
- }
298
- }
299
- ```
313
+ Mozaik uses async generators for inference and function calls — that's what lets the system emit events incrementally so participants can react to them as they arrive. Swap any runner to change _how_ events are produced.
300
314
 
301
- Each yielded string is delivered to other participants through `onMessage(message: string)`.
315
+ Humans send text with `sendMessage(environment, message)`; other participants receive it via `onMessage`.
302
316
 
303
317
  ### Custom `InferenceRunner`
304
318
 
305
- An `InferenceRunner` can yield `ReasoningItem`, `FunctionCallItem`, and `ModelMessageItem`.
319
+ An `InferenceRunner` can yield `ReasoningItem`, `FunctionCallItem`, `ModelMessageItem`, and `SemanticEvent` (when streaming).
306
320
 
307
321
  ```ts
308
322
  import {
309
323
  InferenceRunner,
310
- InferenceRequest,
311
324
  ModelContext,
312
325
  GenerativeModel,
313
- OpenAIResponses,
314
- ReasoningItem,
315
- FunctionCallItem,
316
- ModelMessageItem,
326
+ OpenAIInferenceRunner,
317
327
  } from "@mozaik-ai/core"
318
328
 
319
- type InferenceItem = ReasoningItem | FunctionCallItem | ModelMessageItem
320
-
321
- export class OpenAIInferenceRunner implements InferenceRunner {
322
- private readonly runtime = new OpenAIResponses()
323
-
324
- async *run(context: ModelContext, model: GenerativeModel, signal?: AbortSignal): AsyncIterable<InferenceItem> {
325
- const response = await this.runtime.infer(new InferenceRequest(model, context))
326
- for (const item of response.contextItems) {
327
- yield item as InferenceItem
328
- }
329
- }
330
- }
329
+ // Use the bundled runner, or implement InferenceRunner for another provider.
330
+ const runner: InferenceRunner = new OpenAIInferenceRunner()
331
331
  ```
332
332
 
333
333
  ### Custom `FunctionCallRunner`
@@ -353,13 +353,9 @@ export class ToolRegistryFunctionCallRunner implements FunctionCallRunner {
353
353
  ### Wiring it together
354
354
 
355
355
  ```ts
356
- import { BaseAgentParticipant, AgenticEnvironment } from "@mozaik-ai/core"
356
+ import { BaseAgent, AgenticEnvironment, OpenAIInferenceRunner } from "@mozaik-ai/core"
357
357
 
358
- const agent = new BaseAgentParticipant(
359
- new HelloInputStream(),
360
- new OpenAIInferenceRunner(),
361
- new ToolRegistryFunctionCallRunner(tools),
362
- )
358
+ const agent = new BaseAgent(new OpenAIInferenceRunner(), new ToolRegistryFunctionCallRunner(tools))
363
359
 
364
360
  agent.join(new AgenticEnvironment())
365
361
  ```
package/dist/index.d.mts CHANGED
@@ -441,4 +441,4 @@ declare class BaseObserver extends Observer {
441
441
  onExternalEvent(source: Participant, item: SemanticEvent<unknown>): void;
442
442
  }
443
443
 
444
- export { Agent, AgenticEnvironment, BaseAgent, BaseHuman, BaseObserver, ContextItem, DefaultFunctionCallRunner, DeveloperMessageItem, FunctionCallItem, FunctionCallOutputItem, type FunctionCallRunner, type GenerativeModel, Gpt54, Gpt54Mini, Gpt54Nano, Gpt55, Human, InMemoryModelContextRepository, type InferenceRunner, InputTokenDetails, ModelContext, type ModelContextRepository, ModelMessageItem, Observer, OpenAIInferenceRunner, OutputTokenDetails, Participant, ReasoningItem, SystemMessageItem, TokenUsage, type Tool, UserMessageItem };
444
+ export { Agent, AgenticEnvironment, BaseAgent, BaseHuman, BaseObserver, ContextItem, DefaultFunctionCallRunner, DeveloperMessageItem, FunctionCallItem, FunctionCallOutputItem, type FunctionCallRunner, type GenerativeModel, Gpt54, Gpt54Mini, Gpt54Nano, Gpt55, Human, InMemoryModelContextRepository, type InferenceRunner, InputTokenDetails, ModelContext, type ModelContextRepository, ModelMessageItem, Observer, OpenAIInferenceRunner, OutputTokenDetails, Participant, ReasoningItem, SemanticEvent, SystemMessageItem, TokenUsage, type Tool, UserMessageItem };
package/dist/index.d.ts CHANGED
@@ -441,4 +441,4 @@ declare class BaseObserver extends Observer {
441
441
  onExternalEvent(source: Participant, item: SemanticEvent<unknown>): void;
442
442
  }
443
443
 
444
- export { Agent, AgenticEnvironment, BaseAgent, BaseHuman, BaseObserver, ContextItem, DefaultFunctionCallRunner, DeveloperMessageItem, FunctionCallItem, FunctionCallOutputItem, type FunctionCallRunner, type GenerativeModel, Gpt54, Gpt54Mini, Gpt54Nano, Gpt55, Human, InMemoryModelContextRepository, type InferenceRunner, InputTokenDetails, ModelContext, type ModelContextRepository, ModelMessageItem, Observer, OpenAIInferenceRunner, OutputTokenDetails, Participant, ReasoningItem, SystemMessageItem, TokenUsage, type Tool, UserMessageItem };
444
+ export { Agent, AgenticEnvironment, BaseAgent, BaseHuman, BaseObserver, ContextItem, DefaultFunctionCallRunner, DeveloperMessageItem, FunctionCallItem, FunctionCallOutputItem, type FunctionCallRunner, type GenerativeModel, Gpt54, Gpt54Mini, Gpt54Nano, Gpt55, Human, InMemoryModelContextRepository, type InferenceRunner, InputTokenDetails, ModelContext, type ModelContextRepository, ModelMessageItem, Observer, OpenAIInferenceRunner, OutputTokenDetails, Participant, ReasoningItem, SemanticEvent, SystemMessageItem, TokenUsage, type Tool, UserMessageItem };
package/dist/index.js CHANGED
@@ -54,6 +54,7 @@ __export(index_exports, {
54
54
  OutputTokenDetails: () => OutputTokenDetails,
55
55
  Participant: () => Participant,
56
56
  ReasoningItem: () => ReasoningItem,
57
+ SemanticEvent: () => SemanticEvent,
57
58
  SystemMessageItem: () => SystemMessageItem,
58
59
  TokenUsage: () => TokenUsage,
59
60
  UserMessageItem: () => UserMessageItem
@@ -944,6 +945,7 @@ var BaseObserver = class extends Observer {
944
945
  OutputTokenDetails,
945
946
  Participant,
946
947
  ReasoningItem,
948
+ SemanticEvent,
947
949
  SystemMessageItem,
948
950
  TokenUsage,
949
951
  UserMessageItem
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/domain/model-context/model-context.ts","../src/domain/model-context/context-item/context-item.ts","../src/domain/model-context/context-item/item-content/item-content.ts","../src/domain/model-context/context-item/item-content/input-text.ts","../src/domain/model-context/context-item/client-item/user-message.ts","../src/domain/model-context/context-item/client-item/developer-message.ts","../src/domain/model-context/context-item/item-content/output-text.ts","../src/domain/model-context/context-item/model-item/model-message.ts","../src/domain/model-context/context-item/model-item/function-call.ts","../src/domain/model-context/context-item/model-item/reasoning.ts","../src/domain/model-context/context-item/client-item/function-call-output.ts","../src/infrastructure/providers/openai/reasoning-effort.ts","../src/infrastructure/providers/openai/models/gpt-5-4-nano.ts","../src/infrastructure/providers/openai/models/gpt-5-4.ts","../src/infrastructure/providers/openai/models/gpt-5-4-mini.ts","../src/domain/generative-model/token-usage.ts","../src/infrastructure/repository/in-memory-model-context-repository.ts","../src/domain/model-context/context-item/client-item/system-message.ts","../src/domain/agentic-environment/participants/participant.ts","../src/domain/agentic-environment/agentic-environment.ts","../src/domain/agentic-environment/participants/agent.ts","../src/domain/model-context/semantic-event/semantic-event.ts","../src/application/participants/agent.ts","../src/domain/agentic-environment/participants/human.ts","../src/application/participants/human.ts","../src/application/runners/openai-inference-runner.ts","../src/application/runners/function-call-runner.ts","../src/infrastructure/providers/openai/models/gpt-5-5.ts","../src/domain/agentic-environment/participants/observer.ts","../src/application/participants/observer.ts"],"sourcesContent":["import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { UserMessageItem } from \"@domain/model-context/context-item/client-item/user-message\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { ModelContextRepository } from \"@domain/model-context/model-context-repository\"\nimport { Gpt54Nano } from \"@infra/providers/openai/models/gpt-5-4-nano\"\nimport { Gpt54 } from \"@infra/providers/openai/models/gpt-5-4\"\nimport { Gpt54Mini } from \"@infra/providers/openai/models/gpt-5-4-mini\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { InMemoryModelContextRepository } from \"@infra/repository/in-memory-model-context-repository\"\nimport { SystemMessageItem } from \"@domain/model-context/context-item/client-item/system-message\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { BaseAgent } from \"@app/participants/agent\"\nimport { BaseHuman } from \"@app/participants/human\"\nimport { FunctionCallRunner } from \"@domain/agentic-environment/runners/function-call-runner\"\nimport { InferenceRunner } from \"@domain/agentic-environment/runners/inference-runner\"\nimport { OpenAIInferenceRunner } from \"@app/runners/openai-inference-runner\"\nimport { DefaultFunctionCallRunner } from \"@app/runners/function-call-runner\"\nimport { Gpt55 } from \"@infra/providers/openai/models/gpt-5-5\"\nimport { BaseObserver } from \"@app/participants/observer\"\nimport { Human } from \"@domain/agentic-environment/participants/human\"\nimport { Agent } from \"@domain/agentic-environment/participants/agent\"\nimport { Observer } from \"@domain/agentic-environment/participants/observer\"\n\nexport {\n\tModelContext,\n\tModelContextRepository,\n\tInMemoryModelContextRepository,\n\tContextItem,\n\tUserMessageItem,\n\tDeveloperMessageItem,\n\tSystemMessageItem,\n\tModelMessageItem,\n\tFunctionCallItem,\n\tFunctionCallOutputItem,\n\tReasoningItem,\n\tGenerativeModel,\n\tGpt54,\n\tGpt54Mini,\n\tGpt54Nano,\n\tGpt55,\n\tTokenUsage,\n\tInputTokenDetails,\n\tOutputTokenDetails,\n\tTool,\n\tFunctionCallRunner,\n\tInferenceRunner,\n\tDefaultFunctionCallRunner,\n\tAgenticEnvironment,\n\tParticipant,\n\tHuman,\n\tAgent,\n\tObserver,\n\tBaseAgent,\n\tBaseHuman,\n\tBaseObserver,\n\tOpenAIInferenceRunner,\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class ModelContext {\n\treadonly id: string\n\treadonly projectId: string\n\treadonly items: ContextItem[]\n\n\tconstructor(id: string, projectId: string, items: ContextItem[]) {\n\t\tthis.projectId = projectId\n\t\tthis.id = id\n\t\tthis.items = items\n\t}\n\n\taddContextItem(item: ContextItem): ModelContext {\n\t\tthis.items.push(item)\n\t\treturn this\n\t}\n\n\tapplyModelOutput(items: ContextItem[]): ModelContext {\n\t\tfor (const item of items) {\n\t\t\tconst itemType = item.getType()\n\t\t\tif (itemType !== \"function_call\" && itemType !== \"message\" && itemType !== \"reasoning\") {\n\t\t\t\tthrow new Error(`Invalid item type: ${itemType}`)\n\t\t\t}\n\t\t}\n\t\tthis.items.push(...items)\n\t\treturn this\n\t}\n\n\tgetItems(): ContextItem[] {\n\t\treturn this.items\n\t}\n\n\tgetLastItem(): ContextItem {\n\t\tif (this.items.length === 0) {\n\t\t\tthrow new Error(\"No items in context\")\n\t\t}\n\t\treturn this.items[this.items.length - 1]\n\t}\n\n\tstatic create(projectId: string): ModelContext {\n\t\tconst id = crypto.randomUUID()\n\t\treturn new ModelContext(id, projectId, [])\n\t}\n\n\tstatic rehydrate(data: { id: string; projectId: string; items: ContextItem[] }): ModelContext {\n\t\treturn new ModelContext(data.id, data.projectId, data.items)\n\t}\n\n\ttoJSON(): any {\n\t\treturn this.items.map((item) => item.toJSON())\n\t}\n}\n","export abstract class ContextItem {\n\tabstract readonly type: string\n\n\tgetType(): string {\n\t\treturn this.type\n\t}\n\n\tabstract toJSON(): any\n}\n","export abstract class ItemContent {\n\tabstract readonly type: string\n}\n","import { ItemContent } from \"@domain/model-context/context-item/item-content/item-content\"\n\nexport class InputText extends ItemContent {\n\treadonly type = \"input_text\"\n\n\tprivate constructor(public readonly text: string) {\n\t\tsuper()\n\t}\n\n\tstatic create(text: string): InputText {\n\t\treturn new InputText(text)\n\t}\n\n\tstatic rehydrate(data: { text: string }): InputText {\n\t\treturn new InputText(data.text)\n\t}\n\n\ttoJSON(): any[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttype: this.type,\n\t\t\t\ttext: this.text,\n\t\t\t},\n\t\t]\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\n\nexport class UserMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"user\"\n\treadonly content: InputText\n\n\tprivate constructor(content: InputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\tstatic create(text: string): UserMessageItem {\n\t\tconst content = InputText.create(text)\n\t\treturn new UserMessageItem(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): UserMessageItem {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new UserMessageItem(content)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n}\n","import { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class DeveloperMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"developer\"\n\treadonly content: InputText\n\n\tprivate constructor(content: InputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n\n\tstatic create(text: string): DeveloperMessageItem {\n\t\tconst content = InputText.create(text)\n\t\treturn new DeveloperMessageItem(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): DeveloperMessageItem {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new DeveloperMessageItem(content)\n\t}\n}\n","import { ItemContent } from \"@domain/model-context/context-item/item-content/item-content\"\n\nexport class OutputText extends ItemContent {\n\treadonly type = \"output_text\"\n\n\tprivate constructor(public readonly text: string) {\n\t\tsuper()\n\t}\n\n\tstatic rehydrate(data: { text: string }): OutputText {\n\t\treturn new OutputText(data.text)\n\t}\n\n\ttoJSON(): any[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttype: this.type,\n\t\t\t\ttext: this.text,\n\t\t\t},\n\t\t]\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { OutputText } from \"@domain/model-context/context-item/item-content/output-text\"\n\nexport class ModelMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"assistant\"\n\treadonly content: OutputText\n\n\tprivate constructor(content: OutputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\tstatic rehydrate(data: { text: string }): ModelMessageItem {\n\t\tconst content = OutputText.rehydrate(data)\n\t\treturn new ModelMessageItem(content)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class FunctionCallItem extends ContextItem {\n\treadonly type = \"function_call\"\n\treadonly callId: string\n\treadonly name: string\n\treadonly args: string\n\n\tprivate constructor(callId: string, name: string, args: string) {\n\t\tsuper()\n\t\tthis.callId = callId\n\t\tthis.name = name\n\t\tthis.args = args\n\t}\n\n\tstatic rehydrate(data: { callId: string; name: string; args: string }): FunctionCallItem {\n\t\treturn new FunctionCallItem(data.callId, data.name, data.args)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcall_id: this.callId,\n\t\t\tname: this.name,\n\t\t\targuments: this.args,\n\t\t}\n\t}\n}\n","import { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { SummaryText } from \"@domain/model-context/context-item/item-content/summary-text\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class ReasoningItem extends ContextItem {\n\treadonly type = \"reasoning\"\n\treadonly content: InputText | undefined\n\treadonly encryptedContent: string | undefined\n\treadonly summary: SummaryText[]\n\n\tprivate constructor(\n\t\tcontent: InputText | undefined,\n\t\tencryptedContent?: string | undefined,\n\t\tsummary: SummaryText[] = [],\n\t) {\n\t\tsuper()\n\t\tthis.content = content\n\t\tthis.encryptedContent = encryptedContent\n\t\tthis.summary = summary\n\t}\n\n\tstatic rehydrate(data: {\n\t\tcontent: InputText | undefined\n\t\tencryptedContent: string | undefined\n\t\tsummary: SummaryText[]\n\t}): ReasoningItem {\n\t\treturn new ReasoningItem(data.content, data.encryptedContent, data.summary)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcontent: this.content?.toJSON(),\n\t\t\tencryptedContent: this.encryptedContent,\n\t\t\tsummary: this.summary.map((s) => s.toJSON()),\n\t\t}\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\n\nexport class FunctionCallOutputItem extends ContextItem {\n\treadonly type = \"function_call_output\"\n\treadonly callId: string\n\treadonly output: InputText\n\n\tprivate constructor(callId: string, output: InputText) {\n\t\tsuper()\n\t\tthis.callId = callId\n\t\tthis.output = output\n\t}\n\n\tstatic create(callId: string, output: string): FunctionCallOutputItem {\n\t\tconst outputText = InputText.create(output)\n\t\treturn new FunctionCallOutputItem(callId, outputText)\n\t}\n\n\tstatic rehydrate(data: { callId: string; output: InputText }): FunctionCallOutputItem {\n\t\treturn new FunctionCallOutputItem(data.callId, data.output)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcall_id: this.callId,\n\t\t\toutput: this.output.toJSON(),\n\t\t}\n\t}\n}\n","import { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\n\nexport type OpenAIReasoningEffortType = \"xhigh\" | \"high\" | \"medium\" | \"low\" | \"none\"\n\nexport class OpenAIReasoningEffort implements ReasoningEffort<OpenAIReasoningEffortType> {\n\treasoningEffort: OpenAIReasoningEffortType\n\n\tconstructor(reasoningEffort: OpenAIReasoningEffortType) {\n\t\tthis.reasoningEffort = reasoningEffort\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.reasoningEffort = effort\n\t}\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\tif (!this.reasoningEffort) {\n\t\t\tthrow new Error(\"Reasoning effort not supported\")\n\t\t}\n\t\treturn this.reasoningEffort\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt54Nano implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.4-nano\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 400_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt54 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.4\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 1_050_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt54Mini implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.4-mini\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 400_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n}\n","export class InputTokenDetails {\n\treadonly cached_tokens: number\n\n\tconstructor(cached_tokens: number) {\n\t\tthis.cached_tokens = cached_tokens\n\t}\n}\n\nexport class OutputTokenDetails {\n\treadonly reasoning_tokens: number\n\n\tconstructor(reasoning_tokens: number) {\n\t\tthis.reasoning_tokens = reasoning_tokens\n\t}\n}\n\nexport class TokenUsage {\n\treadonly inputTokens: number\n\treadonly outputTokens: number\n\treadonly totalTokens: number\n\treadonly inputTokenDetails: InputTokenDetails\n\treadonly outputTokenDetails: OutputTokenDetails\n\n\tconstructor(\n\t\tinputTokens: number,\n\t\toutputTokens: number,\n\t\ttotalTokens: number,\n\t\tinputTokenDetails: InputTokenDetails,\n\t\toutputTokenDetails: OutputTokenDetails,\n\t) {\n\t\tthis.inputTokens = inputTokens\n\t\tthis.outputTokens = outputTokens\n\t\tthis.totalTokens = totalTokens\n\t\tthis.inputTokenDetails = inputTokenDetails\n\t\tthis.outputTokenDetails = outputTokenDetails\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ModelContextRepository } from \"@domain/model-context/model-context-repository\"\n\nexport class InMemoryModelContextRepository implements ModelContextRepository {\n\tprivate readonly store = new Map<string, ModelContext>()\n\tprivate readonly projectIndex = new Map<string, Set<string>>()\n\n\tasync save(context: ModelContext): Promise<void> {\n\t\tconst existing = this.store.get(context.id)\n\t\tif (existing && existing.projectId !== context.projectId) {\n\t\t\tconst prevSet = this.projectIndex.get(existing.projectId)\n\t\t\tprevSet?.delete(existing.id)\n\t\t\tif (prevSet && prevSet.size === 0) this.projectIndex.delete(existing.projectId)\n\t\t}\n\n\t\tthis.store.set(context.id, this.clone(context))\n\n\t\tlet set = this.projectIndex.get(context.projectId)\n\t\tif (!set) {\n\t\t\tset = new Set<string>()\n\t\t\tthis.projectIndex.set(context.projectId, set)\n\t\t}\n\t\tset.add(context.id)\n\t}\n\n\tasync get(id: string): Promise<ModelContext> {\n\t\tconst context = this.store.get(id)\n\t\tif (!context) {\n\t\t\tthrow new Error(`Context not found: ${id}`)\n\t\t}\n\t\treturn this.clone(context)\n\t}\n\n\tasync getByProjectId(projectId: string): Promise<ModelContext[]> {\n\t\tconst ids = this.projectIndex.get(projectId)\n\t\tif (!ids || ids.size === 0) return []\n\t\treturn [...ids]\n\t\t\t.map((id) => this.store.get(id))\n\t\t\t.filter((c): c is ModelContext => Boolean(c))\n\t\t\t.map((c) => this.clone(c))\n\t}\n\n\tprivate clone(context: ModelContext): ModelContext {\n\t\treturn ModelContext.rehydrate({\n\t\t\tid: context.id,\n\t\t\tprojectId: context.projectId,\n\t\t\titems: [...context.getItems()],\n\t\t})\n\t}\n}\n","import { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class SystemMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"system\"\n\treadonly content: InputText\n\n\tprivate constructor(content: InputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n\n\tstatic create(text: string): SystemMessageItem {\n\t\tconst content = InputText.create(text)\n\t\treturn new SystemMessageItem(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): SystemMessageItem {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new SystemMessageItem(content)\n\t}\n}\n","import { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { AgenticEnvironment } from \"../agentic-environment\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport abstract class Participant {\n\tprivate environments: AgenticEnvironment[] = []\n\n\tjoin(environment: AgenticEnvironment) {\n\t\tif (this.isJoinedTo(environment)) {\n\t\t\treturn\n\t\t}\n\t\tenvironment.subscribe(this)\n\t\tthis.environments.push(environment)\n\t}\n\n\tleave(environment: AgenticEnvironment) {\n\t\tif (!this.isJoinedTo(environment)) {\n\t\t\treturn\n\t\t}\n\t\tenvironment.unsubscribe(this)\n\t\tthis.environments = this.environments.filter((e) => e !== environment)\n\t}\n\n\tprotected isJoinedTo(environment: AgenticEnvironment): boolean {\n\t\treturn this.environments.includes(environment)\n\t}\n\n\tgetEnvironments(): AgenticEnvironment[] {\n\t\treturn this.environments\n\t}\n\n\tabstract onParticipantJoined(participant: Participant): Promise<void> | void\n\n\tabstract onParticipantLeft(participant: Participant): Promise<void> | void\n\n\tabstract onJoined(): Promise<void> | void\n\n\tabstract onLeft(): Promise<void> | void\n\n\tabstract onFunctionCall(item: FunctionCallItem): Promise<void> | void\n\n\tabstract onExternalFunctionCall(source: Participant, item: FunctionCallItem): Promise<void> | void\n\n\tabstract onFunctionCallOutput(item: FunctionCallOutputItem): Promise<void> | void\n\n\tabstract onExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem): Promise<void> | void\n\n\tabstract onReasoning(item: ReasoningItem): Promise<void> | void\n\n\tabstract onExternalReasoning(source: Participant, item: ReasoningItem): Promise<void> | void\n\n\tabstract onModelMessage(item: ModelMessageItem): Promise<void> | void\n\n\tabstract onExternalModelMessage(source: Participant, item: ModelMessageItem): Promise<void> | void\n\n\tabstract onMessage(message: string): Promise<void> | void\n\n\tabstract onInternalEvent(item: SemanticEvent<unknown>): Promise<void> | void\n\n\tabstract onExternalEvent(source: Participant, item: SemanticEvent<unknown>): Promise<void> | void\n}\n","import { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport class AgenticEnvironment {\n\tprotected subscribers: Participant[] = []\n\tprivate isActive = false\n\n\tsubscribe(subscriber: Participant) {\n\t\tthis.subscribers.push(subscriber)\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === subscriber) {\n\t\t\t\tsubscriber.onJoined()\n\t\t\t} else {\n\t\t\t\tsubscriber.onParticipantJoined(subscriber)\n\t\t\t}\n\t\t}\n\t}\n\n\tunsubscribe(subscriber: Participant) {\n\t\tthis.subscribers = this.subscribers.filter((p) => p !== subscriber)\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === subscriber) {\n\t\t\t\tsubscriber.onLeft()\n\t\t\t} else {\n\t\t\t\tsubscriber.onParticipantLeft(subscriber)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverFunctionCall(source: Participant, item: FunctionCallItem): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onFunctionCall(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalFunctionCall(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverModelMessage(source: Participant, item: ModelMessageItem): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onModelMessage(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalModelMessage(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverReasoning(source: Participant, item: ReasoningItem): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onReasoning(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalReasoning(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverFunctionCallOutput(source: Participant, item: FunctionCallOutputItem): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onFunctionCallOutput(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalFunctionCallOutput(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverMessage(source: Participant, message: string): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) continue\n\n\t\t\tsubscriber.onMessage(message)\n\t\t}\n\t}\n\n\tdeliverSemanticEvent(source: Participant, item: SemanticEvent<unknown>): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onInternalEvent(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalEvent(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tasync start() {\n\t\tthis.isActive = true\n\t\twhile (this.isActive) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 100))\n\t\t}\n\t}\n\n\tstop() {\n\t\tthis.isActive = false\n\t}\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\n\nexport abstract class Agent extends Participant {\n\tabstract executeFunctionCall(\n\t\tenvironment: AgenticEnvironment,\n\t\tfunctionCallItem: FunctionCallItem,\n\t\tsignal?: AbortSignal,\n\t): Promise<void>\n\n\tabstract runInference(\n\t\tenvironment: AgenticEnvironment,\n\t\tcontext: ModelContext,\n\t\tmodel: GenerativeModel,\n\t\tsignal?: AbortSignal,\n\t): Promise<void>\n}\n","export class SemanticEvent<T> {\n\treadonly type: string\n\treadonly data: T\n\n\tconstructor(type: string, data: T) {\n\t\tthis.type = type\n\t\tthis.data = data\n\t}\n\n\tgetType(): string {\n\t\treturn this.type\n\t}\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { InferenceRunner } from \"@domain/agentic-environment/runners/inference-runner\"\nimport { FunctionCallRunner } from \"@domain/agentic-environment/runners/function-call-runner\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { Agent } from \"@domain/agentic-environment/participants/agent\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport class BaseAgent extends Agent {\n\tprivate inferenceRunner: InferenceRunner\n\tprivate functionCallRunner: FunctionCallRunner\n\n\tconstructor(inferenceRunner: InferenceRunner, functionCallRunner: FunctionCallRunner) {\n\t\tsuper()\n\t\tthis.inferenceRunner = inferenceRunner\n\t\tthis.functionCallRunner = functionCallRunner\n\t}\n\n\tonJoined() {}\n\n\tonLeft() {}\n\n\tonParticipantJoined(participant: Participant) {}\n\n\tonParticipantLeft(participant: Participant) {}\n\n\tonFunctionCall(item: FunctionCallItem) {}\n\n\tonExternalFunctionCall(source: Participant, item: FunctionCallItem) {}\n\n\tonFunctionCallOutput(item: FunctionCallOutputItem) {}\n\n\tonExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem) {}\n\n\tonReasoning(item: ReasoningItem) {}\n\n\tonExternalReasoning(source: Participant, item: ReasoningItem) {}\n\n\tonModelMessage(item: ModelMessageItem) {}\n\n\tonExternalModelMessage(source: Participant, item: ModelMessageItem) {}\n\n\tonMessage(message: string) {}\n\n\tonInternalEvent(item: SemanticEvent<unknown>) {}\n\n\tonExternalEvent(source: Participant, item: SemanticEvent<unknown>) {}\n\n\tasync executeFunctionCall(\n\t\tenvironment: AgenticEnvironment,\n\t\tfunctionCallItem: FunctionCallItem,\n\t\tsignal?: AbortSignal,\n\t): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.functionCallRunner.run(functionCallItem, signal)\n\n\t\tfor await (const item of stream) {\n\t\t\tenvironment.deliverFunctionCallOutput(this, item)\n\t\t}\n\t}\n\n\tasync runInference(\n\t\tenvironment: AgenticEnvironment,\n\t\tcontext: ModelContext,\n\t\tmodel: GenerativeModel,\n\t\tsignal?: AbortSignal,\n\t): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.inferenceRunner.run(context, model, signal)\n\n\t\tfor await (const item of stream) {\n\t\t\tif (item instanceof ReasoningItem) {\n\t\t\t\tenvironment.deliverReasoning(this, item)\n\t\t\t} else if (item instanceof FunctionCallItem) {\n\t\t\t\tenvironment.deliverFunctionCall(this, item)\n\t\t\t} else if (item instanceof ModelMessageItem) {\n\t\t\t\tenvironment.deliverModelMessage(this, item)\n\t\t\t} else if (item instanceof SemanticEvent) {\n\t\t\t\tenvironment.deliverSemanticEvent(this, item)\n\t\t\t}\n\t\t}\n\t}\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\n\nexport abstract class Human extends Participant {\n\tsendMessage(environment: AgenticEnvironment, message: string): void {\n\t\tif (!this.isJoinedTo(environment)) throw new Error(\"Not joined to environment\")\n\t\tenvironment.deliverMessage(this, message)\n\t}\n}\n","import { Human } from \"@domain/agentic-environment/participants/human\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport class BaseHuman extends Human {\n\tonJoined() {}\n\n\tonLeft() {}\n\n\tonParticipantJoined(participant: Participant) {}\n\n\tonParticipantLeft(participant: Participant) {}\n\n\tonMessage(message: string) {}\n\n\tonFunctionCall(item: FunctionCallItem) {}\n\n\tonFunctionCallOutput(item: FunctionCallOutputItem) {}\n\n\tonReasoning(item: ReasoningItem) {}\n\n\tonModelMessage(item: ModelMessageItem) {}\n\n\tonExternalFunctionCall(source: Participant, item: FunctionCallItem) {}\n\n\tonExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem) {}\n\n\tonExternalReasoning(source: Participant, item: ReasoningItem) {}\n\n\tonExternalModelMessage(source: Participant, item: ModelMessageItem) {}\n\n\tonInternalEvent(item: SemanticEvent<unknown>) {}\n\n\tonExternalEvent(source: Participant, item: SemanticEvent<unknown>) {}\n}\n","import { InferenceRunner } from \"@domain/agentic-environment/runners/inference-runner\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport OpenAI from \"openai\"\n\ntype InferenceItem = ReasoningItem | FunctionCallItem | ModelMessageItem | SemanticEvent<unknown>\n\nexport class OpenAIInferenceRunner implements InferenceRunner {\n\tasync *run(context: ModelContext, model: GenerativeModel, signal?: AbortSignal): AsyncIterable<InferenceItem> {\n\t\tconst input = this.mapContextToRequest(context)\n\n\t\tconst specification = model.specification\n\n\t\tlet request: any = {\n\t\t\tmodel: specification.name,\n\t\t\tinput: input,\n\t\t\tstream: model.getStreaming(),\n\t\t}\n\n\t\tif (specification.supportFunctionCalling && model.getTools().length > 0) {\n\t\t\trequest.tools = model.getTools().map((tool) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: tool.type,\n\t\t\t\t\tname: tool.name,\n\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\tparameters: tool.parameters,\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (specification.supportReasoningEffort) {\n\t\t\trequest.reasoning = {\n\t\t\t\teffort: model.getReasoningEffort(),\n\t\t\t}\n\t\t}\n\n\t\tif (!specification.supportStreaming && model.getStreaming()) {\n\t\t\tthrow new Error(\"Streaming is not supported for this model\")\n\t\t}\n\n\t\tconst openai = new OpenAI()\n\n\t\tconst response: any = await openai.responses.create(request)\n\n\t\tif (specification.supportStreaming && model.getStreaming()) {\n\t\t\tfor await (const event of response) {\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tyield new SemanticEvent(event.type, event)\n\t\t\t}\n\t\t} else {\n\t\t\tconst contextItems = this.extractContextItems(response)\n\t\t\tconst tokenUsage = this.extractTokenUsage(response)\n\n\t\t\tfor (const item of contextItems) {\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tyield item as InferenceItem\n\t\t\t}\n\t\t}\n\t}\n\n\textractTokenUsage(response: OpenAI.Responses.Response): TokenUsage | undefined {\n\t\tif (!response.usage) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn new TokenUsage(\n\t\t\tresponse.usage.input_tokens,\n\t\t\tresponse.usage.output_tokens,\n\t\t\tresponse.usage.total_tokens,\n\t\t\tnew InputTokenDetails(response.usage.input_tokens_details.cached_tokens),\n\t\t\tnew OutputTokenDetails(response.usage.output_tokens_details.reasoning_tokens),\n\t\t)\n\t}\n\n\tmapContextToRequest(context: ModelContext): any[] {\n\t\treturn context.getItems().map((item) => item.toJSON())\n\t}\n\n\textractContextItems(response: any): ContextItem[] {\n\t\treturn response.output.map((item: any) => {\n\t\t\tif (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\treturn ModelMessageItem.rehydrate(item.content[0] as { text: string })\n\t\t\t}\n\t\t\tif (item.type === \"function_call\") {\n\t\t\t\treturn FunctionCallItem.rehydrate({\n\t\t\t\t\tcallId: item.call_id,\n\t\t\t\t\tname: item.name,\n\t\t\t\t\targs: item.arguments,\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\treturn ReasoningItem.rehydrate(item)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { FunctionCallRunner } from \"@domain/agentic-environment/runners/function-call-runner\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\n\nexport class DefaultFunctionCallRunner implements FunctionCallRunner {\n\tconstructor(private readonly tools: Tool[]) {}\n\n\tasync *run(call: FunctionCallItem, signal?: AbortSignal): AsyncIterable<FunctionCallOutputItem> {\n\t\tconst tool = this.tools.find((t) => t.name === call.name)\n\t\tif (!tool) throw new Error(`Unknown tool: ${call.name}`)\n\n\t\tconst result = await tool.invoke(JSON.parse(call.args))\n\t\tyield FunctionCallOutputItem.create(call.callId, JSON.stringify(result))\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt55 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.5\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 1_050_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { Participant } from \"./participant\"\n\nexport abstract class Observer extends Participant {}\n","import { Observer } from \"@domain/agentic-environment/participants/observer\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport class BaseObserver extends Observer {\n\tonFunctionCall(item: FunctionCallItem) {}\n\tonExternalFunctionCall(source: Participant, item: FunctionCallItem) {}\n\tonFunctionCallOutput(item: FunctionCallOutputItem) {}\n\tonExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem) {}\n\tonReasoning(item: ReasoningItem) {}\n\tonExternalReasoning(source: Participant, item: ReasoningItem) {}\n\tonModelMessage(item: ModelMessageItem) {}\n\tonExternalModelMessage(source: Participant, item: ModelMessageItem) {}\n\tonMessage(message: string) {}\n\tonJoined() {}\n\tonLeft() {}\n\tonParticipantJoined(participant: Participant) {}\n\tonParticipantLeft(participant: Participant) {}\n\tonInternalEvent(item: SemanticEvent<unknown>) {}\n\tonExternalEvent(source: Participant, item: SemanticEvent<unknown>) {}\n}\n"],"mappings":"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","names":["subscriber","OpenAI"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/domain/model-context/model-context.ts","../src/domain/model-context/context-item/context-item.ts","../src/domain/model-context/context-item/item-content/item-content.ts","../src/domain/model-context/context-item/item-content/input-text.ts","../src/domain/model-context/context-item/client-item/user-message.ts","../src/domain/model-context/context-item/client-item/developer-message.ts","../src/domain/model-context/context-item/item-content/output-text.ts","../src/domain/model-context/context-item/model-item/model-message.ts","../src/domain/model-context/context-item/model-item/function-call.ts","../src/domain/model-context/context-item/model-item/reasoning.ts","../src/domain/model-context/context-item/client-item/function-call-output.ts","../src/infrastructure/providers/openai/reasoning-effort.ts","../src/infrastructure/providers/openai/models/gpt-5-4-nano.ts","../src/infrastructure/providers/openai/models/gpt-5-4.ts","../src/infrastructure/providers/openai/models/gpt-5-4-mini.ts","../src/domain/generative-model/token-usage.ts","../src/infrastructure/repository/in-memory-model-context-repository.ts","../src/domain/model-context/context-item/client-item/system-message.ts","../src/domain/agentic-environment/participants/participant.ts","../src/domain/agentic-environment/agentic-environment.ts","../src/domain/agentic-environment/participants/agent.ts","../src/domain/model-context/semantic-event/semantic-event.ts","../src/application/participants/agent.ts","../src/domain/agentic-environment/participants/human.ts","../src/application/participants/human.ts","../src/application/runners/openai-inference-runner.ts","../src/application/runners/function-call-runner.ts","../src/infrastructure/providers/openai/models/gpt-5-5.ts","../src/domain/agentic-environment/participants/observer.ts","../src/application/participants/observer.ts"],"sourcesContent":["import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { UserMessageItem } from \"@domain/model-context/context-item/client-item/user-message\"\nimport { DeveloperMessageItem } from \"@domain/model-context/context-item/client-item/developer-message\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { ModelContextRepository } from \"@domain/model-context/model-context-repository\"\nimport { Gpt54Nano } from \"@infra/providers/openai/models/gpt-5-4-nano\"\nimport { Gpt54 } from \"@infra/providers/openai/models/gpt-5-4\"\nimport { Gpt54Mini } from \"@infra/providers/openai/models/gpt-5-4-mini\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { InMemoryModelContextRepository } from \"@infra/repository/in-memory-model-context-repository\"\nimport { SystemMessageItem } from \"@domain/model-context/context-item/client-item/system-message\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { BaseAgent } from \"@app/participants/agent\"\nimport { BaseHuman } from \"@app/participants/human\"\nimport { FunctionCallRunner } from \"@domain/agentic-environment/runners/function-call-runner\"\nimport { InferenceRunner } from \"@domain/agentic-environment/runners/inference-runner\"\nimport { OpenAIInferenceRunner } from \"@app/runners/openai-inference-runner\"\nimport { DefaultFunctionCallRunner } from \"@app/runners/function-call-runner\"\nimport { Gpt55 } from \"@infra/providers/openai/models/gpt-5-5\"\nimport { BaseObserver } from \"@app/participants/observer\"\nimport { Human } from \"@domain/agentic-environment/participants/human\"\nimport { Agent } from \"@domain/agentic-environment/participants/agent\"\nimport { Observer } from \"@domain/agentic-environment/participants/observer\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport {\n\tModelContext,\n\tModelContextRepository,\n\tInMemoryModelContextRepository,\n\tContextItem,\n\tSemanticEvent,\n\tUserMessageItem,\n\tDeveloperMessageItem,\n\tSystemMessageItem,\n\tModelMessageItem,\n\tFunctionCallItem,\n\tFunctionCallOutputItem,\n\tReasoningItem,\n\tGenerativeModel,\n\tGpt54,\n\tGpt54Mini,\n\tGpt54Nano,\n\tGpt55,\n\tTokenUsage,\n\tInputTokenDetails,\n\tOutputTokenDetails,\n\tTool,\n\tFunctionCallRunner,\n\tInferenceRunner,\n\tDefaultFunctionCallRunner,\n\tAgenticEnvironment,\n\tParticipant,\n\tHuman,\n\tAgent,\n\tObserver,\n\tBaseAgent,\n\tBaseHuman,\n\tBaseObserver,\n\tOpenAIInferenceRunner,\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class ModelContext {\n\treadonly id: string\n\treadonly projectId: string\n\treadonly items: ContextItem[]\n\n\tconstructor(id: string, projectId: string, items: ContextItem[]) {\n\t\tthis.projectId = projectId\n\t\tthis.id = id\n\t\tthis.items = items\n\t}\n\n\taddContextItem(item: ContextItem): ModelContext {\n\t\tthis.items.push(item)\n\t\treturn this\n\t}\n\n\tapplyModelOutput(items: ContextItem[]): ModelContext {\n\t\tfor (const item of items) {\n\t\t\tconst itemType = item.getType()\n\t\t\tif (itemType !== \"function_call\" && itemType !== \"message\" && itemType !== \"reasoning\") {\n\t\t\t\tthrow new Error(`Invalid item type: ${itemType}`)\n\t\t\t}\n\t\t}\n\t\tthis.items.push(...items)\n\t\treturn this\n\t}\n\n\tgetItems(): ContextItem[] {\n\t\treturn this.items\n\t}\n\n\tgetLastItem(): ContextItem {\n\t\tif (this.items.length === 0) {\n\t\t\tthrow new Error(\"No items in context\")\n\t\t}\n\t\treturn this.items[this.items.length - 1]\n\t}\n\n\tstatic create(projectId: string): ModelContext {\n\t\tconst id = crypto.randomUUID()\n\t\treturn new ModelContext(id, projectId, [])\n\t}\n\n\tstatic rehydrate(data: { id: string; projectId: string; items: ContextItem[] }): ModelContext {\n\t\treturn new ModelContext(data.id, data.projectId, data.items)\n\t}\n\n\ttoJSON(): any {\n\t\treturn this.items.map((item) => item.toJSON())\n\t}\n}\n","export abstract class ContextItem {\n\tabstract readonly type: string\n\n\tgetType(): string {\n\t\treturn this.type\n\t}\n\n\tabstract toJSON(): any\n}\n","export abstract class ItemContent {\n\tabstract readonly type: string\n}\n","import { ItemContent } from \"@domain/model-context/context-item/item-content/item-content\"\n\nexport class InputText extends ItemContent {\n\treadonly type = \"input_text\"\n\n\tprivate constructor(public readonly text: string) {\n\t\tsuper()\n\t}\n\n\tstatic create(text: string): InputText {\n\t\treturn new InputText(text)\n\t}\n\n\tstatic rehydrate(data: { text: string }): InputText {\n\t\treturn new InputText(data.text)\n\t}\n\n\ttoJSON(): any[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttype: this.type,\n\t\t\t\ttext: this.text,\n\t\t\t},\n\t\t]\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\n\nexport class UserMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"user\"\n\treadonly content: InputText\n\n\tprivate constructor(content: InputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\tstatic create(text: string): UserMessageItem {\n\t\tconst content = InputText.create(text)\n\t\treturn new UserMessageItem(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): UserMessageItem {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new UserMessageItem(content)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n}\n","import { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class DeveloperMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"developer\"\n\treadonly content: InputText\n\n\tprivate constructor(content: InputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n\n\tstatic create(text: string): DeveloperMessageItem {\n\t\tconst content = InputText.create(text)\n\t\treturn new DeveloperMessageItem(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): DeveloperMessageItem {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new DeveloperMessageItem(content)\n\t}\n}\n","import { ItemContent } from \"@domain/model-context/context-item/item-content/item-content\"\n\nexport class OutputText extends ItemContent {\n\treadonly type = \"output_text\"\n\n\tprivate constructor(public readonly text: string) {\n\t\tsuper()\n\t}\n\n\tstatic rehydrate(data: { text: string }): OutputText {\n\t\treturn new OutputText(data.text)\n\t}\n\n\ttoJSON(): any[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttype: this.type,\n\t\t\t\ttext: this.text,\n\t\t\t},\n\t\t]\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { OutputText } from \"@domain/model-context/context-item/item-content/output-text\"\n\nexport class ModelMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"assistant\"\n\treadonly content: OutputText\n\n\tprivate constructor(content: OutputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\tstatic rehydrate(data: { text: string }): ModelMessageItem {\n\t\tconst content = OutputText.rehydrate(data)\n\t\treturn new ModelMessageItem(content)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class FunctionCallItem extends ContextItem {\n\treadonly type = \"function_call\"\n\treadonly callId: string\n\treadonly name: string\n\treadonly args: string\n\n\tprivate constructor(callId: string, name: string, args: string) {\n\t\tsuper()\n\t\tthis.callId = callId\n\t\tthis.name = name\n\t\tthis.args = args\n\t}\n\n\tstatic rehydrate(data: { callId: string; name: string; args: string }): FunctionCallItem {\n\t\treturn new FunctionCallItem(data.callId, data.name, data.args)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcall_id: this.callId,\n\t\t\tname: this.name,\n\t\t\targuments: this.args,\n\t\t}\n\t}\n}\n","import { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { SummaryText } from \"@domain/model-context/context-item/item-content/summary-text\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class ReasoningItem extends ContextItem {\n\treadonly type = \"reasoning\"\n\treadonly content: InputText | undefined\n\treadonly encryptedContent: string | undefined\n\treadonly summary: SummaryText[]\n\n\tprivate constructor(\n\t\tcontent: InputText | undefined,\n\t\tencryptedContent?: string | undefined,\n\t\tsummary: SummaryText[] = [],\n\t) {\n\t\tsuper()\n\t\tthis.content = content\n\t\tthis.encryptedContent = encryptedContent\n\t\tthis.summary = summary\n\t}\n\n\tstatic rehydrate(data: {\n\t\tcontent: InputText | undefined\n\t\tencryptedContent: string | undefined\n\t\tsummary: SummaryText[]\n\t}): ReasoningItem {\n\t\treturn new ReasoningItem(data.content, data.encryptedContent, data.summary)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcontent: this.content?.toJSON(),\n\t\t\tencryptedContent: this.encryptedContent,\n\t\t\tsummary: this.summary.map((s) => s.toJSON()),\n\t\t}\n\t}\n}\n","import { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\n\nexport class FunctionCallOutputItem extends ContextItem {\n\treadonly type = \"function_call_output\"\n\treadonly callId: string\n\treadonly output: InputText\n\n\tprivate constructor(callId: string, output: InputText) {\n\t\tsuper()\n\t\tthis.callId = callId\n\t\tthis.output = output\n\t}\n\n\tstatic create(callId: string, output: string): FunctionCallOutputItem {\n\t\tconst outputText = InputText.create(output)\n\t\treturn new FunctionCallOutputItem(callId, outputText)\n\t}\n\n\tstatic rehydrate(data: { callId: string; output: InputText }): FunctionCallOutputItem {\n\t\treturn new FunctionCallOutputItem(data.callId, data.output)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcall_id: this.callId,\n\t\t\toutput: this.output.toJSON(),\n\t\t}\n\t}\n}\n","import { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\n\nexport type OpenAIReasoningEffortType = \"xhigh\" | \"high\" | \"medium\" | \"low\" | \"none\"\n\nexport class OpenAIReasoningEffort implements ReasoningEffort<OpenAIReasoningEffortType> {\n\treasoningEffort: OpenAIReasoningEffortType\n\n\tconstructor(reasoningEffort: OpenAIReasoningEffortType) {\n\t\tthis.reasoningEffort = reasoningEffort\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.reasoningEffort = effort\n\t}\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\tif (!this.reasoningEffort) {\n\t\t\tthrow new Error(\"Reasoning effort not supported\")\n\t\t}\n\t\treturn this.reasoningEffort\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt54Nano implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.4-nano\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 400_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt54 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.4\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 1_050_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt54Mini implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.4-mini\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 400_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n}\n","export class InputTokenDetails {\n\treadonly cached_tokens: number\n\n\tconstructor(cached_tokens: number) {\n\t\tthis.cached_tokens = cached_tokens\n\t}\n}\n\nexport class OutputTokenDetails {\n\treadonly reasoning_tokens: number\n\n\tconstructor(reasoning_tokens: number) {\n\t\tthis.reasoning_tokens = reasoning_tokens\n\t}\n}\n\nexport class TokenUsage {\n\treadonly inputTokens: number\n\treadonly outputTokens: number\n\treadonly totalTokens: number\n\treadonly inputTokenDetails: InputTokenDetails\n\treadonly outputTokenDetails: OutputTokenDetails\n\n\tconstructor(\n\t\tinputTokens: number,\n\t\toutputTokens: number,\n\t\ttotalTokens: number,\n\t\tinputTokenDetails: InputTokenDetails,\n\t\toutputTokenDetails: OutputTokenDetails,\n\t) {\n\t\tthis.inputTokens = inputTokens\n\t\tthis.outputTokens = outputTokens\n\t\tthis.totalTokens = totalTokens\n\t\tthis.inputTokenDetails = inputTokenDetails\n\t\tthis.outputTokenDetails = outputTokenDetails\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { ModelContextRepository } from \"@domain/model-context/model-context-repository\"\n\nexport class InMemoryModelContextRepository implements ModelContextRepository {\n\tprivate readonly store = new Map<string, ModelContext>()\n\tprivate readonly projectIndex = new Map<string, Set<string>>()\n\n\tasync save(context: ModelContext): Promise<void> {\n\t\tconst existing = this.store.get(context.id)\n\t\tif (existing && existing.projectId !== context.projectId) {\n\t\t\tconst prevSet = this.projectIndex.get(existing.projectId)\n\t\t\tprevSet?.delete(existing.id)\n\t\t\tif (prevSet && prevSet.size === 0) this.projectIndex.delete(existing.projectId)\n\t\t}\n\n\t\tthis.store.set(context.id, this.clone(context))\n\n\t\tlet set = this.projectIndex.get(context.projectId)\n\t\tif (!set) {\n\t\t\tset = new Set<string>()\n\t\t\tthis.projectIndex.set(context.projectId, set)\n\t\t}\n\t\tset.add(context.id)\n\t}\n\n\tasync get(id: string): Promise<ModelContext> {\n\t\tconst context = this.store.get(id)\n\t\tif (!context) {\n\t\t\tthrow new Error(`Context not found: ${id}`)\n\t\t}\n\t\treturn this.clone(context)\n\t}\n\n\tasync getByProjectId(projectId: string): Promise<ModelContext[]> {\n\t\tconst ids = this.projectIndex.get(projectId)\n\t\tif (!ids || ids.size === 0) return []\n\t\treturn [...ids]\n\t\t\t.map((id) => this.store.get(id))\n\t\t\t.filter((c): c is ModelContext => Boolean(c))\n\t\t\t.map((c) => this.clone(c))\n\t}\n\n\tprivate clone(context: ModelContext): ModelContext {\n\t\treturn ModelContext.rehydrate({\n\t\t\tid: context.id,\n\t\t\tprojectId: context.projectId,\n\t\t\titems: [...context.getItems()],\n\t\t})\n\t}\n}\n","import { InputText } from \"@domain/model-context/context-item/item-content/input-text\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class SystemMessageItem extends ContextItem {\n\treadonly type = \"message\"\n\treadonly role = \"system\"\n\treadonly content: InputText\n\n\tprivate constructor(content: InputText) {\n\t\tsuper()\n\t\tthis.content = content\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\trole: this.role,\n\t\t\tcontent: this.content.toJSON(),\n\t\t}\n\t}\n\n\tstatic create(text: string): SystemMessageItem {\n\t\tconst content = InputText.create(text)\n\t\treturn new SystemMessageItem(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): SystemMessageItem {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new SystemMessageItem(content)\n\t}\n}\n","import { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { AgenticEnvironment } from \"../agentic-environment\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport abstract class Participant {\n\tprivate environments: AgenticEnvironment[] = []\n\n\tjoin(environment: AgenticEnvironment) {\n\t\tif (this.isJoinedTo(environment)) {\n\t\t\treturn\n\t\t}\n\t\tenvironment.subscribe(this)\n\t\tthis.environments.push(environment)\n\t}\n\n\tleave(environment: AgenticEnvironment) {\n\t\tif (!this.isJoinedTo(environment)) {\n\t\t\treturn\n\t\t}\n\t\tenvironment.unsubscribe(this)\n\t\tthis.environments = this.environments.filter((e) => e !== environment)\n\t}\n\n\tprotected isJoinedTo(environment: AgenticEnvironment): boolean {\n\t\treturn this.environments.includes(environment)\n\t}\n\n\tgetEnvironments(): AgenticEnvironment[] {\n\t\treturn this.environments\n\t}\n\n\tabstract onParticipantJoined(participant: Participant): Promise<void> | void\n\n\tabstract onParticipantLeft(participant: Participant): Promise<void> | void\n\n\tabstract onJoined(): Promise<void> | void\n\n\tabstract onLeft(): Promise<void> | void\n\n\tabstract onFunctionCall(item: FunctionCallItem): Promise<void> | void\n\n\tabstract onExternalFunctionCall(source: Participant, item: FunctionCallItem): Promise<void> | void\n\n\tabstract onFunctionCallOutput(item: FunctionCallOutputItem): Promise<void> | void\n\n\tabstract onExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem): Promise<void> | void\n\n\tabstract onReasoning(item: ReasoningItem): Promise<void> | void\n\n\tabstract onExternalReasoning(source: Participant, item: ReasoningItem): Promise<void> | void\n\n\tabstract onModelMessage(item: ModelMessageItem): Promise<void> | void\n\n\tabstract onExternalModelMessage(source: Participant, item: ModelMessageItem): Promise<void> | void\n\n\tabstract onMessage(message: string): Promise<void> | void\n\n\tabstract onInternalEvent(item: SemanticEvent<unknown>): Promise<void> | void\n\n\tabstract onExternalEvent(source: Participant, item: SemanticEvent<unknown>): Promise<void> | void\n}\n","import { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport class AgenticEnvironment {\n\tprotected subscribers: Participant[] = []\n\tprivate isActive = false\n\n\tsubscribe(subscriber: Participant) {\n\t\tthis.subscribers.push(subscriber)\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === subscriber) {\n\t\t\t\tsubscriber.onJoined()\n\t\t\t} else {\n\t\t\t\tsubscriber.onParticipantJoined(subscriber)\n\t\t\t}\n\t\t}\n\t}\n\n\tunsubscribe(subscriber: Participant) {\n\t\tthis.subscribers = this.subscribers.filter((p) => p !== subscriber)\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === subscriber) {\n\t\t\t\tsubscriber.onLeft()\n\t\t\t} else {\n\t\t\t\tsubscriber.onParticipantLeft(subscriber)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverFunctionCall(source: Participant, item: FunctionCallItem): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onFunctionCall(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalFunctionCall(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverModelMessage(source: Participant, item: ModelMessageItem): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onModelMessage(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalModelMessage(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverReasoning(source: Participant, item: ReasoningItem): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onReasoning(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalReasoning(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverFunctionCallOutput(source: Participant, item: FunctionCallOutputItem): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onFunctionCallOutput(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalFunctionCallOutput(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tdeliverMessage(source: Participant, message: string): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) continue\n\n\t\t\tsubscriber.onMessage(message)\n\t\t}\n\t}\n\n\tdeliverSemanticEvent(source: Participant, item: SemanticEvent<unknown>): void {\n\t\tfor (const subscriber of this.subscribers) {\n\t\t\tif (subscriber === source) {\n\t\t\t\tsubscriber.onInternalEvent(item)\n\t\t\t} else {\n\t\t\t\tsubscriber.onExternalEvent(source, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tasync start() {\n\t\tthis.isActive = true\n\t\twhile (this.isActive) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 100))\n\t\t}\n\t}\n\n\tstop() {\n\t\tthis.isActive = false\n\t}\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\n\nexport abstract class Agent extends Participant {\n\tabstract executeFunctionCall(\n\t\tenvironment: AgenticEnvironment,\n\t\tfunctionCallItem: FunctionCallItem,\n\t\tsignal?: AbortSignal,\n\t): Promise<void>\n\n\tabstract runInference(\n\t\tenvironment: AgenticEnvironment,\n\t\tcontext: ModelContext,\n\t\tmodel: GenerativeModel,\n\t\tsignal?: AbortSignal,\n\t): Promise<void>\n}\n","export class SemanticEvent<T> {\n\treadonly type: string\n\treadonly data: T\n\n\tconstructor(type: string, data: T) {\n\t\tthis.type = type\n\t\tthis.data = data\n\t}\n\n\tgetType(): string {\n\t\treturn this.type\n\t}\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { InferenceRunner } from \"@domain/agentic-environment/runners/inference-runner\"\nimport { FunctionCallRunner } from \"@domain/agentic-environment/runners/function-call-runner\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { Agent } from \"@domain/agentic-environment/participants/agent\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport class BaseAgent extends Agent {\n\tprivate inferenceRunner: InferenceRunner\n\tprivate functionCallRunner: FunctionCallRunner\n\n\tconstructor(inferenceRunner: InferenceRunner, functionCallRunner: FunctionCallRunner) {\n\t\tsuper()\n\t\tthis.inferenceRunner = inferenceRunner\n\t\tthis.functionCallRunner = functionCallRunner\n\t}\n\n\tonJoined() {}\n\n\tonLeft() {}\n\n\tonParticipantJoined(participant: Participant) {}\n\n\tonParticipantLeft(participant: Participant) {}\n\n\tonFunctionCall(item: FunctionCallItem) {}\n\n\tonExternalFunctionCall(source: Participant, item: FunctionCallItem) {}\n\n\tonFunctionCallOutput(item: FunctionCallOutputItem) {}\n\n\tonExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem) {}\n\n\tonReasoning(item: ReasoningItem) {}\n\n\tonExternalReasoning(source: Participant, item: ReasoningItem) {}\n\n\tonModelMessage(item: ModelMessageItem) {}\n\n\tonExternalModelMessage(source: Participant, item: ModelMessageItem) {}\n\n\tonMessage(message: string) {}\n\n\tonInternalEvent(item: SemanticEvent<unknown>) {}\n\n\tonExternalEvent(source: Participant, item: SemanticEvent<unknown>) {}\n\n\tasync executeFunctionCall(\n\t\tenvironment: AgenticEnvironment,\n\t\tfunctionCallItem: FunctionCallItem,\n\t\tsignal?: AbortSignal,\n\t): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.functionCallRunner.run(functionCallItem, signal)\n\n\t\tfor await (const item of stream) {\n\t\t\tenvironment.deliverFunctionCallOutput(this, item)\n\t\t}\n\t}\n\n\tasync runInference(\n\t\tenvironment: AgenticEnvironment,\n\t\tcontext: ModelContext,\n\t\tmodel: GenerativeModel,\n\t\tsignal?: AbortSignal,\n\t): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.inferenceRunner.run(context, model, signal)\n\n\t\tfor await (const item of stream) {\n\t\t\tif (item instanceof ReasoningItem) {\n\t\t\t\tenvironment.deliverReasoning(this, item)\n\t\t\t} else if (item instanceof FunctionCallItem) {\n\t\t\t\tenvironment.deliverFunctionCall(this, item)\n\t\t\t} else if (item instanceof ModelMessageItem) {\n\t\t\t\tenvironment.deliverModelMessage(this, item)\n\t\t\t} else if (item instanceof SemanticEvent) {\n\t\t\t\tenvironment.deliverSemanticEvent(this, item)\n\t\t\t}\n\t\t}\n\t}\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\n\nexport abstract class Human extends Participant {\n\tsendMessage(environment: AgenticEnvironment, message: string): void {\n\t\tif (!this.isJoinedTo(environment)) throw new Error(\"Not joined to environment\")\n\t\tenvironment.deliverMessage(this, message)\n\t}\n}\n","import { Human } from \"@domain/agentic-environment/participants/human\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport class BaseHuman extends Human {\n\tonJoined() {}\n\n\tonLeft() {}\n\n\tonParticipantJoined(participant: Participant) {}\n\n\tonParticipantLeft(participant: Participant) {}\n\n\tonMessage(message: string) {}\n\n\tonFunctionCall(item: FunctionCallItem) {}\n\n\tonFunctionCallOutput(item: FunctionCallOutputItem) {}\n\n\tonReasoning(item: ReasoningItem) {}\n\n\tonModelMessage(item: ModelMessageItem) {}\n\n\tonExternalFunctionCall(source: Participant, item: FunctionCallItem) {}\n\n\tonExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem) {}\n\n\tonExternalReasoning(source: Participant, item: ReasoningItem) {}\n\n\tonExternalModelMessage(source: Participant, item: ModelMessageItem) {}\n\n\tonInternalEvent(item: SemanticEvent<unknown>) {}\n\n\tonExternalEvent(source: Participant, item: SemanticEvent<unknown>) {}\n}\n","import { InferenceRunner } from \"@domain/agentic-environment/runners/inference-runner\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\nimport OpenAI from \"openai\"\n\ntype InferenceItem = ReasoningItem | FunctionCallItem | ModelMessageItem | SemanticEvent<unknown>\n\nexport class OpenAIInferenceRunner implements InferenceRunner {\n\tasync *run(context: ModelContext, model: GenerativeModel, signal?: AbortSignal): AsyncIterable<InferenceItem> {\n\t\tconst input = this.mapContextToRequest(context)\n\n\t\tconst specification = model.specification\n\n\t\tlet request: any = {\n\t\t\tmodel: specification.name,\n\t\t\tinput: input,\n\t\t\tstream: model.getStreaming(),\n\t\t}\n\n\t\tif (specification.supportFunctionCalling && model.getTools().length > 0) {\n\t\t\trequest.tools = model.getTools().map((tool) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: tool.type,\n\t\t\t\t\tname: tool.name,\n\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\tparameters: tool.parameters,\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (specification.supportReasoningEffort) {\n\t\t\trequest.reasoning = {\n\t\t\t\teffort: model.getReasoningEffort(),\n\t\t\t}\n\t\t}\n\n\t\tif (!specification.supportStreaming && model.getStreaming()) {\n\t\t\tthrow new Error(\"Streaming is not supported for this model\")\n\t\t}\n\n\t\tconst openai = new OpenAI()\n\n\t\tconst response: any = await openai.responses.create(request)\n\n\t\tif (specification.supportStreaming && model.getStreaming()) {\n\t\t\tfor await (const event of response) {\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tyield new SemanticEvent(event.type, event)\n\t\t\t}\n\t\t} else {\n\t\t\tconst contextItems = this.extractContextItems(response)\n\t\t\tconst tokenUsage = this.extractTokenUsage(response)\n\n\t\t\tfor (const item of contextItems) {\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tyield item as InferenceItem\n\t\t\t}\n\t\t}\n\t}\n\n\textractTokenUsage(response: OpenAI.Responses.Response): TokenUsage | undefined {\n\t\tif (!response.usage) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn new TokenUsage(\n\t\t\tresponse.usage.input_tokens,\n\t\t\tresponse.usage.output_tokens,\n\t\t\tresponse.usage.total_tokens,\n\t\t\tnew InputTokenDetails(response.usage.input_tokens_details.cached_tokens),\n\t\t\tnew OutputTokenDetails(response.usage.output_tokens_details.reasoning_tokens),\n\t\t)\n\t}\n\n\tmapContextToRequest(context: ModelContext): any[] {\n\t\treturn context.getItems().map((item) => item.toJSON())\n\t}\n\n\textractContextItems(response: any): ContextItem[] {\n\t\treturn response.output.map((item: any) => {\n\t\t\tif (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\treturn ModelMessageItem.rehydrate(item.content[0] as { text: string })\n\t\t\t}\n\t\t\tif (item.type === \"function_call\") {\n\t\t\t\treturn FunctionCallItem.rehydrate({\n\t\t\t\t\tcallId: item.call_id,\n\t\t\t\t\tname: item.name,\n\t\t\t\t\targs: item.arguments,\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\treturn ReasoningItem.rehydrate(item)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { FunctionCallRunner } from \"@domain/agentic-environment/runners/function-call-runner\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\n\nexport class DefaultFunctionCallRunner implements FunctionCallRunner {\n\tconstructor(private readonly tools: Tool[]) {}\n\n\tasync *run(call: FunctionCallItem, signal?: AbortSignal): AsyncIterable<FunctionCallOutputItem> {\n\t\tconst tool = this.tools.find((t) => t.name === call.name)\n\t\tif (!tool) throw new Error(`Unknown tool: ${call.name}`)\n\n\t\tconst result = await tool.invoke(JSON.parse(call.args))\n\t\tyield FunctionCallOutputItem.create(call.callId, JSON.stringify(result))\n\t}\n}\n","import { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@infra/providers/openai/reasoning-effort\"\n\nexport class Gpt55 implements GenerativeModel {\n\treadonly specification = {\n\t\tname: \"gpt-5.5\",\n\t\tsupportReasoningEffort: true,\n\t\tdefaultReasoningEffort: \"none\" as OpenAIReasoningEffortType,\n\t\tsupportStreaming: true,\n\t\tcontextWindowSize: 1_050_000,\n\t\tmaxOutputTokens: 128_000,\n\t\tsupportFunctionCalling: true,\n\t}\n\n\tprivate tools: Tool[] = []\n\n\tprivate streaming: boolean = false\n\n\tsetStreaming(streaming: boolean): void {\n\t\tthis.streaming = streaming\n\t}\n\n\tgetStreaming(): boolean {\n\t\treturn this.streaming\n\t}\n\n\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\n\t}\n\n\tprivate readonly effort: OpenAIReasoningEffort = new OpenAIReasoningEffort(\n\t\tthis.specification.defaultReasoningEffort,\n\t)\n\n\tsetReasoningEffort(effort: OpenAIReasoningEffortType): void {\n\t\tthis.effort.setReasoningEffort(effort)\n\t}\n\n\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { Participant } from \"./participant\"\n\nexport abstract class Observer extends Participant {}\n","import { Observer } from \"@domain/agentic-environment/participants/observer\"\nimport { Participant } from \"@domain/agentic-environment/participants/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { SemanticEvent } from \"@domain/model-context/semantic-event/semantic-event\"\n\nexport class BaseObserver extends Observer {\n\tonFunctionCall(item: FunctionCallItem) {}\n\tonExternalFunctionCall(source: Participant, item: FunctionCallItem) {}\n\tonFunctionCallOutput(item: FunctionCallOutputItem) {}\n\tonExternalFunctionCallOutput(source: Participant, item: FunctionCallOutputItem) {}\n\tonReasoning(item: ReasoningItem) {}\n\tonExternalReasoning(source: Participant, item: ReasoningItem) {}\n\tonModelMessage(item: ModelMessageItem) {}\n\tonExternalModelMessage(source: Participant, item: ModelMessageItem) {}\n\tonMessage(message: string) {}\n\tonJoined() {}\n\tonLeft() {}\n\tonParticipantJoined(participant: Participant) {}\n\tonParticipantLeft(participant: Participant) {}\n\tonInternalEvent(item: SemanticEvent<unknown>) {}\n\tonExternalEvent(source: Participant, item: SemanticEvent<unknown>) {}\n}\n"],"mappings":"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","names":["subscriber","OpenAI"]}
package/dist/index.mjs CHANGED
@@ -881,6 +881,7 @@ export {
881
881
  OutputTokenDetails,
882
882
  Participant,
883
883
  ReasoningItem,
884
+ SemanticEvent,
884
885
  SystemMessageItem,
885
886
  TokenUsage,
886
887
  UserMessageItem
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mozaik-ai/core",
3
- "version": "3.10.0",
3
+ "version": "3.10.2",
4
4
  "description": "A TypeScript framework for building reactive agents",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",