chenhg5/cc-connect · error

resolve timer reply target: %w

Error message

resolve timer reply target: %w

What it means

Wraps a failure from ResolveCronReplyTarget when a platform implementing CronReplyTargetResolver fails to resolve the reply target for a timer job. Returned only when the error is not ErrNotSupported; ErrNotSupported is silently tolerated and defaults are used.

Source

Thrown at core/engine.go:1720

	}
	if targetPlatform == nil {
		return fmt.Errorf("platform %q not found for session %q", platformName, sessionKey)
	}

	rc, ok := targetPlatform.(ReplyContextReconstructor)
	if !ok {
		return fmt.Errorf("platform %q does not support proactive messaging (timer)", platformName)
	}

	runSessionKey := sessionKey
	var replyCtx any
	var err error
	if !job.Mute {
		if resolver, ok := targetPlatform.(CronReplyTargetResolver); ok {
			resolvedSessionKey, resolvedReplyCtx, err := resolver.ResolveCronReplyTarget(sessionKey, timerRunTitle(job))
			if err != nil {
				if !errors.Is(err, ErrNotSupported) {
					return fmt.Errorf("resolve timer reply target: %w", err)
				}
			} else {
				if resolvedSessionKey != "" {
					runSessionKey = resolvedSessionKey
				}
				if resolvedReplyCtx != nil {
					replyCtx = resolvedReplyCtx
				}
			}
		}
	}
	if replyCtx == nil {
		replyCtx, err = rc.ReconstructReplyCtx(runSessionKey)
		if err != nil {
			return fmt.Errorf("reconstruct reply context: %w", err)
		}
	}

View on GitHub (pinned to 4000b2338a)

Solutions

  1. Inspect the wrapped cause (%w) for the underlying platform API error
  2. Verify platform credentials/tokens are valid
  3. Retry the timer job; if transient, the next run may succeed
  4. Return ErrNotSupported from the resolver if resolution is intentionally unavailable, so the engine uses defaults

Example fix

// before
return nil, nil, fmt.Errorf("chat gone")
// after
return nil, nil, core.ErrNotSupported // fall back to default session key/ctx
Defensive patterns

Strategy: try-catch

Try / catch

if err := runTimerJob(job); err != nil { if errors.Is(err, platformAPIErr) { retryLater(job) } }

Prevention

When it happens

Trigger: Platform's ResolveCronReplyTarget returns a non-ErrNotSupported error while preparing a timer run (e.g. API call to resolve chat fails).

Common situations: Platform API outage or expired credentials when resolving the target chat; platform adapter bug in target resolution logic.

Related errors


AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06). Data as JSON: /api/errors/59f1ee07e7c27b9b. Report an issue: GitHub.