import type { Db } from '../storage/database.js'; import type { EventBus } from './events.js'; import type { Agent, AgentCreateInput, AgentStatus } from '../types.js'; export declare class AgentService { private readonly db; private readonly events; private reapTimer; constructor(db: Db, events: EventBus); register(input: AgentCreateInput): Agent; getById(id: string): Agent | null; getByName(name: string): Agent | null; /** Resolve an agent by name or ID. Returns null if not found. */ resolveByNameOrId(nameOrId: string): Agent | null; list(options?: { status?: AgentStatus; capability?: string; includeOffline?: boolean; }): Agent[]; heartbeat(agentId: string, statusText?: string | null): void; updateStatus(agentId: string, status: AgentStatus): void; updateCapabilities(agentId: string, capabilities: string[]): void; updateMetadata(agentId: string, metadata: Record): void; setStatusText(agentId: string, text: string | null): void; discover(options?: { skill?: string; tag?: string; }): Agent[]; /** Update last_activity timestamp for an agent (called on meaningful actions). */ touchActivity(agentId: string): void; /** Return agents whose heartbeat is recent but last_activity exceeds threshold. */ stuckAgents(thresholdMinutes?: number): Agent[]; unregister(agentId: string): void; reapStale(): void; stopReaper(): void; private startReaper; } //# sourceMappingURL=agents.d.ts.map