@mohamedtebo/convai-platform 1.0.0 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -72
- package/dist/providers/openai/builders/conversation-or-create.builder.d.ts +7 -6
- package/dist/providers/openai/builders/conversation-or-create.builder.d.ts.map +1 -1
- package/dist/providers/openai/builders/conversation-or-create.builder.js +11 -11
- package/dist/providers/openai/builders/conversation-or-create.builder.js.map +1 -1
- package/dist/providers/openai/loops/responses-tool.loop.d.ts +7 -2
- package/dist/providers/openai/loops/responses-tool.loop.d.ts.map +1 -1
- package/dist/providers/openai/loops/responses-tool.loop.js +164 -48
- package/dist/providers/openai/loops/responses-tool.loop.js.map +1 -1
- package/dist/providers/openai/openai-responses.provider.d.ts.map +1 -1
- package/dist/providers/openai/openai-responses.provider.js +1 -2
- package/dist/providers/openai/openai-responses.provider.js.map +1 -1
- package/dist/providers/openai/operations/create-response.operation.d.ts +2 -1
- package/dist/providers/openai/operations/create-response.operation.d.ts.map +1 -1
- package/dist/providers/openai/operations/create-response.operation.js +13 -4
- package/dist/providers/openai/operations/create-response.operation.js.map +1 -1
- package/dist/providers/openai/operations/submit-tool-outputs.operation.d.ts +4 -3
- package/dist/providers/openai/operations/submit-tool-outputs.operation.d.ts.map +1 -1
- package/dist/providers/openai/operations/submit-tool-outputs.operation.js +13 -7
- package/dist/providers/openai/operations/submit-tool-outputs.operation.js.map +1 -1
- package/docs/API_INTEGRATION.md +385 -0
- package/package.json +3 -3
- package/dist/src/adapters/index.d.ts +0 -2
- package/dist/src/adapters/index.d.ts.map +0 -1
- package/dist/src/adapters/index.js +0 -6
- package/dist/src/adapters/index.js.map +0 -1
- package/dist/src/adapters/memory-conversation.store.d.ts +0 -12
- package/dist/src/adapters/memory-conversation.store.d.ts.map +0 -1
- package/dist/src/adapters/memory-conversation.store.js +0 -25
- package/dist/src/adapters/memory-conversation.store.js.map +0 -1
- package/dist/src/composed/platform-client.d.ts +0 -29
- package/dist/src/composed/platform-client.d.ts.map +0 -1
- package/dist/src/composed/platform-client.js +0 -16
- package/dist/src/composed/platform-client.js.map +0 -1
- package/dist/src/errors/index.d.ts +0 -4
- package/dist/src/errors/index.d.ts.map +0 -1
- package/dist/src/errors/index.js +0 -11
- package/dist/src/errors/index.js.map +0 -1
- package/dist/src/errors/provider.error.d.ts +0 -16
- package/dist/src/errors/provider.error.d.ts.map +0 -1
- package/dist/src/errors/provider.error.js +0 -15
- package/dist/src/errors/provider.error.js.map +0 -1
- package/dist/src/errors/sdk.error.d.ts +0 -15
- package/dist/src/errors/sdk.error.d.ts.map +0 -1
- package/dist/src/errors/sdk.error.js +0 -16
- package/dist/src/errors/sdk.error.js.map +0 -1
- package/dist/src/errors/tool-loop.error.d.ts +0 -11
- package/dist/src/errors/tool-loop.error.d.ts.map +0 -1
- package/dist/src/errors/tool-loop.error.js +0 -30
- package/dist/src/errors/tool-loop.error.js.map +0 -1
- package/dist/src/factory/index.d.ts +0 -2
- package/dist/src/factory/index.d.ts.map +0 -1
- package/dist/src/factory/index.js +0 -6
- package/dist/src/factory/index.js.map +0 -1
- package/dist/src/factory/provider.factory.d.ts +0 -8
- package/dist/src/factory/provider.factory.d.ts.map +0 -1
- package/dist/src/factory/provider.factory.js +0 -49
- package/dist/src/factory/provider.factory.js.map +0 -1
- package/dist/src/index.d.ts +0 -13
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -34
- package/dist/src/index.js.map +0 -1
- package/dist/src/providers/anthropic/anthropic.provider.d.ts +0 -22
- package/dist/src/providers/anthropic/anthropic.provider.d.ts.map +0 -1
- package/dist/src/providers/anthropic/anthropic.provider.js +0 -34
- package/dist/src/providers/anthropic/anthropic.provider.js.map +0 -1
- package/dist/src/providers/anthropic/loops/claude-tool.loop.d.ts +0 -11
- package/dist/src/providers/anthropic/loops/claude-tool.loop.d.ts.map +0 -1
- package/dist/src/providers/anthropic/loops/claude-tool.loop.js +0 -58
- package/dist/src/providers/anthropic/loops/claude-tool.loop.js.map +0 -1
- package/dist/src/providers/anthropic/utils/error-mapper.d.ts +0 -4
- package/dist/src/providers/anthropic/utils/error-mapper.d.ts.map +0 -1
- package/dist/src/providers/anthropic/utils/error-mapper.js +0 -35
- package/dist/src/providers/anthropic/utils/error-mapper.js.map +0 -1
- package/dist/src/providers/openai/builders/conversation-or-create.builder.d.ts +0 -15
- package/dist/src/providers/openai/builders/conversation-or-create.builder.d.ts.map +0 -1
- package/dist/src/providers/openai/builders/conversation-or-create.builder.js +0 -18
- package/dist/src/providers/openai/builders/conversation-or-create.builder.js.map +0 -1
- package/dist/src/providers/openai/loops/assistants-tool.loop.d.ts +0 -19
- package/dist/src/providers/openai/loops/assistants-tool.loop.d.ts.map +0 -1
- package/dist/src/providers/openai/loops/assistants-tool.loop.js +0 -58
- package/dist/src/providers/openai/loops/assistants-tool.loop.js.map +0 -1
- package/dist/src/providers/openai/loops/responses-tool.loop.d.ts +0 -14
- package/dist/src/providers/openai/loops/responses-tool.loop.d.ts.map +0 -1
- package/dist/src/providers/openai/loops/responses-tool.loop.js +0 -87
- package/dist/src/providers/openai/loops/responses-tool.loop.js.map +0 -1
- package/dist/src/providers/openai/openai-assistants.provider.d.ts +0 -27
- package/dist/src/providers/openai/openai-assistants.provider.d.ts.map +0 -1
- package/dist/src/providers/openai/openai-assistants.provider.js +0 -40
- package/dist/src/providers/openai/openai-assistants.provider.js.map +0 -1
- package/dist/src/providers/openai/openai-responses.provider.d.ts +0 -25
- package/dist/src/providers/openai/openai-responses.provider.d.ts.map +0 -1
- package/dist/src/providers/openai/openai-responses.provider.js +0 -35
- package/dist/src/providers/openai/openai-responses.provider.js.map +0 -1
- package/dist/src/providers/openai/operations/create-conversation.operation.d.ts +0 -7
- package/dist/src/providers/openai/operations/create-conversation.operation.d.ts.map +0 -1
- package/dist/src/providers/openai/operations/create-conversation.operation.js +0 -22
- package/dist/src/providers/openai/operations/create-conversation.operation.js.map +0 -1
- package/dist/src/providers/openai/operations/create-response.operation.d.ts +0 -13
- package/dist/src/providers/openai/operations/create-response.operation.d.ts.map +0 -1
- package/dist/src/providers/openai/operations/create-response.operation.js +0 -27
- package/dist/src/providers/openai/operations/create-response.operation.js.map +0 -1
- package/dist/src/providers/openai/operations/submit-tool-outputs.operation.d.ts +0 -17
- package/dist/src/providers/openai/operations/submit-tool-outputs.operation.d.ts.map +0 -1
- package/dist/src/providers/openai/operations/submit-tool-outputs.operation.js +0 -33
- package/dist/src/providers/openai/operations/submit-tool-outputs.operation.js.map +0 -1
- package/dist/src/providers/openai/utils/error-mapper.d.ts +0 -4
- package/dist/src/providers/openai/utils/error-mapper.d.ts.map +0 -1
- package/dist/src/providers/openai/utils/error-mapper.js +0 -45
- package/dist/src/providers/openai/utils/error-mapper.js.map +0 -1
- package/dist/src/providers/openai/utils/usage-mapper.d.ts +0 -10
- package/dist/src/providers/openai/utils/usage-mapper.d.ts.map +0 -1
- package/dist/src/providers/openai/utils/usage-mapper.js +0 -16
- package/dist/src/providers/openai/utils/usage-mapper.js.map +0 -1
- package/dist/src/safe/index.d.ts +0 -2
- package/dist/src/safe/index.d.ts.map +0 -1
- package/dist/src/safe/index.js +0 -6
- package/dist/src/safe/index.js.map +0 -1
- package/dist/src/safe/safe-platform.client.d.ts +0 -14
- package/dist/src/safe/safe-platform.client.d.ts.map +0 -1
- package/dist/src/safe/safe-platform.client.js +0 -56
- package/dist/src/safe/safe-platform.client.js.map +0 -1
- package/dist/src/types/ask-with-tools.types.d.ts +0 -48
- package/dist/src/types/ask-with-tools.types.d.ts.map +0 -1
- package/dist/src/types/ask-with-tools.types.js +0 -3
- package/dist/src/types/ask-with-tools.types.js.map +0 -1
- package/dist/src/types/client-config.interface.d.ts +0 -33
- package/dist/src/types/client-config.interface.d.ts.map +0 -1
- package/dist/src/types/client-config.interface.js +0 -3
- package/dist/src/types/client-config.interface.js.map +0 -1
- package/dist/src/types/conversation-store.interface.d.ts +0 -24
- package/dist/src/types/conversation-store.interface.d.ts.map +0 -1
- package/dist/src/types/conversation-store.interface.js +0 -3
- package/dist/src/types/conversation-store.interface.js.map +0 -1
- package/dist/src/types/index.d.ts +0 -8
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/index.js +0 -7
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/types/provider.interface.d.ts +0 -13
- package/dist/src/types/provider.interface.d.ts.map +0 -1
- package/dist/src/types/provider.interface.js +0 -3
- package/dist/src/types/provider.interface.js.map +0 -1
- package/dist/src/types/sdk-result.interface.d.ts +0 -30
- package/dist/src/types/sdk-result.interface.d.ts.map +0 -1
- package/dist/src/types/sdk-result.interface.js +0 -11
- package/dist/src/types/sdk-result.interface.js.map +0 -1
- package/dist/src/types/tool-handler.interface.d.ts +0 -45
- package/dist/src/types/tool-handler.interface.d.ts.map +0 -1
- package/dist/src/types/tool-handler.interface.js +0 -3
- package/dist/src/types/tool-handler.interface.js.map +0 -1
- package/dist/tests/safe-client.test.d.ts +0 -2
- package/dist/tests/safe-client.test.d.ts.map +0 -1
- package/dist/tests/safe-client.test.js +0 -66
- package/dist/tests/safe-client.test.js.map +0 -1
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.runAssistantsToolLoop = runAssistantsToolLoop;
|
|
4
|
-
const errors_1 = require("../../../errors");
|
|
5
|
-
const usage_mapper_1 = require("../utils/usage-mapper");
|
|
6
|
-
const MAX_POLLS = 60;
|
|
7
|
-
const POLL_INTERVAL_MS = 1000;
|
|
8
|
-
/** Poll a beta.threads run until completion, executing tool calls via the ToolHandler. */
|
|
9
|
-
async function runAssistantsToolLoop(ctx, params) {
|
|
10
|
-
const { openai, handler } = ctx;
|
|
11
|
-
for (let poll = 0; poll < MAX_POLLS; poll++) {
|
|
12
|
-
await sleep(POLL_INTERVAL_MS);
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
-
const run = await openai.beta.threads.runs.retrieve(params.threadId, params.runId);
|
|
15
|
-
if (run.status === 'completed') {
|
|
16
|
-
const messages = await openai.beta.threads.messages.list(params.threadId, { limit: 1 });
|
|
17
|
-
const first = messages.data[0];
|
|
18
|
-
const text = first?.content
|
|
19
|
-
.filter((c) => c.type === 'text')
|
|
20
|
-
.map((c) => c.text.value)
|
|
21
|
-
.join('') ?? '';
|
|
22
|
-
return { kind: 'text', outputText: text, responseId: run.id, usage: (0, usage_mapper_1.mapUsage)(run.usage), model: params.model };
|
|
23
|
-
}
|
|
24
|
-
if (run.status === 'requires_action') {
|
|
25
|
-
if (!handler)
|
|
26
|
-
throw new errors_1.NoToolHandlerError();
|
|
27
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
|
-
const rawToolCalls = (run.required_action?.submit_tool_outputs?.tool_calls ?? []);
|
|
29
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30
|
-
const toolCalls = rawToolCalls.map((tc) => ({
|
|
31
|
-
id: tc.id, name: tc.function.name, arguments: tc.function.arguments,
|
|
32
|
-
}));
|
|
33
|
-
const toolContext = { threadKey: params.threadId, chatbotId: params.chatbotId, organizationId: params.organizationId, userQuestion: params.userQuestion };
|
|
34
|
-
const outputs = [];
|
|
35
|
-
for (const call of toolCalls) {
|
|
36
|
-
const out = await handler.buildOutput(call, toolContext);
|
|
37
|
-
if (out)
|
|
38
|
-
outputs.push(out);
|
|
39
|
-
}
|
|
40
|
-
const appResult = await handler.extractResult(toolCalls, outputs, toolContext);
|
|
41
|
-
if (appResult !== null) {
|
|
42
|
-
return { kind: 'toolResult', toolCallResult: appResult, responseId: run.id, usage: null, model: params.model };
|
|
43
|
-
}
|
|
44
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
|
-
await openai.beta.threads.runs.submitToolOutputs(params.threadId, params.runId, {
|
|
46
|
-
tool_outputs: outputs.map((o) => ({ tool_call_id: o.call_id, output: o.output })),
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
if (['failed', 'cancelled', 'expired'].includes(run.status)) {
|
|
50
|
-
throw new Error(`Assistants run ended with status: ${run.status}`);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
throw new errors_1.ToolLoopError(MAX_POLLS);
|
|
54
|
-
}
|
|
55
|
-
function sleep(ms) {
|
|
56
|
-
return new Promise((r) => setTimeout(r, ms));
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=assistants-tool.loop.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assistants-tool.loop.js","sourceRoot":"","sources":["../../../../../src/providers/openai/loops/assistants-tool.loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type OpenAI from 'openai';
|
|
2
|
-
import type { AskWithToolsParams, AskWithToolsResult } from '../../../types/ask-with-tools.types';
|
|
3
|
-
import type { ToolHandler } from '../../../types/tool-handler.interface';
|
|
4
|
-
import type { ConversationStore } from '../../../types/conversation-store.interface';
|
|
5
|
-
interface LoopContext {
|
|
6
|
-
openai: OpenAI;
|
|
7
|
-
store: ConversationStore;
|
|
8
|
-
handler?: ToolHandler;
|
|
9
|
-
model: string;
|
|
10
|
-
}
|
|
11
|
-
/** Run the full Responses API tool loop for one user turn. */
|
|
12
|
-
export declare function runResponsesToolLoop(ctx: LoopContext, params: AskWithToolsParams, conversationId: string, previousResponseId: string | undefined): Promise<AskWithToolsResult>;
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=responses-tool.loop.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"responses-tool.loop.d.ts","sourceRoot":"","sources":["../../../../../src/providers/openai/loops/responses-tool.loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,EAA2B,MAAM,uCAAuC,CAAC;AAClG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAQrF,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8DAA8D;AAC9D,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,kBAAkB,EAC1B,cAAc,EAAE,MAAM,EACtB,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAyD7B"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.runResponsesToolLoop = runResponsesToolLoop;
|
|
4
|
-
const create_response_operation_1 = require("../operations/create-response.operation");
|
|
5
|
-
const submit_tool_outputs_operation_1 = require("../operations/submit-tool-outputs.operation");
|
|
6
|
-
const usage_mapper_1 = require("../utils/usage-mapper");
|
|
7
|
-
const errors_1 = require("../../../errors");
|
|
8
|
-
const MAX_TURNS = 10;
|
|
9
|
-
/** Run the full Responses API tool loop for one user turn. */
|
|
10
|
-
async function runResponsesToolLoop(ctx, params, conversationId, previousResponseId) {
|
|
11
|
-
const { openai, store, handler, model } = ctx;
|
|
12
|
-
let lastResponseId = previousResponseId;
|
|
13
|
-
for (let turn = 0; turn < MAX_TURNS; turn++) {
|
|
14
|
-
const response = (await (turn === 0
|
|
15
|
-
? (0, create_response_operation_1.createResponse)(openai, {
|
|
16
|
-
conversationId,
|
|
17
|
-
previousResponseId: lastResponseId,
|
|
18
|
-
model,
|
|
19
|
-
instructions: params.instructions,
|
|
20
|
-
userQuestion: params.userQuestion,
|
|
21
|
-
tools: params.tools,
|
|
22
|
-
vectorStoreIds: params.vectorStoreIds,
|
|
23
|
-
})
|
|
24
|
-
: Promise.resolve(null)));
|
|
25
|
-
// On re-entry submit tool outputs instead
|
|
26
|
-
if (turn > 0 || !response)
|
|
27
|
-
break;
|
|
28
|
-
const raw = response;
|
|
29
|
-
const responseId = raw['id'];
|
|
30
|
-
lastResponseId = responseId;
|
|
31
|
-
await store.save(params.threadKey, { conversationId, lastResponseId: responseId });
|
|
32
|
-
const status = raw['status'];
|
|
33
|
-
if (status === 'completed') {
|
|
34
|
-
const outputText = extractOutputText(raw);
|
|
35
|
-
return { kind: 'text', outputText, responseId, usage: (0, usage_mapper_1.mapUsage)(raw['usage']), model };
|
|
36
|
-
}
|
|
37
|
-
if (status === 'requires_action' || status === 'failed_with_tool_calls') {
|
|
38
|
-
if (!handler)
|
|
39
|
-
throw new errors_1.NoToolHandlerError();
|
|
40
|
-
const calls = extractToolCalls(raw);
|
|
41
|
-
const toolContext = { threadKey: params.threadKey, chatbotId: params.chatbotId, organizationId: params.organizationId, userQuestion: params.userQuestion, mediaUrl: params.mediaUrl };
|
|
42
|
-
const outputs = [];
|
|
43
|
-
for (const call of calls) {
|
|
44
|
-
const out = await handler.buildOutput(call, toolContext);
|
|
45
|
-
if (out)
|
|
46
|
-
outputs.push(out);
|
|
47
|
-
}
|
|
48
|
-
const appResult = await handler.extractResult(calls, outputs, toolContext);
|
|
49
|
-
if (appResult !== null) {
|
|
50
|
-
return { kind: 'toolResult', toolCallResult: appResult, responseId, usage: (0, usage_mapper_1.mapUsage)(raw['usage']), model };
|
|
51
|
-
}
|
|
52
|
-
const nextResponse = await (0, submit_tool_outputs_operation_1.submitToolOutputs)(openai, { previousResponseId: responseId, conversationId, model, instructions: params.instructions, toolOutputs: outputs, tools: params.tools });
|
|
53
|
-
const nextId = nextResponse['id'];
|
|
54
|
-
await store.save(params.threadKey, { conversationId, lastResponseId: nextId });
|
|
55
|
-
lastResponseId = nextId;
|
|
56
|
-
const nextStatus = nextResponse['status'];
|
|
57
|
-
if (nextStatus === 'completed') {
|
|
58
|
-
return { kind: 'text', outputText: extractOutputText(nextResponse), responseId: nextId, usage: (0, usage_mapper_1.mapUsage)(nextResponse['usage']), model };
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
throw new errors_1.ToolLoopError(MAX_TURNS);
|
|
63
|
-
}
|
|
64
|
-
function extractOutputText(response) {
|
|
65
|
-
const output = response['output'];
|
|
66
|
-
if (!Array.isArray(output))
|
|
67
|
-
return '';
|
|
68
|
-
const textBlock = output.find((b) => b['type'] === 'message');
|
|
69
|
-
if (!textBlock)
|
|
70
|
-
return '';
|
|
71
|
-
const content = textBlock['content'];
|
|
72
|
-
if (!Array.isArray(content))
|
|
73
|
-
return '';
|
|
74
|
-
return content.map((c) => c['text'] ?? '').join('');
|
|
75
|
-
}
|
|
76
|
-
function extractToolCalls(response) {
|
|
77
|
-
const output = response['output'];
|
|
78
|
-
if (!Array.isArray(output))
|
|
79
|
-
return [];
|
|
80
|
-
return output
|
|
81
|
-
.filter((b) => b['type'] === 'function_call')
|
|
82
|
-
.map((b) => {
|
|
83
|
-
const block = b;
|
|
84
|
-
return { id: block['call_id'], name: block['name'], arguments: block['arguments'] };
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=responses-tool.loop.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"responses-tool.loop.js","sourceRoot":"","sources":["../../../../../src/providers/openai/loops/responses-tool.loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { AIProvider } from '../../types/provider.interface';
|
|
2
|
-
import type { AskWithToolsParams, AskWithToolsResult } from '../../types/ask-with-tools.types';
|
|
3
|
-
import type { ToolHandler } from '../../types/tool-handler.interface';
|
|
4
|
-
export interface OpenAIAssistantsProviderConfig {
|
|
5
|
-
apiKey: string;
|
|
6
|
-
assistantId: string;
|
|
7
|
-
model: string;
|
|
8
|
-
toolHandler?: ToolHandler;
|
|
9
|
-
maxRetries?: number;
|
|
10
|
-
timeoutMs?: number;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Legacy OpenAI Assistants API provider.
|
|
14
|
-
* Use this during the dual-run migration period until all threads are moved
|
|
15
|
-
* to the Responses + Conversations API, then remove.
|
|
16
|
-
*
|
|
17
|
-
* @deprecated Prefer OpenAIResponsesProvider for new chatbots.
|
|
18
|
-
*/
|
|
19
|
-
export declare class OpenAIAssistantsProvider implements AIProvider {
|
|
20
|
-
private readonly openai;
|
|
21
|
-
private readonly assistantId;
|
|
22
|
-
private readonly model;
|
|
23
|
-
private readonly handler?;
|
|
24
|
-
constructor(config: OpenAIAssistantsProviderConfig);
|
|
25
|
-
askWithTools(params: AskWithToolsParams): Promise<AskWithToolsResult>;
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=openai-assistants.provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai-assistants.provider.d.ts","sourceRoot":"","sources":["../../../../src/providers/openai/openai-assistants.provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC/F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAGtE,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,qBAAa,wBAAyB,YAAW,UAAU;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;gBAE3B,MAAM,EAAE,8BAA8B;IAW5C,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAgB5E"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.OpenAIAssistantsProvider = void 0;
|
|
7
|
-
const openai_1 = __importDefault(require("openai"));
|
|
8
|
-
const assistants_tool_loop_1 = require("./loops/assistants-tool.loop");
|
|
9
|
-
/**
|
|
10
|
-
* Legacy OpenAI Assistants API provider.
|
|
11
|
-
* Use this during the dual-run migration period until all threads are moved
|
|
12
|
-
* to the Responses + Conversations API, then remove.
|
|
13
|
-
*
|
|
14
|
-
* @deprecated Prefer OpenAIResponsesProvider for new chatbots.
|
|
15
|
-
*/
|
|
16
|
-
class OpenAIAssistantsProvider {
|
|
17
|
-
constructor(config) {
|
|
18
|
-
this.openai = new openai_1.default({
|
|
19
|
-
apiKey: config.apiKey,
|
|
20
|
-
maxRetries: config.maxRetries ?? 2,
|
|
21
|
-
timeout: config.timeoutMs ?? 60000,
|
|
22
|
-
});
|
|
23
|
-
this.assistantId = config.assistantId;
|
|
24
|
-
this.model = config.model;
|
|
25
|
-
this.handler = config.toolHandler;
|
|
26
|
-
}
|
|
27
|
-
async askWithTools(params) {
|
|
28
|
-
await this.openai.beta.threads.messages.create(params.threadKey, {
|
|
29
|
-
role: 'user',
|
|
30
|
-
content: params.userQuestion,
|
|
31
|
-
});
|
|
32
|
-
const run = await this.openai.beta.threads.runs.create(params.threadKey, {
|
|
33
|
-
assistant_id: this.assistantId,
|
|
34
|
-
model: params.model ?? this.model,
|
|
35
|
-
});
|
|
36
|
-
return (0, assistants_tool_loop_1.runAssistantsToolLoop)({ openai: this.openai, handler: this.handler }, { threadId: params.threadKey, runId: run.id, chatbotId: params.chatbotId, organizationId: params.organizationId, userQuestion: params.userQuestion, model: params.model ?? this.model });
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.OpenAIAssistantsProvider = OpenAIAssistantsProvider;
|
|
40
|
-
//# sourceMappingURL=openai-assistants.provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai-assistants.provider.js","sourceRoot":"","sources":["../../../../src/providers/openai/openai-assistants.provider.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAI5B,uEAAqE;AAWrE;;;;;;GAMG;AACH,MAAa,wBAAwB;IAMnC,YAAY,MAAsC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;YAClC,OAAO,EAAE,MAAM,CAAC,SAAS,IAAI,KAAM;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAA0B;QAC3C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;YAC/D,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM,CAAC,YAAY;SAC7B,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;YACvE,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;SAClC,CAAC,CAAC;QAEH,OAAO,IAAA,4CAAqB,EAC1B,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAC9C,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CACxL,CAAC;IACJ,CAAC;CACF;AAjCD,4DAiCC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { AIProvider } from '../../types/provider.interface';
|
|
2
|
-
import type { AskWithToolsParams, AskWithToolsResult } from '../../types/ask-with-tools.types';
|
|
3
|
-
import type { ConversationStore } from '../../types/conversation-store.interface';
|
|
4
|
-
import type { ToolHandler } from '../../types/tool-handler.interface';
|
|
5
|
-
export interface OpenAIResponsesProviderConfig {
|
|
6
|
-
apiKey: string;
|
|
7
|
-
model: string;
|
|
8
|
-
conversationStore: ConversationStore;
|
|
9
|
-
toolHandler?: ToolHandler;
|
|
10
|
-
maxRetries?: number;
|
|
11
|
-
timeoutMs?: number;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* OpenAI Responses + Conversations API provider.
|
|
15
|
-
* Manages conversation state via the injected ConversationStore.
|
|
16
|
-
*/
|
|
17
|
-
export declare class OpenAIResponsesProvider implements AIProvider {
|
|
18
|
-
private readonly openai;
|
|
19
|
-
private readonly model;
|
|
20
|
-
private readonly store;
|
|
21
|
-
private readonly handler?;
|
|
22
|
-
constructor(config: OpenAIResponsesProviderConfig);
|
|
23
|
-
askWithTools(params: AskWithToolsParams): Promise<AskWithToolsResult>;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=openai-responses.provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai-responses.provider.d.ts","sourceRoot":"","sources":["../../../../src/providers/openai/openai-responses.provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAItE,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,UAAU;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;gBAE3B,MAAM,EAAE,6BAA6B;IAW3C,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAc5E"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.OpenAIResponsesProvider = void 0;
|
|
7
|
-
const openai_1 = __importDefault(require("openai"));
|
|
8
|
-
const conversation_or_create_builder_1 = require("./builders/conversation-or-create.builder");
|
|
9
|
-
const responses_tool_loop_1 = require("./loops/responses-tool.loop");
|
|
10
|
-
/**
|
|
11
|
-
* OpenAI Responses + Conversations API provider.
|
|
12
|
-
* Manages conversation state via the injected ConversationStore.
|
|
13
|
-
*/
|
|
14
|
-
class OpenAIResponsesProvider {
|
|
15
|
-
constructor(config) {
|
|
16
|
-
this.openai = new openai_1.default({
|
|
17
|
-
apiKey: config.apiKey,
|
|
18
|
-
maxRetries: config.maxRetries ?? 2,
|
|
19
|
-
timeout: config.timeoutMs ?? 60000,
|
|
20
|
-
});
|
|
21
|
-
this.model = config.model;
|
|
22
|
-
this.store = config.conversationStore;
|
|
23
|
-
this.handler = config.toolHandler;
|
|
24
|
-
}
|
|
25
|
-
async askWithTools(params) {
|
|
26
|
-
const { conversationId, lastResponseId } = await (0, conversation_or_create_builder_1.resolveConversationId)({
|
|
27
|
-
openai: this.openai,
|
|
28
|
-
store: this.store,
|
|
29
|
-
threadKey: params.threadKey,
|
|
30
|
-
});
|
|
31
|
-
return (0, responses_tool_loop_1.runResponsesToolLoop)({ openai: this.openai, store: this.store, handler: this.handler, model: params.model ?? this.model }, params, conversationId, lastResponseId);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
exports.OpenAIResponsesProvider = OpenAIResponsesProvider;
|
|
35
|
-
//# sourceMappingURL=openai-responses.provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai-responses.provider.js","sourceRoot":"","sources":["../../../../src/providers/openai/openai-responses.provider.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAK5B,8FAAkF;AAClF,qEAAmE;AAWnE;;;GAGG;AACH,MAAa,uBAAuB;IAMlC,YAAY,MAAqC;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;YAClC,OAAO,EAAE,MAAM,CAAC,SAAS,IAAI,KAAM;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAA0B;QAC3C,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,MAAM,IAAA,sDAAqB,EAAC;YACrE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QAEH,OAAO,IAAA,0CAAoB,EACzB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,EACpG,MAAM,EACN,cAAc,EACd,cAAc,CACf,CAAC;IACJ,CAAC;CACF;AA/BD,0DA+BC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type OpenAI from 'openai';
|
|
2
|
-
/**
|
|
3
|
-
* Creates an OpenAI Conversation via the Responses + Conversations API.
|
|
4
|
-
* Wraps the raw SDK call in a typed error boundary.
|
|
5
|
-
*/
|
|
6
|
-
export declare function createConversation(openai: OpenAI): Promise<string>;
|
|
7
|
-
//# sourceMappingURL=create-conversation.operation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-conversation.operation.d.ts","sourceRoot":"","sources":["../../../../../src/providers/openai/operations/create-conversation.operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAGjC;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWxE"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createConversation = createConversation;
|
|
4
|
-
const error_mapper_1 = require("../utils/error-mapper");
|
|
5
|
-
/**
|
|
6
|
-
* Creates an OpenAI Conversation via the Responses + Conversations API.
|
|
7
|
-
* Wraps the raw SDK call in a typed error boundary.
|
|
8
|
-
*/
|
|
9
|
-
async function createConversation(openai) {
|
|
10
|
-
try {
|
|
11
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
-
const conversation = await openai.beta.conversations.create({});
|
|
13
|
-
if (!conversation?.id) {
|
|
14
|
-
throw new Error('createConversation returned no id');
|
|
15
|
-
}
|
|
16
|
-
return conversation.id;
|
|
17
|
-
}
|
|
18
|
-
catch (err) {
|
|
19
|
-
throw (0, error_mapper_1.mapOpenAIError)(err);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=create-conversation.operation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-conversation.operation.js","sourceRoot":"","sources":["../../../../../src/providers/openai/operations/create-conversation.operation.ts"],"names":[],"mappings":";;AAOA,gDAWC;AAjBD,wDAAuD;AAEvD;;;GAGG;AACI,KAAK,UAAU,kBAAkB,CAAC,MAAc;IACrD,IAAI,CAAC;QACH,8DAA8D;QAC9D,MAAM,YAAY,GAAG,MAAO,MAAc,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,YAAY,CAAC,EAAY,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAA,6BAAc,EAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type OpenAI from 'openai';
|
|
2
|
-
export interface CreateResponseParams {
|
|
3
|
-
conversationId: string;
|
|
4
|
-
previousResponseId?: string;
|
|
5
|
-
model: string;
|
|
6
|
-
instructions: string;
|
|
7
|
-
userQuestion: string;
|
|
8
|
-
tools?: unknown[];
|
|
9
|
-
vectorStoreIds?: string[];
|
|
10
|
-
}
|
|
11
|
-
/** Wraps openai.responses.create — one call in the tool loop or the first turn. */
|
|
12
|
-
export declare function createResponse(openai: OpenAI, params: CreateResponseParams): Promise<unknown>;
|
|
13
|
-
//# sourceMappingURL=create-response.operation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-response.operation.d.ts","sourceRoot":"","sources":["../../../../../src/providers/openai/operations/create-response.operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAGjC,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,mFAAmF;AACnF,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,OAAO,CAAC,CA8BlB"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createResponse = createResponse;
|
|
4
|
-
const error_mapper_1 = require("../utils/error-mapper");
|
|
5
|
-
/** Wraps openai.responses.create — one call in the tool loop or the first turn. */
|
|
6
|
-
async function createResponse(openai, params) {
|
|
7
|
-
const { conversationId, previousResponseId, model, instructions, userQuestion, tools, vectorStoreIds, } = params;
|
|
8
|
-
const body = {
|
|
9
|
-
model,
|
|
10
|
-
conversation_id: conversationId,
|
|
11
|
-
instructions,
|
|
12
|
-
input: userQuestion,
|
|
13
|
-
...(previousResponseId ? { previous_response_id: previousResponseId } : {}),
|
|
14
|
-
...(tools?.length ? { tools } : {}),
|
|
15
|
-
};
|
|
16
|
-
if (vectorStoreIds?.length) {
|
|
17
|
-
body['tool_resources'] = { file_search: { vector_store_ids: vectorStoreIds } };
|
|
18
|
-
}
|
|
19
|
-
try {
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
-
return await openai.responses.create(body);
|
|
22
|
-
}
|
|
23
|
-
catch (err) {
|
|
24
|
-
throw (0, error_mapper_1.mapOpenAIError)(err);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=create-response.operation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-response.operation.js","sourceRoot":"","sources":["../../../../../src/providers/openai/operations/create-response.operation.ts"],"names":[],"mappings":";;AAcA,wCAiCC;AA9CD,wDAAuD;AAYvD,mFAAmF;AAC5E,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,MAA4B;IAE5B,MAAM,EACJ,cAAc,EACd,kBAAkB,EAClB,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,cAAc,GACf,GAAG,MAAM,CAAC;IAEX,MAAM,IAAI,GAA4B;QACpC,KAAK;QACL,eAAe,EAAE,cAAc;QAC/B,YAAY;QACZ,KAAK,EAAE,YAAY;QACnB,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAC;IAEF,IAAI,cAAc,EAAE,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,gBAAgB,EAAE,cAAc,EAAE,EAAE,CAAC;IACjF,CAAC;IAED,IAAI,CAAC;QACH,8DAA8D;QAC9D,OAAO,MAAO,MAAc,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAA,6BAAc,EAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type OpenAI from 'openai';
|
|
2
|
-
import type { ToolOutput } from '../../../types/tool-handler.interface';
|
|
3
|
-
export interface SubmitToolOutputsParams {
|
|
4
|
-
previousResponseId: string;
|
|
5
|
-
conversationId: string;
|
|
6
|
-
model: string;
|
|
7
|
-
instructions: string;
|
|
8
|
-
toolOutputs: ToolOutput[];
|
|
9
|
-
tools?: unknown[];
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Resumes the AI response by submitting tool call outputs.
|
|
13
|
-
* In the Responses API this is a new responses.create call with the previous_response_id set
|
|
14
|
-
* and the tool results embedded in the input array.
|
|
15
|
-
*/
|
|
16
|
-
export declare function submitToolOutputs(openai: OpenAI, params: SubmitToolOutputsParams): Promise<unknown>;
|
|
17
|
-
//# sourceMappingURL=submit-tool-outputs.operation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"submit-tool-outputs.operation.d.ts","sourceRoot":"","sources":["../../../../../src/providers/openai/operations/submit-tool-outputs.operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAGxE,MAAM,WAAW,uBAAuB;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAwBlB"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.submitToolOutputs = submitToolOutputs;
|
|
4
|
-
const error_mapper_1 = require("../utils/error-mapper");
|
|
5
|
-
/**
|
|
6
|
-
* Resumes the AI response by submitting tool call outputs.
|
|
7
|
-
* In the Responses API this is a new responses.create call with the previous_response_id set
|
|
8
|
-
* and the tool results embedded in the input array.
|
|
9
|
-
*/
|
|
10
|
-
async function submitToolOutputs(openai, params) {
|
|
11
|
-
const { previousResponseId, conversationId, model, instructions, toolOutputs, tools } = params;
|
|
12
|
-
const toolResultMessages = toolOutputs.map((o) => ({
|
|
13
|
-
type: 'tool_result',
|
|
14
|
-
tool_use_id: o.call_id,
|
|
15
|
-
content: o.output,
|
|
16
|
-
}));
|
|
17
|
-
const body = {
|
|
18
|
-
model,
|
|
19
|
-
conversation_id: conversationId,
|
|
20
|
-
instructions,
|
|
21
|
-
previous_response_id: previousResponseId,
|
|
22
|
-
input: toolResultMessages,
|
|
23
|
-
...(tools?.length ? { tools } : {}),
|
|
24
|
-
};
|
|
25
|
-
try {
|
|
26
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
-
return await openai.responses.create(body);
|
|
28
|
-
}
|
|
29
|
-
catch (err) {
|
|
30
|
-
throw (0, error_mapper_1.mapOpenAIError)(err);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=submit-tool-outputs.operation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"submit-tool-outputs.operation.js","sourceRoot":"","sources":["../../../../../src/providers/openai/operations/submit-tool-outputs.operation.ts"],"names":[],"mappings":";;AAkBA,8CA2BC;AA3CD,wDAAuD;AAWvD;;;;GAIG;AACI,KAAK,UAAU,iBAAiB,CACrC,MAAc,EACd,MAA+B;IAE/B,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAE/F,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,CAAC,CAAC,OAAO;QACtB,OAAO,EAAE,CAAC,CAAC,MAAM;KAClB,CAAC,CAAC,CAAC;IAEJ,MAAM,IAAI,GAA4B;QACpC,KAAK;QACL,eAAe,EAAE,cAAc;QAC/B,YAAY;QACZ,oBAAoB,EAAE,kBAAkB;QACxC,KAAK,EAAE,kBAAkB;QACzB,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAC;IAEF,IAAI,CAAC;QACH,8DAA8D;QAC9D,OAAO,MAAO,MAAc,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAA,6BAAc,EAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-mapper.d.ts","sourceRoot":"","sources":["../../../../../src/providers/openai/utils/error-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAQ/D,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAmB1D"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mapOpenAIError = mapOpenAIError;
|
|
4
|
-
const provider_error_1 = require("../../../errors/provider.error");
|
|
5
|
-
/** Map an OpenAI SDK error to a typed ProviderError. */
|
|
6
|
-
function mapOpenAIError(err) {
|
|
7
|
-
if (isOpenAIAPIError(err)) {
|
|
8
|
-
const retryable = (err.status ?? 0) === 429 || ((err.status ?? 0) >= 500 && (err.status ?? 0) < 600);
|
|
9
|
-
const retryAfterMs = retryable ? parseRetryAfter(err.headers) : undefined;
|
|
10
|
-
return new provider_error_1.ProviderError({
|
|
11
|
-
provider: 'openai',
|
|
12
|
-
code: `OPENAI_${err.status ?? 'UNKNOWN'}`,
|
|
13
|
-
message: err.message ?? 'OpenAI API error',
|
|
14
|
-
statusCode: err.status,
|
|
15
|
-
retryable,
|
|
16
|
-
retryAfterMs,
|
|
17
|
-
requestId: extractRequestId(err.headers),
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
return new provider_error_1.ProviderError({
|
|
21
|
-
provider: 'openai',
|
|
22
|
-
code: 'OPENAI_UNEXPECTED',
|
|
23
|
-
message: err instanceof Error ? err.message : 'Unexpected error',
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
function isOpenAIAPIError(err) {
|
|
27
|
-
return typeof err === 'object' && err !== null && 'status' in err;
|
|
28
|
-
}
|
|
29
|
-
function parseRetryAfter(headers) {
|
|
30
|
-
if (!headers || typeof headers !== 'object')
|
|
31
|
-
return undefined;
|
|
32
|
-
const h = headers;
|
|
33
|
-
const v = h['retry-after'] ?? h['Retry-After'];
|
|
34
|
-
if (!v)
|
|
35
|
-
return undefined;
|
|
36
|
-
const seconds = parseInt(v, 10);
|
|
37
|
-
return isNaN(seconds) ? undefined : seconds * 1000;
|
|
38
|
-
}
|
|
39
|
-
function extractRequestId(headers) {
|
|
40
|
-
if (!headers || typeof headers !== 'object')
|
|
41
|
-
return undefined;
|
|
42
|
-
const h = headers;
|
|
43
|
-
return h['x-request-id'] ?? undefined;
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=error-mapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-mapper.js","sourceRoot":"","sources":["../../../../../src/providers/openai/utils/error-mapper.ts"],"names":[],"mappings":";;AASA,wCAmBC;AA5BD,mEAA+D;AAQ/D,wDAAwD;AACxD,SAAgB,cAAc,CAAC,GAAY;IACzC,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACrG,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,OAAO,IAAI,8BAAa,CAAC;YACvB,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,UAAU,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE;YACzC,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,kBAAkB;YAC1C,UAAU,EAAE,GAAG,CAAC,MAAM;YACtB,SAAS;YACT,YAAY;YACZ,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;SACzC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,8BAAa,CAAC;QACvB,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB;KACjE,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY;IACpC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,QAAQ,IAAI,GAAG,CAAC;AACpE,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,CAAC,GAAG,OAAiC,CAAC;IAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,CAAC,GAAG,OAAiC,CAAC;IAC5C,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC;AACxC,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { UsageMetrics } from '../../../types/ask-with-tools.types';
|
|
2
|
-
interface RawUsage {
|
|
3
|
-
input_tokens?: number;
|
|
4
|
-
output_tokens?: number;
|
|
5
|
-
total_tokens?: number;
|
|
6
|
-
}
|
|
7
|
-
/** Normalize provider usage to the shared UsageMetrics shape. */
|
|
8
|
-
export declare function mapUsage(raw: RawUsage | null | undefined): UsageMetrics | null;
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=usage-mapper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-mapper.d.ts","sourceRoot":"","sources":["../../../../../src/providers/openai/utils/usage-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAExE,UAAU,QAAQ;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,iEAAiE;AACjE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAS9E"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mapUsage = mapUsage;
|
|
4
|
-
/** Normalize provider usage to the shared UsageMetrics shape. */
|
|
5
|
-
function mapUsage(raw) {
|
|
6
|
-
if (!raw)
|
|
7
|
-
return null;
|
|
8
|
-
const input = raw.input_tokens ?? 0;
|
|
9
|
-
const output = raw.output_tokens ?? 0;
|
|
10
|
-
return {
|
|
11
|
-
inputTokens: input,
|
|
12
|
-
outputTokens: output,
|
|
13
|
-
totalTokens: raw.total_tokens ?? input + output,
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=usage-mapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-mapper.js","sourceRoot":"","sources":["../../../../../src/providers/openai/utils/usage-mapper.ts"],"names":[],"mappings":";;AASA,4BASC;AAVD,iEAAiE;AACjE,SAAgB,QAAQ,CAAC,GAAgC;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,IAAI,CAAC,CAAC;IACtC,OAAO;QACL,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,KAAK,GAAG,MAAM;KAChD,CAAC;AACJ,CAAC"}
|
package/dist/src/safe/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/safe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/src/safe/index.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SafePlatformClient = void 0;
|
|
4
|
-
var safe_platform_client_1 = require("./safe-platform.client");
|
|
5
|
-
Object.defineProperty(exports, "SafePlatformClient", { enumerable: true, get: function () { return safe_platform_client_1.SafePlatformClient; } });
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/safe/index.ts"],"names":[],"mappings":";;;AAAA,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { AIProvider } from '../types/provider.interface';
|
|
2
|
-
import type { AskWithToolsParams, AskWithToolsResult } from '../types/ask-with-tools.types';
|
|
3
|
-
import type { SdkResult } from '../types/sdk-result.interface';
|
|
4
|
-
/**
|
|
5
|
-
* Safe-layer wrapper around any AIProvider.
|
|
6
|
-
* All methods return SdkResult<T> — never throw.
|
|
7
|
-
* Use this in telbany controllers / services for clean error handling.
|
|
8
|
-
*/
|
|
9
|
-
export declare class SafePlatformClient {
|
|
10
|
-
private readonly provider;
|
|
11
|
-
constructor(provider: AIProvider);
|
|
12
|
-
askWithTools(params: AskWithToolsParams): Promise<SdkResult<AskWithToolsResult>>;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=safe-platform.client.d.ts.map
|