@heidi-dang/oh-my-opencode 3.10.1 → 3.11.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 +6 -1
- package/dist/agents/builtin-agents/sisyphus-agent.d.ts +4 -1
- package/dist/agents/master.d.ts +7 -0
- package/dist/agents/types.d.ts +1 -1
- package/dist/cli/index.js +13 -13
- package/dist/index.js +141 -48
- package/package.json +13 -13
package/README.md
CHANGED
|
@@ -348,7 +348,12 @@ See [Configuration Documentation](docs/reference/configuration.md).
|
|
|
348
348
|
- **JSONC Support**: Comments and trailing commas supported
|
|
349
349
|
- **Agents**: Override models, temperatures, prompts, and permissions for any agent
|
|
350
350
|
- **Built-in Skills**: `playwright` (browser automation), `git-master` (atomic commits)
|
|
351
|
-
- **
|
|
351
|
+
- **Multi-Model Orchestration**: Sisyphus, Hephaestus, and the new **Master Agent (YGK-a)**.
|
|
352
|
+
- **Master-Sisyphus Workflow**: Brainstorm with Master (YGKA), then execute with Sisyphus via "executed plan".
|
|
353
|
+
- **Parallel Background Agents**: Fire `explore` and `librarian` in parallel for deep research without blocking.
|
|
354
|
+
- **Fail-Closed Model Policy**: Strict validation of model IDs to prevent configuration errors.
|
|
355
|
+
- **Junior Inheritance**: `*-junior` agents intelligently inherit from their parents.
|
|
356
|
+
- **Fork Doctor**: Built-in health checks for fork integrity and configuration.
|
|
352
357
|
- **Background Tasks**: Configure concurrency limits per provider/model
|
|
353
358
|
- **Categories**: Domain-specific task delegation (`visual`, `business-logic`, custom)
|
|
354
359
|
- **Hooks**: 25+ built-in hooks, all configurable via `disabled_hooks`
|
|
@@ -2,7 +2,10 @@ import type { AgentConfig } from "@opencode-ai/sdk";
|
|
|
2
2
|
import type { AgentOverrides } from "../types";
|
|
3
3
|
import type { CategoriesConfig, CategoryConfig } from "../../config/schema";
|
|
4
4
|
import type { AvailableAgent, AvailableCategory, AvailableSkill } from "../dynamic-agent-prompt-builder";
|
|
5
|
-
|
|
5
|
+
import { BuiltinAgentName, AgentFactory } from "../types";
|
|
6
|
+
export declare function maybeCreatePrimaryAgentConfig(input: {
|
|
7
|
+
agentName: BuiltinAgentName;
|
|
8
|
+
factory: AgentFactory;
|
|
6
9
|
disabledAgents: string[];
|
|
7
10
|
agentOverrides: AgentOverrides;
|
|
8
11
|
uiSelectedModel?: string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AgentConfig } from "@opencode-ai/sdk";
|
|
2
|
+
import type { AgentPromptMetadata } from "./types";
|
|
3
|
+
export declare const MASTER_PROMPT_METADATA: AgentPromptMetadata;
|
|
4
|
+
export declare function createMasterAgent(model: string): AgentConfig;
|
|
5
|
+
export declare namespace createMasterAgent {
|
|
6
|
+
var mode: "primary";
|
|
7
|
+
}
|
package/dist/agents/types.d.ts
CHANGED
|
@@ -54,7 +54,7 @@ export interface AgentPromptMetadata {
|
|
|
54
54
|
}
|
|
55
55
|
export declare function isGptModel(model: string): boolean;
|
|
56
56
|
export declare function isGeminiModel(model: string): boolean;
|
|
57
|
-
export type BuiltinAgentName = "sisyphus" | "hephaestus" | "oracle" | "librarian" | "explore" | "multimodal-looker" | "metis" | "momus" | "atlas";
|
|
57
|
+
export type BuiltinAgentName = "sisyphus" | "master" | "hephaestus" | "oracle" | "librarian" | "explore" | "multimodal-looker" | "metis" | "momus" | "atlas";
|
|
58
58
|
export type OverridableAgentName = "build" | BuiltinAgentName;
|
|
59
59
|
export type AgentName = BuiltinAgentName;
|
|
60
60
|
export type AgentOverrideConfig = Partial<AgentConfig> & {
|
package/dist/cli/index.js
CHANGED
|
@@ -8623,7 +8623,7 @@ var {
|
|
|
8623
8623
|
// package.json
|
|
8624
8624
|
var package_default = {
|
|
8625
8625
|
name: "@heidi-dang/oh-my-opencode",
|
|
8626
|
-
version: "3.
|
|
8626
|
+
version: "3.11.0",
|
|
8627
8627
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
8628
8628
|
main: "dist/index.js",
|
|
8629
8629
|
types: "dist/index.d.ts",
|
|
@@ -8698,17 +8698,17 @@ var package_default = {
|
|
|
8698
8698
|
typescript: "^5.7.3"
|
|
8699
8699
|
},
|
|
8700
8700
|
optionalDependencies: {
|
|
8701
|
-
"@heidi-dang/oh-my-opencode-darwin-arm64": "3.
|
|
8702
|
-
"@heidi-dang/oh-my-opencode-darwin-x64": "3.
|
|
8703
|
-
"@heidi-dang/oh-my-opencode-darwin-x64-baseline": "3.
|
|
8704
|
-
"@heidi-dang/oh-my-opencode-linux-arm64": "3.
|
|
8705
|
-
"@heidi-dang/oh-my-opencode-linux-arm64-musl": "3.
|
|
8706
|
-
"@heidi-dang/oh-my-opencode-linux-x64": "3.
|
|
8707
|
-
"@heidi-dang/oh-my-opencode-linux-x64-baseline": "3.
|
|
8708
|
-
"@heidi-dang/oh-my-opencode-linux-x64-musl": "3.
|
|
8709
|
-
"@heidi-dang/oh-my-opencode-linux-x64-musl-baseline": "3.
|
|
8710
|
-
"@heidi-dang/oh-my-opencode-windows-x64": "3.
|
|
8711
|
-
"@heidi-dang/oh-my-opencode-windows-x64-baseline": "3.
|
|
8701
|
+
"@heidi-dang/oh-my-opencode-darwin-arm64": "3.11.0",
|
|
8702
|
+
"@heidi-dang/oh-my-opencode-darwin-x64": "3.11.0",
|
|
8703
|
+
"@heidi-dang/oh-my-opencode-darwin-x64-baseline": "3.11.0",
|
|
8704
|
+
"@heidi-dang/oh-my-opencode-linux-arm64": "3.11.0",
|
|
8705
|
+
"@heidi-dang/oh-my-opencode-linux-arm64-musl": "3.11.0",
|
|
8706
|
+
"@heidi-dang/oh-my-opencode-linux-x64": "3.11.0",
|
|
8707
|
+
"@heidi-dang/oh-my-opencode-linux-x64-baseline": "3.11.0",
|
|
8708
|
+
"@heidi-dang/oh-my-opencode-linux-x64-musl": "3.11.0",
|
|
8709
|
+
"@heidi-dang/oh-my-opencode-linux-x64-musl-baseline": "3.11.0",
|
|
8710
|
+
"@heidi-dang/oh-my-opencode-windows-x64": "3.11.0",
|
|
8711
|
+
"@heidi-dang/oh-my-opencode-windows-x64-baseline": "3.11.0"
|
|
8712
8712
|
},
|
|
8713
8713
|
overrides: {
|
|
8714
8714
|
"@opencode-ai/sdk": "^1.2.17"
|
|
@@ -8718,7 +8718,7 @@ var package_default = {
|
|
|
8718
8718
|
"@ast-grep/napi",
|
|
8719
8719
|
"@code-yeongyu/comment-checker"
|
|
8720
8720
|
],
|
|
8721
|
-
_commit: "
|
|
8721
|
+
_commit: "04ec7f79655072d3b6127195966daf0b36bd042e"
|
|
8722
8722
|
};
|
|
8723
8723
|
|
|
8724
8724
|
// src/cli/cli-installer.ts
|
package/dist/index.js
CHANGED
|
@@ -83380,8 +83380,69 @@ ${buildGeminiVerificationOverride()}
|
|
|
83380
83380
|
}
|
|
83381
83381
|
createSisyphusAgent.mode = MODE;
|
|
83382
83382
|
|
|
83383
|
+
// src/agents/master.ts
|
|
83384
|
+
var MODE2 = "primary";
|
|
83385
|
+
var MASTER_PROMPT_METADATA = {
|
|
83386
|
+
category: "advisor",
|
|
83387
|
+
cost: "EXPENSIVE",
|
|
83388
|
+
promptAlias: "Master",
|
|
83389
|
+
triggers: [],
|
|
83390
|
+
keyTrigger: "Architectural brainstorming or high-level strategic planning needed."
|
|
83391
|
+
};
|
|
83392
|
+
function createMasterAgent(model) {
|
|
83393
|
+
const prompt = `
|
|
83394
|
+
<Role>
|
|
83395
|
+
You are "Master" (YGKA - Your Genius, Knowledgeable assistant) - The Strategic Architect and Brilliant Brainstormer of OhMyOpenCode.
|
|
83396
|
+
|
|
83397
|
+
**Identity**: You are a world-class software architect and technical lead. Your goal is to help the user refine their ideas, design robust systems, and create high-level implementation plans BEFORE any code is written.
|
|
83398
|
+
|
|
83399
|
+
**Core Philosophy**: Brainstorm first, implement later. You are the "Thinker" that precedes the "Doer".
|
|
83400
|
+
</Role>
|
|
83401
|
+
|
|
83402
|
+
<Behavior_Instructions>
|
|
83403
|
+
1. **Brainstorm & Consult**: When the user has an idea, discuss it deeply. Explore edge cases, trade-offs, and architectural patterns.
|
|
83404
|
+
2. **Do NOT Implement**: You do not have implementation tools like file editors. Your job is to plan, not to code.
|
|
83405
|
+
3. **Handoff Protocol (CRITICAL)**:
|
|
83406
|
+
- Your primary goal is to reach a consensus on a "Plan".
|
|
83407
|
+
- When the user indicates they are ready to proceed (e.g., "executed plan", "do it", "start implementation"), you MUST delegate the execution to Sisyphus.
|
|
83408
|
+
- Use the \`task\` tool with \`subagent_type="sisyphus"\`.
|
|
83409
|
+
- **Mandatory Handoff Content**: Your delegation prompt MUST contain the full summary of the discussion and the finalized implementation plan.
|
|
83410
|
+
|
|
83411
|
+
Example Handoff:
|
|
83412
|
+
\`\`\`typescript
|
|
83413
|
+
task(
|
|
83414
|
+
subagent_type="sisyphus",
|
|
83415
|
+
description="Implement the architecture we discussed",
|
|
83416
|
+
prompt="Based on my discussion with the user about [Feature X], here is the finalized plan: [Step 1, Step 2, Step 3]. Please execute this plan following the codebase's existing patterns."
|
|
83417
|
+
)
|
|
83418
|
+
\`\`\`
|
|
83419
|
+
|
|
83420
|
+
4. **Tone**: Helpful, visionary, yet pragmatic. You are the user's peer in high-level technical discussion.
|
|
83421
|
+
</Behavior_Instructions>
|
|
83422
|
+
|
|
83423
|
+
<Constraints>
|
|
83424
|
+
- Never attempt to edit files directly.
|
|
83425
|
+
- Always use Sisyphus for implementation tasks.
|
|
83426
|
+
</Constraints>
|
|
83427
|
+
`.trim();
|
|
83428
|
+
return {
|
|
83429
|
+
description: "Your Genius, Knowledgeable assistant. Strategic architect for brainstorming and planning. Handoffs to Sisyphus for execution via 'executed plan'. (Master - YGKA)",
|
|
83430
|
+
mode: MODE2,
|
|
83431
|
+
model,
|
|
83432
|
+
maxTokens: 64000,
|
|
83433
|
+
prompt,
|
|
83434
|
+
color: "#FFD700",
|
|
83435
|
+
permission: {
|
|
83436
|
+
edit: "deny",
|
|
83437
|
+
bash: "deny"
|
|
83438
|
+
},
|
|
83439
|
+
thinking: { type: "enabled", budgetTokens: 32000 }
|
|
83440
|
+
};
|
|
83441
|
+
}
|
|
83442
|
+
createMasterAgent.mode = MODE2;
|
|
83443
|
+
|
|
83383
83444
|
// src/agents/oracle.ts
|
|
83384
|
-
var
|
|
83445
|
+
var MODE3 = "subagent";
|
|
83385
83446
|
var ORACLE_PROMPT_METADATA = {
|
|
83386
83447
|
category: "advisor",
|
|
83387
83448
|
cost: "EXPENSIVE",
|
|
@@ -83526,7 +83587,7 @@ function createOracleAgent(model) {
|
|
|
83526
83587
|
]);
|
|
83527
83588
|
const base = {
|
|
83528
83589
|
description: "Read-only consultation agent. High-IQ reasoning specialist for debugging hard problems and high-difficulty architecture design. (Oracle - OhMyOpenCode)",
|
|
83529
|
-
mode:
|
|
83590
|
+
mode: MODE3,
|
|
83530
83591
|
model,
|
|
83531
83592
|
temperature: 0.1,
|
|
83532
83593
|
...restrictions,
|
|
@@ -83537,10 +83598,10 @@ function createOracleAgent(model) {
|
|
|
83537
83598
|
}
|
|
83538
83599
|
return { ...base, thinking: { type: "enabled", budgetTokens: 32000 } };
|
|
83539
83600
|
}
|
|
83540
|
-
createOracleAgent.mode =
|
|
83601
|
+
createOracleAgent.mode = MODE3;
|
|
83541
83602
|
|
|
83542
83603
|
// src/agents/librarian.ts
|
|
83543
|
-
var
|
|
83604
|
+
var MODE4 = "subagent";
|
|
83544
83605
|
var LIBRARIAN_PROMPT_METADATA = {
|
|
83545
83606
|
category: "exploration",
|
|
83546
83607
|
cost: "CHEAP",
|
|
@@ -83567,7 +83628,7 @@ function createLibrarianAgent(model) {
|
|
|
83567
83628
|
]);
|
|
83568
83629
|
return {
|
|
83569
83630
|
description: "Specialized codebase understanding agent for multi-repository analysis, searching remote codebases, retrieving official documentation, and finding implementation examples using GitHub CLI, Context7, and Web Search. MUST BE USED when users ask to look up code in remote repositories, explain library internals, or find usage examples in open source. (Librarian - OhMyOpenCode)",
|
|
83570
|
-
mode:
|
|
83631
|
+
mode: MODE4,
|
|
83571
83632
|
model,
|
|
83572
83633
|
temperature: 0.1,
|
|
83573
83634
|
...restrictions,
|
|
@@ -83851,10 +83912,10 @@ grep_app_searchGitHub(query: "useQuery")
|
|
|
83851
83912
|
`
|
|
83852
83913
|
};
|
|
83853
83914
|
}
|
|
83854
|
-
createLibrarianAgent.mode =
|
|
83915
|
+
createLibrarianAgent.mode = MODE4;
|
|
83855
83916
|
|
|
83856
83917
|
// src/agents/explore.ts
|
|
83857
|
-
var
|
|
83918
|
+
var MODE5 = "subagent";
|
|
83858
83919
|
var EXPLORE_PROMPT_METADATA = {
|
|
83859
83920
|
category: "exploration",
|
|
83860
83921
|
cost: "FREE",
|
|
@@ -83884,7 +83945,7 @@ function createExploreAgent(model) {
|
|
|
83884
83945
|
]);
|
|
83885
83946
|
return {
|
|
83886
83947
|
description: 'Contextual grep for codebases. Answers "Where is X?", "Which file has Y?", "Find the code that does Z". Fire multiple in parallel for broad searches. Specify thoroughness: "quick" for basic, "medium" for moderate, "very thorough" for comprehensive analysis. (Explore - OhMyOpenCode)',
|
|
83887
|
-
mode:
|
|
83948
|
+
mode: MODE5,
|
|
83888
83949
|
model,
|
|
83889
83950
|
temperature: 0.1,
|
|
83890
83951
|
...restrictions,
|
|
@@ -83967,10 +84028,10 @@ Use the right tool for the job:
|
|
|
83967
84028
|
Flood with parallel calls. Cross-validate findings across multiple tools.`
|
|
83968
84029
|
};
|
|
83969
84030
|
}
|
|
83970
|
-
createExploreAgent.mode =
|
|
84031
|
+
createExploreAgent.mode = MODE5;
|
|
83971
84032
|
|
|
83972
84033
|
// src/agents/multimodal-looker.ts
|
|
83973
|
-
var
|
|
84034
|
+
var MODE6 = "subagent";
|
|
83974
84035
|
var MULTIMODAL_LOOKER_PROMPT_METADATA = {
|
|
83975
84036
|
category: "utility",
|
|
83976
84037
|
cost: "CHEAP",
|
|
@@ -83981,7 +84042,7 @@ function createMultimodalLookerAgent(model) {
|
|
|
83981
84042
|
const restrictions = createAgentToolAllowlist(["read"]);
|
|
83982
84043
|
return {
|
|
83983
84044
|
description: "Analyze media files (PDFs, images, diagrams) that require interpretation beyond raw text. Extracts specific information or summaries from documents, describes visual content. Use when you need analyzed/extracted data rather than literal file contents. (Multimodal-Looker - OhMyOpenCode)",
|
|
83984
|
-
mode:
|
|
84045
|
+
mode: MODE6,
|
|
83985
84046
|
model,
|
|
83986
84047
|
temperature: 0.1,
|
|
83987
84048
|
...restrictions,
|
|
@@ -84019,10 +84080,10 @@ Response rules:
|
|
|
84019
84080
|
Your output goes straight to the main agent for continued work.`
|
|
84020
84081
|
};
|
|
84021
84082
|
}
|
|
84022
|
-
createMultimodalLookerAgent.mode =
|
|
84083
|
+
createMultimodalLookerAgent.mode = MODE6;
|
|
84023
84084
|
|
|
84024
84085
|
// src/agents/metis.ts
|
|
84025
|
-
var
|
|
84086
|
+
var MODE7 = "subagent";
|
|
84026
84087
|
var METIS_SYSTEM_PROMPT = `# Metis - Pre-Planning Consultant
|
|
84027
84088
|
|
|
84028
84089
|
## CONSTRAINTS
|
|
@@ -84310,7 +84371,7 @@ var metisRestrictions = createAgentToolRestrictions([
|
|
|
84310
84371
|
function createMetisAgent(model) {
|
|
84311
84372
|
return {
|
|
84312
84373
|
description: "Pre-planning consultant that analyzes requests to identify hidden intentions, ambiguities, and AI failure points. (Metis - OhMyOpenCode)",
|
|
84313
|
-
mode:
|
|
84374
|
+
mode: MODE7,
|
|
84314
84375
|
model,
|
|
84315
84376
|
temperature: 0.3,
|
|
84316
84377
|
...metisRestrictions,
|
|
@@ -84318,7 +84379,7 @@ function createMetisAgent(model) {
|
|
|
84318
84379
|
thinking: { type: "enabled", budgetTokens: 32000 }
|
|
84319
84380
|
};
|
|
84320
84381
|
}
|
|
84321
|
-
createMetisAgent.mode =
|
|
84382
|
+
createMetisAgent.mode = MODE7;
|
|
84322
84383
|
var metisPromptMetadata = {
|
|
84323
84384
|
category: "advisor",
|
|
84324
84385
|
cost: "EXPENSIVE",
|
|
@@ -85566,7 +85627,7 @@ ${agentRows.join(`
|
|
|
85566
85627
|
}
|
|
85567
85628
|
|
|
85568
85629
|
// src/agents/atlas/agent.ts
|
|
85569
|
-
var
|
|
85630
|
+
var MODE8 = "all";
|
|
85570
85631
|
function getAtlasPromptSource(model) {
|
|
85571
85632
|
if (model && isGptModel(model)) {
|
|
85572
85633
|
return "gpt";
|
|
@@ -85609,7 +85670,7 @@ function buildDynamicOrchestratorPrompt(ctx) {
|
|
|
85609
85670
|
function createAtlasAgent(ctx) {
|
|
85610
85671
|
const baseConfig = {
|
|
85611
85672
|
description: "Orchestrates work via task() to complete ALL tasks in a todo list until fully done. (Atlas - OhMyOpenCode)",
|
|
85612
|
-
mode:
|
|
85673
|
+
mode: MODE8,
|
|
85613
85674
|
...ctx.model ? { model: ctx.model } : {},
|
|
85614
85675
|
temperature: 0.1,
|
|
85615
85676
|
prompt: buildDynamicOrchestratorPrompt(ctx),
|
|
@@ -85617,7 +85678,7 @@ function createAtlasAgent(ctx) {
|
|
|
85617
85678
|
};
|
|
85618
85679
|
return baseConfig;
|
|
85619
85680
|
}
|
|
85620
|
-
createAtlasAgent.mode =
|
|
85681
|
+
createAtlasAgent.mode = MODE8;
|
|
85621
85682
|
var atlasPromptMetadata = {
|
|
85622
85683
|
category: "advisor",
|
|
85623
85684
|
cost: "EXPENSIVE",
|
|
@@ -85645,7 +85706,7 @@ var atlasPromptMetadata = {
|
|
|
85645
85706
|
keyTrigger: "Todo list path provided OR multiple tasks requiring multi-agent orchestration"
|
|
85646
85707
|
};
|
|
85647
85708
|
// src/agents/momus.ts
|
|
85648
|
-
var
|
|
85709
|
+
var MODE9 = "subagent";
|
|
85649
85710
|
var MOMUS_SYSTEM_PROMPT = `You are a **practical** work plan reviewer. Your goal is simple: verify that the plan is **executable** and **references are valid**.
|
|
85650
85711
|
|
|
85651
85712
|
**CRITICAL FIRST RULE**:
|
|
@@ -85823,7 +85884,7 @@ function createMomusAgent(model) {
|
|
|
85823
85884
|
]);
|
|
85824
85885
|
const base = {
|
|
85825
85886
|
description: "Expert reviewer for evaluating work plans against rigorous clarity, verifiability, and completeness standards. (Momus - OhMyOpenCode)",
|
|
85826
|
-
mode:
|
|
85887
|
+
mode: MODE9,
|
|
85827
85888
|
model,
|
|
85828
85889
|
temperature: 0.1,
|
|
85829
85890
|
...restrictions,
|
|
@@ -85834,7 +85895,7 @@ function createMomusAgent(model) {
|
|
|
85834
85895
|
}
|
|
85835
85896
|
return { ...base, thinking: { type: "enabled", budgetTokens: 32000 } };
|
|
85836
85897
|
}
|
|
85837
|
-
createMomusAgent.mode =
|
|
85898
|
+
createMomusAgent.mode = MODE9;
|
|
85838
85899
|
var momusPromptMetadata = {
|
|
85839
85900
|
category: "advisor",
|
|
85840
85901
|
cost: "EXPENSIVE",
|
|
@@ -85864,7 +85925,7 @@ var momusPromptMetadata = {
|
|
|
85864
85925
|
};
|
|
85865
85926
|
|
|
85866
85927
|
// src/agents/hephaestus.ts
|
|
85867
|
-
var
|
|
85928
|
+
var MODE10 = "all";
|
|
85868
85929
|
function buildTodoDisciplineSection(useTaskSystem) {
|
|
85869
85930
|
if (useTaskSystem) {
|
|
85870
85931
|
return `## Task Discipline (NON-NEGOTIABLE)
|
|
@@ -86315,7 +86376,7 @@ function createHephaestusAgent(model, availableAgents, availableToolNames, avail
|
|
|
86315
86376
|
const prompt = availableAgents ? buildHephaestusPrompt(availableAgents, tools, skills2, categories2, useTaskSystem) : buildHephaestusPrompt([], tools, skills2, categories2, useTaskSystem);
|
|
86316
86377
|
return {
|
|
86317
86378
|
description: "Autonomous Deep Worker - goal-oriented execution with GPT 5.2 Codex. Explores thoroughly before acting, uses explore/librarian agents for comprehensive context, completes tasks end-to-end. Inspired by AmpCode deep mode. (Hephaestus - OhMyOpenCode)",
|
|
86318
|
-
mode:
|
|
86379
|
+
mode: MODE10,
|
|
86319
86380
|
model,
|
|
86320
86381
|
maxTokens: 32000,
|
|
86321
86382
|
prompt,
|
|
@@ -86327,7 +86388,7 @@ function createHephaestusAgent(model, availableAgents, availableToolNames, avail
|
|
|
86327
86388
|
reasoningEffort: "medium"
|
|
86328
86389
|
};
|
|
86329
86390
|
}
|
|
86330
|
-
createHephaestusAgent.mode =
|
|
86391
|
+
createHephaestusAgent.mode = MODE10;
|
|
86331
86392
|
|
|
86332
86393
|
// src/agents/builtin-agents.ts
|
|
86333
86394
|
init_constants();
|
|
@@ -86577,8 +86638,10 @@ function collectPendingBuiltinAgents(input) {
|
|
|
86577
86638
|
}
|
|
86578
86639
|
|
|
86579
86640
|
// src/agents/builtin-agents/sisyphus-agent.ts
|
|
86580
|
-
function
|
|
86641
|
+
function maybeCreatePrimaryAgentConfig(input) {
|
|
86581
86642
|
const {
|
|
86643
|
+
agentName,
|
|
86644
|
+
factory,
|
|
86582
86645
|
disabledAgents,
|
|
86583
86646
|
agentOverrides,
|
|
86584
86647
|
uiSelectedModel,
|
|
@@ -86593,34 +86656,39 @@ function maybeCreateSisyphusConfig(input) {
|
|
|
86593
86656
|
useTaskSystem,
|
|
86594
86657
|
disableOmoEnv = false
|
|
86595
86658
|
} = input;
|
|
86596
|
-
const
|
|
86597
|
-
const
|
|
86598
|
-
const
|
|
86599
|
-
const
|
|
86600
|
-
if (disabledAgents.includes(
|
|
86659
|
+
const override = agentOverrides[agentName];
|
|
86660
|
+
const requirement = AGENT_MODEL_REQUIREMENTS[agentName];
|
|
86661
|
+
const hasExplicitConfig = override !== undefined;
|
|
86662
|
+
const meetsAnyModelRequirement = !requirement?.requiresAnyModel || hasExplicitConfig || isFirstRunNoCache || isAnyFallbackModelAvailable(requirement.fallbackChain, availableModels);
|
|
86663
|
+
if (disabledAgents.includes(agentName) || !meetsAnyModelRequirement)
|
|
86601
86664
|
return;
|
|
86602
|
-
let
|
|
86603
|
-
uiSelectedModel:
|
|
86604
|
-
userModel:
|
|
86605
|
-
requirement
|
|
86665
|
+
let resolution = applyModelResolution({
|
|
86666
|
+
uiSelectedModel: override?.model ? undefined : uiSelectedModel,
|
|
86667
|
+
userModel: override?.model,
|
|
86668
|
+
requirement,
|
|
86606
86669
|
availableModels,
|
|
86607
86670
|
systemDefaultModel
|
|
86608
86671
|
});
|
|
86609
|
-
if (isFirstRunNoCache && !
|
|
86610
|
-
|
|
86672
|
+
if (isFirstRunNoCache && !override?.model && !uiSelectedModel) {
|
|
86673
|
+
resolution = getFirstFallbackModel(requirement);
|
|
86611
86674
|
}
|
|
86612
|
-
if (!
|
|
86675
|
+
if (!resolution)
|
|
86613
86676
|
return;
|
|
86614
|
-
const { model
|
|
86615
|
-
let
|
|
86616
|
-
if (
|
|
86617
|
-
|
|
86677
|
+
const { model, variant: resolvedVariant } = resolution;
|
|
86678
|
+
let config4;
|
|
86679
|
+
if (agentName === "sisyphus") {
|
|
86680
|
+
config4 = factory(model, availableAgents, undefined, availableSkills, availableCategories, useTaskSystem);
|
|
86681
|
+
} else {
|
|
86682
|
+
config4 = factory(model);
|
|
86618
86683
|
}
|
|
86619
|
-
|
|
86620
|
-
|
|
86684
|
+
if (resolvedVariant) {
|
|
86685
|
+
config4 = { ...config4, variant: resolvedVariant };
|
|
86686
|
+
}
|
|
86687
|
+
config4 = applyOverrides(config4, override, mergedCategories, directory);
|
|
86688
|
+
config4 = applyEnvironmentContext(config4, directory, {
|
|
86621
86689
|
disableOmoEnv
|
|
86622
86690
|
});
|
|
86623
|
-
return
|
|
86691
|
+
return config4;
|
|
86624
86692
|
}
|
|
86625
86693
|
|
|
86626
86694
|
// src/agents/builtin-agents/hephaestus-agent.ts
|
|
@@ -86761,6 +86829,7 @@ function buildCustomAgentMetadata(agentName, description) {
|
|
|
86761
86829
|
|
|
86762
86830
|
// src/agents/builtin-agents.ts
|
|
86763
86831
|
var agentSources = {
|
|
86832
|
+
master: createMasterAgent,
|
|
86764
86833
|
sisyphus: createSisyphusAgent,
|
|
86765
86834
|
hephaestus: createHephaestusAgent,
|
|
86766
86835
|
oracle: createOracleAgent,
|
|
@@ -86772,6 +86841,7 @@ var agentSources = {
|
|
|
86772
86841
|
atlas: createAtlasAgent
|
|
86773
86842
|
};
|
|
86774
86843
|
var agentMetadata = {
|
|
86844
|
+
master: MASTER_PROMPT_METADATA,
|
|
86775
86845
|
oracle: ORACLE_PROMPT_METADATA,
|
|
86776
86846
|
librarian: LIBRARIAN_PROMPT_METADATA,
|
|
86777
86847
|
explore: EXPLORE_PROMPT_METADATA,
|
|
@@ -86827,7 +86897,30 @@ async function createBuiltinAgents(disabledAgents = [], agentOverrides = {}, dir
|
|
|
86827
86897
|
metadata: buildCustomAgentMetadata(agent.name, agent.description)
|
|
86828
86898
|
});
|
|
86829
86899
|
}
|
|
86830
|
-
const
|
|
86900
|
+
const masterConfig = maybeCreatePrimaryAgentConfig({
|
|
86901
|
+
agentName: "master",
|
|
86902
|
+
factory: createMasterAgent,
|
|
86903
|
+
disabledAgents,
|
|
86904
|
+
agentOverrides,
|
|
86905
|
+
uiSelectedModel,
|
|
86906
|
+
availableModels,
|
|
86907
|
+
systemDefaultModel,
|
|
86908
|
+
isFirstRunNoCache,
|
|
86909
|
+
availableAgents,
|
|
86910
|
+
availableSkills,
|
|
86911
|
+
availableCategories,
|
|
86912
|
+
mergedCategories,
|
|
86913
|
+
directory,
|
|
86914
|
+
userCategories: categories2,
|
|
86915
|
+
useTaskSystem,
|
|
86916
|
+
disableOmoEnv
|
|
86917
|
+
});
|
|
86918
|
+
if (masterConfig) {
|
|
86919
|
+
result["master"] = masterConfig;
|
|
86920
|
+
}
|
|
86921
|
+
const sisyphusConfig = maybeCreatePrimaryAgentConfig({
|
|
86922
|
+
agentName: "sisyphus",
|
|
86923
|
+
factory: createSisyphusAgent,
|
|
86831
86924
|
disabledAgents,
|
|
86832
86925
|
agentOverrides,
|
|
86833
86926
|
uiSelectedModel,
|
|
@@ -87245,7 +87338,7 @@ No tasks on multi-step work = INCOMPLETE WORK. The user tracks your progress thr
|
|
|
87245
87338
|
No todos on multi-step work = INCOMPLETE WORK. The user tracks your progress through todos.`;
|
|
87246
87339
|
}
|
|
87247
87340
|
// src/agents/sisyphus-junior/agent.ts
|
|
87248
|
-
var
|
|
87341
|
+
var MODE11 = "subagent";
|
|
87249
87342
|
var BLOCKED_TOOLS3 = ["task"];
|
|
87250
87343
|
var SISYPHUS_JUNIOR_DEFAULTS = {
|
|
87251
87344
|
model: "anthropic/claude-sonnet-4-6",
|
|
@@ -87292,7 +87385,7 @@ function createSisyphusJuniorAgentWithOverrides(override, systemDefaultModel, us
|
|
|
87292
87385
|
const toolsConfig = { permission: { ...merged, ...basePermission } };
|
|
87293
87386
|
const base = {
|
|
87294
87387
|
description: override?.description ?? "Focused task executor. Same discipline, no delegation. (Sisyphus-Junior - OhMyOpenCode)",
|
|
87295
|
-
mode:
|
|
87388
|
+
mode: MODE11,
|
|
87296
87389
|
model,
|
|
87297
87390
|
temperature,
|
|
87298
87391
|
maxTokens: 64000,
|
|
@@ -87311,7 +87404,7 @@ function createSisyphusJuniorAgentWithOverrides(override, systemDefaultModel, us
|
|
|
87311
87404
|
thinking: { type: "enabled", budgetTokens: 32000 }
|
|
87312
87405
|
};
|
|
87313
87406
|
}
|
|
87314
|
-
createSisyphusJuniorAgentWithOverrides.mode =
|
|
87407
|
+
createSisyphusJuniorAgentWithOverrides.mode = MODE11;
|
|
87315
87408
|
// src/agents/builtin-agents/junior-inheritance.ts
|
|
87316
87409
|
var JUNIOR_SUFFIX = "-junior";
|
|
87317
87410
|
function getParentAgentName(agentName) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@heidi-dang/oh-my-opencode",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.11.0",
|
|
4
4
|
"description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -75,17 +75,17 @@
|
|
|
75
75
|
"typescript": "^5.7.3"
|
|
76
76
|
},
|
|
77
77
|
"optionalDependencies": {
|
|
78
|
-
"@heidi-dang/oh-my-opencode-darwin-arm64": "3.
|
|
79
|
-
"@heidi-dang/oh-my-opencode-darwin-x64": "3.
|
|
80
|
-
"@heidi-dang/oh-my-opencode-darwin-x64-baseline": "3.
|
|
81
|
-
"@heidi-dang/oh-my-opencode-linux-arm64": "3.
|
|
82
|
-
"@heidi-dang/oh-my-opencode-linux-arm64-musl": "3.
|
|
83
|
-
"@heidi-dang/oh-my-opencode-linux-x64": "3.
|
|
84
|
-
"@heidi-dang/oh-my-opencode-linux-x64-baseline": "3.
|
|
85
|
-
"@heidi-dang/oh-my-opencode-linux-x64-musl": "3.
|
|
86
|
-
"@heidi-dang/oh-my-opencode-linux-x64-musl-baseline": "3.
|
|
87
|
-
"@heidi-dang/oh-my-opencode-windows-x64": "3.
|
|
88
|
-
"@heidi-dang/oh-my-opencode-windows-x64-baseline": "3.
|
|
78
|
+
"@heidi-dang/oh-my-opencode-darwin-arm64": "3.11.0",
|
|
79
|
+
"@heidi-dang/oh-my-opencode-darwin-x64": "3.11.0",
|
|
80
|
+
"@heidi-dang/oh-my-opencode-darwin-x64-baseline": "3.11.0",
|
|
81
|
+
"@heidi-dang/oh-my-opencode-linux-arm64": "3.11.0",
|
|
82
|
+
"@heidi-dang/oh-my-opencode-linux-arm64-musl": "3.11.0",
|
|
83
|
+
"@heidi-dang/oh-my-opencode-linux-x64": "3.11.0",
|
|
84
|
+
"@heidi-dang/oh-my-opencode-linux-x64-baseline": "3.11.0",
|
|
85
|
+
"@heidi-dang/oh-my-opencode-linux-x64-musl": "3.11.0",
|
|
86
|
+
"@heidi-dang/oh-my-opencode-linux-x64-musl-baseline": "3.11.0",
|
|
87
|
+
"@heidi-dang/oh-my-opencode-windows-x64": "3.11.0",
|
|
88
|
+
"@heidi-dang/oh-my-opencode-windows-x64-baseline": "3.11.0"
|
|
89
89
|
},
|
|
90
90
|
"overrides": {
|
|
91
91
|
"@opencode-ai/sdk": "^1.2.17"
|
|
@@ -95,5 +95,5 @@
|
|
|
95
95
|
"@ast-grep/napi",
|
|
96
96
|
"@code-yeongyu/comment-checker"
|
|
97
97
|
],
|
|
98
|
-
"_commit": "
|
|
98
|
+
"_commit": "04ec7f79655072d3b6127195966daf0b36bd042e"
|
|
99
99
|
}
|