/** * src/members/MemberAgent.ts * * Concrete `BaseAgent` subclass for each Society member. * The system prompt is derived from the member's `SKILL.md` file at * runtime via `MemberRegistry`. */ import { BaseAgent } from '../agents/base/BaseAgent.ts'; import type { MemberSpec } from './types.ts'; import type { ExecutionContext } from '../core/ExecutionContext.ts'; import type { ITool } from '../tools/ITool.ts'; import type { ReActLoop } from '../reasoning/ReActLoop.ts'; import type { ToolRegistry } from '../tools/ToolRegistry.ts'; import type { ILLMProvider } from '../llm/ILLMProvider.ts'; import type { AgentRegistry } from '../core/AgentRegistry.ts'; import type { EpisodeLearner } from '../evals/EpisodeLearner.ts'; export interface MemberAgentOptions { agentRegistry?: AgentRegistry; episodeLearner?: EpisodeLearner; /** Strict mode blocks the run when the injected SKILL.md drifts from agenthood.lock (ADR-020). */ strictSkillIntegrity?: boolean; } export declare class MemberAgent extends BaseAgent { private spec; role: string; protected tools: ITool[]; private agentRegistry?; private readonly strictSkillIntegrity; private readonly warnedTools; constructor(spec: MemberSpec, llm: ILLMProvider, reasoningLoop: ReActLoop, toolRegistry: ToolRegistry, options?: MemberAgentOptions); private buildTools; /** * Denies a member a tool its permission profile does not authorize. * Fail-closed: a tool not classified as read-only, write, or trusted is * denied for every profile, so an unclassified state-touching tool can * never leak to a restricted member. */ private isToolPermitted; private addDelegationTool; private addTool; private instantiateTool; protected getSystemPrompt(context: ExecutionContext): Promise; /** * ADR-020 drift check: surfaces SKILL.md drift from agenthood.lock at * injection time. Records detection durably before warning or blocking. * Absent lockfile entries and missing skill files are surfaced too — the * integrity gate being OFF is itself a warning an operator must see * (A09: a silently inert persistence-vector control is worse than none). */ private verifySkillIntegrity; } //# sourceMappingURL=MemberAgent.d.ts.map