diff --git a/README.ja.md b/README.ja.md
index 6221e61..a810d76 100644
--- a/README.ja.md
+++ b/README.ja.md
@@ -714,24 +714,50 @@ Oh My OpenCode は以下の場所からフックを読み込んで実行しま
### Sisyphus Agent
-有効時(デフォルト)、Sisyphus は2つのプライマリエージェントを追加し、内蔵エージェントをサブエージェントに降格させます:
+有効時(デフォルト)、Sisyphus はオプションの特殊エージェントを備えた強力なオーケストレーターを提供します:
- **Sisyphus**: プライマリオーケストレーターエージェント (Claude Opus 4.5)
-- **Planner-Sisyphus**: OpenCode の plan エージェントの全設定を実行時に継承 (description に "OhMyOpenCode version" を追加)
-- **build**: サブエージェントに降格
-- **plan**: サブエージェントに降格
+- **Builder-Sisyphus**: OhMyOpenCode 強化版のビルドエージェント(デフォルトで無効)
+- **Planner-Sisyphus**: OhMyOpenCode 強化版のプランエージェント(デフォルトで有効)
-Sisyphus を無効化して元の build/plan エージェントを復元するには:
+**設定オプション:**
```json
{
- "omo_agent": {
+ "sisyphus_agent": {
+ "disabled": false,
+ "builder_enabled": false,
+ "planner_enabled": true,
+ "replace_build": true,
+ "replace_plan": true
+ }
+}
+```
+
+**例:Builder-Sisyphus を有効化し、デフォルトのビルドモードも維持する:**
+
+```json
+{
+ "sisyphus_agent": {
+ "builder_enabled": true,
+ "replace_build": false
+ }
+}
+```
+
+これにより、Builder-Sisyphus とデフォルトのビルドエージェントの両方を同時に利用できます。
+
+**例:すべての Sisyphus オーケストレーションを無効化:**
+
+```json
+{
+ "sisyphus_agent": {
"disabled": true
}
}
```
-他のエージェント同様、Sisyphus と Planner-Sisyphus もカスタマイズ可能です:
+他のエージェント同様、Sisyphus エージェントもカスタマイズ可能です:
```json
{
@@ -740,6 +766,9 @@ Sisyphus を無効化して元の build/plan エージェントを復元する
"model": "anthropic/claude-sonnet-4",
"temperature": 0.3
},
+ "Builder-Sisyphus": {
+ "model": "anthropic/claude-opus-4"
+ },
"Planner-Sisyphus": {
"model": "openai/gpt-5.2"
}
@@ -747,9 +776,13 @@ Sisyphus を無効化して元の build/plan エージェントを復元する
}
```
-| オプション | デフォルト | 説明 |
-|------------|------------|------|
-| `disabled` | `false` | `true` の場合、Sisyphus エージェントを無効化し、元の build/plan をプライマリとして復元します。`false` (デフォルト) の場合、Sisyphus と Planner-Sisyphus がプライマリエージェントになります。 |
+| オプション | デフォルト | 説明 |
+| ------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `disabled` | `false` | `true` の場合、すべての Sisyphus オーケストレーションを無効化し、元の build/plan をプライマリとして復元します。 |
+| `builder_enabled` | `false` | `true` の場合、Builder-Sisyphus エージェント(OhMyOpenCode 強化版ビルドモード)を有効化します。デフォルトの OpenCode ビルド体験を維持するため、デフォルトでは無効です。 |
+| `planner_enabled` | `true` | `true` の場合、Planner-Sisyphus エージェント(OhMyOpenCode 強化版プランモード)を有効化します。デフォルトで有効です。 |
+| `replace_build` | `true` | `true` の場合、デフォルトのビルドエージェントをサブエージェントモードに降格させます。`false` に設定すると、Builder-Sisyphus とデフォルトのビルドの両方を利用できます。 |
+| `replace_plan` | `true` | `true` の場合、デフォルトのプランエージェントをサブエージェントモードに降格させます。`false` に設定すると、Planner-Sisyphus とデフォルトのプランの両方を利用できます。 |
### Hooks
diff --git a/README.ko.md b/README.ko.md
index 43035e0..d485cc7 100644
--- a/README.ko.md
+++ b/README.ko.md
@@ -708,14 +708,40 @@ Schema 자동 완성이 지원됩니다:
### Sisyphus Agent
-활성화 시(기본값), oh-my-opencode 는 두 개의 primary 에이전트를 추가하고 내장 에이전트를 subagent로 강등합니다:
+활성화 시 (기본값), Sisyphus는 옵션으로 선택 가능한 특화 에이전트들과 함께 강력한 오케스트레이터를 제공합니다:
- **Sisyphus**: Primary 오케스트레이터 에이전트 (Claude Opus 4.5)
-- **Planner-Sisyphus**: OpenCode plan 에이전트의 모든 설정을 런타임에 상속 (description에 "OhMyOpenCode version" 추가)
-- **build**: subagent로 강등
-- **plan**: subagent로 강등
+- **Builder-Sisyphus**: OhMyOpenCode 강화 버전 빌드 에이전트 (기본적으로 비활성화)
+- **Planner-Sisyphus**: OhMyOpenCode 강화 버전 플랜 에이전트 (기본적으로 활성화)
-Sisyphus 를 비활성화하고 원래 build/plan 에이전트를 복원하려면:
+**설정 옵션:**
+
+```json
+{
+ "sisyphus_agent": {
+ "disabled": false,
+ "builder_enabled": false,
+ "planner_enabled": true,
+ "replace_build": true,
+ "replace_plan": true
+ }
+}
+```
+
+**예시: Builder-Sisyphus를 활성화하면서 기본 빌드 모드도 유지하기:**
+
+```json
+{
+ "sisyphus_agent": {
+ "builder_enabled": true,
+ "replace_build": false
+ }
+}
+```
+
+이렇게 하면 Builder-Sisyphus와 기본 빌드 에이전트를 동시에 사용할 수 있습니다.
+
+**예시: 모든 Sisyphus 오케스트레이션 비활성화:**
```json
{
@@ -725,7 +751,7 @@ Sisyphus 를 비활성화하고 원래 build/plan 에이전트를 복원하려
}
```
-다른 에이전트처럼 Sisyphus 와 Planner-Sisyphus도 커스터마이징할 수 있습니다:
+다른 에이전트처럼 Sisyphus 에이전트들도 커스터마이징할 수 있습니다:
```json
{
@@ -734,6 +760,9 @@ Sisyphus 를 비활성화하고 원래 build/plan 에이전트를 복원하려
"model": "anthropic/claude-sonnet-4",
"temperature": 0.3
},
+ "Builder-Sisyphus": {
+ "model": "anthropic/claude-opus-4"
+ },
"Planner-Sisyphus": {
"model": "openai/gpt-5.2"
}
@@ -741,9 +770,13 @@ Sisyphus 를 비활성화하고 원래 build/plan 에이전트를 복원하려
}
```
-| 옵션 | 기본값 | 설명 |
-| ---------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
-| `disabled` | `false` | `true`면 Sisyphus 에이전트를 비활성화하고 원래 build/plan을 primary로 복원합니다. `false`(기본값)면 Sisyphus와 Planner-Sisyphus가 primary 에이전트가 됩니다. |
+| 옵션 | 기본값 | 설명 |
+| ------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `disabled` | `false` | `true`면 모든 Sisyphus 오케스트레이션을 비활성화하고 원래 build/plan을 primary로 복원합니다. |
+| `builder_enabled` | `false` | `true`면 Builder-Sisyphus 에이전트 (OhMyOpenCode 강화 빌드 모드)를 활성화합니다. 기본 OpenCode 빌드 경험을 보존하기 위해 기본적으로 비활성화되어 있습니다. |
+| `planner_enabled` | `true` | `true`면 Planner-Sisyphus 에이전트 (OhMyOpenCode 강화 플랜 모드)를 활성화합니다. 기본적으로 활성화되어 있습니다. |
+| `replace_build` | `true` | `true`면 기본 빌드 에이전트를 subagent 모드로 강등시킵니다. `false`로 설정하면 Builder-Sisyphus와 기본 빌드를 모두 사용할 수 있습니다. |
+| `replace_plan` | `true` | `true`면 기본 플랜 에이전트를 subagent 모드로 강등시킵니다. `false`로 설정하면 Planner-Sisyphus와 기본 플랜을 모두 사용할 수 있습니다. |
### Hooks
diff --git a/README.md b/README.md
index fece9eb..8a9c056 100644
--- a/README.md
+++ b/README.md
@@ -780,24 +780,50 @@ Available agents: `oracle`, `librarian`, `explore`, `frontend-ui-ux-engineer`, `
### Sisyphus Agent
-When enabled (default), Sisyphus adds two primary agents and demotes the built-in agents to subagents:
+When enabled (default), Sisyphus provides a powerful orchestrator with optional specialized agents:
- **Sisyphus**: Primary orchestrator agent (Claude Opus 4.5)
-- **Planner-Sisyphus**: Inherits all settings from OpenCode's plan agent at runtime (description appended with "OhMyOpenCode version")
-- **build**: Demoted to subagent
-- **plan**: Demoted to subagent
+- **Builder-Sisyphus**: Optional build agent with OhMyOpenCode enhancements (disabled by default)
+- **Planner-Sisyphus**: Plan agent with OhMyOpenCode enhancements (enabled by default)
-To disable Sisyphus and restore the original build/plan agents:
+**Configuration Options:**
```json
{
- "omo_agent": {
+ "sisyphus_agent": {
+ "disabled": false,
+ "builder_enabled": false,
+ "planner_enabled": true,
+ "replace_build": true,
+ "replace_plan": true
+ }
+}
+```
+
+**Example: Enable Builder-Sisyphus and keep default build mode:**
+
+```json
+{
+ "sisyphus_agent": {
+ "builder_enabled": true,
+ "replace_build": false
+ }
+}
+```
+
+This allows you to have both Builder-Sisyphus AND the default build agent available simultaneously.
+
+**Example: Disable all Sisyphus orchestration:**
+
+```json
+{
+ "sisyphus_agent": {
"disabled": true
}
}
```
-You can also customize Sisyphus and Planner-Sisyphus like other agents:
+You can also customize Sisyphus agents like other agents:
```json
{
@@ -806,6 +832,9 @@ You can also customize Sisyphus and Planner-Sisyphus like other agents:
"model": "anthropic/claude-sonnet-4",
"temperature": 0.3
},
+ "Builder-Sisyphus": {
+ "model": "anthropic/claude-opus-4"
+ },
"Planner-Sisyphus": {
"model": "openai/gpt-5.2"
}
@@ -813,9 +842,13 @@ You can also customize Sisyphus and Planner-Sisyphus like other agents:
}
```
-| Option | Default | Description |
-| ---------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
-| `disabled` | `false` | When `true`, disables Sisyphus agents and restores original build/plan as primary. When `false` (default), Sisyphus and Planner-Sisyphus become primary agents. |
+| Option | Default | Description |
+| ------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `disabled` | `false` | When `true`, disables all Sisyphus orchestration and restores original build/plan as primary. |
+| `builder_enabled` | `false` | When `true`, enables Builder-Sisyphus agent (OhMyOpenCode enhanced build mode). Disabled by default to preserve default OpenCode build experience. |
+| `planner_enabled` | `true` | When `true`, enables Planner-Sisyphus agent (OhMyOpenCode enhanced plan mode). Enabled by default. |
+| `replace_build` | `true` | When `true`, demotes default build agent to subagent mode. Set to `false` to keep both Builder-Sisyphus and default build available. |
+| `replace_plan` | `true` | When `true`, demotes default plan agent to subagent mode. Set to `false` to keep both Planner-Sisyphus and default plan available. |
### Hooks
diff --git a/README.zh-cn.md b/README.zh-cn.md
index 02461c2..4ad6da9 100644
--- a/README.zh-cn.md
+++ b/README.zh-cn.md
@@ -714,24 +714,50 @@ Agent 爽了,你自然也爽。但我还想直接让你爽。
### Sisyphus Agent
-默认开启。Sisyphus 会加两个主 Agent,把原来的降级成小弟:
+默认开启。Sisyphus 提供一个强力的编排器,带可选的专门 Agent:
- **Sisyphus**:主编排 Agent(Claude Opus 4.5)
-- **Planner-Sisyphus**:运行时继承 OpenCode plan Agent 所有设置(描述里加了"OhMyOpenCode version")
-- **build**:降级为子 Agent
-- **plan**:降级为子 Agent
+- **Builder-Sisyphus**:OhMyOpenCode 增强版构建 Agent(默认禁用)
+- **Planner-Sisyphus**:OhMyOpenCode 增强版计划 Agent(默认启用)
-想禁用 Sisyphus 恢复原来的?
+**配置选项:**
```json
{
- "omo_agent": {
+ "sisyphus_agent": {
+ "disabled": false,
+ "builder_enabled": false,
+ "planner_enabled": true,
+ "replace_build": true,
+ "replace_plan": true
+ }
+}
+```
+
+**示例:启用 Builder-Sisyphus,同时保留默认构建模式:**
+
+```json
+{
+ "sisyphus_agent": {
+ "builder_enabled": true,
+ "replace_build": false
+ }
+}
+```
+
+这样你就能同时使用 Builder-Sisyphus 和默认构建 Agent。
+
+**示例:禁用所有 Sisyphus 编排:**
+
+```json
+{
+ "sisyphus_agent": {
"disabled": true
}
}
```
-Sisyphus 和 Planner-Sisyphus 也能自定义:
+Sisyphus Agent 也能自定义:
```json
{
@@ -740,6 +766,9 @@ Sisyphus 和 Planner-Sisyphus 也能自定义:
"model": "anthropic/claude-sonnet-4",
"temperature": 0.3
},
+ "Builder-Sisyphus": {
+ "model": "anthropic/claude-opus-4"
+ },
"Planner-Sisyphus": {
"model": "openai/gpt-5.2"
}
@@ -747,9 +776,13 @@ Sisyphus 和 Planner-Sisyphus 也能自定义:
}
```
-| 选项 | 默认值 | 说明 |
-| ---------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
-| `disabled` | `false` | 设为 `true` 就禁用 Sisyphus,恢复原来的 build/plan。设为 `false`(默认)就是 Sisyphus 和 Planner-Sisyphus 掌权。 |
+| 选项 | 默认值 | 说明 |
+| ------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `disabled` | `false` | 设为 `true` 就禁用所有 Sisyphus 编排,恢复原来的 build/plan。 |
+| `builder_enabled` | `false` | 设为 `true` 就启用 Builder-Sisyphus Agent(OhMyOpenCode 增强构建模式)。为了保留默认 OpenCode 构建体验,默认禁用。 |
+| `planner_enabled` | `true` | 设为 `true` 就启用 Planner-Sisyphus Agent(OhMyOpenCode 增强计划模式)。默认启用。 |
+| `replace_build` | `true` | 设为 `true` 就把默认构建 Agent 降级为子 Agent 模式。设为 `false` 可以同时保留 Builder-Sisyphus 和默认构建。 |
+| `replace_plan` | `true` | 设为 `true` 就把默认计划 Agent 降级为子 Agent 模式。设为 `false` 可以同时保留 Planner-Sisyphus 和默认计划。 |
### Hooks
diff --git a/assets/oh-my-opencode.schema.json b/assets/oh-my-opencode.schema.json
index 949910e..b2f1ebc 100644
--- a/assets/oh-my-opencode.schema.json
+++ b/assets/oh-my-opencode.schema.json
@@ -408,6 +408,120 @@
}
}
},
+ "Builder-Sisyphus": {
+ "type": "object",
+ "properties": {
+ "model": {
+ "type": "string"
+ },
+ "temperature": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 2
+ },
+ "top_p": {
+ "type": "number",
+ "minimum": 0,
+ "maximum": 1
+ },
+ "prompt": {
+ "type": "string"
+ },
+ "prompt_append": {
+ "type": "string"
+ },
+ "tools": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "type": "boolean"
+ }
+ },
+ "disable": {
+ "type": "boolean"
+ },
+ "description": {
+ "type": "string"
+ },
+ "mode": {
+ "type": "string",
+ "enum": [
+ "subagent",
+ "primary",
+ "all"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "pattern": "^#[0-9A-Fa-f]{6}$"
+ },
+ "permission": {
+ "type": "object",
+ "properties": {
+ "edit": {
+ "type": "string",
+ "enum": [
+ "ask",
+ "allow",
+ "deny"
+ ]
+ },
+ "bash": {
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": [
+ "ask",
+ "allow",
+ "deny"
+ ]
+ },
+ {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {
+ "type": "string",
+ "enum": [
+ "ask",
+ "allow",
+ "deny"
+ ]
+ }
+ }
+ ]
+ },
+ "webfetch": {
+ "type": "string",
+ "enum": [
+ "ask",
+ "allow",
+ "deny"
+ ]
+ },
+ "doom_loop": {
+ "type": "string",
+ "enum": [
+ "ask",
+ "allow",
+ "deny"
+ ]
+ },
+ "external_directory": {
+ "type": "string",
+ "enum": [
+ "ask",
+ "allow",
+ "deny"
+ ]
+ }
+ }
+ }
+ }
+ },
"Planner-Sisyphus": {
"type": "object",
"properties": {
@@ -1236,6 +1350,18 @@
"properties": {
"disabled": {
"type": "boolean"
+ },
+ "builder_enabled": {
+ "type": "boolean"
+ },
+ "planner_enabled": {
+ "type": "boolean"
+ },
+ "replace_build": {
+ "type": "boolean"
+ },
+ "replace_plan": {
+ "type": "boolean"
}
}
},
diff --git a/src/agents/build-prompt.ts b/src/agents/build-prompt.ts
new file mode 100644
index 0000000..f1b0952
--- /dev/null
+++ b/src/agents/build-prompt.ts
@@ -0,0 +1,68 @@
+/**
+ * OpenCode's default build agent system prompt.
+ *
+ * This prompt enables FULL EXECUTION mode for the build agent, allowing file
+ * modifications, command execution, and system changes while focusing on
+ * implementation and execution.
+ *
+ * Inspired by OpenCode's build agent behavior.
+ *
+ * @see https://github.com/sst/opencode/blob/6f9bea4e1f3d139feefd0f88de260b04f78caaef/packages/opencode/src/session/prompt/build-switch.txt
+ * @see https://github.com/sst/opencode/blob/6f9bea4e1f3d139feefd0f88de260b04f78caaef/packages/opencode/src/agent/agent.ts#L118-L125
+ */
+export const BUILD_SYSTEM_PROMPT = `
+# Build Mode - System Reminder
+
+BUILD MODE ACTIVE - you are in EXECUTION phase. Your responsibility is to:
+- Implement features and make code changes
+- Execute commands and run tests
+- Fix bugs and refactor code
+- Deploy and build systems
+- Make all necessary file modifications
+
+You have FULL permissions to edit files, run commands, and make system changes.
+This is the implementation phase - execute decisively and thoroughly.
+
+---
+
+## Responsibility
+
+Your current responsibility is to implement, build, and execute. You should:
+- Write and modify code to accomplish the user's goals
+- Run tests and builds to verify your changes
+- Fix errors and issues that arise
+- Use all available tools to complete the task efficiently
+- Delegate to specialized agents when appropriate for better results
+
+**NOTE:** You should ask the user for clarification when requirements are ambiguous,
+but once the path is clear, execute confidently. The goal is to deliver working,
+tested, production-ready solutions.
+
+---
+
+## Important
+
+The user wants you to execute and implement. You SHOULD make edits, run necessary
+tools, and make changes to accomplish the task. Use your full capabilities to
+deliver excellent results.
+
+`
+
+/**
+ * OpenCode's default build agent permission configuration.
+ *
+ * Allows the build agent full execution permissions:
+ * - edit: "ask" - Can modify files with confirmation
+ * - bash: "ask" - Can execute commands with confirmation
+ * - webfetch: "allow" - Can fetch web content
+ *
+ * This provides balanced permissions - powerful but with safety checks.
+ *
+ * @see https://github.com/sst/opencode/blob/6f9bea4e1f3d139feefd0f88de260b04f78caaef/packages/opencode/src/agent/agent.ts#L57-L68
+ * @see https://github.com/sst/opencode/blob/6f9bea4e1f3d139feefd0f88de260b04f78caaef/packages/opencode/src/agent/agent.ts#L118-L125
+ */
+export const BUILD_PERMISSION = {
+ edit: "ask" as const,
+ bash: "ask" as const,
+ webfetch: "allow" as const,
+}
diff --git a/src/config/schema.ts b/src/config/schema.ts
index f01bfd4..2cbee65 100644
--- a/src/config/schema.ts
+++ b/src/config/schema.ts
@@ -30,6 +30,7 @@ export const OverridableAgentNameSchema = z.enum([
"build",
"plan",
"Sisyphus",
+ "Builder-Sisyphus",
"Planner-Sisyphus",
"oracle",
"librarian",
@@ -86,6 +87,7 @@ export const AgentOverridesSchema = z.object({
build: AgentOverrideConfigSchema.optional(),
plan: AgentOverrideConfigSchema.optional(),
Sisyphus: AgentOverrideConfigSchema.optional(),
+ "Builder-Sisyphus": AgentOverrideConfigSchema.optional(),
"Planner-Sisyphus": AgentOverrideConfigSchema.optional(),
oracle: AgentOverrideConfigSchema.optional(),
librarian: AgentOverrideConfigSchema.optional(),
@@ -105,6 +107,10 @@ export const ClaudeCodeConfigSchema = z.object({
export const SisyphusAgentConfigSchema = z.object({
disabled: z.boolean().optional(),
+ builder_enabled: z.boolean().optional(),
+ planner_enabled: z.boolean().optional(),
+ replace_build: z.boolean().optional(),
+ replace_plan: z.boolean().optional(),
})
export const ExperimentalConfigSchema = z.object({
diff --git a/src/index.ts b/src/index.ts
index cbb21a4..18d8be1 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -50,6 +50,7 @@ import { createBuiltinMcps } from "./mcp";
import { OhMyOpenCodeConfigSchema, type OhMyOpenCodeConfig, type HookName } from "./config";
import { log, deepMerge, getUserConfigDir, addConfigLoadError } from "./shared";
import { PLAN_SYSTEM_PROMPT, PLAN_PERMISSION } from "./agents/plan-prompt";
+import { BUILD_SYSTEM_PROMPT, BUILD_PERMISSION } from "./agents/build-prompt";
import * as fs from "fs";
import * as path from "path";
@@ -379,34 +380,60 @@ const OhMyOpenCodePlugin: Plugin = async (ctx) => {
const projectAgents = (pluginConfig.claude_code?.agents ?? true) ? loadProjectAgents() : {};
const isSisyphusEnabled = pluginConfig.sisyphus_agent?.disabled !== true;
+ const builderEnabled = pluginConfig.sisyphus_agent?.builder_enabled ?? false;
+ const plannerEnabled = pluginConfig.sisyphus_agent?.planner_enabled ?? true;
+ const replaceBuild = pluginConfig.sisyphus_agent?.replace_build ?? true;
+ const replacePlan = pluginConfig.sisyphus_agent?.replace_plan ?? true;
if (isSisyphusEnabled && builtinAgents.Sisyphus) {
// TODO: When OpenCode releases `default_agent` config option (PR #5313),
// use `config.default_agent = "Sisyphus"` instead of demoting build/plan.
// Tracking: https://github.com/sst/opencode/pull/5313
- const { name: _planName, ...planConfigWithoutName } = config.agent?.plan ?? {};
- const plannerSisyphusOverride = pluginConfig.agents?.["Planner-Sisyphus"];
- const plannerSisyphusBase = {
- ...planConfigWithoutName,
- prompt: PLAN_SYSTEM_PROMPT,
- permission: PLAN_PERMISSION,
- description: `${config.agent?.plan?.description ?? "Plan agent"} (OhMyOpenCode version)`,
- color: config.agent?.plan?.color ?? "#6495ED",
+
+ const agentConfig: Record = {
+ Sisyphus: builtinAgents.Sisyphus,
};
- const plannerSisyphusConfig = plannerSisyphusOverride
- ? { ...plannerSisyphusBase, ...plannerSisyphusOverride }
- : plannerSisyphusBase;
+ if (builderEnabled) {
+ const { name: _buildName, ...buildConfigWithoutName } = config.agent?.build ?? {};
+ const builderSisyphusOverride = pluginConfig.agents?.["Builder-Sisyphus"];
+ const builderSisyphusBase = {
+ ...buildConfigWithoutName,
+ prompt: BUILD_SYSTEM_PROMPT,
+ permission: BUILD_PERMISSION,
+ description: `${config.agent?.build?.description ?? "Build agent"} (OhMyOpenCode version)`,
+ color: config.agent?.build?.color ?? "#32CD32",
+ };
+
+ agentConfig["Builder-Sisyphus"] = builderSisyphusOverride
+ ? { ...builderSisyphusBase, ...builderSisyphusOverride }
+ : builderSisyphusBase;
+ }
+
+ if (plannerEnabled) {
+ const { name: _planName, ...planConfigWithoutName } = config.agent?.plan ?? {};
+ const plannerSisyphusOverride = pluginConfig.agents?.["Planner-Sisyphus"];
+ const plannerSisyphusBase = {
+ ...planConfigWithoutName,
+ prompt: PLAN_SYSTEM_PROMPT,
+ permission: PLAN_PERMISSION,
+ description: `${config.agent?.plan?.description ?? "Plan agent"} (OhMyOpenCode version)`,
+ color: config.agent?.plan?.color ?? "#6495ED",
+ };
+
+ agentConfig["Planner-Sisyphus"] = plannerSisyphusOverride
+ ? { ...plannerSisyphusBase, ...plannerSisyphusOverride }
+ : plannerSisyphusBase;
+ }
config.agent = {
- Sisyphus: builtinAgents.Sisyphus,
- "Planner-Sisyphus": plannerSisyphusConfig,
+ ...agentConfig,
...Object.fromEntries(Object.entries(builtinAgents).filter(([k]) => k !== "Sisyphus")),
...userAgents,
...projectAgents,
...config.agent,
- build: { ...config.agent?.build, mode: "subagent" },
- plan: { ...config.agent?.plan, mode: "subagent" },
+ ...(replaceBuild ? { build: { ...config.agent?.build, mode: "subagent" } } : {}),
+ ...(replacePlan ? { plan: { ...config.agent?.plan, mode: "subagent" } } : {}),
};
} else {
config.agent = {