feat(phase3a): initial Chat Agent infrastructure
Phase 3a implementation - Hermes Chat Agent configuration: - kugetsu-chat/SOUL.md - Chat Agent persona and routing logic - kugetsu-chat/SKILL.md - Chat Agent skill documentation - kugetsu-chat/scripts/setup - Configuration setup script - kugetsu-pm/SKILL.md - PM Agent skill documentation - kugetsu-helpers/SKILL.md - Helper tools for Hermes-kugetsu integration - kugetsu-helpers/scripts/kugetsu-helpers - Shell functions for delegation Provides: - Intent classification (small talk, task, status, mode change) - PM Agent delegation via terminal() - kugetsu status checking - Session management helpers
This commit is contained in:
194
skills/kugetsu-chat/scripts/setup
Executable file
194
skills/kugetsu-chat/scripts/setup
Executable file
@@ -0,0 +1,194 @@
|
||||
#!/bin/bash
|
||||
# kugetsu-chat setup script
|
||||
# Configures Hermes as Chat Agent for Phase 3a
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
KUGETSU_CHAT_DIR="$(dirname "$(dirname "$(readlink -f "$0")")")"
|
||||
HERMES_DIR="${HERMES_DIR:-$HOME/.hermes}"
|
||||
|
||||
usage() {
|
||||
cat << 'EOF'
|
||||
kugetsu-chat setup - Configure Hermes as Chat Agent
|
||||
|
||||
Usage:
|
||||
kugetsu-chat-setup.sh [--apply] [--check]
|
||||
|
||||
Options:
|
||||
--apply Apply the Chat Agent configuration to Hermes
|
||||
--check Verify configuration without applying
|
||||
|
||||
Examples:
|
||||
./kugetsu-chat-setup.sh --check # Check configuration
|
||||
./kugetsu-chat-setup.sh --apply # Apply configuration
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
check_prerequisites() {
|
||||
echo "=== Checking Prerequisites ==="
|
||||
|
||||
if ! command -v hermes &> /dev/null; then
|
||||
echo "Error: Hermes is not installed or not in PATH"
|
||||
exit 1
|
||||
fi
|
||||
echo "✓ Hermes is installed"
|
||||
|
||||
if ! command -v kugetsu &> /dev/null; then
|
||||
echo "Error: kugetsu is not installed or not in PATH"
|
||||
exit 1
|
||||
fi
|
||||
echo "✓ kugetsu is installed"
|
||||
|
||||
if [ ! -f "$HERMES_DIR/config.yaml" ]; then
|
||||
echo "Error: Hermes config not found at $HERMES_DIR/config.yaml"
|
||||
exit 1
|
||||
fi
|
||||
echo "✓ Hermes config exists"
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
verify_kugetsu_init() {
|
||||
echo "=== Verifying kugetsu Initialization ==="
|
||||
|
||||
if [ ! -f "$HOME/.kugetsu/index.json" ]; then
|
||||
echo "Error: kugetsu not initialized. Run 'kugetsu init' first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! grep -q '"pm_agent"' "$HOME/.kugetsu/index.json"; then
|
||||
echo "Error: kugetsu index.json missing pm_agent field"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PM_AGENT=$(python3 -c "import json; print(json.load(open('$HOME/.kugetsu/index.json')).get('pm_agent', ''))" 2>/dev/null || echo "")
|
||||
if [ -z "$PM_AGENT" ] || [ "$PM_AGENT" = "null" ]; then
|
||||
echo "Error: PM agent session not initialized. Run 'kugetsu init' first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✓ kugetsu is initialized with PM agent: $PM_AGENT"
|
||||
echo ""
|
||||
}
|
||||
|
||||
verify_telegram_config() {
|
||||
echo "=== Verifying Telegram Configuration ==="
|
||||
|
||||
if ! grep -q "TELEGRAM_HOME_CHANNEL" "$HERMES_DIR/config.yaml"; then
|
||||
echo "Warning: TELEGRAM_HOME_CHANNEL not found in Hermes config"
|
||||
echo " Telegram may not be configured. Run 'hermes gateway setup' to configure."
|
||||
else
|
||||
echo "✓ Telegram is configured in Hermes"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
install_soul() {
|
||||
echo "=== Installing Chat Agent SOUL ==="
|
||||
|
||||
SOUL_SOURCE="$KUGETSU_CHAT_DIR/SOUL.md"
|
||||
SOUL_TARGET="$HERMES_DIR/SOUL-chat.md"
|
||||
|
||||
if [ ! -f "$SOUL_SOURCE" ]; then
|
||||
echo "Error: SOUL.md not found at $SOUL_SOURCE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cp "$SOUL_SOURCE" "$SOUL_TARGET"
|
||||
echo "✓ Copied SOUL.md to $SOUL_TARGET"
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
install_skill() {
|
||||
echo "=== Installing kugetsu-chat Skill ==="
|
||||
|
||||
SKILL_SOURCE="$KUGETSU_CHAT_DIR"
|
||||
SKILL_TARGET="$HERMES_DIR/skills/kugetsu-chat"
|
||||
|
||||
if [ -L "$SKILL_TARGET" ]; then
|
||||
rm "$SKILL_TARGET"
|
||||
elif [ -d "$SKILL_TARGET" ]; then
|
||||
echo "Warning: $SKILL_TARGET already exists (not a symlink)"
|
||||
fi
|
||||
|
||||
ln -sf "$SKILL_SOURCE" "$SKILL_TARGET"
|
||||
echo "✓ Linked skill to $SKILL_TARGET"
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
apply_config() {
|
||||
echo "=== Applying Chat Agent Configuration ==="
|
||||
|
||||
check_prerequisites
|
||||
verify_kugetsu_init
|
||||
verify_telegram_config
|
||||
install_soul
|
||||
install_skill
|
||||
|
||||
echo "=== Configuration Complete ==="
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo "1. Run 'hermes gateway' to start the Telegram gateway"
|
||||
echo "2. Or run 'hermes' to use Chat Agent in CLI mode"
|
||||
echo ""
|
||||
echo "The Chat Agent will:"
|
||||
echo "- Receive Telegram messages"
|
||||
echo "- Handle small talk directly"
|
||||
echo "- Route task requests to PM Agent"
|
||||
echo "- Relay PM Agent responses back"
|
||||
}
|
||||
|
||||
check_config() {
|
||||
echo "=== Checking Chat Agent Configuration ==="
|
||||
echo ""
|
||||
|
||||
check_prerequisites
|
||||
verify_kugetsu_init
|
||||
verify_telegram_config
|
||||
|
||||
SOUL_TARGET="$HERMES_DIR/SOUL-chat.md"
|
||||
if [ -f "$SOUL_TARGET" ]; then
|
||||
echo "✓ Chat Agent SOUL is installed"
|
||||
else
|
||||
echo "○ Chat Agent SOUL not installed (run with --apply)"
|
||||
fi
|
||||
|
||||
SKILL_TARGET="$HERMES_DIR/skills/kugetsu-chat"
|
||||
if [ -L "$SKILL_TARGET" ]; then
|
||||
echo "✓ kugetsu-chat skill is linked"
|
||||
else
|
||||
echo "○ kugetsu-chat skill not linked (run with --apply)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
main() {
|
||||
if [ $# -eq 0 ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
--apply)
|
||||
apply_config
|
||||
;;
|
||||
--check)
|
||||
check_config
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
;;
|
||||
*)
|
||||
echo "Error: Unknown option '$1'"
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user