hanseol 4.5.1 → 4.5.4

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 (42) hide show
  1. package/dist/agents/planner/index.d.ts +1 -0
  2. package/dist/agents/planner/index.d.ts.map +1 -1
  3. package/dist/agents/planner/index.js +70 -1
  4. package/dist/agents/planner/index.js.map +1 -1
  5. package/dist/constants.d.ts +1 -1
  6. package/dist/constants.js +1 -1
  7. package/dist/core/llm/llm-client.d.ts +11 -0
  8. package/dist/core/llm/llm-client.d.ts.map +1 -1
  9. package/dist/core/llm/llm-client.js +114 -49
  10. package/dist/core/llm/llm-client.js.map +1 -1
  11. package/dist/core/session/session-manager.d.ts +3 -0
  12. package/dist/core/session/session-manager.d.ts.map +1 -1
  13. package/dist/core/session/session-manager.js +9 -1
  14. package/dist/core/session/session-manager.js.map +1 -1
  15. package/dist/errors/index.d.ts +1 -1
  16. package/dist/errors/index.d.ts.map +1 -1
  17. package/dist/errors/index.js +1 -1
  18. package/dist/errors/index.js.map +1 -1
  19. package/dist/errors/llm.d.ts +4 -0
  20. package/dist/errors/llm.d.ts.map +1 -1
  21. package/dist/errors/llm.js +11 -0
  22. package/dist/errors/llm.js.map +1 -1
  23. package/dist/orchestration/plan-executor.d.ts.map +1 -1
  24. package/dist/orchestration/plan-executor.js +46 -1
  25. package/dist/orchestration/plan-executor.js.map +1 -1
  26. package/dist/orchestration/types.d.ts +3 -0
  27. package/dist/orchestration/types.d.ts.map +1 -1
  28. package/dist/prompts/agents/planning.d.ts.map +1 -1
  29. package/dist/prompts/agents/planning.js +6 -3
  30. package/dist/prompts/agents/planning.js.map +1 -1
  31. package/dist/tools/llm/simple/planning-tools.d.ts.map +1 -1
  32. package/dist/tools/llm/simple/planning-tools.js +5 -1
  33. package/dist/tools/llm/simple/planning-tools.js.map +1 -1
  34. package/dist/types/index.d.ts +1 -0
  35. package/dist/types/index.d.ts.map +1 -1
  36. package/dist/ui/components/PlanExecuteApp.d.ts.map +1 -1
  37. package/dist/ui/components/PlanExecuteApp.js +30 -1
  38. package/dist/ui/components/PlanExecuteApp.js.map +1 -1
  39. package/dist/ui/hooks/usePlanExecution.d.ts.map +1 -1
  40. package/dist/ui/hooks/usePlanExecution.js +4 -0
  41. package/dist/ui/hooks/usePlanExecution.js.map +1 -1
  42. package/package.json +3 -2
@@ -8,6 +8,7 @@ export declare class PlanningLLM {
8
8
  setAskUserCallback(callback: AskUserCallback): void;
9
9
  clearAskUserCallback(): void;
10
10
  generateTODOList(userRequest: string, contextMessages?: Message[]): Promise<PlanningResult>;
11
+ private extractToolCallFromContent;
11
12
  }
12
13
  export default PlanningLLM;
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/planner/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAY,cAAc,EAAc,MAAM,sBAAsB,CAAC;AAOrF,OAAO,EAEL,eAAe,EAChB,MAAM,kDAAkD,CAAC;AAO1D,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,eAAe,CAAgC;gBAE3C,SAAS,EAAE,SAAS;IAQhC,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAQnD,oBAAoB,IAAI,IAAI;IAatB,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,OAAO,EAAE,GAC1B,OAAO,CAAC,cAAc,CAAC;CA4T3B;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/planner/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAY,cAAc,EAAc,MAAM,sBAAsB,CAAC;AAQrF,OAAO,EAEL,eAAe,EAChB,MAAM,kDAAkD,CAAC;AAO1D,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,eAAe,CAAgC;gBAE3C,SAAS,EAAE,SAAS;IAQhC,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAQnD,oBAAoB,IAAI,IAAI;IAatB,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,OAAO,EAAE,GAC1B,OAAO,CAAC,cAAc,CAAC;IAoW1B,OAAO,CAAC,0BAA0B;CA8CnC;AAED,eAAe,WAAW,CAAC"}
@@ -4,6 +4,7 @@ import { toolRegistry } from '../../tools/registry.js';
4
4
  import { flattenMessagesToHistory } from '../../orchestration/utils.js';
