YeonGyu-Kim
61531ca26c
feat(comment-checker): run checks for apply_patch edits
2026-02-10 13:58:34 +09:00
YeonGyu-Kim
2fd847d88d
refactor: fix import path and update test fixtures
...
- Fix import path in opencode-skill-loader/loader.ts
- Update executor.test.ts fixtures
2026-02-10 11:41:45 +09:00
YeonGyu-Kim
44675fb57f
fix(atlas): allow boulder continuation for Sisyphus sessions
...
When boulderState.agent is not explicitly set (defaults to 'atlas'),
allow continuation for sessions where the last agent is 'sisyphus'.
This fixes the issue where boulder continuation was skipped when
Sisyphus took over the conversation after boulder creation.
2026-02-10 11:41:44 +09:00
YeonGyu-Kim
20d009964d
docs: refresh all 13 hierarchical AGENTS.md files with current codebase state
2026-02-09 14:29:53 +09:00
YeonGyu-Kim
fecc6b8605
fix: remove task-continuation-enforcer references after dev merge
...
Dev removed task-continuation-enforcer entirely. Remove all remaining
references from plugin hooks, event handler, tool-execute-before, and
config schema to align with origin/dev.
2026-02-08 21:11:07 +09:00
YeonGyu-Kim
46a30cd7ec
Merge remote-tracking branch 'origin/dev' into refactor/modular-code-enforcement
...
# Conflicts:
# src/agents/utils.ts
# src/config/schema.ts
# src/features/background-agent/spawner/background-session-creator.ts
# src/features/background-agent/spawner/parent-directory-resolver.ts
# src/features/background-agent/spawner/tmux-callback-invoker.ts
# src/features/tmux-subagent/manager.ts
# src/hooks/interactive-bash-session/index.ts
# src/hooks/task-continuation-enforcer.test.ts
# src/index.ts
# src/plugin-handlers/config-handler.test.ts
# src/tools/background-task/tools.ts
# src/tools/call-omo-agent/tools.ts
# src/tools/delegate-task/executor.ts
2026-02-08 19:05:41 +09:00
YeonGyu-Kim
caf08af88b
fix: resolve test isolation failures in task-continuation-enforcer and config-handler tests
...
- Change BackgroundManager import to type-only to prevent global process
listener pollution across parallel test files
- Replace real BackgroundManager construction with createMockBackgroundManager
- Fix nested spyOn in config-handler tests to reuse beforeEach spy via
mockResolvedValue instead of re-spying inside test bodies
2026-02-08 18:03:08 +09:00
YeonGyu-Kim
9377c7eba9
refactor(hooks/interactive-bash-session): split monolithic hook into modules
...
- Convert index.ts to clean barrel export
- Extract hook implementation to hook.ts
- Extract terminal parsing to parser.ts
- Extract state management to state-manager.ts
- Reduce index.ts from ~276 to ~5 lines
- Follow modular code architecture principles
🤖 Generated with assistance of OhMyOpenCode
2026-02-08 17:51:48 +09:00
YeonGyu-Kim
1f8f7b592b
docs(AGENTS): update line counts and stats across all AGENTS.md files
...
- Update main AGENTS.md with current file sizes
- Update complexity hotspot line counts
- Update agent count from 11 to 32 files
- Update CLI utility count to 70
- Update test file count from 100+ to 163
🤖 Generated with assistance of OhMyOpenCode
2026-02-08 17:51:30 +09:00
YeonGyu-Kim
c6fafd6624
fix: remove task-continuation-enforcer and restore task tool titles
2026-02-08 17:49:22 +09:00
YeonGyu-Kim
f3f6ba47fe
merge: integrate origin/dev into modular-enforcement branch
...
Resolves all merge conflicts, preserving our split module structure
while integrating all dev changes:
- Custom agent summaries support (parseRegisteredAgentSummaries)
- Background notification queue (enqueueNotificationForParent)
- Atlas shared git-worktree module (collectGitDiffStats, formatFileChanges)
- Ralph-loop withTimeout + DEFAULT_API_TIMEOUT=5000
- Session recovery assistant_prefill_unsupported error type
- Atlas agentOverrides forwarding
- Config handler plan model demotion (buildPlanDemoteConfig)
- Delegate-task agentOverrides, promptSyncWithModelSuggestionRetry, variant
- LSP init timeout + stale init detection
- isPlanFamily function + task-continuation-enforcer hook
- Handoff command
2026-02-08 17:34:47 +09:00
YeonGyu-Kim
a5af7e95c0
Merge pull request #1536 from code-yeongyu/feat/task-continuation-enforcer
...
feat(hooks): implement task-continuation-enforcer
2026-02-08 16:43:42 +09:00
YeonGyu-Kim
582e0ead27
fix: revert load_skills default and enforce via prompts instead
...
Revert .default([]) on load_skills schema back to required, restore the runtime error for missing load_skills, and add explicit load_skills=[] to all task() examples in agent prompts that were missing it.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-08 16:31:02 +09:00
YeonGyu-Kim
e4583668c0
refactor(hooks): split session-notification and unstable-agent-babysitter
...
Extract notification and babysitter logic:
- session-notification-formatting.ts, session-notification-scheduler.ts
- session-notification-sender.ts, session-todo-status.ts
- task-message-analyzer.ts: message analysis for babysitter hook
2026-02-08 16:23:56 +09:00
YeonGyu-Kim
2d22a54b55
refactor(rules-injector): split finder.ts into rule discovery modules
...
Extract rule finding logic:
- project-root-finder.ts: project root detection
- rule-file-finder.ts: rule file discovery
- rule-file-scanner.ts: filesystem scanning for rules
- rule-distance.ts: rule-to-file distance calculation
2026-02-08 16:22:33 +09:00
YeonGyu-Kim
c2efdb4334
refactor(interactive-bash-session): extract tracker and command parser
...
Split hook into focused modules:
- interactive-bash-session-tracker.ts: session tracking logic
- tmux-command-parser.ts: tmux command parsing utilities
2026-02-08 16:22:25 +09:00
YeonGyu-Kim
d3a3f0c3a6
refactor(claude-code-hooks): extract handlers and session state
...
Split hook into per-concern modules:
- handlers/ directory for individual hook handlers
- session-hook-state.ts: session-level hook state management
2026-02-08 16:22:17 +09:00
YeonGyu-Kim
0f145b2e40
refactor(ralph-loop): split hook into state controller and event handler modules
...
Extract Ralph loop lifecycle management:
- loop-state-controller.ts: start/stop/recovery state machine
- ralph-loop-event-handler.ts: event handling logic
- continuation-prompt-builder.ts, continuation-prompt-injector.ts
- completion-promise-detector.ts, loop-session-recovery.ts
- message-storage-directory.ts
2026-02-08 16:22:10 +09:00
YeonGyu-Kim
161d6e4159
refactor(context-window-recovery): split executor and storage into focused modules
...
Extract recovery strategies and storage management:
- recovery-strategy.ts, aggressive-truncation-strategy.ts
- summarize-retry-strategy.ts, target-token-truncation.ts
- empty-content-recovery.ts, message-builder.ts
- tool-result-storage.ts, storage-paths.ts, state.ts
- client.ts, tool-part-types.ts
2026-02-08 16:22:01 +09:00
YeonGyu-Kim
32193dc10d
Merge pull request #1658 from code-yeongyu/fix-1233
...
fix: detect completion tags in ralph/ULW loop (#1233 )
2026-02-08 15:51:16 +09:00
YeonGyu-Kim
c7122b4127
fix: resolve all test failures and Cubic review issues
...
- Fix unstable-agent-babysitter: add promptAsync to test mock
- Fix claude-code-mcp-loader: isolate tests from user home configs
- Fix npm-dist-tags: encode packageName for scoped packages
- Fix agent-builder: clone source to prevent shared object mutation
- Fix add-plugin-to-opencode-config: handle JSONC with leading comments
- Fix auth-plugins/add-provider-config: error on parse failures
- Fix bun-install: clear timeout on completion
- Fix git-diff-stats: include untracked files in diff summary
2026-02-08 15:31:32 +09:00
YeonGyu-Kim
119e18c810
refactor: wave 2 - split atlas, auto-update-checker, session-recovery, todo-enforcer, background-task hooks
...
- Extract atlas/ into 15 focused modules (hook, event handler, tool policies, types, etc.)
- Split auto-update-checker into checker/ and hook/ subdirectories with single-purpose files
- Decompose session-recovery into separate recovery strategy files per error type
- Extract todo-continuation-enforcer from monolith to directory with dedicated modules
- Split background-task/tools.ts into individual tool creator files
- Extract command-executor, tmux-utils into focused sub-modules
- Split config/schema.ts into domain-specific schema files
- Decompose cli/config-manager.ts into focused modules
- Rollback skill-mcp-manager, model-availability, index.ts splits that broke tests
- Fix all import path depths for moved files (../../ -> ../../../)
- Add explicit type annotations to resolve TS7006 implicit any errors
Typecheck: 0 errors
Tests: 2359 pass, 5 fail (all pre-existing)
2026-02-08 15:01:42 +09:00
YeonGyu-Kim
676ff513fa
fix: detect completion tags in ralph/ULW loop to stop iteration ( #1233 )
2026-02-08 14:50:36 +09:00
YeonGyu-Kim
4738379ad7
fix(lsp): reset safety block on server restart to prevent permanent blocks ( #1366 )
2026-02-08 14:34:11 +09:00
YeonGyu-Kim
d8e7e4f170
refactor: extract git worktree parser from atlas hook
2026-02-08 14:01:31 +09:00
YeonGyu-Kim
29155ec7bc
refactor: wave 1 - extract leaf modules, rename catch-all files, split index.ts hooks
...
- Split 25+ index.ts files into hook.ts + extracted modules
- Rename all catch-all utils.ts/helpers.ts to domain-specific names
- Split src/tools/lsp/ into ~15 focused modules
- Split src/tools/delegate-task/ into ~18 focused modules
- Separate shared types from implementation
- 155 files changed, 60+ new files created
- All typecheck clean, 61 tests pass
2026-02-08 13:57:26 +09:00
YeonGyu-Kim
6ce482668b
refactor: extract git worktree parser from atlas hook
2026-02-08 13:30:00 +09:00
YeonGyu-Kim
7abefcca1f
feat: auto-recover from Anthropic assistant message prefill errors
...
When Anthropic models reject requests with 'This model does not support
assistant message prefill', detect this as a recoverable error type and
automatically send 'Continue' once to resume the conversation.
Extends session-recovery hook with new 'assistant_prefill_unsupported'
error type. The existing session.error handler in index.ts already sends
'continue' after successful recovery, so no additional logic needed.
2026-02-08 13:16:16 +09:00
YeonGyu-Kim
b2661be833
test: fix ralph-loop tests by adding promptAsync to mock
...
The ralph-loop hook calls promptAsync in the implementation, but the
test mock only defined prompt(). Added promptAsync with identical
behavior to make tests pass.
- All 38 ralph-loop tests now pass
- Total test suite: 2361 pass, 3 fail (unrelated to this change)
2026-02-08 02:41:29 +09:00
Peïo Thibault
414cecd7df
test: add promptAsync mocks to all test files for promptAsync migration
2026-02-07 14:41:46 +01:00
Peïo Thibault
6451b212f8
test(todo-continuation): add promptAsync mocks for migrated hook
2026-02-07 13:51:28 +01:00
Peïo Thibault
46e02b9457
fix(hooks): switch session.prompt to promptAsync in all hooks
2026-02-07 13:42:24 +01:00
YeonGyu-Kim
d84a1c9e95
Merge pull request #1618 from code-yeongyu/fix/594-user-prompt-submit-fires-once
...
fix(hooks): fire UserPromptSubmitHooks on every prompt, not just first (#594 )
2026-02-07 20:09:19 +09:00
YeonGyu-Kim
d1659152bc
fix(hooks): fire UserPromptSubmitHooks on every prompt, not just first ( #594 )
2026-02-07 20:03:52 +09:00
YeonGyu-Kim
1cb8f8bee6
Merge pull request #1584 from code-yeongyu/fix/441-matcher-hooks-undefined
...
fix(hooks): add defensive null check for matcher.hooks to prevent Windows crash (#441 )
2026-02-07 20:01:28 +09:00
YeonGyu-Kim
f3540a9ea3
Merge pull request #1614 from code-yeongyu/fix/1501-ulw-plan-loop
...
fix(ultrawork): widen isPlannerAgent matching to prevent ULW infinite plan loop (#1501 )
2026-02-07 19:59:41 +09:00
YeonGyu-Kim
0eddd28a95
fix: skip ultrawork injection for plan-like agents ( #1501 )
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-07 19:52:47 +09:00
YeonGyu-Kim
ae4e113c7e
Merge pull request #1610 from code-yeongyu/fix/96-compaction-dedup-recovery
...
fix: wire deduplication into compaction recovery for prompt-too-long errors (#96 )
2026-02-07 19:28:49 +09:00
YeonGyu-Kim
403457f9e4
fix: rewrite dedup recovery test to mock module instead of filesystem
2026-02-07 19:26:06 +09:00
YeonGyu-Kim
5e5c091356
Merge pull request #1611 from code-yeongyu/fix/1481-1483-compaction
...
fix: prevent compaction from inserting arbitrary constraints and preserve todo state (#1481 , #1483 )
2026-02-07 19:23:50 +09:00
YeonGyu-Kim
1df025ad44
fix: use lazy storage dir resolution to fix CI test flakiness
2026-02-07 19:23:24 +09:00
YeonGyu-Kim
844ac26e2a
fix: wire deduplication into compaction recovery for prompt-too-long errors ( #96 )
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-07 19:18:12 +09:00
YeonGyu-Kim
2727f0f429
refactor: extract context window recovery hook
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-07 19:17:55 +09:00
YeonGyu-Kim
3947084cc5
fix: add compaction todo preserver hook
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-07 19:15:46 +09:00
YeonGyu-Kim
67f701cd9e
fix: avoid invented compaction constraints
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-07 19:15:41 +09:00
YeonGyu-Kim
6e2f3b1f50
Merge pull request #1593 from code-yeongyu/fix/prometheus-plan-overwrite
...
fix: allow Prometheus to overwrite .sisyphus/*.md plan files
2026-02-07 19:04:47 +09:00
YeonGyu-Kim
9a8f03462f
fix: normalize resolvedPath before startsWith check
...
Addresses cubic review feedback — resolvedPath may contain
non-canonical segments when filePath is absolute, causing
the startsWith check against sisyphusRoot to fail.
2026-02-07 19:01:28 +09:00
YeonGyu-Kim
f980e256dd
fix: boulder continuation now respects /stop-continuation guard
...
Add isContinuationStopped check to atlas hook's session.idle handler
so boulder continuation stops when user runs /stop-continuation.
Previously, todo continuation and session recovery checked the guard,
but boulder continuation did not — causing work to resume after stop.
Fixes #1575
2026-02-07 18:50:13 +09:00
YeonGyu-Kim
38169523c4
fix: anchor .sisyphus path check to ctx.directory to prevent false positives
...
- Uses path.join(ctx.directory, '.sisyphus') + sep as prefix instead of loose .includes()
- Prevents false positive when .sisyphus exists in parent directories outside project root
- Adds test for the false positive case (cubic review feedback)
2026-02-07 18:49:16 +09:00
YeonGyu-Kim
eb5cc873ea
fix: trim whitespace from tool names to prevent invalid tool calls
...
Some models (e.g. kimi-k2.5) return tool names with leading spaces
like ' delegate_task', causing tool matching to fail.
Add .trim() in transformToolName() and defensive trim in claude-code-hooks.
Fixes #1568
2026-02-07 13:12:47 +09:00