From 7141db8b3e96b74e7f1e2d558e07634839fc7bf0 Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Mon, 21 Jul 2025 23:10:36 +0200 Subject: [PATCH] fix: correct agent selection logic and handle nil timestamps Change-Id: I12e96df671e52eb9e2ae85127ac1aa40f5671e52 Signed-off-by: Thomas Kosiewski --- codersdk/toolsdk/bash.go | 5 ++--- codersdk/toolsdk/toolsdk.go | 11 ++++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/codersdk/toolsdk/bash.go b/codersdk/toolsdk/bash.go index 0df5f69aa71c9..e45ca6a49e29a 100644 --- a/codersdk/toolsdk/bash.go +++ b/codersdk/toolsdk/bash.go @@ -79,13 +79,12 @@ Examples: } // Wait for agent to be ready - err = cliui.Agent(ctx, nil, workspaceAgent.ID, cliui.AgentOptions{ + if err := cliui.Agent(ctx, io.Discard, workspaceAgent.ID, cliui.AgentOptions{ FetchInterval: 0, Fetch: deps.coderClient.WorkspaceAgent, FetchLogs: deps.coderClient.WorkspaceAgentLogsAfter, Wait: true, // Always wait for startup scripts - }) - if err != nil { + }); err != nil { return WorkspaceBashResult{}, xerrors.Errorf("agent not ready: %w", err) } diff --git a/codersdk/toolsdk/toolsdk.go b/codersdk/toolsdk/toolsdk.go index 6ef310f510369..670b5af145786 100644 --- a/codersdk/toolsdk/toolsdk.go +++ b/codersdk/toolsdk/toolsdk.go @@ -6,12 +6,14 @@ import ( "context" "encoding/json" "io" + "runtime/debug" "github.com/google/uuid" "golang.org/x/xerrors" "github.com/coder/aisdk-go" + "github.com/coder/coder/v2/buildinfo" "github.com/coder/coder/v2/codersdk" ) @@ -122,7 +124,14 @@ func WithRecover(h GenericHandlerFunc) GenericHandlerFunc { return func(ctx context.Context, deps Deps, args json.RawMessage) (ret json.RawMessage, err error) { defer func() { if r := recover(); r != nil { - err = xerrors.Errorf("tool handler panic: %v", r) + if buildinfo.IsDev() { + // Capture stack trace in dev builds + stack := debug.Stack() + err = xerrors.Errorf("tool handler panic: %v\nstack trace:\n%s", r, stack) + } else { + // Simple error message in production builds + err = xerrors.Errorf("tool handler panic: %v", r) + } } }() return h(ctx, deps, args) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy