Commit Graph

2334 Commits

Author SHA1 Message Date
YeonGyu-Kim
3d5754089e feat(task): add team_name routing to task_get tool
- Add optional team_name parameter to task_get
- Route to team-namespaced storage when team_name provided
- Preserve existing behavior when team_name absent
- Add tests for both team and regular task retrieval
- Part of Task 12 (2/4 files complete)
2026-02-14 13:33:30 +09:00
YeonGyu-Kim
eabc20de9e feat(task): add team_name routing to task_create tool
- Add optional team_name parameter to task_create
- Route to team-namespaced storage when team_name provided
- Preserve existing behavior when team_name absent
- Add tests for both team and regular task creation
- Part of Task 12 (1/4 files complete)
2026-02-14 13:33:30 +09:00
YeonGyu-Kim
48441b831c feat(agent-teams): implement teammate control tools (force_kill, process_shutdown_approved)
- Add force_kill_teammate tool for immediate teammate removal
- Add process_shutdown_approved tool for graceful shutdown processing
- Both tools validate team-lead protection and teammate status
- Comprehensive test coverage with 8 test cases
- Task 10/25 complete
2026-02-14 13:33:30 +09:00
YeonGyu-Kim
88be194805 feat(agent-teams): add read_inbox and read_config tools
- Add simple read_inbox tool as thin wrapper over readInbox store function
- Add simple read_config tool as thin wrapper over readTeamConfig store function
- Both tools support basic filtering (unread_only for inbox, none for config)
- Comprehensive test coverage with TDD approach
- Tools are separate from registered read_inbox/read_config (which have authorization)
2026-02-14 13:33:30 +09:00
YeonGyu-Kim
4a38e09a33 feat(agent-teams): add send_message tool with 5 message types
- Implement discriminated union for 5 message types
- message: requires recipient + content
- broadcast: sends to all teammates
- shutdown_request: requires recipient
- shutdown_response: requires request_id + approve
- plan_approval_response: requires request_id + approve
- 14 comprehensive tests with unique team names
- Extract inbox-message-sender.ts for message delivery logic

Task 8/25 complete
2026-02-14 13:33:30 +09:00
YeonGyu-Kim
aa83b05f1f feat(agent-teams): add team_create and team_delete tools
- Implement tool factories for team lifecycle management
- team_create: Creates team with initial config, returns team info
- team_delete: Deletes team if no active teammates
- Name validation: ^[A-Za-z0-9_-]+$, max 64 chars
- 9 comprehensive tests with unique team names per test

Task 7/25 complete
2026-02-14 13:33:30 +09:00
YeonGyu-Kim
d67138575c feat(agent-teams): add team task store with namespace routing
- Implement team-namespaced task storage at ~/.sisyphus/tasks/{teamName}/
- Follow existing task storage patterns from features/claude-tasks/storage.ts
- Import TaskObjectSchema from tools/task/types.ts (no duplication)
- Export getTeamTaskPath for test access
- 16 comprehensive tests with temp directory isolation

Task 6/25 complete
2026-02-14 13:33:30 +09:00
YeonGyu-Kim
4c52bf32cd feat(agent-teams): add inbox store with atomic message operations
- Implement atomic message append/read/mark-read operations
- Messages stored per-agent at ~/.sisyphus/teams/{team}/inboxes/{agent}.json
- Use acquireLock for concurrent access safety
- Inbox append is atomic (read-append-write under lock)
- 2 comprehensive tests with locking verification

Task 5/25 complete
2026-02-14 13:33:30 +09:00
YeonGyu-Kim
f0ae1131de feat(agent-teams): add team config store with atomic writes
- Implement CRUD operations for team config.json
- Use atomic writes with temp+rename pattern
- Reuse acquireLock for concurrent access safety
- Team config lives at ~/.sisyphus/teams/{teamName}/config.json
- deleteTeamDir removes team + inbox + task dirs recursively
- Fix timestamp: use ISO string instead of number
- 4 comprehensive tests with locking verification

