@stoneforge/smithy 1.1.0 → 1.4.0
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/README.md +109 -18
- package/dist/cli/commands/agent.js +10 -10
- package/dist/cli/commands/agent.js.map +1 -1
- package/dist/cli/commands/pool.d.ts.map +1 -1
- package/dist/cli/commands/pool.js +33 -16
- package/dist/cli/commands/pool.js.map +1 -1
- package/dist/cli/commands/serve.d.ts +4 -16
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +0 -1
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/prompts/director.md +2 -2
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +6 -3
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/persistent-worker.md +1 -1
- package/dist/prompts/steward-base.md +4 -4
- package/dist/prompts/steward-recovery.md +113 -0
- package/dist/prompts/worker.md +12 -1
- package/dist/providers/claude/headless.d.ts +2 -0
- package/dist/providers/claude/headless.d.ts.map +1 -1
- package/dist/providers/claude/headless.js +8 -0
- package/dist/providers/claude/headless.js.map +1 -1
- package/dist/providers/claude/index.js +1 -1
- package/dist/providers/claude/index.js.map +1 -1
- package/dist/runtime/session-manager.d.ts +22 -2
- package/dist/runtime/session-manager.d.ts.map +1 -1
- package/dist/runtime/session-manager.js +74 -16
- package/dist/runtime/session-manager.js.map +1 -1
- package/dist/runtime/spawner.d.ts.map +1 -1
- package/dist/runtime/spawner.js +10 -0
- package/dist/runtime/spawner.js.map +1 -1
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +3 -1
- package/dist/server/config.js.map +1 -1
- package/dist/server/daemon-state.d.ts.map +1 -1
- package/dist/server/daemon-state.js +5 -3
- package/dist/server/daemon-state.js.map +1 -1
- package/dist/server/events-websocket.d.ts.map +1 -1
- package/dist/server/events-websocket.js +7 -5
- package/dist/server/events-websocket.js.map +1 -1
- package/dist/server/formatters.d.ts +16 -2
- package/dist/server/formatters.d.ts.map +1 -1
- package/dist/server/formatters.js +23 -2
- package/dist/server/formatters.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +16 -12
- package/dist/server/index.js.map +1 -1
- package/dist/server/lsp-websocket.d.ts.map +1 -1
- package/dist/server/lsp-websocket.js +10 -8
- package/dist/server/lsp-websocket.js.map +1 -1
- package/dist/server/routes/agents.d.ts.map +1 -1
- package/dist/server/routes/agents.js +81 -15
- package/dist/server/routes/agents.js.map +1 -1
- package/dist/server/routes/daemon.d.ts.map +1 -1
- package/dist/server/routes/daemon.js +6 -4
- package/dist/server/routes/daemon.js.map +1 -1
- package/dist/server/routes/events.d.ts.map +1 -1
- package/dist/server/routes/events.js +4 -2
- package/dist/server/routes/events.js.map +1 -1
- package/dist/server/routes/extensions.d.ts.map +1 -1
- package/dist/server/routes/extensions.js +9 -7
- package/dist/server/routes/extensions.js.map +1 -1
- package/dist/server/routes/index.d.ts +1 -0
- package/dist/server/routes/index.d.ts.map +1 -1
- package/dist/server/routes/index.js +1 -0
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/plugins.d.ts.map +1 -1
- package/dist/server/routes/plugins.js +6 -4
- package/dist/server/routes/plugins.js.map +1 -1
- package/dist/server/routes/pools.d.ts.map +1 -1
- package/dist/server/routes/pools.js +26 -7
- package/dist/server/routes/pools.js.map +1 -1
- package/dist/server/routes/scheduler.d.ts.map +1 -1
- package/dist/server/routes/scheduler.js +9 -7
- package/dist/server/routes/scheduler.js.map +1 -1
- package/dist/server/routes/sessions.d.ts.map +1 -1
- package/dist/server/routes/sessions.js +17 -15
- package/dist/server/routes/sessions.js.map +1 -1
- package/dist/server/routes/settings.d.ts +10 -0
- package/dist/server/routes/settings.d.ts.map +1 -0
- package/dist/server/routes/settings.js +65 -0
- package/dist/server/routes/settings.js.map +1 -0
- package/dist/server/routes/tasks.d.ts.map +1 -1
- package/dist/server/routes/tasks.js +54 -31
- package/dist/server/routes/tasks.js.map +1 -1
- package/dist/server/routes/upload.d.ts.map +1 -1
- package/dist/server/routes/upload.js +3 -1
- package/dist/server/routes/upload.js.map +1 -1
- package/dist/server/routes/workflows.d.ts.map +1 -1
- package/dist/server/routes/workflows.js +17 -15
- package/dist/server/routes/workflows.js.map +1 -1
- package/dist/server/routes/workspace-files.d.ts.map +1 -1
- package/dist/server/routes/workspace-files.js +11 -9
- package/dist/server/routes/workspace-files.js.map +1 -1
- package/dist/server/routes/worktrees.d.ts.map +1 -1
- package/dist/server/routes/worktrees.js +6 -4
- package/dist/server/routes/worktrees.js.map +1 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +10 -8
- package/dist/server/server.js.map +1 -1
- package/dist/server/services/lsp-manager.d.ts.map +1 -1
- package/dist/server/services/lsp-manager.js +15 -13
- package/dist/server/services/lsp-manager.js.map +1 -1
- package/dist/server/services.d.ts +2 -2
- package/dist/server/services.d.ts.map +1 -1
- package/dist/server/services.js +41 -13
- package/dist/server/services.js.map +1 -1
- package/dist/server/static.d.ts.map +1 -1
- package/dist/server/static.js +3 -1
- package/dist/server/static.js.map +1 -1
- package/dist/server/websocket.d.ts.map +1 -1
- package/dist/server/websocket.js +6 -4
- package/dist/server/websocket.js.map +1 -1
- package/dist/services/agent-pool-service.d.ts.map +1 -1
- package/dist/services/agent-pool-service.js +7 -8
- package/dist/services/agent-pool-service.js.map +1 -1
- package/dist/services/agent-registry.d.ts +8 -1
- package/dist/services/agent-registry.d.ts.map +1 -1
- package/dist/services/agent-registry.js +27 -4
- package/dist/services/agent-registry.js.map +1 -1
- package/dist/services/dispatch-daemon.d.ts +64 -2
- package/dist/services/dispatch-daemon.d.ts.map +1 -1
- package/dist/services/dispatch-daemon.js +387 -59
- package/dist/services/dispatch-daemon.js.map +1 -1
- package/dist/services/index.d.ts +1 -2
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +6 -11
- package/dist/services/index.js.map +1 -1
- package/dist/services/merge-steward-service.d.ts.map +1 -1
- package/dist/services/merge-steward-service.js +6 -4
- package/dist/services/merge-steward-service.js.map +1 -1
- package/dist/services/settings-service.d.ts +56 -0
- package/dist/services/settings-service.d.ts.map +1 -0
- package/dist/services/settings-service.js +92 -0
- package/dist/services/settings-service.js.map +1 -0
- package/dist/services/steward-scheduler.d.ts +37 -5
- package/dist/services/steward-scheduler.d.ts.map +1 -1
- package/dist/services/steward-scheduler.js +224 -41
- package/dist/services/steward-scheduler.js.map +1 -1
- package/dist/services/task-assignment-service.d.ts.map +1 -1
- package/dist/services/task-assignment-service.js +3 -0
- package/dist/services/task-assignment-service.js.map +1 -1
- package/dist/testing/test-context.d.ts +1 -1
- package/dist/testing/test-context.d.ts.map +1 -1
- package/dist/types/agent-pool.d.ts +4 -0
- package/dist/types/agent-pool.d.ts.map +1 -1
- package/dist/types/agent-pool.js +8 -1
- package/dist/types/agent-pool.js.map +1 -1
- package/dist/types/agent.d.ts +37 -7
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js +2 -2
- package/dist/types/agent.js.map +1 -1
- package/dist/types/role-definition.d.ts +1 -1
- package/dist/types/role-definition.js +1 -1
- package/dist/types/role-definition.js.map +1 -1
- package/dist/types/task-meta.d.ts +6 -0
- package/dist/types/task-meta.d.ts.map +1 -1
- package/dist/types/task-meta.js.map +1 -1
- package/dist/utils/logger.d.ts +66 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +133 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +7 -7
- package/web/assets/{index-R1cylSgw.js → index-8dBly5AJ.js} +697 -437
- package/web/assets/index-CNcjZKzg.css +32 -0
- package/web/assets/{utils-vendor-DaJ2Dubl.js → utils-vendor-B7jOGaxP.js} +1 -1
- package/web/index.html +3 -3
- package/dist/prompts/steward-health.md +0 -39
- package/dist/prompts/steward-ops.md +0 -28
- package/dist/prompts/steward-reminder.md +0 -26
- package/dist/services/health-steward-service.d.ts +0 -446
- package/dist/services/health-steward-service.d.ts.map +0 -1
- package/dist/services/health-steward-service.js +0 -866
- package/dist/services/health-steward-service.js.map +0 -1
- package/web/assets/index-DqP-_E4F.css +0 -32
|
@@ -1,446 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Health Steward Service
|
|
3
|
-
*
|
|
4
|
-
* This service monitors agent health and detects stuck agents.
|
|
5
|
-
* The Health Steward detects problematic agents and takes corrective action.
|
|
6
|
-
*
|
|
7
|
-
* Key features:
|
|
8
|
-
* - Detect agents with no output for configurable duration
|
|
9
|
-
* - Detect agents with repeated errors
|
|
10
|
-
* - Detect crashed agent processes
|
|
11
|
-
* - Attempt to unstick agents
|
|
12
|
-
* - Notify Director of issues
|
|
13
|
-
* - Stop and reassign tasks from stuck agents
|
|
14
|
-
*
|
|
15
|
-
* TB-O24: Health Steward Implementation
|
|
16
|
-
*
|
|
17
|
-
* @module
|
|
18
|
-
*/
|
|
19
|
-
import type { ElementId, EntityId, Timestamp } from '@stoneforge/core';
|
|
20
|
-
import type { QuarryAPI } from '@stoneforge/quarry';
|
|
21
|
-
import type { AgentRole } from '../types/agent.js';
|
|
22
|
-
import type { AgentRegistry } from './agent-registry.js';
|
|
23
|
-
import type { SessionManager } from '../runtime/session-manager.js';
|
|
24
|
-
import type { TaskAssignmentService } from './task-assignment-service.js';
|
|
25
|
-
import type { DispatchService } from './dispatch-service.js';
|
|
26
|
-
/**
|
|
27
|
-
* Health issue types that the steward can detect
|
|
28
|
-
*/
|
|
29
|
-
export type HealthIssueType = 'no_output' | 'repeated_errors' | 'process_crashed' | 'high_error_rate' | 'session_stale' | 'unresponsive';
|
|
30
|
-
/**
|
|
31
|
-
* All valid health issue types
|
|
32
|
-
*/
|
|
33
|
-
export declare const HealthIssueTypes: readonly ["no_output", "repeated_errors", "process_crashed", "high_error_rate", "session_stale", "unresponsive"];
|
|
34
|
-
/**
|
|
35
|
-
* Type guard for HealthIssueType
|
|
36
|
-
*/
|
|
37
|
-
export declare function isHealthIssueType(value: unknown): value is HealthIssueType;
|
|
38
|
-
/**
|
|
39
|
-
* Severity levels for health issues
|
|
40
|
-
*/
|
|
41
|
-
export type HealthIssueSeverity = 'warning' | 'error' | 'critical';
|
|
42
|
-
/**
|
|
43
|
-
* All valid severity levels
|
|
44
|
-
*/
|
|
45
|
-
export declare const HealthIssueSeverities: readonly ["warning", "error", "critical"];
|
|
46
|
-
/**
|
|
47
|
-
* Type guard for HealthIssueSeverity
|
|
48
|
-
*/
|
|
49
|
-
export declare function isHealthIssueSeverity(value: unknown): value is HealthIssueSeverity;
|
|
50
|
-
/**
|
|
51
|
-
* Action types the health steward can take
|
|
52
|
-
*/
|
|
53
|
-
export type HealthAction = 'monitor' | 'send_ping' | 'restart' | 'notify_director' | 'reassign_task' | 'escalate';
|
|
54
|
-
/**
|
|
55
|
-
* All valid health actions
|
|
56
|
-
*/
|
|
57
|
-
export declare const HealthActions: readonly ["monitor", "send_ping", "restart", "notify_director", "reassign_task", "escalate"];
|
|
58
|
-
/**
|
|
59
|
-
* Type guard for HealthAction
|
|
60
|
-
*/
|
|
61
|
-
export declare function isHealthAction(value: unknown): value is HealthAction;
|
|
62
|
-
/**
|
|
63
|
-
* A detected health issue
|
|
64
|
-
*/
|
|
65
|
-
export interface HealthIssue {
|
|
66
|
-
/** Unique issue ID */
|
|
67
|
-
readonly id: string;
|
|
68
|
-
/** Agent ID with the issue */
|
|
69
|
-
readonly agentId: EntityId;
|
|
70
|
-
/** Agent name */
|
|
71
|
-
readonly agentName: string;
|
|
72
|
-
/** Agent role */
|
|
73
|
-
readonly agentRole: AgentRole;
|
|
74
|
-
/** Type of issue detected */
|
|
75
|
-
readonly issueType: HealthIssueType;
|
|
76
|
-
/** Severity of the issue */
|
|
77
|
-
readonly severity: HealthIssueSeverity;
|
|
78
|
-
/** Human-readable description */
|
|
79
|
-
readonly description: string;
|
|
80
|
-
/** When the issue was first detected */
|
|
81
|
-
readonly detectedAt: Timestamp;
|
|
82
|
-
/** When the issue was last seen */
|
|
83
|
-
readonly lastSeenAt: Timestamp;
|
|
84
|
-
/** Number of times this issue has been seen */
|
|
85
|
-
readonly occurrenceCount: number;
|
|
86
|
-
/** Current session ID (if any) */
|
|
87
|
-
readonly sessionId?: string;
|
|
88
|
-
/** Current task ID (if any) */
|
|
89
|
-
readonly taskId?: ElementId;
|
|
90
|
-
/** Additional context data */
|
|
91
|
-
readonly context?: Record<string, unknown>;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Result of an action taken on an issue
|
|
95
|
-
*/
|
|
96
|
-
export interface HealthActionResult {
|
|
97
|
-
/** Whether the action succeeded */
|
|
98
|
-
readonly success: boolean;
|
|
99
|
-
/** The action taken */
|
|
100
|
-
readonly action: HealthAction;
|
|
101
|
-
/** The issue that was addressed */
|
|
102
|
-
readonly issueId: string;
|
|
103
|
-
/** Description of what happened */
|
|
104
|
-
readonly message: string;
|
|
105
|
-
/** When the action was taken */
|
|
106
|
-
readonly actionTakenAt: Timestamp;
|
|
107
|
-
/** New task ID if task was reassigned */
|
|
108
|
-
readonly newTaskId?: ElementId;
|
|
109
|
-
/** New agent ID if task was reassigned */
|
|
110
|
-
readonly newAgentId?: EntityId;
|
|
111
|
-
/** Error if action failed */
|
|
112
|
-
readonly error?: string;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Session status values for health checks
|
|
116
|
-
*/
|
|
117
|
-
export type HealthSessionStatus = 'idle' | 'starting' | 'running' | 'suspended' | 'terminating' | 'terminated';
|
|
118
|
-
/**
|
|
119
|
-
* Agent health status summary
|
|
120
|
-
*/
|
|
121
|
-
export interface AgentHealthStatus {
|
|
122
|
-
/** Agent ID */
|
|
123
|
-
readonly agentId: EntityId;
|
|
124
|
-
/** Agent name */
|
|
125
|
-
readonly agentName: string;
|
|
126
|
-
/** Agent role */
|
|
127
|
-
readonly agentRole: AgentRole;
|
|
128
|
-
/** Whether the agent is healthy */
|
|
129
|
-
readonly isHealthy: boolean;
|
|
130
|
-
/** Current health issues (if any) */
|
|
131
|
-
readonly issues: readonly HealthIssue[];
|
|
132
|
-
/** Last activity timestamp */
|
|
133
|
-
readonly lastActivityAt?: Timestamp;
|
|
134
|
-
/** Last health check timestamp */
|
|
135
|
-
readonly lastHealthCheckAt?: Timestamp;
|
|
136
|
-
/** Current session status */
|
|
137
|
-
readonly sessionStatus?: HealthSessionStatus;
|
|
138
|
-
/** Current task (if any) */
|
|
139
|
-
readonly currentTaskId?: ElementId;
|
|
140
|
-
/** Recent error count (last N minutes) */
|
|
141
|
-
readonly recentErrorCount: number;
|
|
142
|
-
/** Recent output count (last N minutes) */
|
|
143
|
-
readonly recentOutputCount: number;
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Configuration for the Health Steward service
|
|
147
|
-
*/
|
|
148
|
-
export interface HealthStewardConfig {
|
|
149
|
-
/** How long without output before considering stuck (ms). Default: 5 minutes */
|
|
150
|
-
readonly noOutputThresholdMs?: number;
|
|
151
|
-
/** How many errors in the window before alerting. Default: 5 */
|
|
152
|
-
readonly errorCountThreshold?: number;
|
|
153
|
-
/** Time window for counting errors (ms). Default: 10 minutes */
|
|
154
|
-
readonly errorWindowMs?: number;
|
|
155
|
-
/** How long a session can be stale before alerting (ms). Default: 15 minutes */
|
|
156
|
-
readonly staleSessionThresholdMs?: number;
|
|
157
|
-
/** Interval between health checks (ms). Default: 1 minute */
|
|
158
|
-
readonly healthCheckIntervalMs?: number;
|
|
159
|
-
/** Number of ping attempts before escalating. Default: 3 */
|
|
160
|
-
readonly maxPingAttempts?: number;
|
|
161
|
-
/** Whether to auto-restart stuck agents. Default: true */
|
|
162
|
-
readonly autoRestart?: boolean;
|
|
163
|
-
/** Whether to auto-reassign from crashed agents. Default: true */
|
|
164
|
-
readonly autoReassign?: boolean;
|
|
165
|
-
/** Whether to notify Director on issues. Default: true */
|
|
166
|
-
readonly notifyDirector?: boolean;
|
|
167
|
-
/** Entity ID of the health steward (for creating messages) */
|
|
168
|
-
readonly stewardEntityId?: EntityId;
|
|
169
|
-
/** Maximum issues to track per agent. Default: 10 */
|
|
170
|
-
readonly maxIssuesPerAgent?: number;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Result of a health check run
|
|
174
|
-
*/
|
|
175
|
-
export interface HealthCheckResult {
|
|
176
|
-
/** When the check was run */
|
|
177
|
-
readonly timestamp: Timestamp;
|
|
178
|
-
/** Total agents checked */
|
|
179
|
-
readonly agentsChecked: number;
|
|
180
|
-
/** Agents with issues */
|
|
181
|
-
readonly agentsWithIssues: number;
|
|
182
|
-
/** New issues detected */
|
|
183
|
-
readonly newIssues: readonly HealthIssue[];
|
|
184
|
-
/** Resolved issues (no longer present) */
|
|
185
|
-
readonly resolvedIssues: readonly string[];
|
|
186
|
-
/** Actions taken */
|
|
187
|
-
readonly actionsTaken: readonly HealthActionResult[];
|
|
188
|
-
/** Duration of the check in ms */
|
|
189
|
-
readonly durationMs: number;
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Statistics about health steward operations
|
|
193
|
-
*/
|
|
194
|
-
export interface HealthStewardStats {
|
|
195
|
-
/** Total health checks run */
|
|
196
|
-
readonly totalChecks: number;
|
|
197
|
-
/** Total issues detected */
|
|
198
|
-
readonly totalIssuesDetected: number;
|
|
199
|
-
/** Total issues resolved */
|
|
200
|
-
readonly totalIssuesResolved: number;
|
|
201
|
-
/** Total actions taken */
|
|
202
|
-
readonly totalActionsTaken: number;
|
|
203
|
-
/** Successful actions */
|
|
204
|
-
readonly successfulActions: number;
|
|
205
|
-
/** Failed actions */
|
|
206
|
-
readonly failedActions: number;
|
|
207
|
-
/** Currently active issues */
|
|
208
|
-
readonly activeIssues: number;
|
|
209
|
-
/** Agents currently being monitored */
|
|
210
|
-
readonly monitoredAgents: number;
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Internal tracking for agent activity
|
|
214
|
-
*/
|
|
215
|
-
export interface AgentActivityTracker {
|
|
216
|
-
/** Agent ID */
|
|
217
|
-
readonly agentId: EntityId;
|
|
218
|
-
/** Last output timestamp */
|
|
219
|
-
lastOutputAt?: Timestamp;
|
|
220
|
-
/** Last error timestamp */
|
|
221
|
-
lastErrorAt?: Timestamp;
|
|
222
|
-
/** Error timestamps in the window */
|
|
223
|
-
errorTimestamps: Timestamp[];
|
|
224
|
-
/** Output timestamps in the window */
|
|
225
|
-
outputTimestamps: Timestamp[];
|
|
226
|
-
/** Last ping attempt */
|
|
227
|
-
lastPingAt?: Timestamp;
|
|
228
|
-
/** Ping attempt count */
|
|
229
|
-
pingAttempts: number;
|
|
230
|
-
/** Last health check */
|
|
231
|
-
lastHealthCheckAt?: Timestamp;
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Health Steward Service interface for monitoring agent health.
|
|
235
|
-
*
|
|
236
|
-
* The service provides methods for:
|
|
237
|
-
* - Running health checks on agents
|
|
238
|
-
* - Detecting stuck or problematic agents
|
|
239
|
-
* - Taking corrective actions
|
|
240
|
-
* - Tracking health issues
|
|
241
|
-
*/
|
|
242
|
-
export interface HealthStewardService {
|
|
243
|
-
/**
|
|
244
|
-
* Runs a health check on all running agents.
|
|
245
|
-
*
|
|
246
|
-
* @returns Health check result with issues and actions
|
|
247
|
-
*/
|
|
248
|
-
runHealthCheck(): Promise<HealthCheckResult>;
|
|
249
|
-
/**
|
|
250
|
-
* Runs a health check on a specific agent.
|
|
251
|
-
*
|
|
252
|
-
* @param agentId - The agent to check
|
|
253
|
-
* @returns Agent health status
|
|
254
|
-
*/
|
|
255
|
-
checkAgent(agentId: EntityId): Promise<AgentHealthStatus>;
|
|
256
|
-
/**
|
|
257
|
-
* Gets all agents with their current health status.
|
|
258
|
-
*
|
|
259
|
-
* @returns Array of agent health statuses
|
|
260
|
-
*/
|
|
261
|
-
getAllAgentHealth(): Promise<readonly AgentHealthStatus[]>;
|
|
262
|
-
/**
|
|
263
|
-
* Gets all active health issues.
|
|
264
|
-
*
|
|
265
|
-
* @returns Array of active issues
|
|
266
|
-
*/
|
|
267
|
-
getActiveIssues(): readonly HealthIssue[];
|
|
268
|
-
/**
|
|
269
|
-
* Gets issues for a specific agent.
|
|
270
|
-
*
|
|
271
|
-
* @param agentId - The agent to get issues for
|
|
272
|
-
* @returns Array of issues for the agent
|
|
273
|
-
*/
|
|
274
|
-
getIssuesForAgent(agentId: EntityId): readonly HealthIssue[];
|
|
275
|
-
/**
|
|
276
|
-
* Resolves an issue (marks it as handled).
|
|
277
|
-
*
|
|
278
|
-
* @param issueId - The issue ID to resolve
|
|
279
|
-
* @returns Whether the issue was resolved
|
|
280
|
-
*/
|
|
281
|
-
resolveIssue(issueId: string): boolean;
|
|
282
|
-
/**
|
|
283
|
-
* Clears all resolved issues from history.
|
|
284
|
-
*/
|
|
285
|
-
clearResolvedIssues(): void;
|
|
286
|
-
/**
|
|
287
|
-
* Takes action on a detected issue.
|
|
288
|
-
*
|
|
289
|
-
* @param issueId - The issue to act on
|
|
290
|
-
* @param action - The action to take (optional, will auto-determine if not provided)
|
|
291
|
-
* @returns Result of the action
|
|
292
|
-
*/
|
|
293
|
-
takeAction(issueId: string, action?: HealthAction): Promise<HealthActionResult>;
|
|
294
|
-
/**
|
|
295
|
-
* Sends a ping to an agent to check responsiveness.
|
|
296
|
-
*
|
|
297
|
-
* @param agentId - The agent to ping
|
|
298
|
-
* @returns Whether the agent responded
|
|
299
|
-
*/
|
|
300
|
-
pingAgent(agentId: EntityId): Promise<boolean>;
|
|
301
|
-
/**
|
|
302
|
-
* Attempts to unstick an agent by restarting its session.
|
|
303
|
-
*
|
|
304
|
-
* @param agentId - The agent to unstick
|
|
305
|
-
* @returns Whether the restart succeeded
|
|
306
|
-
*/
|
|
307
|
-
restartAgent(agentId: EntityId): Promise<boolean>;
|
|
308
|
-
/**
|
|
309
|
-
* Notifies the Director about an agent issue.
|
|
310
|
-
*
|
|
311
|
-
* @param issue - The issue to report
|
|
312
|
-
* @returns Whether notification was sent
|
|
313
|
-
*/
|
|
314
|
-
notifyDirector(issue: HealthIssue): Promise<boolean>;
|
|
315
|
-
/**
|
|
316
|
-
* Reassigns a task from a stuck agent to another available agent.
|
|
317
|
-
*
|
|
318
|
-
* @param agentId - The stuck agent
|
|
319
|
-
* @param taskId - The task to reassign
|
|
320
|
-
* @returns Result with new assignment info
|
|
321
|
-
*/
|
|
322
|
-
reassignTask(agentId: EntityId, taskId: ElementId): Promise<{
|
|
323
|
-
success: boolean;
|
|
324
|
-
newAgentId?: EntityId;
|
|
325
|
-
error?: string;
|
|
326
|
-
}>;
|
|
327
|
-
/**
|
|
328
|
-
* Records agent output (call this when agent produces output).
|
|
329
|
-
*
|
|
330
|
-
* @param agentId - The agent that produced output
|
|
331
|
-
*/
|
|
332
|
-
recordOutput(agentId: EntityId): void;
|
|
333
|
-
/**
|
|
334
|
-
* Records an agent error (call this when agent encounters an error).
|
|
335
|
-
*
|
|
336
|
-
* @param agentId - The agent that had an error
|
|
337
|
-
* @param error - The error message
|
|
338
|
-
*/
|
|
339
|
-
recordError(agentId: EntityId, error?: string): void;
|
|
340
|
-
/**
|
|
341
|
-
* Records a process crash (call this when agent process exits unexpectedly).
|
|
342
|
-
*
|
|
343
|
-
* @param agentId - The agent that crashed
|
|
344
|
-
* @param exitCode - The exit code
|
|
345
|
-
*/
|
|
346
|
-
recordCrash(agentId: EntityId, exitCode?: number): void;
|
|
347
|
-
/**
|
|
348
|
-
* Starts the health monitoring service.
|
|
349
|
-
* Begins periodic health checks based on config.
|
|
350
|
-
*/
|
|
351
|
-
start(): void;
|
|
352
|
-
/**
|
|
353
|
-
* Stops the health monitoring service.
|
|
354
|
-
*/
|
|
355
|
-
stop(): void;
|
|
356
|
-
/**
|
|
357
|
-
* Whether the service is currently running.
|
|
358
|
-
*/
|
|
359
|
-
isRunning(): boolean;
|
|
360
|
-
/**
|
|
361
|
-
* Gets statistics about health steward operations.
|
|
362
|
-
*/
|
|
363
|
-
getStats(): HealthStewardStats;
|
|
364
|
-
/**
|
|
365
|
-
* Subscribe to health steward events.
|
|
366
|
-
*/
|
|
367
|
-
on(event: 'issue:detected', listener: (issue: HealthIssue) => void): void;
|
|
368
|
-
on(event: 'issue:resolved', listener: (issueId: string) => void): void;
|
|
369
|
-
on(event: 'action:taken', listener: (result: HealthActionResult) => void): void;
|
|
370
|
-
on(event: 'check:completed', listener: (result: HealthCheckResult) => void): void;
|
|
371
|
-
/**
|
|
372
|
-
* Unsubscribe from events.
|
|
373
|
-
*/
|
|
374
|
-
off(event: string, listener: (...args: unknown[]) => void): void;
|
|
375
|
-
}
|
|
376
|
-
/**
|
|
377
|
-
* Implementation of the Health Steward Service.
|
|
378
|
-
*/
|
|
379
|
-
export declare class HealthStewardServiceImpl implements HealthStewardService {
|
|
380
|
-
private readonly _api;
|
|
381
|
-
private readonly config;
|
|
382
|
-
private readonly agentRegistry;
|
|
383
|
-
private readonly sessionManager;
|
|
384
|
-
private readonly taskAssignment;
|
|
385
|
-
private readonly dispatchService;
|
|
386
|
-
private readonly emitter;
|
|
387
|
-
private running;
|
|
388
|
-
private checkInterval?;
|
|
389
|
-
private issueCounter;
|
|
390
|
-
private readonly activityTrackers;
|
|
391
|
-
private readonly activeIssues;
|
|
392
|
-
private readonly resolvedIssueIds;
|
|
393
|
-
private totalChecks;
|
|
394
|
-
private totalIssuesDetected;
|
|
395
|
-
private totalIssuesResolved;
|
|
396
|
-
private totalActionsTaken;
|
|
397
|
-
private successfulActions;
|
|
398
|
-
private failedActions;
|
|
399
|
-
constructor(api: QuarryAPI, agentRegistry: AgentRegistry, sessionManager: SessionManager, taskAssignment: TaskAssignmentService, dispatchService: DispatchService, config?: HealthStewardConfig);
|
|
400
|
-
runHealthCheck(): Promise<HealthCheckResult>;
|
|
401
|
-
checkAgent(agentId: EntityId): Promise<AgentHealthStatus>;
|
|
402
|
-
getAllAgentHealth(): Promise<readonly AgentHealthStatus[]>;
|
|
403
|
-
getActiveIssues(): readonly HealthIssue[];
|
|
404
|
-
getIssuesForAgent(agentId: EntityId): readonly HealthIssue[];
|
|
405
|
-
resolveIssue(issueId: string): boolean;
|
|
406
|
-
clearResolvedIssues(): void;
|
|
407
|
-
takeAction(issueId: string, action?: HealthAction): Promise<HealthActionResult>;
|
|
408
|
-
pingAgent(agentId: EntityId): Promise<boolean>;
|
|
409
|
-
restartAgent(agentId: EntityId): Promise<boolean>;
|
|
410
|
-
notifyDirector(issue: HealthIssue): Promise<boolean>;
|
|
411
|
-
reassignTask(agentId: EntityId, taskId: ElementId): Promise<{
|
|
412
|
-
success: boolean;
|
|
413
|
-
newAgentId?: EntityId;
|
|
414
|
-
error?: string;
|
|
415
|
-
}>;
|
|
416
|
-
recordOutput(agentId: EntityId): void;
|
|
417
|
-
recordError(agentId: EntityId, _error?: string): void;
|
|
418
|
-
recordCrash(agentId: EntityId, exitCode?: number): void;
|
|
419
|
-
start(): void;
|
|
420
|
-
stop(): void;
|
|
421
|
-
isRunning(): boolean;
|
|
422
|
-
getStats(): HealthStewardStats;
|
|
423
|
-
on(event: 'issue:detected', listener: (issue: HealthIssue) => void): void;
|
|
424
|
-
on(event: 'issue:resolved', listener: (issueId: string) => void): void;
|
|
425
|
-
on(event: 'action:taken', listener: (result: HealthActionResult) => void): void;
|
|
426
|
-
on(event: 'check:completed', listener: (result: HealthCheckResult) => void): void;
|
|
427
|
-
off(event: string, listener: (...args: unknown[]) => void): void;
|
|
428
|
-
private getRunningAgents;
|
|
429
|
-
private getOrCreateTracker;
|
|
430
|
-
private createIssue;
|
|
431
|
-
private createUnhealthyStatus;
|
|
432
|
-
private determineSeverity;
|
|
433
|
-
private getIssueDescription;
|
|
434
|
-
private determineAction;
|
|
435
|
-
private getRecommendedActionDescription;
|
|
436
|
-
private findExistingIssue;
|
|
437
|
-
private issueStillApplies;
|
|
438
|
-
private countRecentEvents;
|
|
439
|
-
private pruneTimestamps;
|
|
440
|
-
private getTimestampMs;
|
|
441
|
-
}
|
|
442
|
-
/**
|
|
443
|
-
* Creates a HealthStewardService instance
|
|
444
|
-
*/
|
|
445
|
-
export declare function createHealthStewardService(api: QuarryAPI, agentRegistry: AgentRegistry, sessionManager: SessionManager, taskAssignment: TaskAssignmentService, dispatchService: DispatchService, config?: HealthStewardConfig): HealthStewardService;
|
|
446
|
-
//# sourceMappingURL=health-steward-service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"health-steward-service.d.ts","sourceRoot":"","sources":["../../src/services/health-steward-service.ts"],"names":[],"mappings":"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"}
|