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
@@ -0,0 +1,78 @@
1
+ /**
2
+ * CircuitBreaker — protects providers from repeated failures.
3
+ *
4
+ * States:
5
+ * CLOSED — normal operation, requests pass through.
6
+ * OPEN — too many failures, requests are rejected immediately.
7
+ * HALF_OPEN — cooldown expired, one test request is allowed through.
8
+ *
9
+ * Transitions:
10
+ * CLOSED → OPEN: After `failureThreshold` failures within `failureWindow` ms.
11
+ * OPEN → HALF_OPEN: After `cooldownMs` has elapsed since opening.
12
+ * HALF_OPEN → CLOSED: On the first success.
13
+ * HALF_OPEN → OPEN: On the first failure (resets cooldown timer).
14
+ *
15
+ * PROV-02: No external dependencies. Standalone class.
16
+ */
17
+ export type CircuitState = 'CLOSED' | 'OPEN' | 'HALF_OPEN';
18
+ export interface CircuitBreakerOptions {
19
+ /** Number of failures within the window to trip the circuit. Default: 3 */
20
+ failureThreshold?: number;
21
+ /** Time window (ms) in which failures are counted. Default: 60_000 (60s) */
22
+ failureWindowMs?: number;
23
+ /** Time (ms) to wait in OPEN state before transitioning to HALF_OPEN. Default: 30_000 (30s) */
24
+ cooldownMs?: number;
25
+ }
26
+ export declare class CircuitBreaker {
27
+ private _state;
28
+ private readonly _failureThreshold;
29
+ private readonly _failureWindowMs;
30
+ private readonly _cooldownMs;
31
+ /** Timestamps of recent failures (within the window) */
32
+ private _failureTimestamps;
33
+ /** When the circuit was last opened (used for cooldown calculation) */
34
+ private _openedAt;
35
+ /** Total counters for observability */
36
+ private _totalSuccesses;
37
+ private _totalFailures;
38
+ constructor(options?: CircuitBreakerOptions);
39
+ /**
40
+ * Returns the current effective state.
41
+ * Automatically transitions OPEN → HALF_OPEN if cooldown has elapsed.
42
+ */
43
+ getState(): CircuitState;
44
+ /**
45
+ * Returns true if the circuit is OPEN (requests should be rejected).
46
+ * Returns false for CLOSED and HALF_OPEN (requests may proceed).
47
+ */
48
+ isOpen(): boolean;
49
+ /**
50
+ * Record a successful request.
51
+ * In HALF_OPEN state, transitions back to CLOSED.
52
+ */
53
+ recordSuccess(): void;
54
+ /**
55
+ * Record a failed request.
56
+ * In CLOSED state, may transition to OPEN if threshold is reached.
57
+ * In HALF_OPEN state, transitions back to OPEN immediately.
58
+ */
59
+ recordFailure(): void;
60
+ /**
61
+ * Manually reset the circuit breaker to CLOSED state.
62
+ */
63
+ reset(): void;
64
+ /**
65
+ * Returns a health score derived from circuit state:
66
+ * CLOSED = 1.0
67
+ * HALF_OPEN = 0.5
68
+ * OPEN = 0.0
69
+ */
70
+ get healthScore(): number;
71
+ /** Total successful requests recorded */
72
+ get totalSuccesses(): number;
73
+ /** Total failed requests recorded */
74
+ get totalFailures(): number;
75
+ private _trip;
76
+ private _cooldownElapsed;
77
+ }
78
+ //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/providers/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,qBAAqB;IACpC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+FAA+F;IAC/F,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,wDAAwD;IACxD,OAAO,CAAC,kBAAkB,CAAgB;IAE1C,uEAAuE;IACvE,OAAO,CAAC,SAAS,CAAa;IAE9B,uCAAuC;IACvC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,cAAc,CAAK;gBAEf,OAAO,GAAE,qBAA0B;IAM/C;;;OAGG;IACH,QAAQ,IAAI,YAAY;IAOxB;;;OAGG;IACH,MAAM,IAAI,OAAO;IAIjB;;;OAGG;IACH,aAAa,IAAI,IAAI;IASrB;;;;OAIG;IACH,aAAa,IAAI,IAAI;IAwBrB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;;;OAKG;IACH,IAAI,WAAW,IAAI,MAAM,CAUxB;IAED,yCAAyC;IACzC,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,qCAAqC;IACrC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAID,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,gBAAgB;CAGzB"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * CircuitBreaker — protects providers from repeated failures.
3
+ *
4
+ * States:
5
+ * CLOSED — normal operation, requests pass through.
6
+ * OPEN — too many failures, requests are rejected immediately.
7
+ * HALF_OPEN — cooldown expired, one test request is allowed through.
8
+ *
9
+ * Transitions:
10
+ * CLOSED → OPEN: After `failureThreshold` failures within `failureWindow` ms.
11
+ * OPEN → HALF_OPEN: After `cooldownMs` has elapsed since opening.
12
+ * HALF_OPEN → CLOSED: On the first success.
13
+ * HALF_OPEN → OPEN: On the first failure (resets cooldown timer).
14
+ *
15
+ * PROV-02: No external dependencies. Standalone class.
16
+ */
17
+ export class CircuitBreaker {
18
+ _state = 'CLOSED';
19
+ _failureThreshold;
20
+ _failureWindowMs;
21
+ _cooldownMs;
22
+ /** Timestamps of recent failures (within the window) */
23
+ _failureTimestamps = [];
24
+ /** When the circuit was last opened (used for cooldown calculation) */
25
+ _openedAt = 0;
26
+ /** Total counters for observability */
27
+ _totalSuccesses = 0;
28
+ _totalFailures = 0;
29
+ constructor(options = {}) {
30
+ this._failureThreshold = options.failureThreshold ?? 3;
31
+ this._failureWindowMs = options.failureWindowMs ?? 60_000;
32
+ this._cooldownMs = options.cooldownMs ?? 30_000;
33
+ }
34
+ /**
35
+ * Returns the current effective state.
36
+ * Automatically transitions OPEN → HALF_OPEN if cooldown has elapsed.
37
+ */
38
+ getState() {
39
+ if (this._state === 'OPEN' && this._cooldownElapsed()) {
40
+ this._state = 'HALF_OPEN';
41
+ }
42
+ return this._state;
43
+ }
44
+ /**
45
+ * Returns true if the circuit is OPEN (requests should be rejected).
46
+ * Returns false for CLOSED and HALF_OPEN (requests may proceed).
47
+ */
48
+ isOpen() {
49
+ return this.getState() === 'OPEN';
50
+ }
51
+ /**
52
+ * Record a successful request.
53
+ * In HALF_OPEN state, transitions back to CLOSED.
54
+ */
55
+ recordSuccess() {
56
+ this._totalSuccesses++;
57
+ const state = this.getState();
58
+ if (state === 'HALF_OPEN') {
59
+ this._state = 'CLOSED';
60
+ this._failureTimestamps = [];
61
+ }
62
+ }
63
+ /**
64
+ * Record a failed request.
65
+ * In CLOSED state, may transition to OPEN if threshold is reached.
66
+ * In HALF_OPEN state, transitions back to OPEN immediately.
67
+ */
68
+ recordFailure() {
69
+ this._totalFailures++;
70
+ const state = this.getState();
71
+ if (state === 'HALF_OPEN') {
72
+ this._trip();
73
+ return;
74
+ }
75
+ if (state === 'CLOSED') {
76
+ const now = Date.now();
77
+ this._failureTimestamps.push(now);
78
+ // Prune failures outside the window
79
+ const windowStart = now - this._failureWindowMs;
80
+ this._failureTimestamps = this._failureTimestamps.filter((t) => t >= windowStart);
81
+ if (this._failureTimestamps.length >= this._failureThreshold) {
82
+ this._trip();
83
+ }
84
+ }
85
+ // If already OPEN, nothing changes (cooldown timer keeps running)
86
+ }
87
+ /**
88
+ * Manually reset the circuit breaker to CLOSED state.
89
+ */
90
+ reset() {
91
+ this._state = 'CLOSED';
92
+ this._failureTimestamps = [];
93
+ this._openedAt = 0;
94
+ }
95
+ /**
96
+ * Returns a health score derived from circuit state:
97
+ * CLOSED = 1.0
98
+ * HALF_OPEN = 0.5
99
+ * OPEN = 0.0
100
+ */
101
+ get healthScore() {
102
+ const state = this.getState();
103
+ switch (state) {
104
+ case 'CLOSED':
105
+ return 1.0;
106
+ case 'HALF_OPEN':
107
+ return 0.5;
108
+ case 'OPEN':
109
+ return 0.0;
110
+ }
111
+ }
112
+ /** Total successful requests recorded */
113
+ get totalSuccesses() {
114
+ return this._totalSuccesses;
115
+ }
116
+ /** Total failed requests recorded */
117
+ get totalFailures() {
118
+ return this._totalFailures;
119
+ }
120
+ // ─── Internal ────────────────────────────────────────────────────
121
+ _trip() {
122
+ this._state = 'OPEN';
123
+ this._openedAt = Date.now();
124
+ }
125
+ _cooldownElapsed() {
126
+ return Date.now() - this._openedAt >= this._cooldownMs;
127
+ }
128
+ }
129
+ //# sourceMappingURL=circuit-breaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/providers/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAaH,MAAM,OAAO,cAAc;IACjB,MAAM,GAAiB,QAAQ,CAAC;IACvB,iBAAiB,CAAS;IAC1B,gBAAgB,CAAS;IACzB,WAAW,CAAS;IAErC,wDAAwD;IAChD,kBAAkB,GAAa,EAAE,CAAC;IAE1C,uEAAuE;IAC/D,SAAS,GAAW,CAAC,CAAC;IAE9B,uCAAuC;IAC/B,eAAe,GAAG,CAAC,CAAC;IACpB,cAAc,GAAG,CAAC,CAAC;IAE3B,YAAY,UAAiC,EAAE;QAC7C,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC;QAC1D,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,aAAa;QACX,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE9B,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAElC,oCAAoC;YACpC,MAAM,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAChD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC;YAElF,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QACD,kEAAkE;IACpE,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,IAAI,WAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,QAAQ;gBACX,OAAO,GAAG,CAAC;YACb,KAAK,WAAW;gBACd,OAAO,GAAG,CAAC;YACb,KAAK,MAAM;gBACT,OAAO,GAAG,CAAC;QACf,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,qCAAqC;IACrC,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,oEAAoE;IAE5D,KAAK;QACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC;IACzD,CAAC;CACF"}
@@ -14,6 +14,7 @@
14
14
  * - Auth/quota checks use accountInfo() probe on the Query object
