zora-agent 0.9.4 → 0.9.6

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 (245) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +103 -92
  3. package/dist/cli/audit-commands.d.ts.map +1 -1
  4. package/dist/cli/audit-commands.js +3 -1
  5. package/dist/cli/audit-commands.js.map +1 -1
  6. package/dist/cli/daemon.js +86 -28
  7. package/dist/cli/daemon.js.map +1 -1
  8. package/dist/cli/edit-commands.d.ts.map +1 -1
  9. package/dist/cli/edit-commands.js +3 -1
  10. package/dist/cli/edit-commands.js.map +1 -1
  11. package/dist/cli/hook-commands.d.ts +9 -0
  12. package/dist/cli/hook-commands.d.ts.map +1 -0
  13. package/dist/cli/hook-commands.js +106 -0
  14. package/dist/cli/hook-commands.js.map +1 -0
  15. package/dist/cli/index.js +87 -35
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/cli/init-command.d.ts.map +1 -1
  18. package/dist/cli/init-command.js +108 -9
  19. package/dist/cli/init-command.js.map +1 -1
  20. package/dist/cli/memory-commands.d.ts +1 -1
  21. package/dist/cli/memory-commands.d.ts.map +1 -1
  22. package/dist/cli/memory-commands.js +213 -1
  23. package/dist/cli/memory-commands.js.map +1 -1
  24. package/dist/cli/presets.d.ts.map +1 -1
  25. package/dist/cli/presets.js +2 -1
  26. package/dist/cli/presets.js.map +1 -1
  27. package/dist/cli/skill-commands.d.ts.map +1 -1
  28. package/dist/cli/skill-commands.js +4 -2
  29. package/dist/cli/skill-commands.js.map +1 -1
  30. package/dist/cli/steer-commands.d.ts.map +1 -1
  31. package/dist/cli/steer-commands.js +6 -4
  32. package/dist/cli/steer-commands.js.map +1 -1
  33. package/dist/cli/team-commands.d.ts.map +1 -1
  34. package/dist/cli/team-commands.js +3 -1
  35. package/dist/cli/team-commands.js.map +1 -1
  36. package/dist/config/defaults.d.ts.map +1 -1
  37. package/dist/config/defaults.js +12 -2
  38. package/dist/config/defaults.js.map +1 -1
  39. package/dist/config/loader.d.ts +23 -0
  40. package/dist/config/loader.d.ts.map +1 -1
  41. package/dist/config/loader.js +64 -3
  42. package/dist/config/loader.js.map +1 -1
  43. package/dist/config/policy-loader.d.ts +14 -0
  44. package/dist/config/policy-loader.d.ts.map +1 -1
  45. package/dist/config/policy-loader.js +33 -0
  46. package/dist/config/policy-loader.js.map +1 -1
  47. package/dist/dashboard/frontend/dist/assets/index-BcOGj1EF.css +1 -0
  48. package/dist/dashboard/frontend/dist/assets/index-BtiFO9YN.js +261 -0
  49. package/dist/dashboard/frontend/dist/assets/index-Cfjy5acU.css +1 -0
  50. package/dist/dashboard/frontend/dist/assets/index-D41hcjgc.js +253 -0
  51. package/dist/dashboard/frontend/dist/assets/index-D83BawFd.css +1 -0
  52. package/dist/dashboard/frontend/dist/assets/index-DAODjoxu.css +1 -0
  53. package/dist/dashboard/frontend/dist/assets/index-DB-Eu5oV.js +253 -0
  54. package/dist/dashboard/frontend/dist/assets/index-W0VVEDu6.js +253 -0
  55. package/dist/dashboard/frontend/dist/index.html +17 -0
  56. package/dist/dashboard/server.d.ts +19 -2
  57. package/dist/dashboard/server.d.ts.map +1 -1
  58. package/dist/dashboard/server.js +121 -20
  59. package/dist/dashboard/server.js.map +1 -1
  60. package/dist/hooks/hook-runner.d.ts +55 -0
  61. package/dist/hooks/hook-runner.d.ts.map +1 -0
  62. package/dist/hooks/hook-runner.js +120 -0
  63. package/dist/hooks/hook-runner.js.map +1 -0
  64. package/dist/hooks/hook-types.d.ts +82 -0
  65. package/dist/hooks/hook-types.d.ts.map +1 -0
  66. package/dist/hooks/hook-types.js +20 -0
  67. package/dist/hooks/hook-types.js.map +1 -0
  68. package/dist/hooks/index.d.ts +6 -0
  69. package/dist/hooks/index.d.ts.map +1 -0
  70. package/dist/hooks/index.js +6 -0
  71. package/dist/hooks/index.js.map +1 -0
  72. package/dist/memory/context-compressor.d.ts +108 -0
  73. package/dist/memory/context-compressor.d.ts.map +1 -0
  74. package/dist/memory/context-compressor.js +307 -0
  75. package/dist/memory/context-compressor.js.map +1 -0
  76. package/dist/memory/index.d.ts +1 -0
  77. package/dist/memory/index.d.ts.map +1 -1
  78. package/dist/memory/index.js +1 -0
  79. package/dist/memory/index.js.map +1 -1
  80. package/dist/memory/memory-manager.d.ts +88 -4
  81. package/dist/memory/memory-manager.d.ts.map +1 -1
  82. package/dist/memory/memory-manager.js +299 -7
  83. package/dist/memory/memory-manager.js.map +1 -1
  84. package/dist/memory/observation-store.d.ts +75 -0
  85. package/dist/memory/observation-store.d.ts.map +1 -0
  86. package/dist/memory/observation-store.js +162 -0
  87. package/dist/memory/observation-store.js.map +1 -0
  88. package/dist/memory/observer-worker.d.ts +34 -0
  89. package/dist/memory/observer-worker.d.ts.map +1 -0
  90. package/dist/memory/observer-worker.js +161 -0
  91. package/dist/memory/observer-worker.js.map +1 -0
  92. package/dist/memory/reflector-worker.d.ts +40 -0
  93. package/dist/memory/reflector-worker.d.ts.map +1 -0
  94. package/dist/memory/reflector-worker.js +185 -0
  95. package/dist/memory/reflector-worker.js.map +1 -0
  96. package/dist/memory/salience-scorer.d.ts +16 -6
  97. package/dist/memory/salience-scorer.d.ts.map +1 -1
  98. package/dist/memory/salience-scorer.js +42 -22
  99. package/dist/memory/salience-scorer.js.map +1 -1
  100. package/dist/memory/structured-memory.d.ts +36 -1
  101. package/dist/memory/structured-memory.d.ts.map +1 -1
  102. package/dist/memory/structured-memory.js +207 -8
  103. package/dist/memory/structured-memory.js.map +1 -1
  104. package/dist/memory/token-estimator.d.ts +31 -0
  105. package/dist/memory/token-estimator.d.ts.map +1 -0
  106. package/dist/memory/token-estimator.js +77 -0
  107. package/dist/memory/token-estimator.js.map +1 -0
  108. package/dist/memory/validation-pipeline.d.ts +37 -0
  109. package/dist/memory/validation-pipeline.d.ts.map +1 -0
  110. package/dist/memory/validation-pipeline.js +106 -0
  111. package/dist/memory/validation-pipeline.js.map +1 -0
  112. package/dist/orchestrator/auth-monitor.d.ts.map +1 -1
  113. package/dist/orchestrator/auth-monitor.js +3 -1
  114. package/dist/orchestrator/auth-monitor.js.map +1 -1
  115. package/dist/orchestrator/execution-loop.d.ts +23 -0
  116. package/dist/orchestrator/execution-loop.d.ts.map +1 -1
  117. package/dist/orchestrator/execution-loop.js +60 -19
  118. package/dist/orchestrator/execution-loop.js.map +1 -1
  119. package/dist/orchestrator/failover-controller.d.ts +26 -2
  120. package/dist/orchestrator/failover-controller.d.ts.map +1 -1
  121. package/dist/orchestrator/failover-controller.js +143 -23
  122. package/dist/orchestrator/failover-controller.js.map +1 -1
  123. package/dist/orchestrator/orchestrator.d.ts +70 -7
  124. package/dist/orchestrator/orchestrator.d.ts.map +1 -1
  125. package/dist/orchestrator/orchestrator.js +416 -92
  126. package/dist/orchestrator/orchestrator.js.map +1 -1
  127. package/dist/orchestrator/retry-queue.d.ts.map +1 -1
  128. package/dist/orchestrator/retry-queue.js +24 -9
  129. package/dist/orchestrator/retry-queue.js.map +1 -1
  130. package/dist/orchestrator/router.d.ts +16 -1
  131. package/dist/orchestrator/router.d.ts.map +1 -1
  132. package/dist/orchestrator/router.js +79 -20
  133. package/dist/orchestrator/router.js.map +1 -1
  134. package/dist/orchestrator/session-manager.d.ts +26 -1
  135. package/dist/orchestrator/session-manager.d.ts.map +1 -1
  136. package/dist/orchestrator/session-manager.js +88 -4
  137. package/dist/orchestrator/session-manager.js.map +1 -1
  138. package/dist/providers/circuit-breaker.d.ts +78 -0
  139. package/dist/providers/circuit-breaker.d.ts.map +1 -0
  140. package/dist/providers/circuit-breaker.js +129 -0
  141. package/dist/providers/circuit-breaker.js.map +1 -0
  142. package/dist/providers/claude-provider.d.ts +27 -11
  143. package/dist/providers/claude-provider.d.ts.map +1 -1
  144. package/dist/providers/claude-provider.js +161 -46
  145. package/dist/providers/claude-provider.js.map +1 -1
  146. package/dist/providers/gemini-provider.d.ts +9 -1
  147. package/dist/providers/gemini-provider.d.ts.map +1 -1
  148. package/dist/providers/gemini-provider.js +97 -48
  149. package/dist/providers/gemini-provider.js.map +1 -1
  150. package/dist/providers/index.d.ts +1 -0
  151. package/dist/providers/index.d.ts.map +1 -1
  152. package/dist/providers/index.js +1 -0
  153. package/dist/providers/index.js.map +1 -1
  154. package/dist/providers/ollama-provider.d.ts +7 -0
  155. package/dist/providers/ollama-provider.d.ts.map +1 -1
  156. package/dist/providers/ollama-provider.js +89 -18
  157. package/dist/providers/ollama-provider.js.map +1 -1
  158. package/dist/routines/heartbeat.d.ts +10 -2
  159. package/dist/routines/heartbeat.d.ts.map +1 -1
  160. package/dist/routines/heartbeat.js +42 -5
  161. package/dist/routines/heartbeat.js.map +1 -1
  162. package/dist/routines/routine-manager.d.ts.map +1 -1
  163. package/dist/routines/routine-manager.js +22 -15
  164. package/dist/routines/routine-manager.js.map +1 -1
  165. package/dist/security/audit-logger.d.ts.map +1 -1
  166. package/dist/security/audit-logger.js +5 -7
  167. package/dist/security/audit-logger.js.map +1 -1
  168. package/dist/security/policy-engine.d.ts +28 -17
  169. package/dist/security/policy-engine.d.ts.map +1 -1
  170. package/dist/security/policy-engine.js +42 -185
  171. package/dist/security/policy-engine.js.map +1 -1
  172. package/dist/security/policy-serializer.d.ts +19 -0
  173. package/dist/security/policy-serializer.d.ts.map +1 -0
  174. package/dist/security/policy-serializer.js +100 -0
  175. package/dist/security/policy-serializer.js.map +1 -0
  176. package/dist/security/shell-validator.d.ts +42 -0
  177. package/dist/security/shell-validator.d.ts.map +1 -0
  178. package/dist/security/shell-validator.js +231 -0
  179. package/dist/security/shell-validator.js.map +1 -0
  180. package/dist/skills/index.d.ts +1 -0
  181. package/dist/skills/index.d.ts.map +1 -1
  182. package/dist/skills/index.js +1 -0
  183. package/dist/skills/index.js.map +1 -1
  184. package/dist/skills/skill-loader.d.ts +38 -2
  185. package/dist/skills/skill-loader.d.ts.map +1 -1
  186. package/dist/skills/skill-loader.js +83 -2
  187. package/dist/skills/skill-loader.js.map +1 -1
  188. package/dist/skills/subagent-loader.d.ts +66 -0
  189. package/dist/skills/subagent-loader.d.ts.map +1 -0
  190. package/dist/skills/subagent-loader.js +143 -0
  191. package/dist/skills/subagent-loader.js.map +1 -0
  192. package/dist/steering/flag-manager.d.ts +20 -0
  193. package/dist/steering/flag-manager.d.ts.map +1 -1
  194. package/dist/steering/flag-manager.js +94 -11
  195. package/dist/steering/flag-manager.js.map +1 -1
  196. package/dist/steering/steering-manager.d.ts +11 -0
  197. package/dist/steering/steering-manager.d.ts.map +1 -1
  198. package/dist/steering/steering-manager.js +23 -0
  199. package/dist/steering/steering-manager.js.map +1 -1
  200. package/dist/steering/telegram-gateway.d.ts +4 -1
  201. package/dist/steering/telegram-gateway.d.ts.map +1 -1
  202. package/dist/steering/telegram-gateway.js +49 -10
  203. package/dist/steering/telegram-gateway.js.map +1 -1
  204. package/dist/teams/bridge-watchdog.d.ts.map +1 -1
  205. package/dist/teams/bridge-watchdog.js +5 -3
  206. package/dist/teams/bridge-watchdog.js.map +1 -1
  207. package/dist/teams/gemini-bridge.d.ts.map +1 -1
  208. package/dist/teams/gemini-bridge.js +9 -4
  209. package/dist/teams/gemini-bridge.js.map +1 -1
  210. package/dist/tools/index.d.ts +2 -0
  211. package/dist/tools/index.d.ts.map +1 -1
  212. package/dist/tools/index.js +2 -0
  213. package/dist/tools/index.js.map +1 -1
  214. package/dist/tools/memory-tools.d.ts +16 -0
  215. package/dist/tools/memory-tools.d.ts.map +1 -0
  216. package/dist/tools/memory-tools.js +207 -0
  217. package/dist/tools/memory-tools.js.map +1 -0
  218. package/dist/tools/notifications.d.ts.map +1 -1
  219. package/dist/tools/notifications.js +3 -1
  220. package/dist/tools/notifications.js.map +1 -1
  221. package/dist/tools/tool-factory.d.ts +36 -0
  222. package/dist/tools/tool-factory.d.ts.map +1 -0
  223. package/dist/tools/tool-factory.js +55 -0
  224. package/dist/tools/tool-factory.js.map +1 -0
  225. package/dist/types.d.ts +205 -1
  226. package/dist/types.d.ts.map +1 -1
  227. package/dist/types.js +47 -1
  228. package/dist/types.js.map +1 -1
  229. package/dist/utils/errors.d.ts +21 -0
  230. package/dist/utils/errors.d.ts.map +1 -0
  231. package/dist/utils/errors.js +29 -0
  232. package/dist/utils/errors.js.map +1 -0
  233. package/dist/utils/event-filter.d.ts +25 -0
  234. package/dist/utils/event-filter.d.ts.map +1 -0
  235. package/dist/utils/event-filter.js +61 -0
  236. package/dist/utils/event-filter.js.map +1 -0
  237. package/dist/utils/logger.d.ts +33 -36
  238. package/dist/utils/logger.d.ts.map +1 -1
  239. package/dist/utils/logger.js +60 -130
  240. package/dist/utils/logger.js.map +1 -1
  241. package/dist/utils/validate-job-id.d.ts +6 -0
  242. package/dist/utils/validate-job-id.d.ts.map +1 -0
  243. package/dist/utils/validate-job-id.js +10 -0
  244. package/dist/utils/validate-job-id.js.map +1 -0
  245. package/package.json +12 -3
