Skip to content

Commit 374654c

Browse files
authored
Merge branch 'code-yeongyu:dev' into fix/variant-precedence
2 parents d34df8e + 3074434 commit 374654c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1614
-329
lines changed

.github/workflows/publish-platform.yml

Lines changed: 110 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,20 @@ permissions:
2828
id-token: write
2929

3030
jobs:
31-
publish-platform:
32-
# Use windows-latest for Windows to avoid cross-compilation segfault (oven-sh/bun#18416)
33-
# Fixes: #873, #844
31+
# =============================================================================
32+
# Job 1: Build binaries for all platforms
33+
# - Windows builds on windows-latest (avoid bun cross-compile segfault)
34+
# - All other platforms build on ubuntu-latest
35+
# - Uploads compressed artifacts for the publish job
36+
# =============================================================================
37+
build:
3438
runs-on: ${{ matrix.platform == 'windows-x64' && 'windows-latest' || 'ubuntu-latest' }}
3539
defaults:
3640
run:
3741
shell: bash
3842
strategy:
3943
fail-fast: false
40-
max-parallel: 2
44+
max-parallel: 7
4145
matrix:
4246
platform: [darwin-arm64, darwin-x64, linux-x64, linux-arm64, linux-x64-musl, linux-arm64-musl, windows-x64]
4347
steps:
@@ -47,11 +51,6 @@ jobs:
4751
with:
4852
bun-version: latest
4953

50-
- uses: actions/setup-node@v4
51-
with:
52-
node-version: "24"
53-
registry-url: "https://registry.npmjs.org"
54-
5554
- name: Install dependencies
5655
run: bun install
5756
env:
@@ -63,15 +62,20 @@ jobs:
6362
PKG_NAME="oh-my-opencode-${{ matrix.platform }}"
6463
VERSION="${{ inputs.version }}"
6564
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/${PKG_NAME}/${VERSION}")
65+
# Convert platform name for output (replace - with _)
66+
PLATFORM_KEY="${{ matrix.platform }}"
67+
PLATFORM_KEY="${PLATFORM_KEY//-/_}"
6668
if [ "$STATUS" = "200" ]; then
6769
echo "skip=true" >> $GITHUB_OUTPUT
70+
echo "skip_${PLATFORM_KEY}=true" >> $GITHUB_OUTPUT
6871
echo "✓ ${PKG_NAME}@${VERSION} already published"
6972
else
7073
echo "skip=false" >> $GITHUB_OUTPUT
74+
echo "skip_${PLATFORM_KEY}=false" >> $GITHUB_OUTPUT
7175
echo "→ ${PKG_NAME}@${VERSION} needs publishing"
7276
fi
7377
74-
- name: Update version
78+
- name: Update version in package.json
7579
if: steps.check.outputs.skip != 'true'
7680
run: |
7781
VERSION="${{ inputs.version }}"
@@ -99,15 +103,109 @@ jobs:
99103
fi
100104
101105
bun build src/cli/index.ts --compile --minify --target=$TARGET --outfile=$OUTPUT
106+
107+
echo "Built binary:"
108+
ls -lh "$OUTPUT"
109+
110+
- name: Compress binary
111+
if: steps.check.outputs.skip != 'true'
112+
run: |
113+
PLATFORM="${{ matrix.platform }}"
114+
cd packages/${PLATFORM}
115+
116+
if [ "$PLATFORM" = "windows-x64" ]; then
117+
# Windows: use 7z (pre-installed on windows-latest)
118+
7z a -tzip ../../binary-${PLATFORM}.zip bin/ package.json
119+
else
120+
# Unix: use tar.gz
121+
tar -czvf ../../binary-${PLATFORM}.tar.gz bin/ package.json
122+
fi
123+
124+
cd ../..
125+
echo "Compressed artifact:"
126+
ls -lh binary-${PLATFORM}.*
127+
128+
- name: Upload artifact
129+
if: steps.check.outputs.skip != 'true'
130+
uses: actions/upload-artifact@v4
131+
with:
132+
name: binary-${{ matrix.platform }}
133+
path: |
134+
binary-${{ matrix.platform }}.tar.gz
135+
binary-${{ matrix.platform }}.zip
136+
retention-days: 1
137+
if-no-files-found: error
138+
139+
# =============================================================================
140+
# Job 2: Publish all platforms using OIDC/Provenance
141+
# - Runs on ubuntu-latest for ALL platforms (just downloading artifacts)
142+
# - Uses npm Trusted Publishing (OIDC) - no NODE_AUTH_TOKEN needed
143+
# - Fresh OIDC token at publish time avoids timeout issues
144+
# =============================================================================
145+
publish:
146+
needs: build
147+
runs-on: ubuntu-latest
148+
strategy:
149+
fail-fast: false
150+
max-parallel: 2
151+
matrix:
152+
platform: [darwin-arm64, darwin-x64, linux-x64, linux-arm64, linux-x64-musl, linux-arm64-musl, windows-x64]
153+
steps:
154+
- name: Check if already published
155+
id: check
156+
run: |
157+
PKG_NAME="oh-my-opencode-${{ matrix.platform }}"
158+
VERSION="${{ inputs.version }}"
159+
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/${PKG_NAME}/${VERSION}")
160+
if [ "$STATUS" = "200" ]; then
161+
echo "skip=true" >> $GITHUB_OUTPUT
162+
echo "✓ ${PKG_NAME}@${VERSION} already published, skipping"
163+
else
164+
echo "skip=false" >> $GITHUB_OUTPUT
165+
echo "→ ${PKG_NAME}@${VERSION} will be published"
166+
fi
167+
168+
- name: Download artifact
169+
if: steps.check.outputs.skip != 'true'
170+
uses: actions/download-artifact@v4
171+
with:
172+
name: binary-${{ matrix.platform }}
173+
path: .
174+
175+
- name: Extract artifact
176+
if: steps.check.outputs.skip != 'true'
177+
run: |
178+
PLATFORM="${{ matrix.platform }}"
179+
mkdir -p packages/${PLATFORM}
180+
181+
if [ "$PLATFORM" = "windows-x64" ]; then
182+
unzip binary-${PLATFORM}.zip -d packages/${PLATFORM}/
183+
else
184+
tar -xzvf binary-${PLATFORM}.tar.gz -C packages/${PLATFORM}/
185+
fi
186+
187+
echo "Extracted contents:"
188+
ls -la packages/${PLATFORM}/
189+
ls -la packages/${PLATFORM}/bin/
190+
191+
- uses: actions/setup-node@v4
192+
if: steps.check.outputs.skip != 'true'
193+
with:
194+
node-version: "24"
195+
registry-url: "https://registry.npmjs.org"
102196

