Commit Graph

3 Commits

Author SHA1 Message Date
dave
c90853ba99 fix: address CodeRabbit review — race condition, UTF-8 safety, cast
Fixes all 4 issues from CodeRabbit review:

1. Race condition in spawn: replaced separate running_count() check +
   insert() with atomic try_insert(session, max) that holds the write
   lock for both the count check and insertion.

2. UTF-8 byte slice panic in subagent_manage: output truncation now
   uses char_indices().nth(500) to find a safe byte boundary.

3. UTF-8 byte slice panic in truncate_task: now uses chars().count()
   for length check and char_indices().nth() for safe slicing.
   Added truncate_task_multibyte_safe test with emoji input.

4. cast_unsigned() replaced with 'as u64' — standard Rust cast for
   duration milliseconds.

Test count: 57 (56 + 1 new multibyte safety test).
2026-02-26 02:14:20 +08:00
dave
90289ccc91 docs: add module-level and item-level docstrings for subagent tools
Improve docstring coverage to meet the 80% threshold required
by CI. Adds //! module docs and /// item docs to all public
types and functions in the subagent tool modules.
2026-02-26 02:14:20 +08:00
dave
067eb8a188 feat(tools): add sub-agent orchestration (spawn, list, manage)
Add background sub-agent orchestration tools that extend the existing
delegate tool with async execution, session tracking, and lifecycle
management.

New tools:
- subagent_spawn: Spawn delegate agents in background via tokio::spawn,
  returns session_id immediately. Respects security policy, depth limits,
  rate limits, and configurable concurrent session cap.
- subagent_list: List running/completed/failed/killed sessions with
  status filtering. Read-only, allowed in all autonomy modes.
- subagent_manage: Kill running sessions via CancellationToken or
  query status with partial output. Enforces Act policy for kill.

Shared state:
- SubAgentRegistry: Thread-safe session store using
  Arc<parking_lot::RwLock<HashMap>> with lazy cleanup of sessions
  older than 1 hour. Tracks session metadata, status, timing, and
  results.

Test coverage: 56 tests across all 4 modules covering happy paths,
error handling, security enforcement, concurrency, parameter
validation, and edge cases.

No new dependencies added. No existing tests broken.
2026-02-26 02:14:20 +08:00