@@ -7,6 +7,10 @@
7
7
  * - Output format: Handles text, markdown-fenced JSON, and XML blocks
8
8
  */
9
9
  import { spawn } from 'node:child_process';
10
+ import { isTextEvent, isToolCallEvent, isToolResultEvent, isSteeringEvent } from '../types.js';
11
+ import { createLogger } from '../utils/logger.js';
12
+ import { CircuitBreaker } from './circuit-breaker.js';
13
+ const log = createLogger('gemini-provider');
10
14
  export class GeminiProvider {
11
15
  name;
12
16
  rank;
@@ -15,9 +19,10 @@ export class GeminiProvider {
15
19
  _config;
16
20
  _cliPath;
17
21
  _lastAuthStatus = null;
18
- _lastQuotaStatus = null;
19
22
  _requestCount = 0;
20
23
  _lastRequestAt = null;
24
+ /** Circuit breaker for failure tracking (PROV-02) */
25
+ _circuitBreaker;
21
26
  /** Active child processes indexed by jobId for abort support */
22
27
  _activeProcesses = new Map();
23
28
  constructor(options) {
@@ -28,10 +33,14 @@ export class GeminiProvider {
28
33
  this.costTier = config.cost_tier;
29
34
  this._config = config;
30
35
  this._cliPath = options.cliPath ?? config.cli_path ?? 'gemini';
36
+ this._circuitBreaker = new CircuitBreaker();
31
37
  }
32
38
  async isAvailable() {
33
39
  if (!this._config.enabled)
34
40
  return false;
41
+ // PROV-02: Check circuit breaker before auth
42
+ if (this._circuitBreaker.isOpen())
43
+ return false;
35
44
  const auth = await this.checkAuth();
36
45
  return auth.valid;
37
46
  }
@@ -94,11 +103,14 @@ export class GeminiProvider {
94
103
  });
95
104
  }
96
105
  async getQuotaStatus() {
97
- if (this._lastQuotaStatus)
98
- return this._lastQuotaStatus;
99
- const status = { isExhausted: false, remainingRequests: null, cooldownUntil: null, healthScore: 1.0 };
100
- this._lastQuotaStatus = status;
101
- return status;
106
+ // PROV-01: Derive health score from circuit breaker state
107
+ const cbState = this._circuitBreaker.getState();
108
+ return {
109
+ isExhausted: cbState === 'OPEN',
110
+ remainingRequests: null,
111
+ cooldownUntil: null,
112
+ healthScore: this._circuitBreaker.healthScore,
113
+ };
102
114
  }
103
115
  getUsage() {
104
116
  return {
@@ -110,6 +122,19 @@ export class GeminiProvider {
110
122
  };
111
123
  }
112
124
  async *execute(task) {
125
+ // PROV-02: Reject immediately if circuit breaker is OPEN
126
+ if (this._circuitBreaker.isOpen()) {
127
+ yield {
128
+ type: 'error',
129
+ timestamp: new Date(),
130
+ source: this.name,
131
+ content: {
132
+ message: `Circuit breaker is OPEN for provider ${this.name} — too many recent failures`,
133
+ isCircuitOpen: true,
134
+ },
135
+ };
136
+ return;
137
+ }
113
138
  this._requestCount++;
114
139
  this._lastRequestAt = new Date();
115
140
  const prompt = this._buildPrompt(task);
@@ -120,6 +145,7 @@ export class GeminiProvider {
120
145
  const child = spawn(this._cliPath, args);
121
146
  this._activeProcesses.set(task.jobId, child);
122
147
  let buffer = '';
148
+ let bufferTruncated = false;
123
149
  // Track spawn/execution errors
124
150
  let spawnError = null;
125
151
  child.on('error', (err) => {
@@ -131,9 +157,11 @@ export class GeminiProvider {
131
157
  });
132
158
  // Safe stream access (Spec §4.2: subprocess wrapper resilience)
133
159
  if (!child.stdout || !child.stderr) {
160
+ this._circuitBreaker.recordFailure();
134
161
  yield {
135
162
  type: 'error',
136
163
  timestamp: new Date(),
164
+ source: this.name,
137
165
  content: { message: `Failed to open stdio streams for ${this._cliPath}` },
138
166
  };
139
167
  this._activeProcesses.delete(task.jobId);
@@ -145,10 +173,20 @@ export class GeminiProvider {
145
173
  for await (const line of stdoutLines) {
146
174
  if (spawnError)
147
175
  throw spawnError;
148
- buffer += line + '\n';
176
+ // OPS-04: Cap the tool-call parsing buffer at MAX_BUFFER_SIZE
177
+ if (!bufferTruncated) {
178
+ if (buffer.length + line.length + 1 > GeminiProvider.MAX_BUFFER_SIZE) {
179
+ bufferTruncated = true;
180
+ log.warn({ maxBytes: GeminiProvider.MAX_BUFFER_SIZE }, 'Tool-call parsing buffer exceeded limit; further output will not be parsed for tool calls');
181
+ }
182
+ else {
183
+ buffer += line + '\n';
184
+ }
185
+ }
149
186
  yield {
150
187
  type: 'text',
151
188
  timestamp: new Date(),
189
+ source: this.name,
152
190
  content: { text: line },
153
191
  };
154
192
  }
@@ -158,42 +196,44 @@ export class GeminiProvider {
158
196
  const stderr = await stderrContent;
159
197
  if (code !== 0) {
160
198
  const errorMessage = stderr || `Gemini CLI exited with code ${code}`;
161
- const isQuota = errorMessage.toLowerCase().includes('quota') || errorMessage.includes('429');
162
- if (isQuota) {
163
- this._lastQuotaStatus = {
164
- isExhausted: true,
165
- remainingRequests: 0,
166
- cooldownUntil: new Date(Date.now() + 60000),
167
- healthScore: 0
168
- };
169
- }
199
+ const isQuotaError = errorMessage.toLowerCase().includes('quota') || errorMessage.includes('429');
200
+ // PROV-02: Record failure on the circuit breaker
201
+ this._circuitBreaker.recordFailure();
170
202
  yield {
171
203
  type: 'error',
172
204
  timestamp: new Date(),
173
- content: { message: errorMessage, code, isQuota },
205
+ source: this.name,
206
+ content: { message: errorMessage, code, isQuotaError },
174
207
  };
175
208
  return;
176
209
  }
210
+ // PROV-02: Record success on the circuit breaker
211
+ this._circuitBreaker.recordSuccess();
177
212
  // Final parsing for tool calls
178
213
  const toolCalls = this._parseToolCalls(buffer);
179
214
  for (const toolCall of toolCalls) {
180
215
  yield {
181
216
  type: 'tool_call',
182
217
  timestamp: new Date(),
218
+ source: this.name,
183
219
  content: toolCall,
184
220
  };
185
221
  }
186
222
  yield {
187
223
  type: 'done',
188
224
  timestamp: new Date(),
225
+ source: this.name,
189
226
  content: { text: 'Gemini task complete' },
190
227
  };
191
228
  }
192
229
  catch (err) {
230
+ // PROV-02: Record failure on the circuit breaker
231
+ this._circuitBreaker.recordFailure();
193
232
  const msg = err instanceof Error ? err.message : String(err);
194
233
  yield {
195
234
  type: 'error',
196
235
  timestamp: new Date(),
236
+ source: this.name,
197
237
  content: { message: `Gemini execution failed: ${msg}` },
198
238
  };
199
239
  }
@@ -220,27 +260,24 @@ export class GeminiProvider {
220
260
  if (task.history.length > 0) {
221
261
  parts.push('<history>');
222
262
  for (const event of task.history) {
223
- if (event.type === 'text') {
263
+ if (isTextEvent(event)) {
224
264
  parts.push(' <assistant>');
225
265
  parts.push(event.content.text);
226
266
  parts.push(' </assistant>');
227
267
  }
228
- else if (event.type === 'tool_call') {
229
- const c = event.content;
230
- parts.push(` <tool_call name="${c.tool}" id="${c.toolCallId}">`);
231
- parts.push(JSON.stringify(c.arguments));
268
+ else if (isToolCallEvent(event)) {
269
+ parts.push(` <tool_call name="${event.content.tool}" id="${event.content.toolCallId}">`);
270
+ parts.push(JSON.stringify(event.content.arguments));
232
271
  parts.push(' </tool_call>');
233
272
  }
234
- else if (event.type === 'tool_result') {
235
- const c = event.content;
236
- parts.push(` <tool_result id="${c.toolCallId}">`);
237
- parts.push(JSON.stringify(c.result));
273
+ else if (isToolResultEvent(event)) {
274
+ parts.push(` <tool_result id="${event.content.toolCallId}">`);
275
+ parts.push(JSON.stringify(event.content.result));
238
276
  parts.push(' </tool_result>');
239
277
  }
240
- else if (event.type === 'steering') {
241
- const c = event.content;
278
+ else if (isSteeringEvent(event)) {
242
279
  parts.push(' <human_steering>');
243
- parts.push(c.text);
280
+ parts.push(event.content.text);
244
281
  parts.push(' </human_steering>');
245
282
  }
246
283
  }
@@ -256,21 +293,24 @@ export class GeminiProvider {
256
293
  let match;
257
294
  while ((match = xmlRegex.exec(text)) !== null) {
258
295
  try {
259
- toolCalls.push({
260
- toolCallId: `call_${Math.random().toString(36).slice(2, 9)}`,
261
- tool: match[1],
262
- arguments: JSON.parse(match[2].trim()),
263
- });
296
+ const toolName = match[1] ?? '';
297
+ const rawArgs = match[2]?.trim() ?? '';
298
+ const args = JSON.parse(rawArgs);
299
+ if (args && typeof args === 'object' && !Array.isArray(args)) {
300
+ toolCalls.push({
301
+ toolCallId: `call_${Math.random().toString(36).slice(2, 9)}`,
302
+ tool: toolName,
303
+ arguments: args,
304
+ });
305
+ }
306
+ else {
307
+ throw new Error('Tool arguments must be a non-null object');
308
+ }
264
309
  }
265
310
  catch (e) {
266
311
  // ERR-02: Log malformed XML tool calls with full context for debugging
267
312
  const error = e instanceof Error ? e : new Error(String(e));
268
- console.error('[GeminiProvider] Failed to parse XML tool call:', {
269
- tool: match[1],
270
- rawContent: match[2]?.trim().slice(0, 200), // First 200 chars for context
271
- error: error.message,
272
- stack: error.stack,
273
- });
313
+ log.error({ err: error, tool: match[1], rawContent: match[2]?.trim().slice(0, 200) }, 'Failed to parse XML tool call');
274
314
  }
275
315
  }
276
316
  // 2. Markdown JSON pattern if no XML
@@ -279,7 +319,9 @@ export class GeminiProvider {
279
319
  while ((match = jsonRegex.exec(text)) !== null) {
280
320
  try {
281
321
  const data = JSON.parse(match[1]);
282
- if (data.tool && data.arguments) {
322
+ if (data && typeof data === 'object' && !Array.isArray(data) &&
323
+ typeof data.tool === 'string' &&
324
+ data.arguments && typeof data.arguments === 'object' && !Array.isArray(data.arguments)) {
283
325
  toolCalls.push({
284
326
  toolCallId: `call_${Math.random().toString(36).slice(2, 9)}`,
285
327
  tool: data.tool,
@@ -288,13 +330,9 @@ export class GeminiProvider {
288
330
  }
289
331
  }
290
332
  catch (e) {
291
- // ERR-02: Log malformed JSON tool calls with full context for debugging
333
+ // ERR-02/TYPE-05: Log malformed JSON tool calls with full context for debugging
292
334
  const error = e instanceof Error ? e : new Error(String(e));
293
- console.error('[GeminiProvider] Failed to parse JSON tool call:', {
294
- rawContent: match[1]?.slice(0, 200), // First 200 chars for context
295
- error: error.message,
296
- stack: error.stack,
297
- });
335
+ log.error({ err: error, rawContent: match[1]?.slice(0, 200) }, 'Failed to parse JSON tool call');
298
336
  }
299
337
  }
300
338
  }
@@ -310,7 +348,7 @@ export class GeminiProvider {
310
348
  const str = chunk.toString();
311
349
  totalBytes += str.length;
312
350
  if (totalBytes > GeminiProvider.MAX_BUFFER_SIZE) {
313
- console.warn(`[GeminiProvider] Output exceeded ${GeminiProvider.MAX_BUFFER_SIZE} bytes, truncating stream.`);
351
+ log.warn({ maxBytes: GeminiProvider.MAX_BUFFER_SIZE }, 'Output exceeded maximum buffer size, truncating stream');
314
352
  yield '[Output truncated: exceeded maximum buffer size]';
315
353
  truncated = true;
316
354
  break;
@@ -332,5 +370,16 @@ export class GeminiProvider {
332
370
  }
333
371
  return buffer.trim();
334
372
  }
373
+ /** Expose circuit breaker for external inspection / testing */
374
+ get circuitBreaker() {
375
+ return this._circuitBreaker;
376
+ }
377
+ /**
378
+ * Reset cached status (used after recovery).
379
+ */
380
+ resetStatus() {
381
+ this._lastAuthStatus = null;
382
+ this._circuitBreaker.reset();
383
+ }
335
384
  }
336
385
  //# sourceMappingURL=gemini-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-provider.js","sourceRoot":"","sources":["../../src/providers/gemini-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini-provider.js","sourceRoot":"","sources":["../../src/providers/gemini-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAY3C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;AAO5C,MAAM,OAAO,cAAc;IAChB,IAAI,CAAS;IACb,IAAI,CAAS;IACb,YAAY,CAAuB;IACnC,QAAQ,CAAW;IAEX,OAAO,CAAiB;IACxB,QAAQ,CAAS;IAC1B,eAAe,GAAsB,IAAI,CAAC;IAC1C,aAAa,GAAG,CAAC,CAAC;IAClB,cAAc,GAAgB,IAAI,CAAC;IAE3C,qDAAqD;IACpC,eAAe,CAAiB;IAEjD,gEAAgE;IAC/C,gBAAgB,GAA2D,IAAI,GAAG,EAAE,CAAC;IAEtG,YAAY,OAA8B;QACxC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;QAEjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC;QAC/D,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QACxC,6CAA6C;QAC7C,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;YAAE,OAAO,KAAK,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK;YAAE,OAAO,IAAI,CAAC,eAAe,CAAC;QAE7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,4DAA4D;YAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;YACvD,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;oBACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC7B,CAAC,CAAC,CAAC;YACL,CAAC;YAED,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACrB,IAAI,QAAQ;oBAAE,OAAO;gBACrB,sDAAsD;gBACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;gBACrD,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;oBACxB,IAAI,QAAQ;wBAAE,OAAO;oBACrB,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;oBACnG,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;oBAC9B,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC5B,IAAI,QAAQ;wBAAE,OAAO;oBACrB,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;oBACzB,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,KAAK,EAAE,CAAC;oBAC7F,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;oBAC9B,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,QAAQ;oBAAE,OAAO;gBACrB,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;gBACzB,MAAM,eAAe,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;gBACrF,MAAM,MAAM,GAAG;oBACb,KAAK,EAAE,eAAe;oBACtB,SAAS,EAAE,IAAI;oBACf,cAAc,EAAE,IAAI;oBACpB,mBAAmB,EAAE,CAAC,eAAe;iBACtC,CAAC;gBACF,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;gBAC9B,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,0DAA0D;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;QAChD,OAAO;YACL,WAAW,EAAE,OAAO,KAAK,MAAM;YAC/B,iBAAiB,EAAE,IAAI;YACvB,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW;SAC9C,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO;YACL,YAAY,EAAE,CAAC,EAAE,sCAAsC;YACvD,gBAAgB,EAAE,CAAC;YACnB,iBAAiB,EAAE,CAAC;YACpB,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,aAAa,EAAE,IAAI,CAAC,cAAc;SACnC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,CAAC,OAAO,CAAC,IAAiB;QAC9B,yDAAyD;QACzD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YAClC,MAAM;gBACJ,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,OAAO,EAAE;oBACP,OAAO,EAAE,wCAAwC,IAAI,CAAC,IAAI,6BAA6B;oBACvF,aAAa,EAAE,IAAI;iBACpB;aACF,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE7C,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,eAAe,GAAG,KAAK,CAAC;QAE5B,+BAA+B;QAC/B,IAAI,UAAU,GAAiB,IAAI,CAAC;QACpC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,UAAU,GAAG,GAAG,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,MAAM,WAAW,GAAG,IAAI,OAAO,CAA0B,CAAC,OAAO,EAAE,EAAE;YACnE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,gEAAgE;QAChE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;YACrC,MAAM;gBACJ,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,OAAO,EAAE,EAAE,OAAO,EAAE,oCAAoC,IAAI,CAAC,QAAQ,EAAE,EAAE;aAC1E,CAAC;YACF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAExD,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBACrC,IAAI,UAAU;oBAAE,MAAM,UAAU,CAAC;gBACjC,8DAA8D;gBAC9D,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,eAAe,EAAE,CAAC;wBACrE,eAAe,GAAG,IAAI,CAAC;wBACvB,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,eAAe,EAAE,EAAE,2FAA2F,CAAC,CAAC;oBACtJ,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC;oBACxB,CAAC;gBACH,CAAC;gBACD,MAAM;oBACJ,IAAI,EAAE,MAAM;oBACZ,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,MAAM,EAAE,IAAI,CAAC,IAAI;oBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;iBACxB,CAAC;YACJ,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC;YACnC,IAAI,UAAU;gBAAE,MAAM,UAAU,CAAC;YAEjC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;YAEnC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,YAAY,GAAG,MAAM,IAAI,+BAA+B,IAAI,EAAE,CAAC;gBACrE,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAElG,iDAAiD;gBACjD,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;gBAErC,MAAM;oBACJ,IAAI,EAAE,OAAO;oBACb,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,MAAM,EAAE,IAAI,CAAC,IAAI;oBACjB,OAAO,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE;iBACvD,CAAC;gBACF,OAAO;YACT,CAAC;YAED,iDAAiD;YACjD,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;YAErC,+BAA+B;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC/C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM;oBACJ,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,MAAM,EAAE,IAAI,CAAC,IAAI;oBACjB,OAAO,EAAE,QAAQ;iBAClB,CAAC;YACJ,CAAC;YAED,MAAM;gBACJ,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE;aAC1C,CAAC;QAEJ,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,iDAAiD;YACjD,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;YAErC,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM;gBACJ,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,OAAO,EAAE,EAAE,OAAO,EAAE,4BAA4B,GAAG,EAAE,EAAE;aACxD,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAa;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,IAAiB;QACpC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,YAAY;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC/B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC/B,CAAC;qBAAM,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClC,KAAK,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;oBAC1F,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;oBACpD,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC/B,CAAC;qBAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpC,KAAK,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;oBAC/D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;oBACjD,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACjC,CAAC;qBAAM,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;oBACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC/B,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAEO,eAAe,CAAC,IAAY;QAClC,MAAM,SAAS,GAAoF,EAAE,CAAC;QAEtG,iBAAiB;QACjB,MAAM,QAAQ,GAAG,sDAAsD,CAAC;QACxE,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7D,SAAS,CAAC,IAAI,CAAC;wBACb,UAAU,EAAE,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;wBAC5D,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,IAA+B;qBAC3C,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,uEAAuE;gBACvE,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,+BAA+B,CAAC,CAAC;YACzH,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,6BAA6B,CAAC;YAChD,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/C,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;oBACnC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;wBACxD,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;wBAC7B,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC3F,SAAS,CAAC,IAAI,CAAC;4BACb,UAAU,EAAE,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;4BAC5D,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,SAAS,EAAE,IAAI,CAAC,SAAoC;yBACrD,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,gFAAgF;oBAChF,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5D,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,gCAAgC,CAAC,CAAC;gBACnG,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,0EAA0E;IAClE,MAAM,CAAU,eAAe,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IAEnD,KAAK,CAAC,CAAE,cAAc,CAAC,MAA6B;QAC1D,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7B,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC;YACzB,IAAI,UAAU,GAAG,cAAc,CAAC,eAAe,EAAE,CAAC;gBAChD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,eAAe,EAAE,EAAE,wDAAwD,CAAC,CAAC;gBACjH,MAAM,kDAAkD,CAAC;gBACzD,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,CAAC;YACD,MAAM,IAAI,GAAG,CAAC;YACd,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,IAAI,CAAC;YACb,CAAC;QACH,CAAC;QACD,IAAI,MAAM,IAAI,CAAC,SAAS;YAAE,MAAM,MAAM,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,MAA6B;QACxD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,+DAA+D;IAC/D,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC"}
@@ -4,6 +4,7 @@
4
4
  * Re-exports all provider implementations: Claude, Gemini, and Ollama.
5
5
  * Future providers (OpenAI, custom) will be added here.
6
6
  */
7
+ export { CircuitBreaker, type CircuitBreakerOptions, type CircuitState, } from './circuit-breaker.js';
7
8
  export { ClaudeProvider, type ClaudeProviderOptions, type QueryFn, type SDKQuery, type SDKMessage, type SDKAssistantMessage, type SDKResultMessage, type SDKSystemMessage, type SDKUserMessage, } from './claude-provider.js';
8
9
  export { GeminiProvider, type GeminiProviderOptions, } from './gemini-provider.js';
9
10
  export { OllamaProvider, type OllamaProviderOptions, } from './ollama-provider.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,YAAY,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC"}
@@ -4,6 +4,7 @@
4
4
  * Re-exports all provider implementations: Claude, Gemini, and Ollama.
5
5
  * Future providers (OpenAI, custom) will be added here.
6
6
  */
7
+ export { CircuitBreaker, } from './circuit-breaker.js';
7
8
  export { ClaudeProvider, } from './claude-provider.js';
8
9
  export { GeminiProvider, } from './gemini-provider.js';
9
10
  export { OllamaProvider, } from './ollama-provider.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,GASf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,GAEf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,GAEf,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,GASf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,GAEf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,GAEf,MAAM,sBAAsB,CAAC"}
@@ -11,6 +11,7 @@
11
11
  * DeepSeek, Phi, CodeLlama, etc.
12
12
  */
13
13
  import type { LLMProvider, AuthStatus, QuotaStatus, ProviderUsage, AgentEvent, TaskContext, ProviderCapability, CostTier, ProviderConfig } from '../types.js';
14
+ import { CircuitBreaker } from './circuit-breaker.js';
14
15
  export interface OllamaProviderOptions {
15
16
  config: ProviderConfig;
16
17
  /** Base URL for the Ollama API. Defaults to config.endpoint or http://localhost:11434 */
@@ -26,7 +27,11 @@ export declare class OllamaProvider implements LLMProvider {
26
27
  private readonly _model;
27
28
  /** Track active requests by jobId for abort support */
28
29
  private readonly _activeRequests;
30
+ /** Circuit breaker for failure tracking (PROV-02) */
31
+ private readonly _circuitBreaker;
29
32
  private _lastAuthStatus;
33
+ private _requestCount;
34
+ private _lastRequestAt;
30
35
  constructor(options: OllamaProviderOptions);
31
36
  isAvailable(): Promise<boolean>;
32
37
  /**
@@ -52,6 +57,8 @@ export declare class OllamaProvider implements LLMProvider {
52
57
  * Ollama sends NDJSON (one JSON object per line).
53
58
  */
54
59
  private _streamLines;
60
+ /** Expose circuit breaker for external inspection / testing */
61
+ get circuitBreaker(): CircuitBreaker;
55
62
  /**
56
63
  * Reset cached status (used after recovery).
57
64
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../src/providers/ollama-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EAEV,WAAW,EACX,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,cAAc,CAAC;IACvB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,kBAAkB,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,uDAAuD;IACvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;IAE3E,OAAO,CAAC,eAAe,CAA2B;gBAEtC,OAAO,EAAE,qBAAqB;IAYpC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAMrC;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAiChC,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAUrC,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC;IAuH7D,QAAQ,IAAI,aAAa;IAUnB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzC;;OAEG;IACH,OAAO,CAAC,cAAc;IAgCtB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAwBvB;;;OAGG;YACY,YAAY;IAmC3B;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB,IAAI,cAAc,IAAI,MAAM,CAE3B;CACF"}
1
+ {"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../src/providers/ollama-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EAEV,WAAW,EACX,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACf,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,cAAc,CAAC;IACvB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,kBAAkB,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,uDAAuD;IACvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;IAE3E,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAEjD,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAqB;gBAE/B,OAAO,EAAE,qBAAqB;IAapC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQrC;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAiChC,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAYrC,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC;IA0K7D,QAAQ,IAAI,aAAa;IAUnB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzC;;OAEG;IACH,OAAO,CAAC,cAAc;IAgCtB;;;OAGG;IACH,OAAO,CAAC,eAAe;IA4BvB;;;OAGG;YACY,YAAY;IAmC3B,+DAA+D;IAC/D,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED;;OAEG;IACH,WAAW,IAAI,IAAI;IAKnB,IAAI,cAAc,IAAI,MAAM,CAE3B;CACF"}