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.
- package/CHANGELOG.md +1 -1
- package/README.md +103 -92
- package/dist/cli/audit-commands.d.ts.map +1 -1
- package/dist/cli/audit-commands.js +3 -1
- package/dist/cli/audit-commands.js.map +1 -1
- package/dist/cli/daemon.js +86 -28
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/edit-commands.d.ts.map +1 -1
- package/dist/cli/edit-commands.js +3 -1
- package/dist/cli/edit-commands.js.map +1 -1
- package/dist/cli/hook-commands.d.ts +9 -0
- package/dist/cli/hook-commands.d.ts.map +1 -0
- package/dist/cli/hook-commands.js +106 -0
- package/dist/cli/hook-commands.js.map +1 -0
- package/dist/cli/index.js +87 -35
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init-command.d.ts.map +1 -1
- package/dist/cli/init-command.js +108 -9
- package/dist/cli/init-command.js.map +1 -1
- package/dist/cli/memory-commands.d.ts +1 -1
- package/dist/cli/memory-commands.d.ts.map +1 -1
- package/dist/cli/memory-commands.js +213 -1
- package/dist/cli/memory-commands.js.map +1 -1
- package/dist/cli/presets.d.ts.map +1 -1
- package/dist/cli/presets.js +2 -1
- package/dist/cli/presets.js.map +1 -1
- package/dist/cli/skill-commands.d.ts.map +1 -1
- package/dist/cli/skill-commands.js +4 -2
- package/dist/cli/skill-commands.js.map +1 -1
- package/dist/cli/steer-commands.d.ts.map +1 -1
- package/dist/cli/steer-commands.js +6 -4
- package/dist/cli/steer-commands.js.map +1 -1
- package/dist/cli/team-commands.d.ts.map +1 -1
- package/dist/cli/team-commands.js +3 -1
- package/dist/cli/team-commands.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +12 -2
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/loader.d.ts +23 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +64 -3
- package/dist/config/loader.js.map +1 -1
- package/dist/config/policy-loader.d.ts +14 -0
- package/dist/config/policy-loader.d.ts.map +1 -1
- package/dist/config/policy-loader.js +33 -0
- package/dist/config/policy-loader.js.map +1 -1
- package/dist/dashboard/frontend/dist/assets/index-BcOGj1EF.css +1 -0
- package/dist/dashboard/frontend/dist/assets/index-BtiFO9YN.js +261 -0
- package/dist/dashboard/frontend/dist/assets/index-Cfjy5acU.css +1 -0
- package/dist/dashboard/frontend/dist/assets/index-D41hcjgc.js +253 -0
- package/dist/dashboard/frontend/dist/assets/index-D83BawFd.css +1 -0
- package/dist/dashboard/frontend/dist/assets/index-DAODjoxu.css +1 -0
- package/dist/dashboard/frontend/dist/assets/index-DB-Eu5oV.js +253 -0
- package/dist/dashboard/frontend/dist/assets/index-W0VVEDu6.js +253 -0
- package/dist/dashboard/frontend/dist/index.html +17 -0
- package/dist/dashboard/server.d.ts +19 -2
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +121 -20
- package/dist/dashboard/server.js.map +1 -1
- package/dist/hooks/hook-runner.d.ts +55 -0
- package/dist/hooks/hook-runner.d.ts.map +1 -0
- package/dist/hooks/hook-runner.js +120 -0
- package/dist/hooks/hook-runner.js.map +1 -0
- package/dist/hooks/hook-types.d.ts +82 -0
- package/dist/hooks/hook-types.d.ts.map +1 -0
- package/dist/hooks/hook-types.js +20 -0
- package/dist/hooks/hook-types.js.map +1 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +6 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/memory/context-compressor.d.ts +108 -0
- package/dist/memory/context-compressor.d.ts.map +1 -0
- package/dist/memory/context-compressor.js +307 -0
- package/dist/memory/context-compressor.js.map +1 -0
- package/dist/memory/index.d.ts +1 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +1 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/memory-manager.d.ts +88 -4
- package/dist/memory/memory-manager.d.ts.map +1 -1
- package/dist/memory/memory-manager.js +299 -7
- package/dist/memory/memory-manager.js.map +1 -1
- package/dist/memory/observation-store.d.ts +75 -0
- package/dist/memory/observation-store.d.ts.map +1 -0
- package/dist/memory/observation-store.js +162 -0
- package/dist/memory/observation-store.js.map +1 -0
- package/dist/memory/observer-worker.d.ts +34 -0
- package/dist/memory/observer-worker.d.ts.map +1 -0
- package/dist/memory/observer-worker.js +161 -0
- package/dist/memory/observer-worker.js.map +1 -0
- package/dist/memory/reflector-worker.d.ts +40 -0
- package/dist/memory/reflector-worker.d.ts.map +1 -0
- package/dist/memory/reflector-worker.js +185 -0
- package/dist/memory/reflector-worker.js.map +1 -0
- package/dist/memory/salience-scorer.d.ts +16 -6
- package/dist/memory/salience-scorer.d.ts.map +1 -1
- package/dist/memory/salience-scorer.js +42 -22
- package/dist/memory/salience-scorer.js.map +1 -1
- package/dist/memory/structured-memory.d.ts +36 -1
- package/dist/memory/structured-memory.d.ts.map +1 -1
- package/dist/memory/structured-memory.js +207 -8
- package/dist/memory/structured-memory.js.map +1 -1
- package/dist/memory/token-estimator.d.ts +31 -0
- package/dist/memory/token-estimator.d.ts.map +1 -0
- package/dist/memory/token-estimator.js +77 -0
- package/dist/memory/token-estimator.js.map +1 -0
- package/dist/memory/validation-pipeline.d.ts +37 -0
- package/dist/memory/validation-pipeline.d.ts.map +1 -0
- package/dist/memory/validation-pipeline.js +106 -0
- package/dist/memory/validation-pipeline.js.map +1 -0
- package/dist/orchestrator/auth-monitor.d.ts.map +1 -1
- package/dist/orchestrator/auth-monitor.js +3 -1
- package/dist/orchestrator/auth-monitor.js.map +1 -1
- package/dist/orchestrator/execution-loop.d.ts +23 -0
- package/dist/orchestrator/execution-loop.d.ts.map +1 -1
- package/dist/orchestrator/execution-loop.js +60 -19
- package/dist/orchestrator/execution-loop.js.map +1 -1
- package/dist/orchestrator/failover-controller.d.ts +26 -2
- package/dist/orchestrator/failover-controller.d.ts.map +1 -1
- package/dist/orchestrator/failover-controller.js +143 -23
- package/dist/orchestrator/failover-controller.js.map +1 -1
- package/dist/orchestrator/orchestrator.d.ts +70 -7
- package/dist/orchestrator/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator/orchestrator.js +416 -92
- package/dist/orchestrator/orchestrator.js.map +1 -1
- package/dist/orchestrator/retry-queue.d.ts.map +1 -1
- package/dist/orchestrator/retry-queue.js +24 -9
- package/dist/orchestrator/retry-queue.js.map +1 -1
- package/dist/orchestrator/router.d.ts +16 -1
- package/dist/orchestrator/router.d.ts.map +1 -1
- package/dist/orchestrator/router.js +79 -20
- package/dist/orchestrator/router.js.map +1 -1
- package/dist/orchestrator/session-manager.d.ts +26 -1
- package/dist/orchestrator/session-manager.d.ts.map +1 -1
- package/dist/orchestrator/session-manager.js +88 -4
- package/dist/orchestrator/session-manager.js.map +1 -1
- package/dist/providers/circuit-breaker.d.ts +78 -0
- package/dist/providers/circuit-breaker.d.ts.map +1 -0
- package/dist/providers/circuit-breaker.js +129 -0
- package/dist/providers/circuit-breaker.js.map +1 -0
- package/dist/providers/claude-provider.d.ts +27 -11
- package/dist/providers/claude-provider.d.ts.map +1 -1
- package/dist/providers/claude-provider.js +161 -46
- package/dist/providers/claude-provider.js.map +1 -1
- package/dist/providers/gemini-provider.d.ts +9 -1
- package/dist/providers/gemini-provider.d.ts.map +1 -1
- package/dist/providers/gemini-provider.js +97 -48
- package/dist/providers/gemini-provider.js.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/ollama-provider.d.ts +7 -0
- package/dist/providers/ollama-provider.d.ts.map +1 -1
- package/dist/providers/ollama-provider.js +89 -18
- package/dist/providers/ollama-provider.js.map +1 -1
- package/dist/routines/heartbeat.d.ts +10 -2
- package/dist/routines/heartbeat.d.ts.map +1 -1
- package/dist/routines/heartbeat.js +42 -5
- package/dist/routines/heartbeat.js.map +1 -1
- package/dist/routines/routine-manager.d.ts.map +1 -1
- package/dist/routines/routine-manager.js +22 -15
- package/dist/routines/routine-manager.js.map +1 -1
- package/dist/security/audit-logger.d.ts.map +1 -1
- package/dist/security/audit-logger.js +5 -7
- package/dist/security/audit-logger.js.map +1 -1
- package/dist/security/policy-engine.d.ts +28 -17
- package/dist/security/policy-engine.d.ts.map +1 -1
- package/dist/security/policy-engine.js +42 -185
- package/dist/security/policy-engine.js.map +1 -1
- package/dist/security/policy-serializer.d.ts +19 -0
- package/dist/security/policy-serializer.d.ts.map +1 -0
- package/dist/security/policy-serializer.js +100 -0
- package/dist/security/policy-serializer.js.map +1 -0
- package/dist/security/shell-validator.d.ts +42 -0
- package/dist/security/shell-validator.d.ts.map +1 -0
- package/dist/security/shell-validator.js +231 -0
- package/dist/security/shell-validator.js.map +1 -0
- package/dist/skills/index.d.ts +1 -0
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +1 -0
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/skill-loader.d.ts +38 -2
- package/dist/skills/skill-loader.d.ts.map +1 -1
- package/dist/skills/skill-loader.js +83 -2
- package/dist/skills/skill-loader.js.map +1 -1
- package/dist/skills/subagent-loader.d.ts +66 -0
- package/dist/skills/subagent-loader.d.ts.map +1 -0
- package/dist/skills/subagent-loader.js +143 -0
- package/dist/skills/subagent-loader.js.map +1 -0
- package/dist/steering/flag-manager.d.ts +20 -0
- package/dist/steering/flag-manager.d.ts.map +1 -1
- package/dist/steering/flag-manager.js +94 -11
- package/dist/steering/flag-manager.js.map +1 -1
- package/dist/steering/steering-manager.d.ts +11 -0
- package/dist/steering/steering-manager.d.ts.map +1 -1
- package/dist/steering/steering-manager.js +23 -0
- package/dist/steering/steering-manager.js.map +1 -1
- package/dist/steering/telegram-gateway.d.ts +4 -1
- package/dist/steering/telegram-gateway.d.ts.map +1 -1
- package/dist/steering/telegram-gateway.js +49 -10
- package/dist/steering/telegram-gateway.js.map +1 -1
- package/dist/teams/bridge-watchdog.d.ts.map +1 -1
- package/dist/teams/bridge-watchdog.js +5 -3
- package/dist/teams/bridge-watchdog.js.map +1 -1
- package/dist/teams/gemini-bridge.d.ts.map +1 -1
- package/dist/teams/gemini-bridge.js +9 -4
- package/dist/teams/gemini-bridge.js.map +1 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/memory-tools.d.ts +16 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +207 -0
- package/dist/tools/memory-tools.js.map +1 -0
- package/dist/tools/notifications.d.ts.map +1 -1
- package/dist/tools/notifications.js +3 -1
- package/dist/tools/notifications.js.map +1 -1
- package/dist/tools/tool-factory.d.ts +36 -0
- package/dist/tools/tool-factory.d.ts.map +1 -0
- package/dist/tools/tool-factory.js +55 -0
- package/dist/tools/tool-factory.js.map +1 -0
- package/dist/types.d.ts +205 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +47 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/errors.d.ts +21 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +29 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/event-filter.d.ts +25 -0
- package/dist/utils/event-filter.d.ts.map +1 -0
- package/dist/utils/event-filter.js +61 -0
- package/dist/utils/event-filter.js.map +1 -0
- package/dist/utils/logger.d.ts +33 -36
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +60 -130
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/validate-job-id.d.ts +6 -0
- package/dist/utils/validate-job-id.d.ts.map +1 -0
- package/dist/utils/validate-job-id.js +10 -0
- package/dist/utils/validate-job-id.js.map +1 -0
- 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":"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"}
|
|
@@ -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
|
|
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
|
-
*
|
|
144
|
-
*
|
|
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
|
-
*
|
|
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
|
-
|
|
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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"}
|