@minniexcode/codex-switch 0.0.2 → 0.0.4
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.AI.md +110 -0
- package/README.CN.md +160 -0
- package/README.md +159 -121
- package/dist/app/edit-provider.js +64 -0
- package/dist/app/import-providers.js +10 -1
- package/dist/app/list-backups.js +17 -0
- package/dist/app/rollback-backup.js +30 -0
- package/dist/app/setup-codex.js +138 -0
- package/dist/app/show-provider.js +22 -0
- package/dist/cli/add-interactive.js +108 -0
- package/dist/cli/args.js +42 -12
- package/dist/cli/help.js +278 -0
- package/dist/cli/interactive.js +173 -0
- package/dist/cli/output.js +34 -1
- package/dist/cli/prompt.js +110 -0
- package/dist/cli.js +229 -52
- package/dist/domain/backups.js +103 -0
- package/dist/domain/errors.js +3 -3
- package/dist/domain/providers.js +10 -0
- package/dist/domain/setup.js +30 -0
- package/dist/infra/backup-repo.js +65 -6
- package/dist/infra/codex-cli.js +62 -0
- package/dist/infra/codex-discovery.js +48 -0
- package/dist/infra/codex-paths.js +14 -1
- package/dist/infra/providers-repo.js +29 -0
- package/docs/PRD/codex-switch-prd-v0.1.0.md +393 -0
- package/docs/{codex-switch-prd.md → PRD/codex-switch-prd.md} +31 -8
- package/docs/cli-usage.md +580 -0
- package/docs/codex-switch-command-design.md +30 -5
- package/docs/codex-switch-product-overview.md +1 -1
- package/docs/codex-switch-product-research.md +2 -2
- package/docs/codex-switch-technical-architecture.md +79 -38
- package/docs/codex-switch-v0.0.4-design.md +874 -0
- package/package.json +4 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- 对应产品文档:
|
|
8
8
|
- [`codex-switch-product-overview.md`](./codex-switch-product-overview.md)
|
|
9
9
|
- [`codex-switch-product-research.md`](./codex-switch-product-research.md)
|
|
10
|
-
- [`codex-switch-prd.md`](./codex-switch-prd.md)
|
|
10
|
+
- [`PRD/codex-switch-prd.md`](./PRD/codex-switch-prd.md)
|
|
11
11
|
- [`codex-switch-command-design.md`](./codex-switch-command-design.md)
|
|
12
12
|
|
|
13
13
|
## 1. 文档目标
|
|
@@ -236,6 +236,27 @@ scripts/
|
|
|
236
236
|
- 文件访问
|
|
237
237
|
- 输出格式化
|
|
238
238
|
|
|
239
|
+
#### `src/cli/prompt.ts`
|
|
240
|
+
|
|
241
|
+
负责:
|
|
242
|
+
|
|
243
|
+
- 对 `inquirer` 做轻量封装
|
|
244
|
+
- 提供 `input` / `password` / `select` / `confirm` 四类 typed 交互能力
|
|
245
|
+
- 把 prompt 取消统一转换成稳定 CLI 错误
|
|
246
|
+
|
|
247
|
+
不负责:
|
|
248
|
+
|
|
249
|
+
- 业务判断某个命令是否应该进入交互
|
|
250
|
+
- 直接读写 provider/config 文件
|
|
251
|
+
|
|
252
|
+
#### `src/cli/interactive.ts`
|
|
253
|
+
|
|
254
|
+
负责:
|
|
255
|
+
|
|
256
|
+
- 统一判定何时允许交互
|
|
257
|
+
- 组合 provider 选择、危险确认、rollback 摘要展示等 CLI 级辅助逻辑
|
|
258
|
+
- 保持命令分支对交互的接入方式一致
|
|
259
|
+
|
|
239
260
|
#### `src/cli/output.ts`
|
|
240
261
|
|
|
241
262
|
负责:
|
|
@@ -524,19 +545,20 @@ scripts/
|
|
|
524
545
|
|
|
525
546
|
流程如下:
|
|
526
547
|
|
|
527
|
-
1.
|
|
528
|
-
2.
|
|
529
|
-
3.
|
|
530
|
-
4.
|
|
531
|
-
5.
|
|
532
|
-
6.
|
|
548
|
+
1. CLI 层在 TTY 且 `<provider>` 缺失时,先用 selector 选 provider
|
|
549
|
+
2. 获取单操作写锁
|
|
550
|
+
3. 读取并解析 `providers.json`
|
|
551
|
+
4. 校验目标 provider 是否存在
|
|
552
|
+
5. 读取 `config.toml`
|
|
553
|
+
6. 校验 provider 对应的 `profile` 在配置中存在
|
|
554
|
+
7. 创建备份:
|
|
533
555
|
- `config.toml`
|
|
534
556
|
- `auth.json`(如果存在)
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
557
|
+
8. 更新顶层 `profile`
|
|
558
|
+
9. 如果未传 `--no-login`,执行 `codex login --with-api-key`
|
|
559
|
+
10. 成功后把这次备份记录为 `latest.json`
|
|
560
|
+
11. 若任何步骤失败,按 manifest 回滚
|
|
561
|
+
12. 释放写锁
|
|
540
562
|
|
|
541
563
|
#### 为什么 `switch` 必须由应用层编排
|
|
542
564
|
|
|
@@ -625,11 +647,13 @@ failure path:
|
|
|
625
647
|
|
|
626
648
|
流程:
|
|
627
649
|
|
|
628
|
-
1.
|
|
629
|
-
2.
|
|
630
|
-
3.
|
|
631
|
-
4.
|
|
632
|
-
5.
|
|
650
|
+
1. CLI 层保留显式路径参数
|
|
651
|
+
2. TTY 中写入前先确认
|
|
652
|
+
3. 读取外部文件
|
|
653
|
+
4. 校验 JSON 和 schema
|
|
654
|
+
5. 备份当前 `providers.json`
|
|
655
|
+
6. 整体替换写入
|
|
656
|
+
7. 写失败则恢复旧文件
|
|
633
657
|
|
|
634
658
|
当前明确不支持 merge import。
|
|
635
659
|
|
|
@@ -639,37 +663,46 @@ failure path:
|
|
|
639
663
|
|
|
640
664
|
1. 读取当前 `providers.json`
|
|
641
665
|
2. 检查目标文件是否存在
|
|
642
|
-
3.
|
|
643
|
-
4.
|
|
666
|
+
3. TTY 中若文件已存在且未传 `--force`,先确认是否覆盖
|
|
667
|
+
4. 默认拒绝覆盖
|
|
668
|
+
5. 传入 `--force` 或确认覆盖时允许写入
|
|
644
669
|
|
|
645
670
|
### 6.8 `add`
|
|
646
671
|
|
|
647
672
|
流程:
|
|
648
673
|
|
|
649
|
-
1.
|
|
650
|
-
2.
|
|
651
|
-
3.
|
|
652
|
-
4.
|
|
653
|
-
5.
|
|
674
|
+
1. CLI 层仅在缺失必填字段且当前是 TTY 时进入交互
|
|
675
|
+
2. provider 名在 prompt 阶段尽早做重名检查
|
|
676
|
+
3. profile 优先从 `config.toml` 里解析出的现有 profile 列表选择
|
|
677
|
+
4. apiKey 通过隐藏输入采集并二次确认
|
|
678
|
+
5. 读取现有 provider 集合
|
|
679
|
+
6. 校验重名
|
|
680
|
+
7. 备份旧文件
|
|
681
|
+
8. 追加一条 provider 记录
|
|
682
|
+
9. 写回 `providers.json`
|
|
654
683
|
|
|
655
684
|
### 6.9 `remove`
|
|
656
685
|
|
|
657
686
|
流程:
|
|
658
687
|
|
|
659
|
-
1.
|
|
660
|
-
2.
|
|
661
|
-
3.
|
|
662
|
-
4.
|
|
663
|
-
5.
|
|
688
|
+
1. CLI 层在 TTY 且缺少 provider 时可先选择 provider
|
|
689
|
+
2. CLI 层在 TTY 中始终做删除确认
|
|
690
|
+
3. 非 TTY 或 `--json` 场景继续要求显式 `--force`
|
|
691
|
+
4. 校验 provider 存在
|
|
692
|
+
5. 备份 `providers.json`
|
|
693
|
+
6. 删除目标 provider
|
|
694
|
+
7. 写回
|
|
664
695
|
|
|
665
696
|
### 6.10 `rollback`
|
|
666
697
|
|
|
667
698
|
流程:
|
|
668
699
|
|
|
669
|
-
1.
|
|
670
|
-
2.
|
|
671
|
-
3.
|
|
672
|
-
4.
|
|
700
|
+
1. TTY 中先读取 `backups/latest.json`
|
|
701
|
+
2. 展示备份目录和待恢复文件摘要
|
|
702
|
+
3. 请求确认
|
|
703
|
+
4. 加载最近一次 manifest
|
|
704
|
+
5. 按 manifest 恢复文件
|
|
705
|
+
6. 返回恢复文件列表和备份目录
|
|
673
706
|
|
|
674
707
|
#### `rollback` 时序图
|
|
675
708
|
|
|
@@ -934,15 +967,23 @@ tests/
|
|
|
934
967
|
|
|
935
968
|
从 MVP 可用性上没问题,但长期更推荐拆成专门的 CLI availability 错误。
|
|
936
969
|
|
|
937
|
-
### 13.3
|
|
970
|
+
### 13.3 当前交互式命令层范围仍然受控
|
|
971
|
+
|
|
972
|
+
当前 CLI 仍以显式参数模式为主,但已经把 `inquirer` 交互扩展到了高频写命令:
|
|
973
|
+
|
|
974
|
+
- `add` 缺失必填字段时的渐进式提问
|
|
975
|
+
- `switch` 的 provider 选择
|
|
976
|
+
- `remove` 的 provider 选择与确认
|
|
977
|
+
- `import` / `export` 的危险确认
|
|
978
|
+
- `rollback` 的恢复确认
|
|
938
979
|
|
|
939
|
-
|
|
980
|
+
当前仍然没有:
|
|
940
981
|
|
|
941
|
-
-
|
|
942
|
-
- 向导式 add/import
|
|
982
|
+
- 路径向导式 import/export
|
|
943
983
|
- TUI 状态面板
|
|
984
|
+
- 脱离显式参数契约的自动化交互
|
|
944
985
|
|
|
945
|
-
|
|
986
|
+
这继续保持了 CLI-first 和自动化优先的主体边界。
|
|
946
987
|
|
|
947
988
|
### 13.4 尚未引入持久化审计日志
|
|
948
989
|
|