opencode-athena 0.2.0 → 0.3.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/README.md CHANGED
@@ -43,6 +43,7 @@ The interactive installer will:
43
43
  - Claude Pro/Max (recommended)
44
44
  - ChatGPT Plus/Pro
45
45
  - Google/Gemini
46
+ - GitHub Copilot (Free/Pro/Pro+/Business/Enterprise)
46
47
 
47
48
  ## Commands
48
49
 
@@ -192,16 +193,152 @@ Configuration files are stored in `~/.config/opencode/`:
192
193
  Use `--preset` during installation:
193
194
 
194
195
  ```bash
195
- npx opencode-athena install --preset minimal # Bare essentials
196
- npx opencode-athena install --preset standard # Recommended (default)
197
- npx opencode-athena install --preset enterprise # Full features
198
- npx opencode-athena install --preset solo-quick # Solo dev quick flow
196
+ npx opencode-athena install --preset minimal # Bare essentials
197
+ npx opencode-athena install --preset standard # Recommended (default)
198
+ npx opencode-athena install --preset enterprise # Full features
199
+ npx opencode-athena install --preset solo-quick # Solo dev quick flow
200
+ npx opencode-athena install --preset copilot-only # GitHub Copilot users
199
201
  ```
200
202
 
201
203
  ### Project Overrides
202
204
 
203
205
  Create `.opencode/athena.json` in your project root to override global settings.
204
206
 
207
+ ### Model Settings
208
+
209
+ Athena provides fine-grained control over model behavior through `temperature` and `thinkingLevel` settings. These can be configured per agent role in `athena.json`:
210
+
211
+ ```json
212
+ {
213
+ "models": {
214
+ "settings": {
215
+ "sisyphus": {
216
+ "temperature": 0.3,
217
+ "thinkingLevel": "medium"
218
+ },
219
+ "oracle": {
220
+ "thinkingLevel": "high"
221
+ },
222
+ "librarian": {
223
+ "temperature": 0.2
224
+ }
225
+ }
226
+ }
227
+ }
228
+ ```
229
+
230
+ **Temperature** controls response randomness. Valid range is provider-specific:
231
+ - Anthropic: 0.0-1.0
232
+ - OpenAI: 0.0-2.0
233
+ - Google: 0.0-2.0
234
+ - GitHub Copilot: Not supported
235
+
236
+ Lower values = more focused, higher = more creative. Defaults are model-family-aware and clamped to valid ranges.
237
+
238
+ **ThinkingLevel** controls reasoning depth for supported models:
239
+ - `"low"` - Quick responses, minimal reasoning
240
+ - `"medium"` - Balanced (default)
241
+ - `"high"` - Deep reasoning, slower
242
+
243
+ ThinkingLevel maps to provider-specific parameters:
244
+ | Provider | Parameter | Values |
245
+ |----------|-----------|--------|
246
+ | Anthropic | `thinking.budget_tokens` | 4096 / 16384 / 32768 |
247
+ | OpenAI | `reasoning_effort` | `"low"` / `"medium"` / `"high"` |
248
+ | Google | `thinking_level` | `"low"` / `"medium"` / `"high"` |
249
+
250
+ Note: Temperature and thinkingLevel are not supported for GitHub Copilot-routed models.
251
+
252
+ ### Custom Models
253
+
254
+ Add custom models to use models not in the built-in list. Custom models can override built-in models or add entirely new ones:
255
+
256
+ ```json
257
+ {
258
+ "models": {
259
+ "sisyphus": "custom/my-finetuned-model",
260
+ "custom": [
261
+ {
262
+ "id": "custom/my-finetuned-model",
263
+ "name": "My Fine-tuned Model",
264
+ "provider": "openai",
265
+ "description": "Custom fine-tuned GPT for our codebase",
266
+ "capabilities": {
267
+ "thinking": false,
268
+ "contextWindow": 128000,
269
+ "supportsTemperature": true
270
+ }
271
+ },
272
+ {
273
+ "id": "anthropic/claude-4-opus",
274
+ "name": "Claude 4 Opus (Override)",
275
+ "provider": "anthropic",
276
+ "description": "Override built-in model with custom settings"
277
+ }
278
+ ]
279
+ }
280
+ }
281
+ ```
282
+
283
+ Custom model fields:
284
+ - `id` (required): Unique identifier, format: `provider/model-name`
285
+ - `name` (required): Display name
286
+ - `provider` (required): `"anthropic"`, `"openai"`, `"google"`, or `"github-copilot"`
287
+ - `description`: Optional description
288
+ - `capabilities`: Optional capability hints
289
+ - `thinking`: Whether the model supports extended thinking
290
+ - `contextWindow`: Context window size in tokens
291
+ - `supportsTemperature`: Whether temperature can be adjusted
292
+
293
+ ## GitHub Copilot Support
294
+
295
+ Athena supports GitHub Copilot as a model provider, allowing you to use Claude, GPT, and Gemini models through your Copilot subscription. This is especially useful for enterprise users who only have access to LLMs through Copilot.
296
+
297
+ ### Setup
298
+
299
+ 1. Run the installer and select "GitHub Copilot" when asked about subscriptions
300
+ 2. Select your Copilot plan level (determines available models)
301
+ 3. After installation, authenticate:
302
+ ```bash
303
+ opencode auth login github-copilot
304
+ ```
305
+
306
+ Or use the `copilot-only` preset:
307
+ ```bash
308
+ npx opencode-athena install --preset copilot-only
309
+ ```
310
+
311
+ ### Plan Levels and Models
312
+
313
+ Model availability depends on your GitHub Copilot plan:
314
+
315
+ | Plan | Claude Models | GPT Models | Gemini Models |
316
+ |------|---------------|------------|---------------|
317
+ | **Free** | Haiku 4.5 | GPT-4.1, GPT-5-mini | - |
318
+ | **Pro** | Haiku 4.5, Sonnet 4, Sonnet 4.5 | GPT-4.1, GPT-5, GPT-5-mini, GPT-5.1, GPT-5.1-codex, GPT-5.2 | Gemini 2.5 Pro, Gemini 3 Flash, Gemini 3 Pro |
319
+ | **Pro+** | All Pro models + Opus 4.1, Opus 4.5 | All Pro models | All Pro models |
320
+ | **Business** | Haiku 4.5, Sonnet 4, Sonnet 4.5 | GPT-4.1, GPT-5, GPT-5-mini, GPT-5.1, GPT-5.1-codex, GPT-5.2 | Gemini 2.5 Pro, Gemini 3 Flash, Gemini 3 Pro |
321
+ | **Enterprise** | All Pro models + Opus 4.1, Opus 4.5 | All Pro models | All Pro models |
322
+
323
+ ### How It Works
324
+
325
+ GitHub Copilot acts as a proxy to multiple LLM providers. When you configure a Copilot-routed model (e.g., `github-copilot/claude-sonnet-4`), requests are sent through GitHub's API.
326
+
327
+ **Naming convention:** Copilot-routed models use the format `github-copilot/{model}` (e.g., `github-copilot/gpt-4o`).
328
+
329
+ **Priority behavior:** If you have both direct provider access and Copilot access (e.g., Claude Pro + Copilot), Athena prefers direct provider models for better feature support.
330
+
331
+ ### Limitations
332
+
333
+ Models accessed through GitHub Copilot have some limitations compared to direct provider access:
334
+
335
+ - **No temperature control**: Copilot strips temperature parameters
336
+ - **No thinking/reasoning modes**: Extended thinking (Claude), reasoning effort (OpenAI), and thinking level (Google) are not supported
337
+ - **Rate limits**: Subject to Copilot's rate limits rather than provider limits
338
+ - **Feature lag**: New model features may not be immediately available
339
+
340
+ For full model capabilities, use direct provider subscriptions when possible.
341
+
205
342
  ## Architecture
