@oldsuns/pi-switch 0.2.14 → 0.3.2

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/README.md CHANGED
@@ -28,7 +28,7 @@ npm install -g @oldsuns/pi-switch
28
28
  pi-switch
29
29
  ```
30
30
 
31
- 首次运行会自动把现有的 `~/.pi/agent/models.json` 全量导入本地库,**不修改** Pi 配置;随后即可在 Profiles 中勾选要同步到 Pi 的 provider / model。
31
+ 首次运行会自动把现有 Pi agent 目录中的 `models.json` 全量导入本地库,**不修改** Pi 配置;随后即可在 Profiles 中勾选要同步到 Pi 的 provider / model。Pi agent 目录使用非空 `PI_CODING_AGENT_DIR`,未设置时为 `~/.pi/agent`。
32
32
 
33
33
  CLI:
34
34
 
@@ -101,7 +101,7 @@ Model 表单:`id`、`name`、API override、reasoning、文本/图像输入、
101
101
 
102
102
  预览按 Pi 官方 session 的 `id` / `parentId` 构建树。默认 Tree 模式参考 Pi 原生 `/tree`:每个节点只占一行,显示 `User:` / `Pi:` 和单行摘要;只有真实分叉才增加缩进并使用 `├─` / `└─`,串行消息保持同一 lane。深层分支不会为所有消息预留固定宽度;仅在当前节点过深时水平平移树正文,并固定保留左侧光标 gutter。按 `v` 可切换到完整阅读模式,显示完整 Markdown 正文;每条消息按自身树深度分配前缀,树栏最多约占三分之一宽度。`Ctrl+Left/Right` 在分支段层级间移动,`Alt+Left/Right` 切换相邻分支,`Tab` 仅折叠真实分叉点。可见消息挂到最近可见祖先,`session_info`、tool 等 bookkeeping 节点不会伪装成对话消息。黄标题 = 手动命名;白标题 = 使用第一条用户消息。
103
103
 
104
- Session 根目录优先级:`PI_CODING_AGENT_SESSION_DIR` → `PI_CODING_AGENT_DIR/sessions` `~/.pi/agent/sessions/`。
104
+ Session 根目录优先级:非空 `PI_CODING_AGENT_SESSION_DIR` → `<Pi agent dir>/sessions`。
105
105
 
106
106
  剪贴板:Windows `clip`、macOS `pbcopy`、Linux `wl-copy` / `xclip` / `xsel`。
107
107
 
@@ -116,14 +116,14 @@ Session 根目录优先级:`PI_CODING_AGENT_SESSION_DIR` → `PI_CODING_AGENT_
116
116
  | 默认模型参数 | 仅关闭实时元数据时显示,用于导入缺省 |
117
117
  | 重载配置 | 从磁盘重读 |
118
118
  | 验证配置 | doctor |
119
- | 浏览备份 | 恢复 version 2 备份 |
119
+ | 浏览备份 | 恢复 version 3 或兼容的 version 2 备份 |
120
120
  | 从 OpenCode 导入 | 只读导入 `opencode.json` |
121
121
 
122
122
  `Enter` / `Space` 执行当前项。
123
123
 
124
124
  ## Provider 库与 Pi 同步
125
125
 
126
- - `~/.pi-switch/providers.json` 是完整本地库;`~/.pi/agent/models.json` 只含当前已同步到 Pi 的子集。
126
+ - `~/.pi-switch/providers.json` 是完整本地库;`<Pi agent dir>/models.json` 只含当前已同步到 Pi 的子集。
127
127
  - 首次运行把现有 `models.json` 全量导入本地库,不修改 Pi 配置。
128
128
  - 已同步 provider 的编辑与 model 变更会同步两份文件;不同步项只更新本地库。
129
129
  - 在线导入 model **不会**隐式同步到 Pi。
