mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-11-09 09:11:00 +08:00
Pipeline quality: - 17 import parsers (ES modules, Java, Kotlin, Scala, C#, C, C++, PHP, Ruby, Rust, Lua, Elixir, Bash, Zig, Erlang, Haskell, OCaml) - Language-aware isClassDeclaration() for TS, Java, C#, Scala, Kotlin, PHP - Route test filtering (isTestNode + containsTestSegment) - Haskell/OCaml/Elixir callee extraction for apply/infix/application nodes - JSX component refs via extractJSXComponentRefs() - Typed + dynamic type inference split - Extraction test coverage (1679 lines) Snippet tool optimization for AI coding agents: - Replace "error" key with "status"/"message" in disambiguation responses - Add auto_resolve param (opt-in, picks best from <=2 candidates) - Add include_neighbors param (opt-in, returns caller/callee names) - Fix fuzzy fallback to extract last dot-segment from qualified names - Add NodeNeighborNames store method for neighbor name lookups
26 lines
910 B
Go
26 lines
910 B
Go
package lang
|
|
|
|
func init() {
|
|
Register(&LanguageSpec{
|
|
Language: Elixir,
|
|
FileExtensions: []string{".ex", ".exs"},
|
|
// Elixir uses "call" for everything (homoiconic), but we only want
|
|
// definition forms (def, defp, defmacro) in FunctionNodeTypes.
|
|
// The pipeline has custom Elixir handling to classify call nodes.
|
|
FunctionNodeTypes: []string{
|
|
"call", // classified by pipeline: def/defp → Function, defmodule → Class
|
|
},
|
|
ClassNodeTypes: []string{}, // handled by custom extraction (defmodule)
|
|
ModuleNodeTypes: []string{"source"},
|
|
CallNodeTypes: []string{"call", "dot", "binary_operator"},
|
|
ImportNodeTypes: []string{"call"},
|
|
|
|
BranchingNodeTypes: []string{
|
|
"call", // if/cond/case are macro calls in Elixir
|
|
},
|
|
VariableNodeTypes: []string{"binary_operator"},
|
|
AssignmentNodeTypes: []string{"binary_operator"},
|
|
EnvAccessFunctions: []string{"System.get_env"},
|
|
})
|
|
}
|