diff options
| author | Paul Buetow <paul@buetow.org> | 2025-09-06 13:18:21 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-09-06 13:18:21 +0300 |
| commit | 5e966f50111adf6e2cb2683fe588f6fe033fa931 (patch) | |
| tree | 19ac2033483c2ac6147e8f44ac37f14e6a5c0cf7 | |
| parent | 80e61812986573464cd24c4b3ffa605c4003146a (diff) | |
fix unit test coverage
25 files changed, 14233 insertions, 4707 deletions
diff --git a/Magefile.go b/Magefile.go index 6acc882..dedb72c 100644 --- a/Magefile.go +++ b/Magefile.go @@ -17,16 +17,16 @@ import ( ) var ( - Default = Build // Default target: build both binaries. - coverageThreshold float64 = 85 - coveragePrinted = make(chan struct{}, 1) + Default = Build // Default target: build all binaries. + coverageThreshold float64 = 85 + coveragePrinted = make(chan struct{}, 1) ) // Build builds the Hexai LSP and CLI binaries. func Build() error { - mg.Deps(BuildHexaiLSP, BuildHexaiCLI) - printCoverage() - return nil + mg.Deps(BuildHexaiLSP, BuildHexaiCLI, BuildHexaiAction) + printCoverage() + return nil } // BuildHexaiLSP builds the LSP server binary. @@ -37,18 +37,27 @@ func BuildHexaiLSP() error { // BuildHexaiCLI builds the CLI binary. func BuildHexaiCLI() error { - printCoverage() - return sh.RunV("go", "build", "-o", "hexai", "cmd/hexai/main.go") + printCoverage() + return sh.RunV("go", "build", "-o", "hexai", "cmd/hexai/main.go") +} + +// BuildHexaiAction builds the hexai-action TUI binary. +func BuildHexaiAction() error { + printCoverage() + return sh.RunV("go", "build", "-o", "hexai-action", "cmd/internal/hexai-action/main.go") } // Dev runs tests, vet, lint, then builds with race for both binaries. func Dev() error { - printCoverage() - mg.Deps(Test, Vet, Lint) - if err := sh.RunV("go", "build", "-race", "-o", "hexai-lsp", "cmd/hexai-lsp/main.go"); err != nil { - return err - } - return sh.RunV("go", "build", "-race", "-o", "hexai", "cmd/hexai/main.go") + printCoverage() + mg.Deps(Test, Vet, Lint) + if err := sh.RunV("go", "build", "-race", "-o", "hexai-lsp", "cmd/hexai-lsp/main.go"); err != nil { + return err + } + if err := sh.RunV("go", "build", "-race", "-o", "hexai", "cmd/hexai/main.go"); err != nil { + return err + } + return sh.RunV("go", "build", "-race", "-o", "hexai-action", "cmd/internal/hexai-action/main.go") } // Run launches the LSP server via go run (useful during development). @@ -68,8 +77,8 @@ func RunCLI() error { // Install copies built binaries to GOPATH/bin (defaults to ~/go/bin when GOPATH is unset). func Install() error { - printCoverage() - mg.Deps(Build) + printCoverage() + mg.Deps(Build) gopath := os.Getenv("GOPATH") if gopath == "" { home, err := os.UserHomeDir() @@ -82,10 +91,20 @@ func Install() error { if err := os.MkdirAll(bin, 0o755); err != nil { return err } - if err := sh.RunV("cp", "-v", "./hexai-lsp", bin+"/"); err != nil { - return err - } - return sh.RunV("cp", "-v", "./hexai", bin+"/") + if err := sh.RunV("cp", "-v", "./hexai-lsp", bin+"/"); err != nil { + return err + } + if err := sh.RunV("cp", "-v", "./hexai", bin+"/"); err != nil { + return err + } + return sh.RunV("cp", "-v", "./hexai-action", bin+"/") +} + +// RunAction runs the hexai-action TUI via go run (reads stdin). +func RunAction() error { + printCoverage() + mg.Deps(Dev) + return sh.RunV("go", "run", "cmd/internal/hexai-action/main.go") } // printCoverage prints a warning if an existing coverage profile shows total < coverateThreshold. @@ -11,6 +11,7 @@ It has got improved capabilities for Go code understanding (for example, create * LSP Code actions * LSP in-editor chat with the LLM * Stand-alone command line tool for LLM interaction +* TUI code-action runner (`hexai-action`) with Bubble Tea * Support for OpenAI, GitHub Copilot, and Ollama ## Documentation @@ -24,7 +25,7 @@ It has got improved capabilities for Go code understanding (for example, create Hexai uses Mage for developer tasks. Install Mage, then run targets like build, dev, test, and install. - Install Mage: `go install github.com/magefile/mage@latest` -- Build binaries: `mage build` (produces `hexai` and `hexai-lsp`) +- Build binaries: `mage build` (produces `hexai`, `hexai-lsp`, and `hexai-action`) - Dev build (+ tests, vet, lint): `mage dev` - Run tests: `mage test` - Run tests with coverage: `go test ./... -cover` @@ -40,3 +41,58 @@ Either use the Mage method as mentioned above, or install directly with: - CLI: `go install codeberg.org/snonux/hexai/cmd/hexai@latest` - LSP: `go install codeberg.org/snonux/hexai/cmd/hexai-lsp@latest` + +For `hexai-action`, use Mage or a local build: + +- Build locally: `go build -o hexai-action cmd/internal/hexai-action/main.go` +- Or via Mage: `mage buildHexaiAction` (or `mage build`) +- Install: `mage install` (copies `hexai-action` to `GOPATH/bin` together with other binaries) + +## Hexai Action (TUI) + +`hexai-action` is a small TUI to run Hexai code actions from stdin. It loads the same `config.toml` as `hexai` and `hexai-lsp` (XDG path: `~/.config/hexai/config.toml`), and respects the same environment overrides. + +- Pipe code (and optionally diagnostics) into the tool. +- Select an action with arrow keys, vi keys (`j/k`, `g/G`), Enter, or hotkeys `[s] [r] [d] [c] [t]`. +- The tool prints the transformed text to stdout. + +Input formats + +- Rewrite: include an inline instruction near the top of the selection using one of: + - `;do something;` + - `/* do something */` + - `<!-- do something -->` + - `// do something` (or `#`, `--`) + +- Diagnostics (optional block): + - Begin with a header line `Diagnostics:` (case-insensitive), one diagnostic per line, blank line, then the code selection. + +Examples + +- Rewrite selection: + +``` +;replace fmt.Println with log.Println; +package main + +import "fmt" + +func main() { fmt.Println("hi") } +``` + +- Diagnostics + selection: + +``` +Diagnostics: +missing return at end of function +use of undefined: foo + +func f() int { + foo() +} +``` + +Run: + +- `cat input.go | ./hexai-action` +- or `./hexai-action < input.go` diff --git a/docs/coverage.html b/docs/coverage.html index d22ef74..6b80630 100644 --- a/docs/coverage.html +++ b/docs/coverage.html @@ -55,53 +55,69 @@ <div id="nav"> <select id="files"> - <option value="file0">codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go (0.0%)</option> + <option value="file0">codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go (75.0%)</option> - <option value="file1">codeberg.org/snonux/hexai/cmd/hexai/main.go (0.0%)</option> + <option value="file1">codeberg.org/snonux/hexai/cmd/hexai/main.go (71.4%)</option> - <option value="file2">codeberg.org/snonux/hexai/internal/appconfig/config.go (91.6%)</option> + <option value="file2">codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go (0.0%)</option> - <option value="file3">codeberg.org/snonux/hexai/internal/hexaicli/run.go (72.6%)</option> + <option value="file3">codeberg.org/snonux/hexai/internal/appconfig/config.go (91.6%)</option> - <option value="file4">codeberg.org/snonux/hexai/internal/hexailsp/run.go (92.5%)</option> + <option value="file4">codeberg.org/snonux/hexai/internal/hexaiaction/parse.go (92.6%)</option> - <option value="file5">codeberg.org/snonux/hexai/internal/llm/copilot.go (81.8%)</option> + <option value="file5">codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go (81.1%)</option> - <option value="file6">codeberg.org/snonux/hexai/internal/llm/ollama.go (88.0%)</option> + <option value="file6">codeberg.org/snonux/hexai/internal/hexaiaction/run.go (33.3%)</option> - <option value="file7">codeberg.org/snonux/hexai/internal/llm/openai.go (85.5%)</option> + <option value="file7">codeberg.org/snonux/hexai/internal/hexaiaction/tui.go (47.3%)</option> - <option value="file8">codeberg.org/snonux/hexai/internal/llm/provider.go (100.0%)</option> + <option value="file8">codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go (91.7%)</option> - <option value="file9">codeberg.org/snonux/hexai/internal/llm/util.go (100.0%)</option> + <option value="file9">codeberg.org/snonux/hexai/internal/hexaicli/run.go (78.8%)</option> - <option value="file10">codeberg.org/snonux/hexai/internal/logging/chatlogger.go (100.0%)</option> + <option value="file10">codeberg.org/snonux/hexai/internal/hexailsp/run.go (92.5%)</option> - <option value="file11">codeberg.org/snonux/hexai/internal/logging/logging.go (100.0%)</option> + <option value="file11">codeberg.org/snonux/hexai/internal/llm/copilot.go (82.4%)</option> - <option value="file12">codeberg.org/snonux/hexai/internal/lsp/context.go (74.4%)</option> + <option value="file12">codeberg.org/snonux/hexai/internal/llm/ollama.go (89.8%)</option> - <option value="file13">codeberg.org/snonux/hexai/internal/lsp/document.go (90.1%)</option> + <option value="file13">codeberg.org/snonux/hexai/internal/llm/openai.go (85.5%)</option> - <option value="file14">codeberg.org/snonux/hexai/internal/lsp/handlers.go (92.9%)</option> + <option value="file14">codeberg.org/snonux/hexai/internal/llm/provider.go (100.0%)</option> - <option value="file15">codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go (81.2%)</option> + <option value="file15">codeberg.org/snonux/hexai/internal/llm/util.go (100.0%)</option> - <option value="file16">codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go (87.6%)</option> + <option value="file16">codeberg.org/snonux/hexai/internal/llmutils/client.go (100.0%)</option> - <option value="file17">codeberg.org/snonux/hexai/internal/lsp/handlers_document.go (88.9%)</option> + <option value="file17">codeberg.org/snonux/hexai/internal/logging/chatlogger.go (100.0%)</option> - <option value="file18">codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go (75.0%)</option> + <option value="file18">codeberg.org/snonux/hexai/internal/logging/logging.go (90.9%)</option> - <option value="file19">codeberg.org/snonux/hexai/internal/lsp/handlers_init.go (55.6%)</option> + <option value="file19">codeberg.org/snonux/hexai/internal/lsp/context.go (74.4%)</option> - <option value="file20">codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go (88.5%)</option> + <option value="file20">codeberg.org/snonux/hexai/internal/lsp/document.go (90.1%)</option> - <option value="file21">codeberg.org/snonux/hexai/internal/lsp/server.go (82.1%)</option> + <option value="file21">codeberg.org/snonux/hexai/internal/lsp/handlers.go (92.9%)</option> - <option value="file22">codeberg.org/snonux/hexai/internal/lsp/transport.go (71.4%)</option> + <option value="file22">codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go (81.9%)</option> - <option value="file23">codeberg.org/snonux/hexai/internal/testutil/fixtures.go (60.0%)</option> + <option value="file23">codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go (87.6%)</option> + + <option value="file24">codeberg.org/snonux/hexai/internal/lsp/handlers_document.go (88.9%)</option> + + <option value="file25">codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go (75.0%)</option> + + <option value="file26">codeberg.org/snonux/hexai/internal/lsp/handlers_init.go (55.6%)</option> + + <option value="file27">codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go (89.0%)</option> + + <option value="file28">codeberg.org/snonux/hexai/internal/lsp/server.go (82.1%)</option> + + <option value="file29">codeberg.org/snonux/hexai/internal/lsp/transport.go (71.4%)</option> + + <option value="file30">codeberg.org/snonux/hexai/internal/testutil/fixtures.go (60.0%)</option> + + <option value="file31">codeberg.org/snonux/hexai/internal/textutil/textutil.go (89.0%)</option> </select> </div> @@ -136,11 +152,11 @@ import ( "codeberg.org/snonux/hexai/internal/hexailsp" ) -func main() <span class="cov0" title="0">{ +func main() <span class="cov8" title="1">{ logPath := flag.String("log", "/tmp/hexai-lsp.log", "path to log file (optional)") showVersion := flag.Bool("version", false, "print version and exit") flag.Parse() - if *showVersion </span><span class="cov0" title="0">{ + if *showVersion </span><span class="cov8" title="1">{ log.Println(internal.Version) return }</span> @@ -164,10 +180,10 @@ import ( "codeberg.org/snonux/hexai/internal/hexaicli" ) -func main() <span class="cov0" title="0">{ +func main() <span class="cov8" title="1">{ showVersion := flag.Bool("version", false, "print version and exit") flag.Parse() - if *showVersion </span><span class="cov0" title="0">{ + if *showVersion </span><span class="cov8" title="1">{ fmt.Fprintln(os.Stdout, internal.Version) return }</span> @@ -178,7 +194,25 @@ func main() <span class="cov0" title="0">{ } </pre> - <pre class="file" id="file2" style="display: none">// Summary: Application configuration model and loader; reads ~/.config/hexai/config.toml and merges defaults. + <pre class="file" id="file2" style="display: none">package main + +import ( + "context" + "fmt" + "os" + + "codeberg.org/snonux/hexai/internal/hexaiaction" +) + +func main() <span class="cov0" title="0">{ + if err := hexaiaction.Run(context.Background(), os.Stdin, os.Stdout, os.Stderr); err != nil </span><span class="cov0" title="0">{ + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + }</span> +} +</pre> + + <pre class="file" id="file3" style="display: none">// Summary: Application configuration model and loader; reads ~/.config/hexai/config.toml and merges defaults. package appconfig import ( @@ -234,43 +268,43 @@ type App struct { // Default temperature for Ollama requests (nil means use provider default) OllamaTemperature *float64 `json:"ollama_temperature" toml:"ollama_temperature"` CopilotBaseURL string `json:"copilot_base_url" toml:"copilot_base_url"` - CopilotModel string `json:"copilot_model" toml:"copilot_model"` - // Default temperature for Copilot requests (nil means use provider default) - CopilotTemperature *float64 `json:"copilot_temperature" toml:"copilot_temperature"` - - // Prompt templates (configured only via file; no env overrides) - // Completion/chat/code action/CLI prompt strings. See config.toml.example for placeholders. - // Completion - PromptCompletionSystemGeneral string `json:"-" toml:"-"` - PromptCompletionSystemParams string `json:"-" toml:"-"` - PromptCompletionSystemInline string `json:"-" toml:"-"` - PromptCompletionUserGeneral string `json:"-" toml:"-"` - PromptCompletionUserParams string `json:"-" toml:"-"` - PromptCompletionExtraHeader string `json:"-" toml:"-"` - // Provider-native code-completer - PromptNativeCompletion string `json:"-" toml:"-"` - // In-editor chat - PromptChatSystem string `json:"-" toml:"-"` - // Code actions - PromptCodeActionRewriteSystem string `json:"-" toml:"-"` - PromptCodeActionDiagnosticsSystem string `json:"-" toml:"-"` - PromptCodeActionDocumentSystem string `json:"-" toml:"-"` - PromptCodeActionRewriteUser string `json:"-" toml:"-"` - PromptCodeActionDiagnosticsUser string `json:"-" toml:"-"` - PromptCodeActionDocumentUser string `json:"-" toml:"-"` - PromptCodeActionGoTestSystem string `json:"-" toml:"-"` - PromptCodeActionGoTestUser string `json:"-" toml:"-"` - // CLI - PromptCLIDefaultSystem string `json:"-" toml:"-"` - PromptCLIExplainSystem string `json:"-" toml:"-"` + CopilotModel string `json:"copilot_model" toml:"copilot_model"` + // Default temperature for Copilot requests (nil means use provider default) + CopilotTemperature *float64 `json:"copilot_temperature" toml:"copilot_temperature"` + + // Prompt templates (configured only via file; no env overrides) + // Completion/chat/code action/CLI prompt strings. See config.toml.example for placeholders. + // Completion + PromptCompletionSystemGeneral string `json:"-" toml:"-"` + PromptCompletionSystemParams string `json:"-" toml:"-"` + PromptCompletionSystemInline string `json:"-" toml:"-"` + PromptCompletionUserGeneral string `json:"-" toml:"-"` + PromptCompletionUserParams string `json:"-" toml:"-"` + PromptCompletionExtraHeader string `json:"-" toml:"-"` + // Provider-native code-completer + PromptNativeCompletion string `json:"-" toml:"-"` + // In-editor chat + PromptChatSystem string `json:"-" toml:"-"` + // Code actions + PromptCodeActionRewriteSystem string `json:"-" toml:"-"` + PromptCodeActionDiagnosticsSystem string `json:"-" toml:"-"` + PromptCodeActionDocumentSystem string `json:"-" toml:"-"` + PromptCodeActionRewriteUser string `json:"-" toml:"-"` + PromptCodeActionDiagnosticsUser string `json:"-" toml:"-"` + PromptCodeActionDocumentUser string `json:"-" toml:"-"` + PromptCodeActionGoTestSystem string `json:"-" toml:"-"` + PromptCodeActionGoTestUser string `json:"-" toml:"-"` + // CLI + PromptCLIDefaultSystem string `json:"-" toml:"-"` + PromptCLIExplainSystem string `json:"-" toml:"-"` } // Constructor: defaults for App (kept first among functions) -func newDefaultConfig() App <span class="cov5" title="11">{ +func newDefaultConfig() App <span class="cov5" title="13">{ // Coding-friendly default temperature across providers // Users can override per provider in config.toml (including 0.0). t := 0.2 - return App{ + return App{ MaxTokens: 4000, ContextMode: "always-full", ContextWindowLines: 120, @@ -287,47 +321,47 @@ func newDefaultConfig() App <span class="cov5" title="11">{ InlineOpen: ">", InlineClose: ">", ChatSuffix: ">", - ChatPrefixes: []string{"?", "!", ":", ";"}, - - // Default prompt templates (match current hard-coded strings) - PromptCompletionSystemParams: "You are a code completion engine for function signatures. Return only the parameter list contents (without parentheses), no braces, no prose. Prefer idiomatic names and types.", - PromptCompletionUserParams: "Cursor is inside the function parameter list. Suggest only the parameter list (no parentheses).\nFunction line: {{function}}\nCurrent line (cursor at {{char}}): {{current}}", - PromptCompletionSystemGeneral: "You are a terse code completion engine. Return only the code to insert, no surrounding prose or backticks. Only continue from the cursor; never repeat characters already present to the left of the cursor on the current line (e.g., if 'name :=' is already typed, only return the right-hand side expression).", - PromptCompletionUserGeneral: "Provide the next likely code to insert at the cursor.\nFile: {{file}}\nFunction/context: {{function}}\nAbove line: {{above}}\nCurrent line (cursor at character {{char}}): {{current}}\nBelow line: {{below}}\nOnly return the completion snippet.", - PromptCompletionSystemInline: "You are a precise code completion/refactoring engine. Output only the code to insert with no prose, no comments, and no backticks. Return raw code only.", - PromptCompletionExtraHeader: "Additional context:\n{{context}}", - - PromptNativeCompletion: "// Path: {{path}}\n{{before}}", - - PromptChatSystem: "You are a helpful coding assistant. Answer concisely and clearly.", - - PromptCodeActionRewriteSystem: "You are a precise code refactoring engine. Rewrite the given code strictly according to the instruction. Return only the updated code with no prose or backticks. Preserve formatting where reasonable.", - PromptCodeActionDiagnosticsSystem: "You are a precise code fixer. Resolve the given diagnostics by editing only the selected code. Return only the corrected code with no prose or backticks. Keep behavior and style, and avoid unrelated changes.", - PromptCodeActionDocumentSystem: "You are a precise code documentation engine. Add idiomatic documentation comments to the given code. Preserve exact behavior and formatting as much as possible. Return only the updated code with comments, no prose or backticks.", - PromptCodeActionRewriteUser: "Instruction: {{instruction}}\n\nSelected code to transform:\n{{selection}}", - PromptCodeActionDiagnosticsUser: "Diagnostics to resolve (selection only):\n{{diagnostics}}\n\nSelected code:\n{{selection}}", - PromptCodeActionDocumentUser: "Add documentation comments to this code:\n{{selection}}", - PromptCodeActionGoTestSystem: "You are a precise Go unit test generator. Given a Go function, write one or more Test* functions using the testing package. Do NOT include package or imports, only the test function(s). Prefer table-driven tests. Keep it minimal and idiomatic.", - PromptCodeActionGoTestUser: "Function under test:\n{{function}}", - - PromptCLIDefaultSystem: "You are Hexai CLI. Default to very short, concise answers. If the user asks for commands, output only the commands (one per line) with no commentary or explanation. Only when the word 'explain' appears in the prompt, produce a verbose explanation.", - PromptCLIExplainSystem: "You are Hexai CLI. The user requested an explanation. Provide a clear, verbose explanation with reasoning and details. If commands are needed, include them with brief context.", - } + ChatPrefixes: []string{"?", "!", ":", ";"}, + + // Default prompt templates (match current hard-coded strings) + PromptCompletionSystemParams: "You are a code completion engine for function signatures. Return only the parameter list contents (without parentheses), no braces, no prose. Prefer idiomatic names and types.", + PromptCompletionUserParams: "Cursor is inside the function parameter list. Suggest only the parameter list (no parentheses).\nFunction line: {{function}}\nCurrent line (cursor at {{char}}): {{current}}", + PromptCompletionSystemGeneral: "You are a terse code completion engine. Return only the code to insert, no surrounding prose or backticks. Only continue from the cursor; never repeat characters already present to the left of the cursor on the current line (e.g., if 'name :=' is already typed, only return the right-hand side expression).", + PromptCompletionUserGeneral: "Provide the next likely code to insert at the cursor.\nFile: {{file}}\nFunction/context: {{function}}\nAbove line: {{above}}\nCurrent line (cursor at character {{char}}): {{current}}\nBelow line: {{below}}\nOnly return the completion snippet.", + PromptCompletionSystemInline: "You are a precise code completion/refactoring engine. Output only the code to insert with no prose, no comments, and no backticks. Return raw code only.", + PromptCompletionExtraHeader: "Additional context:\n{{context}}", + + PromptNativeCompletion: "// Path: {{path}}\n{{before}}", + + PromptChatSystem: "You are a helpful coding assistant. Answer concisely and clearly.", + + PromptCodeActionRewriteSystem: "You are a precise code refactoring engine. Rewrite the given code strictly according to the instruction. Return only the updated code with no prose or backticks. Preserve formatting where reasonable.", + PromptCodeActionDiagnosticsSystem: "You are a precise code fixer. Resolve the given diagnostics by editing only the selected code. Return only the corrected code with no prose or backticks. Keep behavior and style, and avoid unrelated changes.", + PromptCodeActionDocumentSystem: "You are a precise code documentation engine. Add idiomatic documentation comments to the given code. Preserve exact behavior and formatting as much as possible. Return only the updated code with comments, no prose or backticks.", + PromptCodeActionRewriteUser: "Instruction: {{instruction}}\n\nSelected code to transform:\n{{selection}}", + PromptCodeActionDiagnosticsUser: "Diagnostics to resolve (selection only):\n{{diagnostics}}\n\nSelected code:\n{{selection}}", + PromptCodeActionDocumentUser: "Add documentation comments to this code:\n{{selection}}", + PromptCodeActionGoTestSystem: "You are a precise Go unit test generator. Given a Go function, write one or more Test* functions using the testing package. Do NOT include package or imports, only the test function(s). Prefer table-driven tests. Keep it minimal and idiomatic.", + PromptCodeActionGoTestUser: "Function under test:\n{{function}}", + + PromptCLIDefaultSystem: "You are Hexai CLI. Default to very short, concise answers. If the user asks for commands, output only the commands (one per line) with no commentary or explanation. Only when the word 'explain' appears in the prompt, produce a verbose explanation.", + PromptCLIExplainSystem: "You are Hexai CLI. The user requested an explanation. Provide a clear, verbose explanation with reasoning and details. If commands are needed, include them with brief context.", + } }</span> // Load reads configuration from a file and merges with defaults. // It respects the XDG Base Directory Specification. -func Load(logger *log.Logger) App <span class="cov5" title="10">{ +func Load(logger *log.Logger) App <span class="cov5" title="12">{ cfg := newDefaultConfig() - if logger == nil </span><span class="cov2" title="3">{ + if logger == nil </span><span class="cov3" title="4">{ return cfg // Return defaults if no logger is provided (e.g. in tests) }</span> - <span class="cov4" title="7">configPath, err := getConfigPath() + <span class="cov4" title="8">configPath, err := getConfigPath() if err != nil </span><span class="cov0" title="0">{ logger.Printf("%v", err) // Even if config path cannot be resolved, still allow env overrides below. - }</span> else<span class="cov4" title="7"> { + }</span> else<span class="cov4" title="8"> { if fileCfg, err := loadFromFile(configPath, logger); err == nil && fileCfg != nil </span><span class="cov3" title="4">{ cfg.mergeWith(fileCfg) }</span> @@ -336,359 +370,359 @@ func Load(logger *log.Logger) App <span class="cov5" title="10">{ } // Environment overrides (take precedence over file) - <span class="cov4" title="7">if envCfg := loadFromEnv(logger); envCfg != nil </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if envCfg := loadFromEnv(logger); envCfg != nil </span><span class="cov1" title="1">{ cfg.mergeWith(envCfg) }</span> - <span class="cov4" title="7">return cfg</span> + <span class="cov4" title="8">return cfg</span> } // Private helpers // Sectioned (table-based) file format only. type fileConfig struct { - // Section tables only (flat keys are not allowed) - General sectionGeneral `toml:"general"` - Logging sectionLogging `toml:"logging"` - Completion sectionCompletion `toml:"completion"` - Triggers sectionTriggers `toml:"triggers"` - Inline sectionInline `toml:"inline"` - Chat sectionChat `toml:"chat"` - Provider sectionProvider `toml:"provider"` - OpenAI sectionOpenAI `toml:"openai"` - Copilot sectionCopilot `toml:"copilot"` - Ollama sectionOllama `toml:"ollama"` - Prompts sectionPrompts `toml:"prompts"` + // Section tables only (flat keys are not allowed) + General sectionGeneral `toml:"general"` + Logging sectionLogging `toml:"logging"` + Completion sectionCompletion `toml:"completion"` + Triggers sectionTriggers `toml:"triggers"` + Inline sectionInline `toml:"inline"` + Chat sectionChat `toml:"chat"` + Provider sectionProvider `toml:"provider"` + OpenAI sectionOpenAI `toml:"openai"` + Copilot sectionCopilot `toml:"copilot"` + Ollama sectionOllama `toml:"ollama"` + Prompts sectionPrompts `toml:"prompts"` } type sectionGeneral struct { - MaxTokens int `toml:"max_tokens"` - ContextMode string `toml:"context_mode"` - ContextWindowLines int `toml:"context_window_lines"` - MaxContextTokens int `toml:"max_context_tokens"` - CodingTemperature *float64 `toml:"coding_temperature"` + MaxTokens int `toml:"max_tokens"` + ContextMode string `toml:"context_mode"` + ContextWindowLines int `toml:"context_window_lines"` + MaxContextTokens int `toml:"max_context_tokens"` + CodingTemperature *float64 `toml:"coding_temperature"` } type sectionLogging struct { - LogPreviewLimit int `toml:"log_preview_limit"` + LogPreviewLimit int `toml:"log_preview_limit"` } type sectionCompletion struct { - CompletionDebounceMs int `toml:"completion_debounce_ms"` - CompletionThrottleMs int `toml:"completion_throttle_ms"` - ManualInvokeMinPrefix int `toml:"manual_invoke_min_prefix"` + CompletionDebounceMs int `toml:"completion_debounce_ms"` + CompletionThrottleMs int `toml:"completion_throttle_ms"` + ManualInvokeMinPrefix int `toml:"manual_invoke_min_prefix"` } type sectionTriggers struct { - TriggerCharacters []string `toml:"trigger_characters"` + TriggerCharacters []string `toml:"trigger_characters"` } type sectionInline struct { - InlineOpen string `toml:"inline_open"` - InlineClose string `toml:"inline_close"` + InlineOpen string `toml:"inline_open"` + InlineClose string `toml:"inline_close"` } type sectionChat struct { - ChatSuffix string `toml:"chat_suffix"` - ChatPrefixes []string `toml:"chat_prefixes"` + ChatSuffix string `toml:"chat_suffix"` + ChatPrefixes []string `toml:"chat_prefixes"` } type sectionProvider struct { - Name string `toml:"name"` + Name string `toml:"name"` } type sectionOpenAI struct { - Model string `toml:"model"` - BaseURL string `toml:"base_url"` - Temperature *float64 `toml:"temperature"` + Model string `toml:"model"` + BaseURL string `toml:"base_url"` + Temperature *float64 `toml:"temperature"` } type sectionCopilot struct { - Model string `toml:"model"` - BaseURL string `toml:"base_url"` - Temperature *float64 `toml:"temperature"` + Model string `toml:"model"` + BaseURL string `toml:"base_url"` + Temperature *float64 `toml:"temperature"` } type sectionOllama struct { - Model string `toml:"model"` - BaseURL string `toml:"base_url"` - Temperature *float64 `toml:"temperature"` + Model string `toml:"model"` + BaseURL string `toml:"base_url"` + Temperature *float64 `toml:"temperature"` } // Prompts sections type sectionPrompts struct { - Completion sectionPromptsCompletion `toml:"completion"` - Chat sectionPromptsChat `toml:"chat"` - CodeAction sectionPromptsCodeAction `toml:"code_action"` - CLI sectionPromptsCLI `toml:"cli"` - ProviderNative sectionPromptsProviderNative `toml:"provider_native"` + Completion sectionPromptsCompletion `toml:"completion"` + Chat sectionPromptsChat `toml:"chat"` + CodeAction sectionPromptsCodeAction `toml:"code_action"` + CLI sectionPromptsCLI `toml:"cli"` + ProviderNative sectionPromptsProviderNative `toml:"provider_native"` } type sectionPromptsCompletion struct { - SystemGeneral string `toml:"system_general"` - SystemParams string `toml:"system_params"` - SystemInline string `toml:"system_inline"` - UserGeneral string `toml:"user_general"` - UserParams string `toml:"user_params"` - ExtraHeader string `toml:"additional_context"` + SystemGeneral string `toml:"system_general"` + SystemParams string `toml:"system_params"` + SystemInline string `toml:"system_inline"` + UserGeneral string `toml:"user_general"` + UserParams string `toml:"user_params"` + ExtraHeader string `toml:"additional_context"` } type sectionPromptsChat struct { - System string `toml:"system"` + System string `toml:"system"` } type sectionPromptsCodeAction struct { - RewriteSystem string `toml:"rewrite_system"` - DiagnosticsSystem string `toml:"diagnostics_system"` - DocumentSystem string `toml:"document_system"` - RewriteUser string `toml:"rewrite_user"` - DiagnosticsUser string `toml:"diagnostics_user"` - DocumentUser string `toml:"document_user"` - GoTestSystem string `toml:"go_test_system"` - GoTestUser string `toml:"go_test_user"` + RewriteSystem string `toml:"rewrite_system"` + DiagnosticsSystem string `toml:"diagnostics_system"` + DocumentSystem string `toml:"document_system"` + RewriteUser string `toml:"rewrite_user"` + DiagnosticsUser string `toml:"diagnostics_user"` + DocumentUser string `toml:"document_user"` + GoTestSystem string `toml:"go_test_system"` + GoTestUser string `toml:"go_test_user"` } type sectionPromptsCLI struct { - DefaultSystem string `toml:"default_system"` - ExplainSystem string `toml:"explain_system"` + DefaultSystem string `toml:"default_system"` + ExplainSystem string `toml:"explain_system"` } type sectionPromptsProviderNative struct { - Completion string `toml:"completion"` + Completion string `toml:"completion"` } func (fc *fileConfig) toApp() App <span class="cov3" title="4">{ - out := App{} - - // Merge section: general - if (fc.General != sectionGeneral{}) || fc.General.CodingTemperature != nil </span><span class="cov2" title="3">{ - tmp := App{ - MaxTokens: fc.General.MaxTokens, - ContextMode: fc.General.ContextMode, - ContextWindowLines: fc.General.ContextWindowLines, - MaxContextTokens: fc.General.MaxContextTokens, - CodingTemperature: fc.General.CodingTemperature, - } - out.mergeBasics(&tmp) - }</span> - - // logging - <span class="cov3" title="4">if (fc.Logging != sectionLogging{}) </span><span class="cov1" title="1">{ - tmp := App{LogPreviewLimit: fc.Logging.LogPreviewLimit} - out.mergeBasics(&tmp) - }</span> - - // completion - <span class="cov3" title="4">if (fc.Completion != sectionCompletion{}) </span><span class="cov2" title="3">{ - tmp := App{ - CompletionDebounceMs: fc.Completion.CompletionDebounceMs, - CompletionThrottleMs: fc.Completion.CompletionThrottleMs, - ManualInvokeMinPrefix: fc.Completion.ManualInvokeMinPrefix, - } - out.mergeBasics(&tmp) - }</span> - - // triggers - <span class="cov3" title="4">if len(fc.Triggers.TriggerCharacters) > 0 </span><span class="cov2" title="3">{ - tmp := App{TriggerCharacters: fc.Triggers.TriggerCharacters} - out.mergeBasics(&tmp) - }</span> - - // inline - <span class="cov3" title="4">if (fc.Inline != sectionInline{}) </span><span class="cov1" title="1">{ - tmp := App{InlineOpen: fc.Inline.InlineOpen, InlineClose: fc.Inline.InlineClose} - out.mergeBasics(&tmp) - }</span> - - // chat - <span class="cov3" title="4">if strings.TrimSpace(fc.Chat.ChatSuffix) != "" || len(fc.Chat.ChatPrefixes) > 0 </span><span class="cov1" title="1">{ - tmp := App{ChatSuffix: fc.Chat.ChatSuffix, ChatPrefixes: fc.Chat.ChatPrefixes} - out.mergeBasics(&tmp) - }</span> - - // provider - <span class="cov3" title="4">if strings.TrimSpace(fc.Provider.Name) != "" </span><span class="cov2" title="3">{ - tmp := App{Provider: fc.Provider.Name} - out.mergeBasics(&tmp) - }</span> - - // openai - <span class="cov3" title="4">if (fc.OpenAI != sectionOpenAI{}) || fc.OpenAI.Temperature != nil </span><span class="cov2" title="3">{ - tmp := App{ - OpenAIBaseURL: fc.OpenAI.BaseURL, - OpenAIModel: fc.OpenAI.Model, - OpenAITemperature: fc.OpenAI.Temperature, - } - out.mergeProviderFields(&tmp) - }</span> - - // copilot - <span class="cov3" title="4">if (fc.Copilot != sectionCopilot{}) || fc.Copilot.Temperature != nil </span><span class="cov2" title="3">{ - tmp := App{ - CopilotBaseURL: fc.Copilot.BaseURL, - CopilotModel: fc.Copilot.Model, - CopilotTemperature: fc.Copilot.Temperature, - } - out.mergeProviderFields(&tmp) - }</span> - - // ollama - <span class="cov3" title="4">if (fc.Ollama != sectionOllama{}) || fc.Ollama.Temperature != nil </span><span class="cov2" title="3">{ - tmp := App{ - OllamaBaseURL: fc.Ollama.BaseURL, - OllamaModel: fc.Ollama.Model, - OllamaTemperature: fc.Ollama.Temperature, - } - out.mergeProviderFields(&tmp) - }</span> - - // prompts - // completion - <span class="cov3" title="4">if (fc.Prompts.Completion != sectionPromptsCompletion{}) </span><span class="cov1" title="1">{ - if strings.TrimSpace(fc.Prompts.Completion.SystemGeneral) != "" </span><span class="cov1" title="1">{ - out.PromptCompletionSystemGeneral = fc.Prompts.Completion.SystemGeneral - }</span> - <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.Completion.SystemParams) != "" </span><span class="cov1" title="1">{ - out.PromptCompletionSystemParams = fc.Prompts.Completion.SystemParams - }</span> - <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.Completion.SystemInline) != "" </span><span class="cov1" title="1">{ - out.PromptCompletionSystemInline = fc.Prompts.Completion.SystemInline - }</span> - <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.Completion.UserGeneral) != "" </span><span class="cov1" title="1">{ - out.PromptCompletionUserGeneral = fc.Prompts.Completion.UserGeneral - }</span> - <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.Completion.UserParams) != "" </span><span class="cov1" title="1">{ - out.PromptCompletionUserParams = fc.Prompts.Completion.UserParams - }</span> - <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.Completion.ExtraHeader) != "" </span><span class="cov1" title="1">{ - out.PromptCompletionExtraHeader = fc.Prompts.Completion.ExtraHeader + out := App{} + + // Merge section: general + if (fc.General != sectionGeneral{}) || fc.General.CodingTemperature != nil </span><span class="cov2" title="3">{ + tmp := App{ + MaxTokens: fc.General.MaxTokens, + ContextMode: fc.General.ContextMode, + ContextWindowLines: fc.General.ContextWindowLines, + MaxContextTokens: fc.General.MaxContextTokens, + CodingTemperature: fc.General.CodingTemperature, + } + out.mergeBasics(&tmp) }</span> - } - // chat - <span class="cov3" title="4">if strings.TrimSpace(fc.Prompts.Chat.System) != "" </span><span class="cov1" title="1">{ - out.PromptChatSystem = fc.Prompts.Chat.System - }</span> - // code action - <span class="cov3" title="4">if (fc.Prompts.CodeAction != sectionPromptsCodeAction{}) </span><span class="cov1" title="1">{ - if strings.TrimSpace(fc.Prompts.CodeAction.RewriteSystem) != "" </span><span class="cov1" title="1">{ - out.PromptCodeActionRewriteSystem = fc.Prompts.CodeAction.RewriteSystem + + // logging + <span class="cov3" title="4">if (fc.Logging != sectionLogging{}) </span><span class="cov1" title="1">{ + tmp := App{LogPreviewLimit: fc.Logging.LogPreviewLimit} + out.mergeBasics(&tmp) }</span> - <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.DiagnosticsSystem) != "" </span><span class="cov1" title="1">{ - out.PromptCodeActionDiagnosticsSystem = fc.Prompts.CodeAction.DiagnosticsSystem + + // completion + <span class="cov3" title="4">if (fc.Completion != sectionCompletion{}) </span><span class="cov2" title="3">{ + tmp := App{ + CompletionDebounceMs: fc.Completion.CompletionDebounceMs, + CompletionThrottleMs: fc.Completion.CompletionThrottleMs, + ManualInvokeMinPrefix: fc.Completion.ManualInvokeMinPrefix, + } + out.mergeBasics(&tmp) }</span> - <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.DocumentSystem) != "" </span><span class="cov1" title="1">{ - out.PromptCodeActionDocumentSystem = fc.Prompts.CodeAction.DocumentSystem + + // triggers + <span class="cov3" title="4">if len(fc.Triggers.TriggerCharacters) > 0 </span><span class="cov2" title="3">{ + tmp := App{TriggerCharacters: fc.Triggers.TriggerCharacters} + out.mergeBasics(&tmp) }</span> - <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.RewriteUser) != "" </span><span class="cov1" title="1">{ - out.PromptCodeActionRewriteUser = fc.Prompts.CodeAction.RewriteUser + + // inline + <span class="cov3" title="4">if (fc.Inline != sectionInline{}) </span><span class="cov1" title="1">{ + tmp := App{InlineOpen: fc.Inline.InlineOpen, InlineClose: fc.Inline.InlineClose} + out.mergeBasics(&tmp) }</span> - <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.DiagnosticsUser) != "" </span><span class="cov1" title="1">{ - out.PromptCodeActionDiagnosticsUser = fc.Prompts.CodeAction.DiagnosticsUser + + // chat + <span class="cov3" title="4">if strings.TrimSpace(fc.Chat.ChatSuffix) != "" || len(fc.Chat.ChatPrefixes) > 0 </span><span class="cov1" title="1">{ + tmp := App{ChatSuffix: fc.Chat.ChatSuffix, ChatPrefixes: fc.Chat.ChatPrefixes} + out.mergeBasics(&tmp) }</span> - <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.DocumentUser) != "" </span><span class="cov1" title="1">{ - out.PromptCodeActionDocumentUser = fc.Prompts.CodeAction.DocumentUser + + // provider + <span class="cov3" title="4">if strings.TrimSpace(fc.Provider.Name) != "" </span><span class="cov2" title="3">{ + tmp := App{Provider: fc.Provider.Name} + out.mergeBasics(&tmp) }</span> - <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.GoTestSystem) != "" </span><span class="cov1" title="1">{ - out.PromptCodeActionGoTestSystem = fc.Prompts.CodeAction.GoTestSystem + + // openai + <span class="cov3" title="4">if (fc.OpenAI != sectionOpenAI{}) || fc.OpenAI.Temperature != nil </span><span class="cov2" title="3">{ + tmp := App{ + OpenAIBaseURL: fc.OpenAI.BaseURL, + OpenAIModel: fc.OpenAI.Model, + OpenAITemperature: fc.OpenAI.Temperature, + } + out.mergeProviderFields(&tmp) }</span> - <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.GoTestUser) != "" </span><span class="cov1" title="1">{ - out.PromptCodeActionGoTestUser = fc.Prompts.CodeAction.GoTestUser + + // copilot + <span class="cov3" title="4">if (fc.Copilot != sectionCopilot{}) || fc.Copilot.Temperature != nil </span><span class="cov2" title="3">{ + tmp := App{ + CopilotBaseURL: fc.Copilot.BaseURL, + CopilotModel: fc.Copilot.Model, + CopilotTemperature: fc.Copilot.Temperature, + } + out.mergeProviderFields(&tmp) }</span> - } - // cli - <span class="cov3" title="4">if (fc.Prompts.CLI != sectionPromptsCLI{}) </span><span class="cov1" title="1">{ - if strings.TrimSpace(fc.Prompts.CLI.DefaultSystem) != "" </span><span class="cov1" title="1">{ - out.PromptCLIDefaultSystem = fc.Prompts.CLI.DefaultSystem + + // ollama + <span class="cov3" title="4">if (fc.Ollama != sectionOllama{}) || fc.Ollama.Temperature != nil </span><span class="cov2" title="3">{ + tmp := App{ + OllamaBaseURL: fc.Ollama.BaseURL, + OllamaModel: fc.Ollama.Model, + OllamaTemperature: fc.Ollama.Temperature, + } + out.mergeProviderFields(&tmp) }</span> - <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CLI.ExplainSystem) != "" </span><span class="cov1" title="1">{ - out.PromptCLIExplainSystem = fc.Prompts.CLI.ExplainSystem + + // prompts + // completion + <span class="cov3" title="4">if (fc.Prompts.Completion != sectionPromptsCompletion{}) </span><span class="cov1" title="1">{ + if strings.TrimSpace(fc.Prompts.Completion.SystemGeneral) != "" </span><span class="cov1" title="1">{ + out.PromptCompletionSystemGeneral = fc.Prompts.Completion.SystemGeneral + }</span> + <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.Completion.SystemParams) != "" </span><span class="cov1" title="1">{ + out.PromptCompletionSystemParams = fc.Prompts.Completion.SystemParams + }</span> + <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.Completion.SystemInline) != "" </span><span class="cov1" title="1">{ + out.PromptCompletionSystemInline = fc.Prompts.Completion.SystemInline + }</span> + <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.Completion.UserGeneral) != "" </span><span class="cov1" title="1">{ + out.PromptCompletionUserGeneral = fc.Prompts.Completion.UserGeneral + }</span> + <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.Completion.UserParams) != "" </span><span class="cov1" title="1">{ + out.PromptCompletionUserParams = fc.Prompts.Completion.UserParams + }</span> + <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.Completion.ExtraHeader) != "" </span><span class="cov1" title="1">{ + out.PromptCompletionExtraHeader = fc.Prompts.Completion.ExtraHeader + }</span> + } + // chat + <span class="cov3" title="4">if strings.TrimSpace(fc.Prompts.Chat.System) != "" </span><span class="cov1" title="1">{ + out.PromptChatSystem = fc.Prompts.Chat.System + }</span> + // code action + <span class="cov3" title="4">if (fc.Prompts.CodeAction != sectionPromptsCodeAction{}) </span><span class="cov1" title="1">{ + if strings.TrimSpace(fc.Prompts.CodeAction.RewriteSystem) != "" </span><span class="cov1" title="1">{ + out.PromptCodeActionRewriteSystem = fc.Prompts.CodeAction.RewriteSystem + }</span> + <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.DiagnosticsSystem) != "" </span><span class="cov1" title="1">{ + out.PromptCodeActionDiagnosticsSystem = fc.Prompts.CodeAction.DiagnosticsSystem + }</span> + <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.DocumentSystem) != "" </span><span class="cov1" title="1">{ + out.PromptCodeActionDocumentSystem = fc.Prompts.CodeAction.DocumentSystem + }</span> + <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.RewriteUser) != "" </span><span class="cov1" title="1">{ + out.PromptCodeActionRewriteUser = fc.Prompts.CodeAction.RewriteUser + }</span> + <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.DiagnosticsUser) != "" </span><span class="cov1" title="1">{ + out.PromptCodeActionDiagnosticsUser = fc.Prompts.CodeAction.DiagnosticsUser + }</span> + <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.DocumentUser) != "" </span><span class="cov1" title="1">{ + out.PromptCodeActionDocumentUser = fc.Prompts.CodeAction.DocumentUser + }</span> + <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.GoTestSystem) != "" </span><span class="cov1" title="1">{ + out.PromptCodeActionGoTestSystem = fc.Prompts.CodeAction.GoTestSystem + }</span> + <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CodeAction.GoTestUser) != "" </span><span class="cov1" title="1">{ + out.PromptCodeActionGoTestUser = fc.Prompts.CodeAction.GoTestUser + }</span> + } + // cli + <span class="cov3" title="4">if (fc.Prompts.CLI != sectionPromptsCLI{}) </span><span class="cov1" title="1">{ + if strings.TrimSpace(fc.Prompts.CLI.DefaultSystem) != "" </span><span class="cov1" title="1">{ + out.PromptCLIDefaultSystem = fc.Prompts.CLI.DefaultSystem + }</span> + <span class="cov1" title="1">if strings.TrimSpace(fc.Prompts.CLI.ExplainSystem) != "" </span><span class="cov1" title="1">{ + out.PromptCLIExplainSystem = fc.Prompts.CLI.ExplainSystem + }</span> + } + // provider-native + <span class="cov3" title="4">if strings.TrimSpace(fc.Prompts.ProviderNative.Completion) != "" </span><span class="cov1" title="1">{ + out.PromptNativeCompletion = fc.Prompts.ProviderNative.Completion }</span> - } - // provider-native - <span class="cov3" title="4">if strings.TrimSpace(fc.Prompts.ProviderNative.Completion) != "" </span><span class="cov1" title="1">{ - out.PromptNativeCompletion = fc.Prompts.ProviderNative.Completion - }</span> - <span class="cov3" title="4">return out</span> + <span class="cov3" title="4">return out</span> } -func loadFromFile(path string, logger *log.Logger) (*App, error) <span class="cov4" title="8">{ - b, err := os.ReadFile(path) - if err != nil </span><span class="cov2" title="2">{ - if !os.IsNotExist(err) && logger != nil </span><span class="cov0" title="0">{ - logger.Printf("cannot open TOML config file %s: %v", path, err) - }</span> - <span class="cov2" title="2">return nil, err</span> - } - - <span class="cov4" title="6">var tables fileConfig - errTables := toml.NewDecoder(strings.NewReader(string(b))).Decode(&tables) - // Raw map for validation/presence checks - var raw map[string]any - _ = toml.Unmarshal(b, &raw) - if errTables != nil </span><span class="cov2" title="2">{ - if logger != nil </span><span class="cov2" title="2">{ - logger.Printf("invalid TOML config file %s: %v", path, errTables) - }</span> - <span class="cov2" title="2">return nil, errTables</span> - } +func loadFromFile(path string, logger *log.Logger) (*App, error) <span class="cov4" title="9">{ + b, err := os.ReadFile(path) + if err != nil </span><span class="cov2" title="3">{ + if !os.IsNotExist(err) && logger != nil </span><span class="cov0" title="0">{ + logger.Printf("cannot open TOML config file %s: %v", path, err) + }</span> + <span class="cov2" title="3">return nil, err</span> + } - // Reject legacy flat keys at top-level (sectioned-only config is allowed) - <span class="cov3" title="4">legacy := map[string]struct{}{ - "max_tokens": {}, "context_mode": {}, "context_window_lines": {}, "max_context_tokens": {}, - "log_preview_limit": {}, "completion_debounce_ms": {}, "completion_throttle_ms": {}, - "manual_invoke_min_prefix": {}, "trigger_characters": {}, "inline_open": {}, "inline_close": {}, - "chat_suffix": {}, "chat_prefixes": {}, "coding_temperature": {}, "provider": {}, - "openai_model": {}, "openai_base_url": {}, "openai_temperature": {}, - "ollama_model": {}, "ollama_base_url": {}, "ollama_temperature": {}, - "copilot_model": {}, "copilot_base_url": {}, "copilot_temperature": {}, - } - for k := range raw </span><span class="cov6" title="27">{ - if _, isTable := map[string]struct{}{"general": {}, "logging": {}, "completion": {}, "triggers": {}, "inline": {}, "chat": {}, "provider": {}, "openai": {}, "copilot": {}, "ollama": {}, "prompts": {}}[k]; isTable </span><span class="cov6" title="27">{ - continue</span> + <span class="cov4" title="6">var tables fileConfig + errTables := toml.NewDecoder(strings.NewReader(string(b))).Decode(&tables) + // Raw map for validation/presence checks + var raw map[string]any + _ = toml.Unmarshal(b, &raw) + if errTables != nil </span><span class="cov2" title="2">{ + if logger != nil </span><span class="cov2" title="2">{ + logger.Printf("invalid TOML config file %s: %v", path, errTables) + }</span> + <span class="cov2" title="2">return nil, errTables</span> } - <span class="cov0" title="0">if _, isLegacy := legacy[k]; isLegacy </span><span class="cov0" title="0">{ - return nil, fmt.Errorf("unsupported flat key '%s' in config; use sectioned tables (see config.toml.example)", k) - }</span> - } - <span class="cov3" title="4">if logger != nil </span><span class="cov3" title="4">{ - logger.Printf("loaded configuration from %s (TOML)", path) - }</span> + // Reject legacy flat keys at top-level (sectioned-only config is allowed) + <span class="cov3" title="4">legacy := map[string]struct{}{ + "max_tokens": {}, "context_mode": {}, "context_window_lines": {}, "max_context_tokens": {}, + "log_preview_limit": {}, "completion_debounce_ms": {}, "completion_throttle_ms": {}, + "manual_invoke_min_prefix": {}, "trigger_characters": {}, "inline_open": {}, "inline_close": {}, + "chat_suffix": {}, "chat_prefixes": {}, "coding_temperature": {}, "provider": {}, + "openai_model": {}, "openai_base_url": {}, "openai_temperature": {}, + "ollama_model": {}, "ollama_base_url": {}, "ollama_temperature": {}, + "copilot_model": {}, "copilot_base_url": {}, "copilot_temperature": {}, + } + for k := range raw </span><span class="cov6" title="27">{ + if _, isTable := map[string]struct{}{"general": {}, "logging": {}, "completion": {}, "triggers": {}, "inline": {}, "chat": {}, "provider": {}, "openai": {}, "copilot": {}, "ollama": {}, "prompts": {}}[k]; isTable </span><span class="cov6" title="27">{ + continue</span> + } + <span class="cov0" title="0">if _, isLegacy := legacy[k]; isLegacy </span><span class="cov0" title="0">{ + return nil, fmt.Errorf("unsupported flat key '%s' in config; use sectioned tables (see config.toml.example)", k) + }</span> + } - // Merge order: flat first, then tables (so tables win over zero flat values) - // Build App from tables only - <span class="cov3" title="4">tab := tables.toApp() - // Ensure explicit values from raw map are respected (defensive for ints) - if t, ok := raw["completion"].(map[string]any); ok </span><span class="cov2" title="3">{ - if v, present := t["manual_invoke_min_prefix"]; present </span><span class="cov2" title="3">{ - switch vv := v.(type) </span>{ - case int64:<span class="cov2" title="3"> - tab.ManualInvokeMinPrefix = int(vv)</span> - case int:<span class="cov0" title="0"> - tab.ManualInvokeMinPrefix = vv</span> - case float64:<span class="cov0" title="0"> - tab.ManualInvokeMinPrefix = int(vv)</span> - } + <span class="cov3" title="4">if logger != nil </span><span class="cov3" title="4">{ + logger.Printf("loaded configuration from %s (TOML)", path) + }</span> + + // Merge order: flat first, then tables (so tables win over zero flat values) + // Build App from tables only + <span class="cov3" title="4">tab := tables.toApp() + // Ensure explicit values from raw map are respected (defensive for ints) + if t, ok := raw["completion"].(map[string]any); ok </span><span class="cov2" title="3">{ + if v, present := t["manual_invoke_min_prefix"]; present </span><span class="cov2" title="3">{ + switch vv := v.(type) </span>{ + case int64:<span class="cov2" title="3"> + tab.ManualInvokeMinPrefix = int(vv)</span> + case int:<span class="cov0" title="0"> + tab.ManualInvokeMinPrefix = vv</span> + case float64:<span class="cov0" title="0"> + tab.ManualInvokeMinPrefix = int(vv)</span> + } + } } - } - <span class="cov3" title="4">if t, ok := raw["logging"].(map[string]any); ok </span><span class="cov2" title="3">{ - if v, present := t["log_preview_limit"]; present </span><span class="cov2" title="3">{ - switch vv := v.(type) </span>{ - case int64:<span class="cov2" title="3"> - tab.LogPreviewLimit = int(vv)</span> - case int:<span class="cov0" title="0"> - tab.LogPreviewLimit = vv</span> - case float64:<span class="cov0" title="0"> - tab.LogPreviewLimit = int(vv)</span> - } + <span class="cov3" title="4">if t, ok := raw["logging"].(map[string]any); ok </span><span class="cov2" title="3">{ + if v, present := t["log_preview_limit"]; present </span><span class="cov2" title="3">{ + switch vv := v.(type) </span>{ + case int64:<span class="cov2" title="3"> + tab.LogPreviewLimit = int(vv)</span> + case int:<span class="cov0" title="0"> + tab.LogPreviewLimit = vv</span> + case float64:<span class="cov0" title="0"> + tab.LogPreviewLimit = int(vv)</span> + } + } } - } - <span class="cov3" title="4">return &tab, nil</span> + <span class="cov3" title="4">return &tab, nil</span> } func (a *App) mergeWith(other *App) <span class="cov3" title="5">{ - a.mergeBasics(other) - a.mergeProviderFields(other) - a.mergePrompts(other) + a.mergeBasics(other) + a.mergeProviderFields(other) + a.mergePrompts(other) }</span> // mergeBasics merges general (non-provider) fields. @@ -742,65 +776,65 @@ func (a *App) mergeBasics(other *App) <span class="cov6" title="20">{ // mergePrompts copies non-empty prompt templates from other. func (a *App) mergePrompts(other *App) <span class="cov3" title="5">{ - // Completion - if strings.TrimSpace(other.PromptCompletionSystemGeneral) != "" </span><span class="cov1" title="1">{ - a.PromptCompletionSystemGeneral = other.PromptCompletionSystemGeneral - }</span> - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCompletionSystemParams) != "" </span><span class="cov1" title="1">{ - a.PromptCompletionSystemParams = other.PromptCompletionSystemParams - }</span> - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCompletionSystemInline) != "" </span><span class="cov1" title="1">{ - a.PromptCompletionSystemInline = other.PromptCompletionSystemInline - }</span> - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCompletionUserGeneral) != "" </span><span class="cov1" title="1">{ - a.PromptCompletionUserGeneral = other.PromptCompletionUserGeneral - }</span> - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCompletionUserParams) != "" </span><span class="cov1" title="1">{ - a.PromptCompletionUserParams = other.PromptCompletionUserParams - }</span> - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCompletionExtraHeader) != "" </span><span class="cov1" title="1">{ - a.PromptCompletionExtraHeader = other.PromptCompletionExtraHeader - }</span> - // Provider-native - <span class="cov3" title="5">if strings.TrimSpace(other.PromptNativeCompletion) != "" </span><span class="cov1" title="1">{ - a.PromptNativeCompletion = other.PromptNativeCompletion - }</span> - // Chat - <span class="cov3" title="5">if strings.TrimSpace(other.PromptChatSystem) != "" </span><span class="cov1" title="1">{ - a.PromptChatSystem = other.PromptChatSystem - }</span> - // Code actions - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionRewriteSystem) != "" </span><span class="cov1" title="1">{ - a.PromptCodeActionRewriteSystem = other.PromptCodeActionRewriteSystem - }</span> - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionDiagnosticsSystem) != "" </span><span class="cov1" title="1">{ - a.PromptCodeActionDiagnosticsSystem = other.PromptCodeActionDiagnosticsSystem - }</span> - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionDocumentSystem) != "" </span><span class="cov1" title="1">{ - a.PromptCodeActionDocumentSystem = other.PromptCodeActionDocumentSystem - }</span> - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionRewriteUser) != "" </span><span class="cov1" title="1">{ - a.PromptCodeActionRewriteUser = other.PromptCodeActionRewriteUser - }</span> - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionDiagnosticsUser) != "" </span><span class="cov1" title="1">{ - a.PromptCodeActionDiagnosticsUser = other.PromptCodeActionDiagnosticsUser - }</span> - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionDocumentUser) != "" </span><span class="cov1" title="1">{ - a.PromptCodeActionDocumentUser = other.PromptCodeActionDocumentUser - }</span> - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionGoTestSystem) != "" </span><span class="cov1" title="1">{ - a.PromptCodeActionGoTestSystem = other.PromptCodeActionGoTestSystem - }</span> - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionGoTestUser) != "" </span><span class="cov1" title="1">{ - a.PromptCodeActionGoTestUser = other.PromptCodeActionGoTestUser - }</span> - // CLI - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCLIDefaultSystem) != "" </span><span class="cov1" title="1">{ - a.PromptCLIDefaultSystem = other.PromptCLIDefaultSystem - }</span> - <span class="cov3" title="5">if strings.TrimSpace(other.PromptCLIExplainSystem) != "" </span><span class="cov1" title="1">{ - a.PromptCLIExplainSystem = other.PromptCLIExplainSystem - }</span> + // Completion + if strings.TrimSpace(other.PromptCompletionSystemGeneral) != "" </span><span class="cov1" title="1">{ + a.PromptCompletionSystemGeneral = other.PromptCompletionSystemGeneral + }</span> + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCompletionSystemParams) != "" </span><span class="cov1" title="1">{ + a.PromptCompletionSystemParams = other.PromptCompletionSystemParams + }</span> + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCompletionSystemInline) != "" </span><span class="cov1" title="1">{ + a.PromptCompletionSystemInline = other.PromptCompletionSystemInline + }</span> + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCompletionUserGeneral) != "" </span><span class="cov1" title="1">{ + a.PromptCompletionUserGeneral = other.PromptCompletionUserGeneral + }</span> + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCompletionUserParams) != "" </span><span class="cov1" title="1">{ + a.PromptCompletionUserParams = other.PromptCompletionUserParams + }</span> + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCompletionExtraHeader) != "" </span><span class="cov1" title="1">{ + a.PromptCompletionExtraHeader = other.PromptCompletionExtraHeader + }</span> + // Provider-native + <span class="cov3" title="5">if strings.TrimSpace(other.PromptNativeCompletion) != "" </span><span class="cov1" title="1">{ + a.PromptNativeCompletion = other.PromptNativeCompletion + }</span> + // Chat + <span class="cov3" title="5">if strings.TrimSpace(other.PromptChatSystem) != "" </span><span class="cov1" title="1">{ + a.PromptChatSystem = other.PromptChatSystem + }</span> + // Code actions + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionRewriteSystem) != "" </span><span class="cov1" title="1">{ + a.PromptCodeActionRewriteSystem = other.PromptCodeActionRewriteSystem + }</span> + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionDiagnosticsSystem) != "" </span><span class="cov1" title="1">{ + a.PromptCodeActionDiagnosticsSystem = other.PromptCodeActionDiagnosticsSystem + }</span> + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionDocumentSystem) != "" </span><span class="cov1" title="1">{ + a.PromptCodeActionDocumentSystem = other.PromptCodeActionDocumentSystem + }</span> + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionRewriteUser) != "" </span><span class="cov1" title="1">{ + a.PromptCodeActionRewriteUser = other.PromptCodeActionRewriteUser + }</span> + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionDiagnosticsUser) != "" </span><span class="cov1" title="1">{ + a.PromptCodeActionDiagnosticsUser = other.PromptCodeActionDiagnosticsUser + }</span> + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionDocumentUser) != "" </span><span class="cov1" title="1">{ + a.PromptCodeActionDocumentUser = other.PromptCodeActionDocumentUser + }</span> + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionGoTestSystem) != "" </span><span class="cov1" title="1">{ + a.PromptCodeActionGoTestSystem = other.PromptCodeActionGoTestSystem + }</span> + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCodeActionGoTestUser) != "" </span><span class="cov1" title="1">{ + a.PromptCodeActionGoTestUser = other.PromptCodeActionGoTestUser + }</span> + // CLI + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCLIDefaultSystem) != "" </span><span class="cov1" title="1">{ + a.PromptCLIDefaultSystem = other.PromptCLIDefaultSystem + }</span> + <span class="cov3" title="5">if strings.TrimSpace(other.PromptCLIExplainSystem) != "" </span><span class="cov1" title="1">{ + a.PromptCLIExplainSystem = other.PromptCLIExplainSystem + }</span> } // mergeProviderFields merges per-provider configuration. @@ -834,33 +868,33 @@ func (a *App) mergeProviderFields(other *App) <span class="cov5" title="14">{ }</span> } -func getConfigPath() (string, error) <span class="cov4" title="8">{ +func getConfigPath() (string, error) <span class="cov4" title="9">{ var configPath string if xdgConfigHome := os.Getenv("XDG_CONFIG_HOME"); xdgConfigHome != "" </span><span class="cov4" title="7">{ configPath = filepath.Join(xdgConfigHome, "hexai", "config.toml") - }</span> else<span class="cov1" title="1"> { + }</span> else<span class="cov2" title="2"> { home, err := os.UserHomeDir() if err != nil </span><span class="cov0" title="0">{ return "", fmt.Errorf("cannot find user home directory: %v", err) }</span> - <span class="cov1" title="1">configPath = filepath.Join(home, ".config", "hexai", "config.toml")</span> + <span class="cov2" title="2">configPath = filepath.Join(home, ".config", "hexai", "config.toml")</span> } - <span class="cov4" title="8">return configPath, nil</span> + <span class="cov4" title="9">return configPath, nil</span> } // --- Environment overrides --- // loadFromEnv constructs an App containing only fields set via HEXAI_* env vars. // These values should take precedence over file config when merged. -func loadFromEnv(logger *log.Logger) *App <span class="cov4" title="7">{ +func loadFromEnv(logger *log.Logger) *App <span class="cov4" title="8">{ var out App var any bool // helpers - getenv := func(k string) string </span><span class="cov10" title="168">{ return strings.TrimSpace(os.Getenv(k)) }</span> - <span class="cov4" title="7">parseInt := func(k string) (int, bool) </span><span class="cov7" title="49">{ + getenv := func(k string) string </span><span class="cov10" title="192">{ return strings.TrimSpace(os.Getenv(k)) }</span> + <span class="cov4" title="8">parseInt := func(k string) (int, bool) </span><span class="cov7" title="56">{ v := getenv(k) - if v == "" </span><span class="cov7" title="42">{ + if v == "" </span><span class="cov7" title="49">{ return 0, false }</span> <span class="cov4" title="7">n, err := strconv.Atoi(v) @@ -872,9 +906,9 @@ func loadFromEnv(logger *log.Logger) *App <span class="cov4" title="7">{ } <span class="cov4" title="7">return n, true</span> } - <span class="cov4" title="7">parseFloatPtr := func(k string) (*float64, bool) </span><span class="cov6" title="28">{ + <span class="cov4" title="8">parseFloatPtr := func(k string) (*float64, bool) </span><span class="cov6" title="32">{ v := getenv(k) - if v == "" </span><span class="cov6" title="24">{ + if v == "" </span><span class="cov6" title="28">{ return nil, false }</span> <span class="cov3" title="4">f, err := strconv.ParseFloat(v, 64) @@ -887,43 +921,43 @@ func loadFromEnv(logger *log.Logger) *App <span class="cov4" title="7">{ <span class="cov3" title="4">return &f, true</span> } - <span class="cov4" title="7">if n, ok := parseInt("HEXAI_MAX_TOKENS"); ok </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if n, ok := parseInt("HEXAI_MAX_TOKENS"); ok </span><span class="cov1" title="1">{ out.MaxTokens = n any = true }</span> - <span class="cov4" title="7">if s := getenv("HEXAI_CONTEXT_MODE"); s != "" </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if s := getenv("HEXAI_CONTEXT_MODE"); s != "" </span><span class="cov1" title="1">{ out.ContextMode = s any = true }</span> - <span class="cov4" title="7">if n, ok := parseInt("HEXAI_CONTEXT_WINDOW_LINES"); ok </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if n, ok := parseInt("HEXAI_CONTEXT_WINDOW_LINES"); ok </span><span class="cov1" title="1">{ out.ContextWindowLines = n any = true }</span> - <span class="cov4" title="7">if n, ok := parseInt("HEXAI_MAX_CONTEXT_TOKENS"); ok </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if n, ok := parseInt("HEXAI_MAX_CONTEXT_TOKENS"); ok </span><span class="cov1" title="1">{ out.MaxContextTokens = n any = true }</span> - <span class="cov4" title="7">if n, ok := parseInt("HEXAI_LOG_PREVIEW_LIMIT"); ok </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if n, ok := parseInt("HEXAI_LOG_PREVIEW_LIMIT"); ok </span><span class="cov1" title="1">{ out.LogPreviewLimit = n any = true }</span> - <span class="cov4" title="7">if n, ok := parseInt("HEXAI_MANUAL_INVOKE_MIN_PREFIX"); ok </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if n, ok := parseInt("HEXAI_MANUAL_INVOKE_MIN_PREFIX"); ok </span><span class="cov1" title="1">{ out.ManualInvokeMinPrefix = n any = true }</span> - <span class="cov4" title="7">if n, ok := parseInt("HEXAI_COMPLETION_DEBOUNCE_MS"); ok </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if n, ok := parseInt("HEXAI_COMPLETION_DEBOUNCE_MS"); ok </span><span class="cov1" title="1">{ out.CompletionDebounceMs = n any = true }</span> - <span class="cov4" title="7">if n, ok := parseInt("HEXAI_COMPLETION_THROTTLE_MS"); ok </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if n, ok := parseInt("HEXAI_COMPLETION_THROTTLE_MS"); ok </span><span class="cov1" title="1">{ out.CompletionThrottleMs = n any = true }</span> - <span class="cov4" title="7">if f, ok := parseFloatPtr("HEXAI_CODING_TEMPERATURE"); ok </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if f, ok := parseFloatPtr("HEXAI_CODING_TEMPERATURE"); ok </span><span class="cov1" title="1">{ out.CodingTemperature = f any = true }</span> - <span class="cov4" title="7">if s := getenv("HEXAI_TRIGGER_CHARACTERS"); s != "" </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if s := getenv("HEXAI_TRIGGER_CHARACTERS"); s != "" </span><span class="cov1" title="1">{ parts := strings.Split(s, ",") out.TriggerCharacters = nil for _, p := range parts </span><span class="cov2" title="3">{ @@ -933,19 +967,19 @@ func loadFromEnv(logger *log.Logger) *App <span class="cov4" title="7">{ } <span class="cov1" title="1">any = true</span> } - <span class="cov4" title="7">if s := getenv("HEXAI_INLINE_OPEN"); s != "" </span><span class="cov0" title="0">{ + <span class="cov4" title="8">if s := getenv("HEXAI_INLINE_OPEN"); s != "" </span><span class="cov0" title="0">{ out.InlineOpen = s any = true }</span> - <span class="cov4" title="7">if s := getenv("HEXAI_INLINE_CLOSE"); s != "" </span><span class="cov0" title="0">{ + <span class="cov4" title="8">if s := getenv("HEXAI_INLINE_CLOSE"); s != "" </span><span class="cov0" title="0">{ out.InlineClose = s any = true }</span> - <span class="cov4" title="7">if s := getenv("HEXAI_CHAT_SUFFIX"); s != "" </span><span class="cov0" title="0">{ + <span class="cov4" title="8">if s := getenv("HEXAI_CHAT_SUFFIX"); s != "" </span><span class="cov0" title="0">{ out.ChatSuffix = s any = true }</span> - <span class="cov4" title="7">if s := getenv("HEXAI_CHAT_PREFIXES"); s != "" </span><span class="cov0" title="0">{ + <span class="cov4" title="8">if s := getenv("HEXAI_CHAT_PREFIXES"); s != "" </span><span class="cov0" title="0">{ parts := strings.Split(s, ",") out.ChatPrefixes = nil for _, p := range parts </span><span class="cov0" title="0">{ @@ -955,75 +989,473 @@ func loadFromEnv(logger *log.Logger) *App <span class="cov4" title="7">{ } <span class="cov0" title="0">any = true</span> } - <span class="cov4" title="7">if s := getenv("HEXAI_PROVIDER"); s != "" </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if s := getenv("HEXAI_PROVIDER"); s != "" </span><span class="cov1" title="1">{ out.Provider = s any = true }</span> // Provider-specific - <span class="cov4" title="7">if s := getenv("HEXAI_OPENAI_BASE_URL"); s != "" </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if s := getenv("HEXAI_OPENAI_BASE_URL"); s != "" </span><span class="cov1" title="1">{ out.OpenAIBaseURL = s any = true }</span> - <span class="cov4" title="7">if s := getenv("HEXAI_OPENAI_MODEL"); s != "" </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if s := getenv("HEXAI_OPENAI_MODEL"); s != "" </span><span class="cov1" title="1">{ out.OpenAIModel = s any = true }</span> - <span class="cov4" title="7">if f, ok := parseFloatPtr("HEXAI_OPENAI_TEMPERATURE"); ok </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if f, ok := parseFloatPtr("HEXAI_OPENAI_TEMPERATURE"); ok </span><span class="cov1" title="1">{ out.OpenAITemperature = f any = true }</span> - <span class="cov4" title="7">if s := getenv("HEXAI_OLLAMA_BASE_URL"); s != "" </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if s := getenv("HEXAI_OLLAMA_BASE_URL"); s != "" </span><span class="cov1" title="1">{ out.OllamaBaseURL = s any = true }</span> - <span class="cov4" title="7">if s := getenv("HEXAI_OLLAMA_MODEL"); s != "" </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if s := getenv("HEXAI_OLLAMA_MODEL"); s != "" </span><span class="cov1" title="1">{ out.OllamaModel = s any = true }</span> - <span class="cov4" title="7">if f, ok := parseFloatPtr("HEXAI_OLLAMA_TEMPERATURE"); ok </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if f, ok := parseFloatPtr("HEXAI_OLLAMA_TEMPERATURE"); ok </span><span class="cov1" title="1">{ out.OllamaTemperature = f any = true }</span> - <span class="cov4" title="7">if s := getenv("HEXAI_COPILOT_BASE_URL"); s != "" </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if s := getenv("HEXAI_COPILOT_BASE_URL"); s != "" </span><span class="cov1" title="1">{ out.CopilotBaseURL = s any = true }</span> - <span class="cov4" title="7">if s := getenv("HEXAI_COPILOT_MODEL"); s != "" </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if s := getenv("HEXAI_COPILOT_MODEL"); s != "" </span><span class="cov1" title="1">{ out.CopilotModel = s any = true }</span> - <span class="cov4" title="7">if f, ok := parseFloatPtr("HEXAI_COPILOT_TEMPERATURE"); ok </span><span class="cov1" title="1">{ + <span class="cov4" title="8">if f, ok := parseFloatPtr("HEXAI_COPILOT_TEMPERATURE"); ok </span><span class="cov1" title="1">{ out.CopilotTemperature = f any = true }</span> - <span class="cov4" title="7">if !any </span><span class="cov4" title="6">{ + <span class="cov4" title="8">if !any </span><span class="cov4" title="7">{ return nil }</span> <span class="cov1" title="1">return &out</span> } </pre> - <pre class="file" id="file3" style="display: none">// Summary: Hexai CLI runner; reads input, creates an LLM client, builds messages, + <pre class="file" id="file4" style="display: none">package hexaiaction + +import ( + "bufio" + "io" + "strings" + + "codeberg.org/snonux/hexai/internal/textutil" +) + +// ParseInput splits raw stdin into optional diagnostics and selection/code. +// Format: +// +// Diagnostics:\n +// <one per line>\n +// <blank line> (optional)\n +// <rest is selection/code> +// +// If the header is absent, the entire input is treated as selection. +func ParseInput(r io.Reader) (InputParts, error) <span class="cov4" title="2">{ + b, err := io.ReadAll(bufio.NewReader(r)) + if err != nil </span><span class="cov0" title="0">{ + return InputParts{}, err + }</span> + <span class="cov4" title="2">raw := strings.TrimSpace(string(b)) + if raw == "" </span><span class="cov0" title="0">{ + return InputParts{Selection: ""}, nil + }</span> + <span class="cov4" title="2">lines := strings.Split(raw, "\n") + // find a case-insensitive line equal to "diagnostics:" + diagsIdx := -1 + for i, ln := range lines </span><span class="cov4" title="2">{ + t := strings.TrimSpace(strings.ToLower(ln)) + if t == "diagnostics:" </span><span class="cov1" title="1">{ + diagsIdx = i + break</span> + } + } + <span class="cov4" title="2">if diagsIdx < 0 </span><span class="cov1" title="1">{ + return InputParts{Selection: raw}, nil + }</span> + // collect diagnostics until a blank line or EOF + <span class="cov1" title="1">diags := []string{} + i := diagsIdx + 1 + for ; i < len(lines); i++ </span><span class="cov6" title="3">{ + t := strings.TrimSpace(lines[i]) + if t == "" </span><span class="cov1" title="1">{ + i++ + break</span> + } + <span class="cov4" title="2">diags = append(diags, t)</span> + } + <span class="cov1" title="1">sel := strings.Join(lines[i:], "\n") + sel = strings.TrimSpace(sel) + return InputParts{Selection: sel, Diagnostics: diags}, nil</span> +} + +// ExtractInstruction mirrors the LSP instructionFromSelection behavior (subset), +// scanning the first line for an instruction marker and removing it from the selection. +func ExtractInstruction(sel string) (string, string) <span class="cov10" title="7">{ return textutil.InstructionFromSelection(sel) }</span> + +// findFirstInstructionInLine follows the same precedence as LSP: +// - ;text; (strict) +// - /* text */ (single-line) +// - <!-- text --> (single-line) +// - // text +// - # text +// - -- text +// helpers moved to textutil +</pre> + + <pre class="file" id="file5" style="display: none">package hexaiaction + +import ( + "context" + "strings" + "time" + + "codeberg.org/snonux/hexai/internal/appconfig" + "codeberg.org/snonux/hexai/internal/llm" + "codeberg.org/snonux/hexai/internal/textutil" +) + +// Render performs simple {{var}} replacement like LSP. +func Render(t string, vars map[string]string) string <span class="cov10" title="8">{ return textutil.RenderTemplate(t, vars) }</span> + +// StripFences removes surrounding markdown code fences. +func StripFences(s string) string <span class="cov10" title="8">{ return textutil.StripCodeFences(s) }</span> + +type chatDoer interface { + Chat(ctx context.Context, msgs []llm.Message, opts ...llm.RequestOption) (string, error) +} + +func runRewrite(ctx context.Context, cfg appconfig.App, client chatDoer, instruction, selection string) (string, error) <span class="cov4" title="2">{ + sys := cfg.PromptCodeActionRewriteSystem + user := Render(cfg.PromptCodeActionRewriteUser, map[string]string{"instruction": instruction, "selection": selection}) + return runOnceWithOpts(ctx, client, sys, user, reqOptsFrom(cfg)) +}</span> + +func runDiagnostics(ctx context.Context, cfg appconfig.App, client chatDoer, diags []string, selection string) (string, error) <span class="cov1" title="1">{ + var b strings.Builder + for i, d := range diags </span><span class="cov4" title="2">{ + if strings.TrimSpace(d) == "" </span><span class="cov0" title="0">{ + continue</span> + } + <span class="cov4" title="2">b.WriteString(strings.TrimSpace(d)) + if i < len(diags)-1 </span><span class="cov1" title="1">{ + b.WriteString("\n") + }</span> + } + <span class="cov1" title="1">sys := cfg.PromptCodeActionDiagnosticsSystem + user := Render(cfg.PromptCodeActionDiagnosticsUser, map[string]string{"diagnostics": b.String(), "selection": selection}) + return runOnceWithOpts(ctx, client, sys, user, reqOptsFrom(cfg))</span> +} + +func runDocument(ctx context.Context, cfg appconfig.App, client chatDoer, selection string) (string, error) <span class="cov4" title="2">{ + sys := cfg.PromptCodeActionDocumentSystem + user := Render(cfg.PromptCodeActionDocumentUser, map[string]string{"selection": selection}) + return runOnceWithOpts(ctx, client, sys, user, reqOptsFrom(cfg)) +}</span> + +func runGoTest(ctx context.Context, cfg appconfig.App, client chatDoer, funcCode string) (string, error) <span class="cov4" title="2">{ + sys := cfg.PromptCodeActionGoTestSystem + user := Render(cfg.PromptCodeActionGoTestUser, map[string]string{"function": funcCode}) + return runOnceWithOpts(ctx, client, sys, user, reqOptsFrom(cfg)) +}</span> + +func runOnce(ctx context.Context, client chatDoer, sys, user string) (string, error) <span class="cov0" title="0">{ + msgs := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} + txt, err := client.Chat(ctx, msgs) + if err != nil </span><span class="cov0" title="0">{ + return "", err + }</span> + <span class="cov0" title="0">return strings.TrimSpace(StripFences(txt)), nil</span> +} + +func runOnceWithOpts(ctx context.Context, client chatDoer, sys, user string, opts []llm.RequestOption) (string, error) <span class="cov9" title="7">{ + msgs := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} + txt, err := client.Chat(ctx, msgs, opts...) + if err != nil </span><span class="cov0" title="0">{ + return "", err + }</span> + <span class="cov9" title="7">return strings.TrimSpace(StripFences(txt)), nil</span> +} + +// reqOptsFrom builds LLM request options similar to LSP behavior. +func reqOptsFrom(cfg appconfig.App) []llm.RequestOption <span class="cov9" title="7">{ + opts := []llm.RequestOption{llm.WithMaxTokens(cfg.MaxTokens)} + if cfg.CodingTemperature != nil </span><span class="cov5" title="3">{ + opts = append(opts, llm.WithTemperature(*cfg.CodingTemperature)) + }</span> + <span class="cov9" title="7">return opts</span> +} + +// Timeout helpers to mirror LSP behavior. +func timeout10s(parent context.Context) (context.Context, context.CancelFunc) <span class="cov4" title="2">{ + return context.WithTimeout(parent, 10*time.Second) +}</span> + +func timeout8s(parent context.Context) (context.Context, context.CancelFunc) <span class="cov1" title="1">{ + return context.WithTimeout(parent, 8*time.Second) +}</span> +</pre> + + <pre class="file" id="file6" style="display: none">package hexaiaction + +import ( + "context" + "fmt" + "io" + "log" + "strings" + + "codeberg.org/snonux/hexai/internal/appconfig" + "codeberg.org/snonux/hexai/internal/logging" + "codeberg.org/snonux/hexai/internal/llmutils" +) + +// Run executes the hexai-action command flow. +func Run(ctx context.Context, stdin io.Reader, stdout, stderr io.Writer) error <span class="cov0" title="0">{ + logger := log.New(stderr, "hexai-action ", log.LstdFlags|log.Lmsgprefix) + cfg := appconfig.Load(logger) + client, err := llmutils.NewClientFromApp(cfg) + if err != nil </span><span class="cov0" title="0">{ + fmt.Fprintf(stderr, logging.AnsiBase+"hexai-action: LLM disabled: %v"+logging.AnsiReset+"\n", err) + return err + }</span> + <span class="cov0" title="0">parts, err := ParseInput(stdin) + if err != nil </span><span class="cov0" title="0">{ + fmt.Fprintln(stderr, logging.AnsiBase+"hexai-action: failed to read input"+logging.AnsiReset) + return err + }</span> + <span class="cov0" title="0">if strings.TrimSpace(parts.Selection) == "" </span><span class="cov0" title="0">{ + return fmt.Errorf("hexai-action: no input provided on stdin") + }</span> + <span class="cov0" title="0">kind, err := RunTUI() + if err != nil </span><span class="cov0" title="0">{ + return err + }</span> + <span class="cov0" title="0">out, err := executeAction(ctx, kind, parts, cfg, client, stderr) + if err != nil </span><span class="cov0" title="0">{ + return err + }</span> + <span class="cov0" title="0">io.WriteString(stdout, out) + return nil</span> +} + +func executeAction(ctx context.Context, kind ActionKind, parts InputParts, cfg appconfig.App, client chatDoer, stderr io.Writer) (string, error) <span class="cov10" title="4">{ + switch kind </span>{ + case ActionSkip:<span class="cov1" title="1"> + return parts.Selection, nil</span> + case ActionRewrite:<span class="cov1" title="1"> + instr, cleaned := ExtractInstruction(parts.Selection) + if strings.TrimSpace(instr) == "" </span><span class="cov0" title="0">{ + fmt.Fprintln(stderr, logging.AnsiBase+"hexai-action: no inline instruction found; echoing input"+logging.AnsiReset) + return parts.Selection, nil + }</span> + <span class="cov1" title="1">cctx, cancel := timeout10s(ctx) + defer cancel() + return runRewrite(cctx, cfg, client, instr, cleaned)</span> + case ActionDiagnostics:<span class="cov0" title="0"> + cctx, cancel := timeout10s(ctx) + defer cancel() + return runDiagnostics(cctx, cfg, client, parts.Diagnostics, parts.Selection)</span> + case ActionDocument:<span class="cov1" title="1"> + cctx, cancel := timeout10s(ctx) + defer cancel() + return runDocument(cctx, cfg, client, parts.Selection)</span> + case ActionGoTest:<span class="cov1" title="1"> + cctx, cancel := timeout8s(ctx) + defer cancel() + return runGoTest(cctx, cfg, client, parts.Selection)</span> + default:<span class="cov0" title="0"> + return parts.Selection, nil</span> + } +} + +// client construction is shared via internal/llmutils +</pre> + + <pre class="file" id="file7" style="display: none">package hexaiaction + +import ( + "fmt" + "strings" + + "github.com/charmbracelet/bubbles/list" + tea "github.com/charmbracelet/bubbletea" +) + +// item implements list.Item +type item struct { + title, desc string + kind ActionKind + hotkey rune +} + +func (i item) Title() string <span class="cov0" title="0">{ return i.title }</span> +func (i item) Description() string <span class="cov0" title="0">{ return i.desc }</span> +func (i item) FilterValue() string <span class="cov1" title="1">{ return i.title }</span> + +type model struct { + list list.Model + chosen ActionKind + done bool +} + +func newModel() model <span class="cov10" title="3">{ + items := []list.Item{ + item{title: "Rewrite selection", desc: "", kind: ActionRewrite, hotkey: 'r'}, + item{title: "Document code", desc: "", kind: ActionDocument, hotkey: 'c'}, + item{title: "Generate Go unit test(s)", desc: "", kind: ActionGoTest, hotkey: 't'}, + item{title: "Skip", desc: "", kind: ActionSkip, hotkey: 's'}, + } + l := list.New(items, oneLineDelegate{}, 0, 0) + l.Title = "Select Hexai Action" + l.SetShowHelp(false) + l.SetShowStatusBar(false) + l.SetFilteringEnabled(false) + return model{list: l} +}</span> + +func (m model) Init() tea.Cmd <span class="cov0" title="0">{ return nil }</span> + +func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) <span class="cov0" title="0">{ + switch msg := msg.(type) </span>{ + case tea.KeyMsg:<span class="cov0" title="0"> + return handleKey(m, msg)</span> + case tea.WindowSizeMsg:<span class="cov0" title="0"> + m.list.SetSize(msg.Width, msg.Height)</span> + } + <span class="cov0" title="0">var cmd tea.Cmd + m.list, cmd = m.list.Update(msg) + return m, cmd</span> +} + +func handleKey(m model, msg tea.KeyMsg) (tea.Model, tea.Cmd) <span class="cov10" title="3">{ + raw := msg.String() + low := strings.ToLower(raw) + switch low </span>{ + case "esc", "q":<span class="cov1" title="1"> + // Treat ESC and q as Skip/quit + m.chosen = ActionSkip + m.done = true + return m, tea.Quit</span> + case "enter":<span class="cov0" title="0"> + if it, ok := m.list.SelectedItem().(item); ok </span><span class="cov0" title="0">{ + m.chosen = it.kind + m.done = true + return m, tea.Quit + }</span> + case "j", "down":<span class="cov0" title="0"> + m.list.CursorDown()</span> + case "k", "up":<span class="cov0" title="0"> + m.list.CursorUp()</span> + case "g", "home":<span class="cov1" title="1"> + m.list.Select(0)</span> + case "end":<span class="cov0" title="0"> + if n := len(m.list.Items()); n > 0 </span><span class="cov0" title="0">{ m.list.Select(n - 1) }</span> + case "s", "r", "c", "t":<span class="cov1" title="1"> + items := m.list.Items() + for i := 0; i < len(items); i++ </span><span class="cov1" title="1">{ + if it, ok := items[i].(item); ok && strings.ToLower(string(it.hotkey)) == low </span><span class="cov1" title="1">{ + m.list.Select(i) + m.chosen = it.kind + m.done = true + return m, tea.Quit + }</span> + } + } + <span class="cov1" title="1">if raw == "G" </span><span class="cov1" title="1">{ // Shift+G jumps to end + if n := len(m.list.Items()); n > 0 </span><span class="cov1" title="1">{ m.list.Select(n - 1) }</span> + } + <span class="cov1" title="1">return m, nil</span> +} + +func (m model) View() string <span class="cov0" title="0">{ + if m.done </span><span class="cov0" title="0">{ + return "" + }</span> + <span class="cov0" title="0">return m.list.View()</span> +} + +// RunTUI returns the chosen ActionKind. +func RunTUI() (ActionKind, error) <span class="cov0" title="0">{ + p := tea.NewProgram(newModel()) + md, err := p.Run() + if err != nil </span><span class="cov0" title="0">{ + return ActionSkip, err + }</span> + <span class="cov0" title="0">if m, ok := md.(model); ok </span><span class="cov0" title="0">{ + if m.chosen == "" </span><span class="cov0" title="0">{ + return ActionSkip, nil + }</span> + <span class="cov0" title="0">return m.chosen, nil</span> + } + <span class="cov0" title="0">return ActionSkip, fmt.Errorf("unexpected model type")</span> +} +</pre> + + <pre class="file" id="file8" style="display: none">package hexaiaction + +import ( + "fmt" + "io" + + "github.com/charmbracelet/bubbles/list" + tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/lipgloss" +) + +// oneLineDelegate renders a single compact line per item, no spacing. +type oneLineDelegate struct{} + +var ( + hotStyle = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("205")) + cursorStyle = lipgloss.NewStyle().Bold(true) +) + +func (oneLineDelegate) Height() int <span class="cov8" title="10">{ return 1 }</span> +func (oneLineDelegate) Spacing() int <span class="cov10" title="16">{ return 0 }</span> +func (oneLineDelegate) Update(tea.Msg, *list.Model) tea.Cmd <span class="cov0" title="0">{ return nil }</span> +func (oneLineDelegate) Render(w io.Writer, m list.Model, index int, listItem list.Item) <span class="cov1" title="1">{ + title := listItem.FilterValue() + hk := '?' + if it, ok := listItem.(item); ok </span><span class="cov1" title="1">{ + hk = it.hotkey + }</span> + <span class="cov1" title="1">hot := hotStyle.Render(fmt.Sprintf(" (%c)", hk)) + cursor := " " + if index == m.Index() </span><span class="cov1" title="1">{ + cursor = cursorStyle.Render("> ") + }</span> + <span class="cov1" title="1">fmt.Fprintf(w, "%s%s%s", cursor, title, hot)</span> +} +</pre> + + <pre class="file" id="file9" style="display: none">// Summary: Hexai CLI runner; reads input, creates an LLM client, builds messages, // streams or collects the model output, and prints a short summary to stderr. package hexaicli import ( - "bufio" - "context" - "fmt" - "io" - "log" - "os" - "strings" - "time" + "bufio" + "context" + "fmt" + "io" + "log" + "os" + "strings" + "time" - "codeberg.org/snonux/hexai/internal/appconfig" - "codeberg.org/snonux/hexai/internal/llm" - "codeberg.org/snonux/hexai/internal/logging" + "codeberg.org/snonux/hexai/internal/appconfig" + "codeberg.org/snonux/hexai/internal/logging" + "codeberg.org/snonux/hexai/internal/llm" + "codeberg.org/snonux/hexai/internal/llmutils" ) // Run executes the Hexai CLI behavior given arguments and I/O streams. @@ -1032,24 +1464,24 @@ func Run(ctx context.Context, args []string, stdin io.Reader, stdout, stderr io. // Load configuration with a logger so file-based config is respected. logger := log.New(stderr, "hexai ", log.LstdFlags|log.Lmsgprefix) cfg := appconfig.Load(logger) - client, err := newClientFromConfig(cfg) - if err != nil </span><span class="cov1" title="1">{ - fmt.Fprintf(stderr, logging.AnsiBase+"hexai: LLM disabled: %v"+logging.AnsiReset+"\n", err) - return err - }</span> - // Inline the flow here to use configured CLI prompts. - <span class="cov0" title="0">input, rerr := readInput(stdin, args) - if rerr != nil </span><span class="cov0" title="0">{ - fmt.Fprintln(stderr, logging.AnsiBase+rerr.Error()+logging.AnsiReset) - return rerr - }</span> - <span class="cov0" title="0">printProviderInfo(stderr, client) - msgs := buildMessagesFromConfig(cfg, input) - if err := runChat(ctx, client, msgs, input, stdout, stderr); err != nil </span><span class="cov0" title="0">{ - fmt.Fprintf(stderr, logging.AnsiBase+"hexai: error: %v"+logging.AnsiReset+"\n", err) - return err - }</span> - <span class="cov0" title="0">return nil</span> + client, err := llmutils.NewClientFromApp(cfg) + if err != nil </span><span class="cov1" title="1">{ + fmt.Fprintf(stderr, logging.AnsiBase+"hexai: LLM disabled: %v"+logging.AnsiReset+"\n", err) + return err + }</span> + // Inline the flow here to use configured CLI prompts. + <span class="cov0" title="0">input, rerr := readInput(stdin, args) + if rerr != nil </span><span class="cov0" title="0">{ + fmt.Fprintln(stderr, logging.AnsiBase+rerr.Error()+logging.AnsiReset) + return rerr + }</span> + <span class="cov0" title="0">printProviderInfo(stderr, client) + msgs := buildMessagesFromConfig(cfg, input) + if err := runChat(ctx, client, msgs, input, stdout, stderr); err != nil </span><span class="cov0" title="0">{ + fmt.Fprintf(stderr, logging.AnsiBase+"hexai: error: %v"+logging.AnsiReset+"\n", err) + return err + }</span> + <span class="cov0" title="0">return nil</span> } // RunWithClient executes the CLI flow using an already-constructed client. @@ -1061,7 +1493,7 @@ func RunWithClient(ctx context.Context, args []string, stdin io.Reader, stdout, return err }</span> <span class="cov1" title="1">printProviderInfo(stderr, client) - msgs := buildMessages(input) + msgs := buildMessages(input) if err := runChat(ctx, client, msgs, input, stdout, stderr); err != nil </span><span class="cov1" title="1">{ fmt.Fprintf(stderr, logging.AnsiBase+"hexai: error: %v"+logging.AnsiReset+"\n", err) return err @@ -1090,31 +1522,7 @@ func readInput(stdin io.Reader, args []string) (string, error) <span class="cov9 } // newClientFromConfig builds an LLM client from the app config and env keys. -func newClientFromConfig(cfg appconfig.App) (llm.Client, error) <span class="cov6" title="3">{ - llmCfg := llm.Config{ - Provider: cfg.Provider, - OpenAIBaseURL: cfg.OpenAIBaseURL, - OpenAIModel: cfg.OpenAIModel, - OpenAITemperature: cfg.OpenAITemperature, - OllamaBaseURL: cfg.OllamaBaseURL, - OllamaModel: cfg.OllamaModel, - OllamaTemperature: cfg.OllamaTemperature, - CopilotBaseURL: cfg.CopilotBaseURL, - CopilotModel: cfg.CopilotModel, - CopilotTemperature: cfg.CopilotTemperature, - } - // Prefer HEXAI_OPENAI_API_KEY; fall back to OPENAI_API_KEY - oaKey := os.Getenv("HEXAI_OPENAI_API_KEY") - if strings.TrimSpace(oaKey) == "" </span><span class="cov6" title="3">{ - oaKey = os.Getenv("OPENAI_API_KEY") - }</span> - // Prefer HEXAI_COPILOT_API_KEY; fall back to COPILOT_API_KEY - <span class="cov6" title="3">cpKey := os.Getenv("HEXAI_COPILOT_API_KEY") - if strings.TrimSpace(cpKey) == "" </span><span class="cov6" title="3">{ - cpKey = os.Getenv("COPILOT_API_KEY") - }</span> - <span class="cov6" title="3">return llm.NewFromConfig(llmCfg, oaKey, cpKey)</span> -} +// client construction moved to internal/llmutils // buildMessages creates system and user messages based on input content. func buildMessages(input string) []llm.Message <span class="cov10" title="6">{ @@ -1130,33 +1538,33 @@ func buildMessages(input string) []llm.Message <span class="cov10" title="6">{ } // buildMessagesFromConfig uses configured CLI system prompts. -func buildMessagesFromConfig(cfg appconfig.App, input string) []llm.Message <span class="cov0" title="0">{ - lower := strings.ToLower(input) - system := cfg.PromptCLIDefaultSystem - if strings.Contains(lower, "explain") </span><span class="cov0" title="0">{ - if strings.TrimSpace(cfg.PromptCLIExplainSystem) != "" </span><span class="cov0" title="0">{ - system = cfg.PromptCLIExplainSystem +func buildMessagesFromConfig(cfg appconfig.App, input string) []llm.Message <span class="cov4" title="2">{ + lower := strings.ToLower(input) + system := cfg.PromptCLIDefaultSystem + if strings.Contains(lower, "explain") </span><span class="cov1" title="1">{ + if strings.TrimSpace(cfg.PromptCLIExplainSystem) != "" </span><span class="cov1" title="1">{ + system = cfg.PromptCLIExplainSystem + }</span> + } + <span class="cov4" title="2">return []llm.Message{ + {Role: "system", Content: system}, + {Role: "user", Content: input}, }</span> - } - <span class="cov0" title="0">return []llm.Message{ - {Role: "system", Content: system}, - {Role: "user", Content: input}, - }</span> } // runChat executes the chat request, handling streaming and summary output. -func runChat(ctx context.Context, client llm.Client, msgs []llm.Message, input string, out io.Writer, errw io.Writer) error <span class="cov7" title="4">{ +func runChat(ctx context.Context, client llm.Client, msgs []llm.Message, input string, out io.Writer, errw io.Writer) error <span class="cov9" title="5">{ start := time.Now() var output string - if s, ok := client.(llm.Streamer); ok </span><span class="cov1" title="1">{ + if s, ok := client.(llm.Streamer); ok </span><span class="cov4" title="2">{ var b strings.Builder - if err := s.ChatStream(ctx, msgs, func(chunk string) </span><span class="cov6" title="3">{ + if err := s.ChatStream(ctx, msgs, func(chunk string) </span><span class="cov9" title="5">{ b.WriteString(chunk) fmt.Fprint(out, chunk) }</span>); err != nil <span class="cov0" title="0">{ return err }</span> - <span class="cov1" title="1">output = b.String()</span> + <span class="cov4" title="2">output = b.String()</span> } else<span class="cov6" title="3"> { txt, err := client.Chat(ctx, msgs) if err != nil </span><span class="cov4" title="2">{ @@ -1165,7 +1573,7 @@ func runChat(ctx context.Context, client llm.Client, msgs []llm.Message, input s <span class="cov1" title="1">output = txt fmt.Fprint(out, output)</span> } - <span class="cov4" title="2">dur := time.Since(start) + <span class="cov6" title="3">dur := time.Since(start) fmt.Fprintf(errw, "\n"+logging.AnsiBase+"done provider=%s model=%s time=%s in_bytes=%d out_bytes=%d"+logging.AnsiReset+"\n", client.Name(), client.DefaultModel(), dur.Round(time.Millisecond), len(input), len(output)) return nil</span> @@ -1173,11 +1581,16 @@ func runChat(ctx context.Context, client llm.Client, msgs []llm.Message, input s // printProviderInfo writes the provider/model line to stderr. func printProviderInfo(errw io.Writer, client llm.Client) <span class="cov4" title="2">{ - fmt.Fprintf(errw, logging.AnsiBase+"provider=%s model=%s"+logging.AnsiReset+"\n", client.Name(), client.DefaultModel()) + fmt.Fprintf(errw, logging.AnsiBase+"provider=%s model=%s"+logging.AnsiReset+"\n", client.Name(), client.DefaultModel()) +}</span> + +// newClientFromConfig is kept for tests; delegates to llmutils. +func newClientFromConfig(cfg appconfig.App) (llm.Client, error) <span class="cov4" title="2">{ + return llmutils.NewClientFromApp(cfg) }</span> </pre> - <pre class="file" id="file4" style="display: none">// Summary: Hexai LSP runner; configures logging, loads config, builds the LLM client, + <pre class="file" id="file10" style="display: none">// Summary: Hexai LSP runner; configures logging, loads config, builds the LLM client, // and constructs/runs the LSP server (with injectable factory for tests). package hexailsp @@ -1218,7 +1631,7 @@ func Run(logPath string, stdin io.Reader, stdout io.Writer, stderr io.Writer) er // RunWithFactory is the testable entrypoint. When client is nil, it is built from cfg+env. // When factory is nil, lsp.NewServer is used. -func RunWithFactory(logPath string, stdin io.Reader, stdout io.Writer, logger *log.Logger, cfg appconfig.App, client llm.Client, factory ServerFactory) error <span class="cov10" title="6">{ +func RunWithFactory(logPath string, stdin io.Reader, stdout io.Writer, logger *log.Logger, cfg appconfig.App, client llm.Client, factory ServerFactory) error <span class="cov10" title="7">{ normalizeLoggingConfig(&cfg) client = buildClientIfNil(cfg, client) factory = ensureFactory(factory) @@ -1228,23 +1641,23 @@ func RunWithFactory(logPath string, stdin io.Reader, stdout io.Writer, logger *l if err := server.Run(); err != nil </span><span class="cov0" title="0">{ logger.Fatalf("server error: %v", err) }</span> - <span class="cov10" title="6">return nil</span> + <span class="cov10" title="7">return nil</span> } // --- helpers to keep RunWithFactory small --- -func normalizeLoggingConfig(cfg *appconfig.App) <span class="cov10" title="6">{ +func normalizeLoggingConfig(cfg *appconfig.App) <span class="cov10" title="7">{ cfg.ContextMode = strings.ToLower(strings.TrimSpace(cfg.ContextMode)) - if cfg.LogPreviewLimit >= 0 </span><span class="cov10" title="6">{ + if cfg.LogPreviewLimit >= 0 </span><span class="cov10" title="7">{ logging.SetLogPreviewLimit(cfg.LogPreviewLimit) }</span> } -func buildClientIfNil(cfg appconfig.App, client llm.Client) llm.Client <span class="cov10" title="6">{ +func buildClientIfNil(cfg appconfig.App, client llm.Client) llm.Client <span class="cov10" title="7">{ if client != nil </span><span class="cov0" title="0">{ return client }</span> - <span class="cov10" title="6">llmCfg := llm.Config{ + <span class="cov10" title="7">llmCfg := llm.Config{ Provider: cfg.Provider, OpenAIBaseURL: cfg.OpenAIBaseURL, OpenAIModel: cfg.OpenAIModel, @@ -1258,25 +1671,25 @@ func buildClientIfNil(cfg appconfig.App, client llm.Client) llm.Client <span cla } // Prefer HEXAI_OPENAI_API_KEY; fall back to OPENAI_API_KEY oaKey := os.Getenv("HEXAI_OPENAI_API_KEY") - if strings.TrimSpace(oaKey) == "" </span><span class="cov10" title="6">{ + if strings.TrimSpace(oaKey) == "" </span><span class="cov10" title="7">{ oaKey = os.Getenv("OPENAI_API_KEY") }</span> // Prefer HEXAI_COPILOT_API_KEY; fall back to COPILOT_API_KEY - <span class="cov10" title="6">cpKey := os.Getenv("HEXAI_COPILOT_API_KEY") - if strings.TrimSpace(cpKey) == "" </span><span class="cov10" title="6">{ + <span class="cov10" title="7">cpKey := os.Getenv("HEXAI_COPILOT_API_KEY") + if strings.TrimSpace(cpKey) == "" </span><span class="cov10" title="7">{ cpKey = os.Getenv("COPILOT_API_KEY") }</span> - <span class="cov10" title="6">if c, err := llm.NewFromConfig(llmCfg, oaKey, cpKey); err != nil </span><span class="cov1" title="1">{ + <span class="cov10" title="7">if c, err := llm.NewFromConfig(llmCfg, oaKey, cpKey); err != nil </span><span class="cov1" title="1">{ logging.Logf("lsp ", "llm disabled: %v", err) return nil - }</span> else<span class="cov9" title="5"> { + }</span> else<span class="cov9" title="6"> { logging.Logf("lsp ", "llm enabled provider=%s model=%s", c.Name(), c.DefaultModel()) return c }</span> } -func ensureFactory(factory ServerFactory) ServerFactory <span class="cov10" title="6">{ - if factory != nil </span><span class="cov9" title="5">{ +func ensureFactory(factory ServerFactory) ServerFactory <span class="cov10" title="7">{ + if factory != nil </span><span class="cov9" title="6">{ return factory }</span> <span class="cov1" title="1">return func(r io.Reader, w io.Writer, logger *log.Logger, opts lsp.ServerOptions) ServerRunner </span><span class="cov1" title="1">{ @@ -1284,46 +1697,46 @@ func ensureFactory(factory ServerFactory) ServerFactory <span class="cov10" titl }</span> } -func makeServerOptions(cfg appconfig.App, logContext bool, client llm.Client) lsp.ServerOptions <span class="cov10" title="6">{ - return lsp.ServerOptions{ - LogContext: logContext, - MaxTokens: cfg.MaxTokens, - ContextMode: cfg.ContextMode, - WindowLines: cfg.ContextWindowLines, - MaxContextTokens: cfg.MaxContextTokens, - CodingTemperature: cfg.CodingTemperature, - Client: client, - TriggerCharacters: cfg.TriggerCharacters, - ManualInvokeMinPrefix: cfg.ManualInvokeMinPrefix, - CompletionDebounceMs: cfg.CompletionDebounceMs, - CompletionThrottleMs: cfg.CompletionThrottleMs, - InlineOpen: cfg.InlineOpen, - InlineClose: cfg.InlineClose, - ChatSuffix: cfg.ChatSuffix, - ChatPrefixes: cfg.ChatPrefixes, - - // Prompts - PromptCompSysGeneral: cfg.PromptCompletionSystemGeneral, - PromptCompSysParams: cfg.PromptCompletionSystemParams, - PromptCompSysInline: cfg.PromptCompletionSystemInline, - PromptCompUserGeneral: cfg.PromptCompletionUserGeneral, - PromptCompUserParams: cfg.PromptCompletionUserParams, - PromptCompExtraHeader: cfg.PromptCompletionExtraHeader, - PromptNativeCompletion: cfg.PromptNativeCompletion, - PromptChatSystem: cfg.PromptChatSystem, - PromptRewriteSystem: cfg.PromptCodeActionRewriteSystem, - PromptDiagnosticsSystem: cfg.PromptCodeActionDiagnosticsSystem, - PromptDocumentSystem: cfg.PromptCodeActionDocumentSystem, - PromptRewriteUser: cfg.PromptCodeActionRewriteUser, - PromptDiagnosticsUser: cfg.PromptCodeActionDiagnosticsUser, - PromptDocumentUser: cfg.PromptCodeActionDocumentUser, - PromptGoTestSystem: cfg.PromptCodeActionGoTestSystem, - PromptGoTestUser: cfg.PromptCodeActionGoTestUser, - } +func makeServerOptions(cfg appconfig.App, logContext bool, client llm.Client) lsp.ServerOptions <span class="cov10" title="7">{ + return lsp.ServerOptions{ + LogContext: logContext, + MaxTokens: cfg.MaxTokens, + ContextMode: cfg.ContextMode, + WindowLines: cfg.ContextWindowLines, + MaxContextTokens: cfg.MaxContextTokens, + CodingTemperature: cfg.CodingTemperature, + Client: client, + TriggerCharacters: cfg.TriggerCharacters, + ManualInvokeMinPrefix: cfg.ManualInvokeMinPrefix, + CompletionDebounceMs: cfg.CompletionDebounceMs, + CompletionThrottleMs: cfg.CompletionThrottleMs, + InlineOpen: cfg.InlineOpen, + InlineClose: cfg.InlineClose, + ChatSuffix: cfg.ChatSuffix, + ChatPrefixes: cfg.ChatPrefixes, + + // Prompts + PromptCompSysGeneral: cfg.PromptCompletionSystemGeneral, + PromptCompSysParams: cfg.PromptCompletionSystemParams, + PromptCompSysInline: cfg.PromptCompletionSystemInline, + PromptCompUserGeneral: cfg.PromptCompletionUserGeneral, + PromptCompUserParams: cfg.PromptCompletionUserParams, + PromptCompExtraHeader: cfg.PromptCompletionExtraHeader, + PromptNativeCompletion: cfg.PromptNativeCompletion, + PromptChatSystem: cfg.PromptChatSystem, + PromptRewriteSystem: cfg.PromptCodeActionRewriteSystem, + PromptDiagnosticsSystem: cfg.PromptCodeActionDiagnosticsSystem, + PromptDocumentSystem: cfg.PromptCodeActionDocumentSystem, + PromptRewriteUser: cfg.PromptCodeActionRewriteUser, + PromptDiagnosticsUser: cfg.PromptCodeActionDiagnosticsUser, + PromptDocumentUser: cfg.PromptCodeActionDocumentUser, + PromptGoTestSystem: cfg.PromptCodeActionGoTestSystem, + PromptGoTestUser: cfg.PromptCodeActionGoTestUser, + } }</span> </pre> - <pre class="file" id="file5" style="display: none">// Summary: GitHub Copilot client for chat and Codex-style code completion. + <pre class="file" id="file11" style="display: none">// Summary: GitHub Copilot client for chat and Codex-style code completion. package llm import ( @@ -1388,16 +1801,16 @@ type copilotChatResponse struct { } // Constructor (kept among the first functions by convention) -func newCopilot(baseURL, model, apiKey string, defaultTemp *float64) Client <span class="cov3" title="8">{ - if strings.TrimSpace(baseURL) == "" </span><span class="cov0" title="0">{ +func newCopilot(baseURL, model, apiKey string, defaultTemp *float64) Client <span class="cov3" title="9">{ + if strings.TrimSpace(baseURL) == "" </span><span class="cov1" title="1">{ baseURL = "https://api.githubcopilot.com" }</span> - <span class="cov3" title="8">if strings.TrimSpace(model) == "" </span><span class="cov0" title="0">{ + <span class="cov3" title="9">if strings.TrimSpace(model) == "" </span><span class="cov0" title="0">{ // GitHub Models (Copilot API) commonly supports gpt-4o/gpt-4o-mini. // Default to a broadly available, cost-effective option. model = "gpt-4o-mini" }</span> - <span class="cov3" title="8">return copilotClient{ + <span class="cov3" title="9">return copilotClient{ httpClient: &http.Client{Timeout: 30 * time.Second}, apiKey: apiKey, baseURL: strings.TrimRight(baseURL, "/"), @@ -1718,7 +2131,7 @@ func (c copilotClient) CodeCompletion(ctx context.Context, prompt string, suffix // (no streaming decoder needed; we parse whole body lines) </pre> - <pre class="file" id="file6" style="display: none">// Summary: Ollama client against a local server; supports chat responses and streaming via /api/chat. + <pre class="file" id="file12" style="display: none">// Summary: Ollama client against a local server; supports chat responses and streaming via /api/chat. package llm import ( @@ -1761,14 +2174,14 @@ type ollamaChatResponse struct { } // Constructor (kept among the first functions by convention) -func newOllama(baseURL, model string, defaultTemp *float64) Client <span class="cov9" title="11">{ - if strings.TrimSpace(baseURL) == "" </span><span class="cov0" title="0">{ +func newOllama(baseURL, model string, defaultTemp *float64) Client <span class="cov10" title="13">{ + if strings.TrimSpace(baseURL) == "" </span><span class="cov3" title="2">{ baseURL = "http://localhost:11434" }</span> - <span class="cov9" title="11">if strings.TrimSpace(model) == "" </span><span class="cov0" title="0">{ + <span class="cov10" title="13">if strings.TrimSpace(model) == "" </span><span class="cov3" title="2">{ model = "qwen3-coder:30b-a3b-q4_K_M`" }</span> - <span class="cov9" title="11">return ollamaClient{ + <span class="cov10" title="13">return ollamaClient{ httpClient: &http.Client{Timeout: 30 * time.Second}, baseURL: strings.TrimRight(baseURL, "/"), defaultModel: model, @@ -1821,8 +2234,8 @@ func (c ollamaClient) Chat(ctx context.Context, messages []Message, opts ...Requ } // Provider metadata -func (c ollamaClient) Name() string <span class="cov1" title="1">{ return "ollama" }</span> -func (c ollamaClient) DefaultModel() string <span class="cov1" title="1">{ return c.defaultModel }</span> +func (c ollamaClient) Name() string <span class="cov3" title="2">{ return "ollama" }</span> +func (c ollamaClient) DefaultModel() string <span class="cov3" title="2">{ return c.defaultModel }</span> // Streaming support (optional) func (c ollamaClient) ChatStream(ctx context.Context, messages []Message, onDelta func(string), opts ...RequestOption) error <span class="cov4" title="3">{ @@ -1855,7 +2268,7 @@ func (c ollamaClient) ChatStream(ctx context.Context, messages []Message, onDelt }</span> <span class="cov4" title="3">dec := json.NewDecoder(resp.Body) - for </span><span class="cov6" title="4">{ + for </span><span class="cov5" title="4">{ var ev ollamaChatResponse if err := dec.Decode(&ev); err != nil </span><span class="cov1" title="1">{ if errors.Is(err, io.EOF) </span><span class="cov0" title="0">{ @@ -1888,28 +2301,28 @@ func (c ollamaClient) logStart(stream bool, o Options, messages []Message) <span <span class="cov8" title="9">c.chatLogger.LogStart(stream, o.Model, o.Temperature, o.MaxTokens, o.Stop, logMessages)</span> } -func buildOllamaRequest(o Options, messages []Message, defaultTemp *float64, stream bool) ollamaChatRequest <span class="cov10" title="12">{ +func buildOllamaRequest(o Options, messages []Message, defaultTemp *float64, stream bool) ollamaChatRequest <span class="cov9" title="12">{ req := ollamaChatRequest{Model: o.Model, Stream: stream} req.Messages = make([]oaMessage, len(messages)) - for i, m := range messages </span><span class="cov10" title="12">{ + for i, m := range messages </span><span class="cov9" title="12">{ req.Messages[i] = oaMessage{Role: m.Role, Content: m.Content} }</span> - <span class="cov10" title="12">optsMap := map[string]any{} + <span class="cov9" title="12">optsMap := map[string]any{} if o.Temperature != 0 </span><span class="cov1" title="1">{ optsMap["temperature"] = o.Temperature }</span> else<span class="cov9" title="11"> if defaultTemp != nil </span><span class="cov4" title="3">{ optsMap["temperature"] = *defaultTemp }</span> - <span class="cov10" title="12">if o.MaxTokens > 0 </span><span class="cov3" title="2">{ + <span class="cov9" title="12">if o.MaxTokens > 0 </span><span class="cov3" title="2">{ optsMap["num_predict"] = o.MaxTokens }</span> - <span class="cov10" title="12">if len(o.Stop) > 0 </span><span class="cov3" title="2">{ + <span class="cov9" title="12">if len(o.Stop) > 0 </span><span class="cov3" title="2">{ optsMap["stop"] = o.Stop }</span> - <span class="cov10" title="12">if len(optsMap) > 0 </span><span class="cov6" title="4">{ + <span class="cov9" title="12">if len(optsMap) > 0 </span><span class="cov5" title="4">{ req.Options = optsMap }</span> - <span class="cov10" title="12">return req</span> + <span class="cov9" title="12">return req</span> } func (c ollamaClient) doJSON(ctx context.Context, url string, body []byte) (*http.Response, error) <span class="cov8" title="9">{ @@ -1922,7 +2335,7 @@ func (c ollamaClient) doJSON(ctx context.Context, url string, body []byte) (*htt } func handleOllamaNon2xx(resp *http.Response, start time.Time) error <span class="cov8" title="9">{ - if resp.StatusCode >= 200 && resp.StatusCode < 300 </span><span class="cov8" title="7">{ + if resp.StatusCode >= 200 && resp.StatusCode < 300 </span><span class="cov7" title="7">{ return nil }</span> <span class="cov3" title="2">var apiErr ollamaChatResponse @@ -1936,7 +2349,7 @@ func handleOllamaNon2xx(resp *http.Response, start time.Time) error <span class= } </pre> - <pre class="file" id="file7" style="display: none">// Summary: OpenAI client implementation for chat completions with optional streaming and detailed logging. + <pre class="file" id="file13" style="display: none">// Summary: OpenAI client implementation for chat completions with optional streaming and detailed logging. package llm import ( @@ -2013,14 +2426,14 @@ type oaStreamChunk struct { // Constructor (kept among the first functions by convention) // newOpenAI constructs an OpenAI client using explicit configuration values. // The apiKey may be empty; calls will fail until a valid key is supplied. -func newOpenAI(baseURL, model, apiKey string, defaultTemp *float64) Client <span class="cov10" title="16">{ - if strings.TrimSpace(baseURL) == "" </span><span class="cov6" title="5">{ +func newOpenAI(baseURL, model, apiKey string, defaultTemp *float64) Client <span class="cov10" title="17">{ + if strings.TrimSpace(baseURL) == "" </span><span class="cov6" title="6">{ baseURL = "https://api.openai.com/v1" }</span> - <span class="cov10" title="16">if strings.TrimSpace(model) == "" </span><span class="cov6" title="5">{ + <span class="cov10" title="17">if strings.TrimSpace(model) == "" </span><span class="cov6" title="6">{ model = "gpt-4.1" }</span> - <span class="cov10" title="16">return openAIClient{ + <span class="cov10" title="17">return openAIClient{ httpClient: &http.Client{Timeout: 30 * time.Second}, apiKey: apiKey, baseURL: baseURL, @@ -2125,12 +2538,12 @@ func (c openAIClient) ChatStream(ctx context.Context, messages []Message, onDelt func (c openAIClient) logf(format string, args ...any) <span class="cov0" title="0">{ logging.Logf("llm/openai ", format, args...) }</span> // helpers extracted to keep methods small -func (c openAIClient) logStart(stream bool, o Options, messages []Message) <span class="cov8" title="9">{ +func (c openAIClient) logStart(stream bool, o Options, messages []Message) <span class="cov7" title="9">{ logMessages := make([]struct{ Role, Content string }, len(messages)) - for i, m := range messages </span><span class="cov8" title="9">{ + for i, m := range messages </span><span class="cov7" title="9">{ logMessages[i] = struct{ Role, Content string }{m.Role, m.Content} }</span> - <span class="cov8" title="9">c.chatLogger.LogStart(stream, o.Model, o.Temperature, o.MaxTokens, o.Stop, logMessages)</span> + <span class="cov7" title="9">c.chatLogger.LogStart(stream, o.Model, o.Temperature, o.MaxTokens, o.Stop, logMessages)</span> } func buildOAChatRequest(o Options, messages []Message, defaultTemp *float64, stream bool) oaChatRequest <span class="cov8" title="11">{ @@ -2239,7 +2652,7 @@ func parseOpenAIStream(resp *http.Response, start time.Time, onDelta func(string } </pre> - <pre class="file" id="file8" style="display: none">// Summary: LLM provider interfaces, request options, configuration, and factory to build a client from config. + <pre class="file" id="file14" style="display: none">// Summary: LLM provider interfaces, request options, configuration, and factory to build a client from config. package llm import ( @@ -2297,8 +2710,8 @@ type Options struct { type RequestOption func(*Options) func WithModel(model string) RequestOption <span class="cov1" title="1">{ return func(o *Options) </span><span class="cov1" title="1">{ o.Model = model }</span> } -func WithTemperature(t float64) RequestOption <span class="cov1" title="1">{ return func(o *Options) </span><span class="cov1" title="1">{ o.Temperature = t }</span> } -func WithMaxTokens(n int) RequestOption <span class="cov10" title="25">{ return func(o *Options) </span><span class="cov1" title="1">{ o.MaxTokens = n }</span> } +func WithTemperature(t float64) RequestOption <span class="cov4" title="4">{ return func(o *Options) </span><span class="cov1" title="1">{ o.Temperature = t }</span> } +func WithMaxTokens(n int) RequestOption <span class="cov10" title="32">{ return func(o *Options) </span><span class="cov1" title="1">{ o.MaxTokens = n }</span> } func WithStop(stop ...string) RequestOption <span class="cov1" title="1">{ return func(o *Options) </span><span class="cov1" title="1">{ o.Stop = append([]string{}, stop...) }</span> } @@ -2323,44 +2736,44 @@ type Config struct { // NewFromConfig creates an LLM client using only the supplied configuration. // The OpenAI API key is supplied separately and may be read from the environment // by the caller; other environment-based configuration is not used. -func NewFromConfig(cfg Config, openAIAPIKey, copilotAPIKey string) (Client, error) <span class="cov8" title="14">{ +func NewFromConfig(cfg Config, openAIAPIKey, copilotAPIKey string) (Client, error) <span class="cov8" title="18">{ p := strings.ToLower(strings.TrimSpace(cfg.Provider)) if p == "" </span><span class="cov6" title="7">{ p = "openai" }</span> - <span class="cov8" title="14">switch p </span>{ - case "openai":<span class="cov7" title="10"> + <span class="cov8" title="18">switch p </span>{ + case "openai":<span class="cov7" title="11"> if strings.TrimSpace(openAIAPIKey) == "" </span><span class="cov4" title="4">{ return nil, errors.New("missing OPENAI_API_KEY for provider openai") }</span> // Set coding-friendly default temperature if none provided - <span class="cov6" title="6">if cfg.OpenAITemperature == nil </span><span class="cov4" title="4">{ + <span class="cov6" title="7">if cfg.OpenAITemperature == nil </span><span class="cov5" title="5">{ t := 0.2 cfg.OpenAITemperature = &t }</span> - <span class="cov6" title="6">return newOpenAI(cfg.OpenAIBaseURL, cfg.OpenAIModel, openAIAPIKey, cfg.OpenAITemperature), nil</span> - case "ollama":<span class="cov1" title="1"> - if cfg.OllamaTemperature == nil </span><span class="cov1" title="1">{ + <span class="cov6" title="7">return newOpenAI(cfg.OpenAIBaseURL, cfg.OpenAIModel, openAIAPIKey, cfg.OpenAITemperature), nil</span> + case "ollama":<span class="cov3" title="3"> + if cfg.OllamaTemperature == nil </span><span class="cov2" title="2">{ t := 0.2 cfg.OllamaTemperature = &t }</span> - <span class="cov1" title="1">return newOllama(cfg.OllamaBaseURL, cfg.OllamaModel, cfg.OllamaTemperature), nil</span> - case "copilot":<span class="cov2" title="2"> + <span class="cov3" title="3">return newOllama(cfg.OllamaBaseURL, cfg.OllamaModel, cfg.OllamaTemperature), nil</span> + case "copilot":<span class="cov3" title="3"> if strings.TrimSpace(copilotAPIKey) == "" </span><span class="cov1" title="1">{ return nil, errors.New("missing COPILOT_API_KEY for provider copilot") }</span> - <span class="cov1" title="1">if cfg.CopilotTemperature == nil </span><span class="cov1" title="1">{ + <span class="cov2" title="2">if cfg.CopilotTemperature == nil </span><span class="cov2" title="2">{ t := 0.2 cfg.CopilotTemperature = &t }</span> - <span class="cov1" title="1">return newCopilot(cfg.CopilotBaseURL, cfg.CopilotModel, copilotAPIKey, cfg.CopilotTemperature), nil</span> + <span class="cov2" title="2">return newCopilot(cfg.CopilotBaseURL, cfg.CopilotModel, copilotAPIKey, cfg.CopilotTemperature), nil</span> default:<span class="cov1" title="1"> return nil, errors.New("unknown LLM provider: " + p)</span> } } </pre> - <pre class="file" id="file9" style="display: none">package llm + <pre class="file" id="file15" style="display: none">package llm import "errors" @@ -2368,7 +2781,44 @@ import "errors" func nilStringErr(msg string) (string, error) <span class="cov10" title="2">{ return "", errors.New(msg) }</span> </pre> - <pre class="file" id="file10" style="display: none">package logging + <pre class="file" id="file16" style="display: none">package llmutils + +import ( + "os" + "strings" + + "codeberg.org/snonux/hexai/internal/appconfig" + "codeberg.org/snonux/hexai/internal/llm" +) + +// NewClientFromApp builds an llm.Client using app config and environment keys. +func NewClientFromApp(cfg appconfig.App) (llm.Client, error) <span class="cov10" title="5">{ + llmCfg := llm.Config{ + Provider: cfg.Provider, + OpenAIBaseURL: cfg.OpenAIBaseURL, + OpenAIModel: cfg.OpenAIModel, + OpenAITemperature: cfg.OpenAITemperature, + OllamaBaseURL: cfg.OllamaBaseURL, + OllamaModel: cfg.OllamaModel, + OllamaTemperature: cfg.OllamaTemperature, + CopilotBaseURL: cfg.CopilotBaseURL, + CopilotModel: cfg.CopilotModel, + CopilotTemperature: cfg.CopilotTemperature, + } + oaKey := os.Getenv("HEXAI_OPENAI_API_KEY") + if strings.TrimSpace(oaKey) == "" </span><span class="cov8" title="4">{ + oaKey = os.Getenv("OPENAI_API_KEY") + }</span> + <span class="cov10" title="5">cpKey := os.Getenv("HEXAI_COPILOT_API_KEY") + if strings.TrimSpace(cpKey) == "" </span><span class="cov10" title="5">{ + cpKey = os.Getenv("COPILOT_API_KEY") + }</span> + <span class="cov10" title="5">return llm.NewFromConfig(llmCfg, oaKey, cpKey)</span> +} + +</pre> + + <pre class="file" id="file17" style="display: none">package logging // ChatLogger provides a structured way to log chat interactions. type ChatLogger struct { @@ -2376,7 +2826,7 @@ type ChatLogger struct { } // NewChatLogger creates a new ChatLogger for a given provider. -func NewChatLogger(provider string) ChatLogger <span class="cov10" title="36">{ +func NewChatLogger(provider string) ChatLogger <span class="cov10" title="40">{ return ChatLogger{Provider: provider} }</span> @@ -2392,14 +2842,14 @@ func (cl ChatLogger) LogStart(stream bool, model string, temp float64, maxTokens }</span> <span class="cov8" title="24">Logf("llm/"+cl.Provider+" ", "%s start model=%s temp=%.2f max_tokens=%d stop=%d messages=%d", chatOrStream, model, temp, maxTokens, len(stop), len(messages)) - for i, m := range messages </span><span class="cov9" title="25">{ + for i, m := range messages </span><span class="cov8" title="24">{ Logf("llm/"+cl.Provider+" ", "msg[%d] role=%s size=%d preview=%s%s%s", i, m.Role, len(m.Content), AnsiCyan, PreviewForLog(m.Content), AnsiBase) }</span> } </pre> - <pre class="file" id="file11" style="display: none">// Summary: ANSI-styled logging utilities with a bound standard logger and configurable preview truncation. + <pre class="file" id="file18" style="display: none">// Summary: ANSI-styled logging utilities with a bound standard logger and configurable preview truncation. package logging import ( @@ -2425,14 +2875,14 @@ const AnsiBase = AnsiBgBlack + AnsiGrey var std *log.Logger // Bind sets the underlying standard logger to use for Logf. -func Bind(l *log.Logger) <span class="cov3" title="4">{ std = l }</span> +func Bind(l *log.Logger) <span class="cov2" title="3">{ std = l }</span> // Logf prints a formatted message with a module prefix and base ANSI style. func Logf(prefix, format string, args ...any) <span class="cov10" title="143">{ - if std == nil </span><span class="cov9" title="102">{ + if std == nil </span><span class="cov9" title="103">{ return }</span> - <span class="cov7" title="41">msg := fmt.Sprintf(format, args...) + <span class="cov7" title="40">msg := fmt.Sprintf(format, args...) std.Print(AnsiBase + prefix + msg + AnsiReset)</span> } @@ -2441,21 +2891,21 @@ var logPreviewLimit int // 0 means unlimited // SetLogPreviewLimit sets the maximum number of characters to log for // request/response previews. Set to 0 for unlimited. -func SetLogPreviewLimit(n int) <span class="cov5" title="10">{ logPreviewLimit = n }</span> +func SetLogPreviewLimit(n int) <span class="cov4" title="9">{ logPreviewLimit = n }</span> // PreviewForLog returns the string truncated to the configured preview limit. -func PreviewForLog(s string) string <span class="cov7" title="35">{ - if logPreviewLimit > 0 </span><span class="cov3" title="5">{ - if len(s) <= logPreviewLimit </span><span class="cov2" title="2">{ +func PreviewForLog(s string) string <span class="cov7" title="32">{ + if logPreviewLimit > 0 </span><span class="cov2" title="3">{ + if len(s) <= logPreviewLimit </span><span class="cov0" title="0">{ return s }</span> <span class="cov2" title="3">return s[:logPreviewLimit] + "…"</span> } - <span class="cov7" title="30">return s</span> + <span class="cov7" title="29">return s</span> } </pre> - <pre class="file" id="file12" style="display: none">// Summary: Builds additional context snippets based on configured mode and truncates text by token heuristic. + <pre class="file" id="file19" style="display: none">// Summary: Builds additional context snippets based on configured mode and truncates text by token heuristic. package lsp import ( @@ -2541,7 +2991,7 @@ func truncateToApproxTokens(text string, maxTokens int) string <span class="cov8 } </pre> - <pre class="file" id="file13" style="display: none">// Summary: In-memory document model for the LSP; tracks text, lines, and applies edits. + <pre class="file" id="file20" style="display: none">// Summary: In-memory document model for the LSP; tracks text, lines, and applies edits. package lsp import ( @@ -2567,20 +3017,20 @@ func (s *Server) deleteDocument(uri string) <span class="cov1" title="1">{ delete(s.docs, uri) }</span> -func (s *Server) markActivity() <span class="cov3" title="4">{ +func (s *Server) markActivity() <span class="cov4" title="4">{ s.mu.Lock() s.lastInput = time.Now() s.mu.Unlock() }</span> -func (s *Server) getDocument(uri string) *document <span class="cov9" title="51">{ +func (s *Server) getDocument(uri string) *document <span class="cov10" title="52">{ s.mu.RLock() defer s.mu.RUnlock() return s.docs[uri] }</span> // splitLines splits the input string into lines, normalizing line endings to '\n'. -func splitLines(sx string) []string <span class="cov10" title="76">{ +func splitLines(sx string) []string <span class="cov9" title="42">{ sx = strings.ReplaceAll(sx, "\r\n", "\n") return strings.Split(sx, "\n") }</span> @@ -2590,28 +3040,28 @@ func (s *Server) lineContext(uri string, pos Position) (above, current, below, f if d == nil || len(d.lines) == 0 </span><span class="cov1" title="1">{ return "", "", "", "" }</span> - <span class="cov3" title="4">idx := pos.Line + <span class="cov4" title="4">idx := pos.Line if idx < 0 </span><span class="cov0" title="0">{ idx = 0 }</span> - <span class="cov3" title="4">if idx >= len(d.lines) </span><span class="cov0" title="0">{ + <span class="cov4" title="4">if idx >= len(d.lines) </span><span class="cov0" title="0">{ idx = len(d.lines) - 1 }</span> - <span class="cov3" title="4">current = d.lines[idx] - if idx-1 >= 0 </span><span class="cov3" title="4">{ + <span class="cov4" title="4">current = d.lines[idx] + if idx-1 >= 0 </span><span class="cov4" title="4">{ above = d.lines[idx-1] }</span> - <span class="cov3" title="4">if idx+1 < len(d.lines) </span><span class="cov3" title="4">{ + <span class="cov4" title="4">if idx+1 < len(d.lines) </span><span class="cov4" title="4">{ below = d.lines[idx+1] }</span> - <span class="cov3" title="4">for i := idx; i >= 0; i-- </span><span class="cov4" title="6">{ + <span class="cov4" title="4">for i := idx; i >= 0; i-- </span><span class="cov5" title="6">{ line := strings.TrimSpace(d.lines[i]) - if hasAny(line, []string{"func ", "def ", "class ", "fn ", "procedure ", "sub "}) </span><span class="cov3" title="4">{ + if hasAny(line, []string{"func ", "def ", "class ", "fn ", "procedure ", "sub "}) </span><span class="cov4" title="4">{ funcCtx = line break</span> } } - <span class="cov3" title="4">return above, current, below, funcCtx</span> + <span class="cov4" title="4">return above, current, below, funcCtx</span> } // isDefiningNewFunction returns true when the cursor appears to be within @@ -2646,7 +3096,7 @@ func (s *Server) isDefiningNewFunction(uri string, pos Position) bool <span clas return false }</span> // Scan for '{' from sigStart up to cursor position; if found before or at cursor, we're in body - <span class="cov3" title="3">for i := sigStart; i <= idx; i++ </span><span class="cov3" title="4">{ + <span class="cov3" title="3">for i := sigStart; i <= idx; i++ </span><span class="cov4" title="4">{ line := d.lines[i] brace := strings.Index(line, "{") if brace >= 0 </span><span class="cov2" title="2">{ @@ -2662,39 +3112,39 @@ func (s *Server) isDefiningNewFunction(uri string, pos Position) bool <span clas <span class="cov1" title="1">return true</span> } -func hasAny(s string, needles []string) bool <span class="cov4" title="6">{ - for _, n := range needles </span><span class="cov6" title="16">{ - if strings.Contains(s, n) </span><span class="cov3" title="4">{ +func hasAny(s string, needles []string) bool <span class="cov5" title="6">{ + for _, n := range needles </span><span class="cov7" title="16">{ + if strings.Contains(s, n) </span><span class="cov4" title="4">{ return true }</span> } <span class="cov2" title="2">return false</span> } -func trimLen(s string) string <span class="cov8" title="40">{ +func trimLen(s string) string <span class="cov9" title="42">{ s = strings.TrimSpace(s) if len(s) > 200 </span><span class="cov1" title="1">{ return s[:200] + "…" }</span> - <span class="cov8" title="39">return s</span> + <span class="cov9" title="41">return s</span> } -func firstLine(s string) string <span class="cov7" title="22">{ +func firstLine(s string) string <span class="cov8" title="25">{ s = strings.ReplaceAll(s, "\r\n", "\n") - if idx := strings.IndexByte(s, '\n'); idx >= 0 </span><span class="cov4" title="5">{ + if idx := strings.IndexByte(s, '\n'); idx >= 0 </span><span class="cov5" title="6">{ return s[:idx] }</span> - <span class="cov6" title="17">return s</span> + <span class="cov7" title="19">return s</span> } </pre> - <pre class="file" id="file14" style="display: none">// Summary: LSP JSON-RPC handlers; implements core methods and integrates with the LLM client when enabled. + <pre class="file" id="file21" style="display: none">// Summary: LSP JSON-RPC handlers; implements core methods and integrates with the LLM client when enabled. package lsp import ( - "encoding/json" - "fmt" - "strings" + "encoding/json" + "fmt" + "strings" ) func (s *Server) handle(req Request) <span class="cov2" title="2">{ @@ -2716,14 +3166,14 @@ func (s *Server) handle(req Request) <span class="cov2" title="2">{ // a line comment (//, #, --). Returns the instruction string and the selection // text cleaned of the matched instruction marker or comment. func instructionFromSelection(sel string) (string, string) <span class="cov3" title="3">{ - lines := splitLines(sel) - for idx, line := range lines </span><span class="cov3" title="3">{ - if instr, cleaned, ok := findFirstInstructionInLine(line); ok && strings.TrimSpace(instr) != "" </span><span class="cov1" title="1">{ - lines[idx] = cleaned - return instr, strings.Join(lines, "\n") - }</span> - } - <span class="cov2" title="2">return "", sel</span> + lines := splitLines(sel) + for idx, line := range lines </span><span class="cov3" title="3">{ + if instr, cleaned, ok := findFirstInstructionInLine(line); ok && strings.TrimSpace(instr) != "" </span><span class="cov1" title="1">{ + lines[idx] = cleaned + return instr, strings.Join(lines, "\n") + }</span> + } + <span class="cov2" title="2">return "", sel</span> } // findFirstInstructionInLine returns the earliest instruction marker on the @@ -2736,51 +3186,51 @@ func instructionFromSelection(sel string) (string, string) <span class="cov3" ti // - # text // - -- text func findFirstInstructionInLine(line string) (instr string, cleaned string, ok bool) <span class="cov8" title="22">{ - type cand struct { - start, end int - text string - } - cands := []cand{} - if t, l, r, ok := findStrictInlineTag(line); ok </span><span class="cov5" title="6">{ - cands = append(cands, cand{start: l, end: r, text: t}) - }</span> - <span class="cov8" title="22">if i := strings.Index(line, "/*"); i >= 0 </span><span class="cov2" title="2">{ - if j := strings.Index(line[i+2:], "*/"); j >= 0 </span><span class="cov2" title="2">{ - start := i - end := i + 2 + j + 2 - text := strings.TrimSpace(line[i+2 : i+2+j]) - cands = append(cands, cand{start: start, end: end, text: text}) - }</span> - } - <span class="cov8" title="22">if i := strings.Index(line, "<!--"); i >= 0 </span><span class="cov2" title="2">{ - if j := strings.Index(line[i+4:], "-->"); j >= 0 </span><span class="cov2" title="2">{ - start := i - end := i + 4 + j + 3 - text := strings.TrimSpace(line[i+4 : i+4+j]) - cands = append(cands, cand{start: start, end: end, text: text}) - }</span> - } - <span class="cov8" title="22">if i := strings.Index(line, "//"); i >= 0 </span><span class="cov4" title="4">{ - cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+2:])}) - }</span> - <span class="cov8" title="22">if i := strings.Index(line, "#"); i >= 0 </span><span class="cov2" title="2">{ - cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+1:])}) + type cand struct { + start, end int + text string + } + cands := []cand{} + if t, l, r, ok := findStrictInlineTag(line); ok </span><span class="cov5" title="6">{ + cands = append(cands, cand{start: l, end: r, text: t}) + }</span> + <span class="cov8" title="22">if i := strings.Index(line, "/*"); i >= 0 </span><span class="cov2" title="2">{ + if j := strings.Index(line[i+2:], "*/"); j >= 0 </span><span class="cov2" title="2">{ + start := i + end := i + 2 + j + 2 + text := strings.TrimSpace(line[i+2 : i+2+j]) + cands = append(cands, cand{start: start, end: end, text: text}) }</span> - <span class="cov8" title="22">if i := strings.Index(line, "--"); i >= 0 </span><span class="cov4" title="4">{ - cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+2:])}) + } + <span class="cov8" title="22">if i := strings.Index(line, "<!--"); i >= 0 </span><span class="cov2" title="2">{ + if j := strings.Index(line[i+4:], "-->"); j >= 0 </span><span class="cov2" title="2">{ + start := i + end := i + 4 + j + 3 + text := strings.TrimSpace(line[i+4 : i+4+j]) + cands = append(cands, cand{start: start, end: end, text: text}) }</span> - <span class="cov8" title="22">if len(cands) == 0 </span><span class="cov5" title="6">{ - return "", line, false + } + <span class="cov8" title="22">if i := strings.Index(line, "//"); i >= 0 </span><span class="cov4" title="4">{ + cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+2:])}) + }</span> + <span class="cov8" title="22">if i := strings.Index(line, "#"); i >= 0 </span><span class="cov2" title="2">{ + cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+1:])}) + }</span> + <span class="cov8" title="22">if i := strings.Index(line, "--"); i >= 0 </span><span class="cov4" title="4">{ + cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+2:])}) + }</span> + <span class="cov8" title="22">if len(cands) == 0 </span><span class="cov5" title="6">{ + return "", line, false + }</span> + // pick earliest start index + <span class="cov7" title="16">best := cands[0] + for _, c := range cands[1:] </span><span class="cov4" title="4">{ + if c.start >= 0 && (best.start < 0 || c.start < best.start) </span><span class="cov1" title="1">{ + best = c }</span> - // pick earliest start index - <span class="cov7" title="16">best := cands[0] - for _, c := range cands[1:] </span><span class="cov4" title="4">{ - if c.start >= 0 && (best.start < 0 || c.start < best.start) </span><span class="cov1" title="1">{ - best = c - }</span> - } - <span class="cov7" title="16">cleaned = strings.TrimRight(line[:best.start]+line[best.end:], " \t") - return best.text, cleaned, true</span> + } + <span class="cov7" title="16">cleaned = strings.TrimRight(line[:best.start]+line[best.end:], " \t") + return best.text, cleaned, true</span> } // diagnosticsInRange parses the CodeAction context and returns diagnostics @@ -3135,7 +3585,7 @@ func (s *Server) fallbackCompletionItems(docStr string) []CompletionItem <span c }</span> </pre> - <pre class="file" id="file15" style="display: none">// Summary: Code Action handlers and helpers split from handlers.go for clarity. + <pre class="file" id="file22" style="display: none">// Summary: Code Action handlers and helpers split from handlers.go for clarity. package lsp import ( @@ -3202,7 +3652,7 @@ func (s *Server) buildRewriteCodeAction(p CodeActionParams, sel string) *CodeAct <span class="cov2" title="2">return nil</span> } -func (s *Server) buildDiagnosticsCodeAction(p CodeActionParams, sel string) *CodeAction <span class="cov4" title="4">{ +func (s *Server) buildDiagnosticsCodeAction(p CodeActionParams, sel string) *CodeAction <span class="cov3" title="4">{ diags := s.diagnosticsInRange(p.Context, p.Range) if len(diags) == 0 </span><span class="cov2" title="2">{ return nil @@ -3219,11 +3669,11 @@ func (s *Server) buildDiagnosticsCodeAction(p CodeActionParams, sel string) *Cod return &ca</span> } -func (s *Server) resolveCodeAction(ca CodeAction) (CodeAction, bool) <span class="cov6" title="12">{ +func (s *Server) resolveCodeAction(ca CodeAction) (CodeAction, bool) <span class="cov5" title="12">{ if s.llmClient == nil || len(ca.Data) == 0 </span><span class="cov0" title="0">{ return ca, false }</span> - <span class="cov6" title="12">var payload struct { + <span class="cov5" title="12">var payload struct { Type string `json:"type"` URI string `json:"uri"` Range Range `json:"range"` @@ -3234,16 +3684,16 @@ func (s *Server) resolveCodeAction(ca CodeAction) (CodeAction, bool) <span class if err := json.Unmarshal(ca.Data, &payload); err != nil </span><span class="cov0" title="0">{ return ca, false }</span> - <span class="cov6" title="12">switch payload.Type </span>{ - case "rewrite":<span class="cov4" title="4"> - sys := s.promptRewriteSystem - user := renderTemplate(s.promptRewriteUser, map[string]string{"instruction": payload.Instruction, "selection": payload.Selection}) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} + <span class="cov5" title="12">switch payload.Type </span>{ + case "rewrite":<span class="cov3" title="4"> + sys := s.promptRewriteSystem + user := renderTemplate(s.promptRewriteUser, map[string]string{"instruction": payload.Instruction, "selection": payload.Selection}) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} opts := s.llmRequestOpts() - if text, err := s.llmClient.Chat(ctx, messages, opts...); err == nil </span><span class="cov4" title="4">{ - if out := stripCodeFences(strings.TrimSpace(text)); out != "" </span><span class="cov4" title="4">{ + if text, err := s.llmClient.Chat(ctx, messages, opts...); err == nil </span><span class="cov3" title="4">{ + if out := stripCodeFences(strings.TrimSpace(text)); out != "" </span><span class="cov3" title="4">{ edit := WorkspaceEdit{Changes: map[string][]TextEdit{payload.URI: {{Range: payload.Range, NewText: out}}}} ca.Edit = &edit return ca, true @@ -3251,37 +3701,37 @@ func (s *Server) resolveCodeAction(ca CodeAction) (CodeAction, bool) <span class } else<span class="cov0" title="0"> { logging.Logf("lsp ", "codeAction rewrite llm error: %v", err) }</span> - case "diagnostics":<span class="cov4" title="5"> - sys := s.promptDiagnosticsSystem - var b strings.Builder - for i, dgn := range payload.Diagnostics </span><span class="cov5" title="6">{ - if dgn.Source != "" </span><span class="cov0" title="0">{ - fmt.Fprintf(&b, "%d. [%s] %s\n", i+1, dgn.Source, dgn.Message) - }</span> else<span class="cov5" title="6"> { - fmt.Fprintf(&b, "%d. %s\n", i+1, dgn.Message) - }</span> - } - <span class="cov4" title="5">diagList := b.String() - user := renderTemplate(s.promptDiagnosticsUser, map[string]string{"diagnostics": diagList, "selection": payload.Selection}) - ctx, cancel := context.WithTimeout(context.Background(), 12*time.Second) - defer cancel() - messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} - opts := s.llmRequestOpts() - if text, err := s.llmClient.Chat(ctx, messages, opts...); err == nil </span><span class="cov4" title="5">{ - if out := stripCodeFences(strings.TrimSpace(text)); out != "" </span><span class="cov4" title="5">{ - edit := WorkspaceEdit{Changes: map[string][]TextEdit{payload.URI: {{Range: payload.Range, NewText: out}}}} - ca.Edit = &edit - return ca, true - }</span> - } else<span class="cov0" title="0"> { - logging.Logf("lsp ", "codeAction diagnostics llm error: %v", err) - }</span> - case "document":<span class="cov3" title="3"> - sys := s.promptDocumentSystem - user := renderTemplate(s.promptDocumentUser, map[string]string{"selection": payload.Selection}) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} + case "diagnostics":<span class="cov4" title="5"> + sys := s.promptDiagnosticsSystem + var b strings.Builder + for i, dgn := range payload.Diagnostics </span><span class="cov4" title="6">{ + if dgn.Source != "" </span><span class="cov0" title="0">{ + fmt.Fprintf(&b, "%d. [%s] %s\n", i+1, dgn.Source, dgn.Message) + }</span> else<span class="cov4" title="6"> { + fmt.Fprintf(&b, "%d. %s\n", i+1, dgn.Message) + }</span> + } + <span class="cov4" title="5">diagList := b.String() + user := renderTemplate(s.promptDiagnosticsUser, map[string]string{"diagnostics": diagList, "selection": payload.Selection}) + ctx, cancel := context.WithTimeout(context.Background(), 12*time.Second) + defer cancel() + messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} + opts := s.llmRequestOpts() + if text, err := s.llmClient.Chat(ctx, messages, opts...); err == nil </span><span class="cov4" title="5">{ + if out := stripCodeFences(strings.TrimSpace(text)); out != "" </span><span class="cov4" title="5">{ + edit := WorkspaceEdit{Changes: map[string][]TextEdit{payload.URI: {{Range: payload.Range, NewText: out}}}} + ca.Edit = &edit + return ca, true + }</span> + } else<span class="cov0" title="0"> { + logging.Logf("lsp ", "codeAction diagnostics llm error: %v", err) + }</span> + case "document":<span class="cov3" title="3"> + sys := s.promptDocumentSystem + user := renderTemplate(s.promptDocumentUser, map[string]string{"selection": payload.Selection}) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} opts := s.llmRequestOpts() if text, err := s.llmClient.Chat(ctx, messages, opts...); err == nil </span><span class="cov3" title="3">{ if out := stripCodeFences(strings.TrimSpace(text)); out != "" </span><span class="cov3" title="3">{ @@ -3324,58 +3774,58 @@ func (s *Server) handleCodeActionResolve(req Request) <span class="cov2" title=" // diagnosticsInRange parses the CodeAction context and returns diagnostics // that overlap the given selection range. If the context is missing or does // not contain diagnostics, returns an empty slice. -func (s *Server) diagnosticsInRange(ctxRaw json.RawMessage, sel Range) []Diagnostic <span class="cov4" title="5">{ - if len(ctxRaw) == 0 </span><span class="cov2" title="2">{ +func (s *Server) diagnosticsInRange(ctxRaw json.RawMessage, sel Range) []Diagnostic <span class="cov4" title="7">{ + if len(ctxRaw) == 0 </span><span class="cov3" title="3">{ return nil }</span> - <span class="cov3" title="3">var ctx CodeActionContext + <span class="cov3" title="4">var ctx CodeActionContext if err := json.Unmarshal(ctxRaw, &ctx); err != nil </span><span class="cov0" title="0">{ return nil }</span> - <span class="cov3" title="3">if len(ctx.Diagnostics) == 0 </span><span class="cov0" title="0">{ + <span class="cov3" title="4">if len(ctx.Diagnostics) == 0 </span><span class="cov0" title="0">{ return nil }</span> - <span class="cov3" title="3">out := make([]Diagnostic, 0, len(ctx.Diagnostics)) - for _, d := range ctx.Diagnostics </span><span class="cov5" title="6">{ - if rangesOverlap(d.Range, sel) </span><span class="cov3" title="3">{ + <span class="cov3" title="4">out := make([]Diagnostic, 0, len(ctx.Diagnostics)) + for _, d := range ctx.Diagnostics </span><span class="cov4" title="7">{ + if rangesOverlap(d.Range, sel) </span><span class="cov3" title="4">{ out = append(out, d) }</span> } - <span class="cov3" title="3">return out</span> + <span class="cov3" title="4">return out</span> } // rangesOverlap reports whether two LSP ranges overlap at all. -func rangesOverlap(a, b Range) bool <span class="cov5" title="8">{ +func rangesOverlap(a, b Range) bool <span class="cov5" title="10">{ // Normalize ordering if greaterPos(a.Start, a.End) </span><span class="cov0" title="0">{ a.Start, a.End = a.End, a.Start }</span> - <span class="cov5" title="8">if greaterPos(b.Start, b.End) </span><span class="cov0" title="0">{ + <span class="cov5" title="10">if greaterPos(b.Start, b.End) </span><span class="cov0" title="0">{ b.Start, b.End = b.End, b.Start }</span> // a ends before b starts - <span class="cov5" title="8">if lessPos(a.End, b.Start) </span><span class="cov3" title="3">{ + <span class="cov5" title="10">if lessPos(a.End, b.Start) </span><span class="cov3" title="3">{ return false }</span> // b ends before a starts - <span class="cov4" title="5">if lessPos(b.End, a.Start) </span><span class="cov1" title="1">{ + <span class="cov4" title="7">if lessPos(b.End, a.Start) </span><span class="cov1" title="1">{ return false }</span> - <span class="cov4" title="4">return true</span> + <span class="cov4" title="6">return true</span> } -func lessPos(p, q Position) bool <span class="cov7" title="14">{ - if p.Line != q.Line </span><span class="cov6" title="10">{ +func lessPos(p, q Position) bool <span class="cov6" title="19">{ + if p.Line != q.Line </span><span class="cov6" title="14">{ return p.Line < q.Line }</span> - <span class="cov4" title="4">return p.Character < q.Character</span> + <span class="cov4" title="5">return p.Character < q.Character</span> } -func greaterPos(p, q Position) bool <span class="cov7" title="17">{ - if p.Line != q.Line </span><span class="cov5" title="7">{ +func greaterPos(p, q Position) bool <span class="cov6" title="22">{ + if p.Line != q.Line </span><span class="cov5" title="11">{ return p.Line > q.Line }</span> - <span class="cov6" title="10">return p.Character > q.Character</span> + <span class="cov5" title="11">return p.Character > q.Character</span> } // --- Go unit test code action --- @@ -3423,28 +3873,28 @@ func (s *Server) buildDocumentCodeAction(p CodeActionParams, sel string) *CodeAc return &ca</span> } -func (s *Server) resolveGoTest(uri string, pos Position) (WorkspaceEdit, string, Range, bool) <span class="cov2" title="2">{ +func (s *Server) resolveGoTest(uri string, pos Position) (WorkspaceEdit, string, Range, bool) <span class="cov3" title="3">{ path := strings.TrimPrefix(uri, "file://") if !strings.HasSuffix(path, ".go") || strings.HasSuffix(path, "_test.go") </span><span class="cov0" title="0">{ return WorkspaceEdit{}, "", Range{}, false }</span> // Load source text - <span class="cov2" title="2">_, lines := s.loadFileText(uri) + <span class="cov3" title="3">_, lines := s.loadFileText(uri) if len(lines) == 0 </span><span class="cov0" title="0">{ return WorkspaceEdit{}, "", Range{}, false }</span> - <span class="cov2" title="2">pkg := parseGoPackageName(lines) + <span class="cov3" title="3">pkg := parseGoPackageName(lines) fnStart, fnEnd := findGoFunctionAtLine(lines, pos.Line) if fnStart < 0 || fnEnd < fnStart </span><span class="cov0" title="0">{ return WorkspaceEdit{}, "", Range{}, false }</span> - <span class="cov2" title="2">funcCode := strings.Join(lines[fnStart:fnEnd+1], "\n") + <span class="cov3" title="3">funcCode := strings.Join(lines[fnStart:fnEnd+1], "\n") testFunc := s.generateGoTestFunction(funcCode) if strings.TrimSpace(testFunc) == "" </span><span class="cov0" title="0">{ return WorkspaceEdit{}, "", Range{}, false }</span> // Determine test file target - <span class="cov2" title="2">testPath := strings.TrimSuffix(path, ".go") + "_test.go" + <span class="cov3" title="3">testPath := strings.TrimSuffix(path, ".go") + "_test.go" testURI := "file://" + testPath // If test file exists, append test at EOF; otherwise, create a new file with package+import @@ -3482,11 +3932,11 @@ func (s *Server) resolveGoTest(uri string, pos Position) (WorkspaceEdit, string, return we, testURI, jump, true</span> } // Create new file content - <span class="cov1" title="1">var content strings.Builder + <span class="cov2" title="2">var content strings.Builder if pkg == "" </span><span class="cov0" title="0">{ pkg = filepath.Base(filepath.Dir(path)) }</span> - <span class="cov1" title="1">content.WriteString("package ") + <span class="cov2" title="2">content.WriteString("package ") content.WriteString(pkg) content.WriteString("\n\n") content.WriteString("import (\n\t\"testing\"\n)\n\n") @@ -3501,69 +3951,69 @@ func (s *Server) resolveGoTest(uri string, pos Position) (WorkspaceEdit, string, pre := content.String() idx := strings.Index(pre, "func Test") startLine := 0 - if idx > 0 </span><span class="cov1" title="1">{ + if idx > 0 </span><span class="cov2" title="2">{ before := pre[:idx] startLine = strings.Count(before, "\n") }</span> - <span class="cov1" title="1">jump := Range{Start: Position{Line: startLine, Character: 0}, End: Position{Line: startLine, Character: 0}} + <span class="cov2" title="2">jump := Range{Start: Position{Line: startLine, Character: 0}, End: Position{Line: startLine, Character: 0}} return we, testURI, jump, true</span> } // loadFileText returns the file content and lines. It prefers the open document; otherwise reads from disk. -func (s *Server) loadFileText(uri string) (string, []string) <span class="cov3" title="3">{ +func (s *Server) loadFileText(uri string) (string, []string) <span class="cov3" title="4">{ if d := s.getDocument(uri); d != nil </span><span class="cov2" title="2">{ return d.text, append([]string{}, d.lines...) }</span> - <span class="cov1" title="1">path := strings.TrimPrefix(uri, "file://") + <span class="cov2" title="2">path := strings.TrimPrefix(uri, "file://") b, err := os.ReadFile(path) if err != nil </span><span class="cov0" title="0">{ return "", nil }</span> - <span class="cov1" title="1">txt := string(b) + <span class="cov2" title="2">txt := string(b) return txt, splitLines(txt)</span> } -func fileExists(path string) bool <span class="cov2" title="2">{ +func fileExists(path string) bool <span class="cov3" title="3">{ if _, err := os.Stat(path); err == nil </span><span class="cov1" title="1">{ return true }</span> - <span class="cov1" title="1">return false</span> + <span class="cov2" title="2">return false</span> } // parseGoPackageName returns the package name from file lines, or empty if not found. -func parseGoPackageName(lines []string) string <span class="cov4" title="4">{ - for _, ln := range lines </span><span class="cov4" title="5">{ +func parseGoPackageName(lines []string) string <span class="cov4" title="5">{ + for _, ln := range lines </span><span class="cov4" title="6">{ t := strings.TrimSpace(ln) - if strings.HasPrefix(t, "package ") </span><span class="cov3" title="3">{ + if strings.HasPrefix(t, "package ") </span><span class="cov3" title="4">{ name := strings.TrimSpace(strings.TrimPrefix(t, "package ")) // strip inline comments if i := strings.Index(name, " "); i >= 0 </span><span class="cov1" title="1">{ name = name[:i] }</span> - <span class="cov3" title="3">if i := strings.Index(name, "\t"); i >= 0 </span><span class="cov0" title="0">{ + <span class="cov3" title="4">if i := strings.Index(name, "\t"); i >= 0 </span><span class="cov0" title="0">{ name = name[:i] }</span> - <span class="cov3" title="3">if i := strings.Index(name, "//"); i >= 0 </span><span class="cov0" title="0">{ + <span class="cov3" title="4">if i := strings.Index(name, "//"); i >= 0 </span><span class="cov0" title="0">{ name = strings.TrimSpace(name[:i]) }</span> - <span class="cov3" title="3">return name</span> + <span class="cov3" title="4">return name</span> } } <span class="cov1" title="1">return ""</span> } // findGoFunctionAtLine finds the function enclosing or preceding line idx. Returns start and end line indexes. -func findGoFunctionAtLine(lines []string, idx int) (int, int) <span class="cov2" title="2">{ +func findGoFunctionAtLine(lines []string, idx int) (int, int) <span class="cov3" title="4">{ if idx < 0 </span><span class="cov0" title="0">{ idx = 0 }</span> - <span class="cov2" title="2">if idx >= len(lines) </span><span class="cov0" title="0">{ + <span class="cov3" title="4">if idx >= len(lines) </span><span class="cov0" title="0">{ idx = len(lines) - 1 }</span> // find signature start - <span class="cov2" title="2">start := -1 - for i := idx; i >= 0; i-- </span><span class="cov2" title="2">{ - if strings.Contains(lines[i], "func ") </span><span class="cov2" title="2">{ + <span class="cov3" title="4">start := -1 + for i := idx; i >= 0; i-- </span><span class="cov3" title="4">{ + if strings.Contains(lines[i], "func ") </span><span class="cov3" title="4">{ start = i break</span> } @@ -3571,45 +4021,45 @@ func findGoFunctionAtLine(lines []string, idx int) (int, int) <span class="cov2" break</span> } } - <span class="cov2" title="2">if start == -1 </span><span class="cov0" title="0">{ + <span class="cov3" title="4">if start == -1 </span><span class="cov0" title="0">{ return -1, -1 }</span> // find first '{' - <span class="cov2" title="2">depth := 0 + <span class="cov3" title="4">depth := 0 seenOpen := false - for i := start; i < len(lines); i++ </span><span class="cov2" title="2">{ + for i := start; i < len(lines); i++ </span><span class="cov4" title="5">{ ln := lines[i] - for j := 0; j < len(ln); j++ </span><span class="cov10" title="47">{ + for j := 0; j < len(ln); j++ </span><span class="cov10" title="106">{ switch ln[j] </span>{ - case '{':<span class="cov2" title="2"> + case '{':<span class="cov3" title="3"> depth++ seenOpen = true</span> - case '}':<span class="cov2" title="2"> - if depth > 0 </span><span class="cov2" title="2">{ + case '}':<span class="cov3" title="3"> + if depth > 0 </span><span class="cov3" title="3">{ depth-- }</span> - <span class="cov2" title="2">if seenOpen && depth == 0 </span><span class="cov2" title="2">{ + <span class="cov3" title="3">if seenOpen && depth == 0 </span><span class="cov3" title="3">{ return start, i }</span> } } } // if never saw '{', assume single-line prototype; return that line - <span class="cov0" title="0">if !seenOpen </span><span class="cov0" title="0">{ + <span class="cov1" title="1">if !seenOpen </span><span class="cov1" title="1">{ return start, start }</span> <span class="cov0" title="0">return start, -1</span> } // generateGoTestFunction uses LLM to produce a test function; falls back to a stub when unavailable. -func (s *Server) generateGoTestFunction(funcCode string) string <span class="cov3" title="3">{ - if s.llmClient != nil </span><span class="cov2" title="2">{ - sys := s.promptGoTestSystem - user := renderTemplate(s.promptGoTestUser, map[string]string{"function": funcCode}) - ctx, cancel := context.WithTimeout(context.Background(), 8*time.Second) - defer cancel() - messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} - opts := s.llmRequestOpts() +func (s *Server) generateGoTestFunction(funcCode string) string <span class="cov3" title="4">{ + if s.llmClient != nil </span><span class="cov2" title="2">{ + sys := s.promptGoTestSystem + user := renderTemplate(s.promptGoTestUser, map[string]string{"function": funcCode}) + ctx, cancel := context.WithTimeout(context.Background(), 8*time.Second) + defer cancel() + messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} + opts := s.llmRequestOpts() if out, err := s.llmClient.Chat(ctx, messages, opts...); err == nil </span><span class="cov2" title="2">{ cleaned := strings.TrimSpace(stripCodeFences(out)) if cleaned != "" </span><span class="cov2" title="2">{ @@ -3620,22 +4070,22 @@ func (s *Server) generateGoTestFunction(funcCode string) string <span class="cov }</span> } // Fallback stub - <span class="cov1" title="1">name := deriveGoFuncName(funcCode) + <span class="cov2" title="2">name := deriveGoFuncName(funcCode) if name == "" </span><span class="cov0" title="0">{ name = "Function" }</span> - <span class="cov1" title="1">return fmt.Sprintf("func Test%s(t *testing.T) {\n\t// TODO: implement tests for %s\n}\n", exportName(name), name)</span> + <span class="cov2" title="2">return fmt.Sprintf("func Test%s(t *testing.T) {\n\t// TODO: implement tests for %s\n}\n", exportName(name), name)</span> } // deriveGoFuncName extracts function or method name from code. -func deriveGoFuncName(code string) string <span class="cov3" title="3">{ +func deriveGoFuncName(code string) string <span class="cov3" title="4">{ // look for line starting with func line := firstLine(code) line = strings.TrimSpace(line) if !strings.HasPrefix(line, "func ") </span><span class="cov0" title="0">{ return "" }</span> - <span class="cov3" title="3">rest := strings.TrimSpace(strings.TrimPrefix(line, "func ")) + <span class="cov3" title="4">rest := strings.TrimSpace(strings.TrimPrefix(line, "func ")) // method receiver if strings.HasPrefix(rest, "(") </span><span class="cov1" title="1">{ // find ")" @@ -3644,25 +4094,25 @@ func deriveGoFuncName(code string) string <span class="cov3" title="3">{ }</span> } // now rest should start with Name( - <span class="cov3" title="3">if i := strings.Index(rest, "("); i > 0 </span><span class="cov3" title="3">{ + <span class="cov3" title="4">if i := strings.Index(rest, "("); i > 0 </span><span class="cov3" title="4">{ return strings.TrimSpace(rest[:i]) }</span> <span class="cov0" title="0">return ""</span> } -func exportName(name string) string <span class="cov1" title="1">{ +func exportName(name string) string <span class="cov2" title="2">{ if name == "" </span><span class="cov0" title="0">{ return name }</span> - <span class="cov1" title="1">r := []rune(name) + <span class="cov2" title="2">r := []rune(name) if r[0] >= 'a' && r[0] <= 'z' </span><span class="cov0" title="0">{ r[0] = r[0] - ('a' - 'A') }</span> - <span class="cov1" title="1">return string(r)</span> + <span class="cov2" title="2">return string(r)</span> } </pre> - <pre class="file" id="file16" style="display: none">// Summary: Completion handlers split from handlers.go to reduce file size and isolate feature logic. + <pre class="file" id="file23" style="display: none">// Summary: Completion handlers split from handlers.go to reduce file size and isolate feature logic. package lsp import ( @@ -3889,13 +4339,13 @@ func (s *Server) tryProviderNativeCompletion(current string, p CompletionParams, if !ok </span><span class="cov6" title="6">{ return nil, false }</span> - <span class="cov6" title="5">before, after := s.docBeforeAfter(p.TextDocument.URI, p.Position) - path := strings.TrimPrefix(p.TextDocument.URI, "file://") - // Build provider-native prompt from template - prompt := renderTemplate(s.promptNativeCompletion, map[string]string{ - "path": path, - "before": before, - }) + <span class="cov6" title="5">before, after := s.docBeforeAfter(p.TextDocument.URI, p.Position) + path := strings.TrimPrefix(p.TextDocument.URI, "file://") + // Build provider-native prompt from template + prompt := renderTemplate(s.promptNativeCompletion, map[string]string{ + "path": path, + "before": before, + }) lang := "" temp := 0.0 if s.codingTemperature != nil </span><span class="cov0" title="0">{ @@ -4004,34 +4454,34 @@ func (s *Server) waitForThrottle(ctx context.Context) bool <span class="cov8" ti // buildCompletionMessages constructs the LLM messages for completion. func (s *Server) buildCompletionMessages(inlinePrompt, hasExtra bool, extraText string, inParams bool, p CompletionParams, above, current, below, funcCtx string) []llm.Message <span class="cov8" title="13">{ - // Vars for templates - vars := map[string]string{ - "file": p.TextDocument.URI, - "function": funcCtx, - "above": above, - "current": current, - "below": below, - "char": fmt.Sprintf("%d", p.Position.Character), - } - sys := s.promptCompSysGeneral - userTpl := s.promptCompUserGeneral - if inParams </span><span class="cov3" title="2">{ - sys = s.promptCompSysParams - userTpl = s.promptCompUserParams - }</span> - <span class="cov8" title="13">if inlinePrompt && strings.TrimSpace(s.promptCompSysInline) != "" </span><span class="cov1" title="1">{ - sys = s.promptCompSysInline - }</span> - <span class="cov8" title="13">user := renderTemplate(userTpl, vars) - messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} - if hasExtra && strings.TrimSpace(extraText) != "" </span><span class="cov1" title="1">{ - extra := renderTemplate(s.promptCompExtraHeader, map[string]string{"context": extraText}) - if strings.TrimSpace(extra) == "" </span><span class="cov0" title="0">{ - extra = extraText - }</span> - <span class="cov1" title="1">messages = append(messages, llm.Message{Role: "user", Content: extra})</span> - } - <span class="cov8" title="13">return messages</span> + // Vars for templates + vars := map[string]string{ + "file": p.TextDocument.URI, + "function": funcCtx, + "above": above, + "current": current, + "below": below, + "char": fmt.Sprintf("%d", p.Position.Character), + } + sys := s.promptCompSysGeneral + userTpl := s.promptCompUserGeneral + if inParams </span><span class="cov3" title="2">{ + sys = s.promptCompSysParams + userTpl = s.promptCompUserParams + }</span> + <span class="cov8" title="13">if inlinePrompt && strings.TrimSpace(s.promptCompSysInline) != "" </span><span class="cov1" title="1">{ + sys = s.promptCompSysInline + }</span> + <span class="cov8" title="13">user := renderTemplate(userTpl, vars) + messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} + if hasExtra && strings.TrimSpace(extraText) != "" </span><span class="cov1" title="1">{ + extra := renderTemplate(s.promptCompExtraHeader, map[string]string{"context": extraText}) + if strings.TrimSpace(extra) == "" </span><span class="cov0" title="0">{ + extra = extraText + }</span> + <span class="cov1" title="1">messages = append(messages, llm.Message{Role: "user", Content: extra})</span> + } + <span class="cov8" title="13">return messages</span> } // postProcessCompletion normalizes and deduplicates completion text and applies indentation rules. @@ -4057,7 +4507,7 @@ func (s *Server) postProcessCompletion(text string, leftOfCursor string, current } </pre> - <pre class="file" id="file17" style="display: none">// Summary: Document open/change/close and in-editor chat handlers split out of handlers.go. + <pre class="file" id="file24" style="display: none">// Summary: Document open/change/close and in-editor chat handlers split out of handlers.go. package lsp import ( @@ -4215,9 +4665,9 @@ func (s *Server) detectAndHandleChat(uri string) <span class="cov7" title="5">{ go func(prompt string, remove int) </span><span class="cov5" title="3">{ ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) defer cancel() - sys := s.promptChatSystem - // Build short conversation history from the document above this line - history := s.buildChatHistory(uri, lineIdx, prompt) + sys := s.promptChatSystem + // Build short conversation history from the document above this line + history := s.buildChatHistory(uri, lineIdx, prompt) msgs := append([]llm.Message{{Role: "system", Content: sys}}, history...) opts := s.llmRequestOpts() logging.Logf("lsp ", "chat llm=requesting model=%s", s.llmClient.DefaultModel()) @@ -4386,7 +4836,7 @@ func (s *Server) deferShowDocument(uri string, sel Range) <span class="cov1" tit } </pre> - <pre class="file" id="file18" style="display: none">// Summary: ExecuteCommand handler to support post-edit navigation (jump to generated test). + <pre class="file" id="file25" style="display: none">// Summary: ExecuteCommand handler to support post-edit navigation (jump to generated test). package lsp import ( @@ -4422,7 +4872,7 @@ func (s *Server) handleExecuteCommand(req Request) <span class="cov8" title="1"> } </pre> - <pre class="file" id="file19" style="display: none">// Summary: Initialization and lifecycle handlers split from handlers.go. + <pre class="file" id="file26" style="display: none">// Summary: Initialization and lifecycle handlers split from handlers.go. package lsp import ( @@ -4465,7 +4915,7 @@ func (s *Server) handleExit() <span class="cov0" title="0">{ }</span> </pre> - <pre class="file" id="file20" style="display: none">// Summary: Generic LSP helpers shared across handlers (LLM opts, prompts, text utils, counters). + <pre class="file" id="file27" style="display: none">// Summary: Generic LSP helpers shared across handlers (LLM opts, prompts, text utils, counters). package lsp import ( @@ -4474,6 +4924,7 @@ import ( "codeberg.org/snonux/hexai/internal/llm" "codeberg.org/snonux/hexai/internal/logging" + "codeberg.org/snonux/hexai/internal/textutil" ) // Configurable inline trigger characters (default to '>') used by free helpers below. @@ -4530,27 +4981,17 @@ func (s *Server) logLLMStats() <span class="cov5" title="8">{ } // Completion prompt builders and filters -func inParamList(current string, cursor int) bool <span class="cov5" title="11">{ - if !strings.Contains(current, "func ") </span><span class="cov4" title="6">{ +func inParamList(current string, cursor int) bool <span class="cov6" title="13">{ + if !strings.Contains(current, "func ") </span><span class="cov4" title="7">{ return false }</span> - <span class="cov4" title="5">open := strings.Index(current, "(") + <span class="cov4" title="6">open := strings.Index(current, "(") close := strings.Index(current, ")") return open >= 0 && cursor > open && (close == -1 || cursor <= close)</span> } // renderTemplate performs simple {{var}} replacement in a template string. -func renderTemplate(t string, vars map[string]string) string <span class="cov7" title="33">{ - if t == "" </span><span class="cov5" title="9">{ - return t - }</span> - <span class="cov7" title="24">out := t - for k, v := range vars </span><span class="cov9" title="79">{ - placeholder := "{{" + k + "}}" - out = strings.ReplaceAll(out, placeholder, v) - }</span> - <span class="cov7" title="24">return out</span> -} +func renderTemplate(t string, vars map[string]string) string <span class="cov7" title="33">{ return textutil.RenderTemplate(t, vars) }</span> func computeTextEditAndFilter(cleaned string, inParams bool, current string, p CompletionParams) (*TextEdit, string) <span class="cov6" title="17">{ if inParams </span><span class="cov3" title="3">{ @@ -4579,63 +5020,63 @@ func computeTextEditAndFilter(cleaned string, inParams bool, current string, p C return te, filter</span> } -func computeWordStart(current string, at int) int <span class="cov7" title="23">{ +func computeWordStart(current string, at int) int <span class="cov7" title="24">{ if at > len(current) </span><span class="cov0" title="0">{ at = len(current) }</span> - <span class="cov7" title="23">for at > 0 </span><span class="cov8" title="39">{ + <span class="cov7" title="24">for at > 0 </span><span class="cov8" title="49">{ ch := current[at-1] - if (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9') || ch == '_' </span><span class="cov6" title="21">{ + if (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9') || ch == '_' </span><span class="cov7" title="31">{ at-- continue</span> } <span class="cov6" title="18">break</span> } - <span class="cov7" title="23">return at</span> + <span class="cov7" title="24">return at</span> } -func isIdentChar(ch byte) bool <span class="cov7" title="24">{ +func isIdentChar(ch byte) bool <span class="cov7" title="26">{ return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9') || ch == '_' }</span> // Inline prompt utilities -func lineHasInlinePrompt(line string) bool <span class="cov6" title="20">{ - if _, _, _, ok := findStrictInlineTag(line); ok </span><span class="cov3" title="3">{ +func lineHasInlinePrompt(line string) bool <span class="cov6" title="21">{ + if _, _, _, ok := findStrictInlineTag(line); ok </span><span class="cov3" title="4">{ return true }</span> <span class="cov6" title="17">return hasDoubleOpenTrigger(line)</span> } -func leadingIndent(line string) string <span class="cov3" title="3">{ +func leadingIndent(line string) string <span class="cov3" title="4">{ i := 0 - for i < len(line) </span><span class="cov5" title="10">{ - if line[i] == ' ' || line[i] == '\t' </span><span class="cov4" title="7">{ + for i < len(line) </span><span class="cov6" title="14">{ + if line[i] == ' ' || line[i] == '\t' </span><span class="cov5" title="10">{ i++ continue</span> } - <span class="cov3" title="3">break</span> + <span class="cov3" title="4">break</span> } - <span class="cov3" title="3">if i == 0 </span><span class="cov0" title="0">{ + <span class="cov3" title="4">if i == 0 </span><span class="cov0" title="0">{ return "" }</span> - <span class="cov3" title="3">return line[:i]</span> + <span class="cov3" title="4">return line[:i]</span> } -func applyIndent(indent, suggestion string) string <span class="cov3" title="3">{ +func applyIndent(indent, suggestion string) string <span class="cov3" title="4">{ if indent == "" || suggestion == "" </span><span class="cov0" title="0">{ return suggestion }</span> - <span class="cov3" title="3">lines := splitLines(suggestion) - for i, ln := range lines </span><span class="cov5" title="8">{ + <span class="cov3" title="4">lines := splitLines(suggestion) + for i, ln := range lines </span><span class="cov5" title="10">{ if strings.TrimSpace(ln) == "" </span><span class="cov1" title="1">{ continue</span> } - <span class="cov4" title="7">if strings.HasPrefix(ln, indent) </span><span class="cov0" title="0">{ + <span class="cov5" title="9">if strings.HasPrefix(ln, indent) </span><span class="cov0" title="0">{ continue</span> } - <span class="cov4" title="7">lines[i] = indent + ln</span> + <span class="cov5" title="9">lines[i] = indent + ln</span> } - <span class="cov3" title="3">return strings.Join(lines, "\n")</span> + <span class="cov3" title="4">return strings.Join(lines, "\n")</span> } // --- Inline marker parsing and general string utilities --- @@ -4643,36 +5084,36 @@ func applyIndent(indent, suggestion string) string <span class="cov3" title="3"> // findStrictInlineTag finds >text> (configurable), with no space after the first // opening marker and no space immediately before the closing marker. Returns the // text between markers, the start index, the end index just after closing, and ok. -func findStrictInlineTag(line string) (string, int, int, bool) <span class="cov8" title="49">{ +func findStrictInlineTag(line string) (string, int, int, bool) <span class="cov8" title="50">{ pos := 0 - for pos < len(line) </span><span class="cov9" title="64">{ + for pos < len(line) </span><span class="cov9" title="65">{ // find opening marker j := strings.IndexByte(line[pos:], inlineOpenChar) if j < 0 </span><span class="cov7" title="27">{ return "", 0, 0, false }</span> - <span class="cov8" title="37">j += pos + <span class="cov8" title="38">j += pos // ensure single open (not double) and non-space after if j+1 >= len(line) || line[j+1] == inlineOpenChar || line[j+1] == ' ' </span><span class="cov6" title="21">{ pos = j + 1 continue</span> } // find closing marker - <span class="cov6" title="16">k := strings.IndexByte(line[j+1:], inlineCloseChar) + <span class="cov6" title="17">k := strings.IndexByte(line[j+1:], inlineCloseChar) if k < 0 </span><span class="cov1" title="1">{ return "", 0, 0, false }</span> - <span class="cov6" title="15">closeIdx := j + 1 + k + <span class="cov6" title="16">closeIdx := j + 1 + k if closeIdx-1 < 0 || line[closeIdx-1] == ' ' </span><span class="cov1" title="1">{ pos = closeIdx + 1 continue</span> } - <span class="cov6" title="14">inner := strings.TrimSpace(line[j+1 : closeIdx]) + <span class="cov6" title="15">inner := strings.TrimSpace(line[j+1 : closeIdx]) if inner == "" </span><span class="cov0" title="0">{ pos = closeIdx + 1 continue</span> } - <span class="cov6" title="14">end := closeIdx + 1 + <span class="cov6" title="15">end := closeIdx + 1 return inner, j, end, true</span> } <span class="cov4" title="7">return "", 0, 0, false</span> @@ -4768,57 +5209,33 @@ func isIdentBoundary(ch byte) bool <span class="cov10" title="100">{ }</span> // stripCodeFences removes surrounding Markdown code fences from a model response. -func stripCodeFences(s string) string <span class="cov8" title="36">{ - t := strings.TrimSpace(s) - if t == "" </span><span class="cov0" title="0">{ - return t - }</span> - <span class="cov8" title="36">lines := splitLines(t) - start := 0 - for start < len(lines) && strings.TrimSpace(lines[start]) == "" </span><span class="cov0" title="0">{ - start++ - }</span> - <span class="cov8" title="36">end := len(lines) - 1 - for end >= 0 && strings.TrimSpace(lines[end]) == "" </span><span class="cov0" title="0">{ - end-- - }</span> - <span class="cov8" title="36">if start >= len(lines) || end < 0 || start > end </span><span class="cov0" title="0">{ - return t - }</span> - <span class="cov8" title="36">first := strings.TrimSpace(lines[start]) - last := strings.TrimSpace(lines[end]) - if strings.HasPrefix(first, "```") && last == "```" && end > start </span><span class="cov5" title="8">{ - inner := strings.Join(lines[start+1:end], "\n") - return inner - }</span> - <span class="cov7" title="28">return t</span> -} +func stripCodeFences(s string) string <span class="cov8" title="36">{ return textutil.StripCodeFences(s) }</span> // stripInlineCodeSpan returns the contents of the first inline backtick code span if present. -func stripInlineCodeSpan(s string) string <span class="cov5" title="10">{ +func stripInlineCodeSpan(s string) string <span class="cov5" title="11">{ t := strings.TrimSpace(s) if t == "" </span><span class="cov0" title="0">{ return t }</span> - <span class="cov5" title="10">i := strings.IndexByte(t, '`') + <span class="cov5" title="11">i := strings.IndexByte(t, '`') if i < 0 </span><span class="cov2" title="2">{ return t }</span> - <span class="cov5" title="8">jrel := strings.IndexByte(t[i+1:], '`') + <span class="cov5" title="9">jrel := strings.IndexByte(t[i+1:], '`') if jrel < 0 </span><span class="cov2" title="2">{ return t }</span> - <span class="cov4" title="6">j := i + 1 + jrel + <span class="cov4" title="7">j := i + 1 + jrel return t[i+1 : j]</span> } // labelForCompletion picks a short, readable label for the completion list. -func labelForCompletion(cleaned, filter string) string <span class="cov6" title="18">{ +func labelForCompletion(cleaned, filter string) string <span class="cov6" title="20">{ label := trimLen(firstLine(cleaned)) - if filter != "" && !strings.HasPrefix(strings.ToLower(label), strings.ToLower(filter)) </span><span class="cov3" title="4">{ + if filter != "" && !strings.HasPrefix(strings.ToLower(label), strings.ToLower(filter)) </span><span class="cov4" title="5">{ return filter }</span> - <span class="cov6" title="14">return label</span> + <span class="cov6" title="15">return label</span> } // extractRangeText returns the exact text within the given document range. @@ -4879,89 +5296,89 @@ func (s *Server) collectPromptRemovalEdits(uri string) []TextEdit <span class="c <span class="cov2" title="2">return edits</span> } -func promptRemovalEditsForLine(line string, lineNum int) []TextEdit <span class="cov5" title="10">{ - if hasDoubleOpenTrigger(line) </span><span class="cov3" title="3">{ +func promptRemovalEditsForLine(line string, lineNum int) []TextEdit <span class="cov5" title="11">{ + if hasDoubleOpenTrigger(line) </span><span class="cov3" title="4">{ return []TextEdit{{Range: Range{Start: Position{Line: lineNum, Character: 0}, End: Position{Line: lineNum, Character: len(line)}}, NewText: ""}} }</span> <span class="cov4" title="7">return collectSemicolonMarkers(line, lineNum)</span> } -func hasDoubleOpenTrigger(line string) bool <span class="cov8" title="55">{ +func hasDoubleOpenTrigger(line string) bool <span class="cov8" title="56">{ pos := 0 - for pos < len(line) </span><span class="cov8" title="57">{ + for pos < len(line) </span><span class="cov8" title="58">{ // look for double-open sequence dbl := string([]byte{inlineOpenChar, inlineOpenChar}) j := strings.Index(line[pos:], dbl) if j < 0 </span><span class="cov8" title="36">{ return false }</span> - <span class="cov6" title="21">j += pos + <span class="cov7" title="22">j += pos contentStart := j + len(dbl) if contentStart >= len(line) </span><span class="cov4" title="7">{ return false }</span> - <span class="cov6" title="14">first := line[contentStart] + <span class="cov6" title="15">first := line[contentStart] if first == ' ' || first == inlineOpenChar </span><span class="cov3" title="4">{ pos = contentStart + 1 continue</span> } // find closing - <span class="cov5" title="10">k := strings.IndexByte(line[contentStart+1:], inlineCloseChar) + <span class="cov5" title="11">k := strings.IndexByte(line[contentStart+1:], inlineCloseChar) if k < 0 </span><span class="cov0" title="0">{ return false }</span> - <span class="cov5" title="10">closeIdx := contentStart + 1 + k + <span class="cov5" title="11">closeIdx := contentStart + 1 + k if closeIdx-1 >= 0 && line[closeIdx-1] == ' ' </span><span class="cov1" title="1">{ pos = closeIdx + 1 continue</span> } - <span class="cov5" title="9">return true</span> + <span class="cov5" title="10">return true</span> } <span class="cov3" title="3">return false</span> } -func collectSemicolonMarkers(line string, lineNum int) []TextEdit <span class="cov5" title="8">{ +func collectSemicolonMarkers(line string, lineNum int) []TextEdit <span class="cov5" title="9">{ var edits []TextEdit startSemi := 0 - for startSemi < len(line) </span><span class="cov5" title="12">{ + for startSemi < len(line) </span><span class="cov6" title="14">{ j := strings.IndexByte(line[startSemi:], inlineOpenChar) - if j < 0 </span><span class="cov4" title="7">{ + if j < 0 </span><span class="cov5" title="8">{ break</span> } - <span class="cov4" title="5">j += startSemi + <span class="cov4" title="6">j += startSemi k := strings.IndexByte(line[j+1:], inlineCloseChar) if k < 0 </span><span class="cov0" title="0">{ break</span> } - <span class="cov4" title="5">if j+1 >= len(line) || line[j+1] == ' ' </span><span class="cov0" title="0">{ + <span class="cov4" title="6">if j+1 >= len(line) || line[j+1] == ' ' </span><span class="cov0" title="0">{ startSemi = j + 1 continue</span> } - <span class="cov4" title="5">if line[j+1] == inlineOpenChar </span><span class="cov0" title="0">{ // skip double-open start + <span class="cov4" title="6">if line[j+1] == inlineOpenChar </span><span class="cov0" title="0">{ // skip double-open start startSemi = j + 2 continue</span> } - <span class="cov4" title="5">closeIdx := j + 1 + k + <span class="cov4" title="6">closeIdx := j + 1 + k if closeIdx-1 < 0 || line[closeIdx-1] == ' ' </span><span class="cov0" title="0">{ startSemi = closeIdx + 1 continue</span> } - <span class="cov4" title="5">if closeIdx-(j+1) < 1 </span><span class="cov0" title="0">{ + <span class="cov4" title="6">if closeIdx-(j+1) < 1 </span><span class="cov0" title="0">{ startSemi = closeIdx + 1 continue</span> } - <span class="cov4" title="5">endChar := closeIdx + 1 + <span class="cov4" title="6">endChar := closeIdx + 1 if endChar < len(line) && line[endChar] == ' ' </span><span class="cov3" title="4">{ endChar++ }</span> - <span class="cov4" title="5">edits = append(edits, TextEdit{Range: Range{Start: Position{Line: lineNum, Character: j}, End: Position{Line: lineNum, Character: endChar}}, NewText: ""}) + <span class="cov4" title="6">edits = append(edits, TextEdit{Range: Range{Start: Position{Line: lineNum, Character: j}, End: Position{Line: lineNum, Character: endChar}}, NewText: ""}) startSemi = endChar</span> } - <span class="cov5" title="8">return edits</span> + <span class="cov5" title="9">return edits</span> } </pre> - <pre class="file" id="file21" style="display: none">// Summary: Minimal LSP server over stdio; manages documents, dispatches requests, and tracks stats. + <pre class="file" id="file28" style="display: none">// Summary: Minimal LSP server over stdio; manages documents, dispatches requests, and tracks stats. package lsp import ( @@ -5021,29 +5438,29 @@ type Server struct { inlineOpen string inlineClose string chatSuffix string - chatPrefixes []string - - // Prompt templates - // Completion - promptCompSysGeneral string - promptCompSysParams string - promptCompSysInline string - promptCompUserGeneral string - promptCompUserParams string - promptCompExtraHeader string - // Provider-native code completion - promptNativeCompletion string - // In-editor chat - promptChatSystem string - // Code actions - promptRewriteSystem string - promptDiagnosticsSystem string - promptDocumentSystem string - promptRewriteUser string - promptDiagnosticsUser string - promptDocumentUser string - promptGoTestSystem string - promptGoTestUser string + chatPrefixes []string + + // Prompt templates + // Completion + promptCompSysGeneral string + promptCompSysParams string + promptCompSysInline string + promptCompUserGeneral string + promptCompUserParams string + promptCompExtraHeader string + // Provider-native code completion + promptNativeCompletion string + // In-editor chat + promptChatSystem string + // Code actions + promptRewriteSystem string + promptDiagnosticsSystem string + promptDocumentSystem string + promptRewriteUser string + promptDiagnosticsUser string + promptDocumentUser string + promptGoTestSystem string + promptGoTestUser string } // ServerOptions collects configuration for NewServer to avoid long parameter lists. @@ -5064,26 +5481,26 @@ type ServerOptions struct { // Inline/chat triggers InlineOpen string InlineClose string - ChatSuffix string - ChatPrefixes []string - - // Prompt templates - PromptCompSysGeneral string - PromptCompSysParams string - PromptCompSysInline string - PromptCompUserGeneral string - PromptCompUserParams string - PromptCompExtraHeader string - PromptNativeCompletion string - PromptChatSystem string - PromptRewriteSystem string - PromptDiagnosticsSystem string - PromptDocumentSystem string - PromptRewriteUser string - PromptDiagnosticsUser string - PromptDocumentUser string - PromptGoTestSystem string - PromptGoTestUser string + ChatSuffix string + ChatPrefixes []string + + // Prompt templates + PromptCompSysGeneral string + PromptCompSysParams string + PromptCompSysInline string + PromptCompUserGeneral string + PromptCompUserParams string + PromptCompExtraHeader string + PromptNativeCompletion string + PromptChatSystem string + PromptRewriteSystem string + PromptDiagnosticsSystem string + PromptDocumentSystem string + PromptRewriteUser string + PromptDiagnosticsUser string + PromptDocumentUser string + PromptGoTestSystem string + PromptGoTestUser string } func NewServer(r io.Reader, w io.Writer, logger *log.Logger, opts ServerOptions) *Server <span class="cov10" title="6">{ @@ -5142,29 +5559,29 @@ func NewServer(r io.Reader, w io.Writer, logger *log.Logger, opts ServerOptions) }</span> else<span class="cov6" title="3"> { s.chatSuffix = opts.ChatSuffix }</span> - <span class="cov10" title="6">if len(opts.ChatPrefixes) == 0 </span><span class="cov6" title="3">{ - s.chatPrefixes = []string{"?", "!", ":", ";"} - }</span> else<span class="cov6" title="3"> { - s.chatPrefixes = append([]string{}, opts.ChatPrefixes...) - }</span> + <span class="cov10" title="6">if len(opts.ChatPrefixes) == 0 </span><span class="cov6" title="3">{ + s.chatPrefixes = []string{"?", "!", ":", ";"} + }</span> else<span class="cov6" title="3"> { + s.chatPrefixes = append([]string{}, opts.ChatPrefixes...) + }</span> - // Prompts - <span class="cov10" title="6">s.promptCompSysGeneral = opts.PromptCompSysGeneral - s.promptCompSysParams = opts.PromptCompSysParams - s.promptCompSysInline = opts.PromptCompSysInline - s.promptCompUserGeneral = opts.PromptCompUserGeneral - s.promptCompUserParams = opts.PromptCompUserParams - s.promptCompExtraHeader = opts.PromptCompExtraHeader - s.promptNativeCompletion = opts.PromptNativeCompletion - s.promptChatSystem = opts.PromptChatSystem - s.promptRewriteSystem = opts.PromptRewriteSystem - s.promptDiagnosticsSystem = opts.PromptDiagnosticsSystem - s.promptDocumentSystem = opts.PromptDocumentSystem - s.promptRewriteUser = opts.PromptRewriteUser - s.promptDiagnosticsUser = opts.PromptDiagnosticsUser - s.promptDocumentUser = opts.PromptDocumentUser - s.promptGoTestSystem = opts.PromptGoTestSystem - s.promptGoTestUser = opts.PromptGoTestUser + // Prompts + <span class="cov10" title="6">s.promptCompSysGeneral = opts.PromptCompSysGeneral + s.promptCompSysParams = opts.PromptCompSysParams + s.promptCompSysInline = opts.PromptCompSysInline + s.promptCompUserGeneral = opts.PromptCompUserGeneral + s.promptCompUserParams = opts.PromptCompUserParams + s.promptCompExtraHeader = opts.PromptCompExtraHeader + s.promptNativeCompletion = opts.PromptNativeCompletion + s.promptChatSystem = opts.PromptChatSystem + s.promptRewriteSystem = opts.PromptRewriteSystem + s.promptDiagnosticsSystem = opts.PromptDiagnosticsSystem + s.promptDocumentSystem = opts.PromptDocumentSystem + s.promptRewriteUser = opts.PromptRewriteUser + s.promptDiagnosticsUser = opts.PromptDiagnosticsUser + s.promptDocumentUser = opts.PromptDocumentUser + s.promptGoTestSystem = opts.PromptGoTestSystem + s.promptGoTestUser = opts.PromptGoTestUser // Assign package-level inline trigger chars for free helper functions if s.inlineOpen != "" </span><span class="cov10" title="6">{ @@ -5222,7 +5639,7 @@ func (s *Server) Run() error <span class="cov1" title="1">{ } </pre> - <pre class="file" id="file22" style="display: none">// Summary: LSP transport utilities to read and write JSON-RPC messages with Content-Length framing. + <pre class="file" id="file29" style="display: none">// Summary: LSP transport utilities to read and write JSON-RPC messages with Content-Length framing. package lsp import ( @@ -5290,7 +5707,7 @@ func (s *Server) writeMessage(v any) <span class="cov10" title="18">{ } </pre> - <pre class="file" id="file23" style="display: none">package testutil + <pre class="file" id="file30" style="display: none">package testutil // MultilineDocBlock returns a realistic multi-line documentation block. func MultilineDocBlock() string <span class="cov8" title="1">{ @@ -5318,6 +5735,122 @@ func MalformedJSON() string <span class="cov0" title="0">{ }</span> </pre> + <pre class="file" id="file31" style="display: none">package textutil + +import "strings" + +// RenderTemplate performs simple {{var}} replacement in a template string. +func RenderTemplate(t string, vars map[string]string) string <span class="cov8" title="44">{ + if t == "" || len(vars) == 0 </span><span class="cov5" title="11">{ + return t + }</span> + <span class="cov7" title="33">out := t + for k, v := range vars </span><span class="cov9" title="91">{ + out = strings.ReplaceAll(out, "{{"+k+"}}", v) + }</span> + <span class="cov7" title="33">return out</span> +} + +// StripCodeFences removes surrounding Markdown triple-backtick fences. +func StripCodeFences(s string) string <span class="cov8" title="49">{ + t := strings.TrimSpace(s) + if t == "" </span><span class="cov0" title="0">{ + return t + }</span> + <span class="cov8" title="49">lines := strings.Split(t, "\n") + start := 0 + for start < len(lines) && strings.TrimSpace(lines[start]) == "" </span><span class="cov0" title="0">{ + start++ + }</span> + <span class="cov8" title="49">end := len(lines) - 1 + for end >= 0 && strings.TrimSpace(lines[end]) == "" </span><span class="cov0" title="0">{ + end-- + }</span> + <span class="cov8" title="49">if start >= len(lines) || end < 0 || start > end </span><span class="cov0" title="0">{ + return t + }</span> + <span class="cov8" title="49">first := strings.TrimSpace(lines[start]) + last := strings.TrimSpace(lines[end]) + if strings.HasPrefix(first, "```") && last == "```" && end > start </span><span class="cov6" title="19">{ + inner := strings.Join(lines[start+1:end], "\n") + return inner + }</span> + <span class="cov7" title="30">return t</span> +} + +// InstructionFromSelection extracts the first inline instruction and returns +// (instruction, cleanedSelection). It detects markers on the earliest position +// per line in precedence: strict ;text;, /* */, <!-- -->, //, #, --. +func InstructionFromSelection(sel string) (string, string) <span class="cov5" title="13">{ + lines := strings.Split(sel, "\n") + for idx, line := range lines </span><span class="cov5" title="13">{ + if instr, cleaned, ok := FindFirstInstructionInLine(line); ok && strings.TrimSpace(instr) != "" </span><span class="cov5" title="13">{ + lines[idx] = cleaned + return instr, strings.Join(lines, "\n") + }</span> + } + <span class="cov0" title="0">return "", sel</span> +} + +// FindFirstInstructionInLine returns (instruction, cleaned, ok) for a single line. +func FindFirstInstructionInLine(line string) (instr, cleaned string, ok bool) <span class="cov6" title="14">{ + type cand struct{ start, end int; text string } + cands := []cand{} + if t, l, r, ok := FindStrictInlineTag(line); ok </span><span class="cov3" title="4">{ + cands = append(cands, cand{start: l, end: r, text: t}) + }</span> + <span class="cov6" title="14">if i := strings.Index(line, "/*"); i >= 0 </span><span class="cov2" title="2">{ + if j := strings.Index(line[i+2:], "*/"); j >= 0 </span><span class="cov2" title="2">{ + start := i + end := i + 2 + j + 2 + text := strings.TrimSpace(line[i+2 : i+2+j]) + cands = append(cands, cand{start: start, end: end, text: text}) + }</span> + } + <span class="cov6" title="14">if i := strings.Index(line, "<!--"); i >= 0 </span><span class="cov2" title="2">{ + if j := strings.Index(line[i+4:], "-->"); j >= 0 </span><span class="cov2" title="2">{ + start := i + end := i + 4 + j + 3 + text := strings.TrimSpace(line[i+4 : i+4+j]) + cands = append(cands, cand{start: start, end: end, text: text}) + }</span> + } + <span class="cov6" title="14">if i := strings.Index(line, "//"); i >= 0 </span><span class="cov3" title="3">{ + cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+2:])}) + }</span> + <span class="cov6" title="14">if i := strings.Index(line, "#"); i >= 0 </span><span class="cov2" title="2">{ + cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+1:])}) + }</span> + <span class="cov6" title="14">if i := strings.Index(line, "--"); i >= 0 </span><span class="cov3" title="4">{ + cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+2:])}) + }</span> + <span class="cov6" title="14">if len(cands) == 0 </span><span class="cov0" title="0">{ return "", line, false }</span> + <span class="cov6" title="14">best := cands[0] + for _, c := range cands[1:] </span><span class="cov3" title="3">{ + if c.start >= 0 && (best.start < 0 || c.start < best.start) </span><span class="cov0" title="0">{ best = c }</span> + } + <span class="cov6" title="14">cleaned = strings.TrimRight(line[:best.start]+line[best.end:], " \t") + return best.text, cleaned, true</span> +} + +// FindStrictInlineTag finds ;text; with no spaces after/before semicolons. +func FindStrictInlineTag(line string) (text string, left, right int, ok bool) <span class="cov6" title="16">{ + for i := 0; i < len(line); i++ </span><span class="cov10" title="112">{ + if line[i] != ';' </span><span class="cov9" title="105">{ continue</span> } + <span class="cov4" title="7">if i+1 < len(line) && line[i+1] == ' ' </span><span class="cov1" title="1">{ continue</span> } + <span class="cov4" title="6">for j := i + 1; j < len(line); j++ </span><span class="cov7" title="35">{ + if line[j] == ';' </span><span class="cov4" title="5">{ + if j-1 >= 0 && line[j-1] == ' ' </span><span class="cov0" title="0">{ continue</span> } + <span class="cov4" title="5">inner := strings.TrimSpace(line[i+1 : j]) + if inner != "" </span><span class="cov4" title="5">{ return inner, i, j + 1, true }</span> + } + } + } + <span class="cov5" title="11">return "", -1, -1, false</span> +} + +</pre> + </div> </body> <script> diff --git a/docs/coverage.out b/docs/coverage.out index 379cd96..36d1f38 100644 --- a/docs/coverage.out +++ b/docs/coverage.out @@ -1,12 +1,1622 @@ mode: atomic +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:11.13,12.94 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:12.94,15.3 2 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:14.13,17.18 3 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:22.2,22.104 1 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:22.104,24.3 1 0 -codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 -codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 1 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 1 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:11.13,12.94 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:12.94,15.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:142.19,144.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,147.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:147.16,150.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:150.8,151.85 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:151.85,153.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:159.2,159.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:159.50,161.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:162.2,162.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.77 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:282.77,291.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.2,294.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.38,297.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.2,300.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.44,307.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.2,310.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.44,313.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.2,316.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.36,319.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.2,322.82 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.82,325.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.2,328.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.47,331.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.2,334.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.68,341.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.2,344.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.71,351.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.2,354.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.68,361.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.2,365.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.59,366.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:366.67,368.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.3,369.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.66,371.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.3,372.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.66,374.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.3,375.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.65,377.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.3,378.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.64,380.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.3,381.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.65,383.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.2,386.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.53,388.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.2,390.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.59,391.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:391.67,393.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.3,394.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.71,396.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.3,397.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.68,399.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.3,400.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.65,402.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.3,403.69 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.69,405.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.3,406.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.66,408.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.3,409.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.66,411.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.3,412.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.64,414.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.2,417.45 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.45,418.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:418.60,420.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.3,421.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.60,423.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.2,426.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.67,428.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:430.2,430.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:435.16,436.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:436.43,438.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:439.3,439.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:442.2,447.22 5 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:447.22,448.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:448.20,450.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:451.3,451.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:455.2,464.21 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:464.21,465.216 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:465.216,466.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.3,468.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.41,470.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.2,473.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.19,475.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:479.2,481.53 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:481.53,482.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:482.59,483.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:484.15,485.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:486.13,487.35 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:488.17,489.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.2,493.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.50,494.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:494.52,495.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:496.15,497.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:498.13,499.29 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:500.17,501.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:505.2,505.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:508.37,512.2 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:515.39,516.25 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:516.25,518.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:519.2,519.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:519.56,521.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:522.2,522.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:522.34,524.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:525.2,525.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:525.32,527.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:528.2,528.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:528.32,530.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:531.2,531.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:531.36,533.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:534.2,534.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:534.38,536.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:537.2,537.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:537.36,539.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:540.2,540.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:540.36,542.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:543.2,543.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:543.38,545.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:546.2,546.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:546.55,548.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:549.2,549.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:549.56,551.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:552.2,552.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:552.55,554.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:555.2,555.33 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:555.33,557.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:558.2,558.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:558.53,560.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:566.66,568.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.2,569.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.65,571.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.2,572.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.65,574.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.2,575.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.64,577.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.2,578.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.63,580.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.2,581.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.64,583.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.2,585.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.59,587.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.2,589.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.53,591.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.2,593.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.66,595.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.2,596.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.70,598.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.2,599.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.67,601.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.2,602.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.64,604.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.2,605.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.68,607.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.2,608.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.65,610.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.2,611.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.65,613.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.2,614.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.63,616.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.2,618.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.59,620.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.2,621.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.59,623.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:627.47,628.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:628.58,630.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:631.2,631.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:631.56,633.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:634.2,634.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:634.36,636.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:637.2,637.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:637.58,639.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:640.2,640.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:640.56,642.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:643.2,643.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:643.36,645.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:646.2,646.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:646.59,648.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:649.2,649.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:649.57,651.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:652.2,652.37 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:652.37,654.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:657.38,659.72 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:659.72,661.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:661.8,663.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:663.17,665.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:666.3,666.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:668.2,668.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:675.43,680.34 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:680.34,680.76 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:681.2,681.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:681.41,683.14 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:683.14,685.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:686.3,687.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:687.17,688.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:688.21,690.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:691.4,691.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:693.3,693.17 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:695.2,695.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:695.51,697.14 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:697.14,699.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:700.3,701.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:701.17,702.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:702.21,704.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:705.4,705.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:707.3,707.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:710.2,710.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:710.47,713.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:714.2,714.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:714.48,717.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:718.2,718.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:718.57,721.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:722.2,722.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:722.55,725.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:726.2,726.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:726.54,729.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:730.2,730.61 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:730.61,733.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:734.2,734.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:734.59,737.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:738.2,738.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:738.59,741.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:742.2,742.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:742.60,745.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:746.2,746.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:746.54,749.27 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:749.27,750.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:750.42,752.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:754.3,754.13 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:756.2,756.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:756.47,759.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:760.2,760.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:760.48,763.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:764.2,764.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:764.47,767.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:768.2,768.49 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:768.49,771.27 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:771.27,772.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:772.42,774.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:776.3,776.13 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:778.2,778.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:778.44,781.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:784.2,784.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:784.51,787.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:788.2,788.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:788.48,791.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:792.2,792.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:792.60,795.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:797.2,797.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:797.51,800.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:801.2,801.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:801.48,804.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:805.2,805.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:805.60,808.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:810.2,810.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:810.52,813.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:814.2,814.49 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:814.49,817.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:818.2,818.61 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:818.61,821.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:823.2,823.10 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:823.10,825.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:826.2,826.13 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:20.50,22.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:22.16,24.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:25.2,26.15 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:26.15,28.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:29.2,32.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:32.27,34.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:34.26,36.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.2,39.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.18,41.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:43.2,45.28 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:45.28,47.14 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:47.14,49.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:51.3,51.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:53.2,55.60 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:60.54,60.103 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:14.54,14.97 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:17.35,17.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:23.121,27.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:29.128,31.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:31.26,32.33 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:32.33,33.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:35.3,36.23 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:36.23,38.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:40.2,42.69 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:45.109,49.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:51.106,55.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:57.86,60.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:60.19,62.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:63.5,63.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:66.120,69.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:69.19,71.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:72.5,72.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:76.57,78.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:78.37,80.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:81.5,81.16 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:85.79,87.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:89.78,91.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:16.80,20.16 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:20.16,23.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:24.2,25.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:25.16,28.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.2,29.46 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.46,31.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:32.2,33.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:33.16,35.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:36.2,37.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:37.16,39.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:40.2,41.12 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:44.146,45.14 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:46.18,47.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:48.21,50.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:50.37,53.4 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:54.3,56.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:57.25,60.79 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:61.22,64.57 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:65.20,68.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:69.10,70.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:18.36,18.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:19.36,19.53 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:20.36,20.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:28.23,41.2 7 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:43.31,43.45 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:45.57,46.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:47.18,48.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:49.25,50.40 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:52.2,54.15 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:57.62,60.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:61.21,65.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:66.18,67.55 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:67.55,71.10 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:72.22,73.28 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:74.20,75.26 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:76.22,77.25 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:78.16,79.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:79.44,79.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:80.29,82.41 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:82.41,83.91 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:83.91,88.14 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.5,91.19 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.19,92.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:92.44,92.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:94.5,94.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:97.30,98.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:98.12,100.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:101.2,101.22 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:105.35,108.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:108.16,110.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.2,111.29 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.29,112.21 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:112.21,114.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:115.3,115.23 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:117.2,117.56 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:20.61,20.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:21.61,21.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:22.61,22.75 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:23.89,26.38 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:26.38,28.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:29.5,31.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:31.27,33.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:34.5,34.49 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:23.95,28.16 4 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:28.16,31.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.2,34.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:34.17,37.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:38.2,40.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:40.74,43.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:44.2,44.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:49.124,51.16 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:51.16,54.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:55.2,57.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:57.74,60.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:61.2,61.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:65.64,67.82 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:67.82,70.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:71.2,72.9 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:73.40,74.59 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:75.23,76.24 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:77.21,78.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:79.10,80.91 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:88.48,91.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:91.40,93.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:94.2,97.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:101.77,104.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.40,105.58 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:105.58,107.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:109.2,112.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:116.125,119.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:119.40,121.56 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:121.56,124.4 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.18,126.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.3,127.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.8,130.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:130.17,132.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:133.3,134.26 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:136.2,139.12 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:143.59,145.2 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:148.65,150.2 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:29.17,31.4 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:32.3,33.22 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:35.2,37.70 3 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:42.159,49.37 6 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:49.37,51.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:52.2,52.12 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:57.49,59.30 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:59.30,61.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:64.72,65.19 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:65.19,67.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:68.2,82.36 3 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:82.36,84.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:86.2,87.36 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:87.36,89.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.2,90.67 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.67,93.3 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:93.8,96.3 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,144.2 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:67.38,69.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:70.36,74.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:75.2,82.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:85.109,86.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:86.39,88.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:90.2,90.45 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:90.45,92.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:93.2,94.27 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:94.27,96.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:97.2,97.19 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:97.19,99.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:100.2,102.29 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:102.29,104.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:105.2,109.16 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:109.16,112.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:114.2,117.16 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:117.16,120.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:121.2,122.57 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:122.57,124.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:125.2,126.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:126.16,128.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:129.2,129.27 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:129.27,132.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:133.2,135.21 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:139.46,139.66 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:140.46,140.71 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:143.102,146.29 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:146.29,148.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:149.2,149.24 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:149.24,151.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:151.8,151.31 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:151.31,154.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:155.2,155.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:155.21,157.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:158.2,158.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:158.21,160.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:161.2,161.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:164.130,166.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:166.16,168.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:169.2,169.28 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:169.28,171.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:172.2,172.29 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:175.70,176.53 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:176.53,178.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:179.2,181.74 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:181.74,184.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:185.2,186.69 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:189.91,191.64 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:191.64,194.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:195.2,195.17 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:204.66,206.82 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:206.82,208.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:209.2,209.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:209.39,211.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:212.2,213.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:213.16,215.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:216.2,220.16 5 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:220.16,222.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:223.2,224.53 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:224.53,226.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:227.2,228.64 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:228.64,230.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:231.2,231.40 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:231.40,233.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:235.2,236.18 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:236.18,238.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:239.2,241.12 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:246.42,248.20 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:248.20,250.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:251.2,252.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:252.16,253.59 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:253.59,254.48 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:254.48,256.5 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:258.3,258.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:260.2,264.22 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:264.22,266.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:267.2,267.34 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:270.42,270.100 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:274.57,290.2 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:292.58,308.2 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:310.28,313.19 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:313.19,315.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:316.2,316.18 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:322.153,323.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:323.39,325.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:326.2,326.45 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:326.45,328.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:329.2,329.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:329.12,331.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:332.2,354.16 6 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:354.16,356.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:357.2,358.53 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:358.53,360.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:362.2,365.27 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:365.27,366.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:366.39,367.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:369.3,375.88 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:375.88,376.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:378.3,378.34 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:378.34,380.4 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:382.2,383.25 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:383.25,384.60 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:384.60,386.4 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:388.2,388.17 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:44.68,45.38 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:45.38,47.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:48.2,48.36 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:48.36,50.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:51.2,57.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:60.108,62.27 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:62.27,64.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:65.2,65.19 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:65.19,67.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:69.2,73.16 5 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:73.16,75.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:77.2,80.16 4 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:80.16,83.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:84.2,85.56 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:85.56,87.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:89.2,90.64 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:90.64,93.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:94.2,94.50 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:94.50,97.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:98.2,100.21 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:104.45,104.64 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:105.45,105.70 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:108.126,110.27 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:110.27,112.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:113.2,113.19 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:113.19,115.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:117.2,121.16 5 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:121.16,123.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:125.2,128.16 4 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:128.16,131.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:132.2,133.56 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:133.56,135.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:137.2,138.6 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:138.6,140.41 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:140.41,141.30 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:141.30,142.10 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:144.4,145.14 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:147.3,147.40 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:147.40,150.4 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:151.3,151.58 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:151.58,153.4 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:154.3,154.14 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:154.14,155.9 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:158.2,159.12 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:163.76,165.29 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:165.29,167.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:168.2,168.89 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:171.109,174.29 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:174.29,176.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:177.2,178.24 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:178.24,180.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:180.8,180.31 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:180.31,182.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:183.2,183.21 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:183.21,185.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:186.2,186.21 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:186.21,188.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:189.2,189.22 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:189.22,191.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:192.2,192.12 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:195.100,197.16 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:197.16,199.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:200.2,201.29 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:204.69,205.53 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:205.53,207.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:208.2,210.43 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:210.43,213.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:214.2,215.68 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:78.76,79.38 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:79.38,81.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.2,82.36 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.36,84.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:85.2,92.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:95.108,96.20 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:96.20,98.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:99.2,100.27 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:100.27,102.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:103.2,103.19 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:103.19,105.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:106.2,110.16 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:110.16,113.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:114.2,119.16 4 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:119.16,122.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:123.2,124.56 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:124.56,126.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:127.2,128.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:128.16,130.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:131.2,131.27 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:131.27,134.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:135.2,137.21 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:141.45,141.64 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:142.45,142.70 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:146.126,147.20 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:147.20,149.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:150.2,151.27 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:151.27,153.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:154.2,154.19 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:154.19,156.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:157.2,161.16 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:161.16,164.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:165.2,170.16 4 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:170.16,173.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:174.2,175.56 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:175.56,177.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:179.2,179.64 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:179.64,181.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:182.2,183.12 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:187.56,187.104 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:190.76,192.29 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:192.29,194.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:195.2,195.89 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:198.105,201.29 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:201.29,203.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:204.2,204.24 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:204.24,206.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:206.8,206.31 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:206.31,209.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:210.2,210.21 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:210.21,212.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:213.2,213.21 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:213.21,215.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:216.2,216.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:219.127,221.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:221.16,223.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:224.2,225.28 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:225.28,227.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:228.2,228.29 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:231.152,233.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:233.16,235.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:236.2,238.28 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:238.28,240.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:241.2,241.29 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:244.69,245.53 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:245.53,247.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:248.2,250.55 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:250.55,253.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:254.2,255.68 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:258.85,260.64 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:260.64,263.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:264.2,264.17 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:267.90,273.21 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:273.21,275.41 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:275.41,276.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:278.3,279.45 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:279.45,280.9 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:282.3,283.65 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:283.65,284.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:286.3,286.54 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:286.54,289.4 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:290.3,290.36 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:290.36,291.30 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:291.30,293.5 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:296.2,296.38 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:296.38,299.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:300.2,300.12 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:58.47,58.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:58.73,58.92 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:59.47,59.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:59.73,59.94 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:60.47,60.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:60.73,60.92 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:61.45,62.26 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:62.26,62.66 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.13 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:87.13,89.3 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:90.2,90.11 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:91.16,92.44 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:92.44,94.4 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.3,96.35 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.35,99.4 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:100.3,100.97 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:101.16,102.35 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:102.35,105.4 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:106.3,106.83 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:107.17,108.45 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:108.45,110.4 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:111.3,111.36 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:111.36,114.4 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:115.3,115.102 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:116.10,117.55 1 0 +codeberg.org/snonux/hexai/internal/llm/util.go:6.47,6.77 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:12.62,26.39 3 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:26.39,28.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:29.5,30.39 2 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:30.39,32.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:33.5,33.51 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:18.3,20.12 2 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:20.12,22.3 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:23.2,25.29 2 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:25.29,28.3 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:27.26,27.37 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:30.47,31.16 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:31.16,33.3 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:34.2,35.48 2 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:43.32,43.55 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:46.37,47.25 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:47.25,48.32 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:48.32,50.4 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:51.3,51.37 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:53.2,53.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:16.96,18.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:19.17,20.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:21.16,22.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:23.26,24.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:24.14,26.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:27.3,27.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:28.21,29.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:30.10,32.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:36.65,38.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:38.35,41.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:42.2,45.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:45.15,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:48.2,49.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:49.13,51.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:52.2,53.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:56.53,58.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:58.14,61.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:62.2,62.59 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:67.64,68.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:68.20,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:71.2,72.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:72.27,74.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:76.2,77.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:77.21,79.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:80.2,80.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:80.53,82.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:83.2,83.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:15.48,19.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:21.45,25.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:27.33,31.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:33.52,37.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:40.37,43.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:45.96,47.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:47.35,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:50.2,51.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:51.13,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:54.2,54.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:54.25,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:57.2,58.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:58.16,60.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:61.2,61.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:61.26,63.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:64.2,64.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:64.28,66.85 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:66.85,68.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:71.2,71.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:78.71,80.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:80.35,82.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:83.2,84.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:84.13,86.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:87.2,87.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:87.25,89.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:91.2,92.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:92.28,93.44 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:93.44,95.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:98.3,98.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:98.40,99.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:102.2,102.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:102.20,104.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:106.2,106.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:106.35,109.17 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:109.17,110.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:110.15,112.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:114.4,114.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:114.29,116.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:119.2,119.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:122.46,123.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:123.28,124.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:124.29,126.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:128.2,128.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:131.31,133.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:133.18,135.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:136.2,136.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:139.33,141.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:141.49,143.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:144.2,144.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:10.38,11.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:11.41,14.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.2,15.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.22,17.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.34,31.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.105,34.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.5,36.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.53,56.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.5,57.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.47,58.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.57,63.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.5,65.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.49,66.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.58,71.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.5,73.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.47,75.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.5,76.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.46,78.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.5,79.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.47,81.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.5,82.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.24,84.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.5,87.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.33,88.69 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.69,90.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.5,93.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:117.72,120.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:191.151,194.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:194.24,196.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:197.2,199.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:199.24,201.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:202.2,204.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:204.24,207.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:208.2,209.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:209.32,211.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:212.2,213.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:213.14,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:217.2,231.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:234.64,238.9 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:238.9,240.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:242.2,243.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:246.56,249.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:249.24,251.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:252.2,252.44 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:252.44,255.33 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:255.33,260.4 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:261.3,261.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:264.2,265.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:268.51,272.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:272.37,273.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:273.15,275.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:278.2,278.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:278.14,280.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:281.2,281.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:288.74,290.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:290.22,295.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:295.49,297.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:297.9,300.4 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.3,303.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.115,305.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.3,307.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.27,309.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.3,311.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.27,312.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.34,313.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.38,314.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:314.35,316.7 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:318.5,318.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:321.4,321.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.2,327.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:327.36,329.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.2,331.114 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.114,333.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.2,335.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.35,336.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:336.14,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:340.2,340.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:343.137,348.24 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:348.24,350.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:351.2,361.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:436.74,445.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:17.48,19.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:19.55,20.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:20.23,22.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:23.3,23.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:25.2,26.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:26.57,27.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:27.23,29.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:30.3,30.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:32.2,35.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:35.53,37.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:38.2,38.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:38.57,40.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:41.2,41.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:41.54,43.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:44.2,44.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:44.51,46.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:47.2,47.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:47.22,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:52.85,53.85 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:53.85,64.3 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:65.2,65.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:68.89,70.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:70.21,72.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:73.2,82.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:85.70,86.45 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:86.45,88.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:89.2,97.58 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:97.58,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:100.2,100.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.17,108.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:108.72,109.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:109.66,113.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:114.9,116.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.21,120.43 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.43,121.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.24,123.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.10,125.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.3,133.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.72,134.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.66,138.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.9,141.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.18,149.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:149.72,150.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:150.66,154.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:155.9,157.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:158.17,159.92 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:159.92,167.4 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:169.2,169.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:172.55,174.56 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:174.56,175.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:175.23,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:178.3,178.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:180.2,180.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:180.49,183.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:184.2,184.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:190.85,191.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:191.22,193.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:194.2,195.53 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:195.53,197.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:198.2,198.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:198.31,200.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:201.2,202.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:202.36,203.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:203.34,205.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:207.2,207.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:211.37,213.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:213.32,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:216.2,216.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:216.32,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:220.2,220.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:220.29,222.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:224.2,224.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:224.29,226.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:227.2,227.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:230.34,231.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:231.22,233.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:234.2,234.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:237.37,238.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:238.22,240.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:241.2,241.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:246.76,248.80 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:248.80,250.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:252.2,252.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:252.71,254.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:256.2,257.41 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:257.41,259.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:260.2,267.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:271.86,272.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:272.24,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:275.34,277.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:278.2,286.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:289.95,291.76 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:291.76,293.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:295.2,296.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:296.21,298.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:299.2,301.36 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:301.36,303.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:304.2,306.39 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:306.39,308.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:310.2,314.26 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:314.26,320.22 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:320.22,323.4 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:324.3,326.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:326.102,328.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:329.3,336.40 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:336.40,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:339.3,341.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:341.19,343.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:344.3,345.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:348.2,349.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:349.15,351.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:352.2,367.13 13 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:367.13,370.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:371.2,372.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:376.62,377.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:377.39,379.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:380.2,382.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:382.16,384.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:385.2,386.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:389.35,390.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:390.41,392.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:393.2,393.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:397.48,398.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:398.27,400.39 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:400.39,403.45 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:403.45,405.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:406.4,406.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:406.46,408.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:409.4,409.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:409.46,411.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:412.4,412.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:415.2,415.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:419.63,420.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:420.13,422.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:423.2,423.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:423.23,425.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:427.2,428.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:428.28,429.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:429.42,431.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:433.3,433.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:433.38,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:437.2,437.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:437.17,439.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:441.2,443.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:443.38,445.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:445.32,446.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:447.13,449.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:450.13,451.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:451.18,453.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.5,454.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.31,456.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.2,461.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.15,463.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:464.2,464.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.24,476.71 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:476.71,478.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:478.21,480.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:481.9,483.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:486.2,487.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:487.16,489.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:490.2,490.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:494.43,498.39 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:498.39,500.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:501.2,503.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:503.34,505.63 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:505.63,507.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.2,510.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.42,512.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:513.2,513.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:516.37,517.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:517.16,519.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:520.2,521.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:521.32,523.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:524.2,524.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:15.48,18.55 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:18.55,25.19 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:25.19,27.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:28.3,28.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:28.25,32.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:32.10,35.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:38.2,39.73 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:44.67,45.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:45.22,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:48.2,52.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:52.48,54.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:54.8,57.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:58.2,58.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:63.99,66.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:68.98,71.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:73.160,78.52 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:78.52,81.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:82.2,82.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:82.51,84.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:86.2,91.86 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:91.86,96.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:97.2,97.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:97.58,100.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:102.2,102.83 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:102.83,105.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:108.2,108.126 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:108.126,110.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:113.2,116.29 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:116.29,118.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:119.2,121.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:121.32,123.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:125.2,126.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:126.29,128.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:129.2,132.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:132.16,136.3 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:137.2,141.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:141.19,143.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:144.2,145.75 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:149.38,150.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:150.16,152.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:153.2,156.42 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:156.42,158.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:158.8,161.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:162.2,162.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:166.91,168.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.24,170.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.2,171.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.40,172.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:172.35,174.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:175.3,176.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:176.37,177.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:177.18,180.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:183.2,183.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:187.119,191.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.24,193.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:194.2,195.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:195.13,197.68 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:197.68,199.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.2,201.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.19,203.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:205.2,206.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:206.12,208.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:208.28,210.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:212.3,212.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:214.2,216.50 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:216.50,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:219.2,219.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.193,225.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:225.9,227.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.2,237.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:237.32,239.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.2,241.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.24,243.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.2,250.30 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:250.30,252.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.2,254.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:254.40,256.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:256.20,258.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.21,260.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:261.4,261.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:261.54,263.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:263.21,265.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.4,267.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.40,271.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:273.8,273.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:273.23,275.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:276.2,276.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:281.55,283.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:283.12,285.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.2,286.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.6,290.20 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:290.20,292.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:293.3,294.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:294.17,296.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:297.3,299.10 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:300.21,302.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:303.18,303.18 0 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:311.60,313.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:313.19,315.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:316.2,317.6 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:317.6,321.23 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.23,325.11 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.22,328.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:329.19,331.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:335.3,337.14 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.14 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.14,357.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.2,358.68 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.68,360.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.2,363.52 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.52,365.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.37,367.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.3,368.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.2,370.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:374.101,376.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:376.57,377.78 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:377.78,379.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:381.2,381.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:381.19,383.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:384.2,384.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:384.19,386.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:387.2,387.56 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:387.56,388.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:388.57,390.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:392.2,392.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:21.45,23.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:23.55,26.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:29.47,31.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:31.55,32.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:32.32,34.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:35.3,37.44 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:41.46,43.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:43.55,46.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:52.76,54.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.14,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:58.2,59.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.14,61.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.2,62.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.26,64.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:65.2,66.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.13,68.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:69.2,69.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:69.30,71.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:73.2,74.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:74.28,77.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:78.2,83.43 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:83.43,86.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:87.2,87.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.50,96.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:96.24,98.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:99.2,100.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.35,102.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.2,103.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.30,106.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:106.14,107.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:107.39,109.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:111.4,111.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:113.3,113.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:113.12,114.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:117.3,117.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:117.25,118.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:121.3,121.37 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:121.37,122.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.3,125.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.12,126.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.3,130.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.38,131.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:131.19,133.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:136.3,136.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:136.17,137.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:140.3,141.63 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:141.63,143.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.3,144.80 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.80,145.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:148.3,151.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:151.19,152.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:154.3,156.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:156.38,166.18 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:166.18,169.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:170.4,171.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:171.17,173.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:174.4,174.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:177.3,177.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:183.110,185.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:185.14,187.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:189.2,200.54 8 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:205.96,207.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.14,209.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.2,213.31 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.31,214.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:214.53,216.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:217.3,217.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:217.12,218.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.3,220.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.61,221.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,224.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:224.14,226.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.36,229.13 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:231.4,231.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:233.3,233.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:233.53,235.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.3,236.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.12,237.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.3,242.6 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:244.2,245.26 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:245.26,246.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:246.35,248.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:249.3,249.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:249.35,251.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:253.2,254.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:258.45,260.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:260.17,262.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:264.2,264.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:264.50,266.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:266.40,267.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:267.18,269.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:273.2,274.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:275.21,276.48 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:277.10,278.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:283.68,290.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:293.46,300.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:303.61,318.2 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:322.59,323.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:323.12,326.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:8.52,10.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:10.55,13.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:14.2,14.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:15.28,16.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:16.28,20.58 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:20.58,22.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:23.4,23.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:23.17,25.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:27.3,28.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:29.10,32.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:11.48,13.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:13.24,15.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:16.2,27.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:30.38,32.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:34.46,36.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:38.31,41.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:21.55,23.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.32,25.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:26.2,26.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:30.41,35.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:37.41,42.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.32,47.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.23,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.2,51.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.24,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.2,57.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.15,59.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.2,63.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.51,68.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.41,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:71.2,73.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.62,77.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.50,129.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:170.64,172.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:172.22,175.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.74 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.74,182.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.3,186.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:186.12,188.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.3,190.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.48,192.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.18,197.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.3,200.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:202.2,202.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.41,212.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.31,214.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.29,217.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.2,218.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.31,220.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.32,222.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.83,231.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:231.102,233.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.36,235.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.136,237.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.4,240.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.34,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.2,246.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.65,247.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.53,249.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.37,251.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.137,253.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.5,256.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.35,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:262.2,262.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:266.80,267.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.22,269.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:270.2,272.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.40,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.34,276.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.31,277.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.3,280.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.16,281.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.3,283.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.32,285.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.2,287.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:290.36,292.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.39,295.77 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:298.43,300.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.13,302.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.2,304.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.11,306.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.2,308.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:308.14,310.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.2,312.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:316.56,318.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.89,320.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,321.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.52,326.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:326.32,328.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.28,330.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.3,331.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.34,333.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.3,334.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.42,336.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.3,337.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.2,342.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.27,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.2,345.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.36,347.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:348.2,351.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.49,353.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:353.24,355.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.2,359.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.25,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.2,362.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.33,364.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:365.2,366.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.67,372.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.35,374.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.2,376.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:376.31,378.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,379.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.69,383.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.32,385.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,386.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:389.45,391.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.22,395.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.12,397.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.3,400.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.32,402.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.3,404.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.46,406.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.3,410.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.12,412.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:413.3,414.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.49,416.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.3,418.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.2,420.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.67,426.28 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:426.28,428.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,429.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.12,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.43,438.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.3,440.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.34,442.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.3,445.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:445.48,447.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,449.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.25,451.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.3,454.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.50,456.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.3,458.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.2,460.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.90,129.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.20,131.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.2,134.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.23,136.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:137.2,138.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:138.22,140.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:141.2,142.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:142.27,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:145.2,151.38 6 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:151.38,154.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:154.8,156.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:157.2,160.35 4 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:160.35,162.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.2,163.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.35,165.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.2,167.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.46,169.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:169.8,171.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.2,172.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.47,174.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:174.8,176.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:177.2,177.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:177.46,179.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:179.8,181.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.2,182.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.33,184.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:184.8,186.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:189.2,207.24 17 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:207.24,209.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:210.2,210.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:210.25,212.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:213.2,213.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:213.24,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:216.2,216.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:216.29,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:220.2,222.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:222.47,222.72 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:224.47,224.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:233.2,233.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:236.30,237.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:237.6,239.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:239.20,241.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:242.3,242.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:242.17,244.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:245.3,246.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:246.52,248.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:250.3,250.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:250.23,252.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:254.3,255.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:255.15,257.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:15.48,18.6 3 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:18.6,20.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:20.17,22.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:23.3,23.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:23.17,24.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:26.3,27.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:27.22,28.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:30.3,32.14 3 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:33.25,35.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:35.18,37.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:38.4,38.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:41.2,41.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:41.24,43.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:44.2,45.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:45.50,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:48.2,48.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:51.38,53.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:53.16,56.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:57.2,58.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:58.57,61.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:62.2,62.45 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:62.45,65.3 2 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:4.33,6.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:9.34,11.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:14.43,16.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:19.33,21.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:24.29,26.2 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:6.62,7.34 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:7.34,9.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:10.5,11.28 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:11.28,13.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:14.5,14.15 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:18.39,20.16 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:20.16,22.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:23.5,25.69 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:25.69,27.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:28.5,29.57 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:29.57,31.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.5,32.54 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.54,34.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:35.5,37.72 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:37.72,40.6 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:41.5,41.13 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:47.60,49.34 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:49.34,50.105 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:50.105,53.10 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:55.5,55.19 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:59.79,62.53 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:62.53,64.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.5,65.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.47,66.57 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:66.57,71.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.5,73.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.49,74.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:74.58,79.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.5,81.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.47,83.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.5,84.46 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.46,86.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.5,87.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.47,89.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.5,90.24 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.24,90.50 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:91.5,92.33 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:92.33,93.69 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:93.69,93.81 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:95.5,96.36 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:100.79,101.36 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:101.36,102.27 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:102.27,102.37 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.9,103.48 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.48,103.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.9,104.44 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.44,105.31 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:105.31,106.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:106.49,106.59 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:107.17,108.32 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:108.32,108.64 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:112.5,112.29 1 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:14.13,17.18 3 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:22.2,22.104 1 0 @@ -15,6 +1625,8 @@ codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:11.13,12.94 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:12.94,15.3 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 7 codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 6 codeberg.org/snonux/hexai/internal/appconfig/config.go:142.19,144.3 1 1 @@ -25,94 +1637,94 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:151.85,153.4 1 4 codeberg.org/snonux/hexai/internal/appconfig/config.go:159.2,159.50 1 5 codeberg.org/snonux/hexai/internal/appconfig/config.go:159.50,161.3 1 1 codeberg.org/snonux/hexai/internal/appconfig/config.go:162.2,162.12 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.80 2 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.80,291.6 2 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:294.5,294.41 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:294.41,297.6 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:300.5,300.47 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:300.47,307.6 2 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:310.5,310.47 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:310.47,313.6 2 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:316.5,316.39 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:316.39,319.6 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:322.5,322.85 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:322.85,325.6 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:328.5,328.50 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:328.50,331.6 2 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:334.5,334.71 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:334.71,341.6 2 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:344.5,344.74 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:344.74,351.6 2 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:354.5,354.71 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:354.71,361.6 2 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:365.5,365.62 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:365.62,366.73 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:366.73,368.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:369.9,369.72 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:369.72,371.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:372.9,372.72 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:372.72,374.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:375.9,375.71 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:375.71,377.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:378.9,378.70 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:378.70,380.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.9,381.71 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.71,383.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:386.5,386.56 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:386.56,388.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:390.5,390.62 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:390.62,391.73 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:391.73,393.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:394.9,394.77 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:394.77,396.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.9,397.74 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.74,399.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:400.9,400.71 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:400.71,402.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.9,403.75 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.75,405.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:406.9,406.72 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:406.72,408.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.9,409.72 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.72,411.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:412.9,412.70 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:412.70,414.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:417.5,417.48 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:417.48,418.66 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:418.66,420.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.9,421.66 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.66,423.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:426.5,426.70 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:426.70,428.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:430.5,430.15 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.19 2 6 -codeberg.org/snonux/hexai/internal/appconfig/config.go:435.19,436.49 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:436.49,438.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:439.9,439.24 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:442.5,447.25 5 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:447.25,448.26 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:448.26,450.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:451.9,451.30 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:455.5,464.24 2 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:464.24,465.222 1 27 -codeberg.org/snonux/hexai/internal/appconfig/config.go:465.222,466.21 1 27 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.9,468.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.47,470.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.5,473.22 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.22,475.6 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:479.5,481.56 2 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:481.56,482.65 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:482.65,483.35 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:484.24,485.52 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:486.22,487.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:488.26,489.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:493.5,493.53 1 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:493.53,494.58 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:494.58,495.35 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:496.24,497.46 1 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:498.22,499.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:500.26,501.46 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:505.5,505.21 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.77 2 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:282.77,291.3 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.2,294.38 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.38,297.3 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.2,300.44 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.44,307.3 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.2,310.44 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.44,313.3 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.2,316.36 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.36,319.3 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.2,322.82 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.82,325.3 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.2,328.47 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.47,331.3 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.2,334.68 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.68,341.3 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.2,344.71 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.71,351.3 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.2,354.68 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.68,361.3 2 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.2,365.59 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.59,366.67 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:366.67,368.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.3,369.66 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.66,371.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.3,372.66 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.66,374.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.3,375.65 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.65,377.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.3,378.64 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.64,380.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.3,381.65 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.65,383.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.2,386.53 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.53,388.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.2,390.59 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.59,391.67 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:391.67,393.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.3,394.71 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.71,396.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.3,397.68 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.68,399.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.3,400.65 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.65,402.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.3,403.69 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.69,405.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.3,406.66 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.66,408.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.3,409.66 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.66,411.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.3,412.64 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.64,414.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.2,417.45 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.45,418.60 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:418.60,420.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.3,421.60 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.60,423.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.2,426.67 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.67,428.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:430.2,430.12 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.16 2 6 +codeberg.org/snonux/hexai/internal/appconfig/config.go:435.16,436.43 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:436.43,438.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:439.3,439.18 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:442.2,447.22 5 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:447.22,448.20 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:448.20,450.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:451.3,451.24 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:455.2,464.21 2 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:464.21,465.216 1 27 +codeberg.org/snonux/hexai/internal/appconfig/config.go:465.216,466.12 1 27 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.3,468.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.41,470.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.2,473.19 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.19,475.3 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:479.2,481.53 2 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:481.53,482.59 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:482.59,483.26 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:484.15,485.40 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:486.13,487.35 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:488.17,489.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.2,493.50 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.50,494.52 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:494.52,495.26 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:496.15,497.34 1 3 +codeberg.org/snonux/hexai/internal/appconfig/config.go:498.13,499.29 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:500.17,501.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:505.2,505.18 1 4 codeberg.org/snonux/hexai/internal/appconfig/config.go:508.37,512.2 3 5 codeberg.org/snonux/hexai/internal/appconfig/config.go:515.39,516.25 1 20 codeberg.org/snonux/hexai/internal/appconfig/config.go:516.25,518.3 1 7 @@ -144,42 +1756,42 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:555.2,555.33 1 20 codeberg.org/snonux/hexai/internal/appconfig/config.go:555.33,557.3 1 2 codeberg.org/snonux/hexai/internal/appconfig/config.go:558.2,558.53 1 20 codeberg.org/snonux/hexai/internal/appconfig/config.go:558.53,560.3 1 7 -codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.69 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:566.69,568.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:569.5,569.68 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:569.68,571.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:572.5,572.68 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:572.68,574.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:575.5,575.67 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:575.67,577.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:578.5,578.66 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:578.66,580.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:581.5,581.67 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:581.67,583.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:585.5,585.62 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:585.62,587.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:589.5,589.56 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:589.56,591.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:593.5,593.69 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:593.69,595.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:596.5,596.73 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:596.73,598.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:599.5,599.70 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:599.70,601.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:602.5,602.67 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:602.67,604.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:605.5,605.71 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:605.71,607.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:608.5,608.68 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:608.68,610.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:611.5,611.68 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:611.68,613.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:614.5,614.66 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:614.66,616.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:618.5,618.62 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:618.62,620.6 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:621.5,621.62 1 5 -codeberg.org/snonux/hexai/internal/appconfig/config.go:621.62,623.6 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.66 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:566.66,568.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.2,569.65 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.65,571.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.2,572.65 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.65,574.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.2,575.64 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.64,577.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.2,578.63 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.63,580.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.2,581.64 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.64,583.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.2,585.59 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.59,587.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.2,589.53 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.53,591.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.2,593.66 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.66,595.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.2,596.70 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.70,598.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.2,599.67 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.67,601.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.2,602.64 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.64,604.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.2,605.68 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.68,607.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.2,608.65 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.65,610.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.2,611.65 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.65,613.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.2,614.63 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.63,616.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.2,618.59 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.59,620.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.2,621.59 1 5 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.59,623.3 1 1 codeberg.org/snonux/hexai/internal/appconfig/config.go:627.47,628.58 1 14 codeberg.org/snonux/hexai/internal/appconfig/config.go:628.58,630.3 1 7 codeberg.org/snonux/hexai/internal/appconfig/config.go:631.2,631.56 1 14 @@ -279,47 +1891,143 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:818.61,821.3 2 1 codeberg.org/snonux/hexai/internal/appconfig/config.go:823.2,823.10 1 5 codeberg.org/snonux/hexai/internal/appconfig/config.go:823.10,825.3 1 4 codeberg.org/snonux/hexai/internal/appconfig/config.go:826.2,826.13 1 1 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:22.95,27.19 4 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:27.19,30.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:32.5,33.20 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.20,36.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:37.5,39.77 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:39.77,42.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:43.5,43.15 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:48.124,50.16 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:50.16,53.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:54.2,56.74 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:56.74,59.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:60.2,60.12 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:64.64,66.82 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:66.82,69.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:70.2,71.9 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:72.40,73.59 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:74.23,75.24 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:76.21,77.22 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:78.10,79.91 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:84.65,99.36 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:99.36,101.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:103.2,104.36 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.36,106.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:107.2,107.48 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:111.48,114.40 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:114.40,116.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:117.2,120.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.77,127.43 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.43,128.64 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.64,130.10 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:132.5,135.6 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:139.125,142.40 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:142.40,144.56 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:144.56,147.4 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:147.18,149.4 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:150.3,150.22 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:151.8,153.17 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:153.17,155.4 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:156.3,157.26 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:159.2,162.12 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:166.59,168.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:20.50,22.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:22.16,24.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:25.2,26.15 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:26.15,28.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:29.2,32.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:32.27,34.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:34.26,36.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.2,39.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.18,41.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:43.2,45.28 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:45.28,47.14 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:47.14,49.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:51.3,51.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:53.2,55.60 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:60.54,60.103 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:14.54,14.97 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:17.35,17.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:23.121,27.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:29.128,31.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:31.26,32.33 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:32.33,33.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:35.3,36.23 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:36.23,38.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:40.2,42.69 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:45.109,49.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:51.106,55.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:57.86,60.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:60.19,62.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:63.5,63.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:66.120,69.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:69.19,71.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:72.5,72.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:76.57,78.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:78.37,80.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:81.5,81.16 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:85.79,87.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:89.78,91.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:16.80,20.16 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:20.16,23.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:24.2,25.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:25.16,28.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.2,29.46 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.46,31.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:32.2,33.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:33.16,35.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:36.2,37.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:37.16,39.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:40.2,41.12 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:44.146,45.14 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:46.18,47.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:48.21,50.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:50.37,53.4 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:54.3,56.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:57.25,60.79 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:61.22,64.57 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:65.20,68.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:69.10,70.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:18.36,18.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:19.36,19.53 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:20.36,20.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:28.23,41.2 7 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:43.31,43.45 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:45.57,46.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:47.18,48.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:49.25,50.40 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:52.2,54.15 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:57.62,60.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:61.21,65.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:66.18,67.55 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:67.55,71.10 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:72.22,73.28 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:74.20,75.26 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:76.22,77.25 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:78.16,79.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:79.44,79.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:80.29,82.41 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:82.41,83.91 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:83.91,88.14 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.5,91.19 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.19,92.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:92.44,92.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:94.5,94.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:97.30,98.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:98.12,100.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:101.2,101.22 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:105.35,108.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:108.16,110.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.2,111.29 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.29,112.21 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:112.21,114.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:115.3,115.23 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:117.2,117.56 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:20.61,20.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:21.61,21.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:22.61,22.75 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:23.89,26.38 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:26.38,28.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:29.5,31.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:31.27,33.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:34.5,34.49 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:23.95,28.16 4 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:28.16,31.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.2,34.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:34.17,37.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:38.2,40.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:40.74,43.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:44.2,44.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:49.124,51.16 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:51.16,54.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:55.2,57.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:57.74,60.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:61.2,61.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:65.64,67.82 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:67.82,70.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:71.2,72.9 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:73.40,74.59 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:75.23,76.24 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:77.21,78.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:79.10,80.91 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:88.48,91.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:91.40,93.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:94.2,97.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:101.77,104.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.40,105.58 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:105.58,107.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:109.2,112.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:116.125,119.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:119.40,121.56 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:121.56,124.4 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.18,126.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.3,127.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.8,130.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:130.17,132.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:133.3,134.26 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:136.2,139.12 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:143.59,145.2 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:148.65,150.2 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:29.17,31.4 1 0 @@ -631,6 +2339,11 @@ codeberg.org/snonux/hexai/internal/llm/provider.go:111.36,114.4 2 0 codeberg.org/snonux/hexai/internal/llm/provider.go:115.3,115.102 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:116.10,117.55 1 0 codeberg.org/snonux/hexai/internal/llm/util.go:6.47,6.77 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:12.62,26.39 3 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:26.39,28.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:29.5,30.39 2 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:30.39,32.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:33.5,33.51 1 0 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 0 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:18.3,20.12 2 0 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:20.12,22.3 1 0 @@ -726,30 +2439,30 @@ codeberg.org/snonux/hexai/internal/lsp/handlers.go:10.38,11.41 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:11.41,14.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.2,15.22 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.22,17.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.31,31.99 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.99,34.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.2,36.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.50 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.50,56.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.2,57.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.44,58.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.51,63.4 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.2,65.46 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.46,66.52 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.52,71.4 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.2,73.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.44,75.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.2,76.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.43,78.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.2,79.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.44,81.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.2,82.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.21,84.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.2,87.30 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.30,88.63 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.63,90.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.2,93.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.34,31.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.105,34.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.5,36.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.53,56.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.5,57.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.47,58.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.57,63.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.5,65.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.49,66.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.58,71.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.5,73.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.47,75.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.5,76.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.46,78.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.5,79.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.47,81.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.5,82.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.24,84.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.5,87.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.33,88.69 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.69,90.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.5,93.36 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:117.72,120.2 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:191.151,194.24 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:194.24,196.3 1 0 @@ -834,19 +2547,19 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:86.45,88.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:89.2,97.58 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:97.58,99.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:100.2,100.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.20,108.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.17,108.72 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:108.72,109.66 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:109.66,113.5 3 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:114.9,116.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.24,120.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.49,121.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.33,123.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.19,125.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.9,133.78 7 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.78,134.75 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.75,138.14 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.15,141.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.21,149.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.21,120.43 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.43,121.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.24,123.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.10,125.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.3,133.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.72,134.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.66,138.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.9,141.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.18,149.72 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:149.72,150.66 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:150.66,154.5 3 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:155.9,157.4 1 0 @@ -960,8 +2673,8 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.31,456.6 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.2,461.15 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.15,463.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:464.2,464.18 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.27,476.71 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.24,476.71 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:476.71,478.21 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:478.21,480.5 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:481.9,483.4 1 0 @@ -1050,7 +2763,7 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:216.50,218.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:219.2,219.23 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.193,225.9 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:225.9,227.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.5,237.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.2,237.32 6 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:237.32,239.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.2,241.24 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.24,243.3 1 0 @@ -1086,15 +2799,15 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.23,325.11 4 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.22,328.17 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:329.19,331.13 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:335.3,337.14 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.17 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.17,357.6 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.5,358.71 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.71,360.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.5,363.55 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.55,365.43 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.43,367.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.9,368.79 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.5,370.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.14 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.14,357.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.2,358.68 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.68,360.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.2,363.52 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.52,365.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.37,367.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.3,368.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.2,370.17 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:374.101,376.57 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:376.57,377.78 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:377.78,379.4 1 0 @@ -1221,190 +2934,176 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:16.2,27.27 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:30.38,32.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:34.46,36.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:38.31,41.2 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:20.55,22.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:22.32,24.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:25.2,25.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:29.41,34.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:36.41,41.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:43.32,46.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:46.23,48.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:49.2,50.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.24,52.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:53.2,56.15 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:56.15,58.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:59.2,62.211 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:66.51,67.41 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.41,69.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:70.2,72.71 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:76.62,77.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.16,79.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.5,81.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:81.28,84.6 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:85.5,85.15 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:88.118,89.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.14,92.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.16,95.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:95.35,97.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:98.4,98.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:98.36,100.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:101.4,103.59 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:103.59,105.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.4,106.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:109.2,112.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.51,116.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.23,118.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:119.2,119.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:119.13,121.100 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.100,123.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:125.3,125.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.2,127.11 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.32,132.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.44,136.50 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.50,138.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:139.2,139.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.40,144.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:144.20,145.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.40,147.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.3,149.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:151.2,151.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:151.12,153.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.2,154.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.52,158.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:158.38,160.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:161.2,162.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.27,163.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:163.34,164.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:166.3,166.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:166.36,167.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:169.3,169.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:171.2,171.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:179.64,181.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:181.22,184.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:184.12,186.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:187.3,189.74 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.74,191.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.12,197.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:198.3,199.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.48,201.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:203.3,204.18 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:204.18,206.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.3,209.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:211.2,211.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.41,221.31 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:221.31,223.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.29 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.29,226.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:227.2,227.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:227.31,229.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:229.32,231.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.2,233.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:237.83,240.102 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.102,242.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:242.36,244.136 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:244.136,246.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.4,249.34 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.34,251.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:255.2,255.65 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:255.65,256.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.53,258.37 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:258.37,260.137 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:260.137,262.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:263.5,265.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:265.35,267.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:271.2,271.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.80,276.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.22,278.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.2,281.40 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:281.40,283.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.2,284.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.34,285.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:285.31,286.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.3,289.16 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:289.16,290.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.3,292.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.32,294.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:296.2,296.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:299.36,301.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.39,306.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.13,308.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:309.2,311.66 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.66,313.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.2,315.54 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:315.54,317.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.2,318.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.51,320.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,323.69 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:323.69,326.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:327.2,327.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.43,333.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:333.13,335.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:336.2,337.11 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.11,339.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:340.2,341.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:341.14,343.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:344.2,345.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:349.56,351.89 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.89,353.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:354.2,354.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.52,359.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.32,361.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:361.28,363.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:364.3,364.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:364.34,366.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:367.3,367.42 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:367.42,369.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.3,370.49 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.2,375.27 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.27,377.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:378.2,378.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:378.36,380.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:381.2,384.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:384.49,386.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.24,388.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.2,392.25 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:392.25,394.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.2,395.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.33,397.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.2,399.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.67,405.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:405.35,407.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:408.2,409.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.31,411.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.2,412.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:415.69,416.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:416.32,418.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:419.2,419.47 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:422.45,424.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:424.22,428.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,430.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.32 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.32,435.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,437.46 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:437.46,439.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:442.3,443.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:443.12,445.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:446.3,447.49 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:447.49,449.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:451.3,451.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.2,453.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:456.67,459.28 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:459.28,461.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:461.12,462.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:464.3,466.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:466.12,467.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.3,469.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.43,471.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.3,473.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.34,475.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:477.3,478.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.48,480.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.3,482.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.25,484.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:486.3,487.50 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:487.50,489.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:490.3,491.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:493.2,493.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:21.55,23.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.32,25.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:26.2,26.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:30.41,35.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:37.41,42.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.32,47.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.23,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.2,51.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.24,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.2,57.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.15,59.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.2,63.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.51,68.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.41,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:71.2,73.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.62,77.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.50,129.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:170.64,172.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:172.22,175.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.74 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.74,182.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.3,186.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:186.12,188.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.3,190.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.48,192.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.18,197.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.3,200.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:202.2,202.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.41,212.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.31,214.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.29,217.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.2,218.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.31,220.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.32,222.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.83,231.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:231.102,233.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.36,235.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.136,237.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.4,240.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.34,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.2,246.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.65,247.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.53,249.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.37,251.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.137,253.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.5,256.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.35,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:262.2,262.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:266.80,267.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.22,269.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:270.2,272.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.40,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.34,276.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.31,277.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.3,280.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.16,281.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.3,283.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.32,285.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.2,287.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:290.36,292.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.39,295.77 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:298.43,300.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.13,302.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.2,304.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.11,306.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.2,308.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:308.14,310.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.2,312.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:316.56,318.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.89,320.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,321.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.52,326.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:326.32,328.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.28,330.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.3,331.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.34,333.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.3,334.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.42,336.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.3,337.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.2,342.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.27,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.2,345.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.36,347.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:348.2,351.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.49,353.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:353.24,355.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.2,359.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.25,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.2,362.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.33,364.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:365.2,366.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.67,372.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.35,374.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.2,376.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:376.31,378.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,379.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.69,383.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.32,385.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,386.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:389.45,391.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.22,395.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.12,397.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.3,400.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.32,402.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.3,404.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.46,406.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.3,410.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.12,412.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:413.3,414.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.49,416.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.3,418.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.2,420.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.67,426.28 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:426.28,428.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,429.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.12,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.43,438.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.3,440.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.34,442.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.3,445.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:445.48,447.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,449.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.25,451.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.3,454.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.50,456.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.3,458.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.2,460.14 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:126.90,129.20 3 0 codeberg.org/snonux/hexai/internal/lsp/server.go:129.20,131.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:132.2,134.23 3 0 @@ -1429,10 +3128,10 @@ codeberg.org/snonux/hexai/internal/lsp/server.go:174.8,176.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:177.2,177.46 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:177.46,179.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:179.8,181.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:182.5,182.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:182.36,184.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:184.11,186.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:189.5,207.24 17 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.2,182.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.33,184.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:184.8,186.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:189.2,207.24 17 0 codeberg.org/snonux/hexai/internal/lsp/server.go:207.24,209.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:210.2,210.25 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:210.25,212.3 1 0 @@ -1482,112 +3181,166 @@ codeberg.org/snonux/hexai/internal/testutil/fixtures.go:9.34,11.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:14.43,16.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:19.33,21.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:24.29,26.2 1 0 -codeberg.org/snonux/hexai/cmd/hexai/main.go:14.13,17.18 3 0 -codeberg.org/snonux/hexai/cmd/hexai/main.go:17.18,20.3 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:6.62,7.34 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:7.34,9.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:10.5,11.28 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:11.28,13.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:14.5,14.15 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:18.39,20.16 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:20.16,22.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:23.5,25.69 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:25.69,27.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:28.5,29.57 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:29.57,31.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.5,32.54 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.54,34.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:35.5,37.72 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:37.72,40.6 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:41.5,41.13 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:47.60,49.34 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:49.34,50.105 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:50.105,53.10 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:55.5,55.19 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:59.79,62.53 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:62.53,64.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.5,65.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.47,66.57 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:66.57,71.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.5,73.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.49,74.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:74.58,79.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.5,81.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.47,83.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.5,84.46 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.46,86.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.5,87.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.47,89.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.5,90.24 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.24,90.50 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:91.5,92.33 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:92.33,93.69 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:93.69,93.81 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:95.5,96.36 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:100.79,101.36 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:101.36,102.27 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:102.27,102.37 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.9,103.48 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.48,103.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.9,104.44 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.44,105.31 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:105.31,106.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:106.49,106.59 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:107.17,108.32 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:108.32,108.64 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:112.5,112.29 1 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:14.13,17.18 3 1 +codeberg.org/snonux/hexai/cmd/hexai/main.go:17.18,20.3 2 1 codeberg.org/snonux/hexai/cmd/hexai/main.go:22.2,22.104 1 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:22.104,24.3 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 1 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:11.13,12.94 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:12.94,15.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:142.19,144.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,147.16 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,147.16 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:147.16,150.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:150.8,151.85 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:150.8,151.85 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:151.85,153.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:159.2,159.50 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:159.2,159.50 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:159.50,161.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:162.2,162.12 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.80 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.80,291.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:294.5,294.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:294.41,297.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:300.5,300.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:300.47,307.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:310.5,310.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:310.47,313.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:316.5,316.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:316.39,319.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:322.5,322.85 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:322.85,325.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:328.5,328.50 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:328.50,331.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:334.5,334.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:334.71,341.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:344.5,344.74 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:344.74,351.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:354.5,354.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:354.71,361.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:365.5,365.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:365.62,366.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:366.73,368.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:369.9,369.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:369.72,371.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:372.9,372.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:372.72,374.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:375.9,375.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:375.71,377.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:378.9,378.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:378.70,380.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.9,381.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.71,383.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:386.5,386.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:386.56,388.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:390.5,390.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:390.62,391.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:391.73,393.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:394.9,394.77 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:394.77,396.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.9,397.74 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.74,399.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:400.9,400.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:400.71,402.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.9,403.75 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.75,405.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:406.9,406.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:406.72,408.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.9,409.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.72,411.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:412.9,412.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:412.70,414.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:417.5,417.48 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:417.48,418.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:418.66,420.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.9,421.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.66,423.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:426.5,426.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:426.70,428.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:430.5,430.15 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.19 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:435.19,436.49 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:436.49,438.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:439.9,439.24 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:442.5,447.25 5 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:447.25,448.26 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:448.26,450.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:451.9,451.30 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:455.5,464.24 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:464.24,465.222 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:465.222,466.21 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.9,468.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.47,470.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.5,473.22 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.22,475.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:479.5,481.56 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:481.56,482.65 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:482.65,483.35 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:484.24,485.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:486.22,487.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:488.26,489.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:493.5,493.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:493.53,494.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:494.58,495.35 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:496.24,497.46 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:498.22,499.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:500.26,501.46 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:505.5,505.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:162.2,162.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.77 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:282.77,291.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.2,294.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.38,297.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.2,300.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.44,307.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.2,310.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.44,313.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.2,316.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.36,319.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.2,322.82 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.82,325.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.2,328.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.47,331.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.2,334.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.68,341.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.2,344.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.71,351.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.2,354.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.68,361.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.2,365.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.59,366.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:366.67,368.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.3,369.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.66,371.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.3,372.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.66,374.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.3,375.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.65,377.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.3,378.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.64,380.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.3,381.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.65,383.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.2,386.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.53,388.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.2,390.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.59,391.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:391.67,393.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.3,394.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.71,396.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.3,397.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.68,399.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.3,400.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.65,402.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.3,403.69 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.69,405.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.3,406.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.66,408.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.3,409.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.66,411.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.3,412.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.64,414.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.2,417.45 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.45,418.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:418.60,420.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.3,421.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.60,423.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.2,426.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.67,428.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:430.2,430.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:435.16,436.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:436.43,438.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:439.3,439.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:442.2,447.22 5 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:447.22,448.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:448.20,450.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:451.3,451.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:455.2,464.21 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:464.21,465.216 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:465.216,466.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.3,468.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.41,470.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.2,473.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.19,475.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:479.2,481.53 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:481.53,482.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:482.59,483.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:484.15,485.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:486.13,487.35 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:488.17,489.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.2,493.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.50,494.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:494.52,495.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:496.15,497.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:498.13,499.29 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:500.17,501.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:505.2,505.18 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:508.37,512.2 3 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:515.39,516.25 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:516.25,518.3 1 0 @@ -1619,42 +3372,42 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:555.2,555.33 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:555.33,557.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:558.2,558.53 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:558.53,560.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.69 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:566.69,568.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:569.5,569.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:569.68,571.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:572.5,572.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:572.68,574.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:575.5,575.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:575.67,577.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:578.5,578.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:578.66,580.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:581.5,581.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:581.67,583.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:585.5,585.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:585.62,587.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:589.5,589.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:589.56,591.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:593.5,593.69 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:593.69,595.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:596.5,596.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:596.73,598.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:599.5,599.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:599.70,601.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:602.5,602.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:602.67,604.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:605.5,605.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:605.71,607.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:608.5,608.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:608.68,610.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:611.5,611.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:611.68,613.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:614.5,614.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:614.66,616.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:618.5,618.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:618.62,620.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:621.5,621.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:621.62,623.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:566.66,568.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.2,569.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.65,571.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.2,572.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.65,574.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.2,575.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.64,577.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.2,578.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.63,580.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.2,581.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.64,583.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.2,585.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.59,587.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.2,589.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.53,591.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.2,593.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.66,595.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.2,596.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.70,598.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.2,599.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.67,601.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.2,602.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.64,604.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.2,605.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.68,607.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.2,608.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.65,610.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.2,611.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.65,613.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.2,614.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.63,616.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.2,618.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.59,620.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.2,621.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.59,623.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:627.47,628.58 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:628.58,630.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:631.2,631.56 1 0 @@ -1673,128 +3426,224 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:649.2,649.57 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:649.57,651.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:652.2,652.37 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:652.37,654.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:657.38,659.72 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:659.72,661.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:657.38,659.72 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:659.72,661.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:661.8,663.17 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:663.17,665.4 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:666.3,666.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:668.2,668.24 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:675.43,680.34 3 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:680.34,680.76 1 24 -codeberg.org/snonux/hexai/internal/appconfig/config.go:681.2,681.41 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:681.41,683.14 2 7 -codeberg.org/snonux/hexai/internal/appconfig/config.go:683.14,685.4 1 7 +codeberg.org/snonux/hexai/internal/appconfig/config.go:668.2,668.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:675.43,680.34 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:680.34,680.76 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:681.2,681.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:681.41,683.14 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:683.14,685.4 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:686.3,687.17 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:687.17,688.21 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:688.21,690.5 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:691.4,691.19 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:693.3,693.17 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:695.2,695.51 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:695.51,697.14 2 4 -codeberg.org/snonux/hexai/internal/appconfig/config.go:697.14,699.4 1 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:695.2,695.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:695.51,697.14 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:697.14,699.4 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:700.3,701.17 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:701.17,702.21 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:702.21,704.5 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:705.4,705.21 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:707.3,707.18 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:710.2,710.47 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:710.2,710.47 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:710.47,713.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:714.2,714.48 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:714.2,714.48 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:714.48,717.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:718.2,718.57 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:718.2,718.57 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:718.57,721.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:722.2,722.55 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:722.2,722.55 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:722.55,725.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:726.2,726.54 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:726.2,726.54 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:726.54,729.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:730.2,730.61 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:730.2,730.61 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:730.61,733.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:734.2,734.59 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:734.2,734.59 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:734.59,737.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:738.2,738.59 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:738.2,738.59 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:738.59,741.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:742.2,742.60 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:742.2,742.60 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:742.60,745.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:746.2,746.54 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:746.2,746.54 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:746.54,749.27 3 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:749.27,750.42 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:750.42,752.5 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:754.3,754.13 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:756.2,756.47 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:756.2,756.47 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:756.47,759.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:760.2,760.48 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:760.2,760.48 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:760.48,763.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:764.2,764.47 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:764.2,764.47 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:764.47,767.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:768.2,768.49 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:768.2,768.49 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:768.49,771.27 3 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:771.27,772.42 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:772.42,774.5 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:776.3,776.13 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:778.2,778.44 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:778.2,778.44 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:778.44,781.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:784.2,784.51 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:784.2,784.51 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:784.51,787.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:788.2,788.48 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:788.2,788.48 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:788.48,791.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:792.2,792.60 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:792.2,792.60 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:792.60,795.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:797.2,797.51 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:797.2,797.51 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:797.51,800.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:801.2,801.48 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:801.2,801.48 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:801.48,804.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:805.2,805.60 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:805.2,805.60 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:805.60,808.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:810.2,810.52 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:810.2,810.52 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:810.52,813.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:814.2,814.49 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:814.2,814.49 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:814.49,817.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:818.2,818.61 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:818.2,818.61 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:818.61,821.3 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:823.2,823.10 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:823.10,825.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:823.2,823.10 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:823.10,825.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:826.2,826.13 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:22.95,27.19 4 1 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:27.19,30.6 2 1 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:32.5,33.20 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.20,36.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:37.5,39.77 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:39.77,42.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:43.5,43.15 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:48.124,50.16 2 1 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:50.16,53.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:54.2,56.74 3 1 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:56.74,59.3 2 1 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:60.2,60.12 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:64.64,66.82 2 5 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:66.82,69.3 2 4 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:70.2,71.9 2 5 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:72.40,73.59 1 1 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:74.23,75.24 1 1 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:76.21,77.22 1 2 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:78.10,79.91 1 1 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:84.65,99.36 3 3 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:99.36,101.3 1 3 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:103.2,104.36 2 3 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.36,106.3 1 3 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:107.2,107.48 1 3 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:111.48,114.40 3 6 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:114.40,116.3 1 1 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:117.2,120.3 1 6 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.77,127.43 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.43,128.64 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.64,130.10 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:132.5,135.6 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:139.125,142.40 3 4 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:142.40,144.56 2 1 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:144.56,147.4 2 3 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:147.18,149.4 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:150.3,150.22 1 1 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:151.8,153.17 2 3 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:153.17,155.4 1 2 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:156.3,157.26 2 1 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:159.2,162.12 3 2 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:166.59,168.2 1 2 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:20.50,22.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:22.16,24.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:25.2,26.15 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:26.15,28.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:29.2,32.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:32.27,34.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:34.26,36.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.2,39.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.18,41.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:43.2,45.28 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:45.28,47.14 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:47.14,49.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:51.3,51.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:53.2,55.60 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:60.54,60.103 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:14.54,14.97 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:17.35,17.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:23.121,27.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:29.128,31.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:31.26,32.33 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:32.33,33.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:35.3,36.23 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:36.23,38.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:40.2,42.69 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:45.109,49.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:51.106,55.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:57.86,60.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:60.19,62.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:63.5,63.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:66.120,69.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:69.19,71.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:72.5,72.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:76.57,78.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:78.37,80.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:81.5,81.16 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:85.79,87.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:89.78,91.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:16.80,20.16 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:20.16,23.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:24.2,25.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:25.16,28.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.2,29.46 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.46,31.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:32.2,33.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:33.16,35.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:36.2,37.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:37.16,39.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:40.2,41.12 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:44.146,45.14 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:46.18,47.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:48.21,50.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:50.37,53.4 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:54.3,56.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:57.25,60.79 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:61.22,64.57 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:65.20,68.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:69.10,70.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:18.36,18.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:19.36,19.53 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:20.36,20.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:28.23,41.2 7 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:43.31,43.45 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:45.57,46.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:47.18,48.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:49.25,50.40 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:52.2,54.15 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:57.62,60.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:61.21,65.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:66.18,67.55 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:67.55,71.10 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:72.22,73.28 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:74.20,75.26 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:76.22,77.25 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:78.16,79.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:79.44,79.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:80.29,82.41 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:82.41,83.91 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:83.91,88.14 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.5,91.19 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.19,92.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:92.44,92.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:94.5,94.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:97.30,98.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:98.12,100.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:101.2,101.22 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:105.35,108.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:108.16,110.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.2,111.29 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.29,112.21 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:112.21,114.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:115.3,115.23 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:117.2,117.56 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:20.61,20.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:21.61,21.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:22.61,22.75 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:23.89,26.38 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:26.38,28.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:29.5,31.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:31.27,33.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:34.5,34.49 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:23.95,28.16 4 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:28.16,31.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.2,34.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:34.17,37.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:38.2,40.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:40.74,43.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:44.2,44.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:49.124,51.16 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:51.16,54.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:55.2,57.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:57.74,60.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:61.2,61.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:65.64,67.82 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:67.82,70.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:71.2,72.9 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:73.40,74.59 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:75.23,76.24 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:77.21,78.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:79.10,80.91 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:88.48,91.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:91.40,93.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:94.2,97.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:101.77,104.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.40,105.58 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:105.58,107.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:109.2,112.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:116.125,119.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:119.40,121.56 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:121.56,124.4 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.18,126.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.3,127.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.8,130.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:130.17,132.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:133.3,134.26 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:136.2,139.12 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:143.59,145.2 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:148.65,150.2 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:29.17,31.4 1 0 @@ -1925,11 +3774,11 @@ codeberg.org/snonux/hexai/internal/llm/copilot.go:382.2,383.25 2 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:383.25,384.60 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:384.60,386.4 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:388.2,388.17 1 0 -codeberg.org/snonux/hexai/internal/llm/ollama.go:44.68,45.38 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:44.68,45.38 1 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:45.38,47.3 1 0 -codeberg.org/snonux/hexai/internal/llm/ollama.go:48.2,48.36 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:48.2,48.36 1 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:48.36,50.3 1 0 -codeberg.org/snonux/hexai/internal/llm/ollama.go:51.2,57.3 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:51.2,57.3 1 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:60.108,62.27 2 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:62.27,64.3 1 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:65.2,65.19 1 0 @@ -2088,17 +3937,17 @@ codeberg.org/snonux/hexai/internal/llm/provider.go:60.47,60.73 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:60.73,60.92 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:61.45,62.26 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:62.26,62.66 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.13 2 3 -codeberg.org/snonux/hexai/internal/llm/provider.go:87.13,89.3 1 1 -codeberg.org/snonux/hexai/internal/llm/provider.go:90.2,90.11 1 3 -codeberg.org/snonux/hexai/internal/llm/provider.go:91.16,92.44 1 2 -codeberg.org/snonux/hexai/internal/llm/provider.go:92.44,94.4 1 2 +codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.13 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:87.13,89.3 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:90.2,90.11 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:91.16,92.44 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:92.44,94.4 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:96.3,96.35 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:96.35,99.4 2 0 codeberg.org/snonux/hexai/internal/llm/provider.go:100.3,100.97 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:101.16,102.35 1 1 -codeberg.org/snonux/hexai/internal/llm/provider.go:102.35,105.4 2 1 -codeberg.org/snonux/hexai/internal/llm/provider.go:106.3,106.83 1 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:101.16,102.35 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:102.35,105.4 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:106.3,106.83 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:107.17,108.45 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:108.45,110.4 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:111.3,111.36 1 0 @@ -2106,7 +3955,12 @@ codeberg.org/snonux/hexai/internal/llm/provider.go:111.36,114.4 2 0 codeberg.org/snonux/hexai/internal/llm/provider.go:115.3,115.102 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:116.10,117.55 1 0 codeberg.org/snonux/hexai/internal/llm/util.go:6.47,6.77 1 0 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 1 +codeberg.org/snonux/hexai/internal/llmutils/client.go:12.62,26.39 3 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:26.39,28.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:29.5,30.39 2 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:30.39,32.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:33.5,33.51 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 0 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:18.3,20.12 2 0 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:20.12,22.3 1 0 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:23.2,25.29 2 0 @@ -2201,30 +4055,30 @@ codeberg.org/snonux/hexai/internal/lsp/handlers.go:10.38,11.41 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:11.41,14.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.2,15.22 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.22,17.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.31,31.99 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.99,34.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.2,36.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.50 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.50,56.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.2,57.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.44,58.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.51,63.4 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.2,65.46 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.46,66.52 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.52,71.4 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.2,73.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.44,75.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.2,76.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.43,78.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.2,79.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.44,81.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.2,82.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.21,84.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.2,87.30 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.30,88.63 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.63,90.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.2,93.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.34,31.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.105,34.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.5,36.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.53,56.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.5,57.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.47,58.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.57,63.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.5,65.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.49,66.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.58,71.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.5,73.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.47,75.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.5,76.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.46,78.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.5,79.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.47,81.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.5,82.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.24,84.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.5,87.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.33,88.69 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.69,90.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.5,93.36 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:117.72,120.2 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:191.151,194.24 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:194.24,196.3 1 0 @@ -2309,19 +4163,19 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:86.45,88.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:89.2,97.58 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:97.58,99.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:100.2,100.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.20,108.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.17,108.72 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:108.72,109.66 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:109.66,113.5 3 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:114.9,116.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.24,120.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.49,121.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.33,123.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.19,125.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.9,133.78 7 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.78,134.75 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.75,138.14 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.15,141.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.21,149.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.21,120.43 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.43,121.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.24,123.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.10,125.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.3,133.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.72,134.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.66,138.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.9,141.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.18,149.72 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:149.72,150.66 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:150.66,154.5 3 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:155.9,157.4 1 0 @@ -2435,8 +4289,8 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.31,456.6 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.2,461.15 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.15,463.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:464.2,464.18 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.27,476.71 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.24,476.71 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:476.71,478.21 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:478.21,480.5 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:481.9,483.4 1 0 @@ -2525,7 +4379,7 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:216.50,218.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:219.2,219.23 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.193,225.9 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:225.9,227.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.5,237.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.2,237.32 6 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:237.32,239.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.2,241.24 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.24,243.3 1 0 @@ -2561,15 +4415,15 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.23,325.11 4 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.22,328.17 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:329.19,331.13 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:335.3,337.14 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.17 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.17,357.6 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.5,358.71 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.71,360.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.5,363.55 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.55,365.43 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.43,367.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.9,368.79 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.5,370.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.14 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.14,357.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.2,358.68 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.68,360.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.2,363.52 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.52,365.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.37,367.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.3,368.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.2,370.17 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:374.101,376.57 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:376.57,377.78 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:377.78,379.4 1 0 @@ -2696,190 +4550,176 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:16.2,27.27 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:30.38,32.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:34.46,36.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:38.31,41.2 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:20.55,22.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:22.32,24.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:25.2,25.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:29.41,34.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:36.41,41.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:43.32,46.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:46.23,48.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:49.2,50.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.24,52.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:53.2,56.15 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:56.15,58.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:59.2,62.211 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:66.51,67.41 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.41,69.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:70.2,72.71 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:76.62,77.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.16,79.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.5,81.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:81.28,84.6 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:85.5,85.15 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:88.118,89.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.14,92.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.16,95.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:95.35,97.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:98.4,98.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:98.36,100.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:101.4,103.59 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:103.59,105.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.4,106.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:109.2,112.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.51,116.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.23,118.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:119.2,119.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:119.13,121.100 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.100,123.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:125.3,125.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.2,127.11 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.32,132.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.44,136.50 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.50,138.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:139.2,139.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.40,144.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:144.20,145.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.40,147.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.3,149.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:151.2,151.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:151.12,153.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.2,154.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.52,158.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:158.38,160.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:161.2,162.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.27,163.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:163.34,164.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:166.3,166.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:166.36,167.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:169.3,169.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:171.2,171.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:179.64,181.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:181.22,184.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:184.12,186.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:187.3,189.74 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.74,191.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.12,197.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:198.3,199.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.48,201.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:203.3,204.18 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:204.18,206.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.3,209.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:211.2,211.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.41,221.31 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:221.31,223.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.29 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.29,226.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:227.2,227.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:227.31,229.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:229.32,231.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.2,233.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:237.83,240.102 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.102,242.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:242.36,244.136 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:244.136,246.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.4,249.34 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.34,251.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:255.2,255.65 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:255.65,256.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.53,258.37 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:258.37,260.137 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:260.137,262.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:263.5,265.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:265.35,267.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:271.2,271.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.80,276.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.22,278.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.2,281.40 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:281.40,283.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.2,284.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.34,285.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:285.31,286.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.3,289.16 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:289.16,290.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.3,292.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.32,294.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:296.2,296.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:299.36,301.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.39,306.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.13,308.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:309.2,311.66 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.66,313.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.2,315.54 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:315.54,317.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.2,318.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.51,320.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,323.69 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:323.69,326.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:327.2,327.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.43,333.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:333.13,335.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:336.2,337.11 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.11,339.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:340.2,341.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:341.14,343.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:344.2,345.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:349.56,351.89 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.89,353.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:354.2,354.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.52,359.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.32,361.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:361.28,363.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:364.3,364.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:364.34,366.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:367.3,367.42 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:367.42,369.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.3,370.49 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.2,375.27 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.27,377.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:378.2,378.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:378.36,380.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:381.2,384.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:384.49,386.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.24,388.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.2,392.25 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:392.25,394.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.2,395.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.33,397.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.2,399.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.67,405.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:405.35,407.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:408.2,409.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.31,411.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.2,412.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:415.69,416.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:416.32,418.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:419.2,419.47 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:422.45,424.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:424.22,428.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,430.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.32 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.32,435.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,437.46 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:437.46,439.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:442.3,443.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:443.12,445.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:446.3,447.49 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:447.49,449.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:451.3,451.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.2,453.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:456.67,459.28 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:459.28,461.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:461.12,462.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:464.3,466.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:466.12,467.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.3,469.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.43,471.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.3,473.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.34,475.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:477.3,478.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.48,480.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.3,482.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.25,484.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:486.3,487.50 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:487.50,489.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:490.3,491.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:493.2,493.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:21.55,23.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.32,25.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:26.2,26.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:30.41,35.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:37.41,42.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.32,47.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.23,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.2,51.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.24,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.2,57.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.15,59.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.2,63.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.51,68.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.41,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:71.2,73.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.62,77.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.50,129.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:170.64,172.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:172.22,175.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.74 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.74,182.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.3,186.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:186.12,188.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.3,190.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.48,192.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.18,197.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.3,200.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:202.2,202.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.41,212.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.31,214.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.29,217.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.2,218.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.31,220.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.32,222.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.83,231.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:231.102,233.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.36,235.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.136,237.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.4,240.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.34,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.2,246.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.65,247.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.53,249.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.37,251.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.137,253.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.5,256.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.35,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:262.2,262.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:266.80,267.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.22,269.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:270.2,272.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.40,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.34,276.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.31,277.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.3,280.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.16,281.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.3,283.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.32,285.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.2,287.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:290.36,292.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.39,295.77 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:298.43,300.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.13,302.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.2,304.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.11,306.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.2,308.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:308.14,310.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.2,312.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:316.56,318.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.89,320.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,321.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.52,326.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:326.32,328.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.28,330.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.3,331.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.34,333.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.3,334.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.42,336.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.3,337.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.2,342.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.27,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.2,345.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.36,347.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:348.2,351.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.49,353.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:353.24,355.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.2,359.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.25,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.2,362.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.33,364.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:365.2,366.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.67,372.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.35,374.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.2,376.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:376.31,378.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,379.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.69,383.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.32,385.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,386.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:389.45,391.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.22,395.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.12,397.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.3,400.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.32,402.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.3,404.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.46,406.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.3,410.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.12,412.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:413.3,414.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.49,416.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.3,418.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.2,420.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.67,426.28 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:426.28,428.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,429.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.12,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.43,438.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.3,440.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.34,442.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.3,445.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:445.48,447.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,449.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.25,451.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.3,454.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.50,456.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.3,458.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.2,460.14 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:126.90,129.20 3 0 codeberg.org/snonux/hexai/internal/lsp/server.go:129.20,131.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:132.2,134.23 3 0 @@ -2904,10 +4744,10 @@ codeberg.org/snonux/hexai/internal/lsp/server.go:174.8,176.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:177.2,177.46 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:177.46,179.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:179.8,181.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:182.5,182.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:182.36,184.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:184.11,186.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:189.5,207.24 17 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.2,182.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.33,184.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:184.8,186.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:189.2,207.24 17 0 codeberg.org/snonux/hexai/internal/lsp/server.go:207.24,209.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:210.2,210.25 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:210.25,212.3 1 0 @@ -2957,6 +4797,58 @@ codeberg.org/snonux/hexai/internal/testutil/fixtures.go:9.34,11.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:14.43,16.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:19.33,21.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:24.29,26.2 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:6.62,7.34 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:7.34,9.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:10.5,11.28 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:11.28,13.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:14.5,14.15 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:18.39,20.16 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:20.16,22.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:23.5,25.69 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:25.69,27.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:28.5,29.57 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:29.57,31.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.5,32.54 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.54,34.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:35.5,37.72 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:37.72,40.6 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:41.5,41.13 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:47.60,49.34 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:49.34,50.105 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:50.105,53.10 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:55.5,55.19 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:59.79,62.53 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:62.53,64.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.5,65.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.47,66.57 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:66.57,71.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.5,73.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.49,74.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:74.58,79.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.5,81.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.47,83.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.5,84.46 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.46,86.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.5,87.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.47,89.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.5,90.24 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.24,90.50 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:91.5,92.33 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:92.33,93.69 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:93.69,93.81 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:95.5,96.36 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:100.79,101.36 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:101.36,102.27 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:102.27,102.37 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.9,103.48 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.48,103.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.9,104.44 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.44,105.31 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:105.31,106.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:106.49,106.59 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:107.17,108.32 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:108.32,108.64 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:112.5,112.29 1 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:14.13,17.18 3 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:22.2,22.104 1 0 @@ -2965,9 +4857,11 @@ codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:142.19,144.3 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:11.13,12.94 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:12.94,15.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:142.19,144.3 1 1 codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,147.16 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:147.16,150.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:150.8,151.85 1 0 @@ -2975,94 +4869,94 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:151.85,153.4 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:159.2,159.50 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:159.50,161.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:162.2,162.12 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.80 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.80,291.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:294.5,294.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:294.41,297.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:300.5,300.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:300.47,307.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:310.5,310.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:310.47,313.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:316.5,316.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:316.39,319.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:322.5,322.85 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:322.85,325.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:328.5,328.50 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:328.50,331.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:334.5,334.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:334.71,341.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:344.5,344.74 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:344.74,351.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:354.5,354.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:354.71,361.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:365.5,365.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:365.62,366.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:366.73,368.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:369.9,369.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:369.72,371.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:372.9,372.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:372.72,374.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:375.9,375.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:375.71,377.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:378.9,378.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:378.70,380.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.9,381.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.71,383.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:386.5,386.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:386.56,388.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:390.5,390.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:390.62,391.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:391.73,393.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:394.9,394.77 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:394.77,396.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.9,397.74 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.74,399.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:400.9,400.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:400.71,402.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.9,403.75 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.75,405.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:406.9,406.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:406.72,408.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.9,409.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.72,411.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:412.9,412.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:412.70,414.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:417.5,417.48 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:417.48,418.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:418.66,420.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.9,421.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.66,423.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:426.5,426.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:426.70,428.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:430.5,430.15 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.19 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:435.19,436.49 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:436.49,438.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:439.9,439.24 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:442.5,447.25 5 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:447.25,448.26 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:448.26,450.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:451.9,451.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:455.5,464.24 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:464.24,465.222 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:465.222,466.21 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.9,468.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.47,470.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.5,473.22 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.22,475.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:479.5,481.56 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:481.56,482.65 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:482.65,483.35 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:484.24,485.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:486.22,487.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:488.26,489.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:493.5,493.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:493.53,494.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:494.58,495.35 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:496.24,497.46 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:498.22,499.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:500.26,501.46 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:505.5,505.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.77 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:282.77,291.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.2,294.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.38,297.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.2,300.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.44,307.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.2,310.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.44,313.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.2,316.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.36,319.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.2,322.82 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.82,325.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.2,328.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.47,331.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.2,334.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.68,341.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.2,344.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.71,351.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.2,354.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.68,361.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.2,365.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.59,366.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:366.67,368.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.3,369.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.66,371.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.3,372.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.66,374.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.3,375.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.65,377.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.3,378.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.64,380.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.3,381.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.65,383.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.2,386.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.53,388.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.2,390.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.59,391.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:391.67,393.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.3,394.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.71,396.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.3,397.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.68,399.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.3,400.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.65,402.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.3,403.69 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.69,405.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.3,406.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.66,408.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.3,409.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.66,411.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.3,412.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.64,414.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.2,417.45 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.45,418.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:418.60,420.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.3,421.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.60,423.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.2,426.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.67,428.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:430.2,430.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:435.16,436.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:436.43,438.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:439.3,439.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:442.2,447.22 5 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:447.22,448.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:448.20,450.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:451.3,451.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:455.2,464.21 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:464.21,465.216 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:465.216,466.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.3,468.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.41,470.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.2,473.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.19,475.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:479.2,481.53 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:481.53,482.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:482.59,483.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:484.15,485.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:486.13,487.35 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:488.17,489.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.2,493.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.50,494.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:494.52,495.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:496.15,497.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:498.13,499.29 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:500.17,501.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:505.2,505.18 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:508.37,512.2 3 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:515.39,516.25 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:516.25,518.3 1 0 @@ -3094,42 +4988,42 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:555.2,555.33 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:555.33,557.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:558.2,558.53 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:558.53,560.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.69 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:566.69,568.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:569.5,569.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:569.68,571.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:572.5,572.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:572.68,574.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:575.5,575.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:575.67,577.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:578.5,578.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:578.66,580.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:581.5,581.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:581.67,583.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:585.5,585.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:585.62,587.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:589.5,589.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:589.56,591.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:593.5,593.69 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:593.69,595.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:596.5,596.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:596.73,598.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:599.5,599.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:599.70,601.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:602.5,602.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:602.67,604.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:605.5,605.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:605.71,607.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:608.5,608.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:608.68,610.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:611.5,611.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:611.68,613.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:614.5,614.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:614.66,616.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:618.5,618.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:618.62,620.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:621.5,621.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:621.62,623.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:566.66,568.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.2,569.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.65,571.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.2,572.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.65,574.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.2,575.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.64,577.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.2,578.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.63,580.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.2,581.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.64,583.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.2,585.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.59,587.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.2,589.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.53,591.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.2,593.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.66,595.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.2,596.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.70,598.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.2,599.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.67,601.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.2,602.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.64,604.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.2,605.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.68,607.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.2,608.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.65,610.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.2,611.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.65,613.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.2,614.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.63,616.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.2,618.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.59,620.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.2,621.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.59,623.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:627.47,628.58 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:628.58,630.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:631.2,631.56 1 0 @@ -3229,47 +5123,143 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:818.61,821.3 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:823.2,823.10 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:823.10,825.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:826.2,826.13 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:22.95,27.19 4 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:27.19,30.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:32.5,33.20 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.20,36.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:37.5,39.77 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:39.77,42.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:43.5,43.15 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:48.124,50.16 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:50.16,53.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:54.2,56.74 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:56.74,59.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:60.2,60.12 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:64.64,66.82 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:66.82,69.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:70.2,71.9 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:72.40,73.59 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:74.23,75.24 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:76.21,77.22 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:78.10,79.91 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:84.65,99.36 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:99.36,101.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:103.2,104.36 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.36,106.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:107.2,107.48 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:111.48,114.40 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:114.40,116.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:117.2,120.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.77,127.43 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.43,128.64 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.64,130.10 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:132.5,135.6 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:139.125,142.40 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:142.40,144.56 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:144.56,147.4 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:147.18,149.4 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:150.3,150.22 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:151.8,153.17 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:153.17,155.4 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:156.3,157.26 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:159.2,162.12 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:166.59,168.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:20.50,22.16 2 2 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:22.16,24.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:25.2,26.15 2 2 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:26.15,28.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:29.2,32.27 3 2 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:32.27,34.26 2 2 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:34.26,36.9 2 1 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.2,39.18 1 2 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.18,41.3 1 1 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:43.2,45.28 3 1 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:45.28,47.14 2 3 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:47.14,49.9 2 1 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:51.3,51.27 1 2 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:53.2,55.60 3 1 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:60.54,60.103 1 7 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:14.54,14.97 1 8 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:17.35,17.73 1 8 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:23.121,27.2 3 2 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:29.128,31.26 2 1 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:31.26,32.33 1 2 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:32.33,33.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:35.3,36.23 2 2 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:36.23,38.4 1 1 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:40.2,42.69 3 1 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:45.109,49.2 3 2 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:51.106,55.2 3 2 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:57.86,60.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:60.19,62.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:63.5,63.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:66.120,69.19 3 7 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:69.19,71.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:72.5,72.52 1 7 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:76.57,78.37 2 7 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:78.37,80.6 1 3 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:81.5,81.16 1 7 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:85.79,87.2 1 2 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:89.78,91.2 1 1 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:16.80,20.16 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:20.16,23.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:24.2,25.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:25.16,28.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.2,29.46 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.46,31.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:32.2,33.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:33.16,35.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:36.2,37.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:37.16,39.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:40.2,41.12 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:44.146,45.14 1 4 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:46.18,47.30 1 1 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:48.21,50.37 2 1 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:50.37,53.4 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:54.3,56.55 3 1 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:57.25,60.79 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:61.22,64.57 3 1 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:65.20,68.55 3 1 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:69.10,70.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:18.36,18.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:19.36,19.53 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:20.36,20.54 1 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:28.23,41.2 7 3 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:43.31,43.45 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:45.57,46.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:47.18,48.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:49.25,50.40 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:52.2,54.15 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:57.62,60.16 3 3 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:61.21,65.27 3 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:66.18,67.55 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:67.55,71.10 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:72.22,73.28 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:74.20,75.26 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:76.22,77.25 1 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:78.16,79.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:79.44,79.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:80.29,82.41 2 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:82.41,83.91 1 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:83.91,88.14 4 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.5,91.19 1 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.19,92.44 1 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:92.44,92.68 1 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:94.5,94.18 1 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:97.30,98.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:98.12,100.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:101.2,101.22 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:105.35,108.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:108.16,110.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.2,111.29 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.29,112.21 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:112.21,114.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:115.3,115.23 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:117.2,117.56 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:20.61,20.73 1 10 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:21.61,21.73 1 16 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:22.61,22.75 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:23.89,26.38 3 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:26.38,28.6 1 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:29.5,31.27 3 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:31.27,33.6 1 1 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:34.5,34.49 1 1 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:23.95,28.16 4 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:28.16,31.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.2,34.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:34.17,37.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:38.2,40.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:40.74,43.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:44.2,44.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:49.124,51.16 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:51.16,54.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:55.2,57.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:57.74,60.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:61.2,61.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:65.64,67.82 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:67.82,70.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:71.2,72.9 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:73.40,74.59 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:75.23,76.24 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:77.21,78.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:79.10,80.91 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:88.48,91.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:91.40,93.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:94.2,97.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:101.77,104.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.40,105.58 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:105.58,107.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:109.2,112.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:116.125,119.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:119.40,121.56 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:121.56,124.4 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.18,126.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.3,127.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.8,130.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:130.17,132.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:133.3,134.26 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:136.2,139.12 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:143.59,145.2 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:148.65,150.2 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:29.17,31.4 1 0 @@ -3557,9 +5547,9 @@ codeberg.org/snonux/hexai/internal/llm/openai.go:296.38,299.3 2 0 codeberg.org/snonux/hexai/internal/llm/openai.go:300.2,300.12 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:58.47,58.73 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:58.73,58.92 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:59.47,59.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:59.47,59.73 1 3 codeberg.org/snonux/hexai/internal/llm/provider.go:59.73,59.94 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:60.47,60.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:60.47,60.73 1 7 codeberg.org/snonux/hexai/internal/llm/provider.go:60.73,60.92 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:61.45,62.26 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:62.26,62.66 1 0 @@ -3581,21 +5571,26 @@ codeberg.org/snonux/hexai/internal/llm/provider.go:111.36,114.4 2 0 codeberg.org/snonux/hexai/internal/llm/provider.go:115.3,115.102 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:116.10,117.55 1 0 codeberg.org/snonux/hexai/internal/llm/util.go:6.47,6.77 1 0 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 1 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:18.3,20.12 2 1 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:20.12,22.3 1 1 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:23.2,25.29 2 1 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:25.29,28.3 1 2 -codeberg.org/snonux/hexai/internal/logging/logging.go:27.26,27.37 1 2 -codeberg.org/snonux/hexai/internal/logging/logging.go:30.47,31.16 1 4 +codeberg.org/snonux/hexai/internal/llmutils/client.go:12.62,26.39 3 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:26.39,28.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:29.5,30.39 2 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:30.39,32.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:33.5,33.51 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:18.3,20.12 2 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:20.12,22.3 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:23.2,25.29 2 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:25.29,28.3 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:27.26,27.37 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:30.47,31.16 1 0 codeberg.org/snonux/hexai/internal/logging/logging.go:31.16,33.3 1 0 -codeberg.org/snonux/hexai/internal/logging/logging.go:34.2,35.48 2 4 -codeberg.org/snonux/hexai/internal/logging/logging.go:43.32,43.55 1 3 -codeberg.org/snonux/hexai/internal/logging/logging.go:46.37,47.25 1 5 -codeberg.org/snonux/hexai/internal/logging/logging.go:47.25,48.32 1 4 -codeberg.org/snonux/hexai/internal/logging/logging.go:48.32,50.4 1 2 -codeberg.org/snonux/hexai/internal/logging/logging.go:51.3,51.37 1 2 -codeberg.org/snonux/hexai/internal/logging/logging.go:53.2,53.10 1 1 +codeberg.org/snonux/hexai/internal/logging/logging.go:34.2,35.48 2 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:43.32,43.55 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:46.37,47.25 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:47.25,48.32 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:48.32,50.4 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:51.3,51.37 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:53.2,53.10 1 0 codeberg.org/snonux/hexai/internal/lsp/context.go:16.96,18.14 2 0 codeberg.org/snonux/hexai/internal/lsp/context.go:19.17,20.19 1 0 codeberg.org/snonux/hexai/internal/lsp/context.go:21.16,22.41 1 0 @@ -3676,30 +5671,30 @@ codeberg.org/snonux/hexai/internal/lsp/handlers.go:10.38,11.41 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:11.41,14.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.2,15.22 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.22,17.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.31,31.99 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.99,34.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.2,36.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.50 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.50,56.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.2,57.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.44,58.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.51,63.4 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.2,65.46 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.46,66.52 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.52,71.4 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.2,73.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.44,75.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.2,76.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.43,78.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.2,79.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.44,81.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.2,82.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.21,84.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.2,87.30 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.30,88.63 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.63,90.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.2,93.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.34,31.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.105,34.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.5,36.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.53,56.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.5,57.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.47,58.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.57,63.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.5,65.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.49,66.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.58,71.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.5,73.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.47,75.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.5,76.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.46,78.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.5,79.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.47,81.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.5,82.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.24,84.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.5,87.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.33,88.69 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.69,90.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.5,93.36 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:117.72,120.2 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:191.151,194.24 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:194.24,196.3 1 0 @@ -3784,19 +5779,19 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:86.45,88.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:89.2,97.58 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:97.58,99.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:100.2,100.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.20,108.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.17,108.72 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:108.72,109.66 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:109.66,113.5 3 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:114.9,116.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.24,120.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.49,121.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.33,123.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.19,125.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.9,133.78 7 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.78,134.75 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.75,138.14 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.15,141.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.21,149.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.21,120.43 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.43,121.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.24,123.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.10,125.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.3,133.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.72,134.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.66,138.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.9,141.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.18,149.72 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:149.72,150.66 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:150.66,154.5 3 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:155.9,157.4 1 0 @@ -3910,8 +5905,8 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.31,456.6 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.2,461.15 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.15,463.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:464.2,464.18 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.27,476.71 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.24,476.71 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:476.71,478.21 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:478.21,480.5 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:481.9,483.4 1 0 @@ -4000,7 +5995,7 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:216.50,218.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:219.2,219.23 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.193,225.9 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:225.9,227.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.5,237.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.2,237.32 6 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:237.32,239.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.2,241.24 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.24,243.3 1 0 @@ -4036,15 +6031,15 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.23,325.11 4 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.22,328.17 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:329.19,331.13 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:335.3,337.14 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.17 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.17,357.6 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.5,358.71 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.71,360.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.5,363.55 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.55,365.43 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.43,367.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.9,368.79 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.5,370.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.14 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.14,357.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.2,358.68 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.68,360.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.2,363.52 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.52,365.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.37,367.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.3,368.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.2,370.17 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:374.101,376.57 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:376.57,377.78 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:377.78,379.4 1 0 @@ -4171,190 +6166,176 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:16.2,27.27 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:30.38,32.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:34.46,36.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:38.31,41.2 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:20.55,22.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:22.32,24.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:25.2,25.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:29.41,34.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:36.41,41.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:43.32,46.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:46.23,48.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:49.2,50.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.24,52.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:53.2,56.15 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:56.15,58.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:59.2,62.211 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:66.51,67.41 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.41,69.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:70.2,72.71 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:76.62,77.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.16,79.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.5,81.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:81.28,84.6 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:85.5,85.15 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:88.118,89.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.14,92.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.16,95.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:95.35,97.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:98.4,98.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:98.36,100.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:101.4,103.59 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:103.59,105.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.4,106.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:109.2,112.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.51,116.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.23,118.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:119.2,119.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:119.13,121.100 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.100,123.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:125.3,125.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.2,127.11 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.32,132.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.44,136.50 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.50,138.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:139.2,139.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.40,144.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:144.20,145.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.40,147.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.3,149.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:151.2,151.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:151.12,153.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.2,154.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.52,158.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:158.38,160.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:161.2,162.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.27,163.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:163.34,164.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:166.3,166.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:166.36,167.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:169.3,169.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:171.2,171.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:179.64,181.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:181.22,184.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:184.12,186.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:187.3,189.74 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.74,191.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.12,197.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:198.3,199.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.48,201.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:203.3,204.18 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:204.18,206.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.3,209.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:211.2,211.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.41,221.31 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:221.31,223.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.29 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.29,226.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:227.2,227.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:227.31,229.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:229.32,231.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.2,233.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:237.83,240.102 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.102,242.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:242.36,244.136 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:244.136,246.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.4,249.34 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.34,251.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:255.2,255.65 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:255.65,256.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.53,258.37 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:258.37,260.137 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:260.137,262.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:263.5,265.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:265.35,267.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:271.2,271.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.80,276.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.22,278.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.2,281.40 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:281.40,283.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.2,284.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.34,285.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:285.31,286.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.3,289.16 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:289.16,290.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.3,292.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.32,294.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:296.2,296.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:299.36,301.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.39,306.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.13,308.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:309.2,311.66 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.66,313.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.2,315.54 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:315.54,317.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.2,318.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.51,320.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,323.69 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:323.69,326.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:327.2,327.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.43,333.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:333.13,335.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:336.2,337.11 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.11,339.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:340.2,341.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:341.14,343.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:344.2,345.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:349.56,351.89 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.89,353.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:354.2,354.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.52,359.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.32,361.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:361.28,363.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:364.3,364.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:364.34,366.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:367.3,367.42 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:367.42,369.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.3,370.49 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.2,375.27 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.27,377.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:378.2,378.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:378.36,380.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:381.2,384.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:384.49,386.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.24,388.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.2,392.25 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:392.25,394.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.2,395.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.33,397.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.2,399.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.67,405.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:405.35,407.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:408.2,409.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.31,411.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.2,412.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:415.69,416.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:416.32,418.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:419.2,419.47 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:422.45,424.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:424.22,428.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,430.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.32 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.32,435.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,437.46 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:437.46,439.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:442.3,443.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:443.12,445.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:446.3,447.49 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:447.49,449.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:451.3,451.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.2,453.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:456.67,459.28 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:459.28,461.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:461.12,462.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:464.3,466.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:466.12,467.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.3,469.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.43,471.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.3,473.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.34,475.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:477.3,478.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.48,480.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.3,482.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.25,484.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:486.3,487.50 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:487.50,489.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:490.3,491.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:493.2,493.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:21.55,23.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.32,25.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:26.2,26.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:30.41,35.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:37.41,42.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.32,47.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.23,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.2,51.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.24,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.2,57.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.15,59.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.2,63.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.51,68.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.41,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:71.2,73.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.62,77.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.50,129.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:170.64,172.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:172.22,175.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.74 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.74,182.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.3,186.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:186.12,188.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.3,190.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.48,192.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.18,197.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.3,200.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:202.2,202.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.41,212.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.31,214.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.29,217.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.2,218.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.31,220.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.32,222.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.83,231.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:231.102,233.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.36,235.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.136,237.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.4,240.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.34,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.2,246.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.65,247.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.53,249.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.37,251.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.137,253.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.5,256.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.35,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:262.2,262.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:266.80,267.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.22,269.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:270.2,272.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.40,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.34,276.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.31,277.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.3,280.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.16,281.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.3,283.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.32,285.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.2,287.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:290.36,292.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.39,295.77 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:298.43,300.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.13,302.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.2,304.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.11,306.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.2,308.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:308.14,310.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.2,312.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:316.56,318.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.89,320.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,321.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.52,326.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:326.32,328.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.28,330.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.3,331.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.34,333.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.3,334.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.42,336.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.3,337.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.2,342.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.27,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.2,345.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.36,347.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:348.2,351.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.49,353.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:353.24,355.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.2,359.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.25,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.2,362.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.33,364.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:365.2,366.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.67,372.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.35,374.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.2,376.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:376.31,378.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,379.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.69,383.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.32,385.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,386.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:389.45,391.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.22,395.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.12,397.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.3,400.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.32,402.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.3,404.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.46,406.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.3,410.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.12,412.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:413.3,414.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.49,416.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.3,418.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.2,420.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.67,426.28 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:426.28,428.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,429.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.12,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.43,438.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.3,440.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.34,442.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.3,445.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:445.48,447.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,449.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.25,451.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.3,454.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.50,456.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.3,458.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.2,460.14 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:126.90,129.20 3 0 codeberg.org/snonux/hexai/internal/lsp/server.go:129.20,131.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:132.2,134.23 3 0 @@ -4379,10 +6360,10 @@ codeberg.org/snonux/hexai/internal/lsp/server.go:174.8,176.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:177.2,177.46 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:177.46,179.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:179.8,181.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:182.5,182.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:182.36,184.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:184.11,186.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:189.5,207.24 17 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.2,182.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.33,184.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:184.8,186.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:189.2,207.24 17 0 codeberg.org/snonux/hexai/internal/lsp/server.go:207.24,209.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:210.2,210.25 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:210.25,212.3 1 0 @@ -4432,6 +6413,58 @@ codeberg.org/snonux/hexai/internal/testutil/fixtures.go:9.34,11.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:14.43,16.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:19.33,21.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:24.29,26.2 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:6.62,7.34 1 8 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:7.34,9.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:10.5,11.28 2 8 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:11.28,13.6 1 11 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:14.5,14.15 1 8 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:18.39,20.16 2 8 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:20.16,22.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:23.5,25.69 3 8 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:25.69,27.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:28.5,29.57 2 8 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:29.57,31.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.5,32.54 1 8 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.54,34.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:35.5,37.72 3 8 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:37.72,40.6 2 8 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:41.5,41.13 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:47.60,49.34 2 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:49.34,50.105 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:50.105,53.10 2 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:55.5,55.19 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:59.79,62.53 3 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:62.53,64.6 1 2 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.5,65.47 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.47,66.57 1 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:66.57,71.10 4 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.5,73.49 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.49,74.58 1 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:74.58,79.10 4 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.5,81.47 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.47,83.6 1 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.5,84.46 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.46,86.6 1 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.5,87.47 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.47,89.6 1 2 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.5,90.24 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.24,90.50 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:91.5,92.33 2 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:92.33,93.69 1 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:93.69,93.81 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:95.5,96.36 2 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:100.79,101.36 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:101.36,102.27 1 54 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:102.27,102.37 1 52 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.9,103.48 1 2 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.48,103.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.9,104.44 1 2 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.44,105.31 1 20 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:105.31,106.49 1 2 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:106.49,106.59 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:107.17,108.32 2 2 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:108.32,108.64 1 2 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:112.5,112.29 1 5 codeberg.org/snonux/hexai/cmd/hexai/main.go:14.13,17.18 3 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:22.2,22.104 1 0 @@ -4440,9 +6473,11 @@ codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 3 -codeberg.org/snonux/hexai/internal/appconfig/config.go:142.19,144.3 1 2 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:11.13,12.94 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:12.94,15.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:142.19,144.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,147.16 2 1 codeberg.org/snonux/hexai/internal/appconfig/config.go:147.16,150.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:150.8,151.85 1 1 @@ -4450,94 +6485,94 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:151.85,153.4 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:159.2,159.50 1 1 codeberg.org/snonux/hexai/internal/appconfig/config.go:159.50,161.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:162.2,162.12 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.80 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.80,291.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:294.5,294.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:294.41,297.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:300.5,300.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:300.47,307.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:310.5,310.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:310.47,313.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:316.5,316.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:316.39,319.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:322.5,322.85 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:322.85,325.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:328.5,328.50 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:328.50,331.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:334.5,334.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:334.71,341.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:344.5,344.74 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:344.74,351.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:354.5,354.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:354.71,361.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:365.5,365.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:365.62,366.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:366.73,368.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:369.9,369.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:369.72,371.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:372.9,372.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:372.72,374.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:375.9,375.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:375.71,377.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:378.9,378.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:378.70,380.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.9,381.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.71,383.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:386.5,386.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:386.56,388.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:390.5,390.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:390.62,391.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:391.73,393.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:394.9,394.77 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:394.77,396.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.9,397.74 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.74,399.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:400.9,400.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:400.71,402.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.9,403.75 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.75,405.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:406.9,406.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:406.72,408.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.9,409.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.72,411.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:412.9,412.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:412.70,414.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:417.5,417.48 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:417.48,418.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:418.66,420.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.9,421.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.66,423.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:426.5,426.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:426.70,428.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:430.5,430.15 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.19 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:435.19,436.49 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:436.49,438.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:439.9,439.24 1 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:442.5,447.25 5 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:447.25,448.26 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:448.26,450.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:451.9,451.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:455.5,464.24 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:464.24,465.222 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:465.222,466.21 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.9,468.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.47,470.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.5,473.22 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.22,475.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:479.5,481.56 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:481.56,482.65 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:482.65,483.35 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:484.24,485.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:486.22,487.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:488.26,489.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:493.5,493.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:493.53,494.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:494.58,495.35 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:496.24,497.46 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:498.22,499.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:500.26,501.46 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:505.5,505.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.77 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:282.77,291.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.2,294.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.38,297.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.2,300.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.44,307.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.2,310.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.44,313.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.2,316.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.36,319.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.2,322.82 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.82,325.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.2,328.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.47,331.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.2,334.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.68,341.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.2,344.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.71,351.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.2,354.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.68,361.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.2,365.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.59,366.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:366.67,368.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.3,369.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.66,371.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.3,372.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.66,374.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.3,375.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.65,377.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.3,378.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.64,380.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.3,381.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.65,383.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.2,386.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.53,388.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.2,390.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.59,391.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:391.67,393.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.3,394.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.71,396.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.3,397.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.68,399.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.3,400.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.65,402.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.3,403.69 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.69,405.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.3,406.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.66,408.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.3,409.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.66,411.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.3,412.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.64,414.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.2,417.45 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.45,418.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:418.60,420.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.3,421.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.60,423.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.2,426.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.67,428.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:430.2,430.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.16 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:435.16,436.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:436.43,438.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:439.3,439.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:442.2,447.22 5 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:447.22,448.20 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:448.20,450.4 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:451.3,451.24 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:455.2,464.21 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:464.21,465.216 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:465.216,466.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.3,468.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.41,470.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.2,473.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.19,475.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:479.2,481.53 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:481.53,482.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:482.59,483.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:484.15,485.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:486.13,487.35 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:488.17,489.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.2,493.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.50,494.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:494.52,495.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:496.15,497.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:498.13,499.29 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:500.17,501.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:505.2,505.18 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:508.37,512.2 3 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:515.39,516.25 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:516.25,518.3 1 0 @@ -4569,42 +6604,42 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:555.2,555.33 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:555.33,557.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:558.2,558.53 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:558.53,560.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.69 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:566.69,568.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:569.5,569.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:569.68,571.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:572.5,572.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:572.68,574.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:575.5,575.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:575.67,577.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:578.5,578.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:578.66,580.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:581.5,581.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:581.67,583.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:585.5,585.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:585.62,587.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:589.5,589.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:589.56,591.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:593.5,593.69 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:593.69,595.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:596.5,596.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:596.73,598.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:599.5,599.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:599.70,601.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:602.5,602.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:602.67,604.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:605.5,605.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:605.71,607.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:608.5,608.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:608.68,610.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:611.5,611.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:611.68,613.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:614.5,614.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:614.66,616.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:618.5,618.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:618.62,620.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:621.5,621.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:621.62,623.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:566.66,568.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.2,569.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.65,571.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.2,572.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.65,574.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.2,575.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.64,577.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.2,578.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.63,580.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.2,581.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.64,583.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.2,585.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.59,587.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.2,589.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.53,591.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.2,593.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.66,595.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.2,596.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.70,598.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.2,599.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.67,601.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.2,602.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.64,604.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.2,605.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.68,607.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.2,608.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.65,610.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.2,611.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.65,613.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.2,614.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.63,616.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.2,618.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.59,620.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.2,621.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.59,623.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:627.47,628.58 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:628.58,630.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:631.2,631.56 1 0 @@ -4624,10 +6659,10 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:649.57,651.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:652.2,652.37 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:652.37,654.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:657.38,659.72 2 1 -codeberg.org/snonux/hexai/internal/appconfig/config.go:659.72,661.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:661.8,663.17 2 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:659.72,661.3 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:661.8,663.17 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:663.17,665.4 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:666.3,666.70 1 1 +codeberg.org/snonux/hexai/internal/appconfig/config.go:666.3,666.70 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:668.2,668.24 1 1 codeberg.org/snonux/hexai/internal/appconfig/config.go:675.43,680.34 3 1 codeberg.org/snonux/hexai/internal/appconfig/config.go:680.34,680.76 1 24 @@ -4704,71 +6739,1783 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:818.61,821.3 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:823.2,823.10 1 1 codeberg.org/snonux/hexai/internal/appconfig/config.go:823.10,825.3 1 1 codeberg.org/snonux/hexai/internal/appconfig/config.go:826.2,826.13 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:22.95,27.19 4 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:27.19,30.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:32.5,33.20 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.20,36.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:37.5,39.77 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:39.77,42.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:43.5,43.15 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:48.124,50.16 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:50.16,53.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:54.2,56.74 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:56.74,59.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:60.2,60.12 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:64.64,66.82 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:66.82,69.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:70.2,71.9 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:72.40,73.59 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:74.23,75.24 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:76.21,77.22 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:78.10,79.91 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:84.65,99.36 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:99.36,101.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:103.2,104.36 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.36,106.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:107.2,107.48 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:111.48,114.40 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:114.40,116.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:117.2,120.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.77,127.43 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.43,128.64 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.64,130.10 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:132.5,135.6 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:139.125,142.40 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:142.40,144.56 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:144.56,147.4 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:147.18,149.4 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:150.3,150.22 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:151.8,153.17 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:153.17,155.4 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:156.3,157.26 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:159.2,162.12 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:166.59,168.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:20.50,22.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:22.16,24.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:25.2,26.15 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:26.15,28.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:29.2,32.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:32.27,34.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:34.26,36.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.2,39.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.18,41.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:43.2,45.28 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:45.28,47.14 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:47.14,49.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:51.3,51.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:53.2,55.60 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:60.54,60.103 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:14.54,14.97 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:17.35,17.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:23.121,27.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:29.128,31.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:31.26,32.33 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:32.33,33.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:35.3,36.23 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:36.23,38.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:40.2,42.69 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:45.109,49.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:51.106,55.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:57.86,60.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:60.19,62.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:63.5,63.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:66.120,69.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:69.19,71.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:72.5,72.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:76.57,78.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:78.37,80.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:81.5,81.16 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:85.79,87.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:89.78,91.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:16.80,20.16 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:20.16,23.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:24.2,25.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:25.16,28.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.2,29.46 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.46,31.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:32.2,33.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:33.16,35.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:36.2,37.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:37.16,39.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:40.2,41.12 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:44.146,45.14 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:46.18,47.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:48.21,50.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:50.37,53.4 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:54.3,56.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:57.25,60.79 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:61.22,64.57 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:65.20,68.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:69.10,70.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:18.36,18.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:19.36,19.53 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:20.36,20.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:28.23,41.2 7 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:43.31,43.45 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:45.57,46.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:47.18,48.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:49.25,50.40 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:52.2,54.15 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:57.62,60.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:61.21,65.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:66.18,67.55 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:67.55,71.10 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:72.22,73.28 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:74.20,75.26 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:76.22,77.25 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:78.16,79.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:79.44,79.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:80.29,82.41 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:82.41,83.91 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:83.91,88.14 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.5,91.19 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.19,92.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:92.44,92.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:94.5,94.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:97.30,98.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:98.12,100.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:101.2,101.22 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:105.35,108.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:108.16,110.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.2,111.29 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.29,112.21 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:112.21,114.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:115.3,115.23 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:117.2,117.56 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:20.61,20.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:21.61,21.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:22.61,22.75 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:23.89,26.38 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:26.38,28.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:29.5,31.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:31.27,33.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:34.5,34.49 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:23.95,28.16 4 1 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:28.16,31.3 2 1 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.2,34.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:34.17,37.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:38.2,40.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:40.74,43.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:44.2,44.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:49.124,51.16 2 1 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:51.16,54.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:55.2,57.74 3 1 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:57.74,60.3 2 1 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:61.2,61.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:65.64,67.82 2 5 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:67.82,70.3 2 4 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:71.2,72.9 2 5 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:73.40,74.59 1 1 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:75.23,76.24 1 1 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:77.21,78.22 1 2 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:79.10,80.91 1 1 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:88.48,91.40 3 6 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:91.40,93.3 1 1 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:94.2,97.3 1 6 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:101.77,104.40 3 2 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.40,105.58 1 1 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:105.58,107.4 1 1 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:109.2,112.3 1 2 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:116.125,119.40 3 5 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:119.40,121.56 2 2 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:121.56,124.4 2 5 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.18,126.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.3,127.22 1 2 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.8,130.17 2 3 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:130.17,132.4 1 2 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:133.3,134.26 2 1 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:136.2,139.12 3 3 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:143.59,145.2 1 2 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:148.65,150.2 1 2 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:29.17,31.4 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:32.3,33.22 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:35.2,37.70 3 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:42.159,49.37 6 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:49.37,51.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:52.2,52.12 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:57.49,59.30 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:59.30,61.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:64.72,65.19 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:65.19,67.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:68.2,82.36 3 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:82.36,84.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:86.2,87.36 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:87.36,89.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.2,90.67 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.67,93.3 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:93.8,96.3 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,144.2 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:67.38,69.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:70.36,74.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:75.2,82.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:85.109,86.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:86.39,88.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:90.2,90.45 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:90.45,92.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:93.2,94.27 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:94.27,96.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:97.2,97.19 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:97.19,99.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:100.2,102.29 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:102.29,104.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:105.2,109.16 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:109.16,112.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:114.2,117.16 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:117.16,120.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:121.2,122.57 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:122.57,124.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:125.2,126.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:126.16,128.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:129.2,129.27 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:129.27,132.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:133.2,135.21 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:139.46,139.66 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:140.46,140.71 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:143.102,146.29 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:146.29,148.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:149.2,149.24 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:149.24,151.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:151.8,151.31 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:151.31,154.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:155.2,155.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:155.21,157.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:158.2,158.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:158.21,160.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:161.2,161.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:164.130,166.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:166.16,168.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:169.2,169.28 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:169.28,171.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:172.2,172.29 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:175.70,176.53 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:176.53,178.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:179.2,181.74 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:181.74,184.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:185.2,186.69 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:189.91,191.64 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:191.64,194.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:195.2,195.17 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:204.66,206.82 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:206.82,208.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:209.2,209.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:209.39,211.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:212.2,213.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:213.16,215.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:216.2,220.16 5 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:220.16,222.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:223.2,224.53 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:224.53,226.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:227.2,228.64 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:228.64,230.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:231.2,231.40 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:231.40,233.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:235.2,236.18 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:236.18,238.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:239.2,241.12 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:246.42,248.20 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:248.20,250.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:251.2,252.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:252.16,253.59 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:253.59,254.48 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:254.48,256.5 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:258.3,258.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:260.2,264.22 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:264.22,266.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:267.2,267.34 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:270.42,270.100 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:274.57,290.2 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:292.58,308.2 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:310.28,313.19 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:313.19,315.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:316.2,316.18 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:322.153,323.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:323.39,325.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:326.2,326.45 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:326.45,328.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:329.2,329.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:329.12,331.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:332.2,354.16 6 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:354.16,356.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:357.2,358.53 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:358.53,360.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:362.2,365.27 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:365.27,366.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:366.39,367.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:369.3,375.88 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:375.88,376.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:378.3,378.34 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:378.34,380.4 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:382.2,383.25 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:383.25,384.60 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:384.60,386.4 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:388.2,388.17 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:44.68,45.38 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:45.38,47.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:48.2,48.36 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:48.36,50.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:51.2,57.3 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:60.108,62.27 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:62.27,64.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:65.2,65.19 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:65.19,67.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:69.2,73.16 5 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:73.16,75.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:77.2,80.16 4 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:80.16,83.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:84.2,85.56 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:85.56,87.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:89.2,90.64 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:90.64,93.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:94.2,94.50 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:94.50,97.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:98.2,100.21 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:104.45,104.64 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:105.45,105.70 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:108.126,110.27 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:110.27,112.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:113.2,113.19 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:113.19,115.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:117.2,121.16 5 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:121.16,123.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:125.2,128.16 4 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:128.16,131.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:132.2,133.56 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:133.56,135.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:137.2,138.6 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:138.6,140.41 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:140.41,141.30 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:141.30,142.10 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:144.4,145.14 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:147.3,147.40 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:147.40,150.4 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:151.3,151.58 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:151.58,153.4 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:154.3,154.14 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:154.14,155.9 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:158.2,159.12 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:163.76,165.29 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:165.29,167.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:168.2,168.89 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:171.109,174.29 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:174.29,176.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:177.2,178.24 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:178.24,180.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:180.8,180.31 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:180.31,182.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:183.2,183.21 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:183.21,185.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:186.2,186.21 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:186.21,188.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:189.2,189.22 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:189.22,191.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:192.2,192.12 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:195.100,197.16 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:197.16,199.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:200.2,201.29 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:204.69,205.53 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:205.53,207.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:208.2,210.43 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:210.43,213.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:214.2,215.68 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:78.76,79.38 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:79.38,81.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.2,82.36 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.36,84.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:85.2,92.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:95.108,96.20 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:96.20,98.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:99.2,100.27 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:100.27,102.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:103.2,103.19 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:103.19,105.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:106.2,110.16 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:110.16,113.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:114.2,119.16 4 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:119.16,122.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:123.2,124.56 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:124.56,126.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:127.2,128.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:128.16,130.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:131.2,131.27 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:131.27,134.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:135.2,137.21 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:141.45,141.64 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:142.45,142.70 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:146.126,147.20 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:147.20,149.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:150.2,151.27 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:151.27,153.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:154.2,154.19 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:154.19,156.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:157.2,161.16 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:161.16,164.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:165.2,170.16 4 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:170.16,173.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:174.2,175.56 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:175.56,177.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:179.2,179.64 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:179.64,181.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:182.2,183.12 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:187.56,187.104 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:190.76,192.29 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:192.29,194.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:195.2,195.89 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:198.105,201.29 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:201.29,203.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:204.2,204.24 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:204.24,206.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:206.8,206.31 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:206.31,209.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:210.2,210.21 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:210.21,212.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:213.2,213.21 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:213.21,215.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:216.2,216.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:219.127,221.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:221.16,223.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:224.2,225.28 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:225.28,227.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:228.2,228.29 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:231.152,233.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:233.16,235.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:236.2,238.28 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:238.28,240.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:241.2,241.29 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:244.69,245.53 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:245.53,247.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:248.2,250.55 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:250.55,253.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:254.2,255.68 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:258.85,260.64 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:260.64,263.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:264.2,264.17 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:267.90,273.21 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:273.21,275.41 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:275.41,276.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:278.3,279.45 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:279.45,280.9 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:282.3,283.65 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:283.65,284.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:286.3,286.54 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:286.54,289.4 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:290.3,290.36 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:290.36,291.30 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:291.30,293.5 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:296.2,296.38 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:296.38,299.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:300.2,300.12 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:58.47,58.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:58.73,58.92 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:59.47,59.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:59.73,59.94 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:60.47,60.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:60.73,60.92 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:61.45,62.26 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:62.26,62.66 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.13 2 3 +codeberg.org/snonux/hexai/internal/llm/provider.go:87.13,89.3 1 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:90.2,90.11 1 3 +codeberg.org/snonux/hexai/internal/llm/provider.go:91.16,92.44 1 2 +codeberg.org/snonux/hexai/internal/llm/provider.go:92.44,94.4 1 2 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.3,96.35 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.35,99.4 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:100.3,100.97 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:101.16,102.35 1 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:102.35,105.4 2 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:106.3,106.83 1 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:107.17,108.45 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:108.45,110.4 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:111.3,111.36 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:111.36,114.4 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:115.3,115.102 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:116.10,117.55 1 0 +codeberg.org/snonux/hexai/internal/llm/util.go:6.47,6.77 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:12.62,26.39 3 3 +codeberg.org/snonux/hexai/internal/llmutils/client.go:26.39,28.6 1 3 +codeberg.org/snonux/hexai/internal/llmutils/client.go:29.5,30.39 2 3 +codeberg.org/snonux/hexai/internal/llmutils/client.go:30.39,32.6 1 3 +codeberg.org/snonux/hexai/internal/llmutils/client.go:33.5,33.51 1 3 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 1 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:18.3,20.12 2 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:20.12,22.3 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:23.2,25.29 2 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:25.29,28.3 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:27.26,27.37 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:30.47,31.16 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:31.16,33.3 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:34.2,35.48 2 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:43.32,43.55 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:46.37,47.25 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:47.25,48.32 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:48.32,50.4 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:51.3,51.37 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:53.2,53.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:16.96,18.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:19.17,20.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:21.16,22.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:23.26,24.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:24.14,26.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:27.3,27.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:28.21,29.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:30.10,32.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:36.65,38.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:38.35,41.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:42.2,45.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:45.15,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:48.2,49.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:49.13,51.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:52.2,53.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:56.53,58.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:58.14,61.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:62.2,62.59 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:67.64,68.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:68.20,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:71.2,72.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:72.27,74.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:76.2,77.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:77.21,79.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:80.2,80.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:80.53,82.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:83.2,83.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:15.48,19.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:21.45,25.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:27.33,31.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:33.52,37.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:40.37,43.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:45.96,47.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:47.35,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:50.2,51.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:51.13,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:54.2,54.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:54.25,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:57.2,58.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:58.16,60.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:61.2,61.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:61.26,63.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:64.2,64.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:64.28,66.85 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:66.85,68.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:71.2,71.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:78.71,80.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:80.35,82.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:83.2,84.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:84.13,86.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:87.2,87.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:87.25,89.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:91.2,92.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:92.28,93.44 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:93.44,95.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:98.3,98.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:98.40,99.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:102.2,102.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:102.20,104.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:106.2,106.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:106.35,109.17 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:109.17,110.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:110.15,112.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:114.4,114.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:114.29,116.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:119.2,119.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:122.46,123.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:123.28,124.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:124.29,126.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:128.2,128.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:131.31,133.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:133.18,135.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:136.2,136.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:139.33,141.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:141.49,143.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:144.2,144.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:10.38,11.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:11.41,14.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.2,15.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.22,17.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.34,31.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.105,34.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.5,36.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.53,56.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.5,57.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.47,58.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.57,63.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.5,65.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.49,66.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.58,71.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.5,73.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.47,75.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.5,76.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.46,78.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.5,79.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.47,81.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.5,82.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.24,84.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.5,87.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.33,88.69 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.69,90.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.5,93.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:117.72,120.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:191.151,194.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:194.24,196.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:197.2,199.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:199.24,201.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:202.2,204.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:204.24,207.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:208.2,209.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:209.32,211.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:212.2,213.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:213.14,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:217.2,231.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:234.64,238.9 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:238.9,240.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:242.2,243.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:246.56,249.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:249.24,251.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:252.2,252.44 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:252.44,255.33 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:255.33,260.4 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:261.3,261.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:264.2,265.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:268.51,272.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:272.37,273.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:273.15,275.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:278.2,278.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:278.14,280.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:281.2,281.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:288.74,290.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:290.22,295.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:295.49,297.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:297.9,300.4 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.3,303.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.115,305.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.3,307.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.27,309.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.3,311.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.27,312.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.34,313.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.38,314.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:314.35,316.7 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:318.5,318.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:321.4,321.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.2,327.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:327.36,329.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.2,331.114 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.114,333.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.2,335.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.35,336.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:336.14,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:340.2,340.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:343.137,348.24 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:348.24,350.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:351.2,361.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:436.74,445.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:17.48,19.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:19.55,20.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:20.23,22.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:23.3,23.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:25.2,26.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:26.57,27.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:27.23,29.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:30.3,30.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:32.2,35.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:35.53,37.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:38.2,38.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:38.57,40.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:41.2,41.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:41.54,43.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:44.2,44.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:44.51,46.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:47.2,47.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:47.22,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:52.85,53.85 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:53.85,64.3 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:65.2,65.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:68.89,70.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:70.21,72.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:73.2,82.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:85.70,86.45 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:86.45,88.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:89.2,97.58 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:97.58,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:100.2,100.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.17,108.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:108.72,109.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:109.66,113.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:114.9,116.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.21,120.43 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.43,121.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.24,123.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.10,125.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.3,133.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.72,134.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.66,138.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.9,141.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.18,149.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:149.72,150.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:150.66,154.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:155.9,157.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:158.17,159.92 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:159.92,167.4 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:169.2,169.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:172.55,174.56 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:174.56,175.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:175.23,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:178.3,178.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:180.2,180.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:180.49,183.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:184.2,184.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:190.85,191.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:191.22,193.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:194.2,195.53 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:195.53,197.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:198.2,198.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:198.31,200.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:201.2,202.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:202.36,203.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:203.34,205.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:207.2,207.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:211.37,213.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:213.32,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:216.2,216.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:216.32,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:220.2,220.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:220.29,222.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:224.2,224.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:224.29,226.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:227.2,227.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:230.34,231.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:231.22,233.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:234.2,234.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:237.37,238.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:238.22,240.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:241.2,241.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:246.76,248.80 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:248.80,250.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:252.2,252.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:252.71,254.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:256.2,257.41 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:257.41,259.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:260.2,267.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:271.86,272.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:272.24,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:275.34,277.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:278.2,286.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:289.95,291.76 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:291.76,293.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:295.2,296.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:296.21,298.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:299.2,301.36 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:301.36,303.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:304.2,306.39 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:306.39,308.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:310.2,314.26 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:314.26,320.22 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:320.22,323.4 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:324.3,326.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:326.102,328.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:329.3,336.40 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:336.40,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:339.3,341.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:341.19,343.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:344.3,345.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:348.2,349.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:349.15,351.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:352.2,367.13 13 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:367.13,370.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:371.2,372.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:376.62,377.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:377.39,379.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:380.2,382.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:382.16,384.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:385.2,386.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:389.35,390.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:390.41,392.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:393.2,393.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:397.48,398.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:398.27,400.39 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:400.39,403.45 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:403.45,405.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:406.4,406.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:406.46,408.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:409.4,409.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:409.46,411.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:412.4,412.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:415.2,415.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:419.63,420.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:420.13,422.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:423.2,423.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:423.23,425.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:427.2,428.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:428.28,429.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:429.42,431.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:433.3,433.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:433.38,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:437.2,437.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:437.17,439.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:441.2,443.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:443.38,445.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:445.32,446.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:447.13,449.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:450.13,451.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:451.18,453.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.5,454.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.31,456.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.2,461.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.15,463.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:464.2,464.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.24,476.71 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:476.71,478.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:478.21,480.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:481.9,483.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:486.2,487.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:487.16,489.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:490.2,490.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:494.43,498.39 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:498.39,500.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:501.2,503.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:503.34,505.63 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:505.63,507.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.2,510.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.42,512.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:513.2,513.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:516.37,517.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:517.16,519.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:520.2,521.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:521.32,523.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:524.2,524.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:15.48,18.55 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:18.55,25.19 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:25.19,27.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:28.3,28.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:28.25,32.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:32.10,35.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:38.2,39.73 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:44.67,45.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:45.22,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:48.2,52.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:52.48,54.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:54.8,57.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:58.2,58.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:63.99,66.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:68.98,71.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:73.160,78.52 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:78.52,81.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:82.2,82.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:82.51,84.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:86.2,91.86 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:91.86,96.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:97.2,97.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:97.58,100.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:102.2,102.83 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:102.83,105.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:108.2,108.126 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:108.126,110.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:113.2,116.29 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:116.29,118.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:119.2,121.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:121.32,123.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:125.2,126.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:126.29,128.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:129.2,132.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:132.16,136.3 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:137.2,141.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:141.19,143.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:144.2,145.75 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:149.38,150.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:150.16,152.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:153.2,156.42 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:156.42,158.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:158.8,161.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:162.2,162.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:166.91,168.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.24,170.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.2,171.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.40,172.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:172.35,174.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:175.3,176.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:176.37,177.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:177.18,180.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:183.2,183.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:187.119,191.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.24,193.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:194.2,195.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:195.13,197.68 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:197.68,199.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.2,201.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.19,203.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:205.2,206.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:206.12,208.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:208.28,210.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:212.3,212.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:214.2,216.50 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:216.50,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:219.2,219.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.193,225.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:225.9,227.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.2,237.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:237.32,239.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.2,241.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.24,243.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.2,250.30 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:250.30,252.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.2,254.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:254.40,256.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:256.20,258.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.21,260.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:261.4,261.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:261.54,263.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:263.21,265.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.4,267.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.40,271.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:273.8,273.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:273.23,275.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:276.2,276.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:281.55,283.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:283.12,285.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.2,286.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.6,290.20 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:290.20,292.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:293.3,294.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:294.17,296.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:297.3,299.10 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:300.21,302.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:303.18,303.18 0 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:311.60,313.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:313.19,315.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:316.2,317.6 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:317.6,321.23 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.23,325.11 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.22,328.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:329.19,331.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:335.3,337.14 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.14 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.14,357.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.2,358.68 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.68,360.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.2,363.52 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.52,365.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.37,367.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.3,368.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.2,370.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:374.101,376.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:376.57,377.78 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:377.78,379.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:381.2,381.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:381.19,383.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:384.2,384.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:384.19,386.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:387.2,387.56 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:387.56,388.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:388.57,390.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:392.2,392.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:21.45,23.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:23.55,26.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:29.47,31.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:31.55,32.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:32.32,34.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:35.3,37.44 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:41.46,43.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:43.55,46.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:52.76,54.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.14,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:58.2,59.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.14,61.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.2,62.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.26,64.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:65.2,66.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.13,68.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:69.2,69.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:69.30,71.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:73.2,74.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:74.28,77.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:78.2,83.43 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:83.43,86.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:87.2,87.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.50,96.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:96.24,98.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:99.2,100.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.35,102.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.2,103.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.30,106.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:106.14,107.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:107.39,109.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:111.4,111.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:113.3,113.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:113.12,114.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:117.3,117.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:117.25,118.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:121.3,121.37 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:121.37,122.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.3,125.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.12,126.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.3,130.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.38,131.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:131.19,133.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:136.3,136.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:136.17,137.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:140.3,141.63 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:141.63,143.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.3,144.80 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.80,145.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:148.3,151.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:151.19,152.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:154.3,156.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:156.38,166.18 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:166.18,169.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:170.4,171.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:171.17,173.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:174.4,174.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:177.3,177.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:183.110,185.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:185.14,187.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:189.2,200.54 8 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:205.96,207.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.14,209.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.2,213.31 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.31,214.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:214.53,216.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:217.3,217.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:217.12,218.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.3,220.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.61,221.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,224.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:224.14,226.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.36,229.13 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:231.4,231.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:233.3,233.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:233.53,235.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.3,236.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.12,237.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.3,242.6 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:244.2,245.26 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:245.26,246.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:246.35,248.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:249.3,249.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:249.35,251.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:253.2,254.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:258.45,260.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:260.17,262.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:264.2,264.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:264.50,266.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:266.40,267.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:267.18,269.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:273.2,274.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:275.21,276.48 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:277.10,278.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:283.68,290.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:293.46,300.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:303.61,318.2 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:322.59,323.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:323.12,326.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:8.52,10.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:10.55,13.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:14.2,14.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:15.28,16.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:16.28,20.58 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:20.58,22.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:23.4,23.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:23.17,25.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:27.3,28.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:29.10,32.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:11.48,13.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:13.24,15.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:16.2,27.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:30.38,32.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:34.46,36.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:38.31,41.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:21.55,23.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.32,25.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:26.2,26.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:30.41,35.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:37.41,42.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.32,47.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.23,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.2,51.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.24,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.2,57.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.15,59.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.2,63.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.51,68.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.41,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:71.2,73.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.62,77.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.50,129.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:170.64,172.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:172.22,175.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.74 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.74,182.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.3,186.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:186.12,188.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.3,190.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.48,192.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.18,197.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.3,200.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:202.2,202.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.41,212.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.31,214.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.29,217.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.2,218.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.31,220.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.32,222.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.83,231.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:231.102,233.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.36,235.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.136,237.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.4,240.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.34,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.2,246.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.65,247.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.53,249.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.37,251.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.137,253.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.5,256.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.35,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:262.2,262.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:266.80,267.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.22,269.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:270.2,272.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.40,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.34,276.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.31,277.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.3,280.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.16,281.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.3,283.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.32,285.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.2,287.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:290.36,292.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.39,295.77 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:298.43,300.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.13,302.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.2,304.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.11,306.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.2,308.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:308.14,310.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.2,312.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:316.56,318.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.89,320.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,321.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.52,326.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:326.32,328.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.28,330.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.3,331.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.34,333.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.3,334.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.42,336.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.3,337.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.2,342.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.27,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.2,345.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.36,347.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:348.2,351.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.49,353.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:353.24,355.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.2,359.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.25,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.2,362.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.33,364.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:365.2,366.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.67,372.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.35,374.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.2,376.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:376.31,378.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,379.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.69,383.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.32,385.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,386.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:389.45,391.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.22,395.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.12,397.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.3,400.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.32,402.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.3,404.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.46,406.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.3,410.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.12,412.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:413.3,414.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.49,416.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.3,418.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.2,420.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.67,426.28 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:426.28,428.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,429.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.12,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.43,438.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.3,440.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.34,442.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.3,445.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:445.48,447.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,449.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.25,451.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.3,454.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.50,456.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.3,458.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.2,460.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.90,129.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.20,131.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.2,134.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.23,136.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:137.2,138.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:138.22,140.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:141.2,142.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:142.27,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:145.2,151.38 6 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:151.38,154.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:154.8,156.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:157.2,160.35 4 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:160.35,162.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.2,163.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.35,165.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.2,167.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.46,169.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:169.8,171.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.2,172.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.47,174.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:174.8,176.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:177.2,177.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:177.46,179.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:179.8,181.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.2,182.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.33,184.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:184.8,186.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:189.2,207.24 17 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:207.24,209.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:210.2,210.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:210.25,212.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:213.2,213.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:213.24,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:216.2,216.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:216.29,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:220.2,222.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:222.47,222.72 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:224.47,224.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:233.2,233.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:236.30,237.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:237.6,239.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:239.20,241.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:242.3,242.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:242.17,244.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:245.3,246.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:246.52,248.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:250.3,250.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:250.23,252.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:254.3,255.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:255.15,257.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:15.48,18.6 3 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:18.6,20.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:20.17,22.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:23.3,23.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:23.17,24.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:26.3,27.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:27.22,28.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:30.3,32.14 3 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:33.25,35.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:35.18,37.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:38.4,38.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:41.2,41.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:41.24,43.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:44.2,45.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:45.50,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:48.2,48.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:51.38,53.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:53.16,56.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:57.2,58.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:58.57,61.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:62.2,62.45 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:62.45,65.3 2 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:4.33,6.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:9.34,11.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:14.43,16.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:19.33,21.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:24.29,26.2 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:6.62,7.34 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:7.34,9.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:10.5,11.28 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:11.28,13.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:14.5,14.15 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:18.39,20.16 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:20.16,22.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:23.5,25.69 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:25.69,27.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:28.5,29.57 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:29.57,31.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.5,32.54 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.54,34.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:35.5,37.72 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:37.72,40.6 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:41.5,41.13 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:47.60,49.34 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:49.34,50.105 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:50.105,53.10 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:55.5,55.19 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:59.79,62.53 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:62.53,64.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.5,65.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.47,66.57 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:66.57,71.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.5,73.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.49,74.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:74.58,79.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.5,81.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.47,83.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.5,84.46 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.46,86.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.5,87.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.47,89.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.5,90.24 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.24,90.50 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:91.5,92.33 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:92.33,93.69 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:93.69,93.81 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:95.5,96.36 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:100.79,101.36 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:101.36,102.27 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:102.27,102.37 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.9,103.48 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.48,103.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.9,104.44 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.44,105.31 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:105.31,106.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:106.49,106.59 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:107.17,108.32 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:108.32,108.64 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:112.5,112.29 1 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:14.13,17.18 3 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:17.18,20.3 2 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:22.2,22.104 1 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:22.104,24.3 1 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:11.13,12.94 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:12.94,15.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 4 +codeberg.org/snonux/hexai/internal/appconfig/config.go:142.19,144.3 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,147.16 2 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:147.16,150.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:150.8,151.85 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:151.85,153.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:159.2,159.50 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:159.50,161.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:162.2,162.12 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.77 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:282.77,291.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.2,294.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.38,297.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.2,300.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.44,307.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.2,310.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.44,313.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.2,316.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.36,319.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.2,322.82 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.82,325.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.2,328.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.47,331.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.2,334.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.68,341.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.2,344.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.71,351.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.2,354.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.68,361.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.2,365.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.59,366.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:366.67,368.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.3,369.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.66,371.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.3,372.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.66,374.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.3,375.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.65,377.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.3,378.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.64,380.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.3,381.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.65,383.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.2,386.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.53,388.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.2,390.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.59,391.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:391.67,393.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.3,394.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.71,396.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.3,397.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.68,399.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.3,400.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.65,402.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.3,403.69 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.69,405.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.3,406.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.66,408.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.3,409.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.66,411.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.3,412.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.64,414.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.2,417.45 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.45,418.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:418.60,420.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.3,421.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.60,423.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.2,426.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.67,428.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:430.2,430.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.16 2 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:435.16,436.43 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:436.43,438.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:439.3,439.18 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:442.2,447.22 5 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:447.22,448.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:448.20,450.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:451.3,451.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:455.2,464.21 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:464.21,465.216 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:465.216,466.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.3,468.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.41,470.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.2,473.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.19,475.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:479.2,481.53 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:481.53,482.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:482.59,483.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:484.15,485.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:486.13,487.35 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:488.17,489.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.2,493.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.50,494.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:494.52,495.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:496.15,497.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:498.13,499.29 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:500.17,501.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:505.2,505.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:508.37,512.2 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:515.39,516.25 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:516.25,518.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:519.2,519.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:519.56,521.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:522.2,522.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:522.34,524.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:525.2,525.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:525.32,527.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:528.2,528.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:528.32,530.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:531.2,531.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:531.36,533.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:534.2,534.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:534.38,536.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:537.2,537.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:537.36,539.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:540.2,540.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:540.36,542.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:543.2,543.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:543.38,545.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:546.2,546.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:546.55,548.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:549.2,549.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:549.56,551.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:552.2,552.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:552.55,554.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:555.2,555.33 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:555.33,557.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:558.2,558.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:558.53,560.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:566.66,568.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.2,569.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.65,571.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.2,572.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.65,574.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.2,575.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.64,577.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.2,578.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.63,580.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.2,581.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.64,583.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.2,585.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.59,587.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.2,589.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.53,591.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.2,593.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.66,595.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.2,596.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.70,598.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.2,599.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.67,601.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.2,602.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.64,604.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.2,605.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.68,607.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.2,608.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.65,610.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.2,611.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.65,613.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.2,614.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.63,616.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.2,618.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.59,620.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.2,621.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.59,623.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:627.47,628.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:628.58,630.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:631.2,631.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:631.56,633.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:634.2,634.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:634.36,636.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:637.2,637.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:637.58,639.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:640.2,640.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:640.56,642.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:643.2,643.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:643.36,645.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:646.2,646.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:646.59,648.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:649.2,649.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:649.57,651.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:652.2,652.37 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:652.37,654.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:657.38,659.72 2 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:659.72,661.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:661.8,663.17 2 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:663.17,665.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:666.3,666.70 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:668.2,668.24 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:675.43,680.34 3 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:680.34,680.76 1 48 +codeberg.org/snonux/hexai/internal/appconfig/config.go:681.2,681.41 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:681.41,683.14 2 14 +codeberg.org/snonux/hexai/internal/appconfig/config.go:683.14,685.4 1 14 +codeberg.org/snonux/hexai/internal/appconfig/config.go:686.3,687.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:687.17,688.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:688.21,690.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:691.4,691.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:693.3,693.17 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:695.2,695.51 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:695.51,697.14 2 8 +codeberg.org/snonux/hexai/internal/appconfig/config.go:697.14,699.4 1 8 +codeberg.org/snonux/hexai/internal/appconfig/config.go:700.3,701.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:701.17,702.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:702.21,704.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:705.4,705.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:707.3,707.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:710.2,710.47 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:710.47,713.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:714.2,714.48 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:714.48,717.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:718.2,718.57 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:718.57,721.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:722.2,722.55 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:722.55,725.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:726.2,726.54 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:726.54,729.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:730.2,730.61 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:730.61,733.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:734.2,734.59 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:734.59,737.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:738.2,738.59 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:738.59,741.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:742.2,742.60 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:742.60,745.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:746.2,746.54 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:746.54,749.27 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:749.27,750.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:750.42,752.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:754.3,754.13 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:756.2,756.47 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:756.47,759.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:760.2,760.48 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:760.48,763.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:764.2,764.47 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:764.47,767.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:768.2,768.49 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:768.49,771.27 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:771.27,772.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:772.42,774.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:776.3,776.13 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:778.2,778.44 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:778.44,781.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:784.2,784.51 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:784.51,787.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:788.2,788.48 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:788.48,791.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:792.2,792.60 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:792.60,795.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:797.2,797.51 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:797.51,800.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:801.2,801.48 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:801.48,804.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:805.2,805.60 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:805.60,808.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:810.2,810.52 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:810.52,813.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:814.2,814.49 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:814.49,817.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:818.2,818.61 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:818.61,821.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:823.2,823.10 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:823.10,825.3 1 2 +codeberg.org/snonux/hexai/internal/appconfig/config.go:826.2,826.13 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:20.50,22.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:22.16,24.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:25.2,26.15 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:26.15,28.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:29.2,32.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:32.27,34.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:34.26,36.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.2,39.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.18,41.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:43.2,45.28 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:45.28,47.14 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:47.14,49.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:51.3,51.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:53.2,55.60 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:60.54,60.103 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:14.54,14.97 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:17.35,17.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:23.121,27.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:29.128,31.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:31.26,32.33 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:32.33,33.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:35.3,36.23 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:36.23,38.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:40.2,42.69 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:45.109,49.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:51.106,55.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:57.86,60.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:60.19,62.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:63.5,63.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:66.120,69.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:69.19,71.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:72.5,72.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:76.57,78.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:78.37,80.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:81.5,81.16 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:85.79,87.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:89.78,91.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:16.80,20.16 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:20.16,23.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:24.2,25.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:25.16,28.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.2,29.46 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.46,31.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:32.2,33.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:33.16,35.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:36.2,37.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:37.16,39.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:40.2,41.12 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:44.146,45.14 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:46.18,47.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:48.21,50.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:50.37,53.4 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:54.3,56.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:57.25,60.79 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:61.22,64.57 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:65.20,68.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:69.10,70.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:18.36,18.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:19.36,19.53 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:20.36,20.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:28.23,41.2 7 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:43.31,43.45 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:45.57,46.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:47.18,48.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:49.25,50.40 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:52.2,54.15 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:57.62,60.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:61.21,65.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:66.18,67.55 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:67.55,71.10 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:72.22,73.28 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:74.20,75.26 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:76.22,77.25 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:78.16,79.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:79.44,79.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:80.29,82.41 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:82.41,83.91 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:83.91,88.14 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.5,91.19 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.19,92.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:92.44,92.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:94.5,94.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:97.30,98.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:98.12,100.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:101.2,101.22 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:105.35,108.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:108.16,110.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.2,111.29 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.29,112.21 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:112.21,114.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:115.3,115.23 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:117.2,117.56 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:20.61,20.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:21.61,21.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:22.61,22.75 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:23.89,26.38 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:26.38,28.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:29.5,31.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:31.27,33.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:34.5,34.49 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:23.95,28.16 4 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:28.16,31.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.2,34.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:34.17,37.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:38.2,40.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:40.74,43.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:44.2,44.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:49.124,51.16 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:51.16,54.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:55.2,57.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:57.74,60.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:61.2,61.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:65.64,67.82 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:67.82,70.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:71.2,72.9 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:73.40,74.59 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:75.23,76.24 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:77.21,78.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:79.10,80.91 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:88.48,91.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:91.40,93.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:94.2,97.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:101.77,104.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.40,105.58 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:105.58,107.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:109.2,112.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:116.125,119.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:119.40,121.56 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:121.56,124.4 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.18,126.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.3,127.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.8,130.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:130.17,132.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:133.3,134.26 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:136.2,139.12 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:143.59,145.2 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:148.65,150.2 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 1 codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 1 codeberg.org/snonux/hexai/internal/hexailsp/run.go:29.17,31.4 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:32.3,33.22 2 1 codeberg.org/snonux/hexai/internal/hexailsp/run.go:35.2,37.70 3 1 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:42.159,49.37 6 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:42.159,49.37 6 7 codeberg.org/snonux/hexai/internal/hexailsp/run.go:49.37,51.3 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:52.2,52.12 1 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:57.49,59.30 2 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:59.30,61.3 1 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:64.72,65.19 1 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:52.2,52.12 1 7 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:57.49,59.30 2 7 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:59.30,61.3 1 7 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:64.72,65.19 1 7 codeberg.org/snonux/hexai/internal/hexailsp/run.go:65.19,67.3 1 0 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:68.2,82.36 3 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:82.36,84.3 1 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:86.2,87.36 2 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:87.36,89.3 1 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.2,90.67 1 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:68.2,82.36 3 7 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:82.36,84.3 1 7 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:86.2,87.36 2 7 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:87.36,89.3 1 7 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.2,90.67 1 7 codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.67,93.3 2 1 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:93.8,96.3 2 5 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 6 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 5 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:93.8,96.3 2 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 7 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 6 codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 1 codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 1 -codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,144.2 1 6 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,144.2 1 7 codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:67.38,69.3 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 0 @@ -4875,11 +8622,11 @@ codeberg.org/snonux/hexai/internal/llm/copilot.go:382.2,383.25 2 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:383.25,384.60 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:384.60,386.4 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:388.2,388.17 1 0 -codeberg.org/snonux/hexai/internal/llm/ollama.go:44.68,45.38 1 0 -codeberg.org/snonux/hexai/internal/llm/ollama.go:45.38,47.3 1 0 -codeberg.org/snonux/hexai/internal/llm/ollama.go:48.2,48.36 1 0 -codeberg.org/snonux/hexai/internal/llm/ollama.go:48.36,50.3 1 0 -codeberg.org/snonux/hexai/internal/llm/ollama.go:51.2,57.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:44.68,45.38 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:45.38,47.3 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:48.2,48.36 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:48.36,50.3 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:51.2,57.3 1 1 codeberg.org/snonux/hexai/internal/llm/ollama.go:60.108,62.27 2 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:62.27,64.3 1 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:65.2,65.19 1 0 @@ -4895,8 +8642,8 @@ codeberg.org/snonux/hexai/internal/llm/ollama.go:90.64,93.3 2 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:94.2,94.50 1 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:94.50,97.3 2 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:98.2,100.21 3 0 -codeberg.org/snonux/hexai/internal/llm/ollama.go:104.45,104.64 1 0 -codeberg.org/snonux/hexai/internal/llm/ollama.go:105.45,105.70 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:104.45,104.64 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:105.45,105.70 1 1 codeberg.org/snonux/hexai/internal/llm/ollama.go:108.126,110.27 2 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:110.27,112.3 1 0 codeberg.org/snonux/hexai/internal/llm/ollama.go:113.2,113.19 1 0 @@ -5038,17 +8785,17 @@ codeberg.org/snonux/hexai/internal/llm/provider.go:60.47,60.73 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:60.73,60.92 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:61.45,62.26 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:62.26,62.66 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.13 2 6 +codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.13 2 7 codeberg.org/snonux/hexai/internal/llm/provider.go:87.13,89.3 1 6 -codeberg.org/snonux/hexai/internal/llm/provider.go:90.2,90.11 1 6 +codeberg.org/snonux/hexai/internal/llm/provider.go:90.2,90.11 1 7 codeberg.org/snonux/hexai/internal/llm/provider.go:91.16,92.44 1 6 codeberg.org/snonux/hexai/internal/llm/provider.go:92.44,94.4 1 1 codeberg.org/snonux/hexai/internal/llm/provider.go:96.3,96.35 1 5 codeberg.org/snonux/hexai/internal/llm/provider.go:96.35,99.4 2 3 codeberg.org/snonux/hexai/internal/llm/provider.go:100.3,100.97 1 5 -codeberg.org/snonux/hexai/internal/llm/provider.go:101.16,102.35 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:101.16,102.35 1 1 codeberg.org/snonux/hexai/internal/llm/provider.go:102.35,105.4 2 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:106.3,106.83 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:106.3,106.83 1 1 codeberg.org/snonux/hexai/internal/llm/provider.go:107.17,108.45 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:108.45,110.4 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:111.3,111.36 1 0 @@ -5056,16 +8803,21 @@ codeberg.org/snonux/hexai/internal/llm/provider.go:111.36,114.4 2 0 codeberg.org/snonux/hexai/internal/llm/provider.go:115.3,115.102 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:116.10,117.55 1 0 codeberg.org/snonux/hexai/internal/llm/util.go:6.47,6.77 1 0 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 5 +codeberg.org/snonux/hexai/internal/llmutils/client.go:12.62,26.39 3 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:26.39,28.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:29.5,30.39 2 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:30.39,32.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:33.5,33.51 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 6 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:18.3,20.12 2 0 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:20.12,22.3 1 0 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:23.2,25.29 2 0 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:25.29,28.3 1 0 codeberg.org/snonux/hexai/internal/logging/logging.go:27.26,27.37 1 1 -codeberg.org/snonux/hexai/internal/logging/logging.go:30.47,31.16 1 6 -codeberg.org/snonux/hexai/internal/logging/logging.go:31.16,33.3 1 2 +codeberg.org/snonux/hexai/internal/logging/logging.go:30.47,31.16 1 7 +codeberg.org/snonux/hexai/internal/logging/logging.go:31.16,33.3 1 3 codeberg.org/snonux/hexai/internal/logging/logging.go:34.2,35.48 2 4 -codeberg.org/snonux/hexai/internal/logging/logging.go:43.32,43.55 1 7 +codeberg.org/snonux/hexai/internal/logging/logging.go:43.32,43.55 1 8 codeberg.org/snonux/hexai/internal/logging/logging.go:46.37,47.25 1 1 codeberg.org/snonux/hexai/internal/logging/logging.go:47.25,48.32 1 1 codeberg.org/snonux/hexai/internal/logging/logging.go:48.32,50.4 1 0 @@ -5151,30 +8903,30 @@ codeberg.org/snonux/hexai/internal/lsp/handlers.go:10.38,11.41 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:11.41,14.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.2,15.22 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.22,17.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.31,31.99 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.99,34.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.2,36.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.50 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.50,56.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.2,57.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.44,58.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.51,63.4 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.2,65.46 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.46,66.52 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.52,71.4 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.2,73.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.44,75.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.2,76.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.43,78.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.2,79.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.44,81.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.2,82.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.21,84.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.2,87.30 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.30,88.63 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.63,90.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.2,93.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.34,31.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.105,34.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.5,36.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.53,56.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.5,57.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.47,58.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.57,63.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.5,65.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.49,66.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.58,71.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.5,73.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.47,75.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.5,76.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.46,78.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.5,79.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.47,81.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.5,82.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.24,84.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.5,87.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.33,88.69 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.69,90.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.5,93.36 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:117.72,120.2 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:191.151,194.24 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:194.24,196.3 1 0 @@ -5259,19 +9011,19 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:86.45,88.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:89.2,97.58 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:97.58,99.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:100.2,100.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.20,108.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.17,108.72 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:108.72,109.66 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:109.66,113.5 3 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:114.9,116.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.24,120.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.49,121.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.33,123.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.19,125.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.9,133.78 7 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.78,134.75 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.75,138.14 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.15,141.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.21,149.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.21,120.43 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.43,121.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.24,123.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.10,125.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.3,133.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.72,134.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.66,138.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.9,141.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.18,149.72 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:149.72,150.66 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:150.66,154.5 3 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:155.9,157.4 1 0 @@ -5385,8 +9137,8 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.31,456.6 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.2,461.15 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.15,463.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:464.2,464.18 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.27,476.71 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.24,476.71 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:476.71,478.21 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:478.21,480.5 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:481.9,483.4 1 0 @@ -5475,7 +9227,7 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:216.50,218.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:219.2,219.23 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.193,225.9 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:225.9,227.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.5,237.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.2,237.32 6 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:237.32,239.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.2,241.24 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.24,243.3 1 0 @@ -5511,15 +9263,15 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.23,325.11 4 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.22,328.17 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:329.19,331.13 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:335.3,337.14 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.17 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.17,357.6 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.5,358.71 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.71,360.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.5,363.55 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.55,365.43 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.43,367.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.9,368.79 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.5,370.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.14 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.14,357.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.2,358.68 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.68,360.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.2,363.52 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.52,365.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.37,367.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.3,368.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.2,370.17 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:374.101,376.57 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:376.57,377.78 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:377.78,379.4 1 0 @@ -5646,190 +9398,176 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:16.2,27.27 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:30.38,32.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:34.46,36.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:38.31,41.2 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:20.55,22.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:22.32,24.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:25.2,25.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:29.41,34.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:36.41,41.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:43.32,46.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:46.23,48.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:49.2,50.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.24,52.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:53.2,56.15 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:56.15,58.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:59.2,62.211 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:66.51,67.41 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.41,69.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:70.2,72.71 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:76.62,77.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.16,79.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.5,81.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:81.28,84.6 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:85.5,85.15 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:88.118,89.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.14,92.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.16,95.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:95.35,97.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:98.4,98.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:98.36,100.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:101.4,103.59 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:103.59,105.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.4,106.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:109.2,112.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.51,116.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.23,118.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:119.2,119.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:119.13,121.100 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.100,123.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:125.3,125.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.2,127.11 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.32,132.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.44,136.50 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.50,138.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:139.2,139.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.40,144.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:144.20,145.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.40,147.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.3,149.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:151.2,151.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:151.12,153.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.2,154.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.52,158.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:158.38,160.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:161.2,162.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.27,163.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:163.34,164.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:166.3,166.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:166.36,167.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:169.3,169.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:171.2,171.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:179.64,181.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:181.22,184.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:184.12,186.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:187.3,189.74 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.74,191.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.12,197.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:198.3,199.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.48,201.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:203.3,204.18 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:204.18,206.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.3,209.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:211.2,211.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.41,221.31 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:221.31,223.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.29 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.29,226.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:227.2,227.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:227.31,229.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:229.32,231.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.2,233.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:237.83,240.102 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.102,242.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:242.36,244.136 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:244.136,246.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.4,249.34 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.34,251.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:255.2,255.65 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:255.65,256.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.53,258.37 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:258.37,260.137 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:260.137,262.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:263.5,265.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:265.35,267.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:271.2,271.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.80,276.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.22,278.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.2,281.40 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:281.40,283.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.2,284.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.34,285.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:285.31,286.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.3,289.16 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:289.16,290.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.3,292.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.32,294.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:296.2,296.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:299.36,301.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.39,306.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.13,308.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:309.2,311.66 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.66,313.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.2,315.54 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:315.54,317.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.2,318.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.51,320.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,323.69 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:323.69,326.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:327.2,327.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.43,333.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:333.13,335.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:336.2,337.11 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.11,339.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:340.2,341.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:341.14,343.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:344.2,345.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:349.56,351.89 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.89,353.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:354.2,354.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.52,359.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.32,361.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:361.28,363.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:364.3,364.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:364.34,366.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:367.3,367.42 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:367.42,369.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.3,370.49 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.2,375.27 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.27,377.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:378.2,378.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:378.36,380.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:381.2,384.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:384.49,386.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.24,388.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.2,392.25 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:392.25,394.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.2,395.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.33,397.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.2,399.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.67,405.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:405.35,407.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:408.2,409.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.31,411.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.2,412.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:415.69,416.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:416.32,418.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:419.2,419.47 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:422.45,424.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:424.22,428.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,430.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.32 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.32,435.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,437.46 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:437.46,439.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:442.3,443.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:443.12,445.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:446.3,447.49 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:447.49,449.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:451.3,451.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.2,453.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:456.67,459.28 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:459.28,461.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:461.12,462.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:464.3,466.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:466.12,467.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.3,469.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.43,471.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.3,473.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.34,475.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:477.3,478.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.48,480.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.3,482.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.25,484.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:486.3,487.50 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:487.50,489.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:490.3,491.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:493.2,493.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:21.55,23.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.32,25.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:26.2,26.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:30.41,35.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:37.41,42.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.32,47.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.23,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.2,51.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.24,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.2,57.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.15,59.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.2,63.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.51,68.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.41,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:71.2,73.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.62,77.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.50,129.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:170.64,172.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:172.22,175.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.74 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.74,182.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.3,186.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:186.12,188.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.3,190.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.48,192.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.18,197.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.3,200.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:202.2,202.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.41,212.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.31,214.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.29,217.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.2,218.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.31,220.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.32,222.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.83,231.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:231.102,233.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.36,235.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.136,237.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.4,240.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.34,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.2,246.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.65,247.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.53,249.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.37,251.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.137,253.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.5,256.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.35,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:262.2,262.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:266.80,267.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.22,269.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:270.2,272.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.40,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.34,276.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.31,277.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.3,280.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.16,281.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.3,283.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.32,285.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.2,287.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:290.36,292.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.39,295.77 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:298.43,300.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.13,302.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.2,304.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.11,306.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.2,308.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:308.14,310.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.2,312.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:316.56,318.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.89,320.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,321.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.52,326.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:326.32,328.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.28,330.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.3,331.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.34,333.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.3,334.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.42,336.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.3,337.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.2,342.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.27,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.2,345.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.36,347.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:348.2,351.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.49,353.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:353.24,355.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.2,359.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.25,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.2,362.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.33,364.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:365.2,366.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.67,372.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.35,374.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.2,376.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:376.31,378.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,379.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.69,383.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.32,385.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,386.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:389.45,391.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.22,395.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.12,397.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.3,400.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.32,402.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.3,404.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.46,406.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.3,410.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.12,412.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:413.3,414.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.49,416.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.3,418.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.2,420.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.67,426.28 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:426.28,428.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,429.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.12,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.43,438.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.3,440.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.34,442.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.3,445.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:445.48,447.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,449.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.25,451.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.3,454.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.50,456.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.3,458.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.2,460.14 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:126.90,129.20 3 1 codeberg.org/snonux/hexai/internal/lsp/server.go:129.20,131.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:132.2,134.23 3 1 @@ -5854,10 +9592,10 @@ codeberg.org/snonux/hexai/internal/lsp/server.go:174.8,176.3 1 1 codeberg.org/snonux/hexai/internal/lsp/server.go:177.2,177.46 1 1 codeberg.org/snonux/hexai/internal/lsp/server.go:177.46,179.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:179.8,181.3 1 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:182.5,182.36 1 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:182.36,184.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:184.11,186.6 1 1 -codeberg.org/snonux/hexai/internal/lsp/server.go:189.5,207.24 17 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.2,182.33 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.33,184.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:184.8,186.3 1 1 +codeberg.org/snonux/hexai/internal/lsp/server.go:189.2,207.24 17 1 codeberg.org/snonux/hexai/internal/lsp/server.go:207.24,209.3 1 1 codeberg.org/snonux/hexai/internal/lsp/server.go:210.2,210.25 1 1 codeberg.org/snonux/hexai/internal/lsp/server.go:210.25,212.3 1 1 @@ -5907,6 +9645,63 @@ codeberg.org/snonux/hexai/internal/testutil/fixtures.go:9.34,11.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:14.43,16.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:19.33,21.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:24.29,26.2 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:6.62,7.34 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:7.34,9.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:10.5,11.28 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:11.28,13.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:14.5,14.15 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:18.39,20.16 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:20.16,22.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:23.5,25.69 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:25.69,27.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:28.5,29.57 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:29.57,31.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.5,32.54 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.54,34.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:35.5,37.72 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:37.72,40.6 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:41.5,41.13 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:47.60,49.34 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:49.34,50.105 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:50.105,53.10 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:55.5,55.19 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:59.79,62.53 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:62.53,64.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.5,65.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.47,66.57 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:66.57,71.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.5,73.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.49,74.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:74.58,79.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.5,81.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.47,83.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.5,84.46 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.46,86.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.5,87.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.47,89.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.5,90.24 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.24,90.50 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:91.5,92.33 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:92.33,93.69 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:93.69,93.81 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:95.5,96.36 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:100.79,101.36 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:101.36,102.27 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:102.27,102.37 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.9,103.48 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.48,103.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.9,104.44 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.44,105.31 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:105.31,106.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:106.49,106.59 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:107.17,108.32 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:108.32,108.64 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:112.5,112.29 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:4.33,6.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:9.34,11.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:14.43,16.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:19.33,21.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:24.29,26.2 1 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:14.13,17.18 3 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:22.2,22.104 1 0 @@ -5915,6 +9710,8 @@ codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:11.13,12.94 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:12.94,15.3 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:142.19,144.3 1 0 @@ -5925,94 +9722,94 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:151.85,153.4 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:159.2,159.50 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:159.50,161.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:162.2,162.12 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.80 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.80,291.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:294.5,294.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:294.41,297.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:300.5,300.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:300.47,307.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:310.5,310.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:310.47,313.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:316.5,316.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:316.39,319.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:322.5,322.85 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:322.85,325.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:328.5,328.50 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:328.50,331.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:334.5,334.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:334.71,341.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:344.5,344.74 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:344.74,351.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:354.5,354.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:354.71,361.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:365.5,365.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:365.62,366.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:366.73,368.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:369.9,369.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:369.72,371.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:372.9,372.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:372.72,374.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:375.9,375.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:375.71,377.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:378.9,378.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:378.70,380.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.9,381.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.71,383.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:386.5,386.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:386.56,388.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:390.5,390.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:390.62,391.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:391.73,393.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:394.9,394.77 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:394.77,396.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.9,397.74 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.74,399.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:400.9,400.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:400.71,402.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.9,403.75 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.75,405.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:406.9,406.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:406.72,408.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.9,409.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.72,411.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:412.9,412.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:412.70,414.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:417.5,417.48 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:417.48,418.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:418.66,420.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.9,421.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.66,423.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:426.5,426.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:426.70,428.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:430.5,430.15 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.19 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:435.19,436.49 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:436.49,438.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:439.9,439.24 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:442.5,447.25 5 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:447.25,448.26 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:448.26,450.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:451.9,451.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:455.5,464.24 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:464.24,465.222 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:465.222,466.21 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.9,468.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.47,470.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.5,473.22 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.22,475.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:479.5,481.56 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:481.56,482.65 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:482.65,483.35 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:484.24,485.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:486.22,487.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:488.26,489.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:493.5,493.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:493.53,494.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:494.58,495.35 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:496.24,497.46 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:498.22,499.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:500.26,501.46 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:505.5,505.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.77 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:282.77,291.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.2,294.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.38,297.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.2,300.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.44,307.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.2,310.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.44,313.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.2,316.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.36,319.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.2,322.82 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.82,325.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.2,328.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.47,331.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.2,334.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.68,341.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.2,344.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.71,351.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.2,354.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.68,361.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.2,365.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.59,366.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:366.67,368.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.3,369.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.66,371.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.3,372.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.66,374.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.3,375.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.65,377.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.3,378.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.64,380.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.3,381.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.65,383.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.2,386.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.53,388.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.2,390.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.59,391.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:391.67,393.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.3,394.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.71,396.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.3,397.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.68,399.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.3,400.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.65,402.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.3,403.69 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.69,405.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.3,406.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.66,408.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.3,409.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.66,411.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.3,412.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.64,414.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.2,417.45 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.45,418.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:418.60,420.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.3,421.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.60,423.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.2,426.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.67,428.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:430.2,430.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:435.16,436.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:436.43,438.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:439.3,439.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:442.2,447.22 5 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:447.22,448.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:448.20,450.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:451.3,451.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:455.2,464.21 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:464.21,465.216 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:465.216,466.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.3,468.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.41,470.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.2,473.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.19,475.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:479.2,481.53 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:481.53,482.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:482.59,483.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:484.15,485.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:486.13,487.35 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:488.17,489.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.2,493.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.50,494.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:494.52,495.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:496.15,497.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:498.13,499.29 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:500.17,501.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:505.2,505.18 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:508.37,512.2 3 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:515.39,516.25 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:516.25,518.3 1 0 @@ -6044,42 +9841,42 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:555.2,555.33 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:555.33,557.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:558.2,558.53 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:558.53,560.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.69 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:566.69,568.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:569.5,569.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:569.68,571.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:572.5,572.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:572.68,574.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:575.5,575.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:575.67,577.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:578.5,578.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:578.66,580.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:581.5,581.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:581.67,583.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:585.5,585.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:585.62,587.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:589.5,589.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:589.56,591.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:593.5,593.69 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:593.69,595.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:596.5,596.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:596.73,598.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:599.5,599.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:599.70,601.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:602.5,602.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:602.67,604.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:605.5,605.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:605.71,607.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:608.5,608.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:608.68,610.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:611.5,611.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:611.68,613.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:614.5,614.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:614.66,616.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:618.5,618.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:618.62,620.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:621.5,621.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:621.62,623.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:566.66,568.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.2,569.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.65,571.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.2,572.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.65,574.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.2,575.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.64,577.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.2,578.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.63,580.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.2,581.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.64,583.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.2,585.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.59,587.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.2,589.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.53,591.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.2,593.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.66,595.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.2,596.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.70,598.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.2,599.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.67,601.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.2,602.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.64,604.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.2,605.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.68,607.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.2,608.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.65,610.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.2,611.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.65,613.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.2,614.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.63,616.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.2,618.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.59,620.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.2,621.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.59,623.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:627.47,628.58 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:628.58,630.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:631.2,631.56 1 0 @@ -6179,47 +9976,143 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:818.61,821.3 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:823.2,823.10 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:823.10,825.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:826.2,826.13 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:22.95,27.19 4 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:27.19,30.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:32.5,33.20 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.20,36.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:37.5,39.77 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:39.77,42.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:43.5,43.15 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:48.124,50.16 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:50.16,53.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:54.2,56.74 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:56.74,59.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:60.2,60.12 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:64.64,66.82 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:66.82,69.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:70.2,71.9 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:72.40,73.59 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:74.23,75.24 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:76.21,77.22 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:78.10,79.91 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:84.65,99.36 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:99.36,101.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:103.2,104.36 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.36,106.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:107.2,107.48 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:111.48,114.40 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:114.40,116.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:117.2,120.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.77,127.43 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.43,128.64 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.64,130.10 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:132.5,135.6 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:139.125,142.40 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:142.40,144.56 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:144.56,147.4 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:147.18,149.4 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:150.3,150.22 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:151.8,153.17 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:153.17,155.4 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:156.3,157.26 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:159.2,162.12 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:166.59,168.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:20.50,22.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:22.16,24.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:25.2,26.15 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:26.15,28.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:29.2,32.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:32.27,34.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:34.26,36.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.2,39.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.18,41.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:43.2,45.28 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:45.28,47.14 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:47.14,49.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:51.3,51.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:53.2,55.60 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:60.54,60.103 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:14.54,14.97 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:17.35,17.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:23.121,27.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:29.128,31.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:31.26,32.33 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:32.33,33.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:35.3,36.23 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:36.23,38.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:40.2,42.69 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:45.109,49.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:51.106,55.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:57.86,60.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:60.19,62.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:63.5,63.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:66.120,69.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:69.19,71.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:72.5,72.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:76.57,78.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:78.37,80.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:81.5,81.16 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:85.79,87.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:89.78,91.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:16.80,20.16 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:20.16,23.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:24.2,25.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:25.16,28.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.2,29.46 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.46,31.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:32.2,33.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:33.16,35.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:36.2,37.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:37.16,39.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:40.2,41.12 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:44.146,45.14 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:46.18,47.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:48.21,50.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:50.37,53.4 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:54.3,56.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:57.25,60.79 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:61.22,64.57 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:65.20,68.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:69.10,70.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:18.36,18.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:19.36,19.53 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:20.36,20.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:28.23,41.2 7 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:43.31,43.45 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:45.57,46.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:47.18,48.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:49.25,50.40 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:52.2,54.15 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:57.62,60.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:61.21,65.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:66.18,67.55 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:67.55,71.10 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:72.22,73.28 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:74.20,75.26 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:76.22,77.25 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:78.16,79.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:79.44,79.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:80.29,82.41 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:82.41,83.91 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:83.91,88.14 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.5,91.19 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.19,92.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:92.44,92.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:94.5,94.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:97.30,98.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:98.12,100.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:101.2,101.22 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:105.35,108.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:108.16,110.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.2,111.29 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.29,112.21 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:112.21,114.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:115.3,115.23 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:117.2,117.56 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:20.61,20.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:21.61,21.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:22.61,22.75 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:23.89,26.38 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:26.38,28.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:29.5,31.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:31.27,33.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:34.5,34.49 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:23.95,28.16 4 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:28.16,31.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.2,34.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:34.17,37.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:38.2,40.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:40.74,43.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:44.2,44.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:49.124,51.16 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:51.16,54.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:55.2,57.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:57.74,60.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:61.2,61.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:65.64,67.82 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:67.82,70.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:71.2,72.9 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:73.40,74.59 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:75.23,76.24 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:77.21,78.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:79.10,80.91 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:88.48,91.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:91.40,93.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:94.2,97.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:101.77,104.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.40,105.58 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:105.58,107.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:109.2,112.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:116.125,119.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:119.40,121.56 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:121.56,124.4 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.18,126.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.3,127.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.8,130.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:130.17,132.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:133.3,134.26 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:136.2,139.12 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:143.59,145.2 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:148.65,150.2 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:29.17,31.4 1 0 @@ -6244,11 +10137,4859 @@ codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,144.2 1 0 -codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 8 +codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:67.38,69.3 1 0 -codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 8 +codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:70.36,74.3 1 0 -codeberg.org/snonux/hexai/internal/llm/copilot.go:75.2,82.3 1 8 +codeberg.org/snonux/hexai/internal/llm/copilot.go:75.2,82.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:85.109,86.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:86.39,88.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:90.2,90.45 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:90.45,92.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:93.2,94.27 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:94.27,96.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:97.2,97.19 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:97.19,99.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:100.2,102.29 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:102.29,104.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:105.2,109.16 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:109.16,112.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:114.2,117.16 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:117.16,120.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:121.2,122.57 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:122.57,124.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:125.2,126.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:126.16,128.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:129.2,129.27 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:129.27,132.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:133.2,135.21 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:139.46,139.66 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:140.46,140.71 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:143.102,146.29 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:146.29,148.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:149.2,149.24 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:149.24,151.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:151.8,151.31 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:151.31,154.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:155.2,155.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:155.21,157.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:158.2,158.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:158.21,160.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:161.2,161.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:164.130,166.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:166.16,168.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:169.2,169.28 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:169.28,171.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:172.2,172.29 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:175.70,176.53 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:176.53,178.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:179.2,181.74 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:181.74,184.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:185.2,186.69 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:189.91,191.64 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:191.64,194.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:195.2,195.17 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:204.66,206.82 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:206.82,208.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:209.2,209.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:209.39,211.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:212.2,213.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:213.16,215.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:216.2,220.16 5 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:220.16,222.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:223.2,224.53 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:224.53,226.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:227.2,228.64 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:228.64,230.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:231.2,231.40 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:231.40,233.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:235.2,236.18 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:236.18,238.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:239.2,241.12 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:246.42,248.20 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:248.20,250.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:251.2,252.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:252.16,253.59 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:253.59,254.48 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:254.48,256.5 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:258.3,258.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:260.2,264.22 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:264.22,266.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:267.2,267.34 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:270.42,270.100 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:274.57,290.2 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:292.58,308.2 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:310.28,313.19 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:313.19,315.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:316.2,316.18 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:322.153,323.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:323.39,325.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:326.2,326.45 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:326.45,328.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:329.2,329.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:329.12,331.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:332.2,354.16 6 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:354.16,356.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:357.2,358.53 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:358.53,360.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:362.2,365.27 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:365.27,366.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:366.39,367.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:369.3,375.88 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:375.88,376.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:378.3,378.34 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:378.34,380.4 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:382.2,383.25 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:383.25,384.60 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:384.60,386.4 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:388.2,388.17 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:44.68,45.38 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:45.38,47.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:48.2,48.36 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:48.36,50.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:51.2,57.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:60.108,62.27 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:62.27,64.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:65.2,65.19 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:65.19,67.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:69.2,73.16 5 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:73.16,75.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:77.2,80.16 4 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:80.16,83.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:84.2,85.56 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:85.56,87.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:89.2,90.64 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:90.64,93.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:94.2,94.50 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:94.50,97.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:98.2,100.21 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:104.45,104.64 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:105.45,105.70 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:108.126,110.27 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:110.27,112.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:113.2,113.19 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:113.19,115.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:117.2,121.16 5 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:121.16,123.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:125.2,128.16 4 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:128.16,131.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:132.2,133.56 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:133.56,135.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:137.2,138.6 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:138.6,140.41 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:140.41,141.30 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:141.30,142.10 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:144.4,145.14 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:147.3,147.40 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:147.40,150.4 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:151.3,151.58 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:151.58,153.4 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:154.3,154.14 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:154.14,155.9 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:158.2,159.12 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:163.76,165.29 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:165.29,167.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:168.2,168.89 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:171.109,174.29 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:174.29,176.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:177.2,178.24 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:178.24,180.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:180.8,180.31 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:180.31,182.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:183.2,183.21 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:183.21,185.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:186.2,186.21 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:186.21,188.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:189.2,189.22 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:189.22,191.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:192.2,192.12 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:195.100,197.16 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:197.16,199.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:200.2,201.29 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:204.69,205.53 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:205.53,207.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:208.2,210.43 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:210.43,213.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:214.2,215.68 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:78.76,79.38 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:79.38,81.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.2,82.36 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.36,84.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:85.2,92.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:95.108,96.20 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:96.20,98.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:99.2,100.27 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:100.27,102.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:103.2,103.19 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:103.19,105.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:106.2,110.16 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:110.16,113.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:114.2,119.16 4 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:119.16,122.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:123.2,124.56 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:124.56,126.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:127.2,128.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:128.16,130.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:131.2,131.27 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:131.27,134.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:135.2,137.21 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:141.45,141.64 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:142.45,142.70 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:146.126,147.20 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:147.20,149.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:150.2,151.27 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:151.27,153.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:154.2,154.19 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:154.19,156.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:157.2,161.16 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:161.16,164.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:165.2,170.16 4 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:170.16,173.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:174.2,175.56 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:175.56,177.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:179.2,179.64 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:179.64,181.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:182.2,183.12 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:187.56,187.104 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:190.76,192.29 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:192.29,194.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:195.2,195.89 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:198.105,201.29 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:201.29,203.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:204.2,204.24 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:204.24,206.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:206.8,206.31 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:206.31,209.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:210.2,210.21 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:210.21,212.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:213.2,213.21 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:213.21,215.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:216.2,216.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:219.127,221.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:221.16,223.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:224.2,225.28 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:225.28,227.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:228.2,228.29 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:231.152,233.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:233.16,235.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:236.2,238.28 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:238.28,240.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:241.2,241.29 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:244.69,245.53 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:245.53,247.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:248.2,250.55 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:250.55,253.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:254.2,255.68 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:258.85,260.64 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:260.64,263.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:264.2,264.17 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:267.90,273.21 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:273.21,275.41 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:275.41,276.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:278.3,279.45 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:279.45,280.9 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:282.3,283.65 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:283.65,284.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:286.3,286.54 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:286.54,289.4 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:290.3,290.36 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:290.36,291.30 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:291.30,293.5 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:296.2,296.38 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:296.38,299.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:300.2,300.12 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:58.47,58.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:58.73,58.92 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:59.47,59.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:59.73,59.94 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:60.47,60.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:60.73,60.92 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:61.45,62.26 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:62.26,62.66 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.13 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:87.13,89.3 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:90.2,90.11 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:91.16,92.44 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:92.44,94.4 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.3,96.35 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.35,99.4 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:100.3,100.97 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:101.16,102.35 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:102.35,105.4 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:106.3,106.83 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:107.17,108.45 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:108.45,110.4 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:111.3,111.36 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:111.36,114.4 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:115.3,115.102 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:116.10,117.55 1 0 +codeberg.org/snonux/hexai/internal/llm/util.go:6.47,6.77 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:12.62,26.39 3 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:26.39,28.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:29.5,30.39 2 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:30.39,32.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:33.5,33.51 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 1 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:18.3,20.12 2 1 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:20.12,22.3 1 1 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:23.2,25.29 2 1 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:25.29,28.3 1 1 +codeberg.org/snonux/hexai/internal/logging/logging.go:27.26,27.37 1 1 +codeberg.org/snonux/hexai/internal/logging/logging.go:30.47,31.16 1 3 +codeberg.org/snonux/hexai/internal/logging/logging.go:31.16,33.3 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:34.2,35.48 2 3 +codeberg.org/snonux/hexai/internal/logging/logging.go:43.32,43.55 1 1 +codeberg.org/snonux/hexai/internal/logging/logging.go:46.37,47.25 1 2 +codeberg.org/snonux/hexai/internal/logging/logging.go:47.25,48.32 1 2 +codeberg.org/snonux/hexai/internal/logging/logging.go:48.32,50.4 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:51.3,51.37 1 2 +codeberg.org/snonux/hexai/internal/logging/logging.go:53.2,53.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:16.96,18.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:19.17,20.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:21.16,22.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:23.26,24.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:24.14,26.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:27.3,27.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:28.21,29.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:30.10,32.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:36.65,38.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:38.35,41.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:42.2,45.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:45.15,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:48.2,49.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:49.13,51.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:52.2,53.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:56.53,58.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:58.14,61.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:62.2,62.59 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:67.64,68.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:68.20,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:71.2,72.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:72.27,74.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:76.2,77.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:77.21,79.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:80.2,80.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:80.53,82.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:83.2,83.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:15.48,19.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:21.45,25.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:27.33,31.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:33.52,37.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:40.37,43.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:45.96,47.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:47.35,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:50.2,51.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:51.13,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:54.2,54.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:54.25,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:57.2,58.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:58.16,60.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:61.2,61.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:61.26,63.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:64.2,64.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:64.28,66.85 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:66.85,68.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:71.2,71.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:78.71,80.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:80.35,82.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:83.2,84.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:84.13,86.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:87.2,87.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:87.25,89.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:91.2,92.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:92.28,93.44 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:93.44,95.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:98.3,98.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:98.40,99.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:102.2,102.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:102.20,104.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:106.2,106.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:106.35,109.17 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:109.17,110.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:110.15,112.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:114.4,114.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:114.29,116.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:119.2,119.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:122.46,123.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:123.28,124.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:124.29,126.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:128.2,128.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:131.31,133.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:133.18,135.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:136.2,136.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:139.33,141.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:141.49,143.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:144.2,144.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:10.38,11.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:11.41,14.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.2,15.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.22,17.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.34,31.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.105,34.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.5,36.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.53,56.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.5,57.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.47,58.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.57,63.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.5,65.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.49,66.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.58,71.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.5,73.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.47,75.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.5,76.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.46,78.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.5,79.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.47,81.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.5,82.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.24,84.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.5,87.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.33,88.69 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.69,90.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.5,93.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:117.72,120.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:191.151,194.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:194.24,196.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:197.2,199.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:199.24,201.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:202.2,204.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:204.24,207.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:208.2,209.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:209.32,211.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:212.2,213.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:213.14,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:217.2,231.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:234.64,238.9 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:238.9,240.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:242.2,243.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:246.56,249.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:249.24,251.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:252.2,252.44 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:252.44,255.33 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:255.33,260.4 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:261.3,261.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:264.2,265.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:268.51,272.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:272.37,273.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:273.15,275.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:278.2,278.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:278.14,280.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:281.2,281.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:288.74,290.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:290.22,295.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:295.49,297.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:297.9,300.4 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.3,303.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.115,305.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.3,307.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.27,309.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.3,311.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.27,312.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.34,313.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.38,314.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:314.35,316.7 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:318.5,318.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:321.4,321.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.2,327.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:327.36,329.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.2,331.114 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.114,333.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.2,335.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.35,336.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:336.14,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:340.2,340.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:343.137,348.24 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:348.24,350.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:351.2,361.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:436.74,445.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:17.48,19.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:19.55,20.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:20.23,22.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:23.3,23.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:25.2,26.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:26.57,27.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:27.23,29.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:30.3,30.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:32.2,35.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:35.53,37.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:38.2,38.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:38.57,40.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:41.2,41.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:41.54,43.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:44.2,44.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:44.51,46.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:47.2,47.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:47.22,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:52.85,53.85 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:53.85,64.3 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:65.2,65.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:68.89,70.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:70.21,72.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:73.2,82.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:85.70,86.45 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:86.45,88.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:89.2,97.58 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:97.58,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:100.2,100.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.17,108.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:108.72,109.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:109.66,113.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:114.9,116.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.21,120.43 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.43,121.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.24,123.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.10,125.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.3,133.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.72,134.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.66,138.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.9,141.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.18,149.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:149.72,150.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:150.66,154.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:155.9,157.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:158.17,159.92 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:159.92,167.4 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:169.2,169.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:172.55,174.56 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:174.56,175.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:175.23,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:178.3,178.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:180.2,180.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:180.49,183.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:184.2,184.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:190.85,191.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:191.22,193.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:194.2,195.53 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:195.53,197.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:198.2,198.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:198.31,200.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:201.2,202.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:202.36,203.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:203.34,205.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:207.2,207.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:211.37,213.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:213.32,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:216.2,216.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:216.32,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:220.2,220.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:220.29,222.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:224.2,224.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:224.29,226.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:227.2,227.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:230.34,231.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:231.22,233.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:234.2,234.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:237.37,238.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:238.22,240.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:241.2,241.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:246.76,248.80 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:248.80,250.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:252.2,252.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:252.71,254.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:256.2,257.41 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:257.41,259.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:260.2,267.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:271.86,272.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:272.24,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:275.34,277.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:278.2,286.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:289.95,291.76 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:291.76,293.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:295.2,296.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:296.21,298.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:299.2,301.36 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:301.36,303.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:304.2,306.39 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:306.39,308.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:310.2,314.26 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:314.26,320.22 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:320.22,323.4 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:324.3,326.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:326.102,328.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:329.3,336.40 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:336.40,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:339.3,341.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:341.19,343.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:344.3,345.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:348.2,349.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:349.15,351.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:352.2,367.13 13 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:367.13,370.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:371.2,372.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:376.62,377.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:377.39,379.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:380.2,382.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:382.16,384.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:385.2,386.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:389.35,390.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:390.41,392.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:393.2,393.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:397.48,398.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:398.27,400.39 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:400.39,403.45 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:403.45,405.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:406.4,406.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:406.46,408.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:409.4,409.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:409.46,411.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:412.4,412.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:415.2,415.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:419.63,420.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:420.13,422.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:423.2,423.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:423.23,425.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:427.2,428.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:428.28,429.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:429.42,431.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:433.3,433.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:433.38,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:437.2,437.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:437.17,439.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:441.2,443.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:443.38,445.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:445.32,446.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:447.13,449.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:450.13,451.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:451.18,453.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.5,454.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.31,456.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.2,461.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.15,463.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:464.2,464.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.24,476.71 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:476.71,478.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:478.21,480.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:481.9,483.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:486.2,487.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:487.16,489.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:490.2,490.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:494.43,498.39 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:498.39,500.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:501.2,503.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:503.34,505.63 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:505.63,507.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.2,510.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.42,512.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:513.2,513.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:516.37,517.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:517.16,519.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:520.2,521.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:521.32,523.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:524.2,524.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:15.48,18.55 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:18.55,25.19 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:25.19,27.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:28.3,28.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:28.25,32.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:32.10,35.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:38.2,39.73 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:44.67,45.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:45.22,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:48.2,52.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:52.48,54.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:54.8,57.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:58.2,58.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:63.99,66.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:68.98,71.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:73.160,78.52 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:78.52,81.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:82.2,82.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:82.51,84.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:86.2,91.86 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:91.86,96.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:97.2,97.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:97.58,100.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:102.2,102.83 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:102.83,105.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:108.2,108.126 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:108.126,110.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:113.2,116.29 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:116.29,118.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:119.2,121.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:121.32,123.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:125.2,126.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:126.29,128.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:129.2,132.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:132.16,136.3 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:137.2,141.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:141.19,143.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:144.2,145.75 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:149.38,150.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:150.16,152.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:153.2,156.42 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:156.42,158.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:158.8,161.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:162.2,162.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:166.91,168.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.24,170.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.2,171.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.40,172.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:172.35,174.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:175.3,176.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:176.37,177.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:177.18,180.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:183.2,183.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:187.119,191.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.24,193.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:194.2,195.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:195.13,197.68 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:197.68,199.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.2,201.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.19,203.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:205.2,206.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:206.12,208.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:208.28,210.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:212.3,212.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:214.2,216.50 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:216.50,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:219.2,219.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.193,225.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:225.9,227.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.2,237.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:237.32,239.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.2,241.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.24,243.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.2,250.30 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:250.30,252.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.2,254.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:254.40,256.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:256.20,258.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.21,260.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:261.4,261.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:261.54,263.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:263.21,265.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.4,267.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.40,271.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:273.8,273.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:273.23,275.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:276.2,276.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:281.55,283.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:283.12,285.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.2,286.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.6,290.20 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:290.20,292.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:293.3,294.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:294.17,296.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:297.3,299.10 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:300.21,302.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:303.18,303.18 0 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:311.60,313.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:313.19,315.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:316.2,317.6 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:317.6,321.23 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.23,325.11 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.22,328.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:329.19,331.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:335.3,337.14 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.14 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.14,357.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.2,358.68 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.68,360.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.2,363.52 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.52,365.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.37,367.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.3,368.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.2,370.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:374.101,376.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:376.57,377.78 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:377.78,379.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:381.2,381.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:381.19,383.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:384.2,384.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:384.19,386.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:387.2,387.56 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:387.56,388.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:388.57,390.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:392.2,392.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:21.45,23.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:23.55,26.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:29.47,31.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:31.55,32.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:32.32,34.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:35.3,37.44 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:41.46,43.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:43.55,46.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:52.76,54.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.14,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:58.2,59.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.14,61.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.2,62.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.26,64.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:65.2,66.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.13,68.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:69.2,69.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:69.30,71.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:73.2,74.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:74.28,77.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:78.2,83.43 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:83.43,86.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:87.2,87.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.50,96.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:96.24,98.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:99.2,100.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.35,102.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.2,103.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.30,106.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:106.14,107.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:107.39,109.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:111.4,111.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:113.3,113.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:113.12,114.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:117.3,117.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:117.25,118.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:121.3,121.37 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:121.37,122.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.3,125.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.12,126.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.3,130.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.38,131.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:131.19,133.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:136.3,136.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:136.17,137.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:140.3,141.63 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:141.63,143.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.3,144.80 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.80,145.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:148.3,151.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:151.19,152.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:154.3,156.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:156.38,166.18 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:166.18,169.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:170.4,171.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:171.17,173.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:174.4,174.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:177.3,177.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:183.110,185.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:185.14,187.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:189.2,200.54 8 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:205.96,207.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.14,209.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.2,213.31 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.31,214.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:214.53,216.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:217.3,217.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:217.12,218.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.3,220.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.61,221.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,224.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:224.14,226.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.36,229.13 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:231.4,231.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:233.3,233.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:233.53,235.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.3,236.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.12,237.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.3,242.6 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:244.2,245.26 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:245.26,246.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:246.35,248.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:249.3,249.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:249.35,251.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:253.2,254.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:258.45,260.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:260.17,262.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:264.2,264.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:264.50,266.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:266.40,267.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:267.18,269.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:273.2,274.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:275.21,276.48 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:277.10,278.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:283.68,290.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:293.46,300.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:303.61,318.2 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:322.59,323.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:323.12,326.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:8.52,10.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:10.55,13.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:14.2,14.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:15.28,16.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:16.28,20.58 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:20.58,22.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:23.4,23.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:23.17,25.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:27.3,28.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:29.10,32.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:11.48,13.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:13.24,15.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:16.2,27.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:30.38,32.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:34.46,36.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:38.31,41.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:21.55,23.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.32,25.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:26.2,26.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:30.41,35.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:37.41,42.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.32,47.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.23,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.2,51.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.24,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.2,57.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.15,59.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.2,63.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.51,68.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.41,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:71.2,73.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.62,77.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.50,129.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:170.64,172.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:172.22,175.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.74 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.74,182.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.3,186.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:186.12,188.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.3,190.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.48,192.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.18,197.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.3,200.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:202.2,202.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.41,212.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.31,214.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.29,217.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.2,218.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.31,220.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.32,222.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.83,231.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:231.102,233.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.36,235.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.136,237.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.4,240.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.34,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.2,246.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.65,247.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.53,249.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.37,251.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.137,253.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.5,256.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.35,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:262.2,262.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:266.80,267.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.22,269.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:270.2,272.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.40,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.34,276.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.31,277.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.3,280.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.16,281.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.3,283.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.32,285.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.2,287.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:290.36,292.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.39,295.77 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:298.43,300.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.13,302.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.2,304.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.11,306.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.2,308.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:308.14,310.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.2,312.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:316.56,318.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.89,320.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,321.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.52,326.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:326.32,328.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.28,330.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.3,331.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.34,333.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.3,334.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.42,336.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.3,337.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.2,342.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.27,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.2,345.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.36,347.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:348.2,351.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.49,353.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:353.24,355.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.2,359.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.25,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.2,362.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.33,364.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:365.2,366.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.67,372.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.35,374.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.2,376.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:376.31,378.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,379.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.69,383.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.32,385.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,386.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:389.45,391.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.22,395.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.12,397.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.3,400.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.32,402.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.3,404.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.46,406.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.3,410.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.12,412.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:413.3,414.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.49,416.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.3,418.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.2,420.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.67,426.28 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:426.28,428.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,429.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.12,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.43,438.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.3,440.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.34,442.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.3,445.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:445.48,447.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,449.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.25,451.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.3,454.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.50,456.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.3,458.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.2,460.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.90,129.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.20,131.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.2,134.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.23,136.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:137.2,138.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:138.22,140.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:141.2,142.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:142.27,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:145.2,151.38 6 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:151.38,154.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:154.8,156.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:157.2,160.35 4 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:160.35,162.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.2,163.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.35,165.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.2,167.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.46,169.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:169.8,171.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.2,172.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.47,174.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:174.8,176.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:177.2,177.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:177.46,179.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:179.8,181.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.2,182.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.33,184.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:184.8,186.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:189.2,207.24 17 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:207.24,209.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:210.2,210.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:210.25,212.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:213.2,213.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:213.24,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:216.2,216.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:216.29,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:220.2,222.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:222.47,222.72 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:224.47,224.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:233.2,233.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:236.30,237.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:237.6,239.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:239.20,241.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:242.3,242.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:242.17,244.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:245.3,246.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:246.52,248.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:250.3,250.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:250.23,252.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:254.3,255.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:255.15,257.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:15.48,18.6 3 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:18.6,20.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:20.17,22.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:23.3,23.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:23.17,24.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:26.3,27.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:27.22,28.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:30.3,32.14 3 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:33.25,35.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:35.18,37.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:38.4,38.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:41.2,41.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:41.24,43.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:44.2,45.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:45.50,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:48.2,48.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:51.38,53.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:53.16,56.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:57.2,58.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:58.57,61.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:62.2,62.45 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:62.45,65.3 2 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:4.33,6.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:9.34,11.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:14.43,16.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:19.33,21.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:24.29,26.2 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:6.62,7.34 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:7.34,9.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:10.5,11.28 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:11.28,13.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:14.5,14.15 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:18.39,20.16 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:20.16,22.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:23.5,25.69 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:25.69,27.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:28.5,29.57 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:29.57,31.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.5,32.54 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.54,34.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:35.5,37.72 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:37.72,40.6 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:41.5,41.13 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:47.60,49.34 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:49.34,50.105 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:50.105,53.10 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:55.5,55.19 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:59.79,62.53 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:62.53,64.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.5,65.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.47,66.57 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:66.57,71.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.5,73.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.49,74.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:74.58,79.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.5,81.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.47,83.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.5,84.46 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.46,86.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.5,87.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.47,89.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.5,90.24 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.24,90.50 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:91.5,92.33 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:92.33,93.69 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:93.69,93.81 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:95.5,96.36 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:100.79,101.36 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:101.36,102.27 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:102.27,102.37 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.9,103.48 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.48,103.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.9,104.44 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.44,105.31 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:105.31,106.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:106.49,106.59 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:107.17,108.32 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:108.32,108.64 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:112.5,112.29 1 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:14.13,17.18 3 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:17.18,20.3 2 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:22.2,22.104 1 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:22.104,24.3 1 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:11.13,12.94 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:12.94,15.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:142.19,144.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,147.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:147.16,150.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:150.8,151.85 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:151.85,153.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:159.2,159.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:159.50,161.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:162.2,162.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.77 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:282.77,291.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.2,294.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.38,297.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.2,300.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.44,307.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.2,310.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.44,313.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.2,316.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.36,319.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.2,322.82 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.82,325.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.2,328.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.47,331.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.2,334.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.68,341.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.2,344.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.71,351.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.2,354.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.68,361.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.2,365.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.59,366.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:366.67,368.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.3,369.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.66,371.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.3,372.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.66,374.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.3,375.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.65,377.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.3,378.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.64,380.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.3,381.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.65,383.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.2,386.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.53,388.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.2,390.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.59,391.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:391.67,393.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.3,394.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.71,396.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.3,397.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.68,399.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.3,400.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.65,402.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.3,403.69 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.69,405.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.3,406.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.66,408.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.3,409.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.66,411.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.3,412.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.64,414.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.2,417.45 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.45,418.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:418.60,420.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.3,421.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.60,423.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.2,426.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.67,428.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:430.2,430.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:435.16,436.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:436.43,438.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:439.3,439.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:442.2,447.22 5 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:447.22,448.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:448.20,450.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:451.3,451.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:455.2,464.21 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:464.21,465.216 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:465.216,466.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.3,468.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.41,470.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.2,473.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.19,475.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:479.2,481.53 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:481.53,482.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:482.59,483.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:484.15,485.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:486.13,487.35 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:488.17,489.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.2,493.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.50,494.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:494.52,495.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:496.15,497.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:498.13,499.29 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:500.17,501.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:505.2,505.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:508.37,512.2 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:515.39,516.25 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:516.25,518.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:519.2,519.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:519.56,521.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:522.2,522.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:522.34,524.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:525.2,525.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:525.32,527.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:528.2,528.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:528.32,530.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:531.2,531.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:531.36,533.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:534.2,534.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:534.38,536.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:537.2,537.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:537.36,539.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:540.2,540.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:540.36,542.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:543.2,543.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:543.38,545.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:546.2,546.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:546.55,548.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:549.2,549.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:549.56,551.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:552.2,552.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:552.55,554.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:555.2,555.33 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:555.33,557.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:558.2,558.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:558.53,560.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:566.66,568.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.2,569.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.65,571.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.2,572.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.65,574.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.2,575.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.64,577.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.2,578.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.63,580.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.2,581.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.64,583.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.2,585.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.59,587.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.2,589.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.53,591.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.2,593.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.66,595.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.2,596.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.70,598.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.2,599.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.67,601.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.2,602.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.64,604.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.2,605.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.68,607.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.2,608.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.65,610.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.2,611.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.65,613.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.2,614.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.63,616.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.2,618.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.59,620.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.2,621.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.59,623.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:627.47,628.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:628.58,630.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:631.2,631.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:631.56,633.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:634.2,634.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:634.36,636.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:637.2,637.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:637.58,639.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:640.2,640.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:640.56,642.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:643.2,643.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:643.36,645.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:646.2,646.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:646.59,648.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:649.2,649.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:649.57,651.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:652.2,652.37 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:652.37,654.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:657.38,659.72 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:659.72,661.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:661.8,663.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:663.17,665.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:666.3,666.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:668.2,668.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:675.43,680.34 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:680.34,680.76 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:681.2,681.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:681.41,683.14 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:683.14,685.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:686.3,687.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:687.17,688.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:688.21,690.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:691.4,691.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:693.3,693.17 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:695.2,695.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:695.51,697.14 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:697.14,699.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:700.3,701.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:701.17,702.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:702.21,704.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:705.4,705.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:707.3,707.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:710.2,710.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:710.47,713.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:714.2,714.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:714.48,717.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:718.2,718.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:718.57,721.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:722.2,722.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:722.55,725.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:726.2,726.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:726.54,729.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:730.2,730.61 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:730.61,733.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:734.2,734.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:734.59,737.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:738.2,738.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:738.59,741.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:742.2,742.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:742.60,745.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:746.2,746.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:746.54,749.27 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:749.27,750.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:750.42,752.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:754.3,754.13 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:756.2,756.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:756.47,759.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:760.2,760.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:760.48,763.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:764.2,764.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:764.47,767.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:768.2,768.49 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:768.49,771.27 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:771.27,772.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:772.42,774.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:776.3,776.13 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:778.2,778.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:778.44,781.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:784.2,784.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:784.51,787.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:788.2,788.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:788.48,791.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:792.2,792.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:792.60,795.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:797.2,797.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:797.51,800.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:801.2,801.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:801.48,804.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:805.2,805.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:805.60,808.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:810.2,810.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:810.52,813.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:814.2,814.49 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:814.49,817.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:818.2,818.61 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:818.61,821.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:823.2,823.10 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:823.10,825.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:826.2,826.13 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:20.50,22.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:22.16,24.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:25.2,26.15 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:26.15,28.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:29.2,32.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:32.27,34.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:34.26,36.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.2,39.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.18,41.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:43.2,45.28 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:45.28,47.14 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:47.14,49.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:51.3,51.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:53.2,55.60 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:60.54,60.103 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:14.54,14.97 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:17.35,17.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:23.121,27.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:29.128,31.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:31.26,32.33 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:32.33,33.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:35.3,36.23 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:36.23,38.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:40.2,42.69 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:45.109,49.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:51.106,55.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:57.86,60.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:60.19,62.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:63.5,63.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:66.120,69.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:69.19,71.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:72.5,72.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:76.57,78.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:78.37,80.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:81.5,81.16 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:85.79,87.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:89.78,91.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:16.80,20.16 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:20.16,23.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:24.2,25.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:25.16,28.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.2,29.46 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.46,31.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:32.2,33.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:33.16,35.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:36.2,37.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:37.16,39.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:40.2,41.12 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:44.146,45.14 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:46.18,47.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:48.21,50.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:50.37,53.4 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:54.3,56.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:57.25,60.79 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:61.22,64.57 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:65.20,68.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:69.10,70.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:18.36,18.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:19.36,19.53 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:20.36,20.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:28.23,41.2 7 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:43.31,43.45 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:45.57,46.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:47.18,48.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:49.25,50.40 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:52.2,54.15 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:57.62,60.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:61.21,65.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:66.18,67.55 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:67.55,71.10 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:72.22,73.28 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:74.20,75.26 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:76.22,77.25 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:78.16,79.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:79.44,79.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:80.29,82.41 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:82.41,83.91 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:83.91,88.14 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.5,91.19 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.19,92.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:92.44,92.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:94.5,94.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:97.30,98.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:98.12,100.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:101.2,101.22 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:105.35,108.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:108.16,110.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.2,111.29 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.29,112.21 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:112.21,114.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:115.3,115.23 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:117.2,117.56 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:20.61,20.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:21.61,21.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:22.61,22.75 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:23.89,26.38 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:26.38,28.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:29.5,31.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:31.27,33.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:34.5,34.49 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:23.95,28.16 4 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:28.16,31.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.2,34.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:34.17,37.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:38.2,40.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:40.74,43.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:44.2,44.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:49.124,51.16 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:51.16,54.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:55.2,57.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:57.74,60.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:61.2,61.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:65.64,67.82 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:67.82,70.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:71.2,72.9 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:73.40,74.59 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:75.23,76.24 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:77.21,78.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:79.10,80.91 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:88.48,91.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:91.40,93.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:94.2,97.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:101.77,104.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.40,105.58 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:105.58,107.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:109.2,112.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:116.125,119.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:119.40,121.56 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:121.56,124.4 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.18,126.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.3,127.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.8,130.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:130.17,132.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:133.3,134.26 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:136.2,139.12 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:143.59,145.2 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:148.65,150.2 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:29.17,31.4 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:32.3,33.22 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:35.2,37.70 3 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:42.159,49.37 6 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:49.37,51.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:52.2,52.12 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:57.49,59.30 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:59.30,61.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:64.72,65.19 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:65.19,67.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:68.2,82.36 3 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:82.36,84.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:86.2,87.36 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:87.36,89.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.2,90.67 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.67,93.3 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:93.8,96.3 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,144.2 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:67.38,69.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:70.36,74.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:75.2,82.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:85.109,86.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:86.39,88.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:90.2,90.45 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:90.45,92.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:93.2,94.27 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:94.27,96.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:97.2,97.19 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:97.19,99.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:100.2,102.29 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:102.29,104.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:105.2,109.16 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:109.16,112.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:114.2,117.16 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:117.16,120.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:121.2,122.57 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:122.57,124.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:125.2,126.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:126.16,128.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:129.2,129.27 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:129.27,132.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:133.2,135.21 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:139.46,139.66 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:140.46,140.71 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:143.102,146.29 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:146.29,148.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:149.2,149.24 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:149.24,151.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:151.8,151.31 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:151.31,154.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:155.2,155.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:155.21,157.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:158.2,158.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:158.21,160.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:161.2,161.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:164.130,166.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:166.16,168.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:169.2,169.28 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:169.28,171.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:172.2,172.29 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:175.70,176.53 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:176.53,178.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:179.2,181.74 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:181.74,184.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:185.2,186.69 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:189.91,191.64 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:191.64,194.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:195.2,195.17 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:204.66,206.82 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:206.82,208.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:209.2,209.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:209.39,211.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:212.2,213.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:213.16,215.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:216.2,220.16 5 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:220.16,222.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:223.2,224.53 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:224.53,226.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:227.2,228.64 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:228.64,230.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:231.2,231.40 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:231.40,233.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:235.2,236.18 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:236.18,238.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:239.2,241.12 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:246.42,248.20 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:248.20,250.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:251.2,252.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:252.16,253.59 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:253.59,254.48 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:254.48,256.5 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:258.3,258.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:260.2,264.22 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:264.22,266.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:267.2,267.34 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:270.42,270.100 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:274.57,290.2 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:292.58,308.2 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:310.28,313.19 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:313.19,315.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:316.2,316.18 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:322.153,323.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:323.39,325.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:326.2,326.45 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:326.45,328.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:329.2,329.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:329.12,331.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:332.2,354.16 6 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:354.16,356.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:357.2,358.53 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:358.53,360.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:362.2,365.27 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:365.27,366.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:366.39,367.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:369.3,375.88 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:375.88,376.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:378.3,378.34 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:378.34,380.4 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:382.2,383.25 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:383.25,384.60 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:384.60,386.4 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:388.2,388.17 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:44.68,45.38 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:45.38,47.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:48.2,48.36 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:48.36,50.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:51.2,57.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:60.108,62.27 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:62.27,64.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:65.2,65.19 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:65.19,67.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:69.2,73.16 5 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:73.16,75.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:77.2,80.16 4 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:80.16,83.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:84.2,85.56 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:85.56,87.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:89.2,90.64 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:90.64,93.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:94.2,94.50 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:94.50,97.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:98.2,100.21 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:104.45,104.64 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:105.45,105.70 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:108.126,110.27 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:110.27,112.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:113.2,113.19 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:113.19,115.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:117.2,121.16 5 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:121.16,123.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:125.2,128.16 4 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:128.16,131.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:132.2,133.56 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:133.56,135.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:137.2,138.6 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:138.6,140.41 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:140.41,141.30 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:141.30,142.10 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:144.4,145.14 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:147.3,147.40 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:147.40,150.4 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:151.3,151.58 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:151.58,153.4 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:154.3,154.14 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:154.14,155.9 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:158.2,159.12 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:163.76,165.29 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:165.29,167.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:168.2,168.89 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:171.109,174.29 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:174.29,176.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:177.2,178.24 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:178.24,180.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:180.8,180.31 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:180.31,182.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:183.2,183.21 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:183.21,185.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:186.2,186.21 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:186.21,188.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:189.2,189.22 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:189.22,191.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:192.2,192.12 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:195.100,197.16 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:197.16,199.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:200.2,201.29 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:204.69,205.53 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:205.53,207.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:208.2,210.43 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:210.43,213.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:214.2,215.68 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:78.76,79.38 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:79.38,81.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.2,82.36 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.36,84.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:85.2,92.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:95.108,96.20 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:96.20,98.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:99.2,100.27 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:100.27,102.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:103.2,103.19 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:103.19,105.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:106.2,110.16 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:110.16,113.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:114.2,119.16 4 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:119.16,122.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:123.2,124.56 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:124.56,126.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:127.2,128.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:128.16,130.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:131.2,131.27 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:131.27,134.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:135.2,137.21 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:141.45,141.64 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:142.45,142.70 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:146.126,147.20 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:147.20,149.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:150.2,151.27 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:151.27,153.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:154.2,154.19 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:154.19,156.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:157.2,161.16 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:161.16,164.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:165.2,170.16 4 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:170.16,173.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:174.2,175.56 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:175.56,177.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:179.2,179.64 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:179.64,181.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:182.2,183.12 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:187.56,187.104 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:190.76,192.29 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:192.29,194.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:195.2,195.89 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:198.105,201.29 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:201.29,203.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:204.2,204.24 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:204.24,206.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:206.8,206.31 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:206.31,209.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:210.2,210.21 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:210.21,212.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:213.2,213.21 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:213.21,215.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:216.2,216.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:219.127,221.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:221.16,223.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:224.2,225.28 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:225.28,227.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:228.2,228.29 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:231.152,233.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:233.16,235.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:236.2,238.28 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:238.28,240.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:241.2,241.29 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:244.69,245.53 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:245.53,247.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:248.2,250.55 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:250.55,253.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:254.2,255.68 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:258.85,260.64 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:260.64,263.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:264.2,264.17 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:267.90,273.21 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:273.21,275.41 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:275.41,276.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:278.3,279.45 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:279.45,280.9 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:282.3,283.65 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:283.65,284.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:286.3,286.54 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:286.54,289.4 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:290.3,290.36 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:290.36,291.30 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:291.30,293.5 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:296.2,296.38 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:296.38,299.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:300.2,300.12 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:58.47,58.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:58.73,58.92 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:59.47,59.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:59.73,59.94 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:60.47,60.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:60.73,60.92 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:61.45,62.26 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:62.26,62.66 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.13 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:87.13,89.3 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:90.2,90.11 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:91.16,92.44 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:92.44,94.4 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.3,96.35 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.35,99.4 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:100.3,100.97 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:101.16,102.35 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:102.35,105.4 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:106.3,106.83 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:107.17,108.45 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:108.45,110.4 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:111.3,111.36 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:111.36,114.4 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:115.3,115.102 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:116.10,117.55 1 0 +codeberg.org/snonux/hexai/internal/llm/util.go:6.47,6.77 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:12.62,26.39 3 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:26.39,28.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:29.5,30.39 2 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:30.39,32.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:33.5,33.51 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:18.3,20.12 2 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:20.12,22.3 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:23.2,25.29 2 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:25.29,28.3 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:27.26,27.37 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:30.47,31.16 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:31.16,33.3 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:34.2,35.48 2 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:43.32,43.55 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:46.37,47.25 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:47.25,48.32 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:48.32,50.4 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:51.3,51.37 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:53.2,53.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:16.96,18.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:19.17,20.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:21.16,22.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:23.26,24.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:24.14,26.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:27.3,27.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:28.21,29.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:30.10,32.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:36.65,38.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:38.35,41.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:42.2,45.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:45.15,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:48.2,49.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:49.13,51.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:52.2,53.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:56.53,58.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:58.14,61.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:62.2,62.59 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:67.64,68.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:68.20,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:71.2,72.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:72.27,74.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:76.2,77.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:77.21,79.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:80.2,80.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:80.53,82.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:83.2,83.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:15.48,19.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:21.45,25.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:27.33,31.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:33.52,37.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:40.37,43.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:45.96,47.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:47.35,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:50.2,51.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:51.13,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:54.2,54.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:54.25,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:57.2,58.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:58.16,60.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:61.2,61.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:61.26,63.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:64.2,64.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:64.28,66.85 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:66.85,68.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:71.2,71.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:78.71,80.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:80.35,82.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:83.2,84.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:84.13,86.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:87.2,87.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:87.25,89.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:91.2,92.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:92.28,93.44 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:93.44,95.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:98.3,98.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:98.40,99.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:102.2,102.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:102.20,104.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:106.2,106.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:106.35,109.17 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:109.17,110.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:110.15,112.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:114.4,114.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:114.29,116.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:119.2,119.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:122.46,123.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:123.28,124.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:124.29,126.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:128.2,128.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:131.31,133.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:133.18,135.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:136.2,136.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:139.33,141.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:141.49,143.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:144.2,144.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:10.38,11.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:11.41,14.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.2,15.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.22,17.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.34,31.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.105,34.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.5,36.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.53,56.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.5,57.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.47,58.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.57,63.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.5,65.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.49,66.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.58,71.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.5,73.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.47,75.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.5,76.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.46,78.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.5,79.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.47,81.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.5,82.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.24,84.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.5,87.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.33,88.69 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.69,90.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.5,93.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:117.72,120.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:191.151,194.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:194.24,196.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:197.2,199.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:199.24,201.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:202.2,204.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:204.24,207.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:208.2,209.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:209.32,211.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:212.2,213.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:213.14,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:217.2,231.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:234.64,238.9 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:238.9,240.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:242.2,243.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:246.56,249.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:249.24,251.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:252.2,252.44 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:252.44,255.33 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:255.33,260.4 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:261.3,261.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:264.2,265.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:268.51,272.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:272.37,273.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:273.15,275.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:278.2,278.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:278.14,280.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:281.2,281.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:288.74,290.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:290.22,295.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:295.49,297.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:297.9,300.4 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.3,303.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.115,305.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.3,307.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.27,309.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.3,311.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.27,312.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.34,313.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.38,314.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:314.35,316.7 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:318.5,318.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:321.4,321.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.2,327.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:327.36,329.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.2,331.114 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.114,333.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.2,335.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.35,336.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:336.14,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:340.2,340.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:343.137,348.24 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:348.24,350.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:351.2,361.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:436.74,445.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:17.48,19.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:19.55,20.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:20.23,22.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:23.3,23.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:25.2,26.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:26.57,27.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:27.23,29.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:30.3,30.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:32.2,35.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:35.53,37.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:38.2,38.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:38.57,40.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:41.2,41.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:41.54,43.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:44.2,44.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:44.51,46.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:47.2,47.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:47.22,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:52.85,53.85 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:53.85,64.3 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:65.2,65.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:68.89,70.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:70.21,72.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:73.2,82.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:85.70,86.45 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:86.45,88.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:89.2,97.58 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:97.58,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:100.2,100.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.17,108.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:108.72,109.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:109.66,113.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:114.9,116.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.21,120.43 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.43,121.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.24,123.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.10,125.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.3,133.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.72,134.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.66,138.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.9,141.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.18,149.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:149.72,150.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:150.66,154.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:155.9,157.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:158.17,159.92 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:159.92,167.4 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:169.2,169.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:172.55,174.56 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:174.56,175.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:175.23,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:178.3,178.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:180.2,180.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:180.49,183.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:184.2,184.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:190.85,191.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:191.22,193.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:194.2,195.53 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:195.53,197.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:198.2,198.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:198.31,200.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:201.2,202.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:202.36,203.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:203.34,205.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:207.2,207.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:211.37,213.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:213.32,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:216.2,216.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:216.32,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:220.2,220.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:220.29,222.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:224.2,224.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:224.29,226.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:227.2,227.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:230.34,231.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:231.22,233.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:234.2,234.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:237.37,238.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:238.22,240.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:241.2,241.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:246.76,248.80 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:248.80,250.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:252.2,252.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:252.71,254.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:256.2,257.41 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:257.41,259.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:260.2,267.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:271.86,272.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:272.24,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:275.34,277.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:278.2,286.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:289.95,291.76 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:291.76,293.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:295.2,296.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:296.21,298.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:299.2,301.36 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:301.36,303.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:304.2,306.39 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:306.39,308.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:310.2,314.26 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:314.26,320.22 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:320.22,323.4 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:324.3,326.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:326.102,328.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:329.3,336.40 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:336.40,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:339.3,341.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:341.19,343.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:344.3,345.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:348.2,349.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:349.15,351.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:352.2,367.13 13 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:367.13,370.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:371.2,372.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:376.62,377.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:377.39,379.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:380.2,382.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:382.16,384.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:385.2,386.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:389.35,390.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:390.41,392.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:393.2,393.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:397.48,398.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:398.27,400.39 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:400.39,403.45 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:403.45,405.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:406.4,406.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:406.46,408.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:409.4,409.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:409.46,411.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:412.4,412.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:415.2,415.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:419.63,420.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:420.13,422.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:423.2,423.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:423.23,425.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:427.2,428.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:428.28,429.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:429.42,431.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:433.3,433.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:433.38,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:437.2,437.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:437.17,439.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:441.2,443.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:443.38,445.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:445.32,446.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:447.13,449.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:450.13,451.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:451.18,453.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.5,454.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.31,456.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.2,461.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.15,463.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:464.2,464.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.24,476.71 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:476.71,478.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:478.21,480.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:481.9,483.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:486.2,487.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:487.16,489.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:490.2,490.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:494.43,498.39 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:498.39,500.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:501.2,503.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:503.34,505.63 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:505.63,507.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.2,510.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.42,512.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:513.2,513.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:516.37,517.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:517.16,519.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:520.2,521.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:521.32,523.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:524.2,524.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:15.48,18.55 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:18.55,25.19 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:25.19,27.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:28.3,28.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:28.25,32.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:32.10,35.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:38.2,39.73 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:44.67,45.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:45.22,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:48.2,52.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:52.48,54.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:54.8,57.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:58.2,58.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:63.99,66.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:68.98,71.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:73.160,78.52 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:78.52,81.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:82.2,82.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:82.51,84.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:86.2,91.86 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:91.86,96.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:97.2,97.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:97.58,100.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:102.2,102.83 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:102.83,105.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:108.2,108.126 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:108.126,110.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:113.2,116.29 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:116.29,118.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:119.2,121.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:121.32,123.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:125.2,126.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:126.29,128.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:129.2,132.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:132.16,136.3 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:137.2,141.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:141.19,143.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:144.2,145.75 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:149.38,150.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:150.16,152.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:153.2,156.42 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:156.42,158.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:158.8,161.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:162.2,162.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:166.91,168.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.24,170.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.2,171.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.40,172.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:172.35,174.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:175.3,176.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:176.37,177.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:177.18,180.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:183.2,183.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:187.119,191.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.24,193.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:194.2,195.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:195.13,197.68 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:197.68,199.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.2,201.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.19,203.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:205.2,206.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:206.12,208.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:208.28,210.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:212.3,212.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:214.2,216.50 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:216.50,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:219.2,219.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.193,225.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:225.9,227.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.2,237.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:237.32,239.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.2,241.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.24,243.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.2,250.30 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:250.30,252.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.2,254.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:254.40,256.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:256.20,258.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.21,260.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:261.4,261.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:261.54,263.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:263.21,265.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.4,267.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.40,271.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:273.8,273.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:273.23,275.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:276.2,276.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:281.55,283.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:283.12,285.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.2,286.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.6,290.20 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:290.20,292.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:293.3,294.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:294.17,296.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:297.3,299.10 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:300.21,302.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:303.18,303.18 0 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:311.60,313.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:313.19,315.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:316.2,317.6 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:317.6,321.23 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.23,325.11 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.22,328.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:329.19,331.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:335.3,337.14 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.14 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.14,357.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.2,358.68 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.68,360.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.2,363.52 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.52,365.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.37,367.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.3,368.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.2,370.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:374.101,376.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:376.57,377.78 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:377.78,379.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:381.2,381.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:381.19,383.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:384.2,384.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:384.19,386.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:387.2,387.56 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:387.56,388.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:388.57,390.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:392.2,392.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:21.45,23.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:23.55,26.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:29.47,31.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:31.55,32.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:32.32,34.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:35.3,37.44 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:41.46,43.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:43.55,46.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:52.76,54.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.14,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:58.2,59.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.14,61.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.2,62.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.26,64.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:65.2,66.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.13,68.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:69.2,69.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:69.30,71.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:73.2,74.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:74.28,77.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:78.2,83.43 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:83.43,86.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:87.2,87.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.50,96.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:96.24,98.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:99.2,100.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.35,102.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.2,103.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.30,106.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:106.14,107.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:107.39,109.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:111.4,111.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:113.3,113.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:113.12,114.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:117.3,117.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:117.25,118.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:121.3,121.37 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:121.37,122.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.3,125.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.12,126.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.3,130.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.38,131.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:131.19,133.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:136.3,136.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:136.17,137.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:140.3,141.63 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:141.63,143.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.3,144.80 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.80,145.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:148.3,151.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:151.19,152.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:154.3,156.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:156.38,166.18 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:166.18,169.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:170.4,171.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:171.17,173.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:174.4,174.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:177.3,177.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:183.110,185.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:185.14,187.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:189.2,200.54 8 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:205.96,207.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.14,209.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.2,213.31 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.31,214.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:214.53,216.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:217.3,217.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:217.12,218.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.3,220.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.61,221.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,224.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:224.14,226.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.36,229.13 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:231.4,231.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:233.3,233.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:233.53,235.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.3,236.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.12,237.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.3,242.6 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:244.2,245.26 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:245.26,246.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:246.35,248.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:249.3,249.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:249.35,251.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:253.2,254.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:258.45,260.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:260.17,262.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:264.2,264.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:264.50,266.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:266.40,267.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:267.18,269.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:273.2,274.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:275.21,276.48 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:277.10,278.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:283.68,290.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:293.46,300.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:303.61,318.2 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:322.59,323.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:323.12,326.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:8.52,10.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:10.55,13.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:14.2,14.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:15.28,16.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:16.28,20.58 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:20.58,22.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:23.4,23.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:23.17,25.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:27.3,28.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:29.10,32.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:11.48,13.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:13.24,15.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:16.2,27.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:30.38,32.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:34.46,36.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:38.31,41.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:21.55,23.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.32,25.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:26.2,26.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:30.41,35.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:37.41,42.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.32,47.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.23,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.2,51.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.24,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.2,57.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.15,59.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.2,63.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.51,68.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.41,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:71.2,73.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.62,77.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.50,129.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:170.64,172.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:172.22,175.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.74 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.74,182.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.3,186.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:186.12,188.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.3,190.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.48,192.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.18,197.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.3,200.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:202.2,202.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.41,212.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.31,214.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.29,217.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.2,218.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.31,220.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.32,222.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.83,231.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:231.102,233.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.36,235.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.136,237.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.4,240.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.34,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.2,246.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.65,247.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.53,249.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.37,251.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.137,253.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.5,256.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.35,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:262.2,262.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:266.80,267.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.22,269.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:270.2,272.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.40,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.34,276.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.31,277.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.3,280.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.16,281.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.3,283.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.32,285.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.2,287.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:290.36,292.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.39,295.77 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:298.43,300.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.13,302.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.2,304.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.11,306.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.2,308.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:308.14,310.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.2,312.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:316.56,318.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.89,320.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,321.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.52,326.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:326.32,328.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.28,330.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.3,331.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.34,333.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.3,334.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.42,336.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.3,337.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.2,342.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.27,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.2,345.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.36,347.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:348.2,351.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.49,353.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:353.24,355.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.2,359.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.25,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.2,362.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.33,364.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:365.2,366.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.67,372.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.35,374.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.2,376.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:376.31,378.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,379.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.69,383.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.32,385.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,386.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:389.45,391.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.22,395.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.12,397.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.3,400.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.32,402.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.3,404.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.46,406.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.3,410.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.12,412.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:413.3,414.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.49,416.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.3,418.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.2,420.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.67,426.28 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:426.28,428.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,429.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.12,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.43,438.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.3,440.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.34,442.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.3,445.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:445.48,447.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,449.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.25,451.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.3,454.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.50,456.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.3,458.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.2,460.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.90,129.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.20,131.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.2,134.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.23,136.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:137.2,138.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:138.22,140.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:141.2,142.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:142.27,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:145.2,151.38 6 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:151.38,154.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:154.8,156.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:157.2,160.35 4 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:160.35,162.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.2,163.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.35,165.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.2,167.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.46,169.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:169.8,171.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.2,172.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.47,174.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:174.8,176.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:177.2,177.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:177.46,179.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:179.8,181.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.2,182.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.33,184.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:184.8,186.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:189.2,207.24 17 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:207.24,209.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:210.2,210.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:210.25,212.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:213.2,213.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:213.24,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:216.2,216.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:216.29,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:220.2,222.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:222.47,222.72 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:224.47,224.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:233.2,233.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:236.30,237.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:237.6,239.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:239.20,241.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:242.3,242.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:242.17,244.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:245.3,246.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:246.52,248.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:250.3,250.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:250.23,252.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:254.3,255.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:255.15,257.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:15.48,18.6 3 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:18.6,20.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:20.17,22.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:23.3,23.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:23.17,24.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:26.3,27.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:27.22,28.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:30.3,32.14 3 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:33.25,35.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:35.18,37.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:38.4,38.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:41.2,41.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:41.24,43.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:44.2,45.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:45.50,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:48.2,48.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:51.38,53.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:53.16,56.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:57.2,58.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:58.57,61.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:62.2,62.45 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:62.45,65.3 2 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:4.33,6.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:9.34,11.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:14.43,16.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:19.33,21.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:24.29,26.2 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:6.62,7.34 1 3 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:7.34,9.6 1 2 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:10.5,11.28 2 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:11.28,13.6 1 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:14.5,14.15 1 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:18.39,20.16 2 5 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:20.16,22.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:23.5,25.69 3 5 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:25.69,27.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:28.5,29.57 2 5 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:29.57,31.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.5,32.54 1 5 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.54,34.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:35.5,37.72 3 5 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:37.72,40.6 2 3 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:41.5,41.13 1 2 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:47.60,49.34 2 6 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:49.34,50.105 1 6 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:50.105,53.10 2 6 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:55.5,55.19 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:59.79,62.53 3 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:62.53,64.6 1 2 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.5,65.47 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.47,66.57 1 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:66.57,71.10 4 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.5,73.49 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.49,74.58 1 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:74.58,79.10 4 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.5,81.47 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.47,83.6 1 2 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.5,84.46 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.46,86.6 1 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.5,87.47 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.47,89.6 1 2 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.5,90.24 1 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.24,90.50 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:91.5,92.33 2 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:92.33,93.69 1 2 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:93.69,93.81 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:95.5,96.36 2 7 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:100.79,101.36 1 9 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:101.36,102.27 1 58 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:102.27,102.37 1 53 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.9,103.48 1 5 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.48,103.58 1 1 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.9,104.44 1 4 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.44,105.31 1 15 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:105.31,106.49 1 3 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:106.49,106.59 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:107.17,108.32 2 3 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:108.32,108.64 1 3 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:112.5,112.29 1 6 +codeberg.org/snonux/hexai/cmd/hexai/main.go:14.13,17.18 3 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:17.18,20.3 2 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:22.2,22.104 1 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:22.104,24.3 1 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:11.13,12.94 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:12.94,15.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:142.19,144.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,147.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:147.16,150.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:150.8,151.85 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:151.85,153.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:159.2,159.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:159.50,161.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:162.2,162.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.77 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:282.77,291.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.2,294.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.38,297.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.2,300.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.44,307.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.2,310.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.44,313.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.2,316.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.36,319.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.2,322.82 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.82,325.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.2,328.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.47,331.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.2,334.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.68,341.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.2,344.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.71,351.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.2,354.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.68,361.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.2,365.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.59,366.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:366.67,368.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.3,369.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.66,371.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.3,372.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.66,374.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.3,375.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.65,377.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.3,378.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.64,380.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.3,381.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.65,383.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.2,386.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.53,388.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.2,390.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.59,391.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:391.67,393.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.3,394.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.71,396.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.3,397.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.68,399.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.3,400.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.65,402.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.3,403.69 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.69,405.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.3,406.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.66,408.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.3,409.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.66,411.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.3,412.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.64,414.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.2,417.45 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.45,418.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:418.60,420.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.3,421.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.60,423.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.2,426.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.67,428.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:430.2,430.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:435.16,436.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:436.43,438.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:439.3,439.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:442.2,447.22 5 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:447.22,448.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:448.20,450.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:451.3,451.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:455.2,464.21 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:464.21,465.216 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:465.216,466.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.3,468.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.41,470.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.2,473.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.19,475.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:479.2,481.53 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:481.53,482.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:482.59,483.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:484.15,485.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:486.13,487.35 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:488.17,489.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.2,493.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.50,494.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:494.52,495.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:496.15,497.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:498.13,499.29 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:500.17,501.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:505.2,505.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:508.37,512.2 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:515.39,516.25 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:516.25,518.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:519.2,519.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:519.56,521.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:522.2,522.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:522.34,524.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:525.2,525.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:525.32,527.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:528.2,528.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:528.32,530.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:531.2,531.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:531.36,533.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:534.2,534.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:534.38,536.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:537.2,537.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:537.36,539.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:540.2,540.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:540.36,542.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:543.2,543.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:543.38,545.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:546.2,546.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:546.55,548.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:549.2,549.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:549.56,551.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:552.2,552.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:552.55,554.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:555.2,555.33 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:555.33,557.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:558.2,558.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:558.53,560.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:566.66,568.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.2,569.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.65,571.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.2,572.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.65,574.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.2,575.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.64,577.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.2,578.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.63,580.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.2,581.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.64,583.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.2,585.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.59,587.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.2,589.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.53,591.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.2,593.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.66,595.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.2,596.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.70,598.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.2,599.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.67,601.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.2,602.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.64,604.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.2,605.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.68,607.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.2,608.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.65,610.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.2,611.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.65,613.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.2,614.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.63,616.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.2,618.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.59,620.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.2,621.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.59,623.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:627.47,628.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:628.58,630.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:631.2,631.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:631.56,633.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:634.2,634.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:634.36,636.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:637.2,637.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:637.58,639.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:640.2,640.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:640.56,642.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:643.2,643.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:643.36,645.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:646.2,646.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:646.59,648.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:649.2,649.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:649.57,651.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:652.2,652.37 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:652.37,654.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:657.38,659.72 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:659.72,661.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:661.8,663.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:663.17,665.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:666.3,666.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:668.2,668.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:675.43,680.34 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:680.34,680.76 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:681.2,681.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:681.41,683.14 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:683.14,685.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:686.3,687.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:687.17,688.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:688.21,690.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:691.4,691.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:693.3,693.17 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:695.2,695.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:695.51,697.14 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:697.14,699.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:700.3,701.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:701.17,702.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:702.21,704.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:705.4,705.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:707.3,707.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:710.2,710.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:710.47,713.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:714.2,714.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:714.48,717.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:718.2,718.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:718.57,721.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:722.2,722.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:722.55,725.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:726.2,726.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:726.54,729.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:730.2,730.61 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:730.61,733.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:734.2,734.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:734.59,737.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:738.2,738.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:738.59,741.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:742.2,742.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:742.60,745.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:746.2,746.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:746.54,749.27 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:749.27,750.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:750.42,752.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:754.3,754.13 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:756.2,756.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:756.47,759.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:760.2,760.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:760.48,763.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:764.2,764.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:764.47,767.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:768.2,768.49 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:768.49,771.27 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:771.27,772.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:772.42,774.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:776.3,776.13 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:778.2,778.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:778.44,781.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:784.2,784.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:784.51,787.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:788.2,788.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:788.48,791.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:792.2,792.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:792.60,795.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:797.2,797.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:797.51,800.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:801.2,801.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:801.48,804.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:805.2,805.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:805.60,808.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:810.2,810.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:810.52,813.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:814.2,814.49 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:814.49,817.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:818.2,818.61 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:818.61,821.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:823.2,823.10 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:823.10,825.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:826.2,826.13 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:20.50,22.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:22.16,24.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:25.2,26.15 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:26.15,28.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:29.2,32.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:32.27,34.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:34.26,36.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.2,39.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.18,41.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:43.2,45.28 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:45.28,47.14 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:47.14,49.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:51.3,51.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:53.2,55.60 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:60.54,60.103 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:14.54,14.97 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:17.35,17.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:23.121,27.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:29.128,31.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:31.26,32.33 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:32.33,33.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:35.3,36.23 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:36.23,38.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:40.2,42.69 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:45.109,49.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:51.106,55.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:57.86,60.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:60.19,62.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:63.5,63.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:66.120,69.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:69.19,71.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:72.5,72.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:76.57,78.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:78.37,80.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:81.5,81.16 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:85.79,87.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:89.78,91.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:16.80,20.16 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:20.16,23.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:24.2,25.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:25.16,28.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.2,29.46 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.46,31.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:32.2,33.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:33.16,35.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:36.2,37.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:37.16,39.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:40.2,41.12 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:44.146,45.14 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:46.18,47.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:48.21,50.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:50.37,53.4 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:54.3,56.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:57.25,60.79 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:61.22,64.57 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:65.20,68.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:69.10,70.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:18.36,18.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:19.36,19.53 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:20.36,20.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:28.23,41.2 7 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:43.31,43.45 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:45.57,46.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:47.18,48.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:49.25,50.40 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:52.2,54.15 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:57.62,60.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:61.21,65.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:66.18,67.55 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:67.55,71.10 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:72.22,73.28 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:74.20,75.26 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:76.22,77.25 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:78.16,79.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:79.44,79.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:80.29,82.41 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:82.41,83.91 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:83.91,88.14 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.5,91.19 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.19,92.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:92.44,92.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:94.5,94.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:97.30,98.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:98.12,100.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:101.2,101.22 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:105.35,108.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:108.16,110.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.2,111.29 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.29,112.21 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:112.21,114.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:115.3,115.23 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:117.2,117.56 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:20.61,20.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:21.61,21.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:22.61,22.75 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:23.89,26.38 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:26.38,28.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:29.5,31.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:31.27,33.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:34.5,34.49 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:23.95,28.16 4 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:28.16,31.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.2,34.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:34.17,37.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:38.2,40.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:40.74,43.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:44.2,44.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:49.124,51.16 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:51.16,54.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:55.2,57.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:57.74,60.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:61.2,61.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:65.64,67.82 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:67.82,70.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:71.2,72.9 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:73.40,74.59 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:75.23,76.24 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:77.21,78.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:79.10,80.91 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:88.48,91.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:91.40,93.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:94.2,97.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:101.77,104.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.40,105.58 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:105.58,107.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:109.2,112.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:116.125,119.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:119.40,121.56 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:121.56,124.4 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.18,126.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.3,127.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.8,130.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:130.17,132.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:133.3,134.26 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:136.2,139.12 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:143.59,145.2 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:148.65,150.2 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:29.17,31.4 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:32.3,33.22 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:35.2,37.70 3 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:42.159,49.37 6 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:49.37,51.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:52.2,52.12 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:57.49,59.30 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:59.30,61.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:64.72,65.19 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:65.19,67.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:68.2,82.36 3 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:82.36,84.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:86.2,87.36 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:87.36,89.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.2,90.67 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.67,93.3 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:93.8,96.3 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,144.2 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:67.38,69.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:70.36,74.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:75.2,82.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:85.109,86.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:86.39,88.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:90.2,90.45 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:90.45,92.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:93.2,94.27 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:94.27,96.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:97.2,97.19 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:97.19,99.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:100.2,102.29 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:102.29,104.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:105.2,109.16 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:109.16,112.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:114.2,117.16 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:117.16,120.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:121.2,122.57 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:122.57,124.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:125.2,126.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:126.16,128.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:129.2,129.27 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:129.27,132.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:133.2,135.21 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:139.46,139.66 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:140.46,140.71 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:143.102,146.29 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:146.29,148.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:149.2,149.24 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:149.24,151.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:151.8,151.31 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:151.31,154.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:155.2,155.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:155.21,157.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:158.2,158.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:158.21,160.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:161.2,161.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:164.130,166.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:166.16,168.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:169.2,169.28 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:169.28,171.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:172.2,172.29 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:175.70,176.53 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:176.53,178.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:179.2,181.74 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:181.74,184.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:185.2,186.69 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:189.91,191.64 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:191.64,194.3 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:195.2,195.17 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:204.66,206.82 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:206.82,208.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:209.2,209.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:209.39,211.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:212.2,213.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:213.16,215.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:216.2,220.16 5 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:220.16,222.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:223.2,224.53 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:224.53,226.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:227.2,228.64 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:228.64,230.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:231.2,231.40 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:231.40,233.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:235.2,236.18 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:236.18,238.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:239.2,241.12 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:246.42,248.20 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:248.20,250.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:251.2,252.16 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:252.16,253.59 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:253.59,254.48 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:254.48,256.5 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:258.3,258.21 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:260.2,264.22 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:264.22,266.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:267.2,267.34 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:270.42,270.100 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:274.57,290.2 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:292.58,308.2 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:310.28,313.19 3 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:313.19,315.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:316.2,316.18 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:322.153,323.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:323.39,325.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:326.2,326.45 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:326.45,328.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:329.2,329.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:329.12,331.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:332.2,354.16 6 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:354.16,356.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:357.2,358.53 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:358.53,360.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:362.2,365.27 4 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:365.27,366.39 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:366.39,367.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:369.3,375.88 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:375.88,376.12 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:378.3,378.34 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:378.34,380.4 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:382.2,383.25 2 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:383.25,384.60 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:384.60,386.4 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:388.2,388.17 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:44.68,45.38 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:45.38,47.3 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:48.2,48.36 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:48.36,50.3 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:51.2,57.3 1 1 +codeberg.org/snonux/hexai/internal/llm/ollama.go:60.108,62.27 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:62.27,64.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:65.2,65.19 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:65.19,67.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:69.2,73.16 5 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:73.16,75.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:77.2,80.16 4 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:80.16,83.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:84.2,85.56 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:85.56,87.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:89.2,90.64 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:90.64,93.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:94.2,94.50 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:94.50,97.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:98.2,100.21 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:104.45,104.64 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:105.45,105.70 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:108.126,110.27 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:110.27,112.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:113.2,113.19 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:113.19,115.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:117.2,121.16 5 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:121.16,123.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:125.2,128.16 4 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:128.16,131.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:132.2,133.56 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:133.56,135.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:137.2,138.6 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:138.6,140.41 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:140.41,141.30 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:141.30,142.10 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:144.4,145.14 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:147.3,147.40 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:147.40,150.4 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:151.3,151.58 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:151.58,153.4 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:154.3,154.14 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:154.14,155.9 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:158.2,159.12 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:163.76,165.29 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:165.29,167.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:168.2,168.89 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:171.109,174.29 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:174.29,176.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:177.2,178.24 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:178.24,180.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:180.8,180.31 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:180.31,182.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:183.2,183.21 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:183.21,185.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:186.2,186.21 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:186.21,188.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:189.2,189.22 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:189.22,191.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:192.2,192.12 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:195.100,197.16 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:197.16,199.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:200.2,201.29 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:204.69,205.53 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:205.53,207.3 1 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:208.2,210.43 3 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:210.43,213.3 2 0 +codeberg.org/snonux/hexai/internal/llm/ollama.go:214.2,215.68 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:78.76,79.38 1 1 +codeberg.org/snonux/hexai/internal/llm/openai.go:79.38,81.3 1 1 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.2,82.36 1 1 +codeberg.org/snonux/hexai/internal/llm/openai.go:82.36,84.3 1 1 +codeberg.org/snonux/hexai/internal/llm/openai.go:85.2,92.3 1 1 +codeberg.org/snonux/hexai/internal/llm/openai.go:95.108,96.20 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:96.20,98.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:99.2,100.27 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:100.27,102.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:103.2,103.19 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:103.19,105.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:106.2,110.16 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:110.16,113.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:114.2,119.16 4 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:119.16,122.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:123.2,124.56 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:124.56,126.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:127.2,128.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:128.16,130.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:131.2,131.27 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:131.27,134.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:135.2,137.21 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:141.45,141.64 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:142.45,142.70 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:146.126,147.20 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:147.20,149.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:150.2,151.27 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:151.27,153.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:154.2,154.19 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:154.19,156.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:157.2,161.16 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:161.16,164.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:165.2,170.16 4 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:170.16,173.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:174.2,175.56 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:175.56,177.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:179.2,179.64 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:179.64,181.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:182.2,183.12 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:187.56,187.104 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:190.76,192.29 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:192.29,194.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:195.2,195.89 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:198.105,201.29 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:201.29,203.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:204.2,204.24 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:204.24,206.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:206.8,206.31 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:206.31,209.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:210.2,210.21 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:210.21,212.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:213.2,213.21 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:213.21,215.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:216.2,216.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:219.127,221.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:221.16,223.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:224.2,225.28 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:225.28,227.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:228.2,228.29 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:231.152,233.16 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:233.16,235.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:236.2,238.28 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:238.28,240.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:241.2,241.29 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:244.69,245.53 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:245.53,247.3 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:248.2,250.55 3 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:250.55,253.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:254.2,255.68 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:258.85,260.64 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:260.64,263.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:264.2,264.17 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:267.90,273.21 5 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:273.21,275.41 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:275.41,276.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:278.3,279.45 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:279.45,280.9 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:282.3,283.65 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:283.65,284.12 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:286.3,286.54 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:286.54,289.4 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:290.3,290.36 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:290.36,291.30 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:291.30,293.5 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:296.2,296.38 1 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:296.38,299.3 2 0 +codeberg.org/snonux/hexai/internal/llm/openai.go:300.2,300.12 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:58.47,58.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:58.73,58.92 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:59.47,59.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:59.73,59.94 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:60.47,60.73 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:60.73,60.92 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:61.45,62.26 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:62.26,62.66 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.13 2 2 +codeberg.org/snonux/hexai/internal/llm/provider.go:87.13,89.3 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:90.2,90.11 1 2 +codeberg.org/snonux/hexai/internal/llm/provider.go:91.16,92.44 1 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:92.44,94.4 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.3,96.35 1 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:96.35,99.4 2 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:100.3,100.97 1 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:101.16,102.35 1 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:102.35,105.4 2 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:106.3,106.83 1 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:107.17,108.45 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:108.45,110.4 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:111.3,111.36 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:111.36,114.4 2 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:115.3,115.102 1 0 +codeberg.org/snonux/hexai/internal/llm/provider.go:116.10,117.55 1 0 +codeberg.org/snonux/hexai/internal/llm/util.go:6.47,6.77 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:12.62,26.39 3 2 +codeberg.org/snonux/hexai/internal/llmutils/client.go:26.39,28.6 1 1 +codeberg.org/snonux/hexai/internal/llmutils/client.go:29.5,30.39 2 2 +codeberg.org/snonux/hexai/internal/llmutils/client.go:30.39,32.6 1 2 +codeberg.org/snonux/hexai/internal/llmutils/client.go:33.5,33.51 1 2 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 2 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:18.3,20.12 2 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:20.12,22.3 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:23.2,25.29 2 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:25.29,28.3 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:27.26,27.37 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:30.47,31.16 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:31.16,33.3 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:34.2,35.48 2 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:43.32,43.55 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:46.37,47.25 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:47.25,48.32 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:48.32,50.4 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:51.3,51.37 1 0 +codeberg.org/snonux/hexai/internal/logging/logging.go:53.2,53.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:16.96,18.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:19.17,20.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:21.16,22.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:23.26,24.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:24.14,26.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:27.3,27.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:28.21,29.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:30.10,32.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:36.65,38.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:38.35,41.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:42.2,45.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:45.15,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:48.2,49.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:49.13,51.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:52.2,53.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:56.53,58.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:58.14,61.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:62.2,62.59 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:67.64,68.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:68.20,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:71.2,72.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:72.27,74.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:76.2,77.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:77.21,79.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:80.2,80.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:80.53,82.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/context.go:83.2,83.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:15.48,19.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:21.45,25.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:27.33,31.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:33.52,37.2 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:40.37,43.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:45.96,47.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:47.35,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:50.2,51.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:51.13,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:54.2,54.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:54.25,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:57.2,58.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:58.16,60.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:61.2,61.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:61.26,63.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:64.2,64.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:64.28,66.85 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:66.85,68.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:71.2,71.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:78.71,80.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:80.35,82.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:83.2,84.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:84.13,86.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:87.2,87.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:87.25,89.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:91.2,92.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:92.28,93.44 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:93.44,95.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:98.3,98.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:98.40,99.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:102.2,102.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:102.20,104.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:106.2,106.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:106.35,109.17 3 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:109.17,110.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:110.15,112.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:114.4,114.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:114.29,116.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:119.2,119.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:122.46,123.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:123.28,124.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:124.29,126.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:128.2,128.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:131.31,133.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:133.18,135.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:136.2,136.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:139.33,141.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:141.49,143.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/document.go:144.2,144.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:10.38,11.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:11.41,14.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.2,15.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.22,17.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.34,31.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.105,34.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.5,36.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.53,56.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.5,57.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.47,58.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.57,63.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.5,65.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.49,66.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.58,71.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.5,73.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.47,75.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.5,76.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.46,78.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.5,79.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.47,81.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.5,82.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.24,84.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.5,87.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.33,88.69 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.69,90.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.5,93.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:117.72,120.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:191.151,194.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:194.24,196.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:197.2,199.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:199.24,201.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:202.2,204.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:204.24,207.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:208.2,209.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:209.32,211.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:212.2,213.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:213.14,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:217.2,231.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:234.64,238.9 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:238.9,240.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:242.2,243.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:246.56,249.24 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:249.24,251.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:252.2,252.44 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:252.44,255.33 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:255.33,260.4 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:261.3,261.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:264.2,265.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:268.51,272.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:272.37,273.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:273.15,275.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:278.2,278.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:278.14,280.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:281.2,281.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:288.74,290.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:290.22,295.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:295.49,297.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:297.9,300.4 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.3,303.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:303.115,305.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.3,307.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:307.27,309.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.3,311.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:311.27,312.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:312.34,313.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:313.38,314.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:314.35,316.7 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:318.5,318.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:321.4,321.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:326.2,327.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:327.36,329.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.2,331.114 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:331.114,333.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:334.2,335.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:335.35,336.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:336.14,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:340.2,340.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:343.137,348.24 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:348.24,350.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:351.2,361.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:436.74,445.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:17.48,19.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:19.55,20.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:20.23,22.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:23.3,23.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:25.2,26.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:26.57,27.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:27.23,29.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:30.3,30.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:32.2,35.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:35.53,37.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:38.2,38.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:38.57,40.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:41.2,41.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:41.54,43.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:44.2,44.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:44.51,46.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:47.2,47.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:47.22,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:52.85,53.85 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:53.85,64.3 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:65.2,65.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:68.89,70.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:70.21,72.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:73.2,82.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:85.70,86.45 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:86.45,88.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:89.2,97.58 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:97.58,99.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:100.2,100.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.17,108.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:108.72,109.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:109.66,113.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:114.9,116.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.21,120.43 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.43,121.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.24,123.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.10,125.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.3,133.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.72,134.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.66,138.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.9,141.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.18,149.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:149.72,150.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:150.66,154.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:155.9,157.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:158.17,159.92 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:159.92,167.4 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:169.2,169.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:172.55,174.56 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:174.56,175.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:175.23,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:178.3,178.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:180.2,180.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:180.49,183.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:184.2,184.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:190.85,191.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:191.22,193.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:194.2,195.53 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:195.53,197.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:198.2,198.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:198.31,200.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:201.2,202.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:202.36,203.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:203.34,205.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:207.2,207.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:211.37,213.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:213.32,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:216.2,216.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:216.32,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:220.2,220.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:220.29,222.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:224.2,224.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:224.29,226.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:227.2,227.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:230.34,231.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:231.22,233.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:234.2,234.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:237.37,238.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:238.22,240.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:241.2,241.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:246.76,248.80 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:248.80,250.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:252.2,252.71 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:252.71,254.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:256.2,257.41 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:257.41,259.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:260.2,267.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:271.86,272.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:272.24,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:275.34,277.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:278.2,286.12 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:289.95,291.76 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:291.76,293.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:295.2,296.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:296.21,298.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:299.2,301.36 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:301.36,303.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:304.2,306.39 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:306.39,308.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:310.2,314.26 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:314.26,320.22 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:320.22,323.4 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:324.3,326.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:326.102,328.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:329.3,336.40 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:336.40,338.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:339.3,341.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:341.19,343.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:344.3,345.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:348.2,349.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:349.15,351.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:352.2,367.13 13 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:367.13,370.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:371.2,372.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:376.62,377.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:377.39,379.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:380.2,382.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:382.16,384.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:385.2,386.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:389.35,390.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:390.41,392.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:393.2,393.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:397.48,398.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:398.27,400.39 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:400.39,403.45 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:403.45,405.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:406.4,406.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:406.46,408.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:409.4,409.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:409.46,411.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:412.4,412.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:415.2,415.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:419.63,420.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:420.13,422.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:423.2,423.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:423.23,425.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:427.2,428.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:428.28,429.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:429.42,431.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:433.3,433.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:433.38,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:437.2,437.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:437.17,439.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:441.2,443.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:443.38,445.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:445.32,446.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:447.13,449.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:450.13,451.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:451.18,453.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.5,454.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.31,456.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.2,461.15 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.15,463.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:464.2,464.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.24,476.71 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:476.71,478.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:478.21,480.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:481.9,483.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:486.2,487.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:487.16,489.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:490.2,490.115 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:494.43,498.39 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:498.39,500.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:501.2,503.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:503.34,505.63 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:505.63,507.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.2,510.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.42,512.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:513.2,513.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:516.37,517.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:517.16,519.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:520.2,521.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:521.32,523.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:524.2,524.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:15.48,18.55 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:18.55,25.19 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:25.19,27.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:28.3,28.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:28.25,32.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:32.10,35.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:38.2,39.73 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:44.67,45.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:45.22,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:48.2,52.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:52.48,54.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:54.8,57.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:58.2,58.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:63.99,66.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:68.98,71.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:73.160,78.52 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:78.52,81.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:82.2,82.51 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:82.51,84.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:86.2,91.86 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:91.86,96.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:97.2,97.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:97.58,100.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:102.2,102.83 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:102.83,105.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:108.2,108.126 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:108.126,110.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:113.2,116.29 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:116.29,118.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:119.2,121.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:121.32,123.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:125.2,126.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:126.29,128.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:129.2,132.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:132.16,136.3 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:137.2,141.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:141.19,143.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:144.2,145.75 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:149.38,150.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:150.16,152.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:153.2,156.42 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:156.42,158.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:158.8,161.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:162.2,162.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:166.91,168.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:168.24,170.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.2,171.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:171.40,172.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:172.35,174.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:175.3,176.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:176.37,177.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:177.18,180.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:183.2,183.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:187.119,191.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:191.24,193.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:194.2,195.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:195.13,197.68 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:197.68,199.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.2,201.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:201.19,203.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:205.2,206.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:206.12,208.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:208.28,210.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:212.3,212.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:214.2,216.50 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:216.50,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:219.2,219.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.193,225.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:225.9,227.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.2,237.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:237.32,239.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.2,241.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.24,243.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:244.2,250.30 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:250.30,252.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:253.2,254.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:254.40,256.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:256.20,258.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:258.21,260.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:261.4,261.54 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:261.54,263.21 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:263.21,265.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.4,267.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:267.40,271.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:273.8,273.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:273.23,275.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:276.2,276.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:281.55,283.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:283.12,285.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.2,286.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:286.6,290.20 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:290.20,292.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:293.3,294.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:294.17,296.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:297.3,299.10 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:300.21,302.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:303.18,303.18 0 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:311.60,313.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:313.19,315.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:316.2,317.6 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:317.6,321.23 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.23,325.11 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.22,328.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:329.19,331.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:335.3,337.14 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.14 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.14,357.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.2,358.68 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.68,360.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.2,363.52 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.52,365.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.37,367.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.3,368.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.2,370.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:374.101,376.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:376.57,377.78 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:377.78,379.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:381.2,381.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:381.19,383.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:384.2,384.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:384.19,386.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:387.2,387.56 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:387.56,388.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:388.57,390.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:392.2,392.16 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:21.45,23.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:23.55,26.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:29.47,31.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:31.55,32.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:32.32,34.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:35.3,37.44 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:41.46,43.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:43.55,46.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:52.76,54.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:54.14,56.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:58.2,59.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:59.14,61.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.2,62.26 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:62.26,64.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:65.2,66.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:66.13,68.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:69.2,69.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:69.30,71.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:73.2,74.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:74.28,77.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:78.2,83.43 5 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:83.43,86.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:87.2,87.27 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:95.50,96.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:96.24,98.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:99.2,100.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:100.35,102.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.2,103.30 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:103.30,106.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:106.14,107.39 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:107.39,109.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:111.4,111.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:113.3,113.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:113.12,114.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:117.3,117.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:117.25,118.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:121.3,121.37 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:121.37,122.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.3,125.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:125.12,126.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:128.3,130.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:130.38,131.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:131.19,133.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:136.3,136.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:136.17,137.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:140.3,141.63 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:141.63,143.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.3,144.80 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:144.80,145.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:148.3,151.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:151.19,152.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:154.3,156.38 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:156.38,166.18 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:166.18,169.5 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:170.4,171.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:171.17,173.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:174.4,174.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:177.3,177.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:183.110,185.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:185.14,187.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:189.2,200.54 8 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:205.96,207.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:207.14,209.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:210.2,213.31 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:213.31,214.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:214.53,216.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:217.3,217.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:217.12,218.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.3,220.61 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:220.61,221.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:223.3,224.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:224.14,226.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:226.36,229.13 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:231.4,231.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:233.3,233.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:233.53,235.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.3,236.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:236.12,237.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:239.3,242.6 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:244.2,245.26 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:245.26,246.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:246.35,248.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:249.3,249.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:249.35,251.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:253.2,254.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:258.45,260.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:260.17,262.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:264.2,264.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:264.50,266.40 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:266.40,267.18 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:267.18,269.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:273.2,274.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:275.21,276.48 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:277.10,278.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:283.68,290.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:293.46,300.2 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:303.61,318.2 9 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:322.59,323.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_document.go:323.12,326.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:8.52,10.55 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:10.55,13.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:14.2,14.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:15.28,16.28 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:16.28,20.58 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:20.58,22.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:23.4,23.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:23.17,25.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:27.3,28.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_execute.go:29.10,32.9 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:11.48,13.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:13.24,15.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:16.2,27.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:30.38,32.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:34.46,36.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:38.31,41.2 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:21.55,23.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.32,25.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:26.2,26.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:30.41,35.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:37.41,42.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.32,47.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.23,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.2,51.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.24,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.2,57.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.15,59.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.2,63.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.51,68.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.41,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:71.2,73.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.62,77.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.50,129.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:170.64,172.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:172.22,175.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.74 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.74,182.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.3,186.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:186.12,188.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.3,190.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.48,192.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.18,197.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.3,200.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:202.2,202.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.41,212.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.31,214.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.29,217.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.2,218.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.31,220.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.32,222.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.83,231.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:231.102,233.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.36,235.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.136,237.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.4,240.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.34,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.2,246.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.65,247.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.53,249.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.37,251.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.137,253.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.5,256.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.35,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:262.2,262.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:266.80,267.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.22,269.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:270.2,272.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.40,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.34,276.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.31,277.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.3,280.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.16,281.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.3,283.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.32,285.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.2,287.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:290.36,292.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.39,295.77 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:298.43,300.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.13,302.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.2,304.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.11,306.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.2,308.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:308.14,310.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.2,312.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:316.56,318.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.89,320.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,321.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.52,326.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:326.32,328.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.28,330.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.3,331.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.34,333.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.3,334.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.42,336.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.3,337.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.2,342.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.27,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.2,345.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.36,347.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:348.2,351.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.49,353.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:353.24,355.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.2,359.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.25,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.2,362.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.33,364.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:365.2,366.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.67,372.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.35,374.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.2,376.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:376.31,378.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,379.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.69,383.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.32,385.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,386.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:389.45,391.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.22,395.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.12,397.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.3,400.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.32,402.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.3,404.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.46,406.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.3,410.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.12,412.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:413.3,414.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.49,416.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.3,418.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.2,420.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.67,426.28 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:426.28,428.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,429.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.12,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.43,438.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.3,440.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.34,442.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.3,445.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:445.48,447.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,449.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.25,451.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.3,454.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.50,456.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.3,458.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.2,460.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:126.90,129.20 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:129.20,131.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:132.2,134.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:134.23,136.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:137.2,138.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:138.22,140.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:141.2,142.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:142.27,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:145.2,151.38 6 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:151.38,154.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:154.8,156.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:157.2,160.35 4 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:160.35,162.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.2,163.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:163.35,165.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.2,167.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:167.46,169.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:169.8,171.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.2,172.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:172.47,174.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:174.8,176.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:177.2,177.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:177.46,179.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:179.8,181.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.2,182.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.33,184.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:184.8,186.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:189.2,207.24 17 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:207.24,209.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:210.2,210.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:210.25,212.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:213.2,213.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:213.24,215.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:216.2,216.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:216.29,218.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:220.2,222.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:222.47,222.72 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:224.47,224.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:233.2,233.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:236.30,237.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:237.6,239.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:239.20,241.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:242.3,242.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:242.17,244.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:245.3,246.52 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:246.52,248.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:250.3,250.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:250.23,252.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:254.3,255.15 2 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:255.15,257.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:15.48,18.6 3 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:18.6,20.17 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:20.17,22.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:23.3,23.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:23.17,24.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:26.3,27.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:27.22,28.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:30.3,32.14 3 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:33.25,35.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:35.18,37.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:38.4,38.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:41.2,41.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:41.24,43.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:44.2,45.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:45.50,47.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:48.2,48.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:51.38,53.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:53.16,56.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:57.2,58.57 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:58.57,61.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:62.2,62.45 1 0 +codeberg.org/snonux/hexai/internal/lsp/transport.go:62.45,65.3 2 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:4.33,6.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:9.34,11.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:14.43,16.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:19.33,21.2 1 0 +codeberg.org/snonux/hexai/internal/testutil/fixtures.go:24.29,26.2 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:6.62,7.34 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:7.34,9.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:10.5,11.28 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:11.28,13.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:14.5,14.15 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:18.39,20.16 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:20.16,22.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:23.5,25.69 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:25.69,27.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:28.5,29.57 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:29.57,31.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.5,32.54 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.54,34.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:35.5,37.72 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:37.72,40.6 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:41.5,41.13 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:47.60,49.34 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:49.34,50.105 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:50.105,53.10 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:55.5,55.19 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:59.79,62.53 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:62.53,64.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.5,65.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.47,66.57 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:66.57,71.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.5,73.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.49,74.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:74.58,79.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.5,81.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.47,83.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.5,84.46 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.46,86.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.5,87.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.47,89.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.5,90.24 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.24,90.50 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:91.5,92.33 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:92.33,93.69 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:93.69,93.81 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:95.5,96.36 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:100.79,101.36 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:101.36,102.27 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:102.27,102.37 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.9,103.48 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.48,103.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.9,104.44 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.44,105.31 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:105.31,106.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:106.49,106.59 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:107.17,108.32 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:108.32,108.64 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:112.5,112.29 1 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:14.13,17.18 3 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:17.18,20.3 2 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:22.2,22.104 1 0 +codeberg.org/snonux/hexai/cmd/hexai/main.go:22.104,24.3 1 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 +codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:11.13,12.94 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:12.94,15.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:142.19,144.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:146.2,147.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:147.16,150.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:150.8,151.85 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:151.85,153.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:159.2,159.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:159.50,161.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:162.2,162.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.77 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:282.77,291.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.2,294.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.38,297.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.2,300.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.44,307.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.2,310.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.44,313.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.2,316.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.36,319.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.2,322.82 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.82,325.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.2,328.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.47,331.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.2,334.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.68,341.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.2,344.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.71,351.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.2,354.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.68,361.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.2,365.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.59,366.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:366.67,368.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.3,369.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.66,371.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.3,372.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.66,374.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.3,375.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.65,377.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.3,378.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.64,380.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.3,381.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.65,383.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.2,386.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.53,388.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.2,390.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.59,391.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:391.67,393.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.3,394.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.71,396.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.3,397.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.68,399.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.3,400.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.65,402.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.3,403.69 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.69,405.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.3,406.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.66,408.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.3,409.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.66,411.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.3,412.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.64,414.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.2,417.45 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.45,418.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:418.60,420.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.3,421.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.60,423.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.2,426.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.67,428.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:430.2,430.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:435.16,436.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:436.43,438.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:439.3,439.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:442.2,447.22 5 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:447.22,448.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:448.20,450.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:451.3,451.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:455.2,464.21 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:464.21,465.216 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:465.216,466.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.3,468.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.41,470.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.2,473.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.19,475.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:479.2,481.53 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:481.53,482.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:482.59,483.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:484.15,485.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:486.13,487.35 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:488.17,489.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.2,493.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.50,494.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:494.52,495.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:496.15,497.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:498.13,499.29 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:500.17,501.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:505.2,505.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:508.37,512.2 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:515.39,516.25 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:516.25,518.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:519.2,519.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:519.56,521.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:522.2,522.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:522.34,524.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:525.2,525.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:525.32,527.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:528.2,528.32 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:528.32,530.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:531.2,531.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:531.36,533.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:534.2,534.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:534.38,536.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:537.2,537.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:537.36,539.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:540.2,540.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:540.36,542.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:543.2,543.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:543.38,545.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:546.2,546.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:546.55,548.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:549.2,549.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:549.56,551.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:552.2,552.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:552.55,554.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:555.2,555.33 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:555.33,557.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:558.2,558.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:558.53,560.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:566.66,568.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.2,569.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.65,571.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.2,572.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.65,574.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.2,575.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.64,577.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.2,578.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.63,580.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.2,581.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.64,583.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.2,585.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.59,587.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.2,589.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.53,591.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.2,593.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.66,595.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.2,596.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.70,598.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.2,599.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.67,601.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.2,602.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.64,604.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.2,605.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.68,607.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.2,608.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.65,610.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.2,611.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.65,613.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.2,614.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.63,616.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.2,618.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.59,620.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.2,621.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.59,623.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:627.47,628.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:628.58,630.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:631.2,631.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:631.56,633.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:634.2,634.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:634.36,636.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:637.2,637.58 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:637.58,639.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:640.2,640.56 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:640.56,642.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:643.2,643.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:643.36,645.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:646.2,646.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:646.59,648.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:649.2,649.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:649.57,651.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:652.2,652.37 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:652.37,654.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:657.38,659.72 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:659.72,661.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:661.8,663.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:663.17,665.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:666.3,666.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:668.2,668.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:675.43,680.34 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:680.34,680.76 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:681.2,681.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:681.41,683.14 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:683.14,685.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:686.3,687.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:687.17,688.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:688.21,690.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:691.4,691.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:693.3,693.17 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:695.2,695.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:695.51,697.14 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:697.14,699.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:700.3,701.17 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:701.17,702.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:702.21,704.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:705.4,705.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:707.3,707.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:710.2,710.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:710.47,713.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:714.2,714.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:714.48,717.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:718.2,718.57 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:718.57,721.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:722.2,722.55 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:722.55,725.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:726.2,726.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:726.54,729.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:730.2,730.61 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:730.61,733.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:734.2,734.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:734.59,737.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:738.2,738.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:738.59,741.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:742.2,742.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:742.60,745.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:746.2,746.54 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:746.54,749.27 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:749.27,750.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:750.42,752.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:754.3,754.13 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:756.2,756.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:756.47,759.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:760.2,760.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:760.48,763.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:764.2,764.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:764.47,767.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:768.2,768.49 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:768.49,771.27 3 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:771.27,772.42 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:772.42,774.5 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:776.3,776.13 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:778.2,778.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:778.44,781.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:784.2,784.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:784.51,787.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:788.2,788.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:788.48,791.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:792.2,792.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:792.60,795.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:797.2,797.51 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:797.51,800.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:801.2,801.48 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:801.48,804.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:805.2,805.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:805.60,808.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:810.2,810.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:810.52,813.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:814.2,814.49 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:814.49,817.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:818.2,818.61 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:818.61,821.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:823.2,823.10 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:823.10,825.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:826.2,826.13 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:20.50,22.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:22.16,24.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:25.2,26.15 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:26.15,28.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:29.2,32.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:32.27,34.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:34.26,36.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.2,39.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.18,41.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:43.2,45.28 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:45.28,47.14 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:47.14,49.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:51.3,51.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:53.2,55.60 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:60.54,60.103 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:14.54,14.97 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:17.35,17.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:23.121,27.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:29.128,31.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:31.26,32.33 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:32.33,33.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:35.3,36.23 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:36.23,38.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:40.2,42.69 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:45.109,49.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:51.106,55.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:57.86,60.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:60.19,62.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:63.5,63.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:66.120,69.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:69.19,71.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:72.5,72.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:76.57,78.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:78.37,80.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:81.5,81.16 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:85.79,87.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:89.78,91.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:16.80,20.16 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:20.16,23.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:24.2,25.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:25.16,28.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.2,29.46 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.46,31.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:32.2,33.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:33.16,35.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:36.2,37.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:37.16,39.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:40.2,41.12 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:44.146,45.14 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:46.18,47.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:48.21,50.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:50.37,53.4 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:54.3,56.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:57.25,60.79 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:61.22,64.57 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:65.20,68.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:69.10,70.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:18.36,18.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:19.36,19.53 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:20.36,20.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:28.23,41.2 7 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:43.31,43.45 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:45.57,46.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:47.18,48.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:49.25,50.40 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:52.2,54.15 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:57.62,60.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:61.21,65.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:66.18,67.55 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:67.55,71.10 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:72.22,73.28 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:74.20,75.26 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:76.22,77.25 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:78.16,79.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:79.44,79.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:80.29,82.41 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:82.41,83.91 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:83.91,88.14 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.5,91.19 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.19,92.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:92.44,92.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:94.5,94.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:97.30,98.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:98.12,100.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:101.2,101.22 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:105.35,108.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:108.16,110.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.2,111.29 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.29,112.21 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:112.21,114.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:115.3,115.23 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:117.2,117.56 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:20.61,20.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:21.61,21.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:22.61,22.75 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:23.89,26.38 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:26.38,28.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:29.5,31.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:31.27,33.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:34.5,34.49 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:23.95,28.16 4 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:28.16,31.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.2,34.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:34.17,37.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:38.2,40.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:40.74,43.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:44.2,44.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:49.124,51.16 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:51.16,54.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:55.2,57.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:57.74,60.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:61.2,61.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:65.64,67.82 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:67.82,70.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:71.2,72.9 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:73.40,74.59 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:75.23,76.24 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:77.21,78.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:79.10,80.91 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:88.48,91.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:91.40,93.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:94.2,97.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:101.77,104.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.40,105.58 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:105.58,107.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:109.2,112.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:116.125,119.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:119.40,121.56 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:121.56,124.4 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.18,126.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.3,127.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.8,130.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:130.17,132.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:133.3,134.26 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:136.2,139.12 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:143.59,145.2 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:148.65,150.2 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:29.17,31.4 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:32.3,33.22 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:35.2,37.70 3 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:42.159,49.37 6 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:49.37,51.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:52.2,52.12 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:57.49,59.30 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:59.30,61.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:64.72,65.19 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:65.19,67.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:68.2,82.36 3 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:82.36,84.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:86.2,87.36 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:87.36,89.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.2,90.67 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:90.67,93.3 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:93.8,96.3 2 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:99.57,100.20 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:100.20,102.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.2,103.97 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:103.97,105.3 1 0 +codeberg.org/snonux/hexai/internal/hexailsp/run.go:108.97,144.2 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:66.77,67.38 1 9 +codeberg.org/snonux/hexai/internal/llm/copilot.go:67.38,69.3 1 1 +codeberg.org/snonux/hexai/internal/llm/copilot.go:70.2,70.36 1 9 +codeberg.org/snonux/hexai/internal/llm/copilot.go:70.36,74.3 1 0 +codeberg.org/snonux/hexai/internal/llm/copilot.go:75.2,82.3 1 9 codeberg.org/snonux/hexai/internal/llm/copilot.go:85.109,86.39 1 5 codeberg.org/snonux/hexai/internal/llm/copilot.go:86.39,88.3 1 0 codeberg.org/snonux/hexai/internal/llm/copilot.go:90.2,90.45 1 5 @@ -6513,9 +15254,9 @@ codeberg.org/snonux/hexai/internal/llm/provider.go:60.47,60.73 1 1 codeberg.org/snonux/hexai/internal/llm/provider.go:60.73,60.92 1 1 codeberg.org/snonux/hexai/internal/llm/provider.go:61.45,62.26 1 1 codeberg.org/snonux/hexai/internal/llm/provider.go:62.26,62.66 1 1 -codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.13 2 5 +codeberg.org/snonux/hexai/internal/llm/provider.go:85.84,87.13 2 6 codeberg.org/snonux/hexai/internal/llm/provider.go:87.13,89.3 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:90.2,90.11 1 5 +codeberg.org/snonux/hexai/internal/llm/provider.go:90.2,90.11 1 6 codeberg.org/snonux/hexai/internal/llm/provider.go:91.16,92.44 1 2 codeberg.org/snonux/hexai/internal/llm/provider.go:92.44,94.4 1 1 codeberg.org/snonux/hexai/internal/llm/provider.go:96.3,96.35 1 1 @@ -6524,14 +15265,19 @@ codeberg.org/snonux/hexai/internal/llm/provider.go:100.3,100.97 1 1 codeberg.org/snonux/hexai/internal/llm/provider.go:101.16,102.35 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:102.35,105.4 2 0 codeberg.org/snonux/hexai/internal/llm/provider.go:106.3,106.83 1 0 -codeberg.org/snonux/hexai/internal/llm/provider.go:107.17,108.45 1 2 +codeberg.org/snonux/hexai/internal/llm/provider.go:107.17,108.45 1 3 codeberg.org/snonux/hexai/internal/llm/provider.go:108.45,110.4 1 1 -codeberg.org/snonux/hexai/internal/llm/provider.go:111.3,111.36 1 1 -codeberg.org/snonux/hexai/internal/llm/provider.go:111.36,114.4 2 1 -codeberg.org/snonux/hexai/internal/llm/provider.go:115.3,115.102 1 1 +codeberg.org/snonux/hexai/internal/llm/provider.go:111.3,111.36 1 2 +codeberg.org/snonux/hexai/internal/llm/provider.go:111.36,114.4 2 2 +codeberg.org/snonux/hexai/internal/llm/provider.go:115.3,115.102 1 2 codeberg.org/snonux/hexai/internal/llm/provider.go:116.10,117.55 1 1 codeberg.org/snonux/hexai/internal/llm/util.go:6.47,6.77 1 2 -codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 29 +codeberg.org/snonux/hexai/internal/llmutils/client.go:12.62,26.39 3 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:26.39,28.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:29.5,30.39 2 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:30.39,32.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:33.5,33.51 1 0 +codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 30 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:18.3,20.12 2 23 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:20.12,22.3 1 7 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:23.2,25.29 2 23 @@ -6626,30 +15372,30 @@ codeberg.org/snonux/hexai/internal/lsp/handlers.go:10.38,11.41 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:11.41,14.3 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.2,15.22 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.22,17.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.31,31.99 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.99,34.4 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.2,36.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.50 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.50,56.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.2,57.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.44,58.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.51,63.4 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.2,65.46 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.46,66.52 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.52,71.4 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.2,73.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.44,75.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.2,76.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.43,78.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.2,79.44 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.44,81.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.2,82.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.21,84.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.2,87.30 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.30,88.63 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.63,90.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.2,93.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.34 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.34,31.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.105,34.10 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.5,36.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.53 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.53,56.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.5,57.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.47,58.57 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.57,63.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.5,65.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.49,66.58 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.58,71.10 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.5,73.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.47,75.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.5,76.46 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.46,78.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.5,79.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.47,81.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.5,82.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.24,84.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.5,87.33 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.33,88.69 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.69,90.10 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.5,93.36 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:117.72,120.2 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:191.151,194.24 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers.go:194.24,196.3 1 0 @@ -6734,19 +15480,19 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:86.45,88.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:89.2,97.58 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:97.58,99.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:100.2,100.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.20,108.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.17,108.72 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:108.72,109.66 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:109.66,113.5 3 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:114.9,116.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.24,120.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.49,121.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.33,123.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.19,125.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.9,133.78 7 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.78,134.75 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.75,138.14 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.15,141.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.21,149.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.21,120.43 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.43,121.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.24,123.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.10,125.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.3,133.72 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.72,134.66 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.66,138.5 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.9,141.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.18,149.72 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:149.72,150.66 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:150.66,154.5 3 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:155.9,157.4 1 0 @@ -6860,8 +15606,8 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.31,456.6 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.2,461.15 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.15,463.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:464.2,464.18 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.27 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.27,476.71 7 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.24,476.71 7 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:476.71,478.21 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:478.21,480.5 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:481.9,483.4 1 0 @@ -6950,7 +15696,7 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:216.50,218.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:219.2,219.23 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.193,225.9 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:225.9,227.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.5,237.32 6 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.2,237.32 6 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:237.32,239.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.2,241.24 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.24,243.3 1 0 @@ -6986,15 +15732,15 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.23,325.11 4 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.22,328.17 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:329.19,331.13 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:335.3,337.14 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.17 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.17,357.6 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.5,358.71 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.71,360.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.5,363.55 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.55,365.43 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.43,367.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.9,368.79 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.5,370.20 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.14 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.14,357.3 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.2,358.68 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.68,360.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.2,363.52 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.52,365.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.37,367.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.3,368.73 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.2,370.17 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:374.101,376.57 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:376.57,377.78 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:377.78,379.4 1 0 @@ -7121,190 +15867,176 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:16.2,27.27 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:30.38,32.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:34.46,36.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:38.31,41.2 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:20.55,22.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:22.32,24.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:25.2,25.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:29.41,34.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:36.41,41.2 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:43.32,46.23 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:46.23,48.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:49.2,50.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.24,52.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:53.2,56.15 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:56.15,58.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:59.2,62.211 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:66.51,67.41 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.41,69.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:70.2,72.71 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:76.62,77.16 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.16,79.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.5,81.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:81.28,84.6 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:85.5,85.15 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:88.118,89.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.14,92.16 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.16,95.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:95.35,97.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:98.4,98.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:98.36,100.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:101.4,103.59 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:103.59,105.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.4,106.21 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:109.2,112.19 4 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.51,116.23 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.23,118.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:119.2,119.13 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:119.13,121.100 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.100,123.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:125.3,125.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.2,127.11 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.32,132.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.44,136.50 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.50,138.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:139.2,139.35 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.40,144.20 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:144.20,145.40 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.40,147.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.3,149.8 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:151.2,151.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:151.12,153.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.2,154.17 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.52,158.38 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:158.38,160.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:161.2,162.27 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.27,163.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:163.34,164.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:166.3,166.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:166.36,167.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:169.3,169.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:171.2,171.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:179.64,181.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:181.22,184.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:184.12,186.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:187.3,189.74 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.74,191.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.12,197.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:198.3,199.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.48,201.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:203.3,204.18 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:204.18,206.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.3,209.29 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:211.2,211.24 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.41,221.31 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:221.31,223.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.29 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.29,226.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:227.2,227.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:227.31,229.32 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:229.32,231.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.2,233.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:237.83,240.102 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.102,242.36 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:242.36,244.136 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:244.136,246.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.4,249.34 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.34,251.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:255.2,255.65 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:255.65,256.53 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.53,258.37 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:258.37,260.137 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:260.137,262.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:263.5,265.35 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:265.35,267.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:271.2,271.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.80,276.22 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.22,278.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.2,281.40 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:281.40,283.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.2,284.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.34,285.31 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:285.31,286.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.3,289.16 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:289.16,290.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.3,292.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.32,294.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:296.2,296.19 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:299.36,301.2 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.39,306.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.13,308.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:309.2,311.66 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.66,313.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.2,315.54 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:315.54,317.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.2,318.51 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.51,320.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,323.69 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:323.69,326.3 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:327.2,327.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.43,333.13 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:333.13,335.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:336.2,337.11 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.11,339.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:340.2,341.14 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:341.14,343.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:344.2,345.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:349.56,351.89 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.89,353.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:354.2,354.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.52,359.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.32,361.28 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:361.28,363.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:364.3,364.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:364.34,366.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:367.3,367.42 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:367.42,369.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.3,370.49 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.2,375.27 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.27,377.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:378.2,378.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:378.36,380.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:381.2,384.49 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:384.49,386.24 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.24,388.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.2,392.25 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:392.25,394.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.2,395.33 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.33,397.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.2,399.19 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.67,405.35 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:405.35,407.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:408.2,409.31 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.31,411.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.2,412.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:415.69,416.32 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:416.32,418.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:419.2,419.47 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:422.45,424.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:424.22,428.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,430.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.32 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.32,435.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,437.46 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:437.46,439.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:442.3,443.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:443.12,445.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:446.3,447.49 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:447.49,449.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:451.3,451.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.2,453.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:456.67,459.28 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:459.28,461.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:461.12,462.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:464.3,466.12 3 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:466.12,467.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.3,469.43 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.43,471.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.3,473.34 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.34,475.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:477.3,478.48 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.48,480.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.3,482.25 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.25,484.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:486.3,487.50 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:487.50,489.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:490.3,491.22 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:493.2,493.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:21.55,23.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.32,25.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:26.2,26.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:30.41,35.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:37.41,42.2 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.32,47.23 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.23,49.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.2,51.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.24,53.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.2,57.15 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.15,59.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.2,63.211 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.51,68.41 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.41,70.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:71.2,73.71 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.62,77.105 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.50 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.50,129.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.35 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:170.64,172.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:172.22,175.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.74 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.74,182.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.3,186.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:186.12,188.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.3,190.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.48,192.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.18 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.18,197.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.3,200.29 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:202.2,202.24 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.41,212.31 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.31,214.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.29 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.29,217.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.2,218.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.31,220.32 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.32,222.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.83,231.102 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:231.102,233.36 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.36,235.136 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.136,237.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.4,240.34 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.34,242.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.2,246.65 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.65,247.53 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.53,249.37 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.37,251.137 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.137,253.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.5,256.35 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.35,258.6 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:262.2,262.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:266.80,267.22 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.22,269.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:270.2,272.40 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.40,274.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,275.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.34,276.31 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.31,277.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.3,280.16 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.16,281.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.3,283.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.32,285.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.2,287.19 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:290.36,292.2 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.39,295.77 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:298.43,300.13 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.13,302.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.2,304.11 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.11,306.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.2,308.14 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:308.14,310.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.2,312.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:316.56,318.89 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.89,320.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,321.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.52,326.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:326.32,328.28 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.28,330.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.3,331.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.34,333.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.3,334.42 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.42,336.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.3,337.49 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.2,342.27 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.27,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.2,345.36 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.36,347.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:348.2,351.49 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.49,353.24 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:353.24,355.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.2,359.25 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.25,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.2,362.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.33,364.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:365.2,366.19 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.67,372.35 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.35,374.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.2,376.31 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:376.31,378.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,379.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.69,383.32 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.32,385.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,386.47 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:389.45,391.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.22,395.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.12,397.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.3,400.32 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.32,402.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.3,404.46 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.46,406.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.3,410.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.12,412.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:413.3,414.49 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.49,416.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.3,418.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.2,420.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.67,426.28 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:426.28,428.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,429.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.12 3 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.12,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.43 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.43,438.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.3,440.34 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.34,442.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.3,445.48 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:445.48,447.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,449.25 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.25,451.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.3,454.50 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.50,456.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.3,458.22 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.2,460.14 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:126.90,129.20 3 0 codeberg.org/snonux/hexai/internal/lsp/server.go:129.20,131.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:132.2,134.23 3 0 @@ -7329,10 +16061,10 @@ codeberg.org/snonux/hexai/internal/lsp/server.go:174.8,176.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:177.2,177.46 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:177.46,179.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:179.8,181.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:182.5,182.36 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:182.36,184.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:184.11,186.6 1 0 -codeberg.org/snonux/hexai/internal/lsp/server.go:189.5,207.24 17 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.2,182.33 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.33,184.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:184.8,186.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/server.go:189.2,207.24 17 0 codeberg.org/snonux/hexai/internal/lsp/server.go:207.24,209.3 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:210.2,210.25 1 0 codeberg.org/snonux/hexai/internal/lsp/server.go:210.25,212.3 1 0 @@ -7382,11 +16114,58 @@ codeberg.org/snonux/hexai/internal/testutil/fixtures.go:9.34,11.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:14.43,16.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:19.33,21.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:24.29,26.2 1 0 -codeberg.org/snonux/hexai/internal/testutil/fixtures.go:4.33,6.2 1 0 -codeberg.org/snonux/hexai/internal/testutil/fixtures.go:9.34,11.2 1 0 -codeberg.org/snonux/hexai/internal/testutil/fixtures.go:14.43,16.2 1 0 -codeberg.org/snonux/hexai/internal/testutil/fixtures.go:19.33,21.2 1 0 -codeberg.org/snonux/hexai/internal/testutil/fixtures.go:24.29,26.2 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:6.62,7.34 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:7.34,9.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:10.5,11.28 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:11.28,13.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:14.5,14.15 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:18.39,20.16 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:20.16,22.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:23.5,25.69 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:25.69,27.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:28.5,29.57 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:29.57,31.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.5,32.54 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.54,34.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:35.5,37.72 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:37.72,40.6 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:41.5,41.13 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:47.60,49.34 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:49.34,50.105 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:50.105,53.10 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:55.5,55.19 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:59.79,62.53 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:62.53,64.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.5,65.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.47,66.57 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:66.57,71.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.5,73.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.49,74.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:74.58,79.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.5,81.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.47,83.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.5,84.46 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.46,86.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.5,87.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.47,89.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.5,90.24 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.24,90.50 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:91.5,92.33 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:92.33,93.69 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:93.69,93.81 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:95.5,96.36 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:100.79,101.36 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:101.36,102.27 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:102.27,102.37 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.9,103.48 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.48,103.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.9,104.44 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.44,105.31 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:105.31,106.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:106.49,106.59 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:107.17,108.32 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:108.32,108.64 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:112.5,112.29 1 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:14.13,17.18 3 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai/main.go:22.2,22.104 1 0 @@ -7395,6 +16174,8 @@ codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:13.13,17.18 4 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:17.18,20.3 2 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.2,22.79 1 0 codeberg.org/snonux/hexai/cmd/hexai-lsp/main.go:22.79,24.3 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:11.13,12.94 1 0 +codeberg.org/snonux/hexai/cmd/internal/hexai-action/main.go:12.94,15.3 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:89.29,136.2 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:140.35,142.19 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:142.19,144.3 1 0 @@ -7405,94 +16186,94 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:151.85,153.4 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:159.2,159.50 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:159.50,161.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:162.2,162.12 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.80 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:282.80,291.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:294.5,294.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:294.41,297.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:300.5,300.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:300.47,307.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:310.5,310.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:310.47,313.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:316.5,316.39 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:316.39,319.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:322.5,322.85 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:322.85,325.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:328.5,328.50 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:328.50,331.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:334.5,334.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:334.71,341.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:344.5,344.74 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:344.74,351.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:354.5,354.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:354.71,361.6 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:365.5,365.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:365.62,366.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:366.73,368.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:369.9,369.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:369.72,371.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:372.9,372.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:372.72,374.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:375.9,375.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:375.71,377.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:378.9,378.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:378.70,380.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.9,381.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:381.71,383.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:386.5,386.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:386.56,388.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:390.5,390.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:390.62,391.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:391.73,393.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:394.9,394.77 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:394.77,396.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.9,397.74 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:397.74,399.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:400.9,400.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:400.71,402.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.9,403.75 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:403.75,405.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:406.9,406.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:406.72,408.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.9,409.72 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:409.72,411.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:412.9,412.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:412.70,414.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:417.5,417.48 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:417.48,418.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:418.66,420.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.9,421.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:421.66,423.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:426.5,426.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:426.70,428.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:430.5,430.15 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.19 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:435.19,436.49 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:436.49,438.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:439.9,439.24 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:442.5,447.25 5 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:447.25,448.26 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:448.26,450.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:451.9,451.30 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:455.5,464.24 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:464.24,465.222 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:465.222,466.21 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.9,468.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:468.47,470.10 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.5,473.22 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:473.22,475.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:479.5,481.56 2 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:481.56,482.65 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:482.65,483.35 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:484.24,485.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:486.22,487.47 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:488.26,489.52 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:493.5,493.53 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:493.53,494.58 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:494.58,495.35 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:496.24,497.46 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:498.22,499.41 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:500.26,501.46 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:505.5,505.21 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:278.35,282.77 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:282.77,291.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.2,294.38 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:294.38,297.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.2,300.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:300.44,307.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.2,310.44 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:310.44,313.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.2,316.36 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:316.36,319.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.2,322.82 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:322.82,325.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.2,328.47 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:328.47,331.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.2,334.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:334.68,341.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.2,344.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:344.71,351.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.2,354.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:354.68,361.3 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.2,365.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:365.59,366.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:366.67,368.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.3,369.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:369.66,371.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.3,372.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:372.66,374.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.3,375.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:375.65,377.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.3,378.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:378.64,380.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.3,381.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:381.65,383.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.2,386.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:386.53,388.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.2,390.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:390.59,391.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:391.67,393.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.3,394.71 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:394.71,396.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.3,397.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:397.68,399.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.3,400.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:400.65,402.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.3,403.69 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:403.69,405.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.3,406.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:406.66,408.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.3,409.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:409.66,411.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.3,412.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:412.64,414.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.2,417.45 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:417.45,418.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:418.60,420.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.3,421.60 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:421.60,423.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.2,426.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:426.67,428.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:430.2,430.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:433.66,435.16 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:435.16,436.43 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:436.43,438.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:439.3,439.18 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:442.2,447.22 5 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:447.22,448.20 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:448.20,450.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:451.3,451.24 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:455.2,464.21 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:464.21,465.216 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:465.216,466.12 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.3,468.41 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:468.41,470.4 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.2,473.19 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:473.19,475.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:479.2,481.53 2 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:481.53,482.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:482.59,483.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:484.15,485.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:486.13,487.35 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:488.17,489.40 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.2,493.50 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:493.50,494.52 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:494.52,495.26 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:496.15,497.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:498.13,499.29 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:500.17,501.34 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:505.2,505.18 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:508.37,512.2 3 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:515.39,516.25 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:516.25,518.3 1 0 @@ -7524,42 +16305,42 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:555.2,555.33 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:555.33,557.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:558.2,558.53 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:558.53,560.3 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.69 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:566.69,568.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:569.5,569.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:569.68,571.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:572.5,572.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:572.68,574.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:575.5,575.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:575.67,577.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:578.5,578.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:578.66,580.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:581.5,581.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:581.67,583.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:585.5,585.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:585.62,587.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:589.5,589.56 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:589.56,591.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:593.5,593.69 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:593.69,595.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:596.5,596.73 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:596.73,598.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:599.5,599.70 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:599.70,601.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:602.5,602.67 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:602.67,604.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:605.5,605.71 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:605.71,607.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:608.5,608.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:608.68,610.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:611.5,611.68 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:611.68,613.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:614.5,614.66 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:614.66,616.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:618.5,618.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:618.62,620.6 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:621.5,621.62 1 0 -codeberg.org/snonux/hexai/internal/appconfig/config.go:621.62,623.6 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:564.40,566.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:566.66,568.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.2,569.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:569.65,571.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.2,572.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:572.65,574.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.2,575.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:575.64,577.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.2,578.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:578.63,580.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.2,581.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:581.64,583.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.2,585.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:585.59,587.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.2,589.53 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:589.53,591.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.2,593.66 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:593.66,595.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.2,596.70 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:596.70,598.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.2,599.67 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:599.67,601.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.2,602.64 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:602.64,604.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.2,605.68 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:605.68,607.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.2,608.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:608.65,610.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.2,611.65 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:611.65,613.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.2,614.63 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:614.63,616.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.2,618.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:618.59,620.3 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.2,621.59 1 0 +codeberg.org/snonux/hexai/internal/appconfig/config.go:621.59,623.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:627.47,628.58 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:628.58,630.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:631.2,631.56 1 0 @@ -7659,47 +16440,143 @@ codeberg.org/snonux/hexai/internal/appconfig/config.go:818.61,821.3 2 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:823.2,823.10 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:823.10,825.3 1 0 codeberg.org/snonux/hexai/internal/appconfig/config.go:826.2,826.13 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:22.95,27.19 4 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:27.19,30.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:32.5,33.20 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.20,36.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:37.5,39.77 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:39.77,42.6 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:43.5,43.15 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:48.124,50.16 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:50.16,53.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:54.2,56.74 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:56.74,59.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:60.2,60.12 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:64.64,66.82 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:66.82,69.3 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:70.2,71.9 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:72.40,73.59 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:74.23,75.24 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:76.21,77.22 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:78.10,79.91 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:84.65,99.36 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:99.36,101.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:103.2,104.36 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.36,106.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:107.2,107.48 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:111.48,114.40 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:114.40,116.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:117.2,120.3 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.77,127.43 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.43,128.64 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.64,130.10 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:132.5,135.6 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:139.125,142.40 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:142.40,144.56 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:144.56,147.4 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:147.18,149.4 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:150.3,150.22 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:151.8,153.17 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:153.17,155.4 1 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:156.3,157.26 2 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:159.2,162.12 3 0 -codeberg.org/snonux/hexai/internal/hexaicli/run.go:166.59,168.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:20.50,22.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:22.16,24.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:25.2,26.15 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:26.15,28.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:29.2,32.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:32.27,34.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:34.26,36.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.2,39.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:39.18,41.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:43.2,45.28 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:45.28,47.14 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:47.14,49.9 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:51.3,51.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:53.2,55.60 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/parse.go:60.54,60.103 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:14.54,14.97 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:17.35,17.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:23.121,27.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:29.128,31.26 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:31.26,32.33 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:32.33,33.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:35.3,36.23 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:36.23,38.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:40.2,42.69 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:45.109,49.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:51.106,55.2 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:57.86,60.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:60.19,62.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:63.5,63.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:66.120,69.19 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:69.19,71.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:72.5,72.52 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:76.57,78.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:78.37,80.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:81.5,81.16 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:85.79,87.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/prompts.go:89.78,91.2 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:16.80,20.16 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:20.16,23.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:24.2,25.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:25.16,28.3 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.2,29.46 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:29.46,31.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:32.2,33.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:33.16,35.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:36.2,37.16 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:37.16,39.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:40.2,41.12 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:44.146,45.14 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:46.18,47.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:48.21,50.37 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:50.37,53.4 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:54.3,56.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:57.25,60.79 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:61.22,64.57 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:65.20,68.55 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/run.go:69.10,70.30 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:18.36,18.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:19.36,19.53 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:20.36,20.54 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:28.23,41.2 7 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:43.31,43.45 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:45.57,46.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:47.18,48.27 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:49.25,50.40 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:52.2,54.15 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:57.62,60.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:61.21,65.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:66.18,67.55 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:67.55,71.10 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:72.22,73.28 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:74.20,75.26 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:76.22,77.25 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:78.16,79.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:79.44,79.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:80.29,82.41 2 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:82.41,83.91 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:83.91,88.14 4 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.5,91.19 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:91.19,92.44 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:92.44,92.68 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:94.5,94.18 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:97.30,98.12 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:98.12,100.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:101.2,101.22 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:105.35,108.16 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:108.16,110.3 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.2,111.29 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:111.29,112.21 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:112.21,114.4 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:115.3,115.23 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui.go:117.2,117.56 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:20.61,20.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:21.61,21.73 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:22.61,22.75 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:23.89,26.38 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:26.38,28.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:29.5,31.27 3 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:31.27,33.6 1 0 +codeberg.org/snonux/hexai/internal/hexaiaction/tui_delegate.go:34.5,34.49 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:23.95,28.16 4 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:28.16,31.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:33.2,34.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:34.17,37.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:38.2,40.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:40.74,43.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:44.2,44.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:49.124,51.16 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:51.16,54.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:55.2,57.74 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:57.74,60.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:61.2,61.12 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:65.64,67.82 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:67.82,70.3 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:71.2,72.9 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:73.40,74.59 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:75.23,76.24 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:77.21,78.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:79.10,80.91 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:88.48,91.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:91.40,93.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:94.2,97.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:101.77,104.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:104.40,105.58 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:105.58,107.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:109.2,112.3 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:116.125,119.40 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:119.40,121.56 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:121.56,124.4 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:124.18,126.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:127.3,127.22 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:128.8,130.17 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:130.17,132.4 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:133.3,134.26 2 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:136.2,139.12 3 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:143.59,145.2 1 0 +codeberg.org/snonux/hexai/internal/hexaicli/run.go:148.65,150.2 1 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:25.85,27.38 2 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:27.38,29.17 2 0 codeberg.org/snonux/hexai/internal/hexailsp/run.go:29.17,31.4 1 0 @@ -8011,6 +16888,11 @@ codeberg.org/snonux/hexai/internal/llm/provider.go:111.36,114.4 2 0 codeberg.org/snonux/hexai/internal/llm/provider.go:115.3,115.102 1 0 codeberg.org/snonux/hexai/internal/llm/provider.go:116.10,117.55 1 0 codeberg.org/snonux/hexai/internal/llm/util.go:6.47,6.77 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:12.62,26.39 3 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:26.39,28.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:29.5,30.39 2 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:30.39,32.6 1 0 +codeberg.org/snonux/hexai/internal/llmutils/client.go:33.5,33.51 1 0 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:9.48,11.2 1 0 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:18.3,20.12 2 0 codeberg.org/snonux/hexai/internal/logging/chatlogger.go:20.12,22.3 1 0 @@ -8056,8 +16938,8 @@ codeberg.org/snonux/hexai/internal/lsp/context.go:83.2,83.19 1 1 codeberg.org/snonux/hexai/internal/lsp/document.go:15.48,19.2 3 32 codeberg.org/snonux/hexai/internal/lsp/document.go:21.45,25.2 3 1 codeberg.org/snonux/hexai/internal/lsp/document.go:27.33,31.2 3 4 -codeberg.org/snonux/hexai/internal/lsp/document.go:33.52,37.2 3 51 -codeberg.org/snonux/hexai/internal/lsp/document.go:40.37,43.2 2 76 +codeberg.org/snonux/hexai/internal/lsp/document.go:33.52,37.2 3 52 +codeberg.org/snonux/hexai/internal/lsp/document.go:40.37,43.2 2 42 codeberg.org/snonux/hexai/internal/lsp/document.go:45.96,47.35 2 5 codeberg.org/snonux/hexai/internal/lsp/document.go:47.35,49.3 1 1 codeberg.org/snonux/hexai/internal/lsp/document.go:50.2,51.13 2 4 @@ -8096,40 +16978,40 @@ codeberg.org/snonux/hexai/internal/lsp/document.go:122.46,123.28 1 6 codeberg.org/snonux/hexai/internal/lsp/document.go:123.28,124.29 1 16 codeberg.org/snonux/hexai/internal/lsp/document.go:124.29,126.4 1 4 codeberg.org/snonux/hexai/internal/lsp/document.go:128.2,128.14 1 2 -codeberg.org/snonux/hexai/internal/lsp/document.go:131.31,133.18 2 40 +codeberg.org/snonux/hexai/internal/lsp/document.go:131.31,133.18 2 42 codeberg.org/snonux/hexai/internal/lsp/document.go:133.18,135.3 1 1 -codeberg.org/snonux/hexai/internal/lsp/document.go:136.2,136.10 1 39 -codeberg.org/snonux/hexai/internal/lsp/document.go:139.33,141.49 2 22 -codeberg.org/snonux/hexai/internal/lsp/document.go:141.49,143.3 1 5 -codeberg.org/snonux/hexai/internal/lsp/document.go:144.2,144.10 1 17 +codeberg.org/snonux/hexai/internal/lsp/document.go:136.2,136.10 1 41 +codeberg.org/snonux/hexai/internal/lsp/document.go:139.33,141.49 2 25 +codeberg.org/snonux/hexai/internal/lsp/document.go:141.49,143.3 1 6 +codeberg.org/snonux/hexai/internal/lsp/document.go:144.2,144.10 1 19 codeberg.org/snonux/hexai/internal/lsp/handlers.go:10.38,11.41 1 2 codeberg.org/snonux/hexai/internal/lsp/handlers.go:11.41,14.3 2 1 codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.2,15.22 1 1 codeberg.org/snonux/hexai/internal/lsp/handlers.go:15.22,17.3 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.31 2 3 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.31,31.99 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.99,34.4 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.2,36.16 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.50 3 22 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.50,56.3 1 6 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.2,57.44 1 22 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.44,58.51 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.51,63.4 4 2 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.2,65.46 1 22 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.46,66.52 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.52,71.4 4 2 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.2,73.44 1 22 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.44,75.3 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.2,76.43 1 22 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.43,78.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.2,79.44 1 22 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.44,81.3 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.2,82.21 1 22 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.21,84.3 1 6 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.2,87.30 2 16 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.30,88.63 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.63,90.4 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.2,93.33 2 16 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:28.60,30.34 2 3 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:30.34,31.105 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:31.105,34.10 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:36.5,36.19 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:48.86,54.53 3 22 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:54.53,56.6 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.5,57.47 1 22 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:57.47,58.57 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:58.57,63.10 4 2 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.5,65.49 1 22 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:65.49,66.58 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:66.58,71.10 4 2 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.5,73.47 1 22 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:73.47,75.6 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.5,76.46 1 22 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:76.46,78.6 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.5,79.47 1 22 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:79.47,81.6 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.5,82.24 1 22 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:82.24,84.6 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:86.5,87.33 2 16 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:87.33,88.69 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:88.69,90.10 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers.go:92.5,93.36 2 16 codeberg.org/snonux/hexai/internal/lsp/handlers.go:117.72,120.2 2 11 codeberg.org/snonux/hexai/internal/lsp/handlers.go:191.151,194.24 2 14 codeberg.org/snonux/hexai/internal/lsp/handlers.go:194.24,196.3 1 0 @@ -8214,19 +17096,19 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:86.45,88.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:89.2,97.58 2 12 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:97.58,99.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:100.2,100.22 1 12 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.20,108.72 7 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:101.17,108.72 7 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:108.72,109.66 1 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:109.66,113.5 3 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:114.9,116.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.24,120.49 3 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.49,121.33 1 6 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.33,123.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.19,125.14 1 6 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.9,133.78 7 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.78,134.75 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.75,138.14 3 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.15,141.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.21,149.72 7 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:117.21,120.43 3 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:120.43,121.24 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:121.24,123.5 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:123.10,125.5 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:127.3,133.72 7 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:133.72,134.66 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:134.66,138.5 3 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:139.9,141.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:142.18,149.72 7 3 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:149.72,150.66 1 3 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:150.66,154.5 3 3 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:155.9,157.4 1 0 @@ -8240,31 +17122,31 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:178.3,178.9 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:180.2,180.49 1 2 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:180.49,183.3 2 2 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:184.2,184.26 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:190.85,191.22 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:191.22,193.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:194.2,195.53 2 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:190.85,191.22 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:191.22,193.3 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:194.2,195.53 2 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:195.53,197.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:198.2,198.31 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:198.2,198.31 1 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:198.31,200.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:201.2,202.36 2 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:202.36,203.34 1 6 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:203.34,205.4 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:207.2,207.12 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:211.37,213.32 1 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:201.2,202.36 2 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:202.36,203.34 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:203.34,205.4 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:207.2,207.12 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:211.37,213.32 1 10 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:213.32,215.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:216.2,216.32 1 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:216.2,216.32 1 10 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:216.32,218.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:220.2,220.29 1 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:220.2,220.29 1 10 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:220.29,222.3 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:224.2,224.29 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:224.2,224.29 1 7 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:224.29,226.3 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:227.2,227.13 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:230.34,231.22 1 14 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:231.22,233.3 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:234.2,234.34 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:237.37,238.22 1 17 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:238.22,240.3 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:241.2,241.34 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:227.2,227.13 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:230.34,231.22 1 19 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:231.22,233.3 1 14 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:234.2,234.34 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:237.37,238.22 1 22 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:238.22,240.3 1 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:241.2,241.34 1 11 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:246.76,248.80 2 3 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:248.80,250.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:252.2,252.71 1 3 @@ -8277,15 +17159,15 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:272.24,274.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:275.2,275.34 1 2 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:275.34,277.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:278.2,286.12 4 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:289.95,291.76 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:289.95,291.76 2 3 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:291.76,293.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:295.2,296.21 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:295.2,296.21 2 3 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:296.21,298.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:299.2,301.36 3 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:299.2,301.36 3 3 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:301.36,303.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:304.2,306.39 3 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:304.2,306.39 3 3 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:306.39,308.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:310.2,314.26 3 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:310.2,314.26 3 3 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:314.26,320.22 4 1 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:320.22,323.4 2 1 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:324.3,326.102 2 1 @@ -8295,72 +17177,72 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:336.40,338.4 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:339.3,341.19 2 1 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:341.19,343.4 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:344.3,345.33 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:348.2,349.15 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:348.2,349.15 2 2 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:349.15,351.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:352.2,367.13 13 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:367.13,370.3 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:371.2,372.32 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:376.62,377.39 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:352.2,367.13 13 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:367.13,370.3 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:371.2,372.32 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:376.62,377.39 1 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:377.39,379.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:380.2,382.16 3 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:380.2,382.16 3 2 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:382.16,384.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:385.2,386.29 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:389.35,390.41 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:385.2,386.29 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:389.35,390.41 1 3 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:390.41,392.3 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:393.2,393.14 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:397.48,398.27 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:398.27,400.39 2 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:400.39,403.45 2 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:393.2,393.14 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:397.48,398.27 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:398.27,400.39 2 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:400.39,403.45 2 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:403.45,405.5 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:406.4,406.46 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:406.4,406.46 1 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:406.46,408.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:409.4,409.46 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:409.4,409.46 1 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:409.46,411.5 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:412.4,412.15 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:412.4,412.15 1 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:415.2,415.11 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:419.63,420.13 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:419.63,420.13 1 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:420.13,422.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:423.2,423.23 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:423.2,423.23 1 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:423.23,425.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:427.2,428.28 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:428.28,429.42 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:429.42,431.9 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:427.2,428.28 2 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:428.28,429.42 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:429.42,431.9 2 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:433.3,433.38 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:433.38,434.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:437.2,437.17 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:437.2,437.17 1 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:437.17,439.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:441.2,443.38 3 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:443.38,445.32 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:445.32,446.17 1 47 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:447.13,449.20 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:450.13,451.18 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:451.18,453.6 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.5,454.31 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.31,456.6 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.2,461.15 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.15,463.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:441.2,443.38 3 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:443.38,445.32 2 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:445.32,446.17 1 106 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:447.13,449.20 2 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:450.13,451.18 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:451.18,453.6 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.5,454.31 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:454.31,456.6 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.2,461.15 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:461.15,463.3 1 1 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:464.2,464.18 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.27 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.27,476.71 7 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:468.65,469.24 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:469.24,476.71 7 2 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:476.71,478.21 2 2 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:478.21,480.5 1 2 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:481.9,483.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:486.2,487.16 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:486.2,487.16 2 2 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:487.16,489.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:490.2,490.115 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:494.43,498.39 3 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:490.2,490.115 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:494.43,498.39 3 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:498.39,500.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:501.2,503.34 2 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:501.2,503.34 2 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:503.34,505.63 1 1 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:505.63,507.4 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.2,510.42 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.42,512.3 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.2,510.42 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:510.42,512.3 1 4 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:513.2,513.11 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:516.37,517.16 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:516.37,517.16 1 2 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:517.16,519.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:520.2,521.32 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:520.2,521.32 2 2 codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:521.32,523.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:524.2,524.18 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_codeaction.go:524.2,524.18 1 2 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:15.48,18.55 3 1 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:18.55,25.19 5 1 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:25.19,27.4 1 0 @@ -8430,7 +17312,7 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:216.50,218.3 1 5 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:219.2,219.23 1 7 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:223.193,225.9 2 11 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:225.9,227.3 1 6 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.5,237.32 6 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:228.2,237.32 6 5 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:237.32,239.3 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:240.2,241.24 2 5 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:241.24,243.3 1 5 @@ -8466,15 +17348,15 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:321.23,325.11 4 2 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:326.22,328.17 2 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:329.19,331.13 1 2 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:335.3,337.14 3 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.17 4 13 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.17,357.6 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.5,358.71 1 13 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.71,360.6 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.5,363.55 3 13 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.55,365.43 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.43,367.10 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.9,368.79 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.5,370.20 1 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:342.177,354.14 4 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:354.14,357.3 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.2,358.68 1 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:358.68,360.3 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:361.2,363.52 3 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:363.52,365.37 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:365.37,367.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:368.3,368.73 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:370.2,370.17 1 13 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:374.101,376.57 2 10 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:376.57,377.78 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_completion.go:377.78,379.4 1 0 @@ -8601,190 +17483,176 @@ codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:16.2,27.27 2 2 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:30.38,32.2 1 0 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:34.46,36.2 1 1 codeberg.org/snonux/hexai/internal/lsp/handlers_init.go:38.31,41.2 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:20.55,22.32 2 17 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:22.32,24.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:25.2,25.13 1 17 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:29.41,34.2 4 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:36.41,41.2 4 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:43.32,46.23 3 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:46.23,48.3 1 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:49.2,50.24 2 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.24,52.3 1 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:53.2,56.15 4 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:56.15,58.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:59.2,62.211 4 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:66.51,67.41 1 11 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.41,69.3 1 6 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:70.2,72.71 3 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:76.62,77.16 1 33 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.16,79.6 1 9 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.5,81.28 2 24 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:81.28,84.6 2 79 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:85.5,85.15 1 24 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:88.118,89.14 1 17 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.14,92.16 3 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.16,95.35 3 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:95.35,97.5 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:98.4,98.36 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:98.36,100.5 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:101.4,103.59 3 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:103.59,105.5 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.4,106.21 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:109.2,112.19 4 14 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:115.51,116.23 1 23 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.23,118.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:119.2,119.13 1 23 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:119.13,121.100 2 39 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.100,123.12 2 21 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:125.3,125.8 1 18 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.2,127.11 1 23 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.32,132.2 1 24 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.44,136.50 1 20 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.50,138.3 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:139.2,139.35 1 17 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.40,144.20 2 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:144.20,145.40 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.40,147.12 2 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.3,149.8 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:151.2,151.12 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:151.12,153.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.2,154.17 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.52,158.38 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:158.38,160.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:161.2,162.27 2 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.27,163.34 1 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:163.34,164.12 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:166.3,166.36 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:166.36,167.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:169.3,169.25 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:171.2,171.34 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:179.64,181.22 2 49 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:181.22,184.12 2 64 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:184.12,186.4 1 27 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:187.3,189.74 2 37 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.74,191.12 2 21 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.12 2 16 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.12,197.4 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:198.3,199.48 2 15 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.48,201.12 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:203.3,204.18 2 14 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:204.18,206.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.3,209.29 2 14 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:211.2,211.24 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:217.41,221.31 3 19 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:221.31,223.3 1 16 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.29 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.29,226.3 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:227.2,227.31 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:227.31,229.32 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:229.32,231.4 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.2,233.14 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:237.83,240.102 2 19 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.102,242.36 2 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:242.36,244.136 2 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:244.136,246.5 1 20 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.4,249.34 3 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.34,251.5 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:255.2,255.65 1 15 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:255.65,256.53 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.53,258.37 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:258.37,260.137 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:260.137,262.6 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:263.5,265.35 3 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:265.35,267.6 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:271.2,271.19 1 13 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.80,276.22 1 19 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.22,278.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.2,281.40 3 19 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:281.40,283.3 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.2,284.34 1 14 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:284.34,285.31 1 100 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:285.31,286.12 1 77 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:288.3,289.16 2 23 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:289.16,290.12 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.3,292.32 1 23 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:292.32,294.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:296.2,296.19 1 14 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:299.36,301.2 1 100 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.39,306.13 2 36 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:306.13,308.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:309.2,311.66 3 36 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.66,313.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:314.2,315.54 2 36 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:315.54,317.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.2,318.51 1 36 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.51,320.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,323.69 3 36 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:323.69,326.3 2 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:327.2,327.10 1 28 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.43,333.13 2 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:333.13,335.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:336.2,337.11 2 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.11,339.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:340.2,341.14 2 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:341.14,343.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:344.2,345.19 2 6 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:349.56,351.89 2 18 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.89,353.3 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:354.2,354.14 1 14 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.52,359.32 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.32,361.28 2 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:361.28,363.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:364.3,364.34 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:364.34,366.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:367.3,367.42 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:367.42,369.4 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.3,370.49 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.2,375.27 3 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.27,377.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:378.2,378.36 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:378.36,380.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:381.2,384.49 3 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:384.49,386.24 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.24,388.4 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.2,392.25 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:392.25,394.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.2,395.33 1 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.33,397.3 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.2,399.19 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.67,405.35 2 13 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:405.35,407.3 1 11 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:408.2,409.31 2 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.31,411.3 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:412.2,412.14 1 2 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:415.69,416.32 1 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:416.32,418.3 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:419.2,419.47 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:422.45,424.22 2 55 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:424.22,428.12 3 57 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,430.4 1 36 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.32 3 21 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.32,435.4 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,437.46 2 14 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:437.46,439.12 2 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:442.3,443.12 2 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:443.12,445.4 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:446.3,447.49 2 10 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:447.49,449.12 2 1 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:451.3,451.14 1 9 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.2,453.14 1 3 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:456.67,459.28 3 8 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:459.28,461.12 2 12 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:461.12,462.9 1 7 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:464.3,466.12 3 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:466.12,467.9 1 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.3,469.43 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:469.43,471.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.3,473.34 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:473.34,475.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:477.3,478.48 2 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:478.48,480.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.3,482.25 1 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:482.25,484.12 2 0 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:486.3,487.50 2 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:487.50,489.4 1 4 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:490.3,491.22 2 5 -codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:493.2,493.14 1 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:21.55,23.32 2 17 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:23.32,25.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:26.2,26.13 1 17 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:30.41,35.2 4 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:37.41,42.2 4 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:44.32,47.23 3 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:47.23,49.3 1 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:50.2,51.24 2 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:51.24,53.3 1 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:54.2,57.15 4 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:57.15,59.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:60.2,63.211 4 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:67.51,68.41 1 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:68.41,70.3 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:71.2,73.71 3 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:77.62,77.105 1 33 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:79.118,80.14 1 17 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:80.14,83.16 3 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:83.16,86.35 3 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:86.35,88.5 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.4,89.36 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:89.36,91.5 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:92.4,94.59 3 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:94.59,96.5 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:97.4,97.21 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:100.2,103.19 4 14 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:106.51,107.23 1 24 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:107.23,109.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.2,110.13 1 24 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:110.13,112.100 2 49 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:112.100,114.12 2 31 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:116.3,116.8 1 18 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:118.2,118.11 1 24 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:121.32,123.2 1 26 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:126.44,127.50 1 21 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:127.50,129.3 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:130.2,130.35 1 17 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:133.40,135.20 2 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:135.20,136.40 1 14 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:136.40,138.12 2 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:140.3,140.8 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.2,142.12 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:142.12,144.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:145.2,145.17 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:148.52,149.38 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:149.38,151.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:152.2,153.27 2 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:153.27,154.34 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:154.34,155.12 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.3,157.36 1 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:157.36,158.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:160.3,160.25 1 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:162.2,162.34 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:170.64,172.22 2 50 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:172.22,175.12 2 65 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:175.12,177.4 1 27 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:178.3,180.74 2 38 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:180.74,182.12 2 21 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:185.3,186.12 2 17 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:186.12,188.4 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:189.3,190.48 2 16 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:190.48,192.12 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:194.3,195.18 2 15 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:195.18,197.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:199.3,200.29 2 15 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:202.2,202.24 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:208.41,212.31 3 19 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:212.31,214.3 1 16 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.2,215.29 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:215.29,217.3 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.2,218.31 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:218.31,220.32 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:220.32,222.4 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:224.2,224.14 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:228.83,231.102 2 19 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:231.102,233.36 2 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:233.36,235.136 2 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:235.136,237.5 1 20 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:238.4,240.34 3 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:240.34,242.5 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.2,246.65 1 15 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:246.65,247.53 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:247.53,249.37 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:249.37,251.137 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:251.137,253.6 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:254.5,256.35 3 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:256.35,258.6 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:262.2,262.19 1 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:266.80,267.22 1 19 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:267.22,269.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:270.2,272.40 3 19 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:272.40,274.3 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.2,275.34 1 14 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:275.34,276.31 1 100 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:276.31,277.12 1 77 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:279.3,280.16 2 23 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:280.16,281.12 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.3,283.32 1 23 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:283.32,285.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:287.2,287.19 1 14 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:290.36,292.2 1 100 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:295.39,295.77 1 36 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:298.43,300.13 2 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:300.13,302.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:303.2,304.11 2 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:304.11,306.3 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:307.2,308.14 2 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:308.14,310.3 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:311.2,312.19 2 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:316.56,318.89 2 20 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:318.89,320.3 1 5 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:321.2,321.14 1 15 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:325.52,326.32 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:326.32,328.28 2 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:328.28,330.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.3,331.34 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:331.34,333.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.3,334.42 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:334.42,336.4 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:337.3,337.49 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:339.2,342.27 3 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:342.27,344.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.2,345.36 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:345.36,347.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:348.2,351.49 3 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:351.49,353.24 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:353.24,355.4 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:358.2,359.25 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:359.25,361.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.2,362.33 1 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:362.33,364.3 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:365.2,366.19 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:370.67,372.35 2 13 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:372.35,374.3 1 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:375.2,376.31 2 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:376.31,378.3 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:379.2,379.14 1 2 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:382.69,383.32 1 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:383.32,385.3 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:386.2,386.47 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:389.45,391.22 2 56 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:391.22,395.12 3 58 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:395.12,397.4 1 36 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:398.3,400.32 3 22 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:400.32,402.4 1 7 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:403.3,404.46 2 15 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:404.46,406.12 2 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:409.3,410.12 2 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:410.12,412.4 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:413.3,414.49 2 11 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:414.49,416.12 2 1 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:418.3,418.14 1 10 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:420.2,420.14 1 3 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:423.67,426.28 3 9 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:426.28,428.12 2 14 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:428.12,429.9 1 8 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:431.3,433.12 3 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:433.12,434.9 1 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.3,436.43 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:436.43,438.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.3,440.34 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:440.34,442.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:444.3,445.48 2 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:445.48,447.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.3,449.25 1 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:449.25,451.12 2 0 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:453.3,454.50 2 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:454.50,456.4 1 4 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:457.3,458.22 2 6 +codeberg.org/snonux/hexai/internal/lsp/handlers_utils.go:460.2,460.14 1 9 codeberg.org/snonux/hexai/internal/lsp/server.go:126.90,129.20 3 5 codeberg.org/snonux/hexai/internal/lsp/server.go:129.20,131.3 1 5 codeberg.org/snonux/hexai/internal/lsp/server.go:132.2,134.23 3 5 @@ -8809,10 +17677,10 @@ codeberg.org/snonux/hexai/internal/lsp/server.go:174.8,176.3 1 1 codeberg.org/snonux/hexai/internal/lsp/server.go:177.2,177.46 1 5 codeberg.org/snonux/hexai/internal/lsp/server.go:177.46,179.3 1 3 codeberg.org/snonux/hexai/internal/lsp/server.go:179.8,181.3 1 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:182.5,182.36 1 5 -codeberg.org/snonux/hexai/internal/lsp/server.go:182.36,184.6 1 3 -codeberg.org/snonux/hexai/internal/lsp/server.go:184.11,186.6 1 2 -codeberg.org/snonux/hexai/internal/lsp/server.go:189.5,207.24 17 5 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.2,182.33 1 5 +codeberg.org/snonux/hexai/internal/lsp/server.go:182.33,184.3 1 3 +codeberg.org/snonux/hexai/internal/lsp/server.go:184.8,186.3 1 2 +codeberg.org/snonux/hexai/internal/lsp/server.go:189.2,207.24 17 5 codeberg.org/snonux/hexai/internal/lsp/server.go:207.24,209.3 1 5 codeberg.org/snonux/hexai/internal/lsp/server.go:210.2,210.25 1 5 codeberg.org/snonux/hexai/internal/lsp/server.go:210.25,212.3 1 5 @@ -8862,3 +17730,55 @@ codeberg.org/snonux/hexai/internal/testutil/fixtures.go:9.34,11.2 1 1 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:14.43,16.2 1 1 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:19.33,21.2 1 0 codeberg.org/snonux/hexai/internal/testutil/fixtures.go:24.29,26.2 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:6.62,7.34 1 33 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:7.34,9.6 1 9 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:10.5,11.28 2 24 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:11.28,13.6 1 79 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:14.5,14.15 1 24 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:18.39,20.16 2 36 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:20.16,22.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:23.5,25.69 3 36 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:25.69,27.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:28.5,29.57 2 36 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:29.57,31.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.5,32.54 1 36 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:32.54,34.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:35.5,37.72 3 36 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:37.72,40.6 2 8 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:41.5,41.13 1 28 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:47.60,49.34 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:49.34,50.105 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:50.105,53.10 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:55.5,55.19 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:59.79,62.53 3 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:62.53,64.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.5,65.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:65.47,66.57 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:66.57,71.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.5,73.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:73.49,74.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:74.58,79.10 4 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.5,81.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:81.47,83.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.5,84.46 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:84.46,86.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.5,87.47 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:87.47,89.6 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.5,90.24 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:90.24,90.50 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:91.5,92.33 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:92.33,93.69 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:93.69,93.81 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:95.5,96.36 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:100.79,101.36 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:101.36,102.27 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:102.27,102.37 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.9,103.48 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:103.48,103.58 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.9,104.44 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:104.44,105.31 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:105.31,106.49 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:106.49,106.59 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:107.17,108.32 2 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:108.32,108.64 1 0 +codeberg.org/snonux/hexai/internal/textutil/textutil.go:112.5,112.29 1 0 @@ -6,4 +6,29 @@ toolchain go1.24.5 require github.com/magefile/mage v1.15.0 -require github.com/pelletier/go-toml/v2 v2.2.4 +require ( + github.com/charmbracelet/bubbles v0.18.0 + github.com/charmbracelet/bubbletea v0.25.0 + github.com/pelletier/go-toml/v2 v2.2.4 +) + +require ( + github.com/atotto/clipboard v0.1.4 // indirect + github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect + github.com/charmbracelet/lipgloss v0.9.1 // indirect + github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect + github.com/lucasb-eyer/go-colorful v1.2.0 // indirect + github.com/mattn/go-isatty v0.0.18 // indirect + github.com/mattn/go-localereader v0.0.1 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect + github.com/muesli/cancelreader v0.2.2 // indirect + github.com/muesli/reflow v0.3.0 // indirect + github.com/muesli/termenv v0.15.2 // indirect + github.com/rivo/uniseg v0.4.6 // indirect + github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f // indirect + golang.org/x/sync v0.1.0 // indirect + golang.org/x/sys v0.12.0 // indirect + golang.org/x/term v0.6.0 // indirect + golang.org/x/text v0.3.8 // indirect +) @@ -1,4 +1,51 @@ +github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= +github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= +github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= +github.com/charmbracelet/bubbles v0.18.0 h1:PYv1A036luoBGroX6VWjQIE9Syf2Wby2oOl/39KLfy0= +github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw= +github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= +github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= +github.com/charmbracelet/lipgloss v0.9.1 h1:PNyd3jvaJbg4jRHKWXnCj1akQm4rh8dbEzN1p/u1KWg= +github.com/charmbracelet/lipgloss v0.9.1/go.mod h1:1mPmG4cxScwUQALAAnacHaigiiHB9Pmr+v1VEawJl6I= +github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= +github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= +github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= +github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= +github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= +github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= +github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b h1:1XF24mVaiu7u+CFywTdcDo2ie1pzzhwjt6RHqzpMU34= +github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho= +github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= +github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= +github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= +github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= +github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= +github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= +github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.6 h1:Sovz9sDSwbOz9tgUy8JpT+KgCkPYJEN/oYzlJiYTNLg= +github.com/rivo/uniseg v0.4.6/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f h1:MvTmaQdww/z0Q4wrYjDSCcZ78NoftLQyHBSLW/Cx79Y= +github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/text v0.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= diff --git a/internal/appconfig/config.go b/internal/appconfig/config.go index 9941cf8..bd511e2 100644 --- a/internal/appconfig/config.go +++ b/internal/appconfig/config.go @@ -54,35 +54,35 @@ type App struct { // Default temperature for Ollama requests (nil means use provider default) OllamaTemperature *float64 `json:"ollama_temperature" toml:"ollama_temperature"` CopilotBaseURL string `json:"copilot_base_url" toml:"copilot_base_url"` - CopilotModel string `json:"copilot_model" toml:"copilot_model"` - // Default temperature for Copilot requests (nil means use provider default) - CopilotTemperature *float64 `json:"copilot_temperature" toml:"copilot_temperature"` - - // Prompt templates (configured only via file; no env overrides) - // Completion/chat/code action/CLI prompt strings. See config.toml.example for placeholders. - // Completion - PromptCompletionSystemGeneral string `json:"-" toml:"-"` - PromptCompletionSystemParams string `json:"-" toml:"-"` - PromptCompletionSystemInline string `json:"-" toml:"-"` - PromptCompletionUserGeneral string `json:"-" toml:"-"` - PromptCompletionUserParams string `json:"-" toml:"-"` - PromptCompletionExtraHeader string `json:"-" toml:"-"` - // Provider-native code-completer - PromptNativeCompletion string `json:"-" toml:"-"` - // In-editor chat - PromptChatSystem string `json:"-" toml:"-"` - // Code actions - PromptCodeActionRewriteSystem string `json:"-" toml:"-"` - PromptCodeActionDiagnosticsSystem string `json:"-" toml:"-"` - PromptCodeActionDocumentSystem string `json:"-" toml:"-"` - PromptCodeActionRewriteUser string `json:"-" toml:"-"` - PromptCodeActionDiagnosticsUser string `json:"-" toml:"-"` - PromptCodeActionDocumentUser string `json:"-" toml:"-"` - PromptCodeActionGoTestSystem string `json:"-" toml:"-"` - PromptCodeActionGoTestUser string `json:"-" toml:"-"` - // CLI - PromptCLIDefaultSystem string `json:"-" toml:"-"` - PromptCLIExplainSystem string `json:"-" toml:"-"` + CopilotModel string `json:"copilot_model" toml:"copilot_model"` + // Default temperature for Copilot requests (nil means use provider default) + CopilotTemperature *float64 `json:"copilot_temperature" toml:"copilot_temperature"` + + // Prompt templates (configured only via file; no env overrides) + // Completion/chat/code action/CLI prompt strings. See config.toml.example for placeholders. + // Completion + PromptCompletionSystemGeneral string `json:"-" toml:"-"` + PromptCompletionSystemParams string `json:"-" toml:"-"` + PromptCompletionSystemInline string `json:"-" toml:"-"` + PromptCompletionUserGeneral string `json:"-" toml:"-"` + PromptCompletionUserParams string `json:"-" toml:"-"` + PromptCompletionExtraHeader string `json:"-" toml:"-"` + // Provider-native code-completer + PromptNativeCompletion string `json:"-" toml:"-"` + // In-editor chat + PromptChatSystem string `json:"-" toml:"-"` + // Code actions + PromptCodeActionRewriteSystem string `json:"-" toml:"-"` + PromptCodeActionDiagnosticsSystem string `json:"-" toml:"-"` + PromptCodeActionDocumentSystem string `json:"-" toml:"-"` + PromptCodeActionRewriteUser string `json:"-" toml:"-"` + PromptCodeActionDiagnosticsUser string `json:"-" toml:"-"` + PromptCodeActionDocumentUser string `json:"-" toml:"-"` + PromptCodeActionGoTestSystem string `json:"-" toml:"-"` + PromptCodeActionGoTestUser string `json:"-" toml:"-"` + // CLI + PromptCLIDefaultSystem string `json:"-" toml:"-"` + PromptCLIExplainSystem string `json:"-" toml:"-"` } // Constructor: defaults for App (kept first among functions) @@ -90,7 +90,7 @@ func newDefaultConfig() App { // Coding-friendly default temperature across providers // Users can override per provider in config.toml (including 0.0). t := 0.2 - return App{ + return App{ MaxTokens: 4000, ContextMode: "always-full", ContextWindowLines: 120, @@ -107,32 +107,32 @@ func newDefaultConfig() App { InlineOpen: ">", InlineClose: ">", ChatSuffix: ">", - ChatPrefixes: []string{"?", "!", ":", ";"}, - - // Default prompt templates (match current hard-coded strings) - PromptCompletionSystemParams: "You are a code completion engine for function signatures. Return only the parameter list contents (without parentheses), no braces, no prose. Prefer idiomatic names and types.", - PromptCompletionUserParams: "Cursor is inside the function parameter list. Suggest only the parameter list (no parentheses).\nFunction line: {{function}}\nCurrent line (cursor at {{char}}): {{current}}", - PromptCompletionSystemGeneral: "You are a terse code completion engine. Return only the code to insert, no surrounding prose or backticks. Only continue from the cursor; never repeat characters already present to the left of the cursor on the current line (e.g., if 'name :=' is already typed, only return the right-hand side expression).", - PromptCompletionUserGeneral: "Provide the next likely code to insert at the cursor.\nFile: {{file}}\nFunction/context: {{function}}\nAbove line: {{above}}\nCurrent line (cursor at character {{char}}): {{current}}\nBelow line: {{below}}\nOnly return the completion snippet.", - PromptCompletionSystemInline: "You are a precise code completion/refactoring engine. Output only the code to insert with no prose, no comments, and no backticks. Return raw code only.", - PromptCompletionExtraHeader: "Additional context:\n{{context}}", - - PromptNativeCompletion: "// Path: {{path}}\n{{before}}", - - PromptChatSystem: "You are a helpful coding assistant. Answer concisely and clearly.", - - PromptCodeActionRewriteSystem: "You are a precise code refactoring engine. Rewrite the given code strictly according to the instruction. Return only the updated code with no prose or backticks. Preserve formatting where reasonable.", - PromptCodeActionDiagnosticsSystem: "You are a precise code fixer. Resolve the given diagnostics by editing only the selected code. Return only the corrected code with no prose or backticks. Keep behavior and style, and avoid unrelated changes.", - PromptCodeActionDocumentSystem: "You are a precise code documentation engine. Add idiomatic documentation comments to the given code. Preserve exact behavior and formatting as much as possible. Return only the updated code with comments, no prose or backticks.", - PromptCodeActionRewriteUser: "Instruction: {{instruction}}\n\nSelected code to transform:\n{{selection}}", - PromptCodeActionDiagnosticsUser: "Diagnostics to resolve (selection only):\n{{diagnostics}}\n\nSelected code:\n{{selection}}", - PromptCodeActionDocumentUser: "Add documentation comments to this code:\n{{selection}}", - PromptCodeActionGoTestSystem: "You are a precise Go unit test generator. Given a Go function, write one or more Test* functions using the testing package. Do NOT include package or imports, only the test function(s). Prefer table-driven tests. Keep it minimal and idiomatic.", - PromptCodeActionGoTestUser: "Function under test:\n{{function}}", - - PromptCLIDefaultSystem: "You are Hexai CLI. Default to very short, concise answers. If the user asks for commands, output only the commands (one per line) with no commentary or explanation. Only when the word 'explain' appears in the prompt, produce a verbose explanation.", - PromptCLIExplainSystem: "You are Hexai CLI. The user requested an explanation. Provide a clear, verbose explanation with reasoning and details. If commands are needed, include them with brief context.", - } + ChatPrefixes: []string{"?", "!", ":", ";"}, + + // Default prompt templates (match current hard-coded strings) + PromptCompletionSystemParams: "You are a code completion engine for function signatures. Return only the parameter list contents (without parentheses), no braces, no prose. Prefer idiomatic names and types.", + PromptCompletionUserParams: "Cursor is inside the function parameter list. Suggest only the parameter list (no parentheses).\nFunction line: {{function}}\nCurrent line (cursor at {{char}}): {{current}}", + PromptCompletionSystemGeneral: "You are a terse code completion engine. Return only the code to insert, no surrounding prose or backticks. Only continue from the cursor; never repeat characters already present to the left of the cursor on the current line (e.g., if 'name :=' is already typed, only return the right-hand side expression).", + PromptCompletionUserGeneral: "Provide the next likely code to insert at the cursor.\nFile: {{file}}\nFunction/context: {{function}}\nAbove line: {{above}}\nCurrent line (cursor at character {{char}}): {{current}}\nBelow line: {{below}}\nOnly return the completion snippet.", + PromptCompletionSystemInline: "You are a precise code completion/refactoring engine. Output only the code to insert with no prose, no comments, and no backticks. Return raw code only.", + PromptCompletionExtraHeader: "Additional context:\n{{context}}", + + PromptNativeCompletion: "// Path: {{path}}\n{{before}}", + + PromptChatSystem: "You are a helpful coding assistant. Answer concisely and clearly.", + + PromptCodeActionRewriteSystem: "You are a precise code refactoring engine. Rewrite the given code strictly according to the instruction. Return only the updated code with no prose or backticks. Preserve formatting where reasonable.", + PromptCodeActionDiagnosticsSystem: "You are a precise code fixer. Resolve the given diagnostics by editing only the selected code. Return only the corrected code with no prose or backticks. Keep behavior and style, and avoid unrelated changes.", + PromptCodeActionDocumentSystem: "You are a precise code documentation engine. Add idiomatic documentation comments to the given code. Preserve exact behavior and formatting as much as possible. Return only the updated code with comments, no prose or backticks.", + PromptCodeActionRewriteUser: "Instruction: {{instruction}}\n\nSelected code to transform:\n{{selection}}", + PromptCodeActionDiagnosticsUser: "Diagnostics to resolve (selection only):\n{{diagnostics}}\n\nSelected code:\n{{selection}}", + PromptCodeActionDocumentUser: "Add documentation comments to this code:\n{{selection}}", + PromptCodeActionGoTestSystem: "You are a precise Go unit test generator. Given a Go function, write one or more Test* functions using the testing package. Do NOT include package or imports, only the test function(s). Prefer table-driven tests. Keep it minimal and idiomatic.", + PromptCodeActionGoTestUser: "Function under test:\n{{function}}", + + PromptCLIDefaultSystem: "You are Hexai CLI. Default to very short, concise answers. If the user asks for commands, output only the commands (one per line) with no commentary or explanation. Only when the word 'explain' appears in the prompt, produce a verbose explanation.", + PromptCLIExplainSystem: "You are Hexai CLI. The user requested an explanation. Provide a clear, verbose explanation with reasoning and details. If commands are needed, include them with brief context.", + } } // Load reads configuration from a file and merges with defaults. @@ -165,350 +165,350 @@ func Load(logger *log.Logger) App { // Private helpers // Sectioned (table-based) file format only. type fileConfig struct { - // Section tables only (flat keys are not allowed) - General sectionGeneral `toml:"general"` - Logging sectionLogging `toml:"logging"` - Completion sectionCompletion `toml:"completion"` - Triggers sectionTriggers `toml:"triggers"` - Inline sectionInline `toml:"inline"` - Chat sectionChat `toml:"chat"` - Provider sectionProvider `toml:"provider"` - OpenAI sectionOpenAI `toml:"openai"` - Copilot sectionCopilot `toml:"copilot"` - Ollama sectionOllama `toml:"ollama"` - Prompts sectionPrompts `toml:"prompts"` + // Section tables only (flat keys are not allowed) + General sectionGeneral `toml:"general"` + Logging sectionLogging `toml:"logging"` + Completion sectionCompletion `toml:"completion"` + Triggers sectionTriggers `toml:"triggers"` + Inline sectionInline `toml:"inline"` + Chat sectionChat `toml:"chat"` + Provider sectionProvider `toml:"provider"` + OpenAI sectionOpenAI `toml:"openai"` + Copilot sectionCopilot `toml:"copilot"` + Ollama sectionOllama `toml:"ollama"` + Prompts sectionPrompts `toml:"prompts"` } type sectionGeneral struct { - MaxTokens int `toml:"max_tokens"` - ContextMode string `toml:"context_mode"` - ContextWindowLines int `toml:"context_window_lines"` - MaxContextTokens int `toml:"max_context_tokens"` - CodingTemperature *float64 `toml:"coding_temperature"` + MaxTokens int `toml:"max_tokens"` + ContextMode string `toml:"context_mode"` + ContextWindowLines int `toml:"context_window_lines"` + MaxContextTokens int `toml:"max_context_tokens"` + CodingTemperature *float64 `toml:"coding_temperature"` } type sectionLogging struct { - LogPreviewLimit int `toml:"log_preview_limit"` + LogPreviewLimit int `toml:"log_preview_limit"` } type sectionCompletion struct { - CompletionDebounceMs int `toml:"completion_debounce_ms"` - CompletionThrottleMs int `toml:"completion_throttle_ms"` - ManualInvokeMinPrefix int `toml:"manual_invoke_min_prefix"` + CompletionDebounceMs int `toml:"completion_debounce_ms"` + CompletionThrottleMs int `toml:"completion_throttle_ms"` + ManualInvokeMinPrefix int `toml:"manual_invoke_min_prefix"` } type sectionTriggers struct { - TriggerCharacters []string `toml:"trigger_characters"` + TriggerCharacters []string `toml:"trigger_characters"` } type sectionInline struct { - InlineOpen string `toml:"inline_open"` - InlineClose string `toml:"inline_close"` + InlineOpen string `toml:"inline_open"` + InlineClose string `toml:"inline_close"` } type sectionChat struct { - ChatSuffix string `toml:"chat_suffix"` - ChatPrefixes []string `toml:"chat_prefixes"` + ChatSuffix string `toml:"chat_suffix"` + ChatPrefixes []string `toml:"chat_prefixes"` } type sectionProvider struct { - Name string `toml:"name"` + Name string `toml:"name"` } type sectionOpenAI struct { - Model string `toml:"model"` - BaseURL string `toml:"base_url"` - Temperature *float64 `toml:"temperature"` + Model string `toml:"model"` + BaseURL string `toml:"base_url"` + Temperature *float64 `toml:"temperature"` } type sectionCopilot struct { - Model string `toml:"model"` - BaseURL string `toml:"base_url"` - Temperature *float64 `toml:"temperature"` + Model string `toml:"model"` + BaseURL string `toml:"base_url"` + Temperature *float64 `toml:"temperature"` } type sectionOllama struct { - Model string `toml:"model"` - BaseURL string `toml:"base_url"` - Temperature *float64 `toml:"temperature"` + Model string `toml:"model"` + BaseURL string `toml:"base_url"` + Temperature *float64 `toml:"temperature"` } // Prompts sections type sectionPrompts struct { - Completion sectionPromptsCompletion `toml:"completion"` - Chat sectionPromptsChat `toml:"chat"` - CodeAction sectionPromptsCodeAction `toml:"code_action"` - CLI sectionPromptsCLI `toml:"cli"` - ProviderNative sectionPromptsProviderNative `toml:"provider_native"` + Completion sectionPromptsCompletion `toml:"completion"` + Chat sectionPromptsChat `toml:"chat"` + CodeAction sectionPromptsCodeAction `toml:"code_action"` + CLI sectionPromptsCLI `toml:"cli"` + ProviderNative sectionPromptsProviderNative `toml:"provider_native"` } type sectionPromptsCompletion struct { - SystemGeneral string `toml:"system_general"` - SystemParams string `toml:"system_params"` - SystemInline string `toml:"system_inline"` - UserGeneral string `toml:"user_general"` - UserParams string `toml:"user_params"` - ExtraHeader string `toml:"additional_context"` + SystemGeneral string `toml:"system_general"` + SystemParams string `toml:"system_params"` + SystemInline string `toml:"system_inline"` + UserGeneral string `toml:"user_general"` + UserParams string `toml:"user_params"` + ExtraHeader string `toml:"additional_context"` } type sectionPromptsChat struct { - System string `toml:"system"` + System string `toml:"system"` } type sectionPromptsCodeAction struct { - RewriteSystem string `toml:"rewrite_system"` - DiagnosticsSystem string `toml:"diagnostics_system"` - DocumentSystem string `toml:"document_system"` - RewriteUser string `toml:"rewrite_user"` - DiagnosticsUser string `toml:"diagnostics_user"` - DocumentUser string `toml:"document_user"` - GoTestSystem string `toml:"go_test_system"` - GoTestUser string `toml:"go_test_user"` + RewriteSystem string `toml:"rewrite_system"` + DiagnosticsSystem string `toml:"diagnostics_system"` + DocumentSystem string `toml:"document_system"` + RewriteUser string `toml:"rewrite_user"` + DiagnosticsUser string `toml:"diagnostics_user"` + DocumentUser string `toml:"document_user"` + GoTestSystem string `toml:"go_test_system"` + GoTestUser string `toml:"go_test_user"` } type sectionPromptsCLI struct { - DefaultSystem string `toml:"default_system"` - ExplainSystem string `toml:"explain_system"` + DefaultSystem string `toml:"default_system"` + ExplainSystem string `toml:"explain_system"` } type sectionPromptsProviderNative struct { - Completion string `toml:"completion"` + Completion string `toml:"completion"` } func (fc *fileConfig) toApp() App { - out := App{} - - // Merge section: general - if (fc.General != sectionGeneral{}) || fc.General.CodingTemperature != nil { - tmp := App{ - MaxTokens: fc.General.MaxTokens, - ContextMode: fc.General.ContextMode, - ContextWindowLines: fc.General.ContextWindowLines, - MaxContextTokens: fc.General.MaxContextTokens, - CodingTemperature: fc.General.CodingTemperature, - } - out.mergeBasics(&tmp) - } - - // logging - if (fc.Logging != sectionLogging{}) { - tmp := App{LogPreviewLimit: fc.Logging.LogPreviewLimit} - out.mergeBasics(&tmp) - } - - // completion - if (fc.Completion != sectionCompletion{}) { - tmp := App{ - CompletionDebounceMs: fc.Completion.CompletionDebounceMs, - CompletionThrottleMs: fc.Completion.CompletionThrottleMs, - ManualInvokeMinPrefix: fc.Completion.ManualInvokeMinPrefix, - } - out.mergeBasics(&tmp) - } - - // triggers - if len(fc.Triggers.TriggerCharacters) > 0 { - tmp := App{TriggerCharacters: fc.Triggers.TriggerCharacters} - out.mergeBasics(&tmp) - } - - // inline - if (fc.Inline != sectionInline{}) { - tmp := App{InlineOpen: fc.Inline.InlineOpen, InlineClose: fc.Inline.InlineClose} - out.mergeBasics(&tmp) - } - - // chat - if strings.TrimSpace(fc.Chat.ChatSuffix) != "" || len(fc.Chat.ChatPrefixes) > 0 { - tmp := App{ChatSuffix: fc.Chat.ChatSuffix, ChatPrefixes: fc.Chat.ChatPrefixes} - out.mergeBasics(&tmp) - } - - // provider - if strings.TrimSpace(fc.Provider.Name) != "" { - tmp := App{Provider: fc.Provider.Name} - out.mergeBasics(&tmp) - } - - // openai - if (fc.OpenAI != sectionOpenAI{}) || fc.OpenAI.Temperature != nil { - tmp := App{ - OpenAIBaseURL: fc.OpenAI.BaseURL, - OpenAIModel: fc.OpenAI.Model, - OpenAITemperature: fc.OpenAI.Temperature, - } - out.mergeProviderFields(&tmp) - } - - // copilot - if (fc.Copilot != sectionCopilot{}) || fc.Copilot.Temperature != nil { - tmp := App{ - CopilotBaseURL: fc.Copilot.BaseURL, - CopilotModel: fc.Copilot.Model, - CopilotTemperature: fc.Copilot.Temperature, - } - out.mergeProviderFields(&tmp) - } - - // ollama - if (fc.Ollama != sectionOllama{}) || fc.Ollama.Temperature != nil { - tmp := App{ - OllamaBaseURL: fc.Ollama.BaseURL, - OllamaModel: fc.Ollama.Model, - OllamaTemperature: fc.Ollama.Temperature, - } - out.mergeProviderFields(&tmp) - } - - // prompts - // completion - if (fc.Prompts.Completion != sectionPromptsCompletion{}) { - if strings.TrimSpace(fc.Prompts.Completion.SystemGeneral) != "" { - out.PromptCompletionSystemGeneral = fc.Prompts.Completion.SystemGeneral - } - if strings.TrimSpace(fc.Prompts.Completion.SystemParams) != "" { - out.PromptCompletionSystemParams = fc.Prompts.Completion.SystemParams - } - if strings.TrimSpace(fc.Prompts.Completion.SystemInline) != "" { - out.PromptCompletionSystemInline = fc.Prompts.Completion.SystemInline - } - if strings.TrimSpace(fc.Prompts.Completion.UserGeneral) != "" { - out.PromptCompletionUserGeneral = fc.Prompts.Completion.UserGeneral - } - if strings.TrimSpace(fc.Prompts.Completion.UserParams) != "" { - out.PromptCompletionUserParams = fc.Prompts.Completion.UserParams - } - if strings.TrimSpace(fc.Prompts.Completion.ExtraHeader) != "" { - out.PromptCompletionExtraHeader = fc.Prompts.Completion.ExtraHeader - } - } - // chat - if strings.TrimSpace(fc.Prompts.Chat.System) != "" { - out.PromptChatSystem = fc.Prompts.Chat.System - } - // code action - if (fc.Prompts.CodeAction != sectionPromptsCodeAction{}) { - if strings.TrimSpace(fc.Prompts.CodeAction.RewriteSystem) != "" { - out.PromptCodeActionRewriteSystem = fc.Prompts.CodeAction.RewriteSystem - } - if strings.TrimSpace(fc.Prompts.CodeAction.DiagnosticsSystem) != "" { - out.PromptCodeActionDiagnosticsSystem = fc.Prompts.CodeAction.DiagnosticsSystem - } - if strings.TrimSpace(fc.Prompts.CodeAction.DocumentSystem) != "" { - out.PromptCodeActionDocumentSystem = fc.Prompts.CodeAction.DocumentSystem - } - if strings.TrimSpace(fc.Prompts.CodeAction.RewriteUser) != "" { - out.PromptCodeActionRewriteUser = fc.Prompts.CodeAction.RewriteUser - } - if strings.TrimSpace(fc.Prompts.CodeAction.DiagnosticsUser) != "" { - out.PromptCodeActionDiagnosticsUser = fc.Prompts.CodeAction.DiagnosticsUser - } - if strings.TrimSpace(fc.Prompts.CodeAction.DocumentUser) != "" { - out.PromptCodeActionDocumentUser = fc.Prompts.CodeAction.DocumentUser - } - if strings.TrimSpace(fc.Prompts.CodeAction.GoTestSystem) != "" { - out.PromptCodeActionGoTestSystem = fc.Prompts.CodeAction.GoTestSystem - } - if strings.TrimSpace(fc.Prompts.CodeAction.GoTestUser) != "" { - out.PromptCodeActionGoTestUser = fc.Prompts.CodeAction.GoTestUser - } - } - // cli - if (fc.Prompts.CLI != sectionPromptsCLI{}) { - if strings.TrimSpace(fc.Prompts.CLI.DefaultSystem) != "" { - out.PromptCLIDefaultSystem = fc.Prompts.CLI.DefaultSystem - } - if strings.TrimSpace(fc.Prompts.CLI.ExplainSystem) != "" { - out.PromptCLIExplainSystem = fc.Prompts.CLI.ExplainSystem - } - } - // provider-native - if strings.TrimSpace(fc.Prompts.ProviderNative.Completion) != "" { - out.PromptNativeCompletion = fc.Prompts.ProviderNative.Completion - } - - return out + out := App{} + + // Merge section: general + if (fc.General != sectionGeneral{}) || fc.General.CodingTemperature != nil { + tmp := App{ + MaxTokens: fc.General.MaxTokens, + ContextMode: fc.General.ContextMode, + ContextWindowLines: fc.General.ContextWindowLines, + MaxContextTokens: fc.General.MaxContextTokens, + CodingTemperature: fc.General.CodingTemperature, + } + out.mergeBasics(&tmp) + } + + // logging + if (fc.Logging != sectionLogging{}) { + tmp := App{LogPreviewLimit: fc.Logging.LogPreviewLimit} + out.mergeBasics(&tmp) + } + + // completion + if (fc.Completion != sectionCompletion{}) { + tmp := App{ + CompletionDebounceMs: fc.Completion.CompletionDebounceMs, + CompletionThrottleMs: fc.Completion.CompletionThrottleMs, + ManualInvokeMinPrefix: fc.Completion.ManualInvokeMinPrefix, + } + out.mergeBasics(&tmp) + } + + // triggers + if len(fc.Triggers.TriggerCharacters) > 0 { + tmp := App{TriggerCharacters: fc.Triggers.TriggerCharacters} + out.mergeBasics(&tmp) + } + + // inline + if (fc.Inline != sectionInline{}) { + tmp := App{InlineOpen: fc.Inline.InlineOpen, InlineClose: fc.Inline.InlineClose} + out.mergeBasics(&tmp) + } + + // chat + if strings.TrimSpace(fc.Chat.ChatSuffix) != "" || len(fc.Chat.ChatPrefixes) > 0 { + tmp := App{ChatSuffix: fc.Chat.ChatSuffix, ChatPrefixes: fc.Chat.ChatPrefixes} + out.mergeBasics(&tmp) + } + + // provider + if strings.TrimSpace(fc.Provider.Name) != "" { + tmp := App{Provider: fc.Provider.Name} + out.mergeBasics(&tmp) + } + + // openai + if (fc.OpenAI != sectionOpenAI{}) || fc.OpenAI.Temperature != nil { + tmp := App{ + OpenAIBaseURL: fc.OpenAI.BaseURL, + OpenAIModel: fc.OpenAI.Model, + OpenAITemperature: fc.OpenAI.Temperature, + } + out.mergeProviderFields(&tmp) + } + + // copilot + if (fc.Copilot != sectionCopilot{}) || fc.Copilot.Temperature != nil { + tmp := App{ + CopilotBaseURL: fc.Copilot.BaseURL, + CopilotModel: fc.Copilot.Model, + CopilotTemperature: fc.Copilot.Temperature, + } + out.mergeProviderFields(&tmp) + } + + // ollama + if (fc.Ollama != sectionOllama{}) || fc.Ollama.Temperature != nil { + tmp := App{ + OllamaBaseURL: fc.Ollama.BaseURL, + OllamaModel: fc.Ollama.Model, + OllamaTemperature: fc.Ollama.Temperature, + } + out.mergeProviderFields(&tmp) + } + + // prompts + // completion + if (fc.Prompts.Completion != sectionPromptsCompletion{}) { + if strings.TrimSpace(fc.Prompts.Completion.SystemGeneral) != "" { + out.PromptCompletionSystemGeneral = fc.Prompts.Completion.SystemGeneral + } + if strings.TrimSpace(fc.Prompts.Completion.SystemParams) != "" { + out.PromptCompletionSystemParams = fc.Prompts.Completion.SystemParams + } + if strings.TrimSpace(fc.Prompts.Completion.SystemInline) != "" { + out.PromptCompletionSystemInline = fc.Prompts.Completion.SystemInline + } + if strings.TrimSpace(fc.Prompts.Completion.UserGeneral) != "" { + out.PromptCompletionUserGeneral = fc.Prompts.Completion.UserGeneral + } + if strings.TrimSpace(fc.Prompts.Completion.UserParams) != "" { + out.PromptCompletionUserParams = fc.Prompts.Completion.UserParams + } + if strings.TrimSpace(fc.Prompts.Completion.ExtraHeader) != "" { + out.PromptCompletionExtraHeader = fc.Prompts.Completion.ExtraHeader + } + } + // chat + if strings.TrimSpace(fc.Prompts.Chat.System) != "" { + out.PromptChatSystem = fc.Prompts.Chat.System + } + // code action + if (fc.Prompts.CodeAction != sectionPromptsCodeAction{}) { + if strings.TrimSpace(fc.Prompts.CodeAction.RewriteSystem) != "" { + out.PromptCodeActionRewriteSystem = fc.Prompts.CodeAction.RewriteSystem + } + if strings.TrimSpace(fc.Prompts.CodeAction.DiagnosticsSystem) != "" { + out.PromptCodeActionDiagnosticsSystem = fc.Prompts.CodeAction.DiagnosticsSystem + } + if strings.TrimSpace(fc.Prompts.CodeAction.DocumentSystem) != "" { + out.PromptCodeActionDocumentSystem = fc.Prompts.CodeAction.DocumentSystem + } + if strings.TrimSpace(fc.Prompts.CodeAction.RewriteUser) != "" { + out.PromptCodeActionRewriteUser = fc.Prompts.CodeAction.RewriteUser + } + if strings.TrimSpace(fc.Prompts.CodeAction.DiagnosticsUser) != "" { + out.PromptCodeActionDiagnosticsUser = fc.Prompts.CodeAction.DiagnosticsUser + } + if strings.TrimSpace(fc.Prompts.CodeAction.DocumentUser) != "" { + out.PromptCodeActionDocumentUser = fc.Prompts.CodeAction.DocumentUser + } + if strings.TrimSpace(fc.Prompts.CodeAction.GoTestSystem) != "" { + out.PromptCodeActionGoTestSystem = fc.Prompts.CodeAction.GoTestSystem + } + if strings.TrimSpace(fc.Prompts.CodeAction.GoTestUser) != "" { + out.PromptCodeActionGoTestUser = fc.Prompts.CodeAction.GoTestUser + } + } + // cli + if (fc.Prompts.CLI != sectionPromptsCLI{}) { + if strings.TrimSpace(fc.Prompts.CLI.DefaultSystem) != "" { + out.PromptCLIDefaultSystem = fc.Prompts.CLI.DefaultSystem + } + if strings.TrimSpace(fc.Prompts.CLI.ExplainSystem) != "" { + out.PromptCLIExplainSystem = fc.Prompts.CLI.ExplainSystem + } + } + // provider-native + if strings.TrimSpace(fc.Prompts.ProviderNative.Completion) != "" { + out.PromptNativeCompletion = fc.Prompts.ProviderNative.Completion + } + + return out } func loadFromFile(path string, logger *log.Logger) (*App, error) { - b, err := os.ReadFile(path) - if err != nil { - if !os.IsNotExist(err) && logger != nil { - logger.Printf("cannot open TOML config file %s: %v", path, err) - } - return nil, err - } - - var tables fileConfig - errTables := toml.NewDecoder(strings.NewReader(string(b))).Decode(&tables) - // Raw map for validation/presence checks - var raw map[string]any - _ = toml.Unmarshal(b, &raw) - if errTables != nil { - if logger != nil { - logger.Printf("invalid TOML config file %s: %v", path, errTables) - } - return nil, errTables - } - - // Reject legacy flat keys at top-level (sectioned-only config is allowed) - legacy := map[string]struct{}{ - "max_tokens": {}, "context_mode": {}, "context_window_lines": {}, "max_context_tokens": {}, - "log_preview_limit": {}, "completion_debounce_ms": {}, "completion_throttle_ms": {}, - "manual_invoke_min_prefix": {}, "trigger_characters": {}, "inline_open": {}, "inline_close": {}, - "chat_suffix": {}, "chat_prefixes": {}, "coding_temperature": {}, "provider": {}, - "openai_model": {}, "openai_base_url": {}, "openai_temperature": {}, - "ollama_model": {}, "ollama_base_url": {}, "ollama_temperature": {}, - "copilot_model": {}, "copilot_base_url": {}, "copilot_temperature": {}, - } - for k := range raw { - if _, isTable := map[string]struct{}{"general": {}, "logging": {}, "completion": {}, "triggers": {}, "inline": {}, "chat": {}, "provider": {}, "openai": {}, "copilot": {}, "ollama": {}, "prompts": {}}[k]; isTable { - continue - } - if _, isLegacy := legacy[k]; isLegacy { - return nil, fmt.Errorf("unsupported flat key '%s' in config; use sectioned tables (see config.toml.example)", k) - } - } - - if logger != nil { - logger.Printf("loaded configuration from %s (TOML)", path) - } - - // Merge order: flat first, then tables (so tables win over zero flat values) - // Build App from tables only - tab := tables.toApp() - // Ensure explicit values from raw map are respected (defensive for ints) - if t, ok := raw["completion"].(map[string]any); ok { - if v, present := t["manual_invoke_min_prefix"]; present { - switch vv := v.(type) { - case int64: - tab.ManualInvokeMinPrefix = int(vv) - case int: - tab.ManualInvokeMinPrefix = vv - case float64: - tab.ManualInvokeMinPrefix = int(vv) - } - } - } - if t, ok := raw["logging"].(map[string]any); ok { - if v, present := t["log_preview_limit"]; present { - switch vv := v.(type) { - case int64: - tab.LogPreviewLimit = int(vv) - case int: - tab.LogPreviewLimit = vv - case float64: - tab.LogPreviewLimit = int(vv) - } - } - } - return &tab, nil + b, err := os.ReadFile(path) + if err != nil { + if !os.IsNotExist(err) && logger != nil { + logger.Printf("cannot open TOML config file %s: %v", path, err) + } + return nil, err + } + + var tables fileConfig + errTables := toml.NewDecoder(strings.NewReader(string(b))).Decode(&tables) + // Raw map for validation/presence checks + var raw map[string]any + _ = toml.Unmarshal(b, &raw) + if errTables != nil { + if logger != nil { + logger.Printf("invalid TOML config file %s: %v", path, errTables) + } + return nil, errTables + } + + // Reject legacy flat keys at top-level (sectioned-only config is allowed) + legacy := map[string]struct{}{ + "max_tokens": {}, "context_mode": {}, "context_window_lines": {}, "max_context_tokens": {}, + "log_preview_limit": {}, "completion_debounce_ms": {}, "completion_throttle_ms": {}, + "manual_invoke_min_prefix": {}, "trigger_characters": {}, "inline_open": {}, "inline_close": {}, + "chat_suffix": {}, "chat_prefixes": {}, "coding_temperature": {}, "provider": {}, + "openai_model": {}, "openai_base_url": {}, "openai_temperature": {}, + "ollama_model": {}, "ollama_base_url": {}, "ollama_temperature": {}, + "copilot_model": {}, "copilot_base_url": {}, "copilot_temperature": {}, + } + for k := range raw { + if _, isTable := map[string]struct{}{"general": {}, "logging": {}, "completion": {}, "triggers": {}, "inline": {}, "chat": {}, "provider": {}, "openai": {}, "copilot": {}, "ollama": {}, "prompts": {}}[k]; isTable { + continue + } + if _, isLegacy := legacy[k]; isLegacy { + return nil, fmt.Errorf("unsupported flat key '%s' in config; use sectioned tables (see config.toml.example)", k) + } + } + + if logger != nil { + logger.Printf("loaded configuration from %s (TOML)", path) + } + + // Merge order: flat first, then tables (so tables win over zero flat values) + // Build App from tables only + tab := tables.toApp() + // Ensure explicit values from raw map are respected (defensive for ints) + if t, ok := raw["completion"].(map[string]any); ok { + if v, present := t["manual_invoke_min_prefix"]; present { + switch vv := v.(type) { + case int64: + tab.ManualInvokeMinPrefix = int(vv) + case int: + tab.ManualInvokeMinPrefix = vv + case float64: + tab.ManualInvokeMinPrefix = int(vv) + } + } + } + if t, ok := raw["logging"].(map[string]any); ok { + if v, present := t["log_preview_limit"]; present { + switch vv := v.(type) { + case int64: + tab.LogPreviewLimit = int(vv) + case int: + tab.LogPreviewLimit = vv + case float64: + tab.LogPreviewLimit = int(vv) + } + } + } + return &tab, nil } func (a *App) mergeWith(other *App) { - a.mergeBasics(other) - a.mergeProviderFields(other) - a.mergePrompts(other) + a.mergeBasics(other) + a.mergeProviderFields(other) + a.mergePrompts(other) } // mergeBasics merges general (non-provider) fields. @@ -562,65 +562,65 @@ func (a *App) mergeBasics(other *App) { // mergePrompts copies non-empty prompt templates from other. func (a *App) mergePrompts(other *App) { - // Completion - if strings.TrimSpace(other.PromptCompletionSystemGeneral) != "" { - a.PromptCompletionSystemGeneral = other.PromptCompletionSystemGeneral - } - if strings.TrimSpace(other.PromptCompletionSystemParams) != "" { - a.PromptCompletionSystemParams = other.PromptCompletionSystemParams - } - if strings.TrimSpace(other.PromptCompletionSystemInline) != "" { - a.PromptCompletionSystemInline = other.PromptCompletionSystemInline - } - if strings.TrimSpace(other.PromptCompletionUserGeneral) != "" { - a.PromptCompletionUserGeneral = other.PromptCompletionUserGeneral - } - if strings.TrimSpace(other.PromptCompletionUserParams) != "" { - a.PromptCompletionUserParams = other.PromptCompletionUserParams - } - if strings.TrimSpace(other.PromptCompletionExtraHeader) != "" { - a.PromptCompletionExtraHeader = other.PromptCompletionExtraHeader - } - // Provider-native - if strings.TrimSpace(other.PromptNativeCompletion) != "" { - a.PromptNativeCompletion = other.PromptNativeCompletion - } - // Chat - if strings.TrimSpace(other.PromptChatSystem) != "" { - a.PromptChatSystem = other.PromptChatSystem - } - // Code actions - if strings.TrimSpace(other.PromptCodeActionRewriteSystem) != "" { - a.PromptCodeActionRewriteSystem = other.PromptCodeActionRewriteSystem - } - if strings.TrimSpace(other.PromptCodeActionDiagnosticsSystem) != "" { - a.PromptCodeActionDiagnosticsSystem = other.PromptCodeActionDiagnosticsSystem - } - if strings.TrimSpace(other.PromptCodeActionDocumentSystem) != "" { - a.PromptCodeActionDocumentSystem = other.PromptCodeActionDocumentSystem - } - if strings.TrimSpace(other.PromptCodeActionRewriteUser) != "" { - a.PromptCodeActionRewriteUser = other.PromptCodeActionRewriteUser - } - if strings.TrimSpace(other.PromptCodeActionDiagnosticsUser) != "" { - a.PromptCodeActionDiagnosticsUser = other.PromptCodeActionDiagnosticsUser - } - if strings.TrimSpace(other.PromptCodeActionDocumentUser) != "" { - a.PromptCodeActionDocumentUser = other.PromptCodeActionDocumentUser - } - if strings.TrimSpace(other.PromptCodeActionGoTestSystem) != "" { - a.PromptCodeActionGoTestSystem = other.PromptCodeActionGoTestSystem - } - if strings.TrimSpace(other.PromptCodeActionGoTestUser) != "" { - a.PromptCodeActionGoTestUser = other.PromptCodeActionGoTestUser - } - // CLI - if strings.TrimSpace(other.PromptCLIDefaultSystem) != "" { - a.PromptCLIDefaultSystem = other.PromptCLIDefaultSystem - } - if strings.TrimSpace(other.PromptCLIExplainSystem) != "" { - a.PromptCLIExplainSystem = other.PromptCLIExplainSystem - } + // Completion + if strings.TrimSpace(other.PromptCompletionSystemGeneral) != "" { + a.PromptCompletionSystemGeneral = other.PromptCompletionSystemGeneral + } + if strings.TrimSpace(other.PromptCompletionSystemParams) != "" { + a.PromptCompletionSystemParams = other.PromptCompletionSystemParams + } + if strings.TrimSpace(other.PromptCompletionSystemInline) != "" { + a.PromptCompletionSystemInline = other.PromptCompletionSystemInline + } + if strings.TrimSpace(other.PromptCompletionUserGeneral) != "" { + a.PromptCompletionUserGeneral = other.PromptCompletionUserGeneral + } + if strings.TrimSpace(other.PromptCompletionUserParams) != "" { + a.PromptCompletionUserParams = other.PromptCompletionUserParams + } + if strings.TrimSpace(other.PromptCompletionExtraHeader) != "" { + a.PromptCompletionExtraHeader = other.PromptCompletionExtraHeader + } + // Provider-native + if strings.TrimSpace(other.PromptNativeCompletion) != "" { + a.PromptNativeCompletion = other.PromptNativeCompletion + } + // Chat + if strings.TrimSpace(other.PromptChatSystem) != "" { + a.PromptChatSystem = other.PromptChatSystem + } + // Code actions + if strings.TrimSpace(other.PromptCodeActionRewriteSystem) != "" { + a.PromptCodeActionRewriteSystem = other.PromptCodeActionRewriteSystem + } + if strings.TrimSpace(other.PromptCodeActionDiagnosticsSystem) != "" { + a.PromptCodeActionDiagnosticsSystem = other.PromptCodeActionDiagnosticsSystem + } + if strings.TrimSpace(other.PromptCodeActionDocumentSystem) != "" { + a.PromptCodeActionDocumentSystem = other.PromptCodeActionDocumentSystem + } + if strings.TrimSpace(other.PromptCodeActionRewriteUser) != "" { + a.PromptCodeActionRewriteUser = other.PromptCodeActionRewriteUser + } + if strings.TrimSpace(other.PromptCodeActionDiagnosticsUser) != "" { + a.PromptCodeActionDiagnosticsUser = other.PromptCodeActionDiagnosticsUser + } + if strings.TrimSpace(other.PromptCodeActionDocumentUser) != "" { + a.PromptCodeActionDocumentUser = other.PromptCodeActionDocumentUser + } + if strings.TrimSpace(other.PromptCodeActionGoTestSystem) != "" { + a.PromptCodeActionGoTestSystem = other.PromptCodeActionGoTestSystem + } + if strings.TrimSpace(other.PromptCodeActionGoTestUser) != "" { + a.PromptCodeActionGoTestUser = other.PromptCodeActionGoTestUser + } + // CLI + if strings.TrimSpace(other.PromptCLIDefaultSystem) != "" { + a.PromptCLIDefaultSystem = other.PromptCLIDefaultSystem + } + if strings.TrimSpace(other.PromptCLIExplainSystem) != "" { + a.PromptCLIExplainSystem = other.PromptCLIExplainSystem + } } // mergeProviderFields merges per-provider configuration. diff --git a/internal/appconfig/config_test.go b/internal/appconfig/config_test.go index 65e6283..d708542 100644 --- a/internal/appconfig/config_test.go +++ b/internal/appconfig/config_test.go @@ -52,9 +52,9 @@ func TestLoad_Defaults_WithLogger_NoFile_NoEnv(t *testing.T) { func TestLoad_FileMerge_And_EnvOverride(t *testing.T) { dir := t.TempDir() t.Setenv("XDG_CONFIG_HOME", dir) - cfgPath := filepath.Join(dir, "hexai", "config.toml") - // file configuration in TOML (sectioned) - writeFile(t, cfgPath, ` + cfgPath := filepath.Join(dir, "hexai", "config.toml") + // file configuration in TOML (sectioned) + writeFile(t, cfgPath, ` [general] max_tokens = 123 context_mode = "file-on-new-func" @@ -144,13 +144,13 @@ temperature = 0.0 t.Fatalf("copilot overrides not applied: %+v", cfg) } - // Ensure file values would have applied absent env - // Spot-check: reset env and reload - for _, k := range []string{ - "HEXAI_MAX_TOKENS", "HEXAI_CONTEXT_MODE", "HEXAI_CONTEXT_WINDOW_LINES", "HEXAI_MAX_CONTEXT_TOKENS", "HEXAI_LOG_PREVIEW_LIMIT", "HEXAI_CODING_TEMPERATURE", "HEXAI_MANUAL_INVOKE_MIN_PREFIX", "HEXAI_COMPLETION_DEBOUNCE_MS", "HEXAI_COMPLETION_THROTTLE_MS", "HEXAI_TRIGGER_CHARACTERS", "HEXAI_PROVIDER", "HEXAI_OPENAI_BASE_URL", "HEXAI_OPENAI_MODEL", "HEXAI_OPENAI_TEMPERATURE", "HEXAI_OLLAMA_BASE_URL", "HEXAI_OLLAMA_MODEL", "HEXAI_OLLAMA_TEMPERATURE", "HEXAI_COPILOT_BASE_URL", "HEXAI_COPILOT_MODEL", "HEXAI_COPILOT_TEMPERATURE", - } { - t.Setenv(k, "") - } + // Ensure file values would have applied absent env + // Spot-check: reset env and reload + for _, k := range []string{ + "HEXAI_MAX_TOKENS", "HEXAI_CONTEXT_MODE", "HEXAI_CONTEXT_WINDOW_LINES", "HEXAI_MAX_CONTEXT_TOKENS", "HEXAI_LOG_PREVIEW_LIMIT", "HEXAI_CODING_TEMPERATURE", "HEXAI_MANUAL_INVOKE_MIN_PREFIX", "HEXAI_COMPLETION_DEBOUNCE_MS", "HEXAI_COMPLETION_THROTTLE_MS", "HEXAI_TRIGGER_CHARACTERS", "HEXAI_PROVIDER", "HEXAI_OPENAI_BASE_URL", "HEXAI_OPENAI_MODEL", "HEXAI_OPENAI_TEMPERATURE", "HEXAI_OLLAMA_BASE_URL", "HEXAI_OLLAMA_MODEL", "HEXAI_OLLAMA_TEMPERATURE", "HEXAI_COPILOT_BASE_URL", "HEXAI_COPILOT_MODEL", "HEXAI_COPILOT_TEMPERATURE", + } { + t.Setenv(k, "") + } cfg2 := Load(logger) if cfg2.MaxTokens != 123 || cfg2.ContextMode != "file-on-new-func" || cfg2.ContextWindowLines != 50 || cfg2.MaxContextTokens != 999 || cfg2.LogPreviewLimit != 0 { t.Fatalf("file merge not applied: %+v", cfg2) @@ -192,10 +192,10 @@ func TestLoadFromFile_InvalidTOML(t *testing.T) { } func TestLoad_FileTables_Sectioned(t *testing.T) { - dir := t.TempDir() - t.Setenv("XDG_CONFIG_HOME", dir) - cfgPath := filepath.Join(dir, "hexai", "config.toml") - content := ` + dir := t.TempDir() + t.Setenv("XDG_CONFIG_HOME", dir) + cfgPath := filepath.Join(dir, "hexai", "config.toml") + content := ` [general] max_tokens = 111 context_mode = "window" @@ -240,44 +240,44 @@ model = "ghost" base_url = "http://copilot" temperature = 0.0 ` - writeFile(t, cfgPath, content) - - // Ensure no env override interferes with manual_invoke_min_prefix in this test - t.Setenv("HEXAI_MANUAL_INVOKE_MIN_PREFIX", "") - logger := newLogger() - cfg := Load(logger) - - if cfg.MaxTokens != 111 || cfg.ContextMode != "window" || cfg.ContextWindowLines != 42 || cfg.MaxContextTokens != 777 { - t.Fatalf("sectioned basics wrong: %+v", cfg) - } - if cfg.LogPreviewLimit != 9 || cfg.CompletionDebounceMs != 123 || cfg.CompletionThrottleMs != 456 || cfg.ManualInvokeMinPrefix != 3 { - t.Fatalf("sectioned ints wrong: %+v", cfg) - } - if cfg.CodingTemperature == nil || *cfg.CodingTemperature != 0.1 { - t.Fatalf("sectioned coding_temperature wrong: %+v", cfg.CodingTemperature) - } - if want := []string{".", ":"}; !reflect.DeepEqual(cfg.TriggerCharacters, want) { - t.Fatalf("sectioned trigger chars wrong: got %v", cfg.TriggerCharacters) - } - if cfg.Provider != "openai" { - t.Fatalf("sectioned provider name wrong: %q", cfg.Provider) - } - if cfg.OpenAIModel != "gpt-x" || cfg.OpenAIBaseURL != "https://api.example" || cfg.OpenAITemperature == nil || *cfg.OpenAITemperature != 0.0 { - t.Fatalf("sectioned openai wrong: %+v", cfg) - } - if cfg.OllamaModel != "mistral" || cfg.OllamaBaseURL != "http://ollama" || cfg.OllamaTemperature == nil || *cfg.OllamaTemperature != 0.0 { - t.Fatalf("sectioned ollama wrong: %+v", cfg) - } - if cfg.CopilotModel != "ghost" || cfg.CopilotBaseURL != "http://copilot" || cfg.CopilotTemperature == nil || *cfg.CopilotTemperature != 0.0 { - t.Fatalf("sectioned copilot wrong: %+v", cfg) - } + writeFile(t, cfgPath, content) + + // Ensure no env override interferes with manual_invoke_min_prefix in this test + t.Setenv("HEXAI_MANUAL_INVOKE_MIN_PREFIX", "") + logger := newLogger() + cfg := Load(logger) + + if cfg.MaxTokens != 111 || cfg.ContextMode != "window" || cfg.ContextWindowLines != 42 || cfg.MaxContextTokens != 777 { + t.Fatalf("sectioned basics wrong: %+v", cfg) + } + if cfg.LogPreviewLimit != 9 || cfg.CompletionDebounceMs != 123 || cfg.CompletionThrottleMs != 456 || cfg.ManualInvokeMinPrefix != 3 { + t.Fatalf("sectioned ints wrong: %+v", cfg) + } + if cfg.CodingTemperature == nil || *cfg.CodingTemperature != 0.1 { + t.Fatalf("sectioned coding_temperature wrong: %+v", cfg.CodingTemperature) + } + if want := []string{".", ":"}; !reflect.DeepEqual(cfg.TriggerCharacters, want) { + t.Fatalf("sectioned trigger chars wrong: got %v", cfg.TriggerCharacters) + } + if cfg.Provider != "openai" { + t.Fatalf("sectioned provider name wrong: %q", cfg.Provider) + } + if cfg.OpenAIModel != "gpt-x" || cfg.OpenAIBaseURL != "https://api.example" || cfg.OpenAITemperature == nil || *cfg.OpenAITemperature != 0.0 { + t.Fatalf("sectioned openai wrong: %+v", cfg) + } + if cfg.OllamaModel != "mistral" || cfg.OllamaBaseURL != "http://ollama" || cfg.OllamaTemperature == nil || *cfg.OllamaTemperature != 0.0 { + t.Fatalf("sectioned ollama wrong: %+v", cfg) + } + if cfg.CopilotModel != "ghost" || cfg.CopilotBaseURL != "http://copilot" || cfg.CopilotTemperature == nil || *cfg.CopilotTemperature != 0.0 { + t.Fatalf("sectioned copilot wrong: %+v", cfg) + } } func TestLoad_FileTables_Prompts_AllSections(t *testing.T) { - dir := t.TempDir() - t.Setenv("XDG_CONFIG_HOME", dir) - cfgPath := filepath.Join(dir, "hexai", "config.toml") - content := ` + dir := t.TempDir() + t.Setenv("XDG_CONFIG_HOME", dir) + cfgPath := filepath.Join(dir, "hexai", "config.toml") + content := ` [prompts.completion] system_general = "SYS-GENERAL" system_params = "SYS-PARAMS" @@ -306,37 +306,37 @@ go_test_user = "GOTEST-USER {{function}}" default_system = "CLI-DEFAULT" explain_system = "CLI-EXPLAIN" ` - writeFile(t, cfgPath, content) - - cfg := Load(newLogger()) - - // completion - if cfg.PromptCompletionSystemGeneral != "SYS-GENERAL" || cfg.PromptCompletionSystemParams != "SYS-PARAMS" || cfg.PromptCompletionSystemInline != "SYS-INLINE" { - t.Fatalf("completion system prompts wrong: %+v", cfg) - } - if cfg.PromptCompletionUserGeneral == "" || cfg.PromptCompletionUserParams == "" || cfg.PromptCompletionExtraHeader == "" { - t.Fatalf("completion user/extra prompts not loaded") - } - // provider-native - if cfg.PromptNativeCompletion != "NATIVE {{path}} {{before}}" { - t.Fatalf("provider-native prompt wrong: %q", cfg.PromptNativeCompletion) - } - // chat - if cfg.PromptChatSystem != "CHAT-SYS" { - t.Fatalf("chat system wrong: %q", cfg.PromptChatSystem) - } - // code action - if cfg.PromptCodeActionRewriteSystem != "REWRITE-SYS" || cfg.PromptCodeActionDiagnosticsSystem != "DIAG-SYS" || cfg.PromptCodeActionDocumentSystem != "DOC-SYS" { - t.Fatalf("code action system prompts wrong") - } - if cfg.PromptCodeActionRewriteUser == "" || cfg.PromptCodeActionDiagnosticsUser == "" || cfg.PromptCodeActionDocumentUser == "" { - t.Fatalf("code action user prompts not loaded") - } - if cfg.PromptCodeActionGoTestSystem != "GOTEST-SYS" || cfg.PromptCodeActionGoTestUser == "" { - t.Fatalf("go test prompts wrong") - } - // CLI - if cfg.PromptCLIDefaultSystem != "CLI-DEFAULT" || cfg.PromptCLIExplainSystem != "CLI-EXPLAIN" { - t.Fatalf("cli prompts wrong: %q %q", cfg.PromptCLIDefaultSystem, cfg.PromptCLIExplainSystem) - } + writeFile(t, cfgPath, content) + + cfg := Load(newLogger()) + + // completion + if cfg.PromptCompletionSystemGeneral != "SYS-GENERAL" || cfg.PromptCompletionSystemParams != "SYS-PARAMS" || cfg.PromptCompletionSystemInline != "SYS-INLINE" { + t.Fatalf("completion system prompts wrong: %+v", cfg) + } + if cfg.PromptCompletionUserGeneral == "" || cfg.PromptCompletionUserParams == "" || cfg.PromptCompletionExtraHeader == "" { + t.Fatalf("completion user/extra prompts not loaded") + } + // provider-native + if cfg.PromptNativeCompletion != "NATIVE {{path}} {{before}}" { + t.Fatalf("provider-native prompt wrong: %q", cfg.PromptNativeCompletion) + } + // chat + if cfg.PromptChatSystem != "CHAT-SYS" { + t.Fatalf("chat system wrong: %q", cfg.PromptChatSystem) + } + // code action + if cfg.PromptCodeActionRewriteSystem != "REWRITE-SYS" || cfg.PromptCodeActionDiagnosticsSystem != "DIAG-SYS" || cfg.PromptCodeActionDocumentSystem != "DOC-SYS" { + t.Fatalf("code action system prompts wrong") + } + if cfg.PromptCodeActionRewriteUser == "" || cfg.PromptCodeActionDiagnosticsUser == "" || cfg.PromptCodeActionDocumentUser == "" { + t.Fatalf("code action user prompts not loaded") + } + if cfg.PromptCodeActionGoTestSystem != "GOTEST-SYS" || cfg.PromptCodeActionGoTestUser == "" { + t.Fatalf("go test prompts wrong") + } + // CLI + if cfg.PromptCLIDefaultSystem != "CLI-DEFAULT" || cfg.PromptCLIExplainSystem != "CLI-EXPLAIN" { + t.Fatalf("cli prompts wrong: %q %q", cfg.PromptCLIDefaultSystem, cfg.PromptCLIExplainSystem) + } } diff --git a/internal/hexaicli/run.go b/internal/hexaicli/run.go index ca561bb..f10850b 100644 --- a/internal/hexaicli/run.go +++ b/internal/hexaicli/run.go @@ -3,18 +3,19 @@ package hexaicli import ( - "bufio" - "context" - "fmt" - "io" - "log" - "os" - "strings" - "time" + "bufio" + "context" + "fmt" + "io" + "log" + "os" + "strings" + "time" - "codeberg.org/snonux/hexai/internal/appconfig" - "codeberg.org/snonux/hexai/internal/llm" - "codeberg.org/snonux/hexai/internal/logging" + "codeberg.org/snonux/hexai/internal/appconfig" + "codeberg.org/snonux/hexai/internal/logging" + "codeberg.org/snonux/hexai/internal/llm" + "codeberg.org/snonux/hexai/internal/llmutils" ) // Run executes the Hexai CLI behavior given arguments and I/O streams. @@ -23,24 +24,24 @@ func Run(ctx context.Context, args []string, stdin io.Reader, stdout, stderr io. // Load configuration with a logger so file-based config is respected. logger := log.New(stderr, "hexai ", log.LstdFlags|log.Lmsgprefix) cfg := appconfig.Load(logger) - client, err := newClientFromConfig(cfg) - if err != nil { - fmt.Fprintf(stderr, logging.AnsiBase+"hexai: LLM disabled: %v"+logging.AnsiReset+"\n", err) - return err - } - // Inline the flow here to use configured CLI prompts. - input, rerr := readInput(stdin, args) - if rerr != nil { - fmt.Fprintln(stderr, logging.AnsiBase+rerr.Error()+logging.AnsiReset) - return rerr - } - printProviderInfo(stderr, client) - msgs := buildMessagesFromConfig(cfg, input) - if err := runChat(ctx, client, msgs, input, stdout, stderr); err != nil { - fmt.Fprintf(stderr, logging.AnsiBase+"hexai: error: %v"+logging.AnsiReset+"\n", err) - return err - } - return nil + client, err := llmutils.NewClientFromApp(cfg) + if err != nil { + fmt.Fprintf(stderr, logging.AnsiBase+"hexai: LLM disabled: %v"+logging.AnsiReset+"\n", err) + return err + } + // Inline the flow here to use configured CLI prompts. + input, rerr := readInput(stdin, args) + if rerr != nil { + fmt.Fprintln(stderr, logging.AnsiBase+rerr.Error()+logging.AnsiReset) + return rerr + } + printProviderInfo(stderr, client) + msgs := buildMessagesFromConfig(cfg, input) + if err := runChat(ctx, client, msgs, input, stdout, stderr); err != nil { + fmt.Fprintf(stderr, logging.AnsiBase+"hexai: error: %v"+logging.AnsiReset+"\n", err) + return err + } + return nil } // RunWithClient executes the CLI flow using an already-constructed client. @@ -52,7 +53,7 @@ func RunWithClient(ctx context.Context, args []string, stdin io.Reader, stdout, return err } printProviderInfo(stderr, client) - msgs := buildMessages(input) + msgs := buildMessages(input) if err := runChat(ctx, client, msgs, input, stdout, stderr); err != nil { fmt.Fprintf(stderr, logging.AnsiBase+"hexai: error: %v"+logging.AnsiReset+"\n", err) return err @@ -81,31 +82,7 @@ func readInput(stdin io.Reader, args []string) (string, error) { } // newClientFromConfig builds an LLM client from the app config and env keys. -func newClientFromConfig(cfg appconfig.App) (llm.Client, error) { - llmCfg := llm.Config{ - Provider: cfg.Provider, - OpenAIBaseURL: cfg.OpenAIBaseURL, - OpenAIModel: cfg.OpenAIModel, - OpenAITemperature: cfg.OpenAITemperature, - OllamaBaseURL: cfg.OllamaBaseURL, - OllamaModel: cfg.OllamaModel, - OllamaTemperature: cfg.OllamaTemperature, - CopilotBaseURL: cfg.CopilotBaseURL, - CopilotModel: cfg.CopilotModel, - CopilotTemperature: cfg.CopilotTemperature, - } - // Prefer HEXAI_OPENAI_API_KEY; fall back to OPENAI_API_KEY - oaKey := os.Getenv("HEXAI_OPENAI_API_KEY") - if strings.TrimSpace(oaKey) == "" { - oaKey = os.Getenv("OPENAI_API_KEY") - } - // Prefer HEXAI_COPILOT_API_KEY; fall back to COPILOT_API_KEY - cpKey := os.Getenv("HEXAI_COPILOT_API_KEY") - if strings.TrimSpace(cpKey) == "" { - cpKey = os.Getenv("COPILOT_API_KEY") - } - return llm.NewFromConfig(llmCfg, oaKey, cpKey) -} +// client construction moved to internal/llmutils // buildMessages creates system and user messages based on input content. func buildMessages(input string) []llm.Message { @@ -122,17 +99,17 @@ func buildMessages(input string) []llm.Message { // buildMessagesFromConfig uses configured CLI system prompts. func buildMessagesFromConfig(cfg appconfig.App, input string) []llm.Message { - lower := strings.ToLower(input) - system := cfg.PromptCLIDefaultSystem - if strings.Contains(lower, "explain") { - if strings.TrimSpace(cfg.PromptCLIExplainSystem) != "" { - system = cfg.PromptCLIExplainSystem - } - } - return []llm.Message{ - {Role: "system", Content: system}, - {Role: "user", Content: input}, - } + lower := strings.ToLower(input) + system := cfg.PromptCLIDefaultSystem + if strings.Contains(lower, "explain") { + if strings.TrimSpace(cfg.PromptCLIExplainSystem) != "" { + system = cfg.PromptCLIExplainSystem + } + } + return []llm.Message{ + {Role: "system", Content: system}, + {Role: "user", Content: input}, + } } // runChat executes the chat request, handling streaming and summary output. @@ -164,5 +141,10 @@ func runChat(ctx context.Context, client llm.Client, msgs []llm.Message, input s // printProviderInfo writes the provider/model line to stderr. func printProviderInfo(errw io.Writer, client llm.Client) { - fmt.Fprintf(errw, logging.AnsiBase+"provider=%s model=%s"+logging.AnsiReset+"\n", client.Name(), client.DefaultModel()) + fmt.Fprintf(errw, logging.AnsiBase+"provider=%s model=%s"+logging.AnsiReset+"\n", client.Name(), client.DefaultModel()) +} + +// newClientFromConfig is kept for tests; delegates to llmutils. +func newClientFromConfig(cfg appconfig.App) (llm.Client, error) { + return llmutils.NewClientFromApp(cfg) } diff --git a/internal/hexailsp/run.go b/internal/hexailsp/run.go index 9a69e51..72cf902 100644 --- a/internal/hexailsp/run.go +++ b/internal/hexailsp/run.go @@ -106,39 +106,39 @@ func ensureFactory(factory ServerFactory) ServerFactory { } func makeServerOptions(cfg appconfig.App, logContext bool, client llm.Client) lsp.ServerOptions { - return lsp.ServerOptions{ - LogContext: logContext, - MaxTokens: cfg.MaxTokens, - ContextMode: cfg.ContextMode, - WindowLines: cfg.ContextWindowLines, - MaxContextTokens: cfg.MaxContextTokens, - CodingTemperature: cfg.CodingTemperature, - Client: client, - TriggerCharacters: cfg.TriggerCharacters, - ManualInvokeMinPrefix: cfg.ManualInvokeMinPrefix, - CompletionDebounceMs: cfg.CompletionDebounceMs, - CompletionThrottleMs: cfg.CompletionThrottleMs, - InlineOpen: cfg.InlineOpen, - InlineClose: cfg.InlineClose, - ChatSuffix: cfg.ChatSuffix, - ChatPrefixes: cfg.ChatPrefixes, + return lsp.ServerOptions{ + LogContext: logContext, + MaxTokens: cfg.MaxTokens, + ContextMode: cfg.ContextMode, + WindowLines: cfg.ContextWindowLines, + MaxContextTokens: cfg.MaxContextTokens, + CodingTemperature: cfg.CodingTemperature, + Client: client, + TriggerCharacters: cfg.TriggerCharacters, + ManualInvokeMinPrefix: cfg.ManualInvokeMinPrefix, + CompletionDebounceMs: cfg.CompletionDebounceMs, + CompletionThrottleMs: cfg.CompletionThrottleMs, + InlineOpen: cfg.InlineOpen, + InlineClose: cfg.InlineClose, + ChatSuffix: cfg.ChatSuffix, + ChatPrefixes: cfg.ChatPrefixes, - // Prompts - PromptCompSysGeneral: cfg.PromptCompletionSystemGeneral, - PromptCompSysParams: cfg.PromptCompletionSystemParams, - PromptCompSysInline: cfg.PromptCompletionSystemInline, - PromptCompUserGeneral: cfg.PromptCompletionUserGeneral, - PromptCompUserParams: cfg.PromptCompletionUserParams, - PromptCompExtraHeader: cfg.PromptCompletionExtraHeader, - PromptNativeCompletion: cfg.PromptNativeCompletion, - PromptChatSystem: cfg.PromptChatSystem, - PromptRewriteSystem: cfg.PromptCodeActionRewriteSystem, - PromptDiagnosticsSystem: cfg.PromptCodeActionDiagnosticsSystem, - PromptDocumentSystem: cfg.PromptCodeActionDocumentSystem, - PromptRewriteUser: cfg.PromptCodeActionRewriteUser, - PromptDiagnosticsUser: cfg.PromptCodeActionDiagnosticsUser, - PromptDocumentUser: cfg.PromptCodeActionDocumentUser, - PromptGoTestSystem: cfg.PromptCodeActionGoTestSystem, - PromptGoTestUser: cfg.PromptCodeActionGoTestUser, - } + // Prompts + PromptCompSysGeneral: cfg.PromptCompletionSystemGeneral, + PromptCompSysParams: cfg.PromptCompletionSystemParams, + PromptCompSysInline: cfg.PromptCompletionSystemInline, + PromptCompUserGeneral: cfg.PromptCompletionUserGeneral, + PromptCompUserParams: cfg.PromptCompletionUserParams, + PromptCompExtraHeader: cfg.PromptCompletionExtraHeader, + PromptNativeCompletion: cfg.PromptNativeCompletion, + PromptChatSystem: cfg.PromptChatSystem, + PromptRewriteSystem: cfg.PromptCodeActionRewriteSystem, + PromptDiagnosticsSystem: cfg.PromptCodeActionDiagnosticsSystem, + PromptDocumentSystem: cfg.PromptCodeActionDocumentSystem, + PromptRewriteUser: cfg.PromptCodeActionRewriteUser, + PromptDiagnosticsUser: cfg.PromptCodeActionDiagnosticsUser, + PromptDocumentUser: cfg.PromptCodeActionDocumentUser, + PromptGoTestSystem: cfg.PromptCodeActionGoTestSystem, + PromptGoTestUser: cfg.PromptCodeActionGoTestUser, + } } diff --git a/internal/logging/logging_test.go b/internal/logging/logging_test.go index adeefde..716781e 100644 --- a/internal/logging/logging_test.go +++ b/internal/logging/logging_test.go @@ -1,48 +1,24 @@ package logging import ( - "bytes" - "log" - "strings" - "testing" + "bytes" + "log" + "testing" ) -func TestLogf_WithBindAndPreview(t *testing.T) { - var buf bytes.Buffer - l := log.New(&buf, "", 0) - Bind(l) - - SetLogPreviewLimit(5) - if got := PreviewForLog("abcdef"); got != "abcde…" { - t.Fatalf("preview truncation failed: %q", got) - } - if got := PreviewForLog("abcd"); got != "abcd" { - t.Fatalf("preview (no trunc) failed: %q", got) - } - SetLogPreviewLimit(0) - if got := PreviewForLog("abcdef"); got != "abcdef" { - t.Fatalf("preview unlimited failed: %q", got) - } - - Logf("mod ", "hello %s", "world") - out := buf.String() - if !strings.Contains(out, "hello world") || !strings.Contains(out, AnsiBase) || !strings.Contains(out, AnsiReset) { - t.Fatalf("log output missing parts: %q", out) - } +func TestPreviewAndLogfAndChatLogger(t *testing.T) { + var buf bytes.Buffer + Bind(log.New(&buf, "", 0)) + SetLogPreviewLimit(3) + if got := PreviewForLog("abcdef"); got != "abc…" { + t.Fatalf("preview wrong: %q", got) + } + Logf("unit ", "hello %s", "x") + cl := NewChatLogger("p") + cl.LogStart(true, "m", 0.5, 100, []string{"stop"}, []struct{ Role, Content string }{{"user", "hello"}}) + out := buf.String() + if out == "" || !bytes.Contains([]byte(out), []byte("start")) { + t.Fatalf("expected logged content, got %q", out) + } } -func TestChatLogger_LogStart(t *testing.T) { - var buf bytes.Buffer - Bind(log.New(&buf, "", 0)) - SetLogPreviewLimit(3) - cl := NewChatLogger("prov") - msgs := []struct{ Role, Content string }{{"user", "abcdef"}, {"assistant", "xyz"}} - cl.LogStart(true, "m", 0.2, 128, []string{"END"}, msgs) - out := buf.String() - if !strings.Contains(out, "stream start model=m") || !strings.Contains(out, "messages=2") { - t.Fatalf("missing header log: %q", out) - } - if !strings.Contains(out, "msg[0] role=user") || !strings.Contains(out, "preview=") { - t.Fatalf("missing message logs: %q", out) - } -} diff --git a/internal/lsp/build_prompts_table_test.go b/internal/lsp/build_prompts_table_test.go index 06a3743..bc4f031 100644 --- a/internal/lsp/build_prompts_table_test.go +++ b/internal/lsp/build_prompts_table_test.go @@ -3,22 +3,22 @@ package lsp import "testing" func TestBuildPrompts_Table(t *testing.T) { - p := CompletionParams{TextDocument: TextDocumentIdentifier{URI: "file:///x.go"}, Position: Position{Line: 5, Character: 7}} - cases := []struct { - name string - inParams bool - }{ - {"generic", false}, - {"in_params", true}, - } - for _, c := range cases { - s := newTestServer() - msgs := s.buildCompletionMessages(false, false, "", c.inParams, p, "above", "current", "below", "func ctx") - if len(msgs) < 2 || msgs[0].Role != "system" || msgs[1].Role != "user" { - t.Fatalf("%s: unexpected messages", c.name) - } - if msgs[0].Content == "" || msgs[1].Content == "" { - t.Fatalf("%s: prompts empty", c.name) - } - } + p := CompletionParams{TextDocument: TextDocumentIdentifier{URI: "file:///x.go"}, Position: Position{Line: 5, Character: 7}} + cases := []struct { + name string + inParams bool + }{ + {"generic", false}, + {"in_params", true}, + } + for _, c := range cases { + s := newTestServer() + msgs := s.buildCompletionMessages(false, false, "", c.inParams, p, "above", "current", "below", "func ctx") + if len(msgs) < 2 || msgs[0].Role != "system" || msgs[1].Role != "user" { + t.Fatalf("%s: unexpected messages", c.name) + } + if msgs[0].Content == "" || msgs[1].Content == "" { + t.Fatalf("%s: prompts empty", c.name) + } + } } diff --git a/internal/lsp/chat_prompt_test.go b/internal/lsp/chat_prompt_test.go index f0f5446..25767ab 100644 --- a/internal/lsp/chat_prompt_test.go +++ b/internal/lsp/chat_prompt_test.go @@ -1,36 +1,36 @@ package lsp import ( - "bytes" - "testing" - "time" + "bytes" + "testing" + "time" ) func TestDetectAndHandleChat_UsesConfiguredSystemPrompt(t *testing.T) { - s := newTestServer() - cap := &captureLLM{} - s.llmClient = cap - s.promptChatSystem = "CHAT-SYS" - uri := "file:///chat.txt" - // Avoid nil writer in applyChatEdits - var out bytes.Buffer - s.out = &out - // Line that should trigger chat: ends with '>' and previous char in prefixes - s.setDocument(uri, "help?>\n") - s.detectAndHandleChat(uri) - // Wait briefly for async goroutine to call Chat - for i := 0; i < 20 && len(cap.msgs) == 0; i++ { - time.Sleep(10 * time.Millisecond) - } - if len(cap.msgs) == 0 { - t.Fatalf("expected Chat to be called") - } - if cap.msgs[0].Role != "system" || cap.msgs[0].Content != "CHAT-SYS" { - t.Fatalf("unexpected system msg: %+v", cap.msgs[0]) - } - // Last should be user with prompt without trailing '>' - last := cap.msgs[len(cap.msgs)-1] - if last.Role != "user" || last.Content != "help?" { - t.Fatalf("unexpected last user msg: %+v", last) - } + s := newTestServer() + cap := &captureLLM{} + s.llmClient = cap + s.promptChatSystem = "CHAT-SYS" + uri := "file:///chat.txt" + // Avoid nil writer in applyChatEdits + var out bytes.Buffer + s.out = &out + // Line that should trigger chat: ends with '>' and previous char in prefixes + s.setDocument(uri, "help?>\n") + s.detectAndHandleChat(uri) + // Wait briefly for async goroutine to call Chat + for i := 0; i < 20 && len(cap.msgs) == 0; i++ { + time.Sleep(10 * time.Millisecond) + } + if len(cap.msgs) == 0 { + t.Fatalf("expected Chat to be called") + } + if cap.msgs[0].Role != "system" || cap.msgs[0].Content != "CHAT-SYS" { + t.Fatalf("unexpected system msg: %+v", cap.msgs[0]) + } + // Last should be user with prompt without trailing '>' + last := cap.msgs[len(cap.msgs)-1] + if last.Role != "user" || last.Content != "help?" { + t.Fatalf("unexpected last user msg: %+v", last) + } } diff --git a/internal/lsp/codeaction_prompts_test.go b/internal/lsp/codeaction_prompts_test.go index 6b2ce8c..bbfad10 100644 --- a/internal/lsp/codeaction_prompts_test.go +++ b/internal/lsp/codeaction_prompts_test.go @@ -1,102 +1,101 @@ package lsp import ( - "encoding/json" - "testing" + "encoding/json" + "testing" ) func TestResolveCodeAction_UsesRewritePrompts(t *testing.T) { - s := newTestServer() - cap := &captureLLM{} - s.llmClient = cap - s.promptRewriteSystem = "RSYS" - s.promptRewriteUser = "RUSER {{instruction}} {{selection}}" - uri := "file:///x.go" - s.setDocument(uri, "package p\nvar a=1\n") - payload := struct { - Type string `json:"type"` - URI string `json:"uri"` - Range Range `json:"range"` - Instruction string `json:"instruction"` - Selection string `json:"selection"` - }{Type: "rewrite", URI: uri, Range: Range{Start: Position{Line: 1}, End: Position{Line: 1, Character: 5}}, Instruction: "do it", Selection: "var a"} - raw, _ := json.Marshal(payload) - ca := CodeAction{Title: "Hexai: rewrite selection", Data: raw} - _, _ = s.resolveCodeAction(ca) - if len(cap.msgs) < 2 { - t.Fatalf("expected chat messages") - } - if cap.msgs[0].Content != "RSYS" || cap.msgs[1].Role != "user" || cap.msgs[1].Content != "RUSER do it var a" { - t.Fatalf("unexpected rewrite prompts: %#v", cap.msgs) - } + s := newTestServer() + cap := &captureLLM{} + s.llmClient = cap + s.promptRewriteSystem = "RSYS" + s.promptRewriteUser = "RUSER {{instruction}} {{selection}}" + uri := "file:///x.go" + s.setDocument(uri, "package p\nvar a=1\n") + payload := struct { + Type string `json:"type"` + URI string `json:"uri"` + Range Range `json:"range"` + Instruction string `json:"instruction"` + Selection string `json:"selection"` + }{Type: "rewrite", URI: uri, Range: Range{Start: Position{Line: 1}, End: Position{Line: 1, Character: 5}}, Instruction: "do it", Selection: "var a"} + raw, _ := json.Marshal(payload) + ca := CodeAction{Title: "Hexai: rewrite selection", Data: raw} + _, _ = s.resolveCodeAction(ca) + if len(cap.msgs) < 2 { + t.Fatalf("expected chat messages") + } + if cap.msgs[0].Content != "RSYS" || cap.msgs[1].Role != "user" || cap.msgs[1].Content != "RUSER do it var a" { + t.Fatalf("unexpected rewrite prompts: %#v", cap.msgs) + } } func TestResolveCodeAction_UsesDiagnosticsPrompts(t *testing.T) { - s := newTestServer() - cap := &captureLLM{} - s.llmClient = cap - s.promptDiagnosticsSystem = "DSYS" - s.promptDiagnosticsUser = "DUSER {{diagnostics}} {{selection}}" - uri := "file:///x.go" - s.setDocument(uri, "package p\nvar a=1\n") - payload := struct { - Type string `json:"type"` - URI string `json:"uri"` - Range Range `json:"range"` - Selection string `json:"selection"` - Diagnostics []Diagnostic `json:"diagnostics"` - }{Type: "diagnostics", URI: uri, Range: Range{Start: Position{Line: 1}}, Selection: "var a", Diagnostics: []Diagnostic{{Message: "oops1"}, {Message: "oops2"}}} - raw, _ := json.Marshal(payload) - ca := CodeAction{Title: "Hexai: resolve diagnostics", Data: raw} - _, _ = s.resolveCodeAction(ca) - if len(cap.msgs) < 2 { - t.Fatalf("expected chat messages") - } - if cap.msgs[0].Content != "DSYS" || cap.msgs[1].Role != "user" { - t.Fatalf("unexpected diagnostics prompts: %#v", cap.msgs) - } - if got := cap.msgs[1].Content; !(contains(got, "oops1") && contains(got, "oops2") && contains(got, "var a")) { - t.Fatalf("diagnostics/user content mismatch: %q", got) - } + s := newTestServer() + cap := &captureLLM{} + s.llmClient = cap + s.promptDiagnosticsSystem = "DSYS" + s.promptDiagnosticsUser = "DUSER {{diagnostics}} {{selection}}" + uri := "file:///x.go" + s.setDocument(uri, "package p\nvar a=1\n") + payload := struct { + Type string `json:"type"` + URI string `json:"uri"` + Range Range `json:"range"` + Selection string `json:"selection"` + Diagnostics []Diagnostic `json:"diagnostics"` + }{Type: "diagnostics", URI: uri, Range: Range{Start: Position{Line: 1}}, Selection: "var a", Diagnostics: []Diagnostic{{Message: "oops1"}, {Message: "oops2"}}} + raw, _ := json.Marshal(payload) + ca := CodeAction{Title: "Hexai: resolve diagnostics", Data: raw} + _, _ = s.resolveCodeAction(ca) + if len(cap.msgs) < 2 { + t.Fatalf("expected chat messages") + } + if cap.msgs[0].Content != "DSYS" || cap.msgs[1].Role != "user" { + t.Fatalf("unexpected diagnostics prompts: %#v", cap.msgs) + } + if got := cap.msgs[1].Content; !(contains(got, "oops1") && contains(got, "oops2") && contains(got, "var a")) { + t.Fatalf("diagnostics/user content mismatch: %q", got) + } } func TestResolveCodeAction_UsesDocumentPrompts(t *testing.T) { - s := newTestServer() - cap := &captureLLM{} - s.llmClient = cap - s.promptDocumentSystem = "DOCSYS" - s.promptDocumentUser = "DOCUSER {{selection}}" - uri := "file:///x.go" - s.setDocument(uri, "package p\nvar a=1\n") - payload := struct { - Type string `json:"type"` - URI string `json:"uri"` - Range Range `json:"range"` - Selection string `json:"selection"` - }{Type: "document", URI: uri, Range: Range{Start: Position{Line: 1}}, Selection: "var a"} - raw, _ := json.Marshal(payload) - ca := CodeAction{Title: "Hexai: document selection", Data: raw} - _, _ = s.resolveCodeAction(ca) - if len(cap.msgs) < 2 { - t.Fatalf("expected chat messages") - } - if cap.msgs[0].Content != "DOCSYS" || cap.msgs[1].Content != "DOCUSER var a" { - t.Fatalf("unexpected document prompts: %#v", cap.msgs) - } + s := newTestServer() + cap := &captureLLM{} + s.llmClient = cap + s.promptDocumentSystem = "DOCSYS" + s.promptDocumentUser = "DOCUSER {{selection}}" + uri := "file:///x.go" + s.setDocument(uri, "package p\nvar a=1\n") + payload := struct { + Type string `json:"type"` + URI string `json:"uri"` + Range Range `json:"range"` + Selection string `json:"selection"` + }{Type: "document", URI: uri, Range: Range{Start: Position{Line: 1}}, Selection: "var a"} + raw, _ := json.Marshal(payload) + ca := CodeAction{Title: "Hexai: document selection", Data: raw} + _, _ = s.resolveCodeAction(ca) + if len(cap.msgs) < 2 { + t.Fatalf("expected chat messages") + } + if cap.msgs[0].Content != "DOCSYS" || cap.msgs[1].Content != "DOCUSER var a" { + t.Fatalf("unexpected document prompts: %#v", cap.msgs) + } } func TestGenerateGoTest_UsesPrompts(t *testing.T) { - s := newTestServer() - cap := &captureLLM{} - s.llmClient = cap - s.promptGoTestSystem = "GTSYS" - s.promptGoTestUser = "GTUSER {{function}}" - _ = s.generateGoTestFunction("func Add(a,b int) int {return a+b}") - if len(cap.msgs) < 2 { - t.Fatalf("expected chat messages") - } - if cap.msgs[0].Content != "GTSYS" || !contains(cap.msgs[1].Content, "func Add") { - t.Fatalf("unexpected gotest prompts: %#v", cap.msgs) - } + s := newTestServer() + cap := &captureLLM{} + s.llmClient = cap + s.promptGoTestSystem = "GTSYS" + s.promptGoTestUser = "GTUSER {{function}}" + _ = s.generateGoTestFunction("func Add(a,b int) int {return a+b}") + if len(cap.msgs) < 2 { + t.Fatalf("expected chat messages") + } + if cap.msgs[0].Content != "GTSYS" || !contains(cap.msgs[1].Content, "func Add") { + t.Fatalf("unexpected gotest prompts: %#v", cap.msgs) + } } - diff --git a/internal/lsp/completion_messages_test.go b/internal/lsp/completion_messages_test.go index 37d4a8d..20aac69 100644 --- a/internal/lsp/completion_messages_test.go +++ b/internal/lsp/completion_messages_test.go @@ -59,15 +59,15 @@ func TestBuildDocString_Contents(t *testing.T) { } func TestBuildCompletionMessages_InParams_UsesParamPrompts(t *testing.T) { - s := newTestServer() - p := CompletionParams{TextDocument: TextDocumentIdentifier{URI: "file:///x"}, Position: Position{Line: 0, Character: 5}} - msgs := s.buildCompletionMessages(false, false, "", true, p, "a", "func f(x)", "c", "func f(x)") - if len(msgs) < 2 || msgs[0].Role != "system" || msgs[1].Role != "user" { - t.Fatalf("unexpected messages") - } - if !contains(msgs[0].Content, "function signatures") || !contains(msgs[1].Content, "parameter list") { - t.Fatalf("unexpected in-params prompts: %#v", msgs) - } + s := newTestServer() + p := CompletionParams{TextDocument: TextDocumentIdentifier{URI: "file:///x"}, Position: Position{Line: 0, Character: 5}} + msgs := s.buildCompletionMessages(false, false, "", true, p, "a", "func f(x)", "c", "func f(x)") + if len(msgs) < 2 || msgs[0].Role != "system" || msgs[1].Role != "user" { + t.Fatalf("unexpected messages") + } + if !contains(msgs[0].Content, "function signatures") || !contains(msgs[1].Content, "parameter list") { + t.Fatalf("unexpected in-params prompts: %#v", msgs) + } } func TestPostProcessCompletion_CodeFencesAndDuplicates(t *testing.T) { @@ -87,6 +87,7 @@ func TestPostProcessCompletion_CodeFencesAndDuplicates(t *testing.T) { func contains(s, sub string) bool { return len(s) >= len(sub) && (s == sub || (len(sub) > 0 && (stringIndex(s, sub) >= 0))) } + func stringIndex(s, sub string) int { return len([]rune(s[:])) - len([]rune(s[:])) + (func() int { return intIndex(s, sub) })() } diff --git a/internal/lsp/document_test.go b/internal/lsp/document_test.go index c8b6e2e..652d867 100644 --- a/internal/lsp/document_test.go +++ b/internal/lsp/document_test.go @@ -9,32 +9,32 @@ import ( ) func newTestServer() *Server { - s := &Server{ - logger: log.New(io.Discard, "", 0), - docs: make(map[string]*document), - inlineOpen: ">", - inlineClose: ">", - chatSuffix: ">", - chatPrefixes: []string{"?", "!", ":", ";"}, - } - // Default prompt templates (mirror app defaults) - s.promptCompSysParams = "You are a code completion engine for function signatures. Return only the parameter list contents (without parentheses), no braces, no prose. Prefer idiomatic names and types." - s.promptCompUserParams = "Cursor is inside the function parameter list. Suggest only the parameter list (no parentheses).\nFunction line: {{function}}\nCurrent line (cursor at {{char}}): {{current}}" - s.promptCompSysGeneral = "You are a terse code completion engine. Return only the code to insert, no surrounding prose or backticks. Only continue from the cursor; never repeat characters already present to the left of the cursor on the current line (e.g., if 'name :=' is already typed, only return the right-hand side expression)." - s.promptCompUserGeneral = "Provide the next likely code to insert at the cursor.\nFile: {{file}}\nFunction/context: {{function}}\nAbove line: {{above}}\nCurrent line (cursor at character {{char}}): {{current}}\nBelow line: {{below}}\nOnly return the completion snippet." - s.promptCompSysInline = "You are a precise code completion/refactoring engine. Output only the code to insert with no prose, no comments, and no backticks. Return raw code only." - s.promptCompExtraHeader = "Additional context:\n{{context}}" - s.promptNativeCompletion = "// Path: {{path}}\n{{before}}" - s.promptChatSystem = "You are a helpful coding assistant. Answer concisely and clearly." - s.promptRewriteSystem = "You are a precise code refactoring engine. Rewrite the given code strictly according to the instruction. Return only the updated code with no prose or backticks. Preserve formatting where reasonable." - s.promptDiagnosticsSystem = "You are a precise code fixer. Resolve the given diagnostics by editing only the selected code. Return only the corrected code with no prose or backticks. Keep behavior and style, and avoid unrelated changes." - s.promptDocumentSystem = "You are a precise code documentation engine. Add idiomatic documentation comments to the given code. Preserve exact behavior and formatting as much as possible. Return only the updated code with comments, no prose or backticks." - s.promptRewriteUser = "Instruction: {{instruction}}\n\nSelected code to transform:\n{{selection}}" - s.promptDiagnosticsUser = "Diagnostics to resolve (selection only):\n{{diagnostics}}\n\nSelected code:\n{{selection}}" - s.promptDocumentUser = "Add documentation comments to this code:\n{{selection}}" - s.promptGoTestSystem = "You are a precise Go unit test generator. Given a Go function, write one or more Test* functions using the testing package. Do NOT include package or imports, only the test function(s). Prefer table-driven tests. Keep it minimal and idiomatic." - s.promptGoTestUser = "Function under test:\n{{function}}" - // Keep package-level helpers in sync for tests using free functions + s := &Server{ + logger: log.New(io.Discard, "", 0), + docs: make(map[string]*document), + inlineOpen: ">", + inlineClose: ">", + chatSuffix: ">", + chatPrefixes: []string{"?", "!", ":", ";"}, + } + // Default prompt templates (mirror app defaults) + s.promptCompSysParams = "You are a code completion engine for function signatures. Return only the parameter list contents (without parentheses), no braces, no prose. Prefer idiomatic names and types." + s.promptCompUserParams = "Cursor is inside the function parameter list. Suggest only the parameter list (no parentheses).\nFunction line: {{function}}\nCurrent line (cursor at {{char}}): {{current}}" + s.promptCompSysGeneral = "You are a terse code completion engine. Return only the code to insert, no surrounding prose or backticks. Only continue from the cursor; never repeat characters already present to the left of the cursor on the current line (e.g., if 'name :=' is already typed, only return the right-hand side expression)." + s.promptCompUserGeneral = "Provide the next likely code to insert at the cursor.\nFile: {{file}}\nFunction/context: {{function}}\nAbove line: {{above}}\nCurrent line (cursor at character {{char}}): {{current}}\nBelow line: {{below}}\nOnly return the completion snippet." + s.promptCompSysInline = "You are a precise code completion/refactoring engine. Output only the code to insert with no prose, no comments, and no backticks. Return raw code only." + s.promptCompExtraHeader = "Additional context:\n{{context}}" + s.promptNativeCompletion = "// Path: {{path}}\n{{before}}" + s.promptChatSystem = "You are a helpful coding assistant. Answer concisely and clearly." + s.promptRewriteSystem = "You are a precise code refactoring engine. Rewrite the given code strictly according to the instruction. Return only the updated code with no prose or backticks. Preserve formatting where reasonable." + s.promptDiagnosticsSystem = "You are a precise code fixer. Resolve the given diagnostics by editing only the selected code. Return only the corrected code with no prose or backticks. Keep behavior and style, and avoid unrelated changes." + s.promptDocumentSystem = "You are a precise code documentation engine. Add idiomatic documentation comments to the given code. Preserve exact behavior and formatting as much as possible. Return only the updated code with comments, no prose or backticks." + s.promptRewriteUser = "Instruction: {{instruction}}\n\nSelected code to transform:\n{{selection}}" + s.promptDiagnosticsUser = "Diagnostics to resolve (selection only):\n{{diagnostics}}\n\nSelected code:\n{{selection}}" + s.promptDocumentUser = "Add documentation comments to this code:\n{{selection}}" + s.promptGoTestSystem = "You are a precise Go unit test generator. Given a Go function, write one or more Test* functions using the testing package. Do NOT include package or imports, only the test function(s). Prefer table-driven tests. Keep it minimal and idiomatic." + s.promptGoTestUser = "Function under test:\n{{function}}" + // Keep package-level helpers in sync for tests using free functions inlineOpenChar = '>' inlineCloseChar = '>' chatSuffixChar = '>' diff --git a/internal/lsp/handlers.go b/internal/lsp/handlers.go index e85065b..420a694 100644 --- a/internal/lsp/handlers.go +++ b/internal/lsp/handlers.go @@ -2,9 +2,9 @@ package lsp import ( - "encoding/json" - "fmt" - "strings" + "encoding/json" + "fmt" + "strings" ) func (s *Server) handle(req Request) { @@ -26,14 +26,14 @@ func (s *Server) handle(req Request) { // a line comment (//, #, --). Returns the instruction string and the selection // text cleaned of the matched instruction marker or comment. func instructionFromSelection(sel string) (string, string) { - lines := splitLines(sel) - for idx, line := range lines { - if instr, cleaned, ok := findFirstInstructionInLine(line); ok && strings.TrimSpace(instr) != "" { - lines[idx] = cleaned - return instr, strings.Join(lines, "\n") - } - } - return "", sel + lines := splitLines(sel) + for idx, line := range lines { + if instr, cleaned, ok := findFirstInstructionInLine(line); ok && strings.TrimSpace(instr) != "" { + lines[idx] = cleaned + return instr, strings.Join(lines, "\n") + } + } + return "", sel } // findFirstInstructionInLine returns the earliest instruction marker on the @@ -46,51 +46,51 @@ func instructionFromSelection(sel string) (string, string) { // - # text // - -- text func findFirstInstructionInLine(line string) (instr string, cleaned string, ok bool) { - type cand struct { - start, end int - text string - } - cands := []cand{} - if t, l, r, ok := findStrictInlineTag(line); ok { - cands = append(cands, cand{start: l, end: r, text: t}) - } - if i := strings.Index(line, "/*"); i >= 0 { - if j := strings.Index(line[i+2:], "*/"); j >= 0 { - start := i - end := i + 2 + j + 2 - text := strings.TrimSpace(line[i+2 : i+2+j]) - cands = append(cands, cand{start: start, end: end, text: text}) - } - } - if i := strings.Index(line, "<!--"); i >= 0 { - if j := strings.Index(line[i+4:], "-->"); j >= 0 { - start := i - end := i + 4 + j + 3 - text := strings.TrimSpace(line[i+4 : i+4+j]) - cands = append(cands, cand{start: start, end: end, text: text}) - } - } - if i := strings.Index(line, "//"); i >= 0 { - cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+2:])}) - } - if i := strings.Index(line, "#"); i >= 0 { - cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+1:])}) - } - if i := strings.Index(line, "--"); i >= 0 { - cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+2:])}) - } - if len(cands) == 0 { - return "", line, false - } - // pick earliest start index - best := cands[0] - for _, c := range cands[1:] { - if c.start >= 0 && (best.start < 0 || c.start < best.start) { - best = c - } - } - cleaned = strings.TrimRight(line[:best.start]+line[best.end:], " \t") - return best.text, cleaned, true + type cand struct { + start, end int + text string + } + cands := []cand{} + if t, l, r, ok := findStrictInlineTag(line); ok { + cands = append(cands, cand{start: l, end: r, text: t}) + } + if i := strings.Index(line, "/*"); i >= 0 { + if j := strings.Index(line[i+2:], "*/"); j >= 0 { + start := i + end := i + 2 + j + 2 + text := strings.TrimSpace(line[i+2 : i+2+j]) + cands = append(cands, cand{start: start, end: end, text: text}) + } + } + if i := strings.Index(line, "<!--"); i >= 0 { + if j := strings.Index(line[i+4:], "-->"); j >= 0 { + start := i + end := i + 4 + j + 3 + text := strings.TrimSpace(line[i+4 : i+4+j]) + cands = append(cands, cand{start: start, end: end, text: text}) + } + } + if i := strings.Index(line, "//"); i >= 0 { + cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+2:])}) + } + if i := strings.Index(line, "#"); i >= 0 { + cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+1:])}) + } + if i := strings.Index(line, "--"); i >= 0 { + cands = append(cands, cand{start: i, end: len(line), text: strings.TrimSpace(line[i+2:])}) + } + if len(cands) == 0 { + return "", line, false + } + // pick earliest start index + best := cands[0] + for _, c := range cands[1:] { + if c.start >= 0 && (best.start < 0 || c.start < best.start) { + best = c + } + } + cleaned = strings.TrimRight(line[:best.start]+line[best.end:], " \t") + return best.text, cleaned, true } // diagnosticsInRange parses the CodeAction context and returns diagnostics diff --git a/internal/lsp/handlers_codeaction.go b/internal/lsp/handlers_codeaction.go index 762190f..17e92bc 100644 --- a/internal/lsp/handlers_codeaction.go +++ b/internal/lsp/handlers_codeaction.go @@ -98,12 +98,12 @@ func (s *Server) resolveCodeAction(ca CodeAction) (CodeAction, bool) { return ca, false } switch payload.Type { - case "rewrite": - sys := s.promptRewriteSystem - user := renderTemplate(s.promptRewriteUser, map[string]string{"instruction": payload.Instruction, "selection": payload.Selection}) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} + case "rewrite": + sys := s.promptRewriteSystem + user := renderTemplate(s.promptRewriteUser, map[string]string{"instruction": payload.Instruction, "selection": payload.Selection}) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} opts := s.llmRequestOpts() if text, err := s.llmClient.Chat(ctx, messages, opts...); err == nil { if out := stripCodeFences(strings.TrimSpace(text)); out != "" { @@ -114,37 +114,37 @@ func (s *Server) resolveCodeAction(ca CodeAction) (CodeAction, bool) { } else { logging.Logf("lsp ", "codeAction rewrite llm error: %v", err) } - case "diagnostics": - sys := s.promptDiagnosticsSystem - var b strings.Builder - for i, dgn := range payload.Diagnostics { - if dgn.Source != "" { - fmt.Fprintf(&b, "%d. [%s] %s\n", i+1, dgn.Source, dgn.Message) - } else { - fmt.Fprintf(&b, "%d. %s\n", i+1, dgn.Message) - } - } - diagList := b.String() - user := renderTemplate(s.promptDiagnosticsUser, map[string]string{"diagnostics": diagList, "selection": payload.Selection}) - ctx, cancel := context.WithTimeout(context.Background(), 12*time.Second) - defer cancel() - messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} - opts := s.llmRequestOpts() - if text, err := s.llmClient.Chat(ctx, messages, opts...); err == nil { - if out := stripCodeFences(strings.TrimSpace(text)); out != "" { - edit := WorkspaceEdit{Changes: map[string][]TextEdit{payload.URI: {{Range: payload.Range, NewText: out}}}} - ca.Edit = &edit - return ca, true - } - } else { - logging.Logf("lsp ", "codeAction diagnostics llm error: %v", err) - } - case "document": - sys := s.promptDocumentSystem - user := renderTemplate(s.promptDocumentUser, map[string]string{"selection": payload.Selection}) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} + case "diagnostics": + sys := s.promptDiagnosticsSystem + var b strings.Builder + for i, dgn := range payload.Diagnostics { + if dgn.Source != "" { + fmt.Fprintf(&b, "%d. [%s] %s\n", i+1, dgn.Source, dgn.Message) + } else { + fmt.Fprintf(&b, "%d. %s\n", i+1, dgn.Message) + } + } + diagList := b.String() + user := renderTemplate(s.promptDiagnosticsUser, map[string]string{"diagnostics": diagList, "selection": payload.Selection}) + ctx, cancel := context.WithTimeout(context.Background(), 12*time.Second) + defer cancel() + messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} + opts := s.llmRequestOpts() + if text, err := s.llmClient.Chat(ctx, messages, opts...); err == nil { + if out := stripCodeFences(strings.TrimSpace(text)); out != "" { + edit := WorkspaceEdit{Changes: map[string][]TextEdit{payload.URI: {{Range: payload.Range, NewText: out}}}} + ca.Edit = &edit + return ca, true + } + } else { + logging.Logf("lsp ", "codeAction diagnostics llm error: %v", err) + } + case "document": + sys := s.promptDocumentSystem + user := renderTemplate(s.promptDocumentUser, map[string]string{"selection": payload.Selection}) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} opts := s.llmRequestOpts() if text, err := s.llmClient.Chat(ctx, messages, opts...); err == nil { if out := stripCodeFences(strings.TrimSpace(text)); out != "" { @@ -466,13 +466,13 @@ func findGoFunctionAtLine(lines []string, idx int) (int, int) { // generateGoTestFunction uses LLM to produce a test function; falls back to a stub when unavailable. func (s *Server) generateGoTestFunction(funcCode string) string { - if s.llmClient != nil { - sys := s.promptGoTestSystem - user := renderTemplate(s.promptGoTestUser, map[string]string{"function": funcCode}) - ctx, cancel := context.WithTimeout(context.Background(), 8*time.Second) - defer cancel() - messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} - opts := s.llmRequestOpts() + if s.llmClient != nil { + sys := s.promptGoTestSystem + user := renderTemplate(s.promptGoTestUser, map[string]string{"function": funcCode}) + ctx, cancel := context.WithTimeout(context.Background(), 8*time.Second) + defer cancel() + messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} + opts := s.llmRequestOpts() if out, err := s.llmClient.Chat(ctx, messages, opts...); err == nil { cleaned := strings.TrimSpace(stripCodeFences(out)) if cleaned != "" { diff --git a/internal/lsp/handlers_completion.go b/internal/lsp/handlers_completion.go index 0d48bc0..06c44fb 100644 --- a/internal/lsp/handlers_completion.go +++ b/internal/lsp/handlers_completion.go @@ -225,13 +225,13 @@ func (s *Server) tryProviderNativeCompletion(current string, p CompletionParams, if !ok { return nil, false } - before, after := s.docBeforeAfter(p.TextDocument.URI, p.Position) - path := strings.TrimPrefix(p.TextDocument.URI, "file://") - // Build provider-native prompt from template - prompt := renderTemplate(s.promptNativeCompletion, map[string]string{ - "path": path, - "before": before, - }) + before, after := s.docBeforeAfter(p.TextDocument.URI, p.Position) + path := strings.TrimPrefix(p.TextDocument.URI, "file://") + // Build provider-native prompt from template + prompt := renderTemplate(s.promptNativeCompletion, map[string]string{ + "path": path, + "before": before, + }) lang := "" temp := 0.0 if s.codingTemperature != nil { @@ -340,34 +340,34 @@ func (s *Server) waitForThrottle(ctx context.Context) bool { // buildCompletionMessages constructs the LLM messages for completion. func (s *Server) buildCompletionMessages(inlinePrompt, hasExtra bool, extraText string, inParams bool, p CompletionParams, above, current, below, funcCtx string) []llm.Message { - // Vars for templates - vars := map[string]string{ - "file": p.TextDocument.URI, - "function": funcCtx, - "above": above, - "current": current, - "below": below, - "char": fmt.Sprintf("%d", p.Position.Character), - } - sys := s.promptCompSysGeneral - userTpl := s.promptCompUserGeneral - if inParams { - sys = s.promptCompSysParams - userTpl = s.promptCompUserParams - } - if inlinePrompt && strings.TrimSpace(s.promptCompSysInline) != "" { - sys = s.promptCompSysInline - } - user := renderTemplate(userTpl, vars) - messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} - if hasExtra && strings.TrimSpace(extraText) != "" { - extra := renderTemplate(s.promptCompExtraHeader, map[string]string{"context": extraText}) - if strings.TrimSpace(extra) == "" { - extra = extraText - } - messages = append(messages, llm.Message{Role: "user", Content: extra}) - } - return messages + // Vars for templates + vars := map[string]string{ + "file": p.TextDocument.URI, + "function": funcCtx, + "above": above, + "current": current, + "below": below, + "char": fmt.Sprintf("%d", p.Position.Character), + } + sys := s.promptCompSysGeneral + userTpl := s.promptCompUserGeneral + if inParams { + sys = s.promptCompSysParams + userTpl = s.promptCompUserParams + } + if inlinePrompt && strings.TrimSpace(s.promptCompSysInline) != "" { + sys = s.promptCompSysInline + } + user := renderTemplate(userTpl, vars) + messages := []llm.Message{{Role: "system", Content: sys}, {Role: "user", Content: user}} + if hasExtra && strings.TrimSpace(extraText) != "" { + extra := renderTemplate(s.promptCompExtraHeader, map[string]string{"context": extraText}) + if strings.TrimSpace(extra) == "" { + extra = extraText + } + messages = append(messages, llm.Message{Role: "user", Content: extra}) + } + return messages } // postProcessCompletion normalizes and deduplicates completion text and applies indentation rules. diff --git a/internal/lsp/handlers_document.go b/internal/lsp/handlers_document.go index 26b78c0..f3648b2 100644 --- a/internal/lsp/handlers_document.go +++ b/internal/lsp/handlers_document.go @@ -156,9 +156,9 @@ func (s *Server) detectAndHandleChat(uri string) { go func(prompt string, remove int) { ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) defer cancel() - sys := s.promptChatSystem - // Build short conversation history from the document above this line - history := s.buildChatHistory(uri, lineIdx, prompt) + sys := s.promptChatSystem + // Build short conversation history from the document above this line + history := s.buildChatHistory(uri, lineIdx, prompt) msgs := append([]llm.Message{{Role: "system", Content: sys}}, history...) opts := s.llmRequestOpts() logging.Logf("lsp ", "chat llm=requesting model=%s", s.llmClient.DefaultModel()) diff --git a/internal/lsp/handlers_utils.go b/internal/lsp/handlers_utils.go index eafd058..015e9c1 100644 --- a/internal/lsp/handlers_utils.go +++ b/internal/lsp/handlers_utils.go @@ -7,6 +7,7 @@ import ( "codeberg.org/snonux/hexai/internal/llm" "codeberg.org/snonux/hexai/internal/logging" + "codeberg.org/snonux/hexai/internal/textutil" ) // Configurable inline trigger characters (default to '>') used by free helpers below. @@ -73,17 +74,7 @@ func inParamList(current string, cursor int) bool { } // renderTemplate performs simple {{var}} replacement in a template string. -func renderTemplate(t string, vars map[string]string) string { - if t == "" { - return t - } - out := t - for k, v := range vars { - placeholder := "{{" + k + "}}" - out = strings.ReplaceAll(out, placeholder, v) - } - return out -} +func renderTemplate(t string, vars map[string]string) string { return textutil.RenderTemplate(t, vars) } func computeTextEditAndFilter(cleaned string, inParams bool, current string, p CompletionParams) (*TextEdit, string) { if inParams { @@ -301,31 +292,7 @@ func isIdentBoundary(ch byte) bool { } // stripCodeFences removes surrounding Markdown code fences from a model response. -func stripCodeFences(s string) string { - t := strings.TrimSpace(s) - if t == "" { - return t - } - lines := splitLines(t) - start := 0 - for start < len(lines) && strings.TrimSpace(lines[start]) == "" { - start++ - } - end := len(lines) - 1 - for end >= 0 && strings.TrimSpace(lines[end]) == "" { - end-- - } - if start >= len(lines) || end < 0 || start > end { - return t - } - first := strings.TrimSpace(lines[start]) - last := strings.TrimSpace(lines[end]) - if strings.HasPrefix(first, "```") && last == "```" && end > start { - inner := strings.Join(lines[start+1:end], "\n") - return inner - } - return t -} +func stripCodeFences(s string) string { return textutil.StripCodeFences(s) } // stripInlineCodeSpan returns the contents of the first inline backtick code span if present. func stripInlineCodeSpan(s string) string { diff --git a/internal/lsp/helpers_more_test.go b/internal/lsp/helpers_more_test.go index 1bd56d0..160f91c 100644 --- a/internal/lsp/helpers_more_test.go +++ b/internal/lsp/helpers_more_test.go @@ -102,16 +102,16 @@ func TestCollectPromptRemovalEdits_MultiLine(t *testing.T) { } func TestInParamListAndBuildCompletionMessages(t *testing.T) { - cur := "func add(a int, b string) int" - if !inParamList(cur, 12) { - t.Fatalf("expected in param list") - } - s := newTestServer() - p := CompletionParams{TextDocument: TextDocumentIdentifier{URI: "file:///x.go"}, Position: Position{Line: 0, Character: 5}} - msgs := s.buildCompletionMessages(false, false, "", false, p, "above", "current", "below", "func add") - if len(msgs) < 2 || msgs[0].Content == "" || msgs[1].Content == "" { - t.Fatalf("messages empty") - } + cur := "func add(a int, b string) int" + if !inParamList(cur, 12) { + t.Fatalf("expected in param list") + } + s := newTestServer() + p := CompletionParams{TextDocument: TextDocumentIdentifier{URI: "file:///x.go"}, Position: Position{Line: 0, Character: 5}} + msgs := s.buildCompletionMessages(false, false, "", false, p, "above", "current", "below", "func add") + if len(msgs) < 2 || msgs[0].Content == "" || msgs[1].Content == "" { + t.Fatalf("messages empty") + } } func TestLabelForCompletion(t *testing.T) { diff --git a/internal/lsp/provider_native_success_test.go b/internal/lsp/provider_native_success_test.go index bfcb0b6..ac227be 100644 --- a/internal/lsp/provider_native_success_test.go +++ b/internal/lsp/provider_native_success_test.go @@ -63,31 +63,33 @@ func TestProviderNativeCompletion_IndentWithDoubleOpen(t *testing.T) { type fakeCompleterCapture struct{ lastPrompt string } -func (fakeCompleterCapture) Chat(context.Context, []llm.Message, ...llm.RequestOption) (string, error) { return "", nil } +func (fakeCompleterCapture) Chat(context.Context, []llm.Message, ...llm.RequestOption) (string, error) { + return "", nil +} func (fakeCompleterCapture) Name() string { return "prov" } func (fakeCompleterCapture) DefaultModel() string { return "m" } func (f *fakeCompleterCapture) CodeCompletion(_ context.Context, prompt string, suffix string, n int, language string, temperature float64) ([]string, error) { - f.lastPrompt = prompt - return []string{"SUG"}, nil + f.lastPrompt = prompt + return []string{"SUG"}, nil } func TestProviderNativeCompletion_UsesPromptTemplate(t *testing.T) { - s := newTestServer() - cap := &fakeCompleterCapture{} - s.llmClient = cap - s.promptNativeCompletion = "NATIVE {{path}} {{before}}" - uri := "file:///x.go" - s.setDocument(uri, "AAA\nBBB\nCCC") - current := "fmt." - // Cursor at line 1, char 1 -> before should be "AAA\nB" - p := CompletionParams{TextDocument: TextDocumentIdentifier{URI: uri}, Position: Position{Line: 1, Character: 1}} - if _, ok := s.tryProviderNativeCompletion(current, p, "", "", "func f(){}", "doc", false, "", false); !ok { - t.Fatalf("expected provider-native path") - } - if cap.lastPrompt == "" { - t.Fatalf("expected captured prompt") - } - if cap.lastPrompt != "NATIVE /x.go AAA\nB" { - t.Fatalf("unexpected prompt: %q", cap.lastPrompt) - } + s := newTestServer() + cap := &fakeCompleterCapture{} + s.llmClient = cap + s.promptNativeCompletion = "NATIVE {{path}} {{before}}" + uri := "file:///x.go" + s.setDocument(uri, "AAA\nBBB\nCCC") + current := "fmt." + // Cursor at line 1, char 1 -> before should be "AAA\nB" + p := CompletionParams{TextDocument: TextDocumentIdentifier{URI: uri}, Position: Position{Line: 1, Character: 1}} + if _, ok := s.tryProviderNativeCompletion(current, p, "", "", "func f(){}", "doc", false, "", false); !ok { + t.Fatalf("expected provider-native path") + } + if cap.lastPrompt == "" { + t.Fatalf("expected captured prompt") + } + if cap.lastPrompt != "NATIVE /x.go AAA\nB" { + t.Fatalf("unexpected prompt: %q", cap.lastPrompt) + } } diff --git a/internal/lsp/server.go b/internal/lsp/server.go index caaac29..1c3e676 100644 --- a/internal/lsp/server.go +++ b/internal/lsp/server.go @@ -58,29 +58,29 @@ type Server struct { inlineOpen string inlineClose string chatSuffix string - chatPrefixes []string + chatPrefixes []string - // Prompt templates - // Completion - promptCompSysGeneral string - promptCompSysParams string - promptCompSysInline string - promptCompUserGeneral string - promptCompUserParams string - promptCompExtraHeader string - // Provider-native code completion - promptNativeCompletion string - // In-editor chat - promptChatSystem string - // Code actions - promptRewriteSystem string - promptDiagnosticsSystem string - promptDocumentSystem string - promptRewriteUser string - promptDiagnosticsUser string - promptDocumentUser string - promptGoTestSystem string - promptGoTestUser string + // Prompt templates + // Completion + promptCompSysGeneral string + promptCompSysParams string + promptCompSysInline string + promptCompUserGeneral string + promptCompUserParams string + promptCompExtraHeader string + // Provider-native code completion + promptNativeCompletion string + // In-editor chat + promptChatSystem string + // Code actions + promptRewriteSystem string + promptDiagnosticsSystem string + promptDocumentSystem string + promptRewriteUser string + promptDiagnosticsUser string + promptDocumentUser string + promptGoTestSystem string + promptGoTestUser string } // ServerOptions collects configuration for NewServer to avoid long parameter lists. @@ -101,26 +101,26 @@ type ServerOptions struct { // Inline/chat triggers InlineOpen string InlineClose string - ChatSuffix string - ChatPrefixes []string + ChatSuffix string + ChatPrefixes []string - // Prompt templates - PromptCompSysGeneral string - PromptCompSysParams string - PromptCompSysInline string - PromptCompUserGeneral string - PromptCompUserParams string - PromptCompExtraHeader string - PromptNativeCompletion string - PromptChatSystem string - PromptRewriteSystem string - PromptDiagnosticsSystem string - PromptDocumentSystem string - PromptRewriteUser string - PromptDiagnosticsUser string - PromptDocumentUser string - PromptGoTestSystem string - PromptGoTestUser string + // Prompt templates + PromptCompSysGeneral string + PromptCompSysParams string + PromptCompSysInline string + PromptCompUserGeneral string + PromptCompUserParams string + PromptCompExtraHeader string + PromptNativeCompletion string + PromptChatSystem string + PromptRewriteSystem string + PromptDiagnosticsSystem string + PromptDocumentSystem string + PromptRewriteUser string + PromptDiagnosticsUser string + PromptDocumentUser string + PromptGoTestSystem string + PromptGoTestUser string } func NewServer(r io.Reader, w io.Writer, logger *log.Logger, opts ServerOptions) *Server { @@ -179,29 +179,29 @@ func NewServer(r io.Reader, w io.Writer, logger *log.Logger, opts ServerOptions) } else { s.chatSuffix = opts.ChatSuffix } - if len(opts.ChatPrefixes) == 0 { - s.chatPrefixes = []string{"?", "!", ":", ";"} - } else { - s.chatPrefixes = append([]string{}, opts.ChatPrefixes...) - } + if len(opts.ChatPrefixes) == 0 { + s.chatPrefixes = []string{"?", "!", ":", ";"} + } else { + s.chatPrefixes = append([]string{}, opts.ChatPrefixes...) + } - // Prompts - s.promptCompSysGeneral = opts.PromptCompSysGeneral - s.promptCompSysParams = opts.PromptCompSysParams - s.promptCompSysInline = opts.PromptCompSysInline - s.promptCompUserGeneral = opts.PromptCompUserGeneral - s.promptCompUserParams = opts.PromptCompUserParams - s.promptCompExtraHeader = opts.PromptCompExtraHeader - s.promptNativeCompletion = opts.PromptNativeCompletion - s.promptChatSystem = opts.PromptChatSystem - s.promptRewriteSystem = opts.PromptRewriteSystem - s.promptDiagnosticsSystem = opts.PromptDiagnosticsSystem - s.promptDocumentSystem = opts.PromptDocumentSystem - s.promptRewriteUser = opts.PromptRewriteUser - s.promptDiagnosticsUser = opts.PromptDiagnosticsUser - s.promptDocumentUser = opts.PromptDocumentUser - s.promptGoTestSystem = opts.PromptGoTestSystem - s.promptGoTestUser = opts.PromptGoTestUser + // Prompts + s.promptCompSysGeneral = opts.PromptCompSysGeneral + s.promptCompSysParams = opts.PromptCompSysParams + s.promptCompSysInline = opts.PromptCompSysInline + s.promptCompUserGeneral = opts.PromptCompUserGeneral + s.promptCompUserParams = opts.PromptCompUserParams + s.promptCompExtraHeader = opts.PromptCompExtraHeader + s.promptNativeCompletion = opts.PromptNativeCompletion + s.promptChatSystem = opts.PromptChatSystem + s.promptRewriteSystem = opts.PromptRewriteSystem + s.promptDiagnosticsSystem = opts.PromptDiagnosticsSystem + s.promptDocumentSystem = opts.PromptDocumentSystem + s.promptRewriteUser = opts.PromptRewriteUser + s.promptDiagnosticsUser = opts.PromptDiagnosticsUser + s.promptDocumentUser = opts.PromptDocumentUser + s.promptGoTestSystem = opts.PromptGoTestSystem + s.promptGoTestUser = opts.PromptGoTestUser // Assign package-level inline trigger chars for free helper functions if s.inlineOpen != "" { diff --git a/internal/lsp/testhelper_capture_llm_test.go b/internal/lsp/testhelper_capture_llm_test.go index 3274141..2e63ca7 100644 --- a/internal/lsp/testhelper_capture_llm_test.go +++ b/internal/lsp/testhelper_capture_llm_test.go @@ -1,18 +1,17 @@ package lsp import ( - "context" + "context" - "codeberg.org/snonux/hexai/internal/llm" + "codeberg.org/snonux/hexai/internal/llm" ) // captureLLM captures messages sent to Chat for assertions. type captureLLM struct{ msgs []llm.Message } func (c *captureLLM) Chat(_ context.Context, m []llm.Message, _ ...llm.RequestOption) (string, error) { - c.msgs = append([]llm.Message{}, m...) - return "OK", nil + c.msgs = append([]llm.Message{}, m...) + return "OK", nil } func (*captureLLM) Name() string { return "cap" } func (*captureLLM) DefaultModel() string { return "m" } - |
