{"record":{"id":"920f3f5581dc8a8e","repo":"vxcontrol/pentagi","slug":"failed-to-get-task-result-w","errorCode":null,"errorMessage":"failed to get task result: %w","messagePattern":"failed to get task result: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"backend/pkg/tools/flow_manager.go","lineNumber":189,"sourceCode":"\t\treturn \"No tasks found for this flow.\", nil\n\t}\n\n\tsb := &strings.Builder{}\n\tfmt.Fprintf(sb, \"Tasks for flow %d:\\n\\n\", t.flowID)\n\tfor _, task := range tasks {\n\t\tfmt.Fprintf(sb, \"Task ID: %d | Status: %s | Title: %s\\n\", task.ID, task.Status, task.Title)\n\t\tif verbose {\n\t\t\tif task.Input != \"\" {\n\t\t\t\tinput, err := t.getInputText(ctx, task.Input)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", fmt.Errorf(\"failed to get task input: %w\", err)\n\t\t\t\t}\n\t\t\t\tfmt.Fprintf(sb, \"  Input:  %s\\n\", input)\n\t\t\t}\n\t\t\tif task.Result != \"\" {\n\t\t\t\tresult, err := t.getResultText(ctx, task.Result)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", fmt.Errorf(\"failed to get task result: %w\", err)\n\t\t\t\t}\n\t\t\t\tfmt.Fprintf(sb, \"  Result: %s\\n\", result)\n\t\t\t}\n\t\t}\n\t}\n\n\ttaskList := sb.String()\n\tif t.summarizer != nil && len(taskList) > taskListLimit {\n\t\ttaskList, err = t.summarizer(ctx, truncateText(taskList, summarizationLimit))\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"failed to summarize task list: %w\", err)\n\t\t}\n\t}\n\n\treturn taskList, nil\n}\n\nfunc (t *flowStatusTool) buildSubtasksList(ctx context.Context, taskID *int64, verbose bool) (string, error) {","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/vxcontrol/pentagi/blob/ea665308baaff015b226f308438a68d929d0f29b/backend/pkg/tools/flow_manager.go#L171-L207","documentation":"Thrown in buildTasksList (backend/pkg/tools/flow_manager.go:189) when rendering each task's Result in verbose mode. Results larger than 2*resultLimit (16 KB) are compressed by the LLM summarizer via t.getResultText; this error wraps that summarizer failure. The task rows are already fetched; only result text compression failed.","triggerScenarios":"get_flow_status with detail='tasks' and verbose=true, a finished task whose Result exceeds 16 KB, and the summarizer errors (LLM provider failure, rate limit, context cancellation, oversized input for the summarizer model).","commonSituations":"Executor agent produced very large tool outputs stored as task results; summarizer provider key rotated/expired mid-run; summarizer context window too small for the 128 KB truncated result; caller timeout shorter than summarizer latency.","solutions":["Check the wrapped summarizer error and provider health (key, quota, endpoint); retry after fixing.","Use verbose=false to skip result rendering, or query individual results via other tools.","Cap tool output sizes in the Executor so stored results stay below 16 KB and bypass summarization.","Fix summarizer configuration or disable it (nil) so getResultText falls back to plain truncation."],"exampleFix":"// before\nresult, err := t.getResultText(ctx, task.Result)\nif err != nil {\n\treturn \"\", fmt.Errorf(\"failed to get task result: %w\", err)\n}\n// after: degrade to truncated raw result\nrendered, rerr := t.getResultText(ctx, task.Result)\nif rerr != nil {\n\trendered = truncateText(task.Result, resultLimit) + \" (summarization failed)\"\n}\nresult = rendered","handlingStrategy":"fallback","validationCode":"// avoid the summarizer when results are within the local-truncation bound\nif len(task.Result) <= 2*resultLimit {\n\tverbose = true // safe, no LLM call\n} else if !summarizerHealthy(ctx) {\n\tverbose = false\n}","typeGuard":null,"tryCatchPattern":"// Go: fall back to truncated results on summarize failure\nout, err := tool.Handle(ctx, \"get_flow_status\", verboseTasksArgs)\nif err != nil && strings.Contains(err.Error(), \"failed to get task result\") {\n\tout, err = tool.Handle(ctx, \"get_flow_status\", nonVerboseTasksArgs)\n}","preventionTips":["Cap executor tool output size so stored results stay under 16 KB.","Ensure the summarizer model context window fits the 128 KB truncation limit.","Rotate/validate LLM keys before long-running flows; watch for 429s.","Disable the summarizer if raw truncated results are acceptable."],"tags":["llm","summarization","tool","flow-status"],"backgroundTag":"llm-summarization-failed","analyzedSha":"ea665308baaff015b226f308438a68d929d0f29b","analyzedAt":"2026-09-01T14:16:31.421Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}