YeonGyu-Kim
53403eeaad
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
11ea988c01
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
e87579b687
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
3f9b5e6f44
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
0425c75447
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
98dcf66de8
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
b1a9aa9f87
fix(grep): format files_with_matches output as clean file paths
2026-02-22 15:19:26 +09:00
YeonGyu-Kim
c52d6c06d4
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
f2c989662a
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
1a6ee9a8d5
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
7b66b0e9b9
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
434b5fbd5d
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
YeonGyu-Kim
6ab3dc35b0
fix(hashline-edit): align autocorrect, BOM/CRLF, and tool description with oh-my-pi
...
- Rewrite restoreOldWrappedLines to use oh-my-pi's span-scanning algorithm
- Add stripTrailingContinuationTokens and stripMergeOperatorChars helpers
- Fix detectLineEnding to use first-occurrence logic instead of any-match
- Fix applyAppend/applyPrepend to replace empty-line placeholder in empty files
- Enhance tool description with 7 critical rules, tag guidance, and anti-patterns
2026-02-22 14:40:18 +09:00
YeonGyu-Kim
3ba84d2107
feat(hashline-edit): add autocorrect, BOM/CRLF normalization, and file creation support
...
Implements key features from oh-my-pi to improve agent editing success rates:
- Autocorrect v1: single-line merge expansion, wrapped line restoration,
paired indent restoration (autocorrect-replacement-lines.ts)
- BOM/CRLF normalization: canonicalize on read, restore on write
(file-text-canonicalization.ts)
- Pre-validate all hashes before mutation (edit-ordering.ts)
- File creation via append/prepend operations (new types + executor logic)
- Modular refactoring: split edit-operations.ts into focused modules
(primitives, ordering, deduplication, diff, executor)
- Enhanced tool description with operation choice guide and recovery hints
All 50 tests pass. TypeScript clean. Build successful.
2026-02-22 14:13:59 +09:00
github-actions[bot]
ea3c0dc50d
release: v3.8.1
2026-02-22 03:37:21 +00:00
YeonGyu-Kim
9a5092c99a
Merge pull request #2035 from code-yeongyu/fix/background-agent-review-feedback
...
fix: address Oracle + Cubic review feedback for background-agent refactoring
2026-02-22 12:18:07 +09:00
YeonGyu-Kim
0be74980db
fix: address Oracle + Cubic review feedback for background-agent refactoring
...
- Revert getMessageDir to original join(MESSAGE_STORAGE, sessionID) behavior
- Fix dead subagentSessions.delete by capturing previousSessionID before tryFallbackRetry
- Add .unref() to process cleanup setTimeout to prevent 6s hang on Ctrl-C
- Add missing isUnstableAgent to fallback retry input mapping
- Fix process-cleanup tests to use exit listener instead of SIGINT at index 0
- Swap test filenames in compaction-aware-message-resolver to exercise skip logic correctly
2026-02-22 12:14:26 +09:00
YeonGyu-Kim
6e549c1681
Merge pull request #2034 from code-yeongyu/refactor/background-manager-extraction
...
Extract inline logic from BackgroundManager into focused modules
2026-02-22 12:09:00 +09:00
YeonGyu-Kim
cb49ab1d67
test(background-agent): add unit tests for extracted modules
...
Add 104 new tests across 4 test files:
- error-classifier.test.ts (80 tests): isRecord, isAbortedSessionError, getErrorText, extractErrorName, extractErrorMessage, getSessionErrorMessage
- fallback-retry-handler.test.ts (19 tests): retry logic, fallback chain, concurrency release, session abort, queue management
- process-cleanup.test.ts (7 tests): signal registration, multi-manager shutdown, cleanup on unregister
- compaction-aware-message-resolver.test.ts (13 tests): compaction agent detection, message resolution with temp dirs (pre-existing, verified)
Total background-agent tests: 161 -> 265 (104 new, 0 regressions)
2026-02-22 11:59:06 +09:00
YeonGyu-Kim
a4b841b929
refactor(background-agent): extract inline logic from manager.ts into focused modules
...
Extract 5 concerns from BackgroundManager into dedicated modules:
- error-classifier.ts: enhance with extractErrorName, extractErrorMessage, getSessionErrorMessage, isRecord
- fallback-retry-handler.ts: standalone tryFallbackRetry with full retry logic
- process-cleanup.ts: registerManagerForCleanup/unregisterManagerForCleanup
- compaction-aware-message-resolver.ts: isCompactionAgent/findNearestMessageExcludingCompaction
- Delete notification-builder.ts (duplicate of background-task-notification-template.ts)
Manager.ts method bodies now delegate to extracted modules.
Wire duration-formatter.ts and task-poller.ts (existing but unused).
manager.ts: 2036 -> 1647 LOC (19% reduction).
All 161 existing tests pass unchanged.
2026-02-22 11:58:57 +09:00
Cole Leavitt
eb1f34072b
fix: add proc.kill fallback when process group kill fails
2026-02-21 16:45:18 -07:00
Cole Leavitt
1af8020758
fix: kill process group on timeout and handle stdin EPIPE
...
- Use detached process group (non-Windows) + process.kill(-pid) to kill
the entire process tree, not just the outer shell wrapper
- Add proc.stdin error listener to absorb EPIPE when child exits before
stdin write completes
2026-02-21 16:45:00 -07:00
Cole Leavitt
2381400ff4
fix: handle signal-killed exit code and guard SIGTERM kill
...
- code ?? 0 → code ?? 1: signal-terminated processes return null exit code,
which was incorrectly coerced to 0 (success) instead of 1 (failure)
- wrap proc.kill(SIGTERM) in try/catch to match SIGKILL guard and prevent
EPERM/ESRCH from crashing on already-dead processes
2026-02-21 16:45:00 -07:00
Cole Leavitt
7ab4b7510f
fix: plug resource leaks and add hook command timeout
...
- LSP signal handlers: store refs, return unregister handle, call in stopAll()
- session-tools-store: add per-session deleteSessionTools(), wire into session.deleted
- executeHookCommand: add 30s timeout with SIGTERM→SIGKILL escalation
2026-02-21 16:44:59 -07:00
acamq
2f9ec22495
fix(notification): use permission.asked and main-session fallback
2026-02-21 16:42:23 -07:00
github-actions[bot]
2bb0a11df9
@coleleavitt has signed the CLA in code-yeongyu/oh-my-opencode#2029
2026-02-21 23:03:18 +00:00
acamq
aae4363b56
feat(notification): alert when agent asks questions or needs permission
2026-02-21 16:01:38 -07:00
YeonGyu-Kim
08ba7ca0c8
Merge branch 'origin/dev' into dev
...
Resolves conflicts in hashline-edit module:
- Accept Cubic-reviewed fixes from origin/dev
- Maintains: insert_before, insert_between, streaming formatters, strict validation
- Includes: hashline-chunk-formatter.ts extracted module
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-22 04:48:30 +09:00
YeonGyu-Kim
b5d148917e
Merge pull request #2026 from code-yeongyu/feat/hashline-edit-anchor-modes
...
feat(hashline-edit): add anchor insert modes and strict insert validation
2026-02-22 04:46:55 +09:00
YeonGyu-Kim
2615fd0d73
fix(hashline-edit): address Cubic review issues - boundary echo, chunking dedup, empty stream alignment
...
- Fix single-line anchor-echo stripping to trigger empty-insert validation
- Fix trailing boundary-echo stripping for boundary-only payloads
- Extract shared chunking logic to hashline-chunk-formatter
- Align empty stream/iterable handling with formatHashLines
- Add regression tests for all fixes
2026-02-22 03:54:31 +09:00
YeonGyu-Kim
8f424de41b
feat(hashline-edit): add anchor insert modes and strict insert validation
2026-02-22 03:38:47 +09:00
YeonGyu-Kim
c9f153a464
feat(hashline-edit): add anchor insert modes and strict insert validation
2026-02-22 03:38:04 +09:00
YeonGyu-Kim
b4399ffc8e
feat(sisyphus): add deep parallel delegation section to prompt
...
Add buildDeepParallelSection() function that injects guidance for non-Claude
models on parallel deep agent delegation:
- Detect when model is non-Claude and 'deep' category is available
- Inject instructions to decompose tasks and delegate to deep agents in parallel
- Give goals, not step-by-step instructions to deep agents
- Update Sisyphus prompt builder to pass model and call new function
This helps GPT-based Sisyphus instances leverage deep agents more effectively
for complex implementation tasks.
🤖 Generated with assistance of OhMyOpenCode
2026-02-22 03:20:57 +09:00
YeonGyu-Kim
3d6a60670b
docs: rewrite agent-model matching guide with developer personality metaphor
...
Completely restructure the documentation to explain model-agent matching
through the "Models Are Developers" lens:
- Add narrative sections on Sisyphus (sociable lead) and Hephaestus (deep specialist)
- Explain Claude vs GPT thinking differences (mechanics vs principles)
- Reorganize agent profiles by personality type (communicators, specialists, utilities)
- Simplify model families section
- Add "About Free-Tier Fallbacks" section
- Move example configuration to customization section
This makes the guide more conceptual and memorable for users customizing
agent models.
🤖 Generated with assistance of OhMyOpenCode
2026-02-22 03:20:36 +09:00
github-actions[bot]
497dc793ec
release: v3.8.0
2026-02-21 17:56:31 +00:00
YeonGyu-Kim
dc624d1ca3
ci(publish): isolate executor.test.ts to prevent mock contamination
2026-02-22 02:53:38 +09:00
YeonGyu-Kim
ad11fee2e3
fix(delegate-task): aggressive tool description to prevent missing category/subagent_type
...
Problem: Agents frequently omit both 'category' and 'subagent_type' parameters
when calling the task() tool, causing validation failures. The JSON Schema
marks both as optional, and LLMs follow schema structure over description text.
Solution (Option A): Add aggressive visual warnings and failure-mode examples
to the tool description:
- ⚠️ CRITICAL warning header
- COMMON MISTAKE example showing what will FAIL
- CORRECT examples for both category and subagent_type usage
- Clear explanation that ONE must be provided
Tests: All 153 existing tests pass (no behavior change, only prompt improvement)
2026-02-22 02:51:03 +09:00
YeonGyu-Kim
5b3ba726e9
ci: isolate executor.test.ts to prevent mock contamination in batch runs
2026-02-22 02:46:54 +09:00
YeonGyu-Kim
6517665d36
fix(test): use static imports and strategy-level spies in executor.test.ts for CI stability
2026-02-22 02:42:59 +09:00
YeonGyu-Kim
88cb360b87
fix(test): harden executor.test.ts mock isolation for CI batch runs
2026-02-22 02:31:27 +09:00
YeonGyu-Kim
9e4c27e0e1
fix(test): flush fake timer microtasks in todo continuation tests
2026-02-22 02:18:47 +09:00
YeonGyu-Kim
f1246ef110
refactor(hooks): remove beast-mode system integration
...
Remove the beast-mode-system hook and all transform wiring so Copilot-specific prompt injection is fully eliminated from the runtime pipeline.
2026-02-22 01:57:22 +09:00
YeonGyu-Kim
c97a0f3a2f
chore: regenerate JSON schema for runtime_fallback union type
2026-02-22 01:54:51 +09:00
YeonGyu-Kim
c1f17136b1
feat(config): disable runtime_fallback by default (opt-in)
2026-02-22 01:54:34 +09:00
YeonGyu-Kim
541302bc9f
docs(config): document runtime_fallback boolean shorthand
...
Add simple boolean configuration examples for runtime_fallback:
- true/false for quick enable/disable
- Object format for advanced configuration
2026-02-22 01:45:32 +09:00
YeonGyu-Kim
0bb599722e
feat(config): allow runtime_fallback to be configured as boolean
...
Enable simple boolean configuration for runtime_fallback:
- "runtime_fallback": true - Enable with defaults
- "runtime_fallback": false - Disable
- "runtime_fallback": { ... } - Advanced object config (existing)
Updated schema, event handler, chat-message handler, and session hooks
to handle both boolean and object formats.
2026-02-22 01:44:53 +09:00
github-actions[bot]
245d288fdd
@cruzanstx has signed the CLA in code-yeongyu/oh-my-opencode#2021
2026-02-21 15:09:31 +00:00
YeonGyu-Kim
111ae5ea5a
fix(hooks): use model cache availability with timeout for first-run cache creation
...
Replace fire-and-forget pattern with await + 10s timeout for initial
cache creation. Check model cache availability (not connected providers)
to properly coordinate with model-cache-warning hook.
Remove non-null assertion and add proper error logging.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-21 18:32:10 +09:00
YeonGyu-Kim
9fc825e748
fix(hooks): swap execution order to create cache before checking
...
Ensure cache creation runs before cache warning check to prevent false
'Model Cache Not Found' warnings on first run.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-21 18:32:01 +09:00
YeonGyu-Kim
600fe945e0
docs: reorganize configuration.md for better readability
...
- Add Table of Contents with clear navigation structure
- Reorganize sections into logical groups:
- Getting Started (File Locations, Quick Start Example)
- Core Concepts (Agents, Categories, Model Resolution)
- Task System (Background Tasks, Sisyphus Agent, Sisyphus Tasks)
- Features (Skills, Hooks, Commands, Integrations)
- Advanced (Runtime Fallback, Hashline Edit, Experimental)
- Reference (Environment Variables, Provider-Specific)
- Improve section headers and descriptions
- Add cross-references within document
- Maintain all original content without omissions
- Add clarifying comments to Quick Start Example
2026-02-21 17:23:28 +09:00