@lkangd/cc-settings-preset 1.0.0

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 (124) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +304 -0
  3. package/README.zh-hans.md +304 -0
  4. package/dist/cli.d.ts +19 -0
  5. package/dist/cli.js +547 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/core/args.d.ts +5 -0
  8. package/dist/core/args.js +20 -0
  9. package/dist/core/args.js.map +1 -0
  10. package/dist/core/errors.d.ts +4 -0
  11. package/dist/core/errors.js +9 -0
  12. package/dist/core/errors.js.map +1 -0
  13. package/dist/core/json.d.ts +3 -0
  14. package/dist/core/json.js +46 -0
  15. package/dist/core/json.js.map +1 -0
  16. package/dist/core/name.d.ts +15 -0
  17. package/dist/core/name.js +58 -0
  18. package/dist/core/name.js.map +1 -0
  19. package/dist/core/paths.d.ts +26 -0
  20. package/dist/core/paths.js +79 -0
  21. package/dist/core/paths.js.map +1 -0
  22. package/dist/core/schema.d.ts +137 -0
  23. package/dist/core/schema.js +70 -0
  24. package/dist/core/schema.js.map +1 -0
  25. package/dist/core/spawn.d.ts +1 -0
  26. package/dist/core/spawn.js +32 -0
  27. package/dist/core/spawn.js.map +1 -0
  28. package/dist/core/terminal.d.ts +2 -0
  29. package/dist/core/terminal.js +5 -0
  30. package/dist/core/terminal.js.map +1 -0
  31. package/dist/flows/create-flow.d.ts +14 -0
  32. package/dist/flows/create-flow.js +13 -0
  33. package/dist/flows/create-flow.js.map +1 -0
  34. package/dist/flows/manage-flow.d.ts +9 -0
  35. package/dist/flows/manage-flow.js +8 -0
  36. package/dist/flows/manage-flow.js.map +1 -0
  37. package/dist/flows/project-launch-flow.d.ts +79 -0
  38. package/dist/flows/project-launch-flow.js +217 -0
  39. package/dist/flows/project-launch-flow.js.map +1 -0
  40. package/dist/flows/run-flow.d.ts +52 -0
  41. package/dist/flows/run-flow.js +167 -0
  42. package/dist/flows/run-flow.js.map +1 -0
  43. package/dist/flows/settings-select-flow.d.ts +21 -0
  44. package/dist/flows/settings-select-flow.js +20 -0
  45. package/dist/flows/settings-select-flow.js.map +1 -0
  46. package/dist/ink/components/global-shortcut-handler.d.ts +10 -0
  47. package/dist/ink/components/global-shortcut-handler.js +9 -0
  48. package/dist/ink/components/global-shortcut-handler.js.map +1 -0
  49. package/dist/ink/components/json-tree-view.d.ts +3 -0
  50. package/dist/ink/components/json-tree-view.js +52 -0
  51. package/dist/ink/components/json-tree-view.js.map +1 -0
  52. package/dist/ink/components/resize-context.d.ts +8 -0
  53. package/dist/ink/components/resize-context.js +10 -0
  54. package/dist/ink/components/resize-context.js.map +1 -0
  55. package/dist/ink/components/text-input-editing.d.ts +23 -0
  56. package/dist/ink/components/text-input-editing.js +42 -0
  57. package/dist/ink/components/text-input-editing.js.map +1 -0
  58. package/dist/ink/components/text-input-field.d.ts +15 -0
  59. package/dist/ink/components/text-input-field.js +127 -0
  60. package/dist/ink/components/text-input-field.js.map +1 -0
  61. package/dist/ink/components/text-input.d.ts +10 -0
  62. package/dist/ink/components/text-input.js +22 -0
  63. package/dist/ink/components/text-input.js.map +1 -0
  64. package/dist/ink/components/toggle-column.d.ts +8 -0
  65. package/dist/ink/components/toggle-column.js +30 -0
  66. package/dist/ink/components/toggle-column.js.map +1 -0
  67. package/dist/ink/components/truncate-text.d.ts +3 -0
  68. package/dist/ink/components/truncate-text.js +6 -0
  69. package/dist/ink/components/truncate-text.js.map +1 -0
  70. package/dist/ink/components/two-column-settings-view.d.ts +9 -0
  71. package/dist/ink/components/two-column-settings-view.js +16 -0
  72. package/dist/ink/components/two-column-settings-view.js.map +1 -0
  73. package/dist/ink/components/use-text-input-state.d.ts +45 -0
  74. package/dist/ink/components/use-text-input-state.js +100 -0
  75. package/dist/ink/components/use-text-input-state.js.map +1 -0
  76. package/dist/ink/components/use-text-input.d.ts +8 -0
  77. package/dist/ink/components/use-text-input.js +87 -0
  78. package/dist/ink/components/use-text-input.js.map +1 -0
  79. package/dist/ink/create-app.d.ts +11 -0
  80. package/dist/ink/create-app.js +49 -0
  81. package/dist/ink/create-app.js.map +1 -0
  82. package/dist/ink/manage-app.d.ts +25 -0
  83. package/dist/ink/manage-app.js +92 -0
  84. package/dist/ink/manage-app.js.map +1 -0
  85. package/dist/ink/project-launch-app.d.ts +22 -0
  86. package/dist/ink/project-launch-app.js +144 -0
  87. package/dist/ink/project-launch-app.js.map +1 -0
  88. package/dist/ink/project-manage-app.d.ts +28 -0
  89. package/dist/ink/project-manage-app.js +239 -0
  90. package/dist/ink/project-manage-app.js.map +1 -0
  91. package/dist/ink/settings-select-app.d.ts +9 -0
  92. package/dist/ink/settings-select-app.js +31 -0
  93. package/dist/ink/settings-select-app.js.map +1 -0
  94. package/dist/services/global-last-settings-service.d.ts +4 -0
  95. package/dist/services/global-last-settings-service.js +25 -0
  96. package/dist/services/global-last-settings-service.js.map +1 -0
  97. package/dist/services/launch-preset-service.d.ts +13 -0
  98. package/dist/services/launch-preset-service.js +186 -0
  99. package/dist/services/launch-preset-service.js.map +1 -0
  100. package/dist/services/mcp-service.d.ts +18 -0
  101. package/dist/services/mcp-service.js +106 -0
  102. package/dist/services/mcp-service.js.map +1 -0
  103. package/dist/services/plugin-service.d.ts +16 -0
  104. package/dist/services/plugin-service.js +58 -0
  105. package/dist/services/plugin-service.js.map +1 -0
  106. package/dist/services/preset-service.d.ts +13 -0
  107. package/dist/services/preset-service.js +152 -0
  108. package/dist/services/preset-service.js.map +1 -0
  109. package/dist/services/project-store-service.d.ts +6 -0
  110. package/dist/services/project-store-service.js +16 -0
  111. package/dist/services/project-store-service.js.map +1 -0
  112. package/dist/services/reveal-service.d.ts +2 -0
  113. package/dist/services/reveal-service.js +7 -0
  114. package/dist/services/reveal-service.js.map +1 -0
  115. package/dist/services/settings-finalizer-service.d.ts +2 -0
  116. package/dist/services/settings-finalizer-service.js +21 -0
  117. package/dist/services/settings-finalizer-service.js.map +1 -0
  118. package/dist/services/settings-source-service.d.ts +11 -0
  119. package/dist/services/settings-source-service.js +26 -0
  120. package/dist/services/settings-source-service.js.map +1 -0
  121. package/dist/services/skill-service.d.ts +24 -0
  122. package/dist/services/skill-service.js +193 -0
  123. package/dist/services/skill-service.js.map +1 -0
  124. package/package.json +67 -0
