@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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AACjB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,qDAAsE;AAA7D,gHAAA,aAAa,OAAA;AAAE,qHAAA,kBAAkB,OAAA"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { SdkError } from './sdk.error';
|
|
2
|
-
/** Error from the AI provider itself (API error, rate limit, auth failure). */
|
|
3
|
-
export declare class ProviderError extends SdkError {
|
|
4
|
-
readonly statusCode?: number;
|
|
5
|
-
readonly provider: string;
|
|
6
|
-
constructor({ provider, code, message, statusCode, retryable, retryAfterMs, requestId, }: {
|
|
7
|
-
provider: string;
|
|
8
|
-
code: string;
|
|
9
|
-
message: string;
|
|
10
|
-
statusCode?: number;
|
|
11
|
-
retryable?: boolean;
|
|
12
|
-
retryAfterMs?: number;
|
|
13
|
-
requestId?: string;
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=provider.error.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider.error.d.ts","sourceRoot":"","sources":["../../../src/errors/provider.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,+EAA+E;AAC/E,qBAAa,aAAc,SAAQ,QAAQ;IACzC,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpC,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAErB,EACV,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,UAAU,EACV,SAAiB,EACjB,YAAY,EACZ,SAAS,GACV,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;CAMF"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProviderError = void 0;
|
|
4
|
-
const sdk_error_1 = require("./sdk.error");
|
|
5
|
-
/** Error from the AI provider itself (API error, rate limit, auth failure). */
|
|
6
|
-
class ProviderError extends sdk_error_1.SdkError {
|
|
7
|
-
constructor({ provider, code, message, statusCode, retryable = false, retryAfterMs, requestId, }) {
|
|
8
|
-
super({ code, message, retryable, retryAfterMs, requestId });
|
|
9
|
-
this.name = 'ProviderError';
|
|
10
|
-
this.provider = provider;
|
|
11
|
-
this.statusCode = statusCode;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
exports.ProviderError = ProviderError;
|
|
15
|
-
//# sourceMappingURL=provider.error.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider.error.js","sourceRoot":"","sources":["../../../src/errors/provider.error.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AAEvC,+EAA+E;AAC/E,MAAa,aAAc,SAAQ,oBAAQ;IAIzC,YAAY,EACV,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,UAAU,EACV,SAAS,GAAG,KAAK,EACjB,YAAY,EACZ,SAAS,GASV;QACC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AA1BD,sCA0BC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/** Base SDK error — all thrown errors extend this. */
|
|
2
|
-
export declare class SdkError extends Error {
|
|
3
|
-
readonly code: string;
|
|
4
|
-
readonly retryable: boolean;
|
|
5
|
-
readonly retryAfterMs?: number;
|
|
6
|
-
readonly requestId?: string;
|
|
7
|
-
constructor({ code, message, retryable, retryAfterMs, requestId, }: {
|
|
8
|
-
code: string;
|
|
9
|
-
message: string;
|
|
10
|
-
retryable?: boolean;
|
|
11
|
-
retryAfterMs?: number;
|
|
12
|
-
requestId?: string;
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=sdk.error.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.error.d.ts","sourceRoot":"","sources":["../../../src/errors/sdk.error.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEvB,EACV,IAAI,EACJ,OAAO,EACP,SAAiB,EACjB,YAAY,EACZ,SAAS,GACV,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;CAQF"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SdkError = void 0;
|
|
4
|
-
/** Base SDK error — all thrown errors extend this. */
|
|
5
|
-
class SdkError extends Error {
|
|
6
|
-
constructor({ code, message, retryable = false, retryAfterMs, requestId, }) {
|
|
7
|
-
super(message);
|
|
8
|
-
this.name = 'SdkError';
|
|
9
|
-
this.code = code;
|
|
10
|
-
this.retryable = retryable;
|
|
11
|
-
this.retryAfterMs = retryAfterMs;
|
|
12
|
-
this.requestId = requestId;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.SdkError = SdkError;
|
|
16
|
-
//# sourceMappingURL=sdk.error.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sdk.error.js","sourceRoot":"","sources":["../../../src/errors/sdk.error.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,MAAa,QAAS,SAAQ,KAAK;IAMjC,YAAY,EACV,IAAI,EACJ,OAAO,EACP,SAAS,GAAG,KAAK,EACjB,YAAY,EACZ,SAAS,GAOV;QACC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AA1BD,4BA0BC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { SdkError } from './sdk.error';
|
|
2
|
-
/** Error thrown when the AI tool loop exceeds the maximum number of turns. */
|
|
3
|
-
export declare class ToolLoopError extends SdkError {
|
|
4
|
-
readonly turnsExceeded: number;
|
|
5
|
-
constructor(turnsExceeded: number);
|
|
6
|
-
}
|
|
7
|
-
/** Error thrown when no tool handler is configured but the AI requests tool calls. */
|
|
8
|
-
export declare class NoToolHandlerError extends SdkError {
|
|
9
|
-
constructor();
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=tool-loop.error.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-loop.error.d.ts","sourceRoot":"","sources":["../../../src/errors/tool-loop.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,8EAA8E;AAC9E,qBAAa,aAAc,SAAQ,QAAQ;IACzC,SAAgB,aAAa,EAAE,MAAM,CAAC;gBAE1B,aAAa,EAAE,MAAM;CASlC;AAED,sFAAsF;AACtF,qBAAa,kBAAmB,SAAQ,QAAQ;;CAS/C"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NoToolHandlerError = exports.ToolLoopError = void 0;
|
|
4
|
-
const sdk_error_1 = require("./sdk.error");
|
|
5
|
-
/** Error thrown when the AI tool loop exceeds the maximum number of turns. */
|
|
6
|
-
class ToolLoopError extends sdk_error_1.SdkError {
|
|
7
|
-
constructor(turnsExceeded) {
|
|
8
|
-
super({
|
|
9
|
-
code: 'TOOL_LOOP_MAX_TURNS_EXCEEDED',
|
|
10
|
-
message: `Tool loop exceeded ${turnsExceeded} turns without a final answer`,
|
|
11
|
-
retryable: false,
|
|
12
|
-
});
|
|
13
|
-
this.name = 'ToolLoopError';
|
|
14
|
-
this.turnsExceeded = turnsExceeded;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.ToolLoopError = ToolLoopError;
|
|
18
|
-
/** Error thrown when no tool handler is configured but the AI requests tool calls. */
|
|
19
|
-
class NoToolHandlerError extends sdk_error_1.SdkError {
|
|
20
|
-
constructor() {
|
|
21
|
-
super({
|
|
22
|
-
code: 'NO_TOOL_HANDLER_CONFIGURED',
|
|
23
|
-
message: 'AI requested tool calls but no ToolHandler was configured in ClientConfig',
|
|
24
|
-
retryable: false,
|
|
25
|
-
});
|
|
26
|
-
this.name = 'NoToolHandlerError';
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
exports.NoToolHandlerError = NoToolHandlerError;
|
|
30
|
-
//# sourceMappingURL=tool-loop.error.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-loop.error.js","sourceRoot":"","sources":["../../../src/errors/tool-loop.error.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AAEvC,8EAA8E;AAC9E,MAAa,aAAc,SAAQ,oBAAQ;IAGzC,YAAY,aAAqB;QAC/B,KAAK,CAAC;YACJ,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,sBAAsB,aAAa,+BAA+B;YAC3E,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF;AAZD,sCAYC;AAED,sFAAsF;AACtF,MAAa,kBAAmB,SAAQ,oBAAQ;IAC9C;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,2EAA2E;YACpF,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AATD,gDASC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/factory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildProvider = void 0;
|
|
4
|
-
var provider_factory_1 = require("./provider.factory");
|
|
5
|
-
Object.defineProperty(exports, "buildProvider", { enumerable: true, get: function () { return provider_factory_1.buildProvider; } });
|
|
6
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factory/index.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AAA1C,iHAAA,aAAa,OAAA"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { ClientConfig } from '../types/client-config.interface';
|
|
2
|
-
import type { AIProvider } from '../types/provider.interface';
|
|
3
|
-
/**
|
|
4
|
-
* Build the correct AIProvider implementation from a ClientConfig.
|
|
5
|
-
* Add new providers here without touching any other file.
|
|
6
|
-
*/
|
|
7
|
-
export declare function buildProvider(config: ClientConfig): AIProvider;
|
|
8
|
-
//# sourceMappingURL=provider.factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider.factory.d.ts","sourceRoot":"","sources":["../../../src/factory/provider.factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAM9D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAoC9D"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildProvider = buildProvider;
|
|
4
|
-
const openai_responses_provider_1 = require("../providers/openai/openai-responses.provider");
|
|
5
|
-
const openai_assistants_provider_1 = require("../providers/openai/openai-assistants.provider");
|
|
6
|
-
const anthropic_provider_1 = require("../providers/anthropic/anthropic.provider");
|
|
7
|
-
const memory_conversation_store_1 = require("../adapters/memory-conversation.store");
|
|
8
|
-
/**
|
|
9
|
-
* Build the correct AIProvider implementation from a ClientConfig.
|
|
10
|
-
* Add new providers here without touching any other file.
|
|
11
|
-
*/
|
|
12
|
-
function buildProvider(config) {
|
|
13
|
-
switch (config.provider) {
|
|
14
|
-
case 'openai-responses': {
|
|
15
|
-
const store = config.conversationStore ?? new memory_conversation_store_1.MemoryConversationStore();
|
|
16
|
-
return new openai_responses_provider_1.OpenAIResponsesProvider({
|
|
17
|
-
apiKey: config.apiKey,
|
|
18
|
-
model: config.model ?? 'gpt-4o',
|
|
19
|
-
conversationStore: store,
|
|
20
|
-
toolHandler: config.toolHandler,
|
|
21
|
-
maxRetries: config.maxRetries,
|
|
22
|
-
timeoutMs: config.timeoutMs,
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
case 'openai-assistants': {
|
|
26
|
-
return new openai_assistants_provider_1.OpenAIAssistantsProvider({
|
|
27
|
-
apiKey: config.apiKey,
|
|
28
|
-
assistantId: config.model ?? '',
|
|
29
|
-
model: 'gpt-4o',
|
|
30
|
-
toolHandler: config.toolHandler,
|
|
31
|
-
maxRetries: config.maxRetries,
|
|
32
|
-
timeoutMs: config.timeoutMs,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
case 'anthropic': {
|
|
36
|
-
return new anthropic_provider_1.AnthropicProvider({
|
|
37
|
-
apiKey: config.apiKey,
|
|
38
|
-
model: config.model ?? 'claude-opus-4-5',
|
|
39
|
-
toolHandler: config.toolHandler,
|
|
40
|
-
maxRetries: config.maxRetries,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
default: {
|
|
44
|
-
const exhaustive = config.provider;
|
|
45
|
-
throw new Error(`Unknown provider: ${String(exhaustive)}`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=provider.factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider.factory.js","sourceRoot":"","sources":["../../../src/factory/provider.factory.ts"],"names":[],"mappings":";;AAWA,sCAoCC;AA7CD,6FAAwF;AACxF,+FAA0F;AAC1F,kFAA8E;AAC9E,qFAAgF;AAEhF;;;GAGG;AACH,SAAgB,aAAa,CAAC,MAAoB;IAChD,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,KAAK,GAAG,MAAM,CAAC,iBAAiB,IAAI,IAAI,mDAAuB,EAAE,CAAC;YACxE,OAAO,IAAI,mDAAuB,CAAC;gBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,QAAQ;gBAC/B,iBAAiB,EAAE,KAAK;gBACxB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,OAAO,IAAI,qDAAwB,CAAC;gBAClC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;gBAC/B,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,OAAO,IAAI,sCAAiB,CAAC;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,iBAAiB;gBACxC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,UAAU,GAAU,MAAM,CAAC,QAAQ,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/src/index.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export { createPlatformClient } from './composed/platform-client';
|
|
2
|
-
export type { PlatformClient } from './composed/platform-client';
|
|
3
|
-
export type { ClientConfig, ProviderType, AIProvider, AskWithToolsParams, AskWithToolsResult, TextResult, ToolResult, UsageMetrics, ConversationState, ConversationStore, RawToolCall, ToolOutput, ToolHandler, ToolHandlerContext, SdkResult, FormattedError, } from './types';
|
|
4
|
-
export { ok, fail } from './types';
|
|
5
|
-
export { SdkError } from './errors/sdk.error';
|
|
6
|
-
export { ProviderError } from './errors/provider.error';
|
|
7
|
-
export { ToolLoopError, NoToolHandlerError } from './errors/tool-loop.error';
|
|
8
|
-
export { MemoryConversationStore } from './adapters/memory-conversation.store';
|
|
9
|
-
export { OpenAIResponsesProvider } from './providers/openai/openai-responses.provider';
|
|
10
|
-
export { OpenAIAssistantsProvider } from './providers/openai/openai-assistants.provider';
|
|
11
|
-
export { AnthropicProvider } from './providers/anthropic/anthropic.provider';
|
|
12
|
-
export { SafePlatformClient } from './safe/safe-platform.client';
|
|
13
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAG/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC"}
|
package/dist/src/index.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// ──────────────────────────────────────────────────────────────────────
|
|
3
|
-
// @mohamedtebo/convai-platform — public API
|
|
4
|
-
// ──────────────────────────────────────────────────────────────────────
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.SafePlatformClient = exports.AnthropicProvider = exports.OpenAIAssistantsProvider = exports.OpenAIResponsesProvider = exports.MemoryConversationStore = exports.NoToolHandlerError = exports.ToolLoopError = exports.ProviderError = exports.SdkError = exports.fail = exports.ok = exports.createPlatformClient = void 0;
|
|
7
|
-
// Primary composed entry point
|
|
8
|
-
var platform_client_1 = require("./composed/platform-client");
|
|
9
|
-
Object.defineProperty(exports, "createPlatformClient", { enumerable: true, get: function () { return platform_client_1.createPlatformClient; } });
|
|
10
|
-
var types_1 = require("./types");
|
|
11
|
-
Object.defineProperty(exports, "ok", { enumerable: true, get: function () { return types_1.ok; } });
|
|
12
|
-
Object.defineProperty(exports, "fail", { enumerable: true, get: function () { return types_1.fail; } });
|
|
13
|
-
// Errors
|
|
14
|
-
var sdk_error_1 = require("./errors/sdk.error");
|
|
15
|
-
Object.defineProperty(exports, "SdkError", { enumerable: true, get: function () { return sdk_error_1.SdkError; } });
|
|
16
|
-
var provider_error_1 = require("./errors/provider.error");
|
|
17
|
-
Object.defineProperty(exports, "ProviderError", { enumerable: true, get: function () { return provider_error_1.ProviderError; } });
|
|
18
|
-
var tool_loop_error_1 = require("./errors/tool-loop.error");
|
|
19
|
-
Object.defineProperty(exports, "ToolLoopError", { enumerable: true, get: function () { return tool_loop_error_1.ToolLoopError; } });
|
|
20
|
-
Object.defineProperty(exports, "NoToolHandlerError", { enumerable: true, get: function () { return tool_loop_error_1.NoToolHandlerError; } });
|
|
21
|
-
// Built-in adapters
|
|
22
|
-
var memory_conversation_store_1 = require("./adapters/memory-conversation.store");
|
|
23
|
-
Object.defineProperty(exports, "MemoryConversationStore", { enumerable: true, get: function () { return memory_conversation_store_1.MemoryConversationStore; } });
|
|
24
|
-
// Individual providers (for consumers who want fine-grained control)
|
|
25
|
-
var openai_responses_provider_1 = require("./providers/openai/openai-responses.provider");
|
|
26
|
-
Object.defineProperty(exports, "OpenAIResponsesProvider", { enumerable: true, get: function () { return openai_responses_provider_1.OpenAIResponsesProvider; } });
|
|
27
|
-
var openai_assistants_provider_1 = require("./providers/openai/openai-assistants.provider");
|
|
28
|
-
Object.defineProperty(exports, "OpenAIAssistantsProvider", { enumerable: true, get: function () { return openai_assistants_provider_1.OpenAIAssistantsProvider; } });
|
|
29
|
-
var anthropic_provider_1 = require("./providers/anthropic/anthropic.provider");
|
|
30
|
-
Object.defineProperty(exports, "AnthropicProvider", { enumerable: true, get: function () { return anthropic_provider_1.AnthropicProvider; } });
|
|
31
|
-
// Safe layer (standalone)
|
|
32
|
-
var safe_platform_client_1 = require("./safe/safe-platform.client");
|
|
33
|
-
Object.defineProperty(exports, "SafePlatformClient", { enumerable: true, get: function () { return safe_platform_client_1.SafePlatformClient; } });
|
|
34
|
-
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,yEAAyE;AACzE,4CAA4C;AAC5C,yEAAyE;;;AAEzE,+BAA+B;AAC/B,8DAAkE;AAAzD,uHAAA,oBAAoB,OAAA;AAsB7B,iCAAmC;AAA1B,2FAAA,EAAE,OAAA;AAAE,6FAAA,IAAI,OAAA;AAEjB,SAAS;AACT,gDAA8C;AAArC,qGAAA,QAAQ,OAAA;AACjB,0DAAwD;AAA/C,+GAAA,aAAa,OAAA;AACtB,4DAA6E;AAApE,gHAAA,aAAa,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AAE1C,oBAAoB;AACpB,kFAA+E;AAAtE,oIAAA,uBAAuB,OAAA;AAEhC,qEAAqE;AACrE,0FAAuF;AAA9E,oIAAA,uBAAuB,OAAA;AAChC,4FAAyF;AAAhF,sIAAA,wBAAwB,OAAA;AACjC,+EAA6E;AAApE,uHAAA,iBAAiB,OAAA;AAE1B,0BAA0B;AAC1B,oEAAiE;AAAxD,0HAAA,kBAAkB,OAAA"}
|
|
@@ -1,22 +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 AnthropicProviderConfig {
|
|
5
|
-
apiKey: string;
|
|
6
|
-
model: string;
|
|
7
|
-
toolHandler?: ToolHandler;
|
|
8
|
-
maxRetries?: number;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Anthropic Claude provider.
|
|
12
|
-
* Implements the same AIProvider interface as the OpenAI providers
|
|
13
|
-
* so telbany can swap providers by changing a single config field.
|
|
14
|
-
*/
|
|
15
|
-
export declare class AnthropicProvider implements AIProvider {
|
|
16
|
-
private readonly anthropic;
|
|
17
|
-
private readonly model;
|
|
18
|
-
private readonly handler?;
|
|
19
|
-
constructor(config: AnthropicProviderConfig);
|
|
20
|
-
askWithTools(params: AskWithToolsParams): Promise<AskWithToolsResult>;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=anthropic.provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.provider.d.ts","sourceRoot":"","sources":["../../../../src/providers/anthropic/anthropic.provider.ts"],"names":[],"mappings":"AAAA,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;AAItE,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,UAAU;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;gBAE3B,MAAM,EAAE,uBAAuB;IAYrC,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAU5E"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AnthropicProvider = void 0;
|
|
4
|
-
const claude_tool_loop_1 = require("./loops/claude-tool.loop");
|
|
5
|
-
const error_mapper_1 = require("./utils/error-mapper");
|
|
6
|
-
/**
|
|
7
|
-
* Anthropic Claude provider.
|
|
8
|
-
* Implements the same AIProvider interface as the OpenAI providers
|
|
9
|
-
* so telbany can swap providers by changing a single config field.
|
|
10
|
-
*/
|
|
11
|
-
class AnthropicProvider {
|
|
12
|
-
constructor(config) {
|
|
13
|
-
try {
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
15
|
-
const Anthropic = require('@anthropic-ai/sdk');
|
|
16
|
-
this.anthropic = new Anthropic({ apiKey: config.apiKey, maxRetries: config.maxRetries ?? 2 });
|
|
17
|
-
}
|
|
18
|
-
catch {
|
|
19
|
-
throw new Error('@anthropic-ai/sdk is required when using AnthropicProvider. Run: npm install @anthropic-ai/sdk');
|
|
20
|
-
}
|
|
21
|
-
this.model = config.model;
|
|
22
|
-
this.handler = config.toolHandler;
|
|
23
|
-
}
|
|
24
|
-
async askWithTools(params) {
|
|
25
|
-
try {
|
|
26
|
-
return await (0, claude_tool_loop_1.runClaudeToolLoop)({ anthropic: this.anthropic, model: this.model, handler: this.handler }, params);
|
|
27
|
-
}
|
|
28
|
-
catch (err) {
|
|
29
|
-
throw (0, error_mapper_1.mapAnthropicError)(err);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
exports.AnthropicProvider = AnthropicProvider;
|
|
34
|
-
//# sourceMappingURL=anthropic.provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.provider.js","sourceRoot":"","sources":["../../../../src/providers/anthropic/anthropic.provider.ts"],"names":[],"mappings":";;;AAGA,+DAA6D;AAC7D,uDAAyD;AASzD;;;;GAIG;AACH,MAAa,iBAAiB;IAK5B,YAAY,MAA+B;QACzC,IAAI,CAAC;YACH,8DAA8D;YAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,gGAAgG,CAAC,CAAC;QACpH,CAAC;QACD,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,IAAI,CAAC;YACH,OAAO,MAAM,IAAA,oCAAiB,EAC5B,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EACvE,MAAM,CACP,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAA,gCAAiB,EAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;CACF;AA3BD,8CA2BC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { AskWithToolsParams, AskWithToolsResult } from '../../../types/ask-with-tools.types';
|
|
2
|
-
import type { ToolHandler } from '../../../types/tool-handler.interface';
|
|
3
|
-
interface ClaudeLoopContext {
|
|
4
|
-
anthropic: unknown;
|
|
5
|
-
model: string;
|
|
6
|
-
handler?: ToolHandler;
|
|
7
|
-
}
|
|
8
|
-
/** Run the Anthropic tool loop for one user turn. */
|
|
9
|
-
export declare function runClaudeToolLoop(ctx: ClaudeLoopContext, params: AskWithToolsParams): Promise<AskWithToolsResult>;
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=claude-tool.loop.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-tool.loop.d.ts","sourceRoot":"","sources":["../../../../../src/providers/anthropic/loops/claude-tool.loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,EAA2B,MAAM,uCAAuC,CAAC;AAKlG,UAAU,iBAAiB;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAID,qDAAqD;AACrD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CA+C7B"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.runClaudeToolLoop = runClaudeToolLoop;
|
|
4
|
-
const errors_1 = require("../../../errors");
|
|
5
|
-
const MAX_TURNS = 10;
|
|
6
|
-
/** Run the Anthropic tool loop for one user turn. */
|
|
7
|
-
async function runClaudeToolLoop(ctx, params) {
|
|
8
|
-
const { anthropic, model, handler } = ctx;
|
|
9
|
-
const messages = [{ role: 'user', content: params.userQuestion }];
|
|
10
|
-
for (let turn = 0; turn < MAX_TURNS; turn++) {
|
|
11
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
-
const sdk = anthropic;
|
|
13
|
-
const response = await sdk.messages.create({
|
|
14
|
-
model: params.model ?? model,
|
|
15
|
-
max_tokens: 4096,
|
|
16
|
-
system: params.instructions,
|
|
17
|
-
tools: params.tools ?? [],
|
|
18
|
-
messages,
|
|
19
|
-
});
|
|
20
|
-
const responseId = response.id;
|
|
21
|
-
const stopReason = response.stop_reason;
|
|
22
|
-
if (stopReason === 'end_turn') {
|
|
23
|
-
const text = response.content
|
|
24
|
-
.filter((b) => b.type === 'text')
|
|
25
|
-
.map((b) => b.text ?? '')
|
|
26
|
-
.join('');
|
|
27
|
-
return { kind: 'text', outputText: text, responseId, usage: mapClaudeUsage(response.usage), model: params.model ?? model };
|
|
28
|
-
}
|
|
29
|
-
if (stopReason === 'tool_use') {
|
|
30
|
-
if (!handler)
|
|
31
|
-
throw new errors_1.NoToolHandlerError();
|
|
32
|
-
messages.push({ role: 'assistant', content: response.content });
|
|
33
|
-
const toolUseBlocks = response.content.filter((b) => b.type === 'tool_use');
|
|
34
|
-
const calls = toolUseBlocks.map((b) => ({ id: b.id, name: b.name, arguments: JSON.stringify(b.input) }));
|
|
35
|
-
const toolContext = { threadKey: params.threadKey, chatbotId: params.chatbotId, organizationId: params.organizationId, userQuestion: params.userQuestion };
|
|
36
|
-
const outputs = [];
|
|
37
|
-
for (const call of calls) {
|
|
38
|
-
const out = await handler.buildOutput(call, toolContext);
|
|
39
|
-
if (out)
|
|
40
|
-
outputs.push(out);
|
|
41
|
-
}
|
|
42
|
-
const appResult = await handler.extractResult(calls, outputs, toolContext);
|
|
43
|
-
if (appResult !== null) {
|
|
44
|
-
return { kind: 'toolResult', toolCallResult: appResult, responseId, usage: null, model: params.model ?? model };
|
|
45
|
-
}
|
|
46
|
-
const toolResultContent = outputs.map((o) => ({ type: 'tool_result', tool_use_id: o.call_id, content: o.output }));
|
|
47
|
-
messages.push({ role: 'user', content: toolResultContent });
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
throw new errors_1.ToolLoopError(MAX_TURNS);
|
|
51
|
-
}
|
|
52
|
-
function mapClaudeUsage(usage) {
|
|
53
|
-
if (!usage || typeof usage !== 'object')
|
|
54
|
-
return null;
|
|
55
|
-
const u = usage;
|
|
56
|
-
return { inputTokens: u['input_tokens'] ?? 0, outputTokens: u['output_tokens'] ?? 0, totalTokens: (u['input_tokens'] ?? 0) + (u['output_tokens'] ?? 0) };
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=claude-tool.loop.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-tool.loop.js","sourceRoot":"","sources":["../../../../../src/providers/anthropic/loops/claude-tool.loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-mapper.d.ts","sourceRoot":"","sources":["../../../../../src/providers/anthropic/utils/error-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAS/D,2DAA2D;AAC3D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAmB7D"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mapAnthropicError = mapAnthropicError;
|
|
4
|
-
const provider_error_1 = require("../../../errors/provider.error");
|
|
5
|
-
/** Map an Anthropic SDK error to a typed ProviderError. */
|
|
6
|
-
function mapAnthropicError(err) {
|
|
7
|
-
const apiErr = err;
|
|
8
|
-
if (apiErr?.status !== undefined) {
|
|
9
|
-
const retryable = apiErr.status === 429 || (apiErr.status >= 500 && apiErr.status < 600);
|
|
10
|
-
const retryAfterMs = retryable ? parseRetryAfter(apiErr.headers) : undefined;
|
|
11
|
-
return new provider_error_1.ProviderError({
|
|
12
|
-
provider: 'anthropic',
|
|
13
|
-
code: `ANTHROPIC_${apiErr.status}`,
|
|
14
|
-
message: apiErr.error?.message ?? apiErr.message ?? 'Anthropic API error',
|
|
15
|
-
statusCode: apiErr.status,
|
|
16
|
-
retryable,
|
|
17
|
-
retryAfterMs,
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
return new provider_error_1.ProviderError({
|
|
21
|
-
provider: 'anthropic',
|
|
22
|
-
code: 'ANTHROPIC_UNEXPECTED',
|
|
23
|
-
message: err instanceof Error ? err.message : 'Unexpected Anthropic error',
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
function parseRetryAfter(headers) {
|
|
27
|
-
if (!headers)
|
|
28
|
-
return undefined;
|
|
29
|
-
const v = headers['retry-after'] ?? headers['Retry-After'];
|
|
30
|
-
if (!v)
|
|
31
|
-
return undefined;
|
|
32
|
-
const s = parseInt(v, 10);
|
|
33
|
-
return isNaN(s) ? undefined : s * 1000;
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=error-mapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-mapper.js","sourceRoot":"","sources":["../../../../../src/providers/anthropic/utils/error-mapper.ts"],"names":[],"mappings":";;AAUA,8CAmBC;AA7BD,mEAA+D;AAS/D,2DAA2D;AAC3D,SAAgB,iBAAiB,CAAC,GAAY;IAC5C,MAAM,MAAM,GAAG,GAAwB,CAAC;IACxC,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QACzF,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,OAAO,IAAI,8BAAa,CAAC;YACvB,QAAQ,EAAE,WAAW;YACrB,IAAI,EAAE,aAAa,MAAM,CAAC,MAAM,EAAE;YAClC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,qBAAqB;YACzE,UAAU,EAAE,MAAM,CAAC,MAAM;YACzB,SAAS;YACT,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,8BAAa,CAAC;QACvB,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B;KAC3E,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,OAAgC;IACvD,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1B,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACzC,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type OpenAI from 'openai';
|
|
2
|
-
import type { ConversationStore } from '../../../types/conversation-store.interface';
|
|
3
|
-
/**
|
|
4
|
-
* Resolve the conversationId for a thread.
|
|
5
|
-
* Creates a new OpenAI conversation when none exists yet (lazy creation).
|
|
6
|
-
*/
|
|
7
|
-
export declare function resolveConversationId({ openai, store, threadKey, }: {
|
|
8
|
-
openai: OpenAI;
|
|
9
|
-
store: ConversationStore;
|
|
10
|
-
threadKey: string;
|
|
11
|
-
}): Promise<{
|
|
12
|
-
conversationId: string;
|
|
13
|
-
lastResponseId: string | undefined;
|
|
14
|
-
}>;
|
|
15
|
-
//# sourceMappingURL=conversation-or-create.builder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-or-create.builder.d.ts","sourceRoot":"","sources":["../../../../../src/providers/openai/builders/conversation-or-create.builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAGrF;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,MAAM,EACN,KAAK,EACL,SAAS,GACV,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,iBAAiB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CAU1E"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveConversationId = resolveConversationId;
|
|
4
|
-
const create_conversation_operation_1 = require("../operations/create-conversation.operation");
|
|
5
|
-
/**
|
|
6
|
-
* Resolve the conversationId for a thread.
|
|
7
|
-
* Creates a new OpenAI conversation when none exists yet (lazy creation).
|
|
8
|
-
*/
|
|
9
|
-
async function resolveConversationId({ openai, store, threadKey, }) {
|
|
10
|
-
const existing = await store.load(threadKey);
|
|
11
|
-
if (existing) {
|
|
12
|
-
return { conversationId: existing.conversationId, lastResponseId: existing.lastResponseId };
|
|
13
|
-
}
|
|
14
|
-
const conversationId = await (0, create_conversation_operation_1.createConversation)(openai);
|
|
15
|
-
await store.create(threadKey, conversationId);
|
|
16
|
-
return { conversationId, lastResponseId: undefined };
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=conversation-or-create.builder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-or-create.builder.js","sourceRoot":"","sources":["../../../../../src/providers/openai/builders/conversation-or-create.builder.ts"],"names":[],"mappings":";;AAQA,sDAkBC;AAxBD,+FAAiF;AAEjF;;;GAGG;AACI,KAAK,UAAU,qBAAqB,CAAC,EAC1C,MAAM,EACN,KAAK,EACL,SAAS,GAKV;IACC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE7C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC;IAC9F,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,IAAA,kDAAkB,EAAC,MAAM,CAAC,CAAC;IACxD,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAC9C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;AACvD,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type OpenAI from 'openai';
|
|
2
|
-
import type { AskWithToolsResult } from '../../../types/ask-with-tools.types';
|
|
3
|
-
import type { ToolHandler } from '../../../types/tool-handler.interface';
|
|
4
|
-
interface AssistantsLoopCtx {
|
|
5
|
-
openai: OpenAI;
|
|
6
|
-
handler?: ToolHandler;
|
|
7
|
-
}
|
|
8
|
-
export interface AssistantsLoopParams {
|
|
9
|
-
threadId: string;
|
|
10
|
-
runId: string;
|
|
11
|
-
chatbotId: string;
|
|
12
|
-
organizationId?: string;
|
|
13
|
-
userQuestion: string;
|
|
14
|
-
model: string;
|
|
15
|
-
}
|
|
16
|
-
/** Poll a beta.threads run until completion, executing tool calls via the ToolHandler. */
|
|
17
|
-
export declare function runAssistantsToolLoop(ctx: AssistantsLoopCtx, params: AssistantsLoopParams): Promise<AskWithToolsResult>;
|
|
18
|
-
export {};
|
|
19
|
-
//# sourceMappingURL=assistants-tool.loop.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assistants-tool.loop.d.ts","sourceRoot":"","sources":["../../../../../src/providers/openai/loops/assistants-tool.loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,uCAAuC,CAAC;AAOtF,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,0FAA0F;AAC1F,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CA+C7B"}
|