From e1967316ebbd3e14c1aaf201e17fddb91f06aa72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Egelund-M=C3=BCller?= Date: Thu, 21 May 2026 11:50:24 +0100 Subject: [PATCH 1/2] Don't exit analyst agent pre-invocation on non-context errors --- runtime/ai/analyst_agent.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/runtime/ai/analyst_agent.go b/runtime/ai/analyst_agent.go index 87b87fbe3f2d..645857be851e 100644 --- a/runtime/ai/analyst_agent.go +++ b/runtime/ai/analyst_agent.go @@ -2,6 +2,7 @@ package ai import ( "context" + "errors" "fmt" "strings" "time" @@ -138,14 +139,14 @@ func (t *AnalystAgent) Handler(ctx context.Context, args *AnalystAgentArgs) (*An _, err := s.CallTool(ctx, RoleAssistant, QueryMetricsViewSummaryName, nil, &QueryMetricsViewSummaryArgs{ MetricsView: mvName, }) - if err != nil { + if err != nil && errors.Is(err, ctx.Err()) { // Don't exit on non-context errors return nil, err } _, err = s.CallTool(ctx, RoleAssistant, GetMetricsViewName, nil, &GetMetricsViewArgs{ MetricsView: mvName, }) - if err != nil { + if err != nil && errors.Is(err, ctx.Err()) { // Don't exit on non-context errors return nil, err } } From be790ad3c0ee01c762efe22f045a72a0e43734e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Egelund-M=C3=BCller?= Date: Thu, 21 May 2026 17:42:50 +0100 Subject: [PATCH 2/2] Review --- runtime/ai/analyst_agent.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/ai/analyst_agent.go b/runtime/ai/analyst_agent.go index 645857be851e..666ab4b569c2 100644 --- a/runtime/ai/analyst_agent.go +++ b/runtime/ai/analyst_agent.go @@ -120,7 +120,7 @@ func (t *AnalystAgent) Handler(ctx context.Context, args *AnalystAgentArgs) (*An _, err := s.CallTool(ctx, RoleAssistant, GetCanvasName, nil, &GetCanvasArgs{ Canvas: args.Canvas, }) - if err != nil { + if err != nil && errors.Is(err, ctx.Err()) { // Don't exit on non-context errors return nil, err } @@ -155,7 +155,7 @@ func (t *AnalystAgent) Handler(ctx context.Context, args *AnalystAgentArgs) (*An // If no specific dashboard is being explored, we pre-invoke the list_metrics_views tool. if first && len(metricsViewNames) == 0 { _, err := s.CallTool(ctx, RoleAssistant, ListMetricsViewsName, nil, &ListMetricsViewsArgs{}) - if err != nil { + if err != nil && errors.Is(err, ctx.Err()) { // Don't exit on non-context errors return nil, err } }