diff --git a/packages/tfcode/package.json b/packages/tfcode/package.json index 10094cf6a..b7849e233 100644 --- a/packages/tfcode/package.json +++ b/packages/tfcode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "1.0.38", + "version": "1.0.39", "name": "@toothfairyai/tfcode", "type": "module", "license": "MIT", diff --git a/packages/tfcode/src/cli/cmd/tools.ts b/packages/tfcode/src/cli/cmd/tools.ts index e44c3572a..54d83a3f4 100644 --- a/packages/tfcode/src/cli/cmd/tools.ts +++ b/packages/tfcode/src/cli/cmd/tools.ts @@ -64,20 +64,19 @@ const TFCODE_CONFIG_DIR = ".tfcode" const TFCODE_TOOLS_FILE = "tools.json" function getPythonSyncPath(): string { - // Check embedded python path first (for npm distribution) - const embedded = [ - path.join(__dirname, "..", "..", "..", "..", "python"), // packages/tfcode/python - path.join(__dirname, "..", "..", "..", "python"), // dist/python - ] - for (const p of embedded) { - if (existsSync(p)) return p - } - // Fallback to development paths - const dev = [ + const binDir = path.dirname(process.execPath) + const candidates = [ + // npm install: binary is at /bin/tfcode, python at /python + path.join(binDir, "..", "python"), + path.join(binDir, "python"), + // Embedded paths relative to compiled source + path.join(__dirname, "..", "..", "..", "..", "python"), + path.join(__dirname, "..", "..", "..", "python"), + // Development paths path.join(__dirname, "..", "..", "..", "..", "tf-sync", "src", "tf_sync"), path.join(process.cwd(), "packages", "tf-sync", "src", "tf_sync"), ] - for (const p of dev) { + for (const p of candidates) { if (existsSync(p)) return p } return "tf_sync"