Task 4/25 complete
2026-02-14 13:33:30 +09:00
YeonGyu-Kim
d65912bc63 feat(agent-teams): add team, message, and task Zod schemas
- TeamConfigSchema with lead/teammate members
- TeamMemberSchema and TeamTeammateMemberSchema
- InboxMessageSchema with 5 message types
- SendMessageInputSchema as discriminated union
- Import TaskObjectSchema from tools/task/types.ts
- 39 comprehensive tests covering all schemas

Task 3/25 complete
2026-02-14 13:33:30 +09:00
YeonGyu-Kim
3e2e4e29df feat(agent-teams): add team path resolution utilities
- Implement user-global paths (~/.sisyphus/teams/, ~/.sisyphus/tasks/)
- Reuse sanitizePathSegment for team name sanitization
- Cross-platform home directory resolution
- Comprehensive test coverage with sanitization tests

Task 2/25 complete
2026-02-14 13:33:30 +09:00
YeonGyu-Kim
5e06db0c60 feat(config): add experimental.team_system flag
- Add team_system boolean flag to ExperimentalConfigSchema
- Defaults to false
- Enables experimental agent teams toolset
- Added comprehensive BDD-style tests

Task 1/25 complete
2026-02-14 13:33:30 +09:00
YeonGyu-Kim
4282de139b feat(agent-teams): gate agent-teams tools behind experimental.agent_teams flag 2026-02-14 13:33:30 +09:00
Nguyen Khac Trung Kien
386521d185 test(agent-teams): set explicit lead agent in delegation consistency test 2026-02-14 13:33:30 +09:00
Nguyen Khac Trung Kien
accb874155 fix(agent-teams): close delete race and preserve parent-agent fallback 2026-02-14 13:33:30 +09:00
Nguyen Khac Trung Kien
1e2c10e7b0 fix(agent-teams): harden inbox parsing and behavioral tests 2026-02-14 13:33:30 +09:00
Nguyen Khac Trung Kien
a9d4cefdfe fix(agent-teams): authorize task tools by team session 2026-02-14 13:33:30 +09:00
Nguyen Khac Trung Kien
2a57feb810 fix(agent-teams): tighten config access and context propagation 2026-02-14 13:33:30 +09:00
Nguyen Khac Trung Kien
f422cfc7af fix(agent-teams): harden deletion and messaging safety 2026-02-14 13:33:30 +09:00
Nguyen Khac Trung Kien
0f0ba0f71b fix(agent-teams): address race condition in team deletion locking 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
c15bad6d00 fix(agent-teams): enforce lead spawn auth and dedupe shutdown 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
805df45722 fix(agent-teams): lock team deletion behind config mutex 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
cf42082c5f fix(agent-teams): accept teammate agent IDs in messaging
Normalize send_message recipients so name@team values resolve to member names, preventing false recipient-not-found fallbacks into duplicate delegation paths. Also add delegation consistency coverage and split teammate runtime helpers for clearer spawn and parent-context handling.
2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
40f844fb85 fix(agent-teams): align spawn schema and harden inbox rollback behavior 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
fe05a1f254 fix(agent-teams): harden lead auth and require teammate categories 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
e984ce7493 feat(agent-teams): support category-based teammate spawning 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
3f859828cc fix(agent-teams): rotate lead session and clear stale teammate inbox 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
11766b085d fix(agent-teams): enforce T-prefixed task id validation 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
2103061123 fix(agent-teams): close latest review gaps for auth and race safety 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
79c3823762 fix(agent-teams): enforce session-bound messaging and shutdown cleanup 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
dc3d81a0b8 fix(agent-teams): tighten reviewer-raised runtime and messaging guards
Validate sender/owner/team flows more strictly, fail fast on invalid model overrides, and cancel failed launches to prevent orphaned background tasks while expanding functional coverage for these paths.
2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
7ad60cbedb fix(agent-teams): atomically write inbox files 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
1a5030d359 fix(agent-teams): fail fast on teammate launch errors 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
dbcad8fd97 fix(agent-teams): harden task operations against traversal 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
0ec6afcd9e fix(agent-teams): move team existence check under lock 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
f4e4fdb2e4 fix(agent-teams): add strict identifier validation rules 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
db08cc22cc test(agent-teams): add functional and utility coverage 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
766794e0f5 fix(agent-teams): store data under project .sisyphus 2026-02-14 13:33:29 +09:00
Nguyen Khac Trung Kien
0f9c93fd55 feat(tools): add native team orchestration tool suite
Port team lifecycle, teammate runtime, inbox messaging, and team-scoped task flows into built-in tools so multi-agent coordination works natively without external server dependencies.
2026-02-14 13:33:29 +09:00
YeonGyu-Kim
4ab93c0cf7 fix: refresh lastUpdate on all message.part.updated events, not just tool events
Reasoning/thinking models (Oracle, Claude Opus) were being killed by the
stale timeout because lastUpdate was only refreshed on tool-type events.
During extended thinking, no tool events fire, so after 3 minutes the
task was incorrectly marked as stale and aborted.

