erosolar-cli 2.1.172 → 2.1.174

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 (172) hide show
  1. package/README.md +1 -1
  2. package/agents/erosolar-code.rules.json +2 -2
  3. package/agents/general.rules.json +21 -3
  4. package/dist/capabilities/statusCapability.js +2 -2
  5. package/dist/capabilities/statusCapability.js.map +1 -1
  6. package/dist/contracts/agent-schemas.json +5 -5
  7. package/dist/core/agent.d.ts +83 -24
  8. package/dist/core/agent.d.ts.map +1 -1
  9. package/dist/core/agent.js +499 -248
  10. package/dist/core/agent.js.map +1 -1
  11. package/dist/core/preferences.d.ts +1 -0
  12. package/dist/core/preferences.d.ts.map +1 -1
  13. package/dist/core/preferences.js +8 -1
  14. package/dist/core/preferences.js.map +1 -1
  15. package/dist/core/reliabilityPrompt.d.ts +9 -0
  16. package/dist/core/reliabilityPrompt.d.ts.map +1 -0
  17. package/dist/core/reliabilityPrompt.js +31 -0
  18. package/dist/core/reliabilityPrompt.js.map +1 -0
  19. package/dist/core/schemaValidator.js +3 -3
  20. package/dist/core/schemaValidator.js.map +1 -1
  21. package/dist/core/toolPreconditions.d.ts +0 -11
  22. package/dist/core/toolPreconditions.d.ts.map +1 -1
  23. package/dist/core/toolPreconditions.js +33 -164
  24. package/dist/core/toolPreconditions.js.map +1 -1
  25. package/dist/core/toolRuntime.d.ts.map +1 -1
  26. package/dist/core/toolRuntime.js +9 -114
  27. package/dist/core/toolRuntime.js.map +1 -1
  28. package/dist/core/updateChecker.d.ts +61 -1
  29. package/dist/core/updateChecker.d.ts.map +1 -1
  30. package/dist/core/updateChecker.js +147 -3
  31. package/dist/core/updateChecker.js.map +1 -1
  32. package/dist/headless/headlessApp.d.ts.map +1 -1
  33. package/dist/headless/headlessApp.js +0 -39
  34. package/dist/headless/headlessApp.js.map +1 -1
  35. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  36. package/dist/plugins/tools/nodeDefaults.js +0 -2
  37. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  38. package/dist/providers/openaiResponsesProvider.d.ts.map +1 -1
  39. package/dist/providers/openaiResponsesProvider.js +79 -74
  40. package/dist/providers/openaiResponsesProvider.js.map +1 -1
  41. package/dist/runtime/agentController.d.ts.map +1 -1
  42. package/dist/runtime/agentController.js +6 -3
  43. package/dist/runtime/agentController.js.map +1 -1
  44. package/dist/runtime/agentSession.d.ts +0 -2
  45. package/dist/runtime/agentSession.d.ts.map +1 -1
  46. package/dist/runtime/agentSession.js +2 -2
  47. package/dist/runtime/agentSession.js.map +1 -1
  48. package/dist/shell/interactiveShell.d.ts +11 -18
  49. package/dist/shell/interactiveShell.d.ts.map +1 -1
  50. package/dist/shell/interactiveShell.js +273 -291
  51. package/dist/shell/interactiveShell.js.map +1 -1
  52. package/dist/shell/shellApp.d.ts.map +1 -1
  53. package/dist/shell/shellApp.js +7 -1
  54. package/dist/shell/shellApp.js.map +1 -1
  55. package/dist/shell/systemPrompt.d.ts.map +1 -1
  56. package/dist/shell/systemPrompt.js +4 -15
  57. package/dist/shell/systemPrompt.js.map +1 -1
  58. package/dist/subagents/taskRunner.js +2 -1
  59. package/dist/subagents/taskRunner.js.map +1 -1
  60. package/dist/tools/bashTools.d.ts.map +1 -1
  61. package/dist/tools/bashTools.js +101 -8
  62. package/dist/tools/bashTools.js.map +1 -1
  63. package/dist/tools/diffUtils.d.ts +8 -2
  64. package/dist/tools/diffUtils.d.ts.map +1 -1
  65. package/dist/tools/diffUtils.js +72 -13
  66. package/dist/tools/diffUtils.js.map +1 -1
  67. package/dist/tools/grepTools.d.ts.map +1 -1
  68. package/dist/tools/grepTools.js +10 -2
  69. package/dist/tools/grepTools.js.map +1 -1
  70. package/dist/tools/planningTools.d.ts +0 -10
  71. package/dist/tools/planningTools.d.ts.map +1 -1
  72. package/dist/tools/planningTools.js +0 -16
  73. package/dist/tools/planningTools.js.map +1 -1
  74. package/dist/tools/searchTools.d.ts.map +1 -1
  75. package/dist/tools/searchTools.js +4 -2
  76. package/dist/tools/searchTools.js.map +1 -1
  77. package/dist/ui/PromptController.d.ts +1 -4
  78. package/dist/ui/PromptController.d.ts.map +1 -1
  79. package/dist/ui/PromptController.js +1 -7
  80. package/dist/ui/PromptController.js.map +1 -1
  81. package/dist/ui/ShellUIAdapter.d.ts +292 -28
  82. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  83. package/dist/ui/ShellUIAdapter.js +1513 -121
  84. package/dist/ui/ShellUIAdapter.js.map +1 -1
  85. package/dist/ui/UnifiedUIController.d.ts +81 -0
  86. package/dist/ui/UnifiedUIController.d.ts.map +1 -0
  87. package/dist/ui/UnifiedUIController.js +212 -0
  88. package/dist/ui/UnifiedUIController.js.map +1 -0
  89. package/dist/ui/UnifiedUIRenderer.d.ts +133 -30
  90. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  91. package/dist/ui/UnifiedUIRenderer.js +939 -370
  92. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  93. package/dist/ui/animatedStatus.d.ts +128 -6
  94. package/dist/ui/animatedStatus.d.ts.map +1 -1
  95. package/dist/ui/animatedStatus.js +383 -50
  96. package/dist/ui/animatedStatus.js.map +1 -1
  97. package/dist/ui/animation/AnimationScheduler.d.ts +192 -0
  98. package/dist/ui/animation/AnimationScheduler.d.ts.map +1 -0
  99. package/dist/ui/animation/AnimationScheduler.js +432 -0
  100. package/dist/ui/animation/AnimationScheduler.js.map +1 -0
  101. package/dist/ui/display.d.ts +182 -26
  102. package/dist/ui/display.d.ts.map +1 -1
  103. package/dist/ui/display.js +678 -97
  104. package/dist/ui/display.js.map +1 -1
  105. package/dist/ui/inPlaceUpdater.d.ts +181 -0
  106. package/dist/ui/inPlaceUpdater.d.ts.map +1 -0
  107. package/dist/ui/inPlaceUpdater.js +515 -0
  108. package/dist/ui/inPlaceUpdater.js.map +1 -0
  109. package/dist/ui/interrupts/InterruptManager.d.ts +142 -0
  110. package/dist/ui/interrupts/InterruptManager.d.ts.map +1 -0
  111. package/dist/ui/interrupts/InterruptManager.js +439 -0
  112. package/dist/ui/interrupts/InterruptManager.js.map +1 -0
  113. package/dist/ui/layout.d.ts +0 -1
  114. package/dist/ui/layout.d.ts.map +1 -1
  115. package/dist/ui/layout.js +0 -12
  116. package/dist/ui/layout.js.map +1 -1
  117. package/dist/ui/orchestration/UIUpdateCoordinator.d.ts +61 -7
  118. package/dist/ui/orchestration/UIUpdateCoordinator.d.ts.map +1 -1
  119. package/dist/ui/orchestration/UIUpdateCoordinator.js +232 -20
  120. package/dist/ui/orchestration/UIUpdateCoordinator.js.map +1 -1
  121. package/dist/ui/shortcutsHelp.d.ts.map +1 -1
  122. package/dist/ui/shortcutsHelp.js +0 -1
  123. package/dist/ui/shortcutsHelp.js.map +1 -1
  124. package/dist/ui/telemetry/ResponseTracker.d.ts +22 -0
  125. package/dist/ui/telemetry/ResponseTracker.d.ts.map +1 -0
  126. package/dist/ui/telemetry/ResponseTracker.js +60 -0
  127. package/dist/ui/telemetry/ResponseTracker.js.map +1 -0
  128. package/dist/ui/telemetry/UITelemetry.d.ts +181 -0
  129. package/dist/ui/telemetry/UITelemetry.d.ts.map +1 -0
  130. package/dist/ui/telemetry/UITelemetry.js +446 -0
  131. package/dist/ui/telemetry/UITelemetry.js.map +1 -0
  132. package/dist/ui/unified/index.d.ts +30 -1
  133. package/dist/ui/unified/index.d.ts.map +1 -1
  134. package/dist/ui/unified/index.js +45 -2
  135. package/dist/ui/unified/index.js.map +1 -1
  136. package/dist/ui/unified/layout.d.ts +12 -0
  137. package/dist/ui/unified/layout.d.ts.map +1 -0
  138. package/dist/ui/unified/layout.js +96 -0
  139. package/dist/ui/unified/layout.js.map +1 -0
  140. package/package.json +2 -3
  141. package/dist/StringUtils.d.ts +0 -8
  142. package/dist/StringUtils.d.ts.map +0 -1
  143. package/dist/StringUtils.js +0 -11
  144. package/dist/StringUtils.js.map +0 -1
  145. package/dist/core/aiFlowSupervisor.d.ts +0 -44
  146. package/dist/core/aiFlowSupervisor.d.ts.map +0 -1
  147. package/dist/core/aiFlowSupervisor.js +0 -299
  148. package/dist/core/aiFlowSupervisor.js.map +0 -1
  149. package/dist/core/cliTestHarness.d.ts +0 -200
  150. package/dist/core/cliTestHarness.d.ts.map +0 -1
  151. package/dist/core/cliTestHarness.js +0 -549
  152. package/dist/core/cliTestHarness.js.map +0 -1
  153. package/dist/core/testUtils.d.ts +0 -121
  154. package/dist/core/testUtils.d.ts.map +0 -1
  155. package/dist/core/testUtils.js +0 -235
  156. package/dist/core/testUtils.js.map +0 -1
  157. package/dist/core/toolValidation.d.ts +0 -116
  158. package/dist/core/toolValidation.d.ts.map +0 -1
  159. package/dist/core/toolValidation.js +0 -282
  160. package/dist/core/toolValidation.js.map +0 -1
  161. package/dist/ui/planOverlay.d.ts +0 -28
  162. package/dist/ui/planOverlay.d.ts.map +0 -1
  163. package/dist/ui/planOverlay.js +0 -156
  164. package/dist/ui/planOverlay.js.map +0 -1
  165. package/dist/ui/streamingFormatter.d.ts +0 -30
  166. package/dist/ui/streamingFormatter.d.ts.map +0 -1
  167. package/dist/ui/streamingFormatter.js +0 -91
  168. package/dist/ui/streamingFormatter.js.map +0 -1
  169. package/dist/utils/errorUtils.d.ts +0 -16
  170. package/dist/utils/errorUtils.d.ts.map +0 -1
  171. package/dist/utils/errorUtils.js +0 -66
  172. package/dist/utils/errorUtils.js.map +0 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@ Unified command-line agent with a single, persistent chat box pinned to the bott
