@just-every/ensemble 0.2.87 → 0.2.88

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 (215) hide show
  1. package/dist/cjs/config/tool_execution.cjs +47 -0
  2. package/dist/cjs/config/tool_execution.d.ts +12 -0
  3. package/dist/cjs/config/tool_execution.d.ts.map +1 -0
  4. package/dist/cjs/config/tool_execution.js.map +1 -0
  5. package/dist/cjs/core/ensemble_embed.cjs +35 -0
  6. package/dist/cjs/core/ensemble_embed.d.ts +3 -0
  7. package/dist/cjs/core/ensemble_embed.d.ts.map +1 -0
  8. package/dist/cjs/core/ensemble_embed.js.map +1 -0
  9. package/dist/cjs/core/ensemble_image.cjs +13 -0
  10. package/dist/cjs/core/ensemble_image.d.ts +3 -0
  11. package/dist/cjs/core/ensemble_image.d.ts.map +1 -0
  12. package/dist/cjs/core/ensemble_image.js.map +1 -0
  13. package/dist/cjs/core/ensemble_listen.cjs +162 -0
  14. package/dist/cjs/core/ensemble_listen.d.ts +5 -0
  15. package/dist/cjs/core/ensemble_listen.d.ts.map +1 -0
  16. package/dist/cjs/core/ensemble_listen.js.map +1 -0
  17. package/dist/cjs/core/ensemble_live.cjs +387 -0
  18. package/dist/cjs/core/ensemble_live.d.ts +14 -0
  19. package/dist/cjs/core/ensemble_live.d.ts.map +1 -0
  20. package/dist/cjs/core/ensemble_live.js.map +1 -0
  21. package/dist/cjs/core/ensemble_request.cjs +409 -0
  22. package/dist/cjs/core/ensemble_request.d.ts +4 -0
  23. package/dist/cjs/core/ensemble_request.d.ts.map +1 -0
  24. package/dist/cjs/core/ensemble_request.js.map +1 -0
  25. package/dist/cjs/core/ensemble_voice.cjs +284 -0
  26. package/dist/cjs/core/ensemble_voice.d.ts +4 -0
  27. package/dist/cjs/core/ensemble_voice.d.ts.map +1 -0
  28. package/dist/cjs/core/ensemble_voice.js.map +1 -0
  29. package/dist/cjs/data/model_data.cjs +1460 -0
  30. package/dist/cjs/data/model_data.d.ts +71 -0
  31. package/dist/cjs/data/model_data.d.ts.map +1 -0
  32. package/dist/cjs/data/model_data.js.map +1 -0
  33. package/dist/cjs/index.cjs +139 -0
  34. package/dist/cjs/index.d.ts +37 -0
  35. package/dist/cjs/index.d.ts.map +1 -0
  36. package/dist/cjs/index.js.map +1 -0
  37. package/dist/cjs/model_providers/base_provider.cjs +46 -0
  38. package/dist/cjs/model_providers/base_provider.d.ts +13 -0
  39. package/dist/cjs/model_providers/base_provider.d.ts.map +1 -0
  40. package/dist/cjs/model_providers/base_provider.js.map +1 -0
  41. package/dist/cjs/model_providers/claude.cjs +782 -0
  42. package/dist/cjs/model_providers/claude.d.ts +12 -0
  43. package/dist/cjs/model_providers/claude.d.ts.map +1 -0
  44. package/dist/cjs/model_providers/claude.js.map +1 -0
  45. package/dist/cjs/model_providers/deepseek.cjs +129 -0
  46. package/dist/cjs/model_providers/deepseek.d.ts +8 -0
  47. package/dist/cjs/model_providers/deepseek.d.ts.map +1 -0
  48. package/dist/cjs/model_providers/deepseek.js.map +1 -0
  49. package/dist/cjs/model_providers/elevenlabs.cjs +140 -0
  50. package/dist/cjs/model_providers/elevenlabs.d.ts +37 -0
  51. package/dist/cjs/model_providers/elevenlabs.d.ts.map +1 -0
  52. package/dist/cjs/model_providers/elevenlabs.js.map +1 -0
  53. package/dist/cjs/model_providers/gemini.cjs +1654 -0
  54. package/dist/cjs/model_providers/gemini.d.ts +22 -0
  55. package/dist/cjs/model_providers/gemini.d.ts.map +1 -0
  56. package/dist/cjs/model_providers/gemini.js.map +1 -0
  57. package/dist/cjs/model_providers/grok.cjs +25 -0
  58. package/dist/cjs/model_providers/grok.d.ts +8 -0
  59. package/dist/cjs/model_providers/grok.d.ts.map +1 -0
  60. package/dist/cjs/model_providers/grok.js.map +1 -0
  61. package/dist/cjs/model_providers/model_provider.cjs +296 -0
  62. package/dist/cjs/model_providers/model_provider.d.ts +10 -0
  63. package/dist/cjs/model_providers/model_provider.d.ts.map +1 -0
  64. package/dist/cjs/model_providers/model_provider.js.map +1 -0
  65. package/dist/cjs/model_providers/openai.cjs +1117 -0
  66. package/dist/cjs/model_providers/openai.d.ts +19 -0
  67. package/dist/cjs/model_providers/openai.d.ts.map +1 -0
  68. package/dist/cjs/model_providers/openai.js.map +1 -0
  69. package/dist/cjs/model_providers/openai_chat.cjs +787 -0
  70. package/dist/cjs/model_providers/openai_chat.d.ts +20 -0
  71. package/dist/cjs/model_providers/openai_chat.d.ts.map +1 -0
  72. package/dist/cjs/model_providers/openai_chat.js.map +1 -0
  73. package/dist/cjs/model_providers/openrouter.cjs +22 -0
  74. package/dist/cjs/model_providers/openrouter.d.ts +6 -0
  75. package/dist/cjs/model_providers/openrouter.d.ts.map +1 -0
  76. package/dist/cjs/model_providers/openrouter.js.map +1 -0
  77. package/dist/cjs/model_providers/test_provider.cjs +236 -0
  78. package/dist/cjs/model_providers/test_provider.d.ts +29 -0
  79. package/dist/cjs/model_providers/test_provider.d.ts.map +1 -0
  80. package/dist/cjs/model_providers/test_provider.js.map +1 -0
  81. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  82. package/dist/cjs/types/api_types.cjs +3 -0
  83. package/dist/cjs/types/api_types.d.ts +249 -0
  84. package/dist/cjs/types/api_types.d.ts.map +1 -0
  85. package/dist/cjs/types/api_types.js.map +1 -0
  86. package/dist/cjs/types/errors.cjs +76 -0
  87. package/dist/cjs/types/errors.d.ts +34 -0
  88. package/dist/cjs/types/errors.d.ts.map +1 -0
  89. package/dist/cjs/types/errors.js.map +1 -0
  90. package/dist/cjs/types/types.cjs +3 -0
  91. package/dist/cjs/types/types.d.ts +638 -0
  92. package/dist/cjs/types/types.d.ts.map +1 -0
  93. package/dist/cjs/types/types.js.map +1 -0
  94. package/dist/cjs/utils/agent.cjs +384 -0
  95. package/dist/cjs/utils/agent.d.ts +48 -0
  96. package/dist/cjs/utils/agent.d.ts.map +1 -0
  97. package/dist/cjs/utils/agent.js.map +1 -0
  98. package/dist/cjs/utils/audio_stream_player.cjs +342 -0
  99. package/dist/cjs/utils/audio_stream_player.d.ts +37 -0
  100. package/dist/cjs/utils/audio_stream_player.d.ts.map +1 -0
  101. package/dist/cjs/utils/audio_stream_player.js.map +1 -0
  102. package/dist/cjs/utils/citation_tracker.cjs +25 -0
  103. package/dist/cjs/utils/citation_tracker.d.ts +12 -0
  104. package/dist/cjs/utils/citation_tracker.d.ts.map +1 -0
  105. package/dist/cjs/utils/citation_tracker.js.map +1 -0
  106. package/dist/cjs/utils/config_manager.cjs +105 -0
  107. package/dist/cjs/utils/config_manager.d.ts +31 -0
  108. package/dist/cjs/utils/config_manager.d.ts.map +1 -0
  109. package/dist/cjs/utils/config_manager.js.map +1 -0
  110. package/dist/cjs/utils/cost_tracker.cjs +226 -0
  111. package/dist/cjs/utils/cost_tracker.d.ts +33 -0
  112. package/dist/cjs/utils/cost_tracker.d.ts.map +1 -0
  113. package/dist/cjs/utils/cost_tracker.js.map +1 -0
  114. package/dist/cjs/utils/create_tool_function.cjs +182 -0
  115. package/dist/cjs/utils/create_tool_function.d.ts +3 -0
  116. package/dist/cjs/utils/create_tool_function.d.ts.map +1 -0
  117. package/dist/cjs/utils/create_tool_function.js.map +1 -0
  118. package/dist/cjs/utils/delta_buffer.cjs +65 -0
  119. package/dist/cjs/utils/delta_buffer.d.ts +14 -0
  120. package/dist/cjs/utils/delta_buffer.d.ts.map +1 -0
  121. package/dist/cjs/utils/delta_buffer.js.map +1 -0
  122. package/dist/cjs/utils/ensemble_result.cjs +167 -0
  123. package/dist/cjs/utils/ensemble_result.d.ts +33 -0
  124. package/dist/cjs/utils/ensemble_result.d.ts.map +1 -0
  125. package/dist/cjs/utils/ensemble_result.js.map +1 -0
  126. package/dist/cjs/utils/event_controller.cjs +59 -0
  127. package/dist/cjs/utils/event_controller.d.ts +13 -0
  128. package/dist/cjs/utils/event_controller.d.ts.map +1 -0
  129. package/dist/cjs/utils/event_controller.js.map +1 -0
  130. package/dist/cjs/utils/external_models.cjs +42 -0
  131. package/dist/cjs/utils/external_models.d.ts +9 -0
  132. package/dist/cjs/utils/external_models.d.ts.map +1 -0
  133. package/dist/cjs/utils/external_models.js.map +1 -0
  134. package/dist/cjs/utils/image_to_text.cjs +58 -0
  135. package/dist/cjs/utils/image_to_text.d.ts +3 -0
  136. package/dist/cjs/utils/image_to_text.d.ts.map +1 -0
  137. package/dist/cjs/utils/image_to_text.js.map +1 -0
  138. package/dist/cjs/utils/image_utils.cjs +168 -0
  139. package/dist/cjs/utils/image_utils.d.ts +18 -0
  140. package/dist/cjs/utils/image_utils.d.ts.map +1 -0
  141. package/dist/cjs/utils/image_utils.js.map +1 -0
  142. package/dist/cjs/utils/image_validation.cjs +31 -0
  143. package/dist/cjs/utils/image_validation.d.ts +3 -0
  144. package/dist/cjs/utils/image_validation.d.ts.map +1 -0
  145. package/dist/cjs/utils/image_validation.js.map +1 -0
  146. package/dist/cjs/utils/llm_logger.cjs +31 -0
  147. package/dist/cjs/utils/llm_logger.d.ts +8 -0
  148. package/dist/cjs/utils/llm_logger.d.ts.map +1 -0
  149. package/dist/cjs/utils/llm_logger.js.map +1 -0
  150. package/dist/cjs/utils/message_history.cjs +560 -0
  151. package/dist/cjs/utils/message_history.d.ts +65 -0
  152. package/dist/cjs/utils/message_history.d.ts.map +1 -0
  153. package/dist/cjs/utils/message_history.js.map +1 -0
  154. package/dist/cjs/utils/model_class_config.cjs +105 -0
  155. package/dist/cjs/utils/model_class_config.d.ts +12 -0
  156. package/dist/cjs/utils/model_class_config.d.ts.map +1 -0
  157. package/dist/cjs/utils/model_class_config.js.map +1 -0
  158. package/dist/cjs/utils/pause_controller.cjs +90 -0
  159. package/dist/cjs/utils/pause_controller.d.ts +14 -0
  160. package/dist/cjs/utils/pause_controller.d.ts.map +1 -0
  161. package/dist/cjs/utils/pause_controller.js.map +1 -0
  162. package/dist/cjs/utils/quota_tracker.cjs +311 -0
  163. package/dist/cjs/utils/quota_tracker.d.ts +22 -0
  164. package/dist/cjs/utils/quota_tracker.d.ts.map +1 -0
  165. package/dist/cjs/utils/quota_tracker.js.map +1 -0
  166. package/dist/cjs/utils/retry_handler.cjs +131 -0
  167. package/dist/cjs/utils/retry_handler.d.ts +15 -0
  168. package/dist/cjs/utils/retry_handler.d.ts.map +1 -0
  169. package/dist/cjs/utils/retry_handler.js.map +1 -0
  170. package/dist/cjs/utils/running_tool_tracker.cjs +133 -0
  171. package/dist/cjs/utils/running_tool_tracker.d.ts +42 -0
  172. package/dist/cjs/utils/running_tool_tracker.d.ts.map +1 -0
  173. package/dist/cjs/utils/running_tool_tracker.js.map +1 -0
  174. package/dist/cjs/utils/sequential_queue.cjs +73 -0
  175. package/dist/cjs/utils/sequential_queue.d.ts +13 -0
  176. package/dist/cjs/utils/sequential_queue.d.ts.map +1 -0
  177. package/dist/cjs/utils/sequential_queue.js.map +1 -0
  178. package/dist/cjs/utils/stream_handler.cjs +73 -0
  179. package/dist/cjs/utils/stream_handler.d.ts +16 -0
  180. package/dist/cjs/utils/stream_handler.d.ts.map +1 -0
  181. package/dist/cjs/utils/stream_handler.js.map +1 -0
  182. package/dist/cjs/utils/summary_utils.cjs +211 -0
  183. package/dist/cjs/utils/summary_utils.d.ts +7 -0
  184. package/dist/cjs/utils/summary_utils.d.ts.map +1 -0
  185. package/dist/cjs/utils/summary_utils.js.map +1 -0
  186. package/dist/cjs/utils/test_utils.cjs +212 -0
  187. package/dist/cjs/utils/test_utils.d.ts +58 -0
  188. package/dist/cjs/utils/test_utils.d.ts.map +1 -0
  189. package/dist/cjs/utils/test_utils.js.map +1 -0
  190. package/dist/cjs/utils/tool_execution_manager.cjs +139 -0
  191. package/dist/cjs/utils/tool_execution_manager.d.ts +7 -0
  192. package/dist/cjs/utils/tool_execution_manager.d.ts.map +1 -0
  193. package/dist/cjs/utils/tool_execution_manager.js.map +1 -0
  194. package/dist/cjs/utils/tool_parameter_utils.cjs +168 -0
  195. package/dist/cjs/utils/tool_parameter_utils.d.ts +5 -0
  196. package/dist/cjs/utils/tool_parameter_utils.d.ts.map +1 -0
  197. package/dist/cjs/utils/tool_parameter_utils.js.map +1 -0
  198. package/dist/cjs/utils/tool_result_processor.cjs +363 -0
  199. package/dist/cjs/utils/tool_result_processor.d.ts +11 -0
  200. package/dist/cjs/utils/tool_result_processor.d.ts.map +1 -0
  201. package/dist/cjs/utils/tool_result_processor.js.map +1 -0
  202. package/dist/cjs/utils/verification.cjs +59 -0
  203. package/dist/cjs/utils/verification.d.ts +7 -0
  204. package/dist/cjs/utils/verification.d.ts.map +1 -0
  205. package/dist/cjs/utils/verification.js.map +1 -0
  206. package/dist/tsconfig.tsbuildinfo +1 -1
  207. package/dist/utils/audio_stream_player.d.ts +2 -0
  208. package/dist/utils/audio_stream_player.d.ts.map +1 -1
  209. package/dist/utils/audio_stream_player.js +83 -1
  210. package/dist/utils/audio_stream_player.js.map +1 -1
  211. package/dist/utils/cost_tracker.d.ts +7 -0
  212. package/dist/utils/cost_tracker.d.ts.map +1 -1
  213. package/dist/utils/cost_tracker.js +29 -0
  214. package/dist/utils/cost_tracker.js.map +1 -1
  215. package/package.json +18 -3
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ensembleResult = ensembleResult;
4
+ async function ensembleResult(stream) {
5
+ const result = {
6
+ message: '',
7
+ completed: false,
8
+ startTime: new Date(),
9
+ messageIds: new Set(),
10
+ };
11
+ const messageDeltas = new Map();
12
+ const thinkingDeltas = new Map();
13
+ const toolCalls = new Map();
14
+ const files = [];
15
+ const responseOutputs = [];
16
+ try {
17
+ for await (const event of stream) {
18
+ switch (event.type) {
19
+ case 'message_start': {
20
+ const msgEvent = event;
21
+ if (msgEvent.message_id) {
22
+ result.messageIds.add(msgEvent.message_id);
23
+ messageDeltas.set(msgEvent.message_id, []);
24
+ if (msgEvent.thinking_content || msgEvent.thinking_signature) {
25
+ thinkingDeltas.set(msgEvent.message_id, {
26
+ content: [],
27
+ signature: [],
28
+ });
29
+ }
30
+ }
31
+ break;
32
+ }
33
+ case 'message_delta': {
34
+ const msgEvent = event;
35
+ if (msgEvent.message_id && messageDeltas.has(msgEvent.message_id)) {
36
+ messageDeltas.get(msgEvent.message_id).push(msgEvent.content);
37
+ }
38
+ if (msgEvent.thinking_content && msgEvent.message_id && thinkingDeltas.has(msgEvent.message_id)) {
39
+ thinkingDeltas.get(msgEvent.message_id).content.push(msgEvent.thinking_content);
40
+ }
41
+ if (msgEvent.thinking_signature && msgEvent.message_id && thinkingDeltas.has(msgEvent.message_id)) {
42
+ thinkingDeltas.get(msgEvent.message_id).signature?.push(msgEvent.thinking_signature);
43
+ }
44
+ break;
45
+ }
46
+ case 'message_complete': {
47
+ const msgEvent = event;
48
+ if (msgEvent.message_id) {
49
+ if (msgEvent.content) {
50
+ result.message = msgEvent.content;
51
+ }
52
+ else if (messageDeltas.has(msgEvent.message_id)) {
53
+ const deltas = messageDeltas.get(msgEvent.message_id);
54
+ result.message = deltas.join('');
55
+ }
56
+ if (thinkingDeltas.has(msgEvent.message_id)) {
57
+ const thinking = thinkingDeltas.get(msgEvent.message_id);
58
+ result.thinking = {
59
+ content: msgEvent.thinking_content || thinking.content.join(''),
60
+ signature: msgEvent.thinking_signature ||
61
+ (thinking.signature?.length ? thinking.signature.join('') : undefined),
62
+ };
63
+ }
64
+ }
65
+ break;
66
+ }
67
+ case 'file_start':
68
+ case 'file_delta':
69
+ case 'file_complete': {
70
+ const fileEvent = event;
71
+ if (event.type === 'file_complete') {
72
+ files.push({
73
+ mime_type: fileEvent.mime_type,
74
+ data: fileEvent.data,
75
+ data_format: fileEvent.data_format,
76
+ });
77
+ }
78
+ break;
79
+ }
80
+ case 'tool_start': {
81
+ const toolEvent = event;
82
+ const callId = toolEvent.tool_call.call_id || toolEvent.tool_call.id;
83
+ toolCalls.set(callId, {
84
+ toolCall: toolEvent.tool_call,
85
+ id: toolEvent.tool_call.id,
86
+ call_id: callId,
87
+ });
88
+ break;
89
+ }
90
+ case 'tool_done': {
91
+ const toolEvent = event;
92
+ if (toolEvent.result) {
93
+ const existing = toolCalls.get(toolEvent.result.call_id);
94
+ if (existing) {
95
+ existing.output = toolEvent.result.output;
96
+ existing.error = toolEvent.result.error;
97
+ }
98
+ }
99
+ break;
100
+ }
101
+ case 'cost_update': {
102
+ const costEvent = event;
103
+ result.cost = {
104
+ input_tokens: costEvent.usage.input_tokens,
105
+ output_tokens: costEvent.usage.output_tokens,
106
+ total_tokens: costEvent.usage.total_tokens,
107
+ cached_tokens: costEvent.usage.cached_tokens,
108
+ thought_delay: costEvent.thought_delay,
109
+ };
110
+ break;
111
+ }
112
+ case 'error': {
113
+ const errorEvent = event;
114
+ result.error = errorEvent.error;
115
+ break;
116
+ }
117
+ case 'response_output': {
118
+ const outputEvent = event;
119
+ responseOutputs.push(outputEvent.message);
120
+ break;
121
+ }
122
+ case 'agent_start':
123
+ case 'agent_status':
124
+ case 'agent_done': {
125
+ const agentEvent = event;
126
+ result.agent = agentEvent.agent;
127
+ break;
128
+ }
129
+ case 'stream_end': {
130
+ result.completed = true;
131
+ break;
132
+ }
133
+ }
134
+ }
135
+ if (!result.message && messageDeltas.size > 0) {
136
+ const allDeltas = [];
137
+ for (const deltas of messageDeltas.values()) {
138
+ allDeltas.push(...deltas);
139
+ }
140
+ result.message = allDeltas.join('');
141
+ }
142
+ if (toolCalls.size > 0) {
143
+ result.tools = {
144
+ calls: Array.from(toolCalls.values()),
145
+ totalCalls: toolCalls.size,
146
+ };
147
+ }
148
+ if (files.length > 0) {
149
+ result.files = files;
150
+ }
151
+ if (responseOutputs.length > 0) {
152
+ result.responseOutputs = responseOutputs;
153
+ }
154
+ if (!result.error && !result.completed) {
155
+ result.completed = true;
156
+ }
157
+ }
158
+ catch (error) {
159
+ result.error = error instanceof Error ? error.message : String(error);
160
+ result.completed = false;
161
+ }
162
+ finally {
163
+ result.endTime = new Date();
164
+ }
165
+ return result;
166
+ }
167
+ //# sourceMappingURL=ensemble_result.js.map
@@ -0,0 +1,33 @@
1
+ import { ProviderStreamEvent, ResponseInputItem, ToolCallResult, AgentExportDefinition } from "../types/types.cjs";
2
+ export interface EnsembleResult {
3
+ message: string;
4
+ thinking?: {
5
+ content: string;
6
+ signature?: string;
7
+ };
8
+ cost?: {
9
+ input_tokens: number;
10
+ output_tokens: number;
11
+ total_tokens?: number;
12
+ cached_tokens?: number;
13
+ thought_delay?: number;
14
+ };
15
+ tools?: {
16
+ calls: ToolCallResult[];
17
+ totalCalls: number;
18
+ };
19
+ files?: Array<{
20
+ mime_type?: string;
21
+ data: string;
22
+ data_format: 'base64';
23
+ }>;
24
+ error?: string;
25
+ responseOutputs?: ResponseInputItem[];
26
+ agent?: AgentExportDefinition;
27
+ completed: boolean;
28
+ startTime: Date;
29
+ endTime?: Date;
30
+ messageIds: Set<string>;
31
+ }
32
+ export declare function ensembleResult(stream: AsyncGenerator<ProviderStreamEvent>): Promise<EnsembleResult>;
33
+ //# sourceMappingURL=ensemble_result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensemble_result.d.ts","sourceRoot":"","sources":["../../../utils/ensemble_result.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EAQnB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACxB,MAAM,mBAAmB,CAAC;AAK3B,MAAM,WAAW,cAAc;IAE3B,OAAO,EAAE,MAAM,CAAC;IAGhB,QAAQ,CAAC,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAGF,IAAI,CAAC,EAAE;QACH,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IAGF,KAAK,CAAC,EAAE;QACJ,KAAK,EAAE,cAAc,EAAE,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;KACtB,CAAC;IAGF,KAAK,CAAC,EAAE,KAAK,CAAC;QACV,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,QAAQ,CAAC;KACzB,CAAC,CAAC;IAGH,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,eAAe,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAGtC,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAG9B,SAAS,EAAE,OAAO,CAAC;IAGnB,SAAS,EAAE,IAAI,CAAC;IAGhB,OAAO,CAAC,EAAE,IAAI,CAAC;IAGf,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC3B;AAOD,wBAAsB,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CA2LzG"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensemble_result.js","sourceRoot":"","sources":["../../../utils/ensemble_result.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEventController = getEventController;
4
+ exports.setEventHandler = setEventHandler;
5
+ exports.emitEvent = emitEvent;
6
+ exports.hasEventHandler = hasEventHandler;
7
+ const agent_js_1 = require("./agent.cjs");
8
+ class EventControllerImpl {
9
+ eventHandler = null;
10
+ setEventHandler(handler) {
11
+ this.eventHandler = handler;
12
+ if (handler) {
13
+ console.log('[EventController] Event handler set');
14
+ }
15
+ else {
16
+ console.log('[EventController] Event handler cleared');
17
+ }
18
+ }
19
+ getEventHandler() {
20
+ return this.eventHandler;
21
+ }
22
+ hasEventHandler() {
23
+ return this.eventHandler !== null;
24
+ }
25
+ async emit(event) {
26
+ if (this.eventHandler) {
27
+ try {
28
+ await Promise.resolve(this.eventHandler(event));
29
+ }
30
+ catch (error) {
31
+ console.error('[EventController] Error in event handler:', error);
32
+ }
33
+ }
34
+ }
35
+ }
36
+ let eventControllerInstance = null;
37
+ function getEventController() {
38
+ if (!eventControllerInstance) {
39
+ eventControllerInstance = new EventControllerImpl();
40
+ }
41
+ return eventControllerInstance;
42
+ }
43
+ function setEventHandler(handler) {
44
+ getEventController().setEventHandler(handler);
45
+ }
46
+ async function emitEvent(event, agent, model) {
47
+ let eventToEmit = event;
48
+ if (agent) {
49
+ eventToEmit = {
50
+ ...event,
51
+ agent: (0, agent_js_1.exportAgent)(agent, model),
52
+ };
53
+ }
54
+ return getEventController().emit(eventToEmit);
55
+ }
56
+ function hasEventHandler() {
57
+ return getEventController().hasEventHandler();
58
+ }
59
+ //# sourceMappingURL=event_controller.js.map
@@ -0,0 +1,13 @@
1
+ import { ProviderStreamEvent, AgentDefinition } from "../types/types.cjs";
2
+ export type EventHandler = (event: ProviderStreamEvent) => void | Promise<void>;
3
+ export interface EventController {
4
+ setEventHandler(handler: EventHandler | null): void;
5
+ getEventHandler(): EventHandler | null;
6
+ emit(event: ProviderStreamEvent): Promise<void>;
7
+ hasEventHandler(): boolean;
8
+ }
9
+ export declare function getEventController(): EventController;
10
+ export declare function setEventHandler(handler: EventHandler | null): void;
11
+ export declare function emitEvent(event: ProviderStreamEvent, agent?: AgentDefinition, model?: string): Promise<void>;
12
+ export declare function hasEventHandler(): boolean;
13
+ //# sourceMappingURL=event_controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event_controller.d.ts","sourceRoot":"","sources":["../../../utils/event_controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzE,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhF,MAAM,WAAW,eAAe;IAK5B,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC;IAKpD,eAAe,IAAI,YAAY,GAAG,IAAI,CAAC;IAMvC,IAAI,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAKhD,eAAe,IAAI,OAAO,CAAC;CAC9B;AAuCD,wBAAgB,kBAAkB,IAAI,eAAe,CAKpD;AAKD,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAElE;AAQD,wBAAsB,SAAS,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYlH;AAKD,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event_controller.js","sourceRoot":"","sources":["../../../utils/event_controller.ts"],"names":[],"mappings":";;AAyEA,gDAKC;AAKD,0CAEC;AAQD,8BAYC;AAKD,0CAEC;AAxGD,yCAAyC;AA4BzC,MAAM,mBAAmB;IACb,YAAY,GAAwB,IAAI,CAAC;IAEjD,eAAe,CAAC,OAA4B;QACxC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAA0B;QACjC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC;gBACD,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;YACtE,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AAGD,IAAI,uBAAuB,GAA2B,IAAI,CAAC;AAK3D,SAAgB,kBAAkB;IAC9B,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC3B,uBAAuB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,uBAAuB,CAAC;AACnC,CAAC;AAKD,SAAgB,eAAe,CAAC,OAA4B;IACxD,kBAAkB,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC;AAQM,KAAK,UAAU,SAAS,CAAC,KAA0B,EAAE,KAAuB,EAAE,KAAc;IAC/F,IAAI,WAAW,GAAG,KAAK,CAAC;IAGxB,IAAI,KAAK,EAAE,CAAC;QACR,WAAW,GAAG;YACV,GAAG,KAAK;YACR,KAAK,EAAE,IAAA,sBAAW,EAAC,KAAK,EAAE,KAAK,CAAC;SACnC,CAAC;IACN,CAAC;IAED,OAAO,kBAAkB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClD,CAAC;AAKD,SAAgB,eAAe;IAC3B,OAAO,kBAAkB,EAAE,CAAC,eAAe,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerExternalModel = registerExternalModel;
4
+ exports.getExternalModel = getExternalModel;
5
+ exports.getExternalProvider = getExternalProvider;
6
+ exports.isExternalModel = isExternalModel;
7
+ exports.clearExternalRegistrations = clearExternalRegistrations;
8
+ exports.overrideModelClass = overrideModelClass;
9
+ exports.getModelClassOverride = getModelClassOverride;
10
+ const externalModels = new Map();
11
+ const externalProviders = new Map();
12
+ const modelClassOverrides = new Map();
13
+ function registerExternalModel(model, provider) {
14
+ const modelId = model.id;
15
+ externalModels.set(modelId, model);
16
+ if (!externalProviders.has(model.provider)) {
17
+ externalProviders.set(model.provider, provider);
18
+ }
19
+ console.log(`[Ensemble] Registered external model: ${modelId} with provider: ${model.provider}`);
20
+ }
21
+ function getExternalModel(modelId) {
22
+ return externalModels.get(modelId);
23
+ }
24
+ function getExternalProvider(providerId) {
25
+ return externalProviders.get(providerId);
26
+ }
27
+ function isExternalModel(modelId) {
28
+ return externalModels.has(modelId);
29
+ }
30
+ function clearExternalRegistrations() {
31
+ externalModels.clear();
32
+ externalProviders.clear();
33
+ modelClassOverrides.clear();
34
+ }
35
+ function overrideModelClass(className, modelClass) {
36
+ modelClassOverrides.set(className, modelClass);
37
+ console.log(`[Ensemble] Overrode model class: ${className} with models: ${modelClass.models?.join(', ')}`);
38
+ }
39
+ function getModelClassOverride(className) {
40
+ return modelClassOverrides.get(className);
41
+ }
42
+ //# sourceMappingURL=external_models.js.map
@@ -0,0 +1,9 @@
1
+ import { ModelEntry, ModelProvider, ModelProviderID, ModelClass } from "../types/types.cjs";
2
+ export declare function registerExternalModel(model: ModelEntry, provider: ModelProvider): void;
3
+ export declare function getExternalModel(modelId: string): ModelEntry | undefined;
4
+ export declare function getExternalProvider(providerId: ModelProviderID): ModelProvider | undefined;
5
+ export declare function isExternalModel(modelId: string): boolean;
6
+ export declare function clearExternalRegistrations(): void;
7
+ export declare function overrideModelClass(className: string, modelClass: Partial<ModelClass>): void;
8
+ export declare function getModelClassOverride(className: string): Partial<ModelClass> | undefined;
9
+ //# sourceMappingURL=external_models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external_models.d.ts","sourceRoot":"","sources":["../../../utils/external_models.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAsC3F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAYtF;AAQD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAExE;AAKD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,eAAe,GAAG,aAAa,GAAG,SAAS,CAE1F;AAKD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD;AAKD,wBAAgB,0BAA0B,IAAI,IAAI,CAIjD;AAOD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAG3F;AAOD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAExF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external_models.js","sourceRoot":"","sources":["../../../utils/external_models.ts"],"names":[],"mappings":";;AA2CA,sDAYC;AAQD,4CAEC;AAKD,kDAEC;AAKD,0CAEC;AAKD,gEAIC;AAOD,gDAGC;AAOD,sDAEC;AAnGD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAsB,CAAC;AAGrD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkC,CAAC;AAGpE,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA+B,CAAC;AA6BnE,SAAgB,qBAAqB,CAAC,KAAiB,EAAE,QAAuB;IAC5E,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IAGzB,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAGnC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yCAAyC,OAAO,mBAAmB,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrG,CAAC;AAQD,SAAgB,gBAAgB,CAAC,OAAe;IAC5C,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAKD,SAAgB,mBAAmB,CAAC,UAA2B;IAC3D,OAAO,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAKD,SAAgB,eAAe,CAAC,OAAe;IAC3C,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAKD,SAAgB,0BAA0B;IACtC,cAAc,CAAC,KAAK,EAAE,CAAC;IACvB,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAC1B,mBAAmB,CAAC,KAAK,EAAE,CAAC;AAChC,CAAC;AAOD,SAAgB,kBAAkB,CAAC,SAAiB,EAAE,UAA+B;IACjF,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,oCAAoC,SAAS,iBAAiB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/G,CAAC;AAOD,SAAgB,qBAAqB,CAAC,SAAiB;IACnD,OAAO,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertImageToText = convertImageToText;
4
+ exports.convertImageToTextIfNeeded = convertImageToTextIfNeeded;
5
+ const index_js_1 = require("../index.cjs");
6
+ const imageDescriptionCache = {};
7
+ function generateImageHash(imageData) {
8
+ const sample = imageData.substring(0, 100);
9
+ const length = imageData.length;
10
+ return `${sample}_${length}`;
11
+ }
12
+ async function convertImageToText(imageData, modelId) {
13
+ if (!imageData.startsWith('data:image/')) {
14
+ return imageData;
15
+ }
16
+ console.log(`Converting image to text description for model ${modelId}`);
17
+ const imageHash = generateImageHash(imageData);
18
+ if (imageDescriptionCache[imageHash]) {
19
+ console.log(`Using cached image description for ${modelId}`);
20
+ return imageDescriptionCache[imageHash];
21
+ }
22
+ try {
23
+ const stream = (0, index_js_1.ensembleRequest)([
24
+ {
25
+ type: 'message',
26
+ role: 'system',
27
+ content: 'Please describe the following image in a couple of sentences. Focus on the main visual elements and key details that someone would need to understand what is shown in the image.',
28
+ },
29
+ {
30
+ type: 'message',
31
+ role: 'user',
32
+ content: imageData,
33
+ },
34
+ ], {
35
+ modelClass: 'vision_mini',
36
+ });
37
+ for await (const event of stream) {
38
+ if (event.type === 'message_complete' && 'content' in event) {
39
+ imageDescriptionCache[imageHash] = event.content.trim();
40
+ return imageDescriptionCache[imageHash];
41
+ }
42
+ }
43
+ }
44
+ catch (error) {
45
+ console.error('Error generating image description:', error);
46
+ }
47
+ return 'Image found, but could not be converted to text';
48
+ }
49
+ async function convertImageToTextIfNeeded(imageData, modelId) {
50
+ if (!imageData.startsWith('data:image/')) {
51
+ return false;
52
+ }
53
+ if (modelId && (0, index_js_1.findModel)(modelId)?.features?.input_modality?.includes('image')) {
54
+ return false;
55
+ }
56
+ return await convertImageToText(imageData, modelId || 'unknown');
57
+ }
58
+ //# sourceMappingURL=image_to_text.js.map
@@ -0,0 +1,3 @@
1
+ export declare function convertImageToText(imageData: string, modelId: string): Promise<string>;
2
+ export declare function convertImageToTextIfNeeded(imageData: string, modelId?: string): Promise<string | boolean>;
3
+ //# sourceMappingURL=image_to_text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image_to_text.d.ts","sourceRoot":"","sources":["../../../utils/image_to_text.ts"],"names":[],"mappings":"AA8DA,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgD5F;AAUD,wBAAsB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAc/G"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image_to_text.js","sourceRoot":"","sources":["../../../utils/image_to_text.ts"],"names":[],"mappings":";;AA8DA,gDAgDC;AAUD,gEAcC;AA9HD,0CAAyD;AA8BzD,MAAM,qBAAqB,GAA0B,EAAE,CAAC;AAQxD,SAAS,iBAAiB,CAAC,SAAiB;IAGxC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAChC,OAAO,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AACjC,CAAC;AAUM,KAAK,UAAU,kBAAkB,CAAC,SAAiB,EAAE,OAAe;IAEvE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kDAAkD,OAAO,EAAE,CAAC,CAAC;IAGzE,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAG/C,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAGD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,0BAAe,EAC1B;YACI;gBACI,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EACH,mLAAmL;aAC1L;YACD;gBACI,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,SAAS;aACrB;SACJ,EACD;YACI,UAAU,EAAE,aAAa;SAC5B,CACJ,CAAC;QAEF,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;gBAC1D,qBAAqB,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxD,OAAO,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,iDAAiD,CAAC;AAC7D,CAAC;AAUM,KAAK,UAAU,0BAA0B,CAAC,SAAiB,EAAE,OAAgB;IAEhF,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,IAAI,OAAO,IAAI,IAAA,oBAAS,EAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAE7E,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,OAAO,MAAM,kBAAkB,CAAC,SAAS,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GEMINI_MAX_HEIGHT = exports.GEMINI_MAX_WIDTH = exports.CLAUDE_MAX_HEIGHT = exports.CLAUDE_MAX_WIDTH = exports.OPENAI_MAX_HEIGHT = exports.OPENAI_MAX_WIDTH = exports.DEFAULT_QUALITY = exports.MAX_IMAGE_HEIGHT = void 0;
7
+ exports.appendMessageWithImage = appendMessageWithImage;
8
+ exports.extractBase64Image = extractBase64Image;
9
+ exports.resizeAndSplitForOpenAI = resizeAndSplitForOpenAI;
10
+ exports.resizeAndTruncateForClaude = resizeAndTruncateForClaude;
11
+ exports.resizeAndTruncateForGemini = resizeAndTruncateForGemini;
12
+ const buffer_1 = require("buffer");
13
+ const sharp_1 = __importDefault(require("sharp"));
14
+ const uuid_1 = require("uuid");
15
+ exports.MAX_IMAGE_HEIGHT = 2000;
16
+ exports.DEFAULT_QUALITY = 80;
17
+ exports.OPENAI_MAX_WIDTH = 1024;
18
+ exports.OPENAI_MAX_HEIGHT = 768;
19
+ exports.CLAUDE_MAX_WIDTH = 1024;
20
+ exports.CLAUDE_MAX_HEIGHT = 1120;
21
+ exports.GEMINI_MAX_WIDTH = 1024;
22
+ exports.GEMINI_MAX_HEIGHT = 1536;
23
+ const image_to_text_js_1 = require("./image_to_text.cjs");
24
+ async function appendMessageWithImage(model, input, message, param, addImagesToInput, source) {
25
+ const content = typeof param === 'string'
26
+ ? typeof message[param] === 'string'
27
+ ? message[param]
28
+ : JSON.stringify(message[param])
29
+ : param.read();
30
+ const extracted = extractBase64Image(content);
31
+ if (!extracted.found) {
32
+ input.push(message);
33
+ return input;
34
+ }
35
+ let imagesConverted = false;
36
+ for (const [image_id, imageData] of Object.entries(extracted.images)) {
37
+ const imageToText = await (0, image_to_text_js_1.convertImageToTextIfNeeded)(imageData, model);
38
+ if (imageToText && typeof imageToText === 'string') {
39
+ extracted.replaceContent.replaceAll(`[image #${image_id}]`, `[image #${image_id}: ${imageToText}]`);
40
+ imagesConverted = true;
41
+ }
42
+ }
43
+ if (typeof param === 'string') {
44
+ const newMessage = { ...message };
45
+ newMessage[param] = extracted.replaceContent;
46
+ input.push(newMessage);
47
+ }
48
+ else {
49
+ input.push(param.write(extracted.replaceContent));
50
+ }
51
+ if (!imagesConverted) {
52
+ input = await addImagesToInput(input, extracted.images, source || `${message.role} message`);
53
+ }
54
+ return input;
55
+ }
56
+ function extractBase64Image(content) {
57
+ const result = {
58
+ found: false,
59
+ originalContent: content,
60
+ replaceContent: content,
61
+ image_id: null,
62
+ images: {},
63
+ };
64
+ if (typeof content !== 'string')
65
+ return result;
66
+ if (!content.includes('data:image/'))
67
+ return result;
68
+ const imgRegex = /data:image\/[a-zA-Z0-9.+-]+;base64,[A-Za-z0-9+/=\s]+/g;
69
+ const images = {};
70
+ const replaceContent = content.replace(imgRegex, match => {
71
+ const id = (0, uuid_1.v4)();
72
+ images[id] = match.replace(/\s+/g, '');
73
+ return `[image #${id}]`;
74
+ });
75
+ if (Object.keys(images).length === 0) {
76
+ return result;
77
+ }
78
+ const firstImageId = Object.keys(images)[0];
79
+ return {
80
+ found: true,
81
+ originalContent: content,
82
+ replaceContent: replaceContent,
83
+ image_id: firstImageId,
84
+ images: images,
85
+ };
86
+ }
87
+ async function resizeAndSplitForOpenAI(imageData) {
88
+ const MAX_WIDTH = 1024;
89
+ const MAX_HEIGHT = 768;
90
+ const base64Image = imageData.replace(/^data:image\/\w+;base64,/, '');
91
+ const imageFormat = imageData.match(/data:image\/(\w+);/)?.[1] || 'png';
92
+ const imageBuffer = buffer_1.Buffer.from(base64Image, 'base64');
93
+ const { width: origW = 0, height: origH = 0 } = await (0, sharp_1.default)(imageBuffer).metadata();
94
+ if (origW <= MAX_WIDTH && origH <= MAX_HEIGHT) {
95
+ return [imageData];
96
+ }
97
+ const newWidth = Math.min(origW, MAX_WIDTH);
98
+ const resizedBuffer = await (0, sharp_1.default)(imageBuffer)
99
+ .resize({ width: newWidth })
100
+ .flatten({ background: '#fff' })
101
+ .toFormat(imageFormat)
102
+ .toBuffer();
103
+ const { height: resizedH = 0 } = await (0, sharp_1.default)(resizedBuffer).metadata();
104
+ const result = [];
105
+ if (resizedH > MAX_HEIGHT) {
106
+ const segments = Math.ceil(resizedH / MAX_HEIGHT);
107
+ for (let i = 0; i < segments; i++) {
108
+ const top = i * MAX_HEIGHT;
109
+ const height = Math.min(MAX_HEIGHT, resizedH - top);
110
+ if (height <= 0)
111
+ continue;
112
+ const segmentBuf = await (0, sharp_1.default)(resizedBuffer)
113
+ .extract({ left: 0, top, width: newWidth, height })
114
+ .toFormat(imageFormat)
115
+ .toBuffer();
116
+ const segmentDataUrl = `data:image/${imageFormat};base64,${segmentBuf.toString('base64')}`;
117
+ result.push(segmentDataUrl);
118
+ }
119
+ }
120
+ else {
121
+ const singleUrl = `data:image/${imageFormat};base64,${resizedBuffer.toString('base64')}`;
122
+ result.push(singleUrl);
123
+ }
124
+ return result;
125
+ }
126
+ function stripDataUrl(dataUrl) {
127
+ const match = dataUrl.match(/^data:image\/([^;]+);base64,(.+)$/);
128
+ if (!match)
129
+ throw new Error('Invalid data-URL');
130
+ return { format: match[1], base64: match[2] };
131
+ }
132
+ async function processAndTruncate(imageBuffer, format, maxW, maxH) {
133
+ const resized = await (0, sharp_1.default)(imageBuffer)
134
+ .rotate()
135
+ .resize({ width: maxW, withoutEnlargement: true })
136
+ .flatten({ background: '#fff' })
137
+ .toFormat(format)
138
+ .toBuffer();
139
+ const { width, height } = await (0, sharp_1.default)(resized).metadata();
140
+ if (height > maxH) {
141
+ return await (0, sharp_1.default)(resized)
142
+ .extract({ left: 0, top: 0, width: width, height: maxH })
143
+ .toFormat(format)
144
+ .toBuffer();
145
+ }
146
+ return resized;
147
+ }
148
+ async function resizeAndTruncateForClaude(imageData) {
149
+ const { format, base64 } = stripDataUrl(imageData);
150
+ const buf = buffer_1.Buffer.from(base64, 'base64');
151
+ const meta = await (0, sharp_1.default)(buf).metadata();
152
+ if (meta.width <= exports.CLAUDE_MAX_WIDTH && meta.height <= exports.CLAUDE_MAX_HEIGHT) {
153
+ return imageData;
154
+ }
155
+ const outBuf = await processAndTruncate(buf, format, exports.CLAUDE_MAX_WIDTH, exports.CLAUDE_MAX_HEIGHT);
156
+ return `data:image/${format};base64,${outBuf.toString('base64')}`;
157
+ }
158
+ async function resizeAndTruncateForGemini(imageData) {
159
+ const { format, base64 } = stripDataUrl(imageData);
160
+ const buf = buffer_1.Buffer.from(base64, 'base64');
161
+ const meta = await (0, sharp_1.default)(buf).metadata();
162
+ if (meta.width <= exports.GEMINI_MAX_WIDTH && meta.height <= exports.GEMINI_MAX_HEIGHT) {
163
+ return imageData;
164
+ }
165
+ const outBuf = await processAndTruncate(buf, format, exports.GEMINI_MAX_WIDTH, exports.GEMINI_MAX_HEIGHT);
166
+ return `data:image/${format};base64,${outBuf.toString('base64')}`;
167
+ }
168
+ //# sourceMappingURL=image_utils.js.map
@@ -0,0 +1,18 @@
1
+ export declare const MAX_IMAGE_HEIGHT = 2000;
2
+ export declare const DEFAULT_QUALITY = 80;
3
+ export declare const OPENAI_MAX_WIDTH = 1024;
4
+ export declare const OPENAI_MAX_HEIGHT = 768;
5
+ export declare const CLAUDE_MAX_WIDTH = 1024;
6
+ export declare const CLAUDE_MAX_HEIGHT = 1120;
7
+ export declare const GEMINI_MAX_WIDTH = 1024;
8
+ export declare const GEMINI_MAX_HEIGHT = 1536;
9
+ import { ExtractBase64ImageResult } from "../types/types.cjs";
10
+ export declare function appendMessageWithImage(model: string, input: any[], message: any, param: string | {
11
+ read: () => string;
12
+ write: (value: string) => any;
13
+ }, addImagesToInput: (input: any[], images: Record<string, string>, source: string) => Promise<any[]>, source?: string): Promise<any>;
14
+ export declare function extractBase64Image(content: string): ExtractBase64ImageResult;
15
+ export declare function resizeAndSplitForOpenAI(imageData: string): Promise<string[]>;
16
+ export declare function resizeAndTruncateForClaude(imageData: string): Promise<string>;
17
+ export declare function resizeAndTruncateForGemini(imageData: string): Promise<string>;
18
+ //# sourceMappingURL=image_utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image_utils.d.ts","sourceRoot":"","sources":["../../../utils/image_utils.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAS7D,wBAAsB,sBAAsB,CACxC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,GAAG,EAAE,EACZ,OAAO,EAAE,GAAG,EACZ,KAAK,EACC,MAAM,GACN;IACI,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;CACjC,EACP,gBAAgB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,EAClG,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,CAwCd;AASD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,CA6C5E;AAUD,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqDlF;AAmCD,wBAAsB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYnF;AAKD,wBAAsB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYnF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image_utils.js","sourceRoot":"","sources":["../../../utils/image_utils.ts"],"names":[],"mappings":"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"}