5
5
  import { reportError } from '../../core/telemetry/error-reporter.js';
6
6
  import { configManager } from '../../core/config/config-manager.js';
7
+ import { LLMRetryExhaustedError } from '../../errors/llm.js';
7
8
  export class PlanningLLM {
8
9
  llmClient;
9
10
  askUserCallback = null;
@@ -49,7 +50,7 @@ export class PlanningLLM {
49
50
  });
50
51
  }
51
52
  const planningTools = toolRegistry.getLLMPlanningToolDefinitions();
52
- const MAX_RETRIES = 3;
53
+ const MAX_RETRIES = 5;
53
54
  const MAX_ASK_ITERATIONS = 5;
54
55
  let askIterations = 0;
55
56
  let lastError = null;
@@ -197,6 +198,7 @@ Choose one of your 3 tools now.`,
197
198
  status: (index === 0 ? 'in_progress' : 'pending'),
198
199
  }));
199
200
  return {
201
+ title: toolArgs.title,
200
202
  todos,
201
203
  complexity: toolArgs.complexity || 'moderate',
202
204
  clarificationMessages: clarificationMessages.length > 0 ? clarificationMessages : undefined,
@@ -223,6 +225,32 @@ Choose one of your 3 tools now.`,
223
225
  }
224
226
  const contentOnly = message?.content;
225
227
  if (contentOnly) {
228
+ const extracted = this.extractToolCallFromContent(contentOnly);
229
+ if (extracted) {
230
+ logger.info(`Extracted tool call from plain text content (attempt ${attempt}/${MAX_RETRIES})`, {
231
+ toolName: extracted.name,
232
+ });
233
+ if (extracted.name === 'create_todos' && Array.isArray(extracted.arguments?.todos)) {
234
+ const todos = extracted.arguments.todos.map((todo, index) => ({
235
+ id: todo.id || `todo-${Date.now()}-${index}`,
236
+ title: todo.title || 'Untitled task',
237
+ status: (index === 0 ? 'in_progress' : 'pending'),
238
+ }));
239
+ return {
240
+ todos,
241
+ complexity: extracted.arguments.complexity || 'moderate',
242
+ clarificationMessages: clarificationMessages.length > 0 ? clarificationMessages : undefined,
243
+ };
244
+ }
245
+ if (extracted.name === 'respond_to_user' && extracted.arguments?.response) {
246
+ return {
247
+ todos: [],
248
+ complexity: 'simple',
249
+ directResponse: extracted.arguments.response,
250
+ clarificationMessages: clarificationMessages.length > 0 ? clarificationMessages : undefined,
251
+ };
252
+ }
253
+ }
226
254
  logger.warn(`Planning LLM returned content without tool call (attempt ${attempt}/${MAX_RETRIES})`, {
227
255
  contentPreview: contentOnly.substring(0, 100),
228
256
  });
@@ -234,6 +262,9 @@ Choose one of your 3 tools now.`,
234
262
  }
235
263
  }
236
264
  catch (error) {
265
+ if (error instanceof LLMRetryExhaustedError) {
266
+ throw error;
267
+ }
237
268
  logger.warn(`Planning LLM error (attempt ${attempt}/${MAX_RETRIES}):`, error);
238
269
  lastError = error;
239
270
  }
@@ -260,6 +291,44 @@ Choose one of your 3 tools now.`,
260
291
  clarificationMessages: clarificationMessages.length > 0 ? clarificationMessages : undefined,
261
292
  };
262
293
  }