15
15
  */
16
16
  import type { LLMProvider, AuthStatus, QuotaStatus, ProviderUsage, AgentEvent, TaskContext, ProviderCapability, CostTier, ProviderConfig } from '../types.js';
17
+ import { CircuitBreaker } from './circuit-breaker.js';
17
18
  /**
18
19
  * Minimal subset of SDK message types we consume.
19
20
  * Using structural types rather than importing SDK internals directly
@@ -110,17 +111,17 @@ export declare class ClaudeProvider implements LLMProvider {
110
111
  readonly capabilities: ProviderCapability[];
111
112
  readonly costTier: CostTier;
112
113
  private readonly _config;
113
- private readonly _queryFn;
114
+ private _queryFn;
114
115
  private readonly _cwd;
115
116
  private readonly _systemPrompt;
116
117
  private readonly _allowedTools;
117
118
  private readonly _permissionMode;
118
119
  /** Active queries indexed by jobId for abort support */
119
120
  private readonly _activeQueries;
121
+ /** Circuit breaker for failure tracking (PROV-02) */
122
+ private readonly _circuitBreaker;
120
123
  /** Cached auth status from last check */
121
124
  private _lastAuthStatus;
122
- /** Cached quota status from last check */
123
- private _lastQuotaStatus;
124
125
  /** Track cumulative cost */
