UNPKG

claude-flow-novice

Version:

Claude Flow Novice - Advanced orchestration platform for multi-agent AI workflows with CFN Loop architecture Includes Local RuVector Accelerator and all CFN skills for complete functionality.

929 lines (704 loc) 28.8 kB
# API Reference **Version:** 1.0 **Last Updated:** 2025-11-16 **Status:** Complete ## Table of Contents 1. [DatabaseService API](#databaseservice-api) 2. [CoordinationManager API](#coordinationmanager-api) 3. [ArtifactStorage API](#artifactstorage-api) 4. [TransactionManager API](#transactionmanager-api) 5. [SkillDeployment API](#skilldeployment-api) 6. [EdgeCaseAnalyzer API](#edgecaseanalyzer-api) 7. [Error Codes](#error-codes) --- ## DatabaseService API The DatabaseService provides unified access to all databases with automatic caching, schema validation, and connection pooling. ### `query(request: QueryRequest): Promise<QueryResponse>` **Description:** Execute a database query with automatic caching and schema validation. **Parameters:** - `request: QueryRequest` - Query request object containing: - `correlation_key: string` (required) - Unique operation identifier - `operation: "select" | "insert" | "update" | "delete" | "upsert"` (required) - Operation type - `database: string` (optional, default: "primary") - Target database - `table: string` (required) - Target table - `schema: string` (optional) - Schema name (auto-discovered if omitted) - `fields: string[]` (optional) - Fields to select (default: all) - `filters: Record<string, any>` (optional) - WHERE clause filters - `values: Record<string, any>` (optional) - Values for insert/update - `options: QueryOptions` (optional) - Query options **Returns:** `Promise<QueryResponse>` with fields: - `status: "success" | "error" | "cached"` - Operation status - `result: {rows: any[], row_count: number, affected_rows: number}` - Query results - `metadata: {execution_time_ms: number, from_cache: boolean, ...}` - Execution metadata - `errors: Error[]` - Any validation or execution errors **Throws:** - `VALIDATION_FAILED` - Input validation failed - `SCHEMA_NOT_FOUND` - Requested schema not found - `QUERY_TIMEOUT` - Query exceeded timeout - `DATABASE_UNAVAILABLE` - Cannot connect to database - `INVALID_SCHEMA` - Schema validation failed **Example:** ```typescript const response = await databaseService.query({ correlation_key: "query-001:iter-1:1731752400000", operation: "select", table: "agents", schema: "cfn_schema", fields: ["id", "status", "confidence"], filters: { status: "completed", confidence: { $gte: 0.75 } }, options: { cache_ttl_seconds: 300, timeout_seconds: 10 } }); console.log(response.result.rows); // Array of agents console.log(response.metadata.from_cache); // boolean ``` --- ### `registerSchema(schema: SchemaDefinition): Promise<SchemaRegistration>` **Description:** Register a new database schema for validation and discovery. **Parameters:** - `schema: SchemaDefinition` - Schema definition containing: - `schema_id: string` (required) - Unique schema identifier - `schema_version: number` (required) - Version number - `source_database: string` (required) - Source database - `fields: FieldDefinition[]` (required) - Field definitions - `primary_key: string` (optional) - Primary key field **Returns:** `Promise<SchemaRegistration>` with: - `schema_id: string` - Registered schema ID - `version: number` - Schema version - `status: "registered"` - Registration status - `cached_until: string` - When cache expires **Throws:** - `INVALID_SCHEMA` - Schema definition invalid - `SCHEMA_ID_CONFLICT` - Schema ID already exists - `FIELD_DEFINITION_ERROR` - Invalid field definition **Example:** ```typescript const registration = await databaseService.registerSchema({ schema_id: "agents-v2", schema_version: 2, source_database: "primary", fields: [ { name: "id", type: "string", required: true }, { name: "status", type: "enum", enum_values: ["running", "completed"], required: true }, { name: "confidence", type: "number", min: 0, max: 1 } ] }); console.log(registration.status); // "registered" ``` --- ### `getSchema(schema_id: string): Promise<SchemaDefinition>` **Description:** Retrieve a registered schema definition. **Parameters:** - `schema_id: string` - Schema identifier to retrieve **Returns:** `Promise<SchemaDefinition>` - Complete schema definition **Throws:** - `SCHEMA_NOT_FOUND` - Schema not found - `CACHE_MISS` - Schema not in cache (will auto-discover) **Example:** ```typescript const schema = await databaseService.getSchema("agents-v2"); console.log(schema.fields); // Array of field definitions ``` --- ### `executeTransaction(txn: TransactionRequest): Promise<TransactionHandle>` **Description:** Begin a distributed transaction across multiple databases. **Parameters:** - `txn: TransactionRequest` - Transaction request: - `correlation_key: string` (required) - Operation identifier - `transaction_type: "read" | "write" | "mixed"` (required) - Transaction type - `databases: string[]` (required) - Databases to involve - `timeout_seconds: number` (optional, default: 60) - Timeout - `isolation_level: string` (optional) - Isolation level **Returns:** `Promise<TransactionHandle>` - Handle for transaction operations **Throws:** - `DATABASE_UNAVAILABLE` - Cannot connect to database - `TRANSACTION_TIMEOUT` - Already exceeded timeout **Example:** ```typescript const handle = await databaseService.executeTransaction({ correlation_key: "txn-001:iter-1:1731752400000", transaction_type: "write", databases: ["primary", "cache"], timeout_seconds: 30 }); // Use handle for further operations await handle.query({operation: "update", ...}); ``` --- ### `cacheQuery(key: string, data: any, ttl_seconds: number): Promise<void>` **Description:** Manually cache query results. **Parameters:** - `key: string` - Cache key - `data: any` - Data to cache - `ttl_seconds: number` - Time-to-live in seconds **Returns:** `Promise<void>` **Throws:** - `CACHE_UNAVAILABLE` - Redis not available **Example:** ```typescript await databaseService.cacheQuery("agents-completed", agentsData, 300); ``` --- ## CoordinationManager API The CoordinationManager provides inter-agent signaling and synchronization primitives. ### `broadcastSignal(signal: BroadcastSignal): Promise<BroadcastResult>` **Description:** Broadcast a signal to multiple agents via Redis Pub/Sub. **Parameters:** - `signal: BroadcastSignal` - Signal to broadcast: - `signal_type: "broadcast" | "unicast"` (required) - Signal type - `topic: string` (required) - Redis topic - `agents: string[]` (required) - Target agent IDs - `message: any` (required) - Message payload - `retry_count: number` (optional, default: 0) - Retry count **Returns:** `Promise<BroadcastResult>` with: - `status: "sent" | "partial_failure" | "failure"` - Broadcast status - `delivered_to: string[]` - Successfully delivered agents - `failed_for: string[]` - Agents that didn't receive **Throws:** - `REDIS_UNAVAILABLE` - Redis not available - `INVALID_TOPIC` - Topic format invalid - `EMPTY_AGENT_LIST` - No agents specified **Example:** ```typescript const result = await coordinationManager.broadcastSignal({ signal_type: "broadcast", topic: "swarm:task-001:*:start", agents: ["agent-1", "agent-2", "agent-3"], message: { operation: "start_loop", phase: "loop3", context: { iteration: 1 } } }); console.log(result.delivered_to); // ['agent-1', 'agent-2', 'agent-3'] ``` --- ### `wait(request: WaitRequest): Promise<WaitResponse>` **Description:** Block until a signal arrives or timeout occurs. **Parameters:** - `request: WaitRequest` - Wait request: - `agent_id: string` (required) - Waiting agent ID - `topic: string` (required) - Topic to wait on - `timeout_seconds: number` (optional, default: 300) - Timeout - `callback: Function` (optional) - Callback when signal arrives **Returns:** `Promise<WaitResponse>` with: - `status: "signaled" | "timeout" | "error"` - Wait result - `signal: any` (optional) - Received signal message - `waited_ms: number` - Actual wait time **Throws:** - `TIMEOUT` - Waited longer than timeout - `INVALID_TOPIC` - Topic format invalid - `REDIS_UNAVAILABLE` - Redis not available **Example:** ```typescript const response = await coordinationManager.wait({ agent_id: "agent-123", topic: "swarm:task-001:gate:passed", timeout_seconds: 300 }); if (response.status === "signaled") { console.log("Gate passed!", response.signal); } else if (response.status === "timeout") { console.log("Wait timeout after", response.waited_ms, "ms"); } ``` --- ### `reportCompletion(report: CompletionReport): Promise<void>` **Description:** Report task completion with confidence score. **Parameters:** - `report: CompletionReport` - Completion report: - `task_id: string` (required) - Task identifier - `agent_id: string` (required) - Agent identifier - `correlation_key: string` (required) - Correlation key - `confidence: number` (required) - Confidence score 0-1 - `status: "success" | "partial" | "failure"` (required) - Status - `result: any` (optional) - Result data - `metadata: any` (optional) - Additional metadata **Returns:** `Promise<void>` **Throws:** - `INVALID_CONFIDENCE` - Confidence not 0-1 - `REDIS_UNAVAILABLE` - Redis not available **Example:** ```typescript await coordinationManager.reportCompletion({ task_id: "task-001", agent_id: "agent-123", correlation_key: "query-001:iter-1:1731752400000", confidence: 0.92, status: "success", result: { agents_analyzed: 10 }, metadata: { duration_ms: 2500 } }); ``` --- ### `collectConsensus(request: ConsensusRequest): Promise<ConsensusResult>` **Description:** Collect consensus votes from multiple validators. **Parameters:** - `request: ConsensusRequest` - Consensus request: - `task_id: string` (required) - Task identifier - `validator_ids: string[]` (required) - Validator agent IDs - `consensus_type: "unanimous" | "majority" | "threshold"` (required) - Type - `threshold: number` (optional, default: 0.90) - Pass threshold - `timeout_seconds: number` (optional, default: 300) - Timeout **Returns:** `Promise<ConsensusResult>` with: - `status: "passed" | "failed"` - Consensus status - `votes: Record<string, number>` - Confidence scores from validators - `average_confidence: number` - Average score - `passed_count: number` - Number passing threshold **Throws:** - `TIMEOUT` - Collection timeout - `NO_RESPONSES` - No validators responded **Example:** ```typescript const consensus = await coordinationManager.collectConsensus({ task_id: "task-001", validator_ids: ["validator-1", "validator-2", "validator-3"], consensus_type: "threshold", threshold: 0.90, timeout_seconds: 300 }); console.log(consensus.status); // "passed" or "failed" console.log(consensus.average_confidence); // e.g., 0.92 ``` --- ### `registerAgent(agent: AgentRegistration): Promise<string>` **Description:** Register an agent in the coordination system. **Parameters:** - `agent: AgentRegistration` - Agent registration: - `agent_id: string` (required) - Agent identifier - `agent_type: string` (required) - Type of agent - `process_id: number` (required) - Process ID - `metadata: any` (optional) - Additional metadata **Returns:** `Promise<string>` - Agent registration ID **Throws:** - `AGENT_ID_CONFLICT` - Agent ID already registered - `INVALID_PROCESS_ID` - Invalid process ID **Example:** ```typescript const registration_id = await coordinationManager.registerAgent({ agent_id: "agent-123", agent_type: "backend-developer", process_id: 12345, metadata: { iteration: 1, task: "implement-feature" } }); ``` --- ## ArtifactStorage API The ArtifactStorage provides versioned content storage with Git-like revision history. ### `storeArtifact(request: StoreRequest): Promise<StoreResponse>` **Description:** Store a new artifact version. **Parameters:** - `request: StoreRequest` - Store request: - `correlation_key: string` (required) - Operation identifier - `artifact_name: string` (required) - Artifact name - `artifact_type: "document" | "code" | "data" | "analysis"` (required) - Type - `content: string | Buffer` (required) - Artifact content - `format: string` (required) - Format (markdown, json, csv, binary) - `metadata: Record<string, any>` (optional) - Metadata **Returns:** `Promise<StoreResponse>` with: - `artifact_info: {name, version, created_at, size_bytes, ...}` - Artifact info - `status: "success" | "error"` - Storage status **Throws:** - `INVALID_ARTIFACT_NAME` - Name format invalid - `STORAGE_FULL` - Storage quota exceeded - `FILE_SYSTEM_ERROR` - Cannot write to storage **Example:** ```typescript const response = await artifactStorage.storeArtifact({ correlation_key: "query-001:iter-1:1731752400000", artifact_name: "analysis-report", artifact_type: "document", content: "# Analysis Report\n\nFindings...", format: "markdown", metadata: { created_by: "agent-123", description: "Performance analysis", tags: ["important", "weekly"] } }); console.log(response.artifact_info.version); // 1 console.log(response.artifact_info.url); // file:///artifacts/analysis-report/v1/content ``` --- ### `retrieveArtifact(request: RetrieveRequest): Promise<RetrieveResponse>` **Description:** Retrieve an artifact by name and version. **Parameters:** - `request: RetrieveRequest` - Retrieve request: - `artifact_name: string` (required) - Artifact name - `version: "latest" | number` (optional, default: "latest") - Version - `correlation_key: string` (required) - Operation identifier **Returns:** `Promise<RetrieveResponse>` with: - `content: string | Buffer` - Artifact content - `artifact_info: {...}` - Artifact metadata - `metadata: {created_by, tags, ...}` - Additional metadata **Throws:** - `ARTIFACT_NOT_FOUND` - Artifact doesn't exist - `VERSION_NOT_FOUND` - Requested version doesn't exist - `FILE_READ_ERROR` - Cannot read artifact **Example:** ```typescript const response = await artifactStorage.retrieveArtifact({ artifact_name: "analysis-report", version: "latest", correlation_key: "query-001:iter-1:1731752400000" }); console.log(response.content); // Artifact content console.log(response.artifact_info.version); // e.g., 5 ``` --- ### `listVersions(artifact_name: string, limit?: number): Promise<VersionInfo[]>` **Description:** List all versions of an artifact. **Parameters:** - `artifact_name: string` - Artifact name - `limit: number` (optional, default: 10) - Maximum versions to return **Returns:** `Promise<VersionInfo[]>` - Array of version information **Throws:** - `ARTIFACT_NOT_FOUND` - Artifact doesn't exist **Example:** ```typescript const versions = await artifactStorage.listVersions("analysis-report", 5); versions.forEach(v => { console.log(`Version ${v.version}: ${v.description} (${v.size_bytes} bytes)`); }); ``` --- ### `getVersionDiff(artifact_name: string, from_version: number, to_version: number): Promise<DiffResult>` **Description:** Get differences between two versions. **Parameters:** - `artifact_name: string` - Artifact name - `from_version: number` - First version number - `to_version: number` - Second version number **Returns:** `Promise<DiffResult>` with: - `diff_content: string` - Unified diff format - `added_lines: number` - Number of added lines - `removed_lines: number` - Number of removed lines - `modified_lines: number` - Number of modified lines **Throws:** - `VERSION_NOT_FOUND` - One or both versions not found - `CANNOT_DIFF_BINARY` - Cannot diff binary formats **Example:** ```typescript const diff = await artifactStorage.getVersionDiff("analysis-report", 1, 2); console.log(diff.diff_content); // Unified diff console.log(`Added: ${diff.added_lines}, Removed: ${diff.removed_lines}`); ``` --- ## TransactionManager API The TransactionManager provides distributed transaction management with ACID guarantees. ### `beginTransaction(request: TransactionRequest): Promise<Transaction>` **Description:** Begin a new distributed transaction. **Parameters:** - `request: TransactionRequest` - Transaction request: - `correlation_key: string` (required) - Operation identifier - `transaction_type: "read" | "write" | "mixed"` (required) - Transaction type - `databases: string[]` (required) - Databases to involve - `timeout_seconds: number` (optional, default: 60) - Timeout - `isolation_level: string` (optional) - Isolation level **Returns:** `Promise<Transaction>` - Transaction handle **Throws:** - `DATABASE_UNAVAILABLE` - Cannot connect to database - `INVALID_ISOLATION_LEVEL` - Isolation level not supported **Example:** ```typescript const txn = await transactionManager.beginTransaction({ correlation_key: "txn-001:iter-1:1731752400000", transaction_type: "write", databases: ["primary", "cache"], timeout_seconds: 30, isolation_level: "repeatable_read" }); console.log(txn.transaction_id); // e.g., "txn-abc123" ``` --- ### `Transaction.query(operation: QueryRequest): Promise<QueryResponse>` **Description:** Execute a query within a transaction. **Parameters:** - `operation: QueryRequest` - Query operation (same format as DatabaseService) **Returns:** `Promise<QueryResponse>` - Query result **Throws:** - `TRANSACTION_ABORTED` - Transaction already aborted - `QUERY_TIMEOUT` - Query exceeded timeout - `CONFLICT_DETECTED` - Write-write conflict **Example:** ```typescript const result = await txn.query({ operation: "update", table: "agents", filters: { id: "agent-123" }, values: { status: "completed" } }); ``` --- ### `Transaction.createSavepoint(name: string): Promise<SavepointInfo>` **Description:** Create a rollback savepoint. **Parameters:** - `name: string` - Savepoint name **Returns:** `Promise<SavepointInfo>` with: - `savepoint_id: string` - Savepoint identifier - `timestamp: string` - Creation timestamp **Throws:** - `TRANSACTION_ABORTED` - Transaction already aborted - `INVALID_SAVEPOINT_NAME` - Name format invalid **Example:** ```typescript const sp = await txn.createSavepoint("before_critical_update"); console.log(sp.savepoint_id); // e.g., "sp-2" ``` --- ### `Transaction.rollbackToSavepoint(savepoint_id: string): Promise<void>` **Description:** Rollback transaction to a savepoint. **Parameters:** - `savepoint_id: string` - Savepoint identifier **Returns:** `Promise<void>` **Throws:** - `SAVEPOINT_NOT_FOUND` - Savepoint doesn't exist - `INVALID_SAVEPOINT_ID` - Savepoint ID invalid **Example:** ```typescript await txn.rollbackToSavepoint("sp-2"); console.log("Rolled back to savepoint sp-2"); ``` --- ### `Transaction.commit(): Promise<CommitResult>` **Description:** Commit the transaction. **Returns:** `Promise<CommitResult>` with: - `status: "success" | "conflict" | "timeout"` - Commit status - `operations_committed: number` - Number of operations committed - `conflicts_detected: number` - Number of conflicts **Throws:** - `CONFLICT_DETECTED` - Write-write conflict (may auto-rollback) - `TRANSACTION_TIMEOUT` - Exceeded timeout **Example:** ```typescript const result = await txn.commit(); if (result.status === "success") { console.log(`Committed ${result.operations_committed} operations`); } else if (result.status === "conflict") { console.log(`${result.conflicts_detected} conflicts detected`); } ``` --- ### `Transaction.rollback(): Promise<void>` **Description:** Rollback the entire transaction. **Returns:** `Promise<void>` **Throws:** - `TRANSACTION_ALREADY_CLOSED` - Transaction already closed **Example:** ```typescript await txn.rollback(); console.log("Transaction rolled back"); ``` --- ## SkillDeployment API The SkillDeployment provides standardized execution of scripts and tools. ### `executeSkill(request: SkillRequest): Promise<SkillResponse>` **Description:** Execute a skill with frontmatter metadata and environment injection. **Parameters:** - `request: SkillRequest` - Skill execution request: - `skill_name: string` (required) - Skill name - `skill_version: string` (optional, default: "latest") - Skill version - `parameters: Record<string, any>` (optional) - Skill parameters - `environment: Record<string, string>` (optional) - Environment variables - `timeout_seconds: number` (optional, default: 60) - Timeout - `retry_policy: {max_attempts: number, backoff_seconds: number}` (optional) - Retry policy - `correlation_key: string` (required) - Operation identifier **Returns:** `Promise<SkillResponse>` with: - `status: "success" | "error" | "timeout"` - Execution status - `output: {result: any}` - Parsed JSON output - `execution: {started_at, completed_at, duration_ms}` - Execution info - `metadata: {exit_code, stdout_lines, stderr_lines}` - Execution metadata **Throws:** - `SKILL_NOT_FOUND` - Skill doesn't exist - `MISSING_DEPENDENCY` - Required dependency missing - `EXECUTION_TIMEOUT` - Exceeded timeout - `INVALID_JSON_OUTPUT` - Output is not valid JSON **Example:** ```typescript const response = await skillDeployment.executeSkill({ skill_name: "analyze-database", skill_version: "1.0", parameters: { database: "primary", metric_type: "performance" }, environment: { DATABASE_URL: "sqlite:///data/primary.db", REDIS_URL: "redis://localhost:6379", CORRELATION_KEY: "skill-001:iter-1:1731752400000" }, timeout_seconds: 60, correlation_key: "skill-001:iter-1:1731752400000" }); console.log(response.output.result); // Parsed JSON output console.log(response.execution.duration_ms); // e.g., 4523 ``` --- ### `listSkills(): Promise<SkillInfo[]>` **Description:** List all available skills. **Returns:** `Promise<SkillInfo[]>` - Array of skill information **Throws:** - `SKILL_DIRECTORY_ERROR` - Cannot read skill directory **Example:** ```typescript const skills = await skillDeployment.listSkills(); skills.forEach(skill => { console.log(`${skill.name} v${skill.version}: ${skill.description}`); }); ``` --- ### `getSkillMetadata(skill_name: string): Promise<SkillMetadata>` **Description:** Get frontmatter metadata for a skill. **Parameters:** - `skill_name: string` - Skill name **Returns:** `Promise<SkillMetadata>` with: - `name: string` - Skill name - `version: string` - Skill version - `description: string` - Description - `required_environment: string[]` - Required env vars - `optional_environment: string[]` - Optional env vars - `timeout_seconds: number` - Default timeout - `dependencies: string[]` - Required commands **Throws:** - `SKILL_NOT_FOUND` - Skill doesn't exist - `PARSE_ERROR` - Cannot parse frontmatter **Example:** ```typescript const metadata = await skillDeployment.getSkillMetadata("analyze-database"); console.log(metadata.required_environment); // ['DATABASE_URL', 'REDIS_URL'] console.log(metadata.timeout_seconds); // 60 ``` --- ## EdgeCaseAnalyzer API The EdgeCaseAnalyzer detects anomalies, patterns, and generates insights. ### `analyzeExecution(execution: ExecutionData): Promise<AnalysisResult>` **Description:** Analyze execution data for edge cases and patterns. **Parameters:** - `execution: ExecutionData` - Execution data: - `correlation_key: string` (required) - Operation identifier - `iteration: number` (required) - Iteration number - `agent_confidence_scores: Record<string, number>` (required) - Confidence by agent - `execution_times: Record<string, number>` (optional) - Duration by agent - `error_logs: string[]` (optional) - Error messages **Returns:** `Promise<AnalysisResult>` with: - `patterns: Pattern[]` - Detected patterns - `anomalies: Anomaly[]` - Detected anomalies - `insights: Insight[]` - Generated insights - `recommendations: string[]` - Improvement suggestions **Throws:** - `INVALID_EXECUTION_DATA` - Data format invalid - `ANALYSIS_TIMEOUT` - Analysis exceeded timeout **Example:** ```typescript const analysis = await edgeCaseAnalyzer.analyzeExecution({ correlation_key: "analysis-001:iter-1:1731752400000", iteration: 1, agent_confidence_scores: { "agent-1": 0.92, "agent-2": 0.87, "agent-3": 0.45 // Low confidence }, execution_times: { "agent-1": 2500, "agent-2": 2300, "agent-3": 8500 // High execution time } }); console.log(analysis.anomalies); // Detected issues console.log(analysis.recommendations); // Suggestions ``` --- ### `persistReflection(reflection: ReflectionData): Promise<string>` **Description:** Persist analysis reflection for future reference. **Parameters:** - `reflection: ReflectionData` - Reflection data: - `analysis_type: "pattern" | "insight" | "anomaly" | "metric"` (required) - Type - `subject: string` (required) - Analysis subject - `reflection_data: any` (required) - Analysis results - `correlation_key: string` (required) - Operation identifier - `confidence: number` (required) - Confidence score 0-1 **Returns:** `Promise<string>` - Reflection ID **Throws:** - `DATABASE_UNAVAILABLE` - Cannot persist to database - `INVALID_REFLECTION_DATA` - Data format invalid **Example:** ```typescript const reflection_id = await edgeCaseAnalyzer.persistReflection({ analysis_type: "pattern", subject: "confidence_variance", reflection_data: { pattern: "high_variance_confidence", affected_agents: ["agent-3"], possible_causes: ["timeout", "resource_limitation"] }, correlation_key: "analysis-001:iter-1:1731752400000", confidence: 0.87 }); console.log(reflection_id); // e.g., "refl-abc123" ``` --- ### `queryReflections(query: ReflectionQuery): Promise<Reflection[]>` **Description:** Query previously persisted reflections. **Parameters:** - `query: ReflectionQuery` - Query parameters: - `analysis_type: string` (optional) - Filter by type - `subject: string` (optional) - Filter by subject - `limit: number` (optional, default: 10) - Result limit **Returns:** `Promise<Reflection[]>` - Matching reflections **Throws:** - `DATABASE_UNAVAILABLE` - Cannot query database **Example:** ```typescript const reflections = await edgeCaseAnalyzer.queryReflections({ analysis_type: "pattern", subject: "confidence_variance", limit: 5 }); reflections.forEach(r => { console.log(`${r.pattern}: ${r.description} (confidence: ${r.confidence})`); }); ``` --- ## Error Codes ### Database Errors | Code | Status | Meaning | Retry | |------|--------|---------|-------| | VALIDATION_FAILED | 400 | Input validation error | No | | SCHEMA_NOT_FOUND | 404 | Requested schema missing | No | | QUERY_TIMEOUT | 504 | Query exceeded timeout | Yes | | DATABASE_UNAVAILABLE | 503 | Cannot connect | Yes | | INVALID_SCHEMA | 400 | Schema validation failed | No | | PERMISSION_DENIED | 403 | Insufficient permissions | No | | CONFLICT | 409 | Data conflict (transaction) | Conditional | ### Coordination Errors | Code | Status | Meaning | Retry | |------|--------|---------|-------| | REDIS_UNAVAILABLE | 503 | Redis not available | Yes | | TIMEOUT | 504 | Wait timeout exceeded | No | | INVALID_TOPIC | 400 | Topic format invalid | No | | EMPTY_AGENT_LIST | 400 | No agents specified | No | | AGENT_NOT_FOUND | 404 | Agent not found | No | ### Storage Errors | Code | Status | Meaning | Retry | |------|--------|---------|-------| | ARTIFACT_NOT_FOUND | 404 | Artifact doesn't exist | No | | VERSION_NOT_FOUND | 404 | Version doesn't exist | No | | STORAGE_FULL | 507 | Storage quota exceeded | No | | FILE_SYSTEM_ERROR | 500 | Cannot write to storage | Yes | | CANNOT_DIFF_BINARY | 400 | Cannot diff binary format | No | ### Skill Errors | Code | Status | Meaning | Retry | |------|--------|---------|-------| | SKILL_NOT_FOUND | 404 | Skill doesn't exist | No | | MISSING_DEPENDENCY | 424 | Required dependency missing | No | | EXECUTION_TIMEOUT | 504 | Exceeded timeout | Yes | | INVALID_JSON_OUTPUT | 400 | Output not valid JSON | No | | SKILL_DIRECTORY_ERROR | 500 | Cannot read skill directory | Yes | --- **Document Reference:** API_REFERENCE.md **Maintained By:** API Documentation Specialist **Last Reviewed:** 2025-11-16