103197
- name: Publish ${{ matrix.platform }}
104198
if: steps.check.outputs.skip != 'true'
105199
run: |
106200
cd packages/${{ matrix.platform }}
201+
107202
TAG_ARG=""
108203
if [ -n "${{ inputs.dist_tag }}" ]; then
109204
TAG_ARG="--tag ${{ inputs.dist_tag }}"
110205
fi
111-
npm publish --access public $TAG_ARG
206+
207+
npm publish --access public --provenance $TAG_ARG
112208
env:
113-
NPM_CONFIG_PROVENANCE: false
209+
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
210+
NPM_CONFIG_PROVENANCE: true
211+
timeout-minutes: 15

AGENTS.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,13 @@ oh-my-opencode/
9898

9999
| Agent | Model | Purpose |
100100
|-------|-------|---------|
101-
| Sisyphus | anthropic/claude-opus-4-5 | Primary orchestrator |
102-
| Atlas | anthropic/claude-opus-4-5 | Master orchestrator |
101+
| Sisyphus | anthropic/claude-opus-4-5 | Primary orchestrator (fallback: kimi-k2.5 → glm-4.7) |
102+
| Atlas | anthropic/claude-sonnet-4-5 | Master orchestrator (fallback: kimi-k2.5 → gpt-5.2) |
103103
| oracle | openai/gpt-5.2 | Consultation, debugging |
104-
| librarian | opencode/big-pickle | Docs, GitHub search |
105-
| explore | opencode/gpt-5-nano | Fast codebase grep |
104+
| librarian | zai-coding-plan/glm-4.7 | Docs, GitHub search (fallback: glm-4.7-free) |
105+
| explore | anthropic/claude-haiku-4-5 | Fast codebase grep (fallback: gpt-5-mini → gpt-5-nano) |
106106
| multimodal-looker | google/gemini-3-flash | PDF/image analysis |
107-
| Prometheus | anthropic/claude-opus-4-5 | Strategic planning |
107+
| Prometheus | anthropic/claude-opus-4-5 | Strategic planning (fallback: kimi-k2.5 → gpt-5.2) |
108108

