Skip to main content
Glama
by 8b-is
anchor.sh7.45 kB
#!/usr/bin/env bash # 🌊 Smart Tree Memory Anchor Helper - Easy collaborative memory management! # Usage: ./anchor.sh [command] [options] set -euo pipefail # ANSI color codes for that Trish-approved sparkle! ✨ readonly GREEN='\033[0;32m' readonly BLUE='\033[0;34m' readonly YELLOW='\033[1;33m' readonly PURPLE='\033[0;35m' readonly CYAN='\033[0;36m' readonly RED='\033[0;31m' readonly BOLD='\033[1m' readonly RESET='\033[0m' # Default values PROJECT_PATH="." ORIGIN="tandem:human:claude" # Function to show usage show_usage() { cat << EOF ${BOLD}${CYAN}🌊 Smart Tree Memory Anchor Helper${RESET} ${BOLD}USAGE:${RESET} anchor save <context> <keywords> [type] Save a memory anchor anchor find <keywords> Find memory anchors anchor rapport [ai_tool] Check collaboration rapport anchor heatmap Show co-engagement heatmap anchor patterns [type] Find cross-domain patterns anchor insights <keywords> Get cross-session insights anchor invite <context> Invite a persona for help anchor list List recent anchors ${BOLD}TYPES:${RESET} pattern_insight A pattern discovery solution A problem solution breakthrough A major breakthrough learning Something learned joke A shared joke/moment technical Technical detail process Process/workflow ${BOLD}EXAMPLES:${RESET} # Save a solution we discovered ${GREEN}anchor save "Fixed the bug by using Arc<Mutex<T>>" "arc,mutex,threading" solution${RESET} # Find all threading-related memories ${BLUE}anchor find "threading,concurrency"${RESET} # Check our partnership health ${PURPLE}anchor rapport claude${RESET} # Get insights for current work ${YELLOW}anchor insights "performance,optimization"${RESET} ${BOLD}ENVIRONMENT:${RESET} ST_PROJECT Override project path (default: current directory) ST_ORIGIN Override origin (default: tandem:human:claude) ${CYAN}✨ "Every anchor strengthens the waves of collaboration!" - Omni${RESET} EOF } # Function to run MCP tool run_mcp_tool() { local tool="$1" shift local args="$@" # Use st with MCP mode to execute tools echo "{\"tool\": \"$tool\", \"arguments\": $args}" | st --mcp 2>/dev/null | jq -r '.content // .error // "No response"' } # Save a memory anchor save_anchor() { local context="$1" local keywords="$2" local anchor_type="${3:-learning}" echo -e "${CYAN}⚓ Anchoring memory...${RESET}" # Build keywords array IFS=',' read -ra kw_array <<< "$keywords" local kw_json=$(printf '"%s",' "${kw_array[@]}" | sed 's/,$//') local result=$(run_mcp_tool "anchor_collaborative_memory" "{ \"context\": \"$context\", \"keywords\": [$kw_json], \"anchor_type\": \"$anchor_type\", \"origin\": \"$ORIGIN\", \"project_path\": \"$PROJECT_PATH\" }") echo -e "${GREEN}✓ Memory anchored successfully!${RESET}" echo -e "${BLUE}Context:${RESET} $context" echo -e "${BLUE}Keywords:${RESET} $keywords" echo -e "${BLUE}Type:${RESET} $anchor_type" } # Find memory anchors find_anchors() { local keywords="$1" echo -e "${CYAN}🔍 Searching memory waves...${RESET}" # Build keywords array IFS=',' read -ra kw_array <<< "$keywords" local kw_json=$(printf '"%s",' "${kw_array[@]}" | sed 's/,$//') local result=$(run_mcp_tool "find_collaborative_memories" "{ \"keywords\": [$kw_json], \"project_path\": \"$PROJECT_PATH\" }") echo "$result" | jq -r ' if type == "array" then .[] | "${BOLD}[\(.anchor_type)]${RESET} \(.timestamp)\n${BLUE}\(.context)${RESET}\nKeywords: \(.keywords | join(", "))\nRelevance: \(.relevance)\n" else "No memories found for those keywords." end ' } # Check rapport check_rapport() { local ai_tool="${1:-claude}" echo -e "${PURPLE}💝 Checking partnership rapport with $ai_tool...${RESET}" local result=$(run_mcp_tool "get_collaboration_rapport" "{ \"ai_tool\": \"$ai_tool\", \"project_path\": \"$PROJECT_PATH\" }") echo "$result" } # Show heatmap show_heatmap() { echo -e "${YELLOW}🌡️ Co-engagement heatmap:${RESET}" local result=$(run_mcp_tool "get_co_engagement_heatmap" "{ \"format\": \"visual\", \"project_path\": \"$PROJECT_PATH\" }") echo "$result" } # Find patterns find_patterns() { local pattern_type="$1" echo -e "${CYAN}🔗 Finding cross-domain patterns...${RESET}" local args="{\"project_path\": \"$PROJECT_PATH\"" if [[ -n "$pattern_type" ]]; then args="${args%\}}, \"pattern_type\": \"$pattern_type\"}" fi local result=$(run_mcp_tool "get_cross_domain_patterns" "$args") echo "$result" } # Get insights get_insights() { local keywords="$1" echo -e "${YELLOW}💡 Gathering cross-session insights...${RESET}" # Build keywords array IFS=',' read -ra kw_array <<< "$keywords" local kw_json=$(printf '"%s",' "${kw_array[@]}" | sed 's/,$//') local result=$(run_mcp_tool "suggest_cross_session_insights" "{ \"keywords\": [$kw_json], \"project_path\": \"$PROJECT_PATH\" }") echo "$result" } # Invite persona invite_persona() { local context="$1" echo -e "${PURPLE}🎭 Inviting specialized persona...${RESET}" local result=$(run_mcp_tool "invite_persona" "{ \"context\": \"$context\" }") echo "$result" } # List recent anchors (simple grep of history) list_recent() { echo -e "${CYAN}📚 Recent memory anchors:${RESET}" # This is a simplified version - in reality would query the system echo "Use 'anchor find' with keywords to search memories" } # Main command handling case "${1:-help}" in save) shift if [[ $# -lt 2 ]]; then echo -e "${RED}Error: save requires context and keywords${RESET}" echo "Usage: anchor save <context> <keywords> [type]" exit 1 fi save_anchor "$@" ;; find) shift if [[ $# -lt 1 ]]; then echo -e "${RED}Error: find requires keywords${RESET}" echo "Usage: anchor find <keywords>" exit 1 fi find_anchors "$1" ;; rapport) shift check_rapport "$@" ;; heatmap) show_heatmap ;; patterns) shift find_patterns "$@" ;; insights) shift if [[ $# -lt 1 ]]; then echo -e "${RED}Error: insights requires keywords${RESET}" echo "Usage: anchor insights <keywords>" exit 1 fi get_insights "$1" ;; invite) shift if [[ $# -lt 1 ]]; then echo -e "${RED}Error: invite requires context${RESET}" echo "Usage: anchor invite <context>" exit 1 fi invite_persona "$1" ;; list) list_recent ;; help|--help|-h) show_usage ;; *) echo -e "${RED}Unknown command: $1${RESET}" show_usage exit 1 ;; esac

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/8b-is/smart-tree'

If you have feedback or need assistance with the MCP directory API, please join our Discord server