@holokai/holo-provider-bedrock 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.
Files changed (93) hide show
  1. package/dist/bedrock.auditor.d.ts +16 -0
  2. package/dist/bedrock.auditor.d.ts.map +1 -0
  3. package/dist/bedrock.auditor.js +74 -0
  4. package/dist/bedrock.auditor.js.map +1 -0
  5. package/dist/bedrock.pricing.d.ts +3 -0
  6. package/dist/bedrock.pricing.d.ts.map +1 -0
  7. package/dist/bedrock.pricing.js +295 -0
  8. package/dist/bedrock.pricing.js.map +1 -0
  9. package/dist/bedrock.provider.d.ts +24 -0
  10. package/dist/bedrock.provider.d.ts.map +1 -0
  11. package/dist/bedrock.provider.js +174 -0
  12. package/dist/bedrock.provider.js.map +1 -0
  13. package/dist/bedrock.response.factory.d.ts +11 -0
  14. package/dist/bedrock.response.factory.d.ts.map +1 -0
  15. package/dist/bedrock.response.factory.js +9 -0
  16. package/dist/bedrock.response.factory.js.map +1 -0
  17. package/dist/bedrock.translator.d.ts +30 -0
  18. package/dist/bedrock.translator.d.ts.map +1 -0
  19. package/dist/bedrock.translator.js +96 -0
  20. package/dist/bedrock.translator.js.map +1 -0
  21. package/dist/bedrock.wire.adapter.d.ts +9 -0
  22. package/dist/bedrock.wire.adapter.d.ts.map +1 -0
  23. package/dist/bedrock.wire.adapter.js +15 -0
  24. package/dist/bedrock.wire.adapter.js.map +1 -0
  25. package/dist/index.d.ts +14 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +13 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/manifest.d.ts +3 -0
  30. package/dist/manifest.d.ts.map +1 -0
  31. package/dist/manifest.js +11 -0
  32. package/dist/manifest.js.map +1 -0
  33. package/dist/plugin.d.ts +52 -0
  34. package/dist/plugin.d.ts.map +1 -0
  35. package/dist/plugin.js +145 -0
  36. package/dist/plugin.js.map +1 -0
  37. package/dist/translators/bedrock.message.translator.d.ts +10 -0
  38. package/dist/translators/bedrock.message.translator.d.ts.map +1 -0
  39. package/dist/translators/bedrock.message.translator.js +142 -0
  40. package/dist/translators/bedrock.message.translator.js.map +1 -0
  41. package/dist/translators/bedrock.request.translator.d.ts +15 -0
  42. package/dist/translators/bedrock.request.translator.d.ts.map +1 -0
  43. package/dist/translators/bedrock.request.translator.js +92 -0
  44. package/dist/translators/bedrock.request.translator.js.map +1 -0
  45. package/dist/translators/bedrock.response.translator.d.ts +13 -0
  46. package/dist/translators/bedrock.response.translator.d.ts.map +1 -0
  47. package/dist/translators/bedrock.response.translator.js +54 -0
  48. package/dist/translators/bedrock.response.translator.js.map +1 -0
  49. package/dist/translators/bedrock.tool.translator.d.ts +12 -0
  50. package/dist/translators/bedrock.tool.translator.d.ts.map +1 -0
  51. package/dist/translators/bedrock.tool.translator.js +52 -0
  52. package/dist/translators/bedrock.tool.translator.js.map +1 -0
  53. package/dist/translators/index.d.ts +6 -0
  54. package/dist/translators/index.d.ts.map +1 -0
  55. package/dist/translators/index.js +6 -0
  56. package/dist/translators/index.js.map +1 -0
  57. package/dist/translators/streaming/bedrock.content.delta.translator.d.ts +10 -0
  58. package/dist/translators/streaming/bedrock.content.delta.translator.d.ts.map +1 -0
  59. package/dist/translators/streaming/bedrock.content.delta.translator.js +36 -0
  60. package/dist/translators/streaming/bedrock.content.delta.translator.js.map +1 -0
  61. package/dist/translators/streaming/bedrock.message.stop.translator.d.ts +10 -0
  62. package/dist/translators/streaming/bedrock.message.stop.translator.d.ts.map +1 -0
  63. package/dist/translators/streaming/bedrock.message.stop.translator.js +47 -0
  64. package/dist/translators/streaming/bedrock.message.stop.translator.js.map +1 -0
  65. package/dist/translators/streaming/bedrock.stream.translator.d.ts +15 -0
  66. package/dist/translators/streaming/bedrock.stream.translator.d.ts.map +1 -0
  67. package/dist/translators/streaming/bedrock.stream.translator.js +39 -0
  68. package/dist/translators/streaming/bedrock.stream.translator.js.map +1 -0
  69. package/dist/translators/streaming/index.d.ts +4 -0
  70. package/dist/translators/streaming/index.d.ts.map +1 -0
  71. package/dist/translators/streaming/index.js +4 -0
  72. package/dist/translators/streaming/index.js.map +1 -0
  73. package/dist/types/config.types.d.ts +16 -0
  74. package/dist/types/config.types.d.ts.map +1 -0
  75. package/dist/types/config.types.js +2 -0
  76. package/dist/types/config.types.js.map +1 -0
  77. package/dist/types/index.d.ts +4 -0
  78. package/dist/types/index.d.ts.map +1 -0
  79. package/dist/types/index.js +4 -0
  80. package/dist/types/index.js.map +1 -0
  81. package/dist/types/request.types.d.ts +10 -0
  82. package/dist/types/request.types.d.ts.map +1 -0
  83. package/dist/types/request.types.js +7 -0
  84. package/dist/types/request.types.js.map +1 -0
  85. package/dist/types/response.types.d.ts +13 -0
  86. package/dist/types/response.types.d.ts.map +1 -0
  87. package/dist/types/response.types.js +2 -0
  88. package/dist/types/response.types.js.map +1 -0
  89. package/dist/version.d.ts +2 -0
  90. package/dist/version.d.ts.map +1 -0
  91. package/dist/version.js +3 -0
  92. package/dist/version.js.map +1 -0
  93. package/package.json +75 -0
