824 Commits

Author SHA1 Message Date
justsisyphus
3d3d3e493b fix(delegate-task): category built-in model takes precedence over inherited model
Previously, when using categories like 'quick', the parent session's model
(e.g., Opus 4.5) would override the category's built-in model (e.g., Haiku).

Fixed priority: userConfig.model → category built-in → systemDefault

The inherited model from parent session no longer affects category-based
delegation - categories have their own explicit models.
2026-01-20 17:05:17 +09:00
justsisyphus
3e5265700b refactor(agents): remove frontend-ui-ux-engineer and rename prompt builder
- Delete frontend-ui-ux-engineer.ts (use category="visual-engineering" + skills instead)
- Rename sisyphus-prompt-builder.ts → dynamic-agent-prompt-builder.ts
- Update sisyphus.ts imports for renamed module

Frontend UI/UX work now handled via delegate_task with
category="visual-engineering" and skills=["frontend-ui-ux"].
2026-01-20 16:53:46 +09:00
justsisyphus
f1887327ee refactor(agents): remove document-writer agent in favor of writing category
- Delete document-writer.ts agent file
- Remove from types, schema, utils, index exports
- Remove tool restrictions entry
- Remove migration mappings
- Update atlas.ts to use category="writing" instead of agent="document-writer"
- Update init-deep command template
- Update all documentation (AGENTS.md, README.*, docs/)
- Regenerate schema.json

document-writer functionality is now handled via delegate_task with
category="writing" which uses the writing category's model config.
2026-01-20 16:52:31 +09:00
justsisyphus
c46d57f3aa refactor(hooks): rename sisyphus-orchestrator to atlas
- Rename SisyphusOrchestratorHookOptions → AtlasHookOptions
- Rename createSisyphusOrchestratorHook → createAtlasHook
- Update hook name in schema: sisyphus-orchestrator → atlas
- Update all documentation references
- Rename image: orchestrator-sisyphus.png → orchestrator-atlas.png
2026-01-20 16:52:20 +09:00
justsisyphus
8cc995891e refactor(delegate-task): restructure category system for unbiased model selection
- Remove temperature from all categories
- Consolidate CATEGORY_MODEL_CATALOG into DEFAULT_CATEGORIES
- Replace 'general' and 'most-capable' with 'unspecified-low' and 'unspecified-high'
- Add Selection_Gate to unspecified categories to force deliberate selection
- Update quick category to use claude-haiku-4-5
- Update all references and tests across codebase
2026-01-20 16:22:53 +09:00
justsisyphus
2c3f1bfd80 refactor(cli): remove ChatGPT subscription check from installer
- Remove chatgpt option from CLI args and types
- Remove ChatGPT prompt from TUI installer flow
- Update config detection to not include hasChatGPT
- Update related tests
2026-01-20 16:04:50 +09:00
justsisyphus
3be387d9e3 feat(delegate-task): add category model catalog with default models
- Add CATEGORY_MODEL_CATALOG for category-specific default models
- ultrabrain: openai/gpt-5.2-codex + xhigh
- artistry: google/gemini-3-pro-preview + max
- most-capable: anthropic/claude-opus-4-5 + max
- writing: google/gemini-3-flash-preview
- general: anthropic/claude-sonnet-4-5
2026-01-20 16:04:42 +09:00
justsisyphus
59d663dce7 docs: update atlas references
Update all documentation files to use 'atlas' instead of 'orchestrator-sisyphus'. AGENTS.md, src/agents/AGENTS.md, docs/features.md, docs/guide/overview.md all updated.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-01-20 15:57:14 +09:00
justsisyphus
52d9b30035 refactor(plugin): update atlas references
Update plugin handlers, commands, and integration points to use 'atlas' agent name. Start-work command and config handler now reference 'atlas'.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-01-20 15:55:09 +09:00
justsisyphus
c4b862cbc4 refactor(hooks): rename sisyphus-orchestrator to atlas
Hook name is now 'atlas' (not 'atlas-orchestrator'). Directory renamed to src/hooks/atlas/. All references updated.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-01-20 15:52:13 +09:00
justsisyphus
96bcd9788a refactor(agents): rename orchestrator-sisyphus to atlas
Rename agent file and update all references. Function createOrchestratorSisyphusAgent → createAtlasAgent. Metadata orchestratorSisyphusPromptMetadata → atlasPromptMetadata.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-01-20 15:40:34 +09:00
justsisyphus
e05ac04e66 refactor(schema): rename orchestrator-sisyphus to atlas
Update schema definitions, types, and integrations to use 'atlas' instead of 'orchestrator-sisyphus'. Includes schema regeneration and test updates.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-01-20 15:36:29 +09:00
justsisyphus
3c6768089f feat(migration): add orchestrator-sisyphus to atlas mapping 2026-01-20 15:24:31 +09:00
justsisyphus
18262e7b60 fix(start-work): use updateSessionAgent instead of clearSessionAgent to prevent Prometheus fallback 2026-01-20 15:23:36 +09:00
justsisyphus
7ccb8fcebb fix(permission): enable question tool for Sisyphus and Prometheus agents 2026-01-20 15:12:54 +09:00
justsisyphus
6a4add2011 fix(cli/run): add retry mechanism for session creation
The OpenCode server may not be fully initialized even after
reporting 'listening'. Add retry with exponential backoff (3 attempts)
and proper error handling to make session creation more robust.

