Skip to main content
Glama
constants.tsβ€’8.04 kB
/** * Knowledge Graph Constants * * Centralized constants for the knowledge graph system. * Includes defaults, error messages, timeouts, and other configuration values. * * @module knowledge_graph/constants */ /** * Supported backend types */ export const BACKEND_TYPES = { NEO4J: 'neo4j', IN_MEMORY: 'in-memory', } as const; /** * Default values for knowledge graph operations */ export const DEFAULTS = { // Connection settings CONNECTION_TIMEOUT: 30000, // 30 seconds MAX_RETRIES: 3, POOL_SIZE: 10, // Query settings QUERY_LIMIT: 100, QUERY_TIMEOUT: 60000, // 60 seconds BATCH_SIZE: 1000, // In-memory backend limits MAX_NODES: 10000, MAX_EDGES: 50000, // Neo4j specific NEO4J_PORT: 7687, NEO4J_DATABASE: 'neo4j', NEO4J_MAX_TRANSACTION_RETRY_TIME: 30000, NEO4J_CONNECTION_ACQUISITION_TIMEOUT: 60000, NEO4J_MAX_CONNECTION_LIFETIME: 3600000, // 1 hour NEO4J_CONNECTION_LIVENESS_CHECK_TIMEOUT: 30000, // Cache settings QUERY_CACHE_TTL: 300000, // 5 minutes SCHEMA_CACHE_TTL: 600000, // 10 minutes // Path finding MAX_PATH_DEPTH: 10, MAX_NEIGHBORS: 50, } as const; /** * Error messages for different failure scenarios */ export const ERROR_MESSAGES = { // Connection errors NOT_CONNECTED: 'Knowledge graph backend is not connected', CONNECTION_FAILED: 'Failed to connect to knowledge graph backend', CONNECTION_TIMEOUT: 'Connection to knowledge graph backend timed out', AUTHENTICATION_FAILED: 'Authentication failed for knowledge graph backend', // Node errors NODE_NOT_FOUND: 'Node not found in knowledge graph', INVALID_NODE_DATA: 'Invalid node data provided', DUPLICATE_NODE_ID: 'Node with this ID already exists', NODE_VALIDATION_FAILED: 'Node validation failed', // Edge errors EDGE_NOT_FOUND: 'Edge not found in knowledge graph', INVALID_EDGE_DATA: 'Invalid edge data provided', DUPLICATE_EDGE_ID: 'Edge with this ID already exists', EDGE_VALIDATION_FAILED: 'Edge validation failed', NODES_NOT_FOUND_FOR_EDGE: 'Start or end node not found for edge', // Query errors INVALID_QUERY: 'Invalid graph query provided', QUERY_EXECUTION_FAILED: 'Graph query execution failed', QUERY_TIMEOUT: 'Graph query timed out', UNSUPPORTED_QUERY_TYPE: 'Unsupported query type', // Backend errors BACKEND_NOT_SUPPORTED: 'Knowledge graph backend type not supported', BACKEND_INITIALIZATION_FAILED: 'Failed to initialize knowledge graph backend', BACKEND_OPERATION_FAILED: 'Knowledge graph backend operation failed', // Validation errors SCHEMA_VALIDATION_FAILED: 'Schema validation failed', CONFIGURATION_INVALID: 'Knowledge graph configuration is invalid', PROPERTY_VALIDATION_FAILED: 'Property validation failed', // Transaction errors TRANSACTION_FAILED: 'Graph transaction failed', TRANSACTION_TIMEOUT: 'Graph transaction timed out', CONCURRENT_MODIFICATION: 'Concurrent modification detected', // Memory errors MEMORY_LIMIT_EXCEEDED: 'Memory limit exceeded for in-memory backend', NODE_LIMIT_EXCEEDED: 'Maximum number of nodes exceeded', EDGE_LIMIT_EXCEEDED: 'Maximum number of edges exceeded', } as const; /** * Timeout values for different operations */ export const TIMEOUTS = { // Connection timeouts CONNECTION: 30000, // 30 seconds HEALTH_CHECK: 5000, // 5 seconds DISCONNECTION: 10000, // 10 seconds // Operation timeouts QUERY: 60000, // 60 seconds TRANSACTION: 30000, // 30 seconds BATCH_OPERATION: 120000, // 2 minutes // Cache timeouts QUERY_CACHE: 300000, // 5 minutes SCHEMA_CACHE: 600000, // 10 minutes METRICS_CACHE: 60000, // 1 minute } as const; /** * Log prefixes for consistent logging */ export const LOG_PREFIXES = { MANAGER: '[KG-Manager]', BACKEND: '[KG-Backend]', NEO4J: '[KG-Neo4j]', IN_MEMORY: '[KG-Memory]', QUERY: '[KG-Query]', TRANSACTION: '[KG-Tx]', FACTORY: '[KG-Factory]', VALIDATION: '[KG-Validation]', } as const; /** * Metrics and monitoring event names */ export const METRICS_EVENTS = { // Connection events CONNECTION_ESTABLISHED: 'kg.connection.established', CONNECTION_FAILED: 'kg.connection.failed', CONNECTION_CLOSED: 'kg.connection.closed', // Operation events NODE_CREATED: 'kg.node.created', NODE_UPDATED: 'kg.node.updated', NODE_DELETED: 'kg.node.deleted', EDGE_CREATED: 'kg.edge.created', EDGE_UPDATED: 'kg.edge.updated', EDGE_DELETED: 'kg.edge.deleted', // Query events QUERY_EXECUTED: 'kg.query.executed', QUERY_FAILED: 'kg.query.failed', QUERY_CACHED: 'kg.query.cached', // Performance events OPERATION_DURATION: 'kg.operation.duration', BATCH_OPERATION_DURATION: 'kg.batch.duration', QUERY_DURATION: 'kg.query.duration', // Health events HEALTH_CHECK_SUCCESS: 'kg.health.success', HEALTH_CHECK_FAILURE: 'kg.health.failure', } as const; /** * Graph schema constants */ export const SCHEMA = { // Common node labels NODE_LABELS: { FUNCTION: 'Function', CLASS: 'Class', VARIABLE: 'Variable', MODULE: 'Module', FILE: 'File', CONCEPT: 'Concept', ENTITY: 'Entity', }, // Common edge types EDGE_TYPES: { DEPENDS_ON: 'DEPENDS_ON', CALLS: 'CALLS', USES: 'USES', BELONGS_TO: 'BELONGS_TO', EXTENDS: 'EXTENDS', IMPLEMENTS: 'IMPLEMENTS', CONTAINS: 'CONTAINS', REFERENCES: 'REFERENCES', RELATES_TO: 'RELATES_TO', }, // Property names PROPERTIES: { // Common properties ID: 'id', NAME: 'name', TYPE: 'type', CREATED_AT: 'created_at', UPDATED_AT: 'updated_at', SOURCE: 'source', CONFIDENCE: 'confidence', // Code-specific properties LANGUAGE: 'language', FILE_PATH: 'file_path', LINE_NUMBER: 'line_number', FUNCTION_NAME: 'function_name', CLASS_NAME: 'class_name', MODULE_NAME: 'module_name', // Relationship properties STRENGTH: 'strength', CONTEXT: 'context', FREQUENCY: 'frequency', WEIGHT: 'weight', }, } as const; /** * Query templates for common operations */ export const QUERY_TEMPLATES = { // Node operations CREATE_NODE: 'CREATE (n:{labels} {properties}) RETURN n', GET_NODE: 'MATCH (n) WHERE n.id = $id RETURN n', UPDATE_NODE: 'MATCH (n) WHERE n.id = $id SET n += $properties RETURN n', DELETE_NODE: 'MATCH (n) WHERE n.id = $id DETACH DELETE n', // Edge operations CREATE_EDGE: 'MATCH (a), (b) WHERE a.id = $startId AND b.id = $endId CREATE (a)-[r:{type} {properties}]->(b) RETURN r', GET_EDGE: 'MATCH ()-[r]-() WHERE r.id = $id RETURN r', UPDATE_EDGE: 'MATCH ()-[r]-() WHERE r.id = $id SET r += $properties RETURN r', DELETE_EDGE: 'MATCH ()-[r]-() WHERE r.id = $id DELETE r', // Search operations FIND_NODES: 'MATCH (n:{labels}) WHERE {filters} RETURN n LIMIT $limit', FIND_EDGES: 'MATCH ()-[r:{type}]-() WHERE {filters} RETURN r LIMIT $limit', // Graph traversal GET_NEIGHBORS: 'MATCH (n)-[r:{types}]-(m) WHERE n.id = $id RETURN m, r LIMIT $limit', FIND_PATH: 'MATCH path = shortestPath((a)-[*..{maxDepth}]-(b)) WHERE a.id = $startId AND b.id = $endId RETURN path', // Statistics COUNT_NODES: 'MATCH (n) RETURN count(n) as count', COUNT_EDGES: 'MATCH ()-[r]-() RETURN count(r) as count', GET_LABELS: 'CALL db.labels() YIELD label RETURN collect(label) as labels', GET_RELATIONSHIP_TYPES: 'CALL db.relationshipTypes() YIELD relationshipType RETURN collect(relationshipType) as types', } as const; /** * Index templates for performance optimization */ export const INDEX_TEMPLATES = { // Node indexes NODE_ID_INDEX: 'CREATE INDEX node_id_index IF NOT EXISTS FOR (n:{label}) ON (n.id)', NODE_NAME_INDEX: 'CREATE INDEX node_name_index IF NOT EXISTS FOR (n:{label}) ON (n.name)', NODE_TYPE_INDEX: 'CREATE INDEX node_type_index IF NOT EXISTS FOR (n:{label}) ON (n.type)', // Edge indexes EDGE_ID_INDEX: 'CREATE INDEX edge_id_index IF NOT EXISTS FOR ()-[r:{type}]-() ON (r.id)', EDGE_TYPE_INDEX: 'CREATE INDEX edge_type_index IF NOT EXISTS FOR ()-[r:{type}]-() ON (r.type)', // Composite indexes NODE_COMPOUND_INDEX: 'CREATE INDEX node_compound_index IF NOT EXISTS FOR (n:{label}) ON (n.id, n.type)', EDGE_COMPOUND_INDEX: 'CREATE INDEX edge_compound_index IF NOT EXISTS FOR ()-[r:{type}]-() ON (r.id, r.type)', } as const;

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/campfirein/cipher'

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