moeru-ai/airi · warning

[markdown-stress] No active provider/model for online mode

Error message

[markdown-stress] No active provider/model for online mode

What it means

The markdown-stress devtools module disables its online scenario when no chat provider instance can be resolved from activeProvider, or activeModel is unset. runOnlineScenario() sets canRunOnline to false, calls stopCapture(), and returns - the stress test cannot stream assistant markdown without an LLM backend.

Source

Thrown at packages/stage-ui/src/stores/markdown-stress.ts:300

  function generatePreview() {
    const next = generateScenario()
    scenario.value = next
    payloadPreview.value = [
      `User (t=0ms): ${next.userMessages[0].text}`,
      `User (t=${next.userMessages[1].atMs}ms): ${next.userMessages[1].text}`,
      '--- Assistant stream ---',
      next.assistant.text,
    ].join('\n\n')
  }

  async function runOnlineScenario() {
    const chatStore = useChatStore()
    const targetScenario = ensureScenario()

    const provider = await providersStore.getProviderInstance(activeProvider.value) as ChatProvider | undefined
    if (!provider || !activeModel.value) {
      console.warn('[markdown-stress] No active provider/model for online mode')
      canRunOnline.value = false
      stopCapture()
      return
    }
    canRunOnline.value = true

    const runStart = performance.now()
    for (const message of targetScenario.userMessages) {
      const delay = Math.max(0, runStart + message.atMs - performance.now())
      const timer = setTimeout(async () => {
        try {
          await chatStore.ingest(message.text, {
            model: activeModel.value!,
            chatProvider: provider,
          })
        }
        catch (error) {
          console.error('[markdown-stress] Online send failed', error)

View on GitHub (pinned to 677329427f)

Solutions

  1. Configure and select a working chat provider and model in settings, including required API keys
  2. Verify the provider resolves: getProviderInstance(activeProvider) should return an instance with a chat().stream implementation
  3. Re-run the scenario after configuration - canRunOnline is re-evaluated on the next attempt
  4. For provider-less runs, use the offline capture mode rather than online mode
Defensive patterns

Strategy: validation

Validate before calling

const provider = await providersStore.getProviderInstance(activeProvider.value)
if (!provider || !activeModel.value) {
  canRunOnline.value = false
  showConfigureProviderPrompt()
  return
}

Prevention

When it happens

Trigger: Opening the markdown stress devtool before any chat provider is configured; activeProvider referencing a provider whose instantiation fails (missing API key, removed entry); cleared or reset settings while the devtool page is open.

Common situations: Fresh environment after clone/reset; provider credentials half-filled so getProviderInstance resolves to undefined; switching providers without re-running the scenario.

Related errors


AI-assisted analysis of moeru-ai/airi@677329427f (2026-08-18). Data as JSON: /api/errors/e3a3ca2d4104176a. Report an issue: GitHub.