This fixes CI failures where session.create() fails immediately
after server startup.

Fixes #935 (CI failure)
2026-01-20 14:37:10 +09:00
Bo Li
193c176130
feat: add current date to omo-env context 2026-01-20 08:18:45 +08:00
Kenny
c9f893b740
Merge pull request #907 from vsumner/pr-skill-cleanup
test: stabilize non-interactive env hook
2026-01-19 19:14:55 -05:00
Kenny
4ee7deae14
Merge pull request #883 from code-yeongyu/fix/remove-hardcoded-model-defaults
fix: remove hardcoded model defaults from categories and agents
2026-01-19 08:47:37 -05:00
justsisyphus
732ec85e07 mcp 2026-01-19 20:18:26 +09:00
justsisyphus
f935231184 plan writing 2026-01-19 14:58:13 +09:00
justsisyphus
bf3f8e5005 fix(background-agent): prevent premature task completion when agent still running
- Add session.status re-check in stability detection before completing
- Reset stablePolls if session is not idle (agent still working)
- Fix statusText to show CANCELLED instead of COMPLETED for non-completed tasks
2026-01-19 14:58:13 +09:00
justsisyphus
faac9e9908 feat(ultrawork): add mandatory certainty and no-compromise clauses to ultrawork prompt 2026-01-19 14:58:13 +09:00
Kenny
6956ce0a19 fix: correct config.data.model access pattern and use dynamic config paths
- Fixed delegate-task/tools.ts to access openCodeConfig.data.model instead of openCodeConfig.model
- Updated error messages to use getOpenCodeConfigPaths() for cross-platform paths
- Fixed 12 test mocks to use correct { data: { model: ... } } structure
- Fixes delegation failing with 'requires a default model' even when model is configured
2026-01-18 22:08:27 -05:00
justsisyphus
8cad7ccf91 refactor(agents): remove unused createSisyphusJuniorAgent function
Remove dead code that was never called anywhere in the codebase. Also removes the unused CategoryConfig import.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-01-19 10:57:31 +09:00
Victor Sumner
4e8106b019 test: stabilize non-interactive env hook
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-01-18 20:39:02 -05:00
justsisyphus
c6fb0c701b fix(types): add null checks for optional sessionID and startedAt fields 2026-01-19 10:35:47 +09:00
justsisyphus
ebaab5aa60 test(background-agent): add non-blocking queue tests 2026-01-19 10:27:50 +09:00
justsisyphus
92942a562f feat(ui): show pending/queued status in toast and background_output 2026-01-19 10:22:34 +09:00
justsisyphus
9710e10aca fix(background-agent): use queuedAt for pending task TTL 2026-01-19 10:19:48 +09:00
justsisyphus
d6723a7d11 feat(background-agent): support cancelling pending tasks 2026-01-19 10:18:10 +09:00
justsisyphus
933c0c99c5 fix(background-agent): track pending tasks in pendingByParent 2026-01-19 10:16:02 +09:00
justsisyphus
54f448583c feat(background-agent): implement per-key queue processor 2026-01-19 10:16:02 +09:00
justsisyphus
481770e599 feat(background-agent): make launch() non-blocking 2026-01-19 10:16:02 +09:00
justsisyphus
b053df42fb feat(background-agent): add per-key queue structure 2026-01-19 10:16:02 +09:00
justsisyphus
426fb36040 feat(background-agent): add pending status and queuedAt field 2026-01-19 10:16:02 +09:00
Kenny
f39f77d155 fix: correct error message for missing model config 2026-01-18 08:16:20 -05:00
Kenny
c910820cdb restore gitignore 2026-01-17 20:40:55 -05:00
Kenny
c698a5b888 fix: remove hardcoded model defaults from categories and agents
BREAKING CHANGE: Model resolution overhauled

- Created centralized model-resolver.ts with priority chain:
  userModel → inheritedModel → systemDefaultModel
- Removed model field from all 7 DEFAULT_CATEGORIES entries
- Removed DEFAULT_MODEL constants from 10 agents
- Removed singleton agent exports (use factories instead)
- Made CategoryConfigSchema.model optional
- CLI no longer generates model overrides
- Empty strings treated as unset (uses fallback)

Users must now:
1. Use factory functions (createOracleAgent, etc.) instead of singletons
2. Provide model explicitly or use systemDefaultModel
3. Configure category models explicitly if needed

