summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/appconfig/app_sections.go10
-rw-r--r--internal/appconfig/config_validate.go2
-rw-r--r--internal/hexaiaction/custom_exec_more_test.go4
-rw-r--r--internal/hexaiaction/custom_exec_test.go4
-rw-r--r--internal/hexaiaction/parse_test.go8
-rw-r--r--internal/hexaiaction/prompts_more_test.go4
-rw-r--r--internal/hexaiaction/prompts_simplify_test.go2
-rw-r--r--internal/hexaiaction/run.go4
-rw-r--r--internal/hexaiaction/run_more_test.go6
-rw-r--r--internal/hexaiaction/run_test.go8
10 files changed, 26 insertions, 26 deletions
diff --git a/internal/appconfig/app_sections.go b/internal/appconfig/app_sections.go
index 7422152..430ebce 100644
--- a/internal/appconfig/app_sections.go
+++ b/internal/appconfig/app_sections.go
@@ -127,7 +127,7 @@ type AppSections struct {
}
// Sections returns the app configuration split into focused sub-configs.
-func (a App) Sections() AppSections {
+func (a *App) Sections() AppSections {
return AppSections{
Core: a.CoreSection(),
Providers: a.ProviderSection(),
@@ -146,7 +146,7 @@ func (a *App) ApplySections(sections AppSections) {
// CoreSection returns a deep copy of the core runtime and interaction settings.
// Slices are cloned to prevent callers from mutating the original.
-func (a App) CoreSection() CoreConfig {
+func (a *App) CoreSection() CoreConfig {
c := a.CoreConfig
c.TriggerCharacters = slices.Clone(a.TriggerCharacters)
c.ChatPrefixes = slices.Clone(a.ChatPrefixes)
@@ -163,7 +163,7 @@ func (a *App) ApplyCoreSection(core CoreConfig) {
// ProviderSection returns a deep copy of provider endpoint/model settings.
// Surface config slices are cloned to prevent callers from mutating the original.
-func (a App) ProviderSection() ProviderConfig {
+func (a *App) ProviderSection() ProviderConfig {
p := a.ProviderConfig
p.CompletionConfigs = cloneSurfaceConfigs(a.CompletionConfigs)
p.CodeActionConfigs = cloneSurfaceConfigs(a.CodeActionConfigs)
@@ -184,7 +184,7 @@ func (a *App) ApplyProviderSection(providers ProviderConfig) {
// PromptSection returns a deep copy of prompt templates and custom action settings.
// The CustomActions slice is cloned to prevent callers from mutating the original.
-func (a App) PromptSection() PromptConfig {
+func (a *App) PromptSection() PromptConfig {
p := a.PromptConfig
p.CustomActions = append([]CustomAction{}, a.CustomActions...)
return p
@@ -199,7 +199,7 @@ func (a *App) ApplyPromptSection(prompts PromptConfig) {
// FeatureSection returns a deep copy of non-LLM feature toggles and integrations.
// Slices are cloned to prevent callers from mutating the original.
-func (a App) FeatureSection() FeatureConfig {
+func (a *App) FeatureSection() FeatureConfig {
f := a.FeatureConfig
f.IgnoreExtraPatterns = slices.Clone(a.IgnoreExtraPatterns)
f.TmuxEditAgents = append([]TmuxEditAgentCfg{}, a.TmuxEditAgents...)
diff --git a/internal/appconfig/config_validate.go b/internal/appconfig/config_validate.go
index f5e698f..19cfcd0 100644
--- a/internal/appconfig/config_validate.go
+++ b/internal/appconfig/config_validate.go
@@ -6,7 +6,7 @@ import (
)
// Validate checks custom actions and tmux settings for duplicates and consistency.
-func (a App) Validate() error {
+func (a *App) Validate() error {
if err := validateCustomActions(a.CustomActions); err != nil {
return err
}
diff --git a/internal/hexaiaction/custom_exec_more_test.go b/internal/hexaiaction/custom_exec_more_test.go
index 28bbb97..d826b39 100644
--- a/internal/hexaiaction/custom_exec_more_test.go
+++ b/internal/hexaiaction/custom_exec_more_test.go
@@ -22,7 +22,7 @@ func TestExecuteAction_Custom_DoesNotMutateProvidedSelection(t *testing.T) {
cfg := appconfig.Load(nil)
parts := InputParts{Selection: "code"}
selectedCustom := &appconfig.CustomAction{ID: "x", Title: "X", Instruction: "Do it"}
- _, _ = executeAction(context.Background(), ActionCustom, parts, cfg, fakeDoer{"OK"}, nil, selectedCustom)
+ _, _ = executeAction(context.Background(), ActionCustom, parts, &cfg, fakeDoer{"OK"}, nil, selectedCustom)
if selectedCustom == nil {
t.Fatalf("expected provided selectedCustom to remain local state")
}
@@ -33,7 +33,7 @@ func TestRunCustom_UserTemplate_InjectsDiagnostics(t *testing.T) {
parts := InputParts{Selection: "code", Diagnostics: []string{"L1", "L2"}}
ca := appconfig.CustomAction{ID: "y", Title: "Y", User: "{{diagnostics}}\n{{selection}}"}
cap := &capDoer{}
- _, err := runCustom(context.Background(), cfg, cap, ca, parts)
+ _, err := runCustom(context.Background(), &cfg, cap, ca, parts)
if err != nil {
t.Fatalf("runCustom error: %v", err)
}
diff --git a/internal/hexaiaction/custom_exec_test.go b/internal/hexaiaction/custom_exec_test.go
index 24f549e..1a5b99e 100644
--- a/internal/hexaiaction/custom_exec_test.go
+++ b/internal/hexaiaction/custom_exec_test.go
@@ -12,7 +12,7 @@ func TestExecuteAction_CustomConfigured_Instruction(t *testing.T) {
cfg := appconfig.Load(nil)
parts := InputParts{Selection: "code"}
selectedCustom := &appconfig.CustomAction{ID: "x", Title: "X", Instruction: "Do it"}
- out, err := executeAction(context.Background(), ActionCustom, parts, cfg, fakeDoer{"OK"}, nil, selectedCustom)
+ out, err := executeAction(context.Background(), ActionCustom, parts, &cfg, fakeDoer{"OK"}, nil, selectedCustom)
if err != nil || strings.TrimSpace(out) != "OK" {
t.Fatalf("custom-instruction failed: %q %v", out, err)
}
@@ -22,7 +22,7 @@ func TestExecuteAction_CustomConfigured_User(t *testing.T) {
cfg := appconfig.Load(nil)
parts := InputParts{Selection: "sel"}
selectedCustom := &appconfig.CustomAction{ID: "y", Title: "Y", User: "Apply to: {{selection}}"}
- out, err := executeAction(context.Background(), ActionCustom, parts, cfg, fakeDoer{"OK2"}, nil, selectedCustom)
+ out, err := executeAction(context.Background(), ActionCustom, parts, &cfg, fakeDoer{"OK2"}, nil, selectedCustom)
if err != nil || strings.TrimSpace(out) != "OK2" {
t.Fatalf("custom-user failed: %q %v", out, err)
}
diff --git a/internal/hexaiaction/parse_test.go b/internal/hexaiaction/parse_test.go
index 40ddd9a..713561e 100644
--- a/internal/hexaiaction/parse_test.go
+++ b/internal/hexaiaction/parse_test.go
@@ -95,28 +95,28 @@ func TestRuners_Prompts(t *testing.T) {
f := &fakeClient{out: "```\nDONE\n```"}
ctx := context.Background()
// rewrite
- if out, err := runRewrite(ctx, cfg, f, "instr", "sel"); err != nil || out != "DONE" {
+ if out, err := runRewrite(ctx, &cfg, f, "instr", "sel"); err != nil || out != "DONE" {
t.Fatalf("rewrite failed: %q %v", out, err)
}
if len(f.last) != 2 || f.last[0].Content != "SYS-R" || !strings.Contains(f.last[1].Content, "instr") {
t.Fatalf("rewrite prompts wrong: %#v", f.last)
}
// diagnostics
- if out, err := runDiagnostics(ctx, cfg, f, []string{"a", "b"}, "sel"); err != nil || out != "DONE" {
+ if out, err := runDiagnostics(ctx, &cfg, f, []string{"a", "b"}, "sel"); err != nil || out != "DONE" {
t.Fatalf("diagnostics failed: %q %v", out, err)
}
if f.last[0].Content != "SYS-D" || !strings.Contains(f.last[1].Content, "a\nb") {
t.Fatalf("diagnostics prompts wrong: %#v", f.last)
}
// document
- if out, err := runDocument(ctx, cfg, f, "sel"); err != nil || out != "DONE" {
+ if out, err := runDocument(ctx, &cfg, f, "sel"); err != nil || out != "DONE" {
t.Fatalf("document failed: %q %v", out, err)
}
if f.last[0].Content != "SYS-C" || !strings.Contains(f.last[1].Content, "sel") {
t.Fatalf("document prompts wrong: %#v", f.last)
}
// gotest
- if out, err := runGoTest(ctx, cfg, f, "func A(){}"); err != nil || out != "DONE" {
+ if out, err := runGoTest(ctx, &cfg, f, "func A(){}"); err != nil || out != "DONE" {
t.Fatalf("gotest failed: %q %v", out, err)
}
if f.last[0].Content != "SYS-T" || !strings.Contains(f.last[1].Content, "func A(){") {
diff --git a/internal/hexaiaction/prompts_more_test.go b/internal/hexaiaction/prompts_more_test.go
index 844bafe..67672fb 100644
--- a/internal/hexaiaction/prompts_more_test.go
+++ b/internal/hexaiaction/prompts_more_test.go
@@ -42,7 +42,7 @@ func TestReqOptsFrom_Override(t *testing.T) {
CodeActionConfigs: []appconfig.SurfaceConfig{{Provider: "anthropic", Model: "override", Temperature: ptrFloat(0.6)}},
},
}
- req := reqOptsFrom(cfg)
+ req := reqOptsFrom(&cfg)
if req.model != "override" {
t.Fatalf("expected override model, got %q", req.model)
}
@@ -63,7 +63,7 @@ func TestReqOptsFrom_Gpt5Temp(t *testing.T) {
},
ProviderConfig: appconfig.ProviderConfig{OpenAIModel: "gpt-5.0"},
}
- req := reqOptsFrom(cfg)
+ req := reqOptsFrom(&cfg)
var opts llm.Options
for _, o := range req.options {
o(&opts)
diff --git a/internal/hexaiaction/prompts_simplify_test.go b/internal/hexaiaction/prompts_simplify_test.go
index 4daba38..4cd831d 100644
--- a/internal/hexaiaction/prompts_simplify_test.go
+++ b/internal/hexaiaction/prompts_simplify_test.go
@@ -17,7 +17,7 @@ func (simplifyClient) DefaultModel() string { return "m" }
func TestRunSimplify_Smoke(t *testing.T) {
cfg := appconfig.Load(nil)
- out, err := runSimplify(context.Background(), cfg, simplifyClient{}, "code")
+ out, err := runSimplify(context.Background(), &cfg, simplifyClient{}, "code")
if err != nil {
t.Fatalf("runSimplify: %v", err)
}
diff --git a/internal/hexaiaction/run.go b/internal/hexaiaction/run.go
index bf36f2f..f36b0cf 100644
--- a/internal/hexaiaction/run.go
+++ b/internal/hexaiaction/run.go
@@ -123,7 +123,7 @@ func (r *Runner) Run(ctx context.Context, stdin io.Reader, stdout, stderr io.Wri
_, _ = fmt.Fprintf(stderr, logging.AnsiBase+"hexai-tmux-action: LLM disabled: %v"+logging.AnsiReset+"\n", err)
return err
}
- primaryModel := strings.TrimSpace(reqOptsFrom(cfg).model)
+ primaryModel := strings.TrimSpace(reqOptsFrom(&cfg).model)
if primaryModel == "" {
primaryModel = cli.DefaultModel()
}
@@ -141,7 +141,7 @@ func (r *Runner) Run(ctx context.Context, stdin io.Reader, stdout, stderr io.Wri
if err != nil {
return err
}
- out, err := executeAction(ctx, choice.kind, parts, cfg, client, stderr, choice.custom)
+ out, err := executeAction(ctx, choice.kind, parts, &cfg, client, stderr, choice.custom)
if err != nil {
return err
}
diff --git a/internal/hexaiaction/run_more_test.go b/internal/hexaiaction/run_more_test.go
index 0e391ed..6a4959e 100644
--- a/internal/hexaiaction/run_more_test.go
+++ b/internal/hexaiaction/run_more_test.go
@@ -46,7 +46,7 @@ func TestHandleDiagnosticsActionInvokesLLM(t *testing.T) {
parts := InputParts{Diagnostics: []string{"warn1"}, Selection: "code"}
client := &stubChatDoer{}
cfg := appconfig.Load(nil)
- if _, err := handleDiagnosticsAction(context.Background(), parts, cfg, client); err != nil {
+ if _, err := handleDiagnosticsAction(context.Background(), parts, &cfg, client); err != nil {
t.Fatalf("handleDiagnosticsAction: %v", err)
}
if client.calls != 1 {
@@ -68,7 +68,7 @@ func TestHandleSimplifyActionPassesSelection(t *testing.T) {
parts := InputParts{Selection: "value := 1"}
client := &stubChatDoer{}
cfg := appconfig.Load(nil)
- if _, err := handleSimplifyAction(context.Background(), parts, cfg, client); err != nil {
+ if _, err := handleSimplifyAction(context.Background(), parts, &cfg, client); err != nil {
t.Fatalf("handleSimplifyAction: %v", err)
}
if client.calls != 1 {
@@ -91,7 +91,7 @@ func TestHandleCustomActionUsesProvidedCustom(t *testing.T) {
parts := InputParts{Selection: "text"}
client := &stubChatDoer{}
cfg := appconfig.Load(nil)
- if _, err := handleCustomAction(context.Background(), parts, cfg, client, &sel); err != nil {
+ if _, err := handleCustomAction(context.Background(), parts, &cfg, client, &sel); err != nil {
t.Fatalf("handleCustomAction: %v", err)
}
if client.calls != 1 {
diff --git a/internal/hexaiaction/run_test.go b/internal/hexaiaction/run_test.go
index adc3159..b927d57 100644
--- a/internal/hexaiaction/run_test.go
+++ b/internal/hexaiaction/run_test.go
@@ -19,7 +19,7 @@ func (f fakeDoer) DefaultModel() string { return "m" }
func TestExecuteAction_Skip(t *testing.T) {
cfg := appconfig.App{}
parts := InputParts{Selection: "data"}
- out, err := executeAction(context.Background(), ActionSkip, parts, cfg, fakeDoer{"IGN"}, nil, nil)
+ out, err := executeAction(context.Background(), ActionSkip, parts, &cfg, fakeDoer{"IGN"}, nil, nil)
if err != nil || out != "data" {
t.Fatalf("skip failed: %q %v", out, err)
}
@@ -32,19 +32,19 @@ func TestExecuteAction_Rewrite_Document_GoTest(t *testing.T) {
// rewrite with inline instruction
sel := ";change;\ncode"
- out, err := executeAction(context.Background(), ActionRewrite, InputParts{Selection: sel}, cfg, client, nil, nil)
+ out, err := executeAction(context.Background(), ActionRewrite, InputParts{Selection: sel}, &cfg, client, nil, nil)
if err != nil || strings.TrimSpace(out) != "DONE" {
t.Fatalf("rewrite failed: %q %v", out, err)
}
// document
- out, err = executeAction(context.Background(), ActionDocument, InputParts{Selection: "code"}, cfg, client, nil, nil)
+ out, err = executeAction(context.Background(), ActionDocument, InputParts{Selection: "code"}, &cfg, client, nil, nil)
if err != nil || strings.TrimSpace(out) != "DONE" {
t.Fatalf("document failed: %q %v", out, err)
}
// go test
- out, err = executeAction(context.Background(), ActionGoTest, InputParts{Selection: "func A(){}"}, cfg, client, nil, nil)
+ out, err = executeAction(context.Background(), ActionGoTest, InputParts{Selection: "func A(){}"}, &cfg, client, nil, nil)
if err != nil || strings.TrimSpace(out) != "DONE" {
t.Fatalf("gotest failed: %q %v", out, err)
}