Commit Graph

1102 Commits

Author SHA1 Message Date
Aleksey Bragin
9995b680f7 fix: add session cursor for tool output 2026-01-14 19:43:46 -05:00
Kenny
abd1ec1092 Merge pull request #790 from stranger2904/feat/http-mcp-transport
feat(skill-mcp): add HTTP transport support for remote MCP servers
2026-01-14 15:35:38 -05:00
github-actions[bot]
5a8d9f09d9 @stranger29 has signed the CLA in code-yeongyu/oh-my-opencode#795 2026-01-14 20:31:45 +00:00
Kenny
2c4730f094 Delete clean_pr_body.txt 2026-01-14 15:27:48 -05:00
stranger2904
951df07c0f fix: correct test syntax for headers verification
Fix syntax error where expect().rejects.toThrow() was not properly closed
before the headers assertion.
2026-01-14 15:10:45 -05:00
Kenny
4c49299a93 Merge pull request #736 from Gladdonilli/fix/background-agent-edge-cases
fix(background-agent): address edge cases in task lifecycle
2026-01-14 15:05:09 -05:00
Kenny
00508e9959 Merge pull request #770 from KNN-07/fix/agent-model-inheritance
feat(sisyphus-task): inherit parent model for categories and show fal…
2026-01-14 15:01:18 -05:00
stranger2904
c9ef648c60 test: mock StreamableHTTPClientTransport for faster, deterministic tests
Add mocks for HTTP transport to avoid real network calls during tests.
This addresses reviewer feedback about test reliability:
- Tests are now faster (no network latency)
- Tests are deterministic across environments
- Test intent is clearer (unit testing error handling logic)

The mock throws immediately with a controlled error message,
allowing tests to validate error handling without network dependencies.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 15:01:10 -05:00
Kenny
8a9ebe1012 refactor(sisyphus-task): use dynamic model fallback from OpenCode config
- Remove hardcoded "anthropic/claude-sonnet-4-5" fallback
- Fetch systemDefaultModel from client.config.get() at tool boundary
- Add 'category-default' and 'system-default' fallback types
- Use switch(actualModel) for cleaner type detection
- Add guard clauses and fail-loud validation for invalid models
- Wrap config fetch in try/catch for graceful degradation
- Update toast messages with typed suffixMap
2026-01-14 14:45:01 -05:00
github-actions[bot]
014bdaeec2 @stranger2904 has signed the CLA in code-yeongyu/oh-my-opencode#788 2026-01-14 17:06:22 +00:00
stranger2904
570b51d07b feat(skill-mcp): add HTTP transport support for remote MCP servers
Add support for connecting to remote MCP servers via HTTP in addition to
the existing stdio (local process) connections. This enables skills to
use cloud-hosted MCP servers and aggregated MCP gateways.

## Changes

- Extend SkillMcpManager to detect connection type from config:
  - Explicit `type: "http"` or `type: "sse"` → HTTP connection
  - Explicit `type: "stdio"` → stdio connection
  - Infer from `url` field → HTTP connection
  - Infer from `command` field → stdio connection

- Add StreamableHTTPClientTransport from MCP SDK for HTTP connections
  - Supports custom headers for authentication (e.g., API keys)
  - Proper error handling with helpful hints

- Maintain full backward compatibility with existing stdio configurations

## Usage

```yaml
# HTTP connection (new)
mcp:
  remote-server:
    url: https://mcp.example.com/mcp
    headers:
      Authorization: Bearer ${API_KEY}

# stdio connection (existing, unchanged)
mcp:
  local-server:
    command: npx
    args: [-y, @some/mcp-server]
```

## Tests

Added comprehensive tests for:
- Connection type detection (explicit type vs inferred)
- HTTP URL validation and error messages
- Headers configuration
- Backward compatibility with stdio configs
2026-01-14 11:35:32 -05:00
Kenny
a91b05d9c6 Merge pull request #751 from Momentum96/feat/sisyphus-task-retry
feat(hooks): add sisyphus-task-retry hook for auto-correction
2026-01-14 10:57:59 -05:00
Nguyen Khac Trung Kien
4a892a9809 fix(sisyphus-task): correct modelInfo.type detection to compare actual resolved model
The previous detection checked if parentModelString exists, but the
resolution uses a ?? chain where default may win over parent. Now
compares actualModel against each source to correctly identify type.

