Skip to main content
Glama

Sequential Thinking Multi-Agent System

by FradSer
constants.py9.91 kB
"""Constants for the MCP Sequential Thinking Server.""" from enum import Enum from typing import ClassVar class TokenCosts: """Token cost constants for different providers (cost per 1000 tokens).""" DEEPSEEK_COST_PER_1K = 0.0002 GROQ_COST_PER_1K = 0.0001 OPENROUTER_COST_PER_1K = 0.001 GITHUB_COST_PER_1K = 0.0005 OLLAMA_COST_PER_1K = 0.0000 DEFAULT_COST_PER_1K = 0.0002 class ComplexityScoring: """Complexity analysis scoring constants.""" MAX_SCORE = 100.0 WORD_COUNT_MAX_POINTS = 15 WORD_COUNT_DIVISOR = 20 SENTENCE_MULTIPLIER = 2 SENTENCE_MAX_POINTS = 10 QUESTION_MULTIPLIER = 3 QUESTION_MAX_POINTS = 15 TECHNICAL_TERM_MULTIPLIER = 2 TECHNICAL_TERM_MAX_POINTS = 20 BRANCHING_MULTIPLIER = 5 BRANCHING_MAX_POINTS = 15 RESEARCH_MULTIPLIER = 3 RESEARCH_MAX_POINTS = 15 ANALYSIS_MULTIPLIER = 2 ANALYSIS_MAX_POINTS = 10 class TokenEstimates: """Token estimation ranges by complexity and strategy.""" # Single agent token estimates (min, max) SINGLE_AGENT_SIMPLE = (400, 800) SINGLE_AGENT_MODERATE = (600, 1200) SINGLE_AGENT_COMPLEX = (800, 1600) SINGLE_AGENT_HIGHLY_COMPLEX = (1000, 2000) # Multi-agent token estimates (min, max) MULTI_AGENT_SIMPLE = (2000, 4000) MULTI_AGENT_MODERATE = (3000, 6000) MULTI_AGENT_COMPLEX = (4000, 8000) MULTI_AGENT_HIGHLY_COMPLEX = (5000, 10000) class ValidationLimits: """Input validation and system limits.""" MAX_PROBLEM_LENGTH = 500 MAX_CONTEXT_LENGTH = 300 MAX_THOUGHTS_PER_SESSION = 1000 MAX_BRANCHES_PER_SESSION = 50 MAX_THOUGHTS_PER_BRANCH = 100 GITHUB_TOKEN_LENGTH = 40 MIN_THOUGHT_NUMBER = 1 class DefaultTimeouts: """Default timeout values in seconds.""" PROCESSING_TIMEOUT = 30.0 DEEPSEEK_PROCESSING_TIMEOUT = 120.0 # Legacy timeout for Deepseek (deprecated) MULTI_AGENT_TIMEOUT_MULTIPLIER = 2.0 # Multiply timeout for multi-agent # Adaptive timeout strategy (v0.5.1+) ADAPTIVE_BASE_DEEPSEEK = 90.0 # Base timeout for Deepseek with adaptive scaling ADAPTIVE_BASE_GROQ = 20.0 # Base timeout for Groq ADAPTIVE_BASE_OPENAI = 45.0 # Base timeout for OpenAI ADAPTIVE_BASE_DEFAULT = 30.0 # Default base timeout # Maximum timeouts (safety ceiling) MAX_TIMEOUT_DEEPSEEK = 300.0 # 5 minutes absolute maximum for Deepseek MAX_TIMEOUT_DEFAULT = 180.0 # 3 minutes maximum for others # Complexity multipliers for adaptive timeouts COMPLEXITY_SIMPLE_MULTIPLIER = 1.0 COMPLEXITY_MODERATE_MULTIPLIER = 1.5 COMPLEXITY_COMPLEX_MULTIPLIER = 2.0 COMPLEXITY_HIGHLY_COMPLEX_MULTIPLIER = 3.0 # Retry configuration RETRY_EXPONENTIAL_BASE = 1.5 # Exponential backoff base MAX_RETRY_ATTEMPTS = 2 # Maximum retry attempts SESSION_CLEANUP_DAYS = 30 RECENT_SESSION_KEEP_COUNT = 100 class LoggingLimits: """Logging configuration constants.""" LOG_FILE_MAX_BYTES = 5 * 1024 * 1024 # 5MB LOG_BACKUP_COUNT = 3 SENSITIVE_DATA_MIN_LENGTH = 8 class QualityThresholds: """Quality scoring and budget utilization thresholds.""" DEFAULT_QUALITY_THRESHOLD = 0.7 HIGH_BUDGET_UTILIZATION = 0.8 VERY_HIGH_BUDGET_UTILIZATION = 0.9 MULTI_AGENT_HIGH_USAGE = 0.7 SINGLE_AGENT_HIGH_USAGE = 0.8 MINIMUM_USAGE_FOR_SUGGESTIONS = 10 SIGNIFICANT_COST_THRESHOLD = 0.01 class ProviderDefaults: """Default provider configurations.""" DEFAULT_QUALITY_SCORE = 0.8 DEFAULT_RESPONSE_TIME = 2.0 DEFAULT_UPTIME_SCORE = 0.95 DEFAULT_ERROR_RATE = 0.05 DEFAULT_CONTEXT_LENGTH = 4096 class ComplexityThresholds: """Complexity level thresholds for scoring.""" SIMPLE_MAX = 25.0 MODERATE_MAX = 50.0 COMPLEX_MAX = 75.0 # HIGHLY_COMPLEX is anything above COMPLEX_MAX class DefaultValues: """Default configuration values.""" DEFAULT_LLM_PROVIDER = "deepseek" DEFAULT_TEAM_MODE = "standard" DEFAULT_LOG_LEVEL = "INFO" DEFAULT_MAX_RETRIES = 3 DEFAULT_TIMEOUT = 30.0 class PerformanceMetrics: """Performance measurement constants.""" # Efficiency calculation thresholds EFFICIENCY_TIME_THRESHOLD = 60.0 # seconds PERFECT_EXECUTION_CONSISTENCY = 1.0 DEFAULT_EXECUTION_CONSISTENCY = 0.9 PERFECT_EFFICIENCY_SCORE = 1.0 MINIMUM_EFFICIENCY_SCORE = 0.5 # Retry and sleep constants RETRY_SLEEP_DURATION = 1.0 # seconds # Logging formatting SEPARATOR_LENGTH = 50 class ProcessingDefaults: """Default values for thought processing.""" ERROR_COUNT_INITIAL = 1 RETRY_COUNT_INITIAL = 0 PROCESSING_TIME_INITIAL = 0.0 TEAM_INITIALIZER_INDEX = 1 SINGLE_AGENT_TIMEOUT_MULTIPLIER = 0.5 EXIT_CODE_ERROR = 1 class FieldLengthLimits: """Field length limits for various inputs.""" MIN_STRING_LENGTH = 1 MAX_STANDARD_STRING = 2000 MAX_DESCRIPTION_LENGTH = 1000 MAX_BRANCH_ID_LENGTH = 100 SEPARATOR_LENGTH = 50 class DatabaseConstants: """Database configuration constants.""" SESSION_CLEANUP_BATCH_SIZE = 100 THOUGHT_QUERY_LIMIT = 1000 CONNECTION_POOL_SIZE = 5 CONNECTION_POOL_OVERFLOW = 10 class ThoughtProcessingLimits: """Limits for thought processing workflow.""" MIN_THOUGHT_SEQUENCE = 1 MAX_TEAM_DELEGATION_COUNT = 2 ANALYSIS_TIME_LIMIT_SECONDS = 5 MIN_PROCESSING_STEPS = 1 MAX_PROCESSING_STEPS = 6 class TechnicalTerms: """Technical terms for complexity analysis.""" KEYWORDS: ClassVar[list[str]] = [ "algorithm", "data", "analysis", "system", "process", "design", "implementation", "architecture", "framework", "model", "structure", "optimization", "performance", "scalability", "integration", "api", "database", "security", "authentication", "authorization", "testing", "deployment", "configuration", "monitoring", "logging", "debugging", "refactoring", "migration", "synchronization", "caching", "protocol", "interface", "inheritance", "polymorphism", "abstraction", "encapsulation", ] class DefaultSettings: """Default application settings.""" DEFAULT_PROVIDER = "deepseek" DEFAULT_COMPLEXITY_THRESHOLD = 30.0 DEFAULT_TOKEN_BUFFER = 0.2 DEFAULT_SESSION_TIMEOUT = 3600 class CostOptimizationConstants: """Constants for cost optimization calculations.""" # Quality scoring weights QUALITY_WEIGHT = 0.4 COST_WEIGHT = 0.3 SPEED_WEIGHT = 0.2 RELIABILITY_WEIGHT = 0.1 # Cost calculation factors COST_NORMALIZATION_FACTOR = 0.0003 COST_EPSILON = 0.0001 # Prevent division by zero DEFAULT_COST_ESTIMATE = 0.0002 SPEED_NORMALIZATION_BASE = 10 SPEED_THRESHOLD = 1 # Quality scoring bounds MIN_QUALITY_SCORE = 0.0 MAX_QUALITY_SCORE = 1.0 # Budget utilization thresholds HIGH_BUDGET_UTILIZATION = 0.8 MODERATE_BUDGET_UTILIZATION = 0.7 CRITICAL_BUDGET_UTILIZATION = 0.9 # Complexity bonuses QUALITY_COMPLEXITY_BONUS = 0.2 COST_COMPLEXITY_BONUS = 0.0001 # Provider optimization HIGH_USAGE_PENALTY = 2.0 MODERATE_USAGE_PENALTY = 0.5 QUALITY_UPDATE_WEIGHT = 0.1 OLD_QUALITY_WEIGHT = 0.9 # Usage analysis thresholds MIN_DATA_THRESHOLD = 10 HIGH_MULTI_AGENT_RATIO = 0.7 HIGH_SINGLE_AGENT_RATIO = 0.8 MINIMUM_COST_DIFFERENCE = 0.01 # Provider-specific configurations GROQ_RATE_LIMIT = 14400 GROQ_CONTEXT_LENGTH = 32768 GROQ_QUALITY_SCORE = 0.75 GROQ_RESPONSE_TIME = 0.8 DEEPSEEK_QUALITY_SCORE = 0.85 DEEPSEEK_CONTEXT_LENGTH = 128000 GITHUB_CONTEXT_LENGTH = 128000 OPENROUTER_RESPONSE_TIME = 3.0 OPENROUTER_CONTEXT_LENGTH = 200000 OLLAMA_QUALITY_SCORE = 0.70 OLLAMA_RESPONSE_TIME = 5.0 OLLAMA_CONTEXT_LENGTH = 8192 class ComplexityAnalysisConstants: """Constants for complexity analysis calculations.""" # Multilingual text analysis requires different tokenization strategies CHINESE_WORD_RATIO = 2 # Character-based scripts need different word boundaries CHINESE_DOMINANCE_THRESHOLD = 0.3 # Script detection threshold for optimization # Complexity scoring weights (extracted from adaptive_routing.py) WORD_COUNT_WEIGHT = 0.15 SENTENCE_WEIGHT = 0.10 QUESTION_WEIGHT = 0.15 TECHNICAL_TERM_WEIGHT = 0.20 BRANCHING_WEIGHT = 0.15 RESEARCH_WEIGHT = 0.15 ANALYSIS_DEPTH_WEIGHT = 0.10 # Complexity level thresholds SIMPLE_THRESHOLD = 25.0 MODERATE_THRESHOLD = 50.0 COMPLEX_THRESHOLD = 75.0 # Branching bonus for actual branch context BRANCHING_CONTEXT_BONUS = 2 # Text analysis limits MAX_PREVIEW_LENGTH = 200 MIN_SENTENCE_LENGTH = 3 class SecurityConstants: """Security-related constants for input validation.""" # Patterns that indicate potential prompt injection attempts INJECTION_PATTERNS: ClassVar[list[str]] = [ # System/role instruction injections "system:", "user:", "assistant:", "role:", # Prompt escape attempts "ignore previous", "ignore all", "disregard", # Code execution attempts "```python", "```bash", "exec(", "eval(", "__import__", # Instruction manipulation "new instructions", "override", "instead of", # Data extraction attempts "print(", "console.log", "alert(", "document.cookie", ] class ProcessingStrategy(Enum): """Processing strategy enumeration.""" SINGLE_AGENT = "single_agent" MULTI_AGENT = "multi_agent" ADAPTIVE = "adaptive"

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/FradSer/mcp-server-mas-sequential-thinking'

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