opencode-athena 0.4.0 → 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/commands/athena-parallel.md +2 -2
- package/commands/athena-review-story.md +2 -2
- package/config/presets/copilot-only.json +4 -2
- package/config/presets/enterprise.json +5 -2
- package/config/presets/minimal.json +5 -2
- package/config/presets/solo-quick.json +5 -2
- package/config/presets/standard.json +5 -2
- package/config/schemas/athena.schema.json +5 -0
- package/dist/cli/index.js +260 -32
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/package.json +1 -1
|
@@ -178,7 +178,7 @@ opencode
|
|
|
178
178
|
```
|
|
179
179
|
# Start story 2.1 in background
|
|
180
180
|
background_task({
|
|
181
|
-
agent: "
|
|
181
|
+
agent: "Sisyphus",
|
|
182
182
|
prompt: "Implement BMAD story 2.1. Load context with athena_get_story({storyId: '2.1'}), implement following /athena-dev workflow, update status when complete.",
|
|
183
183
|
description: "Story 2.1 implementation"
|
|
184
184
|
})
|
|
@@ -216,7 +216,7 @@ async function executeParallel(storyIds: string[]) {
|
|
|
216
216
|
|
|
217
217
|
// 3. Spawn background agents
|
|
218
218
|
const tasks = storyIds.map(id => ({
|
|
219
|
-
agent: "
|
|
219
|
+
agent: "Sisyphus",
|
|
220
220
|
prompt: generateStoryPrompt(id),
|
|
221
221
|
}));
|
|
222
222
|
|
|
@@ -33,7 +33,7 @@ This review runs in a **separate context** to preserve main session tokens.
|
|
|
33
33
|
Use background_task to spawn a review agent:
|
|
34
34
|
|
|
35
35
|
background_task({
|
|
36
|
-
agent: "
|
|
36
|
+
agent: "oracle",
|
|
37
37
|
description: "Party review of {identifier}",
|
|
38
38
|
prompt: `
|
|
39
39
|
You are performing a party review for Athena.
|
|
@@ -134,7 +134,7 @@ For each recommended agent, spawn a background task:
|
|
|
134
134
|
```
|
|
135
135
|
# Spawn in parallel - all at once
|
|
136
136
|
background_task({
|
|
137
|
-
agent: "
|
|
137
|
+
agent: "oracle",
|
|
138
138
|
description: "Architect analysis of {identifier}",
|
|
139
139
|
prompt: `
|
|
140
140
|
You are Winston, the Software Architect from BMAD.
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"librarian": "github-copilot/claude-haiku-4.5",
|
|
15
15
|
"frontend": "github-copilot/claude-sonnet-4.5",
|
|
16
16
|
"documentWriter": "github-copilot/gemini-2.5-pro",
|
|
17
|
-
"multimodalLooker": "github-copilot/gemini-2.5-pro"
|
|
17
|
+
"multimodalLooker": "github-copilot/gemini-2.5-pro",
|
|
18
|
+
"explore": "github-copilot/gpt-5-mini"
|
|
18
19
|
},
|
|
19
20
|
"bmad": {
|
|
20
21
|
"defaultTrack": "bmad-method",
|
|
@@ -28,7 +29,8 @@
|
|
|
28
29
|
"notifications": true,
|
|
29
30
|
"contextMonitor": true,
|
|
30
31
|
"commentChecker": true,
|
|
31
|
-
"lspTools": true
|
|
32
|
+
"lspTools": true,
|
|
33
|
+
"autoGitOperations": false
|
|
32
34
|
},
|
|
33
35
|
"mcps": {
|
|
34
36
|
"context7": true,
|
|
@@ -15,13 +15,15 @@
|
|
|
15
15
|
"frontend": "google/gemini-2.5-pro",
|
|
16
16
|
"documentWriter": "anthropic/claude-opus-4-5",
|
|
17
17
|
"multimodalLooker": "google/gemini-2.5-pro",
|
|
18
|
+
"explore": "google/gemini-2.5-flash",
|
|
18
19
|
"settings": {
|
|
19
20
|
"sisyphus": { "thinkingLevel": "high" },
|
|
20
21
|
"oracle": { "thinkingLevel": "high" },
|
|
21
22
|
"librarian": { "thinkingLevel": "medium" },
|
|
22
23
|
"frontend": { "temperature": 0.5 },
|
|
23
24
|
"documentWriter": { "temperature": 0.4 },
|
|
24
|
-
"multimodalLooker": { "temperature": 0.2 }
|
|
25
|
+
"multimodalLooker": { "temperature": 0.2 },
|
|
26
|
+
"explore": { "thinkingLevel": "off", "temperature": 0.2 }
|
|
25
27
|
}
|
|
26
28
|
},
|
|
27
29
|
"bmad": {
|
|
@@ -36,7 +38,8 @@
|
|
|
36
38
|
"notifications": true,
|
|
37
39
|
"contextMonitor": true,
|
|
38
40
|
"commentChecker": true,
|
|
39
|
-
"lspTools": true
|
|
41
|
+
"lspTools": true,
|
|
42
|
+
"autoGitOperations": false
|
|
40
43
|
},
|
|
41
44
|
"mcps": {
|
|
42
45
|
"context7": true,
|
|
@@ -12,10 +12,12 @@
|
|
|
12
12
|
"sisyphus": "anthropic/claude-sonnet-4-5",
|
|
13
13
|
"oracle": "anthropic/claude-sonnet-4-5",
|
|
14
14
|
"librarian": "anthropic/claude-sonnet-4-5",
|
|
15
|
+
"explore": "anthropic/claude-sonnet-4-5",
|
|
15
16
|
"settings": {
|
|
16
17
|
"sisyphus": { "temperature": 0.2 },
|
|
17
18
|
"oracle": { "temperature": 0.1 },
|
|
18
|
-
"librarian": { "temperature": 0.3 }
|
|
19
|
+
"librarian": { "temperature": 0.3 },
|
|
20
|
+
"explore": { "temperature": 0.2 }
|
|
19
21
|
}
|
|
20
22
|
},
|
|
21
23
|
"bmad": {
|
|
@@ -30,7 +32,8 @@
|
|
|
30
32
|
"notifications": false,
|
|
31
33
|
"contextMonitor": false,
|
|
32
34
|
"commentChecker": false,
|
|
33
|
-
"lspTools": true
|
|
35
|
+
"lspTools": true,
|
|
36
|
+
"autoGitOperations": false
|
|
34
37
|
},
|
|
35
38
|
"mcps": {
|
|
36
39
|
"context7": true,
|
|
@@ -12,10 +12,12 @@
|
|
|
12
12
|
"sisyphus": "anthropic/claude-sonnet-4-5-thinking",
|
|
13
13
|
"oracle": "anthropic/claude-sonnet-4-5-thinking",
|
|
14
14
|
"librarian": "anthropic/claude-sonnet-4-5",
|
|
15
|
+
"explore": "anthropic/claude-sonnet-4-5",
|
|
15
16
|
"settings": {
|
|
16
17
|
"sisyphus": { "thinkingLevel": "medium" },
|
|
17
18
|
"oracle": { "thinkingLevel": "high" },
|
|
18
|
-
"librarian": { "temperature": 0.3 }
|
|
19
|
+
"librarian": { "temperature": 0.3 },
|
|
20
|
+
"explore": { "temperature": 0.2 }
|
|
19
21
|
}
|
|
20
22
|
},
|
|
21
23
|
"bmad": {
|
|
@@ -30,7 +32,8 @@
|
|
|
30
32
|
"notifications": true,
|
|
31
33
|
"contextMonitor": true,
|
|
32
34
|
"commentChecker": true,
|
|
33
|
-
"lspTools": true
|
|
35
|
+
"lspTools": true,
|
|
36
|
+
"autoGitOperations": false
|
|
34
37
|
},
|
|
35
38
|
"mcps": {
|
|
36
39
|
"context7": true,
|
|
@@ -15,13 +15,15 @@
|
|
|
15
15
|
"frontend": "anthropic/claude-sonnet-4-5",
|
|
16
16
|
"documentWriter": "google/gemini-2.5-pro",
|
|
17
17
|
"multimodalLooker": "google/gemini-2.5-flash",
|
|
18
|
+
"explore": "google/gemini-2.5-flash",
|
|
18
19
|
"settings": {
|
|
19
20
|
"sisyphus": { "thinkingLevel": "medium" },
|
|
20
21
|
"oracle": { "thinkingLevel": "high" },
|
|
21
22
|
"librarian": { "thinkingLevel": "low" },
|
|
22
23
|
"frontend": { "temperature": 0.5 },
|
|
23
24
|
"documentWriter": { "temperature": 0.4 },
|
|
24
|
-
"multimodalLooker": { "temperature": 0.2 }
|
|
25
|
+
"multimodalLooker": { "temperature": 0.2 },
|
|
26
|
+
"explore": { "thinkingLevel": "off", "temperature": 0.2 }
|
|
25
27
|
}
|
|
26
28
|
},
|
|
27
29
|
"bmad": {
|
|
@@ -36,7 +38,8 @@
|
|
|
36
38
|
"notifications": true,
|
|
37
39
|
"contextMonitor": true,
|
|
38
40
|
"commentChecker": true,
|
|
39
|
-
"lspTools": true
|
|
41
|
+
"lspTools": true,
|
|
42
|
+
"autoGitOperations": false
|
|
40
43
|
},
|
|
41
44
|
"mcps": {
|
|
42
45
|
"context7": true,
|
|
@@ -92,6 +92,10 @@
|
|
|
92
92
|
"type": "string",
|
|
93
93
|
"description": "Model for image analysis agent"
|
|
94
94
|
},
|
|
95
|
+
"explore": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"description": "Model for fast codebase exploration agent"
|
|
98
|
+
},
|
|
95
99
|
"settings": {
|
|
96
100
|
"type": "object",
|
|
97
101
|
"description": "Optional agent-specific settings for temperature and thinking level",
|
|
@@ -102,6 +106,7 @@
|
|
|
102
106
|
"frontend": { "$ref": "#/definitions/agentSettings" },
|
|
103
107
|
"documentWriter": { "$ref": "#/definitions/agentSettings" },
|
|
104
108
|
"multimodalLooker": { "$ref": "#/definitions/agentSettings" },
|
|
109
|
+
"explore": { "$ref": "#/definitions/agentSettings" },
|
|
105
110
|
"overrides": {
|
|
106
111
|
"type": "object",
|
|
107
112
|
"description": "Per-model overrides (key: model ID, value: settings)",
|
package/dist/cli/index.js
CHANGED
|
@@ -101,8 +101,8 @@ function createModelChoices(models) {
|
|
|
101
101
|
function getSuggestedModel(role, _subscriptions, availableModels) {
|
|
102
102
|
const suggestions = {
|
|
103
103
|
sisyphus: [
|
|
104
|
-
"anthropic/claude-opus-4-5-thinking",
|
|
105
104
|
"anthropic/claude-sonnet-4-5-thinking",
|
|
105
|
+
"anthropic/claude-opus-4-5-thinking",
|
|
106
106
|
"openai/gpt-5.1-high",
|
|
107
107
|
"google/gemini-2.5-pro",
|
|
108
108
|
"github-copilot/claude-sonnet-4.5",
|
|
@@ -145,6 +145,14 @@ function getSuggestedModel(role, _subscriptions, availableModels) {
|
|
|
145
145
|
"anthropic/claude-sonnet-4-5",
|
|
146
146
|
"github-copilot/gemini-3-flash",
|
|
147
147
|
"github-copilot/gpt-5-mini"
|
|
148
|
+
],
|
|
149
|
+
explore: [
|
|
150
|
+
"google/gemini-2.5-flash",
|
|
151
|
+
"anthropic/claude-sonnet-4-5",
|
|
152
|
+
"openai/gpt-4o",
|
|
153
|
+
"github-copilot/claude-haiku-4.5",
|
|
154
|
+
"github-copilot/gpt-5-mini",
|
|
155
|
+
"github-copilot/gemini-3-flash"
|
|
148
156
|
]
|
|
149
157
|
};
|
|
150
158
|
const roleDefaults = suggestions[role] || [];
|
|
@@ -1453,39 +1461,259 @@ function generateAthenaConfig(answers) {
|
|
|
1453
1461
|
|
|
1454
1462
|
// src/cli/generators/omo-config.ts
|
|
1455
1463
|
init_esm_shims();
|
|
1464
|
+
|
|
1465
|
+
// src/plugin/utils/model-params.ts
|
|
1466
|
+
init_esm_shims();
|
|
1467
|
+
var MODEL_FAMILY_BASE_TEMPS = {
|
|
1468
|
+
"claude-thinking": 0.3,
|
|
1469
|
+
claude: 0.2,
|
|
1470
|
+
"gpt-reasoning": 0.2,
|
|
1471
|
+
gpt: 0.3,
|
|
1472
|
+
gemini: 0.3,
|
|
1473
|
+
copilot: 0.25
|
|
1474
|
+
};
|
|
1475
|
+
var ROLE_TEMP_ADJUSTMENTS = {
|
|
1476
|
+
oracle: -0.1,
|
|
1477
|
+
sisyphus: 0,
|
|
1478
|
+
librarian: 0.1,
|
|
1479
|
+
frontend: 0.2,
|
|
1480
|
+
documentWriter: 0.1,
|
|
1481
|
+
multimodalLooker: -0.1,
|
|
1482
|
+
explore: -0.1
|
|
1483
|
+
};
|
|
1484
|
+
var ROLE_DEFAULT_THINKING = {
|
|
1485
|
+
oracle: "high",
|
|
1486
|
+
sisyphus: "medium",
|
|
1487
|
+
librarian: "low",
|
|
1488
|
+
frontend: "low",
|
|
1489
|
+
documentWriter: "low",
|
|
1490
|
+
multimodalLooker: "off",
|
|
1491
|
+
explore: "off"
|
|
1492
|
+
};
|
|
1493
|
+
var MODEL_CAPABILITIES = {
|
|
1494
|
+
"anthropic/claude-sonnet-4-5-thinking": { supportsThinking: true, thinkingType: "anthropic" },
|
|
1495
|
+
"anthropic/claude-opus-4-5-thinking": { supportsThinking: true, thinkingType: "anthropic" },
|
|
1496
|
+
"anthropic/claude-sonnet-4-5": { supportsTemperature: true },
|
|
1497
|
+
"anthropic/claude-opus-4-5": { supportsTemperature: true },
|
|
1498
|
+
"openai/gpt-5.1-high": { supportsThinking: true, thinkingType: "openai" },
|
|
1499
|
+
"openai/gpt-5.1": { supportsTemperature: false },
|
|
1500
|
+
"openai/gpt-5.2": { supportsTemperature: false },
|
|
1501
|
+
"openai/gpt-4o": { supportsTemperature: true },
|
|
1502
|
+
"google/gemini-2.5-pro": {
|
|
1503
|
+
supportsTemperature: true,
|
|
1504
|
+
supportsThinking: true,
|
|
1505
|
+
thinkingType: "google"
|
|
1506
|
+
},
|
|
1507
|
+
"google/gemini-2.5-flash": { supportsTemperature: true },
|
|
1508
|
+
"google/gemini-3-pro": {
|
|
1509
|
+
supportsTemperature: true,
|
|
1510
|
+
supportsThinking: true,
|
|
1511
|
+
thinkingType: "google"
|
|
1512
|
+
},
|
|
1513
|
+
"google/gemini-3-flash": {
|
|
1514
|
+
supportsTemperature: true,
|
|
1515
|
+
supportsThinking: true,
|
|
1516
|
+
thinkingType: "google"
|
|
1517
|
+
}
|
|
1518
|
+
};
|
|
1519
|
+
var COPILOT_DEFAULTS = {
|
|
1520
|
+
supportsTemperature: false,
|
|
1521
|
+
supportsThinking: false
|
|
1522
|
+
};
|
|
1523
|
+
function getModelFamily(modelId) {
|
|
1524
|
+
if (modelId.startsWith("github-copilot/")) return "copilot";
|
|
1525
|
+
if (modelId.includes("thinking")) return "claude-thinking";
|
|
1526
|
+
if (modelId.includes("claude")) return "claude";
|
|
1527
|
+
if (modelId.includes("gpt-5.1-high") || modelId.includes("o3") || modelId.includes("o1")) {
|
|
1528
|
+
return "gpt-reasoning";
|
|
1529
|
+
}
|
|
1530
|
+
if (modelId.includes("gpt")) return "gpt";
|
|
1531
|
+
if (modelId.includes("gemini")) return "gemini";
|
|
1532
|
+
return "claude";
|
|
1533
|
+
}
|
|
1534
|
+
function getMaxTemperatureForModel(modelId) {
|
|
1535
|
+
if (modelId.startsWith("anthropic/") || modelId.includes("claude")) {
|
|
1536
|
+
return 1;
|
|
1537
|
+
}
|
|
1538
|
+
if (modelId.startsWith("openai/") || modelId.includes("gpt")) {
|
|
1539
|
+
return 2;
|
|
1540
|
+
}
|
|
1541
|
+
if (modelId.startsWith("google/") || modelId.includes("gemini")) {
|
|
1542
|
+
return 2;
|
|
1543
|
+
}
|
|
1544
|
+
return 1;
|
|
1545
|
+
}
|
|
1546
|
+
function getModelCapabilities(modelId) {
|
|
1547
|
+
const known = MODEL_CAPABILITIES[modelId];
|
|
1548
|
+
if (known) {
|
|
1549
|
+
return {
|
|
1550
|
+
supportsTemperature: known.supportsTemperature ?? true,
|
|
1551
|
+
supportsThinking: known.supportsThinking ?? false,
|
|
1552
|
+
thinkingType: known.thinkingType
|
|
1553
|
+
};
|
|
1554
|
+
}
|
|
1555
|
+
if (modelId.startsWith("github-copilot/")) {
|
|
1556
|
+
return {
|
|
1557
|
+
supportsTemperature: COPILOT_DEFAULTS.supportsTemperature,
|
|
1558
|
+
supportsThinking: COPILOT_DEFAULTS.supportsThinking
|
|
1559
|
+
};
|
|
1560
|
+
}
|
|
1561
|
+
return { supportsTemperature: true, supportsThinking: false };
|
|
1562
|
+
}
|
|
1563
|
+
function getEffectiveTemperature(modelId, role, config) {
|
|
1564
|
+
const roleOverride = config.models.settings?.[role]?.temperature;
|
|
1565
|
+
if (roleOverride !== void 0) return roleOverride;
|
|
1566
|
+
const modelOverride = config.models.settings?.overrides?.[modelId]?.temperature;
|
|
1567
|
+
if (modelOverride !== void 0) return modelOverride;
|
|
1568
|
+
const capabilities = getModelCapabilities(modelId);
|
|
1569
|
+
if (!capabilities.supportsTemperature) return void 0;
|
|
1570
|
+
const family = getModelFamily(modelId);
|
|
1571
|
+
const baseTemp = MODEL_FAMILY_BASE_TEMPS[family];
|
|
1572
|
+
const adjustment = ROLE_TEMP_ADJUSTMENTS[role];
|
|
1573
|
+
const maxTemp = getMaxTemperatureForModel(modelId);
|
|
1574
|
+
return Math.max(0, Math.min(maxTemp, baseTemp + adjustment));
|
|
1575
|
+
}
|
|
1576
|
+
function getEffectiveThinkingLevel(modelId, role, config) {
|
|
1577
|
+
const roleOverride = config.models.settings?.[role]?.thinkingLevel;
|
|
1578
|
+
if (roleOverride !== void 0) return roleOverride;
|
|
1579
|
+
const modelOverride = config.models.settings?.overrides?.[modelId]?.thinkingLevel;
|
|
1580
|
+
if (modelOverride !== void 0) return modelOverride;
|
|
1581
|
+
const capabilities = getModelCapabilities(modelId);
|
|
1582
|
+
if (!capabilities.supportsThinking) return void 0;
|
|
1583
|
+
return ROLE_DEFAULT_THINKING[role];
|
|
1584
|
+
}
|
|
1585
|
+
function getProviderParams(modelId, role, config) {
|
|
1586
|
+
const result = {};
|
|
1587
|
+
const temperature = getEffectiveTemperature(modelId, role, config);
|
|
1588
|
+
if (temperature !== void 0) {
|
|
1589
|
+
result.temperature = temperature;
|
|
1590
|
+
}
|
|
1591
|
+
const thinkingLevel = getEffectiveThinkingLevel(modelId, role, config);
|
|
1592
|
+
if (thinkingLevel && thinkingLevel !== "off") {
|
|
1593
|
+
const capabilities = getModelCapabilities(modelId);
|
|
1594
|
+
switch (capabilities.thinkingType) {
|
|
1595
|
+
case "openai":
|
|
1596
|
+
result.reasoning_effort = thinkingLevel;
|
|
1597
|
+
break;
|
|
1598
|
+
case "anthropic":
|
|
1599
|
+
result.thinking_budget = thinkingLevelToTokenBudget(thinkingLevel);
|
|
1600
|
+
break;
|
|
1601
|
+
case "google":
|
|
1602
|
+
result.thinking_level = thinkingLevel;
|
|
1603
|
+
break;
|
|
1604
|
+
}
|
|
1605
|
+
}
|
|
1606
|
+
return result;
|
|
1607
|
+
}
|
|
1608
|
+
function thinkingLevelToTokenBudget(level) {
|
|
1609
|
+
switch (level) {
|
|
1610
|
+
case "low":
|
|
1611
|
+
return 4096;
|
|
1612
|
+
case "medium":
|
|
1613
|
+
return 16384;
|
|
1614
|
+
case "high":
|
|
1615
|
+
return 32768;
|
|
1616
|
+
default:
|
|
1617
|
+
return 0;
|
|
1618
|
+
}
|
|
1619
|
+
}
|
|
1620
|
+
|
|
1621
|
+
// src/cli/generators/omo-config.ts
|
|
1622
|
+
function buildMinimalConfig(answers) {
|
|
1623
|
+
const { subscriptions, models, methodology, features, advanced } = answers;
|
|
1624
|
+
return {
|
|
1625
|
+
version: "0.4.0",
|
|
1626
|
+
subscriptions: {
|
|
1627
|
+
claude: {
|
|
1628
|
+
enabled: subscriptions.hasClaude,
|
|
1629
|
+
tier: subscriptions.claudeTier || "none"
|
|
1630
|
+
},
|
|
1631
|
+
openai: {
|
|
1632
|
+
enabled: subscriptions.hasOpenAI
|
|
1633
|
+
},
|
|
1634
|
+
google: {
|
|
1635
|
+
enabled: subscriptions.hasGoogle,
|
|
1636
|
+
authMethod: subscriptions.googleAuth || "none"
|
|
1637
|
+
},
|
|
1638
|
+
githubCopilot: {
|
|
1639
|
+
enabled: subscriptions.hasGitHubCopilot,
|
|
1640
|
+
plan: subscriptions.copilotPlan,
|
|
1641
|
+
enabledModels: subscriptions.copilotEnabledModels
|
|
1642
|
+
}
|
|
1643
|
+
},
|
|
1644
|
+
models: {
|
|
1645
|
+
sisyphus: models.sisyphus,
|
|
1646
|
+
oracle: models.oracle,
|
|
1647
|
+
librarian: models.librarian,
|
|
1648
|
+
frontend: models.frontend,
|
|
1649
|
+
documentWriter: models.documentWriter,
|
|
1650
|
+
multimodalLooker: models.multimodalLooker,
|
|
1651
|
+
settings: models.settings,
|
|
1652
|
+
custom: models.custom
|
|
1653
|
+
},
|
|
1654
|
+
bmad: {
|
|
1655
|
+
defaultTrack: methodology.defaultTrack,
|
|
1656
|
+
autoStatusUpdate: methodology.autoStatusUpdate,
|
|
1657
|
+
parallelStoryLimit: advanced.parallelStoryLimit || 3
|
|
1658
|
+
},
|
|
1659
|
+
features: {
|
|
1660
|
+
bmadBridge: true,
|
|
1661
|
+
autoStatus: features.enabledFeatures.includes("auto-status"),
|
|
1662
|
+
parallelExecution: features.enabledFeatures.includes("parallel"),
|
|
1663
|
+
notifications: features.enabledFeatures.includes("notifications"),
|
|
1664
|
+
contextMonitor: features.enabledFeatures.includes("context-monitor"),
|
|
1665
|
+
commentChecker: features.enabledFeatures.includes("comment-checker"),
|
|
1666
|
+
lspTools: features.enabledFeatures.includes("lsp-tools"),
|
|
1667
|
+
autoGitOperations: false
|
|
1668
|
+
},
|
|
1669
|
+
mcps: {
|
|
1670
|
+
context7: features.mcps.includes("context7"),
|
|
1671
|
+
exa: features.mcps.includes("exa"),
|
|
1672
|
+
grepApp: features.mcps.includes("grep_app")
|
|
1673
|
+
}
|
|
1674
|
+
};
|
|
1675
|
+
}
|
|
1456
1676
|
function generateOmoConfig(answers) {
|
|
1457
1677
|
const { subscriptions, models, features, advanced } = answers;
|
|
1458
|
-
const config =
|
|
1678
|
+
const config = buildMinimalConfig(answers);
|
|
1679
|
+
const omoConfig = {
|
|
1459
1680
|
$schema: "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json"
|
|
1460
1681
|
};
|
|
1461
1682
|
if (subscriptions.hasGoogle && subscriptions.googleAuth === "antigravity") {
|
|
1462
|
-
|
|
1463
|
-
}
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
},
|
|
1473
|
-
// Research agent
|
|
1474
|
-
librarian: {
|
|
1475
|
-
model: models.librarian
|
|
1683
|
+
omoConfig.google_auth = false;
|
|
1684
|
+
}
|
|
1685
|
+
const agentConfigs = [
|
|
1686
|
+
{ role: "sisyphus", omoName: "Sisyphus", modelId: models.sisyphus },
|
|
1687
|
+
{ role: "oracle", omoName: "oracle", modelId: models.oracle },
|
|
1688
|
+
{ role: "librarian", omoName: "librarian", modelId: models.librarian },
|
|
1689
|
+
{
|
|
1690
|
+
role: "frontend",
|
|
1691
|
+
omoName: "frontend-ui-ux-engineer",
|
|
1692
|
+
modelId: models.frontend || models.sisyphus
|
|
1476
1693
|
},
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1694
|
+
{
|
|
1695
|
+
role: "documentWriter",
|
|
1696
|
+
omoName: "document-writer",
|
|
1697
|
+
modelId: models.documentWriter || models.librarian
|
|
1480
1698
|
},
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1699
|
+
{
|
|
1700
|
+
role: "multimodalLooker",
|
|
1701
|
+
omoName: "multimodal-looker",
|
|
1702
|
+
modelId: models.multimodalLooker || models.librarian
|
|
1484
1703
|
},
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1704
|
+
{ role: "explore", omoName: "explore", modelId: models.explore || models.librarian }
|
|
1705
|
+
];
|
|
1706
|
+
omoConfig.agents = {};
|
|
1707
|
+
for (const { role, omoName, modelId } of agentConfigs) {
|
|
1708
|
+
const providerParams = getProviderParams(modelId, role, config);
|
|
1709
|
+
omoConfig.agents[omoName] = {
|
|
1710
|
+
model: modelId,
|
|
1711
|
+
...providerParams
|
|
1712
|
+
};
|
|
1713
|
+
}
|
|
1714
|
+
omoConfig.agents.general = {
|
|
1715
|
+
model: models.oracle,
|
|
1716
|
+
...getProviderParams(models.oracle, "oracle", config)
|
|
1489
1717
|
};
|
|
1490
1718
|
const disabledHooks = [];
|
|
1491
1719
|
if (!features.enabledFeatures.includes("context-monitor")) {
|
|
@@ -1498,7 +1726,7 @@ function generateOmoConfig(answers) {
|
|
|
1498
1726
|
disabledHooks.push("session-notification", "background-notification");
|
|
1499
1727
|
}
|
|
1500
1728
|
if (disabledHooks.length > 0) {
|
|
1501
|
-
|
|
1729
|
+
omoConfig.disabled_hooks = disabledHooks;
|
|
1502
1730
|
}
|
|
1503
1731
|
const allMcps = ["context7", "websearch_exa", "grep_app"];
|
|
1504
1732
|
const enabledMcpIds = features.mcps.map((mcp) => {
|
|
@@ -1507,18 +1735,18 @@ function generateOmoConfig(answers) {
|
|
|
1507
1735
|
});
|
|
1508
1736
|
const disabledMcps = allMcps.filter((mcp) => !enabledMcpIds.includes(mcp));
|
|
1509
1737
|
if (disabledMcps.length > 0) {
|
|
1510
|
-
|
|
1738
|
+
omoConfig.disabled_mcps = disabledMcps;
|
|
1511
1739
|
}
|
|
1512
1740
|
if (advanced.experimental && advanced.experimental.length > 0) {
|
|
1513
|
-
|
|
1741
|
+
omoConfig.experimental = {};
|
|
1514
1742
|
if (advanced.experimental.includes("aggressive-truncation")) {
|
|
1515
|
-
|
|
1743
|
+
omoConfig.experimental.aggressive_truncation = true;
|
|
1516
1744
|
}
|
|
1517
1745
|
if (advanced.experimental.includes("auto-resume")) {
|
|
1518
|
-
|
|
1746
|
+
omoConfig.experimental.auto_resume = true;
|
|
1519
1747
|
}
|
|
1520
1748
|
}
|
|
1521
|
-
return
|
|
1749
|
+
return omoConfig;
|
|
1522
1750
|
}
|
|
1523
1751
|
|
|
1524
1752
|
// src/cli/generators/opencode-config.ts
|