Remove overly restrictive parallel execution constraints that were
preventing orchestrator from using background agents effectively.
- Change from 'RARELY NEEDED' to 'DEFAULT behavior'
- Remove 5+ query requirement for background agents
- Remove anti-pattern warnings that discouraged delegation
- Align with sisyphus.ts parallel execution philosophy
- Change skills type from string[] | null to string[]
- Allow skills=[] for no skills, reject skills=null
- Remove emojis from error messages and prompts
- Update tests accordingly
OpenCode's OAuth auto-detection was causing context7 and grep_app MCPs
to be disabled despite having enabled: true. Only websearch was working.
Root cause: Remote MCP servers trigger OAuth detection by default in
OpenCode, which can mark MCPs as 'needs_auth' or 'disabled' status
even when they don't require OAuth.
Fix: Add oauth: false to all 3 built-in MCP configs to explicitly
disable OAuth auto-detection. These MCPs either:
- Use no auth (context7, grep_app)
- Use API key header auth (websearch with EXA_API_KEY)
- Root AGENTS.md: Updated timestamp, commit hash, line counts
- src/agents/AGENTS.md: Updated to 50 lines, current structure
- src/cli/AGENTS.md: Updated to 57 lines, current structure
- src/features/AGENTS.md: Updated to 65 lines, current structure
- src/hooks/AGENTS.md: Updated to 53 lines, current structure
- src/shared/AGENTS.md: Updated to 52 lines, core utilities
- src/tools/AGENTS.md: Updated to 50 lines, tool categories
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
- Changed lsp_diagnostics error handling to throw errors instead of returning strings
- Line 211: Changed from `return output` to `throw new Error(output)`
- Makes errors display as proper error blocks in TUI
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
- Added withOperationRetry<T>() helper method that retries operations up to 3 times
- Catches "Not connected" errors (case-insensitive)
- Cleans up stale client before retry
- Modified callTool, readResource, getPrompt to use retry logic
- Added tests for retry behavior (3 new test cases)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
fix: pass model parameter when resuming background tasks
Ensure resumed tasks maintain their original model configuration
from category settings, preventing unexpected model switching.
Previous test was setting mainSessionID to 'main-session-123' and the
next test expected undefined. The outer beforeEach wasn't properly
resetting state between tests in the nested describe block.
Adding a nested beforeEach ensures proper test isolation.
Skip all keyword detection for background task sessions to prevent mode
injection (e.g., [analyze-mode], [search-mode]) which incorrectly triggers
Prometheus planner restrictions on Sisyphus sessions.
This aligns with the existing pattern used in:
- sisyphus-orchestrator (line 504)
- todo-continuation-enforcer (line 303)
- session-notification (line 278)
Closes#713
The import was pointing to non-existent sisyphus-task/constants,
updated to delegate-task/constants where DEFAULT_CATEGORIES is defined.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Handle Windows where lookup and prefer exe/cmd/bat; fall back to ps1 and run via PowerShell for version detection.
Tests: bun test src/cli/doctor/checks/opencode.test.ts
Add 5-second cooldown between continuation injections to prevent rapid-fire
session.idle events from causing infinite loop when boulder has incomplete tasks.
Bug: When switching from Prometheus to Sisyphus, the Prometheus ultrawork
template was still injected because:
1. setSessionAgent() only sets on first call, ignoring subsequent updates
2. keyword-detector relied solely on input.agent which could be stale
Fix:
- Use updateSessionAgent() instead of setSessionAgent() in index.ts
- keyword-detector now uses getSessionAgent() as primary source, fallback to input.agent
- Added tests for agent switch scenario
category-default is the intended behavior for builtin categories,
not a fallback. Only show toast warning when:
- inherited: model from parent session (custom category without model)
- system-default: OpenCode's global default model
User-defined and category-default are both expected behaviors,
so no warning is needed.