@just-every/ensemble 0.2.17 → 0.2.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/ensemble_request.d.ts.map +1 -1
- package/dist/core/ensemble_request.js +7 -5
- package/dist/core/ensemble_request.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/model_providers/claude.d.ts +0 -2
- package/dist/model_providers/claude.d.ts.map +1 -1
- package/dist/model_providers/claude.js +38 -253
- package/dist/model_providers/claude.js.map +1 -1
- package/dist/model_providers/gemini.d.ts +2 -0
- package/dist/model_providers/gemini.d.ts.map +1 -1
- package/dist/model_providers/gemini.js +138 -150
- package/dist/model_providers/gemini.js.map +1 -1
- package/dist/model_providers/openai.d.ts.map +1 -1
- package/dist/model_providers/openai.js +10 -58
- package/dist/model_providers/openai.js.map +1 -1
- package/dist/model_providers/openai_chat.d.ts +1 -0
- package/dist/model_providers/openai_chat.d.ts.map +1 -1
- package/dist/model_providers/openai_chat.js +72 -133
- package/dist/model_providers/openai_chat.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/types.d.ts +1 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/utils/image_to_text.d.ts +1 -1
- package/dist/utils/image_to_text.d.ts.map +1 -1
- package/dist/utils/image_to_text.js +19 -46
- package/dist/utils/image_to_text.js.map +1 -1
- package/dist/utils/image_utils.d.ts +4 -1
- package/dist/utils/image_utils.d.ts.map +1 -1
- package/dist/utils/image_utils.js +33 -0
- package/dist/utils/image_utils.js.map +1 -1
- package/dist/utils/pause_controller.d.ts +14 -0
- package/dist/utils/pause_controller.d.ts.map +1 -0
- package/dist/utils/pause_controller.js +49 -0
- package/dist/utils/pause_controller.js.map +1 -0
- package/package.json +1 -1
- package/dist/utils/communication.d.ts +0 -2
- package/dist/utils/communication.d.ts.map +0 -1
- package/dist/utils/communication.js +0 -5
- package/dist/utils/communication.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensemble_request.d.ts","sourceRoot":"","sources":["../../core/ensemble_request.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,mBAAmB,EACnB,aAAa,EAGb,eAAe,EAQlB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ensemble_request.d.ts","sourceRoot":"","sources":["../../core/ensemble_request.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,mBAAmB,EACnB,aAAa,EAGb,eAAe,EAQlB,MAAM,mBAAmB,CAAC;AAgB3B,wBAAuB,eAAe,CAClC,QAAQ,EAAE,aAAa,EACvB,KAAK,GAAE,eAAoB,GAC5B,cAAc,CAAC,mBAAmB,CAAC,CAkIrC;AAkUD,wBAAgB,kBAAkB,CAC9B,WAAW,EAAE,aAAa,EAC1B,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,GACnB,IAAI,CAGN"}
|
|
@@ -3,6 +3,7 @@ import { MessageHistory } from '../utils/message_history.js';
|
|
|
3
3
|
import { handleToolCall } from '../utils/tool_execution_manager.js';
|
|
4
4
|
import { processToolResult } from '../utils/tool_result_processor.js';
|
|
5
5
|
import { verifyOutput } from '../utils/verification.js';
|
|
6
|
+
import { waitWhilePaused } from '../utils/pause_controller.js';
|
|
6
7
|
const MAX_ERROR_ATTEMPTS = 5;
|
|
7
8
|
export async function* ensembleRequest(messages, agent = {}) {
|
|
8
9
|
const conversationHistory = agent?.historyThread || messages;
|
|
@@ -99,6 +100,7 @@ async function* executeRound(model, agent, history, currentToolCalls, maxToolCal
|
|
|
99
100
|
if (agent.onRequest) {
|
|
100
101
|
[agent, messages] = await agent.onRequest(agent, messages);
|
|
101
102
|
}
|
|
103
|
+
await waitWhilePaused(100, agent.abortSignal);
|
|
102
104
|
const provider = getModelProvider(model);
|
|
103
105
|
const stream = provider.createResponseStream(messages, model, agent);
|
|
104
106
|
const toolPromises = [];
|
|
@@ -110,14 +112,12 @@ async function* executeRound(model, agent, history, currentToolCalls, maxToolCal
|
|
|
110
112
|
switch (event.type) {
|
|
111
113
|
case 'message_complete': {
|
|
112
114
|
const messageEvent = event;
|
|
113
|
-
if (messageEvent.thinking_content
|
|
115
|
+
if (messageEvent.thinking_content ||
|
|
116
|
+
(!messageEvent.content && messageEvent.message_id)) {
|
|
114
117
|
const thinkingMessage = {
|
|
115
118
|
type: 'thinking',
|
|
116
119
|
role: 'assistant',
|
|
117
|
-
content: messageEvent.thinking_content
|
|
118
|
-
messageEvent.thinking_content !== '{empty}'
|
|
119
|
-
? messageEvent.thinking_content
|
|
120
|
-
: '',
|
|
120
|
+
content: messageEvent.thinking_content || '',
|
|
121
121
|
signature: messageEvent.thinking_signature || '',
|
|
122
122
|
thinking_id: messageEvent.message_id || '',
|
|
123
123
|
status: 'completed',
|
|
@@ -170,6 +170,7 @@ async function* executeRound(model, agent, history, currentToolCalls, maxToolCal
|
|
|
170
170
|
name: toolCall.function.name,
|
|
171
171
|
arguments: toolCall.function.arguments,
|
|
172
172
|
model,
|
|
173
|
+
status: 'completed',
|
|
173
174
|
};
|
|
174
175
|
toolPromises.push(processToolCall(toolCall, agent));
|
|
175
176
|
history.add(functionCall);
|
|
@@ -203,6 +204,7 @@ async function* executeRound(model, agent, history, currentToolCalls, maxToolCal
|
|
|
203
204
|
name: toolResult.toolCall.function.name,
|
|
204
205
|
output: toolResult.output + (toolResult.error || ''),
|
|
205
206
|
model,
|
|
207
|
+
status: 'completed',
|
|
206
208
|
};
|
|
207
209
|
history.add(functionOutput);
|
|
208
210
|
yield {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensemble_request.js","sourceRoot":"","sources":["../../core/ensemble_request.ts"],"names":[],"mappings":"AAkBA,OAAO,EACH,iBAAiB,EACjB,gBAAgB,GACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ensemble_request.js","sourceRoot":"","sources":["../../core/ensemble_request.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export * from './utils/quota_tracker.js';
|
|
|
9
9
|
export * from './utils/image_utils.js';
|
|
10
10
|
export * from './utils/llm_logger.js';
|
|
11
11
|
export { createToolFunction } from './utils/create_tool_function.js';
|
|
12
|
+
export { getPauseController, isPaused, pause, resume, waitWhilePaused, type PauseController } from './utils/pause_controller.js';
|
|
12
13
|
export { runningToolTracker, RunningToolTracker, RunningTool, ToolCompletionEvent, } from './utils/running_tool_tracker.js';
|
|
13
14
|
export { sequentialQueue, SequentialQueue, runSequential, } from './utils/sequential_queue.js';
|
|
14
15
|
export { executeToolWithLifecycle, handleToolCall, timeoutPromise, agentHasStatusTracking, prepareToolArguments, } from './utils/tool_execution_manager.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACH,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GAChB,MAAM,qCAAqC,CAAC;AAG7C,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACrB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACH,cAAc,EACd,aAAa,EACb,SAAS,EACT,eAAe,EACf,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,GACb,MAAM,sBAAsB,CAAC;AAG9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGrE,OAAO,EACH,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,GACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACH,eAAe,EACf,eAAe,EACf,aAAa,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,oBAAoB,GACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACH,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACvB,MAAM,kCAAkC,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACH,YAAY,EACZ,kBAAkB,GACrB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EACH,KAAK,EACL,UAAU,EACV,qBAAqB,EACrB,cAAc,GACjB,MAAM,kBAAkB,CAAC;AAK1B,eAAO,MAAM,WAAW,+CAAe,CAAC;AACxC,eAAO,MAAM,YAAY,iDAAgB,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACH,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GAChB,MAAM,qCAAqC,CAAC;AAG7C,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACrB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACH,cAAc,EACd,aAAa,EACb,SAAS,EACT,eAAe,EACf,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,GACb,MAAM,sBAAsB,CAAC;AAG9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGrE,OAAO,EACH,kBAAkB,EAClB,QAAQ,EACR,KAAK,EACL,MAAM,EACN,eAAe,EACf,KAAK,eAAe,EACvB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACH,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,GACtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACH,eAAe,EACf,eAAe,EACf,aAAa,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,oBAAoB,GACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACH,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACvB,MAAM,kCAAkC,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACH,YAAY,EACZ,kBAAkB,GACrB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EACH,KAAK,EACL,UAAU,EACV,qBAAqB,EACrB,cAAc,GACjB,MAAM,kBAAkB,CAAC;AAK1B,eAAO,MAAM,WAAW,+CAAe,CAAC;AACxC,eAAO,MAAM,YAAY,iDAAgB,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,7 @@ export * from './utils/quota_tracker.js';
|
|
|
9
9
|
export * from './utils/image_utils.js';
|
|
10
10
|
export * from './utils/llm_logger.js';
|
|
11
11
|
export { createToolFunction } from './utils/create_tool_function.js';
|
|
12
|
+
export { getPauseController, isPaused, pause, resume, waitWhilePaused } from './utils/pause_controller.js';
|
|
12
13
|
export { runningToolTracker, RunningToolTracker, } from './utils/running_tool_tracker.js';
|
|
13
14
|
export { sequentialQueue, SequentialQueue, runSequential, } from './utils/sequential_queue.js';
|
|
14
15
|
export { executeToolWithLifecycle, handleToolCall, timeoutPromise, agentHasStatusTracking, prepareToolArguments, } from './utils/tool_execution_manager.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACH,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GAErB,MAAM,qCAAqC,CAAC;AAG7C,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACrB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACH,cAAc,EACd,aAAa,EACb,SAAS,GAMZ,MAAM,sBAAsB,CAAC;AAG9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGrE,OAAO,EACH,kBAAkB,EAClB,kBAAkB,GAGrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACH,eAAe,EACf,eAAe,EACf,aAAa,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,oBAAoB,GACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACH,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACvB,MAAM,kCAAkC,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACH,YAAY,GAEf,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EACH,KAAK,EACL,UAAU,EACV,qBAAqB,EACrB,cAAc,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACH,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GAErB,MAAM,qCAAqC,CAAC;AAG7C,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACrB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACH,cAAc,EACd,aAAa,EACb,SAAS,GAMZ,MAAM,sBAAsB,CAAC;AAG9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGrE,OAAO,EACH,kBAAkB,EAClB,QAAQ,EACR,KAAK,EACL,MAAM,EACN,eAAe,EAElB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACH,kBAAkB,EAClB,kBAAkB,GAGrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACH,eAAe,EACf,eAAe,EACf,aAAa,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACH,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,oBAAoB,GACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACH,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACvB,MAAM,kCAAkC,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EACH,YAAY,GAEf,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EACH,KAAK,EACL,UAAU,EACV,qBAAqB,EACrB,cAAc,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -4,9 +4,7 @@ export declare class ClaudeProvider implements ModelProvider {
|
|
|
4
4
|
private apiKey?;
|
|
5
5
|
constructor(apiKey?: string);
|
|
6
6
|
private get client();
|
|
7
|
-
private preprocessMessagesForImageSupport;
|
|
8
7
|
private prepareClaudeMessages;
|
|
9
|
-
private isMessageWithStringContent;
|
|
10
8
|
createResponseStream(messages: ResponseInput, model: string, agent: AgentDefinition): AsyncGenerator<ProviderStreamEvent>;
|
|
11
9
|
}
|
|
12
10
|
export declare const claudeProvider: ClaudeProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../model_providers/claude.ts"],"names":[],"mappings":"AAsFA,OAAO,EACH,aAAa,EAGb,mBAAmB,EAEnB,aAAa,
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../model_providers/claude.ts"],"names":[],"mappings":"AAsFA,OAAO,EACH,aAAa,EAGb,mBAAmB,EAEnB,aAAa,EAEb,eAAe,EAClB,MAAM,mBAAmB,CAAC;AAoS3B,qBAAa,cAAe,YAAW,aAAa;IAChD,OAAO,CAAC,OAAO,CAAC,CAAY;IAC5B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,CAAC,EAAE,MAAM;IAQ3B,OAAO,KAAK,MAAM,GAYjB;YASa,qBAAqB;IAmE5B,oBAAoB,CACvB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,GACvB,cAAc,CAAC,mBAAmB,CAAC;CA0nBzC;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|
|
@@ -42,9 +42,8 @@ function generateFootnotes(tracker) {
|
|
|
42
42
|
}
|
|
43
43
|
import { costTracker } from '../index.js';
|
|
44
44
|
import { log_llm_error, log_llm_request, log_llm_response, } from '../utils/llm_logger.js';
|
|
45
|
-
import { isPaused } from '../utils/
|
|
46
|
-
import {
|
|
47
|
-
import { convertImageToTextIfNeeded } from '../utils/image_to_text.js';
|
|
45
|
+
import { isPaused } from '../utils/pause_controller.js';
|
|
46
|
+
import { appendMessageWithImage, resizeAndTruncateForClaude, } from '../utils/image_utils.js';
|
|
48
47
|
import { bufferDelta, flushBufferedDeltas, } from '../utils/delta_buffer.js';
|
|
49
48
|
async function resolveAsyncEnums(params) {
|
|
50
49
|
if (!params || typeof params !== 'object') {
|
|
@@ -110,7 +109,23 @@ function getImageMediaType(imageData) {
|
|
|
110
109
|
function cleanBase64Data(imageData) {
|
|
111
110
|
return imageData.replace(/^data:image\/[a-z]+;base64,/, '');
|
|
112
111
|
}
|
|
113
|
-
async function
|
|
112
|
+
async function addImagesToInput(input, images) {
|
|
113
|
+
for (const [, imageData] of Object.entries(images)) {
|
|
114
|
+
const processedImageData = await resizeAndTruncateForClaude(imageData);
|
|
115
|
+
const mediaType = getImageMediaType(processedImageData);
|
|
116
|
+
const cleanedImageData = cleanBase64Data(processedImageData);
|
|
117
|
+
input.push({
|
|
118
|
+
type: 'image',
|
|
119
|
+
source: {
|
|
120
|
+
type: 'base64',
|
|
121
|
+
media_type: mediaType,
|
|
122
|
+
data: cleanedImageData,
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return input;
|
|
127
|
+
}
|
|
128
|
+
async function convertToClaudeMessage(model, role, content, msg, result) {
|
|
114
129
|
if (!msg)
|
|
115
130
|
return null;
|
|
116
131
|
if (msg.type === 'function_call') {
|
|
@@ -153,52 +168,15 @@ async function convertToClaudeMessage(role, content, msg, result) {
|
|
|
153
168
|
return { role: 'assistant', content: [toolUseBlock] };
|
|
154
169
|
}
|
|
155
170
|
else if (msg.type === 'function_call_output') {
|
|
156
|
-
if (typeof msg.output === 'string') {
|
|
157
|
-
const extracted = extractBase64Image(msg.output);
|
|
158
|
-
if (extracted.found && extracted.image_id !== null) {
|
|
159
|
-
const image_id = extracted.image_id;
|
|
160
|
-
try {
|
|
161
|
-
const originalImageData = extracted.images[image_id];
|
|
162
|
-
const processedImageData = await resizeAndTruncateForClaude(originalImageData);
|
|
163
|
-
const mediaType = getImageMediaType(processedImageData);
|
|
164
|
-
const cleanedImageData = cleanBase64Data(processedImageData);
|
|
165
|
-
const toolResultBlock = {
|
|
166
|
-
type: 'tool_result',
|
|
167
|
-
tool_use_id: msg.call_id,
|
|
168
|
-
content: extracted.replaceContent.trim() || '',
|
|
169
|
-
...(msg.status === 'incomplete'
|
|
170
|
-
? { is_error: true }
|
|
171
|
-
: {}),
|
|
172
|
-
};
|
|
173
|
-
const contentBlocks = [
|
|
174
|
-
toolResultBlock,
|
|
175
|
-
{
|
|
176
|
-
type: 'image',
|
|
177
|
-
source: {
|
|
178
|
-
type: 'base64',
|
|
179
|
-
media_type: mediaType,
|
|
180
|
-
data: cleanedImageData,
|
|
181
|
-
},
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
type: 'text',
|
|
185
|
-
text: `This is [image #${image_id}] from the function call output of ${msg.name}`,
|
|
186
|
-
},
|
|
187
|
-
];
|
|
188
|
-
return { role: 'user', content: contentBlocks };
|
|
189
|
-
}
|
|
190
|
-
catch (error) {
|
|
191
|
-
console.error('Error processing image in function call output:', error);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
171
|
const toolResultBlock = {
|
|
196
172
|
type: 'tool_result',
|
|
197
173
|
tool_use_id: msg.call_id,
|
|
198
174
|
content: msg.output || '',
|
|
199
175
|
...(msg.status === 'incomplete' ? { is_error: true } : {}),
|
|
200
176
|
};
|
|
201
|
-
|
|
177
|
+
let contentBlocks = [];
|
|
178
|
+
contentBlocks = await appendMessageWithImage(model, contentBlocks, toolResultBlock, 'content', addImagesToInput);
|
|
179
|
+
return { role: 'user', content: contentBlocks };
|
|
202
180
|
}
|
|
203
181
|
else if (msg.type === 'thinking') {
|
|
204
182
|
if (!content) {
|
|
@@ -222,49 +200,19 @@ async function convertToClaudeMessage(role, content, msg, result) {
|
|
|
222
200
|
if (!content) {
|
|
223
201
|
return null;
|
|
224
202
|
}
|
|
225
|
-
|
|
203
|
+
const messageRole = role === 'assistant'
|
|
226
204
|
? 'assistant'
|
|
227
205
|
: (role === 'system' || role === 'developer') && !result?.length
|
|
228
206
|
? 'system'
|
|
229
207
|
: 'user';
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
const image_id = extracted.image_id;
|
|
236
|
-
const originalImageData = extracted.images[image_id];
|
|
237
|
-
const processedImageData = await resizeAndTruncateForClaude(originalImageData);
|
|
238
|
-
const mediaType = getImageMediaType(processedImageData);
|
|
239
|
-
const cleanedImageData = cleanBase64Data(processedImageData);
|
|
240
|
-
const contentBlocks = [];
|
|
241
|
-
contentBlocks.push({
|
|
242
|
-
type: 'image',
|
|
243
|
-
source: {
|
|
244
|
-
type: 'base64',
|
|
245
|
-
media_type: mediaType,
|
|
246
|
-
data: cleanedImageData,
|
|
247
|
-
},
|
|
248
|
-
});
|
|
249
|
-
if (extracted.replaceContent.trim()) {
|
|
250
|
-
contentBlocks.push({
|
|
251
|
-
type: 'text',
|
|
252
|
-
text: extracted.replaceContent.trim(),
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
return {
|
|
256
|
-
role: messageRole,
|
|
257
|
-
content: contentBlocks,
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
catch (error) {
|
|
261
|
-
console.error('Error processing image in message:', error);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
208
|
+
let contentBlocks = [];
|
|
209
|
+
contentBlocks = await appendMessageWithImage(model, contentBlocks, {
|
|
210
|
+
type: 'text',
|
|
211
|
+
text: content,
|
|
212
|
+
}, 'text', addImagesToInput);
|
|
265
213
|
return {
|
|
266
214
|
role: messageRole,
|
|
267
|
-
content:
|
|
215
|
+
content: contentBlocks,
|
|
268
216
|
};
|
|
269
217
|
}
|
|
270
218
|
}
|
|
@@ -285,154 +233,10 @@ export class ClaudeProvider {
|
|
|
285
233
|
}
|
|
286
234
|
return this._client;
|
|
287
235
|
}
|
|
288
|
-
async preprocessMessagesForImageSupport(messages, modelId) {
|
|
289
|
-
const processedMessages = [...messages];
|
|
290
|
-
for (let i = 0; i < processedMessages.length; i++) {
|
|
291
|
-
const msg = processedMessages[i];
|
|
292
|
-
if (!this.isMessageWithStringContent(msg)) {
|
|
293
|
-
continue;
|
|
294
|
-
}
|
|
295
|
-
if (typeof msg.content === 'string') {
|
|
296
|
-
const extracted = extractBase64Image(msg.content);
|
|
297
|
-
if (extracted.found && extracted.image_id !== null) {
|
|
298
|
-
try {
|
|
299
|
-
const image_id = extracted.image_id;
|
|
300
|
-
const imageData = extracted.images[image_id];
|
|
301
|
-
const processedImageData = await convertImageToTextIfNeeded(imageData, modelId);
|
|
302
|
-
if (!processedImageData.startsWith('data:image/')) {
|
|
303
|
-
const newContent = extracted.replaceContent.trim()
|
|
304
|
-
? extracted.replaceContent.trim() +
|
|
305
|
-
' ' +
|
|
306
|
-
processedImageData
|
|
307
|
-
: processedImageData;
|
|
308
|
-
processedMessages[i] = {
|
|
309
|
-
...msg,
|
|
310
|
-
content: newContent,
|
|
311
|
-
};
|
|
312
|
-
console.log(`Converted image to text description for model ${modelId}`);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
catch (error) {
|
|
316
|
-
console.error('Error converting image to text:', error);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
else if (Array.isArray(msg.content)) {
|
|
321
|
-
let hasChanges = false;
|
|
322
|
-
const newContentItems = [...msg.content];
|
|
323
|
-
for (let j = 0; j < newContentItems.length; j++) {
|
|
324
|
-
const item = newContentItems[j];
|
|
325
|
-
if (item.type === 'input_text' &&
|
|
326
|
-
typeof item.text === 'string') {
|
|
327
|
-
const extracted = extractBase64Image(item.text);
|
|
328
|
-
if (extracted.found && extracted.image_id !== null) {
|
|
329
|
-
try {
|
|
330
|
-
const image_id = extracted.image_id;
|
|
331
|
-
const imageData = extracted.images[image_id];
|
|
332
|
-
const processedImageData = await convertImageToTextIfNeeded(imageData, modelId);
|
|
333
|
-
if (!processedImageData.startsWith('data:image/')) {
|
|
334
|
-
const newText = extracted.replaceContent.trim()
|
|
335
|
-
? extracted.replaceContent.trim() +
|
|
336
|
-
' ' +
|
|
337
|
-
processedImageData
|
|
338
|
-
: processedImageData;
|
|
339
|
-
newContentItems[j] = {
|
|
340
|
-
...item,
|
|
341
|
-
text: newText,
|
|
342
|
-
};
|
|
343
|
-
hasChanges = true;
|
|
344
|
-
console.log(`Converted image to text description in array content for model ${modelId}`);
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
catch (error) {
|
|
348
|
-
console.error('Error converting image to text in array content:', error);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
if (hasChanges) {
|
|
354
|
-
processedMessages[i] = {
|
|
355
|
-
...msg,
|
|
356
|
-
content: newContentItems,
|
|
357
|
-
};
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
return processedMessages;
|
|
362
|
-
}
|
|
363
236
|
async prepareClaudeMessages(messages, modelId) {
|
|
364
237
|
const result = [];
|
|
365
238
|
const seenToolUseIds = new Set();
|
|
366
|
-
for (const
|
|
367
|
-
let msg = originalMsg;
|
|
368
|
-
if (this.isMessageWithStringContent(msg)) {
|
|
369
|
-
if (typeof msg.content === 'string') {
|
|
370
|
-
const extracted = extractBase64Image(msg.content);
|
|
371
|
-
if (extracted.found && extracted.image_id !== null) {
|
|
372
|
-
try {
|
|
373
|
-
const image_id = extracted.image_id;
|
|
374
|
-
const imageData = extracted.images[image_id];
|
|
375
|
-
const processedImageData = await convertImageToTextIfNeeded(imageData, modelId);
|
|
376
|
-
if (processedImageData &&
|
|
377
|
-
!processedImageData.startsWith('data:image/')) {
|
|
378
|
-
const newContent = extracted.replaceContent.trim()
|
|
379
|
-
? extracted.replaceContent.trim() +
|
|
380
|
-
' ' +
|
|
381
|
-
processedImageData
|
|
382
|
-
: processedImageData;
|
|
383
|
-
msg = {
|
|
384
|
-
...msg,
|
|
385
|
-
content: newContent,
|
|
386
|
-
};
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
catch (error) {
|
|
390
|
-
console.error('Error converting image to text:', error);
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
else if (Array.isArray(msg.content)) {
|
|
395
|
-
let hasChanges = false;
|
|
396
|
-
const newContentItems = [...msg.content];
|
|
397
|
-
for (let j = 0; j < newContentItems.length; j++) {
|
|
398
|
-
const item = newContentItems[j];
|
|
399
|
-
if (item.type === 'input_text' &&
|
|
400
|
-
typeof item.text === 'string') {
|
|
401
|
-
const extracted = extractBase64Image(item.text);
|
|
402
|
-
if (extracted.found &&
|
|
403
|
-
extracted.image_id !== null) {
|
|
404
|
-
try {
|
|
405
|
-
const image_id = extracted.image_id;
|
|
406
|
-
const imageData = extracted.images[image_id];
|
|
407
|
-
const processedImageData = await convertImageToTextIfNeeded(imageData, modelId);
|
|
408
|
-
if (processedImageData &&
|
|
409
|
-
!processedImageData.startsWith('data:image/')) {
|
|
410
|
-
const newText = extracted.replaceContent.trim()
|
|
411
|
-
? extracted.replaceContent.trim() +
|
|
412
|
-
' ' +
|
|
413
|
-
processedImageData
|
|
414
|
-
: processedImageData;
|
|
415
|
-
newContentItems[j] = {
|
|
416
|
-
...item,
|
|
417
|
-
text: newText,
|
|
418
|
-
};
|
|
419
|
-
hasChanges = true;
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
catch (error) {
|
|
423
|
-
console.error('Error converting image to text in array content:', error);
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
if (hasChanges) {
|
|
429
|
-
msg = {
|
|
430
|
-
...msg,
|
|
431
|
-
content: newContentItems,
|
|
432
|
-
};
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
}
|
|
239
|
+
for (const msg of messages) {
|
|
436
240
|
const role = 'role' in msg && msg.role !== 'developer' ? msg.role : 'system';
|
|
437
241
|
let content = '';
|
|
438
242
|
if ('content' in msg) {
|
|
@@ -444,9 +248,10 @@ export class ClaudeProvider {
|
|
|
444
248
|
content = msg.content.text;
|
|
445
249
|
}
|
|
446
250
|
}
|
|
447
|
-
const structuredMsg = await convertToClaudeMessage(role, content, msg, result);
|
|
251
|
+
const structuredMsg = await convertToClaudeMessage(modelId, role, content, msg, result);
|
|
448
252
|
if (structuredMsg) {
|
|
449
|
-
if (structuredMsg.role === 'assistant' &&
|
|
253
|
+
if (structuredMsg.role === 'assistant' &&
|
|
254
|
+
Array.isArray(structuredMsg.content)) {
|
|
450
255
|
let hasDuplicateToolUse = false;
|
|
451
256
|
for (const contentBlock of structuredMsg.content) {
|
|
452
257
|
if (contentBlock.type === 'tool_use') {
|
|
@@ -471,22 +276,6 @@ export class ClaudeProvider {
|
|
|
471
276
|
}
|
|
472
277
|
return result;
|
|
473
278
|
}
|
|
474
|
-
isMessageWithStringContent(msg) {
|
|
475
|
-
if (!('content' in msg))
|
|
476
|
-
return false;
|
|
477
|
-
if (!msg.content)
|
|
478
|
-
return false;
|
|
479
|
-
if (msg.type &&
|
|
480
|
-
['function_call', 'function_call_output'].includes(msg.type))
|
|
481
|
-
return false;
|
|
482
|
-
if (typeof msg.content === 'string') {
|
|
483
|
-
return true;
|
|
484
|
-
}
|
|
485
|
-
else if (Array.isArray(msg.content)) {
|
|
486
|
-
return msg.content.some(item => item.type === 'input_text' && typeof item.text === 'string');
|
|
487
|
-
}
|
|
488
|
-
return false;
|
|
489
|
-
}
|
|
490
279
|
async *createResponseStream(messages, model, agent) {
|
|
491
280
|
let totalInputTokens = 0;
|
|
492
281
|
let totalOutputTokens = 0;
|
|
@@ -580,21 +369,17 @@ export class ClaudeProvider {
|
|
|
580
369
|
let deltaPosition = 0;
|
|
581
370
|
const deltaBuffers = new Map();
|
|
582
371
|
const citationTracker = createCitationTracker();
|
|
372
|
+
const { waitWhilePaused } = await import('../utils/pause_controller.js');
|
|
373
|
+
await waitWhilePaused(100, agent.abortSignal);
|
|
583
374
|
const stream = await this.client.messages.create(requestParams);
|
|
584
375
|
const events = [];
|
|
585
376
|
try {
|
|
586
377
|
for await (const event of stream) {
|
|
587
378
|
events.push(event);
|
|
588
379
|
if (isPaused()) {
|
|
589
|
-
console.log(`[Claude] System paused during stream for model ${model}.
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
content: '\n⏸️ Stream paused by user.',
|
|
593
|
-
message_id: messageId,
|
|
594
|
-
order: 999,
|
|
595
|
-
};
|
|
596
|
-
streamCompletedSuccessfully = false;
|
|
597
|
-
break;
|
|
380
|
+
console.log(`[Claude] System paused during stream for model ${model}. Waiting...`);
|
|
381
|
+
await waitWhilePaused(100, agent.abortSignal);
|
|
382
|
+
console.log(`[Claude] System resumed, continuing stream for model ${model}`);
|
|
598
383
|
}
|
|
599
384
|
if (event.type === 'message_start' &&
|
|
600
385
|
event.message?.usage) {
|