@minniexcode/codex-switch 0.1.0 → 0.1.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.
Files changed (68) hide show
  1. package/README.AI.md +141 -110
  2. package/README.CN.md +215 -179
  3. package/README.md +224 -183
  4. package/dist/app/add-provider.js +16 -23
  5. package/dist/app/bridge.js +2 -1
  6. package/dist/app/edit-provider.js +30 -65
  7. package/dist/app/get-current-profile.js +15 -3
  8. package/dist/app/get-status.js +11 -8
  9. package/dist/app/list-config-profiles.js +3 -1
  10. package/dist/app/list-providers.js +10 -4
  11. package/dist/app/remove-provider.js +52 -19
  12. package/dist/app/run-doctor.js +26 -29
  13. package/dist/app/setup-codex.js +3 -3
  14. package/dist/app/show-config.js +3 -1
  15. package/dist/app/switch-provider.js +38 -6
  16. package/dist/cli/output.js +29 -19
  17. package/dist/commands/handlers.js +3 -2
  18. package/dist/commands/help.js +3 -3
  19. package/dist/commands/registry.js +29 -29
  20. package/dist/domain/config.js +293 -209
  21. package/dist/domain/providers.js +8 -0
  22. package/dist/domain/runtime-state.js +15 -15
  23. package/dist/domain/setup.js +3 -1
  24. package/dist/interaction/interactive.js +2 -2
  25. package/dist/runtime/codex-version.js +7 -0
  26. package/dist/runtime/copilot-adapter.js +326 -70
  27. package/dist/runtime/copilot-bridge-worker.js +27 -2
  28. package/dist/runtime/copilot-bridge.js +192 -10
  29. package/dist/runtime/copilot-cli.js +7 -0
  30. package/dist/runtime/copilot-installer.js +59 -1
  31. package/dist/runtime/copilot-sdk-loader.js +4 -1
  32. package/dist/storage/config-repo.js +6 -14
  33. package/docs/Design/codex-switch-v0.1.0-design.md +32 -152
  34. package/docs/Design/codex-switch-v0.1.1-design.md +22 -0
  35. package/docs/Design/codex-switch-v0.1.2-design.md +65 -0
  36. package/docs/PRD/codex-switch-prd-v0.1.0.md +65 -217
  37. package/docs/PRD/codex-switch-prd-v0.1.1.md +26 -0
  38. package/docs/PRD/codex-switch-prd-v0.1.2.md +41 -0
  39. package/docs/Reference/codex-config-reference.md +41 -0
  40. package/docs/Reference/codex-config-reference.zh-CN.md +41 -0
  41. package/docs/Tests/testing.md +1 -1
  42. package/docs/cli-usage.md +290 -223
  43. package/docs/codex-switch-command-design.md +2 -2
  44. package/docs/codex-switch-product-overview.md +18 -13
  45. package/docs/codex-switch-product-research.md +2 -2
  46. package/docs/codex-switch-technical-architecture.md +84 -1115
  47. package/package.json +2 -2
  48. package/docs/Design/codex-switch-copilot-integration-design.md +0 -517
  49. package/docs/Design/codex-switch-v0.0.10-design.md +0 -669
  50. package/docs/Design/codex-switch-v0.0.11-design.md +0 -824
  51. package/docs/Design/codex-switch-v0.0.12-design.md +0 -343
  52. package/docs/Design/codex-switch-v0.0.4-design.md +0 -874
  53. package/docs/Design/codex-switch-v0.0.5-design.md +0 -932
  54. package/docs/Design/codex-switch-v0.0.6-design.md +0 -708
  55. package/docs/Design/codex-switch-v0.0.7-design.md +0 -862
  56. package/docs/Design/codex-switch-v0.0.8-design.md +0 -132
  57. package/docs/Design/codex-switch-v0.0.9-design.md +0 -182
  58. package/docs/Design/codex-switch-v0.0.9-to-v0.0.12-roadmap.md +0 -413
  59. package/docs/PRD/codex-switch-prd-v0.0.10.md +0 -406
  60. package/docs/PRD/codex-switch-prd-v0.0.11.md +0 -577
  61. package/docs/PRD/codex-switch-prd-v0.0.12.md +0 -279
  62. package/docs/PRD/codex-switch-prd-v0.0.5-to-v0.1.0.md +0 -446
  63. package/docs/PRD/codex-switch-prd-v0.0.8.md +0 -62
  64. package/docs/PRD/codex-switch-prd-v0.0.9.md +0 -166
  65. package/docs/PRD/codex-switch-prd.md +0 -650
  66. package/docs/Tests/test-report-0.0.5.md +0 -163
  67. package/docs/Tests/test-report-0.0.7.md +0 -118
  68. package/docs/Tests/testing-bridge-v0.0.9.md +0 -367
