YeonGyu-Kim
e86edca633
feat(doctor): warn on legacy package name + add example configs
...
- Doctor now detects when opencode.json references 'oh-my-opencode'
(legacy name) and warns users to switch to 'oh-my-openagent' with
the exact replacement string.
- Added 3 example config files in docs/examples/:
- default.jsonc: balanced setup with all agents documented
- coding-focused.jsonc: Sisyphus + Hephaestus heavy
- planning-focused.jsonc: Prometheus + Atlas heavy
All examples include every agent (sisyphus, hephaestus, atlas,
prometheus, explore, librarian) with model recommendations.
Helps with #2823
2026-03-26 17:01:42 +09:00
YeonGyu-Kim
a8ec92748c
fix(model-resolution): honor user config overrides on cold cache
...
When provider-models cache is cold (first run / cache miss),
resolveModelForDelegateTask returns {skipped: true}. Previously this
caused the subagent resolver to:
1. Ignore the user's explicit model override (e.g. explore.model)
2. Fall through to the hardcoded fallback chain which may contain
model IDs that don't exist in the provider catalog
Now:
- subagent-resolver: if resolution is skipped but user explicitly
configured a model, use it directly
- subagent-resolver: don't assign hardcoded fallback chain on skip
- category-resolver: same — don't leak hardcoded chain on skip
- general-agents: if user model fails resolution, use it as-is
instead of falling back to hardcoded chain first entry
Closes #2820
2026-03-26 16:54:04 +09:00
YeonGyu-Kim
dd85d1451a
fix(model-requirements): align fallback models with available provider catalogs
...
- opencode/minimax-m2.7-highspeed → opencode/minimax-m2.5 (provider lacks m2.7 variants)
- opencode-go/minimax-m2.7-highspeed → opencode-go/minimax-m2.7 (provider lacks -highspeed)
- opencode/minimax-m2.7 → opencode/minimax-m2.5 (provider only has m2.5)
- added xai as alternative provider for grok-code-fast-1 (prevents wrong provider prefix)
2026-03-26 16:00:02 +09:00
YeonGyu-Kim
42f5386100
fix(tests): drop duplicate tilde config regression
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 13:08:53 +09:00
YeonGyu-Kim
5bc019eb7c
fix(skills): remove duplicate homedir import
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 13:06:32 +09:00
YeonGyu-Kim
097e2be7e8
fix(slashcommand): discover nested opencode commands with slash names
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 13:05:03 +09:00
YeonGyu-Kim
c637d77965
fix(commands): discover ancestor opencode project commands
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 13:04:39 +09:00
YeonGyu-Kim
4c8aacef48
fix(agents): include .agents skills in agent awareness
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 13:02:52 +09:00
YeonGyu-Kim
8413bc6a91
fix(skills): expand tilde config source paths
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 13:02:36 +09:00
YeonGyu-Kim
86a62aef45
fix(skills): discover ancestor project skill directories
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 13:02:36 +09:00
YeonGyu-Kim
961cc788f6
fix(shared): support opencode directory aliases
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 13:02:12 +09:00
YeonGyu-Kim
19838b78a7
fix(shared): add bounded project discovery helpers
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 13:01:06 +09:00
YeonGyu-Kim
7f742723b5
fix(slashcommand): use slash separator for nested commands
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 12:29:42 +09:00
YeonGyu-Kim
b20a34bfa7
fix(slashcommand): discover nested opencode commands
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 12:15:47 +09:00
YeonGyu-Kim
12a4318439
fix(commands): load .agents skills into command config
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 12:15:47 +09:00
YeonGyu-Kim
e4a5973b16
fix(agents): include .agents skills in agent awareness
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 12:15:47 +09:00
YeonGyu-Kim
83819a15d3
fix(shared): stop ancestor discovery at worktree root
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 12:15:47 +09:00
YeonGyu-Kim
829c58ccb0
refactor(aliases): migrate to pattern-based model alias resolution
...
Move from hardcoded exact aliases to pattern-based canonicalization:
- Populate PATTERN_ALIAS_RULES with regex patterns for:
- Claude thinking variants (claude-opus-4-6-thinking → claude-opus-4-6)
- Gemini tier suffixes (gemini-3.1-pro-{high,low} → gemini-3.1-pro)
- Add stripProviderPrefixForAliasLookup() for provider-prefixed models
(anthropic/claude-sonnet-4-6 → claude-sonnet-4-6 for capability lookup)
- Preserve requestedModelID (with prefix) for API transport
- Reduce EXACT_ALIAS_RULES to exceptional cases only
(gemini-3-pro-{high,low} → gemini-3-pro-preview)
- Comprehensive test coverage for patterns, prefix stripping, negatives
Addresses Discussion #2835 (pattern matching architecture)
Related to PR #2834 (alias guardrails)
41 targeted tests pass, 4467 full suite tests pass, tsc clean.
2026-03-26 12:04:50 +09:00
YeonGyu-Kim
94b4a4f850
fix(slashcommand): deduplicate opencode command aliases
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 11:36:59 +09:00
YeonGyu-Kim
9fde370838
fix(commands): preserve nearest opencode command precedence
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 11:36:59 +09:00
YeonGyu-Kim
b6ee7f09b1
fix(slashcommand): discover ancestor opencode commands
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 11:22:00 +09:00
YeonGyu-Kim
28bcab066e
fix(commands): load opencode command dirs from aliases
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 11:22:00 +09:00
YeonGyu-Kim
b5cb50b561
fix(skills): discover ancestor project skill directories
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 11:22:00 +09:00
YeonGyu-Kim
8242500856
fix(skills): expand tilde config source paths
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 11:22:00 +09:00
YeonGyu-Kim
6d688ac0ae
fix(shared): support opencode directory aliases
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 11:22:00 +09:00
YeonGyu-Kim
da3e80464d
fix(shared): add ancestor project discovery helpers
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-26 11:22:00 +09:00
YeonGyu-Kim
7895361f42
fix(tests): resolve 5 cross-file test isolation failures
...
- model-fallback hook: mock selectFallbackProvider and add _resetForTesting()
to test-setup.ts to clear module-level state between files
- fallback-retry-handler: add afterAll(mock.restore) and use mockReturnValueOnce
to prevent connected-providers mock leaking to subsequent test files
- opencode-config-dir: use win32.join for Windows APPDATA path construction
so tests pass on macOS (path.join uses POSIX semantics regardless of
process.platform override)
- system-loaded-version: use resolveSymlink from file-utils instead of
realpathSync to handle macOS /var -> /private/var symlink consistently
All 4456 tests pass (0 failures) on full bun test suite.
2026-03-26 09:30:34 +09:00
YeonGyu-Kim
90919bf359
Merge pull request #2664 from kilhyeonjun/fix/anthropic-1m-ga-context-limit
...
fix(shared): respect cached model context limits for Anthropic providers post-GA
2026-03-26 08:55:04 +09:00
YeonGyu-Kim
32f2c688e7
Merge pull request #2707 from MoerAI/fix/windows-symlink-config
...
fix(windows): resolve symlinked config paths and plugin name parsing (fixes #2271 )
2026-03-26 08:54:45 +09:00
YeonGyu-Kim
e6d0484e57
Merge pull request #2710 from MoerAI/fix/rate-limit-hang
...
fix(runtime-fallback): detect bare 429 rate-limit signals (fixes #2677 )
2026-03-26 08:53:41 +09:00
YeonGyu-Kim
abd62472cf
Merge pull request #2752 from MoerAI/fix/quota-error-fallback-detection
...
fix(runtime-fallback): detect prettified quota errors without HTTP status codes (fixes #2747 )
2026-03-26 08:50:58 +09:00
YeonGyu-Kim
b1e099130a
Merge pull request #2756 from MoerAI/fix/plugin-display-name
...
fix(plugin): display friendly name in configuration UI instead of file path (fixes #2644 )
2026-03-26 08:50:29 +09:00
YeonGyu-Kim
09fb364bfb
Merge pull request #2833 from kuitos/feat/agent-order-support
...
feat(agent-priority): inject order field for deterministic agent Tab cycling
2026-03-26 08:49:58 +09:00
YeonGyu-Kim
6e42b553cc
Merge origin/dev into feature/upgrade-minimax-m2.7 (resolve conflicts)
2026-03-26 08:48:53 +09:00
Ravi Tharuma
ce877ec0d8
test(atlas): avoid shared barrel mock pollution
2026-03-25 22:27:26 +01:00
Ravi Tharuma
ec20a82b4e
fix(model-capabilities): align gemini aliases and alias lookup
2026-03-25 22:19:51 +01:00
Ravi Tharuma
5043cc21ac
fix(model-capabilities): harden canonical alias guardrails
2026-03-25 22:11:45 +01:00
YeonGyu-Kim
087e33d086
Merge pull request #2832 from RaviTharuma/fix/todo-sync-priority-default
...
test(todo-sync): match required priority fallback
2026-03-26 01:30:50 +09:00
Ravi Tharuma
46c6e1dcf6
test(todo-sync): match required priority fallback
2026-03-25 16:38:21 +01:00
kuitos
5befb60229
feat(agent-priority): inject order field for deterministic agent Tab cycling
...
Inject an explicit `order` field (1-4) into the four core agents
(Sisyphus, Hephaestus, Prometheus, Atlas) via reorderAgentsByPriority().
This pre-empts OpenCode's alphabetical agent sorting so the intended
Tab cycle order is preserved once OpenCode merges order field support
(anomalyco/opencode#19127 ).
Refs anomalyco/opencode#7372
2026-03-25 23:35:40 +08:00
Ravi Tharuma
55df2179b8
fix(todo-sync): preserve missing task priority
2026-03-25 16:26:23 +01:00
YeonGyu-Kim
76420b36ab
Merge pull request #2829 from RaviTharuma/fix/model-capabilities-review-followup
...
fix(model-capabilities): harden runtime capability handling
2026-03-26 00:25:07 +09:00
Ravi Tharuma
a15f6076bc
feat(model-capabilities): add maintenance guardrails
2026-03-25 16:14:19 +01:00
Ravi Tharuma
7c0289d7bc
fix(model-capabilities): honor root thinking flags
2026-03-25 15:41:12 +01:00
YeonGyu-Kim
5e9231e251
Merge pull request #2828 from code-yeongyu/fix/content-based-thinking-gating-v2
...
fix(thinking-block-validator): replace model-name gating with content-based history detection
2026-03-25 23:26:52 +09:00
YeonGyu-Kim
f04cc0fa9c
fix(thinking-block-validator): replace model-name gating with content-based history detection
...
Replace isExtendedThinkingModel() model-name check with hasSignedThinkingBlocksInHistory()
which scans message history for real Anthropic-signed thinking blocks.
Content-based gating is more robust than model-name checks — works correctly
with custom model IDs, proxied models, and new model releases without code changes.
- Add isSignedThinkingPart() that matches type thinking/redacted_thinking with valid signature
- Skip synthetic parts (injected by previous hook runs)
- GPT reasoning blocks (type=reasoning, no signature) correctly excluded
- Add comprehensive tests: signed injection, redacted_thinking, reasoning negative case, synthetic skip
Inspired by PR #2653 content-based approach, combined with redacted_thinking support from 0732cb85 .
Ultraworked with Sisyphus
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-03-25 23:23:46 +09:00
Ravi Tharuma
613ef8eee8
fix(model-capabilities): harden runtime capability handling
2026-03-25 15:09:25 +01:00
Ravi Tharuma
2af9324400
feat: add models.dev-backed model capabilities
2026-03-25 14:47:46 +01:00
YeonGyu-Kim
7a52639a1b
Merge pull request #2673 from sanoyphilippe/fix/oauth-discovery-root-fallback
...
fix(mcp-oauth): fall back to root well-known URL for non-root resource paths (fixes #2675 )
2026-03-25 21:48:13 +09:00
YeonGyu-Kim
5df54bced4
Merge pull request #2725 from cphoward/fix/spawn-budget-lifetime-semantics-clean
...
fix(background-agent): decrement spawn budget on task completion, cancellation, error, and interrupt
2026-03-25 21:46:51 +09:00