Module: Space::Architect::SessionSync

Defined in:
lib/space_architect/session_sync.rb,
lib/space_architect/session_sync/plist.rb,
lib/space_architect/session_sync/cursor.rb,
lib/space_architect/session_sync/runner.rb,
lib/space_architect/session_sync/bin_path.rb,
lib/space_architect/session_sync/session_id.rb

Overview

Session-sync rail's laptop half: scans ~/.pi/agent/sessions//*.jsonl and ~/.claude/projects//*.jsonl for conversation files, uploads new/grown ones to a space-server via ConversationsClient, and installs a per-user launchd agent that runs the sync on an interval. Opencode (sqlite) is out of scope for this rail.

Defined Under Namespace

Modules: BinPath, SessionId Classes: Cursor, Plist, Runner

Constant Summary collapse

LABEL =
"io.github.jetpks.space-architect.session-sync"
APP_NAME =
"space-architect"

Class Method Summary collapse

Class Method Details

.default_claude_root(env: ENV) ⇒ Object



33
34
35
# File 'lib/space_architect/session_sync.rb', line 33

def default_claude_root(env: ENV)
  File.join(Space::Core::XDG.home(env: env), ".claude", "projects")
end

.default_pi_root(env: ENV) ⇒ Object



29
30
31
# File 'lib/space_architect/session_sync.rb', line 29

def default_pi_root(env: ENV)
  File.join(Space::Core::XDG.home(env: env), ".pi", "agent", "sessions")
end

.default_state_file(env: ENV) ⇒ Object



25
26
27
# File 'lib/space_architect/session_sync.rb', line 25

def default_state_file(env: ENV)
  File.join(state_dir(env: env), "session-sync.yaml")
end

.launch_agents_dir(env: ENV) ⇒ Object



41
42
43
# File 'lib/space_architect/session_sync.rb', line 41

def launch_agents_dir(env: ENV)
  File.join(Space::Core::XDG.home(env: env), "Library", "LaunchAgents")
end

.log_dir(env: ENV) ⇒ Object



37
38
39
# File 'lib/space_architect/session_sync.rb', line 37

def log_dir(env: ENV)
  File.join(state_dir(env: env), "logs")
end

.state_dir(env: ENV) ⇒ Object



21
22
23
# File 'lib/space_architect/session_sync.rb', line 21

def state_dir(env: ENV)
  File.join(Space::Core::XDG.state_home(env: env).to_s, APP_NAME)
end