@mozaik-ai/core 2.10.0 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +28 -5
- package/dist/index.d.ts +28 -5
- package/dist/index.js +64 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +61 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -287,14 +287,37 @@ declare abstract class BaseCondition<T> implements Condition<T> {
|
|
|
287
287
|
interface Action<T> {
|
|
288
288
|
apply(candidate: T): T;
|
|
289
289
|
}
|
|
290
|
-
|
|
290
|
+
interface Rule<T> {
|
|
291
|
+
condition: Condition<T>;
|
|
292
|
+
action: Action<T>;
|
|
293
|
+
apply(candidate: T): T;
|
|
294
|
+
}
|
|
295
|
+
declare class If<T> implements Rule<T> {
|
|
296
|
+
condition: Condition<T>;
|
|
297
|
+
action: Action<T>;
|
|
298
|
+
constructor({ condition, action }: {
|
|
299
|
+
condition: Condition<T>;
|
|
300
|
+
action: Action<T>;
|
|
301
|
+
});
|
|
302
|
+
apply(candidate: T): T;
|
|
303
|
+
}
|
|
304
|
+
declare class Loop<T> {
|
|
291
305
|
private condition;
|
|
292
306
|
private action;
|
|
293
|
-
constructor({
|
|
294
|
-
|
|
295
|
-
|
|
307
|
+
constructor({ condition, action }: {
|
|
308
|
+
condition: Condition<T>;
|
|
309
|
+
action: Action<T>;
|
|
296
310
|
});
|
|
297
311
|
apply(candidate: T): T;
|
|
298
312
|
}
|
|
299
313
|
|
|
300
|
-
|
|
314
|
+
declare class InMemoryContextRepository implements ContextRepository {
|
|
315
|
+
private readonly store;
|
|
316
|
+
private readonly projectIndex;
|
|
317
|
+
save(context: Context): Promise<void>;
|
|
318
|
+
get(id: string): Promise<Context>;
|
|
319
|
+
getByProjectId(projectId: string): Promise<Context[]>;
|
|
320
|
+
private clone;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
export { type Action, BaseCondition, Context, ContextItem, type ContextRepository, DeveloperMessage, FunctionCall, FunctionCallOutput, type GenerativeModel, Gpt54, Gpt54Mini, Gpt54Nano, If, InMemoryContextRepository, InferenceRequest, InferenceResponse, InputTokenDetails, Loop, ModelMessage, OpenAIResponses, OutputTokenDetails, Reasoning, type Rule, TokenUsage, type Tool, UserMessage };
|
package/dist/index.d.ts
CHANGED
|
@@ -287,14 +287,37 @@ declare abstract class BaseCondition<T> implements Condition<T> {
|
|
|
287
287
|
interface Action<T> {
|
|
288
288
|
apply(candidate: T): T;
|
|
289
289
|
}
|
|
290
|
-
|
|
290
|
+
interface Rule<T> {
|
|
291
|
+
condition: Condition<T>;
|
|
292
|
+
action: Action<T>;
|
|
293
|
+
apply(candidate: T): T;
|
|
294
|
+
}
|
|
295
|
+
declare class If<T> implements Rule<T> {
|
|
296
|
+
condition: Condition<T>;
|
|
297
|
+
action: Action<T>;
|
|
298
|
+
constructor({ condition, action }: {
|
|
299
|
+
condition: Condition<T>;
|
|
300
|
+
action: Action<T>;
|
|
301
|
+
});
|
|
302
|
+
apply(candidate: T): T;
|
|
303
|
+
}
|
|
304
|
+
declare class Loop<T> {
|
|
291
305
|
private condition;
|
|
292
306
|
private action;
|
|
293
|
-
constructor({
|
|
294
|
-
|
|
295
|
-
|
|
307
|
+
constructor({ condition, action }: {
|
|
308
|
+
condition: Condition<T>;
|
|
309
|
+
action: Action<T>;
|
|
296
310
|
});
|
|
297
311
|
apply(candidate: T): T;
|
|
298
312
|
}
|
|
299
313
|
|
|
300
|
-
|
|
314
|
+
declare class InMemoryContextRepository implements ContextRepository {
|
|
315
|
+
private readonly store;
|
|
316
|
+
private readonly projectIndex;
|
|
317
|
+
save(context: Context): Promise<void>;
|
|
318
|
+
get(id: string): Promise<Context>;
|
|
319
|
+
getByProjectId(projectId: string): Promise<Context[]>;
|
|
320
|
+
private clone;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
export { type Action, BaseCondition, Context, ContextItem, type ContextRepository, DeveloperMessage, FunctionCall, FunctionCallOutput, type GenerativeModel, Gpt54, Gpt54Mini, Gpt54Nano, If, InMemoryContextRepository, InferenceRequest, InferenceResponse, InputTokenDetails, Loop, ModelMessage, OpenAIResponses, OutputTokenDetails, Reasoning, type Rule, TokenUsage, type Tool, UserMessage };
|
package/dist/index.js
CHANGED
|
@@ -39,14 +39,16 @@ __export(index_exports, {
|
|
|
39
39
|
Gpt54: () => Gpt54,
|
|
40
40
|
Gpt54Mini: () => Gpt54Mini,
|
|
41
41
|
Gpt54Nano: () => Gpt54Nano,
|
|
42
|
+
If: () => If,
|
|
43
|
+
InMemoryContextRepository: () => InMemoryContextRepository,
|
|
42
44
|
InferenceRequest: () => InferenceRequest,
|
|
43
45
|
InferenceResponse: () => InferenceResponse,
|
|
44
46
|
InputTokenDetails: () => InputTokenDetails,
|
|
47
|
+
Loop: () => Loop,
|
|
45
48
|
ModelMessage: () => ModelMessage,
|
|
46
49
|
OpenAIResponses: () => OpenAIResponses,
|
|
47
50
|
OutputTokenDetails: () => OutputTokenDetails,
|
|
48
51
|
Reasoning: () => Reasoning,
|
|
49
|
-
Rule: () => Rule,
|
|
50
52
|
TokenUsage: () => TokenUsage,
|
|
51
53
|
UserMessage: () => UserMessage
|
|
52
54
|
});
|
|
@@ -533,10 +535,10 @@ var OrCondition = class extends BaseCondition {
|
|
|
533
535
|
};
|
|
534
536
|
|
|
535
537
|
// src/core/context-engine/rule/rule.ts
|
|
536
|
-
var
|
|
537
|
-
constructor({
|
|
538
|
-
this.condition =
|
|
539
|
-
this.action =
|
|
538
|
+
var If = class {
|
|
539
|
+
constructor({ condition, action }) {
|
|
540
|
+
this.condition = condition;
|
|
541
|
+
this.action = action;
|
|
540
542
|
}
|
|
541
543
|
apply(candidate) {
|
|
542
544
|
if (this.condition.isSatisfiedBy(candidate)) {
|
|
@@ -545,6 +547,60 @@ var Rule = class {
|
|
|
545
547
|
return candidate;
|
|
546
548
|
}
|
|
547
549
|
};
|
|
550
|
+
var Loop = class {
|
|
551
|
+
constructor({ condition, action }) {
|
|
552
|
+
this.condition = condition;
|
|
553
|
+
this.action = action;
|
|
554
|
+
}
|
|
555
|
+
apply(candidate) {
|
|
556
|
+
while (this.condition.isSatisfiedBy(candidate)) {
|
|
557
|
+
candidate = this.action.apply(candidate);
|
|
558
|
+
}
|
|
559
|
+
return candidate;
|
|
560
|
+
}
|
|
561
|
+
};
|
|
562
|
+
|
|
563
|
+
// src/memory/in-memory-context-repository.ts
|
|
564
|
+
var InMemoryContextRepository = class {
|
|
565
|
+
constructor() {
|
|
566
|
+
this.store = /* @__PURE__ */ new Map();
|
|
567
|
+
this.projectIndex = /* @__PURE__ */ new Map();
|
|
568
|
+
}
|
|
569
|
+
async save(context) {
|
|
570
|
+
const existing = this.store.get(context.id);
|
|
571
|
+
if (existing && existing.projectId !== context.projectId) {
|
|
572
|
+
const prevSet = this.projectIndex.get(existing.projectId);
|
|
573
|
+
prevSet == null ? void 0 : prevSet.delete(existing.id);
|
|
574
|
+
if (prevSet && prevSet.size === 0) this.projectIndex.delete(existing.projectId);
|
|
575
|
+
}
|
|
576
|
+
this.store.set(context.id, this.clone(context));
|
|
577
|
+
let set = this.projectIndex.get(context.projectId);
|
|
578
|
+
if (!set) {
|
|
579
|
+
set = /* @__PURE__ */ new Set();
|
|
580
|
+
this.projectIndex.set(context.projectId, set);
|
|
581
|
+
}
|
|
582
|
+
set.add(context.id);
|
|
583
|
+
}
|
|
584
|
+
async get(id) {
|
|
585
|
+
const context = this.store.get(id);
|
|
586
|
+
if (!context) {
|
|
587
|
+
throw new Error(`Context not found: ${id}`);
|
|
588
|
+
}
|
|
589
|
+
return this.clone(context);
|
|
590
|
+
}
|
|
591
|
+
async getByProjectId(projectId) {
|
|
592
|
+
const ids = this.projectIndex.get(projectId);
|
|
593
|
+
if (!ids || ids.size === 0) return [];
|
|
594
|
+
return [...ids].map((id) => this.store.get(id)).filter((c) => Boolean(c)).map((c) => this.clone(c));
|
|
595
|
+
}
|
|
596
|
+
clone(context) {
|
|
597
|
+
return Context.rehydrate({
|
|
598
|
+
id: context.id,
|
|
599
|
+
projectId: context.projectId,
|
|
600
|
+
items: [...context.getItems()]
|
|
601
|
+
});
|
|
602
|
+
}
|
|
603
|
+
};
|
|
548
604
|
// Annotate the CommonJS export names for ESM import in node:
|
|
549
605
|
0 && (module.exports = {
|
|
550
606
|
BaseCondition,
|
|
@@ -556,14 +612,16 @@ var Rule = class {
|
|
|
556
612
|
Gpt54,
|
|
557
613
|
Gpt54Mini,
|
|
558
614
|
Gpt54Nano,
|
|
615
|
+
If,
|
|
616
|
+
InMemoryContextRepository,
|
|
559
617
|
InferenceRequest,
|
|
560
618
|
InferenceResponse,
|
|
561
619
|
InputTokenDetails,
|
|
620
|
+
Loop,
|
|
562
621
|
ModelMessage,
|
|
563
622
|
OpenAIResponses,
|
|
564
623
|
OutputTokenDetails,
|
|
565
624
|
Reasoning,
|
|
566
|
-
Rule,
|
|
567
625
|
TokenUsage,
|
|
568
626
|
UserMessage
|
|
569
627
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/core/context-runtime/context.ts","../src/core/context-runtime/context-item.ts","../src/core/context-runtime/content.ts","../src/core/context-runtime/content/input-text.ts","../src/core/context-runtime/input/user-message.ts","../src/core/context-runtime/input/developer-message.ts","../src/core/context-runtime/content/output-text.ts","../src/core/context-runtime/output/model-message.ts","../src/core/context-runtime/output/function-call.ts","../src/core/context-runtime/output/reasoning.ts","../src/core/context-runtime/input/function-call-output.ts","../src/core/generative-model/inference-response.ts","../src/core/generative-model/token-usage.ts","../src/providers/openai/runtime/openai-responses.ts","../src/core/generative-model/inference-request.ts","../src/providers/openai/reasoning-effort.ts","../src/providers/openai/models/gpt-5-4-nano.ts","../src/providers/openai/models/gpt-5-4.ts","../src/providers/openai/models/gpt-5-4-mini.ts","../src/core/context-engine/condition/condition.ts","../src/core/context-engine/rule/rule.ts"],"sourcesContent":["import { Context } from \"@core/context-runtime/context\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\nimport { UserMessage } from \"@core/context-runtime/input/user-message\"\nimport { DeveloperMessage } from \"@core/context-runtime/input/developer-message\"\nimport { ModelMessage } from \"@core/context-runtime/output/model-message\"\nimport { FunctionCall } from \"@core/context-runtime/output/function-call\"\nimport { Reasoning } from \"@core/context-runtime/output/reasoning\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { FunctionCallOutput } from \"@core/context-runtime/input/function-call-output\"\nimport { ContextRepository } from \"@core/context-runtime/context-repository\"\nimport { OpenAIResponses } from \"@openai/runtime/openai-responses\"\nimport { InferenceRequest } from \"@core/generative-model/inference-request\"\nimport { Gpt54Nano } from \"@openai/models/gpt-5-4-nano\"\nimport { Gpt54 } from \"@openai/models/gpt-5-4\"\nimport { Gpt54Mini } from \"@openai/models/gpt-5-4-mini\"\nimport { InferenceResponse } from \"@core/generative-model/inference-response\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@core/generative-model/token-usage\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { BaseCondition, Condition } from \"@core/context-engine/condition/condition\"\nimport { Action, Rule } from \"@core/context-engine/rule/rule\"\n\nexport {\n\tContext,\n\tContextItem,\n\tUserMessage,\n\tDeveloperMessage,\n\tModelMessage,\n\tFunctionCall,\n\tFunctionCallOutput,\n\tReasoning,\n\tGenerativeModel,\n\tContextRepository,\n\tOpenAIResponses,\n\tGpt54,\n\tGpt54Mini,\n\tGpt54Nano,\n\tInferenceRequest,\n\tInferenceResponse,\n\tTokenUsage,\n\tInputTokenDetails,\n\tOutputTokenDetails,\n\tTool,\n\tBaseCondition,\n\tAction,\n\tRule,\n}\n","import { ContextItem } from \"@core/context-runtime/context-item\"\n\nexport class Context {\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\taddItem(item: ContextItem): Context {\n\t\tthis.items.push(item)\n\t\treturn this\n\t}\n\n\tapplyModelOutput(items: ContextItem[]): Context {\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\tstatic create(projectId: string): Context {\n\t\tconst id = crypto.randomUUID()\n\t\treturn new Context(id, projectId, [])\n\t}\n\n\tstatic rehydrate(data: { id: string; projectId: string; items: ContextItem[] }): Context {\n\t\treturn new Context(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 Content {\n\tabstract readonly type: string\n}\n","import { Content } from \"@core/context-runtime/content\"\n\nexport class InputText extends Content {\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 \"@core/context-runtime/context-item\"\nimport { InputText } from \"@core/context-runtime/content/input-text\"\n\nexport class UserMessage 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): UserMessage {\n\t\tconst content = InputText.create(text)\n\t\treturn new UserMessage(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): UserMessage {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new UserMessage(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 \"@core/context-runtime/content/input-text\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\n\nexport class DeveloperMessage 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): DeveloperMessage {\n\t\tconst content = InputText.create(text)\n\t\treturn new DeveloperMessage(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): DeveloperMessage {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new DeveloperMessage(content)\n\t}\n}\n","import { Content } from \"@core/context-runtime/content\"\n\nexport class OutputText extends Content {\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 \"@core/context-runtime/context-item\"\nimport { OutputText } from \"@core/context-runtime/content/output-text\"\n\nexport class ModelMessage 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 }): ModelMessage {\n\t\tconst content = OutputText.rehydrate(data)\n\t\treturn new ModelMessage(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 \"@core/context-runtime/context-item\"\n\nexport class FunctionCall 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 }): FunctionCall {\n\t\treturn new FunctionCall(data.callId, data.name, data.args)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcallId: this.callId,\n\t\t\tname: this.name,\n\t\t\targuments: this.args,\n\t\t}\n\t}\n}\n","import { InputText } from \"@core/context-runtime/content/input-text\"\nimport { SummaryText } from \"@core/context-runtime/content/summary-text\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\n\nexport class Reasoning 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}): Reasoning {\n\t\treturn new Reasoning(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 \"@core/context-runtime/context-item\"\nimport { InputText } from \"@core/context-runtime/content/input-text\"\n\nexport class FunctionCallOutput 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: InputText[]): FunctionCallOutput {\n\t\treturn new FunctionCallOutput(callId, output)\n\t}\n\n\tstatic rehydrate(data: { callId: string; output: InputText[] }): FunctionCallOutput {\n\t\treturn new FunctionCallOutput(data.callId, data.output)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcallId: this.callId,\n\t\t\toutput: this.output.map((o) => o.toJSON()),\n\t\t}\n\t}\n}\n","import { ContextItem } from \"src\"\nimport { TokenUsage } from \"./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 { Context } from \"@core/context-runtime/context\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\nimport { FunctionCall } from \"@core/context-runtime/output/function-call\"\nimport { ModelMessage } from \"@core/context-runtime/output/model-message\"\nimport { Reasoning } from \"@core/context-runtime/output/reasoning\"\nimport { InferenceRequest } from \"@core/generative-model/inference-request\"\nimport { InferenceResponse } from \"@core/generative-model/inference-response\"\nimport { ModelRuntime } from \"@core/generative-model/runtime/model-runtime\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@core/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: Context): 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.status === \"completed\") {\n\t\t\t\treturn ModelMessage.rehydrate(item.content[0] as { text: string })\n\t\t\t}\n\t\t\tif (item.type === \"function_call\" && item.status === \"completed\") {\n\t\t\t\treturn FunctionCall.rehydrate(item)\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\treturn Reasoning.rehydrate(item)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { Context } from \"@core/context-runtime/context\"\nimport { GenerativeModel } from \"./generative-model\"\nimport { ReasoningEffort } from \"./capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"./capabilities/tool-calling\"\n\nexport class InferenceRequest {\n\treadonly model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability\n\treadonly context: Context\n\n\tconstructor(model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability, context: Context) {\n\t\tthis.model = model\n\t\tthis.context = context\n\t}\n}\n","import { ReasoningEffort } from \"@core/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 \"@core/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@core/generative-model/capabilities/tool-calling\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@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 \"@core/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@core/generative-model/capabilities/tool-calling\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@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\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { ReasoningEffort } from \"@core/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@core/generative-model/capabilities/tool-calling\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@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","export interface Condition<T> {\n\tisSatisfiedBy(candidate: T): boolean\n\tand(other: Condition<T>): Condition<T>\n\tor(other: Condition<T>): Condition<T>\n\tnot(): Condition<T>\n}\n\nexport abstract class BaseCondition<T> implements Condition<T> {\n\tabstract isSatisfiedBy(candidate: T): boolean\n\n\tand(other: Condition<T>): Condition<T> {\n\t\treturn new AndCondition(this, other)\n\t}\n\n\tor(other: Condition<T>): Condition<T> {\n\t\treturn new OrCondition(this, other)\n\t}\n\n\tnot(): Condition<T> {\n\t\treturn new NotCondition(this)\n\t}\n}\n\nexport class AndCondition<T> extends BaseCondition<T> {\n\tconstructor(\n\t\tprivate readonly left: Condition<T>,\n\t\tprivate readonly right: Condition<T>,\n\t) {\n\t\tsuper()\n\t}\n\n\tisSatisfiedBy(candidate: T): boolean {\n\t\treturn this.left.isSatisfiedBy(candidate) && this.right.isSatisfiedBy(candidate)\n\t}\n}\n\nexport class NotCondition<T> extends BaseCondition<T> {\n\tconstructor(private readonly condition: Condition<T>) {\n\t\tsuper()\n\t}\n\n\tisSatisfiedBy(candidate: T): boolean {\n\t\treturn !this.condition.isSatisfiedBy(candidate)\n\t}\n}\n\nexport class OrCondition<T> extends BaseCondition<T> {\n\tconstructor(\n\t\tprivate readonly left: Condition<T>,\n\t\tprivate readonly right: Condition<T>,\n\t) {\n\t\tsuper()\n\t}\n\n\tisSatisfiedBy(candidate: T): boolean {\n\t\treturn this.left.isSatisfiedBy(candidate) || this.right.isSatisfiedBy(candidate)\n\t}\n}\n","import { Condition } from \"@core/context-engine/condition/condition\"\n\nexport interface Action<T> {\n\tapply(candidate: T): T\n}\n\nexport class Rule<T> {\n\tprivate condition: Condition<T>\n\tprivate action: Action<T>\n\n\tconstructor({ when, then }: { when: Condition<T>; then: Action<T> }) {\n\t\tthis.condition = when\t\n\t\tthis.action = then\n\t}\n\n\tapply(candidate: T): T {\n\t\tif (this.condition.isSatisfiedBy(candidate)) {\n\t\t\treturn this.action.apply(candidate)\n\t\t}\n\t\treturn candidate\n\t}\n}\n"],"mappings":"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","names":["OpenAI"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/core/context-runtime/context.ts","../src/core/context-runtime/context-item.ts","../src/core/context-runtime/content.ts","../src/core/context-runtime/content/input-text.ts","../src/core/context-runtime/input/user-message.ts","../src/core/context-runtime/input/developer-message.ts","../src/core/context-runtime/content/output-text.ts","../src/core/context-runtime/output/model-message.ts","../src/core/context-runtime/output/function-call.ts","../src/core/context-runtime/output/reasoning.ts","../src/core/context-runtime/input/function-call-output.ts","../src/core/generative-model/inference-response.ts","../src/core/generative-model/token-usage.ts","../src/providers/openai/runtime/openai-responses.ts","../src/core/generative-model/inference-request.ts","../src/providers/openai/reasoning-effort.ts","../src/providers/openai/models/gpt-5-4-nano.ts","../src/providers/openai/models/gpt-5-4.ts","../src/providers/openai/models/gpt-5-4-mini.ts","../src/core/context-engine/condition/condition.ts","../src/core/context-engine/rule/rule.ts","../src/memory/in-memory-context-repository.ts"],"sourcesContent":["import { Context } from \"@core/context-runtime/context\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\nimport { UserMessage } from \"@core/context-runtime/input/user-message\"\nimport { DeveloperMessage } from \"@core/context-runtime/input/developer-message\"\nimport { ModelMessage } from \"@core/context-runtime/output/model-message\"\nimport { FunctionCall } from \"@core/context-runtime/output/function-call\"\nimport { Reasoning } from \"@core/context-runtime/output/reasoning\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { FunctionCallOutput } from \"@core/context-runtime/input/function-call-output\"\nimport { ContextRepository } from \"@core/context-runtime/context-repository\"\nimport { OpenAIResponses } from \"@openai/runtime/openai-responses\"\nimport { InferenceRequest } from \"@core/generative-model/inference-request\"\nimport { Gpt54Nano } from \"@openai/models/gpt-5-4-nano\"\nimport { Gpt54 } from \"@openai/models/gpt-5-4\"\nimport { Gpt54Mini } from \"@openai/models/gpt-5-4-mini\"\nimport { InferenceResponse } from \"@core/generative-model/inference-response\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@core/generative-model/token-usage\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { BaseCondition } from \"@core/context-engine/condition/condition\"\nimport { Action, Rule, If, Loop } from \"@core/context-engine/rule/rule\"\nimport { InMemoryContextRepository } from \"./memory/in-memory-context-repository\"\n\nexport {\n\tContext,\n\tContextItem,\n\tUserMessage,\n\tDeveloperMessage,\n\tModelMessage,\n\tFunctionCall,\n\tFunctionCallOutput,\n\tReasoning,\n\tGenerativeModel,\n\tContextRepository,\n\tInMemoryContextRepository,\n\tOpenAIResponses,\n\tGpt54,\n\tGpt54Mini,\n\tGpt54Nano,\n\tInferenceRequest,\n\tInferenceResponse,\n\tTokenUsage,\n\tInputTokenDetails,\n\tOutputTokenDetails,\n\tTool,\n\tBaseCondition,\n\tAction,\n\tRule,\n\tIf,\n\tLoop,\n}\n","import { ContextItem } from \"@core/context-runtime/context-item\"\n\nexport class Context {\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\taddItem(item: ContextItem): Context {\n\t\tthis.items.push(item)\n\t\treturn this\n\t}\n\n\tapplyModelOutput(items: ContextItem[]): Context {\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\tstatic create(projectId: string): Context {\n\t\tconst id = crypto.randomUUID()\n\t\treturn new Context(id, projectId, [])\n\t}\n\n\tstatic rehydrate(data: { id: string; projectId: string; items: ContextItem[] }): Context {\n\t\treturn new Context(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 Content {\n\tabstract readonly type: string\n}\n","import { Content } from \"@core/context-runtime/content\"\n\nexport class InputText extends Content {\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 \"@core/context-runtime/context-item\"\nimport { InputText } from \"@core/context-runtime/content/input-text\"\n\nexport class UserMessage 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): UserMessage {\n\t\tconst content = InputText.create(text)\n\t\treturn new UserMessage(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): UserMessage {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new UserMessage(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 \"@core/context-runtime/content/input-text\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\n\nexport class DeveloperMessage 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): DeveloperMessage {\n\t\tconst content = InputText.create(text)\n\t\treturn new DeveloperMessage(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): DeveloperMessage {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new DeveloperMessage(content)\n\t}\n}\n","import { Content } from \"@core/context-runtime/content\"\n\nexport class OutputText extends Content {\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 \"@core/context-runtime/context-item\"\nimport { OutputText } from \"@core/context-runtime/content/output-text\"\n\nexport class ModelMessage 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 }): ModelMessage {\n\t\tconst content = OutputText.rehydrate(data)\n\t\treturn new ModelMessage(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 \"@core/context-runtime/context-item\"\n\nexport class FunctionCall 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 }): FunctionCall {\n\t\treturn new FunctionCall(data.callId, data.name, data.args)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcallId: this.callId,\n\t\t\tname: this.name,\n\t\t\targuments: this.args,\n\t\t}\n\t}\n}\n","import { InputText } from \"@core/context-runtime/content/input-text\"\nimport { SummaryText } from \"@core/context-runtime/content/summary-text\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\n\nexport class Reasoning 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}): Reasoning {\n\t\treturn new Reasoning(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 \"@core/context-runtime/context-item\"\nimport { InputText } from \"@core/context-runtime/content/input-text\"\n\nexport class FunctionCallOutput 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: InputText[]): FunctionCallOutput {\n\t\treturn new FunctionCallOutput(callId, output)\n\t}\n\n\tstatic rehydrate(data: { callId: string; output: InputText[] }): FunctionCallOutput {\n\t\treturn new FunctionCallOutput(data.callId, data.output)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcallId: this.callId,\n\t\t\toutput: this.output.map((o) => o.toJSON()),\n\t\t}\n\t}\n}\n","import { ContextItem } from \"src\"\nimport { TokenUsage } from \"./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 { Context } from \"@core/context-runtime/context\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\nimport { FunctionCall } from \"@core/context-runtime/output/function-call\"\nimport { ModelMessage } from \"@core/context-runtime/output/model-message\"\nimport { Reasoning } from \"@core/context-runtime/output/reasoning\"\nimport { InferenceRequest } from \"@core/generative-model/inference-request\"\nimport { InferenceResponse } from \"@core/generative-model/inference-response\"\nimport { ModelRuntime } from \"@core/generative-model/runtime/model-runtime\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@core/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: Context): 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.status === \"completed\") {\n\t\t\t\treturn ModelMessage.rehydrate(item.content[0] as { text: string })\n\t\t\t}\n\t\t\tif (item.type === \"function_call\" && item.status === \"completed\") {\n\t\t\t\treturn FunctionCall.rehydrate(item)\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\treturn Reasoning.rehydrate(item)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { Context } from \"@core/context-runtime/context\"\nimport { GenerativeModel } from \"./generative-model\"\nimport { ReasoningEffort } from \"./capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"./capabilities/tool-calling\"\n\nexport class InferenceRequest {\n\treadonly model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability\n\treadonly context: Context\n\n\tconstructor(model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability, context: Context) {\n\t\tthis.model = model\n\t\tthis.context = context\n\t}\n}\n","import { ReasoningEffort } from \"@core/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 \"@core/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@core/generative-model/capabilities/tool-calling\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@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 \"@core/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@core/generative-model/capabilities/tool-calling\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@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\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { ReasoningEffort } from \"@core/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@core/generative-model/capabilities/tool-calling\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@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","export interface Condition<T> {\n\tisSatisfiedBy(candidate: T): boolean\n\tand(other: Condition<T>): Condition<T>\n\tor(other: Condition<T>): Condition<T>\n\tnot(): Condition<T>\n}\n\nexport abstract class BaseCondition<T> implements Condition<T> {\n\tabstract isSatisfiedBy(candidate: T): boolean\n\n\tand(other: Condition<T>): Condition<T> {\n\t\treturn new AndCondition(this, other)\n\t}\n\n\tor(other: Condition<T>): Condition<T> {\n\t\treturn new OrCondition(this, other)\n\t}\n\n\tnot(): Condition<T> {\n\t\treturn new NotCondition(this)\n\t}\n}\n\nexport class AndCondition<T> extends BaseCondition<T> {\n\tconstructor(\n\t\tprivate readonly left: Condition<T>,\n\t\tprivate readonly right: Condition<T>,\n\t) {\n\t\tsuper()\n\t}\n\n\tisSatisfiedBy(candidate: T): boolean {\n\t\treturn this.left.isSatisfiedBy(candidate) && this.right.isSatisfiedBy(candidate)\n\t}\n}\n\nexport class NotCondition<T> extends BaseCondition<T> {\n\tconstructor(private readonly condition: Condition<T>) {\n\t\tsuper()\n\t}\n\n\tisSatisfiedBy(candidate: T): boolean {\n\t\treturn !this.condition.isSatisfiedBy(candidate)\n\t}\n}\n\nexport class OrCondition<T> extends BaseCondition<T> {\n\tconstructor(\n\t\tprivate readonly left: Condition<T>,\n\t\tprivate readonly right: Condition<T>,\n\t) {\n\t\tsuper()\n\t}\n\n\tisSatisfiedBy(candidate: T): boolean {\n\t\treturn this.left.isSatisfiedBy(candidate) || this.right.isSatisfiedBy(candidate)\n\t}\n}\n","import { Condition } from \"@core/context-engine/condition/condition\"\n\nexport interface Action<T> {\n\tapply(candidate: T): T\n}\n\nexport interface Rule<T> {\n\tcondition: Condition<T>\n\taction: Action<T>\n\tapply(candidate: T): T\n}\n\nexport class If<T> implements Rule<T> {\n\tcondition: Condition<T>\n\taction: Action<T>\n\n\tconstructor({ condition, action }: { condition: Condition<T>; action: Action<T> }) {\n\t\tthis.condition = condition\n\t\tthis.action = action\n\t}\n\n\tapply(candidate: T): T {\n\t\tif (this.condition.isSatisfiedBy(candidate)) {\n\t\t\treturn this.action.apply(candidate)\n\t\t}\n\t\treturn candidate\n\t}\n}\n\nexport class Loop<T> {\n\tprivate condition: Condition<T>\n\tprivate action: Action<T>\n\n\tconstructor({ condition, action }: { condition: Condition<T>; action: Action<T> }) {\n\t\tthis.condition = condition\n\t\tthis.action = action\n\t}\n\n\tapply(candidate: T): T {\n\t\twhile (this.condition.isSatisfiedBy(candidate)) {\n\t\t\tcandidate = this.action.apply(candidate)\n\t\t}\n\t\treturn candidate\n\t}\n}","import { Context } from \"@core/context-runtime/context\"\nimport { ContextRepository } from \"@core/context-runtime/context-repository\"\n\nexport class InMemoryContextRepository implements ContextRepository {\n\tprivate readonly store = new Map<string, Context>()\n\tprivate readonly projectIndex = new Map<string, Set<string>>()\n\n\tasync save(context: Context): 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<Context> {\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<Context[]> {\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 Context => Boolean(c))\n\t\t\t.map((c) => this.clone(c))\n\t}\n\n\tprivate clone(context: Context): Context {\n\t\treturn Context.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"],"mappings":"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","names":["OpenAI"]}
|
package/dist/index.mjs
CHANGED
|
@@ -479,10 +479,10 @@ var OrCondition = class extends BaseCondition {
|
|
|
479
479
|
};
|
|
480
480
|
|
|
481
481
|
// src/core/context-engine/rule/rule.ts
|
|
482
|
-
var
|
|
483
|
-
constructor({
|
|
484
|
-
this.condition =
|
|
485
|
-
this.action =
|
|
482
|
+
var If = class {
|
|
483
|
+
constructor({ condition, action }) {
|
|
484
|
+
this.condition = condition;
|
|
485
|
+
this.action = action;
|
|
486
486
|
}
|
|
487
487
|
apply(candidate) {
|
|
488
488
|
if (this.condition.isSatisfiedBy(candidate)) {
|
|
@@ -491,6 +491,60 @@ var Rule = class {
|
|
|
491
491
|
return candidate;
|
|
492
492
|
}
|
|
493
493
|
};
|
|
494
|
+
var Loop = class {
|
|
495
|
+
constructor({ condition, action }) {
|
|
496
|
+
this.condition = condition;
|
|
497
|
+
this.action = action;
|
|
498
|
+
}
|
|
499
|
+
apply(candidate) {
|
|
500
|
+
while (this.condition.isSatisfiedBy(candidate)) {
|
|
501
|
+
candidate = this.action.apply(candidate);
|
|
502
|
+
}
|
|
503
|
+
return candidate;
|
|
504
|
+
}
|
|
505
|
+
};
|
|
506
|
+
|
|
507
|
+
// src/memory/in-memory-context-repository.ts
|
|
508
|
+
var InMemoryContextRepository = class {
|
|
509
|
+
constructor() {
|
|
510
|
+
this.store = /* @__PURE__ */ new Map();
|
|
511
|
+
this.projectIndex = /* @__PURE__ */ new Map();
|
|
512
|
+
}
|
|
513
|
+
async save(context) {
|
|
514
|
+
const existing = this.store.get(context.id);
|
|
515
|
+
if (existing && existing.projectId !== context.projectId) {
|
|
516
|
+
const prevSet = this.projectIndex.get(existing.projectId);
|
|
517
|
+
prevSet == null ? void 0 : prevSet.delete(existing.id);
|
|
518
|
+
if (prevSet && prevSet.size === 0) this.projectIndex.delete(existing.projectId);
|
|
519
|
+
}
|
|
520
|
+
this.store.set(context.id, this.clone(context));
|
|
521
|
+
let set = this.projectIndex.get(context.projectId);
|
|
522
|
+
if (!set) {
|
|
523
|
+
set = /* @__PURE__ */ new Set();
|
|
524
|
+
this.projectIndex.set(context.projectId, set);
|
|
525
|
+
}
|
|
526
|
+
set.add(context.id);
|
|
527
|
+
}
|
|
528
|
+
async get(id) {
|
|
529
|
+
const context = this.store.get(id);
|
|
530
|
+
if (!context) {
|
|
531
|
+
throw new Error(`Context not found: ${id}`);
|
|
532
|
+
}
|
|
533
|
+
return this.clone(context);
|
|
534
|
+
}
|
|
535
|
+
async getByProjectId(projectId) {
|
|
536
|
+
const ids = this.projectIndex.get(projectId);
|
|
537
|
+
if (!ids || ids.size === 0) return [];
|
|
538
|
+
return [...ids].map((id) => this.store.get(id)).filter((c) => Boolean(c)).map((c) => this.clone(c));
|
|
539
|
+
}
|
|
540
|
+
clone(context) {
|
|
541
|
+
return Context.rehydrate({
|
|
542
|
+
id: context.id,
|
|
543
|
+
projectId: context.projectId,
|
|
544
|
+
items: [...context.getItems()]
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
};
|
|
494
548
|
export {
|
|
495
549
|
BaseCondition,
|
|
496
550
|
Context,
|
|
@@ -501,14 +555,16 @@ export {
|
|
|
501
555
|
Gpt54,
|
|
502
556
|
Gpt54Mini,
|
|
503
557
|
Gpt54Nano,
|
|
558
|
+
If,
|
|
559
|
+
InMemoryContextRepository,
|
|
504
560
|
InferenceRequest,
|
|
505
561
|
InferenceResponse,
|
|
506
562
|
InputTokenDetails,
|
|
563
|
+
Loop,
|
|
507
564
|
ModelMessage,
|
|
508
565
|
OpenAIResponses,
|
|
509
566
|
OutputTokenDetails,
|
|
510
567
|
Reasoning,
|
|
511
|
-
Rule,
|
|
512
568
|
TokenUsage,
|
|
513
569
|
UserMessage
|
|
514
570
|
};
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/context-runtime/context.ts","../src/core/context-runtime/context-item.ts","../src/core/context-runtime/content.ts","../src/core/context-runtime/content/input-text.ts","../src/core/context-runtime/input/user-message.ts","../src/core/context-runtime/input/developer-message.ts","../src/core/context-runtime/content/output-text.ts","../src/core/context-runtime/output/model-message.ts","../src/core/context-runtime/output/function-call.ts","../src/core/context-runtime/output/reasoning.ts","../src/core/context-runtime/input/function-call-output.ts","../src/core/generative-model/inference-response.ts","../src/core/generative-model/token-usage.ts","../src/providers/openai/runtime/openai-responses.ts","../src/core/generative-model/inference-request.ts","../src/providers/openai/reasoning-effort.ts","../src/providers/openai/models/gpt-5-4-nano.ts","../src/providers/openai/models/gpt-5-4.ts","../src/providers/openai/models/gpt-5-4-mini.ts","../src/core/context-engine/condition/condition.ts","../src/core/context-engine/rule/rule.ts"],"sourcesContent":["import { ContextItem } from \"@core/context-runtime/context-item\"\n\nexport class Context {\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\taddItem(item: ContextItem): Context {\n\t\tthis.items.push(item)\n\t\treturn this\n\t}\n\n\tapplyModelOutput(items: ContextItem[]): Context {\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\tstatic create(projectId: string): Context {\n\t\tconst id = crypto.randomUUID()\n\t\treturn new Context(id, projectId, [])\n\t}\n\n\tstatic rehydrate(data: { id: string; projectId: string; items: ContextItem[] }): Context {\n\t\treturn new Context(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 Content {\n\tabstract readonly type: string\n}\n","import { Content } from \"@core/context-runtime/content\"\n\nexport class InputText extends Content {\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 \"@core/context-runtime/context-item\"\nimport { InputText } from \"@core/context-runtime/content/input-text\"\n\nexport class UserMessage 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): UserMessage {\n\t\tconst content = InputText.create(text)\n\t\treturn new UserMessage(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): UserMessage {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new UserMessage(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 \"@core/context-runtime/content/input-text\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\n\nexport class DeveloperMessage 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): DeveloperMessage {\n\t\tconst content = InputText.create(text)\n\t\treturn new DeveloperMessage(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): DeveloperMessage {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new DeveloperMessage(content)\n\t}\n}\n","import { Content } from \"@core/context-runtime/content\"\n\nexport class OutputText extends Content {\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 \"@core/context-runtime/context-item\"\nimport { OutputText } from \"@core/context-runtime/content/output-text\"\n\nexport class ModelMessage 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 }): ModelMessage {\n\t\tconst content = OutputText.rehydrate(data)\n\t\treturn new ModelMessage(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 \"@core/context-runtime/context-item\"\n\nexport class FunctionCall 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 }): FunctionCall {\n\t\treturn new FunctionCall(data.callId, data.name, data.args)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcallId: this.callId,\n\t\t\tname: this.name,\n\t\t\targuments: this.args,\n\t\t}\n\t}\n}\n","import { InputText } from \"@core/context-runtime/content/input-text\"\nimport { SummaryText } from \"@core/context-runtime/content/summary-text\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\n\nexport class Reasoning 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}): Reasoning {\n\t\treturn new Reasoning(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 \"@core/context-runtime/context-item\"\nimport { InputText } from \"@core/context-runtime/content/input-text\"\n\nexport class FunctionCallOutput 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: InputText[]): FunctionCallOutput {\n\t\treturn new FunctionCallOutput(callId, output)\n\t}\n\n\tstatic rehydrate(data: { callId: string; output: InputText[] }): FunctionCallOutput {\n\t\treturn new FunctionCallOutput(data.callId, data.output)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcallId: this.callId,\n\t\t\toutput: this.output.map((o) => o.toJSON()),\n\t\t}\n\t}\n}\n","import { ContextItem } from \"src\"\nimport { TokenUsage } from \"./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 { Context } from \"@core/context-runtime/context\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\nimport { FunctionCall } from \"@core/context-runtime/output/function-call\"\nimport { ModelMessage } from \"@core/context-runtime/output/model-message\"\nimport { Reasoning } from \"@core/context-runtime/output/reasoning\"\nimport { InferenceRequest } from \"@core/generative-model/inference-request\"\nimport { InferenceResponse } from \"@core/generative-model/inference-response\"\nimport { ModelRuntime } from \"@core/generative-model/runtime/model-runtime\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@core/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: Context): 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.status === \"completed\") {\n\t\t\t\treturn ModelMessage.rehydrate(item.content[0] as { text: string })\n\t\t\t}\n\t\t\tif (item.type === \"function_call\" && item.status === \"completed\") {\n\t\t\t\treturn FunctionCall.rehydrate(item)\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\treturn Reasoning.rehydrate(item)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { Context } from \"@core/context-runtime/context\"\nimport { GenerativeModel } from \"./generative-model\"\nimport { ReasoningEffort } from \"./capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"./capabilities/tool-calling\"\n\nexport class InferenceRequest {\n\treadonly model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability\n\treadonly context: Context\n\n\tconstructor(model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability, context: Context) {\n\t\tthis.model = model\n\t\tthis.context = context\n\t}\n}\n","import { ReasoningEffort } from \"@core/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 \"@core/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@core/generative-model/capabilities/tool-calling\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@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 \"@core/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@core/generative-model/capabilities/tool-calling\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@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\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { ReasoningEffort } from \"@core/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@core/generative-model/capabilities/tool-calling\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@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","export interface Condition<T> {\n\tisSatisfiedBy(candidate: T): boolean\n\tand(other: Condition<T>): Condition<T>\n\tor(other: Condition<T>): Condition<T>\n\tnot(): Condition<T>\n}\n\nexport abstract class BaseCondition<T> implements Condition<T> {\n\tabstract isSatisfiedBy(candidate: T): boolean\n\n\tand(other: Condition<T>): Condition<T> {\n\t\treturn new AndCondition(this, other)\n\t}\n\n\tor(other: Condition<T>): Condition<T> {\n\t\treturn new OrCondition(this, other)\n\t}\n\n\tnot(): Condition<T> {\n\t\treturn new NotCondition(this)\n\t}\n}\n\nexport class AndCondition<T> extends BaseCondition<T> {\n\tconstructor(\n\t\tprivate readonly left: Condition<T>,\n\t\tprivate readonly right: Condition<T>,\n\t) {\n\t\tsuper()\n\t}\n\n\tisSatisfiedBy(candidate: T): boolean {\n\t\treturn this.left.isSatisfiedBy(candidate) && this.right.isSatisfiedBy(candidate)\n\t}\n}\n\nexport class NotCondition<T> extends BaseCondition<T> {\n\tconstructor(private readonly condition: Condition<T>) {\n\t\tsuper()\n\t}\n\n\tisSatisfiedBy(candidate: T): boolean {\n\t\treturn !this.condition.isSatisfiedBy(candidate)\n\t}\n}\n\nexport class OrCondition<T> extends BaseCondition<T> {\n\tconstructor(\n\t\tprivate readonly left: Condition<T>,\n\t\tprivate readonly right: Condition<T>,\n\t) {\n\t\tsuper()\n\t}\n\n\tisSatisfiedBy(candidate: T): boolean {\n\t\treturn this.left.isSatisfiedBy(candidate) || this.right.isSatisfiedBy(candidate)\n\t}\n}\n","import { Condition } from \"@core/context-engine/condition/condition\"\n\nexport interface Action<T> {\n\tapply(candidate: T): T\n}\n\nexport class Rule<T> {\n\tprivate condition: Condition<T>\n\tprivate action: Action<T>\n\n\tconstructor({ when, then }: { when: Condition<T>; then: Action<T> }) {\n\t\tthis.condition = when\t\n\t\tthis.action = then\n\t}\n\n\tapply(candidate: T): T {\n\t\tif (this.condition.isSatisfiedBy(candidate)) {\n\t\t\treturn this.action.apply(candidate)\n\t\t}\n\t\treturn candidate\n\t}\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/core/context-runtime/context.ts","../src/core/context-runtime/context-item.ts","../src/core/context-runtime/content.ts","../src/core/context-runtime/content/input-text.ts","../src/core/context-runtime/input/user-message.ts","../src/core/context-runtime/input/developer-message.ts","../src/core/context-runtime/content/output-text.ts","../src/core/context-runtime/output/model-message.ts","../src/core/context-runtime/output/function-call.ts","../src/core/context-runtime/output/reasoning.ts","../src/core/context-runtime/input/function-call-output.ts","../src/core/generative-model/inference-response.ts","../src/core/generative-model/token-usage.ts","../src/providers/openai/runtime/openai-responses.ts","../src/core/generative-model/inference-request.ts","../src/providers/openai/reasoning-effort.ts","../src/providers/openai/models/gpt-5-4-nano.ts","../src/providers/openai/models/gpt-5-4.ts","../src/providers/openai/models/gpt-5-4-mini.ts","../src/core/context-engine/condition/condition.ts","../src/core/context-engine/rule/rule.ts","../src/memory/in-memory-context-repository.ts"],"sourcesContent":["import { ContextItem } from \"@core/context-runtime/context-item\"\n\nexport class Context {\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\taddItem(item: ContextItem): Context {\n\t\tthis.items.push(item)\n\t\treturn this\n\t}\n\n\tapplyModelOutput(items: ContextItem[]): Context {\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\tstatic create(projectId: string): Context {\n\t\tconst id = crypto.randomUUID()\n\t\treturn new Context(id, projectId, [])\n\t}\n\n\tstatic rehydrate(data: { id: string; projectId: string; items: ContextItem[] }): Context {\n\t\treturn new Context(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 Content {\n\tabstract readonly type: string\n}\n","import { Content } from \"@core/context-runtime/content\"\n\nexport class InputText extends Content {\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 \"@core/context-runtime/context-item\"\nimport { InputText } from \"@core/context-runtime/content/input-text\"\n\nexport class UserMessage 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): UserMessage {\n\t\tconst content = InputText.create(text)\n\t\treturn new UserMessage(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): UserMessage {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new UserMessage(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 \"@core/context-runtime/content/input-text\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\n\nexport class DeveloperMessage 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): DeveloperMessage {\n\t\tconst content = InputText.create(text)\n\t\treturn new DeveloperMessage(content)\n\t}\n\n\tstatic rehydrate(data: { text: string }): DeveloperMessage {\n\t\tconst content = InputText.rehydrate(data)\n\t\treturn new DeveloperMessage(content)\n\t}\n}\n","import { Content } from \"@core/context-runtime/content\"\n\nexport class OutputText extends Content {\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 \"@core/context-runtime/context-item\"\nimport { OutputText } from \"@core/context-runtime/content/output-text\"\n\nexport class ModelMessage 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 }): ModelMessage {\n\t\tconst content = OutputText.rehydrate(data)\n\t\treturn new ModelMessage(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 \"@core/context-runtime/context-item\"\n\nexport class FunctionCall 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 }): FunctionCall {\n\t\treturn new FunctionCall(data.callId, data.name, data.args)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcallId: this.callId,\n\t\t\tname: this.name,\n\t\t\targuments: this.args,\n\t\t}\n\t}\n}\n","import { InputText } from \"@core/context-runtime/content/input-text\"\nimport { SummaryText } from \"@core/context-runtime/content/summary-text\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\n\nexport class Reasoning 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}): Reasoning {\n\t\treturn new Reasoning(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 \"@core/context-runtime/context-item\"\nimport { InputText } from \"@core/context-runtime/content/input-text\"\n\nexport class FunctionCallOutput 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: InputText[]): FunctionCallOutput {\n\t\treturn new FunctionCallOutput(callId, output)\n\t}\n\n\tstatic rehydrate(data: { callId: string; output: InputText[] }): FunctionCallOutput {\n\t\treturn new FunctionCallOutput(data.callId, data.output)\n\t}\n\n\ttoJSON(): any {\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tcallId: this.callId,\n\t\t\toutput: this.output.map((o) => o.toJSON()),\n\t\t}\n\t}\n}\n","import { ContextItem } from \"src\"\nimport { TokenUsage } from \"./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 { Context } from \"@core/context-runtime/context\"\nimport { ContextItem } from \"@core/context-runtime/context-item\"\nimport { FunctionCall } from \"@core/context-runtime/output/function-call\"\nimport { ModelMessage } from \"@core/context-runtime/output/model-message\"\nimport { Reasoning } from \"@core/context-runtime/output/reasoning\"\nimport { InferenceRequest } from \"@core/generative-model/inference-request\"\nimport { InferenceResponse } from \"@core/generative-model/inference-response\"\nimport { ModelRuntime } from \"@core/generative-model/runtime/model-runtime\"\nimport { InputTokenDetails, OutputTokenDetails, TokenUsage } from \"@core/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: Context): 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.status === \"completed\") {\n\t\t\t\treturn ModelMessage.rehydrate(item.content[0] as { text: string })\n\t\t\t}\n\t\t\tif (item.type === \"function_call\" && item.status === \"completed\") {\n\t\t\t\treturn FunctionCall.rehydrate(item)\n\t\t\t}\n\t\t\tif (item.type === \"reasoning\") {\n\t\t\t\treturn Reasoning.rehydrate(item)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { Context } from \"@core/context-runtime/context\"\nimport { GenerativeModel } from \"./generative-model\"\nimport { ReasoningEffort } from \"./capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"./capabilities/tool-calling\"\n\nexport class InferenceRequest {\n\treadonly model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability\n\treadonly context: Context\n\n\tconstructor(model: GenerativeModel & ReasoningEffort<string> & ToolCallingCapability, context: Context) {\n\t\tthis.model = model\n\t\tthis.context = context\n\t}\n}\n","import { ReasoningEffort } from \"@core/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 \"@core/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@core/generative-model/capabilities/tool-calling\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@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 \"@core/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@core/generative-model/capabilities/tool-calling\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@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\tgetReasoningEffort(): OpenAIReasoningEffortType {\n\t\treturn this.effort.getReasoningEffort()\n\t}\n}\n","import { ReasoningEffort } from \"@core/generative-model/capabilities/reasoning-effort\"\nimport { ToolCallingCapability } from \"@core/generative-model/capabilities/tool-calling\"\nimport { GenerativeModel } from \"@core/generative-model/generative-model\"\nimport { Tool } from \"@core/generative-model/tool\"\nimport { OpenAIReasoningEffort, OpenAIReasoningEffortType } from \"@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","export interface Condition<T> {\n\tisSatisfiedBy(candidate: T): boolean\n\tand(other: Condition<T>): Condition<T>\n\tor(other: Condition<T>): Condition<T>\n\tnot(): Condition<T>\n}\n\nexport abstract class BaseCondition<T> implements Condition<T> {\n\tabstract isSatisfiedBy(candidate: T): boolean\n\n\tand(other: Condition<T>): Condition<T> {\n\t\treturn new AndCondition(this, other)\n\t}\n\n\tor(other: Condition<T>): Condition<T> {\n\t\treturn new OrCondition(this, other)\n\t}\n\n\tnot(): Condition<T> {\n\t\treturn new NotCondition(this)\n\t}\n}\n\nexport class AndCondition<T> extends BaseCondition<T> {\n\tconstructor(\n\t\tprivate readonly left: Condition<T>,\n\t\tprivate readonly right: Condition<T>,\n\t) {\n\t\tsuper()\n\t}\n\n\tisSatisfiedBy(candidate: T): boolean {\n\t\treturn this.left.isSatisfiedBy(candidate) && this.right.isSatisfiedBy(candidate)\n\t}\n}\n\nexport class NotCondition<T> extends BaseCondition<T> {\n\tconstructor(private readonly condition: Condition<T>) {\n\t\tsuper()\n\t}\n\n\tisSatisfiedBy(candidate: T): boolean {\n\t\treturn !this.condition.isSatisfiedBy(candidate)\n\t}\n}\n\nexport class OrCondition<T> extends BaseCondition<T> {\n\tconstructor(\n\t\tprivate readonly left: Condition<T>,\n\t\tprivate readonly right: Condition<T>,\n\t) {\n\t\tsuper()\n\t}\n\n\tisSatisfiedBy(candidate: T): boolean {\n\t\treturn this.left.isSatisfiedBy(candidate) || this.right.isSatisfiedBy(candidate)\n\t}\n}\n","import { Condition } from \"@core/context-engine/condition/condition\"\n\nexport interface Action<T> {\n\tapply(candidate: T): T\n}\n\nexport interface Rule<T> {\n\tcondition: Condition<T>\n\taction: Action<T>\n\tapply(candidate: T): T\n}\n\nexport class If<T> implements Rule<T> {\n\tcondition: Condition<T>\n\taction: Action<T>\n\n\tconstructor({ condition, action }: { condition: Condition<T>; action: Action<T> }) {\n\t\tthis.condition = condition\n\t\tthis.action = action\n\t}\n\n\tapply(candidate: T): T {\n\t\tif (this.condition.isSatisfiedBy(candidate)) {\n\t\t\treturn this.action.apply(candidate)\n\t\t}\n\t\treturn candidate\n\t}\n}\n\nexport class Loop<T> {\n\tprivate condition: Condition<T>\n\tprivate action: Action<T>\n\n\tconstructor({ condition, action }: { condition: Condition<T>; action: Action<T> }) {\n\t\tthis.condition = condition\n\t\tthis.action = action\n\t}\n\n\tapply(candidate: T): T {\n\t\twhile (this.condition.isSatisfiedBy(candidate)) {\n\t\t\tcandidate = this.action.apply(candidate)\n\t\t}\n\t\treturn candidate\n\t}\n}","import { Context } from \"@core/context-runtime/context\"\nimport { ContextRepository } from \"@core/context-runtime/context-repository\"\n\nexport class InMemoryContextRepository implements ContextRepository {\n\tprivate readonly store = new Map<string, Context>()\n\tprivate readonly projectIndex = new Map<string, Set<string>>()\n\n\tasync save(context: Context): 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<Context> {\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<Context[]> {\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 Context => Boolean(c))\n\t\t\t.map((c) => this.clone(c))\n\t}\n\n\tprivate clone(context: Context): Context {\n\t\treturn Context.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"],"mappings":"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","names":[]}
|