@mozaik-ai/core 3.8.7 → 3.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -0
- package/dist/index.d.mts +14 -2
- package/dist/index.d.ts +14 -2
- package/dist/index.js +35 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +35 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,6 +29,10 @@ OPENAI_API_KEY=your-openai-key-here
|
|
|
29
29
|
|
|
30
30
|
| Handler | Triggered when… |
|
|
31
31
|
| ------------------------------ | ------------------------------------------------------ |
|
|
32
|
+
| `onJoined` | this participant joins an environment |
|
|
33
|
+
| `onLeft` | this participant leaves an environment |
|
|
34
|
+
| `onParticipantJoined` | another participant joins the same environment |
|
|
35
|
+
| `onParticipantLeft` | another participant leaves the same environment |
|
|
32
36
|
| `onMessage` | any participant sends a message |
|
|
33
37
|
| `onFunctionCall` | its own inference returns a function call |
|
|
34
38
|
| `onExternalFunctionCall` | another agent's inference returns a function call |
|
|
@@ -49,6 +53,7 @@ flowchart LR
|
|
|
49
53
|
Env -->|"onMessage / onExternal*"| Human
|
|
50
54
|
Env -->|"onFunctionCall / onReasoning / …"| Agent
|
|
51
55
|
Env -->|"onExternal*"| Observer
|
|
56
|
+
Env -->|"onJoined / onLeft / onParticipant*"| All
|
|
52
57
|
```
|
|
53
58
|
|
|
54
59
|
---
|
|
@@ -160,6 +165,38 @@ Three things to note:
|
|
|
160
165
|
|
|
161
166
|
---
|
|
162
167
|
|
|
168
|
+
## Lifecycle hooks
|
|
169
|
+
|
|
170
|
+
Every participant receives lifecycle notifications when it or others join/leave an environment:
|
|
171
|
+
|
|
172
|
+
```ts
|
|
173
|
+
export class TeamAgent extends BaseAgentParticipant {
|
|
174
|
+
// Called when this participant joins an environment.
|
|
175
|
+
onJoined(environment: AgenticEnvironment): void {
|
|
176
|
+
console.log("I joined the environment")
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Called when this participant leaves an environment.
|
|
180
|
+
onLeft(environment: AgenticEnvironment): void {
|
|
181
|
+
console.log("I left the environment")
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Called when another participant joins the same environment.
|
|
185
|
+
onParticipantJoined(participant: Participant, environment: AgenticEnvironment): void {
|
|
186
|
+
console.log(`${participant.constructor.name} joined`)
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Called when another participant leaves the same environment.
|
|
190
|
+
onParticipantLeft(participant: Participant, environment: AgenticEnvironment): void {
|
|
191
|
+
console.log(`${participant.constructor.name} left`)
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
This lets participants react to membership changes — for example, an agent could start inference only after a required collaborator has joined, or clean up shared state when someone leaves.
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
163
200
|
## Reacting to external events
|
|
164
201
|
|
|
165
202
|
Participants can listen to external events and react by overriding methods like `onMessage`, `onExternalFunctionCall`, `onExternalFunctionCallOutput`, `onExternalReasoning`, and `onExternalModelMessage`.
|
package/dist/index.d.mts
CHANGED
|
@@ -297,13 +297,13 @@ declare class AgenticEnvironment {
|
|
|
297
297
|
protected subscribers: Participant[];
|
|
298
298
|
private isActive;
|
|
299
299
|
subscribe(subscriber: Participant): void;
|
|
300
|
-
unsubscribe(
|
|
300
|
+
unsubscribe(subscriber: Participant): void;
|
|
301
301
|
deliverFunctionCall(source: Participant, item: FunctionCallItem): void;
|
|
302
302
|
deliverModelMessage(source: Participant, item: ModelMessageItem): void;
|
|
303
303
|
deliverReasoning(source: Participant, item: ReasoningItem): void;
|
|
304
304
|
deliverFunctionCallOutput(source: Participant, item: FunctionCallOutputItem): void;
|
|
305
305
|
deliverMessage(source: Participant, message: string): void;
|
|
306
|
-
start():
|
|
306
|
+
start(): void;
|
|
307
307
|
stop(): void;
|
|
308
308
|
}
|
|
309
309
|
|
|
@@ -313,6 +313,10 @@ declare abstract class Participant {
|
|
|
313
313
|
leave(environment: AgenticEnvironment): void;
|
|
314
314
|
protected isJoinedTo(environment: AgenticEnvironment): boolean;
|
|
315
315
|
getEnvironments(): AgenticEnvironment[];
|
|
316
|
+
abstract onParticipantJoined(participant: Participant, environment: AgenticEnvironment): Promise<void> | void;
|
|
317
|
+
abstract onParticipantLeft(participant: Participant, environment: AgenticEnvironment): Promise<void> | void;
|
|
318
|
+
abstract onJoined(environment: AgenticEnvironment): Promise<void> | void;
|
|
319
|
+
abstract onLeft(environment: AgenticEnvironment): Promise<void> | void;
|
|
316
320
|
abstract onFunctionCall(item: FunctionCallItem): Promise<void> | void;
|
|
317
321
|
abstract onExternalFunctionCall(source: Participant, item: FunctionCallItem): Promise<void> | void;
|
|
318
322
|
abstract onFunctionCallOutput(item: FunctionCallOutputItem): Promise<void> | void;
|
|
@@ -351,6 +355,10 @@ declare class BaseAgentParticipant extends Participant implements InputCapable,
|
|
|
351
355
|
private inferenceRunner;
|
|
352
356
|
private functionCallRunner;
|
|
353
357
|
constructor(inputSource: InputStream, inferenceRunner: InferenceRunner, functionCallRunner: FunctionCallRunner);
|
|
358
|
+
onJoined(environment: AgenticEnvironment): void;
|
|
359
|
+
onLeft(environment: AgenticEnvironment): void;
|
|
360
|
+
onParticipantJoined(participant: Participant): void;
|
|
361
|
+
onParticipantLeft(participant: Participant): void;
|
|
354
362
|
onFunctionCall(item: FunctionCallItem): void;
|
|
355
363
|
onExternalFunctionCall(source: Participant, item: FunctionCallItem): void;
|
|
356
364
|
onFunctionCallOutput(item: FunctionCallOutputItem): void;
|
|
@@ -368,6 +376,10 @@ declare class BaseAgentParticipant extends Participant implements InputCapable,
|
|
|
368
376
|
declare class BaseHumanParticipant extends Participant implements InputCapable {
|
|
369
377
|
private inputSource;
|
|
370
378
|
constructor(inputSource: InputStream);
|
|
379
|
+
onJoined(environment: AgenticEnvironment): void;
|
|
380
|
+
onLeft(environment: AgenticEnvironment): void;
|
|
381
|
+
onParticipantJoined(participant: Participant, environment: AgenticEnvironment): void;
|
|
382
|
+
onParticipantLeft(participant: Participant, environment: AgenticEnvironment): void;
|
|
371
383
|
onMessage(message: string): void;
|
|
372
384
|
onFunctionCall(item: FunctionCallItem): void;
|
|
373
385
|
onFunctionCallOutput(item: FunctionCallOutputItem): void;
|
package/dist/index.d.ts
CHANGED
|
@@ -297,13 +297,13 @@ declare class AgenticEnvironment {
|
|
|
297
297
|
protected subscribers: Participant[];
|
|
298
298
|
private isActive;
|
|
299
299
|
subscribe(subscriber: Participant): void;
|
|
300
|
-
unsubscribe(
|
|
300
|
+
unsubscribe(subscriber: Participant): void;
|
|
301
301
|
deliverFunctionCall(source: Participant, item: FunctionCallItem): void;
|
|
302
302
|
deliverModelMessage(source: Participant, item: ModelMessageItem): void;
|
|
303
303
|
deliverReasoning(source: Participant, item: ReasoningItem): void;
|
|
304
304
|
deliverFunctionCallOutput(source: Participant, item: FunctionCallOutputItem): void;
|
|
305
305
|
deliverMessage(source: Participant, message: string): void;
|
|
306
|
-
start():
|
|
306
|
+
start(): void;
|
|
307
307
|
stop(): void;
|
|
308
308
|
}
|
|
309
309
|
|
|
@@ -313,6 +313,10 @@ declare abstract class Participant {
|
|
|
313
313
|
leave(environment: AgenticEnvironment): void;
|
|
314
314
|
protected isJoinedTo(environment: AgenticEnvironment): boolean;
|
|
315
315
|
getEnvironments(): AgenticEnvironment[];
|
|
316
|
+
abstract onParticipantJoined(participant: Participant, environment: AgenticEnvironment): Promise<void> | void;
|
|
317
|
+
abstract onParticipantLeft(participant: Participant, environment: AgenticEnvironment): Promise<void> | void;
|
|
318
|
+
abstract onJoined(environment: AgenticEnvironment): Promise<void> | void;
|
|
319
|
+
abstract onLeft(environment: AgenticEnvironment): Promise<void> | void;
|
|
316
320
|
abstract onFunctionCall(item: FunctionCallItem): Promise<void> | void;
|
|
317
321
|
abstract onExternalFunctionCall(source: Participant, item: FunctionCallItem): Promise<void> | void;
|
|
318
322
|
abstract onFunctionCallOutput(item: FunctionCallOutputItem): Promise<void> | void;
|
|
@@ -351,6 +355,10 @@ declare class BaseAgentParticipant extends Participant implements InputCapable,
|
|
|
351
355
|
private inferenceRunner;
|
|
352
356
|
private functionCallRunner;
|
|
353
357
|
constructor(inputSource: InputStream, inferenceRunner: InferenceRunner, functionCallRunner: FunctionCallRunner);
|
|
358
|
+
onJoined(environment: AgenticEnvironment): void;
|
|
359
|
+
onLeft(environment: AgenticEnvironment): void;
|
|
360
|
+
onParticipantJoined(participant: Participant): void;
|
|
361
|
+
onParticipantLeft(participant: Participant): void;
|
|
354
362
|
onFunctionCall(item: FunctionCallItem): void;
|
|
355
363
|
onExternalFunctionCall(source: Participant, item: FunctionCallItem): void;
|
|
356
364
|
onFunctionCallOutput(item: FunctionCallOutputItem): void;
|
|
@@ -368,6 +376,10 @@ declare class BaseAgentParticipant extends Participant implements InputCapable,
|
|
|
368
376
|
declare class BaseHumanParticipant extends Participant implements InputCapable {
|
|
369
377
|
private inputSource;
|
|
370
378
|
constructor(inputSource: InputStream);
|
|
379
|
+
onJoined(environment: AgenticEnvironment): void;
|
|
380
|
+
onLeft(environment: AgenticEnvironment): void;
|
|
381
|
+
onParticipantJoined(participant: Participant, environment: AgenticEnvironment): void;
|
|
382
|
+
onParticipantLeft(participant: Participant, environment: AgenticEnvironment): void;
|
|
371
383
|
onMessage(message: string): void;
|
|
372
384
|
onFunctionCall(item: FunctionCallItem): void;
|
|
373
385
|
onFunctionCallOutput(item: FunctionCallOutputItem): void;
|
package/dist/index.js
CHANGED
|
@@ -610,9 +610,23 @@ var AgenticEnvironment = class {
|
|
|
610
610
|
}
|
|
611
611
|
subscribe(subscriber) {
|
|
612
612
|
this.subscribers.push(subscriber);
|
|
613
|
+
for (const subscriber2 of this.subscribers) {
|
|
614
|
+
if (subscriber2 === subscriber2) {
|
|
615
|
+
subscriber2.onJoined(this);
|
|
616
|
+
} else {
|
|
617
|
+
subscriber2.onParticipantJoined(subscriber2, this);
|
|
618
|
+
}
|
|
619
|
+
}
|
|
613
620
|
}
|
|
614
|
-
unsubscribe(
|
|
615
|
-
this.subscribers = this.subscribers.filter((p) => p !==
|
|
621
|
+
unsubscribe(subscriber) {
|
|
622
|
+
this.subscribers = this.subscribers.filter((p) => p !== subscriber);
|
|
623
|
+
for (const subscriber2 of this.subscribers) {
|
|
624
|
+
if (subscriber2 === subscriber2) {
|
|
625
|
+
subscriber2.onLeft(this);
|
|
626
|
+
} else {
|
|
627
|
+
subscriber2.onParticipantLeft(subscriber2, this);
|
|
628
|
+
}
|
|
629
|
+
}
|
|
616
630
|
}
|
|
617
631
|
deliverFunctionCall(source, item) {
|
|
618
632
|
for (const subscriber of this.subscribers) {
|
|
@@ -656,10 +670,11 @@ var AgenticEnvironment = class {
|
|
|
656
670
|
subscriber.onMessage(message);
|
|
657
671
|
}
|
|
658
672
|
}
|
|
659
|
-
|
|
673
|
+
start() {
|
|
660
674
|
this.isActive = true;
|
|
661
675
|
while (this.isActive) {
|
|
662
|
-
|
|
676
|
+
setTimeout(() => {
|
|
677
|
+
}, 100);
|
|
663
678
|
}
|
|
664
679
|
}
|
|
665
680
|
stop() {
|
|
@@ -675,6 +690,14 @@ var BaseAgentParticipant = class extends Participant {
|
|
|
675
690
|
this.inferenceRunner = inferenceRunner;
|
|
676
691
|
this.functionCallRunner = functionCallRunner;
|
|
677
692
|
}
|
|
693
|
+
onJoined(environment) {
|
|
694
|
+
}
|
|
695
|
+
onLeft(environment) {
|
|
696
|
+
}
|
|
697
|
+
onParticipantJoined(participant) {
|
|
698
|
+
}
|
|
699
|
+
onParticipantLeft(participant) {
|
|
700
|
+
}
|
|
678
701
|
onFunctionCall(item) {
|
|
679
702
|
}
|
|
680
703
|
onExternalFunctionCall(source, item) {
|
|
@@ -728,6 +751,14 @@ var BaseHumanParticipant = class extends Participant {
|
|
|
728
751
|
super();
|
|
729
752
|
this.inputSource = inputSource;
|
|
730
753
|
}
|
|
754
|
+
onJoined(environment) {
|
|
755
|
+
}
|
|
756
|
+
onLeft(environment) {
|
|
757
|
+
}
|
|
758
|
+
onParticipantJoined(participant, environment) {
|
|
759
|
+
}
|
|
760
|
+
onParticipantLeft(participant, environment) {
|
|
761
|
+
}
|
|
731
762
|
onMessage(message) {
|
|
732
763
|
}
|
|
733
764
|
onFunctionCall(item) {
|
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/domain/generative-model/inference-response.ts","../src/domain/generative-model/token-usage.ts","../src/infrastructure/providers/openai/runtime/openai-responses.ts","../src/domain/generative-model/inference-request.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/infrastructure/repository/in-memory-model-context-repository.ts","../src/domain/model-context/context-item/client-item/system-message.ts","../src/domain/agentic-environment/participant.ts","../src/domain/agentic-environment/agentic-environment.ts","../src/application/agent.ts","../src/application/human.ts","../src/application/openai-inference-runner.ts","../src/application/function-call-runner.ts","../src/infrastructure/providers/openai/models/gpt-5-5.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 { OpenAIResponses } from \"@infra/providers/openai/runtime/openai-responses\"\nimport { InferenceRequest } from \"@domain/generative-model/inference-request\"\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 { InferenceResponse } from \"@domain/generative-model/inference-response\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { InMemoryModelContextRepository } from \"@infra/repository/in-memory-model-context-repository\"\nimport { SystemMessageItem } from \"@domain/model-context/context-item/client-item/system-message\"\nimport { Participant } from \"@domain/agentic-environment/participant\"\nimport { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { BaseAgentParticipant } from \"@app/agent\"\nimport { BaseHumanParticipant } from \"@app/human\"\nimport { FunctionCallRunner } from \"@domain/agentic-environment/function-call-runner\"\nimport { InferenceRunner } from \"@domain/agentic-environment/inference-runner\"\nimport { InputStream } from \"@domain/agentic-environment/input-stream\"\nimport { OpenAIInferenceRunner } from \"@app/openai-inference-runner\"\nimport { DefaultFunctionCallRunner } from \"@app/function-call-runner\"\nimport { Gpt55 } from \"@infra/providers/openai/models/gpt-5-5\"\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\tOpenAIResponses,\n\tGpt54,\n\tGpt54Mini,\n\tGpt54Nano,\n\tGpt55,\n\tInferenceRequest,\n\tInferenceResponse,\n\tTokenUsage,\n\tInputTokenDetails,\n\tOutputTokenDetails,\n\tTool,\n\tFunctionCallRunner,\n\tInferenceRunner,\n\tDefaultFunctionCallRunner,\n\tInputStream,\n\tAgenticEnvironment,\n\tParticipant,\n\tBaseAgentParticipant,\n\tBaseHumanParticipant,\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 { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { TokenUsage } from \"@domain/generative-model/token-usage\"\n\nexport class InferenceResponse {\n\treadonly contextItems: ContextItem[]\n\treadonly tokenUsage?: TokenUsage\n\n\tconstructor(contextItems: ContextItem[], tokenUsage: TokenUsage | undefined) {\n\t\tthis.contextItems = contextItems\n\t\tthis.tokenUsage = tokenUsage\n\t}\n}\n","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 { 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 { InferenceRequest } from \"@domain/generative-model/inference-request\"\nimport { InferenceResponse } from \"@domain/generative-model/inference-response\"\nimport { ModelRuntime } from \"@domain/generative-model/runtime/model-runtime\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport OpenAI from \"openai\"\n\nexport class OpenAIResponses implements ModelRuntime {\n\tprivate readonly client: OpenAI\n\tconstructor() {\n\t\tthis.client = new OpenAI()\n\t}\n\n\tasync infer(inferenceRequest: InferenceRequest): Promise<InferenceResponse> {\n\t\tconst input = this.mapContextToRequest(inferenceRequest.context)\n\n\t\tconst specification = inferenceRequest.model.specification\n\n\t\tlet request: any = {\n\t\t\tmodel: specification.name,\n\t\t\tinput: input,\n\t\t}\n\n\t\tif (specification.supportFunctionCalling && inferenceRequest.model.getTools().length > 0) {\n\t\t\trequest.tools = inferenceRequest.model.getTools().map((tool) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: tool.type,\n\t\t\t\t\tname: tool.name,\n\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\tparameters: tool.parameters,\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (specification.supportReasoningEffort) {\n\t\t\trequest.reasoning = {\n\t\t\t\teffort: inferenceRequest.model.getReasoningEffort(),\n\t\t\t}\n\t\t}\n\n\t\tconst response = await this.client.responses.create(request)\n\n\t\tconst contextItems = this.extractContextItems(response)\n\t\tconst tokenUsage = this.extractTokenUsage(response)\n\t\treturn new InferenceResponse(contextItems, tokenUsage)\n\t}\n\n\textractTokenUsage(response: OpenAI.Responses.Response): TokenUsage | undefined {\n\t\tif (!response.usage) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn new TokenUsage(\n\t\t\tresponse.usage.input_tokens,\n\t\t\tresponse.usage.output_tokens,\n\t\t\tresponse.usage.total_tokens,\n\t\t\tnew InputTokenDetails(response.usage.input_tokens_details.cached_tokens),\n\t\t\tnew OutputTokenDetails(response.usage.output_tokens_details.reasoning_tokens),\n\t\t)\n\t}\n\n\tmapContextToRequest(context: ModelContext): any[] {\n\t\treturn context.getItems().map((item) => item.toJSON())\n\t}\n\n\textractContextItems(response: any): ContextItem[] {\n\t\treturn response.output.map((item: any) => {\n\t\t\tif (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\treturn ModelMessageItem.rehydrate(item.content[0] as { text: string })\n\t\t\t}\n\t\t\tif (item.type === \"function_call\") {\n\t\t\t\treturn FunctionCallItem.rehydrate({\n\t\t\t\t\tcallId: item.call_id,\n\t\t\t\t\tname: item.name,\n\t\t\t\t\targs: item.arguments,\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\treturn ReasoningItem.rehydrate(item)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\n\nexport class InferenceRequest {\n\treadonly model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability\n\treadonly context: ModelContext\n\n\tconstructor(model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability, context: ModelContext) {\n\t\tthis.model = model\n\t\tthis.context = context\n\t}\n}\n","import { 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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\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\"\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\t// abstract onParticipantJoined(participant: Participant): Promise<void>\n\n\t// abstract onParticipantLeft(participant: Participant): Promise<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","import { Participant } from \"@domain/agentic-environment/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\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}\n\n\tunsubscribe(user: Participant) {\n\t\tthis.subscribers = this.subscribers.filter((p) => p !== user)\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\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 { FunctionCallCapable, InferenceCapable, InputCapable } from \"@domain/agentic-environment/capabilities\"\nimport { Participant } from \"@domain/agentic-environment/participant\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\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/inference-runner\"\nimport { FunctionCallRunner } from \"@domain/agentic-environment/function-call-runner\"\nimport { InputStream } from \"@domain/agentic-environment/input-stream\"\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\"\n\nexport class BaseAgentParticipant extends Participant implements InputCapable, InferenceCapable, FunctionCallCapable {\n\tprivate inputSource: InputStream\n\tprivate inferenceRunner: InferenceRunner\n\tprivate functionCallRunner: FunctionCallRunner\n\n\tconstructor(inputSource: InputStream, inferenceRunner: InferenceRunner, functionCallRunner: FunctionCallRunner) {\n\t\tsuper()\n\t\tthis.inputSource = inputSource\n\t\tthis.inferenceRunner = inferenceRunner\n\t\tthis.functionCallRunner = functionCallRunner\n\t}\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\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\tawait environment.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.type === \"reasoning\") {\n\t\t\t\tawait environment.deliverReasoning(this, item)\n\t\t\t} else if (item.type === \"function_call\") {\n\t\t\t\tawait environment.deliverFunctionCall(this, item)\n\t\t\t} else if (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\tawait environment.deliverModelMessage(this, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tasync streamInput(environment: AgenticEnvironment): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.inputSource.stream()\n\t\tfor await (const message of stream) {\n\t\t\tawait environment.deliverMessage(this, message)\n\t\t}\n\t}\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { InputCapable } from \"@domain/agentic-environment/capabilities\"\nimport { InputStream } from \"@domain/agentic-environment/input-stream\"\nimport { Participant } from \"@domain/agentic-environment/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\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\"\n\nexport class BaseHumanParticipant extends Participant implements InputCapable {\n\tprivate inputSource: InputStream\n\n\tconstructor(inputSource: InputStream) {\n\t\tsuper()\n\t\tthis.inputSource = inputSource\n\t}\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\tasync streamInput(environment: AgenticEnvironment): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.inputSource.stream()\n\t\tfor await (const message of stream) {\n\t\t\tawait environment.deliverMessage(this, message)\n\t\t}\n\t}\n}\n","import { InferenceRunner } from \"@domain/agentic-environment/inference-runner\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { InferenceRequest } from \"@domain/generative-model/inference-request\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { OpenAIResponses } from \"@infra/providers/openai/runtime/openai-responses\"\n\ntype InferenceItem = ReasoningItem | FunctionCallItem | ModelMessageItem\n\nexport class OpenAIInferenceRunner implements InferenceRunner {\n\tprivate readonly runtime = new OpenAIResponses()\n\n\tasync *run(context: ModelContext, model: GenerativeModel, signal?: AbortSignal): AsyncIterable<InferenceItem> {\n\t\tconst response = await this.runtime.infer(new InferenceRequest(model, context))\n\t\tfor (const item of response.contextItems) {\n\t\t\tyield item as InferenceItem\n\t\t}\n\t}\n}\n","import { FunctionCallRunner } from \"@domain/agentic-environment/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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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"],"mappings":"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","names":["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/domain/generative-model/inference-response.ts","../src/domain/generative-model/token-usage.ts","../src/infrastructure/providers/openai/runtime/openai-responses.ts","../src/domain/generative-model/inference-request.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/infrastructure/repository/in-memory-model-context-repository.ts","../src/domain/model-context/context-item/client-item/system-message.ts","../src/domain/agentic-environment/participant.ts","../src/domain/agentic-environment/agentic-environment.ts","../src/application/agent.ts","../src/application/human.ts","../src/application/openai-inference-runner.ts","../src/application/function-call-runner.ts","../src/infrastructure/providers/openai/models/gpt-5-5.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 { OpenAIResponses } from \"@infra/providers/openai/runtime/openai-responses\"\nimport { InferenceRequest } from \"@domain/generative-model/inference-request\"\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 { InferenceResponse } from \"@domain/generative-model/inference-response\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport { Tool } from \"@domain/generative-model/tool\"\nimport { InMemoryModelContextRepository } from \"@infra/repository/in-memory-model-context-repository\"\nimport { SystemMessageItem } from \"@domain/model-context/context-item/client-item/system-message\"\nimport { Participant } from \"@domain/agentic-environment/participant\"\nimport { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { BaseAgentParticipant } from \"@app/agent\"\nimport { BaseHumanParticipant } from \"@app/human\"\nimport { FunctionCallRunner } from \"@domain/agentic-environment/function-call-runner\"\nimport { InferenceRunner } from \"@domain/agentic-environment/inference-runner\"\nimport { InputStream } from \"@domain/agentic-environment/input-stream\"\nimport { OpenAIInferenceRunner } from \"@app/openai-inference-runner\"\nimport { DefaultFunctionCallRunner } from \"@app/function-call-runner\"\nimport { Gpt55 } from \"@infra/providers/openai/models/gpt-5-5\"\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\tOpenAIResponses,\n\tGpt54,\n\tGpt54Mini,\n\tGpt54Nano,\n\tGpt55,\n\tInferenceRequest,\n\tInferenceResponse,\n\tTokenUsage,\n\tInputTokenDetails,\n\tOutputTokenDetails,\n\tTool,\n\tFunctionCallRunner,\n\tInferenceRunner,\n\tDefaultFunctionCallRunner,\n\tInputStream,\n\tAgenticEnvironment,\n\tParticipant,\n\tBaseAgentParticipant,\n\tBaseHumanParticipant,\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 { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { TokenUsage } from \"@domain/generative-model/token-usage\"\n\nexport class InferenceResponse {\n\treadonly contextItems: ContextItem[]\n\treadonly tokenUsage?: TokenUsage\n\n\tconstructor(contextItems: ContextItem[], tokenUsage: TokenUsage | undefined) {\n\t\tthis.contextItems = contextItems\n\t\tthis.tokenUsage = tokenUsage\n\t}\n}\n","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 { 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 { InferenceRequest } from \"@domain/generative-model/inference-request\"\nimport { InferenceResponse } from \"@domain/generative-model/inference-response\"\nimport { ModelRuntime } from \"@domain/generative-model/runtime/model-runtime\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport OpenAI from \"openai\"\n\nexport class OpenAIResponses implements ModelRuntime {\n\tprivate readonly client: OpenAI\n\tconstructor() {\n\t\tthis.client = new OpenAI()\n\t}\n\n\tasync infer(inferenceRequest: InferenceRequest): Promise<InferenceResponse> {\n\t\tconst input = this.mapContextToRequest(inferenceRequest.context)\n\n\t\tconst specification = inferenceRequest.model.specification\n\n\t\tlet request: any = {\n\t\t\tmodel: specification.name,\n\t\t\tinput: input,\n\t\t}\n\n\t\tif (specification.supportFunctionCalling && inferenceRequest.model.getTools().length > 0) {\n\t\t\trequest.tools = inferenceRequest.model.getTools().map((tool) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: tool.type,\n\t\t\t\t\tname: tool.name,\n\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\tparameters: tool.parameters,\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (specification.supportReasoningEffort) {\n\t\t\trequest.reasoning = {\n\t\t\t\teffort: inferenceRequest.model.getReasoningEffort(),\n\t\t\t}\n\t\t}\n\n\t\tconst response = await this.client.responses.create(request)\n\n\t\tconst contextItems = this.extractContextItems(response)\n\t\tconst tokenUsage = this.extractTokenUsage(response)\n\t\treturn new InferenceResponse(contextItems, tokenUsage)\n\t}\n\n\textractTokenUsage(response: OpenAI.Responses.Response): TokenUsage | undefined {\n\t\tif (!response.usage) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn new TokenUsage(\n\t\t\tresponse.usage.input_tokens,\n\t\t\tresponse.usage.output_tokens,\n\t\t\tresponse.usage.total_tokens,\n\t\t\tnew InputTokenDetails(response.usage.input_tokens_details.cached_tokens),\n\t\t\tnew OutputTokenDetails(response.usage.output_tokens_details.reasoning_tokens),\n\t\t)\n\t}\n\n\tmapContextToRequest(context: ModelContext): any[] {\n\t\treturn context.getItems().map((item) => item.toJSON())\n\t}\n\n\textractContextItems(response: any): ContextItem[] {\n\t\treturn response.output.map((item: any) => {\n\t\t\tif (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\treturn ModelMessageItem.rehydrate(item.content[0] as { text: string })\n\t\t\t}\n\t\t\tif (item.type === \"function_call\") {\n\t\t\t\treturn FunctionCallItem.rehydrate({\n\t\t\t\t\tcallId: item.call_id,\n\t\t\t\t\tname: item.name,\n\t\t\t\t\targs: item.arguments,\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\treturn ReasoningItem.rehydrate(item)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\n\nexport class InferenceRequest {\n\treadonly model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability\n\treadonly context: ModelContext\n\n\tconstructor(model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability, context: ModelContext) {\n\t\tthis.model = model\n\t\tthis.context = context\n\t}\n}\n","import { 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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\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\"\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, environment: AgenticEnvironment): Promise<void> | void\n\n\tabstract onParticipantLeft(participant: Participant, environment: AgenticEnvironment): Promise<void> | void\n\n\tabstract onJoined(environment: AgenticEnvironment): Promise<void> | void\n\n\tabstract onLeft(environment: AgenticEnvironment): 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","import { Participant } from \"@domain/agentic-environment/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\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(this)\n\t\t\t} else {\n\t\t\t\tsubscriber.onParticipantJoined(subscriber, this)\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(this)\n\t\t\t} else {\n\t\t\t\tsubscriber.onParticipantLeft(subscriber, this)\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\tstart() {\n\t\tthis.isActive = true\n\t\twhile (this.isActive) {\n\t\t\tsetTimeout(() => {}, 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 { FunctionCallCapable, InferenceCapable, InputCapable } from \"@domain/agentic-environment/capabilities\"\nimport { Participant } from \"@domain/agentic-environment/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/inference-runner\"\nimport { FunctionCallRunner } from \"@domain/agentic-environment/function-call-runner\"\nimport { InputStream } from \"@domain/agentic-environment/input-stream\"\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\"\n\nexport class BaseAgentParticipant extends Participant implements InputCapable, InferenceCapable, FunctionCallCapable {\n\tprivate inputSource: InputStream\n\tprivate inferenceRunner: InferenceRunner\n\tprivate functionCallRunner: FunctionCallRunner\n\n\tconstructor(inputSource: InputStream, inferenceRunner: InferenceRunner, functionCallRunner: FunctionCallRunner) {\n\t\tsuper()\n\t\tthis.inputSource = inputSource\n\t\tthis.inferenceRunner = inferenceRunner\n\t\tthis.functionCallRunner = functionCallRunner\n\t}\n\n\tonJoined(environment: AgenticEnvironment) {}\n\n\tonLeft(environment: AgenticEnvironment) {}\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\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\tawait environment.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.type === \"reasoning\") {\n\t\t\t\tawait environment.deliverReasoning(this, item)\n\t\t\t} else if (item.type === \"function_call\") {\n\t\t\t\tawait environment.deliverFunctionCall(this, item)\n\t\t\t} else if (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\tawait environment.deliverModelMessage(this, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tasync streamInput(environment: AgenticEnvironment): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.inputSource.stream()\n\t\tfor await (const message of stream) {\n\t\t\tawait environment.deliverMessage(this, message)\n\t\t}\n\t}\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { InputCapable } from \"@domain/agentic-environment/capabilities\"\nimport { InputStream } from \"@domain/agentic-environment/input-stream\"\nimport { Participant } from \"@domain/agentic-environment/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\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\"\n\nexport class BaseHumanParticipant extends Participant implements InputCapable {\n\tprivate inputSource: InputStream\n\n\tconstructor(inputSource: InputStream) {\n\t\tsuper()\n\t\tthis.inputSource = inputSource\n\t}\n\n\tonJoined(environment: AgenticEnvironment) {}\n\t\n\tonLeft(environment: AgenticEnvironment) {}\n\n\tonParticipantJoined(participant: Participant, environment: AgenticEnvironment) {}\n\n\tonParticipantLeft(participant: Participant, environment: AgenticEnvironment) {}\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\tasync streamInput(environment: AgenticEnvironment): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.inputSource.stream()\n\t\tfor await (const message of stream) {\n\t\t\tawait environment.deliverMessage(this, message)\n\t\t}\n\t}\n}\n","import { InferenceRunner } from \"@domain/agentic-environment/inference-runner\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { InferenceRequest } from \"@domain/generative-model/inference-request\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { OpenAIResponses } from \"@infra/providers/openai/runtime/openai-responses\"\n\ntype InferenceItem = ReasoningItem | FunctionCallItem | ModelMessageItem\n\nexport class OpenAIInferenceRunner implements InferenceRunner {\n\tprivate readonly runtime = new OpenAIResponses()\n\n\tasync *run(context: ModelContext, model: GenerativeModel, signal?: AbortSignal): AsyncIterable<InferenceItem> {\n\t\tconst response = await this.runtime.infer(new InferenceRequest(model, context))\n\t\tfor (const item of response.contextItems) {\n\t\t\tyield item as InferenceItem\n\t\t}\n\t}\n}\n","import { FunctionCallRunner } from \"@domain/agentic-environment/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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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"],"mappings":"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","names":["OpenAI","subscriber"]}
|
package/dist/index.mjs
CHANGED
|
@@ -549,9 +549,23 @@ var AgenticEnvironment = class {
|
|
|
549
549
|
}
|
|
550
550
|
subscribe(subscriber) {
|
|
551
551
|
this.subscribers.push(subscriber);
|
|
552
|
+
for (const subscriber2 of this.subscribers) {
|
|
553
|
+
if (subscriber2 === subscriber2) {
|
|
554
|
+
subscriber2.onJoined(this);
|
|
555
|
+
} else {
|
|
556
|
+
subscriber2.onParticipantJoined(subscriber2, this);
|
|
557
|
+
}
|
|
558
|
+
}
|
|
552
559
|
}
|
|
553
|
-
unsubscribe(
|
|
554
|
-
this.subscribers = this.subscribers.filter((p) => p !==
|
|
560
|
+
unsubscribe(subscriber) {
|
|
561
|
+
this.subscribers = this.subscribers.filter((p) => p !== subscriber);
|
|
562
|
+
for (const subscriber2 of this.subscribers) {
|
|
563
|
+
if (subscriber2 === subscriber2) {
|
|
564
|
+
subscriber2.onLeft(this);
|
|
565
|
+
} else {
|
|
566
|
+
subscriber2.onParticipantLeft(subscriber2, this);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
555
569
|
}
|
|
556
570
|
deliverFunctionCall(source, item) {
|
|
557
571
|
for (const subscriber of this.subscribers) {
|
|
@@ -595,10 +609,11 @@ var AgenticEnvironment = class {
|
|
|
595
609
|
subscriber.onMessage(message);
|
|
596
610
|
}
|
|
597
611
|
}
|
|
598
|
-
|
|
612
|
+
start() {
|
|
599
613
|
this.isActive = true;
|
|
600
614
|
while (this.isActive) {
|
|
601
|
-
|
|
615
|
+
setTimeout(() => {
|
|
616
|
+
}, 100);
|
|
602
617
|
}
|
|
603
618
|
}
|
|
604
619
|
stop() {
|
|
@@ -614,6 +629,14 @@ var BaseAgentParticipant = class extends Participant {
|
|
|
614
629
|
this.inferenceRunner = inferenceRunner;
|
|
615
630
|
this.functionCallRunner = functionCallRunner;
|
|
616
631
|
}
|
|
632
|
+
onJoined(environment) {
|
|
633
|
+
}
|
|
634
|
+
onLeft(environment) {
|
|
635
|
+
}
|
|
636
|
+
onParticipantJoined(participant) {
|
|
637
|
+
}
|
|
638
|
+
onParticipantLeft(participant) {
|
|
639
|
+
}
|
|
617
640
|
onFunctionCall(item) {
|
|
618
641
|
}
|
|
619
642
|
onExternalFunctionCall(source, item) {
|
|
@@ -667,6 +690,14 @@ var BaseHumanParticipant = class extends Participant {
|
|
|
667
690
|
super();
|
|
668
691
|
this.inputSource = inputSource;
|
|
669
692
|
}
|
|
693
|
+
onJoined(environment) {
|
|
694
|
+
}
|
|
695
|
+
onLeft(environment) {
|
|
696
|
+
}
|
|
697
|
+
onParticipantJoined(participant, environment) {
|
|
698
|
+
}
|
|
699
|
+
onParticipantLeft(participant, environment) {
|
|
700
|
+
}
|
|
670
701
|
onMessage(message) {
|
|
671
702
|
}
|
|
672
703
|
onFunctionCall(item) {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/domain/model-context/model-context.ts","../src/domain/model-context/context-item/context-item.ts","../src/domain/model-context/context-item/item-content/item-content.ts","../src/domain/model-context/context-item/item-content/input-text.ts","../src/domain/model-context/context-item/client-item/user-message.ts","../src/domain/model-context/context-item/client-item/developer-message.ts","../src/domain/model-context/context-item/item-content/output-text.ts","../src/domain/model-context/context-item/model-item/model-message.ts","../src/domain/model-context/context-item/model-item/function-call.ts","../src/domain/model-context/context-item/model-item/reasoning.ts","../src/domain/model-context/context-item/client-item/function-call-output.ts","../src/domain/generative-model/inference-response.ts","../src/domain/generative-model/token-usage.ts","../src/infrastructure/providers/openai/runtime/openai-responses.ts","../src/domain/generative-model/inference-request.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/infrastructure/repository/in-memory-model-context-repository.ts","../src/domain/model-context/context-item/client-item/system-message.ts","../src/domain/agentic-environment/participant.ts","../src/domain/agentic-environment/agentic-environment.ts","../src/application/agent.ts","../src/application/human.ts","../src/application/openai-inference-runner.ts","../src/application/function-call-runner.ts","../src/infrastructure/providers/openai/models/gpt-5-5.ts"],"sourcesContent":["import { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class ModelContext {\n\treadonly id: string\n\treadonly projectId: string\n\treadonly items: ContextItem[]\n\n\tconstructor(id: string, projectId: string, items: ContextItem[]) {\n\t\tthis.projectId = projectId\n\t\tthis.id = id\n\t\tthis.items = items\n\t}\n\n\taddContextItem(item: ContextItem): ModelContext {\n\t\tthis.items.push(item)\n\t\treturn this\n\t}\n\n\tapplyModelOutput(items: ContextItem[]): ModelContext {\n\t\tfor (const item of items) {\n\t\t\tconst itemType = item.getType()\n\t\t\tif (itemType !== \"function_call\" && itemType !== \"message\" && itemType !== \"reasoning\") {\n\t\t\t\tthrow new Error(`Invalid item type: ${itemType}`)\n\t\t\t}\n\t\t}\n\t\tthis.items.push(...items)\n\t\treturn this\n\t}\n\n\tgetItems(): ContextItem[] {\n\t\treturn this.items\n\t}\n\n\tgetLastItem(): ContextItem {\n\t\tif (this.items.length === 0) {\n\t\t\tthrow new Error(\"No items in context\")\n\t\t}\n\t\treturn this.items[this.items.length - 1]\n\t}\n\n\tstatic create(projectId: string): ModelContext {\n\t\tconst id = crypto.randomUUID()\n\t\treturn new ModelContext(id, projectId, [])\n\t}\n\n\tstatic rehydrate(data: { id: string; projectId: string; items: ContextItem[] }): ModelContext {\n\t\treturn new ModelContext(data.id, data.projectId, data.items)\n\t}\n\n\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 { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { TokenUsage } from \"@domain/generative-model/token-usage\"\n\nexport class InferenceResponse {\n\treadonly contextItems: ContextItem[]\n\treadonly tokenUsage?: TokenUsage\n\n\tconstructor(contextItems: ContextItem[], tokenUsage: TokenUsage | undefined) {\n\t\tthis.contextItems = contextItems\n\t\tthis.tokenUsage = tokenUsage\n\t}\n}\n","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 { 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 { InferenceRequest } from \"@domain/generative-model/inference-request\"\nimport { InferenceResponse } from \"@domain/generative-model/inference-response\"\nimport { ModelRuntime } from \"@domain/generative-model/runtime/model-runtime\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport OpenAI from \"openai\"\n\nexport class OpenAIResponses implements ModelRuntime {\n\tprivate readonly client: OpenAI\n\tconstructor() {\n\t\tthis.client = new OpenAI()\n\t}\n\n\tasync infer(inferenceRequest: InferenceRequest): Promise<InferenceResponse> {\n\t\tconst input = this.mapContextToRequest(inferenceRequest.context)\n\n\t\tconst specification = inferenceRequest.model.specification\n\n\t\tlet request: any = {\n\t\t\tmodel: specification.name,\n\t\t\tinput: input,\n\t\t}\n\n\t\tif (specification.supportFunctionCalling && inferenceRequest.model.getTools().length > 0) {\n\t\t\trequest.tools = inferenceRequest.model.getTools().map((tool) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: tool.type,\n\t\t\t\t\tname: tool.name,\n\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\tparameters: tool.parameters,\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (specification.supportReasoningEffort) {\n\t\t\trequest.reasoning = {\n\t\t\t\teffort: inferenceRequest.model.getReasoningEffort(),\n\t\t\t}\n\t\t}\n\n\t\tconst response = await this.client.responses.create(request)\n\n\t\tconst contextItems = this.extractContextItems(response)\n\t\tconst tokenUsage = this.extractTokenUsage(response)\n\t\treturn new InferenceResponse(contextItems, tokenUsage)\n\t}\n\n\textractTokenUsage(response: OpenAI.Responses.Response): TokenUsage | undefined {\n\t\tif (!response.usage) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn new TokenUsage(\n\t\t\tresponse.usage.input_tokens,\n\t\t\tresponse.usage.output_tokens,\n\t\t\tresponse.usage.total_tokens,\n\t\t\tnew InputTokenDetails(response.usage.input_tokens_details.cached_tokens),\n\t\t\tnew OutputTokenDetails(response.usage.output_tokens_details.reasoning_tokens),\n\t\t)\n\t}\n\n\tmapContextToRequest(context: ModelContext): any[] {\n\t\treturn context.getItems().map((item) => item.toJSON())\n\t}\n\n\textractContextItems(response: any): ContextItem[] {\n\t\treturn response.output.map((item: any) => {\n\t\t\tif (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\treturn ModelMessageItem.rehydrate(item.content[0] as { text: string })\n\t\t\t}\n\t\t\tif (item.type === \"function_call\") {\n\t\t\t\treturn FunctionCallItem.rehydrate({\n\t\t\t\t\tcallId: item.call_id,\n\t\t\t\t\tname: item.name,\n\t\t\t\t\targs: item.arguments,\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\treturn ReasoningItem.rehydrate(item)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\n\nexport class InferenceRequest {\n\treadonly model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability\n\treadonly context: ModelContext\n\n\tconstructor(model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability, context: ModelContext) {\n\t\tthis.model = model\n\t\tthis.context = context\n\t}\n}\n","import { 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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\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\"\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\t// abstract onParticipantJoined(participant: Participant): Promise<void>\n\n\t// abstract onParticipantLeft(participant: Participant): Promise<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","import { Participant } from \"@domain/agentic-environment/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\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}\n\n\tunsubscribe(user: Participant) {\n\t\tthis.subscribers = this.subscribers.filter((p) => p !== user)\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\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 { FunctionCallCapable, InferenceCapable, InputCapable } from \"@domain/agentic-environment/capabilities\"\nimport { Participant } from \"@domain/agentic-environment/participant\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { ContextItem } from \"@domain/model-context/context-item/context-item\"\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/inference-runner\"\nimport { FunctionCallRunner } from \"@domain/agentic-environment/function-call-runner\"\nimport { InputStream } from \"@domain/agentic-environment/input-stream\"\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\"\n\nexport class BaseAgentParticipant extends Participant implements InputCapable, InferenceCapable, FunctionCallCapable {\n\tprivate inputSource: InputStream\n\tprivate inferenceRunner: InferenceRunner\n\tprivate functionCallRunner: FunctionCallRunner\n\n\tconstructor(inputSource: InputStream, inferenceRunner: InferenceRunner, functionCallRunner: FunctionCallRunner) {\n\t\tsuper()\n\t\tthis.inputSource = inputSource\n\t\tthis.inferenceRunner = inferenceRunner\n\t\tthis.functionCallRunner = functionCallRunner\n\t}\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\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\tawait environment.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.type === \"reasoning\") {\n\t\t\t\tawait environment.deliverReasoning(this, item)\n\t\t\t} else if (item.type === \"function_call\") {\n\t\t\t\tawait environment.deliverFunctionCall(this, item)\n\t\t\t} else if (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\tawait environment.deliverModelMessage(this, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tasync streamInput(environment: AgenticEnvironment): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.inputSource.stream()\n\t\tfor await (const message of stream) {\n\t\t\tawait environment.deliverMessage(this, message)\n\t\t}\n\t}\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { InputCapable } from \"@domain/agentic-environment/capabilities\"\nimport { InputStream } from \"@domain/agentic-environment/input-stream\"\nimport { Participant } from \"@domain/agentic-environment/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\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\"\n\nexport class BaseHumanParticipant extends Participant implements InputCapable {\n\tprivate inputSource: InputStream\n\n\tconstructor(inputSource: InputStream) {\n\t\tsuper()\n\t\tthis.inputSource = inputSource\n\t}\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\tasync streamInput(environment: AgenticEnvironment): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.inputSource.stream()\n\t\tfor await (const message of stream) {\n\t\t\tawait environment.deliverMessage(this, message)\n\t\t}\n\t}\n}\n","import { InferenceRunner } from \"@domain/agentic-environment/inference-runner\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { InferenceRequest } from \"@domain/generative-model/inference-request\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { OpenAIResponses } from \"@infra/providers/openai/runtime/openai-responses\"\n\ntype InferenceItem = ReasoningItem | FunctionCallItem | ModelMessageItem\n\nexport class OpenAIInferenceRunner implements InferenceRunner {\n\tprivate readonly runtime = new OpenAIResponses()\n\n\tasync *run(context: ModelContext, model: GenerativeModel, signal?: AbortSignal): AsyncIterable<InferenceItem> {\n\t\tconst response = await this.runtime.infer(new InferenceRequest(model, context))\n\t\tfor (const item of response.contextItems) {\n\t\t\tyield item as InferenceItem\n\t\t}\n\t}\n}\n","import { FunctionCallRunner } from \"@domain/agentic-environment/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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/domain/model-context/model-context.ts","../src/domain/model-context/context-item/context-item.ts","../src/domain/model-context/context-item/item-content/item-content.ts","../src/domain/model-context/context-item/item-content/input-text.ts","../src/domain/model-context/context-item/client-item/user-message.ts","../src/domain/model-context/context-item/client-item/developer-message.ts","../src/domain/model-context/context-item/item-content/output-text.ts","../src/domain/model-context/context-item/model-item/model-message.ts","../src/domain/model-context/context-item/model-item/function-call.ts","../src/domain/model-context/context-item/model-item/reasoning.ts","../src/domain/model-context/context-item/client-item/function-call-output.ts","../src/domain/generative-model/inference-response.ts","../src/domain/generative-model/token-usage.ts","../src/infrastructure/providers/openai/runtime/openai-responses.ts","../src/domain/generative-model/inference-request.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/infrastructure/repository/in-memory-model-context-repository.ts","../src/domain/model-context/context-item/client-item/system-message.ts","../src/domain/agentic-environment/participant.ts","../src/domain/agentic-environment/agentic-environment.ts","../src/application/agent.ts","../src/application/human.ts","../src/application/openai-inference-runner.ts","../src/application/function-call-runner.ts","../src/infrastructure/providers/openai/models/gpt-5-5.ts"],"sourcesContent":["import { ContextItem } from \"@domain/model-context/context-item/context-item\"\n\nexport class ModelContext {\n\treadonly id: string\n\treadonly projectId: string\n\treadonly items: ContextItem[]\n\n\tconstructor(id: string, projectId: string, items: ContextItem[]) {\n\t\tthis.projectId = projectId\n\t\tthis.id = id\n\t\tthis.items = items\n\t}\n\n\taddContextItem(item: ContextItem): ModelContext {\n\t\tthis.items.push(item)\n\t\treturn this\n\t}\n\n\tapplyModelOutput(items: ContextItem[]): ModelContext {\n\t\tfor (const item of items) {\n\t\t\tconst itemType = item.getType()\n\t\t\tif (itemType !== \"function_call\" && itemType !== \"message\" && itemType !== \"reasoning\") {\n\t\t\t\tthrow new Error(`Invalid item type: ${itemType}`)\n\t\t\t}\n\t\t}\n\t\tthis.items.push(...items)\n\t\treturn this\n\t}\n\n\tgetItems(): ContextItem[] {\n\t\treturn this.items\n\t}\n\n\tgetLastItem(): ContextItem {\n\t\tif (this.items.length === 0) {\n\t\t\tthrow new Error(\"No items in context\")\n\t\t}\n\t\treturn this.items[this.items.length - 1]\n\t}\n\n\tstatic create(projectId: string): ModelContext {\n\t\tconst id = crypto.randomUUID()\n\t\treturn new ModelContext(id, projectId, [])\n\t}\n\n\tstatic rehydrate(data: { id: string; projectId: string; items: ContextItem[] }): ModelContext {\n\t\treturn new ModelContext(data.id, data.projectId, data.items)\n\t}\n\n\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 { ContextItem } from \"@domain/model-context/context-item/context-item\"\nimport { TokenUsage } from \"@domain/generative-model/token-usage\"\n\nexport class InferenceResponse {\n\treadonly contextItems: ContextItem[]\n\treadonly tokenUsage?: TokenUsage\n\n\tconstructor(contextItems: ContextItem[], tokenUsage: TokenUsage | undefined) {\n\t\tthis.contextItems = contextItems\n\t\tthis.tokenUsage = tokenUsage\n\t}\n}\n","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 { 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 { InferenceRequest } from \"@domain/generative-model/inference-request\"\nimport { InferenceResponse } from \"@domain/generative-model/inference-response\"\nimport { ModelRuntime } from \"@domain/generative-model/runtime/model-runtime\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@domain/generative-model/token-usage\"\nimport OpenAI from \"openai\"\n\nexport class OpenAIResponses implements ModelRuntime {\n\tprivate readonly client: OpenAI\n\tconstructor() {\n\t\tthis.client = new OpenAI()\n\t}\n\n\tasync infer(inferenceRequest: InferenceRequest): Promise<InferenceResponse> {\n\t\tconst input = this.mapContextToRequest(inferenceRequest.context)\n\n\t\tconst specification = inferenceRequest.model.specification\n\n\t\tlet request: any = {\n\t\t\tmodel: specification.name,\n\t\t\tinput: input,\n\t\t}\n\n\t\tif (specification.supportFunctionCalling && inferenceRequest.model.getTools().length > 0) {\n\t\t\trequest.tools = inferenceRequest.model.getTools().map((tool) => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: tool.type,\n\t\t\t\t\tname: tool.name,\n\t\t\t\t\tdescription: tool.description,\n\t\t\t\t\tparameters: tool.parameters,\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tif (specification.supportReasoningEffort) {\n\t\t\trequest.reasoning = {\n\t\t\t\teffort: inferenceRequest.model.getReasoningEffort(),\n\t\t\t}\n\t\t}\n\n\t\tconst response = await this.client.responses.create(request)\n\n\t\tconst contextItems = this.extractContextItems(response)\n\t\tconst tokenUsage = this.extractTokenUsage(response)\n\t\treturn new InferenceResponse(contextItems, tokenUsage)\n\t}\n\n\textractTokenUsage(response: OpenAI.Responses.Response): TokenUsage | undefined {\n\t\tif (!response.usage) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn new TokenUsage(\n\t\t\tresponse.usage.input_tokens,\n\t\t\tresponse.usage.output_tokens,\n\t\t\tresponse.usage.total_tokens,\n\t\t\tnew InputTokenDetails(response.usage.input_tokens_details.cached_tokens),\n\t\t\tnew OutputTokenDetails(response.usage.output_tokens_details.reasoning_tokens),\n\t\t)\n\t}\n\n\tmapContextToRequest(context: ModelContext): any[] {\n\t\treturn context.getItems().map((item) => item.toJSON())\n\t}\n\n\textractContextItems(response: any): ContextItem[] {\n\t\treturn response.output.map((item: any) => {\n\t\t\tif (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\treturn ModelMessageItem.rehydrate(item.content[0] as { text: string })\n\t\t\t}\n\t\t\tif (item.type === \"function_call\") {\n\t\t\t\treturn FunctionCallItem.rehydrate({\n\t\t\t\t\tcallId: item.call_id,\n\t\t\t\t\tname: item.name,\n\t\t\t\t\targs: item.arguments,\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\treturn ReasoningItem.rehydrate(item)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { ModelContext } from \"@domain/model-context/model-context\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\n\nexport class InferenceRequest {\n\treadonly model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability\n\treadonly context: ModelContext\n\n\tconstructor(model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability, context: ModelContext) {\n\t\tthis.model = model\n\t\tthis.context = context\n\t}\n}\n","import { 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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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\tsetTools(tools: Tool[]): void {\n\t\tthis.tools = tools\n\t}\n\n\tgetTools(): Tool[] {\n\t\treturn this.tools\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\"\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, environment: AgenticEnvironment): Promise<void> | void\n\n\tabstract onParticipantLeft(participant: Participant, environment: AgenticEnvironment): Promise<void> | void\n\n\tabstract onJoined(environment: AgenticEnvironment): Promise<void> | void\n\n\tabstract onLeft(environment: AgenticEnvironment): 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","import { Participant } from \"@domain/agentic-environment/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\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(this)\n\t\t\t} else {\n\t\t\t\tsubscriber.onParticipantJoined(subscriber, this)\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(this)\n\t\t\t} else {\n\t\t\t\tsubscriber.onParticipantLeft(subscriber, this)\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\tstart() {\n\t\tthis.isActive = true\n\t\twhile (this.isActive) {\n\t\t\tsetTimeout(() => {}, 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 { FunctionCallCapable, InferenceCapable, InputCapable } from \"@domain/agentic-environment/capabilities\"\nimport { Participant } from \"@domain/agentic-environment/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/inference-runner\"\nimport { FunctionCallRunner } from \"@domain/agentic-environment/function-call-runner\"\nimport { InputStream } from \"@domain/agentic-environment/input-stream\"\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\"\n\nexport class BaseAgentParticipant extends Participant implements InputCapable, InferenceCapable, FunctionCallCapable {\n\tprivate inputSource: InputStream\n\tprivate inferenceRunner: InferenceRunner\n\tprivate functionCallRunner: FunctionCallRunner\n\n\tconstructor(inputSource: InputStream, inferenceRunner: InferenceRunner, functionCallRunner: FunctionCallRunner) {\n\t\tsuper()\n\t\tthis.inputSource = inputSource\n\t\tthis.inferenceRunner = inferenceRunner\n\t\tthis.functionCallRunner = functionCallRunner\n\t}\n\n\tonJoined(environment: AgenticEnvironment) {}\n\n\tonLeft(environment: AgenticEnvironment) {}\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\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\tawait environment.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.type === \"reasoning\") {\n\t\t\t\tawait environment.deliverReasoning(this, item)\n\t\t\t} else if (item.type === \"function_call\") {\n\t\t\t\tawait environment.deliverFunctionCall(this, item)\n\t\t\t} else if (item.type === \"message\" && item.role === \"assistant\") {\n\t\t\t\tawait environment.deliverModelMessage(this, item)\n\t\t\t}\n\t\t}\n\t}\n\n\tasync streamInput(environment: AgenticEnvironment): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.inputSource.stream()\n\t\tfor await (const message of stream) {\n\t\t\tawait environment.deliverMessage(this, message)\n\t\t}\n\t}\n}\n","import { AgenticEnvironment } from \"@domain/agentic-environment/agentic-environment\"\nimport { InputCapable } from \"@domain/agentic-environment/capabilities\"\nimport { InputStream } from \"@domain/agentic-environment/input-stream\"\nimport { Participant } from \"@domain/agentic-environment/participant\"\nimport { FunctionCallOutputItem } from \"@domain/model-context/context-item/client-item/function-call-output\"\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\"\n\nexport class BaseHumanParticipant extends Participant implements InputCapable {\n\tprivate inputSource: InputStream\n\n\tconstructor(inputSource: InputStream) {\n\t\tsuper()\n\t\tthis.inputSource = inputSource\n\t}\n\n\tonJoined(environment: AgenticEnvironment) {}\n\t\n\tonLeft(environment: AgenticEnvironment) {}\n\n\tonParticipantJoined(participant: Participant, environment: AgenticEnvironment) {}\n\n\tonParticipantLeft(participant: Participant, environment: AgenticEnvironment) {}\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\tasync streamInput(environment: AgenticEnvironment): Promise<void> {\n\t\tif (!this.isJoinedTo(environment)) return\n\n\t\tconst stream = this.inputSource.stream()\n\t\tfor await (const message of stream) {\n\t\t\tawait environment.deliverMessage(this, message)\n\t\t}\n\t}\n}\n","import { InferenceRunner } from \"@domain/agentic-environment/inference-runner\"\nimport { GenerativeModel } from \"@domain/generative-model/generative-model\"\nimport { InferenceRequest } from \"@domain/generative-model/inference-request\"\nimport { FunctionCallItem } from \"@domain/model-context/context-item/model-item/function-call\"\nimport { ModelMessageItem } from \"@domain/model-context/context-item/model-item/model-message\"\nimport { ReasoningItem } from \"@domain/model-context/context-item/model-item/reasoning\"\nimport { ModelContext } from \"@domain/model-context/model-context\"\nimport { OpenAIResponses } from \"@infra/providers/openai/runtime/openai-responses\"\n\ntype InferenceItem = ReasoningItem | FunctionCallItem | ModelMessageItem\n\nexport class OpenAIInferenceRunner implements InferenceRunner {\n\tprivate readonly runtime = new OpenAIResponses()\n\n\tasync *run(context: ModelContext, model: GenerativeModel, signal?: AbortSignal): AsyncIterable<InferenceItem> {\n\t\tconst response = await this.runtime.infer(new InferenceRequest(model, context))\n\t\tfor (const item of response.contextItems) {\n\t\t\tyield item as InferenceItem\n\t\t}\n\t}\n}\n","import { FunctionCallRunner } from \"@domain/agentic-environment/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 { ReasoningEffort } from \"@domain/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@domain/generative-model/capabilities/tool-calling\"\nimport { 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, ReasoningEffort<OpenAIReasoningEffortType>, ToolCallingCapability {\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\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"],"mappings":"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","names":["subscriber"]}
|