109109
## COMMANDS
110110

docs/category-skill-guide.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ A Category is an agent configuration preset optimized for specific domains.
2323
|----------|---------------|-----------|
2424
| `visual-engineering` | `google/gemini-3-pro` | Frontend, UI/UX, design, styling, animation |
2525
| `ultrabrain` | `openai/gpt-5.2-codex` (xhigh) | Deep logical reasoning, complex architecture decisions requiring extensive analysis |
26+
| `deep` | `openai/gpt-5.2-codex` (medium) | Moderate complexity tasks requiring deeper reasoning |
2627
| `artistry` | `google/gemini-3-pro` (max) | Highly creative/artistic tasks, novel ideas |
2728
| `quick` | `anthropic/claude-haiku-4-5` | Trivial tasks - single file changes, typo fixes, simple modifications |
2829
| `unspecified-low` | `anthropic/claude-sonnet-4-5` | Tasks that don't fit other categories, low effort required |

docs/configurations.md

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -894,29 +894,30 @@ Each agent has a defined provider priority chain. The system tries providers in
894894

895895
| Agent | Model (no prefix) | Provider Priority Chain |
896896
|-------|-------------------|-------------------------|
897-
| **Sisyphus** | `claude-opus-4-5` | anthropic → github-copilotopencodeantigravity → google |
898-
| **oracle** | `gpt-5.2` | openai → anthropic → google → github-copilot → opencode |
899-
| **librarian** | `big-pickle` | opencodegithub-copilot → anthropic |
900-
| **explore** | `gpt-5-nano` | anthropic → opencode |
901-
| **multimodal-looker** | `gemini-3-flash` | google → openai → zai-coding-plan → anthropic → opencode |
902-
| **Prometheus (Planner)** | `claude-opus-4-5` | anthropic → github-copilotopencode → antigravity → google |
903-
| **Metis (Plan Consultant)** | `claude-sonnet-4-5` | anthropic → github-copilotopencode → antigravity → google |
904-
| **Momus (Plan Reviewer)** | `claude-opus-4-5` | anthropicgithub-copilot → opencode → antigravity → google |
905-
| **Atlas** | `claude-sonnet-4-5` | anthropic → github-copilotopencode → antigravity → google |
897+
| **Sisyphus** | `claude-opus-4-5` | anthropic → kimi-for-codingzai-coding-planopenai → google |
898+
| **oracle** | `gpt-5.2` | openai → google → anthropic |
899+
| **librarian** | `glm-4.7` | zai-coding-planopencode → anthropic |
900+
| **explore** | `claude-haiku-4-5` | anthropic → github-copilot → opencode |
901+
| **multimodal-looker** | `gemini-3-flash` | google → openai → zai-coding-plan → kimi-for-coding → anthropic → opencode |
902+
| **Prometheus (Planner)** | `claude-opus-4-5` | anthropic → kimi-for-codingopenai → google |
903+
| **Metis (Plan Consultant)** | `claude-opus-4-5` | anthropic → kimi-for-codingopenai → google |
904+
| **Momus (Plan Reviewer)** | `gpt-5.2` | openaianthropic → google |
905+
| **Atlas** | `claude-sonnet-4-5` | anthropic → kimi-for-codingopenai → google |
906906

907907
### Category Provider Chains
908908

909909
Categories follow the same resolution logic:
910910

