oc-retry-guard 插件(严重错误自动重试·事不过三2分钟周期)+ 会话面板 v11 排版(日期降序+sessionID)
- 新增 oc-retry-guard.ts:http.response 钩子读 body 识别 finish reason 类错误, 命中后按 2分钟窗口/最多3次 计数,自动用缓存 body 追加 nudge 重发同端点并替换 response; 超 3 次或超 120s 自动归零,事不过三后 STOP。 - tui.js 会话选择器 v11:从按项目分组改为全局按 time.updated 降序,title 末尾加 [sessionID前8位]。 - sync_wsl.py ITEMS 增加 oc-retry-guard 同步项。
This commit is contained in:
@@ -732,27 +732,26 @@ export default Plugin.define({
|
||||
return
|
||||
}
|
||||
|
||||
const grouped = new Map()
|
||||
for (const session of visible) {
|
||||
const name = projectDisplayName(session, projectMap)
|
||||
const list = grouped.get(name) ?? []
|
||||
list.push(session)
|
||||
grouped.set(name, list)
|
||||
// v11 排版(2026-10-19 用户明令):
|
||||
// ① 全部会话按日期从近到远排序(不再按项目分组 + 按项目字母序)
|
||||
// ② title 里插入 session ID(短前缀 8 字符,避免整行被 ID 挤爆)
|
||||
const visibleSorted = visible.sort(
|
||||
(a, b) => ((b.time?.updated ?? 0) - (a.time?.updated ?? 0)),
|
||||
)
|
||||
const shortID = (id) => {
|
||||
const s = String(id || "")
|
||||
return s.length > 12 ? s.slice(0, 8) + "…" : s
|
||||
}
|
||||
for (const list of grouped.values()) {
|
||||
list.sort((a, b) => (b.time?.updated ?? 0) - (a.time?.updated ?? 0))
|
||||
}
|
||||
const orderedProjects = [...grouped.keys()].sort((a, b) => a.localeCompare(b))
|
||||
|
||||
const options = orderedProjects.flatMap((project) =>
|
||||
grouped.get(project).map((session) => ({
|
||||
title: `${project} ${
|
||||
session.time?.updated ? formatDateTime(session.time.updated) : "未知时间"
|
||||
} │ ${session.title || "无标题"}`,
|
||||
const options = visibleSorted.map((session) => {
|
||||
const project = projectDisplayName(session, projectMap)
|
||||
const ts = session.time?.updated ? formatDateTime(session.time.updated) : "未知时间"
|
||||
const idTag = shortID(session.id)
|
||||
return {
|
||||
title: `${project} ${ts} │ ${session.title || "无标题"} [${idTag}]`,
|
||||
value: session.id,
|
||||
category: project,
|
||||
})),
|
||||
)
|
||||
}
|
||||
})
|
||||
log("[oc-session-all] picker options built: " + options.length)
|
||||
|
||||
const selected = await context.ui.dialog.select({
|
||||
|
||||
Reference in New Issue
Block a user