{"record":{"id":"40b7870f7b89ecbe","repo":"ruvnet/ruflo","slug":"zip-extraction-failed-via-both-available-extractor","errorCode":null,"errorMessage":"zip extraction failed via both available extractors. Expand-Archive: ${primaryMessage} — tar fallback: ${fallbackMessage}","messagePattern":"zip extraction failed via both available extractors\\. Expand-Archive: (.+?) — tar fallback: (.+?)","errorType":"exception","errorClass":"ExtractionError","httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/cli/src/proxy/install.ts","lineNumber":99,"sourceCode":" */\nexport async function extractArchive(archivePath: string, extractDir: string, ext: 'zip' | 'tar.gz'): Promise<void> {\n  fs.mkdirSync(extractDir, { recursive: true });\n\n  if (ext === 'tar.gz') {\n    await extractWithTar(archivePath, extractDir, 'xzf');\n    return;\n  }\n\n  try {\n    await extractWithPowerShell(archivePath, extractDir);\n  } catch (primary) {\n    const primaryMessage = primary instanceof Error ? primary.message : String(primary);\n    try {\n      // 'xf', not 'xzf' — a zip is not gzip-compressed; bsdtar sniffs the format.\n      await extractWithTar(archivePath, extractDir, 'xf');\n    } catch (fallback) {\n      const fallbackMessage = fallback instanceof Error ? fallback.message : String(fallback);\n      throw new ExtractionError(\n        `zip extraction failed via both available extractors. Expand-Archive: ${primaryMessage} — tar fallback: ${fallbackMessage}`,\n      );\n    }\n  }\n}\n\nexport interface InstallOptions {\n  version: string;\n  log?: (line: string) => void;\n}\n\nexport interface InstallResult {\n  version: string;\n  binaryPath: string;\n  sha256: string;\n}\n\n/**","sourceCodeStart":81,"sourceCodeEnd":117,"githubUrl":"https://github.com/ruvnet/ruflo/blob/6b01dc5a687b26b3e218f796de45ec51f8fa9e8c/v3/@claude-flow/cli/src/proxy/install.ts#L81-L117","documentation":"Error \"zip extraction failed via both available extractors. Expand-Archive: ${primaryMessage} — tar fallback: ${fallbackMessage}\" thrown in ruvnet/ruflo.","triggerScenarios":"Thrown at v3/@claude-flow/cli/src/proxy/install.ts:99 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6b01dc5a687b26b3e218f796de45ec51f8fa9e8c","analyzedAt":"2026-08-12T13:20:50.148Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}