package/README.AI.md CHANGED
@@ -1,110 +1,141 @@
1
- # AI README
2
-
3
- This file summarizes the current operational contract for AI agents, automation scripts, and contributors.
4
-
5
- ## Package Context
6
-
7
- - Package: `@minniexcode/codex-switch`
8
- - CLI name: `codexs`
9
- - Current repository version: `0.1.0`
10
- - Version status: stable release line
11
-
12
- ## Product Role
13
-
14
- `codex-switch` is a local-first TypeScript CLI that manages provider and profile state for Codex while keeping tool-managed state separate from the target Codex runtime.
15
-
16
- The managed source of truth is the tool home. Runtime files under the target Codex directory are projected outputs, not the main registry.
17
-
18
- ## Primary Workflows
19
-
20
- Direct provider workflow:
21
-
22
- ```bash
23
- codexs init
24
- codexs add <provider> --profile <name> --api-key <key>
25
- codexs switch <provider>
26
- codexs status
27
- codexs doctor
28
- ```
29
-
30
- GitHub Copilot workflow:
31
-
32
- ```bash
33
- codexs init
34
- codexs login copilot
35
- codexs add <provider> --copilot --profile <name>
36
- codexs switch <provider>
37
- codexs status
38
- codexs doctor
39
- ```
40
-
41
- Advanced adopt workflow:
42
-
43
- ```bash
44
- codexs init
45
- codexs migrate
46
- ```
47
-
48
- `migrate` is not a fresh-install default. It is an advanced adopt helper for existing runtime state.
49
-
50
- ## Important Paths
51
-
52
- Tool home:
53
-
54
- ```text
55
- ~/.config/codex-switch/
56
- codex-switch.json
57
- providers.json
58
- backups/
59
- runtime/
60
- runtimes/
61
- ```
62
-
63
- Target Codex runtime:
64
-
65
- ```text
66
- ~/.codex/
67
- config.toml
68
- auth.json
69
- ```
70
-
71
- Operational meaning:
72
-
73
- - `providers.json` is the managed provider registry.
74
- - `codex-switch.json` stores tool-level metadata such as the default target Codex directory.
75
- - `config.toml` is the active runtime routing file.
76
- - `auth.json` is the active auth projection file.
77
-
78
- ## Command Notes
79
-
80
- Shared flags:
81
-
82
- ```bash
83
- --json
84
- --codex-dir <path>
85
- --help
86
- --version
87
- ```
88
-
89
- Relevant environment variables:
90
-
91
- ```bash
92
- CODEXS_HOME
93
- CODEXS_CODEX_DIR
94
- ```
95
-
96
- Important behavioral constraints:
97
-
98
- - Prefer `--json` for programmatic invocation whenever the command supports it.
99
- - `login copilot` requires a real TTY and does not support `--json`.
100
- - `login copilot` currently installs the local Copilot SDK when needed, tries the bundled runtime CLI first, falls back to `PATH` when necessary, and rechecks auth readiness before reporting success.
101
- - `add --copilot` assumes SDK install and upstream Copilot auth are already ready.
102
- - `migrate` remains interactive when provider adoption requires human input.
103
- - `status` is the main dual-path summary command.
104
- - `doctor` is the deeper repair-oriented diagnostic command.
105
-
106
- ## Safety Notes
107
-
108
- - Treat `providers.json` as sensitive because it may contain API keys.
109
- - Human-readable output may mask secrets, but JSON output can expose full provider payloads.
110
- - Managed write operations rely on backup and rollback flow; do not describe manual file edits as the primary workflow.
1
+ # AI README
2
+
3
+ This file summarizes the current operational contract for AI agents, automation scripts, and contributors.
4
+
5
+ ## Package Context
6
+
7
+ - Package: `@minniexcode/codex-switch`
8
+ - CLI name: `codexs`
9
+ - Current repository version: `0.1.1`
10
+ - Version status: stable release line
11
+ - Runtime contract target: Codex `0.134.0+`
12
+
13
+ ## Product Role
14
+
15
+ `codex-switch` is a local-first TypeScript CLI that manages provider and model-provider routing state for Codex while keeping tool-managed state separate from the target Codex runtime.
16
+
17
+ The managed source of truth is the tool home. Runtime files under the target Codex directory are projected outputs, not the main registry.
18
+
19
+ ## Primary Workflows
20
+
21
+ Direct provider workflow:
22
+
23
+ ```bash
24
+ codexs init
25
+ codexs add <provider> --model <model> --api-key <key> [--base-url <url>]
26
+ codexs switch <provider>
27
+ codexs status
28
+ codexs doctor
29
+ ```
30
+
31
+ GitHub Copilot workflow:
32
+
33
+ ```bash
34
+ codexs init
35
+ codexs login copilot
36
+ codexs add <provider> --copilot --model <model>
37
+ codexs switch <provider>
38
+ codexs status
39
+ codexs doctor
40
+ ```
41
+
42
+ Advanced adopt workflow:
43
+
44
+ ```bash
45
+ codexs init
46
+ codexs migrate
47
+ ```
48
+
49
+ `migrate` is not a fresh-install default. It is an advanced adopt helper for existing runtime state.
50
+
51
+ ## Runtime Route Contract
52
+
53
+ For Codex `0.134.0+`, the live route is selected by:
54
+
55
+ - top-level `model`
56
+ - top-level `model_provider`
57
+
58
+ Important implications for automation:
59
+
60
+ - treat `model_provider` as the active provider selector
61
+ - treat `--profile` as an alias for a managed `model_provider` id
62
+ - do not describe top-level `profile` or `[profiles.*]` as the primary runtime path
63
+ - managed direct-provider projection does not keep `env_key` or `env_key_instructions`
64
+ - managed provider projection fixes `wire_api = "responses"` and `requires_openai_auth = true`
65
+
66
+ Expected managed direct-provider projection:
67
+
68
+ ```toml
69
+ model = "gpt-5.5"
70
+ model_provider = "proxy"
71
+
72
+ [model_providers.proxy]
73
+ name = "proxy"
74
+ base_url = "https://proxy.example.com/v1"
75
+ wire_api = "responses"
76
+ requires_openai_auth = true
77
+ ```
78
+
79
+ Authentication remains projected through `auth.json` with `OPENAI_API_KEY`.
80
+
81
+ ## Important Paths
82
+
83
+ Tool home:
84
+
85
+ ```text
86
+ ~/.config/codex-switch/
87
+ codex-switch.json
88
+ providers.json
89
+ backups/
90
+ runtime/
91
+ runtimes/
92
+ ```
93
+
94
+ Target Codex runtime:
95
+
96
+ ```text
97
+ ~/.codex/
98
+ config.toml
99
+ auth.json
100
+ ```
101
+
102
+ Operational meaning:
103
+
104
+ - `providers.json` is the managed provider registry.
105
+ - `codex-switch.json` stores tool-level metadata such as the default target Codex directory.
106
+ - `config.toml` is the active runtime routing file.
107
+ - `auth.json` is the active auth projection file.
108
+
109
+ ## Command Notes
110
+
111
+ Shared flags:
112
+
113
+ ```bash
114
+ --json
115
+ --codex-dir <path>
116
+ --help
117
+ --version
118
+ ```
119
+
120
+ Relevant environment variables:
121
+
122
+ ```bash
123
+ CODEXS_HOME
124
+ CODEXS_CODEX_DIR
125
+ ```
126
+
127
+ Important behavioral constraints:
128
+
129
+ - Prefer `--json` for programmatic invocation whenever the command supports it.
130
+ - `login copilot` requires a real TTY and does not support `--json`.
131
+ - `login copilot` currently installs the local Copilot SDK when needed, tries the bundled runtime CLI first, falls back to `PATH` when necessary, and rechecks auth readiness before reporting success.
132
+ - `add --copilot` assumes SDK install and upstream Copilot auth are already ready.
133
+ - `migrate` remains interactive when provider adoption requires human input.
134
+ - `status` is the main dual-path summary command.
135
+ - `doctor` is the deeper repair-oriented diagnostic command.
136
+
137
+ ## Safety Notes
138
+
139
+ - Treat `providers.json` as sensitive because it may contain API keys.
140
+ - Human-readable output may mask secrets, but JSON output can expose full provider payloads.
141
+ - Managed write operations rely on backup and rollback flow; do not describe manual file edits as the primary workflow.
package/README.CN.md CHANGED
@@ -1,179 +1,215 @@
1
- # @minniexcode/codex-switch
2
-
3
- `@minniexcode/codex-switch` 是一个本地优先的 CLI,用来安全地管理和切换 Codex 的 provider 与 profile 配置。
4
-
5
- 它把 `codex-switch` 自己的工具状态和目标 Codex runtime 明确分开,让 provider 管理、备份与 runtime 投影有一套受管流程,而不是依赖手工改文件。
6
-
7
- ## 版本定位
8
-
9
- 当前包版本:`0.1.0`
10
-
11
- 这是第一条稳定发布线。这个版本的重点不是继续扩命令面,而是把主工作流、帮助文案、实际行为和发布文档统一到同一套契约上。
12
-
13
- ## 安装
14
-
15
- ```bash
16
- npm install -g @minniexcode/codex-switch
17
- ```
18
-
19
- 不全局安装时也可以直接运行:
20
-
21
- ```bash
22
- npx @minniexcode/codex-switch --help
23
- ```
24
-
25
- CLI 命令名:
26
-
27
- ```bash
28
- codexs --help
29
- ```
30
-
31
- ## 主工作流
32
-
33
- Direct provider 主路径:
34
-
35
- ```bash
36
- codexs init
37
- codexs add my-provider --profile my-provider --api-key sk-xxx
38
- codexs switch my-provider
39
- codexs status
40
- codexs doctor
41
- ```
42
-
43
- GitHub Copilot 主路径:
44
-
45
- ```bash
46
- codexs init
47
- codexs login copilot
48
- codexs add copilot-main --copilot --profile copilot-main
49
- codexs switch copilot-main
50
- codexs status
51
- codexs doctor
52
- ```
53
-
54
- 说明:
55
-
56
- - `init` 负责初始化 `codex-switch` 的 tool home 与受管状态文件。
57
- - `login copilot` 负责上游 Copilot onboarding 和登录可用性检查。
58
- - `add --copilot` 不负责替你登录,它假设上游 Copilot 已经 ready。
59
- - `status` 是切换后的主读取命令。
60
- - `doctor` 是主诊断命令,用于解释问题和下一步修复动作。
61
-
62
- ## Advanced Adopt 路径
63
-
64
- 如果你已经有现成的 Codex runtime 状态,希望把它 adopt 到受管 `providers.json`,再使用:
65
-
66
- ```bash
67
- codexs init
68
- codexs migrate
69
- ```
70
-
71
- `migrate` 是高级 adopt helper,不是 fresh install 的默认第一步。
72
-
73
- ## 命令面
74
-
75
- ```bash
76
- codexs init
77
- codexs login copilot
78
- codexs migrate
79
- codexs list
80
- codexs show <provider>
81
- codexs current
82
- codexs status
83
- codexs config show [profile]
84
- codexs config list-profiles
85
- codexs add <provider> --profile <name> --api-key <key>
86
- codexs add <provider> --copilot --profile <name>
87
- codexs edit <provider>
88
- codexs switch <provider>
89
- codexs remove <provider> [--force] [--switch-to <profile>]
90
- codexs import <file>
91
- codexs export <file> [--force]
92
- codexs bridge start [provider]
93
- codexs bridge status [provider]
94
- codexs bridge stop [provider]
95
- codexs backups list
96
- codexs rollback [backup-id]
97
- codexs doctor
98
- ```
99
-
100
- `setup` 仍然存在,但只作为已弃用兼容入口,用来提示调用方改用 `init` 或 `migrate`。
101
-
102
- ## 双路径模型
103
-
104
- tool home:
105
-
106
- ```text
107
- ~/.config/codex-switch/
108
- codex-switch.json
109
- providers.json
110
- backups/
111
- runtime/
112
- runtimes/
113
- ```
114
-
115
- 目标 Codex runtime:
116
-
117
- ```text
118
- ~/.codex/
119
- config.toml
120
- auth.json
121
- ```
122
-
123
- 关键边界:
124
-
125
- - `providers.json` 是受管 provider 注册表,位于 tool home。
126
- - `codex-switch.json` 保存工具级元数据,例如 `defaultCodexDir`。
127
- - `config.toml` 仍然是目标 runtime 里的活动路由文件。
128
- - `auth.json` 仍然是目标 runtime 里的活动认证投影文件。
129
- - Direct provider 切换会改写活动 runtime 中的 `OPENAI_API_KEY`。
130
- - Copilot provider 保持上游 GitHub 登录留在官方 Copilot runtime 中,`codex-switch` 只管理本地 bridge 状态与路由。
131
-
132
- 路径控制:
133
-
134
- - `--codex-dir <path>` 显式指定目标 Codex runtime 目录。
135
- - `CODEXS_CODEX_DIR` 在未传 `--codex-dir` 时提供默认目标目录。
136
- - `CODEXS_HOME` 用于覆盖 tool home 位置。
137
-
138
- ## 自动化说明
139
-
140
- 这个 CLI 同时支持人类终端使用和非交互自动化。
141
-
142
- 全局参数:
143
-
144
- ```bash
145
- --json
146
- --codex-dir <path>
147
- --help
148
- --version
149
- ```
150
-
151
- 当前实现边界:
152
-
153
- - `login copilot` 必须运行在真实 TTY 下,不支持 `--json`。
154
- - `migrate` 在需要人工补齐 adopt 信息时仍然保持交互式语义。
155
- - 自动化调用应尽量显式传参,并优先使用 `--json`。
156
-
157
- ## 本地开发
158
-
159
- ```bash
160
- npm run build
161
- npm test
162
- npx tsc --noEmit
163
- node dist/cli.js --help
164
- npm pack --dry-run
165
- ```
166
-
167
- ## 相关文档
168
-
169
- - [English README](./README.md)
170
- - [AI README](./README.AI.md)
171
- - [详细 CLI 文档](./docs/cli-usage.md)
172
- - [产品概览](./docs/codex-switch-product-overview.md)
173
- - [测试说明](./docs/Tests/testing.md)
174
- - [Release PRD 0.1.0](./docs/PRD/codex-switch-prd-v0.1.0.md)
175
- - [Release Gate PRD 0.1.0](./docs/PRD/codex-switch-prd-v0.1.0.md)
176
-
177
- ## License
178
-
179
- MIT
1
+ # @minniexcode/codex-switch
2
+
3
+ `@minniexcode/codex-switch` 是一个本地优先的 CLI,用来安全地管理和切换 Codex 的 provider 与 model-provider 路由配置。
4
+
5
+ 它把 `codex-switch` 自己的工具状态和目标 Codex runtime 明确分开,让 provider 管理、备份与 runtime 投影有一套受管流程,而不是依赖手工改文件。
6
+
7
+ ## 版本定位
8
+
9
+ 当前包版本:`0.1.2`
10
+
11
+ 这是当前稳定发布线。`0.1.2` 是 Copilot runtime 修复版本,包含受管 SDK 固定版本与 Copilot 专用的 `stream_idle_timeout_ms = 300000` 投影,用于避免长 prompt 的空闲超时。
12
+
13
+ ## 安装
14
+
15
+ ```bash
16
+ npm install -g @minniexcode/codex-switch
17
+ ```
18
+
19
+ 不全局安装时也可以直接运行:
20
+
21
+ ```bash
22
+ npx @minniexcode/codex-switch --help
23
+ ```
24
+
25
+ CLI 命令名:
26
+
27
+ ```bash
28
+ codexs --help
29
+ ```
30
+
31
+ ## 主工作流
32
+
33
+ Direct provider 主路径:
34
+
35
+ ```bash
36
+ codexs init
37
+ codexs add my-provider --model gpt-5.5 --base-url https://gateway.example.com/v1 --api-key sk-xxx
38
+ codexs switch my-provider
39
+ codexs status
40
+ codexs doctor
41
+ ```
42
+
43
+ GitHub Copilot 主路径:
44
+
45
+ ```bash
46
+ codexs init
47
+ codexs login copilot
48
+ codexs add copilot-main --copilot --model gpt-4.1
49
+ codexs switch copilot-main
50
+ codexs status
51
+ codexs doctor
52
+ ```
53
+
54
+ 说明:
55
+
56
+ - `init` 负责初始化 `codex-switch` 的 tool home 与受管状态文件。
57
+ - `login copilot` 负责上游 Copilot onboarding 和登录可用性检查。
58
+ - `add --copilot` 不负责替你登录,它假设上游 Copilot 已经 ready。
59
+ - `switch` 会把选中的 provider 投影到目标 Codex runtime 的顶层 `model` 与 `model_provider`。
60
+ - `status` 是切换后的主读取命令。
61
+ - `doctor` 是主诊断命令,用于解释问题和下一步修复动作。
62
+
63
+ ## Runtime 路由模型
64
+
65
+ 对于 Codex `0.134.0+`,活动 runtime route 由 `config.toml` 顶层的 `model` 和 `model_provider` 决定。
66
+
67
+ `codex-switch` 按这套 contract 管理运行态:
68
+
69
+ - 顶层 `model` 表示当前活动模型
70
+ - 顶层 `model_provider` 表示当前活动 provider route
71
+ - 受管的 `[model_providers.<id>]` runtime provider 定义投影
72
+ - `--profile` 只作为受管 `model_provider` id 的 alias,不再是主 runtime selector
73
+
74
+ Direct provider 的运行态投影会写入:
75
+
76
+ - 顶层 `model`
77
+ - 顶层 `model_provider`
78
+ - `[model_providers.<id>]`
79
+ - 带 `OPENAI_API_KEY` 的 `auth.json`
80
+
81
+ 受管 direct provider 投影不会再保留 `env_key` 或 `env_key_instructions`。`switch`、`add` 和 `edit` 会在写入活动路由前清理这些旧字段。
82
+
83
+ 对受管的 OpenAI-compatible route,投影后的 provider 结构固定为:
84
+
85
+ ```toml
86
+ model = "gpt-5.5"
87
+ model_provider = "my-provider"
88
+
89
+ [model_providers.my-provider]
90
+ name = "my-provider"
91
+ base_url = "https://gateway.example.com/v1"
92
+ wire_api = "responses"
93
+ requires_openai_auth = true
94
+ ```
95
+
96
+ ## Advanced Adopt 路径
97
+
98
+ 如果你已经有现成的 Codex runtime 状态,希望把它 adopt 到受管 `providers.json`,再使用:
99
+
100
+ ```bash
101
+ codexs init
102
+ codexs migrate
103
+ ```
104
+
105
+ `migrate` 是高级 adopt helper,不是 fresh install 的默认第一步。
106
+
107
+ ## 命令面
108
+
109
+ ```bash
110
+ codexs init
111
+ codexs login copilot
112
+ codexs migrate
113
+ codexs list
114
+ codexs show <provider>
115
+ codexs current
116
+ codexs status
117
+ codexs config show [profile]
118
+ codexs config list-profiles
119
+ codexs add <provider> --model <model> --api-key <key> [--base-url <url>]
120
+ codexs add <provider> --copilot --model <model>
121
+ codexs edit <provider>
122
+ codexs switch <provider>
123
+ codexs remove <provider> [--force] [--switch-to <provider>]
124
+ codexs import <file>
125
+ codexs export <file> [--force]
126
+ codexs bridge start [provider]
127
+ codexs bridge status [provider]
128
+ codexs bridge stop [provider]
129
+ codexs backups list
130
+ codexs rollback [backup-id]
131
+ codexs doctor
132
+ ```
133
+
134
+ `setup` 仍然存在,但只作为已弃用兼容入口,用来提示调用方改用 `init` `migrate`。
135
+
136
+ ## 双路径模型
137
+
138
+ tool home:
139
+
140
+ ```text
141
+ ~/.config/codex-switch/
142
+ codex-switch.json
143
+ providers.json
144
+ backups/
145
+ runtime/
146
+ runtimes/
147
+ ```
148
+
149
+ 目标 Codex runtime:
150
+
151
+ ```text
152
+ ~/.codex/
153
+ config.toml
154
+ auth.json
155
+ ```
156
+
157
+ 关键边界:
158
+
159
+ - `providers.json` 是受管 provider 注册表,位于 tool home。
160
+ - `codex-switch.json` 保存工具级元数据,例如 `defaultCodexDir`。
161
+ - `config.toml` 仍然是目标 runtime 里的活动路由文件。
162
+ - `auth.json` 仍然是目标 runtime 里的活动认证投影文件。
163
+ - Direct provider 切换会改写活动 runtime 中的 `OPENAI_API_KEY`。
164
+ - Copilot provider 保持上游 GitHub 登录留在官方 Copilot runtime 中,`codex-switch` 只管理本地 bridge 状态与路由。
165
+
166
+ 路径控制:
167
+
168
+ - `--codex-dir <path>` 显式指定目标 Codex runtime 目录。
169
+ - `CODEXS_CODEX_DIR` 在未传 `--codex-dir` 时提供默认目标目录。
170
+ - `CODEXS_HOME` 用于覆盖 tool home 位置。
171
+
172
+ ## 自动化说明
173
+
174
+ 这个 CLI 同时支持人类终端使用和非交互自动化。
175
+
176
+ 全局参数:
177
+
178
+ ```bash
179
+ --json
180
+ --codex-dir <path>
181
+ --help
182
+ --version
183
+ ```
184
+
185
+ 当前实现边界:
186
+
187
+ - `login copilot` 必须运行在真实 TTY 下,不支持 `--json`。
188
+ - `migrate` 在需要人工补齐 adopt 信息时仍然保持交互式语义。
189
+ - 自动化调用应尽量显式传参,并优先使用 `--json`。
190
+
191
+ ## 本地开发
192
+
193
+ ```bash
194
+ npm run build
195
+ npm test
196
+ npx tsc --noEmit
197
+ node dist/cli.js --help
198
+ npm pack --dry-run
199
+ ```
200
+
201
+ ## 相关文档
202
+
203
+ - [English README](./README.md)
204
+ - [AI README](./README.AI.md)
205
+ - [详细 CLI 文档](./docs/cli-usage.md)
206
+ - [产品概览](./docs/codex-switch-product-overview.md)
207
+ - [测试说明](./docs/Tests/testing.md)
208
+ - [PRD 0.1.1](./docs/PRD/codex-switch-prd-v0.1.1.md)
209
+ - [Design 0.1.1](./docs/Design/codex-switch-v0.1.1-design.md)
210
+ - [PRD 0.1.2](./docs/PRD/codex-switch-prd-v0.1.2.md)
211
+ - [Design 0.1.2](./docs/Design/codex-switch-v0.1.2-design.md)
212
+
213
+ ## License
214
+
215
+ MIT