@zimtsui/typechat 0.0.126 → 0.0.128
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/build/adaptor.d.ts +0 -10
- package/build/adaptor.js +0 -32
- package/build/adaptor.js.map +1 -1
- package/build/engine/exceptions.d.ts +7 -7
- package/build/engine/exceptions.js.map +1 -1
- package/build/engine/message-validator.d.ts +9 -0
- package/build/engine/message-validator.js +28 -0
- package/build/engine/message-validator.js.map +1 -0
- package/build/engine/message.d.ts +33 -31
- package/build/engine/message.js +26 -75
- package/build/engine/message.js.map +1 -1
- package/build/engine/middleware.d.ts +2 -2
- package/build/engine/session.d.ts +4 -4
- package/build/engine/tool-choice-validator.d.ts +2 -2
- package/build/engine/tool-choice-validator.js +18 -21
- package/build/engine/tool-choice-validator.js.map +1 -1
- package/build/engine/transport.d.ts +2 -2
- package/build/engine.d.ts +11 -11
- package/build/engine.js +29 -56
- package/build/engine.js.map +1 -1
- package/build/engines/anthropic/message-codec.d.ts +9 -5
- package/build/engines/anthropic/message-codec.js +37 -35
- package/build/engines/anthropic/message-codec.js.map +1 -1
- package/build/engines/anthropic/tool-codec.d.ts +3 -3
- package/build/engines/anthropic/tool-codec.js +45 -14
- package/build/engines/anthropic/tool-codec.js.map +1 -1
- package/build/engines/anthropic/transport.d.ts +1 -2
- package/build/engines/anthropic/transport.js +3 -1
- package/build/engines/anthropic/transport.js.map +1 -1
- package/build/engines/anthropic.d.ts +0 -3
- package/build/engines/anthropic.js +1 -8
- package/build/engines/anthropic.js.map +1 -1
- package/build/engines/google/message-codec.d.ts +10 -7
- package/build/engines/google/message-codec.js +50 -70
- package/build/engines/google/message-codec.js.map +1 -1
- package/build/engines/google/tool-codec.d.ts +2 -3
- package/build/engines/google/tool-codec.js +51 -22
- package/build/engines/google/tool-codec.js.map +1 -1
- package/build/engines/google/transport.d.ts +1 -8
- package/build/engines/google/transport.js +1 -13
- package/build/engines/google/transport.js.map +1 -1
- package/build/engines/google.d.ts +3 -25
- package/build/engines/google.js +1 -124
- package/build/engines/google.js.map +1 -1
- package/build/engines/openai-chatcompletions/message-codec.d.ts +11 -7
- package/build/engines/openai-chatcompletions/message-codec.js +45 -45
- package/build/engines/openai-chatcompletions/message-codec.js.map +1 -1
- package/build/engines/openai-chatcompletions/tool-codec.d.ts +3 -3
- package/build/engines/openai-chatcompletions/tool-codec.js +31 -31
- package/build/engines/openai-chatcompletions/tool-codec.js.map +1 -1
- package/build/engines/openai-chatcompletions/transport.d.ts +2 -2
- package/build/engines/openai-chatcompletions/transport.js +14 -12
- package/build/engines/openai-chatcompletions/transport.js.map +1 -1
- package/build/engines/openai-chatcompletions.d.ts +0 -3
- package/build/engines/openai-chatcompletions.js +1 -8
- package/build/engines/openai-chatcompletions.js.map +1 -1
- package/build/engines/openai-compatible/message-codec.d.ts +14 -5
- package/build/engines/openai-compatible/message-codec.js +72 -71
- package/build/engines/openai-compatible/message-codec.js.map +1 -1
- package/build/engines/openai-compatible/transport.d.ts +3 -6
- package/build/engines/openai-compatible/transport.js +8 -7
- package/build/engines/openai-compatible/transport.js.map +1 -1
- package/build/engines/openai-compatible.d.ts +0 -3
- package/build/engines/openai-compatible.js +1 -8
- package/build/engines/openai-compatible.js.map +1 -1
- package/build/engines/openai-responses/message-codec.d.ts +12 -5
- package/build/engines/openai-responses/message-codec.js +72 -88
- package/build/engines/openai-responses/message-codec.js.map +1 -1
- package/build/engines/openai-responses/tool-codec.d.ts +5 -3
- package/build/engines/openai-responses/tool-codec.js +43 -28
- package/build/engines/openai-responses/tool-codec.js.map +1 -1
- package/build/engines/openai-responses/transport.d.ts +2 -6
- package/build/engines/openai-responses/transport.js +3 -7
- package/build/engines/openai-responses/transport.js.map +1 -1
- package/build/engines/openai-responses.d.ts +3 -24
- package/build/engines/openai-responses.js +1 -111
- package/build/engines/openai-responses.js.map +1 -1
- package/build/exports/xml.d.ts +2 -2
- package/build/exports/xml.js +2 -2
- package/build/exports/xml.js.map +1 -1
- package/build/exports.d.ts +1 -5
- package/build/exports.js +1 -5
- package/build/exports.js.map +1 -1
- package/build/function.d.ts +4 -2
- package/build/function.js +2 -2
- package/build/function.js.map +1 -1
- package/build/media.d.ts +2 -2
- package/build/media.js +5 -5
- package/build/media.js.map +1 -1
- package/build/text.d.ts +8 -0
- package/build/text.js +11 -0
- package/build/text.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/DEVELOPMENT.md +0 -11
- package/build/engine/parts-validator.d.ts +0 -8
- package/build/engine/parts-validator.js +0 -12
- package/build/engine/parts-validator.js.map +0 -1
- package/build/engines/anthropic/message.d.ts +0 -19
- package/build/engines/anthropic/message.js +0 -20
- package/build/engines/anthropic/message.js.map +0 -1
- package/build/engines/google/message.d.ts +0 -36
- package/build/engines/google/message.js +0 -58
- package/build/engines/google/message.js.map +0 -1
- package/build/engines/openai-chatcompletions/message.d.ts +0 -19
- package/build/engines/openai-chatcompletions/message.js +0 -20
- package/build/engines/openai-chatcompletions/message.js.map +0 -1
- package/build/engines/openai-compatible/message.d.ts +0 -19
- package/build/engines/openai-compatible/message.js +0 -20
- package/build/engines/openai-compatible/message.js.map +0 -1
- package/build/engines/openai-responses/message.d.ts +0 -22
- package/build/engines/openai-responses/message.js +0 -38
- package/build/engines/openai-responses/message.js.map +0 -1
- package/build/engines/openai-responses/tool-choice-validator.d.ts +0 -11
- package/build/engines/openai-responses/tool-choice-validator.js +0 -50
- package/build/engines/openai-responses/tool-choice-validator.js.map +0 -1
- package/build/engines/openai-responses/tool.d.ts +0 -53
- package/build/engines/openai-responses/tool.js +0 -24
- package/build/engines/openai-responses/tool.js.map +0 -1
|
@@ -2,7 +2,6 @@ import { Function } from '../function.ts';
|
|
|
2
2
|
import { Engine } from '../engine.ts';
|
|
3
3
|
import { MessageCodec } from './openai-chatcompletions/message-codec.ts';
|
|
4
4
|
import * as TransportModule from './openai-chatcompletions/transport.ts';
|
|
5
|
-
import * as MessageModule from './openai-chatcompletions/message.ts';
|
|
6
5
|
import { ToolCodec } from './openai-chatcompletions/tool-codec.ts';
|
|
7
6
|
import { Billing } from './openai-chatcompletions/billing.ts';
|
|
8
7
|
export type OpenAIChatCompletionsEngine<fdm extends Function.Decl.Map.Proto> = OpenAIChatCompletionsEngine.Instance<fdm>;
|
|
@@ -14,9 +13,7 @@ export declare namespace OpenAIChatCompletionsEngine {
|
|
|
14
13
|
protected billing: Billing;
|
|
15
14
|
protected transport: Transport<fdm>;
|
|
16
15
|
constructor(options: Engine.Options<fdm>);
|
|
17
|
-
clone(): Engine<fdm>;
|
|
18
16
|
}
|
|
19
|
-
export import RoleMessage = MessageModule.RoleMessage;
|
|
20
17
|
export import Transport = TransportModule.Transport;
|
|
21
18
|
function createEngine<fdm extends Function.Decl.Map.Proto>(options: Engine.Options<fdm>): Engine<fdm>;
|
|
22
19
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Engine } from "../engine.js";
|
|
2
2
|
import { MessageCodec } from "./openai-chatcompletions/message-codec.js";
|
|
3
3
|
import * as TransportModule from "./openai-chatcompletions/transport.js";
|
|
4
|
-
import * as MessageModule from "./openai-chatcompletions/message.js";
|
|
5
4
|
import { ToolCodec } from "./openai-chatcompletions/tool-codec.js";
|
|
6
5
|
import { Billing } from "./openai-chatcompletions/billing.js";
|
|
7
6
|
export var OpenAIChatCompletionsEngine;
|
|
@@ -18,6 +17,7 @@ export var OpenAIChatCompletionsEngine;
|
|
|
18
17
|
this.toolCodec = new ToolCodec({ fdm: this.fdm });
|
|
19
18
|
this.messageCodec = new MessageCodec({
|
|
20
19
|
toolCodec: this.toolCodec,
|
|
20
|
+
messageValidator: this.messageValidator,
|
|
21
21
|
});
|
|
22
22
|
this.billing = new Billing({ pricing: this.pricing });
|
|
23
23
|
this.transport = new OpenAIChatCompletionsEngine.Transport({
|
|
@@ -31,15 +31,8 @@ export var OpenAIChatCompletionsEngine;
|
|
|
31
31
|
billing: this.billing,
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
-
clone() {
|
|
35
|
-
const engine = new OpenAIChatCompletionsEngine.Instance(this.options);
|
|
36
|
-
engine.middlewaresStateless = [...this.middlewaresStateless];
|
|
37
|
-
engine.middlewaresStateful = [...this.middlewaresStateful];
|
|
38
|
-
return engine;
|
|
39
|
-
}
|
|
40
34
|
}
|
|
41
35
|
OpenAIChatCompletionsEngine.Instance = Instance;
|
|
42
|
-
OpenAIChatCompletionsEngine.RoleMessage = MessageModule.RoleMessage;
|
|
43
36
|
OpenAIChatCompletionsEngine.Transport = TransportModule.Transport;
|
|
44
37
|
createEngine;
|
|
45
38
|
function createEngine(options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-chatcompletions.js","sourceRoot":"","sources":["../../src/engines/openai-chatcompletions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,KAAK,eAAe,MAAM,uCAAuC,CAAC;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"openai-chatcompletions.js","sourceRoot":"","sources":["../../src/engines/openai-chatcompletions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,KAAK,eAAe,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAM9D,MAAM,KAAW,2BAA2B,CAsC3C;AAtCD,WAAiB,2BAA2B;IACxC,MAAa,QAEX,SAAQ,MAAM,CAAC,QAAa;QAMG;QALnB,SAAS,CAAiB;QAC1B,YAAY,CAAoB;QAChC,OAAO,CAAU;QACR,SAAS,CAAiB;QAE7C,YAA6B,OAA4B;YACrD,KAAK,CAAC,OAAO,CAAC,CAAC;YADU,YAAO,GAAP,OAAO,CAAqB;YAErD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC;gBACjC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;aAC1C,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,GAAG,IAAI,4BAAA,SAAS,CAAC;gBAC3B,eAAe,EAAE,IAAI,CAAC,gBAAgB;gBACtC,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC,CAAC;QACP,CAAC;KACJ;IA3BY,oCAAQ,WA2BpB,CAAA;IAEa,qCAAS,GAAG,eAAe,CAAC,SAAS,CAAC;IAEpD,YAAoC,CAAC;IACrC,SAAgB,YAAY,CAE1B,OAA4B;QAC1B,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAJe,wCAAY,eAI3B,CAAA;AACL,CAAC,EAtCgB,2BAA2B,KAA3B,2BAA2B,QAsC3C"}
|
|
@@ -1,19 +1,28 @@
|
|
|
1
1
|
import { Engine } from '../../engine.ts';
|
|
2
|
-
import { RoleMessage } from './message.ts';
|
|
3
2
|
import { Function } from '../../function.ts';
|
|
4
3
|
import OpenAI from 'openai';
|
|
5
4
|
import { ToolCodec } from '../openai-responses/tool-codec.ts';
|
|
5
|
+
import { Media } from '../../media.ts';
|
|
6
|
+
import { Text } from '../../text.ts';
|
|
6
7
|
export declare class MessageCodec<in out fdm extends Function.Decl.Map.Proto> {
|
|
8
|
+
protected cacheDeveloperMessages: WeakMap<Engine.Message.Developer, string>;
|
|
9
|
+
protected cacheInputMessages: WeakMap<Engine.Message.Input<Function.Decl.Proto>, OpenAI.Responses.ResponseInput>;
|
|
10
|
+
protected cacheOutputMessages: WeakMap<Engine.Message.Output<Function.Decl.Proto>, OpenAI.Responses.ResponseInput>;
|
|
11
|
+
protected cacheResponseIds: WeakMap<Engine.Message.Output<Function.Decl.Proto>, string>;
|
|
7
12
|
protected toolCodec: ToolCodec<fdm>;
|
|
13
|
+
protected messageValidator: Engine.MessageValidator.From<fdm>;
|
|
8
14
|
constructor(options: MessageCodec.Options<fdm>);
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
decodeOutputMessage(raw: OpenAI.Responses.Response): Engine.Message.Output.From<fdm>;
|
|
16
|
+
encodeUserMessagePart(part: Text | Media): OpenAI.Responses.ResponseInputContent;
|
|
17
|
+
encodeInputMessage(inm: Engine.Message.Input.From<fdm>): OpenAI.Responses.ResponseInput;
|
|
18
|
+
encodeOutputMessage(outm: Engine.Message.Output.From<fdm>): OpenAI.Responses.ResponseInput;
|
|
19
|
+
getResponseId(outm: Engine.Message.Output.From<fdm>): string | undefined;
|
|
20
|
+
encodeDeveloperMessage(developerMessage: Engine.Message.Developer): string;
|
|
13
21
|
encodeChatMessage(chatMessage: Engine.Session.ChatMessage.From<fdm>): OpenAI.Responses.ResponseInput;
|
|
14
22
|
}
|
|
15
23
|
export declare namespace MessageCodec {
|
|
16
24
|
interface Options<in out fdm extends Function.Decl.Map.Proto> {
|
|
17
25
|
toolCodec: ToolCodec<fdm>;
|
|
26
|
+
messageValidator: Engine.MessageValidator.From<fdm>;
|
|
18
27
|
}
|
|
19
28
|
}
|
|
@@ -1,108 +1,109 @@
|
|
|
1
1
|
import { Engine } from "../../engine.js";
|
|
2
|
-
import { RoleMessage } from "./message.js";
|
|
3
2
|
import { Function } from "../../function.js";
|
|
4
3
|
import { Media } from "../../media.js";
|
|
4
|
+
import { Text } from "../../text.js";
|
|
5
5
|
export class MessageCodec {
|
|
6
|
+
cacheDeveloperMessages = new WeakMap();
|
|
7
|
+
cacheInputMessages = new WeakMap();
|
|
8
|
+
cacheOutputMessages = new WeakMap();
|
|
9
|
+
cacheResponseIds = new WeakMap();
|
|
6
10
|
toolCodec;
|
|
11
|
+
messageValidator;
|
|
7
12
|
constructor(options) {
|
|
8
13
|
this.toolCodec = options.toolCodec;
|
|
14
|
+
this.messageValidator = options.messageValidator;
|
|
9
15
|
}
|
|
10
|
-
|
|
16
|
+
decodeOutputMessage(raw) {
|
|
11
17
|
const parts = [];
|
|
12
18
|
for (const item of raw.output) {
|
|
13
19
|
if (item.type === 'message')
|
|
14
20
|
for (const part of item.content)
|
|
15
21
|
if (part.type === 'output_text')
|
|
16
|
-
parts.push(new
|
|
22
|
+
parts.push(new Text(part.text));
|
|
17
23
|
else if (part.type === 'refusal')
|
|
18
24
|
throw new Engine.Exceptions.InferenceError('Refusal', { cause: raw });
|
|
19
25
|
else
|
|
20
|
-
throw new Error();
|
|
26
|
+
throw new Error('Unsupported API output message part.', { cause: part });
|
|
21
27
|
else if (item.type === 'function_call')
|
|
22
28
|
parts.push(this.toolCodec.decodeFunctionCall(item));
|
|
23
29
|
else if (item.type === 'reasoning') { }
|
|
24
30
|
else
|
|
25
|
-
throw new Error();
|
|
31
|
+
throw new Error('Unsupported API output item.', { cause: item });
|
|
26
32
|
}
|
|
27
|
-
|
|
33
|
+
const outm = new Engine.Message.Output(parts);
|
|
34
|
+
this.messageValidator.validateOutputMessage(outm);
|
|
35
|
+
if (raw.output.every(item => item.type !== 'computer_call_output')) { }
|
|
36
|
+
else
|
|
37
|
+
throw new Error('Computer calls are not supported yet.');
|
|
38
|
+
this.cacheOutputMessages.set(outm, raw.output);
|
|
39
|
+
this.cacheResponseIds.set(outm, raw.id);
|
|
40
|
+
return outm;
|
|
41
|
+
}
|
|
42
|
+
encodeUserMessagePart(part) {
|
|
43
|
+
if (part instanceof Text)
|
|
44
|
+
return {
|
|
45
|
+
type: 'input_text',
|
|
46
|
+
text: part.raw,
|
|
47
|
+
};
|
|
48
|
+
else if (part instanceof Media.Text)
|
|
49
|
+
return {
|
|
50
|
+
type: 'input_text',
|
|
51
|
+
text: part.quote(),
|
|
52
|
+
};
|
|
53
|
+
else if (part instanceof Media.Image)
|
|
54
|
+
return {
|
|
55
|
+
type: 'input_image',
|
|
56
|
+
image_url: `data:${part.mimeType};base64,${part}`,
|
|
57
|
+
detail: 'auto',
|
|
58
|
+
};
|
|
59
|
+
else
|
|
60
|
+
throw new Error('Unsupported user message part.', { cause: part });
|
|
28
61
|
}
|
|
29
|
-
|
|
62
|
+
encodeInputMessage(inm) {
|
|
63
|
+
if (this.cacheInputMessages.has(inm))
|
|
64
|
+
return this.cacheInputMessages.get(inm);
|
|
65
|
+
this.messageValidator.validateInputMessage(inm);
|
|
30
66
|
const responseInput = [];
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (
|
|
34
|
-
responseInput.push({
|
|
35
|
-
type: 'message',
|
|
36
|
-
role: 'user',
|
|
37
|
-
content,
|
|
38
|
-
});
|
|
39
|
-
content = [];
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
for (const part of userMessage.getParts()) {
|
|
43
|
-
if (part instanceof Engine.RoleMessage.Part.Text)
|
|
44
|
-
content.push({
|
|
45
|
-
type: 'input_text',
|
|
46
|
-
text: part.text,
|
|
47
|
-
});
|
|
48
|
-
else if (part instanceof Media.Text)
|
|
49
|
-
content.push({
|
|
50
|
-
type: 'input_text',
|
|
51
|
-
text: part.quote(),
|
|
52
|
-
});
|
|
53
|
-
else if (part instanceof Media.Image)
|
|
54
|
-
content.push({
|
|
55
|
-
type: 'input_image',
|
|
56
|
-
image_url: `data:${part.mimeType};base64,${part}`,
|
|
57
|
-
detail: 'auto',
|
|
58
|
-
});
|
|
59
|
-
else if (part instanceof Function.Response) {
|
|
67
|
+
const content = [];
|
|
68
|
+
for (const part of inm.parts)
|
|
69
|
+
if (part instanceof Function.Response) {
|
|
60
70
|
const fr = part;
|
|
61
|
-
flush();
|
|
62
71
|
responseInput.push(this.toolCodec.encodeFunctionResponse(fr));
|
|
63
72
|
}
|
|
64
73
|
else
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
74
|
+
content.push(this.encodeUserMessagePart(part));
|
|
75
|
+
if (content.length)
|
|
76
|
+
responseInput.push({
|
|
77
|
+
type: 'message',
|
|
78
|
+
role: 'user',
|
|
79
|
+
content,
|
|
80
|
+
});
|
|
81
|
+
this.cacheInputMessages.set(inm, responseInput);
|
|
68
82
|
return responseInput;
|
|
69
83
|
}
|
|
70
|
-
|
|
71
|
-
if (
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
return raw.output;
|
|
78
|
-
}
|
|
79
|
-
const responseInput = [];
|
|
80
|
-
for (const part of aiMessage.getParts()) {
|
|
81
|
-
if (part instanceof RoleMessage.Part.Text)
|
|
82
|
-
responseInput.push({
|
|
83
|
-
role: 'assistant',
|
|
84
|
-
content: part.text,
|
|
85
|
-
});
|
|
86
|
-
else if (part instanceof Function.Call) {
|
|
87
|
-
const fc = part;
|
|
88
|
-
responseInput.push(this.toolCodec.encodeFunctionCall(fc));
|
|
89
|
-
}
|
|
90
|
-
else
|
|
91
|
-
throw new Error('Unknown AI message part type', { cause: part });
|
|
92
|
-
}
|
|
93
|
-
return responseInput;
|
|
84
|
+
encodeOutputMessage(outm) {
|
|
85
|
+
if (this.cacheOutputMessages.has(outm))
|
|
86
|
+
return this.cacheOutputMessages.get(outm);
|
|
87
|
+
throw new Error('Only native output message allowed.', { cause: outm });
|
|
88
|
+
}
|
|
89
|
+
getResponseId(outm) {
|
|
90
|
+
return this.cacheResponseIds.get(outm);
|
|
94
91
|
}
|
|
95
92
|
encodeDeveloperMessage(developerMessage) {
|
|
96
|
-
|
|
93
|
+
if (this.cacheDeveloperMessages.has(developerMessage))
|
|
94
|
+
return this.cacheDeveloperMessages.get(developerMessage);
|
|
95
|
+
const raw = developerMessage.getOnlyTextParts().map(part => part.raw).join('');
|
|
96
|
+
this.cacheDeveloperMessages.set(developerMessage, raw);
|
|
97
|
+
return raw;
|
|
97
98
|
}
|
|
98
99
|
encodeChatMessage(chatMessage) {
|
|
99
|
-
if (chatMessage instanceof Engine.
|
|
100
|
-
const
|
|
101
|
-
return this.
|
|
100
|
+
if (chatMessage instanceof Engine.Message.Input) {
|
|
101
|
+
const inm = chatMessage;
|
|
102
|
+
return this.encodeInputMessage(inm);
|
|
102
103
|
}
|
|
103
|
-
else if (chatMessage instanceof Engine.
|
|
104
|
-
const
|
|
105
|
-
return this.
|
|
104
|
+
else if (chatMessage instanceof Engine.Message.Output) {
|
|
105
|
+
const outm = chatMessage;
|
|
106
|
+
return this.encodeOutputMessage(outm);
|
|
106
107
|
}
|
|
107
108
|
else
|
|
108
109
|
throw new Error();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-codec.js","sourceRoot":"","sources":["../../../src/engines/openai-compatible/message-codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"message-codec.js","sourceRoot":"","sources":["../../../src/engines/openai-compatible/message-codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,MAAM,OAAO,YAAY;IAGX,sBAAsB,GAAG,IAAI,OAAO,EAAoC,CAAC;IACzE,kBAAkB,GAAG,IAAI,OAAO,EAA6E,CAAC;IAC9G,mBAAmB,GAAG,IAAI,OAAO,EAA8E,CAAC;IAChH,gBAAgB,GAAG,IAAI,OAAO,EAAsD,CAAC;IACrF,SAAS,CAAiB;IAC1B,gBAAgB,CAAoC;IAC9D,YAAmB,OAAkC;QACjD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACrD,CAAC;IAEM,mBAAmB,CACtB,GAA8B;QAE9B,MAAM,KAAK,GAA2C,EAAE,CAAC;QACzD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;gBACvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO;oBAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa;wBAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;yBAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;wBAC5B,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;;wBACrE,MAAM,IAAI,KAAK,CAAC,sCAAsC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;iBACjF,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe;gBAClC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;iBACnD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC,CAAA,CAAC;;gBACjC,MAAM,IAAI,KAAK,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,EAAE,CAAC,CAAA,CAAC;;YAClE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC7D,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,qBAAqB,CAAC,IAAkB;QAC3C,IAAI,IAAI,YAAY,IAAI;YACpB,OAAO;gBACH,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,IAAI,CAAC,GAAG;aACjB,CAAC;aACD,IAAI,IAAI,YAAY,KAAK,CAAC,IAAI;YAC/B,OAAO;gBACH,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;aACrB,CAAC;aACD,IAAI,IAAI,YAAY,KAAK,CAAC,KAAK;YAChC,OAAO;gBACH,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,QAAQ,IAAI,CAAC,QAAQ,WAAW,IAAI,EAAE;gBACjD,MAAM,EAAE,MAAM;aACjB,CAAC;;YACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;IAEM,kBAAkB,CACrB,GAAmC;QAEnC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAC/E,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,aAAa,GAAmC,EAAE,CAAC;QACzD,MAAM,OAAO,GAA4C,EAAE,CAAC;QAC5D,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK;YACxB,IAAI,IAAI,YAAY,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,EAAE,GAAG,IAAmC,CAAC;gBAC/C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;;gBACG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,IAAI,OAAO,CAAC,MAAM;YAAE,aAAa,CAAC,IAAI,CAAC;gBACnC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,MAAM;gBACZ,OAAO;aACV,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,OAAO,aAAa,CAAC;IACzB,CAAC;IAEM,mBAAmB,CACtB,IAAqC;QAErC,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,qCAAqC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;IAEM,aAAa,CAChB,IAAqC;QAErC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEM,sBAAsB,CAAC,gBAA0C;QACpE,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAAE,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,gBAAgB,CAAE,CAAC;QACjH,MAAM,GAAG,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,iBAAiB,CACpB,WAAiD;QAEjD,IAAI,WAAW,YAAY,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,WAA6C,CAAC;YAC1D,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,WAAW,YAAY,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,WAA8C,CAAC;YAC5D,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;;YACI,MAAM,IAAI,KAAK,EAAE,CAAC;IAC3B,CAAC;CACJ"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { type InferenceOptions, type ProviderSpecs } from '../../engine.ts';
|
|
2
|
-
import { type Session } from '../../engine/session.ts';
|
|
3
|
-
import { RoleMessage } from './message.ts';
|
|
1
|
+
import { type InferenceOptions, type ProviderSpecs, Engine } from '../../engine.ts';
|
|
4
2
|
import { Function } from '../../function.ts';
|
|
5
3
|
import OpenAI from 'openai';
|
|
6
4
|
import { type InferenceContext } from '../../inference-context.ts';
|
|
@@ -9,7 +7,6 @@ import type { MessageCodec } from './message-codec.ts';
|
|
|
9
7
|
import type { ToolCodec } from '../openai-responses/tool-codec.ts';
|
|
10
8
|
import type { Billing } from '../openai-responses/billing.ts';
|
|
11
9
|
import { ToolChoice } from '../../tool-choice.ts';
|
|
12
|
-
import { Engine } from "../../engine.js";
|
|
13
10
|
export declare class Transport<in out fdm extends Function.Decl.Map.Proto> implements Engine.Transport<fdm> {
|
|
14
11
|
protected client: OpenAI;
|
|
15
12
|
protected inferenceParams: InferenceOptions;
|
|
@@ -21,9 +18,9 @@ export declare class Transport<in out fdm extends Function.Decl.Map.Proto> imple
|
|
|
21
18
|
protected toolCodec: ToolCodec<fdm>;
|
|
22
19
|
protected billing: Billing;
|
|
23
20
|
constructor(options: Transport.Options<fdm>);
|
|
24
|
-
protected makeParams(session: Session.From<fdm>): OpenAI.Responses.ResponseCreateParamsStreaming;
|
|
21
|
+
protected makeParams(session: Engine.Session.From<fdm>): OpenAI.Responses.ResponseCreateParamsStreaming;
|
|
25
22
|
protected logAiMessage(output: OpenAI.Responses.ResponseOutputItem[]): void;
|
|
26
|
-
fetch(wfctx: InferenceContext, session: Session.From<fdm>, signal?: AbortSignal): Promise<
|
|
23
|
+
fetch(wfctx: InferenceContext, session: Engine.Session.From<fdm>, signal?: AbortSignal): Promise<Engine.Message.Output.From<fdm>>;
|
|
27
24
|
}
|
|
28
25
|
export declare namespace Transport {
|
|
29
26
|
interface Options<in out fdm extends Function.Decl.Map.Proto> {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Engine } from "../../engine.js";
|
|
2
2
|
import OpenAI from 'openai';
|
|
3
3
|
import { loggers } from "../../telemetry.js";
|
|
4
4
|
import * as ToolChoiceCodec from "./tool-choice-codec.js";
|
|
5
|
-
import { Engine } from "../../engine.js";
|
|
6
5
|
import * as Undici from 'undici';
|
|
7
6
|
import assert from 'node:assert';
|
|
8
7
|
export class Transport {
|
|
@@ -38,11 +37,11 @@ export class Transport {
|
|
|
38
37
|
let previous_response_id = undefined;
|
|
39
38
|
let instructions = undefined;
|
|
40
39
|
const lastSecondMessage = session.chatMessages.at(-2);
|
|
41
|
-
if (lastSecondMessage instanceof
|
|
40
|
+
if (lastSecondMessage instanceof Engine.Message.Output && this.messageCodec.getResponseId(lastSecondMessage)) {
|
|
42
41
|
const lastMessage = session.chatMessages.at(-1);
|
|
43
|
-
assert(lastMessage instanceof Engine.
|
|
44
|
-
input = this.messageCodec.
|
|
45
|
-
previous_response_id =
|
|
42
|
+
assert(lastMessage instanceof Engine.Message.Input);
|
|
43
|
+
input = this.messageCodec.encodeInputMessage(lastMessage);
|
|
44
|
+
previous_response_id = this.messageCodec.getResponseId(lastSecondMessage);
|
|
46
45
|
}
|
|
47
46
|
else {
|
|
48
47
|
input = session.chatMessages.flatMap(chatMessage => this.messageCodec.encodeChatMessage(chatMessage));
|
|
@@ -82,8 +81,10 @@ export class Transport {
|
|
|
82
81
|
loggers.message.debug(params);
|
|
83
82
|
let response = null;
|
|
84
83
|
try {
|
|
84
|
+
signal?.throwIfAborted();
|
|
85
85
|
const stream = await this.client.responses.create(params, { signal });
|
|
86
86
|
for await (const event of stream) {
|
|
87
|
+
signal?.throwIfAborted();
|
|
87
88
|
loggers.stream.trace(event);
|
|
88
89
|
if (event.type === 'response.completed')
|
|
89
90
|
response = event.response;
|
|
@@ -116,7 +117,7 @@ export class Transport {
|
|
|
116
117
|
this.logAiMessage(response.output);
|
|
117
118
|
wfctx.cost?.(this.billing.charge(response.usage));
|
|
118
119
|
loggers.message.info(response.usage);
|
|
119
|
-
return this.messageCodec.
|
|
120
|
+
return this.messageCodec.decodeOutputMessage(response);
|
|
120
121
|
}
|
|
121
122
|
}
|
|
122
123
|
//# sourceMappingURL=transport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/engines/openai-compatible/transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/engines/openai-compatible/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,6 @@ import { MessageCodec } from './openai-compatible/message-codec.ts';
|
|
|
4
4
|
import { ToolCodec } from './openai-responses/tool-codec.ts';
|
|
5
5
|
import { Billing } from './openai-responses/billing.ts';
|
|
6
6
|
import * as TransportModule from './openai-compatible/transport.ts';
|
|
7
|
-
import * as MessageModule from './openai-compatible/message.ts';
|
|
8
7
|
export type OpenAICompatibleEngine<fdm extends Function.Decl.Map.Proto> = OpenAICompatibleEngine.Instance<fdm>;
|
|
9
8
|
export declare namespace OpenAICompatibleEngine {
|
|
10
9
|
class Instance<in out fdm extends Function.Decl.Map.Proto> extends Engine.Instance<fdm> {
|
|
@@ -14,9 +13,7 @@ export declare namespace OpenAICompatibleEngine {
|
|
|
14
13
|
protected billing: Billing;
|
|
15
14
|
protected transport: Transport<fdm>;
|
|
16
15
|
constructor(options: Engine.Options<fdm>);
|
|
17
|
-
clone(): OpenAICompatibleEngine<fdm>;
|
|
18
16
|
}
|
|
19
17
|
function createEngine<fdm extends Function.Decl.Map.Proto>(options: Engine.Options<fdm>): Engine<fdm>;
|
|
20
|
-
export import RoleMessage = MessageModule.RoleMessage;
|
|
21
18
|
export import Transport = TransportModule.Transport;
|
|
22
19
|
}
|
|
@@ -3,7 +3,6 @@ import { MessageCodec } from "./openai-compatible/message-codec.js";
|
|
|
3
3
|
import { ToolCodec } from "./openai-responses/tool-codec.js";
|
|
4
4
|
import { Billing } from "./openai-responses/billing.js";
|
|
5
5
|
import * as TransportModule from "./openai-compatible/transport.js";
|
|
6
|
-
import * as MessageModule from "./openai-compatible/message.js";
|
|
7
6
|
export var OpenAICompatibleEngine;
|
|
8
7
|
(function (OpenAICompatibleEngine) {
|
|
9
8
|
class Instance extends Engine.Instance {
|
|
@@ -18,6 +17,7 @@ export var OpenAICompatibleEngine;
|
|
|
18
17
|
this.toolCodec = new ToolCodec({ fdm: this.fdm });
|
|
19
18
|
this.messageCodec = new MessageCodec({
|
|
20
19
|
toolCodec: this.toolCodec,
|
|
20
|
+
messageValidator: this.messageValidator,
|
|
21
21
|
});
|
|
22
22
|
this.billing = new Billing({ pricing: this.pricing });
|
|
23
23
|
this.transport = new OpenAICompatibleEngine.Transport({
|
|
@@ -31,12 +31,6 @@ export var OpenAICompatibleEngine;
|
|
|
31
31
|
billing: this.billing,
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
-
clone() {
|
|
35
|
-
const engine = new OpenAICompatibleEngine.Instance(this.options);
|
|
36
|
-
engine.middlewaresStateless = [...this.middlewaresStateless];
|
|
37
|
-
engine.middlewaresStateful = [...this.middlewaresStateful];
|
|
38
|
-
return engine;
|
|
39
|
-
}
|
|
40
34
|
}
|
|
41
35
|
OpenAICompatibleEngine.Instance = Instance;
|
|
42
36
|
createEngine;
|
|
@@ -44,7 +38,6 @@ export var OpenAICompatibleEngine;
|
|
|
44
38
|
return new Instance(options);
|
|
45
39
|
}
|
|
46
40
|
OpenAICompatibleEngine.createEngine = createEngine;
|
|
47
|
-
OpenAICompatibleEngine.RoleMessage = MessageModule.RoleMessage;
|
|
48
41
|
OpenAICompatibleEngine.Transport = TransportModule.Transport;
|
|
49
42
|
})(OpenAICompatibleEngine || (OpenAICompatibleEngine = {}));
|
|
50
43
|
//# sourceMappingURL=openai-compatible.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/engines/openai-compatible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,KAAK,eAAe,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/engines/openai-compatible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,KAAK,eAAe,MAAM,kCAAkC,CAAC;AAMpE,MAAM,KAAW,sBAAsB,CAuCtC;AAvCD,WAAiB,sBAAsB;IACnC,MAAa,QAEX,SAAQ,MAAM,CAAC,QAAa;QAMG;QALnB,SAAS,CAAiB;QAC1B,YAAY,CAAoB;QAChC,OAAO,CAAU;QACR,SAAS,CAAiB;QAE7C,YAA6B,OAA4B;YACrD,KAAK,CAAC,OAAO,CAAC,CAAC;YADU,YAAO,GAAP,OAAO,CAAqB;YAGrD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC;gBACjC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;aAC1C,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,GAAG,IAAI,uBAAA,SAAS,CAAC;gBAC3B,eAAe,EAAE,IAAI,CAAC,gBAAgB;gBACtC,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC,CAAC;QACP,CAAC;KACJ;IA5BY,+BAAQ,WA4BpB,CAAA;IAED,YAAoC,CAAC;IACrC,SAAgB,YAAY,CAE1B,OAA4B;QAC1B,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAJe,mCAAY,eAI3B,CAAA;IAEa,gCAAS,GAAG,eAAe,CAAC,SAAS,CAAC;AACxD,CAAC,EAvCgB,sBAAsB,KAAtB,sBAAsB,QAuCtC"}
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
import { Engine } from '../../engine.ts';
|
|
2
|
-
import { RoleMessage } from './message.ts';
|
|
3
2
|
import { Function } from '../../function.ts';
|
|
4
3
|
import OpenAI from 'openai';
|
|
5
4
|
import type { ToolCodec } from './tool-codec.ts';
|
|
5
|
+
import { Media } from '../../media.ts';
|
|
6
|
+
import { Text } from '../../text.ts';
|
|
6
7
|
export declare class MessageCodec<in out fdm extends Function.Decl.Map.Proto> {
|
|
8
|
+
protected cacheDeveloperMessages: WeakMap<Engine.Message.Developer, string>;
|
|
9
|
+
protected cacheInputMessages: WeakMap<Engine.Message.Input<Function.Decl.Proto>, OpenAI.Responses.ResponseInput>;
|
|
10
|
+
protected cacheOutputMessages: WeakMap<Engine.Message.Output<Function.Decl.Proto>, OpenAI.Responses.ResponseInput>;
|
|
7
11
|
protected toolCodec: ToolCodec<fdm>;
|
|
12
|
+
protected messageValidator: Engine.MessageValidator.From<fdm>;
|
|
8
13
|
constructor(options: MessageCodec.Options<fdm>);
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
decodeOutputMessage(raw: OpenAI.Responses.Response): Engine.Message.Output.From<fdm>;
|
|
15
|
+
encodeUserMessagePart(part: Text | Media): OpenAI.Responses.ResponseInputContent;
|
|
16
|
+
encodeInputMessage(inm: Engine.Message.Input.From<fdm>): OpenAI.Responses.ResponseInput;
|
|
17
|
+
encodeOutputMessage(outm: Engine.Message.Output.From<fdm>): OpenAI.Responses.ResponseInput;
|
|
18
|
+
encodeDeveloperMessage(developerMessage: Engine.Message.Developer): string;
|
|
13
19
|
encodeChatMessage(chatMessage: Engine.Session.ChatMessage.From<fdm>): OpenAI.Responses.ResponseInput;
|
|
14
20
|
}
|
|
15
21
|
export declare namespace MessageCodec {
|
|
16
22
|
interface Options<in out fdm extends Function.Decl.Map.Proto> {
|
|
17
23
|
toolCodec: ToolCodec<fdm>;
|
|
24
|
+
messageValidator: Engine.MessageValidator.From<fdm>;
|
|
18
25
|
}
|
|
19
26
|
}
|