125
126
  private _totalCostUsd;
126
127
  /** Track cumulative token usage */
@@ -140,13 +141,28 @@ export declare class ClaudeProvider implements LLMProvider {
140
141
  abort(jobId: string): Promise<void>;
141
142
  /**
142
143
  * Map an SDK message to zero or more AgentEvents.
143
- * One SDK message can produce multiple events (e.g., an assistant message
144
- * with both thinking and text content blocks).
144
+ *
145
+ * One SDK message can produce multiple events because an 'assistant' message
146
+ * contains an array of content blocks (thinking, text, tool_use, tool_result),
147
+ * each of which becomes a separate AgentEvent.
148
+ *
149
+ * Message type mapping:
150
+ * - 'assistant' -> one event per content block (thinking/text/tool_call/tool_result).
151
+ * - 'result' -> one 'done' event (success) or one 'error' event (failure).
152
+ * - 'system'/'user' -> no events (informational/replay only).
153
+ * - unknown types -> ignored gracefully (no crash on SDK additions).
145
154
  */
146
155
  private _mapSDKMessage;
147
156
  /**
148
157
  * Build a prompt string from task context.
149
- * Includes memory context, history, and system prompt elements.
158
+ *
159
+ * The prompt is structured with XML-like delimiters:
160
+ * 1. <memory_context> -- Injected memory items for cross-session continuity.
161
+ * 2. <execution_history> -- Prior events, including tool calls/results and
162
+ * human steering messages. Enables restarts and handoffs to resume mid-task.
163
+ * 3. The raw task prompt.
164
+ *
165
+ * The system prompt (SOUL.md + policy hints) is passed separately via sdkOptions.
150
166
  */
151
167
  private _buildPrompt;
152
168
  /**
@@ -155,6 +171,9 @@ export declare class ClaudeProvider implements LLMProvider {
155
171
  private _handleResultMessage;
156
172
  /**
157
173
  * Heuristic to detect auth errors from error messages.
174
+ * Pattern-matches against known SDK and HTTP error strings.
175
+ * Used to update _lastAuthStatus so isAvailable() excludes this provider
176
+ * and the orchestrator can trigger re-authentication.
158
177
  */
159
178
  private _isAuthError;
160
179
  /**
@@ -164,16 +183,13 @@ export declare class ClaudeProvider implements LLMProvider {
164
183
  get totalCostUsd(): number;
165
184
  get activeJobCount(): number;
166
185
  get lastAuthStatus(): AuthStatus | null;
167
- get lastQuotaStatus(): QuotaStatus | null;
186
+ /** Expose circuit breaker for external inspection / testing */
187
+ get circuitBreaker(): CircuitBreaker;
168
188
  getUsage(): ProviderUsage;
169
189
  /**
170
190
  * Force-set auth status (used by orchestrator on external auth events).
171
191
  */
172
192
  setAuthStatus(status: AuthStatus): void;
173
- /**
174
- * Force-set quota status (used by orchestrator on external quota events).
175
- */
176
- setQuotaStatus(status: QuotaStatus): void;
177
193
  /**
178
194
  * Reset cached status (used after auth recovery).
179
195
  */
@@ -1 +1 @@
1
- {"version":3,"file":"claude-provider.d.ts","sourceRoot":"","sources":["../../src/providers/claude-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-provider.d.ts","sourceRoot":"","sources":["../../src/providers/claude-provider.ts"],"names":[],"mappings":"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"}