1. cmd_status now validates session IDs against opencode session list
- Reports 'error: base session X not found in opencode' if missing
- Reports 'error: pm_agent session X not found in opencode' if missing
2. Test suite now uses isolated KUGETSU_DIR=/tmp/test-kugetsu-$$
- All tests use separate test directory instead of ~/.kugetsu
- Prevents test suite from corrupting real user data
- Cleanup removes test directory entirely
Fixes#148
- Test E7: verify fix_session_permissions function exists
- Test E8: verify cmd_doctor --fix-permissions flag is recognized
- Test E9: verify permission JSON is valid JSON
- Test E10: verify SQL UPDATE syntax works correctly
These tests verify the fix without requiring actual opencode installation.
- Add test E7: verify fix_session_permissions function exists
- Add test E8: verify cmd_doctor --fix-permissions flag is recognized
- Add fix_session_permissions call to cmd_init to set permissions
when initializing new sessions
Add tests for env pass-through feature:
- Test env command exists and lists files
- Test env set creates env file
- Test env show masks sensitive values (GITEA_TOKEN)
- Test set -a exports variables to child processes
- Test pm-agent.env takes precedence over default.env
- Test cmd_init creates env template files
These tests ensure the env pass-through mechanism works correctly
and that variables are properly exported to subagents.
- Add MAX_CONCURRENT_AGENTS (default: 3) to limit concurrent agents
- Implement acquire_agent_slot() and release_agent_slot() with flock
- Wrap cmd_start, cmd_continue, and cmd_delegate with slot management
- cmd_delegate holds slot until background task completes (fire-and-forget + blocking)
- Add basic concurrency tests to test suite
The check_opencode_session_exists() function was fundamentally broken
because 'opencode session list' does not include forked sessions,
regardless of output format (table or JSON). This caused false
'session expired' reports even when sessions were fully functional.
Changes:
- Remove session check from cmd_status() - now returns 'ok' if session registered
- Remove session check from cmd_delegate() - let opencode run fail naturally
- Remove warning from cmd_continue() - proceed regardless
- Simplify cmd_doctor() - just show registered sessions
- Update test to reflect new behavior
Issue #38: #38
Added 10 new tests:
- kugetsu status (5 tests): uninitialized, base missing, pm-agent missing, Python None handling, session expired
- kugetsu delegate (2 tests): no message, pm-agent missing
- kugetsu doctor (1 test): basic command execution
- kugetsu notify (2 tests): list with no file, clear with no file
Total tests: 38 (all passing)
- Fix issue_ref_to_worktree_name: use single dash for # like filename does
- Add tests for: pm-agent in index, destroy --pm-agent, worktree_path in session
- Add tests for: prune detects/removes orphaned worktrees, destroy removes worktree
- Add tests for: session file v2.2 format with worktree_path
All 28 tests pass.