@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.
- package/LICENSE +15 -0
- package/README.md +304 -0
- package/README.zh-hans.md +304 -0
- package/dist/cli.d.ts +19 -0
- package/dist/cli.js +547 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/args.d.ts +5 -0
- package/dist/core/args.js +20 -0
- package/dist/core/args.js.map +1 -0
- package/dist/core/errors.d.ts +4 -0
- package/dist/core/errors.js +9 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/json.d.ts +3 -0
- package/dist/core/json.js +46 -0
- package/dist/core/json.js.map +1 -0
- package/dist/core/name.d.ts +15 -0
- package/dist/core/name.js +58 -0
- package/dist/core/name.js.map +1 -0
- package/dist/core/paths.d.ts +26 -0
- package/dist/core/paths.js +79 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/schema.d.ts +137 -0
- package/dist/core/schema.js +70 -0
- package/dist/core/schema.js.map +1 -0
- package/dist/core/spawn.d.ts +1 -0
- package/dist/core/spawn.js +32 -0
- package/dist/core/spawn.js.map +1 -0
- package/dist/core/terminal.d.ts +2 -0
- package/dist/core/terminal.js +5 -0
- package/dist/core/terminal.js.map +1 -0
- package/dist/flows/create-flow.d.ts +14 -0
- package/dist/flows/create-flow.js +13 -0
- package/dist/flows/create-flow.js.map +1 -0
- package/dist/flows/manage-flow.d.ts +9 -0
- package/dist/flows/manage-flow.js +8 -0
- package/dist/flows/manage-flow.js.map +1 -0
- package/dist/flows/project-launch-flow.d.ts +79 -0
- package/dist/flows/project-launch-flow.js +217 -0
- package/dist/flows/project-launch-flow.js.map +1 -0
- package/dist/flows/run-flow.d.ts +52 -0
- package/dist/flows/run-flow.js +167 -0
- package/dist/flows/run-flow.js.map +1 -0
- package/dist/flows/settings-select-flow.d.ts +21 -0
- package/dist/flows/settings-select-flow.js +20 -0
- package/dist/flows/settings-select-flow.js.map +1 -0
- package/dist/ink/components/global-shortcut-handler.d.ts +10 -0
- package/dist/ink/components/global-shortcut-handler.js +9 -0
- package/dist/ink/components/global-shortcut-handler.js.map +1 -0
- package/dist/ink/components/json-tree-view.d.ts +3 -0
- package/dist/ink/components/json-tree-view.js +52 -0
- package/dist/ink/components/json-tree-view.js.map +1 -0
- package/dist/ink/components/resize-context.d.ts +8 -0
- package/dist/ink/components/resize-context.js +10 -0
- package/dist/ink/components/resize-context.js.map +1 -0
- package/dist/ink/components/text-input-editing.d.ts +23 -0
- package/dist/ink/components/text-input-editing.js +42 -0
- package/dist/ink/components/text-input-editing.js.map +1 -0
- package/dist/ink/components/text-input-field.d.ts +15 -0
- package/dist/ink/components/text-input-field.js +127 -0
- package/dist/ink/components/text-input-field.js.map +1 -0
- package/dist/ink/components/text-input.d.ts +10 -0
- package/dist/ink/components/text-input.js +22 -0
- package/dist/ink/components/text-input.js.map +1 -0
- package/dist/ink/components/toggle-column.d.ts +8 -0
- package/dist/ink/components/toggle-column.js +30 -0
- package/dist/ink/components/toggle-column.js.map +1 -0
- package/dist/ink/components/truncate-text.d.ts +3 -0
- package/dist/ink/components/truncate-text.js +6 -0
- package/dist/ink/components/truncate-text.js.map +1 -0
- package/dist/ink/components/two-column-settings-view.d.ts +9 -0
- package/dist/ink/components/two-column-settings-view.js +16 -0
- package/dist/ink/components/two-column-settings-view.js.map +1 -0
- package/dist/ink/components/use-text-input-state.d.ts +45 -0
- package/dist/ink/components/use-text-input-state.js +100 -0
- package/dist/ink/components/use-text-input-state.js.map +1 -0
- package/dist/ink/components/use-text-input.d.ts +8 -0
- package/dist/ink/components/use-text-input.js +87 -0
- package/dist/ink/components/use-text-input.js.map +1 -0
- package/dist/ink/create-app.d.ts +11 -0
- package/dist/ink/create-app.js +49 -0
- package/dist/ink/create-app.js.map +1 -0
- package/dist/ink/manage-app.d.ts +25 -0
- package/dist/ink/manage-app.js +92 -0
- package/dist/ink/manage-app.js.map +1 -0
- package/dist/ink/project-launch-app.d.ts +22 -0
- package/dist/ink/project-launch-app.js +144 -0
- package/dist/ink/project-launch-app.js.map +1 -0
- package/dist/ink/project-manage-app.d.ts +28 -0
- package/dist/ink/project-manage-app.js +239 -0
- package/dist/ink/project-manage-app.js.map +1 -0
- package/dist/ink/settings-select-app.d.ts +9 -0
- package/dist/ink/settings-select-app.js +31 -0
- package/dist/ink/settings-select-app.js.map +1 -0
- package/dist/services/global-last-settings-service.d.ts +4 -0
- package/dist/services/global-last-settings-service.js +25 -0
- package/dist/services/global-last-settings-service.js.map +1 -0
- package/dist/services/launch-preset-service.d.ts +13 -0
- package/dist/services/launch-preset-service.js +186 -0
- package/dist/services/launch-preset-service.js.map +1 -0
- package/dist/services/mcp-service.d.ts +18 -0
- package/dist/services/mcp-service.js +106 -0
- package/dist/services/mcp-service.js.map +1 -0
- package/dist/services/plugin-service.d.ts +16 -0
- package/dist/services/plugin-service.js +58 -0
- package/dist/services/plugin-service.js.map +1 -0
- package/dist/services/preset-service.d.ts +13 -0
- package/dist/services/preset-service.js +152 -0
- package/dist/services/preset-service.js.map +1 -0
- package/dist/services/project-store-service.d.ts +6 -0
- package/dist/services/project-store-service.js +16 -0
- package/dist/services/project-store-service.js.map +1 -0
- package/dist/services/reveal-service.d.ts +2 -0
- package/dist/services/reveal-service.js +7 -0
- package/dist/services/reveal-service.js.map +1 -0
- package/dist/services/settings-finalizer-service.d.ts +2 -0
- package/dist/services/settings-finalizer-service.js +21 -0
- package/dist/services/settings-finalizer-service.js.map +1 -0
- package/dist/services/settings-source-service.d.ts +11 -0
- package/dist/services/settings-source-service.js +26 -0
- package/dist/services/settings-source-service.js.map +1 -0
- package/dist/services/skill-service.d.ts +24 -0
- package/dist/services/skill-service.js +193 -0
- package/dist/services/skill-service.js.map +1 -0
- package/package.json +67 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { render, Text } from 'ink';
|
|
6
|
+
import figlet from 'figlet';
|
|
7
|
+
import { sanitizeClaudeArgs } from './core/args.js';
|
|
8
|
+
import { CliError } from './core/errors.js';
|
|
9
|
+
import { readJsonFile } from './core/json.js';
|
|
10
|
+
import { createPathContext, resolveGlobalRoot } from './core/paths.js';
|
|
11
|
+
import { parseSettings } from './core/schema.js';
|
|
12
|
+
import { spawnClaude } from './core/spawn.js';
|
|
13
|
+
import { CreateApp } from './ink/create-app.js';
|
|
14
|
+
import { GlobalShortcutHandler } from './ink/components/global-shortcut-handler.js';
|
|
15
|
+
import { InkResizeProvider } from './ink/components/resize-context.js';
|
|
16
|
+
import { ManageApp } from './ink/manage-app.js';
|
|
17
|
+
import { ProjectLaunchApp } from './ink/project-launch-app.js';
|
|
18
|
+
import { ProjectManageApp } from './ink/project-manage-app.js';
|
|
19
|
+
import { SettingsSelectApp } from './ink/settings-select-app.js';
|
|
20
|
+
import { applyPluginOverrides, pluginStatesToEnabledPlugins, resolvePluginStates } from './services/plugin-service.js';
|
|
21
|
+
import { createGlobalLastSettingsService } from './services/global-last-settings-service.js';
|
|
22
|
+
import { createLaunchPresetService } from './services/launch-preset-service.js';
|
|
23
|
+
import { applyDeniedMcpServers, discoverMcpStates, mcpStatesToDeniedServers, resolveDeniedMcpServers } from './services/mcp-service.js';
|
|
24
|
+
import { createPresetService } from './services/preset-service.js';
|
|
25
|
+
import { createSettingsSourceService } from './services/settings-source-service.js';
|
|
26
|
+
import { finalizeSettings } from './services/settings-finalizer-service.js';
|
|
27
|
+
import { applySkillOverrides, discoverSkillStates, resolveSkillOverrides, skillStatesToOverrides } from './services/skill-service.js';
|
|
28
|
+
const h = React.createElement;
|
|
29
|
+
const VERSION = '1.0.0';
|
|
30
|
+
const context = createPathContext();
|
|
31
|
+
const globalRoot = resolveGlobalRoot(context.homeDir);
|
|
32
|
+
const presetService = createPresetService(globalRoot);
|
|
33
|
+
const settingsSourceService = createSettingsSourceService(context);
|
|
34
|
+
const globalLastSettingsService = createGlobalLastSettingsService(context.homeDir);
|
|
35
|
+
const launchPresetService = createLaunchPresetService(context.cwd);
|
|
36
|
+
export function createProgram() {
|
|
37
|
+
const program = new Command();
|
|
38
|
+
program.name('ccsp/cc-settings-preset').description('Select Claude Code runtime settings presets').version(VERSION);
|
|
39
|
+
program
|
|
40
|
+
.command('create')
|
|
41
|
+
.description('Create a first-level settings preset')
|
|
42
|
+
.action(async () => {
|
|
43
|
+
printBanner();
|
|
44
|
+
await createPresetInteractive();
|
|
45
|
+
});
|
|
46
|
+
program
|
|
47
|
+
.command('manage')
|
|
48
|
+
.description('Manage settings presets')
|
|
49
|
+
.option('-p, --project', 'Manage project launch presets')
|
|
50
|
+
.action(async (options) => {
|
|
51
|
+
printBanner();
|
|
52
|
+
if (options.project) {
|
|
53
|
+
await manageProjectInteractive();
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
await manageInteractive();
|
|
57
|
+
});
|
|
58
|
+
return program;
|
|
59
|
+
}
|
|
60
|
+
function stripAnsi(value) {
|
|
61
|
+
return value.replace(/\x1b\[[0-9;?]*[ -/]*[@-~]/g, '');
|
|
62
|
+
}
|
|
63
|
+
function visibleWidth(value) {
|
|
64
|
+
return stripAnsi(value).length;
|
|
65
|
+
}
|
|
66
|
+
function centerVisibleLine(line, width) {
|
|
67
|
+
const pad = Math.max(0, Math.floor((width - visibleWidth(line)) / 2));
|
|
68
|
+
return `${' '.repeat(pad)}${line}`;
|
|
69
|
+
}
|
|
70
|
+
function createBannerCandidates() {
|
|
71
|
+
const cyan = '\x1b[36m';
|
|
72
|
+
const reset = '\x1b[0m';
|
|
73
|
+
const fonts = ['ANSI Shadow', 'Small'];
|
|
74
|
+
const figletCandidates = fonts.map(font => figlet.textSync('C C S P', { font }).split('\n').map(line => `${cyan}${line}${reset}`));
|
|
75
|
+
return [
|
|
76
|
+
...figletCandidates,
|
|
77
|
+
[`${cyan}C C S P${reset}`],
|
|
78
|
+
[`${cyan}CCSP${reset}`]
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
function selectBannerCandidate(width, candidates) {
|
|
82
|
+
return candidates.find(lines => Math.max(...lines.map(visibleWidth)) <= width) ?? candidates.at(-1) ?? [];
|
|
83
|
+
}
|
|
84
|
+
export function buildBannerLines(columns) {
|
|
85
|
+
const cyan = '\x1b[36m';
|
|
86
|
+
const dim = '\x1b[2m';
|
|
87
|
+
const reset = '\x1b[0m';
|
|
88
|
+
const safeColumns = Math.max(1, columns);
|
|
89
|
+
const headline = selectBannerCandidate(safeColumns, createBannerCandidates()).map(line => centerVisibleLine(line, safeColumns));
|
|
90
|
+
const subtitle = centerVisibleLine(`${dim}${cyan}CC-Settings-Preset${reset}`, safeColumns);
|
|
91
|
+
const dividerWidth = Math.min(safeColumns, Math.max(stripAnsi(subtitle).length, 12));
|
|
92
|
+
const divider = centerVisibleLine(`${dim}${'─'.repeat(dividerWidth)}${reset}`, safeColumns);
|
|
93
|
+
return [...headline, subtitle, divider];
|
|
94
|
+
}
|
|
95
|
+
export function printBanner() {
|
|
96
|
+
const columns = process.stderr.columns ?? 80;
|
|
97
|
+
const lines = buildBannerLines(columns);
|
|
98
|
+
process.stderr.write(`\n\n${lines.join('\n')}\n\n`);
|
|
99
|
+
}
|
|
100
|
+
const CLEAR_TERMINAL_HISTORY = '\x1b[3J\x1b[H\x1b[2J';
|
|
101
|
+
const REFRESH_MARKERS = ['', ''];
|
|
102
|
+
export function clearTerminalScreen(stdout = process.stdout) {
|
|
103
|
+
stdout.write(CLEAR_TERMINAL_HISTORY);
|
|
104
|
+
}
|
|
105
|
+
function rerenderInkApp(app, createNode, stdout, state, onShortcut) {
|
|
106
|
+
state.resizeVersion += 1;
|
|
107
|
+
clearTerminalScreen(stdout);
|
|
108
|
+
app.clear();
|
|
109
|
+
app.rerender(wrapInkNode(createNode, state.resizeVersion, onShortcut));
|
|
110
|
+
}
|
|
111
|
+
export function createGlobalShortcutHandler(app, createNode, stdout = process.stdout, state = { resizeVersion: 0 }, onShortcut) {
|
|
112
|
+
return (input, key) => {
|
|
113
|
+
if (key.ctrl && input === 'l') {
|
|
114
|
+
rerenderInkApp(app, createNode, stdout, state, onShortcut ?? (() => { }));
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function wrapInkNode(createNode, resizeVersion, onShortcut) {
|
|
119
|
+
const marker = REFRESH_MARKERS[resizeVersion % REFRESH_MARKERS.length];
|
|
120
|
+
return h(InkResizeProvider, {
|
|
121
|
+
value: resizeVersion,
|
|
122
|
+
children: h(GlobalShortcutHandler, {
|
|
123
|
+
onShortcut,
|
|
124
|
+
children: h(React.Fragment, {
|
|
125
|
+
children: [
|
|
126
|
+
h(Text, { key: 'refresh-marker' }, marker),
|
|
127
|
+
React.cloneElement(createNode(), { key: 'app-node' })
|
|
128
|
+
]
|
|
129
|
+
})
|
|
130
|
+
})
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
export async function waitForInkAppExit(app, createNode, stdout = process.stdout, state = { resizeVersion: 0 }, onShortcut = () => { }) {
|
|
134
|
+
const rerender = () => {
|
|
135
|
+
rerenderInkApp(app, createNode, stdout, state, onShortcut);
|
|
136
|
+
};
|
|
137
|
+
stdout.on('resize', rerender);
|
|
138
|
+
try {
|
|
139
|
+
await app.waitUntilExit();
|
|
140
|
+
}
|
|
141
|
+
finally {
|
|
142
|
+
stdout.off('resize', rerender);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
async function renderCreateApp() {
|
|
146
|
+
const sources = (await settingsSourceService.discoverSettingsSources()).map(source => ({
|
|
147
|
+
label: source.scope,
|
|
148
|
+
filePath: source.filePath
|
|
149
|
+
}));
|
|
150
|
+
let result;
|
|
151
|
+
const createNode = () => h(CreateApp, {
|
|
152
|
+
sources,
|
|
153
|
+
onSubmit: (value) => {
|
|
154
|
+
result = value;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
const state = { resizeVersion: 0 };
|
|
158
|
+
let app;
|
|
159
|
+
const onShortcut = (input, key) => {
|
|
160
|
+
createGlobalShortcutHandler(app, createNode, process.stdout, state, onShortcut)(input, key);
|
|
161
|
+
};
|
|
162
|
+
app = render(wrapInkNode(createNode, state.resizeVersion, onShortcut));
|
|
163
|
+
await waitForInkAppExit(app, createNode, process.stdout, state, onShortcut);
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
166
|
+
async function resolveStatesByPreset(presets, sources) {
|
|
167
|
+
const pluginsByPreset = {};
|
|
168
|
+
const skillsByPreset = {};
|
|
169
|
+
for (const preset of presets) {
|
|
170
|
+
const presetSettings = await presetService.readPresetSettings(preset.name);
|
|
171
|
+
const plugins = resolvePluginStates([
|
|
172
|
+
...sources,
|
|
173
|
+
{ scope: 'preset', filePath: preset.name, settings: presetSettings }
|
|
174
|
+
]);
|
|
175
|
+
const discoveredSkills = await discoverSkillStates({
|
|
176
|
+
homeDir: context.homeDir,
|
|
177
|
+
cwd: context.cwd,
|
|
178
|
+
enabledPlugins: Object.fromEntries(plugins.filter(plugin => plugin.enabled).map(plugin => [plugin.name, true])),
|
|
179
|
+
});
|
|
180
|
+
pluginsByPreset[preset.name] = plugins;
|
|
181
|
+
skillsByPreset[preset.name] = applySkillOverrides(discoveredSkills, presetSettings.skillOverrides);
|
|
182
|
+
}
|
|
183
|
+
return { pluginsByPreset, skillsByPreset };
|
|
184
|
+
}
|
|
185
|
+
async function renderSettingsSelectApp(items, initialName) {
|
|
186
|
+
let result;
|
|
187
|
+
const createNode = () => h(SettingsSelectApp, {
|
|
188
|
+
items,
|
|
189
|
+
...(initialName ? { initialName } : {}),
|
|
190
|
+
onSubmit: (value) => {
|
|
191
|
+
result = value;
|
|
192
|
+
},
|
|
193
|
+
});
|
|
194
|
+
const state = { resizeVersion: 0 };
|
|
195
|
+
let app;
|
|
196
|
+
const onShortcut = (input, key) => {
|
|
197
|
+
createGlobalShortcutHandler(app, createNode, process.stdout, state, onShortcut)(input, key);
|
|
198
|
+
};
|
|
199
|
+
app = render(wrapInkNode(createNode, state.resizeVersion, onShortcut));
|
|
200
|
+
await waitForInkAppExit(app, createNode, process.stdout, state, onShortcut);
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
203
|
+
async function buildGlobalSettingsPresetItems() {
|
|
204
|
+
const presets = (await presetService.listPresets()).filter(preset => preset.type === 'base');
|
|
205
|
+
const items = [];
|
|
206
|
+
for (const preset of presets) {
|
|
207
|
+
items.push({
|
|
208
|
+
name: preset.name,
|
|
209
|
+
sourcePath: await presetService.getPresetPath(preset.name),
|
|
210
|
+
settings: await presetService.readPresetSettings(preset.name),
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
return items;
|
|
214
|
+
}
|
|
215
|
+
async function buildSettingsSelectItems() {
|
|
216
|
+
const presetItems = await buildGlobalSettingsPresetItems();
|
|
217
|
+
if (presetItems.length > 0)
|
|
218
|
+
return presetItems;
|
|
219
|
+
const sources = await settingsSourceService.discoverSettingsSources();
|
|
220
|
+
return sources.map(source => ({
|
|
221
|
+
name: source.scope,
|
|
222
|
+
sourcePath: source.filePath,
|
|
223
|
+
settings: source.settings,
|
|
224
|
+
temporary: true,
|
|
225
|
+
}));
|
|
226
|
+
}
|
|
227
|
+
async function resolveProjectManageBaseSettings() {
|
|
228
|
+
const [source] = await settingsSourceService.discoverSettingsSources();
|
|
229
|
+
if (!source)
|
|
230
|
+
return undefined;
|
|
231
|
+
return {
|
|
232
|
+
name: source.scope,
|
|
233
|
+
sourcePath: source.filePath,
|
|
234
|
+
settings: source.settings,
|
|
235
|
+
temporary: true,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
async function resolveInteractiveBaseSettings() {
|
|
239
|
+
const presetItems = await buildGlobalSettingsPresetItems();
|
|
240
|
+
if (presetItems.length > 0) {
|
|
241
|
+
const rememberedName = await globalLastSettingsService.readLastUsed(context.cwd);
|
|
242
|
+
const initialName = rememberedName && presetItems.some(preset => preset.name === rememberedName)
|
|
243
|
+
? rememberedName
|
|
244
|
+
: undefined;
|
|
245
|
+
const selected = await renderSettingsSelectApp(presetItems, initialName);
|
|
246
|
+
if (selected)
|
|
247
|
+
await globalLastSettingsService.writeLastUsed(context.cwd, selected.name);
|
|
248
|
+
return selected;
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
name: 'temporary-empty-base',
|
|
252
|
+
sourcePath: '',
|
|
253
|
+
settings: {},
|
|
254
|
+
temporary: true,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
async function buildProjectLaunchInput(selectedSettings) {
|
|
258
|
+
const sources = await settingsSourceService.discoverSettingsSources();
|
|
259
|
+
const settingsSources = [
|
|
260
|
+
...sources,
|
|
261
|
+
{ scope: 'preset', filePath: selectedSettings.sourcePath, settings: selectedSettings.settings },
|
|
262
|
+
];
|
|
263
|
+
const basePlugins = resolvePluginStates(settingsSources);
|
|
264
|
+
const baseSkills = applySkillOverrides(await discoverSkillStates({
|
|
265
|
+
homeDir: context.homeDir,
|
|
266
|
+
cwd: context.cwd,
|
|
267
|
+
enabledPlugins: Object.fromEntries(basePlugins.filter(plugin => plugin.enabled).map(plugin => [plugin.name, true])),
|
|
268
|
+
}), resolveSkillOverrides(settingsSources));
|
|
269
|
+
const baseMcps = applyDeniedMcpServers(await discoverMcpStates({ homeDir: context.homeDir, cwd: context.cwd }), resolveDeniedMcpServers(settingsSources));
|
|
270
|
+
const launchPresets = await launchPresetService.listPresets();
|
|
271
|
+
const statesByPreset = {};
|
|
272
|
+
for (const preset of launchPresets) {
|
|
273
|
+
const settings = await launchPresetService.readPresetSettings(preset.name);
|
|
274
|
+
statesByPreset[preset.name] = {
|
|
275
|
+
plugins: applyPluginOverrides(basePlugins, settings.enabledPlugins),
|
|
276
|
+
skills: applySkillOverrides(baseSkills, settings.skillOverrides),
|
|
277
|
+
mcps: applyDeniedMcpServers(baseMcps, settings.deniedMcpServers),
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
const lastUsedName = await launchPresetService.readLastUsed();
|
|
281
|
+
return {
|
|
282
|
+
presets: launchPresets,
|
|
283
|
+
detected: { plugins: basePlugins, skills: baseSkills, mcps: baseMcps },
|
|
284
|
+
statesByPreset,
|
|
285
|
+
...(lastUsedName ? { lastUsedName } : {}),
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
async function renderProjectLaunchApp(selectedSettings) {
|
|
289
|
+
const input = await buildProjectLaunchInput(selectedSettings);
|
|
290
|
+
let result;
|
|
291
|
+
const createNode = () => h(ProjectLaunchApp, {
|
|
292
|
+
...input,
|
|
293
|
+
onSubmit: (value) => {
|
|
294
|
+
result = value;
|
|
295
|
+
},
|
|
296
|
+
onCreateSubmit: async (saveAs, toggles) => {
|
|
297
|
+
try {
|
|
298
|
+
await launchPresetService.createPreset(saveAs, launchResultToSettings({ toggles }));
|
|
299
|
+
return null;
|
|
300
|
+
}
|
|
301
|
+
catch (error) {
|
|
302
|
+
if (error instanceof Error && error.message.startsWith('Launch preset already exists: ')) {
|
|
303
|
+
return error.message;
|
|
304
|
+
}
|
|
305
|
+
throw error;
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
});
|
|
309
|
+
const state = { resizeVersion: 0 };
|
|
310
|
+
let app;
|
|
311
|
+
const onShortcut = (input, key) => {
|
|
312
|
+
createGlobalShortcutHandler(app, createNode, process.stdout, state, onShortcut)(input, key);
|
|
313
|
+
};
|
|
314
|
+
app = render(wrapInkNode(createNode, state.resizeVersion, onShortcut));
|
|
315
|
+
await waitForInkAppExit(app, createNode, process.stdout, state, onShortcut);
|
|
316
|
+
return result;
|
|
317
|
+
}
|
|
318
|
+
async function renderProjectManageApp(selectedSettings) {
|
|
319
|
+
const input = await buildProjectLaunchInput(selectedSettings);
|
|
320
|
+
let result;
|
|
321
|
+
const createNode = () => h(ProjectManageApp, {
|
|
322
|
+
...input,
|
|
323
|
+
onSubmit: (value) => {
|
|
324
|
+
result = value;
|
|
325
|
+
},
|
|
326
|
+
onSaveSubmit: async (presetName, toggles) => {
|
|
327
|
+
try {
|
|
328
|
+
await launchPresetService.writePresetSettings(presetName, launchResultToSettings({ toggles }));
|
|
329
|
+
return null;
|
|
330
|
+
}
|
|
331
|
+
catch (error) {
|
|
332
|
+
if (error instanceof Error && error.message.startsWith('Launch preset not found: ')) {
|
|
333
|
+
return error.message;
|
|
334
|
+
}
|
|
335
|
+
throw error;
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
onCreateSubmit: async (saveAs, toggles) => {
|
|
339
|
+
try {
|
|
340
|
+
await launchPresetService.createPreset(saveAs, launchResultToSettings({ toggles }));
|
|
341
|
+
return null;
|
|
342
|
+
}
|
|
343
|
+
catch (error) {
|
|
344
|
+
if (error instanceof Error && error.message.startsWith('Launch preset already exists: ')) {
|
|
345
|
+
return error.message;
|
|
346
|
+
}
|
|
347
|
+
throw error;
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
onRenameSubmit: async (presetName, newName) => {
|
|
351
|
+
try {
|
|
352
|
+
await launchPresetService.renamePreset(presetName, newName);
|
|
353
|
+
return null;
|
|
354
|
+
}
|
|
355
|
+
catch (error) {
|
|
356
|
+
if (error instanceof Error && error.message.startsWith('Launch preset already exists: ')) {
|
|
357
|
+
return error.message;
|
|
358
|
+
}
|
|
359
|
+
throw error;
|
|
360
|
+
}
|
|
361
|
+
},
|
|
362
|
+
});
|
|
363
|
+
const state = { resizeVersion: 0 };
|
|
364
|
+
let app;
|
|
365
|
+
const onShortcut = (input, key) => {
|
|
366
|
+
createGlobalShortcutHandler(app, createNode, process.stdout, state, onShortcut)(input, key);
|
|
367
|
+
};
|
|
368
|
+
app = render(wrapInkNode(createNode, state.resizeVersion, onShortcut));
|
|
369
|
+
await waitForInkAppExit(app, createNode, process.stdout, state, onShortcut);
|
|
370
|
+
return result;
|
|
371
|
+
}
|
|
372
|
+
function launchResultToSettings(result) {
|
|
373
|
+
return {
|
|
374
|
+
enabledPlugins: pluginStatesToEnabledPlugins(result.toggles.plugins),
|
|
375
|
+
skillOverrides: skillStatesToOverrides(result.toggles.skills),
|
|
376
|
+
deniedMcpServers: mcpStatesToDeniedServers(result.toggles.mcps),
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
async function renderManageApp(items) {
|
|
380
|
+
let result;
|
|
381
|
+
const createNode = () => h(ManageApp, {
|
|
382
|
+
items,
|
|
383
|
+
onSubmit: (value) => {
|
|
384
|
+
result = value;
|
|
385
|
+
},
|
|
386
|
+
onRenameSubmit: async (item, newName) => {
|
|
387
|
+
try {
|
|
388
|
+
await presetService.renamePreset(item.name, newName);
|
|
389
|
+
return null;
|
|
390
|
+
}
|
|
391
|
+
catch (error) {
|
|
392
|
+
if (error instanceof Error && error.message.startsWith('Preset already exists: ')) {
|
|
393
|
+
return error.message;
|
|
394
|
+
}
|
|
395
|
+
throw error;
|
|
396
|
+
}
|
|
397
|
+
},
|
|
398
|
+
});
|
|
399
|
+
const state = { resizeVersion: 0 };
|
|
400
|
+
let app;
|
|
401
|
+
const onShortcut = (input, key) => {
|
|
402
|
+
createGlobalShortcutHandler(app, createNode, process.stdout, state, onShortcut)(input, key);
|
|
403
|
+
};
|
|
404
|
+
app = render(wrapInkNode(createNode, state.resizeVersion, onShortcut));
|
|
405
|
+
await waitForInkAppExit(app, createNode, process.stdout, state, onShortcut);
|
|
406
|
+
return result;
|
|
407
|
+
}
|
|
408
|
+
async function createPresetInteractive() {
|
|
409
|
+
const selection = await renderCreateApp();
|
|
410
|
+
if (!selection)
|
|
411
|
+
return undefined;
|
|
412
|
+
const settings = parseSettings(await readJsonFile(selection.sourcePath));
|
|
413
|
+
return presetService.createBasePreset(selection.name, settings);
|
|
414
|
+
}
|
|
415
|
+
async function launchWithSelectedSettings(selectedSettings, rawClaudeArgs) {
|
|
416
|
+
const sanitized = sanitizeClaudeArgs(rawClaudeArgs);
|
|
417
|
+
if (sanitized.removedSettings) {
|
|
418
|
+
process.stderr.write('\x1b[31mWarning: ccsp ignores passthrough --settings because it manages that flag.\x1b[0m\n');
|
|
419
|
+
}
|
|
420
|
+
const launchResult = await renderProjectLaunchApp(selectedSettings);
|
|
421
|
+
if (!launchResult)
|
|
422
|
+
return 'quit';
|
|
423
|
+
if (launchResult.type === 'back') {
|
|
424
|
+
clearTerminalScreen();
|
|
425
|
+
return 'back';
|
|
426
|
+
}
|
|
427
|
+
const launchSettings = launchResultToSettings(launchResult);
|
|
428
|
+
if (launchResult.type === 'launch' && launchResult.saveAs) {
|
|
429
|
+
const saved = await launchPresetService.createPreset(launchResult.saveAs, launchSettings);
|
|
430
|
+
await launchPresetService.writeLastUsed(saved.name);
|
|
431
|
+
}
|
|
432
|
+
else if (launchResult.type === 'launch' && launchResult.presetName) {
|
|
433
|
+
await launchPresetService.writePresetSettings(launchResult.presetName, launchSettings);
|
|
434
|
+
await launchPresetService.writeLastUsed(launchResult.presetName);
|
|
435
|
+
}
|
|
436
|
+
const settingsPath = await launchPresetService.writeTempSettings(finalizeSettings(selectedSettings.settings, launchSettings));
|
|
437
|
+
const code = await spawnClaude(settingsPath, sanitized.args);
|
|
438
|
+
process.exitCode = code;
|
|
439
|
+
return 'done';
|
|
440
|
+
}
|
|
441
|
+
async function runInteractive(rawClaudeArgs) {
|
|
442
|
+
printBanner();
|
|
443
|
+
while (true) {
|
|
444
|
+
const selectedSettings = await resolveInteractiveBaseSettings();
|
|
445
|
+
if (!selectedSettings)
|
|
446
|
+
return;
|
|
447
|
+
const outcome = await launchWithSelectedSettings(selectedSettings, rawClaudeArgs);
|
|
448
|
+
if (outcome !== 'back')
|
|
449
|
+
return;
|
|
450
|
+
printBanner();
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
async function manageInteractive() {
|
|
454
|
+
while (true) {
|
|
455
|
+
const items = await buildGlobalSettingsPresetItems();
|
|
456
|
+
const selection = await renderManageApp(items);
|
|
457
|
+
if (!selection || selection.type === 'exit')
|
|
458
|
+
return;
|
|
459
|
+
if (selection.type === 'launch') {
|
|
460
|
+
const outcome = await launchWithSelectedSettings(selection.item, []);
|
|
461
|
+
if (outcome === 'back')
|
|
462
|
+
continue;
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
if (selection.type === 'rename') {
|
|
466
|
+
await presetService.renamePreset(selection.item.name, selection.newName);
|
|
467
|
+
continue;
|
|
468
|
+
}
|
|
469
|
+
if (selection.type === 'create') {
|
|
470
|
+
await createPresetInteractive();
|
|
471
|
+
continue;
|
|
472
|
+
}
|
|
473
|
+
if (selection.type === 'refresh') {
|
|
474
|
+
continue;
|
|
475
|
+
}
|
|
476
|
+
if (selection.type === 'delete') {
|
|
477
|
+
await presetService.deletePreset(selection.item.name);
|
|
478
|
+
continue;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
async function manageProjectInteractive() {
|
|
483
|
+
const selectedSettings = await resolveProjectManageBaseSettings();
|
|
484
|
+
if (!selectedSettings) {
|
|
485
|
+
process.stderr.write('No project settings sources found for project preset management.\n');
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
while (true) {
|
|
489
|
+
const result = await renderProjectManageApp(selectedSettings);
|
|
490
|
+
if (!result)
|
|
491
|
+
return;
|
|
492
|
+
if (result.type === 'refresh') {
|
|
493
|
+
continue;
|
|
494
|
+
}
|
|
495
|
+
if (result.type === 'launch') {
|
|
496
|
+
const launchSettings = launchResultToSettings(result);
|
|
497
|
+
if (result.presetName) {
|
|
498
|
+
await launchPresetService.writePresetSettings(result.presetName, launchSettings);
|
|
499
|
+
await launchPresetService.writeLastUsed(result.presetName);
|
|
500
|
+
}
|
|
501
|
+
const settingsPath = await launchPresetService.writeTempSettings(finalizeSettings(selectedSettings.settings, launchSettings));
|
|
502
|
+
const code = await spawnClaude(settingsPath, []);
|
|
503
|
+
process.exitCode = code;
|
|
504
|
+
return;
|
|
505
|
+
}
|
|
506
|
+
if (result.type === 'rename') {
|
|
507
|
+
await launchPresetService.renamePreset(result.presetName, result.newName);
|
|
508
|
+
continue;
|
|
509
|
+
}
|
|
510
|
+
if (result.type === 'delete') {
|
|
511
|
+
await launchPresetService.deletePreset(result.presetName);
|
|
512
|
+
continue;
|
|
513
|
+
}
|
|
514
|
+
if (result.type === 'save') {
|
|
515
|
+
await launchPresetService.writePresetSettings(result.presetName, launchResultToSettings(result));
|
|
516
|
+
continue;
|
|
517
|
+
}
|
|
518
|
+
if (result.type === 'create') {
|
|
519
|
+
await launchPresetService.createPreset(result.saveAs, launchResultToSettings(result));
|
|
520
|
+
continue;
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
export async function main(argv = process.argv) {
|
|
525
|
+
const args = argv.slice(2);
|
|
526
|
+
if (args.length === 0) {
|
|
527
|
+
await runInteractive([]);
|
|
528
|
+
return;
|
|
529
|
+
}
|
|
530
|
+
if (args[0] === 'claude') {
|
|
531
|
+
await runInteractive(args.slice(1));
|
|
532
|
+
return;
|
|
533
|
+
}
|
|
534
|
+
await createProgram().parseAsync(argv);
|
|
535
|
+
}
|
|
536
|
+
const isDirectExecution = process.argv[1] === fileURLToPath(import.meta.url);
|
|
537
|
+
if (isDirectExecution) {
|
|
538
|
+
main().catch(error => {
|
|
539
|
+
if (error instanceof CliError) {
|
|
540
|
+
process.stderr.write(`\nError: ${error.message}\n`);
|
|
541
|
+
process.exitCode = error.exitCode;
|
|
542
|
+
return;
|
|
543
|
+
}
|
|
544
|
+
throw error;
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function sanitizeClaudeArgs(args) {
|
|
2
|
+
const sanitized = [];
|
|
3
|
+
let removedSettings = false;
|
|
4
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
5
|
+
const arg = args[index];
|
|
6
|
+
if (arg === '--settings') {
|
|
7
|
+
removedSettings = true;
|
|
8
|
+
index += 1;
|
|
9
|
+
continue;
|
|
10
|
+
}
|
|
11
|
+
if (arg?.startsWith('--settings=')) {
|
|
12
|
+
removedSettings = true;
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
if (arg !== undefined)
|
|
16
|
+
sanitized.push(arg);
|
|
17
|
+
}
|
|
18
|
+
return { args: sanitized, removedSettings };
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/core/args.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,kBAAkB,CAAC,IAAc;IAC/C,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,IAAI,eAAe,GAAG,KAAK,CAAA;IAE3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAEvB,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACzB,eAAe,GAAG,IAAI,CAAA;YACtB,KAAK,IAAI,CAAC,CAAA;YACV,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACnC,eAAe,GAAG,IAAI,CAAA;YACtB,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5C,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,QAAQ,CAAQ;IAEzB,YAAY,OAAe,EAAE,QAAQ,GAAG,CAAC;QACvC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;CACF"}
|