@reinamaccredy/oh-my-opencode 3.0.0-beta.1 → 3.0.0-beta.11
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 +4 -4
- package/README.md +5 -5
- package/README.zh-cn.md +4 -4
- package/dist/cli/config-manager.d.ts +0 -14
- package/dist/cli/index.js +286 -47
- package/dist/cli/types.d.ts +3 -0
- package/dist/features/background-agent/manager.d.ts +1 -0
- package/dist/index.js +34 -29
- package/package.json +5 -1
package/README.ja.md
CHANGED
|
@@ -362,7 +362,7 @@ opencode auth login
|
|
|
362
362
|
`opencode.json` に完全なモデル設定も構成する必要があります。
|
|
363
363
|
[opencode-openai-codex-auth ドキュメント](https://github.com/numman-ali/opencode-openai-codex-auth)を読み、[`config/opencode-modern.json`](https://github.com/numman-ali/opencode-openai-codex-auth/blob/main/config/opencode-modern.json)(OpenCode v1.0.210+)または [`config/opencode-legacy.json`](https://github.com/numman-ali/opencode-openai-codex-auth/blob/main/config/opencode-legacy.json)(旧バージョン)から provider/models 設定をコピーして、ユーザーの既存のセットアップを壊さないよう慎重にマージしてください。
|
|
364
364
|
|
|
365
|
-
**利用可能なモデル**: `
|
|
365
|
+
**利用可能なモデル**: `proxypal/gpt-5.2-codex`, `proxypal/gpt-5.2-codex-codex`, `openai/gpt-5.1-codex-max`, `openai/gpt-5.1-codex`, `openai/gpt-5.1-codex-mini`, `openai/gpt-5.1`
|
|
366
366
|
|
|
367
367
|
**Variants** (OpenCode v1.0.210+): `--variant=<none|low|medium|high|xhigh>` オプションで推論強度を制御できます。
|
|
368
368
|
|
|
@@ -460,7 +460,7 @@ oh-my-opencode を削除するには:
|
|
|
460
460
|
### Agents: あなたの新しいチームメイト
|
|
461
461
|
|
|
462
462
|
- **Sisyphus** (`anthropic/claude-opus-4-5`): **デフォルトエージェントです。** OpenCode のための強力な AI オーケストレーターです。専門のサブエージェントを活用して、複雑なタスクを計画、委任、実行します。バックグラウンドタスクへの委任と Todo ベースのワークフローを重視します。最大の推論能力を発揮するため、Claude Opus 4.5 と拡張思考 (32k token budget) を使用します。
|
|
463
|
-
- **oracle** (`
|
|
463
|
+
- **oracle** (`proxypal/gpt-5.2-codex`): アーキテクチャ、コードレビュー、戦略立案のための専門アドバイザー。GPT-5.2 の卓越した論理的推論と深い分析能力を活用します。AmpCode からインスピレーションを得ました。
|
|
464
464
|
- **librarian** (`anthropic/claude-sonnet-4-5` または `google/gemini-3-flash`): マルチリポジトリ分析、ドキュメント検索、実装例の調査を担当。Antigravity 認証が設定されている場合は Gemini 3 Flash を使用し、それ以外は Claude Sonnet 4.5 を使用して、深いコードベース理解と GitHub リサーチ、根拠に基づいた回答を提供します。AmpCode からインスピレーションを得ました。
|
|
465
465
|
- **explore** (`opencode/grok-code`、`google/gemini-3-flash`、または `anthropic/claude-haiku-4-5`): 高速なコードベース探索、ファイルパターンマッチング。Antigravity 認証が設定されている場合は Gemini 3 Flash を使用し、Claude max20 が利用可能な場合は Haiku を使用し、それ以外は Grok を使います。Claude Code からインスピレーションを得ました。
|
|
466
466
|
- **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`): 開発者に転身したデザイナーという設定です。素晴らしい UI を作ります。美しく独創的な UI コードを生成することに長けた Gemini を使用します。
|
|
@@ -755,7 +755,7 @@ Oh My OpenCode は以下の場所からフックを読み込んで実行しま
|
|
|
755
755
|
/* エージェントのオーバーライド - 特定のタスクに合わせてモデルをカスタマイズ */
|
|
756
756
|
"agents": {
|
|
757
757
|
"oracle": {
|
|
758
|
-
"model": "
|
|
758
|
+
"model": "proxypal/gpt-5.2-codex" // 戦略的な推論のための GPT
|
|
759
759
|
},
|
|
760
760
|
"explore": {
|
|
761
761
|
"model": "opencode/grok-code" // 探索のための高速かつ無料のモデル
|
|
@@ -916,7 +916,7 @@ Oh My OpenCode は以下の場所からフックを読み込んで実行しま
|
|
|
916
916
|
"model": "anthropic/claude-opus-4"
|
|
917
917
|
},
|
|
918
918
|
"Prometheus (Planner)": {
|
|
919
|
-
"model": "
|
|
919
|
+
"model": "proxypal/gpt-5.2-codex"
|
|
920
920
|
},
|
|
921
921
|
"Metis (Plan Consultant)": {
|
|
922
922
|
"model": "anthropic/claude-sonnet-4-5"
|
package/README.md
CHANGED
|
@@ -401,7 +401,7 @@ First, add the opencode-openai-codex-auth plugin:
|
|
|
401
401
|
You'll also need full model settings in `opencode.json`.
|
|
402
402
|
Read the [opencode-openai-codex-auth documentation](https://github.com/numman-ali/opencode-openai-codex-auth), copy provider/models config from [`config/opencode-modern.json`](https://github.com/numman-ali/opencode-openai-codex-auth/blob/main/config/opencode-modern.json) (for OpenCode v1.0.210+) or [`config/opencode-legacy.json`](https://github.com/numman-ali/opencode-openai-codex-auth/blob/main/config/opencode-legacy.json) (for older versions), and merge carefully to avoid breaking the user's existing setup.
|
|
403
403
|
|
|
404
|
-
**Available models**: `
|
|
404
|
+
**Available models**: `proxypal/gpt-5.2-codex`, `proxypal/gpt-5.2-codex-codex`, `openai/gpt-5.1-codex-max`, `openai/gpt-5.1-codex`, `openai/gpt-5.1-codex-mini`, `openai/gpt-5.1`
|
|
405
405
|
|
|
406
406
|
**Variants** (OpenCode v1.0.210+): Use `--variant=<none|low|medium|high|xhigh>` for reasoning effort control.
|
|
407
407
|
|
|
@@ -498,7 +498,7 @@ To remove oh-my-opencode:
|
|
|
498
498
|
### Agents: Your Teammates
|
|
499
499
|
|
|
500
500
|
- **Sisyphus** (`anthropic/claude-opus-4-5`): **The default agent.** A powerful AI orchestrator for OpenCode. Plans, delegates, and executes complex tasks using specialized subagents with aggressive parallel execution. Emphasizes background task delegation and todo-driven workflow. Uses Claude Opus 4.5 with extended thinking (32k budget) for maximum reasoning capability.
|
|
501
|
-
- **oracle** (`
|
|
501
|
+
- **oracle** (`proxypal/gpt-5.2-codex`): Architecture, code review, strategy. Uses GPT-5.2 for its stellar logical reasoning and deep analysis. Inspired by AmpCode.
|
|
502
502
|
- **librarian** (`anthropic/claude-sonnet-4-5` or `google/gemini-3-flash`): Multi-repo analysis, doc lookup, implementation examples. Uses Gemini 3 Flash when Antigravity auth is configured, otherwise Claude Sonnet 4.5 for deep codebase understanding and GitHub research with evidence-based answers. Inspired by AmpCode.
|
|
503
503
|
- **explore** (`opencode/grok-code`, `google/gemini-3-flash`, or `anthropic/claude-haiku-4-5`): Fast codebase exploration and pattern matching. Uses Gemini 3 Flash when Antigravity auth is configured, Haiku when Claude max20 is available, otherwise Grok. Inspired by Claude Code.
|
|
504
504
|
- **frontend-ui-ux-engineer** (`google/gemini-3-pro-high`): A designer turned developer. Builds gorgeous UIs. Gemini excels at creative, beautiful UI code.
|
|
@@ -811,7 +811,7 @@ When both `oh-my-opencode.jsonc` and `oh-my-opencode.json` files exist, `.jsonc`
|
|
|
811
811
|
/* Agent overrides - customize models for specific tasks */
|
|
812
812
|
"agents": {
|
|
813
813
|
"oracle": {
|
|
814
|
-
"model": "
|
|
814
|
+
"model": "proxypal/gpt-5.2-codex" // GPT for strategic reasoning
|
|
815
815
|
},
|
|
816
816
|
"explore": {
|
|
817
817
|
"model": "opencode/grok-code" // Free & fast for exploration
|
|
@@ -1007,7 +1007,7 @@ You can also customize Sisyphus agents like other agents:
|
|
|
1007
1007
|
"model": "anthropic/claude-opus-4"
|
|
1008
1008
|
},
|
|
1009
1009
|
"Prometheus (Planner)": {
|
|
1010
|
-
"model": "
|
|
1010
|
+
"model": "proxypal/gpt-5.2-codex"
|
|
1011
1011
|
},
|
|
1012
1012
|
"Metis (Plan Consultant)": {
|
|
1013
1013
|
"model": "anthropic/claude-sonnet-4-5"
|
|
@@ -1066,7 +1066,7 @@ Categories enable domain-specific task delegation via the `sisyphus_task` tool.
|
|
|
1066
1066
|
| Category | Model | Description |
|
|
1067
1067
|
|----------|-------|-------------|
|
|
1068
1068
|
| `visual` | `google/gemini-3-pro-preview` | Frontend, UI/UX, design-focused tasks. High creativity (temp 0.7). |
|
|
1069
|
-
| `business-logic` | `
|
|
1069
|
+
| `business-logic` | `proxypal/gpt-5.2-codex` | Backend logic, architecture, strategic reasoning. Low creativity (temp 0.1). |
|
|
1070
1070
|
|
|
1071
1071
|
**Usage:**
|
|
1072
1072
|
|
package/README.zh-cn.md
CHANGED
|
@@ -367,7 +367,7 @@ opencode auth login
|
|
|
367
367
|
要在 `opencode.json` 里配完整的模型设置。
|
|
368
368
|
去读 [opencode-openai-codex-auth 文档](https://github.com/numman-ali/opencode-openai-codex-auth),从 [`config/opencode-modern.json`](https://github.com/numman-ali/opencode-openai-codex-auth/blob/main/config/opencode-modern.json)(OpenCode v1.0.210+)或 [`config/opencode-legacy.json`](https://github.com/numman-ali/opencode-openai-codex-auth/blob/main/config/opencode-legacy.json)(旧版本)抄 provider/models 配置,动脑子合并,别搞炸了。
|
|
369
369
|
|
|
370
|
-
**可用模型**:`
|
|
370
|
+
**可用模型**:`proxypal/gpt-5.2-codex`, `proxypal/gpt-5.2-codex-codex`, `openai/gpt-5.1-codex-max`, `openai/gpt-5.1-codex`, `openai/gpt-5.1-codex-mini`, `openai/gpt-5.1`
|
|
371
371
|
|
|
372
372
|
**Variants**(OpenCode v1.0.210+):用 `--variant=<none|low|medium|high|xhigh>` 控制推理强度。
|
|
373
373
|
|
|
@@ -465,7 +465,7 @@ gh repo star code-yeongyu/oh-my-opencode
|
|
|
465
465
|
### Agents:你的神队友
|
|
466
466
|
|
|
467
467
|
- **Sisyphus** (`anthropic/claude-opus-4-5`):**默认 Agent。** OpenCode 专属的强力 AI 编排器。指挥专业子 Agent 搞定复杂任务。主打后台任务委派和 Todo 驱动。用 Claude Opus 4.5 加上扩展思考(32k token 预算),智商拉满。
|
|
468
|
-
- **oracle** (`
|
|
468
|
+
- **oracle** (`proxypal/gpt-5.2-codex`):架构师、代码审查员、战略家。GPT-5.2 的逻辑推理和深度分析能力不是盖的。致敬 AmpCode。
|
|
469
469
|
- **librarian** (`anthropic/claude-sonnet-4-5` 或 `google/gemini-3-flash`):多仓库分析、查文档、找示例。配置 Antigravity 认证时使用 Gemini 3 Flash,否则使用 Claude Sonnet 4.5 深入理解代码库,GitHub 调研,给出的答案都有据可查。致敬 AmpCode。
|
|
470
470
|
- **explore** (`opencode/grok-code`、`google/gemini-3-flash` 或 `anthropic/claude-haiku-4-5`):极速代码库扫描、模式匹配。配置 Antigravity 认证时使用 Gemini 3 Flash,Claude max20 可用时使用 Haiku,否则用 Grok。致敬 Claude Code。
|
|
471
471
|
- **frontend-ui-ux-engineer** (`google/gemini-3-pro-preview`):设计师出身的程序员。UI 做得那是真漂亮。Gemini 写这种创意美观的代码是一绝。
|
|
@@ -756,7 +756,7 @@ Agent 爽了,你自然也爽。但我还想直接让你爽。
|
|
|
756
756
|
/* Agent 覆盖 - 为特定任务自定义模型 */
|
|
757
757
|
"agents": {
|
|
758
758
|
"oracle": {
|
|
759
|
-
"model": "
|
|
759
|
+
"model": "proxypal/gpt-5.2-codex" // 用于战略推理的 GPT
|
|
760
760
|
},
|
|
761
761
|
"explore": {
|
|
762
762
|
"model": "opencode/grok-code" // 快速且免费的搜索模型
|
|
@@ -917,7 +917,7 @@ Sisyphus Agent 也能自定义:
|
|
|
917
917
|
"model": "anthropic/claude-opus-4"
|
|
918
918
|
},
|
|
919
919
|
"Prometheus (Planner)": {
|
|
920
|
-
"model": "
|
|
920
|
+
"model": "proxypal/gpt-5.2-codex"
|
|
921
921
|
},
|
|
922
922
|
"Metis (Plan Consultant)": {
|
|
923
923
|
"model": "anthropic/claude-sonnet-4-5"
|
|
@@ -27,20 +27,6 @@ export interface BunInstallResult {
|
|
|
27
27
|
}
|
|
28
28
|
export declare function runBunInstall(): Promise<boolean>;
|
|
29
29
|
export declare function runBunInstallWithDetails(): Promise<BunInstallResult>;
|
|
30
|
-
/**
|
|
31
|
-
* Antigravity Provider Configuration
|
|
32
|
-
*
|
|
33
|
-
* IMPORTANT: Model names MUST use `antigravity-` prefix for stability.
|
|
34
|
-
*
|
|
35
|
-
* The opencode-antigravity-auth plugin supports two naming conventions:
|
|
36
|
-
* - `antigravity-gemini-3-pro-high` (RECOMMENDED, explicit Antigravity quota routing)
|
|
37
|
-
* - `gemini-3-pro-high` (LEGACY, backward compatible but may break in future)
|
|
38
|
-
*
|
|
39
|
-
* Legacy names rely on Gemini CLI using `-preview` suffix for disambiguation.
|
|
40
|
-
* If Google removes `-preview`, legacy names may route to wrong quota.
|
|
41
|
-
*
|
|
42
|
-
* @see https://github.com/NoeFabris/opencode-antigravity-auth#migration-guide-v127
|
|
43
|
-
*/
|
|
44
30
|
export declare const ANTIGRAVITY_PROVIDER_CONFIG: {
|
|
45
31
|
google: {
|
|
46
32
|
name: string;
|
package/dist/cli/index.js
CHANGED
|
@@ -2253,7 +2253,7 @@ var require_picocolors = __commonJS((exports, module) => {
|
|
|
2253
2253
|
var require_package = __commonJS((exports, module) => {
|
|
2254
2254
|
module.exports = {
|
|
2255
2255
|
name: "@reinamaccredy/oh-my-opencode",
|
|
2256
|
-
version: "3.0.0-beta.
|
|
2256
|
+
version: "3.0.0-beta.11",
|
|
2257
2257
|
description: "Fork of oh-my-opencode with Maestro workflow integration - Multi-Model Orchestration, Parallel Background Agents, Design Phases, and TDD Methodology",
|
|
2258
2258
|
main: "dist/index.js",
|
|
2259
2259
|
types: "dist/index.d.ts",
|
|
@@ -2281,6 +2281,10 @@ var require_package = __commonJS((exports, module) => {
|
|
|
2281
2281
|
"build:schema": "bun run script/build-schema.ts",
|
|
2282
2282
|
clean: "rm -rf dist",
|
|
2283
2283
|
prepublishOnly: "bun run clean && bun run build",
|
|
2284
|
+
"publish:beta": "./scripts/publish.sh prerelease",
|
|
2285
|
+
"publish:patch": "./scripts/publish.sh patch",
|
|
2286
|
+
"publish:minor": "./scripts/publish.sh minor",
|
|
2287
|
+
"publish:major": "./scripts/publish.sh major",
|
|
2284
2288
|
typecheck: "tsc --noEmit",
|
|
2285
2289
|
test: "bun test"
|
|
2286
2290
|
},
|
|
@@ -6734,44 +6738,84 @@ function generateOmoConfig(installConfig) {
|
|
|
6734
6738
|
const config = {
|
|
6735
6739
|
$schema: "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json"
|
|
6736
6740
|
};
|
|
6737
|
-
if (installConfig.hasGemini) {
|
|
6741
|
+
if (installConfig.hasProxyPal || installConfig.hasGemini) {
|
|
6738
6742
|
config.google_auth = false;
|
|
6739
6743
|
}
|
|
6740
6744
|
const agents = {};
|
|
6741
|
-
if (
|
|
6742
|
-
agents["Sisyphus"] = { model: "
|
|
6743
|
-
|
|
6744
|
-
|
|
6745
|
-
|
|
6746
|
-
agents["
|
|
6747
|
-
|
|
6748
|
-
agents["
|
|
6745
|
+
if (installConfig.hasProxyPal) {
|
|
6746
|
+
agents["Sisyphus"] = { model: "proxypal/gemini-claude-opus-4-5-thinking" };
|
|
6747
|
+
agents["librarian"] = { model: "proxypal/gemini-claude-opus-4-5-thinking" };
|
|
6748
|
+
agents["explore"] = { model: "proxypal/gemini-3-flash-preview" };
|
|
6749
|
+
agents["frontend-ui-ux-engineer"] = { model: "proxypal/gemini-3-pro-preview" };
|
|
6750
|
+
agents["document-writer"] = { model: "proxypal/gemini-3-flash-preview" };
|
|
6751
|
+
agents["multimodal-looker"] = { model: "proxypal/gemini-3-flash-preview" };
|
|
6752
|
+
agents["orchestrator-sisyphus"] = { model: "proxypal/gemini-claude-sonnet-4-5-thinking" };
|
|
6753
|
+
agents["Prometheus (Planner)"] = { model: "proxypal/gemini-claude-opus-4-5-thinking" };
|
|
6754
|
+
agents["Metis (Plan Consultant)"] = { model: "proxypal/gemini-claude-opus-4-5-thinking" };
|
|
6755
|
+
agents["oracle"] = { model: "proxypal/gpt-5.2-codex" };
|
|
6756
|
+
agents["Momus (Plan Reviewer)"] = { model: "proxypal/gpt-5.2-codex" };
|
|
6757
|
+
} else if (installConfig.hasGemini) {
|
|
6758
|
+
agents["Sisyphus"] = { model: "proxypal/gemini-claude-opus-4-5-thinking" };
|
|
6759
|
+
agents["librarian"] = { model: "proxypal/gemini-claude-opus-4-5-thinking" };
|
|
6760
|
+
agents["explore"] = { model: "proxypal/gemini-3-flash-preview" };
|
|
6761
|
+
agents["frontend-ui-ux-engineer"] = { model: "proxypal/gemini-3-pro-preview" };
|
|
6762
|
+
agents["document-writer"] = { model: "proxypal/gemini-3-flash-preview" };
|
|
6763
|
+
agents["multimodal-looker"] = { model: "proxypal/gemini-3-flash-preview" };
|
|
6764
|
+
agents["orchestrator-sisyphus"] = { model: "proxypal/gemini-claude-sonnet-4-5-thinking" };
|
|
6765
|
+
agents["Prometheus (Planner)"] = { model: "proxypal/gemini-claude-opus-4-5-thinking" };
|
|
6766
|
+
agents["Metis (Plan Consultant)"] = { model: "proxypal/gemini-claude-opus-4-5-thinking" };
|
|
6767
|
+
} else if (installConfig.hasClaude) {
|
|
6768
|
+
agents["Sisyphus"] = { model: "anthropic/claude-opus-4-5" };
|
|
6769
|
+
agents["librarian"] = { model: "anthropic/claude-sonnet-4-5" };
|
|
6770
|
+
agents["explore"] = { model: installConfig.isMax20 ? "anthropic/claude-haiku-4-5" : "opencode/glm-4.7-free" };
|
|
6771
|
+
agents["frontend-ui-ux-engineer"] = { model: "anthropic/claude-opus-4-5" };
|
|
6772
|
+
agents["document-writer"] = { model: "anthropic/claude-opus-4-5" };
|
|
6773
|
+
agents["multimodal-looker"] = { model: "anthropic/claude-opus-4-5" };
|
|
6749
6774
|
} else {
|
|
6775
|
+
agents["Sisyphus"] = { model: "opencode/glm-4.7-free" };
|
|
6776
|
+
agents["librarian"] = { model: "opencode/glm-4.7-free" };
|
|
6750
6777
|
agents["explore"] = { model: "opencode/glm-4.7-free" };
|
|
6751
|
-
|
|
6752
|
-
|
|
6753
|
-
agents["
|
|
6754
|
-
|
|
6755
|
-
|
|
6756
|
-
|
|
6757
|
-
|
|
6758
|
-
|
|
6759
|
-
|
|
6760
|
-
|
|
6761
|
-
|
|
6762
|
-
|
|
6763
|
-
|
|
6764
|
-
|
|
6765
|
-
agents["multimodal-looker"] = { model: fallbackModel };
|
|
6778
|
+
agents["frontend-ui-ux-engineer"] = { model: "opencode/glm-4.7-free" };
|
|
6779
|
+
agents["document-writer"] = { model: "opencode/glm-4.7-free" };
|
|
6780
|
+
agents["multimodal-looker"] = { model: "opencode/glm-4.7-free" };
|
|
6781
|
+
}
|
|
6782
|
+
if (!installConfig.hasProxyPal) {
|
|
6783
|
+
if (installConfig.hasChatGPT) {
|
|
6784
|
+
agents["oracle"] = { model: "proxypal/gpt-5.2-codex" };
|
|
6785
|
+
agents["Momus (Plan Reviewer)"] = { model: "proxypal/gpt-5.2-codex" };
|
|
6786
|
+
} else if (installConfig.hasClaude) {
|
|
6787
|
+
agents["oracle"] = { model: "anthropic/claude-opus-4-5" };
|
|
6788
|
+
agents["Momus (Plan Reviewer)"] = { model: "anthropic/claude-opus-4-5" };
|
|
6789
|
+
} else {
|
|
6790
|
+
agents["oracle"] = { model: "opencode/glm-4.7-free" };
|
|
6791
|
+
}
|
|
6766
6792
|
}
|
|
6767
6793
|
if (Object.keys(agents).length > 0) {
|
|
6768
6794
|
config.agents = agents;
|
|
6769
6795
|
}
|
|
6770
|
-
if (installConfig.
|
|
6796
|
+
if (installConfig.hasProxyPal) {
|
|
6797
|
+
config.categories = {
|
|
6798
|
+
"visual-engineering": { model: "proxypal/gemini-3-pro-preview" },
|
|
6799
|
+
ultrabrain: { model: "proxypal/gpt-5.2-codex" },
|
|
6800
|
+
artistry: { model: "proxypal/gemini-3-pro-preview" },
|
|
6801
|
+
quick: { model: "proxypal/gemini-3-flash-preview" },
|
|
6802
|
+
"most-capable": { model: "proxypal/gemini-claude-opus-4-5-thinking" },
|
|
6803
|
+
writing: { model: "proxypal/gemini-3-flash-preview" },
|
|
6804
|
+
general: { model: "proxypal/gemini-claude-opus-4-5-thinking" }
|
|
6805
|
+
};
|
|
6806
|
+
} else if (installConfig.hasGemini) {
|
|
6771
6807
|
config.categories = {
|
|
6772
|
-
"visual-engineering": { model: "
|
|
6773
|
-
|
|
6774
|
-
|
|
6808
|
+
"visual-engineering": { model: "proxypal/gemini-3-pro-preview" },
|
|
6809
|
+
ultrabrain: { model: "proxypal/gpt-5.2-codex" },
|
|
6810
|
+
artistry: { model: "proxypal/gemini-3-pro-preview" },
|
|
6811
|
+
quick: { model: "proxypal/gemini-3-flash-preview" },
|
|
6812
|
+
"most-capable": { model: "proxypal/gemini-claude-opus-4-5-thinking" },
|
|
6813
|
+
writing: { model: "proxypal/gemini-3-flash-preview" },
|
|
6814
|
+
general: { model: "proxypal/gemini-claude-opus-4-5-thinking" }
|
|
6815
|
+
};
|
|
6816
|
+
} else if (installConfig.hasChatGPT) {
|
|
6817
|
+
config.categories = {
|
|
6818
|
+
ultrabrain: { model: "proxypal/gpt-5.2-codex" }
|
|
6775
6819
|
};
|
|
6776
6820
|
}
|
|
6777
6821
|
return config;
|
|
@@ -6887,6 +6931,78 @@ async function addAuthPlugins(config) {
|
|
|
6887
6931
|
return { success: false, configPath: path3, error: formatErrorWithSuggestion(err, "add auth plugins to config") };
|
|
6888
6932
|
}
|
|
6889
6933
|
}
|
|
6934
|
+
var PROXYPAL_PROVIDER_CONFIG = {
|
|
6935
|
+
proxypal: {
|
|
6936
|
+
name: "ProxyPal",
|
|
6937
|
+
npm: "@ai-sdk/anthropic",
|
|
6938
|
+
options: {
|
|
6939
|
+
apiKey: "proxypal-local",
|
|
6940
|
+
baseURL: "http://127.0.0.1:8317/v1",
|
|
6941
|
+
includeUsage: true
|
|
6942
|
+
},
|
|
6943
|
+
models: {
|
|
6944
|
+
"gemini-claude-opus-4-5-thinking": {
|
|
6945
|
+
name: "Gemini Claude Opus 4 5 Thinking",
|
|
6946
|
+
limit: { context: 168000, output: 64000 },
|
|
6947
|
+
options: { thinking: { budgetTokens: 32768, type: "enabled" } },
|
|
6948
|
+
reasoning: true
|
|
6949
|
+
},
|
|
6950
|
+
"gemini-claude-sonnet-4-5-thinking": {
|
|
6951
|
+
name: "Gemini Claude Sonnet 4 5 Thinking",
|
|
6952
|
+
limit: { context: 168000, output: 64000 },
|
|
6953
|
+
options: { thinking: { budgetTokens: 32768, type: "enabled" } },
|
|
6954
|
+
reasoning: true
|
|
6955
|
+
},
|
|
6956
|
+
"gemini-claude-sonnet-4-5": {
|
|
6957
|
+
name: "Gemini Claude Sonnet 4 5",
|
|
6958
|
+
limit: { context: 168000, output: 64000 }
|
|
6959
|
+
},
|
|
6960
|
+
"gemini-3-pro-preview": {
|
|
6961
|
+
name: "Gemini 3 Pro Preview",
|
|
6962
|
+
limit: { context: 880964, output: 65536 }
|
|
6963
|
+
},
|
|
6964
|
+
"gemini-3-flash-preview": {
|
|
6965
|
+
name: "Gemini 3 Flash Preview",
|
|
6966
|
+
limit: { context: 880964, output: 65536 }
|
|
6967
|
+
},
|
|
6968
|
+
"gemini-2.5-flash": {
|
|
6969
|
+
name: "Gemini 2 5 Flash",
|
|
6970
|
+
limit: { context: 880964, output: 65536 }
|
|
6971
|
+
},
|
|
6972
|
+
"gpt-5.2-codex": {
|
|
6973
|
+
name: "Gpt 5 2 Codex",
|
|
6974
|
+
limit: { context: 336000, output: 32768 },
|
|
6975
|
+
options: { reasoningEffort: "xhigh" },
|
|
6976
|
+
reasoning: true
|
|
6977
|
+
},
|
|
6978
|
+
"gpt-5.2": {
|
|
6979
|
+
name: "Gpt 5 2",
|
|
6980
|
+
limit: { context: 336000, output: 32768 },
|
|
6981
|
+
options: { reasoningEffort: "xhigh" },
|
|
6982
|
+
reasoning: true
|
|
6983
|
+
},
|
|
6984
|
+
"gpt-5.1-codex-max": {
|
|
6985
|
+
name: "Gpt 5 1 Codex Max",
|
|
6986
|
+
limit: { context: 336000, output: 32768 },
|
|
6987
|
+
options: { reasoningEffort: "xhigh" },
|
|
6988
|
+
reasoning: true
|
|
6989
|
+
},
|
|
6990
|
+
"antigravity-gemini-3-pro-high": {
|
|
6991
|
+
name: "Gemini 3 Pro High (Antigravity)",
|
|
6992
|
+
thinking: true,
|
|
6993
|
+
attachment: true,
|
|
6994
|
+
limit: { context: 1048576, output: 65535 },
|
|
6995
|
+
modalities: { input: ["text", "image", "pdf"], output: ["text"] }
|
|
6996
|
+
},
|
|
6997
|
+
"antigravity-gemini-3-flash": {
|
|
6998
|
+
name: "Gemini 3 Flash (Antigravity)",
|
|
6999
|
+
attachment: true,
|
|
7000
|
+
limit: { context: 1048576, output: 65536 },
|
|
7001
|
+
modalities: { input: ["text", "image", "pdf"], output: ["text"] }
|
|
7002
|
+
}
|
|
7003
|
+
}
|
|
7004
|
+
}
|
|
7005
|
+
};
|
|
6890
7006
|
var ANTIGRAVITY_PROVIDER_CONFIG = {
|
|
6891
7007
|
google: {
|
|
6892
7008
|
name: "Google",
|
|
@@ -6981,6 +7097,9 @@ function addProviderConfig(config) {
|
|
|
6981
7097
|
}
|
|
6982
7098
|
const newConfig = { ...existingConfig ?? {} };
|
|
6983
7099
|
const providers = newConfig.provider ?? {};
|
|
7100
|
+
if (config.hasProxyPal) {
|
|
7101
|
+
providers.proxypal = PROXYPAL_PROVIDER_CONFIG.proxypal;
|
|
7102
|
+
}
|
|
6984
7103
|
if (config.hasGemini) {
|
|
6985
7104
|
providers.google = ANTIGRAVITY_PROVIDER_CONFIG.google;
|
|
6986
7105
|
}
|
|
@@ -7000,6 +7119,7 @@ function addProviderConfig(config) {
|
|
|
7000
7119
|
function detectCurrentConfig() {
|
|
7001
7120
|
const result = {
|
|
7002
7121
|
isInstalled: false,
|
|
7122
|
+
hasProxyPal: false,
|
|
7003
7123
|
hasClaude: true,
|
|
7004
7124
|
isMax20: true,
|
|
7005
7125
|
hasChatGPT: true,
|
|
@@ -7039,6 +7159,14 @@ function detectCurrentConfig() {
|
|
|
7039
7159
|
return result;
|
|
7040
7160
|
}
|
|
7041
7161
|
const agents = omoConfig.agents ?? {};
|
|
7162
|
+
if (agents["Sisyphus"]?.model?.startsWith("proxypal/")) {
|
|
7163
|
+
result.hasProxyPal = true;
|
|
7164
|
+
result.hasClaude = false;
|
|
7165
|
+
result.isMax20 = false;
|
|
7166
|
+
result.hasChatGPT = false;
|
|
7167
|
+
result.hasGemini = false;
|
|
7168
|
+
return result;
|
|
7169
|
+
}
|
|
7042
7170
|
if (agents["Sisyphus"]?.model === "opencode/glm-4.7-free") {
|
|
7043
7171
|
result.hasClaude = false;
|
|
7044
7172
|
result.isMax20 = false;
|
|
@@ -7078,19 +7206,48 @@ function formatConfigSummary(config) {
|
|
|
7078
7206
|
const lines = [];
|
|
7079
7207
|
lines.push(import_picocolors2.default.bold(import_picocolors2.default.white("Configuration Summary")));
|
|
7080
7208
|
lines.push("");
|
|
7081
|
-
|
|
7082
|
-
|
|
7083
|
-
|
|
7084
|
-
|
|
7209
|
+
if (config.hasProxyPal) {
|
|
7210
|
+
lines.push(formatProvider("ProxyPal", true, "all models via proxy"));
|
|
7211
|
+
lines.push(formatProvider("Claude", false));
|
|
7212
|
+
lines.push(formatProvider("ChatGPT", false));
|
|
7213
|
+
lines.push(formatProvider("Gemini", false));
|
|
7214
|
+
} else {
|
|
7215
|
+
lines.push(formatProvider("ProxyPal", false));
|
|
7216
|
+
const claudeDetail = config.hasClaude ? config.isMax20 ? "max20" : "standard" : undefined;
|
|
7217
|
+
lines.push(formatProvider("Claude", config.hasClaude, claudeDetail));
|
|
7218
|
+
lines.push(formatProvider("ChatGPT", config.hasChatGPT));
|
|
7219
|
+
lines.push(formatProvider("Gemini", config.hasGemini));
|
|
7220
|
+
}
|
|
7085
7221
|
lines.push("");
|
|
7086
7222
|
lines.push(import_picocolors2.default.dim("\u2500".repeat(40)));
|
|
7087
7223
|
lines.push("");
|
|
7088
7224
|
lines.push(import_picocolors2.default.bold(import_picocolors2.default.white("Agent Configuration")));
|
|
7089
7225
|
lines.push("");
|
|
7090
|
-
|
|
7091
|
-
|
|
7092
|
-
|
|
7093
|
-
|
|
7226
|
+
let sisyphusModel;
|
|
7227
|
+
let oracleModel;
|
|
7228
|
+
let librarianModel;
|
|
7229
|
+
let frontendModel;
|
|
7230
|
+
if (config.hasProxyPal) {
|
|
7231
|
+
sisyphusModel = "gemini-claude-opus-4-5-thinking";
|
|
7232
|
+
oracleModel = "gpt-5.2-codex";
|
|
7233
|
+
librarianModel = "gemini-claude-opus-4-5-thinking";
|
|
7234
|
+
frontendModel = "gemini-3-pro-preview";
|
|
7235
|
+
} else if (config.hasGemini) {
|
|
7236
|
+
sisyphusModel = "gemini-claude-opus-4-5-thinking";
|
|
7237
|
+
oracleModel = config.hasChatGPT ? "gpt-5.2-codex" : config.hasClaude ? "claude-opus-4-5" : "glm-4.7-free";
|
|
7238
|
+
librarianModel = "gemini-claude-opus-4-5-thinking";
|
|
7239
|
+
frontendModel = "gemini-3-pro-preview";
|
|
7240
|
+
} else if (config.hasClaude) {
|
|
7241
|
+
sisyphusModel = "claude-opus-4-5";
|
|
7242
|
+
oracleModel = config.hasChatGPT ? "gpt-5.2-codex" : "claude-opus-4-5";
|
|
7243
|
+
librarianModel = "claude-sonnet-4-5";
|
|
7244
|
+
frontendModel = "claude-opus-4-5";
|
|
7245
|
+
} else {
|
|
7246
|
+
sisyphusModel = "glm-4.7-free";
|
|
7247
|
+
oracleModel = config.hasChatGPT ? "gpt-5.2-codex" : "glm-4.7-free";
|
|
7248
|
+
librarianModel = "glm-4.7-free";
|
|
7249
|
+
frontendModel = "glm-4.7-free";
|
|
7250
|
+
}
|
|
7094
7251
|
lines.push(` ${SYMBOLS.bullet} Sisyphus ${SYMBOLS.arrow} ${import_picocolors2.default.cyan(sisyphusModel)}`);
|
|
7095
7252
|
lines.push(` ${SYMBOLS.bullet} Oracle ${SYMBOLS.arrow} ${import_picocolors2.default.cyan(oracleModel)}`);
|
|
7096
7253
|
lines.push(` ${SYMBOLS.bullet} Librarian ${SYMBOLS.arrow} ${import_picocolors2.default.cyan(librarianModel)}`);
|
|
@@ -7141,6 +7298,12 @@ function printBox(content, title) {
|
|
|
7141
7298
|
}
|
|
7142
7299
|
function validateNonTuiArgs(args) {
|
|
7143
7300
|
const errors = [];
|
|
7301
|
+
if (args.proxypal !== undefined && !["no", "yes"].includes(args.proxypal)) {
|
|
7302
|
+
errors.push(`Invalid --proxypal value: ${args.proxypal} (expected: no, yes)`);
|
|
7303
|
+
}
|
|
7304
|
+
if (args.proxypal === "yes") {
|
|
7305
|
+
return { valid: errors.length === 0, errors };
|
|
7306
|
+
}
|
|
7144
7307
|
if (args.claude === undefined) {
|
|
7145
7308
|
errors.push("--claude is required (values: no, yes, max20)");
|
|
7146
7309
|
} else if (!["no", "yes", "max20"].includes(args.claude)) {
|
|
@@ -7159,7 +7322,17 @@ function validateNonTuiArgs(args) {
|
|
|
7159
7322
|
return { valid: errors.length === 0, errors };
|
|
7160
7323
|
}
|
|
7161
7324
|
function argsToConfig(args) {
|
|
7325
|
+
if (args.proxypal === "yes") {
|
|
7326
|
+
return {
|
|
7327
|
+
hasProxyPal: true,
|
|
7328
|
+
hasClaude: false,
|
|
7329
|
+
isMax20: false,
|
|
7330
|
+
hasChatGPT: false,
|
|
7331
|
+
hasGemini: false
|
|
7332
|
+
};
|
|
7333
|
+
}
|
|
7162
7334
|
return {
|
|
7335
|
+
hasProxyPal: false,
|
|
7163
7336
|
hasClaude: args.claude !== "no",
|
|
7164
7337
|
isMax20: args.claude === "max20",
|
|
7165
7338
|
hasChatGPT: args.chatgpt === "yes",
|
|
@@ -7172,6 +7345,7 @@ function detectedToInitialValues(detected) {
|
|
|
7172
7345
|
claude = detected.isMax20 ? "max20" : "yes";
|
|
7173
7346
|
}
|
|
7174
7347
|
return {
|
|
7348
|
+
proxypal: detected.hasProxyPal ? "yes" : "no",
|
|
7175
7349
|
claude,
|
|
7176
7350
|
chatgpt: detected.hasChatGPT ? "yes" : "no",
|
|
7177
7351
|
gemini: detected.hasGemini ? "yes" : "no"
|
|
@@ -7179,6 +7353,27 @@ function detectedToInitialValues(detected) {
|
|
|
7179
7353
|
}
|
|
7180
7354
|
async function runTuiMode(detected) {
|
|
7181
7355
|
const initial = detectedToInitialValues(detected);
|
|
7356
|
+
const proxypal = await ve({
|
|
7357
|
+
message: "Are you using ProxyPal? (github.com/heyhuynhgiabuu/proxypal)",
|
|
7358
|
+
options: [
|
|
7359
|
+
{ value: "yes", label: "Yes", hint: "All models via ProxyPal proxy - skip other questions" },
|
|
7360
|
+
{ value: "no", label: "No", hint: "Configure individual providers" }
|
|
7361
|
+
],
|
|
7362
|
+
initialValue: initial.proxypal
|
|
7363
|
+
});
|
|
7364
|
+
if (pD(proxypal)) {
|
|
7365
|
+
xe("Installation cancelled.");
|
|
7366
|
+
return null;
|
|
7367
|
+
}
|
|
7368
|
+
if (proxypal === "yes") {
|
|
7369
|
+
return {
|
|
7370
|
+
hasProxyPal: true,
|
|
7371
|
+
hasClaude: false,
|
|
7372
|
+
isMax20: false,
|
|
7373
|
+
hasChatGPT: false,
|
|
7374
|
+
hasGemini: false
|
|
7375
|
+
};
|
|
7376
|
+
}
|
|
7182
7377
|
const claude = await ve({
|
|
7183
7378
|
message: "Do you have a Claude Pro/Max subscription?",
|
|
7184
7379
|
options: [
|
|
@@ -7217,6 +7412,7 @@ async function runTuiMode(detected) {
|
|
|
7217
7412
|
return null;
|
|
7218
7413
|
}
|
|
7219
7414
|
return {
|
|
7415
|
+
hasProxyPal: false,
|
|
7220
7416
|
hasClaude: claude !== "no",
|
|
7221
7417
|
isMax20: claude === "max20",
|
|
7222
7418
|
hasChatGPT: chatgpt === "yes",
|
|
@@ -7232,7 +7428,8 @@ async function runNonTuiInstall(args) {
|
|
|
7232
7428
|
console.log(` ${SYMBOLS.bullet} ${err}`);
|
|
7233
7429
|
}
|
|
7234
7430
|
console.log();
|
|
7235
|
-
printInfo("Usage: bunx oh-my-opencode install --no-tui --
|
|
7431
|
+
printInfo("Usage: bunx oh-my-opencode install --no-tui --proxypal=yes");
|
|
7432
|
+
printInfo(" or: bunx oh-my-opencode install --no-tui --claude=<no|yes|max20> --chatgpt=<no|yes> --gemini=<no|yes>");
|
|
7236
7433
|
console.log();
|
|
7237
7434
|
return 1;
|
|
7238
7435
|
}
|
|
@@ -7252,7 +7449,11 @@ async function runNonTuiInstall(args) {
|
|
|
7252
7449
|
printSuccess(`OpenCode ${version ?? ""} detected`);
|
|
7253
7450
|
if (isUpdate) {
|
|
7254
7451
|
const initial = detectedToInitialValues(detected);
|
|
7255
|
-
|
|
7452
|
+
if (initial.proxypal === "yes") {
|
|
7453
|
+
printInfo(`Current config: ProxyPal=yes`);
|
|
7454
|
+
} else {
|
|
7455
|
+
printInfo(`Current config: Claude=${initial.claude}, ChatGPT=${initial.chatgpt}, Gemini=${initial.gemini}`);
|
|
7456
|
+
}
|
|
7256
7457
|
}
|
|
7257
7458
|
const config = argsToConfig(args);
|
|
7258
7459
|
printStep(step++, totalSteps, "Adding oh-my-opencode plugin...");
|
|
@@ -7262,7 +7463,16 @@ async function runNonTuiInstall(args) {
|
|
|
7262
7463
|
return 1;
|
|
7263
7464
|
}
|
|
7264
7465
|
printSuccess(`Plugin ${isUpdate ? "verified" : "added"} ${SYMBOLS.arrow} ${import_picocolors2.default.dim(pluginResult.configPath)}`);
|
|
7265
|
-
if (config.
|
|
7466
|
+
if (config.hasProxyPal) {
|
|
7467
|
+
printStep(step++, totalSteps, "Adding ProxyPal provider configuration...");
|
|
7468
|
+
const providerResult = addProviderConfig(config);
|
|
7469
|
+
if (!providerResult.success) {
|
|
7470
|
+
printError(`Failed: ${providerResult.error}`);
|
|
7471
|
+
return 1;
|
|
7472
|
+
}
|
|
7473
|
+
printSuccess(`ProxyPal configured ${SYMBOLS.arrow} ${import_picocolors2.default.dim(providerResult.configPath)}`);
|
|
7474
|
+
step += 1;
|
|
7475
|
+
} else if (config.hasGemini || config.hasChatGPT) {
|
|
7266
7476
|
printStep(step++, totalSteps, "Adding auth plugins...");
|
|
7267
7477
|
const authResult = await addAuthPlugins(config);
|
|
7268
7478
|
if (!authResult.success) {
|
|
@@ -7288,10 +7498,16 @@ async function runNonTuiInstall(args) {
|
|
|
7288
7498
|
}
|
|
7289
7499
|
printSuccess(`Config written ${SYMBOLS.arrow} ${import_picocolors2.default.dim(omoResult.configPath)}`);
|
|
7290
7500
|
printBox(formatConfigSummary(config), isUpdate ? "Updated Configuration" : "Installation Complete");
|
|
7291
|
-
if (!config.hasClaude && !config.hasChatGPT && !config.hasGemini) {
|
|
7501
|
+
if (!config.hasProxyPal && !config.hasClaude && !config.hasChatGPT && !config.hasGemini) {
|
|
7292
7502
|
printWarning("No model providers configured. Using opencode/glm-4.7-free as fallback.");
|
|
7293
7503
|
}
|
|
7294
|
-
if (
|
|
7504
|
+
if (config.hasProxyPal && !args.skipAuth) {
|
|
7505
|
+
console.log(import_picocolors2.default.bold("Next Steps - Configure ProxyPal:"));
|
|
7506
|
+
console.log();
|
|
7507
|
+
console.log(` ${SYMBOLS.arrow} Start ProxyPal and ensure proxy is running on ${import_picocolors2.default.cyan("http://localhost:8317")}`);
|
|
7508
|
+
console.log(` ${SYMBOLS.arrow} Authenticate your providers in ProxyPal app`);
|
|
7509
|
+
console.log();
|
|
7510
|
+
} else if ((config.hasClaude || config.hasChatGPT || config.hasGemini) && !args.skipAuth) {
|
|
7295
7511
|
console.log(import_picocolors2.default.bold("Next Steps - Authenticate your providers:"));
|
|
7296
7512
|
console.log();
|
|
7297
7513
|
if (config.hasClaude) {
|
|
@@ -7327,7 +7543,11 @@ async function install(args) {
|
|
|
7327
7543
|
Ie(import_picocolors2.default.bgMagenta(import_picocolors2.default.white(isUpdate ? " oMoMoMoMo... Update " : " oMoMoMoMo... ")));
|
|
7328
7544
|
if (isUpdate) {
|
|
7329
7545
|
const initial = detectedToInitialValues(detected);
|
|
7330
|
-
|
|
7546
|
+
if (initial.proxypal === "yes") {
|
|
7547
|
+
M2.info(`Existing configuration detected: ProxyPal=yes`);
|
|
7548
|
+
} else {
|
|
7549
|
+
M2.info(`Existing configuration detected: Claude=${initial.claude}, ChatGPT=${initial.chatgpt}, Gemini=${initial.gemini}`);
|
|
7550
|
+
}
|
|
7331
7551
|
}
|
|
7332
7552
|
const s = Y2();
|
|
7333
7553
|
s.start("Checking OpenCode installation");
|
|
@@ -7352,7 +7572,16 @@ async function install(args) {
|
|
|
7352
7572
|
return 1;
|
|
7353
7573
|
}
|
|
7354
7574
|
s.stop(`Plugin added to ${import_picocolors2.default.cyan(pluginResult.configPath)}`);
|
|
7355
|
-
if (config.
|
|
7575
|
+
if (config.hasProxyPal) {
|
|
7576
|
+
s.start("Adding ProxyPal provider configuration");
|
|
7577
|
+
const providerResult = addProviderConfig(config);
|
|
7578
|
+
if (!providerResult.success) {
|
|
7579
|
+
s.stop(`Failed to add provider config: ${providerResult.error}`);
|
|
7580
|
+
Se(import_picocolors2.default.red("Installation failed."));
|
|
7581
|
+
return 1;
|
|
7582
|
+
}
|
|
7583
|
+
s.stop(`ProxyPal configured to ${import_picocolors2.default.cyan(providerResult.configPath)}`);
|
|
7584
|
+
} else if (config.hasGemini || config.hasChatGPT) {
|
|
7356
7585
|
s.start("Adding auth plugins (fetching latest versions)");
|
|
7357
7586
|
const authResult = await addAuthPlugins(config);
|
|
7358
7587
|
if (!authResult.success) {
|
|
@@ -7378,11 +7607,18 @@ async function install(args) {
|
|
|
7378
7607
|
return 1;
|
|
7379
7608
|
}
|
|
7380
7609
|
s.stop(`Config written to ${import_picocolors2.default.cyan(omoResult.configPath)}`);
|
|
7381
|
-
if (!config.hasClaude && !config.hasChatGPT && !config.hasGemini) {
|
|
7610
|
+
if (!config.hasProxyPal && !config.hasClaude && !config.hasChatGPT && !config.hasGemini) {
|
|
7382
7611
|
M2.warn("No model providers configured. Using opencode/glm-4.7-free as fallback.");
|
|
7383
7612
|
}
|
|
7384
7613
|
Me(formatConfigSummary(config), isUpdate ? "Updated Configuration" : "Installation Complete");
|
|
7385
|
-
if (
|
|
7614
|
+
if (config.hasProxyPal && !args.skipAuth) {
|
|
7615
|
+
const steps = [
|
|
7616
|
+
`Start ProxyPal and ensure proxy is running on ${import_picocolors2.default.cyan("http://localhost:8317")}`,
|
|
7617
|
+
`Authenticate your providers in the ProxyPal app`
|
|
7618
|
+
];
|
|
7619
|
+
Me(steps.join(`
|
|
7620
|
+
`), "Next Steps - Configure ProxyPal");
|
|
7621
|
+
} else if ((config.hasClaude || config.hasChatGPT || config.hasGemini) && !args.skipAuth) {
|
|
7386
7622
|
const steps = [];
|
|
7387
7623
|
if (config.hasClaude) {
|
|
7388
7624
|
steps.push(`${import_picocolors2.default.dim("opencode auth login")} ${import_picocolors2.default.gray("(select Anthropic \u2192 Claude Pro/Max)")}`);
|
|
@@ -23495,19 +23731,22 @@ var packageJson = await Promise.resolve().then(() => __toESM(require_package(),
|
|
|
23495
23731
|
var VERSION = packageJson.version;
|
|
23496
23732
|
var program2 = new Command;
|
|
23497
23733
|
program2.name("oh-my-opencode").description("The ultimate OpenCode plugin - multi-model orchestration, LSP tools, and more").version(VERSION, "-v, --version", "Show version number");
|
|
23498
|
-
program2.command("install").description("Install and configure oh-my-opencode with interactive setup").option("--no-tui", "Run in non-interactive mode (requires all options)").option("--claude <value>", "Claude subscription: no, yes, max20").option("--chatgpt <value>", "ChatGPT subscription: no, yes").option("--gemini <value>", "Gemini integration: no, yes").option("--skip-auth", "Skip authentication setup hints").addHelpText("after", `
|
|
23734
|
+
program2.command("install").description("Install and configure oh-my-opencode with interactive setup").option("--no-tui", "Run in non-interactive mode (requires all options)").option("--proxypal <value>", "ProxyPal proxy: no, yes (if yes, skips claude/chatgpt/gemini)").option("--claude <value>", "Claude subscription: no, yes, max20").option("--chatgpt <value>", "ChatGPT subscription: no, yes").option("--gemini <value>", "Gemini integration: no, yes").option("--skip-auth", "Skip authentication setup hints").addHelpText("after", `
|
|
23499
23735
|
Examples:
|
|
23500
23736
|
$ bunx oh-my-opencode install
|
|
23737
|
+
$ bunx oh-my-opencode install --no-tui --proxypal=yes
|
|
23501
23738
|
$ bunx oh-my-opencode install --no-tui --claude=max20 --chatgpt=yes --gemini=yes
|
|
23502
23739
|
$ bunx oh-my-opencode install --no-tui --claude=no --chatgpt=no --gemini=no
|
|
23503
23740
|
|
|
23504
23741
|
Model Providers:
|
|
23742
|
+
ProxyPal Use ProxyPal proxy for all models (github.com/heyhuynhgiabuu/proxypal)
|
|
23505
23743
|
Claude Required for Sisyphus (main orchestrator) and Librarian agents
|
|
23506
23744
|
ChatGPT Powers the Oracle agent for debugging and architecture
|
|
23507
23745
|
Gemini Powers frontend, documentation, and multimodal agents
|
|
23508
23746
|
`).action(async (options) => {
|
|
23509
23747
|
const args = {
|
|
23510
23748
|
tui: options.tui !== false,
|
|
23749
|
+
proxypal: options.proxypal,
|
|
23511
23750
|
claude: options.claude,
|
|
23512
23751
|
chatgpt: options.chatgpt,
|
|
23513
23752
|
gemini: options.gemini,
|
package/dist/cli/types.d.ts
CHANGED
|
@@ -2,12 +2,14 @@ export type ClaudeSubscription = "no" | "yes" | "max20";
|
|
|
2
2
|
export type BooleanArg = "no" | "yes";
|
|
3
3
|
export interface InstallArgs {
|
|
4
4
|
tui: boolean;
|
|
5
|
+
proxypal?: BooleanArg;
|
|
5
6
|
claude?: ClaudeSubscription;
|
|
6
7
|
chatgpt?: BooleanArg;
|
|
7
8
|
gemini?: BooleanArg;
|
|
8
9
|
skipAuth?: boolean;
|
|
9
10
|
}
|
|
10
11
|
export interface InstallConfig {
|
|
12
|
+
hasProxyPal: boolean;
|
|
11
13
|
hasClaude: boolean;
|
|
12
14
|
isMax20: boolean;
|
|
13
15
|
hasChatGPT: boolean;
|
|
@@ -20,6 +22,7 @@ export interface ConfigMergeResult {
|
|
|
20
22
|
}
|
|
21
23
|
export interface DetectedConfig {
|
|
22
24
|
isInstalled: boolean;
|
|
25
|
+
hasProxyPal: boolean;
|
|
23
26
|
hasClaude: boolean;
|
|
24
27
|
isMax20: boolean;
|
|
25
28
|
hasChatGPT: boolean;
|
package/dist/index.js
CHANGED
|
@@ -231,31 +231,31 @@ The more explicit your prompt, the better the results.
|
|
|
231
231
|
var init_constants = __esm(() => {
|
|
232
232
|
DEFAULT_CATEGORIES = {
|
|
233
233
|
"visual-engineering": {
|
|
234
|
-
model: "
|
|
234
|
+
model: "proxypal/gemini-3-pro-preview",
|
|
235
235
|
temperature: 0.7
|
|
236
236
|
},
|
|
237
237
|
ultrabrain: {
|
|
238
|
-
model: "
|
|
238
|
+
model: "proxypal/gpt-5.2-codex",
|
|
239
239
|
temperature: 0.1
|
|
240
240
|
},
|
|
241
241
|
artistry: {
|
|
242
|
-
model: "
|
|
242
|
+
model: "proxypal/gemini-3-pro-preview",
|
|
243
243
|
temperature: 0.9
|
|
244
244
|
},
|
|
245
245
|
quick: {
|
|
246
|
-
model: "
|
|
246
|
+
model: "proxypal/gemini-3-flash-preview",
|
|
247
247
|
temperature: 0.3
|
|
248
248
|
},
|
|
249
249
|
"most-capable": {
|
|
250
|
-
model: "
|
|
250
|
+
model: "proxypal/gemini-claude-opus-4-5-thinking",
|
|
251
251
|
temperature: 0.1
|
|
252
252
|
},
|
|
253
253
|
writing: {
|
|
254
|
-
model: "
|
|
254
|
+
model: "proxypal/gemini-3-flash-preview",
|
|
255
255
|
temperature: 0.5
|
|
256
256
|
},
|
|
257
257
|
general: {
|
|
258
|
-
model: "
|
|
258
|
+
model: "proxypal/gemini-claude-sonnet-4-5-thinking",
|
|
259
259
|
temperature: 0.3
|
|
260
260
|
}
|
|
261
261
|
};
|
|
@@ -16941,11 +16941,11 @@ var HOOK_NAME_MAP = {
|
|
|
16941
16941
|
"anthropic-auto-compact": "anthropic-context-window-limit-recovery"
|
|
16942
16942
|
};
|
|
16943
16943
|
var MODEL_TO_CATEGORY_MAP = {
|
|
16944
|
-
"
|
|
16945
|
-
"
|
|
16946
|
-
"
|
|
16947
|
-
"
|
|
16948
|
-
"
|
|
16944
|
+
"proxypal/gemini-3-pro-preview": "visual-engineering",
|
|
16945
|
+
"proxypal/gpt-5.2-codex": "ultrabrain",
|
|
16946
|
+
"proxypal/gemini-3-flash-preview": "quick",
|
|
16947
|
+
"proxypal/gemini-claude-opus-4-5-thinking": "most-capable",
|
|
16948
|
+
"proxypal/gemini-claude-sonnet-4-5-thinking": "general"
|
|
16949
16949
|
};
|
|
16950
16950
|
function migrateAgentNames(agents) {
|
|
16951
16951
|
const migrated = {};
|
|
@@ -45799,7 +45799,8 @@ class BackgroundManager {
|
|
|
45799
45799
|
progress: {
|
|
45800
45800
|
toolCalls: 0,
|
|
45801
45801
|
lastUpdate: new Date
|
|
45802
|
-
}
|
|
45802
|
+
},
|
|
45803
|
+
parentAgent: input.parentAgent
|
|
45803
45804
|
};
|
|
45804
45805
|
this.tasks.set(task.id, task);
|
|
45805
45806
|
subagentSessions.add(input.sessionID);
|
|
@@ -45993,14 +45994,18 @@ class BackgroundManager {
|
|
|
45993
45994
|
this.concurrencyManager.release(task.concurrencyKey);
|
|
45994
45995
|
}
|
|
45995
45996
|
try {
|
|
45996
|
-
const
|
|
45997
|
+
const body = {
|
|
45998
|
+
parts: [{ type: "text", text: message }]
|
|
45999
|
+
};
|
|
46000
|
+
if (task.parentAgent !== undefined) {
|
|
46001
|
+
body.agent = task.parentAgent;
|
|
46002
|
+
}
|
|
46003
|
+
if (task.parentModel?.providerID && task.parentModel?.modelID) {
|
|
46004
|
+
body.model = { providerID: task.parentModel.providerID, modelID: task.parentModel.modelID };
|
|
46005
|
+
}
|
|
45997
46006
|
await this.client.session.prompt({
|
|
45998
46007
|
path: { id: task.parentSessionID },
|
|
45999
|
-
body
|
|
46000
|
-
agent: task.parentAgent,
|
|
46001
|
-
model: modelField,
|
|
46002
|
-
parts: [{ type: "text", text: message }]
|
|
46003
|
-
},
|
|
46008
|
+
body,
|
|
46004
46009
|
query: { directory: this.directory }
|
|
46005
46010
|
});
|
|
46006
46011
|
log("[background-agent] Successfully sent prompt to parent session:", { parentSessionID: task.parentSessionID });
|
|
@@ -49543,7 +49548,7 @@ ${patterns.join(`
|
|
|
49543
49548
|
}
|
|
49544
49549
|
|
|
49545
49550
|
// src/agents/sisyphus.ts
|
|
49546
|
-
var DEFAULT_MODEL = "
|
|
49551
|
+
var DEFAULT_MODEL = "proxypal/gemini-claude-opus-4-5-thinking";
|
|
49547
49552
|
var SISYPHUS_ROLE_SECTION = `<Role>
|
|
49548
49553
|
You are "Sisyphus" - Powerful AI Agent with orchestration capabilities from OhMyOpenCode.
|
|
49549
49554
|
Named by [YeonGyu Kim](https://github.com/code-yeongyu).
|
|
@@ -50136,7 +50141,7 @@ function createSisyphusAgent(model = DEFAULT_MODEL, availableAgents, availableTo
|
|
|
50136
50141
|
var sisyphusAgent = createSisyphusAgent();
|
|
50137
50142
|
|
|
50138
50143
|
// src/agents/oracle.ts
|
|
50139
|
-
var DEFAULT_MODEL2 = "
|
|
50144
|
+
var DEFAULT_MODEL2 = "proxypal/gpt-5.2-codex";
|
|
50140
50145
|
var ORACLE_PROMPT_METADATA = {
|
|
50141
50146
|
category: "advisor",
|
|
50142
50147
|
cost: "EXPENSIVE",
|
|
@@ -50249,7 +50254,7 @@ function createOracleAgent(model = DEFAULT_MODEL2) {
|
|
|
50249
50254
|
var oracleAgent = createOracleAgent();
|
|
50250
50255
|
|
|
50251
50256
|
// src/agents/librarian.ts
|
|
50252
|
-
var DEFAULT_MODEL3 = "
|
|
50257
|
+
var DEFAULT_MODEL3 = "proxypal/gemini-claude-opus-4-5-thinking";
|
|
50253
50258
|
var LIBRARIAN_PROMPT_METADATA = {
|
|
50254
50259
|
category: "exploration",
|
|
50255
50260
|
cost: "CHEAP",
|
|
@@ -50682,7 +50687,7 @@ Flood with parallel calls. Cross-validate findings across multiple tools.`
|
|
|
50682
50687
|
var exploreAgent = createExploreAgent();
|
|
50683
50688
|
|
|
50684
50689
|
// src/agents/frontend-ui-ux-engineer.ts
|
|
50685
|
-
var DEFAULT_MODEL5 = "
|
|
50690
|
+
var DEFAULT_MODEL5 = "proxypal/gemini-3-pro-preview";
|
|
50686
50691
|
var FRONTEND_PROMPT_METADATA = {
|
|
50687
50692
|
category: "specialist",
|
|
50688
50693
|
cost: "CHEAP",
|
|
@@ -50782,7 +50787,7 @@ Interpret creatively and make unexpected choices that feel genuinely designed fo
|
|
|
50782
50787
|
var frontendUiUxEngineerAgent = createFrontendUiUxEngineerAgent();
|
|
50783
50788
|
|
|
50784
50789
|
// src/agents/document-writer.ts
|
|
50785
|
-
var DEFAULT_MODEL6 = "
|
|
50790
|
+
var DEFAULT_MODEL6 = "proxypal/gemini-3-flash-preview";
|
|
50786
50791
|
var DOCUMENT_WRITER_PROMPT_METADATA = {
|
|
50787
50792
|
category: "specialist",
|
|
50788
50793
|
cost: "CHEAP",
|
|
@@ -50997,7 +51002,7 @@ You are a technical writer who creates documentation that developers actually wa
|
|
|
50997
51002
|
var documentWriterAgent = createDocumentWriterAgent();
|
|
50998
51003
|
|
|
50999
51004
|
// src/agents/multimodal-looker.ts
|
|
51000
|
-
var DEFAULT_MODEL7 = "
|
|
51005
|
+
var DEFAULT_MODEL7 = "proxypal/gemini-3-flash-preview";
|
|
51001
51006
|
var MULTIMODAL_LOOKER_PROMPT_METADATA = {
|
|
51002
51007
|
category: "utility",
|
|
51003
51008
|
cost: "CHEAP",
|
|
@@ -51313,7 +51318,7 @@ var metisRestrictions = createAgentToolRestrictions([
|
|
|
51313
51318
|
"task",
|
|
51314
51319
|
"sisyphus_task"
|
|
51315
51320
|
]);
|
|
51316
|
-
var DEFAULT_MODEL8 = "
|
|
51321
|
+
var DEFAULT_MODEL8 = "proxypal/gemini-claude-opus-4-5-thinking";
|
|
51317
51322
|
function createMetisAgent(model = DEFAULT_MODEL8) {
|
|
51318
51323
|
return {
|
|
51319
51324
|
description: "Pre-planning consultant that analyzes requests to identify hidden intentions, ambiguities, and AI failure points.",
|
|
@@ -52732,7 +52737,7 @@ function buildDynamicOrchestratorPrompt(ctx) {
|
|
|
52732
52737
|
const skillsSection = buildSkillsSection(skills);
|
|
52733
52738
|
return ORCHESTRATOR_SISYPHUS_SYSTEM_PROMPT.replace("{CATEGORY_SECTION}", categorySection).replace("{AGENT_SECTION}", agentSection).replace("{DECISION_MATRIX}", decisionMatrix).replace("{SKILLS_SECTION}", skillsSection);
|
|
52734
52739
|
}
|
|
52735
|
-
var DEFAULT_MODEL9 = "
|
|
52740
|
+
var DEFAULT_MODEL9 = "proxypal/gemini-claude-sonnet-4-5-thinking";
|
|
52736
52741
|
function createOrchestratorSisyphusAgent(ctx) {
|
|
52737
52742
|
const restrictions = createAgentToolRestrictions([
|
|
52738
52743
|
"task",
|
|
@@ -52751,7 +52756,7 @@ function createOrchestratorSisyphusAgent(ctx) {
|
|
|
52751
52756
|
var orchestratorSisyphusAgent = createOrchestratorSisyphusAgent();
|
|
52752
52757
|
|
|
52753
52758
|
// src/agents/momus.ts
|
|
52754
|
-
var DEFAULT_MODEL10 = "
|
|
52759
|
+
var DEFAULT_MODEL10 = "proxypal/gpt-5.2-codex";
|
|
52755
52760
|
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.
|
|
52756
52761
|
|
|
52757
52762
|
**CRITICAL FIRST RULE**:
|
|
@@ -56079,7 +56084,7 @@ function createConfigHandler(deps) {
|
|
|
56079
56084
|
const prometheusOverride = pluginConfig.agents?.["Prometheus (Planner)"];
|
|
56080
56085
|
const defaultModel = config3.model;
|
|
56081
56086
|
const prometheusBase = {
|
|
56082
|
-
model: defaultModel ?? "
|
|
56087
|
+
model: defaultModel ?? "proxypal/gemini-claude-opus-4-5-thinking",
|
|
56083
56088
|
mode: "primary",
|
|
56084
56089
|
prompt: PROMETHEUS_SYSTEM_PROMPT,
|
|
56085
56090
|
permission: PROMETHEUS_PERMISSION,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reinamaccredy/oh-my-opencode",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.11",
|
|
4
4
|
"description": "Fork of oh-my-opencode with Maestro workflow integration - Multi-Model Orchestration, Parallel Background Agents, Design Phases, and TDD Methodology",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -28,6 +28,10 @@
|
|
|
28
28
|
"build:schema": "bun run script/build-schema.ts",
|
|
29
29
|
"clean": "rm -rf dist",
|
|
30
30
|
"prepublishOnly": "bun run clean && bun run build",
|
|
31
|
+
"publish:beta": "./scripts/publish.sh prerelease",
|
|
32
|
+
"publish:patch": "./scripts/publish.sh patch",
|
|
33
|
+
"publish:minor": "./scripts/publish.sh minor",
|
|
34
|
+
"publish:major": "./scripts/publish.sh major",
|
|
31
35
|
"typecheck": "tsc --noEmit",
|
|
32
36
|
"test": "bun test"
|
|
33
37
|
},
|