4
4
 
5
5
  ## Highlights
6
6
  - One chat box, always on the bottom during the entire session (idle or streaming).
7
- - Shared control bar for status, verify/build toggle, auto-continue, and context gauge.
7
+ - Shared control bar for status, verification/build toggles, and context gauge.
8
8
  - Works with OpenAI, Anthropic, Google, xAI, DeepSeek, and local Ollama using the same UI contract.
9
9
  - Multi-agent Task tool with built-in general-purpose, explore (read-only), and plan subagents; add custom agents from `.claude/agents`, `~/.claude/agents`, or `--agents` JSON.
10
10
 
@@ -7,8 +7,8 @@
7
7
  "description": "Lean, aggressive coding agent. Act first, ask only when blocked.",
8
8
  "globalPrinciples": [
9
9
  {
10
- "id": "core.act",
11
- "summary": "ACT by default. Execute tools immediately. Only ask if genuinely blocked or request is unsafe.",
10
+ "id": "core.act_first",
11
+ "summary": "Every response MUST include tool calls. Brief explanation is optional. Text-only responses are not allowed during investigation.",
12
12
  "severity": "critical"
13
13
  },
14
14
  {
@@ -8,9 +8,9 @@
8
8
  "globalPrinciples": [
9
9
  {
10
10
  "id": "guardrail.clarify_ambiguous",
11
- "summary": "CRITICAL: If user request is vague, single-word, or ambiguous (e.g., 'typing', 'fix it', 'help'), ASK for clarification FIRST. Do NOT explore or guess.",
12
- "detail": "Respond with: 'Could you clarify what you mean by [X]? For example: [option A], [option B], or [option C]?' Only proceed after clarification.",
13
- "severity": "critical"
11
+ "summary": "Only ask for clarification when the request is truly uninterpretable (single words like 'typing' with no context). For requests with reasonable interpretations (like 'find junk code'), act on the most likely interpretation first.",
12
+ "detail": "If a request could mean multiple things but has a reasonable default interpretation, take action. Only ask when you genuinely cannot determine what the user wants. 'Got any junk code to remove?' search for unused code. 'Fix it' → if context exists, fix it; if not, ask what to fix.",
13
+ "severity": "recommended"
14
14
  },
15
15
  {
16
16
  "id": "guardrail.concise_responses",
@@ -42,11 +42,29 @@
42
42
  "detail": "Keep tool usage auditable by narrating the intent before running them and summarizing their output afterward.",
43
43
  "severity": "required"
44
44
  },
45
+ {
46
+ "id": "guardrail.bias_to_action",
47
+ "summary": "CRITICAL: Act first, ask later. When the user makes a request, immediately use tools to investigate and accomplish it. NEVER ask clarifying questions when you can take reasonable action instead.",
48
+ "detail": "For 'find junk code' or 'cleanup': 1) search_files for 'TODO|FIXME|HACK|XXX', 2) grep for unused exports 'export.*(?!.*import)', 3) find empty/stub files, 4) look for commented-out code blocks. For 'fix bug' or 'debug': 1) search for error messages, 2) trace the code path, 3) read relevant files, 4) propose a fix. NEVER respond with just 'What would you like me to do?' when you can investigate.",
49
+ "severity": "critical"
50
+ },
45
51
  {
46
52
  "id": "guardrail.continuous_execution",
47
53
  "summary": "CRITICAL: Continue using tools until the task is complete. Do NOT stop after reading files—immediately proceed to make the requested edits. Do NOT describe what you WILL do—just DO it by calling the appropriate tools. After each tool call, continue with the next step until the task is fully accomplished.",
48
54
  "severity": "critical"
49
55
  },
56
+ {
57
+ "id": "guardrail.smart_narration",
58
+ "summary": "CRITICAL: Narrate meaningfully. Share key insights and discoveries, not mechanical step descriptions. Say what you FOUND, not what you're DOING.",
59
+ "detail": "Good: 'Found the bug: processInput clears suggestions before Enter is handled (line 234)'. Bad: 'Let me trace processInput... Let me check the suggestions... I see it now, let me look at...'. For complex debugging, provide progress updates on discoveries, not tool invocations.",
60
+ "severity": "critical"
61
+ },
62
+ {
63
+ "id": "guardrail.deep_investigation",
64
+ "summary": "For ANY exploratory request, perform thorough multi-step investigation using 5-10+ tool calls. Do NOT stop after 2 tools.",
65
+ "detail": "When exploring: 1) list_files to get overview, 2) search_files for patterns, 3) read_file on suspicious files, 4) grep for related patterns, 5) check imports/exports, 6) look for test files, 7) check for duplicates. Report findings as you discover them. A proper investigation uses MANY tools, not just 1-2.",
66
+ "severity": "critical"
67
+ },
50
68
  {
51
69
  "id": "guardrail.manual_loop_supervision",
52
70
  "summary": "Humans supervise the loop manually—escalate when you lack evidence or stall.",
@@ -30,8 +30,8 @@ export function createStatusCapability(statusTracker) {
30
30
  tools: [
31
31
  {
32
32
  name: 'set_status',
33
- description: 'Update the live status bar with a short, present-tense note about what you are doing. ' +
34
- 'Use an empty message to clear it.',
33
+ description: 'RARELY NEEDED. Only use for long-running operations. Do NOT use to narrate what you plan to do. ' +
34
+ 'Call actual tools (list_files, read_file, search_files) instead of setting status.',
35
35
  parameters: {
36
36
  type: 'object',
37
37
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"statusCapability.js","sourceRoot":"","sources":["../../src/capabilities/statusCapability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statusCapability.js","sourceRoot":"","sources":["../../src/capabilities/statusCapability.ts"],"names":[],"mappings":"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"}
@@ -470,11 +470,6 @@
470
470
  "description": "Manage local/air-gapped LLM servers (Ollama, LM Studio, etc.)",
471
471
  "category": "configuration"
472
472
  },
473
- {
474
- "command": "/autocontinue",
475
- "description": "Toggle auto-continue mode (prompts model when it expresses intent but doesn't act)",
476
- "category": "configuration"
477
- },
478
473
  {
479
474
  "command": "/rewind",
480
475
  "description": "Rewind to a previous checkpoint (restore code, conversation, or both)",
@@ -539,6 +534,11 @@
539
534
  "command": "/permissions",
540
535
  "description": "Configure tool permissions (allow/deny rules)",
541
536
  "category": "configuration"
537
+ },
538
+ {
539
+ "command": "/update",
540
+ "description": "Check for updates and configure auto-update preference",
541
+ "category": "configuration"
542
542
  }
543
543
  ],
544
544
 
@@ -12,16 +12,33 @@ export interface AgentCallbacks {
12
12
  onContextRecovery?(attempt: number, maxAttempts: number, message: string): void;
13
13
  /** Called when agent continues after context recovery - useful for updating UI */
14
14
  onContinueAfterRecovery?(): void;
15
- /** Called when auto-continuing because model expressed intent but didn't act */
16
- onAutoContinue?(attempt: number, maxAttempts: number, message: string): void;
17
15
  /** Called when multi-line paste is detected - displays summary instead of full content */
18
16
  onMultilinePaste?(summary: string, metadata: PasteSummary): void;
19
17
  /** Called when verification should be triggered for a final response */
20
18
  onVerificationNeeded?(response: string, context: VerificationCallbackContext): void;
21
19
  /** Called when the operation is cancelled by the user */
22
20
  onCancelled?(): void;
23
- /** Called when streaming fails and we fall back to non-streaming generation */
24
- onStreamFallback?(info: StreamFallbackInfo): void;
21
+ /** Called when tool execution starts - useful for updating activity status */
22
+ onToolExecution?(toolName: string, isStart: boolean, args?: Record<string, unknown>): void;
23
+ /**
24
+ * Called IMMEDIATELY when a user request is received, BEFORE any provider call.
25
+ * Useful for updating UI activity without showing filler messages.
26
+ */
27
+ onRequestReceived?(requestPreview: string): void;
28
+ /**
29
+ * Called BEFORE the first tool call in a turn, allowing UI to update activity state.
30
+ * @param toolNames - Names of tools about to be called
31
+ * @param hasModelNarration - Whether the model provided narration/thinking before tools
32
+ * @returns Optional acknowledgement text to display (if model didn't provide narration)
33
+ */
34
+ onBeforeFirstToolCall?(toolNames: string[], hasModelNarration: boolean): string | undefined;
35
+ /**
36
+ * Called when the agent encounters a transient error and will retry.
37
+ * @param attempt - Current retry attempt number
38
+ * @param maxAttempts - Maximum retry attempts
39
+ * @param error - The error that triggered the retry
40
+ */
41
+ onRetrying?(attempt: number, maxAttempts: number, error: Error): void;
25
42
  }
26
43
  export interface VerificationCallbackContext {
27
44
  /** Working directory for verification */
@@ -40,14 +57,9 @@ export interface AssistantMessageMetadata {
40
57
  contextStats?: Record<string, unknown> | null;
41
58
  /** True if content was already displayed via streaming chunks */
42
59
  wasStreamed?: boolean;
60
+ /** Hint to UI to suppress rendering of internal/system filler messages */
61
+ suppressDisplay?: boolean;
43
62
  }
44
- export interface StreamFallbackInfo {
45
- message: string;
46
- error?: unknown;
47
- reason?: StreamInterruptionReason;
48
- partialResponse?: string;
49
- }
50
- export type StreamInterruptionReason = 'startup-timeout' | 'idle-timeout';
51
63
  interface AgentOptions {
52
64
  provider: LLMProvider;
53
65
  toolRuntime: IToolRuntime;
@@ -60,8 +72,6 @@ interface AgentOptions {
60
72
  modelId?: string;
61
73
  /** Working directory for verification */
62
74
  workingDirectory?: string;
63
- /** Enable auto-continuation when model expresses intent but doesn't act (default: false) */
64
- autoContinue?: boolean;
65
75
  }
66
76
  export declare class AgentRuntime {
67
77
  private readonly messages;
@@ -75,7 +85,16 @@ export declare class AgentRuntime {
75
85
  private readonly modelId;
76
86
  private readonly workingDirectory;
77
87
  private cancellationRequested;
78
- private _autoContinueEnabled;
88
+ private lastToolCallSignature;
89
+ private repeatedToolCallCount;
90
+ private static readonly MAX_REPEATED_TOOL_CALLS;
91
+ private recentToolCalls;
92
+ private static readonly TOOL_HISTORY_SIZE;
93
+ private static readonly BEHAVIORAL_LOOP_THRESHOLD;
94
+ private static readonly NON_CACHEABLE_TOOL_NAMES;
95
+ private static readonly LOOP_EXEMPT_TOOL_NAMES;
96
+ private toolResultCache;
97
+ private static readonly TOOL_CACHE_MAX_SIZE;
79
98
  constructor(options: AgentOptions);
80
99
  /**
81
100
  * Request cancellation of the current operation.
@@ -90,14 +109,6 @@ export declare class AgentRuntime {
90
109
  * Check if the agent is currently processing a request.
91
110
  */
92
111
  isRunning(): boolean;
93
- /**
94
- * Check if auto-continuation is enabled.
95
- */
96
- isAutoContinueEnabled(): boolean;
97
- /**
98
- * Enable or disable auto-continuation.
99
- */
100
- setAutoContinue(enabled: boolean): void;
101
112
  send(text: string, useStreaming?: boolean): Promise<string>;
102
113
  private processConversation;
103
114
  private processConversationStreaming;
@@ -112,8 +123,8 @@ export declare class AgentRuntime {
112
123
  private resolveToolCalls;
113
124
  private get providerTools();
114
125
  /**
115
- * OpenAI models frequently add speculative tool narration in the content field.
116
- * Suppress that text to avoid surfacing hallucinated tool usage in the UI.
126
+ * Whether to suppress tool narration in the content field.
127
+ * Previously suppressed for OpenAI but now we show all thinking/narration.
117
128
  */
118
129
  private shouldSuppressToolNarration;
119
130
  private emitAssistantMessage;
@@ -122,6 +133,54 @@ export declare class AgentRuntime {
122
133
  * and response contains verifiable claims (implementation, build success, etc.)
123
134
  */
124
135
  private triggerVerificationIfNeeded;
136
+ /**
137
+ * Extract a "command hash" from tool arguments for behavioral loop detection.
138
+ * For execute_bash, this is the actual command. For other tools, key identifying args.
139
+ */
140
+ private extractCmdHash;
141
+ /**
142
+ * Check for behavioral loops - model calling the same tool with similar args repeatedly.
143
+ * Returns an error message if a loop is detected, null otherwise.
144
+ *
145
+ * FUNDAMENTAL PREVENTION: Cached calls are excluded from loop detection since they
146
+ * don't actually execute (the cache provides the result). This means:
147
+ * - First call: executes and caches result
148
+ * - Second identical call: returns cached result, NOT counted toward loop
149
+ * - Only genuinely NEW (non-cached) repetitive calls trigger loop detection
150
+ *
151
+ * Direct execution tools (bash/edit) are also exempt to avoid short-circuiting
152
+ * legitimate repeated user commands.
153
+ *
154
+ * This catches patterns like:
155
+ * - "git status -sb" called 3 times with DIFFERENT outputs (cache miss each time)
156
+ * - Repeated file reads where file content changed
157
+ * - Repeated searches with same pattern but new results
158
+ */
159
+ private checkBehavioralLoop;
160
+ /**
161
+ * Reset behavioral loop tracking (called when user provides new input or task completes)
162
+ */
163
+ private resetBehavioralLoopTracking;
164
+ /**
165
+ * Create a stable cache key for a tool call based on name and arguments
166
+ */
167
+ private getToolCacheKey;
168
+ /**
169
+ * Only cache tools that are safe to reuse; stateful commands must always execute.
170
+ */
171
+ private isCacheableTool;
172
+ /**
173
+ * Direct execution tools should not trigger behavioral loop short-circuiting.
174
+ */
175
+ private shouldSkipLoopDetection;
176
+ /**
177
+ * Get cached result for a tool call, or null if not cached
178
+ */
179
+ private getCachedToolResult;
180
+ /**
181
+ * Cache a tool result for future identical calls
182
+ */
183
+ private cacheToolResult;
125
184
  getHistory(): ConversationMessage[];
126
185
  loadHistory(history: ConversationMessage[]): void;
127
186
  clearHistory(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}