{"record":{"id":"c1f411dd950529cb","repo":"NousResearch/hermes-agent","slug":"multitab-setup-failed-ok-dev-hooks-missing","errorCode":null,"errorMessage":"multitab setup failed (${ok}) — dev hooks missing? (needs a dev/probe renderer)","messagePattern":"multitab setup failed \\((.+?)\\) — dev hooks missing\\? \\(needs a dev/probe renderer\\)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"apps/desktop/scripts/perf/scenarios/multitab.mjs","lineNumber":325,"sourceCode":"    const tools = Boolean(opts.tools)\n    const tokens = Number(opts.tokens ?? 240)\n    // Matches STREAM_DELTA_FLUSH_MS — one publish per session per real flush.\n    const intervalMs = Number(opts.intervalMs ?? 33)\n    // --code: every tile grows ONE giant fenced code block with no settle\n    // boundaries — what a coding agent streams. The block re-parses and\n    // re-renders fully every flush (block memoization can't settle it), the\n    // documented worst case and the \"5 tabs all coding\" crawl.\n    const chunk = opts.code\n      ? '  const value = await resolve(ctx, { retry: true }) // step\\n'\n      : (opts.chunk ?? 'A streamed review sentence with **bold**, `code`, and ordinary prose.\\n\\n')\n    const streamSeed = opts.code ? '```ts\\n' : ''\n\n    await cdp.send('Runtime.enable')\n\n    const ok = await cdp.eval(setup(tiles, seedTurns, streamSeed, zones, seedSessions, streaming, dead, tools))\n\n    if (ok !== 'ok') {\n      throw new Error(`multitab setup failed (${ok}) — dev hooks missing? (needs a dev/probe renderer)`)\n    }\n\n    // Mount every tab (keep-alive mounts on first activation), then settle.\n    // Each reveal is timed to the next paint — with deep transcripts the\n    // first mount is the \"why does switching tabs hang\" number.\n    const revealMs = []\n\n    for (let n = 1; n <= tiles; n++) {\n      const ms = Number(\n        await cdp.eval(`\n          new Promise(resolve => {\n            const t0 = performance.now()\n            ${reveal(`perf-tile-${n}`)}\n            requestAnimationFrame(() => requestAnimationFrame(() => resolve(performance.now() - t0)))\n          })\n        `)\n      )\n","sourceCodeStart":307,"sourceCodeEnd":343,"githubUrl":"https://github.com/NousResearch/hermes-agent/blob/c896c09c42910c584c4c7d2325b58c14713ea42c/apps/desktop/scripts/perf/scenarios/multitab.mjs#L307-L343","documentation":"Error \"multitab setup failed (${ok}) — dev hooks missing? (needs a dev/probe renderer)\" thrown in NousResearch/hermes-agent.","triggerScenarios":"Thrown at apps/desktop/scripts/perf/scenarios/multitab.mjs:325 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Run the scenario against a dev build of the desktop app where dev hooks are installed.","Confirm the renderer exposes the perf probe hooks and retry the setup step."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c896c09c42910c584c4c7d2325b58c14713ea42c","analyzedAt":"2026-08-14T17:18:01.089Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}