273 Commits

Author SHA1 Message Date
YeonGyu-Kim
13196aedb7 fix: resolve post-rebase runtime fallback merge leftovers 2026-02-21 02:45:48 +09:00
Youngbin Kim
5a406cab9e refactor(runtime-fallback): extract auto-retry helper and fix provider constraint inconsistency
- Extract duplicated auto-retry logic (~40 lines each) from session.error and
  message.updated handlers into shared autoRetryWithFallback() helper
- Fix userFallbackModels path in model-resolution-pipeline to respect
  constraints.connectedProviders parameter instead of reading cache directly,
  matching the behavior of categoryDefaultModel and fallbackChain paths
2026-02-21 02:40:01 +09:00
um1ng
d9072b4a98 fix(runtime-fallback): address cubic AI review issues
- Add normalizeFallbackModels helper to centralize string/array normalization (P3)
- Export RuntimeFallbackConfig and FallbackModels types from config/index.ts
- Fix agent detection regex to use word boundaries for sessionID matching
- Improve tests to verify actual fallback switching logic (not just log paths)
- Add SessionCategoryRegistry cleanup in executeSyncTask on completion/error (P2)
- All 24 runtime-fallback tests pass, 115 delegate-task tests pass
2026-02-21 02:37:57 +09:00
um1ng
17d43672ad refactor(shared): add normalizeFallbackModels utility function
Add shared utility to normalize fallback_models config values.

Handles both single string and array inputs consistently.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-21 02:34:28 +09:00
Ultrawork Bot
7aafa13b21 feat(fallback_models): complete init-time and runtime integration
Implement full fallback_models support across all integration points:

1. Model Resolution Pipeline (src/shared/model-resolution-pipeline.ts)
   - Add userFallbackModels to ModelResolutionRequest
   - Process user fallback_models before hardcoded fallback chain
   - Support both connected provider and availability checking modes

2. Agent Utils (src/agents/utils.ts)
   - Update applyModelResolution to accept userFallbackModels
   - Inject fallback_models for all builtin agents (sisyphus, oracle, etc.)
   - Support both single string and array formats

3. Model Resolver (src/shared/model-resolver.ts)
   - Add userFallbackModels to ExtendedModelResolutionInput type
   - Pass through to resolveModelPipeline

4. Delegate Task Executor (src/tools/delegate-task/executor.ts)
   - Extract category fallback_models configuration
   - Pass to model resolution pipeline
   - Register session category for runtime-fallback hook

5. Session Category Registry (src/shared/session-category-registry.ts)
   - New module: maps sessionID -> category
   - Used by runtime-fallback to lookup category fallback_models
   - Auto-cleanup support

6. Runtime Fallback Hook (src/hooks/runtime-fallback/index.ts)
   - Check SessionCategoryRegistry first for category fallback_models
   - Fallback to agent-level configuration
   - Import and use SessionCategoryRegistry

Test Results:
- runtime-fallback: 24/24 tests passing
- model-resolver: 46/46 tests passing

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-21 02:30:01 +09:00
YeonGyu-Kim
2021080e7c
Merge pull request #1844 from liu-qingyuan/fix/tmux-split-defer-fifo
fix(tmux): prefer split-or-defer with FIFO deferred attach
2026-02-20 11:55:32 +09:00
YeonGyu-Kim
6ec6642e13
Merge pull request #1953 from maximharizanov/fix/copilot-initiator-attribution
fix(copilot): mark internal hook injections as agent-initiated
2026-02-20 11:54:01 +09:00
YeonGyu-Kim
52b2afb6b0 fix(config): promote hashline_edit to top-level flag
Move hashline_edit out of experimental so it is a stable top-level config with default-on runtime behavior and explicit disable support. Add migration and tests to preserve existing experimental.hashline_edit users without breaking configs.
2026-02-20 11:12:33 +09:00
liu-qingyuan
541f0d354d fix(tmux): prefer split-or-defer with FIFO deferred attach 2026-02-20 07:09:49 +08:00
Maxim Harizanov
a85f7efb1d fix(copilot): keep notifications visible and detect marker via message lookup 2026-02-19 13:17:02 +02:00
Maxim Harizanov
64e8e164aa fix(copilot): mark internal background notifications as agent-initiated 2026-02-19 13:17:02 +02:00
YeonGyu-Kim
dda5bfa3b9 test(models): sync librarian fallback expectation 2026-02-19 18:40:42 +09:00
YeonGyu-Kim
64b2d69036 feat(ultrawork): implement per-message model override with deferred DB retry strategy
- Add per-message ultrawork mode detection via keyword matching
- Implement deferred DB override strategy using microtask retry loop
- Fall back to setTimeout after 10 microtask retries for robustness
- Update agent configuration schema with ultrawork model/variant fields
- Integrate with chat.message hook to apply overrides on detection
- Add comprehensive tests for all override scenarios
- Generated schema includes ultrawork configuration