294
+ extractToolCallFromContent(content) {
295
+ const toolNames = ['create_todos', 'respond_to_user', 'ask_to_user'];
296
+ for (const toolName of toolNames) {
297
+ const funcPattern = new RegExp(`\\{[^{}]*"name"\\s*:\\s*"${toolName}"[^{}]*"arguments"\\s*:\\s*(\\{[\\s\\S]*?\\})\\s*\\}`);
298
+ const funcMatch = content.match(funcPattern);
299
+ if (funcMatch?.[1]) {
300
+ try {
301
+ const args = JSON.parse(funcMatch[1]);
302
+ logger.debug(`Extracted tool call via function pattern: ${toolName}`);
303
+ return { name: toolName, arguments: args };
304
+ }
305
+ catch { }
306
+ }
307
+ const directPattern = new RegExp(`${toolName}\\s*[:(\\[]\\s*(\\{[\\s\\S]*?\\})`);
308
+ const directMatch = content.match(directPattern);
309
+ if (directMatch?.[1]) {
310
+ try {
311
+ const args = JSON.parse(directMatch[1]);
312
+ logger.debug(`Extracted tool call via direct pattern: ${toolName}`);
313
+ return { name: toolName, arguments: args };
314
+ }
315
+ catch { }
316
+ }
317
+ }
318
+ const todosPattern = /\{[\s\S]*?"todos"\s*:\s*\[[\s\S]*?\][\s\S]*?\}/;
319
+ const todosMatch = content.match(todosPattern);
320
+ if (todosMatch?.[0]) {
321
+ try {
322
+ const parsed = JSON.parse(todosMatch[0]);
323
+ if (Array.isArray(parsed.todos)) {
324
+ logger.debug('Extracted create_todos from raw JSON block with todos array');
325
+ return { name: 'create_todos', arguments: parsed };
326
+ }
327
+ }
328
+ catch { }
329
+ }
330
+ return null;
331
+ }
263
332
  }
264
333
  export default PlanningLLM;
265
334
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/planner/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/planner/index.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export declare const BACKUPS_DIR: string;
6
6
  export declare const PROJECTS_DIR: string;
7
7
  export declare const CREDENTIALS_FILE_PATH: string;
8
8
  export declare const APP_NAME = "hanseol";
9
- export declare const APP_VERSION = "4.5.1";
9
+ export declare const APP_VERSION = "4.5.4";
10
10
  export declare const DASHBOARD_URL = "https://3.39.170.84.nip.io";
11
11
  export declare const ONCE_URL = "https://3.39.170.84.nip.io:5090";
12
12
  export declare const FREE_URL = "https://3.39.170.84.nip.io:6090";
package/dist/constants.js CHANGED
@@ -8,7 +8,7 @@ export const BACKUPS_DIR = path.join(LOCAL_HOME_DIR, 'backups');
8
8
  export const PROJECTS_DIR = path.join(LOCAL_HOME_DIR, 'projects');
9
9
  export const CREDENTIALS_FILE_PATH = path.join(LOCAL_HOME_DIR, 'credentials.json');
10
10
  export const APP_NAME = 'hanseol';
11
- export const APP_VERSION = '4.5.1';
11
+ export const APP_VERSION = '4.5.4';
12
12
  export const DASHBOARD_URL = 'https://3.39.170.84.nip.io';
13
13
  export const ONCE_URL = 'https://3.39.170.84.nip.io:5090';
14
14
  export const FREE_URL = 'https://3.39.170.84.nip.io:6090';
@@ -36,6 +36,7 @@ export interface RetryConfig {
36
36
  maxRetries?: number;
37
37
  currentAttempt?: number;
38
38
  disableRetry?: boolean;
39
+ extendedRetryDone?: boolean;
39
40
  }