@@ -0,0 +1,9 @@
1
+ export class BedrockResponseFactory {
2
+ static instance() {
3
+ return new BedrockResponseFactory();
4
+ }
5
+ createError(message, code) {
6
+ return { error: { message, ...(code ? { code } : {}) } };
7
+ }
8
+ }
9
+ //# sourceMappingURL=bedrock.response.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.response.factory.js","sourceRoot":"","sources":["../src/bedrock.response.factory.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,sBAAsB;IAC/B,MAAM,CAAC,QAAQ;QACX,OAAO,IAAI,sBAAsB,EAAE,CAAC;IACxC,CAAC;IAED,WAAW,CAAC,OAAe,EAAE,IAAa;QACtC,OAAO,EAAC,KAAK,EAAE,EAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,EAAC,CAAC;IACvD,CAAC;CACJ"}
@@ -0,0 +1,30 @@
1
+ import type { IProviderTranslator } from '@holokai/holo-types/provider';
2
+ import type { HoloEmbedParams, HoloMessage, HoloRequest, HoloResponse, HoloStreamChunk } from '@holokai/holo-types/holo';
3
+ import type { BedrockConverseRequest, BedrockConverseResponse } from './types';
4
+ import { BedrockMessageTranslator, BedrockRequestTranslator, BedrockResponseTranslator, BedrockStreamTranslator } from './translators';
5
+ import type { Message } from '@aws-sdk/client-bedrock-runtime';
6
+ export declare class BedrockTranslator implements IProviderTranslator {
7
+ private readonly requestTranslator;
8
+ private readonly responseTranslator;
9
+ private readonly messageTranslator;
10
+ private readonly streamTranslator;
11
+ constructor(requestTranslator: BedrockRequestTranslator, responseTranslator: BedrockResponseTranslator, messageTranslator: BedrockMessageTranslator, streamTranslator: BedrockStreamTranslator);
12
+ static instance(): IProviderTranslator;
13
+ fromHoloRequest(request: HoloRequest): Promise<Partial<BedrockConverseRequest>>;
14
+ toHoloRequest(request: BedrockConverseRequest): Promise<Partial<HoloRequest>>;
15
+ fromHoloResponse(response: HoloResponse): Promise<Partial<BedrockConverseResponse>>;
16
+ toHoloResponse(response: BedrockConverseResponse): Promise<Partial<HoloResponse>>;
17
+ fromHoloMessages(messages: HoloMessage[]): Promise<Partial<Message>[]>;
18
+ toHoloMessages(messages: Message[]): Promise<Partial<HoloMessage>[]>;
19
+ fromHoloStreamChunks(chunks: HoloStreamChunk[]): Promise<unknown>;
20
+ fromHoloEmbedRequest(request: HoloEmbedParams): Promise<{
21
+ modelId: string;
22
+ body: Record<string, unknown>;
23
+ }>;
24
+ toHoloEmbedResponse(response: any): Promise<{
25
+ model: string;
26
+ embeddings: number[][];
27
+ usage?: any;
28
+ }>;
29
+ }
30
+ //# sourceMappingURL=bedrock.translator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.translator.d.ts","sourceRoot":"","sources":["../src/bedrock.translator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAC,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAC,MAAM,0BAA0B,CAAC;AACvH,OAAO,KAAK,EAAC,sBAAsB,EAAE,uBAAuB,EAAC,MAAM,SAAS,CAAC;AAC7E,OAAO,EAGH,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EAE1B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,iCAAiC,CAAC;AAkD7D,qBAAa,iBAAkB,YAAW,mBAAmB;IAErD,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAHhB,iBAAiB,EAAE,wBAAwB,EAC3C,kBAAkB,EAAE,yBAAyB,EAC7C,iBAAiB,EAAE,wBAAwB,EAC3C,gBAAgB,EAAE,uBAAuB;IAI9D,MAAM,CAAC,QAAQ,IAAI,mBAAmB;IAchC,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAI/E,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAI7E,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAInF,cAAc,CAAC,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAIjF,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAItE,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IAIpE,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjE,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAQ3G,mBAAmB,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;CAQ5G"}
@@ -0,0 +1,96 @@
1
+ import { BedrockContentDeltaTranslator, BedrockMessageStopTranslator, BedrockMessageTranslator, BedrockRequestTranslator, BedrockResponseTranslator, BedrockStreamTranslator, BedrockToolTranslator, } from './translators';
2
+ const TITAN_FORMATTER = {
3
+ formatRequest(_model, input) {
4
+ const text = Array.isArray(input) ? input.join(' ') : input;
5
+ return { inputText: text };
6
+ },
7
+ parseResponse(body) {
8
+ const embedding = body.embedding;
9
+ const inputTokenCount = body.inputTextTokenCount;
10
+ const result = { embeddings: embedding ? [embedding] : [] };
11
+ if (inputTokenCount != null) {
12
+ result.usage = { input_tokens: inputTokenCount, total_tokens: inputTokenCount };
13
+ }
14
+ return result;
15
+ },
16
+ };
17
+ const COHERE_FORMATTER = {
18
+ formatRequest(_model, input) {
19
+ const texts = Array.isArray(input) ? input : [input];
20
+ return { texts, input_type: 'search_document' };
21
+ },
22
+ parseResponse(body) {
23
+ const embeddings = body.embeddings;
24
+ return { embeddings: embeddings ?? [] };
25
+ },
26
+ };
27
+ const EMBED_FORMATTERS = new Map([
28
+ ['amazon.titan-embed', TITAN_FORMATTER],
29
+ ['cohere.embed', COHERE_FORMATTER],
30
+ ]);
31
+ function getEmbedFormatter(modelId) {
32
+ for (const [prefix, formatter] of EMBED_FORMATTERS) {
33
+ if (modelId.startsWith(prefix))
34
+ return formatter;
35
+ }
36
+ return TITAN_FORMATTER;
37
+ }
38
+ export class BedrockTranslator {
39
+ requestTranslator;
40
+ responseTranslator;
41
+ messageTranslator;
42
+ streamTranslator;
43
+ constructor(requestTranslator, responseTranslator, messageTranslator, streamTranslator) {
44
+ this.requestTranslator = requestTranslator;
45
+ this.responseTranslator = responseTranslator;
46
+ this.messageTranslator = messageTranslator;
47
+ this.streamTranslator = streamTranslator;
48
+ }
49
+ static instance() {
50
+ const messageTranslator = new BedrockMessageTranslator();
51
+ const toolTranslator = new BedrockToolTranslator();
52
+ const requestTranslator = new BedrockRequestTranslator(messageTranslator, toolTranslator);
53
+ const responseTranslator = new BedrockResponseTranslator(messageTranslator);
54
+ const contentDeltaTranslator = new BedrockContentDeltaTranslator();
55
+ const messageStopTranslator = new BedrockMessageStopTranslator();
56
+ const streamTranslator = new BedrockStreamTranslator(contentDeltaTranslator, messageStopTranslator);
57
+ return new BedrockTranslator(requestTranslator, responseTranslator, messageTranslator, streamTranslator);
58
+ }
59
+ async fromHoloRequest(request) {
60
+ return this.requestTranslator.fromHolo(request);
61
+ }
62
+ async toHoloRequest(request) {
63
+ return this.requestTranslator.toHolo(request);
64
+ }
65
+ async fromHoloResponse(response) {
66
+ return this.responseTranslator.fromHolo(response);
67
+ }
68
+ async toHoloResponse(response) {
69
+ return this.responseTranslator.toHolo(response);
70
+ }
71
+ async fromHoloMessages(messages) {
72
+ return this.messageTranslator.fromHoloArray(messages);
73
+ }
74
+ async toHoloMessages(messages) {
75
+ return this.messageTranslator.toHoloArray(messages);
76
+ }
77
+ async fromHoloStreamChunks(chunks) {
78
+ return this.streamTranslator.fromHoloManyArray(chunks);
79
+ }
80
+ async fromHoloEmbedRequest(request) {
81
+ const formatter = getEmbedFormatter(request.model);
82
+ return {
83
+ modelId: request.model,
84
+ body: formatter.formatRequest(request.model, request.input),
85
+ };
86
+ }
87
+ async toHoloEmbedResponse(response) {
88
+ const model = response?.modelId ?? response?.model ?? '';
89
+ const body = response?.body ?? response;
90
+ const modelForLookup = response?.modelId ?? model;
91
+ const formatter = getEmbedFormatter(modelForLookup);
92
+ const { embeddings, usage } = formatter.parseResponse(body);
93
+ return { model, embeddings, usage };
94
+ }
95
+ }
96
+ //# sourceMappingURL=bedrock.translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.translator.js","sourceRoot":"","sources":["../src/bedrock.translator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { BaseWireAdapter } from '@holokai/holo-sdk/provider';
2
+ import type { ProviderEvent, WireChunk } from '@holokai/holo-types/provider';
3
+ export declare class BedrockWireAdapter extends BaseWireAdapter {
4
+ formatWire(data: any): string;
5
+ protected onDoneStreaming(ev: Extract<ProviderEvent, {
6
+ type: 'done';
7
+ }>): Promise<WireChunk[]>;
8
+ }
9
+ //# sourceMappingURL=bedrock.wire.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.wire.adapter.d.ts","sourceRoot":"","sources":["../src/bedrock.wire.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAC,aAAa,EAAE,SAAS,EAAC,MAAM,8BAA8B,CAAC;AAE3E,qBAAa,kBAAmB,SAAQ,eAAe;IACnD,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;cAIJ,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAQ/G"}
@@ -0,0 +1,15 @@
1
+ import { BaseWireAdapter } from '@holokai/holo-sdk/provider';
2
+ export class BedrockWireAdapter extends BaseWireAdapter {
3
+ formatWire(data) {
4
+ return `data: ${JSON.stringify(data)}\n\n`;
5
+ }
6
+ async onDoneStreaming(ev) {
7
+ const chunks = [];
8
+ if (ev.message) {
9
+ chunks.push(await this.chunkify(ev, async () => this.formatWire(ev.message)));
10
+ }
11
+ chunks.push(await this.chunkify(ev, async () => 'data: [DONE]\n\n', true, { fullText: ev.text }));
12
+ return chunks;
13
+ }
14
+ }
15
+ //# sourceMappingURL=bedrock.wire.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.wire.adapter.js","sourceRoot":"","sources":["../src/bedrock.wire.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAG3D,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IACnD,UAAU,CAAC,IAAS;QAChB,OAAO,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/C,CAAC;IAEkB,KAAK,CAAC,eAAe,CAAC,EAA4C;QACjF,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,kBAAkB,EAAE,IAAI,EAAE,EAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC;QAChG,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}
@@ -0,0 +1,14 @@
1
+ import { BedrockProviderPlugin } from './plugin';
2
+ export * from './translators';
3
+ export * from './types';
4
+ export * from './manifest';
5
+ export * from './bedrock.auditor';
6
+ export * from './bedrock.provider';
7
+ export * from './bedrock.translator';
8
+ export * from './bedrock.wire.adapter';
9
+ export * from './bedrock.response.factory';
10
+ export * from './bedrock.pricing';
11
+ export * from './plugin';
12
+ declare const _default: BedrockProviderPlugin;
13
+ export default _default;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,UAAU,CAAC;AAE/C,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;;AAEzB,wBAA2C"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ import { BedrockProviderPlugin } from './plugin';
2
+ export * from './translators';
3
+ export * from './types';
4
+ export * from './manifest';
5
+ export * from './bedrock.auditor';
6
+ export * from './bedrock.provider';
7
+ export * from './bedrock.translator';
8
+ export * from './bedrock.wire.adapter';
9
+ export * from './bedrock.response.factory';
10
+ export * from './bedrock.pricing';
11
+ export * from './plugin';
12
+ export default new BedrockProviderPlugin();
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,UAAU,CAAC;AAE/C,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AAEzB,eAAe,IAAI,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PluginManifest } from '@holokai/holo-types/plugin';
2
+ export declare const manifest: PluginManifest;
3
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAI/D,eAAO,MAAM,QAAQ,EAAE,cAOtB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { PluginType } from '@holokai/holo-types/plugin';
2
+ import { VERSION } from './version';
3
+ export const manifest = {
4
+ name: '@holokai/provider-bedrock',
5
+ version: VERSION,
6
+ pluginType: PluginType.PROVIDER,
7
+ family: 'bedrock',
8
+ displayName: 'Amazon Bedrock Provider',
9
+ description: 'Amazon Bedrock provider plugin for Holo.',
10
+ };
11
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACpC,IAAI,EAAE,2BAA2B;IACjC,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,UAAU,CAAC,QAAQ;IAC/B,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,yBAAyB;IACtC,WAAW,EAAE,0CAA0C;CAC1D,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { BasePlugin } from '@holokai/holo-sdk/plugin';
2
+ import type { IProviderPlugin, PluginContext, PluginPricingSheet, PluginSchema } from '@holokai/holo-types/plugin';
3
+ import type { PricingSheetModel } from '@holokai/holo-types/entities';
4
+ import { ProtocolCapability } from '@holokai/holo-types/entities';
5
+ import type { IProvider, IWireAdapter, ProviderCapabilities, WireAdapterParams } from '@holokai/holo-types/provider';
6
+ import type { RouteDefinition } from '@holokai/holo-types/routing';
7
+ export declare const BedrockProtocols: {
8
+ readonly CONVERSE: "bedrock.converse";
9
+ readonly EMBED: "bedrock.embed";
10
+ readonly MODELS: "bedrock.models";
11
+ };
12
+ export type BedrockProtocols = typeof BedrockProtocols[keyof typeof BedrockProtocols];
13
+ export declare class BedrockProviderPlugin extends BasePlugin implements IProviderPlugin {
14
+ manifest: import("@holokai/holo-types/plugin").PluginManifest;
15
+ translator: import("@holokai/holo-types/provider").IProviderTranslator;
16
+ defaultRouteHandler: "request";
17
+ protocols: {
18
+ readonly CONVERSE: "bedrock.converse";
19
+ readonly EMBED: "bedrock.embed";
20
+ readonly MODELS: "bedrock.models";
21
+ };
22
+ defaultProtocol: "bedrock.converse";
23
+ createProvider(id: string, name: string, config: any): Promise<IProvider>;
24
+ createWireAdapter(params: WireAdapterParams): Promise<IWireAdapter>;
25
+ getProtocolByCapability(capability: ProtocolCapability): string | undefined;
26
+ getSchema(): PluginSchema;
27
+ getTestModels(): {
28
+ chat: string;
29
+ embed: string;
30
+ };
31
+ getCapabilities(): ProviderCapabilities;
32
+ getRoutes(): RouteDefinition[];
33
+ getPricingSheets(): Map<string, PluginPricingSheet>;
34
+ getPricingModelIds(): import("@holokai/holo-types/plugin").PricingModelId[];
35
+ getDefaultPricing(): PluginPricingSheet;
36
+ protected calculateExtraCosts(tokens: Record<string, number>, pricing: PricingSheetModel): {
37
+ total: number;
38
+ detail: {
39
+ cache_read: {
40
+ tokens: number;
41
+ cost: number;
42
+ };
43
+ cache_write: {
44
+ tokens: number;
45
+ cost: number;
46
+ };
47
+ };
48
+ };
49
+ protected onInitialize(_context: PluginContext): Promise<void>;
50
+ protected onDestroy(): Promise<void>;
51
+ }
52
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA0B,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAC,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACjH,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAC,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAEhE,OAAO,KAAK,EAAC,SAAS,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAC,MAAM,8BAA8B,CAAC;AAGnH,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAC;AAKjE,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAEtF,qBAAa,qBAAsB,SAAQ,UAAW,YAAW,eAAe;IAC5E,QAAQ,sDAAY;IACpB,UAAU,6DAAgC;IAC1C,mBAAmB,YAAwB;IAC3C,SAAS;;;;MAAoB;IAC7B,eAAe,qBAA6B;IAEtC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAIzE,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAIzE,uBAAuB,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,GAAG,SAAS;IAK3E,SAAS,IAAI,YAAY;IAsCzB,aAAa;;;;IAIb,eAAe,IAAI,oBAAoB;IAUvC,SAAS,IAAI,eAAe,EAAE;IAoC9B,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAInD,kBAAkB;IAIlB,iBAAiB,IAAI,kBAAkB;IAQvC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,iBAAiB;;;;;;;;;;;;;IAcxF,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,SAAS,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvC"}
package/dist/plugin.js ADDED
@@ -0,0 +1,145 @@
1
+ import { BasePlugin, normalizePricingDataset } from '@holokai/holo-sdk/plugin';
2
+ import { ProtocolCapability } from '@holokai/holo-types/entities';
3
+ import { manifest } from './manifest';
4
+ import { BedrockProvider } from './bedrock.provider';
5
+ import { BedrockWireAdapter } from './bedrock.wire.adapter';
6
+ import { RouteHandler } from '@holokai/holo-types/routing';
7
+ import { BedrockTranslator } from './bedrock.translator';
8
+ import { BEDROCK_PRICING_DATASET } from './bedrock.pricing';
9
+ export const BedrockProtocols = {
10
+ CONVERSE: 'bedrock.converse',
11
+ EMBED: 'bedrock.embed',
12
+ MODELS: 'bedrock.models',
13
+ };
14
+ export class BedrockProviderPlugin extends BasePlugin {
15
+ manifest = manifest;
16
+ translator = BedrockTranslator.instance();
17
+ defaultRouteHandler = RouteHandler.REQUEST;
18
+ protocols = BedrockProtocols;
19
+ defaultProtocol = BedrockProtocols.CONVERSE;
20
+ async createProvider(id, name, config) {
21
+ return new BedrockProvider(id, name, this, config);
22
+ }
23
+ async createWireAdapter(params) {
24
+ return new BedrockWireAdapter(params.requestId, params.isStreaming);
25
+ }
26
+ getProtocolByCapability(capability) {
27
+ const route = this.getRoutes().find(r => r.protocol.capability === capability);
28
+ return route?.protocol.name;
29
+ }
30
+ getSchema() {
31
+ return {
32
+ connection: {
33
+ type: 'object',
34
+ properties: {
35
+ region: { type: 'string', title: 'AWS Region', default: 'us-east-1' },
36
+ credentials: {
37
+ type: 'object',
38
+ title: 'AWS Credentials',
39
+ properties: {
40
+ accessKeyId: { type: 'string', title: 'Access Key ID' },
41
+ secretAccessKey: { type: 'string', title: 'Secret Access Key' },
42
+ sessionToken: { type: 'string', title: 'Session Token' },
43
+ },
44
+ required: ['accessKeyId', 'secretAccessKey'],
45
+ },
46
+ endpoint: { type: 'string', title: 'Endpoint Override', format: 'uri' },
47
+ maxAttempts: { type: 'integer', title: 'Max Retry Attempts', minimum: 1, default: 3 },
48
+ requestTimeout: { type: 'integer', title: 'Request Timeout (ms)', minimum: 0 },
49
+ connectionTimeout: { type: 'integer', title: 'Connection Timeout (ms)', minimum: 0 },
50
+ customUserAgent: { type: 'string', title: 'Custom User Agent' },
51
+ tls: { type: 'boolean', title: 'TLS', default: true },
52
+ },
53
+ required: ['region'],
54
+ encrypted: ['credentials.secretAccessKey'],
55
+ },
56
+ parameters: {
57
+ type: 'object',
58
+ properties: {
59
+ temperature: { type: 'number', title: 'Temperature', minimum: 0, maximum: 1, default: 1 },
60
+ max_tokens: { type: 'integer', title: 'Max Tokens', minimum: 1, maximum: 200000 },
61
+ top_p: { type: 'number', title: 'Top P', minimum: 0, maximum: 1 },
62
+ stop_sequences: { type: 'array', title: 'Stop Sequences', items: { type: 'string' } },
63
+ },
64
+ },
65
+ };
66
+ }
67
+ getTestModels() {
68
+ return { chat: 'amazon.nova-micro-v1:0', embed: 'amazon.titan-embed-text-v1' };
69
+ }
70
+ getCapabilities() {
71
+ return {
72
+ streaming: true,
73
+ tools: true,
74
+ vision: true,
75
+ functionCalling: true,
76
+ maxTokens: 200000,
77
+ };
78
+ }
79
+ getRoutes() {
80
+ return [
81
+ {
82
+ paths: ['/converse'],
83
+ method: 'POST',
84
+ handler: RouteHandler.REQUEST,
85
+ protocol: {
86
+ name: BedrockProtocols.CONVERSE,
87
+ capability: ProtocolCapability.CHAT,
88
+ streamEventSequence: {
89
+ ordered: ['content_delta', 'message_delta', 'message_stop'],
90
+ repeatable: ['content_delta'],
91
+ },
92
+ },
93
+ },
94
+ {
95
+ paths: ['/embed'],
96
+ method: 'POST',
97
+ handler: RouteHandler.REQUEST,
98
+ protocol: {
99
+ name: BedrockProtocols.EMBED,
100
+ capability: ProtocolCapability.EMBED,
101
+ },
102
+ },
103
+ {
104
+ paths: ['/models'],
105
+ method: 'GET',
106
+ handler: RouteHandler.MODELS,
107
+ protocol: {
108
+ name: BedrockProtocols.MODELS,
109
+ capability: ProtocolCapability.MODELS,
110
+ },
111
+ },
112
+ ];
113
+ }
114
+ getPricingSheets() {
115
+ return normalizePricingDataset(BEDROCK_PRICING_DATASET);
116
+ }
117
+ getPricingModelIds() {
118
+ return BEDROCK_PRICING_DATASET.model_ids;
119
+ }
120
+ getDefaultPricing() {
121
+ const sheets = this.getPricingSheets();
122
+ const sorted = Array.from(sheets.values()).sort((a, b) => b.effective_from.localeCompare(a.effective_from));
123
+ return sorted[0];
124
+ }
125
+ calculateExtraCosts(tokens, pricing) {
126
+ const cacheReadRate = pricing.token_costs?.cache_read ?? Number(pricing.cache_read_cost ?? 0);
127
+ const cacheWriteRate = pricing.token_costs?.cache_write ?? Number(pricing.cache_write_cost ?? 0);
128
+ const cacheReadCost = (tokens.cache_read ?? 0) * cacheReadRate;
129
+ const cacheWriteCost = (tokens.cache_write ?? 0) * cacheWriteRate;
130
+ return {
131
+ total: cacheReadCost + cacheWriteCost,
132
+ detail: {
133
+ cache_read: { tokens: tokens.cache_read ?? 0, cost: cacheReadCost },
134
+ cache_write: { tokens: tokens.cache_write ?? 0, cost: cacheWriteCost },
135
+ }
136
+ };
137
+ }
138
+ onInitialize(_context) {
139
+ return Promise.resolve();
140
+ }
141
+ onDestroy() {
142
+ return Promise.resolve();
143
+ }
144
+ }
145
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { HoloMessage } from '@holokai/holo-types/holo';
2
+ import { BaseTranslator } from '@holokai/holo-sdk/provider';
3
+ import type { Message } from '@aws-sdk/client-bedrock-runtime';
4
+ export declare class BedrockMessageTranslator extends BaseTranslator<HoloMessage, Message> {
5
+ protected holoDefaults: Partial<HoloMessage>;
6
+ protected providerDefaults: Partial<Message>;
7
+ protected fromHoloImpl(source: HoloMessage): Promise<Partial<Message>>;
8
+ protected toHoloImpl(source: Message): Promise<Partial<HoloMessage>>;
9
+ }
10
+ //# sourceMappingURL=bedrock.message.translator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.message.translator.d.ts","sourceRoot":"","sources":["../../src/translators/bedrock.message.translator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgC,WAAW,EAAC,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAe,OAAO,EAAC,MAAM,iCAAiC,CAAC;AAE3E,qBAAa,wBAAyB,SAAQ,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9E,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,CAAM;IAClD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAM;cAElC,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;cAmE5D,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;CA2D7E"}
@@ -0,0 +1,142 @@
1
+ import { pickDefined } from '@holokai/holo-sdk';
2
+ import { BaseTranslator } from '@holokai/holo-sdk/provider';
3
+ export class BedrockMessageTranslator extends BaseTranslator {
4
+ holoDefaults = {};
5
+ providerDefaults = {};
6
+ async fromHoloImpl(source) {
7
+ const content = [];
8
+ if (typeof source.content === 'string') {
9
+ content.push({ text: source.content });
10
+ }
11
+ else if (Array.isArray(source.content)) {
12
+ for (const block of source.content) {
13
+ switch (block.type) {
14
+ case 'text':
15
+ content.push({ text: block.text });
16
+ break;
17
+ case 'image':
18
+ if (block.data) {
19
+ content.push({
20
+ image: {
21
+ format: mimeToFormat(block.mime),
22
+ source: { bytes: Buffer.from(block.data, 'base64') },
23
+ }
24
+ });
25
+ }
26
+ break;
27
+ case 'tool_call':
28
+ content.push({
29
+ toolUse: {
30
+ toolUseId: block.id ?? `tool_${Date.now()}`,
31
+ name: block.name,
32
+ input: block.arguments,
33
+ }
34
+ });
35
+ break;
36
+ case 'tool_result':
37
+ content.push({
38
+ toolResult: {
39
+ toolUseId: block.tool_call_id,
40
+ content: typeof block.content === 'string'
41
+ ? [{ text: block.content }]
42
+ : block.content?.map((c) => c.type === 'text' ? { text: c.text } : { text: JSON.stringify(c) }) ?? [],
43
+ status: block.is_error ? 'error' : 'success',
44
+ }
45
+ });
46
+ break;
47
+ }
48
+ }
49
+ }
50
+ if (source.tool_calls?.length) {
51
+ for (const tc of source.tool_calls) {
52
+ content.push({
53
+ toolUse: {
54
+ toolUseId: tc.id ?? `tool_${Date.now()}`,
55
+ name: tc.function.name,
56
+ input: tc.function.arguments,
57
+ }
58
+ });
59
+ }
60
+ }
61
+ const role = source.role === 'tool' ? 'user' : source.role;
62
+ return pickDefined({
63
+ role: role,
64
+ content: content.length > 0 ? content : undefined,
65
+ });
66
+ }
67
+ async toHoloImpl(source) {
68
+ if (!source.content?.length) {
69
+ return pickDefined({ role: source.role });
70
+ }
71
+ const holoContent = [];
72
+ const toolCalls = [];
73
+ for (const block of source.content) {
74
+ if (block.text) {
75
+ holoContent.push({ type: 'text', text: block.text });
76
+ }
77
+ else if (block.toolUse) {
78
+ const id = block.toolUse.toolUseId;
79
+ const name = block.toolUse.name;
80
+ const args = (block.toolUse.input ?? {});
81
+ if (id) {
82
+ toolCalls.push({ id, type: 'function', function: { name, arguments: args } });
83
+ holoContent.push({ type: 'tool_call', id, name, arguments: args });
84
+ }
85
+ else {
86
+ toolCalls.push({ type: 'function', function: { name, arguments: args } });
87
+ holoContent.push({ type: 'tool_call', name, arguments: args });
88
+ }
89
+ }
90
+ else if (block.toolResult) {
91
+ holoContent.push({
92
+ type: 'tool_result',
93
+ tool_call_id: block.toolResult.toolUseId,
94
+ content: block.toolResult.content?.map(c => c.text ? { type: 'text', text: c.text } : {
95
+ type: 'text',
96
+ text: JSON.stringify(c)
97
+ }) ?? [],
98
+ is_error: block.toolResult.status === 'error',
99
+ });
100
+ }
101
+ else if (block.image) {
102
+ const imgBlock = { type: 'image', source_type: 'base64' };
103
+ if (block.image.source?.bytes) {
104
+ imgBlock.data = Buffer.from(block.image.source.bytes).toString('base64');
105
+ }
106
+ const mime = formatToMime(block.image.format);
107
+ if (mime)
108
+ imgBlock.mime = mime;
109
+ holoContent.push(imgBlock);
110
+ }
111
+ }
112
+ if (holoContent.length === 1 && holoContent[0].type === 'text') {
113
+ return pickDefined({
114
+ role: source.role,
115
+ content: holoContent[0].text,
116
+ ...(toolCalls.length ? { tool_calls: toolCalls } : {}),
117
+ });
118
+ }
119
+ return pickDefined({
120
+ role: source.role,
121
+ content: holoContent,
122
+ ...(toolCalls.length ? { tool_calls: toolCalls } : {}),
123
+ });
124
+ }
125
+ }
126
+ function mimeToFormat(mime) {
127
+ if (!mime)
128
+ return undefined;
129
+ if (mime.includes('png'))
130
+ return 'png';
131
+ if (mime.includes('gif'))
132
+ return 'gif';
133
+ if (mime.includes('webp'))
134
+ return 'webp';
135
+ return 'jpeg';
136
+ }
137
+ function formatToMime(format) {
138
+ if (!format)
139
+ return undefined;
140
+ return `image/${format}`;
141
+ }
142
+ //# sourceMappingURL=bedrock.message.translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.message.translator.js","sourceRoot":"","sources":["../../src/translators/bedrock.message.translator.ts"],"names":[],"mappings":"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"}