superlocalmemory 3.0.36 → 3.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superlocalmemory",
3
- "version": "3.0.36",
3
+ "version": "3.0.37",
4
4
  "description": "Information-geometric agent memory with mathematical guarantees. 4-channel retrieval, Fisher-Rao similarity, zero-LLM mode, EU AI Act compliant. Works with Claude, Cursor, Windsurf, and 17+ AI tools.",
5
5
  "keywords": [
6
6
  "ai-memory",
package/pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "superlocalmemory"
3
- version = "3.0.36"
3
+ version = "3.0.37"
4
4
  description = "Information-geometric agent memory with mathematical guarantees"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}
@@ -129,32 +129,17 @@ class LLMBackbone:
129
129
  def is_available(self) -> bool:
130
130
  """True when the provider is ready for requests.
131
131
 
132
- For Ollama: only returns True if the model is already loaded in
133
- memory. Prevents cold-load memory spikes (5+ GB) during recall.
132
+ For Ollama: always True (no API key needed). The num_ctx and
133
+ keep_alive guards in _build_ollama() protect against memory spikes.
134
+ The recall-path warm-only guard lives in Summarizer, not here —
135
+ store/fact-extraction should always use the LLM in Mode B.
134
136
  """
135
137
  if not self._provider:
136
138
  return False
137
139
  if self._provider == "ollama":
138
- return self._is_ollama_model_warm()
140
+ return True
139
141
  return bool(self._api_key)
140
142
 
141
- def _is_ollama_model_warm(self) -> bool:
142
- """Check if the LLM model is already loaded in Ollama."""
143
- try:
144
- model_base = self._model.split(":")[0]
145
- resp = httpx.get(
146
- f"{_OLLAMA_DEFAULT_BASE}/api/ps",
147
- timeout=httpx.Timeout(2.0),
148
- )
149
- if resp.status_code != 200:
150
- return False
151
- for m in resp.json().get("models", []):
152
- if model_base in m.get("name", ""):
153
- return True
154
- return False
155
- except Exception:
156
- return False
157
-
158
143
  @property
159
144
  def provider(self) -> str:
160
145
  return self._provider