Commit Graph

321 Commits

Author SHA1 Message Date
Ho Lim fa64c31ae2 fix: stabilize timestamp-output tests across timezones
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-29 00:25:29 -07:00
YeonGyu-Kim 3715fb79b9 Merge pull request #2871 from Jholly2008/kkk/fix-on-complete-hook-shell
fix(cli): respect platform shell for --on-complete
2026-03-28 01:42:13 +09:00
YeonGyu-Kim 670d8ab175 fix(#2852): forward model overrides from categories/agent config to subagents
- fix(switcher): use lastIndexOf for multi-slash model IDs (e.g. aws/anthropic/claude-sonnet-4)
- fix(model-resolution): same lastIndexOf fix in doctor parseProviderModel
- fix(call-omo-agent): resolve model from agent config and forward to both
  background and sync executors via DelegatedModelConfig
- fix(subagent-resolver): inherit category model/variant when agent uses
  category reference without explicit model override
- test: add model override forwarding tests for call-omo-agent
- test: add multi-slash model ID test for switcher
2026-03-27 13:59:06 +09:00
孔祥俊 661737b95a fix(cli): respect platform shell for --on-complete 2026-03-27 11:11:58 +08:00
YeonGyu-Kim 1c54fdad26 feat(compat): package rename compatibility layer for oh-my-opencode → oh-my-openagent
- Add legacy plugin startup warning when oh-my-opencode config detected
- Update CLI installer and TUI installer for new package name
- Split monolithic config-manager.test.ts into focused test modules
- Add plugin config detection tests for legacy name fallback
- Update processed-command-store to use plugin-identity constants
- Add claude-code-plugin-loader discovery test for both config names
- Update chat-params and ultrawork-db tests for plugin identity

Part of #2823
2026-03-26 19:44:55 +09:00
YeonGyu-Kim d39891fcab docs: update hephaestus default model references from gpt-5.3-codex to gpt-5.4
Updated across README (all locales), docs/guide/, docs/reference/,
docs/examples/, AGENTS.md files, and test expectations/snapshots.

The deep category and multimodal-looker still use gpt-5.3-codex as
those are separate from the hephaestus agent.
2026-03-26 19:25:26 +09:00
YeonGyu-Kim 4efc181390 fix(ci): resolve all test failures + complete rename compat layer
Sisyphus-authored fixes across 15 files:

- plugin-identity: align CONFIG_BASENAME with actual config file name
- add-plugin-to-opencode-config: handle legacy→canonical name migration
- plugin-detection tests: update expectations for new identity constants
- doctor/system: fix legacy name warning test assertions
- install tests: align with new plugin name
- chat-params tests: fix mock isolation
- model-capabilities tests: fix snapshot expectations
- image-converter: fix platform-dependent test assertions (Linux CI)
- example configs: expanded with more detailed comments

Full suite: 4484 pass, 0 fail, typecheck clean.
2026-03-26 18:04:31 +09:00
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 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 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 6e42b553cc Merge origin/dev into feature/upgrade-minimax-m2.7 (resolve conflicts) 2026-03-26 08:48:53 +09:00
Ravi Tharuma a15f6076bc feat(model-capabilities): add maintenance guardrails 2026-03-25 16:14:19 +01:00
Ravi Tharuma 2af9324400 feat: add models.dev-backed model capabilities 2026-03-25 14:47:46 +01:00
YeonGyu-Kim 535ecee318 fix(models): remove stale Gemini 3 Pro references
Keep repo-owned CLI, docs, and test fixtures aligned with current Gemini 3.1 naming while leaving upstream catalog behavior untouched.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-24 23:53:56 +09:00
YeonGyu-Kim 6e9128e060 fix: add fetch mock to install test to prevent CI timeout
The first test case 'non-TUI mode: should show warning but continue when
OpenCode binary not found' was missing a globalThis.fetch mock, causing it
to make a real HTTP request to npm registry via fetchNpmDistTags().
The npm fetch timeout (5s) collided with the test timeout (5s), causing
flaky CI failures.

Added the same fetch mock pattern already used by the other two test cases.
Test runtime dropped from 5000ms+ to ~2ms.
2026-03-23 20:03:45 +09:00
YeonGyu-Kim 7f20dd6ff5 fix: add oh-my-openagent.jsonc config file detection (fixes #2624) 2026-03-23 18:11:01 +09:00
PR Bot 0d52519293 feat: upgrade MiniMax from M2.5 to M2.7 and expand to more agents/categories
- Upgrade minimax-m2.5 → minimax-m2.7 (latest model) across all agents and categories
- Replace minimax-m2.5-free with minimax-m2.7-highspeed (optimized speed variant)
- Expand MiniMax fallback coverage to atlas, sisyphus-junior, writing, and unspecified-low
- Add isMiniMaxModel() detection function in types.ts for model family detection
- Update all tests (58 passing) and documentation
2026-03-21 01:29:53 +08:00
YeonGyu-Kim 16cbc847ac fix(cli/run): set OPENCODE_CLIENT to 'run' to exclude question tool from registry 2026-03-20 16:12:58 +09:00
MoerAI 23a30e86f2 fix(windows): resolve symlinked config paths for plugin detection (fixes #2271) 2026-03-20 10:44:19 +09:00
YeonGyu-Kim 22fd976eb9 feat(categories): change quick category default model from claude-haiku-4-5 to gpt-5.4-mini
GPT-5.4-mini provides stronger reasoning at comparable speed and cost.
Haiku remains as the next fallback priority in the chain.

Changes:
- DEFAULT_CATEGORIES quick model: anthropic/claude-haiku-4-5 → openai/gpt-5.4-mini
- Fallback chain: gpt-5.4-mini → haiku → gemini-3-flash → minimax-m2.5 → gpt-5-nano
- OpenAI-only catalog: quick uses gpt-5.4-mini directly
- Think-mode: add gpt-5-4-mini and gpt-5-4-nano high variants
- Update all documentation references
2026-03-18 19:03:30 +09:00
YeonGyu-Kim 90aa3a306c perf(hooks,tools): optimize string operations and reduce redundant iterations
- output-renderer, hashline-edit-diff: replace str += with array join (H2)
- auto-slash-command: single-pass Map grouping instead of 6x filter (M1)
- comment-checker: hoist Zod schema to module scope (M2)
- session-last-agent: reverse iterate sorted array instead of sort+reverse (L2)
2026-03-18 14:19:12 +09:00
YeonGyu-Kim fee938d63a fix(cli): cherry-pick glm-4.7-free → gpt-5-nano fallback fix from dev 2026-03-17 16:30:12 +09:00
YeonGyu-Kim 92bc72a90b fix(bun-install): use workspaceDir option instead of hardcoded cache-dir 2026-03-17 16:05:51 +09:00
YeonGyu-Kim e9887dd82f fix(doctor): align auto-update and doctor config paths 2026-03-17 15:56:02 +09:00
YeonGyu-Kim d493f9ec3a fix(cli-run): move resolveRunModel inside try block 2026-03-17 15:49:26 +09:00
YeonGyu-Kim 0471078006 fix(tmux): escape serverUrl in pane shell commands 2026-03-17 15:16:54 +09:00
acamq 1cfc1c8a8b Merge pull request #2596 from cyberprophet/fix/doctor-plugin-version-fallback
fix(doctor): fall back to loadedVersion when pluginVersion is null
2026-03-15 20:22:10 -06:00
acamq a7800a8bf6 Revert "fix(test): update package name to oh-my-openagent in install test" 2026-03-15 20:06:55 -06:00
cyberprophet 5b7ca99b96 fix(doctor): fall back to loadedVersion when pluginVersion is null 2026-03-16 11:00:05 +09:00
YeonGyu-Kim f31f50abec fix(release): revert package identity to oh-my-opencode
Keep installer, config detection, schema generation, and publish workflows aligned with the long-lived oh-my-opencode package so this release does not split across two npm names.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-16 10:38:55 +09:00
YeonGyu-Kim 7f7527047e fix(cli): validate and detect OpenCode Go install settings
Reject invalid --opencode-go values during non-TUI installs and detect existing OpenCode Go usage from the generated oh-my-opencode config so updates preserve the right defaults.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-16 10:38:55 +09:00
YeonGyu-Kim 532995bb51 fix(model-fallback): align OpenAI fallback resolution across CLI and runtime
Keep install-time and runtime model tables in sync, stop OpenAI-only misrouting when OpenCode Go is present, and add valid OpenAI fallbacks for atlas, metis, and sisyphus-junior.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-16 10:38:55 +09:00
acamq 65ccc9b854 Merge pull request #2588 from acamq/refactor/doctor-lsp-extensions
refactor(doctor): show detected LSP extensions instead of hardcoded server counts
2026-03-15 19:12:48 -06:00
acamq 85d812964b chore: remove unused LspServerInfo type 2026-03-15 19:09:47 -06:00
acamq da788d3906 fix(doctor): remove redundant extensions from verbose LSP header
The header line was showing all extensions unioned together which was
redundant with the per-server detail lines below and caused line overflow.
Status mode also simplified to just show server count.
2026-03-15 19:02:21 -06:00
acamq 03da2e94a2 refactor(doctor): show detected LSP servers and extensions instead of hardcoded counts
Replace the hardcoded 4-server list in doctor LSP check with getAllServers()
from server-resolution.ts, which covers all 40+ builtin servers plus user
config. Output now shows server count with supported extensions, and verbose
mode expands to per-server detail lines.

Status:  LSP 3 servers (.go, .py, .pyi, .ts, .tsx)
Verbose: LSP 3 servers (.go, .py, .pyi, .ts, .tsx)
           typescript (.ts, .tsx, .js, .jsx)
           pyright (.py, .pyi)
           gopls (.go)

Closes #2587
2026-03-15 19:00:17 -06:00
acamq 2fd6f4bf57 Merge pull request #2582 from acamq/fix/fix-install-test
fix(test): update package name to oh-my-openagent in install test
2026-03-15 16:31:56 -06:00
acamq 0f0e4c649b fix(test): update package name to oh-my-openagent in install test
The test was checking for the old package name 'oh-my-opencode'
but the plugin registration now uses 'oh-my-openagent'.
2026-03-15 16:26:35 -06:00
acamq b7c68080b4 Merge pull request #2532 from ricatix/fix/doctor-verbose-models
fix(cli): render verbose doctor check details
2026-03-15 16:19:08 -06:00
YeonGyu-Kim 0dcfcd372b feat(cli): support both oh-my-opencode and oh-my-openagent package names
Update CLI config manager to detect and handle both legacy (oh-my-opencode)
and new (oh-my-openagent) package names during installation. Migration
will automatically replace old plugin entries with the new name.

🤖 Generated with assistance of OhMyOpenCode
2026-03-14 12:45:58 +09:00
YeonGyu-Kim 38938508fa test(model-fallback): update snapshots and kimi model expectations for opencode-go integration 2026-03-13 10:48:05 +09:00
ricatix 63ac37cd29 fix(cli): render verbose doctor check details
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-12 22:20:48 +07:00
YeonGyu-Kim 53c65a7e63 feat(cli): add sisyphus-junior model fallback requirements
Add CLI_AGENT_MODEL_REQUIREMENTS entry for sisyphus-junior with
fallback chain: claude-sonnet-4-6 -> kimi-k2.5 -> big-pickle.

🤖 Generated with assistance of OhMyOpenCode
2026-03-12 18:19:06 +09:00
YeonGyu-Kim a9fde452ac feat(opencode-go): update on-complete hook for provider display 2026-03-12 18:19:06 +09:00
YeonGyu-Kim 338379941d feat(opencode-go): integrate into model fallback chain resolution 2026-03-12 18:19:06 +09:00
YeonGyu-Kim 44d602b7e5 feat(opencode-go): integrate installer with config detection 2026-03-12 18:19:06 +09:00
YeonGyu-Kim 66ec9f58ee feat(opencode-go): add CLI install flag and TUI prompts 2026-03-12 18:19:06 +09:00
YeonGyu-Kim 89d1e105a8 feat(opencode-go): add model requirements for go-tier models 2026-03-12 18:19:06 +09:00
YeonGyu-Kim 504b68f2ac feat(opencode-go): add provider type and availability detection 2026-03-12 18:19:06 +09:00
YeonGyu-Kim ca7c0e391e fix(bun-install): default outputMode to "pipe" to prevent TUI stdout leak
runBunInstallWithDetails() defaulted to outputMode:"inherit", causing
bun install stdout/stderr to leak into the TUI when callers omitted the
option. Changed default to "pipe" so output is captured silently.

Also fixed stale mock in background-update-check.test.ts: the test was
mocking runBunInstall (unused) instead of runBunInstallWithDetails, and
returning boolean instead of BunInstallResult.
2026-03-12 18:19:06 +09:00