911911
| Category | Model (no prefix) | Provider Priority Chain |
912912
|----------|-------------------|-------------------------|
913-
| **visual-engineering** | `gemini-3-pro` | google → openai → anthropic → github-copilot → opencode |
914-
| **ultrabrain** | `gpt-5.2-codex` | openai → anthropic → google → github-copilot → opencode |
915-
| **artistry** | `gemini-3-pro` | google → openai → anthropic → github-copilot → opencode |
916-
| **quick** | `claude-haiku-4-5` | anthropic → github-copilot → opencode → antigravity → google |
917-
| **unspecified-low** | `claude-sonnet-4-5` | anthropic → github-copilot → opencode → antigravity → google |
918-
| **unspecified-high** | `claude-opus-4-5` | anthropic → github-copilot → opencode → antigravity → google |
919-
| **writing** | `gemini-3-flash` | google → openai → anthropic → github-copilot → opencode |
913+
| **visual-engineering** | `gemini-3-pro` | google → anthropic → zai-coding-plan |
914+
| **ultrabrain** | `gpt-5.2-codex` | openai → google → anthropic |
915+
| **deep** | `gpt-5.2-codex` | openai → anthropic → google |
916+
| **artistry** | `gemini-3-pro` | google → anthropic → openai |
917+
| **quick** | `claude-haiku-4-5` | anthropic → google → opencode |
918+
| **unspecified-low** | `claude-sonnet-4-5` | anthropic → openai → google |
919+
| **unspecified-high** | `claude-opus-4-5` | anthropic → openai → google |
920+
| **writing** | `gemini-3-flash` | google → anthropic → zai-coding-plan → openai |
920921

921922
### Checking Your Configuration
922923

docs/features.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,19 @@ Oh-My-OpenCode provides 10 specialized AI agents. Each has distinct expertise, o
1010

1111
| Agent | Model | Purpose |
1212
|-------|-------|---------|
13-
| **Sisyphus** | `anthropic/claude-opus-4-5` | **The default orchestrator.** Plans, delegates, and executes complex tasks using specialized subagents with aggressive parallel execution. Todo-driven workflow with extended thinking (32k budget). |
13+
| **Sisyphus** | `anthropic/claude-opus-4-5` | **The default orchestrator.** Plans, delegates, and executes complex tasks using specialized subagents with aggressive parallel execution. Todo-driven workflow with extended thinking (32k budget). Fallback: kimi-k2.5 → glm-4.7 → gpt-5.2-codex → gemini-3-pro. |
1414
| **oracle** | `openai/gpt-5.2` | Architecture decisions, code review, debugging. Read-only consultation - stellar logical reasoning and deep analysis. Inspired by AmpCode. |
15-
| **librarian** | `opencode/big-pickle` | Multi-repo analysis, documentation lookup, OSS implementation examples. Deep codebase understanding with evidence-based answers. Inspired by AmpCode. |
16-
| **explore** | `opencode/gpt-5-nano` | Fast codebase exploration and contextual grep. Uses Gemini 3 Flash when Antigravity auth is configured, Haiku when Claude max20 is available, otherwise Grok. Inspired by Claude Code. |
17-
| **multimodal-looker** | `google/gemini-3-flash` | Visual content specialist. Analyzes PDFs, images, diagrams to extract information. Saves tokens by having another agent process media. |
15+
| **librarian** | `zai-coding-plan/glm-4.7` | Multi-repo analysis, documentation lookup, OSS implementation examples. Deep codebase understanding with evidence-based answers. Fallback: glm-4.7-free → claude-sonnet-4-5. |
16+
| **explore** | `anthropic/claude-haiku-4-5` | Fast codebase exploration and contextual grep. Fallback: gpt-5-mini → gpt-5-nano. Inspired by Claude Code. |
17+
| **multimodal-looker** | `google/gemini-3-flash` | Visual content specialist. Analyzes PDFs, images, diagrams to extract information. Fallback: gpt-5.2 → glm-4.6v → kimi-k2.5 → claude-haiku-4-5 → gpt-5-nano. |
1818

1919
### Planning Agents
2020

2121
| Agent | Model | Purpose |
2222
|-------|-------|---------|
23-
| **Prometheus** | `anthropic/claude-opus-4-5` | Strategic planner with interview mode. Creates detailed work plans through iterative questioning. |
24-
| **Metis** | `anthropic/claude-sonnet-4-5` | Plan consultant - pre-planning analysis. Identifies hidden intentions, ambiguities, and AI failure points. |
25-
| **Momus** | `anthropic/claude-sonnet-4-5` | Plan reviewer - validates plans against clarity, verifiability, and completeness standards. |
23+
| **Prometheus** | `anthropic/claude-opus-4-5` | Strategic planner with interview mode. Creates detailed work plans through iterative questioning. Fallback: kimi-k2.5 → gpt-5.2 → gemini-3-pro. |
24+
| **Metis** | `anthropic/claude-opus-4-5` | Plan consultant - pre-planning analysis. Identifies hidden intentions, ambiguities, and AI failure points. Fallback: kimi-k2.5 → gpt-5.2 → gemini-3-pro. |
25+
| **Momus** | `openai/gpt-5.2` | Plan reviewer - validates plans against clarity, verifiability, and completeness standards. Fallback: claude-opus-4-5 → gemini-3-pro. |
2626

