@node-llm/core 1.7.0 → 1.8.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 +9 -8
- package/dist/aliases.d.ts +213 -0
- package/dist/aliases.d.ts.map +1 -1
- package/dist/aliases.js +238 -25
- package/dist/chat/Chat.d.ts +2 -2
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +21 -5
- package/dist/chat/ChatResponse.d.ts +5 -1
- package/dist/chat/ChatResponse.d.ts.map +1 -1
- package/dist/chat/ChatResponse.js +9 -3
- package/dist/chat/Content.d.ts +7 -0
- package/dist/chat/Content.d.ts.map +1 -1
- package/dist/config.d.ts +28 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +50 -0
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +3 -2
- package/dist/models/models.d.ts +321 -76
- package/dist/models/models.d.ts.map +1 -1
- package/dist/models/models.js +7764 -2934
- package/dist/providers/Provider.d.ts +5 -0
- package/dist/providers/Provider.d.ts.map +1 -1
- package/dist/providers/anthropic/Capabilities.d.ts +1 -0
- package/dist/providers/anthropic/Capabilities.d.ts.map +1 -1
- package/dist/providers/anthropic/Capabilities.js +8 -5
- package/dist/providers/bedrock/BedrockProvider.d.ts +53 -0
- package/dist/providers/bedrock/BedrockProvider.d.ts.map +1 -0
- package/dist/providers/bedrock/BedrockProvider.js +107 -0
- package/dist/providers/bedrock/Capabilities.d.ts +50 -0
- package/dist/providers/bedrock/Capabilities.d.ts.map +1 -0
- package/dist/providers/bedrock/Capabilities.js +233 -0
- package/dist/providers/bedrock/Chat.d.ts +26 -0
- package/dist/providers/bedrock/Chat.d.ts.map +1 -0
- package/dist/providers/bedrock/Chat.js +170 -0
- package/dist/providers/bedrock/Embeddings.d.ts +22 -0
- package/dist/providers/bedrock/Embeddings.d.ts.map +1 -0
- package/dist/providers/bedrock/Embeddings.js +100 -0
- package/dist/providers/bedrock/Image.d.ts +33 -0
- package/dist/providers/bedrock/Image.d.ts.map +1 -0
- package/dist/providers/bedrock/Image.js +154 -0
- package/dist/providers/bedrock/Models.d.ts +34 -0
- package/dist/providers/bedrock/Models.d.ts.map +1 -0
- package/dist/providers/bedrock/Models.js +131 -0
- package/dist/providers/bedrock/Moderation.d.ts +23 -0
- package/dist/providers/bedrock/Moderation.d.ts.map +1 -0
- package/dist/providers/bedrock/Moderation.js +138 -0
- package/dist/providers/bedrock/Streaming.d.ts +21 -0
- package/dist/providers/bedrock/Streaming.d.ts.map +1 -0
- package/dist/providers/bedrock/Streaming.js +240 -0
- package/dist/providers/bedrock/config.d.ts +57 -0
- package/dist/providers/bedrock/config.d.ts.map +1 -0
- package/dist/providers/bedrock/config.js +33 -0
- package/dist/providers/bedrock/index.d.ts +8 -0
- package/dist/providers/bedrock/index.d.ts.map +1 -0
- package/dist/providers/bedrock/index.js +30 -0
- package/dist/providers/bedrock/mapper.d.ts +37 -0
- package/dist/providers/bedrock/mapper.d.ts.map +1 -0
- package/dist/providers/bedrock/mapper.js +204 -0
- package/dist/providers/bedrock/types.d.ts +179 -0
- package/dist/providers/bedrock/types.d.ts.map +1 -0
- package/dist/providers/bedrock/types.js +7 -0
- package/dist/providers/deepseek/Capabilities.d.ts +3 -2
- package/dist/providers/deepseek/Capabilities.d.ts.map +1 -1
- package/dist/providers/deepseek/Capabilities.js +19 -5
- package/dist/providers/gemini/Capabilities.d.ts +1 -0
- package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
- package/dist/providers/gemini/Capabilities.js +9 -6
- package/dist/providers/gemini/Chat.d.ts.map +1 -1
- package/dist/providers/gemini/Chat.js +6 -23
- package/dist/providers/ollama/Capabilities.d.ts.map +1 -1
- package/dist/providers/ollama/Capabilities.js +4 -1
- package/dist/providers/openai/Capabilities.d.ts +1 -0
- package/dist/providers/openai/Capabilities.d.ts.map +1 -1
- package/dist/providers/openai/Capabilities.js +14 -11
- package/dist/providers/registry.d.ts +2 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +2 -1
- package/dist/utils/AwsSigV4.d.ts +51 -0
- package/dist/utils/AwsSigV4.d.ts.map +1 -0
- package/dist/utils/AwsSigV4.js +209 -0
- package/package.json +1 -1
|
@@ -57,6 +57,8 @@ export interface ChatChunk {
|
|
|
57
57
|
tool_calls?: ToolCall[];
|
|
58
58
|
done?: boolean;
|
|
59
59
|
usage?: Usage;
|
|
60
|
+
finish_reason?: string | null;
|
|
61
|
+
metadata?: Record<string, unknown>;
|
|
60
62
|
}
|
|
61
63
|
export interface Usage {
|
|
62
64
|
input_tokens: number;
|
|
@@ -76,6 +78,8 @@ export interface ChatResponse {
|
|
|
76
78
|
reasoning?: string | null;
|
|
77
79
|
tool_calls?: ToolCall[];
|
|
78
80
|
usage?: Usage;
|
|
81
|
+
finish_reason?: string | null;
|
|
82
|
+
metadata?: Record<string, unknown>;
|
|
79
83
|
}
|
|
80
84
|
export interface ProviderCapabilities {
|
|
81
85
|
supportsVision(modelId: string): boolean;
|
|
@@ -110,6 +114,7 @@ export interface ImageRequest {
|
|
|
110
114
|
size?: string;
|
|
111
115
|
quality?: string;
|
|
112
116
|
n?: number;
|
|
117
|
+
headers?: Record<string, string>;
|
|
113
118
|
requestTimeout?: number;
|
|
114
119
|
}
|
|
115
120
|
export interface ImageResponse {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../src/providers/Provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,CAAC;IAC7C,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IAE5C;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../src/providers/Provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,6 @@ export declare class Capabilities {
|
|
|
8
8
|
static supportsExtendedThinking(modelId: string): boolean;
|
|
9
9
|
static getCapabilities(modelId: string): string[];
|
|
10
10
|
static getPricing(modelId: string): ModelPricing | undefined;
|
|
11
|
+
private static findModel;
|
|
11
12
|
}
|
|
12
13
|
//# sourceMappingURL=Capabilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO9C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOjD,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOzD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAsBjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO9C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOjD,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOzD,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAsBjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
|
|
@@ -10,32 +10,32 @@ export class Capabilities {
|
|
|
10
10
|
return val ?? 4_096;
|
|
11
11
|
}
|
|
12
12
|
static supportsVision(modelId) {
|
|
13
|
-
const model =
|
|
13
|
+
const model = this.findModel(modelId);
|
|
14
14
|
if (model?.modalities?.input?.includes("image"))
|
|
15
15
|
return true;
|
|
16
16
|
return /claude-3/.test(modelId);
|
|
17
17
|
}
|
|
18
18
|
static supportsTools(modelId) {
|
|
19
|
-
const model =
|
|
19
|
+
const model = this.findModel(modelId);
|
|
20
20
|
if (model?.capabilities?.includes("function_calling"))
|
|
21
21
|
return true;
|
|
22
22
|
return /claude-3/.test(modelId);
|
|
23
23
|
}
|
|
24
24
|
static supportsJsonMode(modelId) {
|
|
25
|
-
const model =
|
|
25
|
+
const model = this.findModel(modelId);
|
|
26
26
|
if (model?.capabilities.includes("json_mode"))
|
|
27
27
|
return true;
|
|
28
28
|
return this.supportsTools(modelId);
|
|
29
29
|
}
|
|
30
30
|
static supportsExtendedThinking(modelId) {
|
|
31
|
-
const model =
|
|
31
|
+
const model = this.findModel(modelId);
|
|
32
32
|
if (model?.capabilities.includes("reasoning"))
|
|
33
33
|
return true;
|
|
34
34
|
return /claude-3-7/.test(modelId) || /thinking/.test(modelId);
|
|
35
35
|
}
|
|
36
36
|
static getCapabilities(modelId) {
|
|
37
37
|
const caps = ["streaming"];
|
|
38
|
-
const model =
|
|
38
|
+
const model = this.findModel(modelId);
|
|
39
39
|
if (model) {
|
|
40
40
|
if (model.capabilities.includes("function_calling"))
|
|
41
41
|
caps.push("function_calling");
|
|
@@ -62,4 +62,7 @@ export class Capabilities {
|
|
|
62
62
|
static getPricing(modelId) {
|
|
63
63
|
return PricingRegistry.getPricing(modelId, "anthropic");
|
|
64
64
|
}
|
|
65
|
+
static findModel(modelId) {
|
|
66
|
+
return ModelRegistry.find(modelId, "anthropic");
|
|
67
|
+
}
|
|
65
68
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS Bedrock Provider
|
|
3
|
+
*
|
|
4
|
+
* Unified provider for all Bedrock-hosted models using the Converse API.
|
|
5
|
+
* Supports: Claude, DeepSeek, Titan, Mistral, Llama, and other Bedrock models.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* // Using API Key (recommended)
|
|
10
|
+
* const bedrock = new BedrockProvider({
|
|
11
|
+
* region: "us-east-1",
|
|
12
|
+
* apiKey: process.env.AWS_BEARER_TOKEN_BEDROCK
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* // Using SigV4 (IAM credentials)
|
|
16
|
+
* const bedrock = new BedrockProvider({
|
|
17
|
+
* region: "us-east-1",
|
|
18
|
+
* accessKeyId: process.env.AWS_ACCESS_KEY_ID,
|
|
19
|
+
* secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* const response = await bedrock.chat({
|
|
23
|
+
* model: "anthropic.claude-3-5-haiku-20241022-v1:0",
|
|
24
|
+
* messages: [{ role: "user", content: "Hello!" }]
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
import { Provider, ProviderCapabilities, ModelInfo, ChatRequest, ChatResponse, ChatChunk, EmbeddingRequest, EmbeddingResponse, ImageRequest, ImageResponse, ModerationRequest, ModerationResponse } from "../Provider.js";
|
|
29
|
+
import { BaseProvider } from "../BaseProvider.js";
|
|
30
|
+
import { BedrockConfig } from "./config.js";
|
|
31
|
+
export declare class BedrockProvider extends BaseProvider implements Provider {
|
|
32
|
+
private readonly config;
|
|
33
|
+
private readonly chatHandler;
|
|
34
|
+
private readonly modelsHandler;
|
|
35
|
+
private readonly streamingHandler;
|
|
36
|
+
private readonly embeddingsHandler;
|
|
37
|
+
private readonly imageHandler;
|
|
38
|
+
private readonly moderationHandler;
|
|
39
|
+
capabilities: ProviderCapabilities;
|
|
40
|
+
constructor(config: BedrockConfig);
|
|
41
|
+
apiBase(): string;
|
|
42
|
+
headers(): Record<string, string>;
|
|
43
|
+
protected providerName(): string;
|
|
44
|
+
chat(request: ChatRequest): Promise<ChatResponse>;
|
|
45
|
+
stream(request: ChatRequest): AsyncGenerator<ChatChunk>;
|
|
46
|
+
listModels(): Promise<ModelInfo[]>;
|
|
47
|
+
embed(request: EmbeddingRequest): Promise<EmbeddingResponse>;
|
|
48
|
+
paint(request: ImageRequest): Promise<ImageResponse>;
|
|
49
|
+
moderate(request: ModerationRequest): Promise<ModerationResponse>;
|
|
50
|
+
defaultModel(feature?: string): string;
|
|
51
|
+
}
|
|
52
|
+
export { BedrockConfig } from "./config.js";
|
|
53
|
+
//# sourceMappingURL=BedrockProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BedrockProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/BedrockProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAsB,MAAM,aAAa,CAAC;AAShE,qBAAa,eAAgB,SAAQ,YAAa,YAAW,QAAQ;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAE/C,YAAY,EAAE,oBAAoB,CAYvC;gBAEU,MAAM,EAAE,aAAa;IAW1B,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAUxC,SAAS,CAAC,YAAY,IAAI,MAAM;IAI1B,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;IAIxD,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAIlC,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI5D,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIpD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIvD,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;CAOvD;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AWS Bedrock Provider
|
|
3
|
+
*
|
|
4
|
+
* Unified provider for all Bedrock-hosted models using the Converse API.
|
|
5
|
+
* Supports: Claude, DeepSeek, Titan, Mistral, Llama, and other Bedrock models.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* // Using API Key (recommended)
|
|
10
|
+
* const bedrock = new BedrockProvider({
|
|
11
|
+
* region: "us-east-1",
|
|
12
|
+
* apiKey: process.env.AWS_BEARER_TOKEN_BEDROCK
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* // Using SigV4 (IAM credentials)
|
|
16
|
+
* const bedrock = new BedrockProvider({
|
|
17
|
+
* region: "us-east-1",
|
|
18
|
+
* accessKeyId: process.env.AWS_ACCESS_KEY_ID,
|
|
19
|
+
* secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* const response = await bedrock.chat({
|
|
23
|
+
* model: "anthropic.claude-3-5-haiku-20241022-v1:0",
|
|
24
|
+
* messages: [{ role: "user", content: "Hello!" }]
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
import { BaseProvider } from "../BaseProvider.js";
|
|
29
|
+
import { getBedrockEndpoint } from "./config.js";
|
|
30
|
+
import { BedrockChat } from "./Chat.js";
|
|
31
|
+
import { BedrockModels } from "./Models.js";
|
|
32
|
+
import { BedrockStreaming } from "./Streaming.js";
|
|
33
|
+
import { BedrockEmbeddings } from "./Embeddings.js";
|
|
34
|
+
import { BedrockImage } from "./Image.js";
|
|
35
|
+
import { BedrockModeration } from "./Moderation.js";
|
|
36
|
+
import { Capabilities } from "./Capabilities.js";
|
|
37
|
+
export class BedrockProvider extends BaseProvider {
|
|
38
|
+
config;
|
|
39
|
+
chatHandler;
|
|
40
|
+
modelsHandler;
|
|
41
|
+
streamingHandler;
|
|
42
|
+
embeddingsHandler;
|
|
43
|
+
imageHandler;
|
|
44
|
+
moderationHandler;
|
|
45
|
+
capabilities = {
|
|
46
|
+
supportsVision: (model) => Capabilities.supportsVision(model),
|
|
47
|
+
supportsTools: (model) => Capabilities.supportsTools(model),
|
|
48
|
+
supportsStructuredOutput: (model) => Capabilities.supportsJsonMode(model),
|
|
49
|
+
supportsEmbeddings: (model) => Capabilities.supportsEmbeddings(model),
|
|
50
|
+
supportsImageGeneration: (model) => Capabilities.supportsImageGeneration(model),
|
|
51
|
+
supportsTranscription: (_model) => false,
|
|
52
|
+
supportsModeration: (_model) => !!(this.config.guardrailIdentifier && this.config.guardrailVersion),
|
|
53
|
+
supportsReasoning: (model) => Capabilities.supportsExtendedThinking(model),
|
|
54
|
+
supportsDeveloperRole: (_model) => true,
|
|
55
|
+
getContextWindow: (model) => Capabilities.getContextWindow(model)
|
|
56
|
+
};
|
|
57
|
+
constructor(config) {
|
|
58
|
+
super();
|
|
59
|
+
this.config = config;
|
|
60
|
+
this.chatHandler = new BedrockChat(config);
|
|
61
|
+
this.modelsHandler = new BedrockModels(config);
|
|
62
|
+
this.streamingHandler = new BedrockStreaming(config);
|
|
63
|
+
this.embeddingsHandler = new BedrockEmbeddings(config);
|
|
64
|
+
this.imageHandler = new BedrockImage(config);
|
|
65
|
+
this.moderationHandler = new BedrockModeration(config);
|
|
66
|
+
}
|
|
67
|
+
apiBase() {
|
|
68
|
+
return getBedrockEndpoint(this.config.region);
|
|
69
|
+
}
|
|
70
|
+
headers() {
|
|
71
|
+
// Headers are built dynamically based on auth mode
|
|
72
|
+
// This method is primarily for SigV4 signing, which happens at the HTTP client level.
|
|
73
|
+
// For API Key auth, the key is passed in the Authorization header directly.
|
|
74
|
+
// For now, we return a default Content-Type.
|
|
75
|
+
return {
|
|
76
|
+
"Content-Type": "application/json"
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
providerName() {
|
|
80
|
+
return "bedrock";
|
|
81
|
+
}
|
|
82
|
+
async chat(request) {
|
|
83
|
+
return this.chatHandler.execute(request);
|
|
84
|
+
}
|
|
85
|
+
async *stream(request) {
|
|
86
|
+
yield* this.streamingHandler.execute(request);
|
|
87
|
+
}
|
|
88
|
+
async listModels() {
|
|
89
|
+
return this.modelsHandler.execute();
|
|
90
|
+
}
|
|
91
|
+
async embed(request) {
|
|
92
|
+
return this.embeddingsHandler.execute(request);
|
|
93
|
+
}
|
|
94
|
+
async paint(request) {
|
|
95
|
+
return this.imageHandler.execute(request);
|
|
96
|
+
}
|
|
97
|
+
async moderate(request) {
|
|
98
|
+
return this.moderationHandler.execute(request);
|
|
99
|
+
}
|
|
100
|
+
defaultModel(feature) {
|
|
101
|
+
if (feature === "embeddings") {
|
|
102
|
+
return "amazon.titan-embed-text-v2:0";
|
|
103
|
+
}
|
|
104
|
+
// Amazon Nova Lite is available by default and cost-effective
|
|
105
|
+
return "amazon.nova-lite-v1:0";
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps Bedrock model IDs to their capabilities.
|
|
3
|
+
*/
|
|
4
|
+
import { ModelPricing } from "../../models/types.js";
|
|
5
|
+
type ModelFamily = "claude3_opus" | "claude3_sonnet" | "claude3_haiku" | "claude3_5_haiku" | "claude2" | "claude_instant" | "claude4" | "nova" | "nova2" | "other";
|
|
6
|
+
export declare class Capabilities {
|
|
7
|
+
static getModelFamily(modelId: string): ModelFamily;
|
|
8
|
+
static getContextWindow(modelId: string): number | null;
|
|
9
|
+
static getMaxOutputTokens(modelId: string): number | null;
|
|
10
|
+
static supportsChat(modelId: string): boolean;
|
|
11
|
+
static supportsStreaming(modelId: string): boolean;
|
|
12
|
+
static supportsVision(modelId: string): boolean;
|
|
13
|
+
static supportsTools(modelId: string): boolean;
|
|
14
|
+
static supportsJsonMode(modelId: string): boolean;
|
|
15
|
+
static supportsExtendedThinking(modelId: string): boolean;
|
|
16
|
+
static supportsEmbeddings(modelId: string): boolean;
|
|
17
|
+
static supportsImageGeneration(modelId: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Check if a model supports audio input.
|
|
20
|
+
*/
|
|
21
|
+
static supportsAudio(_modelId: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Get input modalities for a model.
|
|
24
|
+
*/
|
|
25
|
+
static getInputModalities(modelId: string): string[];
|
|
26
|
+
/**
|
|
27
|
+
* Get output modalities for a model.
|
|
28
|
+
*/
|
|
29
|
+
static getOutputModalities(_modelId: string): string[];
|
|
30
|
+
/**
|
|
31
|
+
* Get all capabilities for a model.
|
|
32
|
+
*/
|
|
33
|
+
static getCapabilities(modelId: string): string[];
|
|
34
|
+
static getPricing(modelId: string): ModelPricing | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Get input price per million tokens.
|
|
37
|
+
*/
|
|
38
|
+
static getInputPrice(modelId: string): number;
|
|
39
|
+
/**
|
|
40
|
+
* Get output price per million tokens.
|
|
41
|
+
*/
|
|
42
|
+
static getOutputPrice(modelId: string): number;
|
|
43
|
+
/**
|
|
44
|
+
* Format model ID as display name.
|
|
45
|
+
*/
|
|
46
|
+
static formatDisplayName(modelId: string): string;
|
|
47
|
+
private static findModel;
|
|
48
|
+
}
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=Capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/Capabilities.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAMrD,KAAK,WAAW,GACZ,cAAc,GACd,gBAAgB,GAChB,eAAe,GACf,iBAAiB,GACjB,SAAS,GACT,gBAAgB,GAChB,SAAS,GACT,MAAM,GACN,OAAO,GACP,OAAO,CAAC;AAsCZ,qBAAa,YAAY;IACvB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAOnD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA2BvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOzD,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAa7C,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAalD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ9C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWjD,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOzD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOnD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOxD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI/C;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAcpD;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAItD;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAuBjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAuB5D;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAK7C;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAK9C;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAUjD,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps Bedrock model IDs to their capabilities.
|
|
3
|
+
*/
|
|
4
|
+
import { ModelRegistry } from "../../models/ModelRegistry.js";
|
|
5
|
+
import { PricingRegistry } from "../../models/PricingRegistry.js";
|
|
6
|
+
const MODEL_FAMILIES = [
|
|
7
|
+
[/anthropic\.claude-3-opus/, "claude3_opus"],
|
|
8
|
+
[/anthropic\.claude-3-sonnet/, "claude3_sonnet"],
|
|
9
|
+
[/anthropic\.claude-3-5-sonnet/, "claude3_sonnet"],
|
|
10
|
+
[/anthropic\.claude-3-7-sonnet/, "claude3_sonnet"],
|
|
11
|
+
[/anthropic\.claude-3-haiku/, "claude3_haiku"],
|
|
12
|
+
[/anthropic\.claude-3-5-haiku/, "claude3_5_haiku"],
|
|
13
|
+
[/anthropic\.claude-v2/, "claude2"],
|
|
14
|
+
[/anthropic\.claude-2/, "claude2"],
|
|
15
|
+
[/anthropic\.claude-instant/, "claude_instant"],
|
|
16
|
+
[/anthropic\.claude-(opus|sonnet|haiku)-4/, "claude4"],
|
|
17
|
+
[/amazon\.nova-2/, "nova2"],
|
|
18
|
+
[/amazon\.nova/, "nova"]
|
|
19
|
+
];
|
|
20
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
21
|
+
// Pricing (per million tokens)
|
|
22
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
23
|
+
const PRICES = {
|
|
24
|
+
claude3_opus: { input: 15.0, output: 75.0 },
|
|
25
|
+
claude3_sonnet: { input: 3.0, output: 15.0 },
|
|
26
|
+
claude3_haiku: { input: 0.25, output: 1.25 },
|
|
27
|
+
claude3_5_haiku: { input: 0.8, output: 4.0 },
|
|
28
|
+
claude2: { input: 8.0, output: 24.0 },
|
|
29
|
+
claude_instant: { input: 0.8, output: 2.4 },
|
|
30
|
+
claude4: { input: 3.0, output: 15.0 }, // Assuming Sonnet 4 as baseline for the family
|
|
31
|
+
nova: { input: 0.06, output: 0.24 },
|
|
32
|
+
nova2: { input: 0.03, output: 0.12 }, // Assuming Nova 2 is cheaper as per trend
|
|
33
|
+
other: { input: 0.1, output: 0.2 }
|
|
34
|
+
};
|
|
35
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
36
|
+
// Capabilities Class
|
|
37
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
38
|
+
export class Capabilities {
|
|
39
|
+
static getModelFamily(modelId) {
|
|
40
|
+
for (const [pattern, family] of MODEL_FAMILIES) {
|
|
41
|
+
if (pattern.test(modelId))
|
|
42
|
+
return family;
|
|
43
|
+
}
|
|
44
|
+
return "other";
|
|
45
|
+
}
|
|
46
|
+
static getContextWindow(modelId) {
|
|
47
|
+
const val = ModelRegistry.getContextWindow(modelId, "bedrock");
|
|
48
|
+
if (val)
|
|
49
|
+
return val;
|
|
50
|
+
// Claude 2 has 100k, others have 200k
|
|
51
|
+
if (/anthropic\.claude-2/.test(modelId))
|
|
52
|
+
return 100_000;
|
|
53
|
+
if (/anthropic\.claude/.test(modelId))
|
|
54
|
+
return 200_000;
|
|
55
|
+
// DeepSeek
|
|
56
|
+
if (/deepseek/.test(modelId))
|
|
57
|
+
return 128_000;
|
|
58
|
+
// Mistral
|
|
59
|
+
if (/mistral-large/.test(modelId))
|
|
60
|
+
return 128_000;
|
|
61
|
+
if (/mistral/.test(modelId))
|
|
62
|
+
return 32_000;
|
|
63
|
+
// Llama
|
|
64
|
+
if (/llama/.test(modelId))
|
|
65
|
+
return 128_000;
|
|
66
|
+
// Titan
|
|
67
|
+
if (/titan/.test(modelId))
|
|
68
|
+
return 32_000;
|
|
69
|
+
// Nova
|
|
70
|
+
if (/nova/.test(modelId))
|
|
71
|
+
return 300_000;
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
static getMaxOutputTokens(modelId) {
|
|
75
|
+
const val = ModelRegistry.getMaxOutputTokens(modelId, "bedrock");
|
|
76
|
+
if (val)
|
|
77
|
+
return val;
|
|
78
|
+
return 4_096;
|
|
79
|
+
}
|
|
80
|
+
static supportsChat(modelId) {
|
|
81
|
+
const model = this.findModel(modelId);
|
|
82
|
+
if (model?.capabilities?.includes("chat"))
|
|
83
|
+
return true;
|
|
84
|
+
return (/anthropic\.claude/.test(modelId) ||
|
|
85
|
+
/amazon\.nova/.test(modelId) ||
|
|
86
|
+
/mistral\.mistral/.test(modelId) ||
|
|
87
|
+
/meta\.llama/.test(modelId) ||
|
|
88
|
+
/deepseek/.test(modelId));
|
|
89
|
+
}
|
|
90
|
+
static supportsStreaming(modelId) {
|
|
91
|
+
const model = this.findModel(modelId);
|
|
92
|
+
if (model?.capabilities?.includes("streaming"))
|
|
93
|
+
return true;
|
|
94
|
+
return (/anthropic\.claude/.test(modelId) ||
|
|
95
|
+
/amazon\.nova/.test(modelId) ||
|
|
96
|
+
/mistral\.mistral/.test(modelId) ||
|
|
97
|
+
/meta\.llama/.test(modelId) ||
|
|
98
|
+
/deepseek/.test(modelId));
|
|
99
|
+
}
|
|
100
|
+
static supportsVision(modelId) {
|
|
101
|
+
const model = this.findModel(modelId);
|
|
102
|
+
if (model?.modalities?.input?.includes("image"))
|
|
103
|
+
return true;
|
|
104
|
+
if (model?.capabilities?.includes("vision"))
|
|
105
|
+
return true;
|
|
106
|
+
return /anthropic\.claude-3|anthropic\.claude-4|amazon\.nova/.test(modelId);
|
|
107
|
+
}
|
|
108
|
+
static supportsTools(modelId) {
|
|
109
|
+
const model = this.findModel(modelId);
|
|
110
|
+
if (model?.capabilities?.includes("tools") || model?.capabilities?.includes("function_calling"))
|
|
111
|
+
return true;
|
|
112
|
+
return /anthropic\.claude|amazon\.nova|deepseek-chat/.test(modelId);
|
|
113
|
+
}
|
|
114
|
+
static supportsJsonMode(modelId) {
|
|
115
|
+
const model = this.findModel(modelId);
|
|
116
|
+
if (model?.capabilities?.includes("json_mode") ||
|
|
117
|
+
model?.capabilities?.includes("structured_output"))
|
|
118
|
+
return true;
|
|
119
|
+
return /anthropic\.claude|amazon\.nova/.test(modelId);
|
|
120
|
+
}
|
|
121
|
+
static supportsExtendedThinking(modelId) {
|
|
122
|
+
const model = this.findModel(modelId);
|
|
123
|
+
if (model?.capabilities?.includes("reasoning"))
|
|
124
|
+
return true;
|
|
125
|
+
return /claude-3-7|deepseek-reasoner|deepseek\.r1/.test(modelId);
|
|
126
|
+
}
|
|
127
|
+
static supportsEmbeddings(modelId) {
|
|
128
|
+
const model = this.findModel(modelId);
|
|
129
|
+
if (model?.capabilities?.includes("embeddings"))
|
|
130
|
+
return true;
|
|
131
|
+
return /amazon\.titan-embed/.test(modelId);
|
|
132
|
+
}
|
|
133
|
+
static supportsImageGeneration(modelId) {
|
|
134
|
+
const model = this.findModel(modelId);
|
|
135
|
+
if (model?.capabilities?.includes("image_generation"))
|
|
136
|
+
return true;
|
|
137
|
+
return /amazon\.titan-image-generator|stability\.stable-diffusion/.test(modelId);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Check if a model supports audio input.
|
|
141
|
+
*/
|
|
142
|
+
static supportsAudio(_modelId) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get input modalities for a model.
|
|
147
|
+
*/
|
|
148
|
+
static getInputModalities(modelId) {
|
|
149
|
+
const modalities = ["text"];
|
|
150
|
+
if ((/anthropic\.claude/.test(modelId) || /amazon\.nova/.test(modelId)) &&
|
|
151
|
+
this.supportsVision(modelId)) {
|
|
152
|
+
modalities.push("image");
|
|
153
|
+
modalities.push("pdf");
|
|
154
|
+
}
|
|
155
|
+
return modalities;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get output modalities for a model.
|
|
159
|
+
*/
|
|
160
|
+
static getOutputModalities(_modelId) {
|
|
161
|
+
return ["text"];
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get all capabilities for a model.
|
|
165
|
+
*/
|
|
166
|
+
static getCapabilities(modelId) {
|
|
167
|
+
const capabilities = [];
|
|
168
|
+
if (/anthropic\.claude/.test(modelId)) {
|
|
169
|
+
capabilities.push("streaming");
|
|
170
|
+
}
|
|
171
|
+
if (this.supportsTools(modelId)) {
|
|
172
|
+
capabilities.push("function_calling");
|
|
173
|
+
}
|
|
174
|
+
if (/claude-3-7|nova/.test(modelId)) {
|
|
175
|
+
capabilities.push("reasoning");
|
|
176
|
+
}
|
|
177
|
+
if (/claude-3\.5|claude-3-7|nova/.test(modelId)) {
|
|
178
|
+
capabilities.push("batch");
|
|
179
|
+
capabilities.push("citations");
|
|
180
|
+
}
|
|
181
|
+
return capabilities;
|
|
182
|
+
}
|
|
183
|
+
static getPricing(modelId) {
|
|
184
|
+
// Try registry first
|
|
185
|
+
const registryPricing = PricingRegistry.getPricing(modelId, "bedrock");
|
|
186
|
+
if (registryPricing)
|
|
187
|
+
return registryPricing;
|
|
188
|
+
// Fallback to built-in pricing
|
|
189
|
+
const family = this.getModelFamily(modelId);
|
|
190
|
+
const prices = PRICES[family];
|
|
191
|
+
return {
|
|
192
|
+
text_tokens: {
|
|
193
|
+
standard: {
|
|
194
|
+
input_per_million: prices.input,
|
|
195
|
+
output_per_million: prices.output
|
|
196
|
+
},
|
|
197
|
+
batch: {
|
|
198
|
+
input_per_million: prices.input * 0.5,
|
|
199
|
+
output_per_million: prices.output * 0.5
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Get input price per million tokens.
|
|
206
|
+
*/
|
|
207
|
+
static getInputPrice(modelId) {
|
|
208
|
+
const family = this.getModelFamily(modelId);
|
|
209
|
+
return PRICES[family].input;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Get output price per million tokens.
|
|
213
|
+
*/
|
|
214
|
+
static getOutputPrice(modelId) {
|
|
215
|
+
const family = this.getModelFamily(modelId);
|
|
216
|
+
return PRICES[family].output;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Format model ID as display name.
|
|
220
|
+
*/
|
|
221
|
+
static formatDisplayName(modelId) {
|
|
222
|
+
return modelId
|
|
223
|
+
.replace(/-/g, " ")
|
|
224
|
+
.split(".")
|
|
225
|
+
.pop()
|
|
226
|
+
.split(" ")
|
|
227
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
228
|
+
.join(" ");
|
|
229
|
+
}
|
|
230
|
+
static findModel(modelId) {
|
|
231
|
+
return ModelRegistry.find(modelId, "bedrock");
|
|
232
|
+
}
|
|
233
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bedrock Chat Handler
|
|
3
|
+
*
|
|
4
|
+
* Executes chat requests against the Bedrock Converse API.
|
|
5
|
+
*/
|
|
6
|
+
import { ChatRequest, ChatResponse } from "../Provider.js";
|
|
7
|
+
import { BedrockConfig } from "./config.js";
|
|
8
|
+
export declare class BedrockChat {
|
|
9
|
+
private readonly config;
|
|
10
|
+
private readonly authMode;
|
|
11
|
+
private readonly baseUrl;
|
|
12
|
+
constructor(config: BedrockConfig);
|
|
13
|
+
/**
|
|
14
|
+
* Execute a chat request against Bedrock Converse API.
|
|
15
|
+
*/
|
|
16
|
+
execute(request: ChatRequest): Promise<ChatResponse>;
|
|
17
|
+
/**
|
|
18
|
+
* Build request headers based on auth mode.
|
|
19
|
+
*/
|
|
20
|
+
private buildHeaders;
|
|
21
|
+
/**
|
|
22
|
+
* Parse Bedrock response to NodeLLM format.
|
|
23
|
+
*/
|
|
24
|
+
private parseResponse;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=Chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/Chat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAS,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAE,aAAa,EAA6C,MAAM,aAAa,CAAC;AAYvF,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,aAAa;IAMjC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA6E1D;;OAEG;IACH,OAAO,CAAC,YAAY;IA6CpB;;OAEG;IACH,OAAO,CAAC,aAAa;CAiDtB"}
|