🤖 Generated with assistance of OhMyOpenCode (https://github.com/code-yeongyu/oh-my-opencode)
2026-02-19 18:40:42 +09:00
YeonGyu-Kim
02bb5d43cc refactor(models): expand provider listings for robust fuzzy matching
Add alternative providers to free-tier and cross-provider models:
- k2p5: add friendli as alternative to kimi-for-coding
- kimi-k2.5-free, minimax-m2.5-free, big-pickle, gpt-5-nano: add opencode-zen-abuse
- grok-code-fast-1: add venice as alternative to github-copilot
- glm-5: add opencode as alternative to zai-coding-plan
2026-02-19 18:40:42 +09:00
YeonGyu-Kim
8c19a7b7f8 refactor(atlas): remove gemini-3-pro from fallback chain 2026-02-19 18:40:42 +09:00
YeonGyu-Kim
da561118ce refactor(multimodal-looker): reorder fallback to k2p5 → kimi-free → gemini-flash → gpt-5.2 → glm-4.6v 2026-02-19 18:40:42 +09:00
YeonGyu-Kim
29d85bb63d refactor(explore): add minimax-m2.5-free as #2 fallback after grok-code-fast-1 2026-02-19 18:40:42 +09:00
YeonGyu-Kim
b7c6391bd5 refactor(librarian): switch fallback to minimax-m2.5-free → gemini-3-flash → big-pickle 2026-02-19 18:40:42 +09:00
YeonGyu-Kim
c8eb0dbae3 refactor(models): upgrade zai-coding-plan default from glm-4.7 to glm-5 2026-02-19 18:40:42 +09:00
YeonGyu-Kim
86a1bfa493 feat(prometheus): add GPT-5.2 optimized prompt with model-based routing
- Create gpt.ts with XML-tagged, principle-driven prompt (Codex plan mode style)
- Add getPrometheusPrompt() routing: GPT models → GPT prompt, others → default
- Promote gpt-5.2 (high) to #2 in prometheus fallback chain
- Follow Atlas GPT variant pattern (isGptModel detection)
2026-02-19 18:40:42 +09:00
YeonGyu-Kim
bd2e23584b docs: update AGENTS.md metadata
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
2026-02-19 10:46:40 +09:00
YeonGyu-Kim
6bf365595f refactor: replace opencode/glm-4.7-free with opencode/big-pickle model
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-18 21:10:21 +09:00
YeonGyu-Kim
096db59399 fix(run): inherit main-session tool permissions for continuation prompts 2026-02-18 21:10:21 +09:00
YeonGyu-Kim
a60a153d19 refactor(hooks): rename sisyphus-gpt-hephaestus-reminder to no-sisyphus-gpt
Shorter hook name, disableable via disabled_hooks config, migration added
for backward compatibility. Also forces agent switch to Hephaestus on
Sisyphus + GPT detection. Docs updated with new hook name.
2026-02-18 16:33:16 +09:00
YeonGyu-Kim
96ff1e00cc chore: upgrade claude-sonnet-4-5 to claude-sonnet-4-6 across codebase 2026-02-18 15:51:24 +09:00
YeonGyu-Kim
462e2ec2b0 refactor: remove 3 orphaned files and prefix unused parameter 2026-02-17 14:09:12 +09:00
YeonGyu-Kim
aac79f03b5 docs: regenerate all AGENTS.md files from comprehensive codebase exploration
- Fired 33 parallel explore agents across all major directories
- Analyzed 1164 TS files, 133k LOC, 41 hooks, 26 tools, 11 agents, 18 features
- Regenerated 13 AGENTS.md files with 905 total lines
- Root: plugin architecture, initialization flow, 7 OpenCode hook handlers
- src/: entry point orchestration, hook composition pipeline
- agents/: 11 agent inventory with tool restrictions and factory patterns
- hooks/: 41 hooks organized by 5 tiers, key complex hooks documented
- tools/: 26 tools across 14 directories, delegation categories
- features/: 18 modules mapped by complexity (HIGH/MEDIUM/LOW)
- shared/: 101 utilities in 13 categories, model resolution pipeline
- config/: 22 schema files, Zod v4 validation system
- cli/: 5 commands, doctor checks, model fallback system
- mcp/: 3-tier MCP system architecture
- plugin-handlers/: 6-phase config loading pipeline
- claude-code-hooks/: CC settings.json compatibility layer
- claude-tasks/: task schema + file-based persistence

🤖 Generated with assistance of oh-my-opencode
2026-02-17 11:17:01 +09:00
YeonGyu-Kim
d786691260 fix: read anthropic 1m flag from live model cache state 2026-02-17 10:51:01 +09:00
YeonGyu-Kim
363016681b test: cover model-cache and env fallback context limits 2026-02-17 10:51:01 +09:00
YeonGyu-Kim
b444899153 fix: use model cache context flag for runtime context limits 2026-02-17 10:51:01 +09:00
YeonGyu-Kim
8e115c7f9d fix: export fallback availability from traced module 2026-02-17 10:47:09 +09:00
YeonGyu-Kim
ca06ce134f fix: add fallback resolution warnings for unavailable models 2026-02-17 10:29:48 +09:00
YeonGyu-Kim
17da22704e fix: size main pane using configured layout percentage
Main pane resize now uses main_pane_size instead of a hardcoded 50 percent fallback so post-split layout remains stable and predictable.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-17 03:40:46 +09:00
YeonGyu-Kim
b02721463e refactor: route status porcelain map parsing through line parser 2026-02-17 03:29:10 +09:00
YeonGyu-Kim
1f31a3d8f1 test: add dedicated status porcelain line parser with coverage 2026-02-17 03:29:01 +09:00
YeonGyu-Kim
324d2c1f0c
Merge branch 'dev' into fix/1671-tmux-layout 2026-02-17 01:58:59 +09:00
YeonGyu-Kim
7bb03702c9
Merge branch 'dev' into fix/1671-tmux-layout 2026-02-17 01:54:08 +09:00
YeonGyu-Kim
ccbeea96c1
Merge branch 'dev' into fix/1679-copilot-fallback 2026-02-17 01:54:05 +09:00
YeonGyu-Kim
24789334e4 fix: detect AppData directory paths without trailing separators 2026-02-17 01:45:14 +09:00
YeonGyu-Kim
3a2f886357 fix: apply tmux layout config during pane spawning (#1671) 2026-02-17 01:36:01 +09:00
YeonGyu-Kim
5ae45c8c8e fix: use correct project directory for Windows subagents (#1718) 2026-02-17 01:29:25 +09:00
YeonGyu-Kim
dab99531e4 fix: handle all model versions in normalizeModelName for fallback chains (#1679) 2026-02-17 01:27:10 +09:00
YeonGyu-Kim
a1086f26d8 refactor: remove dead file task-id-validator.ts and unused isModelAvailable from model-name-matcher 2026-02-16 22:33:44 +09:00
YeonGyu-Kim
169c07ebf8 refactor: remove unused imports from injector, tool-result-storage-sdk, session-notification-utils, model-resolver 2026-02-16 22:11:05 +09:00
YeonGyu-Kim
560d13dc70 Normalize agent name comparisons to handle display name keys
Hooks and tools now use getAgentConfigKey() to resolve agent names (which may
be display names like 'Atlas (Plan Executor)') to lowercase config keys
before comparison.

- session-utils: orchestrator check uses getAgentConfigKey
- atlas event-handler: boulder agent matching uses config keys
- category-skill-reminder: target agent check uses config keys
- todo-continuation-enforcer: skipAgents comparison normalized
- subagent-resolver: resolves 'metis' -> 'Metis (Plan Consultant)' for lookup
2026-02-16 20:43:09 +09:00
YeonGyu-Kim
c71a80a86c Revert name fields from agent configs, add getAgentConfigKey reverse lookup
Remove crash-causing name fields from 6 agent configs (sisyphus, hephaestus,
atlas, metis, momus, prometheus). The name field approach breaks opencode
because Agent.get(agent.name) uses name as lookup key.

Add getAgentConfigKey() to agent-display-names.ts for resolving display names
back to lowercase config keys (e.g. 'Atlas (Plan Executor)' -> 'atlas').
2026-02-16 20:42:45 +09:00
YeonGyu-Kim
91734ded77 Update agent display names: add Hephaestus (Deep Agent), rename Atlas to (Plan Executor), rename Momus to (Plan Critic) 2026-02-16 20:12:24 +09:00
YeonGyu-Kim
1a6810535c refactor: create normalizeSDKResponse helper and replace scattered patterns across 37 files 2026-02-16 18:20:19 +09:00
YeonGyu-Kim
ed84b431fc fix: add retry-once logic to isSqliteBackend for startup race condition 2026-02-16 16:52:25 +09:00
YeonGyu-Kim
49ed32308b fix: reduce HTTP API timeout from 30s to 10s 2026-02-16 16:52:23 +09:00