YeonGyu-Kim
55c73dcd37
fix(background-agent): rename getCompletedTasks to getNonRunningTasks for semantic accuracy
2026-02-09 11:45:20 +09:00
YeonGyu-Kim
5cc22a2043
fix(background-agent): align getCompletedTasks filter with state manager semantics
2026-02-09 11:36:29 +09:00
YeonGyu-Kim
120a599cd5
fix: address Cubic background-agent issues — task status filter, array response handling, error mapping, concurrency key, duration fallback, output validation
2026-02-09 11:19:39 +09:00
YeonGyu-Kim
f7d47dfbda
fix: address Cubic CLI and agent issues — URL encode, JSONC leading comments, config clone, untracked files, parse error handling, cache path, message-dir dedup
2026-02-09 11:17:51 +09:00
YeonGyu-Kim
6cb7b634b8
Merge remote-tracking branch 'origin/dev' into refactor/modular-code-enforcement
...
# Conflicts:
# src/features/background-agent/manager.ts
# src/features/background-agent/spawner.ts
# src/features/tmux-subagent/manager.ts
# src/shared/model-availability.test.ts
# src/shared/model-availability.ts
# src/shared/model-resolution-pipeline.ts
# src/tools/delegate-task/executor.ts
2026-02-08 21:43:57 +09:00
YeonGyu-Kim
c686de4282
fix: integrate dev CLAUDE_CODE_TASK_LIST_ID env var support
2026-02-08 21:23:21 +09:00
YeonGyu-Kim
0e6f72888e
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
996503b1f4
feat(shared/git-worktree, features): add git diff stats utility and infrastructure improvements
...
- Add collect-git-diff-stats utility for git worktree operations
- Add comprehensive test coverage for git diff stats collection
- Enhance claude-tasks storage module
- Improve tmux subagent manager initialization
- Support better git-based task tracking and analysis
🤖 Generated with assistance of OhMyOpenCode
2026-02-08 18:41:45 +09:00
YeonGyu-Kim
7dedfe3f12
feat(cli/run, background-agent): manage session permissions for CLI and background tasks
...
- Deny question prompts in CLI run mode since there's no TUI to answer them
- Inherit parent session permission rules in background task sessions
- Force deny questions while preserving other parent permission settings
- Add test coverage for permission inheritance behavior
🤖 Generated with assistance of OhMyOpenCode
2026-02-08 18:41:26 +09:00
YeonGyu-Kim
acfb8e079f
fix: restore permission config in background session creation
...
Add permission: [{ permission: 'question', action: 'deny', pattern: '*' }]
to client.session.create() call to prevent background sessions from
asking questions that go unanswered, causing hangs.
2026-02-08 18:39:36 +09:00
YeonGyu-Kim
6736ab43b7
feat(claude-tasks): add CLAUDE_CODE_TASK_LIST_ID env var support
...
- Export session-storage from claude-tasks/index.ts
- Add CLAUDE_CODE_TASK_LIST_ID fallback support in storage.ts
- Add comprehensive tests for CLAUDE_CODE_TASK_LIST_ID handling
- Prefer ULTRAWORK_TASK_LIST_ID, fall back to CLAUDE_CODE_TASK_LIST_ID
- Both env vars are properly sanitized for path safety
🤖 Generated with assistance of OhMyOpenCode
2026-02-08 17:52:16 +09:00
YeonGyu-Kim
c40631d611
refactor(tmux-subagent): split manager.ts into focused modules
...
- Extract polling logic to polling-manager.ts
- Extract session cleanup to session-cleaner.ts
- Extract session spawning to session-spawner.ts
- Extract cleanup logic to manager-cleanup.ts
- Reduce manager.ts from ~495 to ~345 lines
- Follow modular code architecture (200 LOC limit)
🤖 Generated with assistance of OhMyOpenCode
2026-02-08 17:51:38 +09:00
YeonGyu-Kim
022dc167de
Fix Issue #1428 : Deny bash permission for Prometheus agent
...
- Change PROMETHEUS_PERMISSION bash from 'allow' to 'deny' to prevent unrestricted bash execution
- Prometheus is a read-only planner and should not execute bash commands
- The prometheus-md-only hook provides additional blocking as backup
2026-02-08 17:37:44 +09:00
YeonGyu-Kim
83595df63f
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
justsisyphus
b846f4ab6a
feat(commands): add /handoff builtin command with programmatic context synthesis
...
Port handoff concept from ampcode as a builtin command that extracts
detailed context summary from current session for seamless continuation
in a new session. Enhanced with programmatic context gathering:
- Add HANDOFF_TEMPLATE with phased extraction (gather programmatic
context via session_read/todoread/git, extract context, format, instruct)
- Gather concrete data: session history, todo state, git diff/status
- Include compaction-style sections: USER REQUESTS (AS-IS) verbatim,
EXPLICIT CONSTRAINTS verbatim, plus all original handoff sections
- Register handoff in BuiltinCommandName type and command definitions
- Include session context variables (SESSION_ID, TIMESTAMP, ARGUMENTS)
- Add 14 tests covering registration, template content, programmatic
gathering, compaction-style sections, and emoji-free constraint
2026-02-08 16:38:53 +09:00
YeonGyu-Kim
4c46e79311
refactor(builtin-skills): extract git-master metadata to separate module
...
Split prompt-heavy git-master.ts:
- git-master-skill-metadata.ts: skill metadata constants (name, desc, agent)
2026-02-08 16:21:50 +09:00
YeonGyu-Kim
2dfc4c6f8e
refactor(mcp-oauth): extract OAuth authorization flow from provider.ts
...
Split provider.ts into focused modules:
- oauth-authorization-flow.ts: OAuth2 authorization code flow logic
2026-02-08 16:21:43 +09:00
YeonGyu-Kim
94b2d94b2c
refactor(claude-code-plugin-loader): split loader.ts into per-type loaders
...
Extract plugin component loading into dedicated modules:
- discovery.ts: plugin directory detection
- plugin-path-resolver.ts: path resolution logic
- agent-loader.ts, command-loader.ts, hook-loader.ts
- mcp-server-loader.ts, skill-loader.ts
2026-02-08 16:21:37 +09:00
YeonGyu-Kim
1bdfd409e9
refactor(skill-mcp-manager): split manager.ts into connection and client modules
...
Extract MCP client lifecycle management:
- connection.ts: getOrCreateClientWithRetry logic
- stdio-client.ts, http-client.ts: transport-specific creation
- oauth-handler.ts: OAuth token management
- cleanup.ts: session and global cleanup
- connection-type.ts: connection type detection
2026-02-08 16:21:28 +09:00
YeonGyu-Kim
2beb29f326
refactor(opencode-skill-loader): split loader and merger into focused modules
...
Extract skill loading pipeline into single-responsibility modules:
- skill-discovery.ts, skill-directory-loader.ts, skill-deduplication.ts
- loaded-skill-from-path.ts, loaded-skill-template-extractor.ts
- skill-template-resolver.ts, skill-definition-record.ts
- git-master-template-injection.ts, allowed-tools-parser.ts
- skill-mcp-config.ts, skill-resolution-options.ts
- merger/ directory for skill merging logic
2026-02-08 16:21:19 +09:00
YeonGyu-Kim
964c8f61fd
refactor(tmux-subagent): split manager and decision-engine into focused modules
...
Extract session lifecycle, polling, grid planning, and event handling:
- polling.ts: session polling controller with stability detection
- event-handlers.ts: session created/deleted handlers
- grid-planning.ts, spawn-action-decider.ts, spawn-target-finder.ts
- session-status-parser.ts, session-message-count.ts
- cleanup.ts, polling-constants.ts, tmux-grid-constants.ts
2026-02-08 16:21:04 +09:00
YeonGyu-Kim
fdcee08460
refactor(background-agent): split manager.ts into focused modules
...
Extract 30+ single-responsibility modules from manager.ts (1556 LOC):
- task lifecycle: task-starter, task-completer, task-canceller, task-resumer
- task queries: task-queries, task-poller, task-queue-processor
- notifications: notification-builder, notification-tracker, parent-session-notifier
- session handling: session-validator, session-output-validator, session-todo-checker
- spawner: spawner/ directory with focused spawn modules
- utilities: duration-formatter, error-classifier, message-storage-locator
- result handling: result-handler-context, background-task-completer
- shutdown: background-manager-shutdown, process-signal
2026-02-08 16:20:52 +09:00
YeonGyu-Kim
3ec0a4f5a4
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
1b48aceb3b
Merge pull request #1657 from code-yeongyu/fix-1366-lsp-unblock
...
fix(lsp): reset safety block on server restart (#1366 )
2026-02-08 15:13:30 +09:00
YeonGyu-Kim
f4cb1c21c9
fix(lsp): reset safety block on server restart to prevent permanent blocks ( #1366 )
2026-02-08 14:34:11 +09:00
YeonGyu-Kim
df03300211
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
d81b3cf2b8
fix(background-agent): serialize parent notifications ( #1582 )
2026-02-08 13:05:06 +09:00
YeonGyu-Kim
d4c545d789
Merge pull request #1620 from potb/acp-json-error
...
fix: switch session.prompt() to promptAsync() — delegate broken in ACP
2026-02-07 22:52:39 +09:00
Peïo Thibault
7636e45d61
test: add promptAsync mocks to all test files for promptAsync migration
2026-02-07 14:41:46 +01:00
YeonGyu-Kim
6221f241d6
fix(mcp-loader): also read ~/.claude/.mcp.json for CLI-managed user MCP config
...
PR #1616 replaced ~/.claude/.mcp.json with ~/.claude.json but both paths
should be read:
- ~/.claude.json: user/local scope MCP settings (mcpServers field)
- ~/.claude/.mcp.json: CLI-managed MCP servers (claude mcp add)
Fixes #814
2026-02-07 22:29:51 +09:00
Peïo Thibault
49b979b6b7
fix(background-agent): switch session.prompt to promptAsync
2026-02-07 13:42:20 +01:00
YeonGyu-Kim
e08214e627
Merge pull request #1616 from code-yeongyu/fix/814-user-mcp-config
...
fix(mcp-loader): read user-level MCP config from ~/.claude.json (#814 )
2026-02-07 20:09:53 +09:00
YeonGyu-Kim
41ec7abaa4
test: isolate user-level MCP config test from real homedir
2026-02-07 20:06:58 +09:00
YeonGyu-Kim
35376157cc
Merge pull request #1615 from code-yeongyu/fix/1563-browser-provider-gating
...
fix(skill-loader): filter discovered skills by browserProvider (#1563 )
2026-02-07 20:04:08 +09:00
YeonGyu-Kim
c73ae7a6fd
fix(mcp-loader): read user-level MCP config from ~/.claude.json ( #814 )
2026-02-07 20:01:16 +09:00
YeonGyu-Kim
a8c70689e1
fix(skill-loader): filter discovered skills by browserProvider ( #1563 )
2026-02-07 20:01:15 +09:00
YeonGyu-Kim
dd6c076a80
Merge pull request #1608 from code-yeongyu/fix/114-cascade-cancel
...
fix: cascade cancel descendant tasks when parent session is deleted (#114 )
2026-02-07 19:16:18 +09:00
YeonGyu-Kim
0c5a62a9f3
fix: cascade cancel descendant tasks when parent session is deleted ( #114 )
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-07 19:10:49 +09:00
YeonGyu-Kim
ceab17c255
fix: allow string values for commit_footer config ( #919 )
2026-02-07 19:04:34 +09:00
YeonGyu-Kim
b30a131690
refactor: migrate delegate_task to task tool with metadata fixes
...
- Rename delegate_task tool to task across codebase (100 files)
- Update model references: claude-opus-4-6 → 4-5, gpt-5.3-codex → 5.2-codex
- Add tool-metadata-store to restore metadata overwritten by fromPlugin()
- Add session ID polling for BackgroundManager task sessions
- Await async ctx.metadata() calls in tool executors
- Add ses_ prefix guard to getMessageDir for performance
- Harden BackgroundManager with idle deferral and error handling
- Fix duplicate task key in sisyphus-junior test object literals
- Fix unawaited showOutputToUser in ast_grep_replace
- Fix background=true → run_in_background=true in ultrawork prompt
- Fix duplicate task/task references in docs and comments
2026-02-06 21:35:30 +09:00
YeonGyu-Kim
5254880e09
Regenerate AGENTS.md hierarchy with latest codebase state
2026-02-06 19:07:12 +09:00
YeonGyu-Kim
14a320f507
docs: fix stale references in AGENTS.md files
2026-02-06 17:20:19 +09:00
YeonGyu-Kim
836075841b
chore: update claude-opus-4-5 references to claude-opus-4-6 (excludes antigravity models)
2026-02-06 15:09:07 +09:00
YeonGyu-Kim
0383ead19c
Merge pull request #1477 from kaizen403/fix/boulder-agent-tracking
...
fix: track agent in boulder state to fix session continuation (fixes #927 )
2026-02-05 17:41:05 +09:00
YeonGyu-Kim
b6804fecb8
fix(background-agent): gracefully handle aborted parent session in notifyParentSession
...
When the main session is aborted while background tasks are running,
notifyParentSession() would attempt to call session.messages() and
session.prompt() on the aborted parent session, causing exceptions
that could crash the TUI.
- Add isAbortedSessionError() helper to detect abort-related errors
- Add abort check in session.messages() catch block with early return
- Add abort check in session.prompt() catch block with early return
- Add test case covering aborted parent session scenario
Fixes TUI crash when aborting main session with running background tasks.
2026-02-05 11:31:54 +09:00
YeonGyu-Kim
30830c1c93
fix: properly restore env vars using delete when originally undefined
2026-02-05 09:45:35 +09:00
YeonGyu-Kim
f5c43b19be
Fix skill discovery priority and deduplication tests
2026-02-05 09:45:35 +09:00
YeonGyu-Kim
eb21f2a243
fix: correct skill priority order and improve test coverage
...
- Changed priority order to: opencode-project > opencode > project > user
(OpenCode Global skills now take precedence over legacy Claude project skills)
- Updated JSDoc comments to reflect correct priority order
- Fixed test to use actual discoverSkills() for deduplication verification
- Changed test assertion from 'source' to 'scope' (correct field name)
2026-02-05 09:45:35 +09:00
YeonGyu-Kim
2905fd69e6
fix: include custom skills in delegate_task load_skills resolution
...
- Add deduplicateSkills() to prevent duplicate skill entries from multiple sources
- Priority order: opencode-project > project > opencode > user
- Add tests for deduplication behavior
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-02-05 09:45:35 +09:00
Rishi Vhavle
5b89d1d5d6
fix: track agent in boulder state to fix session continuation ( fixes #927 )
...
Add 'agent' field to BoulderState to track which agent (atlas) should
resume on session continuation. Previously, when user typed 'continue'
after interruption, Prometheus (planner) resumed instead of Sisyphus
(executor), causing all delegate_task calls to get READ-ONLY mode.
Changes:
- Add optional 'agent' field to BoulderState interface
- Update createBoulderState() to accept agent parameter
- Set agent='atlas' when /start-work creates boulder.json
- Use stored agent on boulder continuation (defaults to 'atlas')
- Add tests for new agent field functionality
2026-02-04 21:21:57 +05:30