Phase 3c implementation - Notification System:
### New kugetsu commands:
- `kugetsu notify list` - Show unread notifications from PM Agent
- `kugetsu notify clear` - Mark notifications as read
### Notification system:
- PM Agent writes task events to ~/.kugetsu/notifications.json
- Events: task_complete, task_blocked, task_assigned
- Supports issue_ref and gitea_url for linking
- Hermes/Chat Agent reads notifications on user messages
### kugetsu-pm v2.0:
- Updated documentation with notification behavior
- PM Agent monitors Gitea for task completion
- Two review modes: PM reviews immediately OR asks dev if ready
- Notification triggers documented
### File renamed:
- phase3a-setup.md → kugetsu-chat-setup.md (more descriptive)
### Hermes gateway analysis:
- Gateway is a client (connects to Telegram), not a server
- Cannot push messages directly to Telegram from external process
- Notifications stored locally for Hermes to pick up on next user message
This commit implements Phase 3b/3c architectural improvements:
### New kugetsu CLI commands:
- `kugetsu status` - Check initialization status (replaces kugetsu-helper check-status)
- `kugetsu delegate <msg>` - Send message to PM agent (new command)
- `kugetsu doctor [--fix]` - Diagnose and fix kugetsu issues
### PM Context Injection:
- kugetsu init now reads ~/.kugetsu/pm-agent.md (if exists) and injects
it into the PM agent session at creation time
- PM context is loaded ONCE at init, not on every delegation
- This improves efficiency - kugetsu-pm content read once, not 10 times
### kugetsu-chat updated:
- Now uses `kugetsu delegate` instead of kugetsu-helper
- Now uses `kugetsu status` instead of kugetsu-helper check-status
- Simplified - no longer depends on kugetsu-helpers
### kugetsu continue:
- Removed strict issue-ref format validation
- Now accepts any session name that is tracked in index.json["issues"]
- Issue-ref format is a guideline, not a hard requirement
### Documentation updated:
- phase3a-setup.md - Updated to reflect new kugetsu commands
- kugetsu-install.sh - Simplified Phase 3a setup instructions
### Breaking changes:
- kugetsu-helpers is no longer required for Phase 3a Chat Agent
- kugetsu-chat skill v3.0 now requires kugetsu CLI with new commands
- Add test suite at skills/kugetsu-helpers/tests/test-kugetsu-helpers.sh
- 11 unit tests covering check-status, delegate-to-pm, get-pm-session, etc.
- Fix bug: Python print(None) outputs literal "None" string, not empty
- All tests pass
Add kugetsu_fix_pm_permissions function to fix opencode session permissions
for /tmp/kugetsu directory access. This resolves permission issues when
PM agent tries to access worktree directories.
Usage: kugetsu-helper fix-permissions
- SKILL.md: More explicit about MUST use this skill for delegation
- SOUL.md: Explicitly instruct to invoke /kugetsu-chat skill first
- Add more explicit delegation rules and error handling
- SOUL.md now explicitly instructs Hermes to ALWAYS use kugetsu-helper for delegation
- Clear delegation rules with examples
- Separation of casual conversation vs delegation
This is the first attempt at making Hermes route via kugetsu-helper automatically.
- Identify delegate_task() (max 3) vs terminal(opencode run) (no cap)
- Document Gitea as async communication hub
- PM ↔ Coding Agent communication protocols
- Practical examples for each pattern
- Issue state machine and known limitations
- SOUL.md: only personality/voice guidance (no routing logic)
- SKILL.md: definitive routing behavior + delegation process
- Add context passing via temp file for long tasks
- Add error handling table with user-friendly messages
This aligns with Hermes docs: SOUL.md = identity, SKILL.md = behavior
- 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.
- kugetsu init now creates both base and pm-agent sessions
- kugetsu start checks for pm-agent existence, errors if missing
- Add kugetsu destroy --pm-agent command
- Update list to show pm-agent session
- Update prune to preserve pm-agent.json
- Update SKILL.md documentation to v2.1
Part of issue #19 Phase 3 implementation
- sshd-setup.sh: Auto-detect OS (Debian/Ubuntu/Fedora/RHEL/CentOS)
- Use appropriate package manager (apt-get vs dnf)
- Add verification steps after each major phase
- Exit with error if sshd installation fails
- Exit with error if sshd doesn't start successfully
- Add troubleshooting section in output
- kugetsu-install.sh: Add verification that kugetsu binary exists
- kugetsu-setup.md: Document multi-distro installation commands
- Add 'Remote Access via SSH (Optional)' section
- Documents automated sshd-setup.sh usage
- Explains what the setup does
- Shows remote usage examples
- Links to full docs/kugetsu-setup.md for host-side configuration
Compare session list before and after fork to reliably detect which
session is the newly created one. Avoids relying on parsing output
that may not contain session ID.
Create placeholder session file and add to index BEFORE running
opencode. This ensures we have a record even if opencode takes
long time or times out. Update with real session ID after fork.
The --fork flag outputs the new session ID. Parse that instead of
relying on session list which may return wrong session when multiple
exist. Added fallback to session list parsing.
- Add --debug flag to start/resume for verbose opencode output
- Use stdbuf -oL to unbuffer stdout for real-time display
- Capture debug logs to ~/.kugetsu/sessions/<id>/debug.log
- Add --debug to stop/destroy for viewing logs before actions
- Position-agnostic flag parsing (--debug can appear anywhere in args)
- skills/kugetsu/SKILL.md: Agent skill documentation following agentskills.io spec
- skills/kugetsu/scripts/kugetsu: Shell wrapper for opencode session management
- Commands: start, list [--all], resume, stop, help
- State tracking: used → idle (graceful) or left (interrupted)
- Auto-fill message on resume
- Confirmation prompt when resuming used session
- skills/kugetsu/scripts/kugetsu-install.sh: Installation script for users
Implements Phase 1 of issue #11 - basic session management layer
for remote agent control without Hermes dependency.
- Installation via curl script (with --skip-setup for CI)
- API key configuration for 9+ LLM providers
- OpenCode delegation via terminal() wrapper pattern
- Git worktree isolation per-issue workflow
- Reference to existing opencode-worktree skill
Related to issue #1
Document:
- How to detect contamination via git log and branch --contains
- Prevention with explicit base: git checkout -b new-branch main
- Fix using git rebase --onto
- Force push with --force-with-lease for safety
Addresses Issue #1 comment 281