206
343
 
207
344
  ```
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "../schemas/athena.schema.json",
3
+ "version": "0.0.1",
4
+ "description": "Configuration for users with only GitHub Copilot access (Business/Enterprise)",
5
+ "subscriptions": {
6
+ "claude": { "enabled": false, "tier": "none" },
7
+ "openai": { "enabled": false },
8
+ "google": { "enabled": false, "authMethod": "none" },
9
+ "githubCopilot": { "enabled": true, "plan": "business" }
10
+ },
11
+ "models": {
12
+ "sisyphus": "github-copilot/claude-sonnet-4.5",
13
+ "oracle": "github-copilot/gpt-5.1",
14
+ "librarian": "github-copilot/claude-haiku-4.5",
15
+ "frontend": "github-copilot/claude-sonnet-4.5",
16
+ "documentWriter": "github-copilot/gemini-2.5-pro",
17
+ "multimodalLooker": "github-copilot/gemini-2.5-pro"
18
+ },
19
+ "bmad": {
20
+ "defaultTrack": "bmad-method",
21
+ "autoStatusUpdate": true,
22
+ "parallelStoryLimit": 3
23
+ },
24
+ "features": {
25
+ "bmadBridge": true,
26
+ "autoStatus": true,
27
+ "parallelExecution": true,
28
+ "notifications": true,
29
+ "contextMonitor": true,
30
+ "commentChecker": true,
31
+ "lspTools": true
32
+ },
33
+ "mcps": {
34
+ "context7": true,
35
+ "exa": true,
36
+ "grepApp": true
37
+ }
38
+ }
@@ -5,7 +5,8 @@
5
5
  "subscriptions": {
6
6
  "claude": { "enabled": true, "tier": "max20x" },
7
7
  "openai": { "enabled": true },
8
- "google": { "enabled": true, "authMethod": "antigravity" }
8
+ "google": { "enabled": true, "authMethod": "antigravity" },
9
+ "githubCopilot": { "enabled": false, "plan": "none" }
9
10
  },
10
11
  "models": {
11
12
  "sisyphus": "anthropic/claude-opus-4-5-thinking",
@@ -13,7 +14,15 @@
13
14
  "librarian": "anthropic/claude-sonnet-4-5-thinking",
14
15
  "frontend": "google/gemini-2.5-pro",
15
16
  "documentWriter": "anthropic/claude-opus-4-5",
16
- "multimodalLooker": "google/gemini-2.5-pro"
17
+ "multimodalLooker": "google/gemini-2.5-pro",
18
+ "settings": {
19
+ "sisyphus": { "thinkingLevel": "high" },
20
+ "oracle": { "thinkingLevel": "high" },
21
+ "librarian": { "thinkingLevel": "medium" },
22
+ "frontend": { "temperature": 0.5 },
23
+ "documentWriter": { "temperature": 0.4 },
24
+ "multimodalLooker": { "temperature": 0.2 }
25
+ }
17
26
  },
18
27
  "bmad": {
19
28
  "defaultTrack": "enterprise",
@@ -5,12 +5,18 @@
5
5
  "subscriptions": {
6
6
  "claude": { "enabled": true, "tier": "pro" },
7
7
  "openai": { "enabled": false },
8
- "google": { "enabled": false, "authMethod": "none" }
8
+ "google": { "enabled": false, "authMethod": "none" },
9
+ "githubCopilot": { "enabled": false, "plan": "none" }
9
10
  },
10
11
  "models": {
11
12
  "sisyphus": "anthropic/claude-sonnet-4-5",
12
13
  "oracle": "anthropic/claude-sonnet-4-5",
13
- "librarian": "anthropic/claude-sonnet-4-5"
14
+ "librarian": "anthropic/claude-sonnet-4-5",
15
+ "settings": {
16
+ "sisyphus": { "temperature": 0.2 },
17
+ "oracle": { "temperature": 0.1 },
18
+ "librarian": { "temperature": 0.3 }
19
+ }
14
20
  },
15
21
  "bmad": {
16
22
  "defaultTrack": "quick-flow",
@@ -5,12 +5,18 @@
5
5
  "subscriptions": {
6
6
  "claude": { "enabled": true, "tier": "max5x" },
7
7
  "openai": { "enabled": false },
8
- "google": { "enabled": false, "authMethod": "none" }
8
+ "google": { "enabled": false, "authMethod": "none" },
9
+ "githubCopilot": { "enabled": false, "plan": "none" }
9
10
  },
10
11
  "models": {
11
12
  "sisyphus": "anthropic/claude-sonnet-4-5-thinking",
12
13
  "oracle": "anthropic/claude-sonnet-4-5-thinking",
13
- "librarian": "anthropic/claude-sonnet-4-5"
14
+ "librarian": "anthropic/claude-sonnet-4-5",
15
+ "settings": {
16
+ "sisyphus": { "thinkingLevel": "medium" },
17
+ "oracle": { "thinkingLevel": "high" },
18
+ "librarian": { "temperature": 0.3 }
19
+ }
14
20
  },
15
21
  "bmad": {
16
22
  "defaultTrack": "quick-flow",
@@ -5,7 +5,8 @@
5
5
  "subscriptions": {
6
6
  "claude": { "enabled": true, "tier": "max5x" },
7
7
  "openai": { "enabled": true },
8
- "google": { "enabled": true, "authMethod": "antigravity" }
8
+ "google": { "enabled": true, "authMethod": "antigravity" },
9
+ "githubCopilot": { "enabled": false, "plan": "none" }
9
10
  },
10
11
  "models": {
11
12
  "sisyphus": "anthropic/claude-sonnet-4-5-thinking",
@@ -13,7 +14,15 @@
13
14
  "librarian": "anthropic/claude-sonnet-4-5",
14
15
  "frontend": "anthropic/claude-sonnet-4-5",
15
16
  "documentWriter": "google/gemini-2.5-pro",
16
- "multimodalLooker": "google/gemini-2.5-flash"
17
+ "multimodalLooker": "google/gemini-2.5-flash",
18
+ "settings": {
19
+ "sisyphus": { "thinkingLevel": "medium" },
20
+ "oracle": { "thinkingLevel": "high" },
21
+ "librarian": { "thinkingLevel": "low" },
22
+ "frontend": { "temperature": 0.5 },
23
+ "documentWriter": { "temperature": 0.4 },
24
+ "multimodalLooker": { "temperature": 0.2 }
25
+ }
17
26
  },
18
27
  "bmad": {
19
28
  "defaultTrack": "bmad-method",
@@ -44,9 +44,25 @@
44
44
  }
45
45
  },
46
46
  "required": ["enabled", "authMethod"]
47
+ },
48
+ "githubCopilot": {
49
+ "type": "object",
50
+ "properties": {
51
+ "enabled": { "type": "boolean" },
52
+ "plan": {
53
+ "type": "string",
54
+ "enum": ["none", "free", "pro", "pro-plus", "business", "enterprise"]
55
+ },
56
+ "enabledModels": {
57
+ "type": "array",
58
+ "items": { "type": "string" },
59
+ "description": "Optional: specific models enabled by organization admin"
60
+ }
61
+ },
62
+ "required": ["enabled", "plan"]
47
63
  }
48
64
  },
49
- "required": ["claude", "openai", "google"]
65
+ "required": ["claude", "openai", "google", "githubCopilot"]
50
66
  },
51
67
  "models": {
52
68
  "type": "object",
@@ -75,6 +91,28 @@
75
91
  "multimodalLooker": {
76
92
  "type": "string",
77
93
  "description": "Model for image analysis agent"
94
+ },
95
+ "settings": {
96
+ "type": "object",
97
+ "description": "Optional agent-specific settings for temperature and thinking level",
98
+ "properties": {
99
+ "sisyphus": { "$ref": "#/definitions/agentSettings" },
100
+ "oracle": { "$ref": "#/definitions/agentSettings" },
101
+ "librarian": { "$ref": "#/definitions/agentSettings" },
102
+ "frontend": { "$ref": "#/definitions/agentSettings" },
103
+ "documentWriter": { "$ref": "#/definitions/agentSettings" },
104
+ "multimodalLooker": { "$ref": "#/definitions/agentSettings" },
105
+ "overrides": {
106
+ "type": "object",
107
+ "description": "Per-model overrides (key: model ID, value: settings)",
108
+ "additionalProperties": { "$ref": "#/definitions/agentSettings" }
109
+ }
110
+ }
111
+ },
112
+ "custom": {
113
+ "type": "array",
114
+ "description": "User-defined custom models",
115
+ "items": { "$ref": "#/definitions/customModel" }
78
116
  }
79
117
  },
80
118
  "required": ["sisyphus", "oracle", "librarian"]
@@ -124,5 +162,57 @@
124
162
  }
125
163
  }
126
164
  },
127
- "required": ["version", "subscriptions", "models", "bmad", "features", "mcps"]
165
+ "required": ["version", "subscriptions", "models", "bmad", "features", "mcps"],
166
+ "definitions": {
167
+ "agentSettings": {
168
+ "type": "object",
169
+ "description": "Settings for an agent (temperature and thinking level)",
170
+ "properties": {
171
+ "temperature": {
172
+ "type": "number",
173
+ "minimum": 0,
174
+ "maximum": 1,
175
+ "description": "Model temperature (0.0-1.0) - controls randomness/creativity"
176
+ },
177
+ "thinkingLevel": {
178
+ "type": "string",
179
+ "enum": ["off", "low", "medium", "high"],
180
+ "description": "Reasoning depth - maps to reasoning_effort (OpenAI), token budget (Anthropic), thinking_level (Google)"
181
+ }
182
+ }
183
+ },
184
+ "customModel": {
185
+ "type": "object",
186
+ "description": "Custom model definition",
187
+ "properties": {
188
+ "id": {
189
+ "type": "string",
190
+ "description": "Model identifier (e.g., 'anthropic/claude-next-gen')"
191
+ },
192
+ "name": {
193
+ "type": "string",
194
+ "description": "Display name"
195
+ },
196
+ "provider": {
197
+ "type": "string",
198
+ "enum": ["anthropic", "openai", "google", "github-copilot"],
199
+ "description": "Provider name"
200
+ },
201
+ "description": {
202
+ "type": "string",
203
+ "description": "Optional description"
204
+ },
205
+ "capabilities": {
206
+ "type": "object",
207
+ "description": "Model capabilities",
208
+ "properties": {
209
+ "thinking": { "type": "boolean" },
210
+ "contextWindow": { "type": "number" },
211
+ "supportsTemperature": { "type": "boolean" }
212
+ }
213
+ }
214
+ },
215
+ "required": ["id", "name", "provider"]
216
+ }
217
+ }
128
218
  }