claudeup 6.2.0 → 6.3.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/README.md +22 -0
- package/bin/claudeup.js +6 -1
- package/package.json +6 -6
- package/src/__tests__/alias-adopt.test.ts +331 -329
- package/src/__tests__/alias-parser.test.ts +384 -376
- package/src/__tests__/alias-shell-writer.test.ts +638 -625
- package/src/__tests__/alias-store.test.ts +143 -143
- package/src/__tests__/catalog-cache-store.test.ts +265 -265
- package/src/__tests__/catalog-notice.test.ts +123 -123
- package/src/__tests__/cli-apply-seams.test.ts +12 -8
- package/src/__tests__/cli-router.test.ts +132 -3
- package/src/__tests__/cli-update-view.test.ts +27 -8
- package/src/__tests__/community-staleness.test.ts +0 -2
- package/src/__tests__/component-badge.test.ts +4 -4
- package/src/__tests__/content-drift.test.ts +5 -1
- package/src/__tests__/conventions-integration.test.ts +774 -689
- package/src/__tests__/conventions-manager.test.ts +1216 -1152
- package/src/__tests__/doctor-bins.test.ts +14 -6
- package/src/__tests__/doctor.test.ts +438 -425
- package/src/__tests__/dual-write-prevention.test.ts +277 -282
- package/src/__tests__/enabled-not-installed.test.ts +71 -63
- package/src/__tests__/file-locking.test.ts +196 -196
- package/src/__tests__/gap-fill-versions.test.ts +318 -311
- package/src/__tests__/github-budget.test.ts +170 -164
- package/src/__tests__/gitignore-detector.test.ts +160 -152
- package/src/__tests__/gitignore-fixer.test.ts +285 -247
- package/src/__tests__/gitignore-prerun.test.ts +57 -57
- package/src/__tests__/gitignore-resolver.test.ts +173 -146
- package/src/__tests__/gitignore-service.test.ts +121 -119
- package/src/__tests__/go-module.test.ts +43 -0
- package/src/__tests__/install-command.test.ts +3 -3
- package/src/__tests__/install-plan.test.ts +13 -7
- package/src/__tests__/manifest.test.ts +16 -5
- package/src/__tests__/markdown-renderer.test.ts +0 -1
- package/src/__tests__/marketplace-badge.test.ts +111 -90
- package/src/__tests__/marketplace-version.test.ts +64 -61
- package/src/__tests__/plugin-manager-fallback.test.ts +249 -239
- package/src/__tests__/plugin-requires.test.ts +55 -1
- package/src/__tests__/plugin-setup.test.ts +111 -9
- package/src/__tests__/profile-command.test.ts +1 -7
- package/src/__tests__/profile-materializer.test.ts +31 -8
- package/src/__tests__/profile-sync.test.ts +23 -5
- package/src/__tests__/registry-version-resolution.test.ts +61 -47
- package/src/__tests__/resolve-executable.test.ts +1 -1
- package/src/__tests__/resolver.test.ts +38 -13
- package/src/__tests__/scope-action.test.ts +52 -50
- package/src/__tests__/scope-squares.test.tsx +4 -5
- package/src/__tests__/skill-install-files.test.ts +111 -103
- package/src/__tests__/symlink-manager.test.ts +27 -10
- package/src/__tests__/theme-env.test.ts +281 -0
- package/src/__tests__/theme-resolve.test.ts +380 -0
- package/src/__tests__/update-apply.test.ts +1 -3
- package/src/__tests__/useGitignoreModal.test.ts +69 -61
- package/src/__tests__/version-snapshot.test.ts +183 -165
- package/src/cli/ansi.ts +23 -15
- package/src/cli/doctor.ts +10 -9
- package/src/cli/install.ts +3 -3
- package/src/cli/profile.ts +5 -4
- package/src/cli/prompt.ts +0 -1
- package/src/cli/router.ts +69 -2
- package/src/cli/update-view.ts +11 -6
- package/src/cli/update.ts +9 -4
- package/src/cli/upgrade.ts +6 -4
- package/src/data/alias-flags.ts +260 -260
- package/src/data/gitignore-defaults.ts +20 -20
- package/src/data/gitignore-reasons.ts +86 -92
- package/src/data/gitignore-templates.ts +14 -14
- package/src/data/predefined-profiles.ts +1 -2
- package/src/data/skill-repos.ts +43 -35
- package/src/main.tsx +29 -6
- package/src/opentui.d.ts +1 -3
- package/src/prerunner/index.ts +7 -8
- package/src/services/alias-settings.ts +20 -23
- package/src/services/alias-shell-writer.ts +800 -803
- package/src/services/alias-store.ts +77 -77
- package/src/services/claude-settings.ts +27 -18
- package/src/services/content-drift.ts +14 -4
- package/src/services/conventions-manager.ts +692 -617
- package/src/services/doctor.ts +464 -403
- package/src/services/gitignore-detector.ts +113 -103
- package/src/services/gitignore-fixer.ts +204 -189
- package/src/services/gitignore-prerun.ts +26 -26
- package/src/services/gitignore-resolver.ts +162 -144
- package/src/services/gitignore-service.ts +120 -117
- package/src/services/install-plan.ts +4 -4
- package/src/services/local-marketplace.ts +7 -5
- package/src/services/manifest.ts +1 -1
- package/src/services/marketplace-catalog-git.ts +5 -2
- package/src/services/marketplace-fetcher.ts +241 -235
- package/src/services/plugin-manager.ts +17 -20
- package/src/services/plugin-mcp-config.ts +2 -2
- package/src/services/plugin-requires.ts +16 -8
- package/src/services/plugin-setup.ts +32 -15
- package/src/services/plugin-version-check.ts +4 -4
- package/src/services/profile-materializer.ts +9 -5
- package/src/services/profile-sync.ts +12 -4
- package/src/services/profiles.ts +3 -3
- package/src/services/resolver.ts +10 -6
- package/src/services/settings-manager.ts +82 -46
- package/src/services/skills-manager.ts +11 -9
- package/src/services/symlink-manager.ts +2 -5
- package/src/services/toolchain.ts +3 -3
- package/src/services/update-cache.ts +1 -1
- package/src/services/update-engine.ts +4 -4
- package/src/services/update-plan.ts +9 -11
- package/src/services/version-snapshot.ts +88 -88
- package/src/types/gitignore.ts +28 -28
- package/src/ui/App.tsx +36 -36
- package/src/ui/adapters/settingsAdapter.ts +2 -2
- package/src/ui/components/CategoryHeader.tsx +1 -1
- package/src/ui/components/FlagDetailEditor.tsx +0 -0
- package/src/ui/components/ScopeIndicator.tsx +3 -1
- package/src/ui/components/ScrollableList.tsx +2 -1
- package/src/ui/components/StyledText.tsx +1 -1
- package/src/ui/components/layout/FooterHints.tsx +5 -3
- package/src/ui/components/layout/Panel.tsx +2 -2
- package/src/ui/components/layout/ScreenLayout.tsx +5 -4
- package/src/ui/components/modals/InputModal.tsx +7 -1
- package/src/ui/components/modals/ModalContainer.tsx +3 -3
- package/src/ui/components/modals/SelectModal.tsx +1 -1
- package/src/ui/components/primitives/DetailSection.tsx +1 -1
- package/src/ui/components/primitives/KeyValueLine.tsx +1 -1
- package/src/ui/components/primitives/ScopeSquares.tsx +2 -2
- package/src/ui/hooks/index.ts +0 -1
- package/src/ui/hooks/useGitignoreModal.ts +1 -5
- package/src/ui/hooks/useMismatchModal.ts +4 -10
- package/src/ui/renderers/cliToolRenderers.tsx +2 -2
- package/src/ui/renderers/gitignoreRenderers.tsx +2 -2
- package/src/ui/renderers/mcpRenderers.tsx +1 -1
- package/src/ui/renderers/pluginRenderers.tsx +3 -9
- package/src/ui/renderers/profileRenderers.tsx +9 -8
- package/src/ui/renderers/settingsRenderers.tsx +4 -4
- package/src/ui/renderers/skillRenderers.tsx +14 -14
- package/src/ui/screens/AliasScreen.tsx +31 -34
- package/src/ui/screens/CliToolsScreen.tsx +14 -13
- package/src/ui/screens/EnvVarsScreen.tsx +8 -8
- package/src/ui/screens/GitignoreScreen.tsx +15 -14
- package/src/ui/screens/McpRegistryScreen.tsx +10 -7
- package/src/ui/screens/McpScreen.tsx +10 -10
- package/src/ui/screens/PluginsScreen.tsx +17 -21
- package/src/ui/screens/ProfilesScreen.tsx +25 -24
- package/src/ui/screens/SkillsScreen.tsx +16 -14
- package/src/ui/state/AppContext.tsx +4 -8
- package/src/ui/state/DimensionsContext.tsx +3 -2
- package/src/ui/theme-mode.ts +20 -38
- package/src/ui/theme-resolve.ts +148 -0
- package/src/utils/clipboard.ts +5 -5
- package/src/utils/command-utils.ts +2 -2
- package/src/utils/config-dir.ts +1 -3
- package/src/utils/file-locking.ts +88 -86
- package/src/utils/go-module.ts +36 -0
- package/src/ui/hooks/useAsyncData.ts +0 -127
- package/src/ui/state/AnimationContext.tsx +0 -76
package/src/data/alias-flags.ts
CHANGED
|
@@ -8,72 +8,72 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
export type FlagKind =
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
11
|
+
/** On/off. AliasFlagState: { enabled: boolean } */
|
|
12
|
+
| "boolean"
|
|
13
|
+
/** Three states: unset / on / off. Used for `--chrome` vs `--no-chrome`. */
|
|
14
|
+
| "tri-state"
|
|
15
|
+
/** Single value from a fixed list. AliasFlagState: { enabled, value }. */
|
|
16
|
+
| "select"
|
|
17
|
+
/** Free-form string. AliasFlagState: { enabled, value }. */
|
|
18
|
+
| "text"
|
|
19
|
+
/** Optional free-form string (flag works with or without a value). */
|
|
20
|
+
| "optional-text"
|
|
21
|
+
/** Repeatable list of strings. AliasFlagState: { enabled, values }. */
|
|
22
|
+
| "text-list"
|
|
23
|
+
/**
|
|
24
|
+
* Picklist of common tokens + free-form custom tokens, joined with commas.
|
|
25
|
+
* AliasFlagState: { enabled, picked: string[], custom: string[] }.
|
|
26
|
+
* Used for `--debug` because Claude Code's category set is dynamic.
|
|
27
|
+
*/
|
|
28
|
+
| "multi-with-custom";
|
|
29
29
|
|
|
30
30
|
export interface FlagSelectOption {
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
label: string;
|
|
32
|
+
value: string;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
export interface AliasFlag {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
36
|
+
/** Stable identifier; used as JSON key in `~/.claude/claudeup-alias.json`. */
|
|
37
|
+
id: string;
|
|
38
|
+
/** Human label shown in the UI list. */
|
|
39
|
+
label: string;
|
|
40
|
+
/**
|
|
41
|
+
* The CLI flag as it appears on the command line. For tri-state, this is the
|
|
42
|
+
* "on" form (e.g. `--chrome`); the "off" form is in `triStateOff`.
|
|
43
|
+
*/
|
|
44
|
+
flag: string;
|
|
45
|
+
/** Optional short flag (e.g. `-d` for `--debug`). Not currently rendered. */
|
|
46
|
+
shortFlag?: string;
|
|
47
|
+
kind: FlagKind;
|
|
48
|
+
/** One-line description shown in the detail panel. */
|
|
49
|
+
description: string;
|
|
50
|
+
/** Allowed values for `kind: "select"`. */
|
|
51
|
+
options?: FlagSelectOption[];
|
|
52
|
+
/** "Off" form for tri-state flags (e.g. `--no-chrome`). */
|
|
53
|
+
triStateOff?: string;
|
|
54
|
+
/** Picklist tokens for `kind: "multi-with-custom"`. */
|
|
55
|
+
picklist?: string[];
|
|
56
|
+
/** Default seed values for `text-list` and `multi-with-custom`. */
|
|
57
|
+
defaultValues?: string[];
|
|
58
|
+
/**
|
|
59
|
+
* Validation key. The renderer / UI consult this to grey out conflicting
|
|
60
|
+
* fields. Two flags with the same `xorGroup` are mutually exclusive.
|
|
61
|
+
*/
|
|
62
|
+
xorGroup?: string;
|
|
63
|
+
/**
|
|
64
|
+
* The flag is only valid when another flag (by id) is enabled.
|
|
65
|
+
* UI greys out and shows "requires --xxx".
|
|
66
|
+
*/
|
|
67
|
+
requires?: string;
|
|
68
|
+
/**
|
|
69
|
+
* If true, the value supports `{token}` placeholders that expand at shell
|
|
70
|
+
* eval time (not at write time). The renderer emits the value as a mix of
|
|
71
|
+
* literal segments and shell substitution segments instead of one quoted
|
|
72
|
+
* token. See `TEMPLATE_TOKENS` for the supported placeholder set.
|
|
73
|
+
*/
|
|
74
|
+
templated?: boolean;
|
|
75
|
+
/** UI grouping; rendered as section headers in the list. */
|
|
76
|
+
group: FlagGroup;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
/**
|
|
@@ -87,215 +87,215 @@ export interface AliasFlag {
|
|
|
87
87
|
* `--remote-control` (which already auto-generates a unique suffix).
|
|
88
88
|
*/
|
|
89
89
|
export const TEMPLATE_TOKENS: Array<{ token: string; description: string }> = [
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
{ token: "{folder}", description: "current directory's basename" },
|
|
91
|
+
{ token: "{day}", description: "day of month, zero-padded (01-31)" },
|
|
92
|
+
{ token: "{month}", description: "month, zero-padded (01-12)" },
|
|
93
|
+
{ token: "{year}", description: "4-digit year" },
|
|
94
94
|
];
|
|
95
95
|
|
|
96
96
|
export type FlagGroup =
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
97
|
+
| "danger"
|
|
98
|
+
| "session"
|
|
99
|
+
| "context"
|
|
100
|
+
| "channels"
|
|
101
|
+
| "debug"
|
|
102
|
+
| "integration"
|
|
103
|
+
| "worktree";
|
|
104
104
|
|
|
105
105
|
export const FLAG_GROUPS: Array<{ id: FlagGroup; label: string }> = [
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
106
|
+
{ id: "danger", label: "Permissions" },
|
|
107
|
+
{ id: "session", label: "Session" },
|
|
108
|
+
{ id: "context", label: "Context" },
|
|
109
|
+
{ id: "channels", label: "Development channels" },
|
|
110
|
+
{ id: "debug", label: "Debug" },
|
|
111
|
+
{ id: "integration", label: "Integrations" },
|
|
112
|
+
{ id: "worktree", label: "Worktree" },
|
|
113
113
|
];
|
|
114
114
|
|
|
115
115
|
export const ALIAS_FLAGS: AliasFlag[] = [
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
116
|
+
{
|
|
117
|
+
id: "dangerously-skip-permissions",
|
|
118
|
+
label: "Skip permission checks",
|
|
119
|
+
flag: "--dangerously-skip-permissions",
|
|
120
|
+
kind: "boolean",
|
|
121
|
+
group: "danger",
|
|
122
|
+
description:
|
|
123
|
+
"Bypass all permission checks. Recommended only for sandboxes with no internet access.",
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
id: "allow-dangerously-skip-permissions",
|
|
127
|
+
label: "Allow skip-permissions opt-in",
|
|
128
|
+
flag: "--allow-dangerously-skip-permissions",
|
|
129
|
+
kind: "boolean",
|
|
130
|
+
group: "danger",
|
|
131
|
+
description:
|
|
132
|
+
"Enable the skip-permissions option without making it the default.",
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
id: "remote-control",
|
|
136
|
+
label: "Remote control",
|
|
137
|
+
flag: "--remote-control",
|
|
138
|
+
kind: "boolean",
|
|
139
|
+
group: "session",
|
|
140
|
+
description:
|
|
141
|
+
"Start an interactive session with Remote Control enabled. Claude Code auto-generates a unique session name; use --remote-control-session-name-prefix to customize it.",
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
id: "remote-control-session-name-prefix",
|
|
145
|
+
label: "Remote control name prefix",
|
|
146
|
+
flag: "--remote-control-session-name-prefix",
|
|
147
|
+
kind: "text",
|
|
148
|
+
templated: true,
|
|
149
|
+
group: "session",
|
|
150
|
+
description:
|
|
151
|
+
"Prefix for auto-generated Remote Control session names. Default: hostname. Supports template tokens that expand on each shell invocation: {folder} (basename of $PWD), {day}, {month}, {year}. Example: dev-{folder}-{day} → dev-myproject-15.",
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
id: "ide",
|
|
155
|
+
label: "Auto-connect to IDE",
|
|
156
|
+
flag: "--ide",
|
|
157
|
+
kind: "boolean",
|
|
158
|
+
group: "integration",
|
|
159
|
+
description:
|
|
160
|
+
"Automatically connect to IDE on startup if exactly one valid IDE is available.",
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
id: "chrome",
|
|
164
|
+
label: "Chrome integration",
|
|
165
|
+
flag: "--chrome",
|
|
166
|
+
triStateOff: "--no-chrome",
|
|
167
|
+
kind: "tri-state",
|
|
168
|
+
group: "integration",
|
|
169
|
+
description:
|
|
170
|
+
"Enable or disable Claude in Chrome integration. Unset leaves the project default in place.",
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
id: "effort",
|
|
174
|
+
label: "Effort level",
|
|
175
|
+
flag: "--effort",
|
|
176
|
+
kind: "select",
|
|
177
|
+
group: "session",
|
|
178
|
+
description: "Effort level for the current session.",
|
|
179
|
+
options: [
|
|
180
|
+
{ label: "low", value: "low" },
|
|
181
|
+
{ label: "medium", value: "medium" },
|
|
182
|
+
{ label: "high", value: "high" },
|
|
183
|
+
{ label: "xhigh", value: "xhigh" },
|
|
184
|
+
{ label: "max", value: "max" },
|
|
185
|
+
],
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
id: "system-prompt",
|
|
189
|
+
label: "System prompt",
|
|
190
|
+
flag: "--system-prompt",
|
|
191
|
+
kind: "text",
|
|
192
|
+
group: "context",
|
|
193
|
+
xorGroup: "system-prompt",
|
|
194
|
+
description:
|
|
195
|
+
"System prompt text to use for the session. Mutually exclusive with --system-prompt-file.",
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
id: "system-prompt-file",
|
|
199
|
+
label: "System prompt file",
|
|
200
|
+
flag: "--system-prompt-file",
|
|
201
|
+
kind: "text",
|
|
202
|
+
group: "context",
|
|
203
|
+
xorGroup: "system-prompt",
|
|
204
|
+
description:
|
|
205
|
+
"Path to a file whose contents replace the default system prompt. Mutually exclusive with --system-prompt.",
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
id: "append-system-prompt",
|
|
209
|
+
label: "Append system prompt",
|
|
210
|
+
flag: "--append-system-prompt",
|
|
211
|
+
kind: "text",
|
|
212
|
+
group: "context",
|
|
213
|
+
description:
|
|
214
|
+
"Text appended to the default system prompt. Composes with --system-prompt.",
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
id: "append-system-prompt-file",
|
|
218
|
+
label: "Append system prompt file",
|
|
219
|
+
flag: "--append-system-prompt-file",
|
|
220
|
+
kind: "text",
|
|
221
|
+
group: "context",
|
|
222
|
+
description:
|
|
223
|
+
"Path to a file whose contents are appended to the default system prompt.",
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
id: "channels",
|
|
227
|
+
label: "Channels (approved)",
|
|
228
|
+
flag: "--channels",
|
|
229
|
+
kind: "text-list",
|
|
230
|
+
group: "channels",
|
|
231
|
+
description:
|
|
232
|
+
"Approved channel plugins/MCP servers to run this session (the allowlist). Channels derived from --dangerously-load appear in a separate section here and are unioned in on write; add your own approved channels on top.",
|
|
233
|
+
defaultValues: [],
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
id: "dangerously-load-development-channels",
|
|
237
|
+
label: "Load development channels",
|
|
238
|
+
flag: "--dangerously-load-development-channels",
|
|
239
|
+
kind: "text-list",
|
|
240
|
+
group: "channels",
|
|
241
|
+
description:
|
|
242
|
+
"Sideload development channels not on the approved allowlist (local dev only). Also shown under --channels and unioned into it on write. Default seed: claudish (the only magus plugin currently shipping channels).",
|
|
243
|
+
defaultValues: ["plugin:claudish@magus"],
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
id: "debug",
|
|
247
|
+
label: "Debug categories",
|
|
248
|
+
flag: "--debug",
|
|
249
|
+
shortFlag: "-d",
|
|
250
|
+
kind: "multi-with-custom",
|
|
251
|
+
group: "debug",
|
|
252
|
+
description:
|
|
253
|
+
"Enable debug mode with optional category filter. Pick from common categories or add custom tokens (including negations like !file).",
|
|
254
|
+
picklist: [
|
|
255
|
+
"api",
|
|
256
|
+
"hooks",
|
|
257
|
+
"mcp",
|
|
258
|
+
"tools",
|
|
259
|
+
"plugins",
|
|
260
|
+
"skills",
|
|
261
|
+
"settings",
|
|
262
|
+
"permissions",
|
|
263
|
+
"auth",
|
|
264
|
+
"cache",
|
|
265
|
+
"statsig",
|
|
266
|
+
"file",
|
|
267
|
+
"1p",
|
|
268
|
+
],
|
|
269
|
+
defaultValues: [],
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
id: "worktree",
|
|
273
|
+
label: "Use worktree",
|
|
274
|
+
flag: "--worktree",
|
|
275
|
+
kind: "boolean",
|
|
276
|
+
group: "worktree",
|
|
277
|
+
description:
|
|
278
|
+
"Create a git worktree for the session. Prerequisite for --tmux.",
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
id: "tmux",
|
|
282
|
+
label: "tmux session",
|
|
283
|
+
flag: "--tmux",
|
|
284
|
+
kind: "select",
|
|
285
|
+
group: "worktree",
|
|
286
|
+
requires: "worktree",
|
|
287
|
+
description:
|
|
288
|
+
"Create a tmux session for the worktree. Requires --worktree. iTerm2 native panes when available; classic for traditional tmux.",
|
|
289
|
+
options: [
|
|
290
|
+
{ label: "auto (iTerm2 native)", value: "" },
|
|
291
|
+
{ label: "classic", value: "classic" },
|
|
292
|
+
],
|
|
293
|
+
},
|
|
294
294
|
];
|
|
295
295
|
|
|
296
296
|
/** Look up a flag by id. Throws if missing — keeps callers honest. */
|
|
297
297
|
export function getFlagById(id: string): AliasFlag {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
298
|
+
const f = ALIAS_FLAGS.find((flag) => flag.id === id);
|
|
299
|
+
if (!f) throw new Error(`Unknown alias flag id: ${id}`);
|
|
300
|
+
return f;
|
|
301
301
|
}
|
|
@@ -7,24 +7,24 @@ import type { GitignoreManifest } from "../types/gitignore.js";
|
|
|
7
7
|
* "common-dev" template which users opt into via `extends`.
|
|
8
8
|
*/
|
|
9
9
|
export const BUILTIN_DEFAULTS: GitignoreManifest = {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
10
|
+
ignore: [
|
|
11
|
+
".claude/settings.local.json",
|
|
12
|
+
".claude/scheduled_tasks.lock",
|
|
13
|
+
".claude/cache/",
|
|
14
|
+
".claude/.statusline-worktree-*",
|
|
15
|
+
// Generated, per-developer profile build output (like node_modules).
|
|
16
|
+
".claude/_profiles/",
|
|
17
|
+
"ai-docs/sessions/",
|
|
18
|
+
".mnemex/",
|
|
19
|
+
".claudemem/",
|
|
20
|
+
"gtd/sessions/",
|
|
21
|
+
".agents/",
|
|
22
|
+
],
|
|
23
|
+
track: [
|
|
24
|
+
// The committed team source of truth when using profiles.
|
|
25
|
+
".claude/profiles.json",
|
|
26
|
+
".claude/settings.json",
|
|
27
|
+
".mcp.json",
|
|
28
|
+
"plugin.json",
|
|
29
|
+
],
|
|
30
30
|
};
|