opencode-account-manager 0.4.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 (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +266 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +183 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/core/accounts.d.ts +19 -0
  8. package/dist/core/accounts.d.ts.map +1 -0
  9. package/dist/core/accounts.js +181 -0
  10. package/dist/core/accounts.js.map +1 -0
  11. package/dist/core/config-store.d.ts +48 -0
  12. package/dist/core/config-store.d.ts.map +1 -0
  13. package/dist/core/config-store.js +206 -0
  14. package/dist/core/config-store.js.map +1 -0
  15. package/dist/core/crypto.d.ts +40 -0
  16. package/dist/core/crypto.d.ts.map +1 -0
  17. package/dist/core/crypto.js +172 -0
  18. package/dist/core/crypto.js.map +1 -0
  19. package/dist/core/importers/amJson.d.ts +17 -0
  20. package/dist/core/importers/amJson.d.ts.map +1 -0
  21. package/dist/core/importers/amJson.js +131 -0
  22. package/dist/core/importers/amJson.js.map +1 -0
  23. package/dist/core/opencode-config.d.ts +92 -0
  24. package/dist/core/opencode-config.d.ts.map +1 -0
  25. package/dist/core/opencode-config.js +148 -0
  26. package/dist/core/opencode-config.js.map +1 -0
  27. package/dist/core/paths.d.ts +5 -0
  28. package/dist/core/paths.d.ts.map +1 -0
  29. package/dist/core/paths.js +38 -0
  30. package/dist/core/paths.js.map +1 -0
  31. package/dist/core/types.d.ts +74 -0
  32. package/dist/core/types.d.ts.map +1 -0
  33. package/dist/core/types.js +30 -0
  34. package/dist/core/types.js.map +1 -0
  35. package/dist/core/utils.d.ts +5 -0
  36. package/dist/core/utils.d.ts.map +1 -0
  37. package/dist/core/utils.js +35 -0
  38. package/dist/core/utils.js.map +1 -0
  39. package/dist/tui/Dashboard.d.ts +7 -0
  40. package/dist/tui/Dashboard.d.ts.map +1 -0
  41. package/dist/tui/Dashboard.js +331 -0
  42. package/dist/tui/Dashboard.js.map +1 -0
  43. package/dist/tui/components/AccountList.d.ts +18 -0
  44. package/dist/tui/components/AccountList.d.ts.map +1 -0
  45. package/dist/tui/components/AccountList.js +92 -0
  46. package/dist/tui/components/AccountList.js.map +1 -0
  47. package/dist/tui/components/Box.d.ts +11 -0
  48. package/dist/tui/components/Box.d.ts.map +1 -0
  49. package/dist/tui/components/Box.js +15 -0
  50. package/dist/tui/components/Box.js.map +1 -0
  51. package/dist/tui/components/ExportModal.d.ts +10 -0
  52. package/dist/tui/components/ExportModal.d.ts.map +1 -0
  53. package/dist/tui/components/ExportModal.js +192 -0
  54. package/dist/tui/components/ExportModal.js.map +1 -0
  55. package/dist/tui/components/FileBrowser.d.ts +12 -0
  56. package/dist/tui/components/FileBrowser.d.ts.map +1 -0
  57. package/dist/tui/components/FileBrowser.js +349 -0
  58. package/dist/tui/components/FileBrowser.js.map +1 -0
  59. package/dist/tui/components/Header.d.ts +8 -0
  60. package/dist/tui/components/Header.d.ts.map +1 -0
  61. package/dist/tui/components/Header.js +20 -0
  62. package/dist/tui/components/Header.js.map +1 -0
  63. package/dist/tui/components/ImportModal.d.ts +10 -0
  64. package/dist/tui/components/ImportModal.d.ts.map +1 -0
  65. package/dist/tui/components/ImportModal.js +215 -0
  66. package/dist/tui/components/ImportModal.js.map +1 -0
  67. package/dist/tui/components/McpServerList.d.ts +8 -0
  68. package/dist/tui/components/McpServerList.d.ts.map +1 -0
  69. package/dist/tui/components/McpServerList.js +35 -0
  70. package/dist/tui/components/McpServerList.js.map +1 -0
  71. package/dist/tui/components/Menu.d.ts +10 -0
  72. package/dist/tui/components/Menu.d.ts.map +1 -0
  73. package/dist/tui/components/Menu.js +83 -0
  74. package/dist/tui/components/Menu.js.map +1 -0
  75. package/dist/tui/components/PasswordInput.d.ts +12 -0
  76. package/dist/tui/components/PasswordInput.d.ts.map +1 -0
  77. package/dist/tui/components/PasswordInput.js +130 -0
  78. package/dist/tui/components/PasswordInput.js.map +1 -0
  79. package/dist/tui/components/ProviderList.d.ts +8 -0
  80. package/dist/tui/components/ProviderList.d.ts.map +1 -0
  81. package/dist/tui/components/ProviderList.js +37 -0
  82. package/dist/tui/components/ProviderList.js.map +1 -0
  83. package/dist/tui/components/SectionBox.d.ts +10 -0
  84. package/dist/tui/components/SectionBox.d.ts.map +1 -0
  85. package/dist/tui/components/SectionBox.js +16 -0
  86. package/dist/tui/components/SectionBox.js.map +1 -0
  87. package/dist/tui/components/StatsRow.d.ts +13 -0
  88. package/dist/tui/components/StatsRow.d.ts.map +1 -0
  89. package/dist/tui/components/StatsRow.js +18 -0
  90. package/dist/tui/components/StatsRow.js.map +1 -0
  91. package/dist/tui/components/StatusBadge.d.ts +8 -0
  92. package/dist/tui/components/StatusBadge.d.ts.map +1 -0
  93. package/dist/tui/components/StatusBadge.js +30 -0
  94. package/dist/tui/components/StatusBadge.js.map +1 -0
  95. package/dist/tui/components/index.d.ts +14 -0
  96. package/dist/tui/components/index.d.ts.map +1 -0
  97. package/dist/tui/components/index.js +32 -0
  98. package/dist/tui/components/index.js.map +1 -0
  99. package/dist/tui/index.d.ts +5 -0
  100. package/dist/tui/index.d.ts.map +1 -0
  101. package/dist/tui/index.js +13 -0
  102. package/dist/tui/index.js.map +1 -0
  103. package/docs/BLUEPRINT.md +476 -0
  104. package/docs/ROADMAP.md +74 -0
  105. package/package.json +38 -0
  106. package/src/cli.ts +207 -0
  107. package/src/core/accounts.ts +215 -0
  108. package/src/core/config-store.ts +212 -0
  109. package/src/core/crypto.ts +162 -0
  110. package/src/core/importers/amJson.ts +185 -0
  111. package/src/core/opencode-config.ts +217 -0
  112. package/src/core/paths.ts +32 -0
  113. package/src/core/types.ts +118 -0
  114. package/src/core/utils.ts +28 -0
  115. package/src/tui/Dashboard.tsx +431 -0
  116. package/src/tui/components/AccountList.tsx +155 -0
  117. package/src/tui/components/Box.tsx +37 -0
  118. package/src/tui/components/ExportModal.tsx +255 -0
  119. package/src/tui/components/FileBrowser.tsx +393 -0
  120. package/src/tui/components/Header.tsx +26 -0
  121. package/src/tui/components/ImportModal.tsx +288 -0
  122. package/src/tui/components/McpServerList.tsx +67 -0
  123. package/src/tui/components/Menu.tsx +103 -0
  124. package/src/tui/components/PasswordInput.tsx +159 -0
  125. package/src/tui/components/ProviderList.tsx +61 -0
  126. package/src/tui/components/SectionBox.tsx +35 -0
  127. package/src/tui/components/StatsRow.tsx +33 -0
  128. package/src/tui/components/StatusBadge.tsx +33 -0
  129. package/src/tui/components/index.ts +13 -0
  130. package/src/tui/index.tsx +11 -0
  131. package/tsconfig.json +20 -0
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ExportModal = ExportModal;
37
+ const react_1 = __importStar(require("react"));
38
+ const ink_1 = require("ink");
39
+ const path = __importStar(require("path"));
40
+ const FileBrowser_1 = require("./FileBrowser");
41
+ const PasswordInput_1 = require("./PasswordInput");
42
+ const crypto_1 = require("../../core/crypto");
43
+ const utils_1 = require("../../core/utils");
44
+ const config_store_1 = require("../../core/config-store");
45
+ function ExportModal({ accounts, onComplete, onCancel }) {
46
+ const [step, setStep] = (0, react_1.useState)("format");
47
+ const [format, setFormat] = (0, react_1.useState)("encrypted");
48
+ const [folder, setFolder] = (0, react_1.useState)("");
49
+ const [exportedPath, setExportedPath] = (0, react_1.useState)("");
50
+ const [error, setError] = (0, react_1.useState)("");
51
+ // Generate filename with timestamp
52
+ const generateFilename = (ext) => {
53
+ const date = new Date();
54
+ const dateStr = date.toISOString().split("T")[0]; // YYYY-MM-DD
55
+ return `opencode-accounts-${dateStr}${ext}`;
56
+ };
57
+ // Handle format selection
58
+ (0, ink_1.useInput)((input, key) => {
59
+ if (step !== "format")
60
+ return;
61
+ if (key.escape) {
62
+ onCancel();
63
+ return;
64
+ }
65
+ if (input === "1") {
66
+ setFormat("encrypted");
67
+ setStep("folder");
68
+ }
69
+ else if (input === "2") {
70
+ setFormat("plain");
71
+ setStep("folder");
72
+ }
73
+ });
74
+ // Handle folder selection
75
+ const handleFolderSelect = (selectedFolder) => {
76
+ setFolder(selectedFolder);
77
+ (0, config_store_1.updateLastExportFolder)(selectedFolder);
78
+ if (format === "encrypted") {
79
+ setStep("password");
80
+ }
81
+ else {
82
+ // Plain export - no password needed
83
+ doExport(selectedFolder, undefined);
84
+ }
85
+ };
86
+ // Handle password submission
87
+ const handlePasswordSubmit = (password) => {
88
+ doExport(folder, password);
89
+ };
90
+ // Do the actual export
91
+ const doExport = (targetFolder, password) => {
92
+ setStep("exporting");
93
+ try {
94
+ const ext = format === "encrypted" ? ".ocam" : ".json";
95
+ const filename = generateFilename(ext);
96
+ const filePath = path.join(targetFolder, filename);
97
+ if (format === "encrypted" && password) {
98
+ // Create encrypted export
99
+ const payload = {
100
+ version: 1,
101
+ accounts: accounts,
102
+ exportedAt: Date.now(),
103
+ };
104
+ const encrypted = (0, crypto_1.encrypt)(payload, password);
105
+ const encryptedFile = {
106
+ version: 1,
107
+ format: "encrypted",
108
+ algorithm: "aes-256-gcm",
109
+ salt: encrypted.salt,
110
+ iv: encrypted.iv,
111
+ authTag: encrypted.authTag,
112
+ data: encrypted.data,
113
+ exportedAt: Date.now(),
114
+ accountCount: accounts.length,
115
+ exportedFrom: "opencode-account-manager",
116
+ };
117
+ (0, utils_1.writeJsonFile)(filePath, encryptedFile);
118
+ }
119
+ else {
120
+ // Plain export
121
+ const plainFile = {
122
+ version: 1,
123
+ exportedAt: Date.now(),
124
+ exportedFrom: "opencode-account-manager",
125
+ accounts: accounts,
126
+ };
127
+ (0, utils_1.writeJsonFile)(filePath, plainFile);
128
+ }
129
+ setExportedPath(filePath);
130
+ setStep("success");
131
+ // Auto-complete after 2 seconds
132
+ setTimeout(() => {
133
+ onComplete(filePath);
134
+ }, 2000);
135
+ }
136
+ catch (err) {
137
+ setError(err instanceof Error ? err.message : "Unknown error");
138
+ setStep("error");
139
+ }
140
+ };
141
+ // Handle success/error dismissal
142
+ (0, ink_1.useInput)((input, key) => {
143
+ if (step === "success" || step === "error") {
144
+ if (key.return || key.escape) {
145
+ if (step === "success") {
146
+ onComplete(exportedPath);
147
+ }
148
+ else {
149
+ onCancel();
150
+ }
151
+ }
152
+ }
153
+ });
154
+ return (react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
155
+ step === "format" && (react_1.default.createElement(ink_1.Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1 },
156
+ react_1.default.createElement(ink_1.Text, { bold: true, color: "cyan" },
157
+ "EXPORT ",
158
+ accounts.length,
159
+ " ACCOUNTS"),
160
+ react_1.default.createElement(ink_1.Box, { marginY: 1, flexDirection: "column" },
161
+ react_1.default.createElement(ink_1.Text, null, "Select export format:"),
162
+ react_1.default.createElement(ink_1.Box, { marginTop: 1 },
163
+ react_1.default.createElement(ink_1.Text, { color: "green" }, "[1] Encrypted (.ocam)"),
164
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, " - Password protected, recommended")),
165
+ react_1.default.createElement(ink_1.Box, null,
166
+ react_1.default.createElement(ink_1.Text, { color: "yellow" }, "[2] Plain JSON"),
167
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, " - No encryption (tokens visible!)"))),
168
+ react_1.default.createElement(ink_1.Box, { marginTop: 1 },
169
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, "[1-2] Select [Esc] Cancel")))),
170
+ step === "folder" && (react_1.default.createElement(FileBrowser_1.FileBrowser, { mode: "folder", initialPath: (0, config_store_1.getLastExportFolder)(), title: `Export to folder (${format === "encrypted" ? ".ocam" : ".json"})`, onSelect: handleFolderSelect, onCancel: onCancel })),
171
+ step === "password" && (react_1.default.createElement(PasswordInput_1.PasswordInput, { mode: "confirm", title: "Set Export Password", subtitle: `${accounts.length} accounts`, warning: "Remember this password! Without it, you cannot recover your accounts.", onSubmit: handlePasswordSubmit, onCancel: () => setStep("folder") })),
172
+ step === "exporting" && (react_1.default.createElement(ink_1.Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1 },
173
+ react_1.default.createElement(ink_1.Text, { color: "cyan" }, "Exporting..."))),
174
+ step === "success" && (react_1.default.createElement(ink_1.Box, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 2, paddingY: 1 },
175
+ react_1.default.createElement(ink_1.Text, { bold: true, color: "green" }, "\u2713 Export Successful!"),
176
+ react_1.default.createElement(ink_1.Box, { marginTop: 1 },
177
+ react_1.default.createElement(ink_1.Text, null,
178
+ "Exported ",
179
+ accounts.length,
180
+ " accounts to:")),
181
+ react_1.default.createElement(ink_1.Box, null,
182
+ react_1.default.createElement(ink_1.Text, { color: "cyan" }, exportedPath)),
183
+ react_1.default.createElement(ink_1.Box, { marginTop: 1 },
184
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, "[Enter] Close")))),
185
+ step === "error" && (react_1.default.createElement(ink_1.Box, { flexDirection: "column", borderStyle: "round", borderColor: "red", paddingX: 2, paddingY: 1 },
186
+ react_1.default.createElement(ink_1.Text, { bold: true, color: "red" }, "\u2717 Export Failed"),
187
+ react_1.default.createElement(ink_1.Box, { marginTop: 1 },
188
+ react_1.default.createElement(ink_1.Text, { color: "red" }, error)),
189
+ react_1.default.createElement(ink_1.Box, { marginTop: 1 },
190
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, "[Enter] Close"))))));
191
+ }
192
+ //# sourceMappingURL=ExportModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportModal.js","sourceRoot":"","sources":["../../../src/tui/components/ExportModal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ interface FileBrowserProps {
3
+ mode: "folder" | "file";
4
+ initialPath?: string;
5
+ extensions?: string[];
6
+ title?: string;
7
+ onSelect: (selectedPath: string) => void;
8
+ onCancel: () => void;
9
+ }
10
+ export declare function FileBrowser({ mode, initialPath, extensions, title, onSelect, onCancel, }: FileBrowserProps): React.JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=FileBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileBrowser.d.ts","sourceRoot":"","sources":["../../../src/tui/components/FileBrowser.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,UAAU,gBAAgB;IACxB,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAYD,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,WAAW,EACX,UAAe,EACf,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE,gBAAgB,qBAwWlB"}
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.FileBrowser = FileBrowser;
37
+ const react_1 = __importStar(require("react"));
38
+ const ink_1 = require("ink");
39
+ const fs = __importStar(require("fs"));
40
+ const path = __importStar(require("path"));
41
+ const config_store_1 = require("../../core/config-store");
42
+ function FileBrowser({ mode, initialPath, extensions = [], title, onSelect, onCancel, }) {
43
+ const [currentPath, setCurrentPath] = (0, react_1.useState)(initialPath || process.cwd());
44
+ const [items, setItems] = (0, react_1.useState)([]);
45
+ const [selectedIndex, setSelectedIndex] = (0, react_1.useState)(0);
46
+ const [viewMode, setViewMode] = (0, react_1.useState)("quick");
47
+ const [inputPath, setInputPath] = (0, react_1.useState)("");
48
+ const [error, setError] = (0, react_1.useState)(null);
49
+ const [quickLocations, setQuickLocations] = (0, react_1.useState)([]);
50
+ // Load quick locations on mount
51
+ (0, react_1.useEffect)(() => {
52
+ setQuickLocations((0, config_store_1.getQuickLocations)());
53
+ }, []);
54
+ // Load directory contents when path changes
55
+ (0, react_1.useEffect)(() => {
56
+ if (viewMode !== "browse")
57
+ return;
58
+ try {
59
+ if (!fs.existsSync(currentPath)) {
60
+ setError(`Path not found: ${currentPath}`);
61
+ setItems([]);
62
+ return;
63
+ }
64
+ const stat = fs.statSync(currentPath);
65
+ if (!stat.isDirectory()) {
66
+ setError("Not a directory");
67
+ setItems([]);
68
+ return;
69
+ }
70
+ const entries = fs.readdirSync(currentPath, { withFileTypes: true });
71
+ const fileItems = [];
72
+ // Add parent directory
73
+ const parentPath = path.dirname(currentPath);
74
+ if (parentPath !== currentPath) {
75
+ fileItems.push({
76
+ name: "..",
77
+ isDirectory: true,
78
+ path: parentPath,
79
+ });
80
+ }
81
+ // Add directories and files
82
+ for (const entry of entries) {
83
+ const fullPath = path.join(currentPath, entry.name);
84
+ const isDir = entry.isDirectory();
85
+ // Skip hidden files/folders (starting with .)
86
+ if (entry.name.startsWith("."))
87
+ continue;
88
+ // In file mode, filter by extension
89
+ if (mode === "file" && !isDir) {
90
+ if (extensions.length > 0) {
91
+ const ext = path.extname(entry.name).toLowerCase();
92
+ if (!extensions.includes(ext))
93
+ continue;
94
+ }
95
+ }
96
+ // In folder mode, only show directories
97
+ if (mode === "folder" && !isDir)
98
+ continue;
99
+ try {
100
+ const stat = fs.statSync(fullPath);
101
+ fileItems.push({
102
+ name: entry.name,
103
+ isDirectory: isDir,
104
+ path: fullPath,
105
+ size: stat.size,
106
+ mtime: stat.mtime,
107
+ });
108
+ }
109
+ catch {
110
+ // Skip files we can't stat
111
+ }
112
+ }
113
+ // Sort: directories first, then files
114
+ fileItems.sort((a, b) => {
115
+ if (a.name === "..")
116
+ return -1;
117
+ if (b.name === "..")
118
+ return 1;
119
+ if (a.isDirectory && !b.isDirectory)
120
+ return -1;
121
+ if (!a.isDirectory && b.isDirectory)
122
+ return 1;
123
+ return a.name.localeCompare(b.name);
124
+ });
125
+ setItems(fileItems);
126
+ setSelectedIndex(0);
127
+ setError(null);
128
+ }
129
+ catch (err) {
130
+ setError(`Error reading directory: ${err}`);
131
+ setItems([]);
132
+ }
133
+ }, [currentPath, viewMode, mode, extensions]);
134
+ (0, ink_1.useInput)((input, key) => {
135
+ // Handle escape
136
+ if (key.escape) {
137
+ if (viewMode === "input") {
138
+ setViewMode("quick");
139
+ setInputPath("");
140
+ }
141
+ else {
142
+ onCancel();
143
+ }
144
+ return;
145
+ }
146
+ // Handle input mode
147
+ if (viewMode === "input") {
148
+ if (key.return) {
149
+ // Try to navigate to input path
150
+ const trimmed = inputPath.trim();
151
+ if (trimmed) {
152
+ if (fs.existsSync(trimmed)) {
153
+ const stat = fs.statSync(trimmed);
154
+ if (mode === "folder" && stat.isDirectory()) {
155
+ onSelect(trimmed);
156
+ }
157
+ else if (mode === "file" && stat.isFile()) {
158
+ onSelect(trimmed);
159
+ }
160
+ else if (stat.isDirectory()) {
161
+ setCurrentPath(trimmed);
162
+ setViewMode("browse");
163
+ }
164
+ else {
165
+ setError("Invalid path for this mode");
166
+ }
167
+ }
168
+ else {
169
+ setError("Path does not exist");
170
+ }
171
+ }
172
+ return;
173
+ }
174
+ if (key.backspace || key.delete) {
175
+ setInputPath(prev => prev.slice(0, -1));
176
+ return;
177
+ }
178
+ if (input && !key.ctrl && !key.meta) {
179
+ setInputPath(prev => prev + input);
180
+ return;
181
+ }
182
+ return;
183
+ }
184
+ // Handle quick location mode
185
+ if (viewMode === "quick") {
186
+ // Number keys for quick locations
187
+ const num = parseInt(input, 10);
188
+ if (!isNaN(num) && num >= 1 && num <= quickLocations.length) {
189
+ const loc = quickLocations[num - 1];
190
+ if (mode === "folder") {
191
+ onSelect(loc.path);
192
+ }
193
+ else {
194
+ setCurrentPath(loc.path);
195
+ setViewMode("browse");
196
+ }
197
+ return;
198
+ }
199
+ // 'p' for paste path
200
+ if (input.toLowerCase() === "p") {
201
+ setViewMode("input");
202
+ return;
203
+ }
204
+ // 'b' for browse
205
+ if (input.toLowerCase() === "b") {
206
+ setViewMode("browse");
207
+ return;
208
+ }
209
+ // Arrow keys to navigate quick locations
210
+ if (key.upArrow) {
211
+ setSelectedIndex(prev => Math.max(0, prev - 1));
212
+ }
213
+ if (key.downArrow) {
214
+ setSelectedIndex(prev => Math.min(quickLocations.length - 1, prev + 1));
215
+ }
216
+ if (key.return) {
217
+ const loc = quickLocations[selectedIndex];
218
+ if (loc) {
219
+ if (mode === "folder") {
220
+ onSelect(loc.path);
221
+ }
222
+ else {
223
+ setCurrentPath(loc.path);
224
+ setViewMode("browse");
225
+ }
226
+ }
227
+ }
228
+ return;
229
+ }
230
+ // Handle browse mode
231
+ if (viewMode === "browse") {
232
+ if (key.upArrow) {
233
+ setSelectedIndex(prev => Math.max(0, prev - 1));
234
+ }
235
+ if (key.downArrow) {
236
+ setSelectedIndex(prev => Math.min(items.length - 1, prev + 1));
237
+ }
238
+ if (key.return) {
239
+ const item = items[selectedIndex];
240
+ if (!item)
241
+ return;
242
+ if (item.isDirectory) {
243
+ if (mode === "folder") {
244
+ // In folder mode, enter selects current folder
245
+ // Navigate into with right arrow
246
+ onSelect(item.path === path.dirname(currentPath) ? currentPath : item.path);
247
+ }
248
+ else {
249
+ // In file mode, navigate into directory
250
+ setCurrentPath(item.path);
251
+ }
252
+ }
253
+ else {
254
+ // Select file
255
+ onSelect(item.path);
256
+ }
257
+ }
258
+ if (key.rightArrow) {
259
+ const item = items[selectedIndex];
260
+ if (item?.isDirectory && item.name !== "..") {
261
+ setCurrentPath(item.path);
262
+ }
263
+ }
264
+ if (key.leftArrow) {
265
+ const parent = path.dirname(currentPath);
266
+ if (parent !== currentPath) {
267
+ setCurrentPath(parent);
268
+ }
269
+ }
270
+ // 'p' for paste path
271
+ if (input.toLowerCase() === "p") {
272
+ setViewMode("input");
273
+ return;
274
+ }
275
+ // 'q' for quick locations
276
+ if (input.toLowerCase() === "q") {
277
+ setViewMode("quick");
278
+ return;
279
+ }
280
+ }
281
+ });
282
+ const formatSize = (bytes) => {
283
+ if (bytes === undefined)
284
+ return "";
285
+ if (bytes < 1024)
286
+ return `${bytes}B`;
287
+ if (bytes < 1024 * 1024)
288
+ return `${(bytes / 1024).toFixed(1)}K`;
289
+ return `${(bytes / (1024 * 1024)).toFixed(1)}M`;
290
+ };
291
+ const truncatePath = (p, maxLen) => {
292
+ if (p.length <= maxLen)
293
+ return p;
294
+ return "..." + p.slice(-(maxLen - 3));
295
+ };
296
+ return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1 },
297
+ react_1.default.createElement(ink_1.Box, { marginBottom: 1 },
298
+ react_1.default.createElement(ink_1.Text, { bold: true, color: "cyan" }, title || (mode === "folder" ? "Select Folder" : "Select File"))),
299
+ react_1.default.createElement(ink_1.Box, { marginBottom: 1 },
300
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, "Path: "),
301
+ react_1.default.createElement(ink_1.Text, null, truncatePath(currentPath, 50))),
302
+ error && (react_1.default.createElement(ink_1.Box, { marginBottom: 1 },
303
+ react_1.default.createElement(ink_1.Text, { color: "red" },
304
+ "\u2717 ",
305
+ error))),
306
+ viewMode === "quick" && (react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
307
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, "Quick Locations:"),
308
+ quickLocations.map((loc, index) => (react_1.default.createElement(ink_1.Box, { key: loc.path },
309
+ react_1.default.createElement(ink_1.Text, { color: index === selectedIndex ? "yellow" : "white" },
310
+ index === selectedIndex ? "> " : " ",
311
+ "[",
312
+ index + 1,
313
+ "] ",
314
+ loc.label),
315
+ react_1.default.createElement(ink_1.Text, { dimColor: true },
316
+ " (",
317
+ truncatePath(loc.path, 30),
318
+ ")")))),
319
+ react_1.default.createElement(ink_1.Box, { marginTop: 1 },
320
+ react_1.default.createElement(ink_1.Text, { dimColor: true },
321
+ "[1-",
322
+ quickLocations.length,
323
+ "] Select [B] Browse [P] Paste path [Esc] Cancel")))),
324
+ viewMode === "browse" && (react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
325
+ react_1.default.createElement(ink_1.Box, { flexDirection: "column", height: 10 }, items.slice(Math.max(0, selectedIndex - 4), Math.max(10, selectedIndex + 6)).map((item, displayIndex) => {
326
+ const actualIndex = Math.max(0, selectedIndex - 4) + displayIndex;
327
+ const isSelected = actualIndex === selectedIndex;
328
+ return (react_1.default.createElement(ink_1.Box, { key: item.path },
329
+ react_1.default.createElement(ink_1.Text, { color: isSelected ? "yellow" : "white" },
330
+ isSelected ? "> " : " ",
331
+ item.isDirectory ? "📁 " : "📄 ",
332
+ item.name),
333
+ !item.isDirectory && (react_1.default.createElement(ink_1.Text, { dimColor: true },
334
+ " (",
335
+ formatSize(item.size),
336
+ ")"))));
337
+ })),
338
+ react_1.default.createElement(ink_1.Box, { marginTop: 1 },
339
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, "[\u2191\u2193] Navigate [Enter] Select [\u2190\u2192] Navigate dirs [Q] Quick [P] Paste [Esc] Cancel")))),
340
+ viewMode === "input" && (react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
341
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, "Paste or type path:"),
342
+ react_1.default.createElement(ink_1.Box, { borderStyle: "single", borderColor: "yellow", paddingX: 1, marginY: 1 },
343
+ react_1.default.createElement(ink_1.Text, null,
344
+ inputPath,
345
+ react_1.default.createElement(ink_1.Text, { color: "yellow" }, "\u258C"))),
346
+ react_1.default.createElement(ink_1.Box, null,
347
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, "[Enter] Confirm [Esc] Back"))))));
348
+ }
349
+ //# sourceMappingURL=FileBrowser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileBrowser.js","sourceRoot":"","sources":["../../../src/tui/components/FileBrowser.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ interface HeaderProps {
3
+ title?: string;
4
+ subtitle?: string;
5
+ }
6
+ export declare function Header({ title, subtitle, }: HeaderProps): React.JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,MAAM,CAAC,EACrB,KAAkC,EAClC,QAAQ,GACT,EAAE,WAAW,qBAcb"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Header = Header;
7
+ const react_1 = __importDefault(require("react"));
8
+ const ink_1 = require("ink");
9
+ function Header({ title = "OpenCode Account Manager", subtitle, }) {
10
+ return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", marginBottom: 1 },
11
+ react_1.default.createElement(ink_1.Box, null,
12
+ react_1.default.createElement(ink_1.Text, { bold: true, color: "cyan" },
13
+ "* ",
14
+ title),
15
+ subtitle && react_1.default.createElement(ink_1.Text, { dimColor: true },
16
+ " - ",
17
+ subtitle)),
18
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")));
19
+ }
20
+ //# sourceMappingURL=Header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/tui/components/Header.tsx"],"names":[],"mappings":";;;;;AAQA,wBAiBC;AAzBD,kDAA0B;AAC1B,6BAAgC;AAOhC,SAAgB,MAAM,CAAC,EACrB,KAAK,GAAG,0BAA0B,EAClC,QAAQ,GACI;IACZ,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC;QACzC,8BAAC,SAAG;YACF,8BAAC,UAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM;;gBAClB,KAAK,CACH;YACN,QAAQ,IAAI,8BAAC,UAAI,IAAC,QAAQ;;gBAAK,QAAQ,CAAQ,CAC5C;QACN,8BAAC,UAAI,IAAC,QAAQ,6YAEP,CACH,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { Account } from "../../core/types";
3
+ interface ImportModalProps {
4
+ existingAccounts: Account[];
5
+ onComplete: (accounts: Account[], newCount: number, overwrittenCount: number) => void;
6
+ onCancel: () => void;
7
+ }
8
+ export declare function ImportModal({ existingAccounts, onComplete, onCancel }: ImportModalProps): React.JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=ImportModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImportModal.d.ts","sourceRoot":"","sources":["../../../src/tui/components/ImportModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAMxC,OAAO,EACL,OAAO,EAKR,MAAM,kBAAkB,CAAC;AAK1B,UAAU,gBAAgB;IACxB,gBAAgB,EAAE,OAAO,EAAE,CAAC;IAC5B,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IACtF,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AASD,wBAAgB,WAAW,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,gBAAgB,qBAiQvF"}