Fixes model fallback bug where hardcoded defaults overrode
user's OpenCode configured model.
2026-01-17 12:51:03 -05:00
Kenny
0ce87085db
Merge pull request #870 from qwertystars/fix/mcp-oauth-autodetect
fix(mcp): disable OAuth auto-detection for built-in MCPs
2026-01-17 09:39:03 -05:00
justsisyphus
753fd809b5 refactor(orchestrator): enable parallel delegation by default
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
2026-01-17 22:04:55 +09:00
justsisyphus
6d99b5c1fc docs: regenerate hierarchical AGENTS.md with deep investigation
- Root: 181 lines with agent models, complexity hotspots, CI pipeline
- Hooks: 31 lifecycle hooks, execution order, patterns
- Tools: 20+ tools, LSP/AST-Grep specifics, registration
- Features: Background agents, Claude Code compat, skill MCP
- Agents: 10 agents with models, tool restrictions
- Shared: 43 utilities with usage patterns
- CLI: Commander.js entry, doctor checks, TUI framework

Generated via /init-deep with 12 parallel explore agents
2026-01-17 22:01:56 +09:00
justsisyphus
255f535a50 refactor(delegate-task): use empty array instead of null for skills parameter
- 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
2026-01-17 21:25:02 +09:00
justsisyphus
2206d68523 fix(momus): constrain reviewer to evaluate documentation, not design direction
Momus was rejecting plans by questioning implementation approaches instead
of reviewing documentation quality. Added explicit constraints:

- ABSOLUTE CONSTRAINT section: reviewer role, not designer
- MUST NOT question architecture/approach choices
- Self-check prompts to detect overstepping
- NOT Valid REJECT Reasons section
- Reinforced throughout: documentation quality vs design decisions
2026-01-17 21:25:02 +09:00
justsisyphus
b643dd4f19
chore: remove 1,152 lines of verified dead code (#874)
* chore(deps): remove unused dependencies

Removed @openauthjs/openauth, hono, open, and xdg-basedir - none are imported in src/

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* chore(cleanup): remove unused agent prompts and tool files

Deleted:
- src/agents/build-prompt.ts (exports never imported)
- src/agents/plan-prompt.ts (exports never imported)
- src/tools/ast-grep/napi.ts (never imported)
- src/tools/interactive-bash/types.ts (never imported)

Verified by: LSP FindReferences + explore agents

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* chore(hooks): remove unused comment-checker filters

Deleted entire filters/ directory:
- filters/bdd.ts
- filters/directive.ts
- filters/docstring.ts
- filters/shebang.ts
- filters/index.ts

Not used by main hook (cli.ts uses external binary instead)

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* chore(hooks): remove unused comment-checker output and constants

Deleted:
- output/formatter.ts
- output/xml-builder.ts
- output/index.ts
- constants.ts

All 0 external imports - migrated to external binary

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* chore(hooks): remove unused pruning subsystem

Deleted pruning subsystem (dependency order):
- pruning-purge-errors.ts
- pruning-storage.ts
- pruning-supersede.ts
- pruning-executor.ts

Not imported by main recovery hook

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* chore(hooks): remove unused createBackgroundCompactionHook export

Removed export from index.ts - never imported in src/index.ts

Verified by: LSP FindReferences (only 2 refs: definition + barrel export)

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

---------

Co-authored-by: justsisyphus <sisyphus-dev-ai@users.noreply.github.com>
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-01-17 21:12:55 +09:00
qwertystars
0ed1d183d4 fix(mcp): disable OAuth auto-detection for built-in MCPs
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)
2026-01-17 16:36:23 +05:30
YeonGyu-Kim
d13e8411f0
Add /ulw-loop command for ultrawork mode loop (#867)
* feat(ralph-loop): add ultrawork field to RalphLoopState

* feat(ralph-loop): persist ultrawork field in storage

* feat(ralph-loop): accept ultrawork option in startLoop

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* feat(ralph-loop): prepend ultrawork keyword when mode active

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* feat(ralph-loop): custom toast for ultrawork mode

* feat(ralph-loop): add /ulw-loop command for ultrawork mode

* fix(ralph-loop): add non-null assertion for type safety

* fix(ralph-loop): mirror argument parsing in ulw-loop handler

- Parse quoted prompts and strip flags from task text
- Support --max-iterations and --completion-promise options
- Add default prompt for empty input
- Fixes behavior inconsistency with /ralph-loop

---------

Co-authored-by: justsisyphus <sisyphus-dev-ai@users.noreply.github.com>
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-01-17 19:56:50 +09:00
justsisyphus
36b665ed89 docs(agents): regenerate hierarchical AGENTS.md with init-deep
- 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)
2026-01-17 19:16:49 +09:00
justsisyphus
5657c3aa28 fix(lsp): display diagnostics errors as error blocks in TUI
- 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>
2026-01-17 18:14:50 +09:00
justsisyphus
c433e7397e feat(skill-mcp): add auto-reconnect retry on "Not connected" errors
- 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>
2026-01-17 18:14:48 +09:00