@lkangd/cc-settings-preset 1.0.6 → 1.0.8

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 (52) hide show
  1. package/README.md +42 -6
  2. package/README.zh-hans.md +43 -7
  3. package/dist/cli.js +186 -18
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core/args.d.ts +13 -0
  6. package/dist/core/args.js +45 -0
  7. package/dist/core/args.js.map +1 -1
  8. package/dist/core/json.d.ts +1 -0
  9. package/dist/core/json.js +22 -9
  10. package/dist/core/json.js.map +1 -1
  11. package/dist/core/paths.d.ts +2 -0
  12. package/dist/core/paths.js +6 -0
  13. package/dist/core/paths.js.map +1 -1
  14. package/dist/core/schema.d.ts +77 -0
  15. package/dist/core/schema.js +31 -0
  16. package/dist/core/schema.js.map +1 -1
  17. package/dist/flows/config-flow.d.ts +27 -0
  18. package/dist/flows/config-flow.js +49 -0
  19. package/dist/flows/config-flow.js.map +1 -0
  20. package/dist/ink/components/two-column-settings-view.d.ts +4 -1
  21. package/dist/ink/components/two-column-settings-view.js +14 -2
  22. package/dist/ink/components/two-column-settings-view.js.map +1 -1
  23. package/dist/ink/components/yaml-tree-view.d.ts +3 -0
  24. package/dist/ink/components/yaml-tree-view.js +108 -0
  25. package/dist/ink/components/yaml-tree-view.js.map +1 -0
  26. package/dist/ink/config-app.d.ts +7 -0
  27. package/dist/ink/config-app.js +43 -0
  28. package/dist/ink/config-app.js.map +1 -0
  29. package/dist/ink/manage-app.d.ts +3 -1
  30. package/dist/ink/manage-app.js +2 -2
  31. package/dist/ink/manage-app.js.map +1 -1
  32. package/dist/ink/settings-select-app.d.ts +4 -1
  33. package/dist/ink/settings-select-app.js +5 -2
  34. package/dist/ink/settings-select-app.js.map +1 -1
  35. package/dist/services/ccsp-config-service.d.ts +6 -0
  36. package/dist/services/ccsp-config-service.js +21 -0
  37. package/dist/services/ccsp-config-service.js.map +1 -0
  38. package/dist/services/claude-session-service.d.ts +13 -0
  39. package/dist/services/claude-session-service.js +73 -0
  40. package/dist/services/claude-session-service.js.map +1 -0
  41. package/dist/services/launch-preset-service.d.ts +20 -3
  42. package/dist/services/launch-preset-service.js +94 -27
  43. package/dist/services/launch-preset-service.js.map +1 -1
  44. package/dist/services/settings-finalizer-service.d.ts +2 -1
  45. package/dist/services/settings-finalizer-service.js +3 -1
  46. package/dist/services/settings-finalizer-service.js.map +1 -1
  47. package/dist/services/statusline-injector-service.d.ts +1 -1
  48. package/dist/services/statusline-injector-service.js +1 -3
  49. package/dist/services/statusline-injector-service.js.map +1 -1
  50. package/dist/version.d.ts +1 -1
  51. package/dist/version.js +1 -1
  52. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"two-column-settings-view.js","sourceRoot":"","sources":["../../../src/ink/components/two-column-settings-view.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AASjD,MAAM,UAAU,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAS;IACzE,mBAAmB,EAAE,CAAA;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAA;IAC9B,MAAM,eAAe,GAAG,GAAG,CAAA;IAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,IAAI,eAAe,CAAA;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC,CAAA;IAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IAE9B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,YAAY,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,KAAK,GAAgB,EACtD,KAAC,YAAY,IAAC,QAAQ,kBAAE,IAAI,GAAgB,EAC5C,MAAC,GAAG,IAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,aACpC,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,GAAG,EAChB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,aAEb,MAAC,YAAY,IAAC,IAAI,gCAAW,KAAK,CAAC,MAAM,SAAiB,EACzD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,MAAC,YAAY,OAEP,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAEvD,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAC9B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAL/B,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAMzB,CAChB,CAAC,IACE,EACN,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,KAAK,EAAE,YAAY,EACnB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,aAEb,KAAC,YAAY,IAAC,IAAI,kBAAE,QAAQ,EAAE,UAAU,IAAI,sBAAsB,GAAgB,EACjF,QAAQ,CAAC,CAAC,CAAC,KAAC,YAAY,IAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,GAAI,CAAC,CAAC,CAAC,KAAC,YAAY,IAAC,QAAQ,wCAAiC,IAC5G,IACF,IACF,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"two-column-settings-view.js","sourceRoot":"","sources":["../../../src/ink/components/two-column-settings-view.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function YamlTreeView({ value }: {
2
+ value: unknown;
3
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,108 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { TruncateText } from './truncate-text.js';
4
+ const KEY_COLOR = 'cyan';
5
+ const PUNCT_COLOR = 'gray';
6
+ const STRING_COLOR = 'green';
7
+ const NUMBER_COLOR = 'yellow';
8
+ const BOOL_COLOR = 'magenta';
9
+ const NULL_COLOR = 'gray';
10
+ function isPlainObject(value) {
11
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
12
+ }
13
+ function isScalar(value) {
14
+ return !isPlainObject(value) && !Array.isArray(value);
15
+ }
16
+ function scalarColor(value) {
17
+ if (typeof value === 'string')
18
+ return STRING_COLOR;
19
+ if (typeof value === 'number')
20
+ return NUMBER_COLOR;
21
+ if (typeof value === 'boolean')
22
+ return BOOL_COLOR;
23
+ return NULL_COLOR;
24
+ }
25
+ function needsQuote(value) {
26
+ if (value === '')
27
+ return true;
28
+ if (/^\s|\s$/.test(value))
29
+ return true;
30
+ if (/: |:$| #/.test(value))
31
+ return true;
32
+ if (/^[#&*!|>%@`"'[\]{},?:-]/.test(value))
33
+ return true;
34
+ if (/[\n\t]/.test(value))
35
+ return true;
36
+ if (/^(true|false|null|yes|no|on|off|~)$/i.test(value))
37
+ return true;
38
+ if (/^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/.test(value))
39
+ return true;
40
+ return false;
41
+ }
42
+ function renderScalar(value) {
43
+ if (value === null || value === undefined)
44
+ return 'null';
45
+ if (typeof value === 'string')
46
+ return needsQuote(value) ? JSON.stringify(value) : value;
47
+ return String(value);
48
+ }
49
+ function YamlScalar({ value }) {
50
+ return _jsx(Text, { color: scalarColor(value), children: renderScalar(value) });
51
+ }
52
+ function YamlMapping({ value }) {
53
+ const entries = Object.entries(value);
54
+ if (entries.length === 0)
55
+ return _jsx(TruncateText, { children: _jsx(Text, { color: PUNCT_COLOR, children: '{}' }) });
56
+ return (_jsx(Box, { flexDirection: "column", width: "100%", children: entries.map(([key, child]) => (_jsx(YamlEntry, { name: key, value: child }, key))) }));
57
+ }
58
+ function YamlEntry({ name, value }) {
59
+ const keyLabel = _jsx(Text, { color: KEY_COLOR, children: name });
60
+ if (isScalar(value)) {
61
+ return (_jsxs(TruncateText, { children: [keyLabel, _jsx(Text, { color: PUNCT_COLOR, children: ": " }), _jsx(YamlScalar, { value: value })] }));
62
+ }
63
+ if (Array.isArray(value)) {
64
+ if (value.length === 0) {
65
+ return (_jsxs(TruncateText, { children: [keyLabel, _jsx(Text, { color: PUNCT_COLOR, children: ": []" })] }));
66
+ }
67
+ return (_jsxs(Box, { flexDirection: "column", width: "100%", children: [_jsxs(TruncateText, { children: [keyLabel, _jsx(Text, { color: PUNCT_COLOR, children: ":" })] }), _jsx(Box, { paddingLeft: 2, width: "100%", children: _jsx(YamlSequence, { items: value }) })] }));
68
+ }
69
+ const entries = Object.entries(value);
70
+ if (entries.length === 0) {
71
+ return (_jsxs(TruncateText, { children: [keyLabel, _jsx(Text, { color: PUNCT_COLOR, children: ': {}' })] }));
72
+ }
73
+ return (_jsxs(Box, { flexDirection: "column", width: "100%", children: [_jsxs(TruncateText, { children: [keyLabel, _jsx(Text, { color: PUNCT_COLOR, children: ":" })] }), _jsx(Box, { paddingLeft: 2, width: "100%", children: _jsx(YamlMapping, { value: value }) })] }));
74
+ }
75
+ function YamlSequence({ items }) {
76
+ return (_jsx(Box, { flexDirection: "column", width: "100%", children: items.map((item, index) => (_jsx(YamlSequenceItem, { value: item }, index))) }));
77
+ }
78
+ function YamlSequenceItem({ value }) {
79
+ const dash = _jsx(Text, { color: PUNCT_COLOR, children: "- " });
80
+ if (isScalar(value)) {
81
+ return (_jsxs(TruncateText, { children: [dash, _jsx(YamlScalar, { value: value })] }));
82
+ }
83
+ if (Array.isArray(value)) {
84
+ if (value.length === 0) {
85
+ return (_jsxs(TruncateText, { children: [dash, _jsx(Text, { color: PUNCT_COLOR, children: "[]" })] }));
86
+ }
87
+ return (_jsxs(Box, { flexDirection: "row", width: "100%", children: [dash, _jsx(Box, { flexDirection: "column", width: "100%", children: _jsx(YamlSequence, { items: value }) })] }));
88
+ }
89
+ const entries = Object.entries(value);
90
+ if (entries.length === 0) {
91
+ return (_jsxs(TruncateText, { children: [dash, _jsx(Text, { color: PUNCT_COLOR, children: '{}' })] }));
92
+ }
93
+ return (_jsxs(Box, { flexDirection: "row", width: "100%", children: [dash, _jsx(Box, { flexDirection: "column", width: "100%", children: _jsx(YamlMapping, { value: value }) })] }));
94
+ }
95
+ export function YamlTreeView({ value }) {
96
+ let content;
97
+ if (Array.isArray(value)) {
98
+ content = value.length === 0 ? _jsx(TruncateText, { children: _jsx(Text, { color: PUNCT_COLOR, children: "[]" }) }) : _jsx(YamlSequence, { items: value });
99
+ }
100
+ else if (isPlainObject(value)) {
101
+ content = _jsx(YamlMapping, { value: value });
102
+ }
103
+ else {
104
+ content = _jsx(TruncateText, { children: _jsx(YamlScalar, { value: value }) });
105
+ }
106
+ return (_jsx(Box, { flexDirection: "column", width: "100%", children: content }));
107
+ }
108
+ //# sourceMappingURL=yaml-tree-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-tree-view.js","sourceRoot":"","sources":["../../../src/ink/components/yaml-tree-view.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { CcspConfig } from '../core/schema.js';
2
+ type Props = {
3
+ initialConfig: CcspConfig;
4
+ onChange: (config: CcspConfig) => void;
5
+ };
6
+ export declare function ConfigApp({ initialConfig, onChange }: Props): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Box, Text, useApp, useInput, useStdout } from 'ink';
4
+ import { CONFIG_OPTIONS, createConfigFlowState, reduceConfigFlow, } from '../flows/config-flow.js';
5
+ import { useInkResizeVersion } from './components/resize-context.js';
6
+ import { TruncateText } from './components/truncate-text.js';
7
+ const VALUE_COLORS = {
8
+ on: 'green',
9
+ off: 'gray',
10
+ info: 'cyan',
11
+ };
12
+ export function ConfigApp({ initialConfig, onChange }) {
13
+ const { exit } = useApp();
14
+ useInkResizeVersion();
15
+ const { stdout } = useStdout();
16
+ const [state, setState] = useState(() => createConfigFlowState(initialConfig));
17
+ useInput((input, key) => {
18
+ if (input === 'q' || key.escape) {
19
+ exit();
20
+ return;
21
+ }
22
+ if (key.upArrow || input === 'k')
23
+ setState(current => reduceConfigFlow(current, { type: 'up' }));
24
+ if (key.downArrow || input === 'j')
25
+ setState(current => reduceConfigFlow(current, { type: 'down' }));
26
+ if (input === ' ' || key.return) {
27
+ const next = reduceConfigFlow(state, { type: 'toggle' });
28
+ setState(next);
29
+ onChange(next.config);
30
+ }
31
+ });
32
+ const fallbackColumns = 120;
33
+ const innerWidth = stdout.columns ?? fallbackColumns;
34
+ const listWidth = Math.max(20, Math.floor((innerWidth - 1) / 2));
35
+ const previewWidth = Math.max(20, innerWidth - listWidth - 1);
36
+ const focused = CONFIG_OPTIONS[state.cursor];
37
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(TruncateText, { bold: true, color: "cyan", children: "ccsp config" }), _jsx(TruncateText, { dimColor: true, children: "\u2191/k \u2193/j navigate \u00B7 space/enter toggle \u00B7 q quit" }), _jsxs(Box, { marginTop: 0.5, width: innerWidth, children: [_jsxs(Box, { flexDirection: "column", width: listWidth, marginRight: 0.5, borderStyle: "round", borderColor: "cyan", paddingX: 0.5, paddingY: 0.5, children: [_jsxs(TruncateText, { bold: true, children: ["Config(", CONFIG_OPTIONS.length, ")"] }), CONFIG_OPTIONS.map((option, index) => {
38
+ const display = option.display(state.config);
39
+ const isCursor = index === state.cursor;
40
+ return (_jsxs(TruncateText, { ...(isCursor ? { color: 'cyan' } : {}), children: [isCursor ? '❯ ' : ' ', option.label, ' ', _jsxs(Text, { color: VALUE_COLORS[display.tone], children: ["[", display.label, "]"] })] }, option.key));
41
+ })] }), _jsxs(Box, { flexDirection: "column", width: previewWidth, borderStyle: "round", borderColor: "gray", paddingX: 0.5, paddingY: 0.5, children: [_jsx(TruncateText, { bold: true, children: focused?.label ?? 'No option selected' }), focused ? _jsx(Text, { children: focused.description }) : _jsx(TruncateText, { dimColor: true, children: "no description" })] })] })] }));
42
+ }
43
+ //# sourceMappingURL=config-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-app.js","sourceRoot":"","sources":["../../src/ink/config-app.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type SettingsSelectItem } from '../flows/settings-select-flow.js';
2
+ import type { SettingsDisplayFormat } from '../core/schema.js';
2
3
  export type ManageResult = {
3
4
  type: 'launch';
4
5
  item: SettingsSelectItem;
@@ -18,8 +19,9 @@ export type ManageResult = {
18
19
  };
19
20
  type Props = {
20
21
  items: SettingsSelectItem[];
22
+ displayFormat?: SettingsDisplayFormat;
21
23
  onSubmit: (result: ManageResult) => void;
22
24
  onRenameSubmit?: (item: SettingsSelectItem, newName: string) => Promise<string | null>;
23
25
  };
24
- export declare function ManageApp({ items, onSubmit, onRenameSubmit }: Props): import("react/jsx-runtime").JSX.Element;
26
+ export declare function ManageApp({ items, displayFormat, onSubmit, onRenameSubmit }: Props): import("react/jsx-runtime").JSX.Element;
25
27
  export {};
@@ -5,7 +5,7 @@ import { createSettingsSelectFlowState, reduceSettingsSelectFlow } from '../flow
5
5
  import { revealInFinder } from '../services/reveal-service.js';
6
6
  import { TextInput } from './components/text-input.js';
7
7
  import { TwoColumnSettingsView } from './components/two-column-settings-view.js';
8
- export function ManageApp({ items, onSubmit, onRenameSubmit }) {
8
+ export function ManageApp({ items, displayFormat = 'yaml', onSubmit, onRenameSubmit }) {
9
9
  const { exit } = useApp();
10
10
  const [state, setState] = useState(() => createSettingsSelectFlowState({ items }));
11
11
  const [mode, setMode] = useState('browse');
@@ -78,7 +78,7 @@ export function ManageApp({ items, onSubmit, onRenameSubmit }) {
78
78
  exit();
79
79
  } })] }));