Move progress initialization and lastUpdate refresh before the tool-type
conditional so any message.part.updated event (text, thinking, tool)
keeps the task alive.
2026-02-14 13:33:01 +09:00
github-actions[bot]
a809ac3dfc @cloudwaddie-agent has signed the CLA in code-yeongyu/oh-my-opencode#1827 2026-02-14 04:15:29 +00:00
YeonGyu-Kim
ac99f98b27 make agents to load skills more 2026-02-14 12:43:52 +09:00
YeonGyu-Kim
c8cd6370e2 Merge pull request #1817 from code-yeongyu/fix/todo-continuation-always-fire
fix(todo-continuation-enforcer): fire continuation for all sessions with incomplete todos
2026-02-14 11:43:10 +09:00
github-actions[bot]
3a68a891c0 @Strocs has signed the CLA in code-yeongyu/oh-my-opencode#1822 2026-02-13 16:57:07 +00:00
github-actions[bot]
32d469796b @professional-ALFIE has signed the CLA in code-yeongyu/oh-my-opencode#1820 2026-02-13 15:00:15 +00:00
YeonGyu-Kim
f876d60e87 Merge pull request #1750 from ojh102/fix/guard-non-string-tool-output
fix(hooks): guard against non-string tool output in afterToolResult hooks
2026-02-13 18:52:18 +09:00
YeonGyu-Kim
4e5321a970 Merge pull request #1765 from COLDTURNIP/fix/load_lsp_from_jsonc
fix(config): load lsp config from jsonc configuration files
2026-02-13 18:51:50 +09:00
YeonGyu-Kim
7a3df05e47 fix(todo-continuation-enforcer): fire continuation for all sessions with incomplete todos
Remove boulder session restriction (f84ef532) and stagnation cap (10a60854)
that prevented continuation from firing in regular sessions.

Changes:
- Remove boulder/subagent session gate in idle-event.ts — continuation now
  fires for ANY session with incomplete todos, as originally intended
- Remove stagnation cap (MAX_UNCHANGED_CYCLES) — agent must keep rolling
  the boulder until all todos are complete, no giving up after 3 attempts
- Remove lastTodoHash and unchangedCycles from SessionState type
- Keep 30s cooldown (CONTINUATION_COOLDOWN_MS) as safety net against
  re-injection loops
- Update tests: remove boulder gate tests, update stagnation test to verify
  continuous injection, update non-main-session test to verify injection

42 tests pass, typecheck and build clean.
2026-02-13 18:50:53 +09:00
YeonGyu-Kim
c6bea11cda Merge pull request #1771 from kaizen403/fix/partial-config-parsing
fix: parse config sections independently so one invalid field doesn't discard entire config
2026-02-13 18:46:07 +09:00
YeonGyu-Kim
9fe48d252c Merge pull request #1787 from popododo0720/fix/memory-leak-session-messages-caching
fix: reduce session.messages() calls with event-based caching to prevent memory leaks
2026-02-13 18:44:00 +09:00