@@ -0,0 +1,193 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { basename, dirname, join } from 'node:path';
3
+ import { pathExists, readJsonFile } from '../core/json.js';
4
+ import { resolveClaudePluginCacheDir, resolveProjectCommandsDir, resolveProjectSkillsDir, resolveUserSkillsDir } from '../core/paths.js';
5
+ async function readDirSafe(dirPath) {
6
+ try {
7
+ return await fs.readdir(dirPath, { withFileTypes: true });
8
+ }
9
+ catch (error) {
10
+ if (error.code === 'ENOENT')
11
+ return [];
12
+ throw error;
13
+ }
14
+ }
15
+ async function isDirectoryLike(entryPath, entry) {
16
+ if (entry.isDirectory())
17
+ return true;
18
+ if (!entry.isSymbolicLink())
19
+ return false;
20
+ try {
21
+ return (await fs.stat(entryPath)).isDirectory();
22
+ }
23
+ catch (error) {
24
+ if (error.code === 'ENOENT')
25
+ return false;
26
+ throw error;
27
+ }
28
+ }
29
+ async function discoverSkillDir(dirPath, source) {
30
+ const entries = await readDirSafe(dirPath);
31
+ const skills = [];
32
+ for (const entry of entries) {
33
+ const entryPath = join(dirPath, entry.name);
34
+ if (!await isDirectoryLike(entryPath, entry))
35
+ continue;
36
+ const skillPath = join(entryPath, 'SKILL.md');
37
+ if (await pathExists(skillPath)) {
38
+ skills.push({ name: entry.name, enabled: true, source, toggleable: true });
39
+ }
40
+ }
41
+ return skills;
42
+ }
43
+ async function discoverProjectSkills(cwd) {
44
+ const skills = [];
45
+ let current = cwd;
46
+ while (true) {
47
+ skills.push(...await discoverSkillDir(resolveProjectSkillsDir(current), 'project'));
48
+ const parent = dirname(current);
49
+ if (parent === current)
50
+ break;
51
+ current = parent;
52
+ }
53
+ return skills;
54
+ }
55
+ async function discoverCommandSkills(commandsDir) {
56
+ const entries = await readDirSafe(commandsDir);
57
+ return entries
58
+ .filter(entry => entry.isFile() && entry.name.endsWith('.md'))
59
+ .map(entry => ({
60
+ name: entry.name.slice(0, -'.md'.length),
61
+ enabled: true,
62
+ source: 'command',
63
+ toggleable: true,
64
+ }));
65
+ }
66
+ async function discoverPluginSkills(homeDir, enabledPlugins) {
67
+ const cacheDir = resolveClaudePluginCacheDir(homeDir);
68
+ const enabledPluginNames = new Set(Object.entries(enabledPlugins).filter(([, enabled]) => enabled).map(([name]) => name));
69
+ const skills = [];
70
+ async function scan(dirPath) {
71
+ const entries = await readDirSafe(dirPath);
72
+ for (const entry of entries) {
73
+ if (!entry.isDirectory())
74
+ continue;
75
+ const fullPath = join(dirPath, entry.name);
76
+ const manifestPath = join(fullPath, 'plugin.json');
77
+ if (await pathExists(manifestPath)) {
78
+ const manifest = await readJsonFile(manifestPath);
79
+ const pluginName = typeof manifest.name === 'string' ? manifest.name : basename(fullPath);
80
+ if (!enabledPluginNames.has(pluginName))
81
+ continue;
82
+ const skillEntries = await readDirSafe(join(fullPath, 'skills'));
83
+ for (const skillEntry of skillEntries) {
84
+ if (!skillEntry.isDirectory())
85
+ continue;
86
+ const skillPath = join(fullPath, 'skills', skillEntry.name, 'SKILL.md');
87
+ if (await pathExists(skillPath)) {
88
+ skills.push({
89
+ name: `${pluginName}:${skillEntry.name}`,
90
+ enabled: true,
91
+ source: 'plugin',
92
+ toggleable: false,
93
+ controlledByPlugin: pluginName,
94
+ });
95
+ }
96
+ }
97
+ continue;
98
+ }
99
+ await scan(fullPath);
100
+ }
101
+ }
102
+ await scan(cacheDir);
103
+ return skills;
104
+ }
105
+ function compareSkillSourceThenName(a, b) {
106
+ const sourceRank = {
107
+ command: 0,
108
+ plugin: 1,
109
+ user: 2,
110
+ project: 3,
111
+ };
112
+ if (sourceRank[a.source] !== sourceRank[b.source])
113
+ return sourceRank[a.source] - sourceRank[b.source];
114
+ return a.name.localeCompare(b.name);
115
+ }
116
+ function sortSkillStates(states) {
117
+ return [...states].sort(compareSkillSourceThenName);
118
+ }
119
+ export function sortSkillStatesByStatus(states) {
120
+ return [...states].sort((a, b) => {
121
+ if (a.enabled !== b.enabled)
122
+ return a.enabled ? -1 : 1;
123
+ return compareSkillSourceThenName(a, b);
124
+ });
125
+ }
126
+ export function resolveSkillOverrides(sources) {
127
+ const ownershipPrecedence = {
128
+ user: 0,
129
+ project: 1,
130
+ 'project-local': 2,
131
+ };
132
+ const merged = {};
133
+ const ownership = new Map();
134
+ for (const source of sources) {
135
+ for (const [name, value] of Object.entries(source.settings.skillOverrides ?? {})) {
136
+ if (source.scope === 'preset') {
137
+ merged[name] = value;
138
+ continue;
139
+ }
140
+ const current = ownership.get(name);
141
+ if (!current) {
142
+ merged[name] = value;
143
+ ownership.set(name, source.scope);
144
+ continue;
145
+ }
146
+ if (current === 'preset') {
147
+ ownership.set(name, source.scope);
148
+ merged[name] = value;
149
+ continue;
150
+ }
151
+ if (ownershipPrecedence[source.scope] >= ownershipPrecedence[current]) {
152
+ merged[name] = value;
153
+ ownership.set(name, source.scope);
154
+ }
155
+ }
156
+ }
157
+ return merged;
158
+ }
159
+ export function applySkillOverrides(states, overrides = {}) {
160
+ return sortSkillStates(states.map(skill => {
161
+ if (skill.source === 'plugin')
162
+ return skill;
163
+ if (!(skill.name in overrides))
164
+ return skill;
165
+ return { ...skill, enabled: overrides[skill.name] !== 'off' };
166
+ }));
167
+ }
168
+ export async function discoverSkillStates(input) {
169
+ const projectSkills = await discoverProjectSkills(input.cwd);
170
+ const commandSkills = await discoverCommandSkills(resolveProjectCommandsDir(input.cwd));
171
+ const userSkills = await discoverSkillDir(resolveUserSkillsDir(input.homeDir), 'user');
172
+ const pluginSkills = await discoverPluginSkills(input.homeDir, input.enabledPlugins);
173
+ const byName = new Map();
174
+ for (const skill of projectSkills)
175
+ byName.set(skill.name, skill);
176
+ for (const skill of commandSkills)
177
+ if (!byName.has(skill.name))
178
+ byName.set(skill.name, skill);
179
+ for (const skill of userSkills)
180
+ byName.set(skill.name, skill);
181
+ for (const skill of pluginSkills)
182
+ byName.set(skill.name, skill);
183
+ return sortSkillStates(Array.from(byName.values()));
184
+ }
185
+ export function skillStatesToOverrides(states) {
186
+ const overrides = {};
187
+ for (const state of states) {
188
+ if (state.toggleable && !state.enabled)
189
+ overrides[state.name] = 'off';
190
+ }
191
+ return overrides;
192
+ }
193
+ //# sourceMappingURL=skill-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-service.js","sourceRoot":"","sources":["../../src/services/skill-service.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@lkangd/cc-settings-preset",
3
+ "version": "1.0.0",
4
+ "description": "A switchable, reusable runtime settings preset selector for Claude Code",
5
+ "homepage": "https://github.com/lkangd/cc-settings-preset#readme",
6
+ "bugs": {
7
+ "url": "https://github.com/lkangd/cc-settings-preset/issues"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/lkangd/cc-settings-preset.git"
12
+ },
13
+ "author": "",
14
+ "license": "ISC",
15
+ "type": "module",
16
+ "bin": {
17
+ "cc-settings-preset": "dist/cli.js",
18
+ "ccsp": "dist/cli.js"
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "package.json",
23
+ "README.md",
24
+ "LICENSE"
25
+ ],
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "packageManager": "pnpm@9.5.0",
30
+ "scripts": {
31
+ "typecheck": "tsc -p tsconfig.json --noEmit",
32
+ "build": "tsc -p tsconfig.build.json",
33
+ "postbuild": "chmod +x dist/cli.js",
34
+ "prepack": "pnpm run build",
35
+ "dev": "tsx src/cli.ts",
36
+ "test": "vitest run",
37
+ "check": "pnpm run typecheck && pnpm run build && pnpm run test",
38
+ "test:coverage": "vitest run --coverage"
39
+ },
40
+ "engines": {
41
+ "node": ">=20.19.2"
42
+ },
43
+ "dependencies": {
44
+ "chalk": "^5.6.2",
45
+ "commander": "^14.0.0",
46
+ "cross-spawn": "^7.0.6",
47
+ "figlet": "^1.9.3",
48
+ "gradient-string": "^3.0.0",
49
+ "ink": "^6.3.1",
50
+ "react": "^19.2.1",
51
+ "zod": "^4.1.13"
52
+ },
53
+ "devDependencies": {
54
+ "@types/cross-spawn": "^6.0.6",
55
+ "@types/figlet": "^1.7.0",
56
+ "@types/fs-extra": "^11.0.4",
57
+ "@types/gradient-string": "^1.1.6",
58
+ "@types/node": "^20.19.25",
59
+ "@types/react": "^19.2.7",
60
+ "@types/react-test-renderer": "^19.1.0",
61
+ "@vitest/coverage-v8": "^3.2.4",
62
+ "react-test-renderer": "^19.2.1",
63
+ "tsx": "^4.20.6",
64
+ "typescript": "^5.9.3",
65
+ "vitest": "^3.2.4"
66
+ }
67
+ }