Skip to main content
Glama
cyqlelabs

MCP Dual-Cycle Reasoner

by cyqlelabs
types.ts6.73 kB
import { z } from 'zod'; import { DESCRIPTIONS } from './constants.js'; // Configuration for domain-specific detection settings export const SentinelConfigSchema = z.object({ progress_indicators: z.array(z.string()).default([]).describe(DESCRIPTIONS.PROGRESS_INDICATORS), min_actions_for_detection: z.number().default(5).describe(DESCRIPTIONS.MIN_ACTIONS_FOR_DETECTION), alternating_threshold: z.number().default(0.5).describe(DESCRIPTIONS.ALTERNATING_THRESHOLD), repetition_threshold: z.number().default(0.4).describe(DESCRIPTIONS.REPETITION_THRESHOLD), progress_threshold_adjustment: z .number() .default(0.2) .describe(DESCRIPTIONS.PROGRESS_THRESHOLD_ADJUSTMENT), statistical_analysis: z .object({ entropy_threshold: z.number().default(0.6).describe(DESCRIPTIONS.ENTROPY_THRESHOLD), variance_threshold: z.number().default(0.1).describe(DESCRIPTIONS.VARIANCE_THRESHOLD), trend_threshold: z.number().default(0.1).describe(DESCRIPTIONS.TREND_THRESHOLD), cyclicity_threshold: z.number().default(0.3).describe(DESCRIPTIONS.CYCLICITY_THRESHOLD), }) .optional(), // Domain-specific semantic configuration semantic_intents: z .array(z.string()) .default([ 'performing action', 'checking status', 'retrieving information', 'processing data', 'handling error', 'completing task', 'initiating process', 'validating result', 'organizing information', 'communicating result', ]) .describe(DESCRIPTIONS.SEMANTIC_INTENTS), }); // Simplified Core Types for LLM usability export const AgentActionSchema = z.object({ type: z.string().describe(DESCRIPTIONS.ACTION_NAME), timestamp: z .number() .optional() .default(() => Date.now()), result: z.string().optional().describe(DESCRIPTIONS.ACTION_RESULT), }); export const EnvironmentStateSchema = z.object({ context: z.string().optional().describe(DESCRIPTIONS.ENVIRONMENT_CONTEXT), timestamp: z .number() .optional() .default(() => Date.now()), }); export const CognitiveTraceSchema = z.object({ last_action: z.string().describe(DESCRIPTIONS.LAST_ACTION), current_context: z.string().optional().describe(DESCRIPTIONS.CURRENT_CONTEXT), goal: z.string().describe(DESCRIPTIONS.GOAL), }); // Loop Detection Types export const LoopTypeSchema = z.enum([ 'action_repetition', 'state_invariance', 'progress_stagnation', ]); export const LoopDetectionDetailsSchema = z.object({ dominant_method: z.string().optional(), anomaly_score: z.number().optional(), actions_involved_count: z.number().optional(), recent_actions_count: z.number().optional(), metrics: z.record(z.string(), z.any()).optional(), }); export const LoopDetectionResultSchema = z.object({ detected: z.boolean(), type: z.optional(LoopTypeSchema), confidence: z.number(), details: LoopDetectionDetailsSchema, actions_involved: z.array(z.string()).optional(), statistical_metrics: z .object({ entropy_score: z.number().optional(), variance_score: z.number().optional(), trend_score: z.number().optional(), cyclicity_score: z.number().optional(), }) .optional(), }); // Enhanced Case-Based Reasoning Types export const CaseSchema = z.object({ id: z .string() .optional() .default(() => Math.random().toString(36)), problem_description: z.string().describe(DESCRIPTIONS.PROBLEM_DESCRIPTION), solution: z.string().describe(DESCRIPTIONS.SOLUTION), outcome: z.boolean().describe(DESCRIPTIONS.OUTCOME), timestamp: z .number() .optional() .default(() => Date.now()), // Enhanced metadata for better retrieval context: z.string().optional(), difficulty_level: z.enum(['low', 'medium', 'high']).optional(), success_rate: z.number().min(0).max(1).optional(), usage_count: z.number().min(0).default(0), // Quality metrics confidence_score: z.number().min(0).max(1).optional(), // Semantic features semantic_features: z .object({ intents: z.array(z.string()).optional(), sentiment: z.enum(['positive', 'negative', 'neutral']).optional(), keywords: z.array(z.string()).optional(), }) .optional(), // Similarity metrics (computed during retrieval) similarity_metrics: z .object({ semantic_similarity: z.number().optional(), jaccard_similarity: z.number().optional(), cosine_similarity: z.number().optional(), raw_similarity: z.number().optional(), combined_similarity: z.number().optional(), }) .optional(), }); // MCP Tool Input/Output Types - Flattened for single-level parameters export const MonitorCognitiveTraceInputSchema = z.object({ last_action: z.string().describe(DESCRIPTIONS.LAST_ACTION), current_context: z.string().optional().describe(DESCRIPTIONS.CURRENT_CONTEXT), goal: z.string().describe(DESCRIPTIONS.GOAL), window_size: z.number().default(10), }); export const DetectLoopInputSchema = z.object({ current_context: z.string().optional().describe(DESCRIPTIONS.CURRENT_CONTEXT), goal: z.string().describe(DESCRIPTIONS.GOAL), detection_method: z.enum(['statistical', 'pattern', 'hybrid']).default('hybrid'), }); export const StoreExperienceInputSchema = z.object({ problem_description: z.string().describe(DESCRIPTIONS.PROBLEM_DESCRIPTION), solution: z.string().describe(DESCRIPTIONS.SOLUTION), outcome: z.boolean().describe(DESCRIPTIONS.OUTCOME), context: z.string().optional().describe('The context in which this case occurred'), difficulty_level: z .enum(['low', 'medium', 'high']) .optional() .describe('The difficulty level of this case'), }); export const RetrieveSimilarCasesInputSchema = z.object({ problem_description: z.string().describe(DESCRIPTIONS.PROBLEM_DESCRIPTION), max_results: z.number().default(5).describe(DESCRIPTIONS.MAX_RESULTS), context_filter: z.string().optional().describe('Filter cases by context'), difficulty_filter: z .enum(['low', 'medium', 'high']) .optional() .describe('Filter cases by difficulty level'), outcome_filter: z.boolean().optional().describe('Filter cases by outcome (success/failure)'), min_similarity: z.number().min(0).max(1).optional().describe('Minimum similarity threshold'), }); // Type exports export type AgentAction = z.infer<typeof AgentActionSchema>; export type EnvironmentState = z.infer<typeof EnvironmentStateSchema>; export type CognitiveTrace = z.infer<typeof CognitiveTraceSchema>; export type LoopType = z.infer<typeof LoopTypeSchema>; export type LoopDetectionResult = z.infer<typeof LoopDetectionResultSchema>; export type Case = z.infer<typeof CaseSchema>; export type SentinelConfig = z.infer<typeof SentinelConfigSchema>;

Implementation Reference

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cyqlelabs/mcp-dual-cycle-reasoner'

If you have feedback or need assistance with the MCP directory API, please join our Discord server