opencode-account-manager 0.4.2 → 0.4.4
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 +134 -168
- package/README_VI.md +232 -0
- package/dist/cli.js +1 -1
- package/dist/tui/Dashboard.d.ts.map +1 -1
- package/dist/tui/Dashboard.js +67 -22
- package/dist/tui/Dashboard.js.map +1 -1
- package/dist/tui/components/Menu.js +1 -1
- package/dist/tui/components/Menu.js.map +1 -1
- package/docs/ROADMAP.md +31 -9
- package/package.json +1 -1
- package/src/cli.ts +1 -1
- package/src/tui/Dashboard.tsx +65 -22
- package/src/tui/components/Menu.tsx +8 -8
package/README.md
CHANGED
|
@@ -1,266 +1,232 @@
|
|
|
1
1
|
# OpenCode Account Manager (OCAM)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<div align="center">
|
|
4
|
+
<h3>TUI Dashboard for OpenCode Account Management</h3>
|
|
5
|
+
<p>Manage providers, MCP servers, and plugin accounts in one place.</p>
|
|
6
|
+
|
|
7
|
+
<p>
|
|
8
|
+
<a href="https://www.npmjs.com/package/opencode-account-manager">
|
|
9
|
+
<img src="https://img.shields.io/npm/v/opencode-account-manager.svg" alt="npm version">
|
|
10
|
+
</a>
|
|
11
|
+
<a href="https://www.npmjs.com/package/opencode-account-manager">
|
|
12
|
+
<img src="https://img.shields.io/npm/dw/opencode-account-manager.svg" alt="npm downloads">
|
|
13
|
+
</a>
|
|
14
|
+
<a href="https://github.com/d-init-d/opencode-account-manager/blob/main/LICENSE">
|
|
15
|
+
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License">
|
|
16
|
+
</a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
<p>
|
|
20
|
+
<strong>English</strong> |
|
|
21
|
+
<a href="./README_VI.md">Tiếng Việt</a>
|
|
22
|
+
</p>
|
|
23
|
+
</div>
|
|
4
24
|
|
|
5
|
-
|
|
25
|
+
---
|
|
6
26
|
|
|
7
|
-
|
|
8
|
-
- **Providers**: Xem tất cả AI providers (Google, Ollama, Claudible, Antigravity Manager) với số models
|
|
9
|
-
- **MCP Servers**: Xem trạng thái enabled/disabled của các MCP servers
|
|
10
|
-
- **Plugin Accounts**: Quản lý accounts của Antigravity Auth plugin
|
|
11
|
-
- Xem rate limit status theo từng model (claude, gemini)
|
|
12
|
-
- Enable/Disable accounts
|
|
13
|
-
- Xóa accounts
|
|
27
|
+
## Features
|
|
14
28
|
|
|
15
|
-
|
|
16
|
-
- **
|
|
17
|
-
- **
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
- **
|
|
29
|
+
- **Providers View**: See all AI providers (Google, Ollama, Anthropic, etc.) with model counts
|
|
30
|
+
- **MCP Servers**: View enabled/disabled status of MCP servers
|
|
31
|
+
- **Plugin Accounts**: Manage Google accounts connected to OpenCode
|
|
32
|
+
- Rate limit status per model (claude, gemini)
|
|
33
|
+
- Enable/Disable/Delete accounts
|
|
34
|
+
- **Encrypted Export**: AES-256-GCM encryption with password protection
|
|
35
|
+
- **Multi-format Import**: Support for encrypted `.ocam`, plain JSON, and Antigravity Manager exports
|
|
21
36
|
|
|
22
37
|
---
|
|
23
38
|
|
|
24
|
-
##
|
|
39
|
+
## Installation
|
|
25
40
|
|
|
26
|
-
###
|
|
41
|
+
### Option A: Let an LLM do it
|
|
27
42
|
|
|
28
|
-
|
|
29
|
-
# Clone repo
|
|
30
|
-
git clone https://github.com/d-init-d/opencode-account-manager.git
|
|
31
|
-
cd opencode-account-manager
|
|
43
|
+
Paste this into any LLM agent (Claude Code, OpenCode, Cursor, etc.):
|
|
32
44
|
|
|
33
|
-
|
|
34
|
-
npm
|
|
45
|
+
```
|
|
46
|
+
Install opencode-account-manager globally via npm, then run "ocam" to verify installation.
|
|
47
|
+
Repository: https://github.com/d-init-d/opencode-account-manager
|
|
48
|
+
```
|
|
35
49
|
|
|
36
|
-
|
|
37
|
-
npm run build
|
|
50
|
+
### Option B: Install from npm
|
|
38
51
|
|
|
39
|
-
|
|
40
|
-
npm
|
|
52
|
+
```bash
|
|
53
|
+
npm install -g opencode-account-manager
|
|
41
54
|
```
|
|
42
55
|
|
|
43
|
-
###
|
|
56
|
+
### Option C: Install from GitHub
|
|
44
57
|
|
|
45
58
|
```bash
|
|
46
59
|
npm install -g github:d-init-d/opencode-account-manager
|
|
47
60
|
```
|
|
48
61
|
|
|
49
|
-
###
|
|
62
|
+
### Verify installation
|
|
50
63
|
|
|
51
64
|
```bash
|
|
52
|
-
# Nếu đã npm link hoặc cài global
|
|
53
65
|
ocam --version
|
|
54
|
-
|
|
55
|
-
# Hoặc chạy trực tiếp
|
|
56
|
-
node dist/cli.js --version
|
|
57
66
|
```
|
|
58
67
|
|
|
59
68
|
---
|
|
60
69
|
|
|
61
|
-
##
|
|
70
|
+
## For LLM Agents
|
|
71
|
+
|
|
72
|
+
### Step-by-Step Instructions
|
|
62
73
|
|
|
63
|
-
|
|
74
|
+
1. Run `npm install -g opencode-account-manager` to install globally
|
|
75
|
+
2. Run `ocam` to start the TUI dashboard
|
|
76
|
+
3. The dashboard will auto-detect OpenCode config at `~/.config/opencode/opencode.json`
|
|
77
|
+
|
|
78
|
+
### Verification
|
|
64
79
|
|
|
65
80
|
```bash
|
|
66
|
-
|
|
67
|
-
|
|
81
|
+
ocam --version
|
|
82
|
+
# Expected output: 0.4.2
|
|
83
|
+
```
|
|
68
84
|
|
|
69
|
-
|
|
70
|
-
opencode-account-manager
|
|
85
|
+
---
|
|
71
86
|
|
|
72
|
-
|
|
73
|
-
npm run dashboard
|
|
87
|
+
## Usage
|
|
74
88
|
|
|
75
|
-
|
|
76
|
-
|
|
89
|
+
### Start Dashboard
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
ocam
|
|
93
|
+
# or
|
|
94
|
+
opencode-account-manager
|
|
77
95
|
```
|
|
78
96
|
|
|
79
97
|
### CLI Commands
|
|
80
98
|
|
|
81
99
|
```bash
|
|
82
|
-
#
|
|
100
|
+
# List accounts
|
|
83
101
|
ocam list
|
|
84
102
|
|
|
85
|
-
# Export accounts
|
|
103
|
+
# Export accounts
|
|
86
104
|
ocam export -o backup.json
|
|
87
105
|
|
|
88
|
-
# Import accounts
|
|
106
|
+
# Import accounts
|
|
89
107
|
ocam import backup.json
|
|
90
108
|
|
|
91
|
-
# Import
|
|
109
|
+
# Import from Antigravity Manager folder
|
|
92
110
|
ocam import-am
|
|
93
111
|
|
|
94
|
-
#
|
|
112
|
+
# Help
|
|
95
113
|
ocam --help
|
|
96
114
|
```
|
|
97
115
|
|
|
98
116
|
---
|
|
99
117
|
|
|
100
|
-
##
|
|
118
|
+
## Keyboard Shortcuts
|
|
101
119
|
|
|
102
120
|
### Main Dashboard
|
|
103
121
|
|
|
104
|
-
|
|
|
105
|
-
|
|
106
|
-
| `Tab` |
|
|
107
|
-
| `R` | Refresh
|
|
108
|
-
| `E` | Export accounts
|
|
109
|
-
| `I` | Import accounts
|
|
110
|
-
| `A` | Import
|
|
111
|
-
| `S` |
|
|
112
|
-
| `Q` |
|
|
113
|
-
|
|
114
|
-
### Select Mode (
|
|
115
|
-
|
|
116
|
-
|
|
|
117
|
-
|
|
118
|
-
| `↑/↓` |
|
|
119
|
-
| `Space` |
|
|
120
|
-
| `A` |
|
|
121
|
-
| `N` |
|
|
122
|
-
| `E` | Enable
|
|
123
|
-
| `D` | Disable
|
|
124
|
-
| `X` | Export
|
|
125
|
-
| `DEL` |
|
|
126
|
-
| `
|
|
127
|
-
|
|
128
|
-
### Export Flow
|
|
129
|
-
|
|
130
|
-
1. Bấm `E` để export
|
|
131
|
-
2. Chọn format: `[1] Encrypted (.ocam)` hoặc `[2] Plain JSON`
|
|
132
|
-
3. Chọn folder lưu file
|
|
133
|
-
4. Nhập password (chỉ với encrypted)
|
|
134
|
-
5. Done!
|
|
135
|
-
|
|
136
|
-
### Import Flow
|
|
137
|
-
|
|
138
|
-
1. Bấm `I` để import
|
|
139
|
-
2. Duyệt và chọn file `.ocam` hoặc `.json`
|
|
140
|
-
3. Nhập password (chỉ với file encrypted)
|
|
141
|
-
4. Xem preview các accounts
|
|
142
|
-
5. Bấm `Enter` để confirm import
|
|
122
|
+
| Key | Action |
|
|
123
|
+
|-----|--------|
|
|
124
|
+
| `Tab` | Switch section (Providers → Accounts → MCP) |
|
|
125
|
+
| `R` | Refresh data |
|
|
126
|
+
| `E` | Export accounts |
|
|
127
|
+
| `I` | Import accounts |
|
|
128
|
+
| `A` | Import from Antigravity Manager |
|
|
129
|
+
| `S` | Enter Select Mode |
|
|
130
|
+
| `Q` | Quit |
|
|
131
|
+
|
|
132
|
+
### Select Mode (Accounts)
|
|
133
|
+
|
|
134
|
+
| Key | Action |
|
|
135
|
+
|-----|--------|
|
|
136
|
+
| `↑/↓` | Navigate |
|
|
137
|
+
| `Space` | Toggle selection |
|
|
138
|
+
| `A` | Select all |
|
|
139
|
+
| `N` | Deselect all |
|
|
140
|
+
| `E` | Enable selected |
|
|
141
|
+
| `D` | Disable selected |
|
|
142
|
+
| `X` | Export selected |
|
|
143
|
+
| `DEL` | Delete selected |
|
|
144
|
+
| `Esc` | Exit Select Mode |
|
|
143
145
|
|
|
144
146
|
---
|
|
145
147
|
|
|
146
|
-
##
|
|
148
|
+
## Supported Import Formats
|
|
147
149
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
- Human-readable, không mã hóa
|
|
155
|
-
- Chứa refresh tokens dạng clear text
|
|
156
|
-
- Chỉ nên dùng cho local backup
|
|
150
|
+
| Format | Extension | Description |
|
|
151
|
+
|--------|-----------|-------------|
|
|
152
|
+
| Encrypted | `.ocam` | AES-256-GCM encrypted, password required |
|
|
153
|
+
| Portable | `.json` | OpenCode Account Manager plain export |
|
|
154
|
+
| AM Export | `.json` | Antigravity Manager app export `[{email, refresh_token}]` |
|
|
155
|
+
| Plugin Native | `.json` | `antigravity-accounts.json` format |
|
|
157
156
|
|
|
158
157
|
---
|
|
159
158
|
|
|
160
|
-
##
|
|
161
|
-
|
|
162
|
-
| File | Vị trí | Mô tả |
|
|
163
|
-
|------|--------|-------|
|
|
164
|
-
| `opencode.json` | `~/.config/opencode/` | Config chính của OpenCode (providers, MCP) |
|
|
165
|
-
| `antigravity-accounts.json` | `%APPDATA%/opencode/` | Accounts của plugin (Windows) |
|
|
166
|
-
| `antigravity-accounts.json` | `~/.config/opencode/` | Accounts của plugin (Linux/Mac) |
|
|
167
|
-
| `ocam-config.json` | `%APPDATA%/opencode/` | Preferences của app (recent folders) |
|
|
159
|
+
## Configuration Paths
|
|
168
160
|
|
|
169
|
-
|
|
161
|
+
| File | Windows | Linux/Mac |
|
|
162
|
+
|------|---------|-----------|
|
|
163
|
+
| OpenCode config | `~/.config/opencode/opencode.json` | `~/.config/opencode/opencode.json` |
|
|
164
|
+
| Plugin accounts | `%APPDATA%/opencode/antigravity-accounts.json` | `~/.config/opencode/antigravity-accounts.json` |
|
|
165
|
+
| OCAM preferences | `%APPDATA%/opencode/ocam-config.json` | `~/.config/opencode/ocam-config.json` |
|
|
170
166
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
- **Node.js**: >= 16.x
|
|
174
|
-
- **OpenCode**: Cần cài sẵn OpenCode với Antigravity Auth plugin
|
|
175
|
-
- **Terminal**: Hỗ trợ Unicode và 256 colors (Windows Terminal, iTerm2, etc.)
|
|
167
|
+
> **Note**: `~` on Windows resolves to your user home directory (e.g., `C:\Users\YourName`)
|
|
176
168
|
|
|
177
169
|
---
|
|
178
170
|
|
|
179
|
-
##
|
|
171
|
+
## Requirements
|
|
180
172
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
Providers Models MCP On MCP Off Accounts Available Limited
|
|
185
|
-
4 29 6 0 5 3 2
|
|
186
|
-
|
|
187
|
-
Sections: [1] Providers [2] Accounts [3] MCP (Tab to switch)
|
|
188
|
-
|
|
189
|
-
╭─ PROVIDERS ──────────────────────────────────────────────────╮
|
|
190
|
-
│ PROVIDER MODELS TYPE BASE URL │
|
|
191
|
-
│ Google 7 builtin - │
|
|
192
|
-
│ Ollama 5 custom http://localhost:11434│
|
|
193
|
-
│ Claudible 3 custom https://claudible.io │
|
|
194
|
-
│ Antigravity Manager 14 custom http://localhost:8045 │
|
|
195
|
-
╰──────────────────────────────────────────────────────────────╯
|
|
196
|
-
|
|
197
|
-
╭─ PLUGIN ACCOUNTS (opencode-antigravity-auth) ────────────────╮
|
|
198
|
-
│ EMAIL STATUS RATE LIMIT │
|
|
199
|
-
│ user1@gmail.com enabled claude: 2.1h │
|
|
200
|
-
│ user2@gmail.com enabled OK │
|
|
201
|
-
│ user3@gmail.com disabled - │
|
|
202
|
-
╰──────────────────────────────────────────────────────────────╯
|
|
203
|
-
|
|
204
|
-
╭─ MCP SERVERS ────────────────────────────────────────────────╮
|
|
205
|
-
│ SERVER STATUS ENV COMMAND │
|
|
206
|
-
│ playwright enabled 0 npx @playwright/mcp │
|
|
207
|
-
│ firecrawl enabled 1 npx firecrawl-mcp │
|
|
208
|
-
│ github enabled 1 npx @modelcontextprot...│
|
|
209
|
-
╰──────────────────────────────────────────────────────────────╯
|
|
210
|
-
|
|
211
|
-
┌──────────────────────────────────────────────────────────────┐
|
|
212
|
-
│ [R] Refresh [E] Export [I] Import [A] AM Import [S] Select Mode [Q] Quit │
|
|
213
|
-
└──────────────────────────────────────────────────────────────┘
|
|
214
|
-
```
|
|
173
|
+
- **Node.js**: >= 16.x
|
|
174
|
+
- **OpenCode**: Installed and configured
|
|
175
|
+
- **Terminal**: Unicode and 256 colors support (Windows Terminal, iTerm2, etc.)
|
|
215
176
|
|
|
216
177
|
---
|
|
217
178
|
|
|
218
179
|
## Troubleshooting
|
|
219
180
|
|
|
220
|
-
###
|
|
181
|
+
### "command not found: ocam"
|
|
221
182
|
|
|
222
183
|
```bash
|
|
223
|
-
|
|
224
|
-
cd /path/to/opencode-account-manager
|
|
225
|
-
npm link
|
|
226
|
-
|
|
227
|
-
# Hoặc chạy trực tiếp:
|
|
228
|
-
node /path/to/opencode-account-manager/dist/cli.js
|
|
184
|
+
npm install -g opencode-account-manager
|
|
229
185
|
```
|
|
230
186
|
|
|
231
|
-
###
|
|
187
|
+
### "Plugin accounts file not found"
|
|
188
|
+
|
|
189
|
+
Login at least one account first:
|
|
232
190
|
|
|
233
191
|
```bash
|
|
234
|
-
|
|
235
|
-
npm run build
|
|
192
|
+
opencode auth login
|
|
236
193
|
```
|
|
237
194
|
|
|
238
|
-
###
|
|
195
|
+
### "Cannot find module"
|
|
196
|
+
|
|
197
|
+
Reinstall the package:
|
|
239
198
|
|
|
240
|
-
Cần đăng nhập ít nhất 1 account trong OpenCode trước:
|
|
241
199
|
```bash
|
|
242
|
-
|
|
200
|
+
npm uninstall -g opencode-account-manager
|
|
201
|
+
npm install -g opencode-account-manager
|
|
243
202
|
```
|
|
244
203
|
|
|
245
204
|
---
|
|
246
205
|
|
|
247
206
|
## Documentation
|
|
248
207
|
|
|
249
|
-
- [ROADMAP.md](./docs/ROADMAP.md) -
|
|
250
|
-
- [BLUEPRINT.md](./docs/BLUEPRINT.md) -
|
|
208
|
+
- [ROADMAP.md](./docs/ROADMAP.md) - Version history and plans
|
|
209
|
+
- [BLUEPRINT.md](./docs/BLUEPRINT.md) - Technical architecture
|
|
251
210
|
|
|
252
211
|
---
|
|
253
212
|
|
|
254
213
|
## Contributing
|
|
255
214
|
|
|
256
|
-
1. Fork repo
|
|
257
|
-
2.
|
|
258
|
-
3. Commit: `git commit -m "feat:
|
|
259
|
-
4. Push: `git push origin feature/
|
|
260
|
-
5.
|
|
215
|
+
1. Fork the repo
|
|
216
|
+
2. Create branch: `git checkout -b feature/your-feature`
|
|
217
|
+
3. Commit: `git commit -m "feat: description"`
|
|
218
|
+
4. Push: `git push origin feature/your-feature`
|
|
219
|
+
5. Create Pull Request
|
|
261
220
|
|
|
262
221
|
---
|
|
263
222
|
|
|
264
223
|
## License
|
|
265
224
|
|
|
266
|
-
MIT
|
|
225
|
+
MIT License. See [LICENSE](./LICENSE) for details.
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Credits
|
|
230
|
+
|
|
231
|
+
- [OpenCode](https://opencode.ai) - The AI coding assistant this tool is built for
|
|
232
|
+
- [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) - Optional plugin for Google OAuth authentication
|
package/README_VI.md
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# OpenCode Account Manager (OCAM)
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
<h3>TUI Dashboard quản lý tài khoản OpenCode</h3>
|
|
5
|
+
<p>Quản lý providers, MCP servers, và plugin accounts trong một giao diện.</p>
|
|
6
|
+
|
|
7
|
+
<p>
|
|
8
|
+
<a href="https://www.npmjs.com/package/opencode-account-manager">
|
|
9
|
+
<img src="https://img.shields.io/npm/v/opencode-account-manager.svg" alt="npm version">
|
|
10
|
+
</a>
|
|
11
|
+
<a href="https://www.npmjs.com/package/opencode-account-manager">
|
|
12
|
+
<img src="https://img.shields.io/npm/dw/opencode-account-manager.svg" alt="npm downloads">
|
|
13
|
+
</a>
|
|
14
|
+
<a href="https://github.com/d-init-d/opencode-account-manager/blob/main/LICENSE">
|
|
15
|
+
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License">
|
|
16
|
+
</a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
<p>
|
|
20
|
+
<a href="./README.md">English</a> |
|
|
21
|
+
<strong>Tiếng Việt</strong>
|
|
22
|
+
</p>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Tính năng
|
|
28
|
+
|
|
29
|
+
- **Xem Providers**: Hiển thị tất cả AI providers (Google, Ollama, Anthropic, etc.) với số lượng models
|
|
30
|
+
- **MCP Servers**: Xem trạng thái bật/tắt của các MCP servers
|
|
31
|
+
- **Quản lý Accounts**: Quản lý các tài khoản Google đang kết nối với OpenCode
|
|
32
|
+
- Trạng thái rate limit theo từng model (claude, gemini)
|
|
33
|
+
- Bật/Tắt/Xóa accounts
|
|
34
|
+
- **Export mã hóa**: Mã hóa AES-256-GCM với mật khẩu bảo vệ
|
|
35
|
+
- **Import đa định dạng**: Hỗ trợ file `.ocam` mã hóa, JSON thuần, và file export từ Antigravity Manager
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Cài đặt
|
|
40
|
+
|
|
41
|
+
### Cách A: Nhờ AI cài giúp
|
|
42
|
+
|
|
43
|
+
Paste đoạn này vào bất kỳ AI agent nào (Claude Code, OpenCode, Cursor, etc.):
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
Cài đặt opencode-account-manager từ npm, sau đó chạy "ocam" để kiểm tra.
|
|
47
|
+
Repository: https://github.com/d-init-d/opencode-account-manager
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Cách B: Cài từ npm
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm install -g opencode-account-manager
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Cách C: Cài từ GitHub
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npm install -g github:d-init-d/opencode-account-manager
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Kiểm tra cài đặt
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
ocam --version
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Dành cho AI Agents
|
|
71
|
+
|
|
72
|
+
### Hướng dẫn từng bước
|
|
73
|
+
|
|
74
|
+
1. Chạy `npm install -g opencode-account-manager` để cài global
|
|
75
|
+
2. Chạy `ocam` để mở TUI dashboard
|
|
76
|
+
3. Dashboard sẽ tự động đọc config OpenCode tại `~/.config/opencode/opencode.json`
|
|
77
|
+
|
|
78
|
+
### Xác minh
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
ocam --version
|
|
82
|
+
# Kết quả mong đợi: 0.4.2
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Sử dụng
|
|
88
|
+
|
|
89
|
+
### Mở Dashboard
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
ocam
|
|
93
|
+
# hoặc
|
|
94
|
+
opencode-account-manager
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Các lệnh CLI
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Liệt kê accounts
|
|
101
|
+
ocam list
|
|
102
|
+
|
|
103
|
+
# Export accounts
|
|
104
|
+
ocam export -o backup.json
|
|
105
|
+
|
|
106
|
+
# Import accounts
|
|
107
|
+
ocam import backup.json
|
|
108
|
+
|
|
109
|
+
# Import từ thư mục Antigravity Manager
|
|
110
|
+
ocam import-am
|
|
111
|
+
|
|
112
|
+
# Trợ giúp
|
|
113
|
+
ocam --help
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Phím tắt
|
|
119
|
+
|
|
120
|
+
### Dashboard chính
|
|
121
|
+
|
|
122
|
+
| Phím | Chức năng |
|
|
123
|
+
|------|-----------|
|
|
124
|
+
| `Tab` | Chuyển section (Providers → Accounts → MCP) |
|
|
125
|
+
| `R` | Làm mới dữ liệu |
|
|
126
|
+
| `E` | Export accounts |
|
|
127
|
+
| `I` | Import accounts |
|
|
128
|
+
| `A` | Import từ Antigravity Manager |
|
|
129
|
+
| `S` | Vào chế độ chọn |
|
|
130
|
+
| `Q` | Thoát |
|
|
131
|
+
|
|
132
|
+
### Chế độ chọn (Accounts)
|
|
133
|
+
|
|
134
|
+
| Phím | Chức năng |
|
|
135
|
+
|------|-----------|
|
|
136
|
+
| `↑/↓` | Di chuyển |
|
|
137
|
+
| `Space` | Chọn/bỏ chọn |
|
|
138
|
+
| `A` | Chọn tất cả |
|
|
139
|
+
| `N` | Bỏ chọn tất cả |
|
|
140
|
+
| `E` | Bật các account đã chọn |
|
|
141
|
+
| `D` | Tắt các account đã chọn |
|
|
142
|
+
| `X` | Export các account đã chọn |
|
|
143
|
+
| `DEL` | Xóa các account đã chọn |
|
|
144
|
+
| `Esc` | Thoát chế độ chọn |
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Định dạng Import được hỗ trợ
|
|
149
|
+
|
|
150
|
+
| Định dạng | Đuôi file | Mô tả |
|
|
151
|
+
|-----------|-----------|-------|
|
|
152
|
+
| Mã hóa | `.ocam` | Mã hóa AES-256-GCM, cần mật khẩu |
|
|
153
|
+
| Portable | `.json` | Export thuần từ OpenCode Account Manager |
|
|
154
|
+
| AM Export | `.json` | Export từ app Antigravity Manager `[{email, refresh_token}]` |
|
|
155
|
+
| Plugin Native | `.json` | Định dạng `antigravity-accounts.json` |
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Đường dẫn cấu hình
|
|
160
|
+
|
|
161
|
+
| File | Windows | Linux/Mac |
|
|
162
|
+
|------|---------|-----------|
|
|
163
|
+
| Config OpenCode | `~/.config/opencode/opencode.json` | `~/.config/opencode/opencode.json` |
|
|
164
|
+
| Plugin accounts | `%APPDATA%/opencode/antigravity-accounts.json` | `~/.config/opencode/antigravity-accounts.json` |
|
|
165
|
+
| Cài đặt OCAM | `%APPDATA%/opencode/ocam-config.json` | `~/.config/opencode/ocam-config.json` |
|
|
166
|
+
|
|
167
|
+
> **Lưu ý**: `~` trên Windows là thư mục home của user (ví dụ: `C:\Users\TenBan`)
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Yêu cầu hệ thống
|
|
172
|
+
|
|
173
|
+
- **Node.js**: >= 16.x
|
|
174
|
+
- **OpenCode**: Đã cài đặt và cấu hình
|
|
175
|
+
- **Terminal**: Hỗ trợ Unicode và 256 màu (Windows Terminal, iTerm2, etc.)
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Xử lý lỗi
|
|
180
|
+
|
|
181
|
+
### "command not found: ocam"
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
npm install -g opencode-account-manager
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### "Plugin accounts file not found"
|
|
188
|
+
|
|
189
|
+
Đăng nhập ít nhất một tài khoản trước:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
opencode auth login
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### "Cannot find module"
|
|
196
|
+
|
|
197
|
+
Cài lại package:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
npm uninstall -g opencode-account-manager
|
|
201
|
+
npm install -g opencode-account-manager
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Tài liệu
|
|
207
|
+
|
|
208
|
+
- [ROADMAP.md](./docs/ROADMAP.md) - Lịch sử phiên bản và kế hoạch
|
|
209
|
+
- [BLUEPRINT.md](./docs/BLUEPRINT.md) - Kiến trúc kỹ thuật
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Đóng góp
|
|
214
|
+
|
|
215
|
+
1. Fork repo
|
|
216
|
+
2. Tạo branch: `git checkout -b feature/ten-tinh-nang`
|
|
217
|
+
3. Commit: `git commit -m "feat: mo-ta"`
|
|
218
|
+
4. Push: `git push origin feature/ten-tinh-nang`
|
|
219
|
+
5. Tạo Pull Request
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Giấy phép
|
|
224
|
+
|
|
225
|
+
MIT License. Xem [LICENSE](./LICENSE) để biết chi tiết.
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Credits
|
|
230
|
+
|
|
231
|
+
- [OpenCode](https://opencode.ai) - AI coding assistant mà công cụ này được xây dựng cho
|
|
232
|
+
- [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) - Plugin tùy chọn để xác thực Google OAuth
|
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.
|
|
38
|
+
.version("0.4.4");
|
|
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,
|
|
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"}
|
package/dist/tui/Dashboard.js
CHANGED
|
@@ -93,8 +93,8 @@ function Dashboard({ pluginPath }) {
|
|
|
93
93
|
(0, ink_1.useInput)((input, key) => {
|
|
94
94
|
if (activeModal !== "none")
|
|
95
95
|
return;
|
|
96
|
-
// Section switching with Tab
|
|
97
|
-
if (key.tab) {
|
|
96
|
+
// Section switching with Tab or Left/Right arrows
|
|
97
|
+
if (key.tab || key.rightArrow) {
|
|
98
98
|
setActiveSection(prev => {
|
|
99
99
|
if (prev === "providers")
|
|
100
100
|
return "accounts";
|
|
@@ -102,31 +102,76 @@ function Dashboard({ pluginPath }) {
|
|
|
102
102
|
return "mcp";
|
|
103
103
|
return "providers";
|
|
104
104
|
});
|
|
105
|
+
if (!key.rightArrow || activeSection !== "accounts") {
|
|
106
|
+
setSelectMode(false);
|
|
107
|
+
}
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
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
|
+
}
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
// Number keys for section switching
|
|
124
|
+
if (input === "1") {
|
|
125
|
+
setActiveSection("providers");
|
|
105
126
|
setSelectMode(false);
|
|
106
127
|
return;
|
|
107
128
|
}
|
|
108
|
-
|
|
109
|
-
|
|
129
|
+
if (input === "2") {
|
|
130
|
+
setActiveSection("accounts");
|
|
110
131
|
return;
|
|
111
|
-
if (key.upArrow) {
|
|
112
|
-
setSelectedIndex(prev => Math.max(0, prev - 1));
|
|
113
132
|
}
|
|
114
|
-
if (
|
|
115
|
-
|
|
133
|
+
if (input === "3") {
|
|
134
|
+
setActiveSection("mcp");
|
|
135
|
+
setSelectMode(false);
|
|
136
|
+
return;
|
|
116
137
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
if (
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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;
|
|
149
|
+
}
|
|
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;
|
|
159
|
+
}
|
|
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
|
+
}
|
|
130
175
|
}
|
|
131
176
|
}
|
|
132
177
|
});
|
|
@@ -312,7 +357,7 @@ function Dashboard({ pluginPath }) {
|
|
|
312
357
|
react_1.default.createElement(ink_1.Text, { color: activeSection === "accounts" ? "cyan" : "gray", bold: activeSection === "accounts" }, "[2] Accounts"),
|
|
313
358
|
react_1.default.createElement(ink_1.Text, null, " "),
|
|
314
359
|
react_1.default.createElement(ink_1.Text, { color: activeSection === "mcp" ? "cyan" : "gray", bold: activeSection === "mcp" }, "[3] MCP"),
|
|
315
|
-
react_1.default.createElement(ink_1.Text, { dimColor: true }, " (Tab to switch)")),
|
|
360
|
+
react_1.default.createElement(ink_1.Text, { dimColor: true }, " (\u2190\u2192 or Tab to switch, \u2191\u2193 in Accounts)")),
|
|
316
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 })),
|
|
317
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" },
|
|
318
363
|
react_1.default.createElement(components_1.AccountList, { accounts: accounts, selectedIndex: selectMode ? selectedIndex : -1, checkedEmails: checkedEmails, showCheckbox: selectMode })),
|
|
@@ -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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"}
|
|
@@ -73,7 +73,7 @@ function MenuBar({ onSelect, selectMode = false, selectedCount = 0 }) {
|
|
|
73
73
|
react_1.default.createElement(ink_1.Text, { color: "yellow", bold: true },
|
|
74
74
|
"SELECT MODE - ",
|
|
75
75
|
selectedCount,
|
|
76
|
-
" selected | \u2191\u2193 navigate | SPACE toggle |
|
|
76
|
+
" selected | \u2191\u2193 navigate | SPACE toggle | \u2190\u2192 switch section"))),
|
|
77
77
|
react_1.default.createElement(ink_1.Box, { borderStyle: "single", borderColor: selectMode ? "yellow" : "gray", paddingX: 1, justifyContent: "space-between" }, visibleItems.map((item) => (react_1.default.createElement(ink_1.Text, { key: item.action + item.key, dimColor: true },
|
|
78
78
|
"[",
|
|
79
79
|
item.key,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../src/tui/components/Menu.tsx"],"names":[],"mappings":";;;;;AA+CA,0BAuDC;AAtGD,kDAA0B;AAC1B,6BAA0C;AAwB1C,MAAM,UAAU,GAAe;IAC7B,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;IACjD,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE;IACrE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE;IAC1E,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE;IAC3E,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,oBAAoB,EAAE,cAAc,EAAE,IAAI,EAAE;IACtF,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,oBAAoB,EAAE,cAAc,EAAE,IAAI,EAAE;IACtF,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,IAAI,EAAE;IACtE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE;IACxE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,EAAE;IAC9E,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,IAAI,EAAE;IAChF,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,EAAE;IAC9E,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,EAAE;IAChF,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;CAC5C,CAAC;AAQF,SAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,UAAU,GAAG,KAAK,EAAE,aAAa,GAAG,CAAC,EAAgB;IACvF,IAAA,cAAQ,EAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAElC,IAAI,UAAU,EAAE,CAAC;YACf,mBAAmB;YACnB,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM;gBAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAChE,IAAI,KAAK,KAAK,GAAG;gBAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC1C,IAAI,KAAK,KAAK,GAAG;gBAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC3C,IAAI,KAAK,KAAK,GAAG;gBAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAC/C,IAAI,KAAK,KAAK,GAAG;gBAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAChD,IAAI,KAAK,KAAK,GAAG;gBAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAC/C,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,KAAK,WAAW;gBAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YACrE,IAAI,KAAK,KAAK,GAAG;gBAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,KAAK,KAAK,GAAG;gBAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,mBAAmB;YACnB,IAAI,KAAK,KAAK,GAAG;gBAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,KAAK,KAAK,GAAG;gBAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,KAAK,KAAK,GAAG;gBAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC3C,IAAI,KAAK,KAAK,GAAG;gBAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;YACzC,IAAI,KAAK,KAAK,GAAG;gBAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAClD,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM;gBAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC5C,IAAI,UAAU,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO,KAAK,CAAC;QACpD,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO,KAAK,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ;QACxB,UAAU,IAAI,CACb,8BAAC,SAAG,IAAC,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC/B,8BAAC,UAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI;;gBACR,aAAa;
|
|
1
|
+
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../src/tui/components/Menu.tsx"],"names":[],"mappings":"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"}
|
package/docs/ROADMAP.md
CHANGED
|
@@ -23,14 +23,36 @@
|
|
|
23
23
|
- [x] Tab navigation between sections (Providers, Accounts, MCP)
|
|
24
24
|
- [x] Collapsible sections
|
|
25
25
|
|
|
26
|
-
### v0.4.0 - Encrypted Export/Import
|
|
27
|
-
- [
|
|
28
|
-
- [
|
|
29
|
-
- [
|
|
30
|
-
- [
|
|
31
|
-
- [
|
|
32
|
-
- [
|
|
33
|
-
- [
|
|
26
|
+
### v0.4.0 - Encrypted Export/Import
|
|
27
|
+
- [x] **Encrypted Export** - AES-256-GCM with password protection
|
|
28
|
+
- [x] **Plain JSON Export** - Keep original format as option
|
|
29
|
+
- [x] **File Browser UI** - Browse folders, quick locations, paste path
|
|
30
|
+
- [x] **Import from File** - Select .ocam or .json files
|
|
31
|
+
- [x] **Password Input** - Masked input with confirmation
|
|
32
|
+
- [x] **Remember Preferences** - Last export/import folder saved
|
|
33
|
+
- [x] **Overwrite Mode** - Replace existing accounts on import
|
|
34
|
+
|
|
35
|
+
### v0.4.1 - npm Publish
|
|
36
|
+
- [x] Published to npm registry
|
|
37
|
+
- [x] Global install via `npm install -g opencode-account-manager`
|
|
38
|
+
- [x] Commands: `ocam`, `opencode-account-manager`
|
|
39
|
+
|
|
40
|
+
### v0.4.2 - Antigravity Manager Export Support
|
|
41
|
+
- [x] **AM Export Import** - Support `[{email, refresh_token}]` format
|
|
42
|
+
- [x] **Auto-detect Format** - Recognize encrypted, portable, AM export formats
|
|
43
|
+
- [x] **Format Preview** - Show detected format in import preview
|
|
44
|
+
- [x] **Professional README** - Updated documentation with LLM installation guide
|
|
45
|
+
|
|
46
|
+
### v0.4.3 - Keyboard Navigation Fix
|
|
47
|
+
- [x] **Number Keys** - Press 1/2/3 to switch sections (Providers/Accounts/MCP)
|
|
48
|
+
- [x] **Tab Navigation** - Fixed Tab key to cycle through sections
|
|
49
|
+
- [x] **UI Indicator** - Show `[1] Providers [2] Accounts [3] MCP` in header
|
|
50
|
+
|
|
51
|
+
### v0.4.4 - Arrow Key Navigation (Current)
|
|
52
|
+
- [x] **←→ Arrow Keys** - Switch between sections (Providers ↔ Accounts ↔ MCP)
|
|
53
|
+
- [x] **↑↓ Arrow Keys** - Navigate account list, auto-enters select mode
|
|
54
|
+
- [x] **Space Key** - Toggle selection in select mode
|
|
55
|
+
- [x] **Updated Help Text** - Show arrow key hints in UI
|
|
34
56
|
|
|
35
57
|
---
|
|
36
58
|
|
|
@@ -62,8 +84,8 @@
|
|
|
62
84
|
- [ ] Model usage statistics
|
|
63
85
|
|
|
64
86
|
### v1.0.0 - Stable Release
|
|
87
|
+
- [x] npm publish
|
|
65
88
|
- [ ] Full documentation
|
|
66
|
-
- [ ] npm publish
|
|
67
89
|
- [ ] Windows/Mac/Linux installers
|
|
68
90
|
- [ ] Integration tests
|
|
69
91
|
|
package/package.json
CHANGED
package/src/cli.ts
CHANGED
package/src/tui/Dashboard.tsx
CHANGED
|
@@ -97,38 +97,81 @@ export function Dashboard({ pluginPath }: DashboardProps) {
|
|
|
97
97
|
useInput((input, key) => {
|
|
98
98
|
if (activeModal !== "none") return;
|
|
99
99
|
|
|
100
|
-
// Section switching with Tab
|
|
101
|
-
if (key.tab) {
|
|
100
|
+
// Section switching with Tab or Left/Right arrows
|
|
101
|
+
if (key.tab || key.rightArrow) {
|
|
102
102
|
setActiveSection(prev => {
|
|
103
103
|
if (prev === "providers") return "accounts";
|
|
104
104
|
if (prev === "accounts") return "mcp";
|
|
105
105
|
return "providers";
|
|
106
106
|
});
|
|
107
|
-
|
|
107
|
+
if (!key.rightArrow || activeSection !== "accounts") {
|
|
108
|
+
setSelectMode(false);
|
|
109
|
+
}
|
|
108
110
|
return;
|
|
109
111
|
}
|
|
110
112
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
+
if (key.leftArrow) {
|
|
114
|
+
setActiveSection(prev => {
|
|
115
|
+
if (prev === "mcp") return "accounts";
|
|
116
|
+
if (prev === "accounts") return "providers";
|
|
117
|
+
return "mcp";
|
|
118
|
+
});
|
|
119
|
+
if (activeSection !== "accounts") {
|
|
120
|
+
setSelectMode(false);
|
|
121
|
+
}
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
113
124
|
|
|
114
|
-
|
|
115
|
-
|
|
125
|
+
// Number keys for section switching
|
|
126
|
+
if (input === "1") {
|
|
127
|
+
setActiveSection("providers");
|
|
128
|
+
setSelectMode(false);
|
|
129
|
+
return;
|
|
116
130
|
}
|
|
117
|
-
if (
|
|
118
|
-
|
|
131
|
+
if (input === "2") {
|
|
132
|
+
setActiveSection("accounts");
|
|
133
|
+
return;
|
|
119
134
|
}
|
|
120
|
-
if (input === "
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
135
|
+
if (input === "3") {
|
|
136
|
+
setActiveSection("mcp");
|
|
137
|
+
setSelectMode(false);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Up/Down arrows for list navigation in accounts section
|
|
142
|
+
if (activeSection === "accounts") {
|
|
143
|
+
if (key.upArrow) {
|
|
144
|
+
if (!selectMode) {
|
|
145
|
+
setSelectMode(true);
|
|
146
|
+
setSelectedIndex(0);
|
|
147
|
+
} else {
|
|
148
|
+
setSelectedIndex(prev => Math.max(0, prev - 1));
|
|
149
|
+
}
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (key.downArrow) {
|
|
153
|
+
if (!selectMode) {
|
|
154
|
+
setSelectMode(true);
|
|
155
|
+
setSelectedIndex(0);
|
|
156
|
+
} else {
|
|
157
|
+
setSelectedIndex(prev => Math.min(accounts.length - 1, prev + 1));
|
|
158
|
+
}
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
// Space to toggle selection in select mode
|
|
162
|
+
if (selectMode && input === " ") {
|
|
163
|
+
const email = accounts[selectedIndex]?.email;
|
|
164
|
+
if (email) {
|
|
165
|
+
setCheckedEmails(prev => {
|
|
166
|
+
const next = new Set(prev);
|
|
167
|
+
if (next.has(email)) {
|
|
168
|
+
next.delete(email);
|
|
169
|
+
} else {
|
|
170
|
+
next.add(email);
|
|
171
|
+
}
|
|
172
|
+
return next;
|
|
173
|
+
});
|
|
174
|
+
}
|
|
132
175
|
}
|
|
133
176
|
}
|
|
134
177
|
});
|
|
@@ -371,7 +414,7 @@ export function Dashboard({ pluginPath }: DashboardProps) {
|
|
|
371
414
|
<Text color={activeSection === "mcp" ? "cyan" : "gray"} bold={activeSection === "mcp"}>
|
|
372
415
|
[3] MCP
|
|
373
416
|
</Text>
|
|
374
|
-
<Text dimColor> (Tab to switch)</Text>
|
|
417
|
+
<Text dimColor> (←→ or Tab to switch, ↑↓ in Accounts)</Text>
|
|
375
418
|
</Box>
|
|
376
419
|
|
|
377
420
|
{/* Providers Section */}
|
|
@@ -78,14 +78,14 @@ export function MenuBar({ onSelect, selectMode = false, selectedCount = 0 }: Men
|
|
|
78
78
|
});
|
|
79
79
|
|
|
80
80
|
return (
|
|
81
|
-
<Box flexDirection="column">
|
|
82
|
-
{selectMode && (
|
|
83
|
-
<Box marginBottom={1} paddingX={1}>
|
|
84
|
-
<Text color="yellow" bold>
|
|
85
|
-
SELECT MODE - {selectedCount} selected | ↑↓ navigate | SPACE toggle |
|
|
86
|
-
</Text>
|
|
87
|
-
</Box>
|
|
88
|
-
)}
|
|
81
|
+
<Box flexDirection="column">
|
|
82
|
+
{selectMode && (
|
|
83
|
+
<Box marginBottom={1} paddingX={1}>
|
|
84
|
+
<Text color="yellow" bold>
|
|
85
|
+
SELECT MODE - {selectedCount} selected | ↑↓ navigate | SPACE toggle | ←→ switch section
|
|
86
|
+
</Text>
|
|
87
|
+
</Box>
|
|
88
|
+
)}
|
|
89
89
|
<Box
|
|
90
90
|
borderStyle="single"
|
|
91
91
|
borderColor={selectMode ? "yellow" : "gray"}
|