YeonGyu-Kim
5d1d87cc10
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]
e84fce3121
release: v3.8.1
2026-02-22 03:37:21 +00:00
YeonGyu-Kim
a8f0300ba6
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
d1e5bd63c1
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
ed43cd4c85
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
8d66d5641a
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
d53bcfbced
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
116f17ed11
fix: add proc.kill fallback when process group kill fails
2026-02-21 16:45:18 -07:00
Cole Leavitt
a31109bb07
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
91530234ec
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
6aa1e96f9e
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
f265e37cbc
fix(notification): use permission.asked and main-session fallback
2026-02-21 16:42:23 -07:00
github-actions[bot]
c1ee4c8650
@coleleavitt has signed the CLA in code-yeongyu/oh-my-opencode#2029
2026-02-21 23:03:18 +00:00
acamq
931c0cd101
feat(notification): alert when agent asks questions or needs permission
2026-02-21 16:01:38 -07:00
YeonGyu-Kim
ead4a1bcf5
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
07ec7be792
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
7e68690c70
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
22b4f465ab
feat(hashline-edit): add anchor insert modes and strict insert validation
2026-02-22 03:38:47 +09:00
YeonGyu-Kim
a39f183c31
feat(hashline-edit): add anchor insert modes and strict insert validation
2026-02-22 03:38:04 +09:00
YeonGyu-Kim
f7c5c0be35
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
022a351c32
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]
d6939229b3
release: v3.8.0
2026-02-21 17:56:31 +00:00
YeonGyu-Kim
0d76874632
ci(publish): isolate executor.test.ts to prevent mock contamination
2026-02-22 02:53:38 +09:00
YeonGyu-Kim
121e1cb879
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
30491d769b
ci: isolate executor.test.ts to prevent mock contamination in batch runs
2026-02-22 02:46:54 +09:00
YeonGyu-Kim
b6b970d9cd
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
dd9df78564
fix(test): harden executor.test.ts mock isolation for CI batch runs
2026-02-22 02:31:27 +09:00
YeonGyu-Kim
538b1005ef
fix(test): flush fake timer microtasks in todo continuation tests
2026-02-22 02:18:47 +09:00
YeonGyu-Kim
27d5379215
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
9b56b748ec
chore: regenerate JSON schema for runtime_fallback union type
2026-02-22 01:54:51 +09:00
YeonGyu-Kim
976798d0e3
feat(config): disable runtime_fallback by default (opt-in)
2026-02-22 01:54:34 +09:00
YeonGyu-Kim
309869a79f
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
9f10997987
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]
aff49ef488
@cruzanstx has signed the CLA in code-yeongyu/oh-my-opencode#2021
2026-02-21 15:09:31 +00:00
YeonGyu-Kim
1c7eb55f9c
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
f0204b0514
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
0b4ebc3538
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
YeonGyu-Kim
5a3fddf03b
docs: reorganize overview.md for better first-time user experience
...
- Add Quick Start section with clear installation link
- Add 'How It Works: Agent Orchestration' section linking to orchestration.md
- Add 'Agent Model Matching' section with JSON configuration examples
- Restructure content flow for better readability
- Add example JSON config to agent-model-matching.md
- Maintain original voice and strong opinions while improving organization
- All links now properly reference related docs
2026-02-21 17:14:15 +09:00
YeonGyu-Kim
8ae2f4fa39
docs: update README and installation guide
...
Update README with Anthropic blocking mention and revised model descriptions.
Fix markdown table alignment in both README and installation guide.
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-21 17:07:44 +09:00
YeonGyu-Kim
6a31e911d8
feat(hooks): add task-reminder hook for task tool usage tracking
...
Injects a reminder after 10 tool turns without task tool usage. Tracks
per-session counters and cleans up on session deletion.
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-21 17:07:39 +09:00
YeonGyu-Kim
865ced72e4
feat(hooks): add hashline-edit-diff-enhancer for Write tool diff metadata
...
Captures file content before/after Write tool execution and injects unified
diff into tool output metadata. TUI reads metadata.diff for rendering.
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-21 17:07:34 +09:00
YeonGyu-Kim
90dccfbdaf
feat(delegate-task): pass directory option through skill discovery
...
🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode )
2026-02-21 17:07:29 +09:00
YeonGyu-Kim
dc76e2cd11
docs: rewrite configuration.md for clarity and concision
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-21 17:05:30 +09:00
YeonGyu-Kim
dfb2f54cf8
docs: restore agent-model matching guide
...
Restore docs/guide/agent-model-matching.md that was accidentally deleted
in commit 880c5e3b (docs restructure). Updated broken links to point to
current documentation structure.
2026-02-21 17:05:11 +09:00
YeonGyu-Kim
1205e60fb9
fix: resolve publish blockers for v3.7.4→v3.8.0 release ( #2014 )
...
fix: resolve publish blockers for v3.7.4→v3.8.0 release
2026-02-21 16:43:19 +09:00
YeonGyu-Kim
66aebb1b59
fix: resolve ultrabrain review findings
...
- Remove runtime-fallback gate from session.status retry handler — runtime-fallback
has no session.status handler, so gating it causes retry signals to be silently dropped
- Fix background_output full_session arg description: default is true, not false
2026-02-21 16:40:15 +09:00
YeonGyu-Kim
fe415319e5
fix: resolve publish blockers for v3.7.4→v3.8.0 release
...
- Fix #1991 crash: optional chaining for task-history sessionID access
- Fix #1992 think-mode: add antigravity entries to HIGH_VARIANT_MAP
- Fix #1949 Copilot premium misattribution: use createInternalAgentTextPart
- Fix #1982 load_skills: pass directory to discoverSkills for project-level skills
- Fix command priority: sort scopePriority before .find(), project-first return
- Fix Google provider transform: apply in userFallbackModels path
- Fix ralph-loop TUI: optional chaining for event handler
- Fix runtime-fallback: unify dual fallback engines, remove HTTP 400 from retry,
fix pendingFallbackModel stuck state, add priority gate to skip model-fallback
when runtime-fallback is active
- Fix Prometheus task system: exempt from todowrite/todoread deny
- Fix background_output: default full_session to true
- Remove orphan hooks: hashline-edit-diff-enhancer (redundant with hashline_edit
built-in diff), task-reminder (dead code)
- Remove orphan config entries: 3 stale hook names from Zod schema
- Fix disabled_hooks schema: accept arbitrary strings for forward compatibility
- Register json-error-recovery hook in tool-guard pipeline
- Add disabled_hooks gating for question-label-truncator, task-resume-info,
claude-code-hooks
- Update test expectations to match new behavior
2026-02-21 16:24:18 +09:00
YeonGyu-Kim
ee5df1683e
refactor: remove slashcommand tool implementation
2026-02-21 14:38:18 +09:00
YeonGyu-Kim
552ad3a09c
refactor: remove unused 'message' variable from chat-message.ts
2026-02-21 14:31:42 +09:00
YeonGyu-Kim
2d79d64bb2
fix(build): correct JSON schema target from draft-07 to draft-7
...
Fix invalid target warning in schema generation.
Schema regenerated with correct draft-7 target.
2026-02-21 14:19:52 +09:00