80
80
  }
81
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(TwoColumnSettingsView, { title: "Manage settings presets", help: "\u2191/k \u2193/j navigate \u00B7 l launch \u00B7 c create \u00B7 o open folder \u00B7 r rename \u00B7 d delete \u00B7 q quit", items: state.items, cursor: state.cursor }), message ? _jsx(Text, { color: "yellow", children: message }) : null] }));
81
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(TwoColumnSettingsView, { title: "Manage settings presets", help: "\u2191/k \u2193/j navigate \u00B7 l launch \u00B7 c create \u00B7 o open folder \u00B7 r rename \u00B7 d delete \u00B7 q quit", items: state.items, cursor: state.cursor, displayFormat: displayFormat }), message ? _jsx(Text, { color: "yellow", children: message }) : null] }));
82
82
  }
83
83
  function ConfirmDelete({ onConfirm, onCancel }) {
84
84
  useInput((input, key) => {
@@ -1 +1 @@
1
- {"version":3,"file":"manage-app.js","sourceRoot":"","sources":["../../src/ink/manage-app.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manage-app.js","sourceRoot":"","sources":["../../src/ink/manage-app.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  import { type SettingsSelectItem } from '../flows/settings-select-flow.js';
2
+ import type { SettingsDisplayFormat } from '../core/schema.js';
2
3
  export type SettingsSelectResult = SettingsSelectItem;
3
4
  type Props = {
4
5
  items: SettingsSelectItem[];
5
6
  initialName?: string;
7
+ initialEnvOnly?: boolean;
8
+ displayFormat?: SettingsDisplayFormat;
6
9
  onSubmit: (result: SettingsSelectResult) => void;
7
10
  };
8
- export declare function SettingsSelectApp({ items, initialName, onSubmit }: Props): import("react/jsx-runtime").JSX.Element;
11
+ export declare function SettingsSelectApp({ items, initialName, initialEnvOnly, displayFormat, onSubmit }: Props): import("react/jsx-runtime").JSX.Element;
9
12
  export {};
@@ -3,17 +3,20 @@ import { useState } from 'react';
3
3
  import { useApp, useInput } from 'ink';
4
4
  import { createSettingsSelectFlowState, reduceSettingsSelectFlow } from '../flows/settings-select-flow.js';
5
5
  import { TwoColumnSettingsView } from './components/two-column-settings-view.js';
6
- export function SettingsSelectApp({ items, initialName, onSubmit }) {
6
+ export function SettingsSelectApp({ items, initialName, initialEnvOnly = false, displayFormat = 'yaml', onSubmit }) {
7
7
  const { exit } = useApp();
8
8
  const [state, setState] = useState(() => createSettingsSelectFlowState({
9
9
  items,
10
10
  ...(initialName ? { initialName } : {}),
11
11
  }));
12
+ const [envOnly, setEnvOnly] = useState(initialEnvOnly);
12
13
  useInput((input, key) => {
13
14
  if (input === 'q' || key.escape) {
14
15
  exit();
15
16
  return;
16
17
  }
18
+ if (input === 'f')
19
+ setEnvOnly(current => !current);
17
20
  if (key.upArrow || input === 'k')
18
21
  setState(current => reduceSettingsSelectFlow(current, { type: 'up' }));
19
22
  if (key.downArrow || input === 'j')
@@ -26,6 +29,6 @@ export function SettingsSelectApp({ items, initialName, onSubmit }) {
26
29
  exit();
27
30
  }
28
31
  });
29
- return (_jsx(TwoColumnSettingsView, { title: "Select Claude Code settings", help: "\u2191/k \u2193/j navigate \u00B7 enter select \u00B7 q quit", items: state.items, cursor: state.cursor }));
32
+ return (_jsx(TwoColumnSettingsView, { title: "Select Claude Code settings", help: `↑/k ↓/j navigate · enter select · f toggle ${envOnly ? 'full' : 'env'} · q quit`, items: state.items, cursor: state.cursor, envOnly: envOnly, displayFormat: displayFormat }));
30
33
  }
31
34
  //# sourceMappingURL=settings-select-app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings-select-app.js","sourceRoot":"","sources":["../../src/ink/settings-select-app.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AACtC,OAAO,EAAE,6BAA6B,EAAE,wBAAwB,EAA2B,MAAM,kCAAkC,CAAA;AACnI,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;AAUhF,MAAM,UAAU,iBAAiB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAS;IACvE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAA;IACzB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,6BAA6B,CAAC;QACrE,KAAK;QACL,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC,CAAC,CAAA;IAEH,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,EAAE,CAAA;YACN,OAAM;QACR,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,KAAK,GAAG;YAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,wBAAwB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QACxG,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,KAAK,GAAG;YAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,wBAAwB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAE5G,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAC1C,IAAI,CAAC,QAAQ;gBAAE,OAAM;YACrB,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAClB,IAAI,EAAE,CAAA;QACR,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,CACL,KAAC,qBAAqB,IACpB,KAAK,EAAC,6BAA6B,EACnC,IAAI,EAAC,8DAA0C,EAC/C,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,GACpB,CACH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"settings-select-app.js","sourceRoot":"","sources":["../../src/ink/settings-select-app.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AACtC,OAAO,EAAE,6BAA6B,EAAE,wBAAwB,EAA2B,MAAM,kCAAkC,CAAA;AAEnI,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;AAYhF,MAAM,UAAU,iBAAiB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,GAAG,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE,QAAQ,EAAS;IACvH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAA;IACzB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,6BAA6B,CAAC;QACrE,KAAK;QACL,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC,CAAC,CAAA;IACH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;IAEtD,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,EAAE,CAAA;YACN,OAAM;QACR,CAAC;QAED,IAAI,KAAK,KAAK,GAAG;YAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;QAElD,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,KAAK,GAAG;YAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,wBAAwB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QACxG,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,KAAK,GAAG;YAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,wBAAwB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAE5G,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAC1C,IAAI,CAAC,QAAQ;gBAAE,OAAM;YACrB,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAClB,IAAI,EAAE,CAAA;QACR,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,CACL,KAAC,qBAAqB,IACpB,KAAK,EAAC,6BAA6B,EACnC,IAAI,EAAE,8CAA8C,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,EACvF,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,GAC5B,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type CcspConfig } from '../core/schema.js';
2
+ export declare function createCcspConfigService(globalRoot: string): {
3
+ read: () => Promise<CcspConfig>;
4
+ write: (config: CcspConfig) => Promise<void>;
5
+ setOption<K extends keyof CcspConfig>(key: K, value: CcspConfig[K]): Promise<void>;
6
+ };
@@ -0,0 +1,21 @@
1
+ import { readJsonFileOrDefault, writeJsonFile } from '../core/json.js';
2
+ import { resolveCcspConfigPath } from '../core/paths.js';
3
+ import { ccspConfigSchema, parseCcspConfig } from '../core/schema.js';
4
+ export function createCcspConfigService(globalRoot) {
5
+ const filePath = resolveCcspConfigPath(globalRoot);
6
+ async function read() {
7
+ return parseCcspConfig(await readJsonFileOrDefault(filePath, {}));
8
+ }
9
+ async function write(config) {
10
+ await writeJsonFile(filePath, ccspConfigSchema.parse(config));
11
+ }
12
+ return {
13
+ read,
14
+ write,
15
+ async setOption(key, value) {
16
+ const current = await read();
17
+ await write({ ...current, [key]: value });
18
+ },
19
+ };
20
+ }
21
+ //# sourceMappingURL=ccsp-config-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ccsp-config-service.js","sourceRoot":"","sources":["../../src/services/ccsp-config-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAmB,MAAM,mBAAmB,CAAA;AAEtF,MAAM,UAAU,uBAAuB,CAAC,UAAkB;IACxD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAA;IAElD,KAAK,UAAU,IAAI;QACjB,OAAO,eAAe,CAAC,MAAM,qBAAqB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,MAAkB;QACrC,MAAM,aAAa,CAAC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO;QACL,IAAI;QACJ,KAAK;QACL,KAAK,CAAC,SAAS,CAA6B,GAAM,EAAE,KAAoB;YACtE,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAA;YAC5B,MAAM,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3C,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Encode a project cwd the way Claude Code names its per-project session
3
+ * directory under `~/.claude/projects/`. Both `/` and `.` segments collapse to
4
+ * `-`, e.g. `/Users/x/.foo` -> `-Users-x--foo`.
5
+ */
6
+ export declare function encodeClaudeProjectDirName(cwd: string): string;
7
+ export declare function resolveClaudeProjectSessionsDir(homeDir: string, cwd: string): string;
8
+ export type ClaudeSessionService = {
9
+ snapshot(): Promise<Set<string>>;
10
+ findNewSessionId(snapshot: Set<string>): Promise<string | undefined>;
11
+ hasSession(sessionId: string): Promise<boolean>;
12
+ };
13
+ export declare function createClaudeSessionService(homeDir: string, cwd: string): ClaudeSessionService;
@@ -0,0 +1,73 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ /**
4
+ * Encode a project cwd the way Claude Code names its per-project session
5
+ * directory under `~/.claude/projects/`. Both `/` and `.` segments collapse to
6
+ * `-`, e.g. `/Users/x/.foo` -> `-Users-x--foo`.
7
+ */
8
+ export function encodeClaudeProjectDirName(cwd) {
9
+ return cwd.replace(/[/.]/g, '-');
10
+ }
11
+ export function resolveClaudeProjectSessionsDir(homeDir, cwd) {
12
+ return join(homeDir, '.claude', 'projects', encodeClaudeProjectDirName(cwd));
13
+ }
14
+ export function createClaudeSessionService(homeDir, cwd) {
15
+ const dir = resolveClaudeProjectSessionsDir(homeDir, cwd);
16
+ async function listJsonlEntries() {
17
+ let entries;
18
+ try {
19
+ entries = await fs.readdir(dir);
20
+ }
21
+ catch (error) {
22
+ if (error.code === 'ENOENT')
23
+ return [];
24
+ throw error;
25
+ }
26
+ const out = [];
27
+ for (const entry of entries) {
28
+ if (!entry.endsWith('.jsonl'))
29
+ continue;
30
+ try {
31
+ const stat = await fs.stat(join(dir, entry));
32
+ if (!stat.isFile())
33
+ continue;
34
+ out.push({ name: entry, birthtimeMs: stat.birthtimeMs });
35
+ }
36
+ catch {
37
+ // entry vanished between readdir and stat; ignore
38
+ }
39
+ }
40
+ return out;
41
+ }
42
+ return {
43
+ async snapshot() {
44
+ return new Set((await listJsonlEntries()).map(entry => entry.name));
45
+ },
46
+ /**
47
+ * Find the session id Claude created during this launch by diffing against
48
+ * a pre-spawn snapshot. Picks the new jsonl with the earliest birthtime so
49
+ * concurrent ccsp launches in the same cwd don't steal each other's ids.
50
+ */
51
+ async findNewSessionId(snapshot) {
52
+ const current = await listJsonlEntries();
53
+ const fresh = current.filter(entry => !snapshot.has(entry.name));
54
+ if (fresh.length === 0)
55
+ return undefined;
56
+ fresh.sort((a, b) => a.birthtimeMs - b.birthtimeMs);
57
+ const first = fresh[0];
58
+ return first.name.replace(/\.jsonl$/, '');
59
+ },
60
+ async hasSession(sessionId) {
61
+ try {
62
+ const stat = await fs.stat(join(dir, `${sessionId}.jsonl`));
63
+ return stat.isFile();
64
+ }
65
+ catch (error) {
66
+ if (error.code === 'ENOENT')
67
+ return false;
68
+ throw error;
69
+ }
70
+ },
71
+ };
72
+ }
73
+ //# sourceMappingURL=claude-session-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-session-service.js","sourceRoot":"","sources":["../../src/services/claude-session-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,GAAW;IACpD,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,OAAe,EAAE,GAAW;IAC1E,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAA;AAC9E,CAAC;AAUD,MAAM,UAAU,0BAA0B,CAAC,OAAe,EAAE,GAAW;IACrE,MAAM,GAAG,GAAG,+BAA+B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAEzD,KAAK,UAAU,gBAAgB;QAC7B,IAAI,OAAiB,CAAA;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAA;YACjE,MAAM,KAAK,CAAA;QACb,CAAC;QACD,MAAM,GAAG,GAAiB,EAAE,CAAA;QAC5B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,SAAQ;YACvC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;gBAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBAAE,SAAQ;gBAC5B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;YAC1D,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;YACpD,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,OAAO;QACL,KAAK,CAAC,QAAQ;YACZ,OAAO,IAAI,GAAG,CAAC,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;QACrE,CAAC;QACD;;;;WAIG;QACH,KAAK,CAAC,gBAAgB,CAAC,QAAqB;YAC1C,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAA;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YAChE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAA;YACxC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAA;YACnD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;YACvB,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;QAC3C,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,SAAiB;YAChC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC,CAAA;gBAC3D,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;oBAAE,OAAO,KAAK,CAAA;gBACpE,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1,4 +1,16 @@
1
- import { type LaunchPresetMeta, type LaunchPresetSettings } from '../core/schema.js';
1
+ import { type LaunchPresetMeta, type LaunchPresetSettings, type SessionBinding } from '../core/schema.js';
2
+ export type SessionBindingInput = {
3
+ sessionId: string;
4
+ globalName: string;
5
+ projectPresetName: string;
6
+ baseSettings: unknown;
7
+ launchSettings: unknown;
8
+ toggles: {
9
+ plugins: unknown[];
10
+ skills: unknown[];
11
+ mcps: unknown[];
12
+ };
13
+ };
2
14
  export declare function createLaunchPresetService(cwd: string): {
3
15
  listPresets(): Promise<LaunchPresetMeta[]>;
4
16
  readPresetSettings(nameInput: string): Promise<LaunchPresetSettings>;
@@ -8,7 +20,12 @@ export declare function createLaunchPresetService(cwd: string): {
8
20
  deletePreset(nameInput: string): Promise<void>;
9
21
  writeLastUsed: (nameInput: string) => Promise<void>;
10
22
  readLastUsed: () => Promise<string | undefined>;
11
- writeTempSettings(settingsInput: unknown, date?: Date): Promise<string>;
12
- cleanupTempLaunchArtifacts(settingsPath: string): Promise<void>;
23
+ writeTempSettings(settingsInput: unknown, stem: string): Promise<string>;
24
+ cleanupTempScripts(stem: string): Promise<void>;
25
+ writeSessionBinding(input: SessionBindingInput): Promise<void>;
26
+ readSessionBinding(sessionId: string): Promise<SessionBinding | undefined>;
27
+ recordSessionExit(sessionId: string): Promise<void>;
28
+ deleteSessionBinding(sessionId: string): Promise<void>;
29
+ findLatestExitedSession(): Promise<SessionBinding | undefined>;
13
30
  importExistingLaunchFile(filePath: string, nameInput?: string): Promise<LaunchPresetMeta>;
14
31
  };