opencode-account-manager 0.4.4 → 0.5.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/dist/cli.js CHANGED
@@ -35,7 +35,7 @@ const program = new commander_1.Command();
35
35
  program
36
36
  .name("ocam")
37
37
  .description("OpenCode Account Manager - TUI dashboard and CLI for managing accounts")
38
- .version("0.4.4");
38
+ .version("0.5.0");
39
39
  // Default command - show dashboard
40
40
  program
41
41
  .command("dashboard", { isDefault: true })
@@ -1 +1 @@
1
- {"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../src/tui/Dashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AA8BnD,UAAU,cAAc;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAaD,wBAAgB,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,cAAc,qBA4avD"}
1
+ {"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../src/tui/Dashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AA8BnD,UAAU,cAAc;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAiBD,wBAAgB,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,cAAc,qBAwcvD"}
@@ -58,10 +58,9 @@ function Dashboard({ pluginPath }) {
58
58
  const [accounts, setAccounts] = (0, react_1.useState)([]);
59
59
  const [summary, setSummary] = (0, react_1.useState)({ total: 0, available: 0, limited: 0 });
60
60
  const [message, setMessage] = (0, react_1.useState)(null);
61
- // UI state
62
- const [activeSection, setActiveSection] = (0, react_1.useState)("providers");
63
- const [selectMode, setSelectMode] = (0, react_1.useState)(false);
64
- const [selectedIndex, setSelectedIndex] = (0, react_1.useState)(0);
61
+ // UI state - simplified
62
+ const [expandedSection, setExpandedSection] = (0, react_1.useState)("accounts");
63
+ const [navIndex, setNavIndex] = (0, react_1.useState)(0); // Current navigation index
65
64
  const [checkedEmails, setCheckedEmails] = (0, react_1.useState)(new Set());
66
65
  // Modal state
67
66
  const [activeModal, setActiveModal] = (0, react_1.useState)("none");
@@ -78,7 +77,6 @@ function Dashboard({ pluginPath }) {
78
77
  setAccounts(file.accounts);
79
78
  setSummary((0, accounts_1.summarizeAccounts)(file.accounts));
80
79
  setCheckedEmails(new Set());
81
- setSelectedIndex(0);
82
80
  };
83
81
  const refresh = () => {
84
82
  loadOpencodeConfig();
@@ -89,92 +87,165 @@ function Dashboard({ pluginPath }) {
89
87
  loadOpencodeConfig();
90
88
  loadAccounts();
91
89
  }, []);
92
- // Keyboard navigation (only when no modal is open)
90
+ // Build navigation items list
91
+ const buildNavItems = () => {
92
+ const items = [
93
+ { type: "section", id: "providers", label: "PROVIDERS" },
94
+ { type: "section", id: "accounts", label: "ACCOUNTS" },
95
+ ];
96
+ // If accounts section is expanded, add account items
97
+ if (expandedSection === "accounts") {
98
+ accounts.forEach((acc, index) => {
99
+ items.push({ type: "account", index, email: acc.email });
100
+ });
101
+ }
102
+ items.push({ type: "section", id: "mcp", label: "MCP SERVERS" });
103
+ return items;
104
+ };
105
+ const navItems = buildNavItems();
106
+ // Palette actions
107
+ const paletteActions = [
108
+ { id: "refresh", label: "Refresh", shortcut: "R" },
109
+ { id: "export", label: "Export All Accounts", shortcut: "E" },
110
+ { id: "import", label: "Import from File", shortcut: "I" },
111
+ { id: "import-am", label: "Import from Antigravity Manager", shortcut: "A" },
112
+ ...(checkedEmails.size > 0 ? [
113
+ { id: "export-selected", label: `Export Selected (${checkedEmails.size})`, shortcut: "X" },
114
+ { id: "enable-selected", label: `Enable Selected (${checkedEmails.size})` },
115
+ { id: "disable-selected", label: `Disable Selected (${checkedEmails.size})` },
116
+ { id: "delete-selected", label: `Delete Selected (${checkedEmails.size})`, shortcut: "Del" },
117
+ { id: "clear-selection", label: "Clear Selection", shortcut: "N" },
118
+ ] : []),
119
+ { id: "select-all", label: "Select All Accounts", shortcut: "Ctrl+A" },
120
+ { id: "quit", label: "Quit", shortcut: "Q" },
121
+ ];
122
+ // Keyboard navigation
93
123
  (0, ink_1.useInput)((input, key) => {
124
+ // Handle palette separately
125
+ if (activeModal === "palette")
126
+ return;
94
127
  if (activeModal !== "none")
95
128
  return;
96
- // Section switching with Tab or Left/Right arrows
97
- if (key.tab || key.rightArrow) {
98
- setActiveSection(prev => {
99
- if (prev === "providers")
100
- return "accounts";
101
- if (prev === "accounts")
102
- return "mcp";
103
- return "providers";
104
- });
105
- if (!key.rightArrow || activeSection !== "accounts") {
106
- setSelectMode(false);
107
- }
129
+ // Open palette with Ctrl+P or P
130
+ if ((key.ctrl && input === "p") || input === "p" || input === "P") {
131
+ setActiveModal("palette");
108
132
  return;
109
133
  }
110
- if (key.leftArrow) {
111
- setActiveSection(prev => {
112
- if (prev === "mcp")
113
- return "accounts";
114
- if (prev === "accounts")
115
- return "providers";
116
- return "mcp";
117
- });
118
- if (activeSection !== "accounts") {
119
- setSelectMode(false);
120
- }
134
+ // Quick shortcuts
135
+ if (input === "q" || input === "Q") {
136
+ exit();
121
137
  return;
122
138
  }
123
- // Number keys for section switching
124
- if (input === "1") {
125
- setActiveSection("providers");
126
- setSelectMode(false);
139
+ if (input === "r" || input === "R") {
140
+ refresh();
127
141
  return;
128
142
  }
129
- if (input === "2") {
130
- setActiveSection("accounts");
143
+ // Navigate up
144
+ if (key.upArrow) {
145
+ setNavIndex(prev => Math.max(0, prev - 1));
131
146
  return;
132
147
  }
133
- if (input === "3") {
134
- setActiveSection("mcp");
135
- setSelectMode(false);
148
+ // Navigate down
149
+ if (key.downArrow) {
150
+ setNavIndex(prev => Math.min(navItems.length - 1, prev + 1));
136
151
  return;
137
152
  }
138
- // Up/Down arrows for list navigation in accounts section
139
- if (activeSection === "accounts") {
140
- if (key.upArrow) {
141
- if (!selectMode) {
142
- setSelectMode(true);
143
- setSelectedIndex(0);
144
- }
145
- else {
146
- setSelectedIndex(prev => Math.max(0, prev - 1));
147
- }
148
- return;
153
+ // Enter to expand/collapse section or toggle account
154
+ if (key.return) {
155
+ const currentItem = navItems[navIndex];
156
+ if (currentItem?.type === "section") {
157
+ setExpandedSection(currentItem.id);
158
+ // Reset nav index to stay on section header
149
159
  }
150
- if (key.downArrow) {
151
- if (!selectMode) {
152
- setSelectMode(true);
153
- setSelectedIndex(0);
154
- }
155
- else {
156
- setSelectedIndex(prev => Math.min(accounts.length - 1, prev + 1));
157
- }
158
- return;
160
+ else if (currentItem?.type === "account") {
161
+ // Toggle selection
162
+ const email = currentItem.email;
163
+ setCheckedEmails(prev => {
164
+ const next = new Set(prev);
165
+ if (next.has(email)) {
166
+ next.delete(email);
167
+ }
168
+ else {
169
+ next.add(email);
170
+ }
171
+ return next;
172
+ });
159
173
  }
160
- // Space to toggle selection in select mode
161
- if (selectMode && input === " ") {
162
- const email = accounts[selectedIndex]?.email;
163
- if (email) {
164
- setCheckedEmails(prev => {
165
- const next = new Set(prev);
166
- if (next.has(email)) {
167
- next.delete(email);
168
- }
169
- else {
170
- next.add(email);
171
- }
172
- return next;
173
- });
174
- }
174
+ return;
175
+ }
176
+ // Space to toggle selection
177
+ if (input === " ") {
178
+ const currentItem = navItems[navIndex];
179
+ if (currentItem?.type === "account") {
180
+ const email = currentItem.email;
181
+ setCheckedEmails(prev => {
182
+ const next = new Set(prev);
183
+ if (next.has(email)) {
184
+ next.delete(email);
185
+ }
186
+ else {
187
+ next.add(email);
188
+ }
189
+ return next;
190
+ });
175
191
  }
192
+ return;
193
+ }
194
+ // Escape to clear selection
195
+ if (key.escape) {
196
+ if (checkedEmails.size > 0) {
197
+ setCheckedEmails(new Set());
198
+ showMessage("Selection cleared", 1500);
199
+ }
200
+ return;
176
201
  }
177
202
  });
203
+ // Handle palette action
204
+ const handlePaletteAction = (actionId) => {
205
+ setActiveModal("none");
206
+ switch (actionId) {
207
+ case "refresh":
208
+ refresh();
209
+ break;
210
+ case "export":
211
+ setActiveModal("export");
212
+ break;
213
+ case "import":
214
+ setActiveModal("import");
215
+ break;
216
+ case "import-am":
217
+ handleImportAM();
218
+ break;
219
+ case "export-selected":
220
+ if (checkedEmails.size > 0) {
221
+ setActiveModal("export-selected");
222
+ }
223
+ else {
224
+ showMessage("No accounts selected", 2000);
225
+ }
226
+ break;
227
+ case "enable-selected":
228
+ handleEnableSelected();
229
+ break;
230
+ case "disable-selected":
231
+ handleDisableSelected();
232
+ break;
233
+ case "delete-selected":
234
+ handleDeleteSelected();
235
+ break;
236
+ case "select-all":
237
+ setCheckedEmails(new Set(accounts.map(a => a.email)));
238
+ showMessage(`Selected ${accounts.length} accounts`, 2000);
239
+ break;
240
+ case "clear-selection":
241
+ setCheckedEmails(new Set());
242
+ showMessage("Selection cleared", 1500);
243
+ break;
244
+ case "quit":
245
+ exit();
246
+ break;
247
+ }
248
+ };
178
249
  // Export completion handler
179
250
  const handleExportComplete = (filePath) => {
180
251
  setActiveModal("none");
@@ -182,7 +253,6 @@ function Dashboard({ pluginPath }) {
182
253
  };
183
254
  // Import completion handler
184
255
  const handleImportComplete = (importedAccounts, newCount, overwrittenCount) => {
185
- // Merge imported accounts with existing (overwrite mode)
186
256
  const file = safeReadPluginFile(resolvedPath);
187
257
  const merged = (0, accounts_1.mergeAccounts)(file, importedAccounts, "merge");
188
258
  (0, accounts_1.writePluginAccountsFile)(pluginPath, merged);
@@ -205,7 +275,7 @@ function Dashboard({ pluginPath }) {
205
275
  const merged = (0, accounts_1.mergeAccounts)(existingFile, result.accounts, "merge");
206
276
  (0, accounts_1.writePluginAccountsFile)(pluginPath, merged);
207
277
  const added = merged.accounts.length - existingFile.accounts.length;
208
- showMessage(`Imported from AM: ${result.accounts.length} found, ${added} new. Total: ${merged.accounts.length}`, 5000);
278
+ showMessage(`Imported from AM: ${result.accounts.length} found, ${added} new`, 5000);
209
279
  loadAccounts();
210
280
  };
211
281
  const handleEnableSelected = () => {
@@ -225,7 +295,7 @@ function Dashboard({ pluginPath }) {
225
295
  (0, accounts_1.writePluginAccountsFile)(pluginPath, file);
226
296
  showMessage(`Enabled ${count} accounts`, 3000);
227
297
  loadAccounts();
228
- setSelectMode(false);
298
+ setCheckedEmails(new Set());
229
299
  };
230
300
  const handleDisableSelected = () => {
231
301
  if (checkedEmails.size === 0) {
@@ -244,7 +314,7 @@ function Dashboard({ pluginPath }) {
244
314
  (0, accounts_1.writePluginAccountsFile)(pluginPath, file);
245
315
  showMessage(`Disabled ${count} accounts`, 3000);
246
316
  loadAccounts();
247
- setSelectMode(false);
317
+ setCheckedEmails(new Set());
248
318
  };
249
319
  const handleDeleteSelected = () => {
250
320
  if (checkedEmails.size === 0) {
@@ -258,79 +328,25 @@ function Dashboard({ pluginPath }) {
258
328
  (0, accounts_1.writePluginAccountsFile)(pluginPath, file);
259
329
  showMessage(`Deleted ${deletedCount} accounts`, 3000);
260
330
  loadAccounts();
261
- setSelectMode(false);
262
- };
263
- const handleSelectAll = () => {
264
- setCheckedEmails(new Set(accounts.map(a => a.email)));
265
- };
266
- const handleSelectNone = () => {
267
331
  setCheckedEmails(new Set());
268
332
  };
269
- const handleAction = (action) => {
270
- // Don't handle actions when modal is open
271
- if (activeModal !== "none")
272
- return;
273
- switch (action) {
274
- case "refresh":
275
- refresh();
276
- break;
277
- case "export":
278
- setActiveModal("export");
279
- break;
280
- case "import-file":
281
- setActiveModal("import");
282
- break;
283
- case "import-am":
284
- handleImportAM();
285
- break;
286
- case "toggle-select-mode":
287
- if (activeSection === "accounts") {
288
- setSelectMode(prev => !prev);
289
- setCheckedEmails(new Set());
290
- setSelectedIndex(0);
291
- }
292
- else {
293
- showMessage("Switch to Accounts section first (Tab)", 2000);
294
- }
295
- break;
296
- case "select-all":
297
- handleSelectAll();
298
- break;
299
- case "select-none":
300
- handleSelectNone();
301
- break;
302
- case "enable-selected":
303
- handleEnableSelected();
304
- break;
305
- case "disable-selected":
306
- handleDisableSelected();
307
- break;
308
- case "delete-selected":
309
- handleDeleteSelected();
310
- break;
311
- case "export-selected":
312
- if (checkedEmails.size === 0) {
313
- showMessage("No accounts selected", 2000);
314
- }
315
- else {
316
- setActiveModal("export-selected");
317
- }
318
- break;
319
- case "quit":
320
- exit();
321
- break;
322
- }
323
- };
324
333
  // Calculate stats
325
334
  const configSummary = opencodeInfo ? (0, opencode_config_1.getConfigSummary)(opencodeInfo) : null;
326
- // Get accounts to export (all or selected)
335
+ // Get accounts to export
327
336
  const getAccountsForExport = () => {
328
337
  if (activeModal === "export-selected") {
329
338
  return accounts.filter(acc => checkedEmails.has(acc.email));
330
339
  }
331
340
  return accounts;
332
341
  };
333
- // If modal is open, render only the modal
342
+ // Find current nav item for highlighting
343
+ const currentNavItem = navItems[navIndex];
344
+ const isOnSection = (id) => currentNavItem?.type === "section" && currentNavItem.id === id;
345
+ const getAccountNavState = (index) => {
346
+ const item = navItems[navIndex];
347
+ return item?.type === "account" && item.index === index;
348
+ };
349
+ // Render modals
334
350
  if (activeModal === "export" || activeModal === "export-selected") {
335
351
  return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", padding: 1 },
336
352
  react_1.default.createElement(components_1.ExportModal, { accounts: getAccountsForExport(), onComplete: handleExportComplete, onCancel: () => setActiveModal("none") })));
@@ -344,33 +360,33 @@ function Dashboard({ pluginPath }) {
344
360
  react_1.default.createElement(components_1.StatsRow, { stats: [
345
361
  { label: "Providers", value: configSummary?.providers || 0, color: "cyan" },
346
362
  { label: "Models", value: configSummary?.models || 0, color: "yellow" },
347
- { label: "MCP On", value: configSummary?.mcpEnabled || 0, color: "green" },
348
- { label: "MCP Off", value: configSummary?.mcpDisabled || 0, color: "red" },
363
+ { label: "MCP", value: configSummary?.mcpEnabled || 0, color: "green" },
349
364
  { label: "Accounts", value: summary.total, color: "white" },
350
365
  { label: "Available", value: summary.available, color: "green" },
351
366
  { label: "Limited", value: summary.limited, color: "yellow" },
352
367
  ] }),
353
368
  react_1.default.createElement(ink_1.Box, { marginY: 1 },
354
- react_1.default.createElement(ink_1.Text, { dimColor: true }, "Sections: "),
355
- react_1.default.createElement(ink_1.Text, { color: activeSection === "providers" ? "cyan" : "gray", bold: activeSection === "providers" }, "[1] Providers"),
356
- react_1.default.createElement(ink_1.Text, null, " "),
357
- react_1.default.createElement(ink_1.Text, { color: activeSection === "accounts" ? "cyan" : "gray", bold: activeSection === "accounts" }, "[2] Accounts"),
358
- react_1.default.createElement(ink_1.Text, null, " "),
359
- react_1.default.createElement(ink_1.Text, { color: activeSection === "mcp" ? "cyan" : "gray", bold: activeSection === "mcp" }, "[3] MCP"),
360
- react_1.default.createElement(ink_1.Text, { dimColor: true }, " (\u2190\u2192 or Tab to switch, \u2191\u2193 in Accounts)")),
361
- react_1.default.createElement(components_1.SectionBox, { title: "PROVIDERS", borderColor: activeSection === "providers" ? "cyan" : "gray", collapsed: activeSection !== "providers" }, opencodeInfo && react_1.default.createElement(components_1.ProviderList, { providers: opencodeInfo.providers })),
362
- react_1.default.createElement(components_1.SectionBox, { title: `PLUGIN ACCOUNTS (${opencodeInfo?.plugins[0]?.name || "antigravity-auth"})`, borderColor: activeSection === "accounts" ? (selectMode ? "yellow" : "cyan") : "gray", collapsed: activeSection !== "accounts" },
363
- react_1.default.createElement(components_1.AccountList, { accounts: accounts, selectedIndex: selectMode ? selectedIndex : -1, checkedEmails: checkedEmails, showCheckbox: selectMode })),
364
- react_1.default.createElement(components_1.SectionBox, { title: "MCP SERVERS", borderColor: activeSection === "mcp" ? "cyan" : "gray", collapsed: activeSection !== "mcp" }, opencodeInfo && react_1.default.createElement(components_1.McpServerList, { servers: opencodeInfo.mcpServers })),
369
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, "\u2191\u2193 navigate \u2022 Enter expand/select \u2022 Space toggle \u2022 "),
370
+ react_1.default.createElement(ink_1.Text, { color: "cyan", bold: true }, "P"),
371
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, " actions \u2022 "),
372
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, "Q quit"),
373
+ checkedEmails.size > 0 && (react_1.default.createElement(ink_1.Text, { color: "yellow" },
374
+ " \u2022 ",
375
+ checkedEmails.size,
376
+ " selected"))),
377
+ react_1.default.createElement(components_1.SectionBox, { title: "PROVIDERS", borderColor: isOnSection("providers") ? "cyan" : (expandedSection === "providers" ? "white" : "gray"), collapsed: expandedSection !== "providers" }, opencodeInfo && react_1.default.createElement(components_1.ProviderList, { providers: opencodeInfo.providers })),
378
+ react_1.default.createElement(components_1.SectionBox, { title: `ACCOUNTS (${opencodeInfo?.plugins[0]?.name || "antigravity-auth"})`, borderColor: isOnSection("accounts") || (currentNavItem?.type === "account") ? "cyan" : (expandedSection === "accounts" ? "white" : "gray"), collapsed: expandedSection !== "accounts" },
379
+ react_1.default.createElement(components_1.AccountList, { accounts: accounts, selectedIndex: currentNavItem?.type === "account" ? currentNavItem.index : -1, checkedEmails: checkedEmails, showCheckbox: true })),
380
+ react_1.default.createElement(components_1.SectionBox, { title: "MCP SERVERS", borderColor: isOnSection("mcp") ? "cyan" : (expandedSection === "mcp" ? "white" : "gray"), collapsed: expandedSection !== "mcp" }, opencodeInfo && react_1.default.createElement(components_1.McpServerList, { servers: opencodeInfo.mcpServers })),
365
381
  react_1.default.createElement(ink_1.Box, { marginTop: 1 },
366
382
  react_1.default.createElement(ink_1.Text, { dimColor: true },
367
383
  "Config: ",
368
384
  opencodeInfo?.configPath || "N/A")),
369
- react_1.default.createElement(ink_1.Box, { marginTop: 1 },
370
- react_1.default.createElement(components_1.MenuBar, { onSelect: handleAction, selectMode: selectMode, selectedCount: checkedEmails.size })),
371
385
  message && (react_1.default.createElement(ink_1.Box, { marginTop: 1 },
372
386
  react_1.default.createElement(ink_1.Text, { color: "green" },
373
387
  "\u2192 ",
374
- message)))));
388
+ message))),
389
+ activeModal === "palette" && (react_1.default.createElement(ink_1.Box, { position: "absolute", marginTop: 3, marginLeft: 10 },
390
+ react_1.default.createElement(components_1.ActionPalette, { actions: paletteActions, onSelect: handlePaletteAction, onClose: () => setActiveModal("none") })))));
375
391
  }
376
392
  //# sourceMappingURL=Dashboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dashboard.js","sourceRoot":"","sources":["../../src/tui/Dashboard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Dashboard.js","sourceRoot":"","sources":["../../src/tui/Dashboard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ export interface PaletteAction {
3
+ id: string;
4
+ label: string;
5
+ shortcut?: string;
6
+ description?: string;
7
+ category?: string;
8
+ }
9
+ interface ActionPaletteProps {
10
+ actions: PaletteAction[];
11
+ onSelect: (actionId: string) => void;
12
+ onClose: () => void;
13
+ }
14
+ export declare function ActionPalette({ actions, onSelect, onClose }: ActionPaletteProps): React.JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=ActionPalette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionPalette.d.ts","sourceRoot":"","sources":["../../../src/tui/components/ActionPalette.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,kBAAkB,qBAsG/E"}
@@ -0,0 +1,106 @@
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.ActionPalette = ActionPalette;
37
+ const react_1 = __importStar(require("react"));
38
+ const ink_1 = require("ink");
39
+ function ActionPalette({ actions, onSelect, onClose }) {
40
+ const [search, setSearch] = (0, react_1.useState)("");
41
+ const [selectedIndex, setSelectedIndex] = (0, react_1.useState)(0);
42
+ // Filter actions by search
43
+ const filteredActions = actions.filter(action => {
44
+ const searchLower = search.toLowerCase();
45
+ return (action.label.toLowerCase().includes(searchLower) ||
46
+ action.id.toLowerCase().includes(searchLower) ||
47
+ (action.description?.toLowerCase().includes(searchLower)));
48
+ });
49
+ (0, ink_1.useInput)((input, key) => {
50
+ // Close on Escape
51
+ if (key.escape) {
52
+ onClose();
53
+ return;
54
+ }
55
+ // Navigate up
56
+ if (key.upArrow) {
57
+ setSelectedIndex(prev => Math.max(0, prev - 1));
58
+ return;
59
+ }
60
+ // Navigate down
61
+ if (key.downArrow) {
62
+ setSelectedIndex(prev => Math.min(filteredActions.length - 1, prev + 1));
63
+ return;
64
+ }
65
+ // Select on Enter
66
+ if (key.return) {
67
+ const action = filteredActions[selectedIndex];
68
+ if (action) {
69
+ onSelect(action.id);
70
+ }
71
+ return;
72
+ }
73
+ // Backspace
74
+ if (key.backspace || key.delete) {
75
+ setSearch(prev => prev.slice(0, -1));
76
+ setSelectedIndex(0);
77
+ return;
78
+ }
79
+ // Type to search (printable characters)
80
+ if (input && input.length === 1 && !key.ctrl && !key.meta) {
81
+ setSearch(prev => prev + input);
82
+ setSelectedIndex(0);
83
+ }
84
+ });
85
+ return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, paddingY: 0 },
86
+ react_1.default.createElement(ink_1.Box, { marginBottom: 1 },
87
+ react_1.default.createElement(ink_1.Text, { color: "cyan", bold: true },
88
+ ">",
89
+ " "),
90
+ react_1.default.createElement(ink_1.Text, null, search),
91
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, "_")),
92
+ react_1.default.createElement(ink_1.Box, { flexDirection: "column", marginBottom: 1 }, filteredActions.length === 0 ? (react_1.default.createElement(ink_1.Text, { dimColor: true }, "No matching actions")) : (filteredActions.slice(0, 10).map((action, index) => {
93
+ const isSelected = index === selectedIndex;
94
+ return (react_1.default.createElement(ink_1.Box, { key: action.id },
95
+ react_1.default.createElement(ink_1.Text, { backgroundColor: isSelected ? "cyan" : undefined, color: isSelected ? "black" : "white" },
96
+ isSelected ? "▸ " : " ",
97
+ action.label),
98
+ action.shortcut && (react_1.default.createElement(ink_1.Text, { dimColor: true },
99
+ " [",
100
+ action.shortcut,
101
+ "]"))));
102
+ }))),
103
+ react_1.default.createElement(ink_1.Box, null,
104
+ react_1.default.createElement(ink_1.Text, { dimColor: true }, "\u2191\u2193 navigate \u2022 Enter select \u2022 Esc close"))));
105
+ }
106
+ //# sourceMappingURL=ActionPalette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionPalette.js","sourceRoot":"","sources":["../../../src/tui/components/ActionPalette.tsx"],"names":[],"mappings":"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"}