Commit Graph

281 Commits

Author SHA1 Message Date
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 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
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 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 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
YeonGyu-Kim 08c5c5e766 Merge pull request #1473 from code-yeongyu/feature/task-global-storage
feat(tasks): migrate storage to global config dir with ULTRAWORK_TASK_LIST_ID support
2026-02-04 15:56:31 +09:00
YeonGyu-Kim c01308872f fix(tasks): use path.isAbsolute() for cross-platform path detection
Fixes Cubic AI review finding: startsWith('/') doesn't work on Windows
where absolute paths use drive letters (e.g., C:\).
2026-02-04 15:37:12 +09:00
YeonGyu-Kim e2660e3103 docs(tasks): update AGENTS.md for global storage architecture 2026-02-04 15:15:08 +09:00
YeonGyu-Kim b8f0be87ee feat(tasks): migrate storage to global config dir with ULTRAWORK_TASK_LIST_ID support 2026-02-04 15:08:06 +09:00
YeonGyu-Kim 71096f9178 fix(skill-loader): respect disabledSkills in async skill resolution 2026-02-04 15:03:57 +09:00
YeonGyu-Kim e55d965c39 test(skill-loader): fix test isolation by resetting skill content
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-04 14:51:56 +09:00
YeonGyu-Kim 2e3aafc7dd fix(skill-loader): deterministic collision handling for skill names
- Separate directory and file entries, process directories first
- Use Map to deduplicate skills by name (first-wins)
- Directory skills (SKILL.md, {dir}.md) take precedence over file skills (*.md)
- Add test for collision scenario

Addresses Oracle P2 review feedback from PR #1254
2026-02-04 13:52:06 +09:00
YeonGyu-Kim b775ae7cf2 Merge pull request #1370 from misyuari/fix/refactor-skills
fix: update skill resolution to support disabled skills functionality
2026-02-04 13:47:26 +09:00
YeonGyu-Kim 4e31fae7e6 Merge pull request #1254 from LeekJay/fix/nested-skill-discovery
feat(skill-loader): support nested skill directories
2026-02-04 13:40:03 +09:00
YeonGyu-Kim 2b5244a6d8 fix(background-agent): abort session on model suggestion retry failure
When promptWithModelSuggestionRetry() fails, the session was not being aborted, causing the polling loop to wait forever for an idle state. Added session.abort() calls in startTask() and resume() catch blocks.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-04 13:36:45 +09:00
Muhammad Noor Misyuari 0be288494c fix: update tests to reflect changes in skill resolution for async handling and disabled skills 2026-02-03 15:19:08 +07:00
Muhammad Noor Misyuari c67f8bde43 fix: implement disabled skills functionality in skill resolution 2026-02-03 15:19:01 +07:00
YeonGyu-Kim ce482f82b4 fix(background-cancel): skip notification when user explicitly cancels tasks
- Add skipNotification option to cancelTask method
- Apply skipNotification to background_cancel tool
- Prevents unwanted notifications when user cancels via tool
2026-02-03 16:56:40 +09:00
YeonGyu-Kim a0a73971e1 docs(agents): regenerate AGENTS.md hierarchy with init-deep
- Root: preserve 3 CRITICAL sections (PR target, OpenCode source, English-only)
- Update all 10 AGENTS.md files with current codebase analysis
- Add complexity hotspots, agent models, anti-patterns
- Sync line counts and structure with actual implementation
2026-02-03 16:21:31 +09:00
YeonGyu-Kim 7930d87812 refactor(background-agent): optimize lifecycle and simplify tools (#1411)
* refactor(background-agent): optimize cache timer lifecycle and result handling

Ultraworked with Sisyphus

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* refactor(background-task): simplify tool implementation and expand test coverage

Ultraworked with Sisyphus

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* fix(background-task): fix BackgroundCancel tool parameter handling

Correct parameter names and types in BackgroundCancel tool to match actual usage patterns. Add comprehensive test coverage for parameter validation.

---------

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-03 12:11:45 +09:00
YeonGyu-Kim 817fc208b8 fix(prompts): add missing run_in_background and load_skills params to examples
All delegate_task examples now include required parameters to prevent
model confusion about parameter omission.

Fixes #1403
2026-02-03 10:50:26 +09:00
YeonGyu-Kim 9cab46f917 refactor(background-agent): optimize cache timer lifecycle and result handling
Improve cache timer management in background agent manager and update result handler to properly handle cache state transitions
2026-02-02 21:07:20 +09:00
YeonGyu-Kim 0541c58cb3 feat(task): refactor to Claude Code style individual tools
- Split unified Task tool into individual tools (TaskCreate, TaskGet, TaskList, TaskUpdate)
- Update schema to Claude Code field names (subject, blockedBy, blocks, activeForm, owner, metadata)
- Add OpenCode Todo API sync layer (todo-sync.ts)
- Implement Todo sync on task create/update for continuation enforcement
- Add comprehensive tests for all tools (96 tests total)
- Update AGENTS.md documentation

Breaking Changes:
- Field names changed: title→subject, dependsOn→blockedBy, open→pending
- Tool names changed: task→task_create, task_get, task_list, task_update

Closes: todo-continuation-enforcer now sees Task-created items
2026-02-02 13:13:06 +09:00