@akiojin/gwt 3.0.0 → 3.1.1

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 (53) hide show
  1. package/README.ja.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/cli/ui/components/App.d.ts.map +1 -1
  4. package/dist/cli/ui/components/App.js +19 -4
  5. package/dist/cli/ui/components/App.js.map +1 -1
  6. package/dist/cli/ui/components/parts/Header.d.ts +8 -0
  7. package/dist/cli/ui/components/parts/Header.d.ts.map +1 -1
  8. package/dist/cli/ui/components/parts/Header.js +7 -2
  9. package/dist/cli/ui/components/parts/Header.js.map +1 -1
  10. package/dist/cli/ui/components/screens/BranchListScreen.d.ts +3 -1
  11. package/dist/cli/ui/components/screens/BranchListScreen.d.ts.map +1 -1
  12. package/dist/cli/ui/components/screens/BranchListScreen.js +16 -8
  13. package/dist/cli/ui/components/screens/BranchListScreen.js.map +1 -1
  14. package/dist/cli/ui/components/screens/EnvironmentProfileScreen.d.ts +16 -0
  15. package/dist/cli/ui/components/screens/EnvironmentProfileScreen.d.ts.map +1 -0
  16. package/dist/cli/ui/components/screens/EnvironmentProfileScreen.js +576 -0
  17. package/dist/cli/ui/components/screens/EnvironmentProfileScreen.js.map +1 -0
  18. package/dist/cli/ui/hooks/useProfiles.d.ts +41 -0
  19. package/dist/cli/ui/hooks/useProfiles.d.ts.map +1 -0
  20. package/dist/cli/ui/hooks/useProfiles.js +136 -0
  21. package/dist/cli/ui/hooks/useProfiles.js.map +1 -0
  22. package/dist/cli/ui/types.d.ts +1 -1
  23. package/dist/cli/ui/types.d.ts.map +1 -1
  24. package/dist/cli/ui/utils/branchFormatter.d.ts.map +1 -1
  25. package/dist/cli/ui/utils/branchFormatter.js +2 -2
  26. package/dist/cli/ui/utils/branchFormatter.js.map +1 -1
  27. package/dist/config/profiles.d.ts +94 -0
  28. package/dist/config/profiles.d.ts.map +1 -0
  29. package/dist/config/profiles.js +287 -0
  30. package/dist/config/profiles.js.map +1 -0
  31. package/dist/config/tools.d.ts +10 -0
  32. package/dist/config/tools.d.ts.map +1 -1
  33. package/dist/config/tools.js +19 -2
  34. package/dist/config/tools.js.map +1 -1
  35. package/dist/types/profiles.d.ts +54 -0
  36. package/dist/types/profiles.d.ts.map +1 -0
  37. package/dist/types/profiles.js +33 -0
  38. package/dist/types/profiles.js.map +1 -0
  39. package/dist/web/client/src/components/ui/alert.d.ts +1 -1
  40. package/dist/web/client/src/components/ui/badge.d.ts +1 -1
  41. package/package.json +4 -3
  42. package/src/cli/ui/__tests__/components/screens/BranchListScreen.test.tsx +40 -1
  43. package/src/cli/ui/__tests__/utils/branchFormatter.test.ts +1 -1
  44. package/src/cli/ui/components/App.tsx +49 -36
  45. package/src/cli/ui/components/parts/Header.tsx +16 -1
  46. package/src/cli/ui/components/screens/BranchListScreen.tsx +17 -7
  47. package/src/cli/ui/components/screens/EnvironmentProfileScreen.tsx +924 -0
  48. package/src/cli/ui/hooks/useProfiles.ts +211 -0
  49. package/src/cli/ui/types.ts +2 -1
  50. package/src/cli/ui/utils/branchFormatter.ts +2 -3
  51. package/src/config/profiles.ts +362 -0
  52. package/src/config/tools.ts +20 -2
  53. package/src/types/profiles.ts +64 -0