40
41
  export declare class LLMClient {
41
42
  private axiosInstance;
@@ -45,6 +46,7 @@ export declare class LLMClient {
45
46
  private modelName;
46
47
  private currentAbortController;
47
48
  private isInterrupted;
49
+ countdownCallback: ((remainingSeconds: number) => void) | null;
48
50
  private static readonly DEFAULT_MAX_RETRIES;
49
51
  constructor(authToken?: string);
50
52
  private preprocessMessages;
@@ -55,6 +57,7 @@ export declare class LLMClient {
55
57
  isRequestActive(): boolean;
56
58
  private isRetryableError;
57
59
  private sleep;
60
+ private waitWithCountdown;
58
61
  chatCompletionStream(options: Partial<LLMRequestOptions>): AsyncGenerator<LLMStreamChunk, void, unknown>;
59
62
  sendMessage(userMessage: string, systemPrompt?: string): Promise<string>;
60
63
  sendMessageStream(userMessage: string, systemPrompt?: string): AsyncGenerator<string, void, unknown>;
@@ -63,6 +66,14 @@ export declare class LLMClient {
63
66
  clearPendingMessage?: () => void;
64
67
  rebuildMessages?: (toolLoopMessages: Message[]) => Message[];
65
68
  onAfterToolExecution?: (toolLoopMessages: Message[]) => Promise<void>;
69
+ askUser?: (request: {
70
+ question: string;
71
+ options: string[];
72
+ }) => Promise<{
73
+ selectedOption: string;
74
+ isOther: boolean;
75
+ customText?: string;
76
+ }>;
66
77
  }): Promise<{
67
78
  message: Message;
68
79
  toolCalls: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../../src/core/llm/llm-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../../src/core/llm/llm-client.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import axios from 'axios';
2
2
  import { configManager } from '../config/config-manager.js';
3
3
  import { NetworkError, APIError, TimeoutError, ConnectionError, } from '../../errors/network.js';
4
- import { LLMError, TokenLimitError, RateLimitError, ContextLengthError, } from '../../errors/llm.js';
4
+ import { LLMError, TokenLimitError, RateLimitError, ContextLengthError, LLMRetryExhaustedError, } from '../../errors/llm.js';
5
5
  import { QuotaExceededError } from '../../errors/quota.js';
6
6
  import { logger, isLLMLogEnabled } from '../../utils/logger.js';
7
7
  import { reportError } from '../telemetry/error-reporter.js';
@@ -14,6 +14,7 @@ export class LLMClient {
14
14
  modelName;
15
15
  currentAbortController = null;
16
16
  isInterrupted = false;
17
+ countdownCallback = null;
17
18
  static DEFAULT_MAX_RETRIES = 3;
18
19
  constructor(authToken) {
19
20
  const endpoint = configManager.getCurrentEndpoint();
@@ -187,6 +188,34 @@ export class LLMClient {
187
188
  currentAttempt: currentAttempt + 1,
188
189
  });
189
190
  }
191
+ if (currentAttempt >= maxRetries && !retryConfig?.disableRetry && !retryConfig?.extendedRetryDone && this.isRetryableError(error)) {
192
+ logger.warn(`Phase 1 (${maxRetries}회) 실패. 2분 대기 후 Phase 2 시작...`, {
193
+ error: error.message,
194
+ });
195
+ const waited = await this.waitWithCountdown(120);
196
+ if (!waited) {
197
+ logger.flow('카운트다운 중 인터럽트 감지');
198
+ throw new Error('INTERRUPTED');
199
+ }
200
+ logger.warn('Phase 2 (2분 대기) 완료. Phase 3 (3회 추가 retry) 시작...');
201
+ try {
202
+ return await this.chatCompletion(options, {
203
+ maxRetries,
204
+ currentAttempt: 1,
205
+ extendedRetryDone: true,
206
+ });
207
+ }
208
+ catch (phase3Error) {
209
+ const finalError = phase3Error instanceof Error ? phase3Error : new Error(String(phase3Error));
210
+ if (finalError.message === 'INTERRUPTED') {
211
+ throw finalError;
212
+ }
213
+ logger.errorSilent('Phase 3 (추가 3회) 실패. 최종 LLMRetryExhaustedError throw.', {
214
+ error: finalError.message,
215
+ });
216
+ throw new LLMRetryExhaustedError(finalError);
217
+ }
218
+ }
190
219
  logger.flow('API 호출 실패 - 에러 처리');
191
220
  if (currentAttempt > 1) {
192
221
  logger.errorSilent(`LLM 호출 ${maxRetries}번 재시도 후 최종 실패`, {
@@ -254,6 +283,19 @@ export class LLMClient {
254
283
  sleep(ms) {
255
284
  return new Promise(resolve => setTimeout(resolve, ms));
256
285
  }
286
+ async waitWithCountdown(totalSeconds) {
287
+ for (let remaining = totalSeconds; remaining > 0; remaining -= 10) {
288
+ if (this.isInterrupted) {
289
+ this.countdownCallback?.(0);
290
+ return false;
291
+ }
292
+ const waitSec = Math.min(10, remaining);
293
+ this.countdownCallback?.(remaining);
294
+ await this.sleep(waitSec * 1000);
295
+ }
296
+ this.countdownCallback?.(0);
297
+ return !this.isInterrupted;
298
+ }
257
299
  async *chatCompletionStream(options) {
258
300
  const url = '/chat/completions';
259
301
  try {
@@ -696,62 +738,83 @@ Retry with correct parameter names and types.`;
696
738
  }
697
739
  logger.debug(`Executing tool: ${toolName}`, toolArgs);
698
740
  let result;
699
- try {
700
- result = await executeFileTool(toolName, toolArgs);
701
- logger.toolExecution(toolName, toolArgs, result);
702
- if (isLLMLogEnabled()) {
703
- logger.llmToolResult(toolName, result.result || '', result.success);
741
+ if (toolName === 'ask_to_user' && options?.askUser) {
742
+ const question = toolArgs['question'];
743
+ const askOptions = toolArgs['options'];
744
+ if (question && Array.isArray(askOptions) && askOptions.length >= 2) {
745
+ try {
746
+ const askResponse = await options.askUser({ question, options: askOptions });
747
+ const resultText = askResponse.isOther && askResponse.customText
748
+ ? `User provided custom response: "${askResponse.customText}"`
749
+ : `User selected: "${askResponse.selectedOption}"`;
750
+ result = { success: true, result: resultText };
751
+ }
752
+ catch (askError) {
753
+ result = { success: false, error: `Error asking user: ${askError instanceof Error ? askError.message : 'Unknown error'}` };
754
+ }
704
755
  }
705
- if (toolName === 'final_response') {
706
- if (result.success && result.metadata?.['isFinalResponse']) {
707
- logger.flow('final_response tool executed successfully - returning');
708
- addMessage({
709
- role: 'tool',
710
- content: result.result || '',
711
- tool_call_id: toolCall.id,
712
- });
713
- toolCallHistory.push({
714
- tool: toolName,
715
- args: toolArgs,
716
- result: result.result || '',
717
- });
718
- return {
719
- message: {
720
- role: 'assistant',
721
- content: result.result || '',
722
- },
723
- toolCalls: toolCallHistory,
724
- allMessages: getAllMessages(),
725
- };
756
+ else {
757
+ result = { success: false, error: 'Invalid ask_to_user parameters' };
758
+ }
759
+ }
760
+ else {
761
+ try {
762
+ result = await executeFileTool(toolName, toolArgs);
763
+ logger.toolExecution(toolName, toolArgs, result);
764
+ if (isLLMLogEnabled()) {
765
+ logger.llmToolResult(toolName, result.result || '', result.success);
726
766
  }
727
- else {
728
- finalResponseFailures++;
729
- logger.flow(`final_response failed (attempt ${finalResponseFailures}/${MAX_FINAL_RESPONSE_FAILURES}): ${result.error}`);
730
- if (finalResponseFailures >= MAX_FINAL_RESPONSE_FAILURES) {
731
- logger.warn('Max final_response failures exceeded - forcing completion');
732
- const fallbackMessage = toolArgs['message'] || 'Task completed with incomplete TODOs.';
733
- const { emitAssistantResponse } = await import('../../tools/llm/simple/file-tools.js');
734
- emitAssistantResponse(fallbackMessage);
767
+ if (toolName === 'final_response') {
768
+ if (result.success && result.metadata?.['isFinalResponse']) {
769
+ logger.flow('final_response tool executed successfully - returning');
770
+ addMessage({
771
+ role: 'tool',
772
+ content: result.result || '',
773
+ tool_call_id: toolCall.id,
774
+ });
775
+ toolCallHistory.push({
776
+ tool: toolName,
777
+ args: toolArgs,
778
+ result: result.result || '',
779
+ });
735
780
  return {
736
- message: { role: 'assistant', content: fallbackMessage },
781
+ message: {
782
+ role: 'assistant',
783
+ content: result.result || '',
784
+ },
737
785
  toolCalls: toolCallHistory,
738
786
  allMessages: getAllMessages(),
739
787
  };
740
788
  }
789
+ else {
790
+ finalResponseFailures++;
791
+ logger.flow(`final_response failed (attempt ${finalResponseFailures}/${MAX_FINAL_RESPONSE_FAILURES}): ${result.error}`);
792
+ if (finalResponseFailures >= MAX_FINAL_RESPONSE_FAILURES) {
793
+ logger.warn('Max final_response failures exceeded - forcing completion');
794
+ const fallbackMessage = toolArgs['message'] || 'Task completed with incomplete TODOs.';
795
+ const { emitAssistantResponse } = await import('../../tools/llm/simple/file-tools.js');
796
+ emitAssistantResponse(fallbackMessage);
797
+ return {
798
+ message: { role: 'assistant', content: fallbackMessage },
799
+ toolCalls: toolCallHistory,
800
+ allMessages: getAllMessages(),
801
+ };
802
+ }
803
+ }
741
804
  }
742
805
  }
743
- }
744
- catch (toolError) {
745
- logger.toolExecution(toolName, toolArgs, undefined, toolError);
746
- reportError(toolError, { type: 'toolExecution', tool: toolName, modelId: this.model, modelName: this.modelName, toolArgs }).catch(() => { });
747
- if (isLLMLogEnabled()) {
748
- const errorMsg = toolError instanceof Error ? toolError.message : String(toolError);
749
- logger.llmToolResult(toolName, `Error: ${errorMsg}`, false);
806
+ catch (toolError) {
807
+ logger.toolExecution(toolName, toolArgs, undefined, toolError);
808
+ reportError(toolError, { type: 'toolExecution', tool: toolName, modelId: this.model, modelName: this.modelName, toolArgs }).catch(() => { });
809
+ if (isLLMLogEnabled()) {
810
+ const errorMsg = toolError instanceof Error ? toolError.message : String(toolError);
811
+ logger.llmToolResult(toolName, `Error: ${errorMsg}`, false);
812
+ }
813
+ result = {
814
+ success: false,
815
+ error: toolError instanceof Error ? toolError.message : String(toolError),
816
+ };
750
817
  }
751
- result = {
752
- success: false,
753
- error: toolError instanceof Error ? toolError.message : String(toolError),
754
- };
755
818
  }
756
819
  addMessage({
757
820
  role: 'tool',
@@ -855,10 +918,12 @@ Retry with correct parameter names and types.`;
855
918
  responseHeaders: axiosError.response.headers,
856
919
  });
857
920
  logger.httpResponse(status, axiosError.response.statusText, data);
858
- if (errorType === 'invalid_request_error' &&
921
+ if (status === 400 &&
859
922
  (errorMessage.includes('context_length_exceeded') ||
860
923
  errorMessage.includes('maximum context length') ||
861
- errorCode === 'context_length_exceeded')) {
924
+ errorMessage.includes('Input too long') ||
925
+ errorCode === 'context_length_exceeded' ||
926
+ (typeof data?.error === 'string' && data.error.includes('Input too long')))) {
862
927
  const maxLength = data?.error?.param?.max_tokens || 'unknown';
863
928
  logger.errorSilent('Context Length Exceeded', {
864
929
  maxLength,