@celljs/ai-anthropic 3.4.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 (113) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +82 -0
  3. package/lib/common/api/anthropic-api.d.ts +16 -0
  4. package/lib/common/api/anthropic-api.d.ts.map +1 -0
  5. package/lib/common/api/anthropic-api.js +76 -0
  6. package/lib/common/api/anthropic-api.js.map +1 -0
  7. package/lib/common/api/anthropic-api.spec.d.ts +2 -0
  8. package/lib/common/api/anthropic-api.spec.d.ts.map +1 -0
  9. package/lib/common/api/anthropic-api.spec.js +146 -0
  10. package/lib/common/api/anthropic-api.spec.js.map +1 -0
  11. package/lib/common/api/anthropic-model.d.ts +34 -0
  12. package/lib/common/api/anthropic-model.d.ts.map +1 -0
  13. package/lib/common/api/anthropic-model.js +39 -0
  14. package/lib/common/api/anthropic-model.js.map +1 -0
  15. package/lib/common/api/api-protocol.d.ts +40 -0
  16. package/lib/common/api/api-protocol.d.ts.map +1 -0
  17. package/lib/common/api/api-protocol.js +6 -0
  18. package/lib/common/api/api-protocol.js.map +1 -0
  19. package/lib/common/api/chat-request.d.ts +144 -0
  20. package/lib/common/api/chat-request.d.ts.map +1 -0
  21. package/lib/common/api/chat-request.js +151 -0
  22. package/lib/common/api/chat-request.js.map +1 -0
  23. package/lib/common/api/chat-response.d.ts +72 -0
  24. package/lib/common/api/chat-response.d.ts.map +1 -0
  25. package/lib/common/api/chat-response.js +96 -0
  26. package/lib/common/api/chat-response.js.map +1 -0
  27. package/lib/common/api/content-block.d.ts +100 -0
  28. package/lib/common/api/content-block.d.ts.map +1 -0
  29. package/lib/common/api/content-block.js +84 -0
  30. package/lib/common/api/content-block.js.map +1 -0
  31. package/lib/common/api/event.d.ts +188 -0
  32. package/lib/common/api/event.d.ts.map +1 -0
  33. package/lib/common/api/event.js +249 -0
  34. package/lib/common/api/event.js.map +1 -0
  35. package/lib/common/api/index.d.ts +10 -0
  36. package/lib/common/api/index.d.ts.map +1 -0
  37. package/lib/common/api/index.js +13 -0
  38. package/lib/common/api/index.js.map +1 -0
  39. package/lib/common/api/message.d.ts +41 -0
  40. package/lib/common/api/message.d.ts.map +1 -0
  41. package/lib/common/api/message.js +45 -0
  42. package/lib/common/api/message.js.map +1 -0
  43. package/lib/common/api/usage.d.ts +15 -0
  44. package/lib/common/api/usage.d.ts.map +1 -0
  45. package/lib/common/api/usage.js +24 -0
  46. package/lib/common/api/usage.js.map +1 -0
  47. package/lib/common/index.d.ts +3 -0
  48. package/lib/common/index.d.ts.map +1 -0
  49. package/lib/common/index.js +6 -0
  50. package/lib/common/index.js.map +1 -0
  51. package/lib/common/model/anthropic-chat-model.d.ts +20 -0
  52. package/lib/common/model/anthropic-chat-model.d.ts.map +1 -0
  53. package/lib/common/model/anthropic-chat-model.js +161 -0
  54. package/lib/common/model/anthropic-chat-model.js.map +1 -0
  55. package/lib/common/model/anthropic-chat-model.spec.d.ts +2 -0
  56. package/lib/common/model/anthropic-chat-model.spec.d.ts.map +1 -0
  57. package/lib/common/model/anthropic-chat-model.spec.js +64 -0
  58. package/lib/common/model/anthropic-chat-model.spec.js.map +1 -0
  59. package/lib/common/model/anthropic-chat-options.d.ts +55 -0
  60. package/lib/common/model/anthropic-chat-options.d.ts.map +1 -0
  61. package/lib/common/model/anthropic-chat-options.js +157 -0
  62. package/lib/common/model/anthropic-chat-options.js.map +1 -0
  63. package/lib/common/model/index.d.ts +3 -0
  64. package/lib/common/model/index.d.ts.map +1 -0
  65. package/lib/common/model/index.js +6 -0
  66. package/lib/common/model/index.js.map +1 -0
  67. package/lib/common/module.d.ts +4 -0
  68. package/lib/common/module.d.ts.map +1 -0
  69. package/lib/common/module.js +6 -0
  70. package/lib/common/module.js.map +1 -0
  71. package/lib/common/test/mock-anthropic-api.d.ts +9 -0
  72. package/lib/common/test/mock-anthropic-api.d.ts.map +1 -0
  73. package/lib/common/test/mock-anthropic-api.js +46 -0
  74. package/lib/common/test/mock-anthropic-api.js.map +1 -0
  75. package/lib/common/test/test-container.d.ts +3 -0
  76. package/lib/common/test/test-container.d.ts.map +1 -0
  77. package/lib/common/test/test-container.js +15 -0
  78. package/lib/common/test/test-container.js.map +1 -0
  79. package/lib/common/utils/index.d.ts +2 -0
  80. package/lib/common/utils/index.d.ts.map +1 -0
  81. package/lib/common/utils/index.js +5 -0
  82. package/lib/common/utils/index.js.map +1 -0
  83. package/lib/common/utils/stream-util.d.ts +9 -0
  84. package/lib/common/utils/stream-util.d.ts.map +1 -0
  85. package/lib/common/utils/stream-util.js +114 -0
  86. package/lib/common/utils/stream-util.js.map +1 -0
  87. package/lib/package.spec.d.ts +1 -0
  88. package/lib/package.spec.d.ts.map +1 -0
  89. package/lib/package.spec.js +4 -0
  90. package/lib/package.spec.js.map +1 -0
  91. package/package.json +46 -0
  92. package/src/common/api/anthropic-api.spec.ts +165 -0
  93. package/src/common/api/anthropic-api.ts +90 -0
  94. package/src/common/api/anthropic-model.ts +42 -0
  95. package/src/common/api/api-protocol.ts +45 -0
  96. package/src/common/api/chat-request.ts +280 -0
  97. package/src/common/api/chat-response.ts +161 -0
  98. package/src/common/api/content-block.ts +155 -0
  99. package/src/common/api/event.ts +376 -0
  100. package/src/common/api/index.ts +9 -0
  101. package/src/common/api/message.ts +49 -0
  102. package/src/common/api/usage.ts +24 -0
  103. package/src/common/index.ts +2 -0
  104. package/src/common/model/anthropic-chat-model.spec.ts +67 -0
  105. package/src/common/model/anthropic-chat-model.ts +187 -0
  106. package/src/common/model/anthropic-chat-options.ts +152 -0
  107. package/src/common/model/index.ts +2 -0
  108. package/src/common/module.ts +4 -0
  109. package/src/common/test/mock-anthropic-api.ts +62 -0
  110. package/src/common/test/test-container.ts +12 -0
  111. package/src/common/utils/index.ts +1 -0
  112. package/src/common/utils/stream-util.ts +142 -0
  113. package/src/package.spec.ts +4 -0
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnthropicChatModel = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ai_core_1 = require("@celljs/ai-core");
6
+ const core_1 = require("@celljs/core");
7
+ const api_1 = require("../api");
8
+ const anthropic_chat_options_1 = require("./anthropic-chat-options");
9
+ const operators_1 = require("rxjs/operators");
10
+ let AnthropicChatModel = class AnthropicChatModel {
11
+ getContentBlockTypeByMedia(media) {
12
+ if (media.mediaType.startsWith('image')) {
13
+ return api_1.ContentBlockType.IMAGE;
14
+ }
15
+ else if (media.mediaType.startsWith('pdf')) {
16
+ return api_1.ContentBlockType.DOCUMENT;
17
+ }
18
+ throw new core_1.IllegalArgumentError(`Unsupported media type: ${media.mediaType}. Supported types are: images (image/*) and PDF documents (application/pdf)`);
19
+ }
20
+ fromMediaData(mediaData) {
21
+ if (mediaData instanceof Uint8Array) {
22
+ return btoa(String.fromCharCode(...mediaData));
23
+ }
24
+ else if (typeof mediaData === 'string') {
25
+ return mediaData;
26
+ }
27
+ else {
28
+ throw new core_1.IllegalArgumentError(`Unsupported media data type: ${typeof mediaData}`);
29
+ }
30
+ }
31
+ resolveFunctionCallbacks(functions) {
32
+ return [];
33
+ }
34
+ getFunctionTools(functions) {
35
+ return this.resolveFunctionCallbacks(functions).map(func => new api_1.Tool(func.name, func.description, JSON.parse(func.inputTypeSchema)));
36
+ }
37
+ createRequest(prompt, stream) {
38
+ const userMessages = prompt.instructions
39
+ .filter(message => message.messageType !== ai_core_1.MessageType.SYSTEM)
40
+ .map(message => {
41
+ if (message.messageType === ai_core_1.MessageType.USER) {
42
+ const contents = [new api_1.ContentBlock(api_1.ContentBlockType.TEXT, undefined, message.content)];
43
+ if (message instanceof ai_core_1.UserMessage) {
44
+ if (message.media.length > 0) {
45
+ const mediaContent = message.media.map(media => {
46
+ const contentBlockType = this.getContentBlockTypeByMedia(media);
47
+ const source = new api_1.Source('base64', media.mediaType, this.fromMediaData(media.data));
48
+ return new api_1.ContentBlock(contentBlockType, source);
49
+ });
50
+ contents.push(...mediaContent);
51
+ }
52
+ }
53
+ return new api_1.AnthropicMessage(contents, message.messageType === ai_core_1.MessageType.USER ? api_1.Role.USER : api_1.Role.ASSISTANT);
54
+ }
55
+ else if (message.messageType === ai_core_1.MessageType.ASSISTANT) {
56
+ const assistantMessage = message;
57
+ const contentBlocks = [];
58
+ if (message.content) {
59
+ contentBlocks.push(new api_1.ContentBlock(api_1.ContentBlockType.TEXT, undefined, message.content));
60
+ }
61
+ if (assistantMessage.toolCalls.length > 0) {
62
+ for (const toolCall of assistantMessage.toolCalls) {
63
+ contentBlocks.push(new api_1.ContentBlock(api_1.ContentBlockType.TOOL_USE, undefined, undefined, undefined, toolCall.id, toolCall.name, JSON.parse(toolCall.arguments)));
64
+ }
65
+ }
66
+ return new api_1.AnthropicMessage(contentBlocks, api_1.Role.ASSISTANT);
67
+ }
68
+ else if (message.messageType === ai_core_1.MessageType.TOOL) {
69
+ const toolResponses = message.responses.map(toolResponse => new api_1.ContentBlock(api_1.ContentBlockType.TOOL_RESULT, undefined, undefined, undefined, toolResponse.id, toolResponse.responseData));
70
+ return new api_1.AnthropicMessage(toolResponses, api_1.Role.USER);
71
+ }
72
+ else {
73
+ throw new core_1.IllegalArgumentError(`Unsupported message type: ${message.messageType}`);
74
+ }
75
+ });
76
+ const systemPrompt = prompt.instructions
77
+ .filter(m => m.messageType === ai_core_1.MessageType.SYSTEM)
78
+ .map(m => m.content)
79
+ .join('\n');
80
+ let request = new api_1.ChatRequest(this.defaultOptions.model, userMessages, systemPrompt, this.defaultOptions.maxTokens, this.defaultOptions.temperature, stream);
81
+ if (prompt.options) {
82
+ request = Object.assign(request, prompt.options);
83
+ }
84
+ const functionsForThisRequest = new Set();
85
+ if (this.defaultOptions.functions.size > 0) {
86
+ this.defaultOptions.functions.forEach(func => functionsForThisRequest.add(func));
87
+ }
88
+ if (functionsForThisRequest.size > 0) {
89
+ const tools = this.getFunctionTools(functionsForThisRequest);
90
+ request.tools = tools;
91
+ }
92
+ return request;
93
+ }
94
+ from(response) {
95
+ return ai_core_1.ChatResponseMetadata.builder()
96
+ .id(response.id)
97
+ .model(response.model)
98
+ .usage(ai_core_1.Usage.from(response.usage.inputTokens, response.usage.outputTokens))
99
+ .keyValue('stop-reason', response.stopReason)
100
+ .keyValue('stop-sequence', response.stopSequence)
101
+ .keyValue('type', response.type)
102
+ .build();
103
+ }
104
+ toChatResponse(response) {
105
+ if (response === undefined) {
106
+ this.logger.warn('Null chat completion returned');
107
+ return ai_core_1.ChatResponse.from([]);
108
+ }
109
+ const generations = response.content
110
+ .filter(content => content.type !== api_1.ContentBlockType.TOOL_USE)
111
+ .map(content => ai_core_1.Generation.from(new ai_core_1.AssistantMessage(content.text), ai_core_1.ChatGenerationMetadata.from(response.stopReason)));
112
+ const allGenerations = [...generations];
113
+ if (response.stopReason && generations.length === 0) {
114
+ const generation = ai_core_1.Generation.from(new ai_core_1.AssistantMessage(), ai_core_1.ChatGenerationMetadata.from(response.stopReason));
115
+ allGenerations.push(generation);
116
+ }
117
+ const toolToUseList = response.content.filter(c => c.type === api_1.ContentBlockType.TOOL_USE);
118
+ if (toolToUseList.length > 0) {
119
+ const toolCalls = [];
120
+ for (const toolToUse of toolToUseList) {
121
+ toolCalls.push({
122
+ id: toolToUse.id,
123
+ type: 'function',
124
+ name: toolToUse.name,
125
+ arguments: JSON.stringify(toolToUse.input)
126
+ });
127
+ }
128
+ const assistantMessage = new ai_core_1.AssistantMessage('', [], {}, toolCalls);
129
+ const toolCallGeneration = ai_core_1.Generation.from(assistantMessage, ai_core_1.ChatGenerationMetadata.from(response.stopReason));
130
+ allGenerations.push(toolCallGeneration);
131
+ }
132
+ return ai_core_1.ChatResponse.from(allGenerations, this.from(response));
133
+ }
134
+ async call(prompt) {
135
+ const request = this.createRequest(prompt, false);
136
+ const chatResponse = await this.chatApi.chat(request);
137
+ return this.toChatResponse(chatResponse);
138
+ }
139
+ async stream(prompt) {
140
+ const request = this.createRequest(prompt, true);
141
+ const chatResponse = await this.chatApi.streamingChat(request);
142
+ return chatResponse.pipe((0, operators_1.map)(chunk => this.toChatResponse(chunk)));
143
+ }
144
+ };
145
+ tslib_1.__decorate([
146
+ (0, core_1.Autowired)(anthropic_chat_options_1.AnthropicChatOptions),
147
+ tslib_1.__metadata("design:type", anthropic_chat_options_1.AnthropicChatOptions)
148
+ ], AnthropicChatModel.prototype, "defaultOptions", void 0);
149
+ tslib_1.__decorate([
150
+ (0, core_1.Autowired)(api_1.AnthropicAPI),
151
+ tslib_1.__metadata("design:type", Object)
152
+ ], AnthropicChatModel.prototype, "chatApi", void 0);
153
+ tslib_1.__decorate([
154
+ (0, core_1.Autowired)(core_1.Logger),
155
+ tslib_1.__metadata("design:type", Object)
156
+ ], AnthropicChatModel.prototype, "logger", void 0);
157
+ AnthropicChatModel = tslib_1.__decorate([
158
+ (0, core_1.Component)(ai_core_1.ChatModel)
159
+ ], AnthropicChatModel);
160
+ exports.AnthropicChatModel = AnthropicChatModel;
161
+ //# sourceMappingURL=anthropic-chat-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-chat-model.js","sourceRoot":"","sources":["../../../src/common/model/anthropic-chat-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import '../index';
2
+ //# sourceMappingURL=anthropic-chat-model.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-chat-model.spec.d.ts","sourceRoot":"","sources":["../../../src/common/model/anthropic-chat-model.spec.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,CAAC"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ require("../index");
5
+ const anthropic_chat_model_1 = require("./anthropic-chat-model");
6
+ const ai_core_1 = require("@celljs/ai-core");
7
+ const test_container_1 = require("../test/test-container");
8
+ const anthropic_model_1 = require("../api/anthropic-model");
9
+ const mock_anthropic_api_1 = require("../test/mock-anthropic-api");
10
+ const api_protocol_1 = require("../api/api-protocol");
11
+ const container = (0, test_container_1.createContainer)();
12
+ describe('AnthropicChatModel', () => {
13
+ let anthropicChatModel;
14
+ let promptTemplate;
15
+ before(() => {
16
+ container.rebind(api_protocol_1.AnthropicAPI).to(mock_anthropic_api_1.MockAnthropicAPI).inSingletonScope();
17
+ anthropicChatModel = container.get(anthropic_chat_model_1.AnthropicChatModel);
18
+ promptTemplate = container.get(ai_core_1.PromptTemplate);
19
+ });
20
+ describe('call', () => {
21
+ it('should return a ChatResponse for a given prompt', async () => {
22
+ const prompt = await promptTemplate.create('Hello', { chatOptions: { model: anthropic_model_1.AnthropicModel.CLAUDE_3_5_SONNET } });
23
+ const response = await anthropicChatModel.call(prompt);
24
+ (0, chai_1.expect)(response).to.have.property('result');
25
+ (0, chai_1.expect)(response.result.output).to.be.instanceOf(ai_core_1.AssistantMessage);
26
+ });
27
+ it('should throw an error if the model is not set', async () => {
28
+ const prompt = await promptTemplate.create('Hello', { chatOptions: { model: '' } });
29
+ try {
30
+ await anthropicChatModel.call(prompt);
31
+ }
32
+ catch (e) {
33
+ (0, chai_1.expect)(e).to.be.instanceOf(Error);
34
+ (0, chai_1.expect)(e.message).to.equal('Model is not set!');
35
+ }
36
+ });
37
+ });
38
+ describe('stream', () => {
39
+ it('should return an Observable of ChatResponse for a given prompt', done => {
40
+ (async () => {
41
+ const prompt = await promptTemplate.create('Hello', { chatOptions: { model: anthropic_model_1.AnthropicModel.CLAUDE_3_5_SONNET } });
42
+ const response$ = await anthropicChatModel.stream(prompt);
43
+ response$.subscribe({
44
+ next: response => {
45
+ (0, chai_1.expect)(response).to.have.property('result');
46
+ (0, chai_1.expect)(response.result.output).to.be.instanceOf(ai_core_1.AssistantMessage);
47
+ },
48
+ complete: () => done()
49
+ });
50
+ })();
51
+ });
52
+ it('should throw an error if the model is not set', async () => {
53
+ const prompt = await promptTemplate.create('Hello', { chatOptions: { model: '' } });
54
+ try {
55
+ await anthropicChatModel.stream(prompt);
56
+ }
57
+ catch (e) {
58
+ (0, chai_1.expect)(e).to.be.instanceOf(Error);
59
+ (0, chai_1.expect)(e.message).to.equal('Model is not set!');
60
+ }
61
+ });
62
+ });
63
+ });
64
+ //# sourceMappingURL=anthropic-chat-model.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-chat-model.spec.js","sourceRoot":"","sources":["../../../src/common/model/anthropic-chat-model.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { FunctionCallback, FunctionCallingOptions } from '@celljs/ai-core';
2
+ import { Metadata } from '../api/chat-request';
3
+ /**
4
+ * The options to be used when sending a chat request to the Anthropic API.
5
+ */
6
+ export declare class AnthropicChatOptions implements FunctionCallingOptions {
7
+ model: string;
8
+ maxTokens: number;
9
+ metadata: Metadata;
10
+ stopSequences: string[];
11
+ temperature: number;
12
+ topP: number;
13
+ topK: number;
14
+ /**
15
+ * Tool Function Callbacks to register with the ChatModel. For Prompt
16
+ * Options the functionCallbacks are automatically enabled for the duration of the
17
+ * prompt execution. For Default Options the functionCallbacks are registered but
18
+ * disabled by default. Use the enableFunctions to set the functions from the registry
19
+ * to be used by the ChatModel chat completion requests.
20
+ */
21
+ functionCallbacks: FunctionCallback[];
22
+ /**
23
+ * List of functions, identified by their names, to configure for function calling in
24
+ * the chat completion requests. Functions with those names must exist in the
25
+ * functionCallbacks registry. The {@link #functionCallbacks} from the PromptOptions
26
+ * are automatically enabled for the duration of the prompt execution
27
+ *
28
+ * Note that function enabled with the default options are enabled for all chat
29
+ * completion requests. This could impact the token count and the billing. If the
30
+ * functions is set in a prompt options, then the enabled functions are only active
31
+ * for the duration of this prompt execution
32
+ */
33
+ functions: Set<string>;
34
+ proxyToolCalls: boolean;
35
+ toolContext: Record<string, any>;
36
+ static builder(): AnthropicChatOptionsBuilder;
37
+ static fromOptions(fromOptions: AnthropicChatOptions): AnthropicChatOptions;
38
+ }
39
+ export declare class AnthropicChatOptionsBuilder {
40
+ private options;
41
+ model(model: string): AnthropicChatOptionsBuilder;
42
+ maxTokens(maxTokens: number): AnthropicChatOptionsBuilder;
43
+ metadata(metadata: Metadata): AnthropicChatOptionsBuilder;
44
+ stopSequences(stopSequences: string[]): AnthropicChatOptionsBuilder;
45
+ temperature(temperature: number): AnthropicChatOptionsBuilder;
46
+ topP(topP: number): AnthropicChatOptionsBuilder;
47
+ topK(topK: number): AnthropicChatOptionsBuilder;
48
+ functionCallbacks(functionCallbacks: FunctionCallback[]): AnthropicChatOptionsBuilder;
49
+ functions(functions: Set<string>): AnthropicChatOptionsBuilder;
50
+ function(functionName: string): AnthropicChatOptionsBuilder;
51
+ proxyToolCalls(proxyToolCalls: boolean): AnthropicChatOptionsBuilder;
52
+ toolContext(toolContext: Record<string, any>): AnthropicChatOptionsBuilder;
53
+ build(): AnthropicChatOptions;
54
+ }
55
+ //# sourceMappingURL=anthropic-chat-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-chat-options.d.ts","sourceRoot":"","sources":["../../../src/common/model/anthropic-chat-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;GAEG;AACH,qBACa,oBAAqB,YAAW,sBAAsB;IAE/D,KAAK,EAAE,MAAM,CAAC;IAGd,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,QAAQ,CAAC;IAGnB,aAAa,EAAE,MAAM,EAAE,CAAC;IAGxB,WAAW,EAAE,MAAM,CAAC;IAGpB,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;OAMG;IAEH,iBAAiB,EAAE,gBAAgB,EAAE,CAAM;IAE3C;;;;;;;;;;OAUG;IAEH,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAqB;IAE3C,cAAc,EAAE,OAAO,CAAS;IAGhC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAEtC,MAAM,CAAC,OAAO,IAAI,2BAA2B;IAI7C,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,oBAAoB,GAAG,oBAAoB;CAe9E;AAED,qBAAa,2BAA2B;IAEpC,OAAO,CAAC,OAAO,CAAoD;IAEnE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,2BAA2B;IAKjD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,2BAA2B;IAKzD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,2BAA2B;IAKzD,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,2BAA2B;IAKnE,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,2BAA2B;IAK7D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,2BAA2B;IAK/C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,2BAA2B;IAK/C,iBAAiB,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,2BAA2B;IAKrF,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,2BAA2B;IAK9D,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,2BAA2B;IAK3D,cAAc,CAAC,cAAc,EAAE,OAAO,GAAG,2BAA2B;IAKpE,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,2BAA2B;IAS1E,KAAK,IAAI,oBAAoB;CAGhC"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var AnthropicChatOptions_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AnthropicChatOptionsBuilder = exports.AnthropicChatOptions = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const class_transformer_1 = require("class-transformer");
7
+ const core_1 = require("@celljs/core");
8
+ /**
9
+ * The options to be used when sending a chat request to the Anthropic API.
10
+ */
11
+ let AnthropicChatOptions = AnthropicChatOptions_1 = class AnthropicChatOptions {
12
+ constructor() {
13
+ /**
14
+ * Tool Function Callbacks to register with the ChatModel. For Prompt
15
+ * Options the functionCallbacks are automatically enabled for the duration of the
16
+ * prompt execution. For Default Options the functionCallbacks are registered but
17
+ * disabled by default. Use the enableFunctions to set the functions from the registry
18
+ * to be used by the ChatModel chat completion requests.
19
+ */
20
+ this.functionCallbacks = [];
21
+ /**
22
+ * List of functions, identified by their names, to configure for function calling in
23
+ * the chat completion requests. Functions with those names must exist in the
24
+ * functionCallbacks registry. The {@link #functionCallbacks} from the PromptOptions
25
+ * are automatically enabled for the duration of the prompt execution
26
+ *
27
+ * Note that function enabled with the default options are enabled for all chat
28
+ * completion requests. This could impact the token count and the billing. If the
29
+ * functions is set in a prompt options, then the enabled functions are only active
30
+ * for the duration of this prompt execution
31
+ */
32
+ this.functions = new Set();
33
+ this.proxyToolCalls = false;
34
+ this.toolContext = {};
35
+ }
36
+ static builder() {
37
+ return new AnthropicChatOptionsBuilder();
38
+ }
39
+ static fromOptions(fromOptions) {
40
+ return AnthropicChatOptions_1.builder()
41
+ .model(fromOptions.model)
42
+ .maxTokens(fromOptions.maxTokens)
43
+ .metadata(fromOptions.metadata)
44
+ .stopSequences(fromOptions.stopSequences)
45
+ .temperature(fromOptions.temperature)
46
+ .topP(fromOptions.topP)
47
+ .topK(fromOptions.topK)
48
+ .functionCallbacks(fromOptions.functionCallbacks)
49
+ .functions(fromOptions.functions)
50
+ .proxyToolCalls(fromOptions.proxyToolCalls)
51
+ .toolContext(fromOptions.toolContext)
52
+ .build();
53
+ }
54
+ };
55
+ tslib_1.__decorate([
56
+ (0, class_transformer_1.Expose)({ name: 'max_tokens' }),
57
+ tslib_1.__metadata("design:type", Number)
58
+ ], AnthropicChatOptions.prototype, "maxTokens", void 0);
59
+ tslib_1.__decorate([
60
+ (0, class_transformer_1.Expose)({ name: 'stop_sequences' }),
61
+ tslib_1.__metadata("design:type", Array)
62
+ ], AnthropicChatOptions.prototype, "stopSequences", void 0);
63
+ tslib_1.__decorate([
64
+ (0, class_transformer_1.Expose)({ name: 'temperature' }),
65
+ tslib_1.__metadata("design:type", Number)
66
+ ], AnthropicChatOptions.prototype, "temperature", void 0);
67
+ tslib_1.__decorate([
68
+ (0, class_transformer_1.Expose)({ name: 'top_p' }),
69
+ tslib_1.__metadata("design:type", Number)
70
+ ], AnthropicChatOptions.prototype, "topP", void 0);
71
+ tslib_1.__decorate([
72
+ (0, class_transformer_1.Expose)({ name: 'top_k' }),
73
+ tslib_1.__metadata("design:type", Number)
74
+ ], AnthropicChatOptions.prototype, "topK", void 0);
75
+ tslib_1.__decorate([
76
+ (0, class_transformer_1.Exclude)(),
77
+ tslib_1.__metadata("design:type", Array)
78
+ ], AnthropicChatOptions.prototype, "functionCallbacks", void 0);
79
+ tslib_1.__decorate([
80
+ (0, class_transformer_1.Exclude)(),
81
+ tslib_1.__metadata("design:type", Set)
82
+ ], AnthropicChatOptions.prototype, "functions", void 0);
83
+ tslib_1.__decorate([
84
+ (0, class_transformer_1.Exclude)(),
85
+ tslib_1.__metadata("design:type", Boolean)
86
+ ], AnthropicChatOptions.prototype, "proxyToolCalls", void 0);
87
+ tslib_1.__decorate([
88
+ (0, class_transformer_1.Exclude)(),
89
+ tslib_1.__metadata("design:type", Object)
90
+ ], AnthropicChatOptions.prototype, "toolContext", void 0);
91
+ AnthropicChatOptions = AnthropicChatOptions_1 = tslib_1.__decorate([
92
+ (0, core_1.Constant)(AnthropicChatOptions_1, new AnthropicChatOptions_1())
93
+ ], AnthropicChatOptions);
94
+ exports.AnthropicChatOptions = AnthropicChatOptions;
95
+ class AnthropicChatOptionsBuilder {
96
+ constructor() {
97
+ this.options = new AnthropicChatOptions();
98
+ }
99
+ model(model) {
100
+ this.options.model = model;
101
+ return this;
102
+ }
103
+ maxTokens(maxTokens) {
104
+ this.options.maxTokens = maxTokens;
105
+ return this;
106
+ }
107
+ metadata(metadata) {
108
+ this.options.metadata = metadata;
109
+ return this;
110
+ }
111
+ stopSequences(stopSequences) {
112
+ this.options.stopSequences = stopSequences;
113
+ return this;
114
+ }
115
+ temperature(temperature) {
116
+ this.options.temperature = temperature;
117
+ return this;
118
+ }
119
+ topP(topP) {
120
+ this.options.topP = topP;
121
+ return this;
122
+ }
123
+ topK(topK) {
124
+ this.options.topK = topK;
125
+ return this;
126
+ }
127
+ functionCallbacks(functionCallbacks) {
128
+ this.options.functionCallbacks = functionCallbacks;
129
+ return this;
130
+ }
131
+ functions(functions) {
132
+ this.options.functions = functions;
133
+ return this;
134
+ }
135
+ function(functionName) {
136
+ this.options.functions.add(functionName);
137
+ return this;
138
+ }
139
+ proxyToolCalls(proxyToolCalls) {
140
+ this.options.proxyToolCalls = proxyToolCalls;
141
+ return this;
142
+ }
143
+ toolContext(toolContext) {
144
+ if (this.options.toolContext === undefined) {
145
+ this.options.toolContext = toolContext;
146
+ }
147
+ else {
148
+ this.options.toolContext = { ...this.options.toolContext, ...toolContext };
149
+ }
150
+ return this;
151
+ }
152
+ build() {
153
+ return this.options;
154
+ }
155
+ }
156
+ exports.AnthropicChatOptionsBuilder = AnthropicChatOptionsBuilder;
157
+ //# sourceMappingURL=anthropic-chat-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-chat-options.js","sourceRoot":"","sources":["../../../src/common/model/anthropic-chat-options.ts"],"names":[],"mappings":";;;;;AACA,yDAAoD;AAEpD,uCAAwC;AAExC;;GAEG;AAEI,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAA1B;QAqBH;;;;;;WAMG;QAEH,sBAAiB,GAAuB,EAAE,CAAC;QAE3C;;;;;;;;;;WAUG;QAEH,cAAS,GAAgB,IAAI,GAAG,EAAU,CAAC;QAE3C,mBAAc,GAAY,KAAK,CAAC;QAGhC,gBAAW,GAAwB,EAAE,CAAC;IAqB1C,CAAC;IAnBG,MAAM,CAAC,OAAO;QACV,OAAO,IAAI,2BAA2B,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,WAAiC;QAChD,OAAO,sBAAoB,CAAC,OAAO,EAAE;aAChC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;aACxB,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC;aAChC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC;aAC9B,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC;aACxC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;aACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;aACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;aACtB,iBAAiB,CAAC,WAAW,CAAC,iBAAiB,CAAC;aAChD,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC;aAChC,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC;aAC1C,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;aACpC,KAAK,EAAE,CAAC;IACjB,CAAC;CACJ,CAAA;AAjEG;IAAC,IAAA,0BAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;;uDACb;AAIlB;IAAC,IAAA,0BAAM,EAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;;2DACX;AAExB;IAAC,IAAA,0BAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;yDACZ;AAEpB;IAAC,IAAA,0BAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;;kDACb;AAEb;IAAC,IAAA,0BAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;;kDACb;AASb;IAAC,IAAA,2BAAO,GAAE;;+DACiC;AAa3C;IAAC,IAAA,2BAAO,GAAE;sCACC,GAAG;uDAA6B;AAC3C;IAAC,IAAA,2BAAO,GAAE;;4DACsB;AAEhC;IAAC,IAAA,2BAAO,GAAE;;yDAC4B;AAhD7B,oBAAoB;IADhC,IAAA,eAAQ,EAAC,sBAAoB,EAAE,IAAI,sBAAoB,EAAE,CAAC;GAC9C,oBAAoB,CAqEhC;AArEY,oDAAoB;AAuEjC,MAAa,2BAA2B;IAAxC;QAEY,YAAO,GAAyB,IAAI,oBAAoB,EAAE,CAAC;IAqEvE,CAAC;IAnEG,KAAK,CAAC,KAAa;QACf,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,SAAiB;QACvB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;QACnC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,QAAkB;QACvB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,aAAuB;QACjC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,WAAmB;QAC3B,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,IAAY;QACb,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,IAAY;QACb,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iBAAiB,CAAC,iBAAqC;QACnD,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QACnD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,SAAsB;QAC5B,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;QACnC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,YAAoB;QACzB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,cAAuB;QAClC,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC;QAC7C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,WAAgC;QACxC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE;YACxC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;SAC1C;aAAM;YACH,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,WAAW,EAAE,CAAC;SAC9E;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AAvED,kEAuEC"}
@@ -0,0 +1,3 @@
1
+ export * from './anthropic-chat-model';
2
+ export * from './anthropic-chat-options';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/model/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./anthropic-chat-model"), exports);
5
+ tslib_1.__exportStar(require("./anthropic-chat-options"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/model/index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AACvC,mEAAyC"}
@@ -0,0 +1,4 @@
1
+ import './index';
2
+ declare const _default: import("inversify/lib/interfaces/interfaces").interfaces.ContainerModule;
3
+ export default _default;
4
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/common/module.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,CAAC;;AAEjB,wBAA0B"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@celljs/core");
4
+ require("./index");
5
+ exports.default = (0, core_1.autoBind)();
6
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/common/module.ts"],"names":[],"mappings":";;AAAA,uCAAwC;AACxC,mBAAiB;AAEjB,kBAAe,IAAA,eAAQ,GAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Observable } from 'rxjs';
2
+ import { AnthropicAPI } from '../api/api-protocol';
3
+ import { ChatRequest } from '../api/chat-request';
4
+ import { ChatResponse } from '../api/chat-response';
5
+ export declare class MockAnthropicAPI implements AnthropicAPI {
6
+ chat(chatRequest: ChatRequest): Promise<ChatResponse>;
7
+ streamingChat(chatRequest: ChatRequest): Promise<Observable<ChatResponse>>;
8
+ }
9
+ //# sourceMappingURL=mock-anthropic-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-anthropic-api.d.ts","sourceRoot":"","sources":["../../../src/common/test/mock-anthropic-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAQ,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,qBACa,gBAAiB,YAAW,YAAY;IAC3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAyBrD,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;CA0BnF"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MockAnthropicAPI = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@celljs/core");
6
+ const rxjs_1 = require("rxjs");
7
+ const api_protocol_1 = require("../api/api-protocol");
8
+ const chat_response_1 = require("../api/chat-response");
9
+ const content_block_1 = require("../api/content-block");
10
+ const message_1 = require("../api/message");
11
+ let MockAnthropicAPI = class MockAnthropicAPI {
12
+ async chat(chatRequest) {
13
+ if (chatRequest.stream) {
14
+ throw new Error('Request must set the stream property to false.');
15
+ }
16
+ return new chat_response_1.ChatResponse('msg_123', 'message', message_1.Role.ASSISTANT, [
17
+ {
18
+ type: content_block_1.ContentBlockType.TEXT,
19
+ text: 'How can I assist you today?'
20
+ }
21
+ ], chatRequest.model, 'end_turn', undefined, {
22
+ inputTokens: 10,
23
+ outputTokens: 20
24
+ });
25
+ }
26
+ async streamingChat(chatRequest) {
27
+ if (!chatRequest.stream) {
28
+ throw new Error('Request must set the stream property to true.');
29
+ }
30
+ const response = new chat_response_1.ChatResponse('msg_123', 'message', message_1.Role.ASSISTANT, [
31
+ {
32
+ type: content_block_1.ContentBlockType.TEXT,
33
+ text: 'How can I assist you today?'
34
+ }
35
+ ], chatRequest.model, 'end_turn', undefined, {
36
+ inputTokens: 10,
37
+ outputTokens: 20
38
+ });
39
+ return (0, rxjs_1.from)([response]);
40
+ }
41
+ };
42
+ MockAnthropicAPI = tslib_1.__decorate([
43
+ (0, core_1.Component)(api_protocol_1.AnthropicAPI)
44
+ ], MockAnthropicAPI);
45
+ exports.MockAnthropicAPI = MockAnthropicAPI;
46
+ //# sourceMappingURL=mock-anthropic-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-anthropic-api.js","sourceRoot":"","sources":["../../../src/common/test/mock-anthropic-api.ts"],"names":[],"mappings":";;;;AAAA,uCAAyC;AACzC,+BAAwC;AACxC,sDAAmD;AAEnD,wDAAoD;AACpD,wDAAwD;AACxD,4CAAsC;AAG/B,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACzB,KAAK,CAAC,IAAI,CAAC,WAAwB;QAC/B,IAAI,WAAW,CAAC,MAAM,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACrE;QAED,OAAO,IAAI,4BAAY,CACnB,SAAS,EACT,SAAS,EACT,cAAI,CAAC,SAAS,EACd;YACI;gBACI,IAAI,EAAE,gCAAgB,CAAC,IAAI;gBAC3B,IAAI,EAAE,6BAA6B;aACtC;SACJ,EACD,WAAW,CAAC,KAAK,EACjB,UAAU,EACV,SAAS,EACT;YACI,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;SACnB,CACJ,CAAC;IACN,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAwB;QACxC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;SACpE;QAED,MAAM,QAAQ,GAAG,IAAI,4BAAY,CAC7B,SAAS,EACT,SAAS,EACT,cAAI,CAAC,SAAS,EACd;YACI;gBACI,IAAI,EAAE,gCAAgB,CAAC,IAAI;gBAC3B,IAAI,EAAE,6BAA6B;aACtC;SACJ,EACD,WAAW,CAAC,KAAK,EACjB,UAAU,EACV,SAAS,EACT;YACI,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;SACnB,CACJ,CAAC;QAEF,OAAO,IAAA,WAAI,EAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5B,CAAC;CACJ,CAAA;AApDY,gBAAgB;IAD5B,IAAA,gBAAS,EAAC,2BAAY,CAAC;GACX,gBAAgB,CAoD5B;AApDY,4CAAgB"}
@@ -0,0 +1,3 @@
1
+ import '../index';
2
+ export declare const createContainer: () => import("inversify/lib/interfaces/interfaces").interfaces.Container;
3
+ //# sourceMappingURL=test-container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-container.d.ts","sourceRoot":"","sources":["../../../src/common/test/test-container.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,CAAC;AAIlB,eAAO,MAAM,eAAe,0EAI3B,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createContainer = void 0;
4
+ const test_module_1 = require("@celljs/core/lib/common/test/test-module");
5
+ const module_1 = require("@celljs/http/lib/common/module");
6
+ const core_1 = require("@celljs/core");
7
+ require("../index");
8
+ const ollamaTestModule = (0, core_1.autoBind)();
9
+ const createContainer = () => {
10
+ const container = core_1.ContainerFactory.create(test_module_1.coreTestModule, module_1.default, ollamaTestModule);
11
+ core_1.ContainerProvider.set(container);
12
+ return container;
13
+ };
14
+ exports.createContainer = createContainer;
15
+ //# sourceMappingURL=test-container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-container.js","sourceRoot":"","sources":["../../../src/common/test/test-container.ts"],"names":[],"mappings":";;;AAAA,0EAA0E;AAC1E,2DAAwD;AACxD,uCAA6E;AAC7E,oBAAkB;AAElB,MAAM,gBAAgB,GAAG,IAAA,eAAQ,GAAE,CAAC;AAE7B,MAAM,eAAe,GAAG,GAAG,EAAE;IAChC,MAAM,SAAS,GAAG,uBAAgB,CAAC,MAAM,CAAC,4BAAc,EAAE,gBAAU,EAAE,gBAAgB,CAAC,CAAC;IACxF,wBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAJW,QAAA,eAAe,mBAI1B"}
@@ -0,0 +1,2 @@
1
+ export * from './stream-util';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./stream-util"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/utils/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B"}