From 43c929048c86328f73c2bb63678dd647d1e5bb42 Mon Sep 17 00:00:00 2001 From: Chetanya Rathi Date: Tue, 7 Jul 2026 15:29:54 -0400 Subject: [PATCH] refactor: split constants.py into constants/ submodule (#501) --- codebase_rag/constants/__init__.py | 2992 +++++++++++++++++ codebase_rag/constants/ast_nodes.py | 195 ++ codebase_rag/constants/cli.py | 535 +++ .../{constants.py => constants/core.py} | 1348 +------- codebase_rag/constants/graph.py | 287 ++ codebase_rag/constants/languages.py | 181 + codebase_rag/constants/operators.py | 161 + 7 files changed, 4353 insertions(+), 1346 deletions(-) create mode 100644 codebase_rag/constants/__init__.py create mode 100644 codebase_rag/constants/ast_nodes.py create mode 100644 codebase_rag/constants/cli.py rename codebase_rag/{constants.py => constants/core.py} (63%) create mode 100644 codebase_rag/constants/graph.py create mode 100644 codebase_rag/constants/languages.py create mode 100644 codebase_rag/constants/operators.py diff --git a/codebase_rag/constants/__init__.py b/codebase_rag/constants/__init__.py new file mode 100644 index 000000000..7661dc610 --- /dev/null +++ b/codebase_rag/constants/__init__.py @@ -0,0 +1,2992 @@ +""" +Constants package for codebase_rag. +""" + +from enum import StrEnum +from typing import NamedTuple + +from .ast_nodes import ( + BINDINGS_DIR, + BUILD_EXT_CMD, + CAPTURE_ARROW_FUNCTION, + CAPTURE_CALL, + CAPTURE_CHILD_CLASS, + CAPTURE_CLASS, + CAPTURE_CONSTRUCTOR_NAME, + CAPTURE_EXPORT_FUNCTION, + CAPTURE_EXPORT_NAME, + CAPTURE_EXPORTS_OBJ, + CAPTURE_EXPORTS_PROP, + CAPTURE_FUNC, + CAPTURE_FUNCTION, + CAPTURE_FUNCTION_EXPR, + CAPTURE_IMPORT, + CAPTURE_IMPORT_FROM, + CAPTURE_MEMBER_EXPR, + CAPTURE_METHOD_FUNCTION, + CAPTURE_METHOD_NAME, + CAPTURE_MODULE_OBJ, + CAPTURE_PARENT_CLASS, + CAPTURE_PROTOTYPE_KEYWORD, + CAPTURE_VARIABLE_DECLARATOR, + CLI_STATS_TOTAL_NODES, + CPP_IMPORT_NODES, + FIELD_ALIAS, + FIELD_API_KEY, + FIELD_ARGUMENTS, + FIELD_BODY, + FIELD_BOUNDS, + FIELD_CONSTRUCTOR, + FIELD_DECLARATOR, + FIELD_DEFINITION, + FIELD_ENDPOINT, + FIELD_FIELD, + FIELD_FUNCTION, + FIELD_INTERFACES, + FIELD_KEY, + FIELD_LEFT, + FIELD_MODEL_ID, + FIELD_MODULE_NAME, + FIELD_NAME, + FIELD_OBJECT, + FIELD_OPERAND, + FIELD_OPERATOR, + FIELD_PARAMETERS, + FIELD_PROPERTY, + FIELD_PROVIDER, + FIELD_RECEIVER, + FIELD_RESULT, + FIELD_RETURN_TYPE, + FIELD_RIGHT, + FIELD_SCOPE, + FIELD_SUPERCLASS, + FIELD_SUPERCLASSES, + FIELD_TRAIT, + FIELD_TYPE, + FIELD_VALUE, + GRAMMARS_DIR, + INDEX_INDEX, + INDEX_INIT, + INDEX_MOD, + INPLACE_FLAG, + JS_LOCALS_PATTERN, + JS_TS_CLASS_NODES, + JS_TS_FUNCTION_NODES, + JS_TS_IMPORT_NODES, + KEY_NODES, + KEY_TOTAL_NODES, + LANG_ATTR_PHP, + LANG_ATTR_PREFIX, + LANG_ATTR_TSX, + LANG_ATTR_TYPESCRIPT, + LANG_DEFAULT_CALL_NODES, + LANG_DEFAULT_CLASS_NODES, + LANG_DEFAULT_FUNCTION_NODES, + LANG_DEFAULT_MODULE_NODES, + LANG_MSG_AVAILABLE_NODES, + METHOD_FIND_WITH_PREFIX, + METHOD_ITEMS, + NAME_FIELDS, + QUERY_CALLS, + QUERY_CAPTURE_CLASS, + QUERY_CAPTURE_FUNCTION, + QUERY_CLASSES, + QUERY_CONFIG, + QUERY_FUNCTIONS, + QUERY_IMPORTS, + QUERY_KEY_CLASSES, + QUERY_KEY_FUNCTIONS, + QUERY_LANGUAGE, + QUERY_LOCALS, + QUERY_NOT_AVAILABLE, + QUERY_RESULTS_PANEL_TITLE, + QUERY_SUMMARY_DB_ERROR, + QUERY_SUMMARY_SUCCESS, + QUERY_SUMMARY_TIMEOUT, + QUERY_SUMMARY_TRANSLATION_FAILED, + QUERY_SUMMARY_TRUNCATED, + SETUP_PY, + TREE_SITTER_MODULE_PREFIX, + TREE_SITTER_PREFIX, + TS_LOCALS_PATTERN, + TS_RS_TRAIT_BOUNDS, + TreeSitterModule, +) +from .cli import ( + _SYSTEM_DIRS_PATTERN, + CLI_DEADCODE_COL_KIND, + CLI_DEADCODE_COL_LINES, + CLI_DEADCODE_COL_QUALIFIED_NAME, + CLI_DEADCODE_CONNECTING, + CLI_DEADCODE_LINE_RANGE, + CLI_DEADCODE_NONE, + CLI_DEADCODE_SUMMARY, + CLI_DEADCODE_TABLE_TITLE, + CLI_DEADCODE_WRITTEN, + CLI_ERR_CONFIG, + CLI_ERR_DEADCODE_AMBIGUOUS_PROJECT, + CLI_ERR_DEADCODE_FAILED, + CLI_ERR_DEADCODE_NO_PROJECTS, + CLI_ERR_DELETE_PROJECT_FAILED, + CLI_ERR_EXPORT_FAILED, + CLI_ERR_INDEXING, + CLI_ERR_JSON_REQUIRES_ASK_AGENT, + CLI_ERR_LOAD_GRAPH, + CLI_ERR_MCP_SERVER, + CLI_ERR_ONLY_JSON, + CLI_ERR_OUTPUT_REQUIRES_UPDATE, + CLI_ERR_PATH_NOT_DIR, + CLI_ERR_PATH_NOT_EXISTS, + CLI_ERR_PROJECT_NAME_REQUIRED, + CLI_ERR_PROJECT_NOT_FOUND, + CLI_ERR_STARTUP, + CLI_ERR_STATS_FAILED, + CLI_MSG_APP_TERMINATED, + CLI_MSG_AUTO_EXCLUDE, + CLI_MSG_CLEAN_DONE, + CLI_MSG_CLEANING_DB, + CLI_MSG_CLEANING_HASH_CACHE, + CLI_MSG_CONNECTING_MEMGRAPH, + CLI_MSG_CONNECTING_STATS, + CLI_MSG_DELETING_PROJECT, + CLI_MSG_EXPORTING_DATA, + CLI_MSG_EXPORTING_TO, + CLI_MSG_GRAPH_SUMMARY, + CLI_MSG_GRAPH_UPDATED, + CLI_MSG_HINT_TARGET_REPO, + CLI_MSG_INDEXING_AT, + CLI_MSG_INDEXING_DONE, + CLI_MSG_MCP_TERMINATED, + CLI_MSG_OPTIMIZATION_TERMINATED, + CLI_MSG_OUTPUT_TO, + CLI_MSG_PROJECT_DELETED, + CLI_MSG_SYNC_DONE, + CLI_MSG_SYNC_SKIPPED, + CLI_MSG_SYNCING_GRAPH, + CLI_MSG_UPDATING_GRAPH, + CLI_MSG_VERSION, + CLI_MSG_WORKSPACE_EMPTY, + CLI_MSG_WORKSPACE_SYNC_REPO, + CLI_MSG_WORKSPACE_SYNCING, + CLI_STATS_COL_COUNT, + CLI_STATS_COL_NODE_TYPE, + CLI_STATS_COL_REL_TYPE, + CLI_STATS_NODE_TITLE, + CLI_STATS_REL_TITLE, + CLI_STATS_TOTAL_RELS, + CLI_STATS_UNKNOWN, + CLI_WARN_NOT_GIT_REPO, + CONFIRM_DISABLED, + CONFIRM_ENABLED, + DEFAULT_API_KEY, + DEFAULT_DEBOUNCE_SECONDS, + DEFAULT_MAX_WAIT_SECONDS, + DEFAULT_MODEL, + DEFAULT_MODEL_ROLE, + DEFAULT_REGION, + DEFAULT_TABLE_TITLE, + DIFF_CONTINUATION_PREFIXES, + DIFF_FALLBACK_PATH, + DIFF_GIT_HEADER, + DIFF_LABEL_AFTER, + DIFF_LABEL_BEFORE, + ENV_ANTHROPIC_API_KEY, + ENV_AZURE_API_KEY, + ENV_AZURE_API_VERSION, + ENV_AZURE_ENDPOINT, + ENV_GOOGLE_API_KEY, + ENV_OPENAI_API_KEY, + EXIT_COMMANDS, + GREP_SUGGESTION, + HELP_ARG, + HELP_COMMAND, + HORIZONTAL_SEPARATOR, + INTERACTIVE_BFS_MAX_DEPTH, + INTERACTIVE_COL_NESTED, + INTERACTIVE_COL_NUM, + INTERACTIVE_COL_PATH, + INTERACTIVE_COL_PATTERN, + INTERACTIVE_DEFAULT_GROUP, + INTERACTIVE_EXPAND_SUFFIX, + INTERACTIVE_INSTRUCTIONS_GROUPED, + INTERACTIVE_INSTRUCTIONS_NESTED, + INTERACTIVE_KEEP_ALL, + INTERACTIVE_KEEP_NONE, + INTERACTIVE_NESTED_PLURAL, + INTERACTIVE_NESTED_SINGULAR, + INTERACTIVE_PROMPT_KEEP, + INTERACTIVE_STATUS_CGRIGNORE, + INTERACTIVE_STATUS_CLI, + INTERACTIVE_STATUS_DETECTED, + INTERACTIVE_STYLE_DIM, + INTERACTIVE_TITLE_GROUPED, + INTERACTIVE_TITLE_NESTED, + LOG_FORMAT, + LOG_LEVEL_ERROR, + LOG_LEVEL_INFO, + MODEL_COMMAND_PREFIX, + MSG_CHAT_INSTRUCTIONS, + MSG_CONNECTED_MEMGRAPH, + MSG_DOC_NO_CANDIDATES, + MSG_DOC_NO_CONTENT, + MSG_SEMANTIC_NO_RESULTS, + MSG_SEMANTIC_RESULT_FOOTER, + MSG_SEMANTIC_RESULT_HEADER, + MSG_SEMANTIC_SOURCE_FORMAT, + MSG_SEMANTIC_SOURCE_UNAVAILABLE, + MSG_SURGICAL_FAILED, + MSG_SURGICAL_SUCCESS, + MSG_SYNCING_KNOWLEDGE_GRAPH, + MSG_SYNCING_WORKSPACE, + MSG_THINKING_CANCELLED, + MSG_TIMEOUT_FORMAT, + MSG_TOOL_CALL_CANCELLED, + MULTILINE_INPUT_HINT, + NO_ANSWERS, + OPTIMIZATION_TABLE_TITLE, + PERMISSION_MODE_NORMAL_LABEL, + PERMISSION_MODE_TOGGLED, + PERMISSION_MODE_YOLO_LABEL, + PROMPT_ASK_QUESTION, + PROMPT_YOUR_RESPONSE, + REALTIME_LOGGER_FORMAT, + SESSION_CONTEXT_END, + SESSION_CONTEXT_START, + SESSION_LOG_EXT, + SESSION_LOG_HEADER, + SESSION_LOG_PREFIX, + SESSION_PREFIX_ASSISTANT, + SESSION_PREFIX_USER, + SHELL_CMD_GIT, + SHELL_CMD_GREP, + SHELL_CMD_RM, + SHELL_CMD_WHERE, + SHELL_CMD_WHICH, + SHELL_DANGEROUS_COMMANDS, + SHELL_DANGEROUS_PATTERNS_PIPELINE, + SHELL_DANGEROUS_PATTERNS_SEGMENT, + SHELL_PIPE_OPERATORS, + SHELL_REDIRECT_OPERATORS, + SHELL_RETURN_CODE_ERROR, + SHELL_RM_DANGEROUS_FLAGS, + SHELL_RM_FORCE_FLAG, + SHELL_RM_RF_FLAG, + SHELL_SUBSHELL_PATTERNS, + SHELL_SYSTEM_DIRECTORIES, + STATUS_BAR_BRANCH_CLEAN_HTML, + STATUS_BAR_BRANCH_CLEAN_PLAIN, + STATUS_BAR_BRANCH_DIRTY_HTML, + STATUS_BAR_BRANCH_DIRTY_PLAIN, + STATUS_BAR_BRANCH_RICH_TEXT, + STATUS_BAR_CLEAN_STYLE, + STATUS_BAR_CONFIG_COLOR, + STATUS_BAR_CONFIG_LABEL_C, + STATUS_BAR_CONFIG_LABEL_COLOR, + STATUS_BAR_CONFIG_LABEL_EDIT, + STATUS_BAR_CONFIG_LABEL_INSTRUCTIONS, + STATUS_BAR_CONFIG_LABEL_O, + STATUS_BAR_CONFIG_LABEL_REPO, + STATUS_BAR_CONFIG_SEPARATOR, + STATUS_BAR_DIRTY_MARKER, + STATUS_BAR_DIRTY_STYLE, + STATUS_BAR_EDIT_OFF, + STATUS_BAR_EDIT_ON, + STATUS_BAR_SEPARATOR_CHAR, + STATUS_BAR_SEPARATOR_COLOR, + STATUS_BAR_SPINNER, + STATUS_BAR_TOKEN_HTML, + TABLE_COL_CONFIGURATION, + TABLE_COL_VALUE, + TABLE_ROW_CYPHER_MODEL, + TABLE_ROW_EDIT_CONFIRMATION, + TABLE_ROW_OLLAMA_CYPHER, + TABLE_ROW_OLLAMA_ENDPOINT, + TABLE_ROW_OLLAMA_ORCHESTRATOR, + TABLE_ROW_ORCHESTRATOR_MODEL, + TABLE_ROW_TARGET_LANGUAGE, + TABLE_ROW_TARGET_REPOSITORY, + TMP_DIR, + TOKEN_COLOR_CRITICAL, + TOKEN_COLOR_OK, + TOKEN_COLOR_WARNING, + TOKEN_THRESHOLD_CRITICAL, + TOKEN_THRESHOLD_WARNING, + UI_DIFF_FILE_HEADER, + UI_ERR_EXPORT_FAILED, + UI_ERR_UNEXPECTED, + UI_FEEDBACK_PROMPT, + UI_GRAPH_EXPORT_STATS, + UI_GRAPH_EXPORT_SUCCESS, + UI_HELP_COMMANDS, + UI_INPUT_PROMPT_HTML, + UI_MODEL_CURRENT, + UI_MODEL_SWITCH_ERROR, + UI_MODEL_SWITCHED, + UI_MODEL_USAGE, + UI_NEW_FILE_HEADER, + UI_OPTIMIZATION_INIT, + UI_OPTIMIZATION_PANEL, + UI_OPTIMIZATION_START, + UI_REFERENCE_DOC_INFO, + UI_SHELL_COMMAND_HEADER, + UI_TOOL_APPROVAL, + UI_TOOL_ARGS_FORMAT, + WATCHER_SLEEP_INTERVAL, + YES_ANSWER, + YES_ANSWERS, + Color, + DiffMarker, + FileAction, + GoogleProviderType, + ModelRole, + PermissionMode, + Provider, + StyleModifier, +) +from .core import ( + _CYPHER_EMBEDDING_BASE, + ABSTRACT_DECORATORS, + ALLOWED_COMMENT_MARKERS, + ANTHROPIC_API_VERSION, + ANTHROPIC_COUNT_TIMEOUT_S, + ANTHROPIC_COUNT_TOKENS_URL, + ANTHROPIC_HEADER_API_KEY, + ANTHROPIC_HEADER_VERSION, + ARG_COMMAND, + ARG_CONTENT, + ARG_FILE_PATH, + ARG_REPLACEMENT_CODE, + ARG_TARGET_CODE, + ATTR_TYPE_INFERENCE_IN_PROGRESS, + BINARY_FILE_PERMISSION, + BINARY_NAME_TEMPLATE, + BUILTIN_PREFIX, + BYTES_PER_MB, + BYTES_PER_MB_FLOAT, + C_NAME_NODE_TYPES, + CALL_NODES_BASIC, + CALL_NODES_METHOD, + CALL_NODES_OPERATOR, + CALL_NODES_SPECIAL, + CHAR_ANGLE_CLOSE, + CHAR_ANGLE_OPEN, + CHAR_COLON, + CHAR_COMMA, + CHAR_HYPHEN, + CHAR_PAREN_CLOSE, + CHAR_PAREN_OPEN, + CHAR_SEMICOLON, + CHAR_SPACE, + CHAR_UNDERSCORE, + CLASS_NODES_BASIC, + CLASS_NODES_ENUM, + CLASS_NODES_INTERFACE, + CLASS_NODES_STRUCT, + CLASS_NODES_TYPE_ALIAS, + CLASS_NODES_UNION, + COMMENT_CHAR, + CONTENT_TYPE_JSON, + CPP_CLASS_TYPES, + CPP_COMPOUND_TYPES, + CPP_DECLARATOR_SUFFIX, + CPP_DESTRUCTOR_PREFIX, + CPP_EXPORT_CLASS_PREFIX, + CPP_EXPORT_MODULE_PREFIX, + CPP_EXPORT_PREFIXES, + CPP_EXPORT_STRUCT_PREFIX, + CPP_EXPORT_TEMPLATE_PREFIX, + CPP_EXPORT_UNION_PREFIX, + CPP_EXPORTED_CLASS_KEYWORDS, + CPP_FALLBACK_DESTRUCTOR, + CPP_FALLBACK_OPERATOR, + CPP_IMPL_SUFFIX, + CPP_KEYWORD_CLASS, + CPP_KEYWORD_STRUCT, + CPP_MODULE_PATH_MARKERS, + CPP_MODULE_PREFIX, + CPP_MODULE_PRIVATE_PREFIX, + CPP_MODULE_TYPE_IMPLEMENTATION, + CPP_MODULE_TYPE_INTERFACE, + CPP_NAME_NODE_TYPES, + CPP_NESTED_SCOPE_NODE_TYPES, + CPP_OPERATOR_SYMBOL_MAP, + CPP_OPERATOR_TEXT_PREFIX, + CPP_OPERATORS, + CPP_PREFIX_HAS, + CPP_PREFIX_IS, + CPP_STD_NAMESPACE, + CPP_STD_PREFIX, + CPP_STDLIB_ENTITIES, + CPP_TYPE_PARAMETER_DECL_TYPES, + CPP_TYPE_SPECIFIER_NODE_TYPES, + CSPROJ_SUFFIX, + DECORATOR_AT, + DEFAULT_CONTEXT_WINDOW, + DEFAULT_NAME, + DELIMITER_TOKENS, + DEP_ATTR_INCLUDE, + DEP_ATTR_VERSION, + DEP_EXCLUDE_PHP, + DEP_EXCLUDE_PYTHON, + DEP_FILE_CARGO, + DEP_FILE_COMPOSER, + DEP_FILE_GEMFILE, + DEP_FILE_GOMOD, + DEP_FILE_PACKAGE_JSON, + DEP_FILE_PYPROJECT, + DEP_FILE_REQUIREMENTS, + DEP_KEY_DEPENDENCIES, + DEP_KEY_DEV_DEPENDENCIES, + DEP_KEY_DEV_DEPS_JSON, + DEP_KEY_GROUP, + DEP_KEY_OPTIONAL_DEPS, + DEP_KEY_PEER_DEPS, + DEP_KEY_POETRY, + DEP_KEY_PROJECT, + DEP_KEY_REQUIRE, + DEP_KEY_REQUIRE_DEV, + DEP_KEY_TOOL, + DEP_KEY_VERSION, + DEP_XML_PACKAGE_REF, + DEPENDENCY_FILES, + DICT_KEY_RESULTS, + DIR_MTIMES_FILENAME, + DIST_DIR, + DOC_PROMPT_PREFIX, + DOCSTRING_STRIP_CHARS, + DUP_QN_MARKER, + EMBEDDING_CACHE_FILENAME, + EMBEDDING_DEFAULT_BATCH_SIZE, + EMPTY_PARENS, + ENCODING_UTF8, + ENTITY_CLASS, + ENTITY_CONSTRUCTOR, + ENTITY_FUNCTION, + ENTITY_METHOD, + ERR_SUBSTR_ALREADY_EXISTS, + ERR_SUBSTR_CONSTRAINT, + ESCAPE_CHAR, + EXCLUDED_DEPENDENCY_NAMES, + FQN_C_FUNCTION_TYPES, + FQN_C_SCOPE_TYPES, + FQN_CPP_FUNCTION_TYPES, + FQN_CPP_SCOPE_TYPES, + FQN_GO_FUNCTION_TYPES, + FQN_GO_SCOPE_TYPES, + FQN_JAVA_FUNCTION_TYPES, + FQN_JAVA_SCOPE_TYPES, + FQN_JS_FUNCTION_TYPES, + FQN_JS_SCOPE_TYPES, + FQN_LUA_FUNCTION_TYPES, + FQN_LUA_SCOPE_TYPES, + FQN_PHP_FUNCTION_TYPES, + FQN_PHP_SCOPE_TYPES, + FQN_PY_FUNCTION_TYPES, + FQN_PY_SCOPE_TYPES, + FQN_RS_FUNCTION_TYPES, + FQN_RS_SCOPE_TYPES, + FQN_SCALA_FUNCTION_TYPES, + FQN_SCALA_SCOPE_TYPES, + FQN_TS_FUNCTION_TYPES, + FQN_TS_SCOPE_TYPES, + FUNCTION_NODES_BASIC, + FUNCTION_NODES_GENERATOR, + FUNCTION_NODES_LAMBDA, + FUNCTION_NODES_METHOD, + FUNCTION_NODES_TEMPLATE, + GEMFILE_GEM_PREFIX, + GIT_DIR_NAME, + GITWILDMATCH_STYLE, + GLOB_ALL, + GO_KEYWORD_MODULE, + GO_MOD_COMMENT_PREFIX, + GOMOD_BLOCK_END, + GOMOD_COMMENT_PREFIX, + GOMOD_REQUIRE_BLOCK_START, + GOMOD_REQUIRE_LINE_PREFIX, + GOOGLE_CLOUD_SCOPE, + GUARD_INHERITED_METHOD, + HASH_CACHE_FILENAME, + HEADER_CONTENT_TYPE, + HEALTH_CHECK_API_KEY_CONFIGURED, + HEALTH_CHECK_API_KEY_MISSING_MSG, + HEALTH_CHECK_API_KEY_NOT_CONFIGURED, + HEALTH_CHECK_API_KEY_NOT_SET, + HEALTH_CHECK_API_KEY_SET, + HEALTH_CHECK_DOCKER_EXIT_CODE, + HEALTH_CHECK_DOCKER_FAILED_MSG, + HEALTH_CHECK_DOCKER_NOT_IN_PATH, + HEALTH_CHECK_DOCKER_NOT_INSTALLED_MSG, + HEALTH_CHECK_DOCKER_NOT_RESPONDING_MSG, + HEALTH_CHECK_DOCKER_NOT_RUNNING, + HEALTH_CHECK_DOCKER_RUNNING, + HEALTH_CHECK_DOCKER_RUNNING_MSG, + HEALTH_CHECK_DOCKER_TIMEOUT_ERROR, + HEALTH_CHECK_DOCKER_TIMEOUT_MSG, + HEALTH_CHECK_EXTERNAL_TOOLS, + HEALTH_CHECK_MEMGRAPH_CONNECTED_MSG, + HEALTH_CHECK_MEMGRAPH_CONNECTION_FAILED_MSG, + HEALTH_CHECK_MEMGRAPH_ERROR, + HEALTH_CHECK_MEMGRAPH_FAILED, + HEALTH_CHECK_MEMGRAPH_QUERY, + HEALTH_CHECK_MEMGRAPH_SUCCESSFUL, + HEALTH_CHECK_MEMGRAPH_UNEXPECTED_FAILURE_MSG, + HEALTH_CHECK_TOOL_FAILED_MSG, + HEALTH_CHECK_TOOL_INSTALLED, + HEALTH_CHECK_TOOL_INSTALLED_MSG, + HEALTH_CHECK_TOOL_NOT_IN_PATH_MSG, + HEALTH_CHECK_TOOL_NOT_INSTALLED, + HEALTH_CHECK_TOOL_TIMEOUT_ERROR, + HEALTH_CHECK_TOOL_TIMEOUT_MSG, + HEALTH_CHECK_TOOLS, + HIGHER_ORDER_BUILTINS, + HTTP_OK, + IGNORE_PATTERNS, + IGNORE_SUFFIXES, + IIFE_ARROW_PREFIX, + IIFE_FUNC_PREFIX, + IMPORT_CACHE_DIR, + IMPORT_CACHE_FILE, + IMPORT_CACHE_KEY, + IMPORT_CACHE_TTL, + IMPORT_DEFAULT_SUFFIX, + IMPORT_IMPORT, + IMPORT_MODULE_LABEL, + IMPORT_NODES_FROM, + IMPORT_NODES_INCLUDE, + IMPORT_NODES_MODULE, + IMPORT_NODES_STANDARD, + IMPORT_PCALL, + IMPORT_QUALIFIED_NAME, + IMPORT_RELATIONSHIP, + IMPORT_REQUIRE, + IMPORT_STD_PREFIX, + IMPORT_TIMESTAMPS_KEY, + INIT_PY, + INLINE_MODULE_PATH_PREFIX, + JAVA_ARRAY_SUFFIX, + JAVA_CALLABLE_ENTITY_TYPES, + JAVA_CLASS_MODIFIERS, + JAVA_CLASS_NODE_TYPES, + JAVA_CREATE_PATTERN, + JAVA_DECLARATION_SUFFIX, + JAVA_FIELD_MODIFIERS, + JAVA_GETTER_PATTERN, + JAVA_HAS_PATTERN, + JAVA_HEURISTIC_ORDER, + JAVA_HEURISTIC_USER, + JAVA_ID_PATTERN, + JAVA_IS_PATTERN, + JAVA_JVM_LANGUAGES, + JAVA_KEYWORD_SUPER, + JAVA_KEYWORD_THIS, + JAVA_LANG_PREFIX, + JAVA_LENGTH_PATTERN, + JAVA_MAIN_METHOD_NAME, + JAVA_MAIN_PARAM_ARRAY, + JAVA_MAIN_PARAM_TYPE, + JAVA_MAIN_PARAM_VARARGS, + JAVA_METHOD_MODIFIERS, + JAVA_METHOD_NODE_TYPES, + JAVA_MODIFIER_ABSTRACT, + JAVA_MODIFIER_FINAL, + JAVA_MODIFIER_PRIVATE, + JAVA_MODIFIER_PROTECTED, + JAVA_MODIFIER_PUBLIC, + JAVA_MODIFIER_STATIC, + JAVA_MODIFIER_SYNCHRONIZED, + JAVA_MODIFIER_TRANSIENT, + JAVA_MODIFIER_VOLATILE, + JAVA_NAME_PATTERN, + JAVA_NEW_PATTERN, + JAVA_ORDER_PATTERN, + JAVA_PATH_JAVA, + JAVA_PATH_KOTLIN, + JAVA_PATH_MAIN, + JAVA_PATH_SCALA, + JAVA_PATH_SRC, + JAVA_PATH_TEST, + JAVA_PRIMITIVE_TYPES, + JAVA_SIZE_PATTERN, + JAVA_SRC_FOLDERS, + JAVA_STDLIB_CLASSES, + JAVA_STDLIB_PREFIXES, + JAVA_SUFFIX_BUILDER, + JAVA_SUFFIX_ERROR, + JAVA_SUFFIX_EXCEPTION, + JAVA_SUFFIX_INTERFACE, + JAVA_TYPE_BOOLEAN, + JAVA_TYPE_CONSTRUCTOR, + JAVA_TYPE_DOUBLE, + JAVA_TYPE_INT, + JAVA_TYPE_LONG, + JAVA_TYPE_METHOD, + JAVA_TYPE_OBJECT, + JAVA_TYPE_STRING, + JAVA_TYPE_STRING_FQN, + JAVA_USER_PATTERN, + JAVA_VISIBILITY_PACKAGE, + JAVA_VISIBILITY_PRIVATE, + JAVA_VISIBILITY_PROTECTED, + JAVA_VISIBILITY_PUBLIC, + JAVA_WRAPPER_TYPES, + JS_ARROW_NAME_CLIMB_BOUNDARY, + JS_ASSIGNMENT_ARROW_QUERY, + JS_ASSIGNMENT_FUNCTION_QUERY, + JS_BUILTIN_PATTERNS, + JS_BUILTIN_TYPES, + JS_CALL_RESULT_VALUE_TYPES, + JS_COMMONJS_DESTRUCTURE_QUERY, + JS_COMMONJS_EXPORTS_FUNCTION_QUERY, + JS_COMMONJS_MODULE_EXPORTS_QUERY, + JS_CREATE_METHOD, + JS_ES6_EXPORT_CONST_QUERY, + JS_ES6_EXPORT_FUNCTION_QUERY, + JS_EXPORT_TYPE_COMMONJS, + JS_EXPORT_TYPE_COMMONJS_MODULE, + JS_EXPORT_TYPE_ES6_FUNCTION, + JS_EXPORT_TYPE_ES6_FUNCTION_DECL, + JS_EXPORTS_KEYWORD, + JS_FUNCTION_PROTOTYPE_METHODS, + JS_FUNCTION_PROTOTYPE_SUFFIXES, + JS_METHOD_APPLY, + JS_METHOD_BIND, + JS_METHOD_CALL, + JS_METHOD_DEF_QUERY, + JS_MODULE_KEYWORD, + JS_NAME_NODE_TYPES, + JS_OBJECT_ARROW_QUERY, + JS_OBJECT_METHOD_QUERY, + JS_OBJECT_NAME, + JS_PROTOTYPE_INHERITANCE_QUERY, + JS_PROTOTYPE_KEYWORD, + JS_PROTOTYPE_METHOD_QUERY, + JS_REQUIRE_KEYWORD, + JS_SUFFIX_APPLY, + JS_SUFFIX_BIND, + JS_SUFFIX_CALL, + JS_TS_LANGUAGES, + JS_TS_PARENT_REF_TYPES, + JSON_EMPTY_OBJECT, + JSON_INDENT, + JSON_KEY_ENTITY_TYPE, + JSON_KEY_HAS_ENTITY, + KEYWORD_CONSTRUCTOR, + KEYWORD_SELF, + KEYWORD_SUPER, + LANG_CALL_KEYWORD_EXCLUDE, + LANG_CALL_KEYWORDS, + LANG_CLASS_KEYWORDS, + LANG_CONFIG_FILE, + LANG_DEFAULT_GRAMMAR_URL, + LANG_ELLIPSIS, + LANG_ERR_CONFIG_NOT_FOUND, + LANG_ERR_CUSTOM_URL_HINT, + LANG_ERR_GIT, + LANG_ERR_MANUAL_REMOVE_HINT, + LANG_ERR_MISSING_ARGS, + LANG_ERR_NO_GRAMMARS_WARNING, + LANG_ERR_NODE_TYPES_WARNING, + LANG_ERR_PARSE_NODE_TYPES, + LANG_ERR_REINSTALL_FAILED, + LANG_ERR_REMOVE_CONFIG, + LANG_ERR_REMOVE_SUBMODULE, + LANG_ERR_REPO_NOT_FOUND, + LANG_ERR_TREE_SITTER_JSON_WARNING, + LANG_ERR_UPDATE_CONFIG, + LANG_EXCLUSION_KEYWORDS, + LANG_FALLBACK_MANUAL_ADD, + LANG_FALLBACK_METHOD_NODE, + LANG_FUNCTION_KEYWORDS, + LANG_GIT_MODULES_PATH, + LANG_GIT_SUFFIX, + LANG_GITMODULES_FILE, + LANG_GITMODULES_REGEX, + LANG_GRAMMARS_DIR, + LANG_MODULE_KEYWORDS, + LANG_MSG_ADDING_SUBMODULE, + LANG_MSG_AUTO_DETECTED_EXT, + LANG_MSG_AUTO_DETECTED_LANG, + LANG_MSG_AVAILABLE_LANGS, + LANG_MSG_CALLS, + LANG_MSG_CATEGORY_FORMAT, + LANG_MSG_CLASSES, + LANG_MSG_CLEANED_MODULES, + LANG_MSG_CLEANUP_CANCELLED, + LANG_MSG_CLEANUP_COMPLETE, + LANG_MSG_COMMON_ISSUES, + LANG_MSG_CUSTOM_URL_WARNING, + LANG_MSG_EDIT_HINT, + LANG_MSG_FOUND_NODE_TYPES, + LANG_MSG_FOUND_ORPHANS, + LANG_MSG_FUNCTIONS, + LANG_MSG_ISSUE_CALL_TYPES, + LANG_MSG_ISSUE_CLASS_TYPES, + LANG_MSG_ISSUE_MISCLASSIFIED, + LANG_MSG_ISSUE_MISSING, + LANG_MSG_KEEPING_SUBMODULE, + LANG_MSG_LANG_ADDED, + LANG_MSG_LANG_NOT_FOUND, + LANG_MSG_LANG_REMOVED, + LANG_MSG_LIST_HINT, + LANG_MSG_MAPPED_CATEGORIES, + LANG_MSG_MODULES, + LANG_MSG_NO_GITMODULES, + LANG_MSG_NO_MODULES_DIR, + LANG_MSG_NO_ORPHANS, + LANG_MSG_NO_SUBMODULE, + LANG_MSG_READDING_SUBMODULE, + LANG_MSG_REINSTALL_SUCCESS, + LANG_MSG_REMOVED_FROM_CONFIG, + LANG_MSG_REMOVED_ORPHAN, + LANG_MSG_REMOVING_ENTRY, + LANG_MSG_REMOVING_SUBMODULE, + LANG_MSG_REVIEW_HINT, + LANG_MSG_REVIEW_PROMPT, + LANG_MSG_SEMANTIC_CATEGORIES, + LANG_MSG_SUBMODULE_EXISTS, + LANG_MSG_SUBMODULE_REMOVED, + LANG_MSG_SUBMODULE_SUCCESS, + LANG_MSG_UPDATED_CONFIG, + LANG_MSG_USING_DEFAULT_URL, + LANG_MSG_USING_LANG_NAME, + LANG_NODE_TYPES_JSON, + LANG_PROMPT_CALLS, + LANG_PROMPT_CLASSES, + LANG_PROMPT_COMMON_NAME, + LANG_PROMPT_CONTINUE, + LANG_PROMPT_FUNCTIONS, + LANG_PROMPT_LANGUAGE_NAME, + LANG_PROMPT_MODULES, + LANG_PROMPT_REMOVE_ORPHANS, + LANG_SRC_DIR, + LANG_TABLE_COL_CALL_TYPES, + LANG_TABLE_COL_CLASS_TYPES, + LANG_TABLE_COL_FUNCTION_TYPES, + LANG_TABLE_COL_LANGUAGE, + LANG_TABLE_PLACEHOLDER, + LANG_TABLE_TITLE, + LANG_TREE_SITTER_JSON, + LANG_TREE_SITTER_URL_MARKER, + LUA_DEFAULT_VAR_TYPES, + LUA_METHOD_SEPARATOR, + LUA_STATEMENT_SUFFIX, + LUA_STDLIB_MODULES, + LUA_STRING_TYPES, + MARKDOWN_FENCE, + MARKDOWN_FENCE_DIFF, + MCP_ASK_AGENT_ERROR, + MCP_CONTENT_TYPE_TEXT, + MCP_DEFAULT_DIRECTORY, + MCP_INDEX_ERROR, + MCP_INDEX_SUCCESS, + MCP_INDEX_SUCCESS_PROJECT, + MCP_JSON_INDENT, + MCP_KEY_ERROR, + MCP_KEY_ERROR_MESSAGE, + MCP_KEY_FOUND, + MCP_KEY_QUERY_USED, + MCP_KEY_RESULTS, + MCP_KEY_SUMMARY, + MCP_LOG_FORMAT, + MCP_LOG_LEVEL_INFO, + MCP_NOT_AVAILABLE, + MCP_PAGINATION_HEADER, + MCP_PROJECT_DELETED, + MCP_SEMANTIC_NOT_AVAILABLE_RESPONSE, + MCP_SERVER_NAME, + MCP_TOOL_EXEC_ERROR, + MCP_TOOL_NAME_QUERY, + MCP_UNKNOWN_TOOL_ERROR, + MCP_UPDATE_ERROR, + MCP_UPDATE_SUCCESS, + MCP_WIPE_CANCELLED, + MCP_WIPE_ERROR, + MCP_WIPE_SUCCESS, + MCP_WRITE_SUCCESS, + MIME_TYPE_DEFAULT, + ML_DEPENDENCIES, + MOD_RS, + MODEL_CONTEXT_WINDOWS, + MODULE_QDRANT_CLIENT, + MODULE_TORCH, + MODULE_TRANSFORMERS, + OLLAMA_HEALTH_PATH, + OPENAI_DEFAULT_ENDPOINT, + OPERATOR_PREFIX, + PACKAGE_NAME, + PATH_CURRENT_DIR, + PATH_PARENT_DIR, + PKG_CARGO_TOML, + PKG_CMAKE_LISTS, + PKG_CONANFILE, + PKG_INIT_PY, + PKG_MAKEFILE, + PKG_VCXPROJ_GLOB, + PREFIX_ANONYMOUS, + PREFIX_ARROW, + PREFIX_FUNC, + PREFIX_IIFE, + PREFIX_IIFE_DIRECT, + PREFIX_LAMBDA, + PROPERTY_DECORATORS, + PROTOBUF_INDEX_FILE, + PROTOBUF_NODES_FILE, + PROTOBUF_RELS_FILE, + PUNCTUATION_TYPES, + PY_ASSIGNMENT_QUERY, + PY_BUILTIN_GETATTR, + PY_BUILTIN_LEN, + PY_CLASS_REPOSITORY, + PY_CLS_PREFIX, + PY_DUNDER_BOOL, + PY_DUNDER_CONTAINS, + PY_DUNDER_GETITEM, + PY_DUNDER_LEN, + PY_DUNDER_SETITEM, + PY_KEYWORD_CLS, + PY_KEYWORD_SELF, + PY_METHOD_CREATE, + PY_METHOD_INIT, + PY_MODELS_BASE_PATH, + PY_NAME_DUNDER, + PY_NAME_UNDERSCORE, + PY_NONE, + PY_OP_IN, + PY_OPERAND_REJECT_CHARS, + PY_PROTOCOL, + PY_RETURN_QUERY, + PY_SCORE_CONTAINS_BASE, + PY_SCORE_EXACT_MATCH, + PY_SCORE_SUFFIX_MATCH, + PY_SELF_PREFIX, + PY_UNION_SEPARATOR, + PY_VAR_PATTERN_ALL, + PY_VAR_SUFFIX_PLURAL, + PYINSTALLER_ARG_CLEAN, + PYINSTALLER_ARG_COLLECT_ALL, + PYINSTALLER_ARG_COLLECT_DATA, + PYINSTALLER_ARG_EXCLUDE_MODULE, + PYINSTALLER_ARG_HIDDEN_IMPORT, + PYINSTALLER_ARG_NAME, + PYINSTALLER_ARG_NOCONFIRM, + PYINSTALLER_ARG_ONEFILE, + PYINSTALLER_CMD, + PYINSTALLER_ENTRY_POINT, + PYINSTALLER_EXCLUDED_MODULES, + PYINSTALLER_PACKAGES, + PYPROJECT_KEY_PACKAGE_DIR, + PYPROJECT_KEY_SETUPTOOLS, + PYPROJECT_KEY_TOOL, + PYPROJECT_PATH, + QUOTE_CHARS, + REGEX_FINAL_METHOD_CAPTURE, + REGEX_METHOD_CHAIN_SUFFIX, + ROOT_DIR_KEY, + RS_CALL_OR_GENERIC_FN, + RS_DEREF_WRAPPERS, + RS_ENCODING_UTF8, + RS_FIELD_ARGUMENT, + RS_GUARD_ACCESSORS, + RS_GUARD_WRAPPERS, + RS_IDENT_NODE_TYPES, + RS_IDENT_OR_SELF, + RS_IDENTIFIER_TYPES, + RS_IDENTITY_METHODS, + RS_MACRO_RECEIVER_TYPES, + RS_PATH_KEYWORDS, + RS_RESULT_WRAPPERS, + RS_RETURN_STRIP_WRAPPERS, + RS_RETURN_TYPE_NODE_TYPES, + RS_SCOPED_TYPES, + RS_SELF_TYPE, + RS_TYPE_NODE_TYPES, + RS_USE_LIST_DELIMITERS, + RS_WILDCARD_PREFIX, + RUST_CRATE_PREFIX, + SEMANTIC_BATCH_SIZE, + SEMANTIC_DEPENDENCIES, + SEMANTIC_TYPE_UNKNOWN, + SEPARATOR_COLON, + SEPARATOR_COMMA_SPACE, + SEPARATOR_DOT, + SEPARATOR_DOUBLE_COLON, + SEPARATOR_PROTOTYPE, + SEPARATOR_SLASH, + SHIFT_TAB_ESCAPE, + SPEC_C_CALL_TYPES, + SPEC_C_CLASS_TYPES, + SPEC_C_FUNCTION_TYPES, + SPEC_C_MODULE_TYPES, + SPEC_C_PACKAGE_INDICATORS, + SPEC_CPP_CALL_TYPES, + SPEC_CPP_CLASS_TYPES, + SPEC_CPP_FUNCTION_TYPES, + SPEC_CPP_MODULE_TYPES, + SPEC_CPP_PACKAGE_INDICATORS, + SPEC_GO_CALL_TYPES, + SPEC_GO_CLASS_TYPES, + SPEC_GO_FUNCTION_TYPES, + SPEC_GO_IMPORT_TYPES, + SPEC_GO_MODULE_TYPES, + SPEC_JAVA_CALL_TYPES, + SPEC_JAVA_CLASS_TYPES, + SPEC_JAVA_FUNCTION_TYPES, + SPEC_JAVA_IMPORT_TYPES, + SPEC_JAVA_MODULE_TYPES, + SPEC_JS_CALL_TYPES, + SPEC_JS_MODULE_TYPES, + SPEC_LUA_CALL_TYPES, + SPEC_LUA_CLASS_TYPES, + SPEC_LUA_FUNCTION_TYPES, + SPEC_LUA_IMPORT_TYPES, + SPEC_LUA_MODULE_TYPES, + SPEC_PHP_CALL_TYPES, + SPEC_PHP_CLASS_TYPES, + SPEC_PHP_FUNCTION_TYPES, + SPEC_PHP_IMPORT_FROM_TYPES, + SPEC_PHP_IMPORT_TYPES, + SPEC_PHP_MODULE_TYPES, + SPEC_PY_CALL_TYPES, + SPEC_PY_CLASS_TYPES, + SPEC_PY_FUNCTION_TYPES, + SPEC_PY_IMPORT_FROM_TYPES, + SPEC_PY_IMPORT_TYPES, + SPEC_PY_MODULE_TYPES, + SPEC_PY_PACKAGE_INDICATORS, + SPEC_RS_CALL_TYPES, + SPEC_RS_CLASS_TYPES, + SPEC_RS_FUNCTION_TYPES, + SPEC_RS_IMPORT_FROM_TYPES, + SPEC_RS_IMPORT_TYPES, + SPEC_RS_MODULE_TYPES, + SPEC_RS_PACKAGE_INDICATORS, + SPEC_SCALA_CALL_TYPES, + SPEC_SCALA_CLASS_TYPES, + SPEC_SCALA_FUNCTION_TYPES, + SPEC_SCALA_IMPORT_TYPES, + SPEC_SCALA_MODULE_TYPES, + STR_NONE, + TEXT_UNKNOWN, + TIKTOKEN_ENCODING, + TMP_EXTENSION, + TOML_KEY_OPTIONAL_DEPS, + TOML_KEY_PROJECT, + TREESITTER_EXTRA_KEY, + TREESITTER_PKG_PREFIX, + TRIPLE_QUOTES, + TS_ABSTRACT_CLASS_DECLARATION, + TS_ACCESS_SPECIFIER, + TS_ACCESSIBILITY_MODIFIER, + TS_ALIASED_IMPORT, + TS_ANNOTATION, + TS_ANNOTATION_TYPE_DECLARATION, + TS_ARGUMENTS, + TS_ARRAY, + TS_ARRAY_CREATION_EXPRESSION, + TS_ARROW_FUNCTION, + TS_AS_EXPRESSION, + TS_ASSIGNMENT_EXPRESSION, + TS_ASTERISK, + TS_ATTRIBUTE, + TS_BASE_CLASS_CLAUSE, + TS_CALL_EXPRESSION, + TS_CAST_WRAPPER_TYPES, + TS_CLASS_BODY, + TS_CLASS_DECLARATION, + TS_CLASS_HERITAGE, + TS_CONSTRUCTOR_DECLARATION, + TS_CPP_BINARY_EXPRESSION, + TS_CPP_CALL_EXPRESSION, + TS_CPP_DECLARATION, + TS_CPP_DELETE_EXPRESSION, + TS_CPP_FIELD_DECLARATION, + TS_CPP_FIELD_EXPRESSION, + TS_CPP_FUNCTION_DECLARATOR, + TS_CPP_FUNCTION_DEFINITION, + TS_CPP_LAMBDA_EXPRESSION, + TS_CPP_LINKAGE_SPECIFICATION, + TS_CPP_NEW_EXPRESSION, + TS_CPP_SUBSCRIPT_EXPRESSION, + TS_CPP_TEMPLATE_DECLARATION, + TS_CPP_TEMPLATE_PARAMETER_LIST, + TS_CPP_TRANSLATION_UNIT, + TS_CPP_UNARY_EXPRESSION, + TS_CPP_UPDATE_EXPRESSION, + TS_DECIMAL_FLOATING_POINT_LITERAL, + TS_DECLARATION, + TS_DECORATOR, + TS_DOT_INDEX_EXPRESSION, + TS_DOTTED_NAME, + TS_ENHANCED_FOR_STATEMENT, + TS_ENUM_CLASS_SPECIFIER, + TS_ENUM_DECLARATION, + TS_ENUM_SPECIFIER, + TS_ERROR, + TS_EXPORT_CLAUSE, + TS_EXPORT_DEFAULT, + TS_EXPORT_SPECIFIER, + TS_EXPORT_STATEMENT, + TS_EXPRESSION_STATEMENT, + TS_EXTENDS, + TS_EXTENDS_CLAUSE, + TS_EXTENDS_TYPE_CLAUSE, + TS_FALSE, + TS_FIELD_ACCESS, + TS_FIELD_ARGUMENT, + TS_FIELD_ARGUMENTS, + TS_FIELD_BODY, + TS_FIELD_CONDITION, + TS_FIELD_DECLARATION, + TS_FIELD_DECLARATOR, + TS_FIELD_FUNCTION, + TS_FIELD_INTERFACES, + TS_FIELD_LEFT, + TS_FIELD_NAME, + TS_FIELD_OBJECT, + TS_FIELD_OPERATORS, + TS_FIELD_PARAMETER, + TS_FIELD_PARAMETERS, + TS_FIELD_PATTERN, + TS_FIELD_RIGHT, + TS_FIELD_SUPERCLASS, + TS_FIELD_TYPE, + TS_FIELD_TYPE_PARAMETERS, + TS_FORMAL_PARAMETER, + TS_FUNCTION_DECLARATION, + TS_FUNCTION_EXPRESSION, + TS_FUNCTION_SIGNATURE, + TS_GENERATOR_FUNCTION_DECLARATION, + TS_GENERIC_FUNCTION, + TS_GENERIC_TYPE, + TS_GO_ASSIGNMENT_STATEMENT, + TS_GO_CALL_EXPRESSION, + TS_GO_COMPOSITE_LITERAL, + TS_GO_CONTAINER_TYPES, + TS_GO_EXPRESSION_LIST, + TS_GO_FIELD_DECLARATION, + TS_GO_FIELD_DECLARATION_LIST, + TS_GO_FIELD_IDENTIFIER, + TS_GO_FUNC_LITERAL, + TS_GO_FUNCTION_DECLARATION, + TS_GO_IMPORT_DECLARATION, + TS_GO_INTERFACE_TYPE, + TS_GO_KEYED_ELEMENT, + TS_GO_LITERAL_ELEMENT, + TS_GO_LITERAL_VALUE, + TS_GO_METHOD_DECLARATION, + TS_GO_PARAMETER_DECLARATION, + TS_GO_PARAMETER_LIST, + TS_GO_POINTER_TYPE, + TS_GO_SELECTOR_EXPRESSION, + TS_GO_SHORT_VAR_DECLARATION, + TS_GO_SOURCE_FILE, + TS_GO_STRUCT_TYPE, + TS_GO_TYPE_ALIAS, + TS_GO_TYPE_DECLARATION, + TS_GO_TYPE_SPEC, + TS_GO_UNARY_EXPRESSION, + TS_GO_VAR_DECLARATION, + TS_GO_VAR_SPEC, + TS_IDENTIFIER, + TS_IMPL_ITEM, + TS_IMPLEMENTS_CLAUSE, + TS_IMPORT_CLAUSE, + TS_IMPORT_DECLARATION, + TS_IMPORT_FROM_STATEMENT, + TS_IMPORT_PREFIX, + TS_IMPORT_SPEC, + TS_IMPORT_SPEC_LIST, + TS_IMPORT_SPECIFIER, + TS_IMPORT_STATEMENT, + TS_INTEGER_LITERAL, + TS_INTERFACE_DECLARATION, + TS_INTERNAL_MODULE, + TS_INTERPRETED_STRING_LITERAL, + TS_JAVA_ANNOTATION_TYPE_DECLARATION, + TS_JAVA_EXTENDS_INTERFACES, + TS_JAVA_METHOD_INVOCATION, + TS_JSX_EXPRESSION, + TS_JSX_OPENING_ELEMENT, + TS_JSX_SELF_CLOSING_ELEMENT, + TS_LEXICAL_DECLARATION, + TS_LOCAL_VARIABLE_DECLARATION, + TS_LUA_ASSIGNMENT_STATEMENT, + TS_LUA_CHUNK, + TS_LUA_EXPRESSION_LIST, + TS_LUA_FUNCTION_CALL, + TS_LUA_FUNCTION_DECLARATION, + TS_LUA_FUNCTION_DEFINITION, + TS_LUA_IDENTIFIER, + TS_LUA_LOCAL_STATEMENT, + TS_LUA_METHOD_INDEX_EXPRESSION, + TS_LUA_VARIABLE_DECLARATION, + TS_LUA_VARIABLE_LIST, + TS_MARKER_ANNOTATION, + TS_MEMBER_EXPRESSION, + TS_METHOD_DECLARATION, + TS_METHOD_DEFINITION, + TS_METHOD_INVOCATION, + TS_MODIFIERS, + TS_MODULE, + TS_MODULE_DECLARATION, + TS_NAMED_IMPORTS, + TS_NAMESPACE_DEFINITION, + TS_NAMESPACE_IMPORT, + TS_NEW_EXPRESSION, + TS_NON_NULL_EXPRESSION, + TS_OBJECT, + TS_OBJECT_CREATION_EXPRESSION, + TS_OBJECT_PATTERN, + TS_OPTIONAL_PARAMETER, + TS_PACKAGE_DECLARATION, + TS_PACKAGE_IDENTIFIER, + TS_PAIR, + TS_PAIR_PATTERN, + TS_PARENTHESIZED_EXPRESSION, + TS_PHP_ANONYMOUS_FUNCTION, + TS_PHP_ARROW_FUNCTION, + TS_PHP_ATTRIBUTE, + TS_PHP_ATTRIBUTE_GROUP, + TS_PHP_ATTRIBUTE_LIST, + TS_PHP_BASE_CLAUSE, + TS_PHP_CLASS_INTERFACE_CLAUSE, + TS_PHP_FUNCTION, + TS_PHP_FUNCTION_CALL_EXPRESSION, + TS_PHP_FUNCTION_DEFINITION, + TS_PHP_FUNCTION_STATIC_DECLARATION, + TS_PHP_INCLUDE_EXPRESSION, + TS_PHP_INCLUDE_ONCE_EXPRESSION, + TS_PHP_MEMBER_CALL_EXPRESSION, + TS_PHP_METHOD_DECLARATION, + TS_PHP_NAME, + TS_PHP_NAMESPACE_DEFINITION, + TS_PHP_NAMESPACE_USE_CLAUSE, + TS_PHP_NAMESPACE_USE_DECLARATION, + TS_PHP_NULLSAFE_MEMBER_CALL_EXPRESSION, + TS_PHP_OBJECT_CREATION_EXPRESSION, + TS_PHP_QUALIFIED_NAME, + TS_PHP_REQUIRE_EXPRESSION, + TS_PHP_REQUIRE_ONCE_EXPRESSION, + TS_PHP_SCOPED_CALL_EXPRESSION, + TS_PHP_TRAIT_DECLARATION, + TS_PHP_USE_DECLARATION, + TS_PHP_VISIBILITY_MODIFIER, + TS_PREPROC_INCLUDE, + TS_PRIVATE, + TS_PRIVATE_PROPERTY_IDENTIFIER, + TS_PROGRAM, + TS_PROPERTY_IDENTIFIER, + TS_PY_ASSIGNMENT, + TS_PY_ATTRIBUTE, + TS_PY_BLOCK, + TS_PY_BOOLEAN_OPERATOR, + TS_PY_CALL, + TS_PY_CLASS_DEFINITION, + TS_PY_COMPARISON_OPERATOR, + TS_PY_CONDITIONAL_EXPRESSION, + TS_PY_DECORATED_DEFINITION, + TS_PY_DECORATOR, + TS_PY_DEFAULT_PARAMETER, + TS_PY_DICTIONARY, + TS_PY_DICTIONARY_SPLAT_PATTERN, + TS_PY_ELIF_CLAUSE, + TS_PY_EXPRESSION_STATEMENT, + TS_PY_FOR_IN_CLAUSE, + TS_PY_FOR_STATEMENT, + TS_PY_FUNCTION_DEFINITION, + TS_PY_IDENTIFIER, + TS_PY_IF_STATEMENT, + TS_PY_IMPORT_FROM_STATEMENT, + TS_PY_IMPORT_STATEMENT, + TS_PY_KEYWORD, + TS_PY_KEYWORD_ARGUMENT, + TS_PY_LAMBDA, + TS_PY_LIST, + TS_PY_LIST_COMPREHENSION, + TS_PY_LIST_SPLAT_PATTERN, + TS_PY_MODULE, + TS_PY_NOT_OPERATOR, + TS_PY_PAIR, + TS_PY_RETURN, + TS_PY_RETURN_STATEMENT, + TS_PY_SET, + TS_PY_STRING, + TS_PY_STRING_CONTENT, + TS_PY_SUBSCRIPT, + TS_PY_TUPLE, + TS_PY_TYPED_DEFAULT_PARAMETER, + TS_PY_TYPED_PARAMETER, + TS_PY_WHILE_STATEMENT, + TS_PY_WITH_STATEMENT, + TS_RECORD_DECLARATION, + TS_RELATIVE_IMPORT, + TS_REQUIRED_PARAMETER, + TS_RETURN, + TS_RETURN_STATEMENT, + TS_RS_ATTRIBUTE_ITEM, + TS_RS_CALL_EXPRESSION, + TS_RS_CLOSURE_EXPRESSION, + TS_RS_CRATE, + TS_RS_ENUM_ITEM, + TS_RS_EXTERN_CRATE_DECLARATION, + TS_RS_FIELD_DECLARATION, + TS_RS_FIELD_DECLARATION_LIST, + TS_RS_FIELD_EXPRESSION, + TS_RS_FIELD_IDENTIFIER, + TS_RS_FIELD_PATH, + TS_RS_FUNCTION_ITEM, + TS_RS_FUNCTION_SIGNATURE_ITEM, + TS_RS_IMPL_ITEM, + TS_RS_INNER_ATTRIBUTE_ITEM, + TS_RS_KEYWORD_AS, + TS_RS_LET_DECLARATION, + TS_RS_MACRO_INVOCATION, + TS_RS_MATCH_ARM, + TS_RS_MATCH_EXPRESSION, + TS_RS_MOD_ITEM, + TS_RS_PARAMETER, + TS_RS_POINTER_TYPE, + TS_RS_PRIMITIVE_TYPE, + TS_RS_REFERENCE_TYPE, + TS_RS_SCOPED_TYPE_IDENTIFIER, + TS_RS_SCOPED_USE_LIST, + TS_RS_SELF_PARAMETER, + TS_RS_SOURCE_FILE, + TS_RS_STRUCT_EXPRESSION, + TS_RS_STRUCT_ITEM, + TS_RS_TOKEN_DOT, + TS_RS_TRAIT_ITEM, + TS_RS_TRY_EXPRESSION, + TS_RS_TUPLE_STRUCT_PATTERN, + TS_RS_TYPE_ARGUMENTS, + TS_RS_TYPE_ITEM, + TS_RS_UNION_ITEM, + TS_RS_USE_AS_CLAUSE, + TS_RS_USE_DECLARATION, + TS_RS_USE_LIST, + TS_RS_USE_WILDCARD, + TS_SATISFIES_EXPRESSION, + TS_SCALA_CALL_EXPRESSION, + TS_SCALA_CLASS_DEFINITION, + TS_SCALA_COMPILATION_UNIT, + TS_SCALA_FIELD_EXPRESSION, + TS_SCALA_FUNCTION_DECLARATION, + TS_SCALA_FUNCTION_DEFINITION, + TS_SCALA_GENERIC_FUNCTION, + TS_SCALA_IMPORT_DECLARATION, + TS_SCALA_INFIX_EXPRESSION, + TS_SCALA_OBJECT_DEFINITION, + TS_SCALA_TRAIT_DEFINITION, + TS_SCOPED_IDENTIFIER, + TS_SCOPED_TYPE_IDENTIFIER, + TS_SELECTOR_EXPRESSION, + TS_SHORTHAND_PROPERTY_IDENTIFIER_PATTERN, + TS_SPREAD_PARAMETER, + TS_STATEMENT_BLOCK, + TS_STATIC, + TS_STRING, + TS_STRING_LITERAL, + TS_STRUCT_SPECIFIER, + TS_SUPER, + TS_SYSTEM_LIB_STRING, + TS_TEMPLATE_ARGUMENT_LIST, + TS_TEMPLATE_FUNCTION, + TS_TEMPLATE_TYPE, + TS_THIS, + TS_TRUE, + TS_TYPE_ALIAS_DECLARATION, + TS_TYPE_DESCRIPTOR, + TS_TYPE_IDENTIFIER, + TS_TYPE_LIST, + TS_TYPE_PARAMETER, + TS_UNION_SPECIFIER, + TS_USE_DECLARATION, + TS_VARIABLE_DECLARATOR, + TS_VIRTUAL, + TS_VOID_TYPE, + TS_WILDCARD_IMPORT, + TYPE_INFERENCE_BASE_MODEL, + TYPE_INFERENCE_LIST, + UNIXCODER_BUFFER_BIAS, + UNIXCODER_MASK_TOKEN, + UNIXCODER_MAX_CONTEXT, + UNIXCODER_MODEL, + V1_PATH, + VERSION_SPLIT_EQ, + VERSION_SPLIT_GTE, + VERSION_SPLIT_LT, + Architecture, + CppFrontend, + CppNodeType, + DeadCodeFormat, + EventType, + KeyBinding, + MCPEnvVar, + MCPParamName, + MCPSchemaField, + MCPSchemaType, + MCPToolName, + MCPTransport, + PyInstallerPackage, + QueryFormat, + UniXcoderMode, +) +from .graph import ( + _NODE_LABEL_UNIQUE_KEYS, + CYPHER_ALL_DEFINITION_QNS, + CYPHER_ALL_FILE_PATHS, + CYPHER_ALL_FOLDER_PATHS, + CYPHER_ALL_INHERITS, + CYPHER_ALL_MODULE_PATHS_INTERNAL, + CYPHER_ALLOWED_PROCEDURE_PREFIXES, + CYPHER_BACKTICK, + CYPHER_DANGEROUS_KEYWORDS, + CYPHER_DEFAULT_LIMIT, + CYPHER_DELETE_CALLS, + CYPHER_DELETE_FILE, + CYPHER_DELETE_FOLDER, + CYPHER_DELETE_MODULE, + CYPHER_DELETE_ORPHAN_EXTERNAL_MODULES, + CYPHER_INBOUND_EDGES, + CYPHER_MATCH_KEYWORD, + CYPHER_MEMORY_LIMIT_SUFFIX, + CYPHER_MEMORY_LIMIT_TOKEN, + CYPHER_PARAM_PATHS, + CYPHER_PREFIX, + CYPHER_QUERY_EMBEDDINGS, + CYPHER_QUERY_PROJECT_NODE_IDS, + CYPHER_SEMICOLON, + KEY_ABSOLUTE_PATH, + KEY_BASE_INDEX, + KEY_BASE_QN, + KEY_CALLER_LABEL, + KEY_CALLER_QN, + KEY_CHILD_QN, + KEY_CREATED, + KEY_DECORATORS, + KEY_DOCSTRING, + KEY_END_LINE, + KEY_EXPORTED_AT, + KEY_EXTENSION, + KEY_FROM_ID, + KEY_FROM_VAL, + KEY_IMPLEMENTS_MODULE, + KEY_IS_EXPORTED, + KEY_IS_PROPERTY, + KEY_LABEL, + KEY_LABELS, + KEY_METADATA, + KEY_MODULE_TYPE, + KEY_NAME, + KEY_NODE_ID, + KEY_NODE_LABELS, + KEY_PARAMETERS, + KEY_PARSER, + KEY_PATH, + KEY_PREFIX, + KEY_PROJECT_NAME, + KEY_PROPERTIES, + KEY_PROPS, + KEY_QUALIFIED_NAME, + KEY_QUERY, + KEY_REL, + KEY_RELATIONSHIP_TYPES, + KEY_RELATIONSHIPS, + KEY_RESPONSE, + KEY_START_LINE, + KEY_TARGET_LABEL, + KEY_TARGET_QN, + KEY_TO_ID, + KEY_TO_VAL, + KEY_TOTAL_RELATIONSHIPS, + KEY_TYPE, + KEY_VERSION_SPEC, + NODE_PROJECT, + NODE_UNIQUE_CONSTRAINTS, + ONEOF_CLASS, + ONEOF_ENUM, + ONEOF_EXTERNAL_MODULE, + ONEOF_EXTERNAL_PACKAGE, + ONEOF_FILE, + ONEOF_FOLDER, + ONEOF_FUNCTION, + ONEOF_INTERFACE, + ONEOF_METHOD, + ONEOF_MODULE, + ONEOF_MODULE_IMPLEMENTATION, + ONEOF_MODULE_INTERFACE, + ONEOF_PACKAGE, + ONEOF_PROJECT, + ONEOF_TYPE, + ONEOF_UNION, + PAYLOAD_NODE_ID, + PAYLOAD_QUALIFIED_NAME, + REL_TYPE_CALLS, + TRIE_INTERNAL_PREFIX, + TRIE_QN_KEY, + TRIE_TYPE_KEY, + NodeLabel, + RelationshipType, + UniqueKeyType, + _missing_keys, +) +from .languages import ( + BINARY_EXTENSIONS, + C_EXTENSIONS, + CPP_EXTENSIONS, + CPP_MODULE_EXTENSIONS, + EXT_C, + EXT_CC, + EXT_CCM, + EXT_CLASS, + EXT_CPP, + EXT_CPPM, + EXT_CXX, + EXT_GO, + EXT_H, + EXT_HH, + EXT_HPP, + EXT_HXX, + EXT_IXX, + EXT_JAVA, + EXT_JS, + EXT_JSX, + EXT_LUA, + EXT_PHP, + EXT_PY, + EXT_RS, + EXT_SC, + EXT_SCALA, + EXT_TS, + EXT_TSX, + GO_EXTENSIONS, + JAVA_EXTENSIONS, + JS_EXTENSIONS, + JS_TS_MODULE_EXTENSIONS, + LANG_PROMPT_EXTENSIONS, + LANG_TABLE_COL_EXTENSIONS, + LANGUAGE_METADATA, + LUA_EXTENSIONS, + MIME_TYPE_FALLBACK, + MIME_TYPE_PDF, + MULTIMODAL_EXTENSIONS, + PHP_EXTENSIONS, + PY_EXTENSIONS, + RS_EXTENSIONS, + SCALA_EXTENSIONS, + TS_EXTENSIONS, + TSX_EXTENSIONS, + LanguageMetadata, + LanguageStatus, + SupportedLanguage, +) +from .operators import ( + CPP_IMPORT_PARTITION_PREFIX, + CPP_OPERATOR_PREFIX, + CPP_PARTITION_PREFIX, + DEFAULT_ROOT_DECORATORS, + GO_ROOT_FUNCTION_NAMES, + JS_EXTERNAL_IMPORT_SCHEMES, + JS_INDEX_STEM, + PATH_PARENT_PREFIX, + PATH_RELATIVE_PREFIX, + PROTOCOL_BASE_QNS, + RUST_ROOT_FUNCTION_NAMES, + RUST_TRAIT_METHOD_NAMES, + TEST_PATH_PATTERNS, + TS_ALIAS_SKIP_DIRS, + TS_BASE_URL_KEY, + TS_COMPILER_OPTIONS_KEY, + TS_PATHS_KEY, + TSCONFIG_FILENAMES, +) + +__all__ = [ + "ABSTRACT_DECORATORS", + "ALLOWED_COMMENT_MARKERS", + "ANTHROPIC_API_VERSION", + "ANTHROPIC_COUNT_TIMEOUT_S", + "ANTHROPIC_COUNT_TOKENS_URL", + "ANTHROPIC_HEADER_API_KEY", + "ANTHROPIC_HEADER_VERSION", + "ARG_COMMAND", + "ARG_CONTENT", + "ARG_FILE_PATH", + "ARG_REPLACEMENT_CODE", + "ARG_TARGET_CODE", + "ATTR_TYPE_INFERENCE_IN_PROGRESS", + "Architecture", + "BINARY_EXTENSIONS", + "BINARY_FILE_PERMISSION", + "BINARY_NAME_TEMPLATE", + "BINDINGS_DIR", + "BUILD_EXT_CMD", + "BUILTIN_PREFIX", + "BYTES_PER_MB", + "BYTES_PER_MB_FLOAT", + "CALL_NODES_BASIC", + "CALL_NODES_METHOD", + "CALL_NODES_OPERATOR", + "CALL_NODES_SPECIAL", + "CAPTURE_ARROW_FUNCTION", + "CAPTURE_CALL", + "CAPTURE_CHILD_CLASS", + "CAPTURE_CLASS", + "CAPTURE_CONSTRUCTOR_NAME", + "CAPTURE_EXPORTS_OBJ", + "CAPTURE_EXPORTS_PROP", + "CAPTURE_EXPORT_FUNCTION", + "CAPTURE_EXPORT_NAME", + "CAPTURE_FUNC", + "CAPTURE_FUNCTION", + "CAPTURE_FUNCTION_EXPR", + "CAPTURE_IMPORT", + "CAPTURE_IMPORT_FROM", + "CAPTURE_MEMBER_EXPR", + "CAPTURE_METHOD_FUNCTION", + "CAPTURE_METHOD_NAME", + "CAPTURE_MODULE_OBJ", + "CAPTURE_PARENT_CLASS", + "CAPTURE_PROTOTYPE_KEYWORD", + "CAPTURE_VARIABLE_DECLARATOR", + "CHAR_ANGLE_CLOSE", + "CHAR_ANGLE_OPEN", + "CHAR_COLON", + "CHAR_COMMA", + "CHAR_HYPHEN", + "CHAR_PAREN_CLOSE", + "CHAR_PAREN_OPEN", + "CHAR_SEMICOLON", + "CHAR_SPACE", + "CHAR_UNDERSCORE", + "CLASS_NODES_BASIC", + "CLASS_NODES_ENUM", + "CLASS_NODES_INTERFACE", + "CLASS_NODES_STRUCT", + "CLASS_NODES_TYPE_ALIAS", + "CLASS_NODES_UNION", + "CLI_DEADCODE_COL_KIND", + "CLI_DEADCODE_COL_LINES", + "CLI_DEADCODE_COL_QUALIFIED_NAME", + "CLI_DEADCODE_CONNECTING", + "CLI_DEADCODE_LINE_RANGE", + "CLI_DEADCODE_NONE", + "CLI_DEADCODE_SUMMARY", + "CLI_DEADCODE_TABLE_TITLE", + "CLI_DEADCODE_WRITTEN", + "CLI_ERR_CONFIG", + "CLI_ERR_DEADCODE_AMBIGUOUS_PROJECT", + "CLI_ERR_DEADCODE_FAILED", + "CLI_ERR_DEADCODE_NO_PROJECTS", + "CLI_ERR_DELETE_PROJECT_FAILED", + "CLI_ERR_EXPORT_FAILED", + "CLI_ERR_INDEXING", + "CLI_ERR_JSON_REQUIRES_ASK_AGENT", + "CLI_ERR_LOAD_GRAPH", + "CLI_ERR_MCP_SERVER", + "CLI_ERR_ONLY_JSON", + "CLI_ERR_OUTPUT_REQUIRES_UPDATE", + "CLI_ERR_PATH_NOT_DIR", + "CLI_ERR_PATH_NOT_EXISTS", + "CLI_ERR_PROJECT_NAME_REQUIRED", + "CLI_ERR_PROJECT_NOT_FOUND", + "CLI_ERR_STARTUP", + "CLI_ERR_STATS_FAILED", + "CLI_MSG_APP_TERMINATED", + "CLI_MSG_AUTO_EXCLUDE", + "CLI_MSG_CLEANING_DB", + "CLI_MSG_CLEANING_HASH_CACHE", + "CLI_MSG_CLEAN_DONE", + "CLI_MSG_CONNECTING_MEMGRAPH", + "CLI_MSG_CONNECTING_STATS", + "CLI_MSG_DELETING_PROJECT", + "CLI_MSG_EXPORTING_DATA", + "CLI_MSG_EXPORTING_TO", + "CLI_MSG_GRAPH_SUMMARY", + "CLI_MSG_GRAPH_UPDATED", + "CLI_MSG_HINT_TARGET_REPO", + "CLI_MSG_INDEXING_AT", + "CLI_MSG_INDEXING_DONE", + "CLI_MSG_MCP_TERMINATED", + "CLI_MSG_OPTIMIZATION_TERMINATED", + "CLI_MSG_OUTPUT_TO", + "CLI_MSG_PROJECT_DELETED", + "CLI_MSG_SYNCING_GRAPH", + "CLI_MSG_SYNC_DONE", + "CLI_MSG_SYNC_SKIPPED", + "CLI_MSG_UPDATING_GRAPH", + "CLI_MSG_VERSION", + "CLI_MSG_WORKSPACE_EMPTY", + "CLI_MSG_WORKSPACE_SYNCING", + "CLI_MSG_WORKSPACE_SYNC_REPO", + "CLI_STATS_COL_COUNT", + "CLI_STATS_COL_NODE_TYPE", + "CLI_STATS_COL_REL_TYPE", + "CLI_STATS_NODE_TITLE", + "CLI_STATS_REL_TITLE", + "CLI_STATS_TOTAL_NODES", + "CLI_STATS_TOTAL_RELS", + "CLI_STATS_UNKNOWN", + "CLI_WARN_NOT_GIT_REPO", + "COMMENT_CHAR", + "CONFIRM_DISABLED", + "CONFIRM_ENABLED", + "CONTENT_TYPE_JSON", + "CPP_CLASS_TYPES", + "CPP_COMPOUND_TYPES", + "CPP_DECLARATOR_SUFFIX", + "CPP_DESTRUCTOR_PREFIX", + "CPP_EXPORTED_CLASS_KEYWORDS", + "CPP_EXPORT_CLASS_PREFIX", + "CPP_EXPORT_MODULE_PREFIX", + "CPP_EXPORT_PREFIXES", + "CPP_EXPORT_STRUCT_PREFIX", + "CPP_EXPORT_TEMPLATE_PREFIX", + "CPP_EXPORT_UNION_PREFIX", + "CPP_EXTENSIONS", + "CPP_FALLBACK_DESTRUCTOR", + "CPP_FALLBACK_OPERATOR", + "CPP_IMPL_SUFFIX", + "CPP_IMPORT_NODES", + "CPP_IMPORT_PARTITION_PREFIX", + "CPP_KEYWORD_CLASS", + "CPP_KEYWORD_STRUCT", + "CPP_MODULE_EXTENSIONS", + "CPP_MODULE_PATH_MARKERS", + "CPP_MODULE_PREFIX", + "CPP_MODULE_PRIVATE_PREFIX", + "CPP_MODULE_TYPE_IMPLEMENTATION", + "CPP_MODULE_TYPE_INTERFACE", + "CPP_NAME_NODE_TYPES", + "CPP_NESTED_SCOPE_NODE_TYPES", + "CPP_OPERATORS", + "CPP_OPERATOR_PREFIX", + "CPP_OPERATOR_SYMBOL_MAP", + "CPP_OPERATOR_TEXT_PREFIX", + "CPP_PARTITION_PREFIX", + "CPP_PREFIX_HAS", + "CPP_PREFIX_IS", + "CPP_STDLIB_ENTITIES", + "CPP_STD_NAMESPACE", + "CPP_STD_PREFIX", + "CPP_TYPE_PARAMETER_DECL_TYPES", + "CPP_TYPE_SPECIFIER_NODE_TYPES", + "CSPROJ_SUFFIX", + "CYPHER_ALLOWED_PROCEDURE_PREFIXES", + "CYPHER_ALL_DEFINITION_QNS", + "CYPHER_ALL_FILE_PATHS", + "CYPHER_ALL_FOLDER_PATHS", + "CYPHER_ALL_INHERITS", + "CYPHER_ALL_MODULE_PATHS_INTERNAL", + "CYPHER_BACKTICK", + "CYPHER_DANGEROUS_KEYWORDS", + "CYPHER_DEFAULT_LIMIT", + "CYPHER_DELETE_CALLS", + "CYPHER_DELETE_FILE", + "CYPHER_DELETE_FOLDER", + "CYPHER_DELETE_MODULE", + "CYPHER_DELETE_ORPHAN_EXTERNAL_MODULES", + "CYPHER_INBOUND_EDGES", + "CYPHER_MATCH_KEYWORD", + "CYPHER_MEMORY_LIMIT_SUFFIX", + "CYPHER_MEMORY_LIMIT_TOKEN", + "CYPHER_PARAM_PATHS", + "CYPHER_PREFIX", + "CYPHER_QUERY_EMBEDDINGS", + "CYPHER_QUERY_PROJECT_NODE_IDS", + "CYPHER_SEMICOLON", + "C_EXTENSIONS", + "C_NAME_NODE_TYPES", + "Color", + "CppFrontend", + "CppNodeType", + "DECORATOR_AT", + "DEFAULT_API_KEY", + "DEFAULT_CONTEXT_WINDOW", + "DEFAULT_DEBOUNCE_SECONDS", + "DEFAULT_MAX_WAIT_SECONDS", + "DEFAULT_MODEL", + "DEFAULT_MODEL_ROLE", + "DEFAULT_NAME", + "DEFAULT_REGION", + "DEFAULT_ROOT_DECORATORS", + "DEFAULT_TABLE_TITLE", + "DELIMITER_TOKENS", + "DEPENDENCY_FILES", + "DEP_ATTR_INCLUDE", + "DEP_ATTR_VERSION", + "DEP_EXCLUDE_PHP", + "DEP_EXCLUDE_PYTHON", + "DEP_FILE_CARGO", + "DEP_FILE_COMPOSER", + "DEP_FILE_GEMFILE", + "DEP_FILE_GOMOD", + "DEP_FILE_PACKAGE_JSON", + "DEP_FILE_PYPROJECT", + "DEP_FILE_REQUIREMENTS", + "DEP_KEY_DEPENDENCIES", + "DEP_KEY_DEV_DEPENDENCIES", + "DEP_KEY_DEV_DEPS_JSON", + "DEP_KEY_GROUP", + "DEP_KEY_OPTIONAL_DEPS", + "DEP_KEY_PEER_DEPS", + "DEP_KEY_POETRY", + "DEP_KEY_PROJECT", + "DEP_KEY_REQUIRE", + "DEP_KEY_REQUIRE_DEV", + "DEP_KEY_TOOL", + "DEP_KEY_VERSION", + "DEP_XML_PACKAGE_REF", + "DICT_KEY_RESULTS", + "DIFF_CONTINUATION_PREFIXES", + "DIFF_FALLBACK_PATH", + "DIFF_GIT_HEADER", + "DIFF_LABEL_AFTER", + "DIFF_LABEL_BEFORE", + "DIR_MTIMES_FILENAME", + "DIST_DIR", + "DOCSTRING_STRIP_CHARS", + "DOC_PROMPT_PREFIX", + "DUP_QN_MARKER", + "DeadCodeFormat", + "DiffMarker", + "EMBEDDING_CACHE_FILENAME", + "EMBEDDING_DEFAULT_BATCH_SIZE", + "EMPTY_PARENS", + "ENCODING_UTF8", + "ENTITY_CLASS", + "ENTITY_CONSTRUCTOR", + "ENTITY_FUNCTION", + "ENTITY_METHOD", + "ENV_ANTHROPIC_API_KEY", + "ENV_AZURE_API_KEY", + "ENV_AZURE_API_VERSION", + "ENV_AZURE_ENDPOINT", + "ENV_GOOGLE_API_KEY", + "ENV_OPENAI_API_KEY", + "ERR_SUBSTR_ALREADY_EXISTS", + "ERR_SUBSTR_CONSTRAINT", + "ESCAPE_CHAR", + "EXCLUDED_DEPENDENCY_NAMES", + "EXIT_COMMANDS", + "EXT_C", + "EXT_CC", + "EXT_CCM", + "EXT_CLASS", + "EXT_CPP", + "EXT_CPPM", + "EXT_CXX", + "EXT_GO", + "EXT_H", + "EXT_HH", + "EXT_HPP", + "EXT_HXX", + "EXT_IXX", + "EXT_JAVA", + "EXT_JS", + "EXT_JSX", + "EXT_LUA", + "EXT_PHP", + "EXT_PY", + "EXT_RS", + "EXT_SC", + "EXT_SCALA", + "EXT_TS", + "EXT_TSX", + "EventType", + "FIELD_ALIAS", + "FIELD_API_KEY", + "FIELD_ARGUMENTS", + "FIELD_BODY", + "FIELD_BOUNDS", + "FIELD_CONSTRUCTOR", + "FIELD_DECLARATOR", + "FIELD_DEFINITION", + "FIELD_ENDPOINT", + "FIELD_FIELD", + "FIELD_FUNCTION", + "FIELD_INTERFACES", + "FIELD_KEY", + "FIELD_LEFT", + "FIELD_MODEL_ID", + "FIELD_MODULE_NAME", + "FIELD_NAME", + "FIELD_OBJECT", + "FIELD_OPERAND", + "FIELD_OPERATOR", + "FIELD_PARAMETERS", + "FIELD_PROPERTY", + "FIELD_PROVIDER", + "FIELD_RECEIVER", + "FIELD_RESULT", + "FIELD_RETURN_TYPE", + "FIELD_RIGHT", + "FIELD_SCOPE", + "FIELD_SUPERCLASS", + "FIELD_SUPERCLASSES", + "FIELD_TRAIT", + "FIELD_TYPE", + "FIELD_VALUE", + "FQN_CPP_FUNCTION_TYPES", + "FQN_CPP_SCOPE_TYPES", + "FQN_C_FUNCTION_TYPES", + "FQN_C_SCOPE_TYPES", + "FQN_GO_FUNCTION_TYPES", + "FQN_GO_SCOPE_TYPES", + "FQN_JAVA_FUNCTION_TYPES", + "FQN_JAVA_SCOPE_TYPES", + "FQN_JS_FUNCTION_TYPES", + "FQN_JS_SCOPE_TYPES", + "FQN_LUA_FUNCTION_TYPES", + "FQN_LUA_SCOPE_TYPES", + "FQN_PHP_FUNCTION_TYPES", + "FQN_PHP_SCOPE_TYPES", + "FQN_PY_FUNCTION_TYPES", + "FQN_PY_SCOPE_TYPES", + "FQN_RS_FUNCTION_TYPES", + "FQN_RS_SCOPE_TYPES", + "FQN_SCALA_FUNCTION_TYPES", + "FQN_SCALA_SCOPE_TYPES", + "FQN_TS_FUNCTION_TYPES", + "FQN_TS_SCOPE_TYPES", + "FUNCTION_NODES_BASIC", + "FUNCTION_NODES_GENERATOR", + "FUNCTION_NODES_LAMBDA", + "FUNCTION_NODES_METHOD", + "FUNCTION_NODES_TEMPLATE", + "FileAction", + "GEMFILE_GEM_PREFIX", + "GITWILDMATCH_STYLE", + "GIT_DIR_NAME", + "GLOB_ALL", + "GOMOD_BLOCK_END", + "GOMOD_COMMENT_PREFIX", + "GOMOD_REQUIRE_BLOCK_START", + "GOMOD_REQUIRE_LINE_PREFIX", + "GOOGLE_CLOUD_SCOPE", + "GO_EXTENSIONS", + "GO_KEYWORD_MODULE", + "GO_MOD_COMMENT_PREFIX", + "GO_ROOT_FUNCTION_NAMES", + "GRAMMARS_DIR", + "GREP_SUGGESTION", + "GUARD_INHERITED_METHOD", + "GoogleProviderType", + "HASH_CACHE_FILENAME", + "HEADER_CONTENT_TYPE", + "HEALTH_CHECK_API_KEY_CONFIGURED", + "HEALTH_CHECK_API_KEY_MISSING_MSG", + "HEALTH_CHECK_API_KEY_NOT_CONFIGURED", + "HEALTH_CHECK_API_KEY_NOT_SET", + "HEALTH_CHECK_API_KEY_SET", + "HEALTH_CHECK_DOCKER_EXIT_CODE", + "HEALTH_CHECK_DOCKER_FAILED_MSG", + "HEALTH_CHECK_DOCKER_NOT_INSTALLED_MSG", + "HEALTH_CHECK_DOCKER_NOT_IN_PATH", + "HEALTH_CHECK_DOCKER_NOT_RESPONDING_MSG", + "HEALTH_CHECK_DOCKER_NOT_RUNNING", + "HEALTH_CHECK_DOCKER_RUNNING", + "HEALTH_CHECK_DOCKER_RUNNING_MSG", + "HEALTH_CHECK_DOCKER_TIMEOUT_ERROR", + "HEALTH_CHECK_DOCKER_TIMEOUT_MSG", + "HEALTH_CHECK_EXTERNAL_TOOLS", + "HEALTH_CHECK_MEMGRAPH_CONNECTED_MSG", + "HEALTH_CHECK_MEMGRAPH_CONNECTION_FAILED_MSG", + "HEALTH_CHECK_MEMGRAPH_ERROR", + "HEALTH_CHECK_MEMGRAPH_FAILED", + "HEALTH_CHECK_MEMGRAPH_QUERY", + "HEALTH_CHECK_MEMGRAPH_SUCCESSFUL", + "HEALTH_CHECK_MEMGRAPH_UNEXPECTED_FAILURE_MSG", + "HEALTH_CHECK_TOOLS", + "HEALTH_CHECK_TOOL_FAILED_MSG", + "HEALTH_CHECK_TOOL_INSTALLED", + "HEALTH_CHECK_TOOL_INSTALLED_MSG", + "HEALTH_CHECK_TOOL_NOT_INSTALLED", + "HEALTH_CHECK_TOOL_NOT_IN_PATH_MSG", + "HEALTH_CHECK_TOOL_TIMEOUT_ERROR", + "HEALTH_CHECK_TOOL_TIMEOUT_MSG", + "HELP_ARG", + "HELP_COMMAND", + "HIGHER_ORDER_BUILTINS", + "HORIZONTAL_SEPARATOR", + "HTTP_OK", + "IGNORE_PATTERNS", + "IGNORE_SUFFIXES", + "IIFE_ARROW_PREFIX", + "IIFE_FUNC_PREFIX", + "IMPORT_CACHE_DIR", + "IMPORT_CACHE_FILE", + "IMPORT_CACHE_KEY", + "IMPORT_CACHE_TTL", + "IMPORT_DEFAULT_SUFFIX", + "IMPORT_IMPORT", + "IMPORT_MODULE_LABEL", + "IMPORT_NODES_FROM", + "IMPORT_NODES_INCLUDE", + "IMPORT_NODES_MODULE", + "IMPORT_NODES_STANDARD", + "IMPORT_PCALL", + "IMPORT_QUALIFIED_NAME", + "IMPORT_RELATIONSHIP", + "IMPORT_REQUIRE", + "IMPORT_STD_PREFIX", + "IMPORT_TIMESTAMPS_KEY", + "INDEX_INDEX", + "INDEX_INIT", + "INDEX_MOD", + "INIT_PY", + "INLINE_MODULE_PATH_PREFIX", + "INPLACE_FLAG", + "INTERACTIVE_BFS_MAX_DEPTH", + "INTERACTIVE_COL_NESTED", + "INTERACTIVE_COL_NUM", + "INTERACTIVE_COL_PATH", + "INTERACTIVE_COL_PATTERN", + "INTERACTIVE_DEFAULT_GROUP", + "INTERACTIVE_EXPAND_SUFFIX", + "INTERACTIVE_INSTRUCTIONS_GROUPED", + "INTERACTIVE_INSTRUCTIONS_NESTED", + "INTERACTIVE_KEEP_ALL", + "INTERACTIVE_KEEP_NONE", + "INTERACTIVE_NESTED_PLURAL", + "INTERACTIVE_NESTED_SINGULAR", + "INTERACTIVE_PROMPT_KEEP", + "INTERACTIVE_STATUS_CGRIGNORE", + "INTERACTIVE_STATUS_CLI", + "INTERACTIVE_STATUS_DETECTED", + "INTERACTIVE_STYLE_DIM", + "INTERACTIVE_TITLE_GROUPED", + "INTERACTIVE_TITLE_NESTED", + "JAVA_ARRAY_SUFFIX", + "JAVA_CALLABLE_ENTITY_TYPES", + "JAVA_CLASS_MODIFIERS", + "JAVA_CLASS_NODE_TYPES", + "JAVA_CREATE_PATTERN", + "JAVA_DECLARATION_SUFFIX", + "JAVA_EXTENSIONS", + "JAVA_FIELD_MODIFIERS", + "JAVA_GETTER_PATTERN", + "JAVA_HAS_PATTERN", + "JAVA_HEURISTIC_ORDER", + "JAVA_HEURISTIC_USER", + "JAVA_ID_PATTERN", + "JAVA_IS_PATTERN", + "JAVA_JVM_LANGUAGES", + "JAVA_KEYWORD_SUPER", + "JAVA_KEYWORD_THIS", + "JAVA_LANG_PREFIX", + "JAVA_LENGTH_PATTERN", + "JAVA_MAIN_METHOD_NAME", + "JAVA_MAIN_PARAM_ARRAY", + "JAVA_MAIN_PARAM_TYPE", + "JAVA_MAIN_PARAM_VARARGS", + "JAVA_METHOD_MODIFIERS", + "JAVA_METHOD_NODE_TYPES", + "JAVA_MODIFIER_ABSTRACT", + "JAVA_MODIFIER_FINAL", + "JAVA_MODIFIER_PRIVATE", + "JAVA_MODIFIER_PROTECTED", + "JAVA_MODIFIER_PUBLIC", + "JAVA_MODIFIER_STATIC", + "JAVA_MODIFIER_SYNCHRONIZED", + "JAVA_MODIFIER_TRANSIENT", + "JAVA_MODIFIER_VOLATILE", + "JAVA_NAME_PATTERN", + "JAVA_NEW_PATTERN", + "JAVA_ORDER_PATTERN", + "JAVA_PATH_JAVA", + "JAVA_PATH_KOTLIN", + "JAVA_PATH_MAIN", + "JAVA_PATH_SCALA", + "JAVA_PATH_SRC", + "JAVA_PATH_TEST", + "JAVA_PRIMITIVE_TYPES", + "JAVA_SIZE_PATTERN", + "JAVA_SRC_FOLDERS", + "JAVA_STDLIB_CLASSES", + "JAVA_STDLIB_PREFIXES", + "JAVA_SUFFIX_BUILDER", + "JAVA_SUFFIX_ERROR", + "JAVA_SUFFIX_EXCEPTION", + "JAVA_SUFFIX_INTERFACE", + "JAVA_TYPE_BOOLEAN", + "JAVA_TYPE_CONSTRUCTOR", + "JAVA_TYPE_DOUBLE", + "JAVA_TYPE_INT", + "JAVA_TYPE_LONG", + "JAVA_TYPE_METHOD", + "JAVA_TYPE_OBJECT", + "JAVA_TYPE_STRING", + "JAVA_TYPE_STRING_FQN", + "JAVA_USER_PATTERN", + "JAVA_VISIBILITY_PACKAGE", + "JAVA_VISIBILITY_PRIVATE", + "JAVA_VISIBILITY_PROTECTED", + "JAVA_VISIBILITY_PUBLIC", + "JAVA_WRAPPER_TYPES", + "JSON_EMPTY_OBJECT", + "JSON_INDENT", + "JSON_KEY_ENTITY_TYPE", + "JSON_KEY_HAS_ENTITY", + "JS_ARROW_NAME_CLIMB_BOUNDARY", + "JS_ASSIGNMENT_ARROW_QUERY", + "JS_ASSIGNMENT_FUNCTION_QUERY", + "JS_BUILTIN_PATTERNS", + "JS_BUILTIN_TYPES", + "JS_CALL_RESULT_VALUE_TYPES", + "JS_COMMONJS_DESTRUCTURE_QUERY", + "JS_COMMONJS_EXPORTS_FUNCTION_QUERY", + "JS_COMMONJS_MODULE_EXPORTS_QUERY", + "JS_CREATE_METHOD", + "JS_ES6_EXPORT_CONST_QUERY", + "JS_ES6_EXPORT_FUNCTION_QUERY", + "JS_EXPORTS_KEYWORD", + "JS_EXPORT_TYPE_COMMONJS", + "JS_EXPORT_TYPE_COMMONJS_MODULE", + "JS_EXPORT_TYPE_ES6_FUNCTION", + "JS_EXPORT_TYPE_ES6_FUNCTION_DECL", + "JS_EXTENSIONS", + "JS_EXTERNAL_IMPORT_SCHEMES", + "JS_FUNCTION_PROTOTYPE_METHODS", + "JS_FUNCTION_PROTOTYPE_SUFFIXES", + "JS_INDEX_STEM", + "JS_LOCALS_PATTERN", + "JS_METHOD_APPLY", + "JS_METHOD_BIND", + "JS_METHOD_CALL", + "JS_METHOD_DEF_QUERY", + "JS_MODULE_KEYWORD", + "JS_NAME_NODE_TYPES", + "JS_OBJECT_ARROW_QUERY", + "JS_OBJECT_METHOD_QUERY", + "JS_OBJECT_NAME", + "JS_PROTOTYPE_INHERITANCE_QUERY", + "JS_PROTOTYPE_KEYWORD", + "JS_PROTOTYPE_METHOD_QUERY", + "JS_REQUIRE_KEYWORD", + "JS_SUFFIX_APPLY", + "JS_SUFFIX_BIND", + "JS_SUFFIX_CALL", + "JS_TS_CLASS_NODES", + "JS_TS_FUNCTION_NODES", + "JS_TS_IMPORT_NODES", + "JS_TS_LANGUAGES", + "JS_TS_MODULE_EXTENSIONS", + "JS_TS_PARENT_REF_TYPES", + "KEYWORD_CONSTRUCTOR", + "KEYWORD_SELF", + "KEYWORD_SUPER", + "KEY_ABSOLUTE_PATH", + "KEY_BASE_INDEX", + "KEY_BASE_QN", + "KEY_CALLER_LABEL", + "KEY_CALLER_QN", + "KEY_CHILD_QN", + "KEY_CREATED", + "KEY_DECORATORS", + "KEY_DOCSTRING", + "KEY_END_LINE", + "KEY_EXPORTED_AT", + "KEY_EXTENSION", + "KEY_FROM_ID", + "KEY_FROM_VAL", + "KEY_IMPLEMENTS_MODULE", + "KEY_IS_EXPORTED", + "KEY_IS_PROPERTY", + "KEY_LABEL", + "KEY_LABELS", + "KEY_METADATA", + "KEY_MODULE_TYPE", + "KEY_NAME", + "KEY_NODES", + "KEY_NODE_ID", + "KEY_NODE_LABELS", + "KEY_PARAMETERS", + "KEY_PARSER", + "KEY_PATH", + "KEY_PREFIX", + "KEY_PROJECT_NAME", + "KEY_PROPERTIES", + "KEY_PROPS", + "KEY_QUALIFIED_NAME", + "KEY_QUERY", + "KEY_REL", + "KEY_RELATIONSHIPS", + "KEY_RELATIONSHIP_TYPES", + "KEY_RESPONSE", + "KEY_START_LINE", + "KEY_TARGET_LABEL", + "KEY_TARGET_QN", + "KEY_TOTAL_NODES", + "KEY_TOTAL_RELATIONSHIPS", + "KEY_TO_ID", + "KEY_TO_VAL", + "KEY_TYPE", + "KEY_VERSION_SPEC", + "KeyBinding", + "LANGUAGE_METADATA", + "LANG_ATTR_PHP", + "LANG_ATTR_PREFIX", + "LANG_ATTR_TSX", + "LANG_ATTR_TYPESCRIPT", + "LANG_CALL_KEYWORDS", + "LANG_CALL_KEYWORD_EXCLUDE", + "LANG_CLASS_KEYWORDS", + "LANG_CONFIG_FILE", + "LANG_DEFAULT_CALL_NODES", + "LANG_DEFAULT_CLASS_NODES", + "LANG_DEFAULT_FUNCTION_NODES", + "LANG_DEFAULT_GRAMMAR_URL", + "LANG_DEFAULT_MODULE_NODES", + "LANG_ELLIPSIS", + "LANG_ERR_CONFIG_NOT_FOUND", + "LANG_ERR_CUSTOM_URL_HINT", + "LANG_ERR_GIT", + "LANG_ERR_MANUAL_REMOVE_HINT", + "LANG_ERR_MISSING_ARGS", + "LANG_ERR_NODE_TYPES_WARNING", + "LANG_ERR_NO_GRAMMARS_WARNING", + "LANG_ERR_PARSE_NODE_TYPES", + "LANG_ERR_REINSTALL_FAILED", + "LANG_ERR_REMOVE_CONFIG", + "LANG_ERR_REMOVE_SUBMODULE", + "LANG_ERR_REPO_NOT_FOUND", + "LANG_ERR_TREE_SITTER_JSON_WARNING", + "LANG_ERR_UPDATE_CONFIG", + "LANG_EXCLUSION_KEYWORDS", + "LANG_FALLBACK_MANUAL_ADD", + "LANG_FALLBACK_METHOD_NODE", + "LANG_FUNCTION_KEYWORDS", + "LANG_GITMODULES_FILE", + "LANG_GITMODULES_REGEX", + "LANG_GIT_MODULES_PATH", + "LANG_GIT_SUFFIX", + "LANG_GRAMMARS_DIR", + "LANG_MODULE_KEYWORDS", + "LANG_MSG_ADDING_SUBMODULE", + "LANG_MSG_AUTO_DETECTED_EXT", + "LANG_MSG_AUTO_DETECTED_LANG", + "LANG_MSG_AVAILABLE_LANGS", + "LANG_MSG_AVAILABLE_NODES", + "LANG_MSG_CALLS", + "LANG_MSG_CATEGORY_FORMAT", + "LANG_MSG_CLASSES", + "LANG_MSG_CLEANED_MODULES", + "LANG_MSG_CLEANUP_CANCELLED", + "LANG_MSG_CLEANUP_COMPLETE", + "LANG_MSG_COMMON_ISSUES", + "LANG_MSG_CUSTOM_URL_WARNING", + "LANG_MSG_EDIT_HINT", + "LANG_MSG_FOUND_NODE_TYPES", + "LANG_MSG_FOUND_ORPHANS", + "LANG_MSG_FUNCTIONS", + "LANG_MSG_ISSUE_CALL_TYPES", + "LANG_MSG_ISSUE_CLASS_TYPES", + "LANG_MSG_ISSUE_MISCLASSIFIED", + "LANG_MSG_ISSUE_MISSING", + "LANG_MSG_KEEPING_SUBMODULE", + "LANG_MSG_LANG_ADDED", + "LANG_MSG_LANG_NOT_FOUND", + "LANG_MSG_LANG_REMOVED", + "LANG_MSG_LIST_HINT", + "LANG_MSG_MAPPED_CATEGORIES", + "LANG_MSG_MODULES", + "LANG_MSG_NO_GITMODULES", + "LANG_MSG_NO_MODULES_DIR", + "LANG_MSG_NO_ORPHANS", + "LANG_MSG_NO_SUBMODULE", + "LANG_MSG_READDING_SUBMODULE", + "LANG_MSG_REINSTALL_SUCCESS", + "LANG_MSG_REMOVED_FROM_CONFIG", + "LANG_MSG_REMOVED_ORPHAN", + "LANG_MSG_REMOVING_ENTRY", + "LANG_MSG_REMOVING_SUBMODULE", + "LANG_MSG_REVIEW_HINT", + "LANG_MSG_REVIEW_PROMPT", + "LANG_MSG_SEMANTIC_CATEGORIES", + "LANG_MSG_SUBMODULE_EXISTS", + "LANG_MSG_SUBMODULE_REMOVED", + "LANG_MSG_SUBMODULE_SUCCESS", + "LANG_MSG_UPDATED_CONFIG", + "LANG_MSG_USING_DEFAULT_URL", + "LANG_MSG_USING_LANG_NAME", + "LANG_NODE_TYPES_JSON", + "LANG_PROMPT_CALLS", + "LANG_PROMPT_CLASSES", + "LANG_PROMPT_COMMON_NAME", + "LANG_PROMPT_CONTINUE", + "LANG_PROMPT_EXTENSIONS", + "LANG_PROMPT_FUNCTIONS", + "LANG_PROMPT_LANGUAGE_NAME", + "LANG_PROMPT_MODULES", + "LANG_PROMPT_REMOVE_ORPHANS", + "LANG_SRC_DIR", + "LANG_TABLE_COL_CALL_TYPES", + "LANG_TABLE_COL_CLASS_TYPES", + "LANG_TABLE_COL_EXTENSIONS", + "LANG_TABLE_COL_FUNCTION_TYPES", + "LANG_TABLE_COL_LANGUAGE", + "LANG_TABLE_PLACEHOLDER", + "LANG_TABLE_TITLE", + "LANG_TREE_SITTER_JSON", + "LANG_TREE_SITTER_URL_MARKER", + "LOG_FORMAT", + "LOG_LEVEL_ERROR", + "LOG_LEVEL_INFO", + "LUA_DEFAULT_VAR_TYPES", + "LUA_EXTENSIONS", + "LUA_METHOD_SEPARATOR", + "LUA_STATEMENT_SUFFIX", + "LUA_STDLIB_MODULES", + "LUA_STRING_TYPES", + "LanguageMetadata", + "LanguageStatus", + "MARKDOWN_FENCE", + "MARKDOWN_FENCE_DIFF", + "MCPEnvVar", + "MCPParamName", + "MCPSchemaField", + "MCPSchemaType", + "MCPToolName", + "MCPTransport", + "MCP_ASK_AGENT_ERROR", + "MCP_CONTENT_TYPE_TEXT", + "MCP_DEFAULT_DIRECTORY", + "MCP_INDEX_ERROR", + "MCP_INDEX_SUCCESS", + "MCP_INDEX_SUCCESS_PROJECT", + "MCP_JSON_INDENT", + "MCP_KEY_ERROR", + "MCP_KEY_ERROR_MESSAGE", + "MCP_KEY_FOUND", + "MCP_KEY_QUERY_USED", + "MCP_KEY_RESULTS", + "MCP_KEY_SUMMARY", + "MCP_LOG_FORMAT", + "MCP_LOG_LEVEL_INFO", + "MCP_NOT_AVAILABLE", + "MCP_PAGINATION_HEADER", + "MCP_PROJECT_DELETED", + "MCP_SEMANTIC_NOT_AVAILABLE_RESPONSE", + "MCP_SERVER_NAME", + "MCP_TOOL_EXEC_ERROR", + "MCP_TOOL_NAME_QUERY", + "MCP_UNKNOWN_TOOL_ERROR", + "MCP_UPDATE_ERROR", + "MCP_UPDATE_SUCCESS", + "MCP_WIPE_CANCELLED", + "MCP_WIPE_ERROR", + "MCP_WIPE_SUCCESS", + "MCP_WRITE_SUCCESS", + "METHOD_FIND_WITH_PREFIX", + "METHOD_ITEMS", + "MIME_TYPE_DEFAULT", + "MIME_TYPE_FALLBACK", + "MIME_TYPE_PDF", + "ML_DEPENDENCIES", + "MODEL_COMMAND_PREFIX", + "MODEL_CONTEXT_WINDOWS", + "MODULE_QDRANT_CLIENT", + "MODULE_TORCH", + "MODULE_TRANSFORMERS", + "MOD_RS", + "MSG_CHAT_INSTRUCTIONS", + "MSG_CONNECTED_MEMGRAPH", + "MSG_DOC_NO_CANDIDATES", + "MSG_DOC_NO_CONTENT", + "MSG_SEMANTIC_NO_RESULTS", + "MSG_SEMANTIC_RESULT_FOOTER", + "MSG_SEMANTIC_RESULT_HEADER", + "MSG_SEMANTIC_SOURCE_FORMAT", + "MSG_SEMANTIC_SOURCE_UNAVAILABLE", + "MSG_SURGICAL_FAILED", + "MSG_SURGICAL_SUCCESS", + "MSG_SYNCING_KNOWLEDGE_GRAPH", + "MSG_SYNCING_WORKSPACE", + "MSG_THINKING_CANCELLED", + "MSG_TIMEOUT_FORMAT", + "MSG_TOOL_CALL_CANCELLED", + "MULTILINE_INPUT_HINT", + "MULTIMODAL_EXTENSIONS", + "ModelRole", + "NAME_FIELDS", + "NODE_PROJECT", + "NODE_UNIQUE_CONSTRAINTS", + "NO_ANSWERS", + "NodeLabel", + "OLLAMA_HEALTH_PATH", + "ONEOF_CLASS", + "ONEOF_ENUM", + "ONEOF_EXTERNAL_MODULE", + "ONEOF_EXTERNAL_PACKAGE", + "ONEOF_FILE", + "ONEOF_FOLDER", + "ONEOF_FUNCTION", + "ONEOF_INTERFACE", + "ONEOF_METHOD", + "ONEOF_MODULE", + "ONEOF_MODULE_IMPLEMENTATION", + "ONEOF_MODULE_INTERFACE", + "ONEOF_PACKAGE", + "ONEOF_PROJECT", + "ONEOF_TYPE", + "ONEOF_UNION", + "OPENAI_DEFAULT_ENDPOINT", + "OPERATOR_PREFIX", + "OPTIMIZATION_TABLE_TITLE", + "PACKAGE_NAME", + "PATH_CURRENT_DIR", + "PATH_PARENT_DIR", + "PATH_PARENT_PREFIX", + "PATH_RELATIVE_PREFIX", + "PAYLOAD_NODE_ID", + "PAYLOAD_QUALIFIED_NAME", + "PERMISSION_MODE_NORMAL_LABEL", + "PERMISSION_MODE_TOGGLED", + "PERMISSION_MODE_YOLO_LABEL", + "PHP_EXTENSIONS", + "PKG_CARGO_TOML", + "PKG_CMAKE_LISTS", + "PKG_CONANFILE", + "PKG_INIT_PY", + "PKG_MAKEFILE", + "PKG_VCXPROJ_GLOB", + "PREFIX_ANONYMOUS", + "PREFIX_ARROW", + "PREFIX_FUNC", + "PREFIX_IIFE", + "PREFIX_IIFE_DIRECT", + "PREFIX_LAMBDA", + "PROMPT_ASK_QUESTION", + "PROMPT_YOUR_RESPONSE", + "PROPERTY_DECORATORS", + "PROTOBUF_INDEX_FILE", + "PROTOBUF_NODES_FILE", + "PROTOBUF_RELS_FILE", + "PROTOCOL_BASE_QNS", + "PUNCTUATION_TYPES", + "PYINSTALLER_ARG_CLEAN", + "PYINSTALLER_ARG_COLLECT_ALL", + "PYINSTALLER_ARG_COLLECT_DATA", + "PYINSTALLER_ARG_EXCLUDE_MODULE", + "PYINSTALLER_ARG_HIDDEN_IMPORT", + "PYINSTALLER_ARG_NAME", + "PYINSTALLER_ARG_NOCONFIRM", + "PYINSTALLER_ARG_ONEFILE", + "PYINSTALLER_CMD", + "PYINSTALLER_ENTRY_POINT", + "PYINSTALLER_EXCLUDED_MODULES", + "PYINSTALLER_PACKAGES", + "PYPROJECT_KEY_PACKAGE_DIR", + "PYPROJECT_KEY_SETUPTOOLS", + "PYPROJECT_KEY_TOOL", + "PYPROJECT_PATH", + "PY_ASSIGNMENT_QUERY", + "PY_BUILTIN_GETATTR", + "PY_BUILTIN_LEN", + "PY_CLASS_REPOSITORY", + "PY_CLS_PREFIX", + "PY_DUNDER_BOOL", + "PY_DUNDER_CONTAINS", + "PY_DUNDER_GETITEM", + "PY_DUNDER_LEN", + "PY_DUNDER_SETITEM", + "PY_EXTENSIONS", + "PY_KEYWORD_CLS", + "PY_KEYWORD_SELF", + "PY_METHOD_CREATE", + "PY_METHOD_INIT", + "PY_MODELS_BASE_PATH", + "PY_NAME_DUNDER", + "PY_NAME_UNDERSCORE", + "PY_NONE", + "PY_OPERAND_REJECT_CHARS", + "PY_OP_IN", + "PY_PROTOCOL", + "PY_RETURN_QUERY", + "PY_SCORE_CONTAINS_BASE", + "PY_SCORE_EXACT_MATCH", + "PY_SCORE_SUFFIX_MATCH", + "PY_SELF_PREFIX", + "PY_UNION_SEPARATOR", + "PY_VAR_PATTERN_ALL", + "PY_VAR_SUFFIX_PLURAL", + "PermissionMode", + "Provider", + "PyInstallerPackage", + "QUERY_CALLS", + "QUERY_CAPTURE_CLASS", + "QUERY_CAPTURE_FUNCTION", + "QUERY_CLASSES", + "QUERY_CONFIG", + "QUERY_FUNCTIONS", + "QUERY_IMPORTS", + "QUERY_KEY_CLASSES", + "QUERY_KEY_FUNCTIONS", + "QUERY_LANGUAGE", + "QUERY_LOCALS", + "QUERY_NOT_AVAILABLE", + "QUERY_RESULTS_PANEL_TITLE", + "QUERY_SUMMARY_DB_ERROR", + "QUERY_SUMMARY_SUCCESS", + "QUERY_SUMMARY_TIMEOUT", + "QUERY_SUMMARY_TRANSLATION_FAILED", + "QUERY_SUMMARY_TRUNCATED", + "QUOTE_CHARS", + "QueryFormat", + "REALTIME_LOGGER_FORMAT", + "REGEX_FINAL_METHOD_CAPTURE", + "REGEX_METHOD_CHAIN_SUFFIX", + "REL_TYPE_CALLS", + "ROOT_DIR_KEY", + "RS_CALL_OR_GENERIC_FN", + "RS_DEREF_WRAPPERS", + "RS_ENCODING_UTF8", + "RS_EXTENSIONS", + "RS_FIELD_ARGUMENT", + "RS_GUARD_ACCESSORS", + "RS_GUARD_WRAPPERS", + "RS_IDENTIFIER_TYPES", + "RS_IDENTITY_METHODS", + "RS_IDENT_NODE_TYPES", + "RS_IDENT_OR_SELF", + "RS_MACRO_RECEIVER_TYPES", + "RS_PATH_KEYWORDS", + "RS_RESULT_WRAPPERS", + "RS_RETURN_STRIP_WRAPPERS", + "RS_RETURN_TYPE_NODE_TYPES", + "RS_SCOPED_TYPES", + "RS_SELF_TYPE", + "RS_TYPE_NODE_TYPES", + "RS_USE_LIST_DELIMITERS", + "RS_WILDCARD_PREFIX", + "RUST_CRATE_PREFIX", + "RUST_ROOT_FUNCTION_NAMES", + "RUST_TRAIT_METHOD_NAMES", + "RelationshipType", + "SCALA_EXTENSIONS", + "SEMANTIC_BATCH_SIZE", + "SEMANTIC_DEPENDENCIES", + "SEMANTIC_TYPE_UNKNOWN", + "SEPARATOR_COLON", + "SEPARATOR_COMMA_SPACE", + "SEPARATOR_DOT", + "SEPARATOR_DOUBLE_COLON", + "SEPARATOR_PROTOTYPE", + "SEPARATOR_SLASH", + "SESSION_CONTEXT_END", + "SESSION_CONTEXT_START", + "SESSION_LOG_EXT", + "SESSION_LOG_HEADER", + "SESSION_LOG_PREFIX", + "SESSION_PREFIX_ASSISTANT", + "SESSION_PREFIX_USER", + "SETUP_PY", + "SHELL_CMD_GIT", + "SHELL_CMD_GREP", + "SHELL_CMD_RM", + "SHELL_CMD_WHERE", + "SHELL_CMD_WHICH", + "SHELL_DANGEROUS_COMMANDS", + "SHELL_DANGEROUS_PATTERNS_PIPELINE", + "SHELL_DANGEROUS_PATTERNS_SEGMENT", + "SHELL_PIPE_OPERATORS", + "SHELL_REDIRECT_OPERATORS", + "SHELL_RETURN_CODE_ERROR", + "SHELL_RM_DANGEROUS_FLAGS", + "SHELL_RM_FORCE_FLAG", + "SHELL_RM_RF_FLAG", + "SHELL_SUBSHELL_PATTERNS", + "SHELL_SYSTEM_DIRECTORIES", + "SHIFT_TAB_ESCAPE", + "SPEC_CPP_CALL_TYPES", + "SPEC_CPP_CLASS_TYPES", + "SPEC_CPP_FUNCTION_TYPES", + "SPEC_CPP_MODULE_TYPES", + "SPEC_CPP_PACKAGE_INDICATORS", + "SPEC_C_CALL_TYPES", + "SPEC_C_CLASS_TYPES", + "SPEC_C_FUNCTION_TYPES", + "SPEC_C_MODULE_TYPES", + "SPEC_C_PACKAGE_INDICATORS", + "SPEC_GO_CALL_TYPES", + "SPEC_GO_CLASS_TYPES", + "SPEC_GO_FUNCTION_TYPES", + "SPEC_GO_IMPORT_TYPES", + "SPEC_GO_MODULE_TYPES", + "SPEC_JAVA_CALL_TYPES", + "SPEC_JAVA_CLASS_TYPES", + "SPEC_JAVA_FUNCTION_TYPES", + "SPEC_JAVA_IMPORT_TYPES", + "SPEC_JAVA_MODULE_TYPES", + "SPEC_JS_CALL_TYPES", + "SPEC_JS_MODULE_TYPES", + "SPEC_LUA_CALL_TYPES", + "SPEC_LUA_CLASS_TYPES", + "SPEC_LUA_FUNCTION_TYPES", + "SPEC_LUA_IMPORT_TYPES", + "SPEC_LUA_MODULE_TYPES", + "SPEC_PHP_CALL_TYPES", + "SPEC_PHP_CLASS_TYPES", + "SPEC_PHP_FUNCTION_TYPES", + "SPEC_PHP_IMPORT_FROM_TYPES", + "SPEC_PHP_IMPORT_TYPES", + "SPEC_PHP_MODULE_TYPES", + "SPEC_PY_CALL_TYPES", + "SPEC_PY_CLASS_TYPES", + "SPEC_PY_FUNCTION_TYPES", + "SPEC_PY_IMPORT_FROM_TYPES", + "SPEC_PY_IMPORT_TYPES", + "SPEC_PY_MODULE_TYPES", + "SPEC_PY_PACKAGE_INDICATORS", + "SPEC_RS_CALL_TYPES", + "SPEC_RS_CLASS_TYPES", + "SPEC_RS_FUNCTION_TYPES", + "SPEC_RS_IMPORT_FROM_TYPES", + "SPEC_RS_IMPORT_TYPES", + "SPEC_RS_MODULE_TYPES", + "SPEC_RS_PACKAGE_INDICATORS", + "SPEC_SCALA_CALL_TYPES", + "SPEC_SCALA_CLASS_TYPES", + "SPEC_SCALA_FUNCTION_TYPES", + "SPEC_SCALA_IMPORT_TYPES", + "SPEC_SCALA_MODULE_TYPES", + "STATUS_BAR_BRANCH_CLEAN_HTML", + "STATUS_BAR_BRANCH_CLEAN_PLAIN", + "STATUS_BAR_BRANCH_DIRTY_HTML", + "STATUS_BAR_BRANCH_DIRTY_PLAIN", + "STATUS_BAR_BRANCH_RICH_TEXT", + "STATUS_BAR_CLEAN_STYLE", + "STATUS_BAR_CONFIG_COLOR", + "STATUS_BAR_CONFIG_LABEL_C", + "STATUS_BAR_CONFIG_LABEL_COLOR", + "STATUS_BAR_CONFIG_LABEL_EDIT", + "STATUS_BAR_CONFIG_LABEL_INSTRUCTIONS", + "STATUS_BAR_CONFIG_LABEL_O", + "STATUS_BAR_CONFIG_LABEL_REPO", + "STATUS_BAR_CONFIG_SEPARATOR", + "STATUS_BAR_DIRTY_MARKER", + "STATUS_BAR_DIRTY_STYLE", + "STATUS_BAR_EDIT_OFF", + "STATUS_BAR_EDIT_ON", + "STATUS_BAR_SEPARATOR_CHAR", + "STATUS_BAR_SEPARATOR_COLOR", + "STATUS_BAR_SPINNER", + "STATUS_BAR_TOKEN_HTML", + "STR_NONE", + "StyleModifier", + "SupportedLanguage", + "TABLE_COL_CONFIGURATION", + "TABLE_COL_VALUE", + "TABLE_ROW_CYPHER_MODEL", + "TABLE_ROW_EDIT_CONFIRMATION", + "TABLE_ROW_OLLAMA_CYPHER", + "TABLE_ROW_OLLAMA_ENDPOINT", + "TABLE_ROW_OLLAMA_ORCHESTRATOR", + "TABLE_ROW_ORCHESTRATOR_MODEL", + "TABLE_ROW_TARGET_LANGUAGE", + "TABLE_ROW_TARGET_REPOSITORY", + "TEST_PATH_PATTERNS", + "TEXT_UNKNOWN", + "TIKTOKEN_ENCODING", + "TMP_DIR", + "TMP_EXTENSION", + "TOKEN_COLOR_CRITICAL", + "TOKEN_COLOR_OK", + "TOKEN_COLOR_WARNING", + "TOKEN_THRESHOLD_CRITICAL", + "TOKEN_THRESHOLD_WARNING", + "TOML_KEY_OPTIONAL_DEPS", + "TOML_KEY_PROJECT", + "TREESITTER_EXTRA_KEY", + "TREESITTER_PKG_PREFIX", + "TREE_SITTER_MODULE_PREFIX", + "TREE_SITTER_PREFIX", + "TRIE_INTERNAL_PREFIX", + "TRIE_QN_KEY", + "TRIE_TYPE_KEY", + "TRIPLE_QUOTES", + "TSCONFIG_FILENAMES", + "TSX_EXTENSIONS", + "TS_ABSTRACT_CLASS_DECLARATION", + "TS_ACCESSIBILITY_MODIFIER", + "TS_ACCESS_SPECIFIER", + "TS_ALIASED_IMPORT", + "TS_ALIAS_SKIP_DIRS", + "TS_ANNOTATION", + "TS_ANNOTATION_TYPE_DECLARATION", + "TS_ARGUMENTS", + "TS_ARRAY", + "TS_ARRAY_CREATION_EXPRESSION", + "TS_ARROW_FUNCTION", + "TS_ASSIGNMENT_EXPRESSION", + "TS_ASTERISK", + "TS_AS_EXPRESSION", + "TS_ATTRIBUTE", + "TS_BASE_CLASS_CLAUSE", + "TS_BASE_URL_KEY", + "TS_CALL_EXPRESSION", + "TS_CAST_WRAPPER_TYPES", + "TS_CLASS_BODY", + "TS_CLASS_DECLARATION", + "TS_CLASS_HERITAGE", + "TS_COMPILER_OPTIONS_KEY", + "TS_CONSTRUCTOR_DECLARATION", + "TS_CPP_BINARY_EXPRESSION", + "TS_CPP_CALL_EXPRESSION", + "TS_CPP_DECLARATION", + "TS_CPP_DELETE_EXPRESSION", + "TS_CPP_FIELD_DECLARATION", + "TS_CPP_FIELD_EXPRESSION", + "TS_CPP_FUNCTION_DECLARATOR", + "TS_CPP_FUNCTION_DEFINITION", + "TS_CPP_LAMBDA_EXPRESSION", + "TS_CPP_LINKAGE_SPECIFICATION", + "TS_CPP_NEW_EXPRESSION", + "TS_CPP_SUBSCRIPT_EXPRESSION", + "TS_CPP_TEMPLATE_DECLARATION", + "TS_CPP_TEMPLATE_PARAMETER_LIST", + "TS_CPP_TRANSLATION_UNIT", + "TS_CPP_UNARY_EXPRESSION", + "TS_CPP_UPDATE_EXPRESSION", + "TS_DECIMAL_FLOATING_POINT_LITERAL", + "TS_DECLARATION", + "TS_DECORATOR", + "TS_DOTTED_NAME", + "TS_DOT_INDEX_EXPRESSION", + "TS_ENHANCED_FOR_STATEMENT", + "TS_ENUM_CLASS_SPECIFIER", + "TS_ENUM_DECLARATION", + "TS_ENUM_SPECIFIER", + "TS_ERROR", + "TS_EXPORT_CLAUSE", + "TS_EXPORT_DEFAULT", + "TS_EXPORT_SPECIFIER", + "TS_EXPORT_STATEMENT", + "TS_EXPRESSION_STATEMENT", + "TS_EXTENDS", + "TS_EXTENDS_CLAUSE", + "TS_EXTENDS_TYPE_CLAUSE", + "TS_EXTENSIONS", + "TS_FALSE", + "TS_FIELD_ACCESS", + "TS_FIELD_ARGUMENT", + "TS_FIELD_ARGUMENTS", + "TS_FIELD_BODY", + "TS_FIELD_CONDITION", + "TS_FIELD_DECLARATION", + "TS_FIELD_DECLARATOR", + "TS_FIELD_FUNCTION", + "TS_FIELD_INTERFACES", + "TS_FIELD_LEFT", + "TS_FIELD_NAME", + "TS_FIELD_OBJECT", + "TS_FIELD_OPERATORS", + "TS_FIELD_PARAMETER", + "TS_FIELD_PARAMETERS", + "TS_FIELD_PATTERN", + "TS_FIELD_RIGHT", + "TS_FIELD_SUPERCLASS", + "TS_FIELD_TYPE", + "TS_FIELD_TYPE_PARAMETERS", + "TS_FORMAL_PARAMETER", + "TS_FUNCTION_DECLARATION", + "TS_FUNCTION_EXPRESSION", + "TS_FUNCTION_SIGNATURE", + "TS_GENERATOR_FUNCTION_DECLARATION", + "TS_GENERIC_FUNCTION", + "TS_GENERIC_TYPE", + "TS_GO_ASSIGNMENT_STATEMENT", + "TS_GO_CALL_EXPRESSION", + "TS_GO_COMPOSITE_LITERAL", + "TS_GO_CONTAINER_TYPES", + "TS_GO_EXPRESSION_LIST", + "TS_GO_FIELD_DECLARATION", + "TS_GO_FIELD_DECLARATION_LIST", + "TS_GO_FIELD_IDENTIFIER", + "TS_GO_FUNCTION_DECLARATION", + "TS_GO_FUNC_LITERAL", + "TS_GO_IMPORT_DECLARATION", + "TS_GO_INTERFACE_TYPE", + "TS_GO_KEYED_ELEMENT", + "TS_GO_LITERAL_ELEMENT", + "TS_GO_LITERAL_VALUE", + "TS_GO_METHOD_DECLARATION", + "TS_GO_PARAMETER_DECLARATION", + "TS_GO_PARAMETER_LIST", + "TS_GO_POINTER_TYPE", + "TS_GO_SELECTOR_EXPRESSION", + "TS_GO_SHORT_VAR_DECLARATION", + "TS_GO_SOURCE_FILE", + "TS_GO_STRUCT_TYPE", + "TS_GO_TYPE_ALIAS", + "TS_GO_TYPE_DECLARATION", + "TS_GO_TYPE_SPEC", + "TS_GO_UNARY_EXPRESSION", + "TS_GO_VAR_DECLARATION", + "TS_GO_VAR_SPEC", + "TS_IDENTIFIER", + "TS_IMPLEMENTS_CLAUSE", + "TS_IMPL_ITEM", + "TS_IMPORT_CLAUSE", + "TS_IMPORT_DECLARATION", + "TS_IMPORT_FROM_STATEMENT", + "TS_IMPORT_PREFIX", + "TS_IMPORT_SPEC", + "TS_IMPORT_SPECIFIER", + "TS_IMPORT_SPEC_LIST", + "TS_IMPORT_STATEMENT", + "TS_INTEGER_LITERAL", + "TS_INTERFACE_DECLARATION", + "TS_INTERNAL_MODULE", + "TS_INTERPRETED_STRING_LITERAL", + "TS_JAVA_ANNOTATION_TYPE_DECLARATION", + "TS_JAVA_EXTENDS_INTERFACES", + "TS_JAVA_METHOD_INVOCATION", + "TS_JSX_EXPRESSION", + "TS_JSX_OPENING_ELEMENT", + "TS_JSX_SELF_CLOSING_ELEMENT", + "TS_LEXICAL_DECLARATION", + "TS_LOCALS_PATTERN", + "TS_LOCAL_VARIABLE_DECLARATION", + "TS_LUA_ASSIGNMENT_STATEMENT", + "TS_LUA_CHUNK", + "TS_LUA_EXPRESSION_LIST", + "TS_LUA_FUNCTION_CALL", + "TS_LUA_FUNCTION_DECLARATION", + "TS_LUA_FUNCTION_DEFINITION", + "TS_LUA_IDENTIFIER", + "TS_LUA_LOCAL_STATEMENT", + "TS_LUA_METHOD_INDEX_EXPRESSION", + "TS_LUA_VARIABLE_DECLARATION", + "TS_LUA_VARIABLE_LIST", + "TS_MARKER_ANNOTATION", + "TS_MEMBER_EXPRESSION", + "TS_METHOD_DECLARATION", + "TS_METHOD_DEFINITION", + "TS_METHOD_INVOCATION", + "TS_MODIFIERS", + "TS_MODULE", + "TS_MODULE_DECLARATION", + "TS_NAMED_IMPORTS", + "TS_NAMESPACE_DEFINITION", + "TS_NAMESPACE_IMPORT", + "TS_NEW_EXPRESSION", + "TS_NON_NULL_EXPRESSION", + "TS_OBJECT", + "TS_OBJECT_CREATION_EXPRESSION", + "TS_OBJECT_PATTERN", + "TS_OPTIONAL_PARAMETER", + "TS_PACKAGE_DECLARATION", + "TS_PACKAGE_IDENTIFIER", + "TS_PAIR", + "TS_PAIR_PATTERN", + "TS_PARENTHESIZED_EXPRESSION", + "TS_PATHS_KEY", + "TS_PHP_ANONYMOUS_FUNCTION", + "TS_PHP_ARROW_FUNCTION", + "TS_PHP_ATTRIBUTE", + "TS_PHP_ATTRIBUTE_GROUP", + "TS_PHP_ATTRIBUTE_LIST", + "TS_PHP_BASE_CLAUSE", + "TS_PHP_CLASS_INTERFACE_CLAUSE", + "TS_PHP_FUNCTION", + "TS_PHP_FUNCTION_CALL_EXPRESSION", + "TS_PHP_FUNCTION_DEFINITION", + "TS_PHP_FUNCTION_STATIC_DECLARATION", + "TS_PHP_INCLUDE_EXPRESSION", + "TS_PHP_INCLUDE_ONCE_EXPRESSION", + "TS_PHP_MEMBER_CALL_EXPRESSION", + "TS_PHP_METHOD_DECLARATION", + "TS_PHP_NAME", + "TS_PHP_NAMESPACE_DEFINITION", + "TS_PHP_NAMESPACE_USE_CLAUSE", + "TS_PHP_NAMESPACE_USE_DECLARATION", + "TS_PHP_NULLSAFE_MEMBER_CALL_EXPRESSION", + "TS_PHP_OBJECT_CREATION_EXPRESSION", + "TS_PHP_QUALIFIED_NAME", + "TS_PHP_REQUIRE_EXPRESSION", + "TS_PHP_REQUIRE_ONCE_EXPRESSION", + "TS_PHP_SCOPED_CALL_EXPRESSION", + "TS_PHP_TRAIT_DECLARATION", + "TS_PHP_USE_DECLARATION", + "TS_PHP_VISIBILITY_MODIFIER", + "TS_PREPROC_INCLUDE", + "TS_PRIVATE", + "TS_PRIVATE_PROPERTY_IDENTIFIER", + "TS_PROGRAM", + "TS_PROPERTY_IDENTIFIER", + "TS_PY_ASSIGNMENT", + "TS_PY_ATTRIBUTE", + "TS_PY_BLOCK", + "TS_PY_BOOLEAN_OPERATOR", + "TS_PY_CALL", + "TS_PY_CLASS_DEFINITION", + "TS_PY_COMPARISON_OPERATOR", + "TS_PY_CONDITIONAL_EXPRESSION", + "TS_PY_DECORATED_DEFINITION", + "TS_PY_DECORATOR", + "TS_PY_DEFAULT_PARAMETER", + "TS_PY_DICTIONARY", + "TS_PY_DICTIONARY_SPLAT_PATTERN", + "TS_PY_ELIF_CLAUSE", + "TS_PY_EXPRESSION_STATEMENT", + "TS_PY_FOR_IN_CLAUSE", + "TS_PY_FOR_STATEMENT", + "TS_PY_FUNCTION_DEFINITION", + "TS_PY_IDENTIFIER", + "TS_PY_IF_STATEMENT", + "TS_PY_IMPORT_FROM_STATEMENT", + "TS_PY_IMPORT_STATEMENT", + "TS_PY_KEYWORD", + "TS_PY_KEYWORD_ARGUMENT", + "TS_PY_LAMBDA", + "TS_PY_LIST", + "TS_PY_LIST_COMPREHENSION", + "TS_PY_LIST_SPLAT_PATTERN", + "TS_PY_MODULE", + "TS_PY_NOT_OPERATOR", + "TS_PY_PAIR", + "TS_PY_RETURN", + "TS_PY_RETURN_STATEMENT", + "TS_PY_SET", + "TS_PY_STRING", + "TS_PY_STRING_CONTENT", + "TS_PY_SUBSCRIPT", + "TS_PY_TUPLE", + "TS_PY_TYPED_DEFAULT_PARAMETER", + "TS_PY_TYPED_PARAMETER", + "TS_PY_WHILE_STATEMENT", + "TS_PY_WITH_STATEMENT", + "TS_RECORD_DECLARATION", + "TS_RELATIVE_IMPORT", + "TS_REQUIRED_PARAMETER", + "TS_RETURN", + "TS_RETURN_STATEMENT", + "TS_RS_ATTRIBUTE_ITEM", + "TS_RS_CALL_EXPRESSION", + "TS_RS_CLOSURE_EXPRESSION", + "TS_RS_CRATE", + "TS_RS_ENUM_ITEM", + "TS_RS_EXTERN_CRATE_DECLARATION", + "TS_RS_FIELD_DECLARATION", + "TS_RS_FIELD_DECLARATION_LIST", + "TS_RS_FIELD_EXPRESSION", + "TS_RS_FIELD_IDENTIFIER", + "TS_RS_FIELD_PATH", + "TS_RS_FUNCTION_ITEM", + "TS_RS_FUNCTION_SIGNATURE_ITEM", + "TS_RS_IMPL_ITEM", + "TS_RS_INNER_ATTRIBUTE_ITEM", + "TS_RS_KEYWORD_AS", + "TS_RS_LET_DECLARATION", + "TS_RS_MACRO_INVOCATION", + "TS_RS_MATCH_ARM", + "TS_RS_MATCH_EXPRESSION", + "TS_RS_MOD_ITEM", + "TS_RS_PARAMETER", + "TS_RS_POINTER_TYPE", + "TS_RS_PRIMITIVE_TYPE", + "TS_RS_REFERENCE_TYPE", + "TS_RS_SCOPED_TYPE_IDENTIFIER", + "TS_RS_SCOPED_USE_LIST", + "TS_RS_SELF_PARAMETER", + "TS_RS_SOURCE_FILE", + "TS_RS_STRUCT_EXPRESSION", + "TS_RS_STRUCT_ITEM", + "TS_RS_TOKEN_DOT", + "TS_RS_TRAIT_BOUNDS", + "TS_RS_TRAIT_ITEM", + "TS_RS_TRY_EXPRESSION", + "TS_RS_TUPLE_STRUCT_PATTERN", + "TS_RS_TYPE_ARGUMENTS", + "TS_RS_TYPE_ITEM", + "TS_RS_UNION_ITEM", + "TS_RS_USE_AS_CLAUSE", + "TS_RS_USE_DECLARATION", + "TS_RS_USE_LIST", + "TS_RS_USE_WILDCARD", + "TS_SATISFIES_EXPRESSION", + "TS_SCALA_CALL_EXPRESSION", + "TS_SCALA_CLASS_DEFINITION", + "TS_SCALA_COMPILATION_UNIT", + "TS_SCALA_FIELD_EXPRESSION", + "TS_SCALA_FUNCTION_DECLARATION", + "TS_SCALA_FUNCTION_DEFINITION", + "TS_SCALA_GENERIC_FUNCTION", + "TS_SCALA_IMPORT_DECLARATION", + "TS_SCALA_INFIX_EXPRESSION", + "TS_SCALA_OBJECT_DEFINITION", + "TS_SCALA_TRAIT_DEFINITION", + "TS_SCOPED_IDENTIFIER", + "TS_SCOPED_TYPE_IDENTIFIER", + "TS_SELECTOR_EXPRESSION", + "TS_SHORTHAND_PROPERTY_IDENTIFIER_PATTERN", + "TS_SPREAD_PARAMETER", + "TS_STATEMENT_BLOCK", + "TS_STATIC", + "TS_STRING", + "TS_STRING_LITERAL", + "TS_STRUCT_SPECIFIER", + "TS_SUPER", + "TS_SYSTEM_LIB_STRING", + "TS_TEMPLATE_ARGUMENT_LIST", + "TS_TEMPLATE_FUNCTION", + "TS_TEMPLATE_TYPE", + "TS_THIS", + "TS_TRUE", + "TS_TYPE_ALIAS_DECLARATION", + "TS_TYPE_DESCRIPTOR", + "TS_TYPE_IDENTIFIER", + "TS_TYPE_LIST", + "TS_TYPE_PARAMETER", + "TS_UNION_SPECIFIER", + "TS_USE_DECLARATION", + "TS_VARIABLE_DECLARATOR", + "TS_VIRTUAL", + "TS_VOID_TYPE", + "TS_WILDCARD_IMPORT", + "TYPE_INFERENCE_BASE_MODEL", + "TYPE_INFERENCE_LIST", + "TreeSitterModule", + "UI_DIFF_FILE_HEADER", + "UI_ERR_EXPORT_FAILED", + "UI_ERR_UNEXPECTED", + "UI_FEEDBACK_PROMPT", + "UI_GRAPH_EXPORT_STATS", + "UI_GRAPH_EXPORT_SUCCESS", + "UI_HELP_COMMANDS", + "UI_INPUT_PROMPT_HTML", + "UI_MODEL_CURRENT", + "UI_MODEL_SWITCHED", + "UI_MODEL_SWITCH_ERROR", + "UI_MODEL_USAGE", + "UI_NEW_FILE_HEADER", + "UI_OPTIMIZATION_INIT", + "UI_OPTIMIZATION_PANEL", + "UI_OPTIMIZATION_START", + "UI_REFERENCE_DOC_INFO", + "UI_SHELL_COMMAND_HEADER", + "UI_TOOL_APPROVAL", + "UI_TOOL_ARGS_FORMAT", + "UNIXCODER_BUFFER_BIAS", + "UNIXCODER_MASK_TOKEN", + "UNIXCODER_MAX_CONTEXT", + "UNIXCODER_MODEL", + "UniXcoderMode", + "UniqueKeyType", + "V1_PATH", + "VERSION_SPLIT_EQ", + "VERSION_SPLIT_GTE", + "VERSION_SPLIT_LT", + "WATCHER_SLEEP_INTERVAL", + "YES_ANSWER", + "YES_ANSWERS", + "_CYPHER_EMBEDDING_BASE", + "_NODE_LABEL_UNIQUE_KEYS", + "_SYSTEM_DIRS_PATTERN", + "_missing_keys", + "StrEnum", + "NamedTuple", +] diff --git a/codebase_rag/constants/ast_nodes.py b/codebase_rag/constants/ast_nodes.py new file mode 100644 index 000000000..59f96de21 --- /dev/null +++ b/codebase_rag/constants/ast_nodes.py @@ -0,0 +1,195 @@ +from enum import StrEnum + +KEY_NODES = "nodes" +KEY_TOTAL_NODES = "total_nodes" +CLI_STATS_TOTAL_NODES = "Total Nodes" + +# (H) ModelConfig field names +FIELD_PROVIDER = "provider" +FIELD_MODEL_ID = "model_id" +FIELD_API_KEY = "api_key" +FIELD_ENDPOINT = "endpoint" + +# (H) JS/TS specific node types +JS_TS_FUNCTION_NODES = ( + "function_declaration", + "generator_function_declaration", + "function_expression", + "arrow_function", + "method_definition", +) +JS_TS_CLASS_NODES = ("class_declaration", "class") +JS_TS_IMPORT_NODES = ("import_statement", "lexical_declaration", "export_statement") + +# (H) C++ import node types +CPP_IMPORT_NODES = ("preproc_include", "template_function", "declaration") + +# (H) Index file names +INDEX_INIT = "__init__" +INDEX_INDEX = "index" +INDEX_MOD = "mod" + +# (H) AST field names for name extraction +NAME_FIELDS = ("identifier", "name", "id") + +# (H) Tree-sitter field name constants for child_by_field_name +FIELD_OBJECT = "object" +FIELD_PROPERTY = "property" +FIELD_NAME = "name" +FIELD_ALIAS = "alias" +FIELD_MODULE_NAME = "module_name" +FIELD_ARGUMENTS = "arguments" +FIELD_BODY = "body" +FIELD_RETURN_TYPE = "return_type" +FIELD_CONSTRUCTOR = "constructor" +FIELD_DECLARATOR = "declarator" +FIELD_PARAMETERS = "parameters" +FIELD_RECEIVER = "receiver" +FIELD_TYPE = "type" +# (H) The wrapped function/class inside a Python decorated_definition node. +FIELD_DEFINITION = "definition" +FIELD_RESULT = "result" +# (H) Rust impl `trait`/`type` fields and a trait's supertrait `bounds`. +FIELD_TRAIT = "trait" +FIELD_BOUNDS = "bounds" +TS_RS_TRAIT_BOUNDS = "trait_bounds" +FIELD_VALUE = "value" +FIELD_LEFT = "left" +FIELD_RIGHT = "right" +FIELD_FIELD = "field" +FIELD_SCOPE = "scope" +FIELD_SUPERCLASS = "superclass" +FIELD_SUPERCLASSES = "superclasses" +FIELD_INTERFACES = "interfaces" + +# (H) Method name constants for getattr/hasattr +METHOD_FIND_WITH_PREFIX = "find_with_prefix" +METHOD_ITEMS = "items" + +# (H) Parser loader paths and args +GRAMMARS_DIR = "grammars" +TREE_SITTER_PREFIX = "tree-sitter-" +TREE_SITTER_MODULE_PREFIX = "tree_sitter_" +BINDINGS_DIR = "bindings" +SETUP_PY = "setup.py" +BUILD_EXT_CMD = "build_ext" +INPLACE_FLAG = "--inplace" +LANG_ATTR_PREFIX = "language_" +LANG_ATTR_TYPESCRIPT = "language_typescript" +LANG_ATTR_TSX = "language_tsx" +LANG_ATTR_PHP = "language_php" + + +class TreeSitterModule(StrEnum): + PYTHON = "tree_sitter_python" + JS = "tree_sitter_javascript" + TS = "tree_sitter_typescript" + RUST = "tree_sitter_rust" + GO = "tree_sitter_go" + SCALA = "tree_sitter_scala" + JAVA = "tree_sitter_java" + C = "tree_sitter_c" + CPP = "tree_sitter_cpp" + LUA = "tree_sitter_lua" + PHP = "tree_sitter_php" + + +# (H) Query dict keys +QUERY_FUNCTIONS = "functions" +QUERY_CLASSES = "classes" +QUERY_CALLS = "calls" +QUERY_IMPORTS = "imports" +QUERY_LOCALS = "locals" +QUERY_CONFIG = "config" +QUERY_LANGUAGE = "language" + +# (H) Query capture names +CAPTURE_FUNCTION = "function" +CAPTURE_CLASS = "class" +CAPTURE_CALL = "call" +CAPTURE_IMPORT = "import" +CAPTURE_IMPORT_FROM = "import_from" + +# (H) Locals query patterns for JS/TS +JS_LOCALS_PATTERN = """ +; Variable definitions +(variable_declarator name: (identifier) @local.definition) +(function_declaration name: (identifier) @local.definition) +(class_declaration name: (identifier) @local.definition) + +; Variable references +(identifier) @local.reference +""" + +TS_LOCALS_PATTERN = """ +; Variable definitions (TypeScript has multiple declaration types) +(variable_declarator name: (identifier) @local.definition) +(lexical_declaration (variable_declarator name: (identifier) @local.definition)) +(variable_declaration (variable_declarator name: (identifier) @local.definition)) + +; Function definitions +(function_declaration name: (identifier) @local.definition) + +; Class definitions (uses type_identifier for class names) +(class_declaration name: (type_identifier) @local.definition) + +; Variable references +(identifier) @local.reference +""" + +# (H) Query tool messages +QUERY_NOT_AVAILABLE = "N/A" +QUERY_SUMMARY_SUCCESS = "Successfully retrieved {count} item(s) from the graph." +QUERY_SUMMARY_TRUNCATED = ( + "Results truncated: showing {kept} of {total} items (~{tokens} tokens, limit {max_tokens}). " + "Refine your query for more specific results." +) +QUERY_SUMMARY_TRANSLATION_FAILED = ( + "I couldn't translate your request into a database query. Error: {error}" +) +QUERY_SUMMARY_DB_ERROR = "There was an error querying the database: {error}" +QUERY_SUMMARY_TIMEOUT = ( + "Query exceeded the {timeout:.1f}s timeout and was cancelled. " + "Avoid unbounded traversals; add depth bounds or use a graph-algorithm procedure." +) +QUERY_RESULTS_PANEL_TITLE = "[bold blue]Cypher Query Results[/bold blue]" + +# (H) Language CLI default node types +LANG_DEFAULT_FUNCTION_NODES = ("function_definition", "method_definition") +LANG_DEFAULT_CLASS_NODES = ("class_declaration",) +LANG_DEFAULT_MODULE_NODES = ("compilation_unit",) +LANG_DEFAULT_CALL_NODES = ("invocation_expression",) + +LANG_MSG_AVAILABLE_NODES = "Available nodes for mapping:" +FIELD_OPERAND = "operand" + +FIELD_OPERATOR = "operator" + +QUERY_CAPTURE_CLASS = "class" +QUERY_CAPTURE_FUNCTION = "function" +QUERY_KEY_CLASSES = "classes" +QUERY_KEY_FUNCTIONS = "functions" + +# (H) JS/TS ingest query capture names +CAPTURE_CHILD_CLASS = "child_class" +CAPTURE_PARENT_CLASS = "parent_class" +CAPTURE_CONSTRUCTOR_NAME = "constructor_name" +CAPTURE_PROTOTYPE_KEYWORD = "prototype_keyword" +CAPTURE_METHOD_NAME = "method_name" +CAPTURE_METHOD_FUNCTION = "method_function" +CAPTURE_MEMBER_EXPR = "member_expr" +CAPTURE_FUNCTION_EXPR = "function_expr" +CAPTURE_ARROW_FUNCTION = "arrow_function" + +# (H) Tree-sitter field names for module system +FIELD_FUNCTION = "function" +FIELD_KEY = "key" + +# (H) Query capture names for module system +CAPTURE_FUNC = "func" +CAPTURE_VARIABLE_DECLARATOR = "variable_declarator" +CAPTURE_EXPORTS_OBJ = "exports_obj" +CAPTURE_MODULE_OBJ = "module_obj" +CAPTURE_EXPORTS_PROP = "exports_prop" +CAPTURE_EXPORT_NAME = "export_name" +CAPTURE_EXPORT_FUNCTION = "export_function" diff --git a/codebase_rag/constants/cli.py b/codebase_rag/constants/cli.py new file mode 100644 index 000000000..996e47ebb --- /dev/null +++ b/codebase_rag/constants/cli.py @@ -0,0 +1,535 @@ +from enum import StrEnum + + +class ModelRole(StrEnum): + ORCHESTRATOR = "orchestrator" + CYPHER = "cypher" + + +class Provider(StrEnum): + OLLAMA = "ollama" + ANTHROPIC = "anthropic" + OPENAI = "openai" + GOOGLE = "google" + AZURE = "azure" + LITELLM_PROXY = "litellm_proxy" + + +class Color(StrEnum): + GREEN = "green" + YELLOW = "yellow" + CYAN = "cyan" + RED = "red" + MAGENTA = "magenta" + BLUE = "blue" + + +class PermissionMode(StrEnum): + NORMAL = "normal" + YOLO = "yolo" + + +class StyleModifier(StrEnum): + BOLD = "bold" + DIM = "dim" + NONE = "" + + +class FileAction(StrEnum): + READ = "read" + EDIT = "edit" + + +DEFAULT_MODEL_ROLE = "model" + +DEFAULT_REGION = "us-central1" +DEFAULT_MODEL = "llama3.2" +DEFAULT_API_KEY = "ollama" + +ENV_OPENAI_API_KEY = "OPENAI_API_KEY" +ENV_GOOGLE_API_KEY = "GOOGLE_API_KEY" +ENV_ANTHROPIC_API_KEY = "ANTHROPIC_API_KEY" +ENV_AZURE_API_KEY = "AZURE_API_KEY" +ENV_AZURE_ENDPOINT = "AZURE_OPENAI_ENDPOINT" +ENV_AZURE_API_VERSION = "AZURE_API_VERSION" + +HELP_ARG = "help" + + +class GoogleProviderType(StrEnum): + GLA = "gla" + VERTEX = "vertex" + + +# (H) CLI error and info messages +CLI_ERR_OUTPUT_REQUIRES_UPDATE = ( + "Error: --output/-o option requires --update-graph to be specified." +) +CLI_ERR_ONLY_JSON = "Error: Currently only JSON format is supported." +CLI_ERR_JSON_REQUIRES_ASK_AGENT = ( + "Error: --output-format json requires --ask-agent/-a; " + "it only applies to single-query output." +) +CLI_ERR_PATH_NOT_EXISTS = "Error: --repo-path does not exist: {path}" +CLI_ERR_PATH_NOT_DIR = "Error: --repo-path is not a directory: {path}" +CLI_WARN_NOT_GIT_REPO = "Warning: --repo-path is not a Git repository: {path}" +CLI_ERR_STARTUP = "Startup Error: {error}" +CLI_ERR_CONFIG = "Configuration Error: {error}" +CLI_ERR_INDEXING = "An error occurred during indexing: {error}" +CLI_ERR_EXPORT_FAILED = "Failed to export graph: {error}" +CLI_ERR_LOAD_GRAPH = "Failed to load graph: {error}" +CLI_ERR_MCP_SERVER = "MCP Server Error: {error}" + +CLI_MSG_UPDATING_GRAPH = "Updating knowledge graph for: {path}" +CLI_MSG_SYNCING_GRAPH = "Syncing knowledge graph for: {path} (use --no-sync to skip)" +CLI_MSG_WORKSPACE_SYNCING = "Syncing workspace '{name}' ({count} repos)..." +CLI_MSG_WORKSPACE_SYNC_REPO = ( + "[{idx}/{total}] Syncing {path} as project '{project_name}'" +) +CLI_MSG_WORKSPACE_EMPTY = ( + "Workspace '{name}' has no repos (use cgr workspace add-repo)." +) +MSG_SYNCING_KNOWLEDGE_GRAPH = ( + "[bold cyan]Syncing knowledge graph[/bold cyan] (incremental, --no-sync to skip)" +) +MSG_SYNCING_WORKSPACE = ( + "[bold cyan]Syncing workspace '{name}'[/bold cyan] ({count} repos)" +) +CLI_MSG_SYNC_SKIPPED = "Knowledge graph already in sync for '{project}' ({elapsed:.2f}s, no changes detected)." +CLI_MSG_SYNC_DONE = "Knowledge graph sync done for '{project}' in {elapsed:.2f}s." +CLI_MSG_CLEANING_DB = "Cleaning database..." +CLI_MSG_CLEANING_HASH_CACHE = "Removing hash cache: {path}" +CLI_MSG_CLEAN_DONE = "Clean completed successfully!" +CLI_MSG_DELETING_PROJECT = "Deleting project '{project_name}' from the graph..." +CLI_MSG_PROJECT_DELETED = "Project '{project_name}' deleted successfully." +CLI_ERR_PROJECT_NOT_FOUND = ( + "Project '{project_name}' not found. Available projects: {projects}" +) +CLI_ERR_PROJECT_NAME_REQUIRED = ( + "Error: --name is required and must be a non-empty project name." +) +CLI_ERR_DELETE_PROJECT_FAILED = "Failed to delete project '{project_name}': {error}" +CLI_MSG_EXPORTING_TO = "Exporting graph to: {path}" +CLI_MSG_GRAPH_UPDATED = "Graph update completed!" +CLI_MSG_APP_TERMINATED = "\nApplication terminated by user." +CLI_MSG_INDEXING_AT = "Indexing codebase at: {path}" +CLI_MSG_OUTPUT_TO = "Output will be written to: {path}" +CLI_MSG_INDEXING_DONE = "Indexing process completed successfully!" +CLI_MSG_CONNECTING_MEMGRAPH = "Connecting to Memgraph to export graph..." +CLI_MSG_EXPORTING_DATA = "Exporting graph data..." +CLI_MSG_OPTIMIZATION_TERMINATED = "\nOptimization session terminated by user." +CLI_MSG_MCP_TERMINATED = "\nMCP server terminated by user." +CLI_MSG_VERSION = "{package} version {version}" +CLI_MSG_HINT_TARGET_REPO = ( + "\nHint: Make sure TARGET_REPO_PATH environment variable is set." +) +CLI_MSG_GRAPH_SUMMARY = "Graph Summary:" +CLI_MSG_CONNECTING_STATS = "Fetching graph statistics..." +CLI_STATS_NODE_TITLE = "Node Statistics" +CLI_STATS_REL_TITLE = "Relationship Statistics" +CLI_STATS_COL_NODE_TYPE = "Node Type" +CLI_STATS_COL_REL_TYPE = "Relationship Type" +CLI_STATS_COL_COUNT = "Count" +CLI_STATS_TOTAL_RELS = "Total Relationships" +CLI_STATS_UNKNOWN = "Unknown" +CLI_ERR_STATS_FAILED = "Failed to get graph statistics: {error}" + +CLI_DEADCODE_CONNECTING = "Scanning for unreachable functions and methods..." +CLI_DEADCODE_TABLE_TITLE = "Dead Code Candidates ({project_name})" +CLI_DEADCODE_COL_KIND = "Kind" +CLI_DEADCODE_COL_QUALIFIED_NAME = "Qualified Name" +CLI_DEADCODE_COL_LINES = "Lines" +CLI_DEADCODE_LINE_RANGE = "{start}-{end}" +CLI_DEADCODE_SUMMARY = "{count} candidate(s) for review." +CLI_DEADCODE_NONE = "No unreachable functions or methods found." +CLI_DEADCODE_WRITTEN = "Wrote {count} candidate(s) to {path}" +CLI_ERR_DEADCODE_FAILED = "Failed to scan for dead code: {error}" +CLI_ERR_DEADCODE_NO_PROJECTS = ( + "No projects found in the graph. Index a repository first with 'cgr start'." +) +CLI_ERR_DEADCODE_AMBIGUOUS_PROJECT = ( + "Multiple projects found: {projects}. Specify which one with --project-name/-n." +) +CLI_MSG_AUTO_EXCLUDE = ( + "Auto-excluding common directories (venv, node_modules, .git, etc.). " + "Use --interactive-setup to customize." +) + +UI_DIFF_FILE_HEADER = "[bold cyan]File: {path}[/bold cyan]" +UI_NEW_FILE_HEADER = "[bold cyan]New file: {path}[/bold cyan]" +UI_SHELL_COMMAND_HEADER = "[bold cyan]Shell command:[/bold cyan]" +UI_TOOL_APPROVAL = "[bold yellow]⚠️ Tool '{tool_name}' requires approval:[/bold yellow]" +UI_FEEDBACK_PROMPT = "Feedback (why rejected, or press Enter to skip)" +UI_OPTIMIZATION_START = ( + "[bold green]Starting {language} optimization session...[/bold green]" +) +UI_OPTIMIZATION_PANEL = ( + "[bold yellow]The agent will analyze your codebase{document_info} and propose specific optimizations." + " You'll be asked to approve each suggestion before implementation." + " Type 'exit' or 'quit' to end the session.[/bold yellow]" +) +UI_OPTIMIZATION_INIT = "[bold cyan]Initializing optimization session for {language} codebase: {path}[/bold cyan]" +UI_GRAPH_EXPORT_SUCCESS = ( + "[bold green]Graph exported successfully to: {path}[/bold green]" +) +UI_GRAPH_EXPORT_STATS = "[bold cyan]Export contains {nodes} nodes and {relationships} relationships[/bold cyan]" +UI_ERR_UNEXPECTED = "[bold red]An unexpected error occurred: {error}[/bold red]" +UI_ERR_EXPORT_FAILED = "[bold red]Failed to export graph: {error}[/bold red]" +UI_MODEL_SWITCHED = "[bold green]Model switched to: {model}[/bold green]" +UI_MODEL_CURRENT = "[bold cyan]Current model: {model}[/bold cyan]" +UI_MODEL_SWITCH_ERROR = "[bold red]Failed to switch model: {error}[/bold red]" +UI_MODEL_USAGE = "[bold yellow]Usage: /model (e.g., /model google:gemini-3.1-pro-preview)[/bold yellow]" +UI_HELP_COMMANDS = """[bold cyan]Available commands:[/bold cyan] + /model - Switch to a different model + /model - Show current model + /help - Show this help + exit, quit - Exit the session""" +UI_TOOL_ARGS_FORMAT = " Arguments: {args}" +UI_REFERENCE_DOC_INFO = " using the reference document: {reference_document}" +UI_INPUT_PROMPT_HTML = ( + "{prompt} {hint}: " +) +YES_ANSWER = "y" +YES_ANSWERS = frozenset({"y", "yes", ""}) +NO_ANSWERS = frozenset({"n", "no"}) +DIFF_GIT_HEADER = "diff --git " +DIFF_CONTINUATION_PREFIXES = ( + "diff --git ", + "index ", + "--- ", + "+++ ", + "@@ ", + "+", + "-", + " ", + "\\ ", + "new file mode", + "deleted file mode", + "old mode", + "new mode", + "rename from ", + "rename to ", + "similarity index ", + "Binary files ", +) + +# (H) CLI exit commands +EXIT_COMMANDS = frozenset({"exit", "quit"}) + +# (H) CLI commands +MODEL_COMMAND_PREFIX = "/model" +HELP_COMMAND = "/help" + +# (H) UI separators and formatting +HORIZONTAL_SEPARATOR = "─" * 60 + +# (H) Session log header +SESSION_LOG_HEADER = "=== CODE-GRAPH RAG SESSION LOG ===\n\n" + +# (H) Logger format +LOG_FORMAT = "{time:YYYY-MM-DD HH:mm:ss.SSS} | {message}" + +# (H) Temporary directory +TMP_DIR = ".tmp" +SESSION_LOG_PREFIX = "session_" +SESSION_LOG_EXT = ".log" + +# (H) Session log prefixes +SESSION_PREFIX_USER = "USER: " +SESSION_PREFIX_ASSISTANT = "ASSISTANT: " + +# (H) Session context format +SESSION_CONTEXT_START = ( + "\n\n[SESSION CONTEXT - Previous conversation in this session]:\n" +) +SESSION_CONTEXT_END = "\n[END SESSION CONTEXT]\n\n" + +# (H) Confirmation status display +CONFIRM_ENABLED = "Enabled" +CONFIRM_DISABLED = "Disabled (YOLO Mode)" + +# (H) Diff labels +DIFF_LABEL_BEFORE = "before" +DIFF_LABEL_AFTER = "after" +DIFF_FALLBACK_PATH = "file" + + +class DiffMarker: + ADD = "+" + DEL = "-" + HUNK = "@" + HEADER_ADD = "+++" + HEADER_DEL = "---" + + +# (H) Table column headers +TABLE_COL_CONFIGURATION = "Configuration" +TABLE_COL_VALUE = "Value" + +# (H) Table row labels +TABLE_ROW_TARGET_LANGUAGE = "Target Language" +TABLE_ROW_ORCHESTRATOR_MODEL = "Orchestrator Model" +TABLE_ROW_CYPHER_MODEL = "Cypher Model" +TABLE_ROW_OLLAMA_ENDPOINT = "Ollama Endpoint" +TABLE_ROW_OLLAMA_ORCHESTRATOR = "Ollama Endpoint (Orchestrator)" +TABLE_ROW_OLLAMA_CYPHER = "Ollama Endpoint (Cypher)" +TABLE_ROW_EDIT_CONFIRMATION = "Edit Confirmation" +TABLE_ROW_TARGET_REPOSITORY = "Target Repository" + +# (H) UI status messages +MSG_CONNECTED_MEMGRAPH = "Successfully connected to Memgraph." +MSG_THINKING_CANCELLED = "Thinking cancelled." +MSG_TIMEOUT_FORMAT = "Operation timed out after {timeout} seconds." +MSG_TOOL_CALL_CANCELLED = "Tool call cancelled by user." +MSG_CHAT_INSTRUCTIONS = ( + "Ask questions about your codebase graph. Type 'exit' or 'quit' to end." +) + +# (H) Default titles and prompts +DEFAULT_TABLE_TITLE = "Code-Graph-RAG Initializing..." +OPTIMIZATION_TABLE_TITLE = "Optimization Session Configuration" +PROMPT_ASK_QUESTION = "Ask a question" +PROMPT_YOUR_RESPONSE = "Your response" +MULTILINE_INPUT_HINT = ( + "(Press Ctrl+J or Ctrl+E to submit, Enter for new line, Shift+Tab to toggle mode)" +) +PERMISSION_MODE_NORMAL_LABEL = "● Normal mode (asks before destructive)" +PERMISSION_MODE_YOLO_LABEL = "● YOLO mode (auto-approve, allowlist off)" +PERMISSION_MODE_TOGGLED = "Permission mode: {label}" +STATUS_BAR_BRANCH_CLEAN_HTML = ( + '' +) +STATUS_BAR_BRANCH_DIRTY_HTML = ( + '' +) +STATUS_BAR_BRANCH_CLEAN_PLAIN = " ⎇ {branch} " +STATUS_BAR_BRANCH_DIRTY_PLAIN = " ⎇ {branch} ± " +STATUS_BAR_BRANCH_RICH_TEXT = " ⎇ {branch}{marker} " +STATUS_BAR_CLEAN_STYLE = "black on green" +STATUS_BAR_DIRTY_STYLE = "black on yellow" +STATUS_BAR_DIRTY_MARKER = " ±" +STATUS_BAR_SPINNER = "dots" +STATUS_BAR_SEPARATOR_CHAR = "─" +STATUS_BAR_SEPARATOR_COLOR = "#666666" +STATUS_BAR_TOKEN_HTML = ' ' +STATUS_BAR_CONFIG_COLOR = "#888888" +STATUS_BAR_CONFIG_LABEL_COLOR = "#5fafd7" +STATUS_BAR_CONFIG_SEPARATOR = " │ " +STATUS_BAR_CONFIG_LABEL_O = "O" +STATUS_BAR_CONFIG_LABEL_C = "C" +STATUS_BAR_CONFIG_LABEL_EDIT = "edit" +STATUS_BAR_CONFIG_LABEL_INSTRUCTIONS = "instructions" +STATUS_BAR_CONFIG_LABEL_REPO = "repo" +STATUS_BAR_EDIT_ON = "on" +STATUS_BAR_EDIT_OFF = "off" +TOKEN_THRESHOLD_WARNING = 50 +TOKEN_THRESHOLD_CRITICAL = 80 +TOKEN_COLOR_OK = "green" +TOKEN_COLOR_WARNING = "yellow" +TOKEN_COLOR_CRITICAL = "red" + +# (H) Interactive setup prompt - grouped view +INTERACTIVE_TITLE_GROUPED = "Detected Directories (will be excluded unless kept)" +INTERACTIVE_TITLE_NESTED = "Nested paths in '{pattern}'" +INTERACTIVE_COL_NUM = "#" +INTERACTIVE_COL_PATTERN = "Pattern" +INTERACTIVE_COL_NESTED = "Nested" +INTERACTIVE_COL_PATH = "Path" +INTERACTIVE_STYLE_DIM = "dim" +INTERACTIVE_STATUS_DETECTED = "auto-detected" +INTERACTIVE_STATUS_CLI = "--exclude" +INTERACTIVE_STATUS_CGRIGNORE = ".cgrignore" +INTERACTIVE_NESTED_SINGULAR = "{count} dir" +INTERACTIVE_NESTED_PLURAL = "{count} dirs" +INTERACTIVE_INSTRUCTIONS_GROUPED = ( + "These directories would normally be excluded. " + "Options: 'all' (keep all), 'none' (keep none), " + "numbers like '1,3' (keep groups), or '1e' to expand group 1" +) +INTERACTIVE_INSTRUCTIONS_NESTED = ( + "Select paths to keep from '{pattern}'. " + "Options: 'all', 'none', or numbers like '1,3'" +) +INTERACTIVE_PROMPT_KEEP = "Keep" +INTERACTIVE_KEEP_ALL = "all" +INTERACTIVE_KEEP_NONE = "none" +INTERACTIVE_EXPAND_SUFFIX = "e" +INTERACTIVE_BFS_MAX_DEPTH = 10 +INTERACTIVE_DEFAULT_GROUP = "." + +REALTIME_LOGGER_FORMAT = ( + "{time:YYYY-MM-DD HH:mm:ss.SSS} | " + "{level: <8} | " + "{name}:{function}:{line} - " + "{message}" +) + +WATCHER_SLEEP_INTERVAL = 1 +LOG_LEVEL_INFO = "INFO" +LOG_LEVEL_ERROR = "ERROR" + +# (H) Debounce settings for realtime watcher +DEFAULT_DEBOUNCE_SECONDS = 5 +DEFAULT_MAX_WAIT_SECONDS = 30 + +# (H) Tool success messages +MSG_SURGICAL_SUCCESS = "Successfully applied surgical code replacement in: {path}" +MSG_SURGICAL_FAILED = ( + "Failed to apply surgical replacement in {path}. " + "Target code not found or patches failed." +) + +# (H) Grep suggestion +GREP_SUGGESTION = " Use 'rg' instead of 'grep' for text searching." + +# (H) Shell command constants +SHELL_CMD_GREP = "grep" +SHELL_CMD_GIT = "git" +SHELL_CMD_RM = "rm" +SHELL_RM_RF_FLAG = "-rf" +SHELL_RETURN_CODE_ERROR = -1 +SHELL_PIPE_OPERATORS = ("|", "&&", "||", ";") +SHELL_SUBSHELL_PATTERNS = ("$(", "`") +SHELL_REDIRECT_OPERATORS = frozenset({">", ">>", "<", "<<"}) + +# (H) Dangerous commands - absolutely blocked +SHELL_DANGEROUS_COMMANDS = frozenset( + { + "dd", + "mkfs", + "mkfs.ext4", + "mkfs.ext3", + "mkfs.xfs", + "mkfs.btrfs", + "mkfs.vfat", + "fdisk", + "parted", + "shred", + "wipefs", + "mkswap", + "swapon", + "swapoff", + "mount", + "umount", + "insmod", + "rmmod", + "modprobe", + "shutdown", + "reboot", + "halt", + "poweroff", + "init", + "telinit", + "systemctl", + "service", + "chroot", + "nohup", + "disown", + "crontab", + "at", + "batch", + } +) + +# (H) Dangerous rm flags +SHELL_RM_DANGEROUS_FLAGS = frozenset({"-rf", "-fr"}) +SHELL_RM_FORCE_FLAG = "-f" + +# (H) System directories to protect from rm -rf +SHELL_SYSTEM_DIRECTORIES = frozenset( + { + "bin", + "boot", + "dev", + "etc", + "home", + "lib", + "lib64", + "media", + "mnt", + "opt", + "proc", + "root", + "run", + "sbin", + "srv", + "sys", + "tmp", + "usr", + "var", + } +) + +# (H) Dangerous patterns for full pipeline (cross-segment patterns with pipes/operators) +SHELL_DANGEROUS_PATTERNS_PIPELINE = ( + (r"(wget|curl)\s+.*\|\s*(sh|bash|zsh|ksh)", "remote script execution"), + (r"(wget|curl)\s+.*>\s*.*\.sh\s*&&", "download and execute script"), + (r"base64\s+-d.*\|", "base64 decode pipe execution"), +) + +# (H) Build system directory regex pattern dynamically +_SYSTEM_DIRS_PATTERN = "|".join(SHELL_SYSTEM_DIRECTORIES) + +# (H) Dangerous patterns for individual segments (per-command patterns) +SHELL_DANGEROUS_PATTERNS_SEGMENT = ( + (r"rm\s+.*-[rf]+\s+/($|\s)", "rm with root path"), + (rf"rm\s+.*-[rf]+\s+/({_SYSTEM_DIRS_PATTERN})($|/|\s)", "rm with system directory"), + (r"rm\s+.*-[rf]+\s+~($|\s)", "rm with home directory"), + (r"rm\s+.*-[rf]+\s+\*", "rm with wildcard"), + (r"rm\s+.*-[rf]+\s+\.\.", "rm with parent directory"), + (r"dd\s+.*of=/dev/", "dd writing to device"), + (r">\s*/dev/sd[a-z]", "redirect to disk device"), + (r">\s*/dev/nvme", "redirect to nvme device"), + (r">\s*/dev/null.*<", "null device manipulation"), + (r"chmod\s+.*-R\s+777\s+/", "recursive 777 on root"), + (r"chmod\s+.*777\s+/($|\s)", "777 on root"), + (r"chown\s+.*-R\s+.*\s+/($|\s)", "recursive chown on root"), + (r":\(\)\s*\{.*:\s*\|", "fork bomb pattern"), + (r"mv\s+.*\s+/dev/null", "move to /dev/null"), + (r"ln\s+-[sf]+\s+/dev/null", "symlink to /dev/null"), + (r"cat\s+.*/dev/zero", "cat /dev/zero"), + (r"cat\s+.*/dev/random", "cat /dev/random"), + (r">\s*/etc/passwd", "overwrite passwd"), + (r">\s*/etc/shadow", "overwrite shadow"), + (r">\s*/etc/sudoers", "overwrite sudoers"), + (r"echo\s+.*>\s*/etc/", "write to /etc"), + ( + r"python.*-c.*(import\s+os|__import__\s*\(\s*['\"]os['\"]\s*\))", + "python os import in command", + ), + (r"perl\s+-e", "perl one-liner"), + (r"ruby\s+-e", "ruby one-liner"), + (r"nc\s+-[el]", "netcat listener"), + (r"ncat\s+-[el]", "ncat listener"), + (r"/dev/tcp/", "bash tcp device"), + (r"eval\s+", "eval command"), + (r"exec\s+[0-9]+<>", "exec file descriptor manipulation"), + (r"awk\s+.*system\s*\(", "awk system() call"), + (r"awk\s+.*getline\s*[<|]", "awk getline file/pipe execution"), + (r"sed\s+.*s(.).*?\1.*?\1[gip]*e[gip]*", "sed execute flag"), + (r"xargs\s+.*(rm|chmod|chown|mv|dd|mkfs)", "xargs with destructive command"), + (r"xargs\s+-I.*sh", "xargs shell execution"), + (r"xargs\s+.*bash", "xargs bash execution"), +) + +# (H) Semantic search constants +MSG_SEMANTIC_NO_RESULTS = ( + "No semantic matches found for query: '{query}'. This could mean:\n" + "1. No functions match this description\n" + "2. Semantic search dependencies are not installed\n" + "3. No embeddings have been generated yet" +) +MSG_SEMANTIC_SOURCE_UNAVAILABLE = ( + "Could not retrieve source code for node ID {id}. " + "The node may not exist or source file may be unavailable." +) +MSG_SEMANTIC_SOURCE_FORMAT = "Source code for node ID {id}:\n\n```\n{code}\n```" +MSG_SEMANTIC_RESULT_HEADER = "Found {count} semantic matches for '{query}':\n\n" +MSG_SEMANTIC_RESULT_FOOTER = "\n\nUse the qualified names above with other tools to get more details or source code." + +# (H) Document analyzer constants +MSG_DOC_NO_CANDIDATES = "No valid text found in response candidates." +MSG_DOC_NO_CONTENT = "No text content received from the API." + +SHELL_CMD_WHERE = "where" +SHELL_CMD_WHICH = "which" diff --git a/codebase_rag/constants.py b/codebase_rag/constants/core.py similarity index 63% rename from codebase_rag/constants.py rename to codebase_rag/constants/core.py index 1c22fa05c..88d746f35 100644 --- a/codebase_rag/constants.py +++ b/codebase_rag/constants/core.py @@ -1,6 +1,8 @@ from enum import StrEnum from typing import NamedTuple +from .languages import SupportedLanguage + class PyInstallerPackage(NamedTuple): name: str @@ -9,29 +11,6 @@ class PyInstallerPackage(NamedTuple): hidden_import: str | None = None -class ModelRole(StrEnum): - ORCHESTRATOR = "orchestrator" - CYPHER = "cypher" - - -class Provider(StrEnum): - OLLAMA = "ollama" - ANTHROPIC = "anthropic" - OPENAI = "openai" - GOOGLE = "google" - AZURE = "azure" - LITELLM_PROXY = "litellm_proxy" - - -class Color(StrEnum): - GREEN = "green" - YELLOW = "yellow" - CYAN = "cyan" - RED = "red" - MAGENTA = "magenta" - BLUE = "blue" - - class KeyBinding(StrEnum): CTRL_J = "c-j" CTRL_E = "c-e" @@ -40,96 +19,6 @@ class KeyBinding(StrEnum): SHIFT_TAB = "s-tab" -class PermissionMode(StrEnum): - NORMAL = "normal" - YOLO = "yolo" - - -class StyleModifier(StrEnum): - BOLD = "bold" - DIM = "dim" - NONE = "" - - -class FileAction(StrEnum): - READ = "read" - EDIT = "edit" - - -DEFAULT_MODEL_ROLE = "model" - -BINARY_EXTENSIONS: frozenset[str] = frozenset( - { - ".pdf", - ".png", - ".jpg", - ".jpeg", - ".gif", - ".bmp", - ".ico", - ".tiff", - ".webp", - } -) - -# (H) Source file extensions by language -EXT_PY = ".py" -EXT_JS = ".js" -EXT_JSX = ".jsx" -EXT_TS = ".ts" -EXT_TSX = ".tsx" -EXT_RS = ".rs" -EXT_GO = ".go" -EXT_SCALA = ".scala" -EXT_SC = ".sc" -EXT_JAVA = ".java" -EXT_CLASS = ".class" -EXT_CPP = ".cpp" -EXT_H = ".h" -EXT_HPP = ".hpp" -EXT_CC = ".cc" -EXT_CXX = ".cxx" -EXT_HXX = ".hxx" -EXT_HH = ".hh" -EXT_IXX = ".ixx" -EXT_CPPM = ".cppm" -EXT_CCM = ".ccm" -EXT_C = ".c" -EXT_PHP = ".php" -EXT_LUA = ".lua" - -# (H) File extension tuples by language -PY_EXTENSIONS = (EXT_PY,) -JS_EXTENSIONS = (EXT_JS, EXT_JSX) -TS_EXTENSIONS = (EXT_TS,) -TSX_EXTENSIONS = (EXT_TSX,) -RS_EXTENSIONS = (EXT_RS,) -GO_EXTENSIONS = (EXT_GO,) -SCALA_EXTENSIONS = (EXT_SCALA, EXT_SC) -JAVA_EXTENSIONS = (EXT_JAVA,) -C_EXTENSIONS = (EXT_C,) -CPP_EXTENSIONS = ( - EXT_CPP, - EXT_H, - EXT_HPP, - EXT_CC, - EXT_CXX, - EXT_HXX, - EXT_HH, - EXT_IXX, - EXT_CPPM, - EXT_CCM, -) -PHP_EXTENSIONS = (EXT_PHP,) -LUA_EXTENSIONS = (EXT_LUA,) - -# (H) A C++ operator overload / user-defined literal is defined with the reserved -# (H) `operator` keyword heading the name (`operator==`, `operator[]`, `operator""_json`). -# (H) It is invoked by operator/literal syntax, not a named call, so it is a dead-code -# (H) reachability root; the keyword can only head such definitions, so this prefix on a -# (H) C++ file uniquely identifies them (member or free function). -CPP_OPERATOR_PREFIX = "operator" - # (H) Package indicator files PKG_INIT_PY = "__init__.py" PKG_CARGO_TOML = "Cargo.toml" @@ -138,24 +27,6 @@ class FileAction(StrEnum): PKG_VCXPROJ_GLOB = "*.vcxproj" PKG_CONANFILE = "conanfile.txt" -DEFAULT_REGION = "us-central1" -DEFAULT_MODEL = "llama3.2" -DEFAULT_API_KEY = "ollama" - -ENV_OPENAI_API_KEY = "OPENAI_API_KEY" -ENV_GOOGLE_API_KEY = "GOOGLE_API_KEY" -ENV_ANTHROPIC_API_KEY = "ANTHROPIC_API_KEY" -ENV_AZURE_API_KEY = "AZURE_API_KEY" -ENV_AZURE_ENDPOINT = "AZURE_OPENAI_ENDPOINT" -ENV_AZURE_API_VERSION = "AZURE_API_VERSION" - -HELP_ARG = "help" - - -class GoogleProviderType(StrEnum): - GLA = "gla" - VERTEX = "vertex" - class CppFrontend(StrEnum): TREESITTER = "treesitter" @@ -175,42 +46,6 @@ class CppFrontend(StrEnum): EMBEDDING_DEFAULT_BATCH_SIZE = 64 EMBEDDING_CACHE_FILENAME = ".embedding_cache.json" -KEY_NODES = "nodes" -KEY_RELATIONSHIPS = "relationships" -KEY_NODE_ID = "node_id" -KEY_LABELS = "labels" -KEY_LABEL = "label" -KEY_PROPERTIES = "properties" -KEY_FROM_ID = "from_id" -KEY_TO_ID = "to_id" -KEY_TYPE = "type" -KEY_METADATA = "metadata" -KEY_TOTAL_NODES = "total_nodes" -KEY_TOTAL_RELATIONSHIPS = "total_relationships" -KEY_NODE_LABELS = "node_labels" -KEY_RELATIONSHIP_TYPES = "relationship_types" -KEY_EXPORTED_AT = "exported_at" -KEY_PARSER = "parser" -KEY_NAME = "name" -KEY_QUALIFIED_NAME = "qualified_name" -KEY_IS_PROPERTY = "is_property" -KEY_QUERY = "query" -KEY_RESPONSE = "response" -KEY_START_LINE = "start_line" -KEY_END_LINE = "end_line" -KEY_PATH = "path" -KEY_ABSOLUTE_PATH = "absolute_path" -KEY_EXTENSION = "extension" -KEY_MODULE_TYPE = "module_type" -KEY_IMPLEMENTS_MODULE = "implements_module" -KEY_PROPS = "props" -KEY_CREATED = "created" -KEY_FROM_VAL = "from_val" -KEY_TO_VAL = "to_val" -KEY_VERSION_SPEC = "version_spec" -KEY_PREFIX = "prefix" -KEY_PROJECT_NAME = "project_name" - ERR_SUBSTR_ALREADY_EXISTS = "already exists" ERR_SUBSTR_CONSTRAINT = "constraint" @@ -224,161 +59,7 @@ class CppFrontend(StrEnum): PROTOBUF_INDEX_FILE = "index.bin" PROTOBUF_NODES_FILE = "nodes.bin" PROTOBUF_RELS_FILE = "relationships.bin" - -# (H) Protobuf oneof field names -ONEOF_PROJECT = "project" -ONEOF_PACKAGE = "package" -ONEOF_FOLDER = "folder" -ONEOF_MODULE = "module" -ONEOF_CLASS = "class_node" -ONEOF_FUNCTION = "function" -ONEOF_METHOD = "method" -ONEOF_FILE = "file" -ONEOF_EXTERNAL_PACKAGE = "external_package" -ONEOF_EXTERNAL_MODULE = "external_module" -ONEOF_MODULE_IMPLEMENTATION = "module_implementation" -ONEOF_MODULE_INTERFACE = "module_interface" -ONEOF_INTERFACE = "interface_node" -ONEOF_ENUM = "enum_node" -ONEOF_TYPE = "type_node" -ONEOF_UNION = "union_node" - -# (H) CLI error and info messages -CLI_ERR_OUTPUT_REQUIRES_UPDATE = ( - "Error: --output/-o option requires --update-graph to be specified." -) -CLI_ERR_ONLY_JSON = "Error: Currently only JSON format is supported." -CLI_ERR_JSON_REQUIRES_ASK_AGENT = ( - "Error: --output-format json requires --ask-agent/-a; " - "it only applies to single-query output." -) -CLI_ERR_PATH_NOT_EXISTS = "Error: --repo-path does not exist: {path}" -CLI_ERR_PATH_NOT_DIR = "Error: --repo-path is not a directory: {path}" -CLI_WARN_NOT_GIT_REPO = "Warning: --repo-path is not a Git repository: {path}" -CLI_ERR_STARTUP = "Startup Error: {error}" -CLI_ERR_CONFIG = "Configuration Error: {error}" -CLI_ERR_INDEXING = "An error occurred during indexing: {error}" -CLI_ERR_EXPORT_FAILED = "Failed to export graph: {error}" -CLI_ERR_LOAD_GRAPH = "Failed to load graph: {error}" -CLI_ERR_MCP_SERVER = "MCP Server Error: {error}" - -CLI_MSG_UPDATING_GRAPH = "Updating knowledge graph for: {path}" -CLI_MSG_SYNCING_GRAPH = "Syncing knowledge graph for: {path} (use --no-sync to skip)" -CLI_MSG_WORKSPACE_SYNCING = "Syncing workspace '{name}' ({count} repos)..." -CLI_MSG_WORKSPACE_SYNC_REPO = ( - "[{idx}/{total}] Syncing {path} as project '{project_name}'" -) -CLI_MSG_WORKSPACE_EMPTY = ( - "Workspace '{name}' has no repos (use cgr workspace add-repo)." -) -MSG_SYNCING_KNOWLEDGE_GRAPH = ( - "[bold cyan]Syncing knowledge graph[/bold cyan] (incremental, --no-sync to skip)" -) -MSG_SYNCING_WORKSPACE = ( - "[bold cyan]Syncing workspace '{name}'[/bold cyan] ({count} repos)" -) -CLI_MSG_SYNC_SKIPPED = "Knowledge graph already in sync for '{project}' ({elapsed:.2f}s, no changes detected)." -CLI_MSG_SYNC_DONE = "Knowledge graph sync done for '{project}' in {elapsed:.2f}s." -CLI_MSG_CLEANING_DB = "Cleaning database..." -CLI_MSG_CLEANING_HASH_CACHE = "Removing hash cache: {path}" -CLI_MSG_CLEAN_DONE = "Clean completed successfully!" -CLI_MSG_DELETING_PROJECT = "Deleting project '{project_name}' from the graph..." -CLI_MSG_PROJECT_DELETED = "Project '{project_name}' deleted successfully." -CLI_ERR_PROJECT_NOT_FOUND = ( - "Project '{project_name}' not found. Available projects: {projects}" -) -CLI_ERR_PROJECT_NAME_REQUIRED = ( - "Error: --name is required and must be a non-empty project name." -) -CLI_ERR_DELETE_PROJECT_FAILED = "Failed to delete project '{project_name}': {error}" -CLI_MSG_EXPORTING_TO = "Exporting graph to: {path}" -CLI_MSG_GRAPH_UPDATED = "Graph update completed!" -CLI_MSG_APP_TERMINATED = "\nApplication terminated by user." -CLI_MSG_INDEXING_AT = "Indexing codebase at: {path}" -CLI_MSG_OUTPUT_TO = "Output will be written to: {path}" -CLI_MSG_INDEXING_DONE = "Indexing process completed successfully!" -CLI_MSG_CONNECTING_MEMGRAPH = "Connecting to Memgraph to export graph..." -CLI_MSG_EXPORTING_DATA = "Exporting graph data..." -CLI_MSG_OPTIMIZATION_TERMINATED = "\nOptimization session terminated by user." -CLI_MSG_MCP_TERMINATED = "\nMCP server terminated by user." PACKAGE_NAME = "code-graph-rag" -CLI_MSG_VERSION = "{package} version {version}" -CLI_MSG_HINT_TARGET_REPO = ( - "\nHint: Make sure TARGET_REPO_PATH environment variable is set." -) -CLI_MSG_GRAPH_SUMMARY = "Graph Summary:" -CLI_MSG_CONNECTING_STATS = "Fetching graph statistics..." -CLI_STATS_NODE_TITLE = "Node Statistics" -CLI_STATS_REL_TITLE = "Relationship Statistics" -CLI_STATS_COL_NODE_TYPE = "Node Type" -CLI_STATS_COL_REL_TYPE = "Relationship Type" -CLI_STATS_COL_COUNT = "Count" -CLI_STATS_TOTAL_NODES = "Total Nodes" -CLI_STATS_TOTAL_RELS = "Total Relationships" -CLI_STATS_UNKNOWN = "Unknown" -CLI_ERR_STATS_FAILED = "Failed to get graph statistics: {error}" - -CLI_DEADCODE_CONNECTING = "Scanning for unreachable functions and methods..." -CLI_DEADCODE_TABLE_TITLE = "Dead Code Candidates ({project_name})" -CLI_DEADCODE_COL_KIND = "Kind" -CLI_DEADCODE_COL_QUALIFIED_NAME = "Qualified Name" -CLI_DEADCODE_COL_LINES = "Lines" -CLI_DEADCODE_LINE_RANGE = "{start}-{end}" -CLI_DEADCODE_SUMMARY = "{count} candidate(s) for review." -CLI_DEADCODE_NONE = "No unreachable functions or methods found." -CLI_DEADCODE_WRITTEN = "Wrote {count} candidate(s) to {path}" -CLI_ERR_DEADCODE_FAILED = "Failed to scan for dead code: {error}" -CLI_ERR_DEADCODE_NO_PROJECTS = ( - "No projects found in the graph. Index a repository first with 'cgr start'." -) -CLI_ERR_DEADCODE_AMBIGUOUS_PROJECT = ( - "Multiple projects found: {projects}. Specify which one with --project-name/-n." -) -CLI_MSG_AUTO_EXCLUDE = ( - "Auto-excluding common directories (venv, node_modules, .git, etc.). " - "Use --interactive-setup to customize." -) - -UI_DIFF_FILE_HEADER = "[bold cyan]File: {path}[/bold cyan]" -UI_NEW_FILE_HEADER = "[bold cyan]New file: {path}[/bold cyan]" -UI_SHELL_COMMAND_HEADER = "[bold cyan]Shell command:[/bold cyan]" -UI_TOOL_APPROVAL = "[bold yellow]⚠️ Tool '{tool_name}' requires approval:[/bold yellow]" -UI_FEEDBACK_PROMPT = "Feedback (why rejected, or press Enter to skip)" -UI_OPTIMIZATION_START = ( - "[bold green]Starting {language} optimization session...[/bold green]" -) -UI_OPTIMIZATION_PANEL = ( - "[bold yellow]The agent will analyze your codebase{document_info} and propose specific optimizations." - " You'll be asked to approve each suggestion before implementation." - " Type 'exit' or 'quit' to end the session.[/bold yellow]" -) -UI_OPTIMIZATION_INIT = "[bold cyan]Initializing optimization session for {language} codebase: {path}[/bold cyan]" -UI_GRAPH_EXPORT_SUCCESS = ( - "[bold green]Graph exported successfully to: {path}[/bold green]" -) -UI_GRAPH_EXPORT_STATS = "[bold cyan]Export contains {nodes} nodes and {relationships} relationships[/bold cyan]" -UI_ERR_UNEXPECTED = "[bold red]An unexpected error occurred: {error}[/bold red]" -UI_ERR_EXPORT_FAILED = "[bold red]Failed to export graph: {error}[/bold red]" -UI_MODEL_SWITCHED = "[bold green]Model switched to: {model}[/bold green]" -UI_MODEL_CURRENT = "[bold cyan]Current model: {model}[/bold cyan]" -UI_MODEL_SWITCH_ERROR = "[bold red]Failed to switch model: {error}[/bold red]" -UI_MODEL_USAGE = "[bold yellow]Usage: /model (e.g., /model google:gemini-3.1-pro-preview)[/bold yellow]" -UI_HELP_COMMANDS = """[bold cyan]Available commands:[/bold cyan] - /model - Switch to a different model - /model - Show current model - /help - Show this help - exit, quit - Exit the session""" -UI_TOOL_ARGS_FORMAT = " Arguments: {args}" -UI_REFERENCE_DOC_INFO = " using the reference document: {reference_document}" -UI_INPUT_PROMPT_HTML = ( - "{prompt} {hint}: " -) - -# (H) ModelConfig field names -FIELD_PROVIDER = "provider" -FIELD_MODEL_ID = "model_id" -FIELD_API_KEY = "api_key" -FIELD_ENDPOINT = "endpoint" # (H) Tool argument field names ARG_TARGET_CODE = "target_code" @@ -398,55 +79,6 @@ class CppFrontend(StrEnum): PATH_CURRENT_DIR = "." PATH_PARENT_DIR = ".." GLOB_ALL = "*" -# (H) JS/TS import specifier schemes that name genuinely external code (node -# (H) builtins, package registries, URLs). A specifier with any OTHER scheme -# (H) (`ext:` deno-runtime aliases, bundler virtual modules) points at first-party -# (H) code under a non-file-path name, so its unresolved calls defer to the trie. -JS_EXTERNAL_IMPORT_SCHEMES: frozenset[str] = frozenset( - {"node", "npm", "jsr", "bun", "http", "https", "data", "file", "blob"} -) -# (H) Module file extensions stripped when turning a tsconfig `paths` target into a -# (H) module qn (`src/util.ts` -> `src/util`), longest first so `.d.ts`-like -# (H) compound suffixes are handled before the bare `.ts`. -JS_TS_MODULE_EXTENSIONS: tuple[str, ...] = ( - ".d.ts", - ".tsx", - ".ts", - ".jsx", - ".mjs", - ".cjs", - ".js", -) -TSCONFIG_FILENAMES: tuple[str, ...] = ( - "tsconfig.json", - "tsconfig.base.json", - "jsconfig.json", -) -# (H) When searching subdirectories for tsconfig files (monorepo `frontend/`, -# (H) `packages/*`), skip dependency/build/VCS trees: their tsconfigs carry -# (H) unrelated aliases and there can be thousands of them under node_modules. -TS_ALIAS_SKIP_DIRS: frozenset[str] = frozenset( - {"node_modules", "dist", "build", "out", ".git"} -) -JS_INDEX_STEM = "index" -TS_COMPILER_OPTIONS_KEY = "compilerOptions" -TS_PATHS_KEY = "paths" -TS_BASE_URL_KEY = "baseUrl" -PATH_RELATIVE_PREFIX = "./" -PATH_PARENT_PREFIX = "../" -CPP_IMPORT_PARTITION_PREFIX = "import :" -CPP_PARTITION_PREFIX = "partition_" - -# (H) Trie internal keys -TRIE_TYPE_KEY = "__type__" -TRIE_QN_KEY = "__qn__" -TRIE_INTERNAL_PREFIX = "__" - - -class UniqueKeyType(StrEnum): - NAME = KEY_NAME - PATH = KEY_PATH - QUALIFIED_NAME = KEY_QUALIFIED_NAME class DeadCodeFormat(StrEnum): @@ -459,214 +91,11 @@ class QueryFormat(StrEnum): JSON = "json" -# (H) Decorators whose presence marks a function/method as an implicit entry point -# (H) (web routes, task/flow handlers, fixtures, CLI commands, event listeners, and -# (H) Pydantic validators/serializers the framework invokes by registration). -DEFAULT_ROOT_DECORATORS: frozenset[str] = frozenset( - { - "route", - "get", - "post", - "callback", - "put", - "delete", - "patch", - "websocket", - "task", - "flow", - "fixture", - "command", - "cli", - "app", - "on_event", - "listener", - "validator", - "field_validator", - "model_validator", - "root_validator", - "field_serializer", - "model_serializer", - "computed_field", - "abstractmethod", - } -) - -# (H) Go functions the runtime invokes with no explicit call site: `func init()` -# (H) runs at package load (any number per package), `func main()` is the program -# (H) entry. Both are reachability roots (like Python dunders), gated by the .go -# (H) extension so same-named symbols in other languages are unaffected. -GO_ROOT_FUNCTION_NAMES: frozenset[str] = frozenset({"init", "main"}) - -# (H) Rust `fn main()` is the binary entry point, invoked by the runtime with no -# (H) call site -- a reachability root (gated by .rs). -RUST_ROOT_FUNCTION_NAMES: frozenset[str] = frozenset({"main"}) - -# (H) Rust trait-impl methods the language/std dispatches implicitly (Display::fmt -# (H) via format!, PartialEq::eq via ==, Iterator::next via for, operator traits, -# (H) Drop::drop, serde, ...), never through an explicit call the graph can see. -# (H) Rooting them by name (gated by .rs) mirrors the Python-dunder exemption: these -# (H) names are conventionally reserved for trait impls, so a same-named user method -# (H) that is genuinely dead is under-reported rather than mis-reported. -RUST_TRAIT_METHOD_NAMES: frozenset[str] = frozenset( - { - "fmt", - "eq", - "ne", - "cmp", - "partial_cmp", - "hash", - "next", - "next_back", - "into_iter", - "size_hint", - "drop", - "clone", - "clone_from", - "default", - "from", - "from_str", - "try_from", - "into", - "try_into", - "deref", - "deref_mut", - "as_ref", - "as_mut", - "borrow", - "borrow_mut", - "poll", - "serialize", - "deserialize", - "source", - "add", - "add_assign", - "sub", - "sub_assign", - "mul", - "mul_assign", - "div", - "div_assign", - "rem", - "rem_assign", - "neg", - "not", - "bitand", - "bitand_assign", - "bitor", - "bitor_assign", - "bitxor", - "bitxor_assign", - "shl", - "shl_assign", - "shr", - "shr_assign", - "index", - "index_mut", - } -) - -# (H) Base classes that mark a class as a structural interface: its method stubs -# (H) are never call targets themselves (callers resolve to the implementations), -# (H) so dead-code analysis roots every method the class defines. -# (H) ponytail: direct bases only; transitive Protocol subclassing is not chased. -PROTOCOL_BASE_QNS: tuple[str, ...] = ("typing.Protocol", "typing_extensions.Protocol") - -# (H) Substrings in a node's file path that mark it as test code. Covers Python -# (H) (test_, _test, conftest, /tests/), the JS/TS filename convention -# (H) (foo.test.ts, foo.spec.tsx), and the Jest __tests__/ directory so those -# (H) files are not reported as dead. Singular /test/ and /spec/ directories are -# (H) intentionally excluded: they collide with product code (a domain "spec" -# (H) module), which would misclassify live code as test. -TEST_PATH_PATTERNS: tuple[str, ...] = ( - "test_", - "_test", - "conftest", - "/tests/", - ".test.", - ".spec.", - "__tests__", -) - - -class NodeLabel(StrEnum): - PROJECT = "Project" - PACKAGE = "Package" - FOLDER = "Folder" - FILE = "File" - MODULE = "Module" - CLASS = "Class" - FUNCTION = "Function" - METHOD = "Method" - INTERFACE = "Interface" - ENUM = "Enum" - TYPE = "Type" - UNION = "Union" - MODULE_INTERFACE = "ModuleInterface" - MODULE_IMPLEMENTATION = "ModuleImplementation" - EXTERNAL_PACKAGE = "ExternalPackage" - EXTERNAL_MODULE = "ExternalModule" - - -_NODE_LABEL_UNIQUE_KEYS: dict[NodeLabel, UniqueKeyType] = { - NodeLabel.PROJECT: UniqueKeyType.NAME, - NodeLabel.PACKAGE: UniqueKeyType.QUALIFIED_NAME, - NodeLabel.FOLDER: UniqueKeyType.PATH, - NodeLabel.FILE: UniqueKeyType.PATH, - NodeLabel.MODULE: UniqueKeyType.QUALIFIED_NAME, - NodeLabel.CLASS: UniqueKeyType.QUALIFIED_NAME, - NodeLabel.FUNCTION: UniqueKeyType.QUALIFIED_NAME, - NodeLabel.METHOD: UniqueKeyType.QUALIFIED_NAME, - NodeLabel.INTERFACE: UniqueKeyType.QUALIFIED_NAME, - NodeLabel.ENUM: UniqueKeyType.QUALIFIED_NAME, - NodeLabel.TYPE: UniqueKeyType.QUALIFIED_NAME, - NodeLabel.UNION: UniqueKeyType.QUALIFIED_NAME, - NodeLabel.MODULE_INTERFACE: UniqueKeyType.QUALIFIED_NAME, - NodeLabel.MODULE_IMPLEMENTATION: UniqueKeyType.QUALIFIED_NAME, - NodeLabel.EXTERNAL_PACKAGE: UniqueKeyType.NAME, - NodeLabel.EXTERNAL_MODULE: UniqueKeyType.QUALIFIED_NAME, -} - -_missing_keys = set(NodeLabel) - set(_NODE_LABEL_UNIQUE_KEYS.keys()) -if _missing_keys: - raise RuntimeError( - f"NodeLabel(s) missing from _NODE_LABEL_UNIQUE_KEYS: {_missing_keys}. " - "Every NodeLabel MUST have a unique key defined." - ) - - -class RelationshipType(StrEnum): - CONTAINS_PACKAGE = "CONTAINS_PACKAGE" - CONTAINS_FOLDER = "CONTAINS_FOLDER" - CONTAINS_FILE = "CONTAINS_FILE" - CONTAINS_MODULE = "CONTAINS_MODULE" - DEFINES = "DEFINES" - DEFINES_METHOD = "DEFINES_METHOD" - IMPORTS = "IMPORTS" - EXPORTS = "EXPORTS" - EXPORTS_MODULE = "EXPORTS_MODULE" - IMPLEMENTS_MODULE = "IMPLEMENTS_MODULE" - INHERITS = "INHERITS" - IMPLEMENTS = "IMPLEMENTS" - OVERRIDES = "OVERRIDES" - CALLS = "CALLS" - REFERENCES = "REFERENCES" - INSTANTIATES = "INSTANTIATES" - DEPENDS_ON_EXTERNAL = "DEPENDS_ON_EXTERNAL" - - -NODE_PROJECT = NodeLabel.PROJECT - EXCLUDED_DEPENDENCY_NAMES = frozenset({"python", "php"}) # (H) Byte size constants BYTES_PER_MB = 1024 * 1024 -# (H) Property keys -KEY_PARAMETERS = "parameters" -KEY_DECORATORS = "decorators" -KEY_DOCSTRING = "docstring" -KEY_IS_EXPORTED = "is_exported" - # (H) Method signature formatting EMPTY_PARENS = "()" DOCSTRING_STRIP_CHARS = "'\" \n" @@ -688,115 +117,12 @@ class RelationshipType(StrEnum): ) CSPROJ_SUFFIX = ".csproj" -# (H) Cypher queries -CYPHER_DEFAULT_LIMIT = 50 - _CYPHER_EMBEDDING_BASE = """ MATCH (m:Module)-[:DEFINES]->(n) WHERE (n:Function OR n:Method) AND m.qualified_name STARTS WITH ($project_name + '.') """ -CYPHER_QUERY_EMBEDDINGS = ( - _CYPHER_EMBEDDING_BASE - + """RETURN id(n) AS node_id, n.qualified_name AS qualified_name, - n.start_line AS start_line, n.end_line AS end_line, - m.path AS path -""" -) - -CYPHER_QUERY_PROJECT_NODE_IDS = _CYPHER_EMBEDDING_BASE + "RETURN id(n) AS node_id\n" - - -class SupportedLanguage(StrEnum): - PYTHON = "python" - JS = "javascript" - TS = "typescript" - TSX = "tsx" - RUST = "rust" - GO = "go" - SCALA = "scala" - JAVA = "java" - C = "c" - CPP = "cpp" - PHP = "php" - LUA = "lua" - - -class LanguageStatus(StrEnum): - FULL = "Fully Supported" - DEV = "In Development" - - -class LanguageMetadata(NamedTuple): - status: LanguageStatus - additional_features: str - display_name: str - - -LANGUAGE_METADATA: dict[SupportedLanguage, LanguageMetadata] = { - SupportedLanguage.PYTHON: LanguageMetadata( - LanguageStatus.FULL, - "Type inference, decorators, nested functions", - "Python", - ), - SupportedLanguage.JS: LanguageMetadata( - LanguageStatus.FULL, - "ES6 modules, CommonJS, prototype methods, object methods, arrow functions", - "JavaScript", - ), - SupportedLanguage.TS: LanguageMetadata( - LanguageStatus.FULL, - "Interfaces, type aliases, enums, namespaces, ES6/CommonJS modules", - "TypeScript", - ), - SupportedLanguage.TSX: LanguageMetadata( - LanguageStatus.FULL, - "All TypeScript features plus JSX elements and components", - "TypeScript (TSX)", - ), - SupportedLanguage.C: LanguageMetadata( - LanguageStatus.FULL, - "Functions, structs, unions, enums, preprocessor includes", - "C", - ), - SupportedLanguage.CPP: LanguageMetadata( - LanguageStatus.FULL, - "Constructors, destructors, operator overloading, templates, lambdas, C++20 modules, namespaces", - "C++", - ), - SupportedLanguage.LUA: LanguageMetadata( - LanguageStatus.FULL, - "Local/global functions, metatables, closures, coroutines", - "Lua", - ), - SupportedLanguage.RUST: LanguageMetadata( - LanguageStatus.FULL, - "impl blocks, associated functions", - "Rust", - ), - SupportedLanguage.JAVA: LanguageMetadata( - LanguageStatus.FULL, - "Generics, annotations, modern features (records/sealed classes), concurrency, reflection", - "Java", - ), - SupportedLanguage.GO: LanguageMetadata( - LanguageStatus.DEV, - "Methods, type declarations", - "Go", - ), - SupportedLanguage.SCALA: LanguageMetadata( - LanguageStatus.DEV, - "Case classes, objects", - "Scala", - ), - SupportedLanguage.PHP: LanguageMetadata( - LanguageStatus.FULL, - "Classes, interfaces, traits, enums, namespaces, PHP 8 attributes", - "PHP", - ), -} - # (H) Tree-sitter AST node type constants FUNCTION_NODES_BASIC = ("function_declaration", "function_definition") @@ -838,211 +164,12 @@ class LanguageMetadata(NamedTuple): IMPORT_NODES_FROM = ("import_from_statement",) IMPORT_NODES_MODULE = ("lexical_declaration", "export_statement") IMPORT_NODES_INCLUDE = ("preproc_include",) - -# (H) JS/TS specific node types -JS_TS_FUNCTION_NODES = ( - "function_declaration", - "generator_function_declaration", - "function_expression", - "arrow_function", - "method_definition", -) -JS_TS_CLASS_NODES = ("class_declaration", "class") -JS_TS_IMPORT_NODES = ("import_statement", "lexical_declaration", "export_statement") JS_TS_LANGUAGES = frozenset( {SupportedLanguage.JS, SupportedLanguage.TS, SupportedLanguage.TSX} ) - -# (H) C++ import node types -CPP_IMPORT_NODES = ("preproc_include", "template_function", "declaration") - -# (H) Index file names -INDEX_INIT = "__init__" -INDEX_INDEX = "index" -INDEX_MOD = "mod" - -# (H) AST field names for name extraction -NAME_FIELDS = ("identifier", "name", "id") - -# (H) Tree-sitter field name constants for child_by_field_name -FIELD_OBJECT = "object" -FIELD_PROPERTY = "property" -FIELD_NAME = "name" -FIELD_ALIAS = "alias" -FIELD_MODULE_NAME = "module_name" -FIELD_ARGUMENTS = "arguments" -FIELD_BODY = "body" -FIELD_RETURN_TYPE = "return_type" -FIELD_CONSTRUCTOR = "constructor" -FIELD_DECLARATOR = "declarator" -FIELD_PARAMETERS = "parameters" -FIELD_RECEIVER = "receiver" -FIELD_TYPE = "type" -# (H) The wrapped function/class inside a Python decorated_definition node. -FIELD_DEFINITION = "definition" -FIELD_RESULT = "result" -# (H) Rust impl `trait`/`type` fields and a trait's supertrait `bounds`. -FIELD_TRAIT = "trait" -FIELD_BOUNDS = "bounds" -TS_RS_TRAIT_BOUNDS = "trait_bounds" -FIELD_VALUE = "value" -FIELD_LEFT = "left" -FIELD_RIGHT = "right" -FIELD_FIELD = "field" -FIELD_SCOPE = "scope" -FIELD_SUPERCLASS = "superclass" -FIELD_SUPERCLASSES = "superclasses" -FIELD_INTERFACES = "interfaces" - -# (H) Method name constants for getattr/hasattr -METHOD_FIND_WITH_PREFIX = "find_with_prefix" -METHOD_ITEMS = "items" - -# (H) Image file extensions for chat image handling -MULTIMODAL_EXTENSIONS = (".png", ".jpg", ".jpeg", ".gif", ".webp", ".pdf") -MIME_TYPE_PDF = "application/pdf" -MIME_TYPE_FALLBACK = "application/octet-stream" -YES_ANSWER = "y" -YES_ANSWERS = frozenset({"y", "yes", ""}) -NO_ANSWERS = frozenset({"n", "no"}) SHIFT_TAB_ESCAPE = b"\x1b[Z" -DIFF_GIT_HEADER = "diff --git " MARKDOWN_FENCE = "```" MARKDOWN_FENCE_DIFF = "```diff" -DIFF_CONTINUATION_PREFIXES = ( - "diff --git ", - "index ", - "--- ", - "+++ ", - "@@ ", - "+", - "-", - " ", - "\\ ", - "new file mode", - "deleted file mode", - "old mode", - "new mode", - "rename from ", - "rename to ", - "similarity index ", - "Binary files ", -) - -# (H) CLI exit commands -EXIT_COMMANDS = frozenset({"exit", "quit"}) - -# (H) CLI commands -MODEL_COMMAND_PREFIX = "/model" -HELP_COMMAND = "/help" - -# (H) UI separators and formatting -HORIZONTAL_SEPARATOR = "─" * 60 - -# (H) Session log header -SESSION_LOG_HEADER = "=== CODE-GRAPH RAG SESSION LOG ===\n\n" - -# (H) Logger format -LOG_FORMAT = "{time:YYYY-MM-DD HH:mm:ss.SSS} | {message}" - -# (H) Temporary directory -TMP_DIR = ".tmp" -SESSION_LOG_PREFIX = "session_" -SESSION_LOG_EXT = ".log" - -# (H) Session log prefixes -SESSION_PREFIX_USER = "USER: " -SESSION_PREFIX_ASSISTANT = "ASSISTANT: " - -# (H) Session context format -SESSION_CONTEXT_START = ( - "\n\n[SESSION CONTEXT - Previous conversation in this session]:\n" -) -SESSION_CONTEXT_END = "\n[END SESSION CONTEXT]\n\n" - -# (H) Confirmation status display -CONFIRM_ENABLED = "Enabled" -CONFIRM_DISABLED = "Disabled (YOLO Mode)" - -# (H) Diff labels -DIFF_LABEL_BEFORE = "before" -DIFF_LABEL_AFTER = "after" -DIFF_FALLBACK_PATH = "file" - - -class DiffMarker: - ADD = "+" - DEL = "-" - HUNK = "@" - HEADER_ADD = "+++" - HEADER_DEL = "---" - - -# (H) Table column headers -TABLE_COL_CONFIGURATION = "Configuration" -TABLE_COL_VALUE = "Value" - -# (H) Table row labels -TABLE_ROW_TARGET_LANGUAGE = "Target Language" -TABLE_ROW_ORCHESTRATOR_MODEL = "Orchestrator Model" -TABLE_ROW_CYPHER_MODEL = "Cypher Model" -TABLE_ROW_OLLAMA_ENDPOINT = "Ollama Endpoint" -TABLE_ROW_OLLAMA_ORCHESTRATOR = "Ollama Endpoint (Orchestrator)" -TABLE_ROW_OLLAMA_CYPHER = "Ollama Endpoint (Cypher)" -TABLE_ROW_EDIT_CONFIRMATION = "Edit Confirmation" -TABLE_ROW_TARGET_REPOSITORY = "Target Repository" - -# (H) UI status messages -MSG_CONNECTED_MEMGRAPH = "Successfully connected to Memgraph." -MSG_THINKING_CANCELLED = "Thinking cancelled." -MSG_TIMEOUT_FORMAT = "Operation timed out after {timeout} seconds." -MSG_TOOL_CALL_CANCELLED = "Tool call cancelled by user." -MSG_CHAT_INSTRUCTIONS = ( - "Ask questions about your codebase graph. Type 'exit' or 'quit' to end." -) - -# (H) Default titles and prompts -DEFAULT_TABLE_TITLE = "Code-Graph-RAG Initializing..." -OPTIMIZATION_TABLE_TITLE = "Optimization Session Configuration" -PROMPT_ASK_QUESTION = "Ask a question" -PROMPT_YOUR_RESPONSE = "Your response" -MULTILINE_INPUT_HINT = ( - "(Press Ctrl+J or Ctrl+E to submit, Enter for new line, Shift+Tab to toggle mode)" -) -PERMISSION_MODE_NORMAL_LABEL = "● Normal mode (asks before destructive)" -PERMISSION_MODE_YOLO_LABEL = "● YOLO mode (auto-approve, allowlist off)" -PERMISSION_MODE_TOGGLED = "Permission mode: {label}" -STATUS_BAR_BRANCH_CLEAN_HTML = ( - '' -) -STATUS_BAR_BRANCH_DIRTY_HTML = ( - '' -) -STATUS_BAR_BRANCH_CLEAN_PLAIN = " ⎇ {branch} " -STATUS_BAR_BRANCH_DIRTY_PLAIN = " ⎇ {branch} ± " -STATUS_BAR_BRANCH_RICH_TEXT = " ⎇ {branch}{marker} " -STATUS_BAR_CLEAN_STYLE = "black on green" -STATUS_BAR_DIRTY_STYLE = "black on yellow" -STATUS_BAR_DIRTY_MARKER = " ±" -STATUS_BAR_SPINNER = "dots" -STATUS_BAR_SEPARATOR_CHAR = "─" -STATUS_BAR_SEPARATOR_COLOR = "#666666" -STATUS_BAR_TOKEN_HTML = ' ' -STATUS_BAR_CONFIG_COLOR = "#888888" -STATUS_BAR_CONFIG_LABEL_COLOR = "#5fafd7" -STATUS_BAR_CONFIG_SEPARATOR = " │ " -STATUS_BAR_CONFIG_LABEL_O = "O" -STATUS_BAR_CONFIG_LABEL_C = "C" -STATUS_BAR_CONFIG_LABEL_EDIT = "edit" -STATUS_BAR_CONFIG_LABEL_INSTRUCTIONS = "instructions" -STATUS_BAR_CONFIG_LABEL_REPO = "repo" -STATUS_BAR_EDIT_ON = "on" -STATUS_BAR_EDIT_OFF = "off" -TOKEN_THRESHOLD_WARNING = 50 -TOKEN_THRESHOLD_CRITICAL = 80 -TOKEN_COLOR_OK = "green" -TOKEN_COLOR_WARNING = "yellow" -TOKEN_COLOR_CRITICAL = "red" ANTHROPIC_COUNT_TOKENS_URL = "https://api.anthropic.com/v1/messages/count_tokens" ANTHROPIC_API_VERSION = "2023-06-01" @@ -1066,109 +193,9 @@ class DiffMarker: "claude-haiku-4-0": 200_000, } -# (H) Interactive setup prompt - grouped view -INTERACTIVE_TITLE_GROUPED = "Detected Directories (will be excluded unless kept)" -INTERACTIVE_TITLE_NESTED = "Nested paths in '{pattern}'" -INTERACTIVE_COL_NUM = "#" -INTERACTIVE_COL_PATTERN = "Pattern" -INTERACTIVE_COL_NESTED = "Nested" -INTERACTIVE_COL_PATH = "Path" -INTERACTIVE_STYLE_DIM = "dim" -INTERACTIVE_STATUS_DETECTED = "auto-detected" -INTERACTIVE_STATUS_CLI = "--exclude" -INTERACTIVE_STATUS_CGRIGNORE = ".cgrignore" -INTERACTIVE_NESTED_SINGULAR = "{count} dir" -INTERACTIVE_NESTED_PLURAL = "{count} dirs" -INTERACTIVE_INSTRUCTIONS_GROUPED = ( - "These directories would normally be excluded. " - "Options: 'all' (keep all), 'none' (keep none), " - "numbers like '1,3' (keep groups), or '1e' to expand group 1" -) -INTERACTIVE_INSTRUCTIONS_NESTED = ( - "Select paths to keep from '{pattern}'. " - "Options: 'all', 'none', or numbers like '1,3'" -) -INTERACTIVE_PROMPT_KEEP = "Keep" -INTERACTIVE_KEEP_ALL = "all" -INTERACTIVE_KEEP_NONE = "none" -INTERACTIVE_EXPAND_SUFFIX = "e" -INTERACTIVE_BFS_MAX_DEPTH = 10 -INTERACTIVE_DEFAULT_GROUP = "." - # (H) JSON formatting JSON_INDENT = 2 -# (H) Parser loader paths and args -GRAMMARS_DIR = "grammars" -TREE_SITTER_PREFIX = "tree-sitter-" -TREE_SITTER_MODULE_PREFIX = "tree_sitter_" -BINDINGS_DIR = "bindings" -SETUP_PY = "setup.py" -BUILD_EXT_CMD = "build_ext" -INPLACE_FLAG = "--inplace" -LANG_ATTR_PREFIX = "language_" -LANG_ATTR_TYPESCRIPT = "language_typescript" -LANG_ATTR_TSX = "language_tsx" -LANG_ATTR_PHP = "language_php" - - -class TreeSitterModule(StrEnum): - PYTHON = "tree_sitter_python" - JS = "tree_sitter_javascript" - TS = "tree_sitter_typescript" - RUST = "tree_sitter_rust" - GO = "tree_sitter_go" - SCALA = "tree_sitter_scala" - JAVA = "tree_sitter_java" - C = "tree_sitter_c" - CPP = "tree_sitter_cpp" - LUA = "tree_sitter_lua" - PHP = "tree_sitter_php" - - -# (H) Query dict keys -QUERY_FUNCTIONS = "functions" -QUERY_CLASSES = "classes" -QUERY_CALLS = "calls" -QUERY_IMPORTS = "imports" -QUERY_LOCALS = "locals" -QUERY_CONFIG = "config" -QUERY_LANGUAGE = "language" - -# (H) Query capture names -CAPTURE_FUNCTION = "function" -CAPTURE_CLASS = "class" -CAPTURE_CALL = "call" -CAPTURE_IMPORT = "import" -CAPTURE_IMPORT_FROM = "import_from" - -# (H) Locals query patterns for JS/TS -JS_LOCALS_PATTERN = """ -; Variable definitions -(variable_declarator name: (identifier) @local.definition) -(function_declaration name: (identifier) @local.definition) -(class_declaration name: (identifier) @local.definition) - -; Variable references -(identifier) @local.reference -""" - -TS_LOCALS_PATTERN = """ -; Variable definitions (TypeScript has multiple declaration types) -(variable_declarator name: (identifier) @local.definition) -(lexical_declaration (variable_declarator name: (identifier) @local.definition)) -(variable_declaration (variable_declarator name: (identifier) @local.definition)) - -; Function definitions -(function_declaration name: (identifier) @local.definition) - -; Class definitions (uses type_identifier for class names) -(class_declaration name: (type_identifier) @local.definition) - -; Variable references -(identifier) @local.reference -""" - # (H) Patterns to detect at repo root and offer as exclude candidates (user selects which to exclude) IGNORE_PATTERNS = frozenset( { @@ -1224,9 +251,6 @@ class TreeSitterModule(StrEnum): # (H) pathspec style for .cgrignore / --exclude patterns (#495). GITWILDMATCH_STYLE = "gitignore" -PAYLOAD_NODE_ID = "node_id" -PAYLOAD_QUALIFIED_NAME = "qualified_name" - class EventType(StrEnum): MODIFIED = "modified" @@ -1234,97 +258,6 @@ class EventType(StrEnum): DELETED = "deleted" -CYPHER_DELETE_MODULE = ( - "MATCH (m:Module {path: $path}) " - "OPTIONAL MATCH (m)-[:DEFINES|DEFINES_METHOD*0..]->(c) " - "DETACH DELETE m, c" -) -CYPHER_DELETE_FILE = "MATCH (f:File {path: $path}) DETACH DELETE f" -CYPHER_DELETE_FOLDER = "MATCH (f:Folder {path: $path}) DETACH DELETE f" -CYPHER_DELETE_CALLS = "MATCH ()-[r:CALLS]->() DELETE r" -# (H) Removes external import-target Module nodes that no module imports anymore -# (H) (e.g. an imported name that was renamed/removed on an incremental rebuild). -CYPHER_DELETE_ORPHAN_EXTERNAL_MODULES = ( - "MATCH (m:ExternalModule) WHERE NOT (m)<--() DETACH DELETE m" -) - -# (H) Queries for orphan pruning — returns all paths stored in the graph -CYPHER_ALL_FILE_PATHS = ( - "MATCH (f:File) RETURN f.path AS path, f.absolute_path AS absolute_path" -) -CYPHER_ALL_MODULE_PATHS_INTERNAL = ( - "MATCH (m:Module) RETURN m.path AS path, m.qualified_name AS qualified_name" -) -CYPHER_ALL_FOLDER_PATHS = ( - "MATCH (f:Folder) RETURN f.path AS path, f.absolute_path AS absolute_path" -) - -# (H) Rehydrate the in-memory function registry on an incremental run: returns -# (H) every definition node's qualified name and label so call/instantiation -# (H) resolution can see symbols defined in files that were not re-parsed. -CYPHER_ALL_DEFINITION_QNS = ( - "MATCH (n) WHERE n:Function OR n:Method OR n:Class OR n:Interface " - "OR n:Enum OR n:Type OR n:Union " - "RETURN n.qualified_name AS qualified_name, head(labels(n)) AS label, " - "n.is_property AS is_property" -) - -# (H) Inbound reference edges (from unchanged files) into symbols defined in one -# (H) of $paths. Captured BEFORE a changed file's subtree is deleted so the exact -# (H) edges can be restored verbatim afterwards (issue #532, inbound half). -# (H) Re-resolving the callers instead would diverge from a clean index, because -# (H) cgr's call resolution is context-sensitive (protocol vs concrete receiver, -# (H) import granularity); the original edges already match a clean re-index. -CYPHER_INBOUND_EDGES = ( - "MATCH (caller)-[r:CALLS|REFERENCES|INSTANTIATES|IMPORTS|INHERITS|OVERRIDES]->(target) " - "WHERE target.path IN $paths AND caller.qualified_name IS NOT NULL " - "AND (caller.path IS NULL OR NOT caller.path IN $paths) " - "RETURN head(labels(caller)) AS caller_label, " - "caller.qualified_name AS caller_qn, type(r) AS rel, " - "head(labels(target)) AS target_label, target.qualified_name AS target_qn" -) -# (H) Rehydrate class_inheritance on an incremental run: every INHERITS edge -# (H) (child -> base) with resolved qns, so protocol dispatch and inherited-method -# (H) resolution still see the hierarchy of classes defined in files that were not -# (H) re-parsed. Without it, editing a caller drops the protocol/inheritance -# (H) redirect (issue #532 residual): a call resolves to the Protocol stub instead -# (H) of the concrete implementer because _protocol_classes() is empty. Ordered by -# (H) base_index so multiple-inheritance base order matches the original source, -# (H) which method resolution and override attribution depend on. -CYPHER_ALL_INHERITS = ( - "MATCH (child)-[r:INHERITS]->(base) " - "WHERE child.qualified_name IS NOT NULL AND base.qualified_name IS NOT NULL " - "RETURN child.qualified_name AS child_qn, base.qualified_name AS base_qn, " - "r.base_index AS base_index " - "ORDER BY child_qn, base_index" -) -KEY_CHILD_QN = "child_qn" -KEY_BASE_QN = "base_qn" -KEY_BASE_INDEX = "base_index" - -CYPHER_PARAM_PATHS = "paths" -KEY_CALLER_LABEL = "caller_label" -KEY_CALLER_QN = "caller_qn" -KEY_REL = "rel" -KEY_TARGET_LABEL = "target_label" -KEY_TARGET_QN = "target_qn" - -REALTIME_LOGGER_FORMAT = ( - "{time:YYYY-MM-DD HH:mm:ss.SSS} | " - "{level: <8} | " - "{name}:{function}:{line} - " - "{message}" -) - -WATCHER_SLEEP_INTERVAL = 1 -LOG_LEVEL_INFO = "INFO" -LOG_LEVEL_ERROR = "ERROR" - -# (H) Debounce settings for realtime watcher -DEFAULT_DEBOUNCE_SECONDS = 5 -DEFAULT_MAX_WAIT_SECONDS = 30 - - class Architecture(StrEnum): X86_64 = "x86_64" AARCH64 = "aarch64" @@ -1427,242 +360,13 @@ class UniXcoderMode(StrEnum): UNIXCODER_BUFFER_BIAS = "bias" UNIXCODER_MAX_CONTEXT = 1024 -REL_TYPE_CALLS = "CALLS" - -NODE_UNIQUE_CONSTRAINTS: dict[str, str] = { - label.value: key.value for label, key in _NODE_LABEL_UNIQUE_KEYS.items() -} - -# (H) Cypher response cleaning -CYPHER_PREFIX = "cypher" -CYPHER_SEMICOLON = ";" -CYPHER_BACKTICK = "`" -CYPHER_MATCH_KEYWORD = "MATCH" -CYPHER_DANGEROUS_KEYWORDS: frozenset[str] = frozenset( - { - "DELETE", - "DETACH", - "DROP", - "CREATE INDEX", - "CREATE CONSTRAINT", - "REMOVE", - "SET", - "MERGE", - "CREATE", - "LOAD CSV", - "FOREACH", - } -) - -CYPHER_ALLOWED_PROCEDURE_PREFIXES: frozenset[str] = frozenset( - { - "algo.", - "betweenness_centrality.", - "biconnected_components.", - "bridges.", - "community_detection.", - "cycles.", - "degree_centrality.", - "graph_analyzer.", - "graph_util.", - "igraphalg.", - "katz_centrality.", - "leiden_community_detection.", - "neighbors.", - "node_similarity.", - "nxalg.", - "pagerank.", - "path.", - "schema.", - "weakly_connected_components.", - "wcc.", - } -) - -# (H) Tool success messages -MSG_SURGICAL_SUCCESS = "Successfully applied surgical code replacement in: {path}" -MSG_SURGICAL_FAILED = ( - "Failed to apply surgical replacement in {path}. " - "Target code not found or patches failed." -) - -# (H) Grep suggestion -GREP_SUGGESTION = " Use 'rg' instead of 'grep' for text searching." - -# (H) Shell command constants -SHELL_CMD_GREP = "grep" -SHELL_CMD_GIT = "git" -SHELL_CMD_RM = "rm" -SHELL_RM_RF_FLAG = "-rf" -SHELL_RETURN_CODE_ERROR = -1 -SHELL_PIPE_OPERATORS = ("|", "&&", "||", ";") -SHELL_SUBSHELL_PATTERNS = ("$(", "`") -SHELL_REDIRECT_OPERATORS = frozenset({">", ">>", "<", "<<"}) - -# (H) Dangerous commands - absolutely blocked -SHELL_DANGEROUS_COMMANDS = frozenset( - { - "dd", - "mkfs", - "mkfs.ext4", - "mkfs.ext3", - "mkfs.xfs", - "mkfs.btrfs", - "mkfs.vfat", - "fdisk", - "parted", - "shred", - "wipefs", - "mkswap", - "swapon", - "swapoff", - "mount", - "umount", - "insmod", - "rmmod", - "modprobe", - "shutdown", - "reboot", - "halt", - "poweroff", - "init", - "telinit", - "systemctl", - "service", - "chroot", - "nohup", - "disown", - "crontab", - "at", - "batch", - } -) - -# (H) Dangerous rm flags -SHELL_RM_DANGEROUS_FLAGS = frozenset({"-rf", "-fr"}) -SHELL_RM_FORCE_FLAG = "-f" - -# (H) System directories to protect from rm -rf -SHELL_SYSTEM_DIRECTORIES = frozenset( - { - "bin", - "boot", - "dev", - "etc", - "home", - "lib", - "lib64", - "media", - "mnt", - "opt", - "proc", - "root", - "run", - "sbin", - "srv", - "sys", - "tmp", - "usr", - "var", - } -) - -# (H) Dangerous patterns for full pipeline (cross-segment patterns with pipes/operators) -SHELL_DANGEROUS_PATTERNS_PIPELINE = ( - (r"(wget|curl)\s+.*\|\s*(sh|bash|zsh|ksh)", "remote script execution"), - (r"(wget|curl)\s+.*>\s*.*\.sh\s*&&", "download and execute script"), - (r"base64\s+-d.*\|", "base64 decode pipe execution"), -) - -# (H) Build system directory regex pattern dynamically -_SYSTEM_DIRS_PATTERN = "|".join(SHELL_SYSTEM_DIRECTORIES) - -# (H) Dangerous patterns for individual segments (per-command patterns) -SHELL_DANGEROUS_PATTERNS_SEGMENT = ( - (r"rm\s+.*-[rf]+\s+/($|\s)", "rm with root path"), - (rf"rm\s+.*-[rf]+\s+/({_SYSTEM_DIRS_PATTERN})($|/|\s)", "rm with system directory"), - (r"rm\s+.*-[rf]+\s+~($|\s)", "rm with home directory"), - (r"rm\s+.*-[rf]+\s+\*", "rm with wildcard"), - (r"rm\s+.*-[rf]+\s+\.\.", "rm with parent directory"), - (r"dd\s+.*of=/dev/", "dd writing to device"), - (r">\s*/dev/sd[a-z]", "redirect to disk device"), - (r">\s*/dev/nvme", "redirect to nvme device"), - (r">\s*/dev/null.*<", "null device manipulation"), - (r"chmod\s+.*-R\s+777\s+/", "recursive 777 on root"), - (r"chmod\s+.*777\s+/($|\s)", "777 on root"), - (r"chown\s+.*-R\s+.*\s+/($|\s)", "recursive chown on root"), - (r":\(\)\s*\{.*:\s*\|", "fork bomb pattern"), - (r"mv\s+.*\s+/dev/null", "move to /dev/null"), - (r"ln\s+-[sf]+\s+/dev/null", "symlink to /dev/null"), - (r"cat\s+.*/dev/zero", "cat /dev/zero"), - (r"cat\s+.*/dev/random", "cat /dev/random"), - (r">\s*/etc/passwd", "overwrite passwd"), - (r">\s*/etc/shadow", "overwrite shadow"), - (r">\s*/etc/sudoers", "overwrite sudoers"), - (r"echo\s+.*>\s*/etc/", "write to /etc"), - ( - r"python.*-c.*(import\s+os|__import__\s*\(\s*['\"]os['\"]\s*\))", - "python os import in command", - ), - (r"perl\s+-e", "perl one-liner"), - (r"ruby\s+-e", "ruby one-liner"), - (r"nc\s+-[el]", "netcat listener"), - (r"ncat\s+-[el]", "ncat listener"), - (r"/dev/tcp/", "bash tcp device"), - (r"eval\s+", "eval command"), - (r"exec\s+[0-9]+<>", "exec file descriptor manipulation"), - (r"awk\s+.*system\s*\(", "awk system() call"), - (r"awk\s+.*getline\s*[<|]", "awk getline file/pipe execution"), - (r"sed\s+.*s(.).*?\1.*?\1[gip]*e[gip]*", "sed execute flag"), - (r"xargs\s+.*(rm|chmod|chown|mv|dd|mkfs)", "xargs with destructive command"), - (r"xargs\s+-I.*sh", "xargs shell execution"), - (r"xargs\s+.*bash", "xargs bash execution"), -) - -# (H) Query tool messages -QUERY_NOT_AVAILABLE = "N/A" DICT_KEY_RESULTS = "results" TIKTOKEN_ENCODING = "cl100k_base" -QUERY_SUMMARY_SUCCESS = "Successfully retrieved {count} item(s) from the graph." -QUERY_SUMMARY_TRUNCATED = ( - "Results truncated: showing {kept} of {total} items (~{tokens} tokens, limit {max_tokens}). " - "Refine your query for more specific results." -) -QUERY_SUMMARY_TRANSLATION_FAILED = ( - "I couldn't translate your request into a database query. Error: {error}" -) -QUERY_SUMMARY_DB_ERROR = "There was an error querying the database: {error}" -QUERY_SUMMARY_TIMEOUT = ( - "Query exceeded the {timeout:.1f}s timeout and was cancelled. " - "Avoid unbounded traversals; add depth bounds or use a graph-algorithm procedure." -) -QUERY_RESULTS_PANEL_TITLE = "[bold blue]Cypher Query Results[/bold blue]" -CYPHER_MEMORY_LIMIT_SUFFIX = " QUERY MEMORY LIMIT {mb} MB" -CYPHER_MEMORY_LIMIT_TOKEN = "QUERY MEMORY LIMIT" # (H) File editor constants TMP_EXTENSION = ".tmp" - -# (H) Semantic search constants -MSG_SEMANTIC_NO_RESULTS = ( - "No semantic matches found for query: '{query}'. This could mean:\n" - "1. No functions match this description\n" - "2. Semantic search dependencies are not installed\n" - "3. No embeddings have been generated yet" -) -MSG_SEMANTIC_SOURCE_UNAVAILABLE = ( - "Could not retrieve source code for node ID {id}. " - "The node may not exist or source file may be unavailable." -) -MSG_SEMANTIC_SOURCE_FORMAT = "Source code for node ID {id}:\n\n```\n{code}\n```" -MSG_SEMANTIC_RESULT_HEADER = "Found {count} semantic matches for '{query}':\n\n" -MSG_SEMANTIC_RESULT_FOOTER = "\n\nUse the qualified names above with other tools to get more details or source code." SEMANTIC_BATCH_SIZE = 100 SEMANTIC_TYPE_UNKNOWN = "Unknown" - -# (H) Document analyzer constants -MSG_DOC_NO_CANDIDATES = "No valid text found in response candidates." -MSG_DOC_NO_CONTENT = "No text content received from the API." MIME_TYPE_DEFAULT = "application/octet-stream" DOC_PROMPT_PREFIX = ( "Based on the document provided, please answer the following question: {question}" @@ -1807,12 +511,6 @@ class UniXcoderMode(StrEnum): LANG_GIT_MODULES_PATH = ".git/modules/{path}" LANG_DEFAULT_GRAMMAR_URL = "https://github.com/tree-sitter/tree-sitter-{name}" LANG_TREE_SITTER_URL_MARKER = "github.com/tree-sitter/tree-sitter" - -# (H) Language CLI default node types -LANG_DEFAULT_FUNCTION_NODES = ("function_definition", "method_definition") -LANG_DEFAULT_CLASS_NODES = ("class_declaration",) -LANG_DEFAULT_MODULE_NODES = ("compilation_unit",) -LANG_DEFAULT_CALL_NODES = ("invocation_expression",) LANG_FALLBACK_METHOD_NODE = "method_declaration" # (H) Language CLI node type detection keywords @@ -1929,9 +627,6 @@ class UniXcoderMode(StrEnum): # (H) Language CLI prompts LANG_PROMPT_LANGUAGE_NAME = "Language name (e.g., 'c-sharp', 'python')" LANG_PROMPT_COMMON_NAME = "What is the common name for this language?" -LANG_PROMPT_EXTENSIONS = ( - "What file extensions should be associated with this language? (comma-separated)" -) LANG_PROMPT_FUNCTIONS = "Select nodes representing FUNCTIONS (comma-separated)" LANG_PROMPT_CLASSES = "Select nodes representing CLASSES (comma-separated)" LANG_PROMPT_MODULES = "Select nodes representing MODULES (comma-separated)" @@ -1948,13 +643,10 @@ class UniXcoderMode(StrEnum): # (H) Language CLI table configuration LANG_TABLE_TITLE = "Configured Languages" LANG_TABLE_COL_LANGUAGE = "Language" -LANG_TABLE_COL_EXTENSIONS = "Extensions" LANG_TABLE_COL_FUNCTION_TYPES = "Function Types" LANG_TABLE_COL_CLASS_TYPES = "Class Types" LANG_TABLE_COL_CALL_TYPES = "Call Types" LANG_TABLE_PLACEHOLDER = "—" - -LANG_MSG_AVAILABLE_NODES = "Available nodes for mapping:" LANG_ELLIPSIS = "..." LANG_GIT_SUFFIX = ".git" LANG_GITMODULES_FILE = ".gitmodules" @@ -2002,7 +694,6 @@ class CppNodeType(StrEnum): TYPE_DESCRIPTOR = "type_descriptor" -CPP_MODULE_EXTENSIONS = (".ixx", ".cppm", ".ccm", ".mxx") CPP_MODULE_PATH_MARKERS = frozenset({"interfaces", "modules"}) # (H) C++ module declaration prefixes @@ -2269,7 +960,6 @@ class CppNodeType(StrEnum): TS_GO_CONTAINER_TYPES: frozenset[str] = frozenset( {"slice_type", "array_type", "map_type", "channel_type", "function_type"} ) -FIELD_OPERAND = "operand" # (H) Tree-sitter Scala node types TS_SCALA_CLASS_DEFINITION = "class_definition" @@ -2392,8 +1082,6 @@ class CppNodeType(StrEnum): TS_PARENTHESIZED_EXPRESSION = "parenthesized_expression" TS_ATTRIBUTE = "attribute" -FIELD_OPERATOR = "operator" - # (H) Derived node type tuples for class ingestion CPP_CLASS_TYPES = (CppNodeType.CLASS_SPECIFIER, TS_STRUCT_SPECIFIER) CPP_COMPOUND_TYPES = (*CPP_CLASS_TYPES, TS_UNION_SPECIFIER, TS_ENUM_SPECIFIER) @@ -2602,11 +1290,6 @@ class CppNodeType(StrEnum): TS_FIELD_LEFT = "left" TS_FIELD_RIGHT = "right" -QUERY_CAPTURE_CLASS = "class" -QUERY_CAPTURE_FUNCTION = "function" -QUERY_KEY_CLASSES = "classes" -QUERY_KEY_FUNCTIONS = "functions" - # (H) Java type inference keywords JAVA_KEYWORD_THIS = "this" JAVA_KEYWORD_SUPER = "super" @@ -2908,17 +1591,6 @@ class CppNodeType(StrEnum): JS_OBJECT_NAME = "Object" JS_CREATE_METHOD = "create" -# (H) JS/TS ingest query capture names -CAPTURE_CHILD_CLASS = "child_class" -CAPTURE_PARENT_CLASS = "parent_class" -CAPTURE_CONSTRUCTOR_NAME = "constructor_name" -CAPTURE_PROTOTYPE_KEYWORD = "prototype_keyword" -CAPTURE_METHOD_NAME = "method_name" -CAPTURE_METHOD_FUNCTION = "method_function" -CAPTURE_MEMBER_EXPR = "member_expr" -CAPTURE_FUNCTION_EXPR = "function_expr" -CAPTURE_ARROW_FUNCTION = "arrow_function" - # (H) JS prototype inheritance query JS_PROTOTYPE_INHERITANCE_QUERY = """ (assignment_expression @@ -2989,10 +1661,6 @@ class CppNodeType(StrEnum): TS_FUNCTION_DECLARATION = "function_declaration" TS_GENERATOR_FUNCTION_DECLARATION = "generator_function_declaration" -# (H) Tree-sitter field names for module system -FIELD_FUNCTION = "function" -FIELD_KEY = "key" - # (H) JS/TS module system keywords JS_REQUIRE_KEYWORD = "require" JS_EXPORTS_KEYWORD = "exports" @@ -3051,15 +1719,6 @@ class CppNodeType(StrEnum): [(function_declaration) (generator_function_declaration)] @export_function) """ -# (H) Query capture names for module system -CAPTURE_FUNC = "func" -CAPTURE_VARIABLE_DECLARATOR = "variable_declarator" -CAPTURE_EXPORTS_OBJ = "exports_obj" -CAPTURE_MODULE_OBJ = "module_obj" -CAPTURE_EXPORTS_PROP = "exports_prop" -CAPTURE_EXPORT_NAME = "export_name" -CAPTURE_EXPORT_FUNCTION = "export_function" - # (H) Tree-sitter Rust node types TS_RS_SCOPED_TYPE_IDENTIFIER = "scoped_type_identifier" TS_RS_PRIMITIVE_TYPE = "primitive_type" @@ -3690,6 +2349,3 @@ class MCPParamName(StrEnum): ("ripgrep", "rg"), ("cmake", "cmake"), ] - -SHELL_CMD_WHERE = "where" -SHELL_CMD_WHICH = "which" diff --git a/codebase_rag/constants/graph.py b/codebase_rag/constants/graph.py new file mode 100644 index 000000000..af1191b6a --- /dev/null +++ b/codebase_rag/constants/graph.py @@ -0,0 +1,287 @@ +from enum import StrEnum + +from .core import _CYPHER_EMBEDDING_BASE + +KEY_RELATIONSHIPS = "relationships" +KEY_NODE_ID = "node_id" +KEY_LABELS = "labels" +KEY_LABEL = "label" +KEY_PROPERTIES = "properties" +KEY_FROM_ID = "from_id" +KEY_TO_ID = "to_id" +KEY_TYPE = "type" +KEY_METADATA = "metadata" +KEY_TOTAL_RELATIONSHIPS = "total_relationships" +KEY_NODE_LABELS = "node_labels" +KEY_RELATIONSHIP_TYPES = "relationship_types" +KEY_EXPORTED_AT = "exported_at" +KEY_PARSER = "parser" +KEY_NAME = "name" +KEY_QUALIFIED_NAME = "qualified_name" +KEY_IS_PROPERTY = "is_property" +KEY_QUERY = "query" +KEY_RESPONSE = "response" +KEY_START_LINE = "start_line" +KEY_END_LINE = "end_line" +KEY_PATH = "path" +KEY_ABSOLUTE_PATH = "absolute_path" +KEY_EXTENSION = "extension" +KEY_MODULE_TYPE = "module_type" +KEY_IMPLEMENTS_MODULE = "implements_module" +KEY_PROPS = "props" +KEY_CREATED = "created" +KEY_FROM_VAL = "from_val" +KEY_TO_VAL = "to_val" +KEY_VERSION_SPEC = "version_spec" +KEY_PREFIX = "prefix" +KEY_PROJECT_NAME = "project_name" + +# (H) Protobuf oneof field names +ONEOF_PROJECT = "project" +ONEOF_PACKAGE = "package" +ONEOF_FOLDER = "folder" +ONEOF_MODULE = "module" +ONEOF_CLASS = "class_node" +ONEOF_FUNCTION = "function" +ONEOF_METHOD = "method" +ONEOF_FILE = "file" +ONEOF_EXTERNAL_PACKAGE = "external_package" +ONEOF_EXTERNAL_MODULE = "external_module" +ONEOF_MODULE_IMPLEMENTATION = "module_implementation" +ONEOF_MODULE_INTERFACE = "module_interface" +ONEOF_INTERFACE = "interface_node" +ONEOF_ENUM = "enum_node" +ONEOF_TYPE = "type_node" +ONEOF_UNION = "union_node" + +# (H) Trie internal keys +TRIE_TYPE_KEY = "__type__" +TRIE_QN_KEY = "__qn__" +TRIE_INTERNAL_PREFIX = "__" + + +class UniqueKeyType(StrEnum): + NAME = KEY_NAME + PATH = KEY_PATH + QUALIFIED_NAME = KEY_QUALIFIED_NAME + + +class NodeLabel(StrEnum): + PROJECT = "Project" + PACKAGE = "Package" + FOLDER = "Folder" + FILE = "File" + MODULE = "Module" + CLASS = "Class" + FUNCTION = "Function" + METHOD = "Method" + INTERFACE = "Interface" + ENUM = "Enum" + TYPE = "Type" + UNION = "Union" + MODULE_INTERFACE = "ModuleInterface" + MODULE_IMPLEMENTATION = "ModuleImplementation" + EXTERNAL_PACKAGE = "ExternalPackage" + EXTERNAL_MODULE = "ExternalModule" + + +_NODE_LABEL_UNIQUE_KEYS: dict[NodeLabel, UniqueKeyType] = { + NodeLabel.PROJECT: UniqueKeyType.NAME, + NodeLabel.PACKAGE: UniqueKeyType.QUALIFIED_NAME, + NodeLabel.FOLDER: UniqueKeyType.PATH, + NodeLabel.FILE: UniqueKeyType.PATH, + NodeLabel.MODULE: UniqueKeyType.QUALIFIED_NAME, + NodeLabel.CLASS: UniqueKeyType.QUALIFIED_NAME, + NodeLabel.FUNCTION: UniqueKeyType.QUALIFIED_NAME, + NodeLabel.METHOD: UniqueKeyType.QUALIFIED_NAME, + NodeLabel.INTERFACE: UniqueKeyType.QUALIFIED_NAME, + NodeLabel.ENUM: UniqueKeyType.QUALIFIED_NAME, + NodeLabel.TYPE: UniqueKeyType.QUALIFIED_NAME, + NodeLabel.UNION: UniqueKeyType.QUALIFIED_NAME, + NodeLabel.MODULE_INTERFACE: UniqueKeyType.QUALIFIED_NAME, + NodeLabel.MODULE_IMPLEMENTATION: UniqueKeyType.QUALIFIED_NAME, + NodeLabel.EXTERNAL_PACKAGE: UniqueKeyType.NAME, + NodeLabel.EXTERNAL_MODULE: UniqueKeyType.QUALIFIED_NAME, +} + +_missing_keys = set(NodeLabel) - set(_NODE_LABEL_UNIQUE_KEYS.keys()) +if _missing_keys: + raise RuntimeError( + f"NodeLabel(s) missing from _NODE_LABEL_UNIQUE_KEYS: {_missing_keys}. " + "Every NodeLabel MUST have a unique key defined." + ) + + +class RelationshipType(StrEnum): + CONTAINS_PACKAGE = "CONTAINS_PACKAGE" + CONTAINS_FOLDER = "CONTAINS_FOLDER" + CONTAINS_FILE = "CONTAINS_FILE" + CONTAINS_MODULE = "CONTAINS_MODULE" + DEFINES = "DEFINES" + DEFINES_METHOD = "DEFINES_METHOD" + IMPORTS = "IMPORTS" + EXPORTS = "EXPORTS" + EXPORTS_MODULE = "EXPORTS_MODULE" + IMPLEMENTS_MODULE = "IMPLEMENTS_MODULE" + INHERITS = "INHERITS" + IMPLEMENTS = "IMPLEMENTS" + OVERRIDES = "OVERRIDES" + CALLS = "CALLS" + REFERENCES = "REFERENCES" + INSTANTIATES = "INSTANTIATES" + DEPENDS_ON_EXTERNAL = "DEPENDS_ON_EXTERNAL" + + +NODE_PROJECT = NodeLabel.PROJECT + +# (H) Property keys +KEY_PARAMETERS = "parameters" +KEY_DECORATORS = "decorators" +KEY_DOCSTRING = "docstring" +KEY_IS_EXPORTED = "is_exported" + +# (H) Cypher queries +CYPHER_DEFAULT_LIMIT = 50 + +CYPHER_QUERY_EMBEDDINGS = ( + _CYPHER_EMBEDDING_BASE + + """RETURN id(n) AS node_id, n.qualified_name AS qualified_name, + n.start_line AS start_line, n.end_line AS end_line, + m.path AS path +""" +) + +CYPHER_QUERY_PROJECT_NODE_IDS = _CYPHER_EMBEDDING_BASE + "RETURN id(n) AS node_id\n" + +PAYLOAD_NODE_ID = "node_id" +PAYLOAD_QUALIFIED_NAME = "qualified_name" + + +CYPHER_DELETE_MODULE = ( + "MATCH (m:Module {path: $path}) " + "OPTIONAL MATCH (m)-[:DEFINES|DEFINES_METHOD*0..]->(c) " + "DETACH DELETE m, c" +) +CYPHER_DELETE_FILE = "MATCH (f:File {path: $path}) DETACH DELETE f" +CYPHER_DELETE_FOLDER = "MATCH (f:Folder {path: $path}) DETACH DELETE f" +CYPHER_DELETE_CALLS = "MATCH ()-[r:CALLS]->() DELETE r" +# (H) Removes external import-target Module nodes that no module imports anymore +# (H) (e.g. an imported name that was renamed/removed on an incremental rebuild). +CYPHER_DELETE_ORPHAN_EXTERNAL_MODULES = ( + "MATCH (m:ExternalModule) WHERE NOT (m)<--() DETACH DELETE m" +) + +# (H) Queries for orphan pruning — returns all paths stored in the graph +CYPHER_ALL_FILE_PATHS = ( + "MATCH (f:File) RETURN f.path AS path, f.absolute_path AS absolute_path" +) +CYPHER_ALL_MODULE_PATHS_INTERNAL = ( + "MATCH (m:Module) RETURN m.path AS path, m.qualified_name AS qualified_name" +) +CYPHER_ALL_FOLDER_PATHS = ( + "MATCH (f:Folder) RETURN f.path AS path, f.absolute_path AS absolute_path" +) + +# (H) Rehydrate the in-memory function registry on an incremental run: returns +# (H) every definition node's qualified name and label so call/instantiation +# (H) resolution can see symbols defined in files that were not re-parsed. +CYPHER_ALL_DEFINITION_QNS = ( + "MATCH (n) WHERE n:Function OR n:Method OR n:Class OR n:Interface " + "OR n:Enum OR n:Type OR n:Union " + "RETURN n.qualified_name AS qualified_name, head(labels(n)) AS label, " + "n.is_property AS is_property" +) + +# (H) Inbound reference edges (from unchanged files) into symbols defined in one +# (H) of $paths. Captured BEFORE a changed file's subtree is deleted so the exact +# (H) edges can be restored verbatim afterwards (issue #532, inbound half). +# (H) Re-resolving the callers instead would diverge from a clean index, because +# (H) cgr's call resolution is context-sensitive (protocol vs concrete receiver, +# (H) import granularity); the original edges already match a clean re-index. +CYPHER_INBOUND_EDGES = ( + "MATCH (caller)-[r:CALLS|REFERENCES|INSTANTIATES|IMPORTS|INHERITS|OVERRIDES]->(target) " + "WHERE target.path IN $paths AND caller.qualified_name IS NOT NULL " + "AND (caller.path IS NULL OR NOT caller.path IN $paths) " + "RETURN head(labels(caller)) AS caller_label, " + "caller.qualified_name AS caller_qn, type(r) AS rel, " + "head(labels(target)) AS target_label, target.qualified_name AS target_qn" +) +# (H) Rehydrate class_inheritance on an incremental run: every INHERITS edge +# (H) (child -> base) with resolved qns, so protocol dispatch and inherited-method +# (H) resolution still see the hierarchy of classes defined in files that were not +# (H) re-parsed. Without it, editing a caller drops the protocol/inheritance +# (H) redirect (issue #532 residual): a call resolves to the Protocol stub instead +# (H) of the concrete implementer because _protocol_classes() is empty. Ordered by +# (H) base_index so multiple-inheritance base order matches the original source, +# (H) which method resolution and override attribution depend on. +CYPHER_ALL_INHERITS = ( + "MATCH (child)-[r:INHERITS]->(base) " + "WHERE child.qualified_name IS NOT NULL AND base.qualified_name IS NOT NULL " + "RETURN child.qualified_name AS child_qn, base.qualified_name AS base_qn, " + "r.base_index AS base_index " + "ORDER BY child_qn, base_index" +) +KEY_CHILD_QN = "child_qn" +KEY_BASE_QN = "base_qn" +KEY_BASE_INDEX = "base_index" + +CYPHER_PARAM_PATHS = "paths" +KEY_CALLER_LABEL = "caller_label" +KEY_CALLER_QN = "caller_qn" +KEY_REL = "rel" +KEY_TARGET_LABEL = "target_label" +KEY_TARGET_QN = "target_qn" + +REL_TYPE_CALLS = "CALLS" + +NODE_UNIQUE_CONSTRAINTS: dict[str, str] = { + label.value: key.value for label, key in _NODE_LABEL_UNIQUE_KEYS.items() +} + +# (H) Cypher response cleaning +CYPHER_PREFIX = "cypher" +CYPHER_SEMICOLON = ";" +CYPHER_BACKTICK = "`" +CYPHER_MATCH_KEYWORD = "MATCH" +CYPHER_DANGEROUS_KEYWORDS: frozenset[str] = frozenset( + { + "DELETE", + "DETACH", + "DROP", + "CREATE INDEX", + "CREATE CONSTRAINT", + "REMOVE", + "SET", + "MERGE", + "CREATE", + "LOAD CSV", + "FOREACH", + } +) + +CYPHER_ALLOWED_PROCEDURE_PREFIXES: frozenset[str] = frozenset( + { + "algo.", + "betweenness_centrality.", + "biconnected_components.", + "bridges.", + "community_detection.", + "cycles.", + "degree_centrality.", + "graph_analyzer.", + "graph_util.", + "igraphalg.", + "katz_centrality.", + "leiden_community_detection.", + "neighbors.", + "node_similarity.", + "nxalg.", + "pagerank.", + "path.", + "schema.", + "weakly_connected_components.", + "wcc.", + } +) +CYPHER_MEMORY_LIMIT_SUFFIX = " QUERY MEMORY LIMIT {mb} MB" +CYPHER_MEMORY_LIMIT_TOKEN = "QUERY MEMORY LIMIT" diff --git a/codebase_rag/constants/languages.py b/codebase_rag/constants/languages.py new file mode 100644 index 000000000..74ecaf62d --- /dev/null +++ b/codebase_rag/constants/languages.py @@ -0,0 +1,181 @@ +from enum import StrEnum +from typing import NamedTuple + +BINARY_EXTENSIONS: frozenset[str] = frozenset( + { + ".pdf", + ".png", + ".jpg", + ".jpeg", + ".gif", + ".bmp", + ".ico", + ".tiff", + ".webp", + } +) + +# (H) Source file extensions by language +EXT_PY = ".py" +EXT_JS = ".js" +EXT_JSX = ".jsx" +EXT_TS = ".ts" +EXT_TSX = ".tsx" +EXT_RS = ".rs" +EXT_GO = ".go" +EXT_SCALA = ".scala" +EXT_SC = ".sc" +EXT_JAVA = ".java" +EXT_CLASS = ".class" +EXT_CPP = ".cpp" +EXT_H = ".h" +EXT_HPP = ".hpp" +EXT_CC = ".cc" +EXT_CXX = ".cxx" +EXT_HXX = ".hxx" +EXT_HH = ".hh" +EXT_IXX = ".ixx" +EXT_CPPM = ".cppm" +EXT_CCM = ".ccm" +EXT_C = ".c" +EXT_PHP = ".php" +EXT_LUA = ".lua" + +# (H) File extension tuples by language +PY_EXTENSIONS = (EXT_PY,) +JS_EXTENSIONS = (EXT_JS, EXT_JSX) +TS_EXTENSIONS = (EXT_TS,) +TSX_EXTENSIONS = (EXT_TSX,) +RS_EXTENSIONS = (EXT_RS,) +GO_EXTENSIONS = (EXT_GO,) +SCALA_EXTENSIONS = (EXT_SCALA, EXT_SC) +JAVA_EXTENSIONS = (EXT_JAVA,) +C_EXTENSIONS = (EXT_C,) +CPP_EXTENSIONS = ( + EXT_CPP, + EXT_H, + EXT_HPP, + EXT_CC, + EXT_CXX, + EXT_HXX, + EXT_HH, + EXT_IXX, + EXT_CPPM, + EXT_CCM, +) +PHP_EXTENSIONS = (EXT_PHP,) +LUA_EXTENSIONS = (EXT_LUA,) +# (H) Module file extensions stripped when turning a tsconfig `paths` target into a +# (H) module qn (`src/util.ts` -> `src/util`), longest first so `.d.ts`-like +# (H) compound suffixes are handled before the bare `.ts`. +JS_TS_MODULE_EXTENSIONS: tuple[str, ...] = ( + ".d.ts", + ".tsx", + ".ts", + ".jsx", + ".mjs", + ".cjs", + ".js", +) + + +class SupportedLanguage(StrEnum): + PYTHON = "python" + JS = "javascript" + TS = "typescript" + TSX = "tsx" + RUST = "rust" + GO = "go" + SCALA = "scala" + JAVA = "java" + C = "c" + CPP = "cpp" + PHP = "php" + LUA = "lua" + + +class LanguageStatus(StrEnum): + FULL = "Fully Supported" + DEV = "In Development" + + +class LanguageMetadata(NamedTuple): + status: LanguageStatus + additional_features: str + display_name: str + + +LANGUAGE_METADATA: dict[SupportedLanguage, LanguageMetadata] = { + SupportedLanguage.PYTHON: LanguageMetadata( + LanguageStatus.FULL, + "Type inference, decorators, nested functions", + "Python", + ), + SupportedLanguage.JS: LanguageMetadata( + LanguageStatus.FULL, + "ES6 modules, CommonJS, prototype methods, object methods, arrow functions", + "JavaScript", + ), + SupportedLanguage.TS: LanguageMetadata( + LanguageStatus.FULL, + "Interfaces, type aliases, enums, namespaces, ES6/CommonJS modules", + "TypeScript", + ), + SupportedLanguage.TSX: LanguageMetadata( + LanguageStatus.FULL, + "All TypeScript features plus JSX elements and components", + "TypeScript (TSX)", + ), + SupportedLanguage.C: LanguageMetadata( + LanguageStatus.FULL, + "Functions, structs, unions, enums, preprocessor includes", + "C", + ), + SupportedLanguage.CPP: LanguageMetadata( + LanguageStatus.FULL, + "Constructors, destructors, operator overloading, templates, lambdas, C++20 modules, namespaces", + "C++", + ), + SupportedLanguage.LUA: LanguageMetadata( + LanguageStatus.FULL, + "Local/global functions, metatables, closures, coroutines", + "Lua", + ), + SupportedLanguage.RUST: LanguageMetadata( + LanguageStatus.FULL, + "impl blocks, associated functions", + "Rust", + ), + SupportedLanguage.JAVA: LanguageMetadata( + LanguageStatus.FULL, + "Generics, annotations, modern features (records/sealed classes), concurrency, reflection", + "Java", + ), + SupportedLanguage.GO: LanguageMetadata( + LanguageStatus.DEV, + "Methods, type declarations", + "Go", + ), + SupportedLanguage.SCALA: LanguageMetadata( + LanguageStatus.DEV, + "Case classes, objects", + "Scala", + ), + SupportedLanguage.PHP: LanguageMetadata( + LanguageStatus.FULL, + "Classes, interfaces, traits, enums, namespaces, PHP 8 attributes", + "PHP", + ), +} + +# (H) Image file extensions for chat image handling +MULTIMODAL_EXTENSIONS = (".png", ".jpg", ".jpeg", ".gif", ".webp", ".pdf") +MIME_TYPE_PDF = "application/pdf" +MIME_TYPE_FALLBACK = "application/octet-stream" +LANG_PROMPT_EXTENSIONS = ( + "What file extensions should be associated with this language? (comma-separated)" +) +LANG_TABLE_COL_EXTENSIONS = "Extensions" + + +CPP_MODULE_EXTENSIONS = (".ixx", ".cppm", ".ccm", ".mxx") diff --git a/codebase_rag/constants/operators.py b/codebase_rag/constants/operators.py new file mode 100644 index 000000000..a0ecad023 --- /dev/null +++ b/codebase_rag/constants/operators.py @@ -0,0 +1,161 @@ +# (H) A C++ operator overload / user-defined literal is defined with the reserved +# (H) `operator` keyword heading the name (`operator==`, `operator[]`, `operator""_json`). +# (H) It is invoked by operator/literal syntax, not a named call, so it is a dead-code +# (H) reachability root; the keyword can only head such definitions, so this prefix on a +# (H) C++ file uniquely identifies them (member or free function). +CPP_OPERATOR_PREFIX = "operator" +# (H) JS/TS import specifier schemes that name genuinely external code (node +# (H) builtins, package registries, URLs). A specifier with any OTHER scheme +# (H) (`ext:` deno-runtime aliases, bundler virtual modules) points at first-party +# (H) code under a non-file-path name, so its unresolved calls defer to the trie. +JS_EXTERNAL_IMPORT_SCHEMES: frozenset[str] = frozenset( + {"node", "npm", "jsr", "bun", "http", "https", "data", "file", "blob"} +) +TSCONFIG_FILENAMES: tuple[str, ...] = ( + "tsconfig.json", + "tsconfig.base.json", + "jsconfig.json", +) +# (H) When searching subdirectories for tsconfig files (monorepo `frontend/`, +# (H) `packages/*`), skip dependency/build/VCS trees: their tsconfigs carry +# (H) unrelated aliases and there can be thousands of them under node_modules. +TS_ALIAS_SKIP_DIRS: frozenset[str] = frozenset( + {"node_modules", "dist", "build", "out", ".git"} +) +JS_INDEX_STEM = "index" +TS_COMPILER_OPTIONS_KEY = "compilerOptions" +TS_PATHS_KEY = "paths" +TS_BASE_URL_KEY = "baseUrl" +PATH_RELATIVE_PREFIX = "./" +PATH_PARENT_PREFIX = "../" +CPP_IMPORT_PARTITION_PREFIX = "import :" +CPP_PARTITION_PREFIX = "partition_" + + +# (H) Decorators whose presence marks a function/method as an implicit entry point +# (H) (web routes, task/flow handlers, fixtures, CLI commands, event listeners, and +# (H) Pydantic validators/serializers the framework invokes by registration). +DEFAULT_ROOT_DECORATORS: frozenset[str] = frozenset( + { + "route", + "get", + "post", + "callback", + "put", + "delete", + "patch", + "websocket", + "task", + "flow", + "fixture", + "command", + "cli", + "app", + "on_event", + "listener", + "validator", + "field_validator", + "model_validator", + "root_validator", + "field_serializer", + "model_serializer", + "computed_field", + "abstractmethod", + } +) + +# (H) Go functions the runtime invokes with no explicit call site: `func init()` +# (H) runs at package load (any number per package), `func main()` is the program +# (H) entry. Both are reachability roots (like Python dunders), gated by the .go +# (H) extension so same-named symbols in other languages are unaffected. +GO_ROOT_FUNCTION_NAMES: frozenset[str] = frozenset({"init", "main"}) + +# (H) Rust `fn main()` is the binary entry point, invoked by the runtime with no +# (H) call site -- a reachability root (gated by .rs). +RUST_ROOT_FUNCTION_NAMES: frozenset[str] = frozenset({"main"}) + +# (H) Rust trait-impl methods the language/std dispatches implicitly (Display::fmt +# (H) via format!, PartialEq::eq via ==, Iterator::next via for, operator traits, +# (H) Drop::drop, serde, ...), never through an explicit call the graph can see. +# (H) Rooting them by name (gated by .rs) mirrors the Python-dunder exemption: these +# (H) names are conventionally reserved for trait impls, so a same-named user method +# (H) that is genuinely dead is under-reported rather than mis-reported. +RUST_TRAIT_METHOD_NAMES: frozenset[str] = frozenset( + { + "fmt", + "eq", + "ne", + "cmp", + "partial_cmp", + "hash", + "next", + "next_back", + "into_iter", + "size_hint", + "drop", + "clone", + "clone_from", + "default", + "from", + "from_str", + "try_from", + "into", + "try_into", + "deref", + "deref_mut", + "as_ref", + "as_mut", + "borrow", + "borrow_mut", + "poll", + "serialize", + "deserialize", + "source", + "add", + "add_assign", + "sub", + "sub_assign", + "mul", + "mul_assign", + "div", + "div_assign", + "rem", + "rem_assign", + "neg", + "not", + "bitand", + "bitand_assign", + "bitor", + "bitor_assign", + "bitxor", + "bitxor_assign", + "shl", + "shl_assign", + "shr", + "shr_assign", + "index", + "index_mut", + } +) + +# (H) Base classes that mark a class as a structural interface: its method stubs +# (H) are never call targets themselves (callers resolve to the implementations), +# (H) so dead-code analysis roots every method the class defines. +# (H) ponytail: direct bases only; transitive Protocol subclassing is not chased. +PROTOCOL_BASE_QNS: tuple[str, ...] = ("typing.Protocol", "typing_extensions.Protocol") + +# (H) Substrings in a node's file path that mark it as test code. Covers Python +# (H) (test_, _test, conftest, /tests/), the JS/TS filename convention +# (H) (foo.test.ts, foo.spec.tsx), and the Jest __tests__/ directory so those +# (H) files are not reported as dead. Singular /test/ and /spec/ directories are +# (H) intentionally excluded: they collide with product code (a domain "spec" +# (H) module), which would misclassify live code as test. +TEST_PATH_PATTERNS: tuple[str, ...] = ( + "test_", + "_test", + "conftest", + "/tests/", + ".test.", + ".spec.", + "__tests__", +)