diff --git a/skills/baoyu-danger-x-to-markdown/scripts/cookies.ts b/skills/baoyu-danger-x-to-markdown/scripts/cookies.ts index 578cd54..12ac63e 100644 --- a/skills/baoyu-danger-x-to-markdown/scripts/cookies.ts +++ b/skills/baoyu-danger-x-to-markdown/scripts/cookies.ts @@ -117,6 +117,8 @@ class CdpConnection { } async function getFreePort(): Promise { + const fixed = parseInt(process.env.X_DEBUG_PORT || "", 10); + if (fixed > 0) return fixed; return await new Promise((resolve, reject) => { const srv = net.createServer(); srv.unref(); diff --git a/skills/baoyu-danger-x-to-markdown/scripts/paths.ts b/skills/baoyu-danger-x-to-markdown/scripts/paths.ts index ae68599..2e03892 100644 --- a/skills/baoyu-danger-x-to-markdown/scripts/paths.ts +++ b/skills/baoyu-danger-x-to-markdown/scripts/paths.ts @@ -1,3 +1,4 @@ +import { execSync } from "node:child_process"; import os from "node:os"; import path from "node:path"; import process from "node:process"; @@ -30,9 +31,22 @@ export function resolveXToMarkdownCookiePath(): string { return path.join(resolveXToMarkdownDataDir(), COOKIE_FILE_NAME); } +let _wslHome: string | null | undefined; +function getWslWindowsHome(): string | null { + if (_wslHome !== undefined) return _wslHome; + if (!process.env.WSL_DISTRO_NAME) { _wslHome = null; return null; } + try { + const raw = execSync('cmd.exe /C "echo %USERPROFILE%"', { encoding: 'utf-8', timeout: 5000 }).trim().replace(/\r/g, ''); + _wslHome = execSync(`wslpath -u "${raw}"`, { encoding: 'utf-8', timeout: 5000 }).trim() || null; + } catch { _wslHome = null; } + return _wslHome; +} + export function resolveXToMarkdownChromeProfileDir(): string { const override = process.env.X_CHROME_PROFILE_DIR?.trim(); if (override) return path.resolve(override); + const wslHome = getWslWindowsHome(); + if (wslHome) return path.join(wslHome, ".local", "share", APP_DATA_DIR, X_TO_MARKDOWN_DATA_DIR, PROFILE_DIR_NAME); return path.join(resolveXToMarkdownDataDir(), PROFILE_DIR_NAME); }