@@ -0,0 +1,576 @@
1
+ /**
2
+ * 環境変数プロファイルエディター画面
3
+ *
4
+ * プロファイルの選択・作成・削除・環境変数の編集を行います。
5
+ * @see specs/SPEC-dafff079/spec.md
6
+ */
7
+ import React, { useState, useCallback, useMemo, useEffect } from "react";
8
+ import { Box, Text, useInput } from "ink";
9
+ import { Header } from "../parts/Header.js";
10
+ import { Footer } from "../parts/Footer.js";
11
+ import { Select } from "../common/Select.js";
12
+ import { Input } from "../common/Input.js";
13
+ import { Confirm } from "../common/Confirm.js";
14
+ import { useTerminalSize } from "../../hooks/useTerminalSize.js";
15
+ import { useProfiles } from "../../hooks/useProfiles.js";
16
+ import { isValidProfileName } from "../../../../types/profiles.js";
17
+ const UI_CHROME_HEIGHT = 20; // ヘッダー/フッター/余白などの固定行数
18
+ const ENV_VAR_KEY_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
19
+ const NO_PROFILE_VALUE = "__gwt_no_profile__";
20
+ /**
21
+ * 環境変数プロファイルエディター画面
22
+ */
23
+ export function EnvironmentProfileScreen({ onBack, version, }) {
24
+ const { rows } = useTerminalSize();
25
+ const { profiles, loading, error, activeProfileName, setActiveProfile, createProfile, deleteProfile, updateEnvVar, deleteEnvVar, } = useProfiles();
26
+ // 画面モード
27
+ const [mode, setMode] = useState("list");
28
+ const [selection, setSelection] = useState({
29
+ profileIndex: 0,
30
+ envIndex: 0,
31
+ osEnvIndex: 0,
32
+ focus: "profiles",
33
+ selectedProfileName: null,
34
+ });
35
+ const [profileCreation, setProfileCreation] = useState({
36
+ name: "",
37
+ displayName: "",
38
+ });
39
+ const [envEdit, setEnvEdit] = useState({
40
+ key: "",
41
+ value: "",
42
+ selectedKey: null,
43
+ });
44
+ // バリデーションエラー
45
+ const [validationError, setValidationError] = useState(null);
46
+ const profileIndex = selection.profileIndex;
47
+ const envIndex = selection.envIndex;
48
+ const osEnvIndex = selection.osEnvIndex;
49
+ const focus = selection.focus;
50
+ const selectedProfileName = selection.selectedProfileName;
51
+ const newProfileName = profileCreation.name;
52
+ const newProfileDisplayName = profileCreation.displayName;
53
+ const newEnvKey = envEdit.key;
54
+ const newEnvValue = envEdit.value;
55
+ const selectedEnvKey = envEdit.selectedKey;
56
+ const setProfileIndex = useCallback((index) => {
57
+ setSelection((prev) => ({ ...prev, profileIndex: index }));
58
+ }, []);
59
+ const setEnvIndex = useCallback((updater) => {
60
+ setSelection((prev) => ({
61
+ ...prev,
62
+ envIndex: typeof updater === "function" ? updater(prev.envIndex) : updater,
63
+ }));
64
+ }, []);
65
+ const setOsEnvIndex = useCallback((updater) => {
66
+ setSelection((prev) => ({
67
+ ...prev,
68
+ osEnvIndex: typeof updater === "function" ? updater(prev.osEnvIndex) : updater,
69
+ }));
70
+ }, []);
71
+ const setFocus = useCallback((updater) => {
72
+ setSelection((prev) => ({
73
+ ...prev,
74
+ focus: typeof updater === "function" ? updater(prev.focus) : updater,
75
+ }));
76
+ }, []);
77
+ const setSelectedProfileName = useCallback((name) => {
78
+ setSelection((prev) => ({ ...prev, selectedProfileName: name }));
79
+ }, []);
80
+ const setNewProfileName = useCallback((value) => {
81
+ setProfileCreation((prev) => ({ ...prev, name: value }));
82
+ }, []);
83
+ const setNewProfileDisplayName = useCallback((value) => {
84
+ setProfileCreation((prev) => ({ ...prev, displayName: value }));
85
+ }, []);
86
+ const setNewEnvKey = useCallback((value) => {
87
+ setEnvEdit((prev) => ({ ...prev, key: value }));
88
+ }, []);
89
+ const setNewEnvValue = useCallback((value) => {
90
+ setEnvEdit((prev) => ({ ...prev, value }));
91
+ }, []);
92
+ const setSelectedEnvKey = useCallback((key) => {
93
+ setEnvEdit((prev) => ({ ...prev, selectedKey: key }));
94
+ }, []);
95
+ // プロファイル一覧アイテム
96
+ const profileItems = useMemo(() => {
97
+ if (!profiles)
98
+ return [];
99
+ const items = Object.entries(profiles.profiles).map(([name, profile]) => ({
100
+ label: `${profile.displayName}${name === activeProfileName ? " (active)" : ""}`,
101
+ value: name,
102
+ profileName: name,
103
+ isActive: name === activeProfileName,
104
+ }));
105
+ return [
106
+ {
107
+ label: `(none)${activeProfileName === null ? " (active)" : ""}`,
108
+ value: NO_PROFILE_VALUE,
109
+ profileName: null,
110
+ isActive: activeProfileName === null,
111
+ },
112
+ ...items,
113
+ ];
114
+ }, [profiles, activeProfileName]);
115
+ // 現在選択中のプロファイル
116
+ const currentProfile = selectedProfileName && profiles
117
+ ? profiles.profiles[selectedProfileName]
118
+ : null;
119
+ // 環境変数一覧アイテム
120
+ const envItems = useMemo(() => {
121
+ if (!currentProfile)
122
+ return [];
123
+ return Object.entries(currentProfile.env).map(([key, value]) => ({
124
+ label: `${key}=${value}`,
125
+ value: key,
126
+ key,
127
+ envValue: value,
128
+ }));
129
+ }, [currentProfile]);
130
+ // OS環境変数(プロファイルで上書きされるものをハイライト)
131
+ const osEnvItems = useMemo(() => {
132
+ const profileEnvKeys = new Set(currentProfile ? Object.keys(currentProfile.env) : []);
133
+ return Object.entries(process.env)
134
+ .filter(([, value]) => value !== undefined)
135
+ .map(([key, value]) => ({
136
+ key,
137
+ value: value ?? "",
138
+ isOverwritten: profileEnvKeys.has(key),
139
+ }))
140
+ .sort((a, b) => a.key.localeCompare(b.key));
141
+ }, [currentProfile]);
142
+ // 配列サイズ変更に追従してインデックスをクランプ(削除後の範囲外アクセス防止)
143
+ useEffect(() => {
144
+ if (profileItems.length === 0) {
145
+ if (profileIndex !== 0) {
146
+ setProfileIndex(0);
147
+ }
148
+ return;
149
+ }
150
+ if (profileIndex >= profileItems.length) {
151
+ setProfileIndex(profileItems.length - 1);
152
+ }
153
+ }, [profileItems.length, profileIndex, setProfileIndex]);
154
+ useEffect(() => {
155
+ if (envItems.length === 0) {
156
+ if (envIndex !== 0) {
157
+ setEnvIndex(0);
158
+ }
159
+ return;
160
+ }
161
+ if (envIndex >= envItems.length) {
162
+ setEnvIndex(envItems.length - 1);
163
+ }
164
+ }, [envItems.length, envIndex, setEnvIndex]);
165
+ useEffect(() => {
166
+ if (osEnvItems.length === 0) {
167
+ if (osEnvIndex !== 0) {
168
+ setOsEnvIndex(0);
169
+ }
170
+ return;
171
+ }
172
+ if (osEnvIndex >= osEnvItems.length) {
173
+ setOsEnvIndex(osEnvItems.length - 1);
174
+ }
175
+ }, [osEnvItems.length, osEnvIndex, setOsEnvIndex]);
176
+ // プロファイルを選択してアクティブ化
177
+ const handleActivateProfile = useCallback(async (item) => {
178
+ try {
179
+ await setActiveProfile(item.profileName);
180
+ if (item.profileName === null) {
181
+ setSelectedProfileName(null);
182
+ setFocus("profiles");
183
+ setProfileIndex(0);
184
+ setMode("list");
185
+ return;
186
+ }
187
+ setSelectedProfileName(item.profileName);
188
+ setFocus("env"); // viewモードでは環境変数にフォーカス
189
+ setMode("view");
190
+ }
191
+ catch {
192
+ // エラー状態は useProfiles フック側で管理するため、ここでは握りつぶす
193
+ }
194
+ }, [setActiveProfile, setSelectedProfileName, setFocus, setProfileIndex]);
195
+ // 新規プロファイル作成開始
196
+ const handleStartCreateProfile = useCallback(() => {
197
+ setNewProfileName("");
198
+ setNewProfileDisplayName("");
199
+ setValidationError(null);
200
+ setMode("create-name");
201
+ }, []);
202
+ // 新規プロファイル名入力完了
203
+ const handleCreateNameSubmit = useCallback((name) => {
204
+ if (!isValidProfileName(name)) {
205
+ setValidationError("Invalid profile name. Use lowercase letters, numbers, and hyphens (must start and end with a letter or number).");
206
+ return;
207
+ }
208
+ setValidationError(null);
209
+ setNewProfileName(name);
210
+ setNewProfileDisplayName(name);
211
+ setMode("create-display");
212
+ }, []);
213
+ // 新規プロファイル作成完了
214
+ const handleCreateProfileSubmit = useCallback(async (displayName) => {
215
+ try {
216
+ await createProfile(newProfileName, {
217
+ displayName,
218
+ env: {},
219
+ });
220
+ setSelectedProfileName(newProfileName);
221
+ setFocus("env"); // viewモードでは環境変数にフォーカス
222
+ setMode("view");
223
+ }
224
+ catch {
225
+ // エラー状態は useProfiles フック側で管理するため、ここでは一覧に戻す
226
+ setMode("list");
227
+ }
228
+ }, [createProfile, newProfileName]);
229
+ // プロファイル削除確認
230
+ const handleConfirmDeleteProfile = useCallback(async (confirmed) => {
231
+ if (confirmed && selectedProfileName) {
232
+ try {
233
+ await deleteProfile(selectedProfileName);
234
+ setSelectedProfileName(null);
235
+ }
236
+ catch {
237
+ // エラー状態は useProfiles フック側で管理するため、ここでは握りつぶす
238
+ }
239
+ }
240
+ setMode("list");
241
+ }, [deleteProfile, selectedProfileName]);
242
+ // 環境変数追加開始
243
+ const handleStartAddEnv = useCallback(() => {
244
+ setNewEnvKey("");
245
+ setNewEnvValue("");
246
+ setValidationError(null);
247
+ setMode("add-env-key");
248
+ }, []);
249
+ // 環境変数キー入力完了
250
+ const handleEnvKeySubmit = useCallback((key) => {
251
+ const trimmedKey = key.trim();
252
+ if (!trimmedKey || !ENV_VAR_KEY_PATTERN.test(trimmedKey)) {
253
+ setValidationError("Invalid variable name. Use letters, numbers, and underscores (must start with a letter or underscore).");
254
+ setNewEnvKey(trimmedKey);
255
+ return;
256
+ }
257
+ setValidationError(null);
258
+ setNewEnvKey(trimmedKey);
259
+ setMode("add-env-value");
260
+ }, []);
261
+ // 環境変数追加完了
262
+ const handleEnvValueSubmit = useCallback(async (value) => {
263
+ if (selectedProfileName) {
264
+ try {
265
+ await updateEnvVar(selectedProfileName, newEnvKey, value);
266
+ }
267
+ catch {
268
+ // エラー状態は useProfiles フック側で管理するため、ここでは握りつぶす
269
+ }
270
+ }
271
+ setMode("view");
272
+ }, [updateEnvVar, selectedProfileName, newEnvKey]);
273
+ // 環境変数編集開始
274
+ const handleStartEditEnv = useCallback((key, currentValue) => {
275
+ setSelectedEnvKey(key);
276
+ setNewEnvValue(currentValue);
277
+ setMode("edit-env-value");
278
+ }, []);
279
+ // 環境変数編集完了
280
+ const handleEditEnvSubmit = useCallback(async (value) => {
281
+ if (selectedProfileName && selectedEnvKey) {
282
+ try {
283
+ await updateEnvVar(selectedProfileName, selectedEnvKey, value);
284
+ }
285
+ catch {
286
+ // エラー状態は useProfiles フック側で管理するため、ここでは握りつぶす
287
+ }
288
+ }
289
+ setMode("view");
290
+ }, [updateEnvVar, selectedProfileName, selectedEnvKey]);
291
+ // 環境変数削除確認
292
+ const handleConfirmDeleteEnv = useCallback(async (confirmed) => {
293
+ if (confirmed && selectedProfileName && selectedEnvKey) {
294
+ try {
295
+ await deleteEnvVar(selectedProfileName, selectedEnvKey);
296
+ }
297
+ catch {
298
+ // エラー状態は useProfiles フック側で管理するため、ここでは握りつぶす
299
+ }
300
+ }
301
+ setMode("view");
302
+ }, [deleteEnvVar, selectedProfileName, selectedEnvKey]);
303
+ // キーボード入力ハンドリング
304
+ useInput((input, key) => {
305
+ // 入力モード時は他のキーハンドリングをスキップ
306
+ if (mode === "create-name" ||
307
+ mode === "create-display" ||
308
+ mode === "add-env-key" ||
309
+ mode === "add-env-value" ||
310
+ mode === "edit-env-value") {
311
+ if (key.escape) {
312
+ setMode(mode.startsWith("create") ? "list" : "view");
313
+ }
314
+ return;
315
+ }
316
+ // 確認ダイアログ時は Confirm コンポーネントがハンドリング
317
+ if (mode === "confirm-delete-profile" || mode === "confirm-delete-env") {
318
+ return;
319
+ }
320
+ // Escape で戻る
321
+ if (key.escape) {
322
+ if (mode === "view") {
323
+ setMode("list");
324
+ setSelectedProfileName(null);
325
+ }
326
+ else {
327
+ onBack();
328
+ }
329
+ return;
330
+ }
331
+ // プロファイル一覧モード
332
+ if (mode === "list") {
333
+ if (input === "n") {
334
+ handleStartCreateProfile();
335
+ return;
336
+ }
337
+ if (input === "d" && profileItems.length > 0) {
338
+ const item = profileItems[profileIndex];
339
+ if (item?.profileName && item.profileName !== activeProfileName) {
340
+ setSelectedProfileName(item.profileName);
341
+ setMode("confirm-delete-profile");
342
+ }
343
+ return;
344
+ }
345
+ return;
346
+ }
347
+ // プロファイル詳細モード
348
+ if (mode === "view") {
349
+ // Tab でフォーカス切り替え (env ↔ osenv)
350
+ if (key.tab) {
351
+ setFocus((prev) => (prev === "env" ? "osenv" : "env"));
352
+ return;
353
+ }
354
+ // j/k でスクロール
355
+ if (input === "j" || key.downArrow) {
356
+ if (focus === "env") {
357
+ setEnvIndex((prev) => Math.min(prev + 1, Math.max(0, envItems.length - 1)));
358
+ }
359
+ else if (focus === "osenv") {
360
+ setOsEnvIndex((prev) => Math.min(prev + 1, Math.max(0, osEnvItems.length - 1)));
361
+ }
362
+ return;
363
+ }
364
+ if (input === "k" || key.upArrow) {
365
+ if (focus === "env") {
366
+ setEnvIndex((prev) => Math.max(prev - 1, 0));
367
+ }
368
+ else if (focus === "osenv") {
369
+ setOsEnvIndex((prev) => Math.max(prev - 1, 0));
370
+ }
371
+ return;
372
+ }
373
+ // 環境変数操作
374
+ if (focus === "env") {
375
+ if (input === "a") {
376
+ handleStartAddEnv();
377
+ return;
378
+ }
379
+ if (input === "e" && envItems.length > 0) {
380
+ const item = envItems[envIndex];
381
+ if (item) {
382
+ handleStartEditEnv(item.key, item.envValue);
383
+ }
384
+ return;
385
+ }
386
+ if (input === "d" && envItems.length > 0) {
387
+ const item = envItems[envIndex];
388
+ if (item) {
389
+ setSelectedEnvKey(item.key);
390
+ setMode("confirm-delete-env");
391
+ }
392
+ return;
393
+ }
394
+ }
395
+ }
396
+ }, { isActive: true });
397
+ // フッターアクション
398
+ const getFooterActions = () => {
399
+ if (mode === "list") {
400
+ return [
401
+ { key: "enter", description: "Select" },
402
+ { key: "n", description: "New" },
403
+ { key: "d", description: "Delete" },
404
+ { key: "esc", description: "Back" },
405
+ ];
406
+ }
407
+ if (mode === "view") {
408
+ return [
409
+ { key: "tab", description: "Switch focus" },
410
+ { key: "j/k", description: "Scroll" },
411
+ { key: "a", description: "Add env" },
412
+ { key: "e", description: "Edit env" },
413
+ { key: "d", description: "Delete env" },
414
+ { key: "esc", description: "Back" },
415
+ ];
416
+ }
417
+ return [{ key: "esc", description: "Cancel" }];
418
+ };
419
+ // ローディング表示
420
+ if (loading) {
421
+ return (React.createElement(Box, { flexDirection: "column", height: rows },
422
+ React.createElement(Header, { title: "Environment Profiles", titleColor: "magenta", version: version }),
423
+ React.createElement(Box, { flexGrow: 1, justifyContent: "center", alignItems: "center" },
424
+ React.createElement(Text, null, "Loading profiles..."))));
425
+ }
426
+ // エラー表示
427
+ if (error) {
428
+ return (React.createElement(Box, { flexDirection: "column", height: rows },
429
+ React.createElement(Header, { title: "Environment Profiles", titleColor: "magenta", version: version }),
430
+ React.createElement(Box, { flexGrow: 1, marginTop: 1 },
431
+ React.createElement(Text, { color: "red" },
432
+ "Error: ",
433
+ error.message)),
434
+ React.createElement(Footer, { actions: [{ key: "esc", description: "Back" }] })));
435
+ }
436
+ // 新規プロファイル作成:名前入力
437
+ if (mode === "create-name") {
438
+ return (React.createElement(Box, { flexDirection: "column", height: rows },
439
+ React.createElement(Header, { title: "Environment Profiles", titleColor: "magenta", version: version }),
440
+ React.createElement(Box, { flexDirection: "column", flexGrow: 1, marginTop: 1 },
441
+ React.createElement(Text, null, "Create new profile"),
442
+ React.createElement(Box, { marginTop: 1 },
443
+ React.createElement(Input, { value: newProfileName, onChange: setNewProfileName, onSubmit: handleCreateNameSubmit, label: "Profile name (lowercase, a-z0-9-):", placeholder: "development" })),
444
+ validationError && (React.createElement(Box, { marginTop: 1 },
445
+ React.createElement(Text, { color: "red" }, validationError)))),
446
+ React.createElement(Footer, { actions: getFooterActions() })));
447
+ }
448
+ // 新規プロファイル作成:表示名入力
449
+ if (mode === "create-display") {
450
+ return (React.createElement(Box, { flexDirection: "column", height: rows },
451
+ React.createElement(Header, { title: "Environment Profiles", titleColor: "magenta", version: version }),
452
+ React.createElement(Box, { flexDirection: "column", flexGrow: 1, marginTop: 1 },
453
+ React.createElement(Text, null,
454
+ "Create new profile: ",
455
+ newProfileName),
456
+ React.createElement(Box, { marginTop: 1 },
457
+ React.createElement(Input, { value: newProfileDisplayName, onChange: setNewProfileDisplayName, onSubmit: handleCreateProfileSubmit, label: "Display name:", placeholder: "Development" }))),
458
+ React.createElement(Footer, { actions: getFooterActions() })));
459
+ }
460
+ // 環境変数追加:キー入力
461
+ if (mode === "add-env-key") {
462
+ return (React.createElement(Box, { flexDirection: "column", height: rows },
463
+ React.createElement(Header, { title: "Environment Profiles", titleColor: "magenta", version: version }),
464
+ React.createElement(Box, { flexDirection: "column", flexGrow: 1, marginTop: 1 },
465
+ React.createElement(Text, null, "Add environment variable"),
466
+ React.createElement(Box, { marginTop: 1 },
467
+ React.createElement(Input, { value: newEnvKey, onChange: setNewEnvKey, onSubmit: handleEnvKeySubmit, label: "Variable name:", placeholder: "API_KEY" })),
468
+ validationError && (React.createElement(Box, { marginTop: 1 },
469
+ React.createElement(Text, { color: "red" }, validationError)))),
470
+ React.createElement(Footer, { actions: getFooterActions() })));
471
+ }
472
+ // 環境変数追加:値入力
473
+ if (mode === "add-env-value") {
474
+ return (React.createElement(Box, { flexDirection: "column", height: rows },
475
+ React.createElement(Header, { title: "Environment Profiles", titleColor: "magenta", version: version }),
476
+ React.createElement(Box, { flexDirection: "column", flexGrow: 1, marginTop: 1 },
477
+ React.createElement(Text, null,
478
+ "Add environment variable: ",
479
+ newEnvKey),
480
+ React.createElement(Box, { marginTop: 1 },
481
+ React.createElement(Input, { value: newEnvValue, onChange: setNewEnvValue, onSubmit: handleEnvValueSubmit, label: "Value:", placeholder: "your-value" }))),
482
+ React.createElement(Footer, { actions: getFooterActions() })));
483
+ }
484
+ // 環境変数編集:値入力
485
+ if (mode === "edit-env-value") {
486
+ return (React.createElement(Box, { flexDirection: "column", height: rows },
487
+ React.createElement(Header, { title: "Environment Profiles", titleColor: "magenta", version: version }),
488
+ React.createElement(Box, { flexDirection: "column", flexGrow: 1, marginTop: 1 },
489
+ React.createElement(Text, null,
490
+ "Edit environment variable: ",
491
+ selectedEnvKey),
492
+ React.createElement(Box, { marginTop: 1 },
493
+ React.createElement(Input, { value: newEnvValue, onChange: setNewEnvValue, onSubmit: handleEditEnvSubmit, label: "New value:", placeholder: "new-value" }))),
494
+ React.createElement(Footer, { actions: getFooterActions() })));
495
+ }
496
+ // プロファイル削除確認
497
+ if (mode === "confirm-delete-profile") {
498
+ const profileToDelete = selectedProfileName
499
+ ? profiles?.profiles[selectedProfileName]
500
+ : null;
501
+ return (React.createElement(Box, { flexDirection: "column", height: rows },
502
+ React.createElement(Header, { title: "Environment Profiles", titleColor: "magenta", version: version }),
503
+ React.createElement(Box, { flexDirection: "column", flexGrow: 1, marginTop: 1 },
504
+ React.createElement(Confirm, { message: `Delete profile "${profileToDelete?.displayName ?? selectedProfileName}"?`, onConfirm: handleConfirmDeleteProfile }))));
505
+ }
506
+ // 環境変数削除確認
507
+ if (mode === "confirm-delete-env") {
508
+ return (React.createElement(Box, { flexDirection: "column", height: rows },
509
+ React.createElement(Header, { title: "Environment Profiles", titleColor: "magenta", version: version }),
510
+ React.createElement(Box, { flexDirection: "column", flexGrow: 1, marginTop: 1 },
511
+ React.createElement(Confirm, { message: `Delete environment variable "${selectedEnvKey}"?`, onConfirm: handleConfirmDeleteEnv }))));
512
+ }
513
+ // プロファイル一覧
514
+ if (mode === "list") {
515
+ const hasProfiles = Boolean(profiles && Object.keys(profiles.profiles).length > 0);
516
+ return (React.createElement(Box, { flexDirection: "column", height: rows },
517
+ React.createElement(Header, { title: "Environment Profiles", titleColor: "magenta", version: version, activeProfile: activeProfileName }),
518
+ React.createElement(Box, { flexDirection: "column", flexGrow: 1, marginTop: 1 },
519
+ React.createElement(Box, { marginBottom: 1 },
520
+ React.createElement(Text, null, "Select a profile to activate (or choose \"(none)\"):")),
521
+ React.createElement(Select, { items: profileItems, onSelect: handleActivateProfile, selectedIndex: profileIndex, onSelectedIndexChange: setProfileIndex }),
522
+ !hasProfiles && (React.createElement(Box, { marginTop: 1 },
523
+ React.createElement(Text, { dimColor: true }, "No profiles. Press [n] to create one.")))),
524
+ React.createElement(Footer, { actions: getFooterActions() })));
525
+ }
526
+ // プロファイル詳細
527
+ const maxOsEnvVisible = Math.max(5, Math.floor((rows - UI_CHROME_HEIGHT) / 2));
528
+ return (React.createElement(Box, { flexDirection: "column", height: rows },
529
+ React.createElement(Header, { title: "Environment Profiles", titleColor: "magenta", version: version, activeProfile: activeProfileName }),
530
+ React.createElement(Box, { flexDirection: "column", flexGrow: 1, marginTop: 1 },
531
+ React.createElement(Box, { marginBottom: 1 },
532
+ React.createElement(Text, { bold: true }, "Profile: "),
533
+ React.createElement(Text, { color: "cyan" }, currentProfile?.displayName ?? selectedProfileName),
534
+ selectedProfileName === activeProfileName && (React.createElement(Text, { color: "green" }, " (active)"))),
535
+ currentProfile?.description && (React.createElement(Box, { marginBottom: 1 },
536
+ React.createElement(Text, { dimColor: true }, currentProfile.description))),
537
+ React.createElement(Box, { marginBottom: 1 },
538
+ React.createElement(Text, { bold: true, ...(focus === "env" ? { color: "cyan" } : {}) }, "Profile Environment Variables:")),
539
+ React.createElement(Box, { flexDirection: "column", marginLeft: 2, marginBottom: 1 }, envItems.length === 0 ? (React.createElement(Text, { dimColor: true }, "No environment variables. Press [a] to add.")) : (envItems.map((item, idx) => {
540
+ const isEnvSelected = focus === "env" && idx === envIndex;
541
+ return (React.createElement(Box, { key: item.key },
542
+ React.createElement(Text, { ...(isEnvSelected ? { color: "cyan" } : {}), inverse: isEnvSelected }, item.key),
543
+ React.createElement(Text, null, "="),
544
+ React.createElement(Text, null, item.envValue)));
545
+ }))),
546
+ React.createElement(Box, { marginBottom: 1 },
547
+ React.createElement(Text, { bold: true, ...(focus === "osenv" ? { color: "cyan" } : {}) }, "OS Environment (overwritten keys in yellow):")),
548
+ React.createElement(Box, { flexDirection: "column", marginLeft: 2, overflow: "hidden" },
549
+ osEnvItems
550
+ .slice(osEnvIndex, osEnvIndex + maxOsEnvVisible)
551
+ .map((item, idx) => {
552
+ // osEnvIndex は「選択中のOS環境変数のインデックス」であり、同時にスクロールの先頭位置でもある
553
+ // そのため、表示上は slice した先頭要素が選択状態になる
554
+ const actualIndex = osEnvIndex + idx;
555
+ const isOsEnvSelected = focus === "osenv" && actualIndex === osEnvIndex;
556
+ return (React.createElement(Box, { key: item.key },
557
+ React.createElement(Text, { ...(item.isOverwritten
558
+ ? { color: "yellow" }
559
+ : {}), inverse: isOsEnvSelected }, item.key),
560
+ React.createElement(Text, null, "="),
561
+ React.createElement(Text, { dimColor: true },
562
+ item.value.slice(0, 50),
563
+ item.value.length > 50 ? "..." : "")));
564
+ }),
565
+ osEnvItems.length > maxOsEnvVisible && (React.createElement(Text, { dimColor: true },
566
+ "... (",
567
+ osEnvIndex + 1,
568
+ "-",
569
+ Math.min(osEnvIndex + maxOsEnvVisible, osEnvItems.length),
570
+ " of",
571
+ " ",
572
+ osEnvItems.length,
573
+ ")")))),
574
+ React.createElement(Footer, { actions: getFooterActions() })));
575
+ }
576
+ //# sourceMappingURL=EnvironmentProfileScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentProfileScreen.js","sourceRoot":"","sources":["../../../../../src/cli/ui/components/screens/EnvironmentProfileScreen.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * プロファイル管理フック
3
+ *
4
+ * 環境変数プロファイルの読み込み・操作を提供します。
5
+ * @see specs/SPEC-dafff079/spec.md
6
+ */
7
+ import type { ProfilesConfig, EnvironmentProfile } from "../../../types/profiles.js";
8
+ export interface UseProfilesResult {
9
+ /** プロファイル設定(ロード中はnull) */
10
+ profiles: ProfilesConfig | null;
11
+ /** ロード中フラグ */
12
+ loading: boolean;
13
+ /** エラー(なければnull) */
14
+ error: Error | null;
15
+ /** アクティブなプロファイル名 */
16
+ activeProfileName: string | null;
17
+ /** アクティブなプロファイル設定 */
18
+ activeProfile: EnvironmentProfile | null;
19
+ /** プロファイル設定を再読み込み */
20
+ refresh: () => Promise<void>;
21
+ /** アクティブなプロファイルを設定 */
22
+ setActiveProfile: (name: string | null) => Promise<void>;
23
+ /** 新しいプロファイルを作成 */
24
+ createProfile: (name: string, profile: EnvironmentProfile) => Promise<void>;
25
+ /** プロファイルを更新 */
26
+ updateProfile: (name: string, updates: Partial<EnvironmentProfile>) => Promise<void>;
27
+ /** プロファイルを削除 */
28
+ deleteProfile: (name: string) => Promise<void>;
29
+ /** 環境変数を更新 */
30
+ updateEnvVar: (profileName: string, key: string, value: string) => Promise<void>;
31
+ /** 環境変数を削除 */
32
+ deleteEnvVar: (profileName: string, key: string) => Promise<void>;
33
+ }
34
+ /**
35
+ * プロファイル管理フック
36
+ *
37
+ * コンポーネントでプロファイルの読み込みと操作を行うためのフック。
38
+ * 初回マウント時に自動的にプロファイル設定を読み込みます。
39
+ */
40
+ export declare function useProfiles(): UseProfilesResult;
41
+ //# sourceMappingURL=useProfiles.d.ts.map