vxcontrol/pentagi · error

failed to get flow tool call log: %w

Error message

failed to get flow tool call log: %w

What it means

Wraps a failure from cnts.tclc.GetFlowToolCallLog(ctx, flowID); the tool-call log stream for the flow could not be retrieved during flowProviderWorkers assembly. Root cause preserved via %w. This is the last log fetcher before the screenshot fetch in the sequence.

Source

Thrown at backend/pkg/controller/flow.go:1245

	slw, err := cnts.slc.GetFlowSearchLog(ctx, flowID)
	if err != nil {
		return nil, fmt.Errorf("failed to get flow search log: %w", err)
	}

	tlw, err := cnts.tlc.GetFlowTermLog(ctx, flowID)
	if err != nil {
		return nil, fmt.Errorf("failed to get flow term log: %w", err)
	}

	vslw, err := cnts.vslc.GetFlowVectorStoreLog(ctx, flowID)
	if err != nil {
		return nil, fmt.Errorf("failed to get flow vector store log: %w", err)
	}

	tclw, err := cnts.tclc.GetFlowToolCallLog(ctx, flowID)
	if err != nil {
		return nil, fmt.Errorf("failed to get flow tool call log: %w", err)
	}

	sw, err := cnts.sc.GetFlowScreenshot(ctx, flowID)
	if err != nil {
		return nil, fmt.Errorf("failed to get flow screenshot: %w", err)
	}

	return &flowProviderWorkers{
		mlw:  mlw,
		alw:  alw,
		slw:  slw,
		tlw:  tlw,
		vslw: vslw,
		tclw: tclw,
		sw:   sw,
	}, nil
}

View on GitHub (pinned to ea665308ba)

Solutions

  1. Inspect the wrapped error for the underlying DB cause.
  2. Verify the flowID exists in the current DB.
  3. Apply pending migrations so tool-call-log tables exist.
  4. Retry transient errors; check DB health/pool metrics.
Defensive patterns

Strategy: try-catch

Validate before calling

var exists bool
err := db.QueryRow("SELECT EXISTS(SELECT 1 FROM flows WHERE id=$1)", flowID).Scan(&exists)
if err != nil || !exists { /* abort with 404 */ }

Type guard

func isToolCallLogError(err error) bool {
	return err != nil && strings.Contains(err.Error(), "failed to get flow tool call log")
}

Try / catch

tclw, err := cnts.tclc.GetFlowToolCallLog(ctx, flowID)
if err != nil {
	if isTransient(err) { /* retry with backoff */ }
	return nil, fmt.Errorf("failed to get flow tool call log: %w", err)
}

Prevention

When it happens

Trigger: Flow log retrieval where the tool-call-log storage query for flowID returns an error (missing flow, DB failure).

Common situations: Tool-call tables absent due to skipped migrations; DB connection issues; querying a flow from a stale/different database.

Related errors


AI-assisted analysis of vxcontrol/pentagi@ea665308ba (2026-09-01). Data as JSON: /api/errors/4ab4c585a24539d9. Report an issue: GitHub.