File size: 5,735 Bytes
852e525
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# OpenCode Sync Verification Checklist

> Manual test checklist for OpenCode sync feature PR

## 1. Pre-check

### 1.1 Backup Files Path
- [ ] Verify backup suffix: `.antigravity-manager.bak` (new) and `.antigravity.bak` (legacy)
- [ ] Verify backup location: `~/.config/opencode/opencode.json.antigravity-manager.bak`
- [ ] Verify accounts backup: `~/.config/opencode/antigravity-accounts.json.antigravity-manager.bak`

### 1.2 Plugin Installation Scenarios
| Scenario | Expected Behavior |
|----------|-------------------|
| Plugin NOT installed | Sync button available, shows "OpenCode not detected" warning |
| Plugin installed | Shows version, sync enabled |
| Plugin path auto-detect | Finds opencode in PATH, npm, pnpm, yarn, nvm, fnm, Volta |

---

## 2. Sync Behavior Verification

### 2.1 Provider Creation
- [ ] `provider.antigravity-manager` created with correct structure
- [ ] `npm`: `@ai-sdk/anthropic`
- [ ] `name`: `Antigravity Manager`
- [ ] `options.baseURL`: ends with `/v1` (auto-normalized)
- [ ] `options.apiKey`: matches proxy API key

### 2.2 Existing Providers Not Overwritten
- [ ] `provider.google` preserved (if exists)
- [ ] `provider.anthropic` preserved (if exists)
- [ ] Other providers untouched

### 2.3 Accounts Export File (v3 Structure)
```json
{
  "version": 3,
  "accounts": [...],
  "activeIndex": 0,
  "activeIndexByFamily": {
    "claude": 0,
    "gemini": 0
  }
}
```
- [ ] File created at `~/.config/opencode/antigravity-accounts.json`
- [ ] `version` field = 3
- [ ] `activeIndex` clamped to valid range
- [ ] `activeIndexByFamily` contains `claude` and `gemini` keys
- [ ] Disabled accounts excluded from export

---

## 3. Variants/Thinking Behavior Verification

### 3.1 Claude Thinking Models
```bash
opencode run "test" --model antigravity-manager/claude-sonnet-4-6-thinking --variant high
```
- [ ] `--variant low` β†’ `thinkingBudget: 8192`
- [ ] `--variant medium` β†’ `thinkingBudget: 16384`
- [ ] `--variant high` β†’ `thinkingBudget: 24576`
- [ ] `--variant max` β†’ `thinkingBudget: 32768`

### 3.2 Gemini 3 Pro Models
```bash
opencode run "test" --model antigravity-manager/gemini-3-pro-high --variant low
```
- [ ] `--variant low` β†’ `thinkingLevel: "low"`
- [ ] `--variant high` β†’ `thinkingLevel: "high"`

### 3.3 Gemini 3 Flash Models
- [ ] `--variant minimal` β†’ `thinkingLevel: "minimal"`
- [ ] `--variant low` β†’ `thinkingLevel: "low"`
- [ ] `--variant medium` β†’ `thinkingLevel: "medium"`
- [ ] `--variant high` β†’ `thinkingLevel: "high"`

### 3.4 Gemini 2.5 Flash Thinking
- [ ] `--variant low` β†’ `thinkingBudget: 8192`
- [ ] `--variant medium` β†’ `thinkingBudget: 12288`
- [ ] `--variant high` β†’ `thinkingBudget: 16384`
- [ ] `--variant max` β†’ `thinkingBudget: 24576`

---

## 4. Plugin Compatibility Verification

### 4.1 Plugin Model Unaffected
```bash
# If opencode-antigravity-auth plugin installed
opencode run "test" --model google/antigravity-claude-sonnet-4-6-thinking --variant max
```
- [ ] Plugin provider works independently
- [ ] Manager sync does not interfere with plugin accounts
- [ ] Both can coexist

---

## 5. Clear/Restore Verification

### 5.1 Clear Config
- [ ] Removes `provider.antigravity-manager`
- [ ] Optional: clears legacy entries from `provider.google` and `provider.anthropic`
- [ ] Preserves other providers

### 5.2 Restore Function
| Backup Type | Expected Result |
|-------------|-----------------|
| New suffix (`.antigravity-manager.bak`) | Restores successfully |
| Old suffix (`.antigravity.bak`) | Restores successfully (backward compatible) |
| Both exist | Prefers new suffix |
| None exists | Shows "No backup files found" error |

---

## 6. Pass/Fail Summary Table

| Test Category | Test Item | Status |
|---------------|-----------|--------|
| Pre-check | Backup path correct | ⬜ Pass / ⬜ Fail |
| Pre-check | Plugin detection works | ⬜ Pass / ⬜ Fail |
| Sync | Provider created correctly | ⬜ Pass / ⬜ Fail |
| Sync | Existing providers preserved | ⬜ Pass / ⬜ Fail |
| Sync | Accounts v3 structure valid | ⬜ Pass / ⬜ Fail |
| Variants | Claude thinking budgets | ⬜ Pass / ⬜ Fail |
| Variants | Gemini 3 Pro levels | ⬜ Pass / ⬜ Fail |
| Variants | Gemini 3 Flash levels | ⬜ Pass / ⬜ Fail |
| Variants | Gemini 2.5 thinking budgets | ⬜ Pass / ⬜ Fail |
| Compatibility | Plugin unaffected | ⬜ Pass / ⬜ Fail |
| Clear/Restore | Clear removes manager provider | ⬜ Pass / ⬜ Fail |
| Clear/Restore | Restore with new suffix | ⬜ Pass / ⬜ Fail |
| Clear/Restore | Restore with old suffix | ⬜ Pass / ⬜ Fail |

---

## 7. Troubleshooting Notes

### Issue: Sync fails with "Failed to get OpenCode config directory"
**Cause:** Cannot determine home directory  
**Fix:** Ensure `HOME` (Unix) or `USERPROFILE` (Windows) env var is set

### Issue: Variant not applied
**Cause:** Model ID mismatch or variant type not defined  
**Fix:** Check model ID in catalog matches request; verify `variant_type` in `build_model_catalog()`

### Issue: Backup not created
**Cause:** Backup file already exists (idempotent)  
**Fix:** Delete existing `.bak` files manually if you need fresh backup

### Issue: Accounts not exported
**Cause:** All accounts disabled or `sync_accounts` not checked  
**Fix:** Enable at least one account; check "Sync accounts" option in UI

### Issue: Plugin conflicts with manager provider
**Cause:** Both using same model IDs  
**Fix:** Use different model IDs or disable one provider

### Issue: Restore fails
**Cause:** Backup files missing or permissions  
**Check:** 
```bash
ls -la ~/.config/opencode/*.bak
```

---

## Test Environment

- **OS**: 
- **OpenCode Version**: 
- **Antigravity Manager Version**: 
- **Test Date**: 
- **Tester**: