/**
 * Cat Agent Services
 * 导出所有 Agent 服务
 */

export { InvocationRegistry } from './agents/invocation/InvocationRegistry.js';
export { InvocationTracker } from './agents/invocation/InvocationTracker.js';
export type { InvocationDeps, InvocationParams } from './agents/invocation/invoke-single-cat.js';
export { invokeSingleCat } from './agents/invocation/invoke-single-cat.js';
export { buildMcpCallbackInstructions, needsMcpInjection } from './agents/invocation/McpPromptInjector.js';
export { ClaudeAgentService } from './agents/providers/ClaudeAgentService.js';
export { CodexAgentService } from './agents/providers/CodexAgentService.js';
export { DareAgentService } from './agents/providers/DareAgentService.js';
export { GeminiAgentService } from './agents/providers/GeminiAgentService.js';
export { KimiAgentService } from './agents/providers/KimiAgentService.js';
export { OpenCodeAgentService } from './agents/providers/OpenCodeAgentService.js';
export { AgentRegistry } from './agents/registry/AgentRegistry.js';
export type { AgentRouterOptions } from './agents/routing/AgentRouter.js';
export { AgentRouter } from './agents/routing/AgentRouter.js';
export type { PersistenceContext, RouteOptions, RouteStrategyDeps } from './agents/routing/route-helpers.js';
export { routeParallel } from './agents/routing/route-parallel.js';
export { routeSerial } from './agents/routing/route-serial.js';
export type { AssembledContext, ContextAssemblerOptions } from './context/ContextAssembler.js';
export { assembleContext, formatMessage } from './context/ContextAssembler.js';
export type { Intent, IntentResult } from './context/IntentParser.js';
export { parseIntent, stripIntentTags } from './context/IntentParser.js';
export type { InvocationContext } from './context/SystemPromptBuilder.js';
export {
  buildInvocationContext,
  buildStaticIdentity,
  buildStaticIdentityPackOnly,
  buildSystemPrompt,
} from './context/SystemPromptBuilder.js';
// Game engine (F101)
export { GameEngine } from './game/GameEngine.js';
export type { GameOrchestratorDeps, StartGameInput } from './game/GameOrchestrator.js';
export { GameOrchestrator } from './game/GameOrchestrator.js';
export type { GameStats, PlayerStats } from './game/GameStatsRecorder.js';
export { GameStatsRecorder } from './game/GameStatsRecorder.js';
export { GameViewBuilder } from './game/GameViewBuilder.js';
export type { AIProvider } from './game/werewolf/WerewolfAIPlayer.js';
export { WerewolfAIPlayer } from './game/werewolf/WerewolfAIPlayer.js';
export { createWerewolfDefinition, WEREWOLF_PRESETS } from './game/werewolf/WerewolfDefinition.js';
// Werewolf (F101 Phase B)
export { WerewolfEngine } from './game/werewolf/WerewolfEngine.js';
export { WerewolfLobby } from './game/werewolf/WerewolfLobby.js';
export { buildWerewolfPrompt } from './game/werewolf/werewolf-prompts.js';
export type { AuditEvent, AuditEventInput } from './orchestration/EventAuditLog.js';
export { AuditEventTypes, EventAuditLog, getEventAuditLog } from './orchestration/EventAuditLog.js';
export { createAuthorizationAuditStore } from './stores/factories/AuthorizationAuditStoreFactory.js';
export { createAuthorizationRuleStore } from './stores/factories/AuthorizationRuleStoreFactory.js';
export { createDraftStore } from './stores/factories/DraftStoreFactory.js';
export type { AnyInvocationRecordStore } from './stores/factories/InvocationRecordStoreFactory.js';
export { createInvocationRecordStore } from './stores/factories/InvocationRecordStoreFactory.js';
export type { AnyMessageStore } from './stores/factories/MessageStoreFactory.js';
export { createMessageStore } from './stores/factories/MessageStoreFactory.js';
export { createPendingRequestStore } from './stores/factories/PendingRequestStoreFactory.js';
export type { AnySessionChainStore } from './stores/factories/SessionChainStoreFactory.js';
export { createSessionChainStore } from './stores/factories/SessionChainStoreFactory.js';
export { createSummaryStore } from './stores/factories/SummaryStoreFactory.js';
export { createTaskStore } from './stores/factories/TaskStoreFactory.js';
export { createThreadStore } from './stores/factories/ThreadStoreFactory.js';
export { DeliveryCursorStore } from './stores/ports/DeliveryCursorStore.js';
export type { DraftRecord, IDraftStore } from './stores/ports/DraftStore.js';
export { DraftStore } from './stores/ports/DraftStore.js';
export type { IGameStore } from './stores/ports/GameStore.js';
export type {
  CreateInvocationInput,
  CreateResult,
  IInvocationRecordStore,
  InvocationRecord,
  InvocationStatus,
  UpdateInvocationInput,
} from './stores/ports/InvocationRecordStore.js';
export { InvocationRecordStore } from './stores/ports/InvocationRecordStore.js';
export {
  ALL_STATUSES,
  getAllowedTransitions,
  isValidTransition,
  TERMINAL_STATES,
} from './stores/ports/invocation-state-machine.js';
export type {
  GovernanceEntry,
  GovernanceStatus,
  IMemoryGovernanceStore,
  PublishAction,
} from './stores/ports/MemoryGovernanceStore.js';
export {
  GovernanceConflictError,
  MemoryGovernanceStore,
  resolveTransition,
} from './stores/ports/MemoryGovernanceStore.js';
export type { AppendMessageInput, IMessageStore, StoredMessage } from './stores/ports/MessageStore.js';
export { MessageStore } from './stores/ports/MessageStore.js';
export type { CreateSessionInput, ISessionChainStore, SessionRecordPatch } from './stores/ports/SessionChainStore.js';
export { SessionChainStore } from './stores/ports/SessionChainStore.js';
export type { ISummaryStore } from './stores/ports/SummaryStore.js';
export { SummaryStore } from './stores/ports/SummaryStore.js';
export type { ITaskStore } from './stores/ports/TaskStore.js';
export { TaskStore } from './stores/ports/TaskStore.js';
export type { IThreadStore, Thread } from './stores/ports/ThreadStore.js';
export { DEFAULT_THREAD_ID, ThreadStore } from './stores/ports/ThreadStore.js';
export { RedisAuthorizationAuditStore } from './stores/redis/RedisAuthorizationAuditStore.js';
export { RedisAuthorizationRuleStore } from './stores/redis/RedisAuthorizationRuleStore.js';
export { RedisDraftStore } from './stores/redis/RedisDraftStore.js';
export { RedisGameStore } from './stores/redis/RedisGameStore.js';
export { RedisInvocationRecordStore } from './stores/redis/RedisInvocationRecordStore.js';
export { RedisMessageStore } from './stores/redis/RedisMessageStore.js';
export { RedisPendingRequestStore } from './stores/redis/RedisPendingRequestStore.js';
export { RedisSessionChainStore } from './stores/redis/RedisSessionChainStore.js';
export { RedisSummaryStore } from './stores/redis/RedisSummaryStore.js';
export { RedisTaskStore } from './stores/redis/RedisTaskStore.js';
export { RedisThreadStore } from './stores/redis/RedisThreadStore.js';

export * from './types.js';
