tui.js:修 /manage mmReadCatalog Python 单行语法错误(if row: import sys 非法)→ 提前 import sys

This commit is contained in:
youpaishidifu
2026-10-19 10:25:32 +08:00
parent b7537988f9
commit 250e71c48c
+16 -4
View File
@@ -426,26 +426,38 @@ function mmReadCatalog() {
return new Promise((resolve) => {
try {
const py = process.platform === "win32" ? "python" : "python3"
// 注意:Python `-c` 单行脚本里 `if row: import sys;` 是非法语法(import 不能跟在 if 同行)
// 提前 import sys,用 `sys.stdout.write(row[0]) if row else None` 替代 if 行
const script =
"import sqlite3,os;" +
"import sqlite3,os,sys;" +
"db=os.path.join(os.path.expanduser('~'),'.local','share','opencode','opencode.db');" +
"con=sqlite3.connect(db);" +
"row=con.execute(\"SELECT value FROM kv WHERE key='models-dev:catalog'\").fetchone();" +
"con.close();" +
"if row: import sys; sys.stdout.write(row[0])"
"sys.stdout.write(row[0]) if row else None"
const r = spawn(py, ["-c", script], { stdio: ["ignore", "pipe", "pipe"] })
let out = ""
let err = ""
r.stdout.on("data", (d) => (out += d))
r.stderr.on("data", (d) => (err += d))
r.on("close", () => {
try {
if (out.trim()) resolve(JSON.parse(out.trim()))
else resolve(null)
else {
log("[oc-session-all] mmReadCatalog 空结果 err:" + err.slice(0, 200))
resolve(null)
}
} catch (e) {
log("[oc-session-all] mmReadCatalog parse 失败: " + e.message + " err:" + err.slice(0, 120))
resolve(null)
}
})
r.on("error", () => resolve(null))
r.on("error", (e) => {
log("[oc-session-all] mmReadCatalog spawn error: " + e.message)
resolve(null)
})
} catch (e) {
log("[oc-session-all] mmReadCatalog 异常: " + e.message)
resolve(null)
}
})