From de306c21924e3ed6c174dcc8c58f771c53cdf3a4 Mon Sep 17 00:00:00 2001 From: Christian Rocha Date: Mon, 29 Sep 2025 15:17:26 -0400 Subject: [PATCH 1/3] chore: update session chooser key help text MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Change Enter key help from "confirm" to "choose" - Change Escape key help from "cancel" to "exit" 💘 Generated with Crush Co-Authored-By: Crush --- internal/tui/components/dialogs/sessions/keys.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/tui/components/dialogs/sessions/keys.go b/internal/tui/components/dialogs/sessions/keys.go index bc7ec1ba9f83915caee9189504abf0b07bd4a24b..73c50899f7ae7da3655fc8a3e3a3dd34c4c22f95 100644 --- a/internal/tui/components/dialogs/sessions/keys.go +++ b/internal/tui/components/dialogs/sessions/keys.go @@ -15,7 +15,7 @@ func DefaultKeyMap() KeyMap { return KeyMap{ Select: key.NewBinding( key.WithKeys("enter", "tab", "ctrl+y"), - key.WithHelp("enter", "confirm"), + key.WithHelp("enter", "choose"), ), Next: key.NewBinding( key.WithKeys("down", "ctrl+n"), @@ -27,7 +27,7 @@ func DefaultKeyMap() KeyMap { ), Close: key.NewBinding( key.WithKeys("esc", "alt+esc"), - key.WithHelp("esc", "cancel"), + key.WithHelp("esc", "exit"), ), } } From cfa3244a77c8eb4326bbc6c4ecb91fdc70c8693f Mon Sep 17 00:00:00 2001 From: Christian Rocha Date: Mon, 29 Sep 2025 17:15:40 -0400 Subject: [PATCH 2/3] chore: update model chooser key help text MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Change Enter key help from "confirm" to "choose" - Change Escape key help from "cancel" to "exit" 💘 Generated with Crush Co-Authored-By: Crush --- internal/tui/components/dialogs/models/keys.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/tui/components/dialogs/models/keys.go b/internal/tui/components/dialogs/models/keys.go index ef4a6228b839c43a3862e251999dadf81dd6403f..4ec1a487e865981edc0be5852bb6c044ddf04c1f 100644 --- a/internal/tui/components/dialogs/models/keys.go +++ b/internal/tui/components/dialogs/models/keys.go @@ -19,7 +19,7 @@ func DefaultKeyMap() KeyMap { return KeyMap{ Select: key.NewBinding( key.WithKeys("enter", "ctrl+y"), - key.WithHelp("enter", "confirm"), + key.WithHelp("enter", "choose"), ), Next: key.NewBinding( key.WithKeys("down", "ctrl+n"), @@ -35,7 +35,7 @@ func DefaultKeyMap() KeyMap { ), Close: key.NewBinding( key.WithKeys("esc", "alt+esc"), - key.WithHelp("esc", "cancel"), + key.WithHelp("esc", "exit"), ), } } From 6cd1733aed022fefe5ec54416c2b01d42c797288 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Tue, 30 Sep 2025 10:55:07 -0300 Subject: [PATCH 3/3] fix(mcp): SSE MCPs not working (#1157) Signed-off-by: Carlos Alexandro Becker --- internal/llm/agent/mcp-tools.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/internal/llm/agent/mcp-tools.go b/internal/llm/agent/mcp-tools.go index f5125c8b89f2dda534396f3c51df3839390022ce..ebd1698f2f7bf45ecda15c9160464e3d295ce3d6 100644 --- a/internal/llm/agent/mcp-tools.go +++ b/internal/llm/agent/mcp-tools.go @@ -341,29 +341,32 @@ func createAndInitializeClient(ctx context.Context, name string, m config.MCPCon return nil, err } + // XXX: ideally we should be able to use context.WithTimeout here, but, + // the SSE MCP client will start failing once that context is canceled. timeout := mcpTimeout(m) - initCtx, cancel := context.WithTimeout(ctx, timeout) - defer cancel() - - if err := c.Start(initCtx); err != nil { + mcpCtx, cancel := context.WithCancel(ctx) + cancelTimer := time.AfterFunc(timeout, cancel) + if err := c.Start(mcpCtx); err != nil { updateMCPState(name, MCPStateError, maybeTimeoutErr(err, timeout), nil, 0) slog.Error("error starting mcp client", "error", err, "name", name) _ = c.Close() + cancel() return nil, err } - if _, err := c.Initialize(initCtx, mcpInitRequest); err != nil { + if _, err := c.Initialize(mcpCtx, mcpInitRequest); err != nil { updateMCPState(name, MCPStateError, maybeTimeoutErr(err, timeout), nil, 0) slog.Error("error initializing mcp client", "error", err, "name", name) _ = c.Close() + cancel() return nil, err } - + cancelTimer.Stop() slog.Info("Initialized mcp client", "name", name) return c, nil } func maybeTimeoutErr(err error, timeout time.Duration) error { - if errors.Is(err, context.DeadlineExceeded) { + if errors.Is(err, context.Canceled) { return fmt.Errorf("timed out after %s", timeout) } return err