@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.
Files changed (71) hide show
  1. package/LICENSE +15 -0
  2. package/package.json +8 -1
  3. package/.claude/settings.json +0 -6
  4. package/.claude/settings.local.json +0 -8
  5. package/.nvmrc +0 -1
  6. package/CHANGELOG.md +0 -71
  7. package/docs/product-specs/index.draft.md +0 -106
  8. package/docs/product-specs/index.md +0 -911
  9. package/docs/product-specs/optional.md +0 -42
  10. package/docs/references/claude-code-env.md +0 -224
  11. package/docs/superpowers/plans/2026-04-24-cc-env-init-shell-migration.md +0 -1331
  12. package/docs/superpowers/plans/2026-04-24-cc-env.md +0 -1666
  13. package/docs/superpowers/plans/2026-04-26-preset-create-interactive-refactor.md +0 -1432
  14. package/docs/superpowers/specs/2026-04-24-cc-env-design.md +0 -438
  15. package/docs/superpowers/specs/2026-04-24-cc-env-init-shell-migration-design.md +0 -181
  16. package/docs/superpowers/specs/2026-04-26-preset-create-interactive-refactor-design.md +0 -78
  17. package/src/cli.ts +0 -340
  18. package/src/commands/init.ts +0 -139
  19. package/src/commands/preset/create.ts +0 -96
  20. package/src/commands/preset/delete.ts +0 -62
  21. package/src/commands/preset/show.ts +0 -51
  22. package/src/commands/restore.ts +0 -150
  23. package/src/commands/run.ts +0 -158
  24. package/src/core/errors.ts +0 -13
  25. package/src/core/find-claude.ts +0 -70
  26. package/src/core/format.ts +0 -29
  27. package/src/core/fs.ts +0 -18
  28. package/src/core/gitignore.ts +0 -26
  29. package/src/core/logger.ts +0 -11
  30. package/src/core/mask.ts +0 -17
  31. package/src/core/paths.ts +0 -41
  32. package/src/core/process-env.ts +0 -11
  33. package/src/core/schema.ts +0 -55
  34. package/src/core/spawn.ts +0 -36
  35. package/src/flows/init-flow.ts +0 -61
  36. package/src/flows/preset-create-flow.ts +0 -129
  37. package/src/flows/restore-flow.ts +0 -144
  38. package/src/ink/init-app.tsx +0 -110
  39. package/src/ink/preset-create-app.tsx +0 -451
  40. package/src/ink/preset-delete-app.tsx +0 -114
  41. package/src/ink/preset-show-app.tsx +0 -76
  42. package/src/ink/restore-app.tsx +0 -230
  43. package/src/ink/run-preset-select-app.tsx +0 -83
  44. package/src/ink/summary.tsx +0 -91
  45. package/src/services/claude-settings-env-service.ts +0 -72
  46. package/src/services/history-service.ts +0 -48
  47. package/src/services/preset-service.ts +0 -72
  48. package/src/services/project-env-service.ts +0 -128
  49. package/src/services/project-state-service.ts +0 -31
  50. package/src/services/settings-env-service.ts +0 -40
  51. package/src/services/shell-env-service.ts +0 -112
  52. package/src/types.d.ts +0 -19
  53. package/tests/cli/help.test.ts +0 -133
  54. package/tests/cli/init.test.ts +0 -76
  55. package/tests/cli/restore.test.ts +0 -172
  56. package/tests/commands/create.test.ts +0 -263
  57. package/tests/commands/output.test.ts +0 -119
  58. package/tests/commands/run.test.ts +0 -218
  59. package/tests/core/gitignore.test.ts +0 -98
  60. package/tests/core/paths.test.ts +0 -24
  61. package/tests/core/schema-mask.test.ts +0 -182
  62. package/tests/core/spawn.test.ts +0 -47
  63. package/tests/flows/init-flow.test.ts +0 -40
  64. package/tests/flows/preset-create-flow.test.ts +0 -225
  65. package/tests/flows/restore-flow.test.ts +0 -157
  66. package/tests/integration/init-restore.test.ts +0 -406
  67. package/tests/services/claude-shell.test.ts +0 -183
  68. package/tests/services/storage.test.ts +0 -143
  69. package/tsconfig.build.json +0 -9
  70. package/tsconfig.json +0 -22
  71. 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.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
  },
@@ -1,6 +0,0 @@
1
- {
2
- "enabledPlugins": {
3
- "superpowers@claude-plugins-official": true
4
- },
5
- "env": {}
6
- }
@@ -1,8 +0,0 @@
1
- {
2
- "env": {},
3
- "permissions": {
4
- "allow": [
5
- "Bash(python3 *)"
6
- ]
7
- }
8
- }
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)