@mohamedtebo/convai-platform 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +155 -0
- package/dist/adapters/index.d.ts +2 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +6 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/memory-conversation.store.d.ts +12 -0
- package/dist/adapters/memory-conversation.store.d.ts.map +1 -0
- package/dist/adapters/memory-conversation.store.js +25 -0
- package/dist/adapters/memory-conversation.store.js.map +1 -0
- package/dist/composed/platform-client.d.ts +29 -0
- package/dist/composed/platform-client.d.ts.map +1 -0
- package/dist/composed/platform-client.js +16 -0
- package/dist/composed/platform-client.js.map +1 -0
- package/dist/errors/index.d.ts +4 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +11 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/provider.error.d.ts +16 -0
- package/dist/errors/provider.error.d.ts.map +1 -0
- package/dist/errors/provider.error.js +15 -0
- package/dist/errors/provider.error.js.map +1 -0
- package/dist/errors/sdk.error.d.ts +15 -0
- package/dist/errors/sdk.error.d.ts.map +1 -0
- package/dist/errors/sdk.error.js +16 -0
- package/dist/errors/sdk.error.js.map +1 -0
- package/dist/errors/tool-loop.error.d.ts +11 -0
- package/dist/errors/tool-loop.error.d.ts.map +1 -0
- package/dist/errors/tool-loop.error.js +30 -0
- package/dist/errors/tool-loop.error.js.map +1 -0
- package/dist/factory/index.d.ts +2 -0
- package/dist/factory/index.d.ts.map +1 -0
- package/dist/factory/index.js +6 -0
- package/dist/factory/index.js.map +1 -0
- package/dist/factory/provider.factory.d.ts +8 -0
- package/dist/factory/provider.factory.d.ts.map +1 -0
- package/dist/factory/provider.factory.js +49 -0
- package/dist/factory/provider.factory.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/anthropic/anthropic.provider.d.ts +22 -0
- package/dist/providers/anthropic/anthropic.provider.d.ts.map +1 -0
- package/dist/providers/anthropic/anthropic.provider.js +34 -0
- package/dist/providers/anthropic/anthropic.provider.js.map +1 -0
- package/dist/providers/anthropic/loops/claude-tool.loop.d.ts +11 -0
- package/dist/providers/anthropic/loops/claude-tool.loop.d.ts.map +1 -0
- package/dist/providers/anthropic/loops/claude-tool.loop.js +58 -0
- package/dist/providers/anthropic/loops/claude-tool.loop.js.map +1 -0
- package/dist/providers/anthropic/utils/error-mapper.d.ts +4 -0
- package/dist/providers/anthropic/utils/error-mapper.d.ts.map +1 -0
- package/dist/providers/anthropic/utils/error-mapper.js +35 -0
- package/dist/providers/anthropic/utils/error-mapper.js.map +1 -0
- package/dist/providers/openai/builders/conversation-or-create.builder.d.ts +15 -0
- package/dist/providers/openai/builders/conversation-or-create.builder.d.ts.map +1 -0
- package/dist/providers/openai/builders/conversation-or-create.builder.js +18 -0
- package/dist/providers/openai/builders/conversation-or-create.builder.js.map +1 -0
- package/dist/providers/openai/loops/assistants-tool.loop.d.ts +19 -0
- package/dist/providers/openai/loops/assistants-tool.loop.d.ts.map +1 -0
- package/dist/providers/openai/loops/assistants-tool.loop.js +58 -0
- package/dist/providers/openai/loops/assistants-tool.loop.js.map +1 -0
- package/dist/providers/openai/loops/responses-tool.loop.d.ts +14 -0
- package/dist/providers/openai/loops/responses-tool.loop.d.ts.map +1 -0
- package/dist/providers/openai/loops/responses-tool.loop.js +87 -0
- package/dist/providers/openai/loops/responses-tool.loop.js.map +1 -0
- package/dist/providers/openai/openai-assistants.provider.d.ts +27 -0
- package/dist/providers/openai/openai-assistants.provider.d.ts.map +1 -0
- package/dist/providers/openai/openai-assistants.provider.js +40 -0
- package/dist/providers/openai/openai-assistants.provider.js.map +1 -0
- package/dist/providers/openai/openai-responses.provider.d.ts +25 -0
- package/dist/providers/openai/openai-responses.provider.d.ts.map +1 -0
- package/dist/providers/openai/openai-responses.provider.js +35 -0
- package/dist/providers/openai/openai-responses.provider.js.map +1 -0
- package/dist/providers/openai/operations/create-conversation.operation.d.ts +7 -0
- package/dist/providers/openai/operations/create-conversation.operation.d.ts.map +1 -0
- package/dist/providers/openai/operations/create-conversation.operation.js +22 -0
- package/dist/providers/openai/operations/create-conversation.operation.js.map +1 -0
- package/dist/providers/openai/operations/create-response.operation.d.ts +13 -0
- package/dist/providers/openai/operations/create-response.operation.d.ts.map +1 -0
- package/dist/providers/openai/operations/create-response.operation.js +27 -0
- package/dist/providers/openai/operations/create-response.operation.js.map +1 -0
- package/dist/providers/openai/operations/submit-tool-outputs.operation.d.ts +17 -0
- package/dist/providers/openai/operations/submit-tool-outputs.operation.d.ts.map +1 -0
- package/dist/providers/openai/operations/submit-tool-outputs.operation.js +33 -0
- package/dist/providers/openai/operations/submit-tool-outputs.operation.js.map +1 -0
- package/dist/providers/openai/utils/error-mapper.d.ts +4 -0
- package/dist/providers/openai/utils/error-mapper.d.ts.map +1 -0
- package/dist/providers/openai/utils/error-mapper.js +45 -0
- package/dist/providers/openai/utils/error-mapper.js.map +1 -0
- package/dist/providers/openai/utils/usage-mapper.d.ts +10 -0
- package/dist/providers/openai/utils/usage-mapper.d.ts.map +1 -0
- package/dist/providers/openai/utils/usage-mapper.js +16 -0
- package/dist/providers/openai/utils/usage-mapper.js.map +1 -0
- package/dist/safe/index.d.ts +2 -0
- package/dist/safe/index.d.ts.map +1 -0
- package/dist/safe/index.js +6 -0
- package/dist/safe/index.js.map +1 -0
- package/dist/safe/safe-platform.client.d.ts +14 -0
- package/dist/safe/safe-platform.client.d.ts.map +1 -0
- package/dist/safe/safe-platform.client.js +56 -0
- package/dist/safe/safe-platform.client.js.map +1 -0
- package/dist/src/adapters/index.d.ts +2 -0
- package/dist/src/adapters/index.d.ts.map +1 -0
- package/dist/src/adapters/index.js +6 -0
- package/dist/src/adapters/index.js.map +1 -0
- package/dist/src/adapters/memory-conversation.store.d.ts +12 -0
- package/dist/src/adapters/memory-conversation.store.d.ts.map +1 -0
- package/dist/src/adapters/memory-conversation.store.js +25 -0
- package/dist/src/adapters/memory-conversation.store.js.map +1 -0
- package/dist/src/composed/platform-client.d.ts +29 -0
- package/dist/src/composed/platform-client.d.ts.map +1 -0
- package/dist/src/composed/platform-client.js +16 -0
- package/dist/src/composed/platform-client.js.map +1 -0
- package/dist/src/errors/index.d.ts +4 -0
- package/dist/src/errors/index.d.ts.map +1 -0
- package/dist/src/errors/index.js +11 -0
- package/dist/src/errors/index.js.map +1 -0
- package/dist/src/errors/provider.error.d.ts +16 -0
- package/dist/src/errors/provider.error.d.ts.map +1 -0
- package/dist/src/errors/provider.error.js +15 -0
- package/dist/src/errors/provider.error.js.map +1 -0
- package/dist/src/errors/sdk.error.d.ts +15 -0
- package/dist/src/errors/sdk.error.d.ts.map +1 -0
- package/dist/src/errors/sdk.error.js +16 -0
- package/dist/src/errors/sdk.error.js.map +1 -0
- package/dist/src/errors/tool-loop.error.d.ts +11 -0
- package/dist/src/errors/tool-loop.error.d.ts.map +1 -0
- package/dist/src/errors/tool-loop.error.js +30 -0
- package/dist/src/errors/tool-loop.error.js.map +1 -0
- package/dist/src/factory/index.d.ts +2 -0
- package/dist/src/factory/index.d.ts.map +1 -0
- package/dist/src/factory/index.js +6 -0
- package/dist/src/factory/index.js.map +1 -0
- package/dist/src/factory/provider.factory.d.ts +8 -0
- package/dist/src/factory/provider.factory.d.ts.map +1 -0
- package/dist/src/factory/provider.factory.js +49 -0
- package/dist/src/factory/provider.factory.js.map +1 -0
- package/dist/src/index.d.ts +13 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +34 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/providers/anthropic/anthropic.provider.d.ts +22 -0
- package/dist/src/providers/anthropic/anthropic.provider.d.ts.map +1 -0
- package/dist/src/providers/anthropic/anthropic.provider.js +34 -0
- package/dist/src/providers/anthropic/anthropic.provider.js.map +1 -0
- package/dist/src/providers/anthropic/loops/claude-tool.loop.d.ts +11 -0
- package/dist/src/providers/anthropic/loops/claude-tool.loop.d.ts.map +1 -0
- package/dist/src/providers/anthropic/loops/claude-tool.loop.js +58 -0
- package/dist/src/providers/anthropic/loops/claude-tool.loop.js.map +1 -0
- package/dist/src/providers/anthropic/utils/error-mapper.d.ts +4 -0
- package/dist/src/providers/anthropic/utils/error-mapper.d.ts.map +1 -0
- package/dist/src/providers/anthropic/utils/error-mapper.js +35 -0
- package/dist/src/providers/anthropic/utils/error-mapper.js.map +1 -0
- package/dist/src/providers/openai/builders/conversation-or-create.builder.d.ts +15 -0
- package/dist/src/providers/openai/builders/conversation-or-create.builder.d.ts.map +1 -0
- package/dist/src/providers/openai/builders/conversation-or-create.builder.js +18 -0
- package/dist/src/providers/openai/builders/conversation-or-create.builder.js.map +1 -0
- package/dist/src/providers/openai/loops/assistants-tool.loop.d.ts +19 -0
- package/dist/src/providers/openai/loops/assistants-tool.loop.d.ts.map +1 -0
- package/dist/src/providers/openai/loops/assistants-tool.loop.js +58 -0
- package/dist/src/providers/openai/loops/assistants-tool.loop.js.map +1 -0
- package/dist/src/providers/openai/loops/responses-tool.loop.d.ts +14 -0
- package/dist/src/providers/openai/loops/responses-tool.loop.d.ts.map +1 -0
- package/dist/src/providers/openai/loops/responses-tool.loop.js +87 -0
- package/dist/src/providers/openai/loops/responses-tool.loop.js.map +1 -0
- package/dist/src/providers/openai/openai-assistants.provider.d.ts +27 -0
- package/dist/src/providers/openai/openai-assistants.provider.d.ts.map +1 -0
- package/dist/src/providers/openai/openai-assistants.provider.js +40 -0
- package/dist/src/providers/openai/openai-assistants.provider.js.map +1 -0
- package/dist/src/providers/openai/openai-responses.provider.d.ts +25 -0
- package/dist/src/providers/openai/openai-responses.provider.d.ts.map +1 -0
- package/dist/src/providers/openai/openai-responses.provider.js +35 -0
- package/dist/src/providers/openai/openai-responses.provider.js.map +1 -0
- package/dist/src/providers/openai/operations/create-conversation.operation.d.ts +7 -0
- package/dist/src/providers/openai/operations/create-conversation.operation.d.ts.map +1 -0
- package/dist/src/providers/openai/operations/create-conversation.operation.js +22 -0
- package/dist/src/providers/openai/operations/create-conversation.operation.js.map +1 -0
- package/dist/src/providers/openai/operations/create-response.operation.d.ts +13 -0
- package/dist/src/providers/openai/operations/create-response.operation.d.ts.map +1 -0
- package/dist/src/providers/openai/operations/create-response.operation.js +27 -0
- package/dist/src/providers/openai/operations/create-response.operation.js.map +1 -0
- package/dist/src/providers/openai/operations/submit-tool-outputs.operation.d.ts +17 -0
- package/dist/src/providers/openai/operations/submit-tool-outputs.operation.d.ts.map +1 -0
- package/dist/src/providers/openai/operations/submit-tool-outputs.operation.js +33 -0
- package/dist/src/providers/openai/operations/submit-tool-outputs.operation.js.map +1 -0
- package/dist/src/providers/openai/utils/error-mapper.d.ts +4 -0
- package/dist/src/providers/openai/utils/error-mapper.d.ts.map +1 -0
- package/dist/src/providers/openai/utils/error-mapper.js +45 -0
- package/dist/src/providers/openai/utils/error-mapper.js.map +1 -0
- package/dist/src/providers/openai/utils/usage-mapper.d.ts +10 -0
- package/dist/src/providers/openai/utils/usage-mapper.d.ts.map +1 -0
- package/dist/src/providers/openai/utils/usage-mapper.js +16 -0
- package/dist/src/providers/openai/utils/usage-mapper.js.map +1 -0
- package/dist/src/safe/index.d.ts +2 -0
- package/dist/src/safe/index.d.ts.map +1 -0
- package/dist/src/safe/index.js +6 -0
- package/dist/src/safe/index.js.map +1 -0
- package/dist/src/safe/safe-platform.client.d.ts +14 -0
- package/dist/src/safe/safe-platform.client.d.ts.map +1 -0
- package/dist/src/safe/safe-platform.client.js +56 -0
- package/dist/src/safe/safe-platform.client.js.map +1 -0
- package/dist/src/types/ask-with-tools.types.d.ts +48 -0
- package/dist/src/types/ask-with-tools.types.d.ts.map +1 -0
- package/dist/src/types/ask-with-tools.types.js +3 -0
- package/dist/src/types/ask-with-tools.types.js.map +1 -0
- package/dist/src/types/client-config.interface.d.ts +33 -0
- package/dist/src/types/client-config.interface.d.ts.map +1 -0
- package/dist/src/types/client-config.interface.js +3 -0
- package/dist/src/types/client-config.interface.js.map +1 -0
- package/dist/src/types/conversation-store.interface.d.ts +24 -0
- package/dist/src/types/conversation-store.interface.d.ts.map +1 -0
- package/dist/src/types/conversation-store.interface.js +3 -0
- package/dist/src/types/conversation-store.interface.js.map +1 -0
- package/dist/src/types/index.d.ts +8 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +7 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/provider.interface.d.ts +13 -0
- package/dist/src/types/provider.interface.d.ts.map +1 -0
- package/dist/src/types/provider.interface.js +3 -0
- package/dist/src/types/provider.interface.js.map +1 -0
- package/dist/src/types/sdk-result.interface.d.ts +30 -0
- package/dist/src/types/sdk-result.interface.d.ts.map +1 -0
- package/dist/src/types/sdk-result.interface.js +11 -0
- package/dist/src/types/sdk-result.interface.js.map +1 -0
- package/dist/src/types/tool-handler.interface.d.ts +45 -0
- package/dist/src/types/tool-handler.interface.d.ts.map +1 -0
- package/dist/src/types/tool-handler.interface.js +3 -0
- package/dist/src/types/tool-handler.interface.js.map +1 -0
- package/dist/tests/safe-client.test.d.ts +2 -0
- package/dist/tests/safe-client.test.d.ts.map +1 -0
- package/dist/tests/safe-client.test.js +66 -0
- package/dist/tests/safe-client.test.js.map +1 -0
- package/dist/types/ask-with-tools.types.d.ts +48 -0
- package/dist/types/ask-with-tools.types.d.ts.map +1 -0
- package/dist/types/ask-with-tools.types.js +3 -0
- package/dist/types/ask-with-tools.types.js.map +1 -0
- package/dist/types/client-config.interface.d.ts +33 -0
- package/dist/types/client-config.interface.d.ts.map +1 -0
- package/dist/types/client-config.interface.js +3 -0
- package/dist/types/client-config.interface.js.map +1 -0
- package/dist/types/conversation-store.interface.d.ts +24 -0
- package/dist/types/conversation-store.interface.d.ts.map +1 -0
- package/dist/types/conversation-store.interface.js +3 -0
- package/dist/types/conversation-store.interface.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/provider.interface.d.ts +13 -0
- package/dist/types/provider.interface.d.ts.map +1 -0
- package/dist/types/provider.interface.js +3 -0
- package/dist/types/provider.interface.js.map +1 -0
- package/dist/types/sdk-result.interface.d.ts +30 -0
- package/dist/types/sdk-result.interface.d.ts.map +1 -0
- package/dist/types/sdk-result.interface.js +11 -0
- package/dist/types/sdk-result.interface.js.map +1 -0
- package/dist/types/tool-handler.interface.d.ts +45 -0
- package/dist/types/tool-handler.interface.d.ts.map +1 -0
- package/dist/types/tool-handler.interface.js +3 -0
- package/dist/types/tool-handler.interface.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/safe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/safe/index.ts"],"names":[],"mappings":";;;AAAA,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-platform.client.d.ts","sourceRoot":"","sources":["../../../src/safe/safe-platform.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,+BAA+B,CAAC;AAI/E;;;;GAIG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,UAAU;IAE3C,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;CAQvF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SafePlatformClient = void 0;
|
|
4
|
+
const sdk_result_interface_1 = require("../types/sdk-result.interface");
|
|
5
|
+
const sdk_error_1 = require("../errors/sdk.error");
|
|
6
|
+
/**
|
|
7
|
+
* Safe-layer wrapper around any AIProvider.
|
|
8
|
+
* All methods return SdkResult<T> — never throw.
|
|
9
|
+
* Use this in telbany controllers / services for clean error handling.
|
|
10
|
+
*/
|
|
11
|
+
class SafePlatformClient {
|
|
12
|
+
constructor(provider) {
|
|
13
|
+
this.provider = provider;
|
|
14
|
+
}
|
|
15
|
+
async askWithTools(params) {
|
|
16
|
+
try {
|
|
17
|
+
const result = await this.provider.askWithTools(params);
|
|
18
|
+
return (0, sdk_result_interface_1.ok)(result);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
return (0, sdk_result_interface_1.fail)(toFormattedError(err));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.SafePlatformClient = SafePlatformClient;
|
|
26
|
+
function toFormattedError(err) {
|
|
27
|
+
if (err instanceof sdk_error_1.SdkError) {
|
|
28
|
+
return {
|
|
29
|
+
code: err.code,
|
|
30
|
+
message: err.message,
|
|
31
|
+
hint: buildHint(err.code),
|
|
32
|
+
retryable: err.retryable,
|
|
33
|
+
retryAfterMs: err.retryAfterMs,
|
|
34
|
+
requestId: err.requestId,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
38
|
+
return {
|
|
39
|
+
code: 'UNKNOWN_ERROR',
|
|
40
|
+
message,
|
|
41
|
+
hint: 'An unexpected error occurred. Check server logs for details.',
|
|
42
|
+
retryable: false,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function buildHint(code) {
|
|
46
|
+
const hints = {
|
|
47
|
+
OPENAI_401: 'Check your OpenAI API key.',
|
|
48
|
+
OPENAI_429: 'Rate limited by OpenAI. Retry after the indicated delay.',
|
|
49
|
+
ANTHROPIC_401: 'Check your Anthropic API key.',
|
|
50
|
+
ANTHROPIC_429: 'Rate limited by Anthropic. Retry after the indicated delay.',
|
|
51
|
+
TOOL_LOOP_MAX_TURNS_EXCEEDED: 'The AI tool loop exceeded max turns. Consider reducing tool complexity.',
|
|
52
|
+
NO_TOOL_HANDLER_CONFIGURED: 'The AI requested tool calls but no ToolHandler was configured.',
|
|
53
|
+
};
|
|
54
|
+
return hints[code] ?? 'See error.message for details.';
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=safe-platform.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-platform.client.js","sourceRoot":"","sources":["../../../src/safe/safe-platform.client.ts"],"names":[],"mappings":";;;AAGA,wEAAyD;AACzD,mDAA+C;AAE/C;;;;GAIG;AACH,MAAa,kBAAkB;IAC7B,YAA6B,QAAoB;QAApB,aAAQ,GAAR,QAAQ,CAAY;IAAG,CAAC;IAErD,KAAK,CAAC,YAAY,CAAC,MAA0B;QAC3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACxD,OAAO,IAAA,yBAAE,EAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAA,2BAAI,EAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;CACF;AAXD,gDAWC;AAED,SAAS,gBAAgB,CAAC,GAAY;IACpC,IAAI,GAAG,YAAY,oBAAQ,EAAE,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO;QACP,IAAI,EAAE,8DAA8D;QACpE,SAAS,EAAE,KAAK;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAA2B;QACpC,UAAU,EAAE,4BAA4B;QACxC,UAAU,EAAE,0DAA0D;QACtE,aAAa,EAAE,+BAA+B;QAC9C,aAAa,EAAE,6DAA6D;QAC5E,4BAA4B,EAAE,yEAAyE;QACvG,0BAA0B,EAAE,gEAAgE;KAC7F,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,gCAAgC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** Normalized usage metrics across providers. */
|
|
2
|
+
export interface UsageMetrics {
|
|
3
|
+
inputTokens: number;
|
|
4
|
+
outputTokens: number;
|
|
5
|
+
totalTokens: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Input parameters for askWithTools() — provider-agnostic.
|
|
9
|
+
* telbany's buildResponseConfig produces the instructions/tools fields.
|
|
10
|
+
*/
|
|
11
|
+
export interface AskWithToolsParams {
|
|
12
|
+
/** App-level thread identifier (Thread.thread_id in MongoDB). */
|
|
13
|
+
threadKey: string;
|
|
14
|
+
/** Chatbot ID — passed to the tool handler for context resolution. */
|
|
15
|
+
chatbotId: string;
|
|
16
|
+
/** Organization ID — passed to tool handler for notifications. */
|
|
17
|
+
organizationId?: string;
|
|
18
|
+
/** The user's question / message text. */
|
|
19
|
+
userQuestion: string;
|
|
20
|
+
/** Pre-assembled system instructions (from buildResponseConfig or equivalent). */
|
|
21
|
+
instructions: string;
|
|
22
|
+
/** Pre-assembled tool definitions for this chatbot. */
|
|
23
|
+
tools?: unknown[];
|
|
24
|
+
/** Vector store IDs for file_search (OpenAI only). */
|
|
25
|
+
vectorStoreIds?: string[];
|
|
26
|
+
/** AI model override for this call. Falls back to ClientConfig.model. */
|
|
27
|
+
model?: string;
|
|
28
|
+
/** Media URLs attached by the user (images, files). */
|
|
29
|
+
mediaUrl?: string[];
|
|
30
|
+
}
|
|
31
|
+
/** Returned when the AI produced a plain text answer. */
|
|
32
|
+
export interface TextResult {
|
|
33
|
+
kind: 'text';
|
|
34
|
+
outputText: string;
|
|
35
|
+
responseId: string;
|
|
36
|
+
usage: UsageMetrics | null;
|
|
37
|
+
model: string;
|
|
38
|
+
}
|
|
39
|
+
/** Returned when a tool call triggered an app-level side effect (ticket, product, etc.). */
|
|
40
|
+
export interface ToolResult {
|
|
41
|
+
kind: 'toolResult';
|
|
42
|
+
toolCallResult: unknown;
|
|
43
|
+
responseId: string;
|
|
44
|
+
usage: UsageMetrics | null;
|
|
45
|
+
model: string;
|
|
46
|
+
}
|
|
47
|
+
export type AskWithToolsResult = TextResult | ToolResult;
|
|
48
|
+
//# sourceMappingURL=ask-with-tools.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-with-tools.types.d.ts","sourceRoot":"","sources":["../../../src/types/ask-with-tools.types.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAElB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAElB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IAErB,kFAAkF;IAClF,YAAY,EAAE,MAAM,CAAC;IAErB,uDAAuD;IACvD,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAElB,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,4FAA4F;AAC5F,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-with-tools.types.js","sourceRoot":"","sources":["../../../src/types/ask-with-tools.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ConversationStore } from './conversation-store.interface';
|
|
2
|
+
import type { ToolHandler } from './tool-handler.interface';
|
|
3
|
+
/** Which AI provider to use for a given client instance. */
|
|
4
|
+
export type ProviderType = 'openai-responses' | 'openai-assistants' | 'anthropic';
|
|
5
|
+
/** Options accepted by createPlatformClient(). */
|
|
6
|
+
export interface ClientConfig {
|
|
7
|
+
/** AI provider to use. */
|
|
8
|
+
provider: ProviderType;
|
|
9
|
+
/** Provider API key (OpenAI or Anthropic depending on provider). */
|
|
10
|
+
apiKey: string;
|
|
11
|
+
/**
|
|
12
|
+
* Default model to use when none is specified per-call.
|
|
13
|
+
* OpenAI: 'gpt-4o', 'gpt-4o-mini', etc.
|
|
14
|
+
* Anthropic: 'claude-opus-4-5', 'claude-sonnet-4-5', etc.
|
|
15
|
+
*/
|
|
16
|
+
model?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Pluggable persistence for conversation state.
|
|
19
|
+
* Required for openai-responses (maintains conversationId + lastResponseId).
|
|
20
|
+
* Optional for openai-assistants and anthropic.
|
|
21
|
+
*/
|
|
22
|
+
conversationStore?: ConversationStore;
|
|
23
|
+
/**
|
|
24
|
+
* Pluggable tool handler — the app injects its own tool resolution logic.
|
|
25
|
+
* Required when the chatbot has custom assistant functions.
|
|
26
|
+
*/
|
|
27
|
+
toolHandler?: ToolHandler;
|
|
28
|
+
/** Maximum retries on transient errors. Default: 2. */
|
|
29
|
+
maxRetries?: number;
|
|
30
|
+
/** Request timeout in milliseconds. Default: 60000. */
|
|
31
|
+
timeoutMs?: number;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=client-config.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-config.interface.d.ts","sourceRoot":"","sources":["../../../src/types/client-config.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,4DAA4D;AAC5D,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,WAAW,CAAC;AAElF,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,QAAQ,EAAE,YAAY,CAAC;IAEvB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAEtC;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-config.interface.js","sourceRoot":"","sources":["../../../src/types/client-config.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pluggable persistence contract for conversation state.
|
|
3
|
+
*
|
|
4
|
+
* Telbany implements this with Mongoose (Thread.openai_conversation_id / last_response_id).
|
|
5
|
+
* The SDK ships a MemoryConversationStore for tests and lightweight use cases.
|
|
6
|
+
*
|
|
7
|
+
* threadKey — the app-level identifier (e.g. Thread.thread_id from MongoDB).
|
|
8
|
+
*/
|
|
9
|
+
export interface ConversationState {
|
|
10
|
+
conversationId: string;
|
|
11
|
+
lastResponseId?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ConversationStore {
|
|
14
|
+
/** Load state for a thread. Returns null when no conversation has been created yet. */
|
|
15
|
+
load(threadKey: string): Promise<ConversationState | null>;
|
|
16
|
+
/** Persist updated state after each turn. */
|
|
17
|
+
save(threadKey: string, state: ConversationState): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Create a new conversation and persist it.
|
|
20
|
+
* Called when load() returns null and a new conversation must be created.
|
|
21
|
+
*/
|
|
22
|
+
create(threadKey: string, conversationId: string): Promise<ConversationState>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=conversation-store.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-store.interface.d.ts","sourceRoot":"","sources":["../../../src/types/conversation-store.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,uFAAuF;IACvF,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAE3D,6CAA6C;IAC7C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;;OAGG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-store.interface.js","sourceRoot":"","sources":["../../../src/types/conversation-store.interface.ts"],"names":[],"mappings":""}
|