2727
### Invoking Agents
2828

docs/guide/installation.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ If Z.ai is the only provider available, all agents will use GLM models:
213213

214214
#### OpenCode Zen
215215

216-
OpenCode Zen provides access to `opencode/` prefixed models including `opencode/claude-opus-4-5`, `opencode/gpt-5.2`, `opencode/gpt-5-nano`, and `opencode/big-pickle`.
216+
OpenCode Zen provides access to `opencode/` prefixed models including `opencode/claude-opus-4-5`, `opencode/gpt-5.2`, `opencode/gpt-5-nano`, and `opencode/glm-4.7-free`.
217217

218218
When OpenCode Zen is the best available provider (no native or Copilot), these models are used:
219219

@@ -222,7 +222,7 @@ When OpenCode Zen is the best available provider (no native or Copilot), these m
222222
| **Sisyphus** | `opencode/claude-opus-4-5` |
223223
| **Oracle** | `opencode/gpt-5.2` |
224224
| **Explore** | `opencode/gpt-5-nano` |
225-
| **Librarian** | `opencode/big-pickle` |
225+
| **Librarian** | `opencode/glm-4.7-free` |
226226

227227
##### Setup
228228

@@ -278,7 +278,7 @@ After everything is set up and working, ask the user:
278278
279279
If the user agrees, run:
280280
```bash
281-
gh repo star code-yeongyu/oh-my-opencode
281+
gh api --silent --method PUT /user/starred/code-yeongyu/oh-my-opencode >/dev/null 2>&1 || true
282282
```
283283

284284
**Important**: Only run the command if the user explicitly says yes. Never run it automatically without consent.

package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "oh-my-opencode",
3-
"version": "3.1.7",
3+
"version": "3.1.8",
44
"description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",
@@ -74,13 +74,13 @@
7474
"typescript": "^5.7.3"
7575
},
7676
"optionalDependencies": {
77-
"oh-my-opencode-darwin-arm64": "3.1.7",
78-
"oh-my-opencode-darwin-x64": "3.1.7",
79-
"oh-my-opencode-linux-arm64": "3.1.7",
80-
"oh-my-opencode-linux-arm64-musl": "3.1.7",
81-
"oh-my-opencode-linux-x64": "3.1.7",
82-
"oh-my-opencode-linux-x64-musl": "3.1.7",
83-
"oh-my-opencode-windows-x64": "3.1.7"
77+
"oh-my-opencode-darwin-arm64": "3.1.8",
78+
"oh-my-opencode-darwin-x64": "3.1.8",
79+
"oh-my-opencode-linux-arm64": "3.1.8",
80+
"oh-my-opencode-linux-arm64-musl": "3.1.8",
81+
"oh-my-opencode-linux-x64": "3.1.8",
82+
"oh-my-opencode-linux-x64-musl": "3.1.8",
83+
"oh-my-opencode-windows-x64": "3.1.8"
8484
},
8585
"trustedDependencies": [
8686
"@ast-grep/cli",

packages/darwin-arm64/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "oh-my-opencode-darwin-arm64",
3-
"version": "3.1.7",
3+
"version": "3.1.8",
44
"description": "Platform-specific binary for oh-my-opencode (darwin-arm64)",
55
"license": "MIT",
66
"repository": {

packages/darwin-x64/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "oh-my-opencode-darwin-x64",
3-
"version": "3.1.7",
3+
"version": "3.1.8",
44
"description": "Platform-specific binary for oh-my-opencode (darwin-x64)",
55
"license": "MIT",
66
"repository": {

packages/linux-arm64-musl/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "oh-my-opencode-linux-arm64-musl",
3-
"version": "3.1.7",
3+
"version": "3.1.8",
44
"description": "Platform-specific binary for oh-my-opencode (linux-arm64-musl)",
55
"license": "MIT",
66
"repository": {

0 commit comments

Comments
 (0)