@2api-store/activate 0.4.4 → 0.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cmds.mjs +28 -7
- package/lib/platforms.mjs +15 -1
- package/package.json +1 -1
package/lib/cmds.mjs
CHANGED
|
@@ -245,18 +245,29 @@ async function cmdRestore(argv) {
|
|
|
245
245
|
const group = byTime[ts]
|
|
246
246
|
const files = group.map((b) => path.basename(b.origPath)).join(', ')
|
|
247
247
|
const tsDisplay = fmtTime(group[0].mtime)
|
|
248
|
-
//
|
|
249
|
-
|
|
248
|
+
// 从备份内容提取关键信息(key 尾号 + base_url + model),一行展示
|
|
249
|
+
const parts = []
|
|
250
250
|
for (const b of group) {
|
|
251
251
|
try {
|
|
252
252
|
const content = fs.readFileSync(b.bakPath, 'utf8')
|
|
253
|
-
|
|
254
|
-
if (
|
|
255
|
-
|
|
256
|
-
|
|
253
|
+
// key:sk- 开头,取尾 6 位(放宽正则:sk-后任意字母数字,至少 10 字符)
|
|
254
|
+
if (!parts.find((p) => p.startsWith('sk-'))) {
|
|
255
|
+
const m = content.match(/sk-([a-zA-Z0-9]{10,})/)
|
|
256
|
+
if (m) parts.push(`sk-…${m[1].slice(-6)}`)
|
|
257
|
+
}
|
|
258
|
+
// base_url / apiBase
|
|
259
|
+
if (!parts.find((p) => p.startsWith('http'))) {
|
|
260
|
+
const m2 = content.match(/(https?:\/\/[^\s"'`}]+)/)
|
|
261
|
+
if (m2) parts.push(m2[1].replace(/\/+$/, ''))
|
|
262
|
+
}
|
|
263
|
+
// model(如果有)
|
|
264
|
+
if (!parts.find((p) => p.startsWith('model'))) {
|
|
265
|
+
const m3 = content.match(/(?:^|\n)\s*model\s*[=:]\s*["']?([a-zA-Z0-9][\w.-]+)/)
|
|
266
|
+
if (m3) parts.push(`model:${m3[1]}`)
|
|
267
|
+
}
|
|
257
268
|
} catch { /* ignore */ }
|
|
258
269
|
}
|
|
259
|
-
const hint =
|
|
270
|
+
const hint = parts.length > 0 ? ` ${chalk.yellow(parts.join(' | '))}` : ''
|
|
260
271
|
return { label: `${chalk.dim(tsDisplay)}(${group.length} 文件:${files})${hint}`, ts, group }
|
|
261
272
|
})
|
|
262
273
|
const timeIdx = await select('选择时间点(回车=最新)', timeItems, { defaultIndex: 0 })
|
|
@@ -675,6 +686,16 @@ async function cmdReconfig(argv) {
|
|
|
675
686
|
return 2
|
|
676
687
|
}
|
|
677
688
|
|
|
689
|
+
// 打印启动/使用指南(与默认激活一致)
|
|
690
|
+
const guideItems = selectedItems
|
|
691
|
+
.filter((item) => item.meta)
|
|
692
|
+
.map((item) => ({
|
|
693
|
+
name: item.meta.name || item.clientType,
|
|
694
|
+
startCmd: item.meta.startCmd || '',
|
|
695
|
+
usage: item.meta.usage || '',
|
|
696
|
+
}))
|
|
697
|
+
guide(guideItems)
|
|
698
|
+
|
|
678
699
|
return failed.length > 0 ? 3 : 0
|
|
679
700
|
}
|
|
680
701
|
|
package/lib/platforms.mjs
CHANGED
|
@@ -62,7 +62,21 @@ export const CLI_META = {
|
|
|
62
62
|
startCmd: 'claude',
|
|
63
63
|
detectBin: 'claude',
|
|
64
64
|
configFiles: ['~/.claude/', '~/.claude.json'],
|
|
65
|
-
usage:
|
|
65
|
+
usage: [
|
|
66
|
+
'常用命令:',
|
|
67
|
+
' claude 交互模式',
|
|
68
|
+
' claude "你的问题" 带初始问题启动',
|
|
69
|
+
' claude -p "问题" 非交互模式(输出后退出,适合脚本)',
|
|
70
|
+
' claude -c 继续最近会话',
|
|
71
|
+
' claude -r 恢复历史会话(选择器)',
|
|
72
|
+
' claude --model sonnet 指定模型(sonnet/opus/haiku/fable)',
|
|
73
|
+
' claude mcp 管理 MCP 服务器',
|
|
74
|
+
' claude doctor 诊断安装/配置',
|
|
75
|
+
' claude update 更新到最新版',
|
|
76
|
+
'权限模式(Shift+Tab 切换):default / acceptEdits / plan / auto / bypassPermissions',
|
|
77
|
+
' claude --dangerously-skip-permissions 跳过所有权限提示(=bypassPermissions,谨慎用)',
|
|
78
|
+
'项目根放 CLAUDE.md 让 Claude 了解你的代码库',
|
|
79
|
+
].join('\n'),
|
|
66
80
|
isPrimary: true,
|
|
67
81
|
},
|
|
68
82
|
'gemini-cli': {
|