Fixes: model toast incorrectly showing 'inherited' when default was used
2026-01-14 22:15:05 +07:00
Nguyen Khac Trung Kien
4d4966362f feat(sisyphus-task): inherit parent model for categories and show fallback warning
- Change model priority: user override > parent model > category default
- Add ModelFallbackInfo to track model resolution type
- Show warning toast when category uses inherited or default model
- Add tests for model fallback info in task toast
2026-01-14 22:06:24 +07:00
Kenny
0c21c72e05 Merge pull request #776 from MotorwaySouth9/fix/config-migration-do-not-prune-agent-overrides
fix(migration): normalize Orchestrator-Sisyphus name
2026-01-14 10:02:26 -05:00
Kenny
caf50fc4c9 Merge pull request #783 from popododo0720/fix/ulw-boundary-and-skill-mcp-args
fix: ulw keyword word boundary and skill_mcp parseArguments object handling
2026-01-14 09:40:36 -05:00
Kenny
3801e42ccb fix: restore mock in keyword-detector tests 2026-01-14 09:32:05 -05:00
Kenny
306dab41ad Merge pull request #774 from 0Jaeyoung0/fix/bun-installation-requirement
Update README with Bun installation requirement
2026-01-14 09:28:40 -05:00
Kenny
9f040e020f Merge branch 'dev' into fix/ulw-boundary-and-skill-mcp-args 2026-01-14 09:27:59 -05:00
github-actions[bot]
25dbcfe200 @devkade has signed the CLA in code-yeongyu/oh-my-opencode#784 2026-01-14 14:25:37 +00:00
YeonGyu-Kim
47a641c415 feat(lsp): add kotlin-ls LSP server support (#782)
Add Kotlin LSP server (kotlin-ls) to the built-in servers catalog,
syncing with OpenCode's server.ts. Includes:
- BUILTIN_SERVERS entry with kotlin-lsp command
- LSP_INSTALL_HINTS entry pointing to GitHub repo
- Extensions: .kt, .kts (already in EXT_TO_LANG)

Co-authored-by: justsisyphus <sisyphus-dev-ai@users.noreply.github.com>
2026-01-14 22:59:18 +09:00
popododo0720
5c4f4fc655 fix: ulw keyword word boundary and skill_mcp parseArguments object handling
- Add word boundary to ulw/ultrawork regex to prevent false matches on substrings like 'StatefulWidget' (fixes #779)
- Handle object type in parseArguments to prevent [object Object] JSON parse error (fixes #747)
- Add test cases for word boundary behavior
2026-01-14 21:36:32 +09:00
github-actions[bot]
2e1b467de4 release: v3.0.0-beta.7 v3.0.0-beta.7 2026-01-14 10:16:01 +00:00
justsisyphus
e180d295bb feat(installer): add GitHub Copilot fallback for visual/frontend agents
- frontend-ui-ux-engineer, document-writer, multimodal-looker, explore
  now use Copilot models when no native providers available
- Category overrides (visual-engineering, artistry, writing) also use
  Copilot models as fallback
- Priority: native providers (Gemini/Claude) > Copilot > free models
- Login guide moved to bottom with GitHub Copilot auth option added

🤖 Generated with [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) assistance
2026-01-14 19:11:28 +09:00
justsisyphus
93e59da9d6 docs: simplify Claude subscription Q&A in OAuth notice
- Combine and simplify Q&A about Claude subscription usage
- Remove separate OAuth implementation question
- Clarify: technically possible but not recommended
2026-01-14 19:07:03 +09:00
justsisyphus
358bd8d7fa docs: add TL;DR section to English README
- Add Q&A format TL;DR section for clarity
- Restructure existing OAuth notice with FULL header
2026-01-14 19:03:59 +09:00
justsisyphus
78d67582d6 docs: add TL;DR section to Japanese and Chinese README
- Add Q&A format TL;DR section for clarity
- Restructure existing OAuth notice with '詳細'/'详细说明' headers
- Remove unrelated librarian model notice
2026-01-14 19:02:01 +09:00
justsisyphus
54575ad259 fix: use dynamic message lookup for model/agent context in prompts
Instead of using stale parentModel/parentAgent from task state, now
dynamically looks up the current message to get fresh model/agent values.
Applied across all prompt injection points:
- background-agent notifyParentSession
- ralph-loop continuation
- sisyphus-orchestrator boulder continuation
- sisyphus-task resume

🤖 Generated with [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) assistance
2026-01-14 18:55:46 +09:00
justsisyphus
045fa79d92 docs: add Claude OAuth access notice and ToS disclaimer
- Add prominent notice about Anthropic's third-party OAuth restriction
- Include disclaimer about oauth spoofing tools in community
- Clarify project has no custom oauth implementations
- Update version reference to 3.0.0-beta.6
- Add GitHub Copilot section to table of contents
2026-01-14 18:54:10 +09:00
Gladdonilli
4d966ec99b refactor(background-agent): extract cleanupPendingByParent helper
Extract duplicated 8-line pendingByParent cleanup pattern into a
reusable helper method. Reduces code duplication across 5 call sites.

Addresses cubic-dev-ai feedback on PR #736.
2026-01-14 17:34:54 +08:00
Gladdonilli
5d99e9ab64 fix: address remaining PR review feedback
- Add pendingByParent cleanup in pruneStaleTasksAndNotifications
- Add double-release guard in launch error handler (L170)
- Add concurrency release in resume error handler (L326)
2026-01-14 17:34:54 +08:00
Gladdonilli
129388387b fix: address PR review feedback
- Add pendingByParent cleanup to ALL completion paths (session.idle, polling, stability)
- Add null guard for task.parentSessionID before Map access
- Add consistency guard in prune function (set concurrencyKey = undefined)
- Remove redundant setTimeout release (already released at completion)
2026-01-14 17:34:54 +08:00
Gladdonilli
c196db2a0e fix(background-agent): address 3 edge cases in task lifecycle
- Reset startedAt on resume to prevent immediate false completion
- Release concurrency immediately on completion with double-release guard
- Clean up pendingByParent on session.deleted to prevent stale entries
2026-01-14 17:33:47 +08:00
justsisyphus
6ded689d08 fix(background-agent): omit model field to use session's lastModel
Previously, background task completion notifications passed parentModel when defined, causing OpenCode to use default Sonnet model when parentModel was undefined. Now model field is always omitted, letting OpenCode use the session's existing lastModel (like todo-continuation hook).

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-01-14 18:02:20 +09:00
justsisyphus
45d660176e refactor(lsp): consolidate LSP tools - remove lsp_hover, lsp_code_actions, lsp_code_action_resolve - merge lsp_document_symbols + lsp_workspace_symbols into lsp_symbols with scope parameter - update all references in hooks, templates, and documentation 2026-01-14 17:30:04 +09:00
github-actions[bot]
ffbab8f316 @dang232 has signed the CLA in code-yeongyu/oh-my-opencode#777 2026-01-14 07:42:01 +00:00
justsisyphus
e203130ed8 refactor(cli): remove OpenAI codex auth plugin setup
OpenCode now natively supports OpenAI authentication, so we no longer
need to:
- Add opencode-openai-codex-auth plugin
- Configure CODEX_PROVIDER_CONFIG provider settings

The --chatgpt flag still controls Oracle agent model selection
(GPT-5.2 vs fallback).
2026-01-14 16:20:02 +09:00
justsisyphus
0631865c16 style(agents): add green color to Orchestrator Sisyphus 2026-01-14 16:20:02 +09:00
github-actions[bot]
2b036e7476 @MotorwaySouth9 has signed the CLA in code-yeongyu/oh-my-opencode#776 2026-01-14 07:10:00 +00:00
MotorwaySouth9
e6a572824c fix(migration): normalize Orchestrator-Sisyphus name 2026-01-14 15:09:22 +08:00
Jaeyoung Kim
4d76f37bfe Update README.zh-cn.md with Bun prerequisite
Add prerequisite note for Bun installation in README.
2026-01-14 15:13:39 +09:00
github-actions[bot]
84e1ee09f0 @0Jaeyoung0 has signed the CLA in code-yeongyu/oh-my-opencode#774 2026-01-14 05:56:25 +00:00
justsisyphus
3d5319a72d fix(agents): block call_omo_agent from Prometheus planner (#772)
Prometheus (Planner) agent should not have access to call_omo_agent tool
to prevent direct agent spawning. Uses the same pattern as orchestrator-sisyphus.

Co-authored-by: justsisyphus <justsisyphus@users.noreply.github.com>
2026-01-14 14:27:40 +09:00
Jaeyoung Kim
75eb82ea32 Update README with Bun installation requirement
Added prerequisite information about Bun installation.
2026-01-14 14:22:41 +09:00
justsisyphus
325ce1212b fix(config): remove hidden flag from demoted plan agent
Plan agent should remain visible as subagent when Prometheus replaces it.
Previously hidden:true made it completely invisible in the UI.
2026-01-14 13:54:34 +09:00
justsisyphus
66f8946ff1 fix(background-agent): preserve parent model in notifyParentSession
Fixes model switching bug where sisyphus_task with category would
change the main session's model after completion.

- Add parentModel to session.prompt body in notifyParentSession
- Add test verifying model is included when parentModel is defined
2026-01-14 13:50:12 +09:00
justsisyphus
22619d137e fix(migration): remove auto model-to-category conversion (#764)
* chore(deps): upgrade @opencode-ai/plugin and sdk to 1.1.19

* docs(prometheus): add Question tool usage reminder

* fix(migration): remove auto model-to-category conversion

- Remove migrateAgentConfigToCategory call from migrateConfigFile
- User's explicit model/category settings are now preserved as-is
- No more unwanted deletion of agent configs (e.g., multimodal-looker)
- Add BUILTIN_AGENT_NAMES constant for future reference
- Update tests to reflect new behavior

* ci(sisyphus): add mandatory 'new branch + PR' todos for implementation tasks

---------

Co-authored-by: justsisyphus <justsisyphus@users.noreply.github.com>
2026-01-14 11:57:08 +09:00
sisyphus-dev-ai
000a61c961 docs: replace Codex references with GitHub Copilot documentation
Remove opencode-openai-codex-auth plugin instructions and replace with GitHub Copilot setup guide across all README languages.

Changes in all 3 READMEs (EN, JA, ZH-CN):
- Remove Codex authentication section (plugin setup, model list, auth flow)
- Add GitHub Copilot section with:
  - Priority explanation (native providers > Copilot > free models)
  - Model mappings table (Sisyphus/Oracle/Explore/Librarian)
  - Setup instructions (TUI and non-TUI modes)
  - Authentication guide

Closes #762

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-01-14 02:25:18 +00:00
sisyphus-dev-ai
9f07aae0a1 feat(config): implement Copilot fallback in model assignment logic
Update generateOmoConfig to use GitHub Copilot models as fallback when native providers are unavailable.

- Sisyphus: claude-opus-4-5 > github-copilot/claude-opus-4.5 > glm-4.7-free
- Oracle: gpt-5.2 > github-copilot/gpt-5.2 > claude-opus-4-5 > glm-4.7-free
- Add Copilot detection in detectCurrentConfig from agent models

Addresses #762

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-01-14 02:25:04 +00:00
sisyphus-dev-ai
d7326e1eeb feat(installer): add GitHub Copilot support with priority-based fallback
Add GitHub Copilot as a fallback provider option in the installer. Native providers (Claude/ChatGPT/Gemini) have priority over Copilot.

- Add hasCopilot field to InstallConfig and DetectedConfig types
- Add --copilot flag support for both TUI and non-TUI modes
- Add Copilot prompt in interactive installer (after Gemini)
- Update model selection logic to use Copilot fallback when native providers unavailable
- Update configuration summary to display Copilot status

Addresses #762

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-01-14 02:24:52 +00:00