Provides reactive model fallback for foreground (interactive) sessions when runtime rate-limit indicators are observed.
index.ts exports:
ForegroundFallbackManagerisRateLimitError(error)sessionModel)sessionAgent)sessionTried)lastTrigger)inProgress)statusCode, message, responseBody).resolveChain(agentName, currentModel):
handleEvent receives each OpenCode event from the plugin’s global event
surface.message.updated, session.error, or retry session.status, the
manager checks for rate-limit signatures.tryFallback(sessionID) runs with guards:
DEDUP_WINDOW_MS = 5000).session.promptAsync
with a parsed { providerID, modelID }.sessionModel; on failures, logs structured fallback
errors.session.deleted, all per-session maps are removed to prevent memory
growth.event hook in src/index.ts.ctx.client.session APIs (messages, abort, promptAsync) and is
independent of delegation/council logic.