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"
- TOKEN_ENV =
"SPACE_ARCHITECT_INGEST_TOKEN"
Class Method Summary
collapse
Class Method Details
.default_claude_root(env: ENV) ⇒ Object
44
45
46
|
# File 'lib/space_architect/session_sync.rb', line 44
def default_claude_root(env: ENV)
File.join(Space::Core::XDG.home(env: env), ".claude", "projects")
end
|
.default_pi_root(env: ENV) ⇒ Object
40
41
42
|
# File 'lib/space_architect/session_sync.rb', line 40
def default_pi_root(env: ENV)
File.join(Space::Core::XDG.home(env: env), ".pi", "agent", "sessions")
end
|
.default_state_file(env: ENV) ⇒ Object
36
37
38
|
# File 'lib/space_architect/session_sync.rb', line 36
def default_state_file(env: ENV)
File.join(state_dir(env: env), "session-sync.yaml")
end
|
.launch_agents_dir(env: ENV) ⇒ Object
52
53
54
|
# File 'lib/space_architect/session_sync.rb', line 52
def launch_agents_dir(env: ENV)
File.join(Space::Core::XDG.home(env: env), "Library", "LaunchAgents")
end
|
.log_dir(env: ENV) ⇒ Object
48
49
50
|
# File 'lib/space_architect/session_sync.rb', line 48
def log_dir(env: ENV)
File.join(state_dir(env: env), "logs")
end
|
.resolve_token(ref) ⇒ Object
The one op-read seam under lib/: resolves an op:// ref via op read.
Shared by ConversationsClient's default op_resolver and
Sessions::Agent::Install (both test-injectable around this call).
25
26
27
28
29
30
|
# File 'lib/space_architect/session_sync.rb', line 25
def resolve_token(ref)
value = IO.popen(["op", "read", ref], &:read)
raise Space::Core::Error, "op read failed for #{ref}" unless $?.success?
value.chomp
end
|
.state_dir(env: ENV) ⇒ Object
32
33
34
|
# File 'lib/space_architect/session_sync.rb', line 32
def state_dir(env: ENV)
File.join(Space::Core::XDG.state_home(env: env).to_s, APP_NAME)
end
|