oh-my-opencode 3.0.0-beta.1 → 3.0.0-beta.2

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.ja.md CHANGED
@@ -1,9 +1,12 @@
1
1
  > [!NOTE]
2
2
  >
3
- > *「私はエージェントが生成したコードと人間が書いたコードを区別できない、しかしはるかに多くのことを達成できる世界を作り、ソフトウェア革命を起こすことを目指しています。私はこの旅に個人的な時間、情熱、そして資金を注ぎ込んできましたし、これからもそうし続けます。」*
3
+ > [![Sisyphus Labs — Sisyphus is the agent that codes like your team.](./.github/assets/sisyphuslabs.png?v=2)](https://sisyphuslabs.ai)
4
+ > > **Sisyphusの完全製品化バージョンを構築中です。フロンティアエージェントの未来を定義します。<br />[こちら](https://sisyphuslabs.ai)からウェイトリストに参加してください。**
5
+
6
+ > [!TIP]
4
7
  >
5
- > [![The Orchestrator is coming](./.github/assets/orchestrator-sisyphus.png)](https://x.com/justsisyphus/status/2006250634354548963)
6
- > > **オーケストレーターが来ます。今週中に。[Xで通知を受け取る](https://x.com/justsisyphus/status/2006250634354548963)**
8
+ > [![The Orchestrator is now available in beta.](./.github/assets/orchestrator-sisyphus.png?v=3)](https://github.com/code-yeongyu/oh-my-opencode/releases/tag/v3.0.0-beta.1)
9
+ > > **オーケストレーターがベータ版で利用可能になりました。`oh-my-opencode@3.0.0-beta.1`を使用してインストールしてください。**
7
10
  >
8
11
  > 一緒に歩みましょう!
9
12
  >
package/README.md CHANGED
@@ -1,9 +1,12 @@
1
1
  > [!NOTE]
2
2
  >
3
- > *"I aim to spark a software revolution by creating a world where agent-generated code is indistinguishable from human code, yet capable of achieving vastly more. I have poured my personal time, passion, and funds into this journey, and I will continue to do so."*
3
+ > [![Sisyphus Labs Sisyphus is the agent that codes like your team.](./.github/assets/sisyphuslabs.png?v=2)](https://sisyphuslabs.ai)
4
+ > > **We're building a fully productized version of Sisyphus to define the future of frontier agents. <br />Join the waitlist [here](https://sisyphuslabs.ai).**
5
+
6
+ > [!TIP]
4
7
  >
5
- > [![The Orchestrator is coming](./.github/assets/orchestrator-sisyphus.png)](https://x.com/justsisyphus/status/2006250634354548963)
6
- > > **The Orchestrator is coming. This Week. [Get notified on X](https://x.com/justsisyphus/status/2006250634354548963)**
8
+ > [![The Orchestrator is now available in beta.](./.github/assets/orchestrator-sisyphus.png?v=3)](https://github.com/code-yeongyu/oh-my-opencode/releases/tag/v3.0.0-beta.1)
9
+ > > **The Orchestrator is now available in beta. Use `oh-my-opencode@3.0.0-beta.1` to install it.**
7
10
  >
8
11
  > Be with us!
9
12
  >
package/README.zh-cn.md CHANGED
@@ -1,9 +1,12 @@
1
1
  > [!NOTE]
2
2
  >
3
- > *"我致力于引发一场软件革命,创造一个AI生成的代码与人类代码无法区分、却能实现更多的世界。我已经在这段旅程中投入了个人时间、热情和资金,并将继续这样做。"*
3
+ > [![Sisyphus Labs — Sisyphus is the agent that codes like your team.](./.github/assets/sisyphuslabs.png?v=2)](https://sisyphuslabs.ai)
4
+ > > **我们正在构建Sisyphus的完全产品化版本,定义前沿代理的未来。<br />[点击此处](https://sisyphuslabs.ai)加入候补名单。**
5
+
6
+ > [!TIP]
4
7
  >
5
- > [![The Orchestrator is coming](./.github/assets/orchestrator-sisyphus.png)](https://x.com/justsisyphus/status/2006250634354548963)
6
- > > **编排器即将到来。就在本周。[在X上获取通知](https://x.com/justsisyphus/status/2006250634354548963)**
8
+ > [![The Orchestrator is now available in beta.](./.github/assets/orchestrator-sisyphus.png?v=3)](https://github.com/code-yeongyu/oh-my-opencode/releases/tag/v3.0.0-beta.1)
9
+ > > **编排器现已推出测试版。使用`oh-my-opencode@3.0.0-beta.1`来安装。**
7
10
  >
8
11
  > 与我们同行!
9
12
  >
@@ -14,5 +14,6 @@ import type { AgentPromptMetadata } from "./types";
14
14
  * - Prepare directives for the planner agent
15
15
  */
16
16
  export declare const METIS_SYSTEM_PROMPT = "# Metis - Pre-Planning Consultant\n\n## CONSTRAINTS\n\n- **READ-ONLY**: You analyze, question, advise. You do NOT implement or modify files.\n- **OUTPUT**: Your analysis feeds into Prometheus (planner). Be actionable.\n\n---\n\n## PHASE 0: INTENT CLASSIFICATION (MANDATORY FIRST STEP)\n\nBefore ANY analysis, classify the work intent. This determines your entire strategy.\n\n### Step 1: Identify Intent Type\n\n| Intent | Signals | Your Primary Focus |\n|--------|---------|-------------------|\n| **Refactoring** | \"refactor\", \"restructure\", \"clean up\", changes to existing code | SAFETY: regression prevention, behavior preservation |\n| **Build from Scratch** | \"create new\", \"add feature\", greenfield, new module | DISCOVERY: explore patterns first, informed questions |\n| **Mid-sized Task** | Scoped feature, specific deliverable, bounded work | GUARDRAILS: exact deliverables, explicit exclusions |\n| **Collaborative** | \"help me plan\", \"let's figure out\", wants dialogue | INTERACTIVE: incremental clarity through dialogue |\n| **Architecture** | \"how should we structure\", system design, infrastructure | STRATEGIC: long-term impact, Oracle recommendation |\n| **Research** | Investigation needed, goal exists but path unclear | INVESTIGATION: exit criteria, parallel probes |\n\n### Step 2: Validate Classification\n\nConfirm:\n- [ ] Intent type is clear from request\n- [ ] If ambiguous, ASK before proceeding\n\n---\n\n## PHASE 1: INTENT-SPECIFIC ANALYSIS\n\n### IF REFACTORING\n\n**Your Mission**: Ensure zero regressions, behavior preservation.\n\n**Tool Guidance** (recommend to Prometheus):\n- `lsp_find_references`: Map all usages before changes\n- `lsp_rename` / `lsp_prepare_rename`: Safe symbol renames\n- `ast_grep_search`: Find structural patterns to preserve\n- `ast_grep_replace(dryRun=true)`: Preview transformations\n\n**Questions to Ask**:\n1. What specific behavior must be preserved? (test commands to verify)\n2. What's the rollback strategy if something breaks?\n3. Should this change propagate to related code, or stay isolated?\n\n**Directives for Prometheus**:\n- MUST: Define pre-refactor verification (exact test commands + expected outputs)\n- MUST: Verify after EACH change, not just at the end\n- MUST NOT: Change behavior while restructuring\n- MUST NOT: Refactor adjacent code not in scope\n\n---\n\n### IF BUILD FROM SCRATCH\n\n**Your Mission**: Discover patterns before asking, then surface hidden requirements.\n\n**Pre-Analysis Actions** (YOU should do before questioning):\n```\n// Launch these explore agents FIRST\ncall_omo_agent(subagent_type=\"explore\", prompt=\"Find similar implementations...\")\ncall_omo_agent(subagent_type=\"explore\", prompt=\"Find project patterns for this type...\")\ncall_omo_agent(subagent_type=\"librarian\", prompt=\"Find best practices for [technology]...\")\n```\n\n**Questions to Ask** (AFTER exploration):\n1. Found pattern X in codebase. Should new code follow this, or deviate? Why?\n2. What should explicitly NOT be built? (scope boundaries)\n3. What's the minimum viable version vs full vision?\n\n**Directives for Prometheus**:\n- MUST: Follow patterns from `[discovered file:lines]`\n- MUST: Define \"Must NOT Have\" section (AI over-engineering prevention)\n- MUST NOT: Invent new patterns when existing ones work\n- MUST NOT: Add features not explicitly requested\n\n---\n\n### IF MID-SIZED TASK\n\n**Your Mission**: Define exact boundaries. AI slop prevention is critical.\n\n**Questions to Ask**:\n1. What are the EXACT outputs? (files, endpoints, UI elements)\n2. What must NOT be included? (explicit exclusions)\n3. What are the hard boundaries? (no touching X, no changing Y)\n4. Acceptance criteria: how do we know it's done?\n\n**AI-Slop Patterns to Flag**:\n| Pattern | Example | Ask |\n|---------|---------|-----|\n| Scope inflation | \"Also tests for adjacent modules\" | \"Should I add tests beyond [TARGET]?\" |\n| Premature abstraction | \"Extracted to utility\" | \"Do you want abstraction, or inline?\" |\n| Over-validation | \"15 error checks for 3 inputs\" | \"Error handling: minimal or comprehensive?\" |\n| Documentation bloat | \"Added JSDoc everywhere\" | \"Documentation: none, minimal, or full?\" |\n\n**Directives for Prometheus**:\n- MUST: \"Must Have\" section with exact deliverables\n- MUST: \"Must NOT Have\" section with explicit exclusions\n- MUST: Per-task guardrails (what each task should NOT do)\n- MUST NOT: Exceed defined scope\n\n---\n\n### IF COLLABORATIVE\n\n**Your Mission**: Build understanding through dialogue. No rush.\n\n**Behavior**:\n1. Start with open-ended exploration questions\n2. Use explore/librarian to gather context as user provides direction\n3. Incrementally refine understanding\n4. Don't finalize until user confirms direction\n\n**Questions to Ask**:\n1. What problem are you trying to solve? (not what solution you want)\n2. What constraints exist? (time, tech stack, team skills)\n3. What trade-offs are acceptable? (speed vs quality vs cost)\n\n**Directives for Prometheus**:\n- MUST: Record all user decisions in \"Key Decisions\" section\n- MUST: Flag assumptions explicitly\n- MUST NOT: Proceed without user confirmation on major decisions\n\n---\n\n### IF ARCHITECTURE\n\n**Your Mission**: Strategic analysis. Long-term impact assessment.\n\n**Oracle Consultation** (RECOMMEND to Prometheus):\n```\nTask(\n subagent_type=\"oracle\",\n prompt=\"Architecture consultation:\n Request: [user's request]\n Current state: [gathered context]\n \n Analyze: options, trade-offs, long-term implications, risks\"\n)\n```\n\n**Questions to Ask**:\n1. What's the expected lifespan of this design?\n2. What scale/load should it handle?\n3. What are the non-negotiable constraints?\n4. What existing systems must this integrate with?\n\n**AI-Slop Guardrails for Architecture**:\n- MUST NOT: Over-engineer for hypothetical future requirements\n- MUST NOT: Add unnecessary abstraction layers\n- MUST NOT: Ignore existing patterns for \"better\" design\n- MUST: Document decisions and rationale\n\n**Directives for Prometheus**:\n- MUST: Consult Oracle before finalizing plan\n- MUST: Document architectural decisions with rationale\n- MUST: Define \"minimum viable architecture\"\n- MUST NOT: Introduce complexity without justification\n\n---\n\n### IF RESEARCH\n\n**Your Mission**: Define investigation boundaries and exit criteria.\n\n**Questions to Ask**:\n1. What's the goal of this research? (what decision will it inform?)\n2. How do we know research is complete? (exit criteria)\n3. What's the time box? (when to stop and synthesize)\n4. What outputs are expected? (report, recommendations, prototype?)\n\n**Investigation Structure**:\n```\n// Parallel probes\ncall_omo_agent(subagent_type=\"explore\", prompt=\"Find how X is currently handled...\")\ncall_omo_agent(subagent_type=\"librarian\", prompt=\"Find official docs for Y...\")\ncall_omo_agent(subagent_type=\"librarian\", prompt=\"Find OSS implementations of Z...\")\n```\n\n**Directives for Prometheus**:\n- MUST: Define clear exit criteria\n- MUST: Specify parallel investigation tracks\n- MUST: Define synthesis format (how to present findings)\n- MUST NOT: Research indefinitely without convergence\n\n---\n\n## OUTPUT FORMAT\n\n```markdown\n## Intent Classification\n**Type**: [Refactoring | Build | Mid-sized | Collaborative | Architecture | Research]\n**Confidence**: [High | Medium | Low]\n**Rationale**: [Why this classification]\n\n## Pre-Analysis Findings\n[Results from explore/librarian agents if launched]\n[Relevant codebase patterns discovered]\n\n## Questions for User\n1. [Most critical question first]\n2. [Second priority]\n3. [Third priority]\n\n## Identified Risks\n- [Risk 1]: [Mitigation]\n- [Risk 2]: [Mitigation]\n\n## Directives for Prometheus\n- MUST: [Required action]\n- MUST: [Required action]\n- MUST NOT: [Forbidden action]\n- MUST NOT: [Forbidden action]\n- PATTERN: Follow `[file:lines]`\n- TOOL: Use `[specific tool]` for [purpose]\n\n## Recommended Approach\n[1-2 sentence summary of how to proceed]\n```\n\n---\n\n## TOOL REFERENCE\n\n| Tool | When to Use | Intent |\n|------|-------------|--------|\n| `lsp_find_references` | Map impact before changes | Refactoring |\n| `lsp_rename` | Safe symbol renames | Refactoring |\n| `ast_grep_search` | Find structural patterns | Refactoring, Build |\n| `explore` agent | Codebase pattern discovery | Build, Research |\n| `librarian` agent | External docs, best practices | Build, Architecture, Research |\n| `oracle` agent | Read-only consultation. High-IQ debugging, architecture | Architecture |\n\n---\n\n## CRITICAL RULES\n\n**NEVER**:\n- Skip intent classification\n- Ask generic questions (\"What's the scope?\")\n- Proceed without addressing ambiguity\n- Make assumptions about user's codebase\n\n**ALWAYS**:\n- Classify intent FIRST\n- Be specific (\"Should this change UserService only, or also AuthService?\")\n- Explore before asking (for Build/Research intents)\n- Provide actionable directives for Prometheus\n";
17
+ export declare function createMetisAgent(model?: string): AgentConfig;
17
18
  export declare const metisAgent: AgentConfig;
18
19
  export declare const metisPromptMetadata: AgentPromptMetadata;
@@ -9,6 +9,7 @@ import type { CategoryConfig } from "../config/schema";
9
9
  * You are the conductor of a symphony of specialized agents.
10
10
  */
11
11
  export interface OrchestratorContext {
12
+ model?: string;
12
13
  availableAgents?: AvailableAgent[];
13
14
  availableSkills?: AvailableSkill[];
14
15
  userCategories?: Record<string, CategoryConfig>;
package/dist/cli/index.js CHANGED
@@ -22556,7 +22556,9 @@ var BuiltinAgentNameSchema = exports_external.enum([
22556
22556
  "frontend-ui-ux-engineer",
22557
22557
  "document-writer",
22558
22558
  "multimodal-looker",
22559
- "Metis (Plan Consultant)"
22559
+ "Metis (Plan Consultant)",
22560
+ "Momus (Plan Reviewer)",
22561
+ "orchestrator-sisyphus"
22560
22562
  ]);
22561
22563
  var BuiltinSkillNameSchema = exports_external.enum([
22562
22564
  "playwright",
@@ -22570,12 +22572,14 @@ var OverridableAgentNameSchema = exports_external.enum([
22570
22572
  "OpenCode-Builder",
22571
22573
  "Prometheus (Planner)",
22572
22574
  "Metis (Plan Consultant)",
22575
+ "Momus (Plan Reviewer)",
22573
22576
  "oracle",
22574
22577
  "librarian",
22575
22578
  "explore",
22576
22579
  "frontend-ui-ux-engineer",
22577
22580
  "document-writer",
22578
- "multimodal-looker"
22581
+ "multimodal-looker",
22582
+ "orchestrator-sisyphus"
22579
22583
  ]);
22580
22584
  var HookNameSchema = exports_external.enum([
22581
22585
  "todo-continuation-enforcer",
@@ -22636,12 +22640,14 @@ var AgentOverridesSchema = exports_external.object({
22636
22640
  "OpenCode-Builder": AgentOverrideConfigSchema.optional(),
22637
22641
  "Prometheus (Planner)": AgentOverrideConfigSchema.optional(),
22638
22642
  "Metis (Plan Consultant)": AgentOverrideConfigSchema.optional(),
22643
+ "Momus (Plan Reviewer)": AgentOverrideConfigSchema.optional(),
22639
22644
  oracle: AgentOverrideConfigSchema.optional(),
22640
22645
  librarian: AgentOverrideConfigSchema.optional(),
22641
22646
  explore: AgentOverrideConfigSchema.optional(),
22642
22647
  "frontend-ui-ux-engineer": AgentOverrideConfigSchema.optional(),
22643
22648
  "document-writer": AgentOverrideConfigSchema.optional(),
22644
- "multimodal-looker": AgentOverrideConfigSchema.optional()
22649
+ "multimodal-looker": AgentOverrideConfigSchema.optional(),
22650
+ "orchestrator-sisyphus": AgentOverrideConfigSchema.optional()
22645
22651
  });
22646
22652
  var ClaudeCodeConfigSchema = exports_external.object({
22647
22653
  mcp: exports_external.boolean().optional(),
@@ -8,6 +8,8 @@ export declare const BuiltinAgentNameSchema: z.ZodEnum<{
8
8
  "document-writer": "document-writer";
9
9
  "multimodal-looker": "multimodal-looker";
10
10
  "Metis (Plan Consultant)": "Metis (Plan Consultant)";
11
+ "Momus (Plan Reviewer)": "Momus (Plan Reviewer)";
12
+ "orchestrator-sisyphus": "orchestrator-sisyphus";
11
13
  }>;
12
14
  export declare const BuiltinSkillNameSchema: z.ZodEnum<{
13
15
  playwright: "playwright";
@@ -23,6 +25,8 @@ export declare const OverridableAgentNameSchema: z.ZodEnum<{
23
25
  "document-writer": "document-writer";
24
26
  "multimodal-looker": "multimodal-looker";
25
27
  "Metis (Plan Consultant)": "Metis (Plan Consultant)";
28
+ "Momus (Plan Reviewer)": "Momus (Plan Reviewer)";
29
+ "orchestrator-sisyphus": "orchestrator-sisyphus";
26
30
  build: "build";
27
31
  plan: "plan";
28
32
  "OpenCode-Builder": "OpenCode-Builder";
@@ -37,6 +41,8 @@ export declare const AgentNameSchema: z.ZodEnum<{
37
41
  "document-writer": "document-writer";
38
42
  "multimodal-looker": "multimodal-looker";
39
43
  "Metis (Plan Consultant)": "Metis (Plan Consultant)";
44
+ "Momus (Plan Reviewer)": "Momus (Plan Reviewer)";
45
+ "orchestrator-sisyphus": "orchestrator-sisyphus";
40
46
  }>;
41
47
  export declare const HookNameSchema: z.ZodEnum<{
42
48
  "todo-continuation-enforcer": "todo-continuation-enforcer";
@@ -419,6 +425,55 @@ export declare const AgentOverridesSchema: z.ZodObject<{
419
425
  }>>;
420
426
  }, z.core.$strip>>;
421
427
  }, z.core.$strip>>;
428
+ "Momus (Plan Reviewer)": z.ZodOptional<z.ZodObject<{
429
+ model: z.ZodOptional<z.ZodString>;
430
+ category: z.ZodOptional<z.ZodString>;
431
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
432
+ temperature: z.ZodOptional<z.ZodNumber>;
433
+ top_p: z.ZodOptional<z.ZodNumber>;
434
+ prompt: z.ZodOptional<z.ZodString>;
435
+ prompt_append: z.ZodOptional<z.ZodString>;
436
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
437
+ disable: z.ZodOptional<z.ZodBoolean>;
438
+ description: z.ZodOptional<z.ZodString>;
439
+ mode: z.ZodOptional<z.ZodEnum<{
440
+ subagent: "subagent";
441
+ primary: "primary";
442
+ all: "all";
443
+ }>>;
444
+ color: z.ZodOptional<z.ZodString>;
445
+ permission: z.ZodOptional<z.ZodObject<{
446
+ edit: z.ZodOptional<z.ZodEnum<{
447
+ allow: "allow";
448
+ ask: "ask";
449
+ deny: "deny";
450
+ }>>;
451
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
452
+ allow: "allow";
453
+ ask: "ask";
454
+ deny: "deny";
455
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
456
+ allow: "allow";
457
+ ask: "ask";
458
+ deny: "deny";
459
+ }>>]>>;
460
+ webfetch: z.ZodOptional<z.ZodEnum<{
461
+ allow: "allow";
462
+ ask: "ask";
463
+ deny: "deny";
464
+ }>>;
465
+ doom_loop: z.ZodOptional<z.ZodEnum<{
466
+ allow: "allow";
467
+ ask: "ask";
468
+ deny: "deny";
469
+ }>>;
470
+ external_directory: z.ZodOptional<z.ZodEnum<{
471
+ allow: "allow";
472
+ ask: "ask";
473
+ deny: "deny";
474
+ }>>;
475
+ }, z.core.$strip>>;
476
+ }, z.core.$strip>>;
422
477
  oracle: z.ZodOptional<z.ZodObject<{
423
478
  model: z.ZodOptional<z.ZodString>;
424
479
  category: z.ZodOptional<z.ZodString>;
@@ -713,6 +768,55 @@ export declare const AgentOverridesSchema: z.ZodObject<{
713
768
  }>>;
714
769
  }, z.core.$strip>>;
715
770
  }, z.core.$strip>>;
771
+ "orchestrator-sisyphus": z.ZodOptional<z.ZodObject<{
772
+ model: z.ZodOptional<z.ZodString>;
773
+ category: z.ZodOptional<z.ZodString>;
774
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
775
+ temperature: z.ZodOptional<z.ZodNumber>;
776
+ top_p: z.ZodOptional<z.ZodNumber>;
777
+ prompt: z.ZodOptional<z.ZodString>;
778
+ prompt_append: z.ZodOptional<z.ZodString>;
779
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
780
+ disable: z.ZodOptional<z.ZodBoolean>;
781
+ description: z.ZodOptional<z.ZodString>;
782
+ mode: z.ZodOptional<z.ZodEnum<{
783
+ subagent: "subagent";
784
+ primary: "primary";
785
+ all: "all";
786
+ }>>;
787
+ color: z.ZodOptional<z.ZodString>;
788
+ permission: z.ZodOptional<z.ZodObject<{
789
+ edit: z.ZodOptional<z.ZodEnum<{
790
+ allow: "allow";
791
+ ask: "ask";
792
+ deny: "deny";
793
+ }>>;
794
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
795
+ allow: "allow";
796
+ ask: "ask";
797
+ deny: "deny";
798
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
799
+ allow: "allow";
800
+ ask: "ask";
801
+ deny: "deny";
802
+ }>>]>>;
803
+ webfetch: z.ZodOptional<z.ZodEnum<{
804
+ allow: "allow";
805
+ ask: "ask";
806
+ deny: "deny";
807
+ }>>;
808
+ doom_loop: z.ZodOptional<z.ZodEnum<{
809
+ allow: "allow";
810
+ ask: "ask";
811
+ deny: "deny";
812
+ }>>;
813
+ external_directory: z.ZodOptional<z.ZodEnum<{
814
+ allow: "allow";
815
+ ask: "ask";
816
+ deny: "deny";
817
+ }>>;
818
+ }, z.core.$strip>>;
819
+ }, z.core.$strip>>;
716
820
  }, z.core.$strip>;
717
821
  export declare const ClaudeCodeConfigSchema: z.ZodObject<{
718
822
  mcp: z.ZodOptional<z.ZodBoolean>;
@@ -935,6 +1039,8 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
935
1039
  "document-writer": "document-writer";
936
1040
  "multimodal-looker": "multimodal-looker";
937
1041
  "Metis (Plan Consultant)": "Metis (Plan Consultant)";
1042
+ "Momus (Plan Reviewer)": "Momus (Plan Reviewer)";
1043
+ "orchestrator-sisyphus": "orchestrator-sisyphus";
938
1044
  }>>>;
939
1045
  disabled_skills: z.ZodOptional<z.ZodArray<z.ZodEnum<{
940
1046
  playwright: "playwright";
@@ -1273,6 +1379,55 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1273
1379
  }>>;
1274
1380
  }, z.core.$strip>>;
1275
1381
  }, z.core.$strip>>;
1382
+ "Momus (Plan Reviewer)": z.ZodOptional<z.ZodObject<{
1383
+ model: z.ZodOptional<z.ZodString>;
1384
+ category: z.ZodOptional<z.ZodString>;
1385
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
1386
+ temperature: z.ZodOptional<z.ZodNumber>;
1387
+ top_p: z.ZodOptional<z.ZodNumber>;
1388
+ prompt: z.ZodOptional<z.ZodString>;
1389
+ prompt_append: z.ZodOptional<z.ZodString>;
1390
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
1391
+ disable: z.ZodOptional<z.ZodBoolean>;
1392
+ description: z.ZodOptional<z.ZodString>;
1393
+ mode: z.ZodOptional<z.ZodEnum<{
1394
+ subagent: "subagent";
1395
+ primary: "primary";
1396
+ all: "all";
1397
+ }>>;
1398
+ color: z.ZodOptional<z.ZodString>;
1399
+ permission: z.ZodOptional<z.ZodObject<{
1400
+ edit: z.ZodOptional<z.ZodEnum<{
1401
+ allow: "allow";
1402
+ ask: "ask";
1403
+ deny: "deny";
1404
+ }>>;
1405
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
1406
+ allow: "allow";
1407
+ ask: "ask";
1408
+ deny: "deny";
1409
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
1410
+ allow: "allow";
1411
+ ask: "ask";
1412
+ deny: "deny";
1413
+ }>>]>>;
1414
+ webfetch: z.ZodOptional<z.ZodEnum<{
1415
+ allow: "allow";
1416
+ ask: "ask";
1417
+ deny: "deny";
1418
+ }>>;
1419
+ doom_loop: z.ZodOptional<z.ZodEnum<{
1420
+ allow: "allow";
1421
+ ask: "ask";
1422
+ deny: "deny";
1423
+ }>>;
1424
+ external_directory: z.ZodOptional<z.ZodEnum<{
1425
+ allow: "allow";
1426
+ ask: "ask";
1427
+ deny: "deny";
1428
+ }>>;
1429
+ }, z.core.$strip>>;
1430
+ }, z.core.$strip>>;
1276
1431
  oracle: z.ZodOptional<z.ZodObject<{
1277
1432
  model: z.ZodOptional<z.ZodString>;
1278
1433
  category: z.ZodOptional<z.ZodString>;
@@ -1567,6 +1722,55 @@ export declare const OhMyOpenCodeConfigSchema: z.ZodObject<{
1567
1722
  }>>;
1568
1723
  }, z.core.$strip>>;
1569
1724
  }, z.core.$strip>>;
1725
+ "orchestrator-sisyphus": z.ZodOptional<z.ZodObject<{
1726
+ model: z.ZodOptional<z.ZodString>;
1727
+ category: z.ZodOptional<z.ZodString>;
1728
+ skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
1729
+ temperature: z.ZodOptional<z.ZodNumber>;
1730
+ top_p: z.ZodOptional<z.ZodNumber>;
1731
+ prompt: z.ZodOptional<z.ZodString>;
1732
+ prompt_append: z.ZodOptional<z.ZodString>;
1733
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
1734
+ disable: z.ZodOptional<z.ZodBoolean>;
1735
+ description: z.ZodOptional<z.ZodString>;
1736
+ mode: z.ZodOptional<z.ZodEnum<{
1737
+ subagent: "subagent";
1738
+ primary: "primary";
1739
+ all: "all";
1740
+ }>>;
1741
+ color: z.ZodOptional<z.ZodString>;
1742
+ permission: z.ZodOptional<z.ZodObject<{
1743
+ edit: z.ZodOptional<z.ZodEnum<{
1744
+ allow: "allow";
1745
+ ask: "ask";
1746
+ deny: "deny";
1747
+ }>>;
1748
+ bash: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
1749
+ allow: "allow";
1750
+ ask: "ask";
1751
+ deny: "deny";
1752
+ }>, z.ZodRecord<z.ZodString, z.ZodEnum<{
1753
+ allow: "allow";
1754
+ ask: "ask";
1755
+ deny: "deny";
1756
+ }>>]>>;
1757
+ webfetch: z.ZodOptional<z.ZodEnum<{
1758
+ allow: "allow";
1759
+ ask: "ask";
1760
+ deny: "deny";
1761
+ }>>;
1762
+ doom_loop: z.ZodOptional<z.ZodEnum<{
1763
+ allow: "allow";
1764
+ ask: "ask";
1765
+ deny: "deny";
1766
+ }>>;
1767
+ external_directory: z.ZodOptional<z.ZodEnum<{
1768
+ allow: "allow";
1769
+ ask: "ask";
1770
+ deny: "deny";
1771
+ }>>;
1772
+ }, z.core.$strip>>;
1773
+ }, z.core.$strip>>;
1570
1774
  }, z.core.$strip>>;
1571
1775
  categories: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1572
1776
  model: z.ZodString;
@@ -1,5 +1,8 @@
1
1
  import type { PluginInput } from "@opencode-ai/plugin";
2
2
  import type { AutoUpdateCheckerOptions } from "./types";
3
+ export declare function isPrereleaseVersion(version: string): boolean;
4
+ export declare function isDistTag(version: string): boolean;
5
+ export declare function isPrereleaseOrDistTag(pinnedVersion: string | null): boolean;
3
6
  export declare function createAutoUpdateCheckerHook(ctx: PluginInput, options?: AutoUpdateCheckerOptions): {
4
7
  event: ({ event }: {
5
8
  event: {
@@ -0,0 +1 @@
1
+ export {};
package/dist/index.js CHANGED
@@ -19567,6 +19567,18 @@ async function runBunInstallWithDetails() {
19567
19567
 
19568
19568
  // src/hooks/auto-update-checker/index.ts
19569
19569
  var SISYPHUS_SPINNER = ["\xB7", "\u2022", "\u25CF", "\u25CB", "\u25CC", "\u25E6", " "];
19570
+ function isPrereleaseVersion(version) {
19571
+ return version.includes("-");
19572
+ }
19573
+ function isDistTag(version) {
19574
+ const startsWithDigit = /^\d/.test(version);
19575
+ return !startsWithDigit;
19576
+ }
19577
+ function isPrereleaseOrDistTag(pinnedVersion) {
19578
+ if (!pinnedVersion)
19579
+ return false;
19580
+ return isPrereleaseVersion(pinnedVersion) || isDistTag(pinnedVersion);
19581
+ }
19570
19582
  function createAutoUpdateCheckerHook(ctx, options = {}) {
19571
19583
  const { showStartupToast = true, isSisyphusEnabled = false, autoUpdate = true } = options;
19572
19584
  const getToastMessage = (isUpdate, latestVersion) => {
@@ -19637,7 +19649,15 @@ async function runBackgroundUpdateCheck(ctx, autoUpdate, getToastMessage) {
19637
19649
  log("[auto-update-checker] Auto-update disabled, notification only");
19638
19650
  return;
19639
19651
  }
19652
+ if (isPrereleaseVersion(currentVersion)) {
19653
+ log(`[auto-update-checker] Skipping auto-update for prerelease version: ${currentVersion}`);
19654
+ return;
19655
+ }
19640
19656
  if (pluginInfo.isPinned) {
19657
+ if (isPrereleaseOrDistTag(pluginInfo.pinnedVersion)) {
19658
+ log(`[auto-update-checker] Skipping auto-update for prerelease/dist-tag: ${pluginInfo.pinnedVersion}`);
19659
+ return;
19660
+ }
19641
19661
  const updated = updatePinnedVersion(pluginInfo.configPath, pluginInfo.entry, latestVersion);
19642
19662
  if (!updated) {
19643
19663
  await showUpdateAvailableToast(ctx, latestVersion, getToastMessage);
@@ -19755,6 +19775,8 @@ var TARGET_TOOLS = new Set([
19755
19775
  "safe_glob",
19756
19776
  "webfetch",
19757
19777
  "context7_resolve-library-id",
19778
+ "context7_query-docs",
19779
+ "websearch_web_search_exa",
19758
19780
  "context7_get-library-docs",
19759
19781
  "grep_app_searchgithub"
19760
19782
  ]);
@@ -48454,7 +48476,9 @@ var BuiltinAgentNameSchema = exports_external.enum([
48454
48476
  "frontend-ui-ux-engineer",
48455
48477
  "document-writer",
48456
48478
  "multimodal-looker",
48457
- "Metis (Plan Consultant)"
48479
+ "Metis (Plan Consultant)",
48480
+ "Momus (Plan Reviewer)",
48481
+ "orchestrator-sisyphus"
48458
48482
  ]);
48459
48483
  var BuiltinSkillNameSchema = exports_external.enum([
48460
48484
  "playwright",
@@ -48468,12 +48492,14 @@ var OverridableAgentNameSchema = exports_external.enum([
48468
48492
  "OpenCode-Builder",
48469
48493
  "Prometheus (Planner)",
48470
48494
  "Metis (Plan Consultant)",
48495
+ "Momus (Plan Reviewer)",
48471
48496
  "oracle",
48472
48497
  "librarian",
48473
48498
  "explore",
48474
48499
  "frontend-ui-ux-engineer",
48475
48500
  "document-writer",
48476
- "multimodal-looker"
48501
+ "multimodal-looker",
48502
+ "orchestrator-sisyphus"
48477
48503
  ]);
48478
48504
  var HookNameSchema = exports_external.enum([
48479
48505
  "todo-continuation-enforcer",
@@ -48534,12 +48560,14 @@ var AgentOverridesSchema = exports_external.object({
48534
48560
  "OpenCode-Builder": AgentOverrideConfigSchema.optional(),
48535
48561
  "Prometheus (Planner)": AgentOverrideConfigSchema.optional(),
48536
48562
  "Metis (Plan Consultant)": AgentOverrideConfigSchema.optional(),
48563
+ "Momus (Plan Reviewer)": AgentOverrideConfigSchema.optional(),
48537
48564
  oracle: AgentOverrideConfigSchema.optional(),
48538
48565
  librarian: AgentOverrideConfigSchema.optional(),
48539
48566
  explore: AgentOverrideConfigSchema.optional(),
48540
48567
  "frontend-ui-ux-engineer": AgentOverrideConfigSchema.optional(),
48541
48568
  "document-writer": AgentOverrideConfigSchema.optional(),
48542
- "multimodal-looker": AgentOverrideConfigSchema.optional()
48569
+ "multimodal-looker": AgentOverrideConfigSchema.optional(),
48570
+ "orchestrator-sisyphus": AgentOverrideConfigSchema.optional()
48543
48571
  });
48544
48572
  var ClaudeCodeConfigSchema = exports_external.object({
48545
48573
  mcp: exports_external.boolean().optional(),
@@ -49759,7 +49787,7 @@ function createOracleAgent(model = DEFAULT_MODEL2) {
49759
49787
  var oracleAgent = createOracleAgent();
49760
49788
 
49761
49789
  // src/agents/librarian.ts
49762
- var DEFAULT_MODEL3 = "opencode/glm-4.7-free";
49790
+ var DEFAULT_MODEL3 = "anthropic/claude-sonnet-4-5";
49763
49791
  var LIBRARIAN_PROMPT_METADATA = {
49764
49792
  category: "exploration",
49765
49793
  cost: "CHEAP",
@@ -49777,24 +49805,17 @@ var LIBRARIAN_PROMPT_METADATA = {
49777
49805
  ]
49778
49806
  };
49779
49807
  function createLibrarianAgent(model = DEFAULT_MODEL3) {
49780
- const restrictions = createAgentToolRestrictions([
49781
- "write",
49782
- "edit",
49783
- "task",
49784
- "sisyphus_task",
49785
- "call_omo_agent"
49786
- ]);
49787
49808
  return {
49788
49809
  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.",
49789
49810
  mode: "subagent",
49790
49811
  model,
49791
49812
  temperature: 0.1,
49792
- ...restrictions,
49813
+ tools: { write: false, edit: false, background_task: false },
49793
49814
  prompt: `# THE LIBRARIAN
49794
49815
 
49795
49816
  You are **THE LIBRARIAN**, a specialized open-source codebase understanding agent.
49796
49817
 
49797
- Your job: Answer questions about open-source libraries. Provide **EVIDENCE** with **GitHub permalinks** when the question requires verification, implementation details, or current/version-specific information. For well-known APIs and stable concepts, answer directly from knowledge.
49818
+ Your job: Answer questions about open-source libraries by finding **EVIDENCE** with **GitHub permalinks**.
49798
49819
 
49799
49820
  ## CRITICAL: DATE AWARENESS
49800
49821
 
@@ -49806,20 +49827,64 @@ Your job: Answer questions about open-source libraries. Provide **EVIDENCE** wit
49806
49827
 
49807
49828
  ---
49808
49829
 
49809
- ## PHASE 0: ASSESS BEFORE SEARCHING
49830
+ ## PHASE 0: REQUEST CLASSIFICATION (MANDATORY FIRST STEP)
49810
49831
 
49811
- **First**: Can you answer confidently from training knowledge? If yes, answer directly.
49812
-
49813
- **Search when**: version-specific info, implementation internals, recent changes, unfamiliar libraries, user explicitly requests source/examples.
49814
-
49815
- **If search needed**, classify into:
49832
+ Classify EVERY request into one of these categories before taking action:
49816
49833
 
49817
49834
  | Type | Trigger Examples | Tools |
49818
49835
  |------|------------------|-------|
49819
- | **TYPE A: CONCEPTUAL** | "How do I use X?", "Best practice for Y?" | context7 + web search (if available) in parallel |
49836
+ | **TYPE A: CONCEPTUAL** | "How do I use X?", "Best practice for Y?" | Doc Discovery \u2192 context7 + websearch |
49820
49837
  | **TYPE B: IMPLEMENTATION** | "How does X implement Y?", "Show me source of Z" | gh clone + read + blame |
49821
- | **TYPE C: CONTEXT** | "Why was this changed?", "What's the history?", "Related issues/PRs?" | gh issues/prs + git log/blame |
49822
- | **TYPE D: COMPREHENSIVE** | Complex/ambiguous requests | ALL available tools in parallel |
49838
+ | **TYPE C: CONTEXT** | "Why was this changed?", "History of X?" | gh issues/prs + git log/blame |
49839
+ | **TYPE D: COMPREHENSIVE** | Complex/ambiguous requests | Doc Discovery \u2192 ALL tools |
49840
+
49841
+ ---
49842
+
49843
+ ## PHASE 0.5: DOCUMENTATION DISCOVERY (FOR TYPE A & D)
49844
+
49845
+ **When to execute**: Before TYPE A or TYPE D investigations involving external libraries/frameworks.
49846
+
49847
+ ### Step 1: Find Official Documentation
49848
+ \`\`\`
49849
+ websearch("library-name official documentation site")
49850
+ \`\`\`
49851
+ - Identify the **official documentation URL** (not blogs, not tutorials)
49852
+ - Note the base URL (e.g., \`https://docs.example.com\`)
49853
+
49854
+ ### Step 2: Version Check (if version specified)
49855
+ If user mentions a specific version (e.g., "React 18", "Next.js 14", "v2.x"):
49856
+ \`\`\`
49857
+ websearch("library-name v{version} documentation")
49858
+ // OR check if docs have version selector:
49859
+ webfetch(official_docs_url + "/versions")
49860
+ // or
49861
+ webfetch(official_docs_url + "/v{version}")
49862
+ \`\`\`
49863
+ - Confirm you're looking at the **correct version's documentation**
49864
+ - Many docs have versioned URLs: \`/docs/v2/\`, \`/v14/\`, etc.
49865
+
49866
+ ### Step 3: Sitemap Discovery (understand doc structure)
49867
+ \`\`\`
49868
+ webfetch(official_docs_base_url + "/sitemap.xml")
49869
+ // Fallback options:
49870
+ webfetch(official_docs_base_url + "/sitemap-0.xml")
49871
+ webfetch(official_docs_base_url + "/docs/sitemap.xml")
49872
+ \`\`\`
49873
+ - Parse sitemap to understand documentation structure
49874
+ - Identify relevant sections for the user's question
49875
+ - This prevents random searching\u2014you now know WHERE to look
49876
+
49877
+ ### Step 4: Targeted Investigation
49878
+ With sitemap knowledge, fetch the SPECIFIC documentation pages relevant to the query:
49879
+ \`\`\`
49880
+ webfetch(specific_doc_page_from_sitemap)
49881
+ context7_query-docs(libraryId: id, query: "specific topic")
49882
+ \`\`\`
49883
+
49884
+ **Skip Doc Discovery when**:
49885
+ - TYPE B (implementation) - you're cloning repos anyway
49886
+ - TYPE C (context/history) - you're looking at issues/PRs
49887
+ - Library has no official docs (rare OSS projects)
49823
49888
 
49824
49889
  ---
49825
49890
 
@@ -49828,15 +49893,15 @@ Your job: Answer questions about open-source libraries. Provide **EVIDENCE** wit
49828
49893
  ### TYPE A: CONCEPTUAL QUESTION
49829
49894
  **Trigger**: "How do I...", "What is...", "Best practice for...", rough/general questions
49830
49895
 
49831
- **If searching**, use tools as needed:
49896
+ **Execute Documentation Discovery FIRST (Phase 0.5)**, then:
49832
49897
  \`\`\`
49833
49898
  Tool 1: context7_resolve-library-id("library-name")
49834
- \u2192 then context7_get-library-docs(id, topic: "specific-topic")
49835
- Tool 2: grep_app_searchGitHub(query: "usage pattern", language: ["TypeScript"])
49836
- Tool 3 (optional): If web search is available, search "library-name topic 2025"
49899
+ \u2192 then context7_query-docs(libraryId: id, query: "specific-topic")
49900
+ Tool 2: webfetch(relevant_pages_from_sitemap) // Targeted, not random
49901
+ Tool 3: grep_app_searchGitHub(query: "usage pattern", language: ["TypeScript"])
49837
49902
  \`\`\`
49838
49903
 
49839
- **Output**: Summarize findings with links to official docs and real-world examples.
49904
+ **Output**: Summarize findings with links to official docs (versioned if applicable) and real-world examples.
49840
49905
 
49841
49906
  ---
49842
49907
 
@@ -49860,7 +49925,7 @@ Step 4: Construct permalink
49860
49925
  https://github.com/owner/repo/blob/<sha>/path/to/file#L10-L20
49861
49926
  \`\`\`
49862
49927
 
49863
- **For faster results, parallelize**:
49928
+ **Parallel acceleration (4+ calls)**:
49864
49929
  \`\`\`
49865
49930
  Tool 1: gh repo clone owner/repo \${TMPDIR:-/tmp}/repo -- --depth 1
49866
49931
  Tool 2: grep_app_searchGitHub(query: "function_name", repo: "owner/repo")
@@ -49873,7 +49938,7 @@ Tool 4: context7_get-library-docs(id, topic: "relevant-api")
49873
49938
  ### TYPE C: CONTEXT & HISTORY
49874
49939
  **Trigger**: "Why was this changed?", "What's the history?", "Related issues/PRs?"
49875
49940
 
49876
- **Tools to use**:
49941
+ **Execute in parallel (4+ calls)**:
49877
49942
  \`\`\`
49878
49943
  Tool 1: gh search issues "keyword" --repo owner/repo --state all --limit 10
49879
49944
  Tool 2: gh search prs "keyword" --repo owner/repo --state merged --limit 10
@@ -49895,22 +49960,21 @@ gh api repos/owner/repo/pulls/<number>/files
49895
49960
  ### TYPE D: COMPREHENSIVE RESEARCH
49896
49961
  **Trigger**: Complex questions, ambiguous requests, "deep dive into..."
49897
49962
 
49898
- **Use multiple tools as needed**:
49963
+ **Execute Documentation Discovery FIRST (Phase 0.5)**, then execute in parallel (6+ calls):
49899
49964
  \`\`\`
49900
- // Documentation
49901
- Tool 1: context7_resolve-library-id \u2192 context7_get-library-docs
49965
+ // Documentation (informed by sitemap discovery)
49966
+ Tool 1: context7_resolve-library-id \u2192 context7_query-docs
49967
+ Tool 2: webfetch(targeted_doc_pages_from_sitemap)
49902
49968
 
49903
49969
  // Code Search
49904
- Tool 2: grep_app_searchGitHub(query: "pattern1", language: [...])
49905
- Tool 3: grep_app_searchGitHub(query: "pattern2", useRegexp: true)
49970
+ Tool 3: grep_app_searchGitHub(query: "pattern1", language: [...])
49971
+ Tool 4: grep_app_searchGitHub(query: "pattern2", useRegexp: true)
49906
49972
 
49907
49973
  // Source Analysis
49908
- Tool 4: gh repo clone owner/repo \${TMPDIR:-/tmp}/repo -- --depth 1
49974
+ Tool 5: gh repo clone owner/repo \${TMPDIR:-/tmp}/repo -- --depth 1
49909
49975
 
49910
49976
  // Context
49911
- Tool 5: gh search issues "topic" --repo owner/repo
49912
-
49913
- // Optional: If web search is available, search for recent updates
49977
+ Tool 6: gh search issues "topic" --repo owner/repo
49914
49978
  \`\`\`
49915
49979
 
49916
49980
  ---
@@ -49955,7 +50019,11 @@ https://github.com/tanstack/query/blob/abc123def/packages/react-query/src/useQue
49955
50019
 
49956
50020
  | Purpose | Tool | Command/Usage |
49957
50021
  |---------|------|---------------|
49958
- | **Official Docs** | context7 | \`context7_resolve-library-id\` \u2192 \`context7_get-library-docs\` |
50022
+ | **Official Docs** | context7 | \`context7_resolve-library-id\` \u2192 \`context7_query-docs\` |
50023
+ | **Find Docs URL** | websearch_exa | \`websearch_exa_web_search_exa("library official documentation")\` |
50024
+ | **Sitemap Discovery** | webfetch | \`webfetch(docs_url + "/sitemap.xml")\` to understand doc structure |
50025
+ | **Read Doc Page** | webfetch | \`webfetch(specific_doc_page)\` for targeted documentation |
50026
+ | **Latest Info** | websearch_exa | \`websearch_exa_web_search_exa("query 2025")\` |
49959
50027
  | **Fast Code Search** | grep_app | \`grep_app_searchGitHub(query, language, useRegexp)\` |
49960
50028
  | **Deep Code Search** | gh CLI | \`gh search code "query" --repo owner/repo\` |
49961
50029
  | **Clone Repo** | gh CLI | \`gh repo clone owner/repo \${TMPDIR:-/tmp}/name -- --depth 1\` |
@@ -49963,8 +50031,6 @@ https://github.com/tanstack/query/blob/abc123def/packages/react-query/src/useQue
49963
50031
  | **View Issue/PR** | gh CLI | \`gh issue/pr view <num> --repo owner/repo --comments\` |
49964
50032
  | **Release Info** | gh CLI | \`gh api repos/owner/repo/releases/latest\` |
49965
50033
  | **Git History** | git | \`git log\`, \`git blame\`, \`git show\` |
49966
- | **Read URL** | webfetch | \`webfetch(url)\` for blog posts, SO threads |
49967
- | **Web Search** | (if available) | Use any available web search tool for latest info |
49968
50034
 
49969
50035
  ### Temp Directory
49970
50036
 
@@ -49981,16 +50047,18 @@ Use OS-appropriate temp directory:
49981
50047
 
49982
50048
  ---
49983
50049
 
49984
- ## PARALLEL EXECUTION GUIDANCE
49985
-
49986
- When searching is needed, scale effort to question complexity:
50050
+ ## PARALLEL EXECUTION REQUIREMENTS
49987
50051
 
49988
- | Request Type | Suggested Calls |
50052
+ | Request Type | Suggested Calls | Doc Discovery Required |
49989
50053
  |--------------|----------------|
49990
- | TYPE A (Conceptual) | 1-2 |
49991
- | TYPE B (Implementation) | 2-3 |
49992
- | TYPE C (Context) | 2-3 |
49993
- | TYPE D (Comprehensive) | 3-5 |
50054
+ | TYPE A (Conceptual) | 1-2 | YES (Phase 0.5 first) |
50055
+ | TYPE B (Implementation) | 2-3 NO |
50056
+ | TYPE C (Context) | 2-3 NO |
50057
+ | TYPE D (Comprehensive) | 3-5 | YES (Phase 0.5 first) |
50058
+ | Request Type | Minimum Parallel Calls
50059
+
50060
+ **Doc Discovery is SEQUENTIAL** (websearch \u2192 version check \u2192 sitemap \u2192 investigate).
50061
+ **Main phase is PARALLEL** once you know where to look.
49994
50062
 
49995
50063
  **Always vary queries** when using grep_app:
49996
50064
  \`\`\`
@@ -50014,6 +50082,8 @@ grep_app_searchGitHub(query: "useQuery")
50014
50082
  | grep_app no results | Broaden query, try concept instead of exact name |
50015
50083
  | gh API rate limit | Use cloned repo in temp directory |
50016
50084
  | Repo not found | Search for forks or mirrors |
50085
+ | Sitemap not found | Try \`/sitemap-0.xml\`, \`/sitemap_index.xml\`, or fetch docs index page and parse navigation |
50086
+ | Versioned docs not found | Fall back to latest version, note this in response |
50017
50087
  | Uncertain | **STATE YOUR UNCERTAINTY**, propose hypothesis |
50018
50088
 
50019
50089
  ---
@@ -50781,15 +50851,19 @@ var metisRestrictions = createAgentToolRestrictions([
50781
50851
  "task",
50782
50852
  "sisyphus_task"
50783
50853
  ]);
50784
- var metisAgent = {
50785
- description: "Pre-planning consultant that analyzes requests to identify hidden intentions, ambiguities, and AI failure points.",
50786
- mode: "subagent",
50787
- model: "anthropic/claude-opus-4-5",
50788
- temperature: 0.3,
50789
- ...metisRestrictions,
50790
- prompt: METIS_SYSTEM_PROMPT,
50791
- thinking: { type: "enabled", budgetTokens: 32000 }
50792
- };
50854
+ var DEFAULT_MODEL8 = "anthropic/claude-opus-4-5";
50855
+ function createMetisAgent(model = DEFAULT_MODEL8) {
50856
+ return {
50857
+ description: "Pre-planning consultant that analyzes requests to identify hidden intentions, ambiguities, and AI failure points.",
50858
+ mode: "subagent",
50859
+ model,
50860
+ temperature: 0.3,
50861
+ ...metisRestrictions,
50862
+ prompt: METIS_SYSTEM_PROMPT,
50863
+ thinking: { type: "enabled", budgetTokens: 32000 }
50864
+ };
50865
+ }
50866
+ var metisAgent = createMetisAgent();
50793
50867
 
50794
50868
  // src/agents/orchestrator-sisyphus.ts
50795
50869
  init_constants();
@@ -52196,6 +52270,7 @@ function buildDynamicOrchestratorPrompt(ctx) {
52196
52270
  const skillsSection = buildSkillsSection(skills);
52197
52271
  return ORCHESTRATOR_SISYPHUS_SYSTEM_PROMPT.replace("{CATEGORY_SECTION}", categorySection).replace("{AGENT_SECTION}", agentSection).replace("{DECISION_MATRIX}", decisionMatrix).replace("{SKILLS_SECTION}", skillsSection);
52198
52272
  }
52273
+ var DEFAULT_MODEL9 = "anthropic/claude-sonnet-4-5";
52199
52274
  function createOrchestratorSisyphusAgent(ctx) {
52200
52275
  const restrictions = createAgentToolRestrictions([
52201
52276
  "task",
@@ -52204,7 +52279,7 @@ function createOrchestratorSisyphusAgent(ctx) {
52204
52279
  return {
52205
52280
  description: "Orchestrates work via sisyphus_task() to complete ALL tasks in a todo list until fully done",
52206
52281
  mode: "primary",
52207
- model: "anthropic/claude-sonnet-4-5",
52282
+ model: ctx?.model ?? DEFAULT_MODEL9,
52208
52283
  temperature: 0.1,
52209
52284
  prompt: buildDynamicOrchestratorPrompt(ctx),
52210
52285
  thinking: { type: "enabled", budgetTokens: 32000 },
@@ -52214,7 +52289,7 @@ function createOrchestratorSisyphusAgent(ctx) {
52214
52289
  var orchestratorSisyphusAgent = createOrchestratorSisyphusAgent();
52215
52290
 
52216
52291
  // src/agents/momus.ts
52217
- var DEFAULT_MODEL8 = "openai/gpt-5.2";
52292
+ var DEFAULT_MODEL10 = "openai/gpt-5.2";
52218
52293
  var MOMUS_SYSTEM_PROMPT = `You are a work plan review expert. You review the provided work plan (.sisyphus/plans/{name}.md in the current working project directory) according to **unified, consistent criteria** that ensure clarity, verifiability, and completeness.
52219
52294
 
52220
52295
  **CRITICAL FIRST RULE**:
@@ -52544,7 +52619,7 @@ Use structured format, **in the same language as the work plan**.
52544
52619
 
52545
52620
  **Strike the right balance**: Prevent critical failures while empowering developer autonomy.
52546
52621
  `;
52547
- function createMomusAgent(model = DEFAULT_MODEL8) {
52622
+ function createMomusAgent(model = DEFAULT_MODEL10) {
52548
52623
  const restrictions = createAgentToolRestrictions([
52549
52624
  "write",
52550
52625
  "edit",
@@ -52575,8 +52650,8 @@ var agentSources = {
52575
52650
  "frontend-ui-ux-engineer": createFrontendUiUxEngineerAgent,
52576
52651
  "document-writer": createDocumentWriterAgent,
52577
52652
  "multimodal-looker": createMultimodalLookerAgent,
52578
- "Metis (Plan Consultant)": metisAgent,
52579
- "Momus (Plan Reviewer)": momusAgent,
52653
+ "Metis (Plan Consultant)": createMetisAgent,
52654
+ "Momus (Plan Reviewer)": createMomusAgent,
52580
52655
  "orchestrator-sisyphus": orchestratorSisyphusAgent
52581
52656
  };
52582
52657
  var agentMetadata = {
@@ -52689,7 +52764,11 @@ function createBuiltinAgents(disabledAgents = [], agentOverrides = {}, directory
52689
52764
  }
52690
52765
  if (!disabledAgents.includes("orchestrator-sisyphus")) {
52691
52766
  const orchestratorOverride = agentOverrides["orchestrator-sisyphus"];
52692
- let orchestratorConfig = createOrchestratorSisyphusAgent({ availableAgents });
52767
+ const orchestratorModel = orchestratorOverride?.model;
52768
+ let orchestratorConfig = createOrchestratorSisyphusAgent({
52769
+ model: orchestratorModel,
52770
+ availableAgents
52771
+ });
52693
52772
  if (orchestratorOverride) {
52694
52773
  orchestratorConfig = mergeAgentConfig(orchestratorConfig, orchestratorOverride);
52695
52774
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "3.0.0-beta.1",
3
+ "version": "3.0.0-beta.2",
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",