YeonGyu-Kim
b47b034209
chore(assets): regenerate JSON schema
...
Regenerate oh-my-opencode.schema.json after config export changes
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:43:19 +09:00
YeonGyu-Kim
a37a6044dc
refactor(config): remove unused barrel exports
...
Clean up unused re-exports from config barrel file
Remove 14 unused schema exports identified by knip analysis
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:43:17 +09:00
YeonGyu-Kim
7a01035736
refactor(agents/prometheus): remove unused barrel exports
...
Clean up unused re-exports from prometheus agents barrel file
Remove 9 unused exports identified by knip analysis
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:43:16 +09:00
YeonGyu-Kim
f1076d978e
refactor(agents/atlas): remove unused barrel exports
...
Clean up unused re-exports from atlas agents barrel file
Remove 12 unused exports identified by knip analysis
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:43:14 +09:00
YeonGyu-Kim
3a5aaf6488
refactor(agents): remove unused barrel exports
...
Clean up unused re-exports from agents barrel file
Remove 24 unused exports identified by knip analysis
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:43:12 +09:00
YeonGyu-Kim
830dcf8d2f
refactor(features): remove empty barrel files
...
Delete 2 empty barrel index.ts files:
- claude-tasks/index.ts
- mcp-oauth/index.ts
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:43:11 +09:00
YeonGyu-Kim
96d51418d6
refactor(hooks): remove dead hook files
...
Delete 3 unused hook files:
- hashline-edit-diff-enhancer/index.ts (and test file)
- session-recovery/recover-empty-content-message.ts
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:43:08 +09:00
YeonGyu-Kim
b3a6aaa843
refactor(shared): remove dead utility files
...
Delete 4 unused utility files:
- models-json-cache-reader.ts
- open-code-client-accessors.ts
- open-code-client-shapes.ts
- provider-models-cache-model-reader.ts
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:43:06 +09:00
YeonGyu-Kim
1f62fa5b2a
refactor(tools/call-omo-agent): remove dead code submodules
...
Delete 3 unused files in call-omo-agent module:
- session-completion-poller.ts
- session-message-output-extractor.ts
- subagent-session-prompter.ts
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:43:04 +09:00
YeonGyu-Kim
2428a46e6d
refactor(features/background-agent): remove dead code submodules
...
Delete 15 unused files in background-agent module:
- background-task-completer.ts
- format-duration.ts
- message-dir.ts
- parent-session-context-resolver.ts
- parent-session-notifier.ts (and its test file)
- result-handler-context.ts
- result-handler.ts
- session-output-validator.ts
- session-task-cleanup.ts
- session-todo-checker.ts
- spawner/background-session-creator.ts
- spawner/concurrency-key-from-launch-input.ts
- spawner/spawner-context.ts
- spawner/tmux-callback-invoker.ts
Update index.ts barrel and manager.ts/spawner.ts imports
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:43:01 +09:00
YeonGyu-Kim
b709fa8e83
fix(plugin/hooks): remove unnecessary as any cast
...
Remove as any from modelCacheState parameter
Structural typing works without explicit cast
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:42:45 +09:00
YeonGyu-Kim
0dc5f56af4
fix(shared): fix optional chaining on modelItem
...
Change modelItem.id to modelItem?.id to handle null values
Prevents TypeError when modelItem is null in provider-models cache
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:42:43 +09:00
YeonGyu-Kim
cd6c9cb5dc
fix(cli/run): replace as any with Record type cast
...
Cast session body to Record<string, unknown> instead of as any
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:42:40 +09:00
YeonGyu-Kim
e5aa08b865
fix(tools/delegate-task): replace as any with Record type cast
...
Cast session body to Record<string, unknown> instead of as any
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:42:38 +09:00
YeonGyu-Kim
db15f96cd8
fix(tools/call-omo-agent): replace as any with SessionWithPromptAsync type
...
Add SessionWithPromptAsync local type for promptAsync access
Remove as any cast from session.promptAsync call
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:42:37 +09:00
YeonGyu-Kim
ff0e9ac557
fix(tools/call-omo-agent): replace as any with SDKMessage interface
...
Add SDKMessage local interface for message type safety
Replace any lambda params and message casts with SDKMessage
Remove eslint-disable comments for no-explicit-any
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:42:34 +09:00
YeonGyu-Kim
07113ebe94
fix(features/task-toast-manager): replace as any with ClientWithTui type
...
Add ClientWithTui local type for tui.showToast access
Remove 2 as any casts and eslint-disable comments
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:42:32 +09:00
YeonGyu-Kim
2d3d993eb6
fix(hooks/shared): replace as any with proper Record type cast
...
Cast pluginConfig.agents to Record type with proper structure
Remove eslint-disable comment for no-explicit-any
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:42:30 +09:00
YeonGyu-Kim
a82f4ee86a
fix(hooks/thinking-block-validator): replace as any with typed interfaces
...
Add ThinkingPart and MessageInfoExtended local interfaces
Replace 3 as any casts with proper unknown-to-typed casts
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:42:28 +09:00
YeonGyu-Kim
0cbc6b5410
fix(hooks/session-recovery): replace @ts-expect-error with proper type cast
...
Add ClientWithPromptAsync local type to avoid @ts-expect-error
Cast client to proper type before calling session.promptAsync
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:42:26 +09:00
YeonGyu-Kim
ac3a9fd272
fix(hooks/anthropic-context-window-limit-recovery): remove @ts-ignore comments and fix parameter types
...
Remove @ts-ignore and eslint-disable comments from executor.ts and recovery-hook.ts
- Change client: any to client: Client with proper import
- Rename experimental to _experimental for unused parameter
- Remove @ts-ignore for ctx.client casts
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-23 02:42:24 +09:00
github-actions[bot]
41880f8ffb
@imadal1n has signed the CLA in code-yeongyu/oh-my-opencode#2045
2026-02-22 10:57:45 +00:00
YeonGyu-Kim
35ab9b19c8
fix: deny todo tools for prometheus and sisyphus-junior when task_system enabled
...
Amp-Thread-ID: https://ampcode.com/threads/T-019c848f-b2a8-7037-9eb5-a258df14b683
Co-authored-by: Amp <amp@ampcode.com >
2026-02-22 17:58:42 +09:00
YeonGyu-Kim
6245e46885
feat(hooks): add Gemini-optimized ultrawork message with intent gate
...
Create dedicated Gemini ultrawork variant that enforces intent
classification as mandatory Step 0 before any action. Routes Gemini
models to the new variant via source-detector priority chain
(planner > GPT > Gemini > default). Includes anti-optimism checkpoint
and tool-call mandate sections tuned for Gemini's eager behavior.
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-22 17:40:38 +09:00
YeonGyu-Kim
76da95116e
feat(agents): add Gemini intent gate enforcement overlay for Sisyphus
...
Counter Gemini's tendency to skip Phase 0 intent classification by
injecting a mandatory self-check gate before tool calls. Includes
intent type classification, anti-skip mechanism, and common mistake
table showing wrong vs correct behavior per intent type.
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-22 17:40:20 +09:00
YeonGyu-Kim
9933c6654f
feat(model-fallback): disable model fallback retry by default
...
Model fallback is now opt-in via `model_fallback: true` in plugin config,
matching the runtime-fallback pattern. Prevents unexpected automatic model
switching on API errors unless explicitly enabled.
2026-02-22 17:25:04 +09:00
YeonGyu-Kim
2e845c8d99
feat(hooks): wire pluginConfig to preemptive-compaction hook factory
2026-02-22 17:19:46 +09:00
YeonGyu-Kim
bcf7fff9b9
feat(recovery-strategy): apply compaction model override in context window recovery
2026-02-22 17:19:43 +09:00
YeonGyu-Kim
2d069ce4cc
feat(preemptive-compaction): apply compaction model override from agent config
2026-02-22 17:19:39 +09:00
YeonGyu-Kim
09314dba1a
feat(schema): add compaction model and variant override configuration
2026-02-22 17:19:35 +09:00
YeonGyu-Kim
32a838ad3c
feat(hooks): add compaction-model-resolver utility for session agent model lookup
2026-02-22 17:19:31 +09:00
YeonGyu-Kim
edf4d522d1
Merge pull request #2041 from code-yeongyu/fix/rewrite-overmocked-tests
...
refactor(tests): rewrite 5 over-mocked test files to test real behavior
2026-02-22 16:54:13 +09:00
YeonGyu-Kim
0bae7ec4fc
chore(tests): remove duplicate test in background-update-check (cubic feedback)
2026-02-22 16:51:04 +09:00
YeonGyu-Kim
7e05bd2b8e
refactor(tests): rewrite 5 over-mocked test files to test real behavior
...
- formatter.test.ts: use dynamic imports with cache-busting to avoid mock pollution from runner.test.ts; test real format output instead of dispatch mocking
- hook.test.ts: rewrite with proper branch coverage (7 tests), add success/guard/subagent paths
- background-update-check.test.ts: rewrite with 10 tests covering all branches (early returns, pinned versions, auto-update success/failure)
- directory-agents-injector/injector.test.ts: replace finder/storage mocks with real filesystem + temp directories, verify actual AGENTS.md injection content
- directory-readme-injector/injector.test.ts: same pattern as agents-injector but for README.md, verifies root inclusion behavior
2026-02-22 16:43:56 +09:00
github-actions[bot]
ffa2a255d9
release: v3.8.3
2026-02-22 06:46:51 +00:00
YeonGyu-Kim
07e8a7c570
feat(write-existing-file-guard): allow writes outside session directory
...
Remove blocking logic that prevented writes to files outside the
session directory. The guard now only applies to files within the
session directory, allowing free writes to external paths.
- Remove OUTSIDE_SESSION_MESSAGE constant
- Update test to expect outside writes to be allowed
- Add early return for paths outside session directory
- Keep isPathInsideDirectory for session boundary check
TDD cycle:
1. RED: Update test expectation
2. GREEN: Implement early return for outside paths
3. REFACTOR: Clean up unused constants
2026-02-22 15:43:19 +09:00
github-actions[bot]
d0b18787ba
release: v3.8.2
2026-02-22 06:35:05 +00:00
YeonGyu-Kim
4d7b98d9f2
bun
2026-02-22 15:30:59 +09:00
YeonGyu-Kim
a3e4f904a6
refactor(background-agent): wire session-idle-event-handler into manager, add unit tests
...
The extracted handleSessionIdleBackgroundEvent was never imported by
manager.ts — dead code from incomplete refactoring (d53bcfbc ). Replace
the inline session.idle handler (58 LOC) with a call to the extracted
function, remove unused MIN_IDLE_TIME_MS import, and add 13 unit tests
covering all edge cases.
2026-02-22 15:30:40 +09:00
YeonGyu-Kim
c0636e5b0c
feat(agents,hooks): wire Sisyphus Gemini overlays and add Gemini verification reminder
...
Sisyphus: inject TOOL_CALL_MANDATE after intent gate, append delegation
and verification override sections for Gemini models.
Atlas hook: add VERIFICATION_REMINDER_GEMINI with stronger language -
'EXTREMELY SUSPICIOUS', explicit 'NOT reasoning, TOOL CALLS', and
consequence-driven framing for Gemini's optimistic tendencies.
2026-02-22 15:30:40 +09:00
YeonGyu-Kim
49e885d81d
feat(agents): wire Gemini prompt routing into Sisyphus-Junior, Atlas, Prometheus
...
Add 'gemini' to prompt source types and route Gemini models to new
Gemini-optimized prompts via isGeminiModel detection. Update barrel
exports for all 3 agent modules. All existing tests pass.
2026-02-22 15:30:40 +09:00
YeonGyu-Kim
bf33e6f651
feat(agents): add isGeminiModel detection function with TDD
...
Detects Gemini models via:
- Provider prefixes: google/, google-vertex/
- GitHub Copilot: github-copilot/gemini-*
- Model name: gemini-* (for proxied providers like litellm)
Follows existing isGptModel pattern. All 16 tests pass.
2026-02-22 15:30:40 +09:00
YeonGyu-Kim
da13a2f673
feat(agents): add Gemini-optimized prompts for Sisyphus, Sisyphus-Junior, Prometheus, Atlas
...
Gemini models are aggressively optimistic and avoid tool calls in favor of
internal reasoning. These prompts counter that with:
- TOOL_CALL_MANDATE sections forcing actual tool usage
- Anti-optimism checkpoints before claiming completion
- Stronger delegation enforcement (Gemini prefers doing work itself)
- Aggressive verification language (subagent results are 'EXTREMELY SUSPICIOUS')
- Mandatory thinking checkpoints in Prometheus (prevents jumping to conclusions)
- Scope discipline reminders (creativity → implementation quality, not scope creep)
2026-02-22 15:30:40 +09:00
YeonGyu-Kim
02aff32b0c
Merge pull request #2039 from code-yeongyu/fix/grep-formatter-files-mode
...
fix(grep): format files_with_matches output as clean file paths
2026-02-22 15:26:09 +09:00
YeonGyu-Kim
c806a35e49
fix(grep): format files_with_matches output as clean file paths
2026-02-22 15:19:26 +09:00
YeonGyu-Kim
b175c11b35
Merge pull request #2009 from JiHongKim98/fix/ripgrep-cpu-throttle
...
fix(tools): throttle ripgrep CPU usage with thread limits and concurrency control
2026-02-22 15:09:26 +09:00
YeonGyu-Kim
7b55cbab94
Merge pull request #2030 from acamq/feature/agent-input-notifications
...
feat(notification): alert when agent asks questions or needs permission
2026-02-22 15:09:24 +09:00
YeonGyu-Kim
6904cba061
Merge pull request #2029 from coleleavitt/fix/plug-resource-leaks
...
fix: plug resource leaks and add hook command timeout
2026-02-22 15:07:02 +09:00
YeonGyu-Kim
ac81e1d7cd
fix(hashline-edit): correct offset advancement and fuzzy index mapping in merge expand
...
- Track matchedLen separately for stripped continuation token matches
- Map fuzzy index back to original string position via character-by-character
scan that skips operator chars, fixing positional correctness
2026-02-22 14:50:59 +09:00
YeonGyu-Kim
9390f98f01
fix(hashline-edit): integrate continuation/merge helpers into expand logic and strengthen tool description
...
- maybeExpandSingleLineMerge now uses stripTrailingContinuationTokens and
stripMergeOperatorChars as fallback matching strategies
- Add 'refs interpreted against last read' atomicity clause to tool description
- Add 'output tool calls only; no prose' rule to tool description
2026-02-22 14:46:59 +09:00