@lkangd/cc-env 1.1.1 → 1.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.
- package/LICENSE +15 -0
- package/package.json +8 -1
- package/.claude/settings.json +0 -6
- package/.claude/settings.local.json +0 -8
- package/.nvmrc +0 -1
- package/CHANGELOG.md +0 -71
- package/docs/product-specs/index.draft.md +0 -106
- package/docs/product-specs/index.md +0 -911
- package/docs/product-specs/optional.md +0 -42
- package/docs/references/claude-code-env.md +0 -224
- package/docs/superpowers/plans/2026-04-24-cc-env-init-shell-migration.md +0 -1331
- package/docs/superpowers/plans/2026-04-24-cc-env.md +0 -1666
- package/docs/superpowers/plans/2026-04-26-preset-create-interactive-refactor.md +0 -1432
- package/docs/superpowers/specs/2026-04-24-cc-env-design.md +0 -438
- package/docs/superpowers/specs/2026-04-24-cc-env-init-shell-migration-design.md +0 -181
- package/docs/superpowers/specs/2026-04-26-preset-create-interactive-refactor-design.md +0 -78
- package/src/cli.ts +0 -340
- package/src/commands/init.ts +0 -139
- package/src/commands/preset/create.ts +0 -96
- package/src/commands/preset/delete.ts +0 -62
- package/src/commands/preset/show.ts +0 -51
- package/src/commands/restore.ts +0 -150
- package/src/commands/run.ts +0 -158
- package/src/core/errors.ts +0 -13
- package/src/core/find-claude.ts +0 -70
- package/src/core/format.ts +0 -29
- package/src/core/fs.ts +0 -18
- package/src/core/gitignore.ts +0 -26
- package/src/core/logger.ts +0 -11
- package/src/core/mask.ts +0 -17
- package/src/core/paths.ts +0 -41
- package/src/core/process-env.ts +0 -11
- package/src/core/schema.ts +0 -55
- package/src/core/spawn.ts +0 -36
- package/src/flows/init-flow.ts +0 -61
- package/src/flows/preset-create-flow.ts +0 -129
- package/src/flows/restore-flow.ts +0 -144
- package/src/ink/init-app.tsx +0 -110
- package/src/ink/preset-create-app.tsx +0 -451
- package/src/ink/preset-delete-app.tsx +0 -114
- package/src/ink/preset-show-app.tsx +0 -76
- package/src/ink/restore-app.tsx +0 -230
- package/src/ink/run-preset-select-app.tsx +0 -83
- package/src/ink/summary.tsx +0 -91
- package/src/services/claude-settings-env-service.ts +0 -72
- package/src/services/history-service.ts +0 -48
- package/src/services/preset-service.ts +0 -72
- package/src/services/project-env-service.ts +0 -128
- package/src/services/project-state-service.ts +0 -31
- package/src/services/settings-env-service.ts +0 -40
- package/src/services/shell-env-service.ts +0 -112
- package/src/types.d.ts +0 -19
- package/tests/cli/help.test.ts +0 -133
- package/tests/cli/init.test.ts +0 -76
- package/tests/cli/restore.test.ts +0 -172
- package/tests/commands/create.test.ts +0 -263
- package/tests/commands/output.test.ts +0 -119
- package/tests/commands/run.test.ts +0 -218
- package/tests/core/gitignore.test.ts +0 -98
- package/tests/core/paths.test.ts +0 -24
- package/tests/core/schema-mask.test.ts +0 -182
- package/tests/core/spawn.test.ts +0 -47
- package/tests/flows/init-flow.test.ts +0 -40
- package/tests/flows/preset-create-flow.test.ts +0 -225
- package/tests/flows/restore-flow.test.ts +0 -157
- package/tests/integration/init-restore.test.ts +0 -406
- package/tests/services/claude-shell.test.ts +0 -183
- package/tests/services/storage.test.ts +0 -143
- package/tsconfig.build.json +0 -9
- package/tsconfig.json +0 -22
- package/vitest.config.ts +0 -8
package/LICENSE
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
ISC License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, lkangd
|
|
4
|
+
|
|
5
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
7
|
+
copyright notice and this permission notice appear in all copies.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
10
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
11
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
12
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
13
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
14
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
15
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lkangd/cc-env",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"homepage": "https://github.com/lkangd/cc-env#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -22,8 +22,15 @@
|
|
|
22
22
|
"bin": {
|
|
23
23
|
"cc-env": "dist/cli.js"
|
|
24
24
|
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"package.json",
|
|
28
|
+
"README.md",
|
|
29
|
+
"LICENSE"
|
|
30
|
+
],
|
|
25
31
|
"scripts": {
|
|
26
32
|
"build": "tsc -p tsconfig.build.json",
|
|
33
|
+
"prepack": "npm run build",
|
|
27
34
|
"dev": "tsx src/cli.ts",
|
|
28
35
|
"test": "vitest run"
|
|
29
36
|
},
|
package/.claude/settings.json
DELETED
package/.nvmrc
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
20.19.2
|
package/CHANGELOG.md
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
## 1.1.1 (2026-04-27)
|
|
4
|
-
|
|
5
|
-
### Code Refactoring
|
|
6
|
-
* flatten preset subcommands to top-level CLI commands
|
|
7
|
-
|
|
8
|
-
## 1.1.0 (2026-04-27)
|
|
9
|
-
|
|
10
|
-
### Features
|
|
11
|
-
* add CLI descriptions and improve error formatting
|
|
12
|
-
* add env source and merge services
|
|
13
|
-
* add env validation and masking helpers
|
|
14
|
-
* add gradient ASCII art banner to CLI startup
|
|
15
|
-
* add initial project structure with .gitignore, package.json, and documentation
|
|
16
|
-
* add interactive preset creation flow
|
|
17
|
-
* add interactive preset delete with confirmation flow
|
|
18
|
-
* add interactive preset list UI with project/global source display
|
|
19
|
-
* add non-interactive preset creation
|
|
20
|
-
* add output and preset inspection commands
|
|
21
|
-
* add preset and history storage services
|
|
22
|
-
* add restore flow and command
|
|
23
|
-
* add runtime execution and dry-run
|
|
24
|
-
* add settings migration flow
|
|
25
|
-
* add shebang to CLI entry point
|
|
26
|
-
* auto-add .cc-env to .gitignore on project preset create and remove config service
|
|
27
|
-
* complete cc-env v1 command wiring
|
|
28
|
-
* migrate Claude env into managed shell blocks
|
|
29
|
-
* redesign run command as Claude launcher with interactive preset selection
|
|
30
|
-
* scope package as @lkangd/cc-env for public npm publish
|
|
31
|
-
* support project-level Claude settings in init and restore
|
|
32
|
-
|
|
33
|
-
### Bug Fixes
|
|
34
|
-
* align preset create step progression
|
|
35
|
-
* complete interactive init and restore flows
|
|
36
|
-
* harden interactive preset create flow
|
|
37
|
-
* harden project env first-write handling
|
|
38
|
-
* harden restore flow selection
|
|
39
|
-
* harden run command validation and preview
|
|
40
|
-
* harden storage writes and preset deletion
|
|
41
|
-
* normalize preset create input errors
|
|
42
|
-
* resolve TypeScript exactOptionalPropertyTypes errors in preset create
|
|
43
|
-
* simplify interactive preset create flow
|
|
44
|
-
* support top-level run flags
|
|
45
|
-
* wire preset management commands and outputs
|
|
46
|
-
|
|
47
|
-
### Code Refactoring
|
|
48
|
-
* align persisted history records with schema
|
|
49
|
-
* extract shared EnvSummary component and replace stdout writes with ink rendering
|
|
50
|
-
* merge preset list and show into single interactive show command
|
|
51
|
-
* remove debug command and runtime env service
|
|
52
|
-
* remove preset edit command and add .cc-env/ to gitignore
|
|
53
|
-
* remove proper-lockfile in favor of atomic writes
|
|
54
|
-
* reorder merge params to match priority and use ink in debug
|
|
55
|
-
* rewrite preset-create-app with full interactive wizard UI
|
|
56
|
-
* rewrite preset-create-flow state machine for full interactive wizard
|
|
57
|
-
* simplify preset create command to thin renderFlow wrapper
|
|
58
|
-
* use sources array in history schema and improve interactive UI
|
|
59
|
-
|
|
60
|
-
### Documentation
|
|
61
|
-
* add preset create interactive refactor design spec
|
|
62
|
-
* add preset create interactive refactor implementation plan
|
|
63
|
-
|
|
64
|
-
### Other Changes
|
|
65
|
-
* merge: integrate Claude shell env migration
|
|
66
|
-
* fix restore typing against persisted history schema
|
|
67
|
-
* fix signal exits and history record validation
|
|
68
|
-
* fix restore flow state invariants and CLI wiring
|
|
69
|
-
* fix interactive preset create flow wiring
|
|
70
|
-
* fix schema timestamp validation and secret masking
|
|
71
|
-
* fix package dependency versions for task 1 compliance
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
# 从零开始构建一个基于 nodejs 的命令行工具
|
|
2
|
-
|
|
3
|
-
## 背景
|
|
4
|
-
|
|
5
|
-
claude code cli 在启动的时候,会读取环境变量中需要的配置,以作为启动参数,比如模型的基础请求地址:ANTHROPIC_BASE_URL。这些配置一般定义在 ~/.claude/settings.json 中的 env 字段。
|
|
6
|
-
现在有一个痛点,比如我有多家模型提供商,如果将配置写在 ~/.claude/settings.json 中,那么只能同时使用一家模型提供商,因此需要提供另外一种方式,让 claude code 在启动的时候可以指定提供商或者其他所有 claude code 支持的环境变量。
|
|
7
|
-
|
|
8
|
-
## 功能描述
|
|
9
|
-
|
|
10
|
-
### 使用方式
|
|
11
|
-
|
|
12
|
-
在终端命令行下,提供一种如下的调用方式来启动 claude code:
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
cc-env --preset=some-preset claude
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
运行后 cc-env 会将 some-preset(提前设置过的) 对应的一组预置的环境变量(claude code 支持),让 claude code 读到运行时配置。
|
|
19
|
-
|
|
20
|
-
### 初始化
|
|
21
|
-
|
|
22
|
-
使用 cc-env 进行初始化,主要做的是将 ~/.claude/settings.json 中 env 的字段,移动到全局环境变量中,调用后展示 env 中已经定义的环境变量,默认勾选中以下字段:
|
|
23
|
-
|
|
24
|
-
- ANTHROPIC_AUTH_TOKEN
|
|
25
|
-
- ANTHROPIC_BASE_URL
|
|
26
|
-
- ANTHROPIC_DEFAULT_HAIKU_MODEL
|
|
27
|
-
- ANTHROPIC_DEFAULT_OPUS_MODEL
|
|
28
|
-
- ANTHROPIC_DEFAULT_SONNET_MODEL
|
|
29
|
-
- ANTHROPIC_REASONING_MODEL
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
cc-env --init // or cc-env -i
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
初始化移动过的记录需要保存在 ~/.cc-env 文件夹中,每一次初始化都要记录,以便恢复的时候,可以让用户选择。
|
|
36
|
-
|
|
37
|
-
初始化可以重复执行,如果有字段覆盖,需要提示用户确认,一定要用户输入 Y 确认。
|
|
38
|
-
|
|
39
|
-
### 恢复
|
|
40
|
-
|
|
41
|
-
将初始化的移动的环境变量移动回 ~/.claude/settings.json 中 env 内。
|
|
42
|
-
|
|
43
|
-
通过文件夹的方式展示每一次初始化记录和对应的字段给用户查看,左边栏是时间(从上到下,倒叙),右边栏是涉及变动的字段。用户选中确认后,按 Y 确认回写。
|
|
44
|
-
|
|
45
|
-
### 创建预设
|
|
46
|
-
|
|
47
|
-
参数你根据最合适的方式定义。
|
|
48
|
-
|
|
49
|
-
预设默认放置在 ~/.cc-env 文件夹中,但是可以指定到当前文件夹下,如果是当前文件夹下,则自动创建 .cc-env 目录,并存放为 env.json,重复存放覆盖。
|
|
50
|
-
|
|
51
|
-
#### 展示预设列表
|
|
52
|
-
|
|
53
|
-
通过文件夹的方式展示所有预设,左边栏是时间(从上到下,倒叙),右边栏是对应的环境变量字段。
|
|
54
|
-
|
|
55
|
-
#### 文件导入
|
|
56
|
-
|
|
57
|
-
支持指定 claude code settings.json 文件路径,但是只会读取里面的 env 字段。
|
|
58
|
-
|
|
59
|
-
支持 yaml 格式的文件,支持 json。
|
|
60
|
-
|
|
61
|
-
限制:只支持 value 字段为非嵌套对象的输入,自动忽略不合法的值
|
|
62
|
-
|
|
63
|
-
#### 交互式导入
|
|
64
|
-
|
|
65
|
-
支持直接贴多行的 yaml 的输入和 json 输入。
|
|
66
|
-
|
|
67
|
-
限制:只支持 value 字段为非嵌套对象的输入,自动忽略不合法的值
|
|
68
|
-
|
|
69
|
-
#### 勾选时设置
|
|
70
|
-
|
|
71
|
-
基于 claude code 官方支持 env,让用户勾选需要设置的环境变量值,确认依次录入具体的值,默认勾选中以下字段:
|
|
72
|
-
|
|
73
|
-
- ANTHROPIC_AUTH_TOKEN
|
|
74
|
-
- ANTHROPIC_BASE_URL
|
|
75
|
-
- ANTHROPIC_DEFAULT_HAIKU_MODEL
|
|
76
|
-
- ANTHROPIC_DEFAULT_OPUS_MODEL
|
|
77
|
-
- ANTHROPIC_DEFAULT_SONNET_MODEL
|
|
78
|
-
- ANTHROPIC_REASONING_MODEL
|
|
79
|
-
|
|
80
|
-
限制:只支持 value 字段为非嵌套对象的输入,自动忽略不合法的值
|
|
81
|
-
|
|
82
|
-
#### 删除预设
|
|
83
|
-
|
|
84
|
-
参数你根据最合适的方式定义。
|
|
85
|
-
|
|
86
|
-
展示预设列表,选中确认后,输入 Y 删除
|
|
87
|
-
|
|
88
|
-
#### 编辑预设
|
|
89
|
-
|
|
90
|
-
参数你根据最合适的方式定义。
|
|
91
|
-
|
|
92
|
-
交互方式你来定。
|
|
93
|
-
|
|
94
|
-
#### 读取目录下的预设
|
|
95
|
-
|
|
96
|
-
cc-env 在启动时候,检查当前目录下 .cc-env/env.json 或者 .cc-env/env.yaml,如果存在,则当作较高优先级的环境变量使用。
|
|
97
|
-
|
|
98
|
-
## 要求
|
|
99
|
-
|
|
100
|
-
### 技术栈
|
|
101
|
-
|
|
102
|
-
基于 nodejs 为 base,选用最佳的 cli 实现技术栈
|
|
103
|
-
|
|
104
|
-
## 引用
|
|
105
|
-
|
|
106
|
-
### [claude code 官方支持 env](../references/claude-code-env.md)
|