linux observer
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Rename remote to observer to match solstone core

API endpoints, CLI references, and stream_name parameter updated.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+15 -15
+1 -1
src/solstone_linux/cli.py
··· 99 99 print("Registering via sol CLI...") 100 100 try: 101 101 result = subprocess.run( 102 - [sol, "remote", "--json", "create", config.stream], 102 + [sol, "observer", "--json", "create", config.stream], 103 103 capture_output=True, text=True, timeout=10, 104 104 ) 105 105 if result.returncode == 0:
+7 -7
src/solstone_linux/streams.py
··· 8 8 9 9 Naming convention (separator is '.'): 10 10 Local Linux: {hostname} e.g. "archon" 11 - Remote: {remote_name} e.g. "desktop" 11 + Observer: {observer_name} e.g. "desktop" 12 12 """ 13 13 14 14 from __future__ import annotations ··· 40 40 def stream_name( 41 41 *, 42 42 host: str | None = None, 43 - remote: str | None = None, 43 + observer: str | None = None, 44 44 qualifier: str | None = None, 45 45 ) -> str: 46 46 """Derive canonical stream name from source characteristics. ··· 49 49 ---------- 50 50 host : str, optional 51 51 Local hostname (e.g., "archon"). 52 - remote : str, optional 53 - Remote observer name (e.g., "desktop"). 52 + observer : str, optional 53 + Observer name (e.g., "desktop"). 54 54 qualifier : str, optional 55 55 Sub-stream qualifier. Appended with dot separator. 56 56 ··· 66 66 """ 67 67 if host: 68 68 base = _strip_hostname(host) 69 - elif remote: 70 - base = _strip_hostname(remote) 69 + elif observer: 70 + base = _strip_hostname(observer) 71 71 else: 72 - raise ValueError("stream_name requires host or remote") 72 + raise ValueError("stream_name requires host or observer") 73 73 74 74 name = base.lower().strip() 75 75 name = re.sub(r"[\s/\\]+", "-", name)
+5 -5
src/solstone_linux/upload.py
··· 84 84 if sol: 85 85 try: 86 86 result = subprocess.run( 87 - [sol, "remote", "--json", "create", name], 87 + [sol, "observer", "--json", "create", name], 88 88 capture_output=True, text=True, timeout=10, 89 89 ) 90 90 if result.returncode == 0: ··· 99 99 if not self._url: 100 100 return False 101 101 102 - url = f"{self._url}/app/remote/api/create" 102 + url = f"{self._url}/app/observer/api/create" 103 103 104 104 retries = min(3, len(self._retry_backoff)) 105 105 for attempt in range(retries): ··· 155 155 if self._revoked or not self._key or not self._url: 156 156 return UploadResult(False, error_type=ErrorType.AUTH if self._revoked else None) 157 157 158 - url = f"{self._url}/app/remote/ingest/{self._key}" 158 + url = f"{self._url}/app/observer/ingest/{self._key}" 159 159 160 160 for attempt in range(self._max_retries): 161 161 file_handles = [] ··· 233 233 if self._revoked or not self._key or not self._url: 234 234 return None 235 235 236 - url = f"{self._url}/app/remote/ingest/{self._key}/segments/{day}" 236 + url = f"{self._url}/app/observer/ingest/{self._key}/segments/{day}" 237 237 params = {} 238 238 if self._stream: 239 239 params["stream"] = self._stream ··· 258 258 if self._revoked or not self._key or not self._url: 259 259 return False 260 260 261 - url = f"{self._url}/app/remote/ingest/{self._key}/event" 261 + url = f"{self._url}/app/observer/ingest/{self._key}/event" 262 262 payload = {"tract": tract, "event": event, **fields} 263 263 try: 264 264 resp = self._session.post(url, json=payload, timeout=EVENT_TIMEOUT)
+2 -2
tests/test_streams.py
··· 34 34 # Linux observer uses host without qualifier 35 35 assert stream_name(host="archon") == "archon" 36 36 37 - def test_remote(self): 38 - assert stream_name(remote="desktop") == "desktop" 37 + def test_observer(self): 38 + assert stream_name(observer="desktop") == "desktop" 39 39 40 40 def test_rejects_empty(self): 41 41 with pytest.raises(ValueError):