@@ -149,29 +149,39 @@ Session 根目录优先级:`PI_CODING_AGENT_SESSION_DIR` → `PI_CODING_AGENT_
149
149
 
150
150
  ## 配置路径与 Settings 字段
151
151
 
152
+ `<Pi agent dir>` 使用非空 `PI_CODING_AGENT_DIR`,未设置时为 `~/.pi/agent`。`PI_CODING_AGENT_SESSION_DIR` 只覆盖 Session 根目录,优先级仍高于 `<Pi agent dir>/sessions`。
153
+
152
154
  | 路径 | 角色 |
153
155
  |------|------|
154
156
  | `~/.pi-switch/providers.json` | 完整本地 provider 库(`version: 1`) |
155
- | `~/.pi/agent/models.json` | 已同步到 Pi 的 provider 子集 |
156
- | `~/.pi/agent/settings.json` | 默认模型 + pi-switch 设置 |
157
+ | `~/.pi-switch/settings.json` | pi-switch 私有设置;无自定义值时可不存在 |
158
+ | `<Pi agent dir>/models.json` | 已同步到 Pi provider 子集 |
159
+ | `<Pi agent dir>/settings.json` | Pi 设置,包括默认 provider / model |
157
160
  | `~/.config/opencode/opencode.json` | OpenCode 只读导入源 |
158
- | `~/.pi-switch/backups/` | version 2 备份(providers + models + settings),最多 10 份 |
161
+ | `~/.pi-switch/backups/` | version 3 备份(providers + models + Pi settings + pi-switch settings),最多 10 份 |
159
162
  | `~/.pi-switch/write.lock` | 写入互斥锁 |
160
163
  | `~/.pi-switch/update.json` | npm 新版本检查缓存(`lastCheck` + `latest` + `dismissed`,每 24h 最多联网一次) |
161
164
 
162
- `settings.json` 中与 pi-switch 相关的字段:
165
+ Pi `settings.json` 中由 pi-switch 管理的字段:
163
166
 
164
167
  | 字段 | 含义 |
165
168
  |------|------|
166
169
  | `defaultProvider` + `defaultModel` | 默认模型(成对存在或同时缺省) |
167
- | `piSwitch.language` | `en` \| `zh-CN` |
168
- | `piSwitch.fetchModelMetadata` | 是否拉 models.dev(默认 `true`) |
169
- | `piSwitch.checkForUpdates` | 是否启动时检查 npm 新版本(默认 `true`) |
170
- | `piSwitch.modelDefaults` | 关闭实时元数据时的导入缺省(context / maxTokens / cost) |
170
+
171
+ `~/.pi-switch/settings.json` 的字段:
172
+
173
+ | 字段 | 含义 |
174
+ |------|------|
175
+ | `language` | `en` \| `zh-CN` |
176
+ | `fetchModelMetadata` | 是否拉 models.dev(默认 `true`) |
177
+ | `checkForUpdates` | 是否启动时检查 npm 新版本(默认 `true`) |
178
+ | `modelDefaults` | 关闭实时元数据时的导入缺省(context / maxTokens / cost) |
179
+
180
+ 升级时若 Pi `settings.json` 仍包含旧 `piSwitch` 对象,启动或重载会自动迁移到 `~/.pi-switch/settings.json`,本地已有字段优先,旧对象只补齐缺失字段;迁移成功后从 Pi settings 删除旧对象。两份文件中的未知字段都会保留。
171
181
 
172
182
  ## 数据安全
173
183
 
174
- - 写前备份 `providers.json`、`models.json`、`settings.json` 到 `~/.pi-switch/backups/`(version 2);最多保留最近 10 份。旧版双文件备份不支持恢复。
184
+ - 写前备份 `providers.json`、Pi `models.json` / `settings.json` 和 pi-switch `settings.json` 到 `~/.pi-switch/backups/`(version 3);最多保留最近 10 份。现有 version 2 备份仍可恢复并自动拆分设置,version 1 备份不支持恢复。
175
185
  - 写入使用 `write.lock` 互斥;异常残留锁时 `doctor` 会提示。
176
186
  - `providers.json` 损坏时归档为 `corrupt-providers-*.json`,再从当前 Pi 配置重建,启动时显示归档路径。
177
187
  - 原子写入,只 patch 目标字段,保留未知 JSON;格式错误时停止写入并显示错误。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oldsuns/pi-switch",
3
- "version": "0.2.14",
3
+ "version": "0.3.2",
4
4
  "description": "A focused terminal UI for Pi provider and model configuration",
5
5
  "type": "module",
6
6
  "bin": {
Binary file
Binary file
Binary file