Class: ClaudeMemory::MCP::SetupStatusAnalyzer

Inherits:
Object
  • Object
show all
Defined in:
lib/claude_memory/mcp/setup_status_analyzer.rb

Overview

Pure logic for analyzing setup status and generating recommendations Follows Functional Core pattern - no I/O, just decision logic

Class Method Summary collapse

Class Method Details

.determine_status(global_db_exists, claude_md_exists, version_status) ⇒ String

Determine overall setup status based on component states

Parameters:

  • global_db_exists (Boolean)

    Global database exists

  • claude_md_exists (Boolean)

    CLAUDE.md file exists

  • version_status (String, nil)

    Version status (up_to_date, outdated, etc.)

Returns:

  • (String)

    Overall status (healthy, needs_upgrade, partially_initialized, not_initialized)



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/claude_memory/mcp/setup_status_analyzer.rb', line 13

def self.determine_status(global_db_exists, claude_md_exists, version_status)
  initialized = global_db_exists && claude_md_exists

  if initialized && version_status == "up_to_date"
    "healthy"
  elsif initialized && version_status == "outdated"
    "needs_upgrade"
  elsif global_db_exists && !claude_md_exists
    "partially_initialized"
  else
    "not_initialized"
  end
end

.determine_version_status(current_version, latest_version) ⇒ String

Determine version status by comparing current and latest

Parameters:

  • current_version (String, nil)

    Version from config

  • latest_version (String)

    Latest version

Returns:

  • (String)

    Version status (up_to_date, outdated, no_version_marker, unknown)



62
63
64
65
66
67
68
69
70
# File 'lib/claude_memory/mcp/setup_status_analyzer.rb', line 62

def self.determine_version_status(current_version, latest_version)
  return "unknown" unless current_version

  if current_version == latest_version
    "up_to_date"
  else
    "outdated"
  end
end

.extract_version(content) ⇒ String?

Extract version from CLAUDE.md content

Parameters:

  • content (String)

    CLAUDE.md file content

Returns:

  • (String, nil)

    Extracted version or nil



52
53
54
55
56
# File 'lib/claude_memory/mcp/setup_status_analyzer.rb', line 52

def self.extract_version(content)
  if content =~ /<!-- ClaudeMemory v([\d.]+) -->/
    $1
  end
end

.generate_recommendations(initialized, version_status, has_warnings) ⇒ Array<String>

Generate recommendations based on setup status

Parameters:

  • initialized (Boolean)

    Whether system is initialized

  • version_status (String, nil)

    Version status

  • has_warnings (Boolean)

    Whether there are warnings

Returns:

  • (Array<String>)

    List of recommendations



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/claude_memory/mcp/setup_status_analyzer.rb', line 32

def self.generate_recommendations(initialized, version_status, has_warnings)
  recommendations = []

  if !initialized
    recommendations << "Run: claude-memory init"
    recommendations << "This will create databases, configure hooks, and set up CLAUDE.md"
  elsif version_status == "outdated"
    recommendations << "Run: claude-memory upgrade (when available)"
    recommendations << "Or manually run: claude-memory init to update CLAUDE.md"
  elsif has_warnings
    recommendations << "Run: claude-memory doctor --fix (when available)"
    recommendations << "Or check individual issues and fix manually"
  end

  recommendations
end