local-knowledge 0.2.1__tar.gz → 0.2.2__tar.gz

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.
Files changed (19) hide show
  1. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/PKG-INFO +2 -2
  2. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/pyproject.toml +2 -2
  3. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/src/local_knowledge/cli_local.py +3 -0
  4. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/src/local_knowledge/crawl_local.py +13 -1
  5. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/src/local_knowledge/server_local.py +3 -1
  6. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/src/local_knowledge.egg-info/PKG-INFO +2 -2
  7. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/src/local_knowledge.egg-info/requires.txt +1 -1
  8. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/README.md +0 -0
  9. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/setup.cfg +0 -0
  10. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/src/local_knowledge/__init__.py +0 -0
  11. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/src/local_knowledge/settings_local.py +0 -0
  12. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/src/local_knowledge.egg-info/SOURCES.txt +0 -0
  13. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/src/local_knowledge.egg-info/dependency_links.txt +0 -0
  14. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/src/local_knowledge.egg-info/entry_points.txt +0 -0
  15. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/src/local_knowledge.egg-info/top_level.txt +0 -0
  16. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/tests/test_agent_doc_consistency.py +0 -0
  17. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/tests/test_crawl_local.py +0 -0
  18. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/tests/test_extract_files.py +0 -0
  19. {local_knowledge-0.2.1 → local_knowledge-0.2.2}/tests/test_server_flow_local.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: local-knowledge
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: Local file/folder indexer + grounded-Q&A MCP service — same engine as confluence-knowledge, no credentials needed
5
5
  License: MIT
6
6
  Project-URL: Repository, https://github.com/nkunal1992/agents
@@ -20,7 +20,7 @@ Requires-Dist: openpyxl>=3.1
20
20
  Requires-Dist: mcp<2,>=1.6
21
21
  Requires-Dist: pip-system-certs>=5.0
22
22
  Provides-Extra: models
23
- Requires-Dist: confluence-knowledge[models]>=0.5.1; extra == "models"
23
+ Requires-Dist: confluence-knowledge[models]>=0.5.2; extra == "models"
24
24
  Provides-Extra: dev
25
25
  Requires-Dist: pytest>=8.0; extra == "dev"
26
26
  Requires-Dist: pytest-cov>=5.0; extra == "dev"
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "local-knowledge"
7
- version = "0.2.1"
7
+ version = "0.2.2"
8
8
  description = "Local file/folder indexer + grounded-Q&A MCP service — same engine as confluence-knowledge, no credentials needed"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -27,7 +27,7 @@ dependencies = [
27
27
 
28
28
  [project.optional-dependencies]
29
29
  models = [
30
- "confluence-knowledge[models]>=0.5.1",
30
+ "confluence-knowledge[models]>=0.5.2",
31
31
  ]
32
32
  dev = [
33
33
  "pytest>=8.0",
@@ -79,6 +79,9 @@ def main() -> None:
79
79
  import subprocess
80
80
  cmd = [sys.executable, "-m", "pip", "install", "-U",
81
81
  "local-knowledge[models]"]
82
+ # a running MCP server holds open files — quit the IDE first
83
+ print("note: quit the IDE (or stop the MCP server) before updating —"
84
+ " a running server can't be replaced cleanly", flush=True)
82
85
  if os.name == "nt":
83
86
  # this exe is the running process on Windows — pip can't replace
84
87
  # a file that's in use; hand the user the equivalent command
@@ -32,7 +32,7 @@ def resolve_root(path: str) -> Path:
32
32
  return p.resolve()
33
33
 
34
34
 
35
- from confluence_knowledge.retrieval import EMBED_MODEL_ID as _MODEL_ID
35
+ from confluence_knowledge.retrieval import MODEL_MARKER as _MODEL_ID
36
36
 
37
37
 
38
38
  class LocalCrawler:
@@ -133,6 +133,18 @@ class LocalCrawler:
133
133
 
134
134
  queue: list[str] = job["queue"]
135
135
  errors: list[str] = job["errors"]
136
+ # Mid-crawl model change: already-embedded pages live in the OLD
137
+ # vector space — finishing would publish mixed dims. Wipe + fail;
138
+ # start_crawl rebuilds under the new model.
139
+ stamped = self.index.model_id()
140
+ if stamped is not None and stamped != _MODEL_ID and queue:
141
+ self.index.clear_scope()
142
+ errors = errors + [
143
+ (f"model changed mid-crawl ({stamped} → {_MODEL_ID}) — "
144
+ "index cleared; run start_crawl")]
145
+ self.index.save_job(job_id, "error", [], errors)
146
+ return {"job_id": job_id, "state": "error",
147
+ "remaining": 0, "errors": errors}
136
148
  seen_raw = self.index.meta_get(f"seen:{job_id}")
137
149
  seen: set[str] = set(json.loads(seen_raw)) if seen_raw else set()
138
150
  levels_raw = self.index.meta_get(f"levels:{job_id}")
@@ -14,7 +14,9 @@ import threading
14
14
  from confluence_knowledge.client import AccessError, SecurityException
15
15
  from confluence_knowledge.index import Index
16
16
  from confluence_knowledge.retrieval import (
17
- EMBED_MODEL_ID,
17
+ MODEL_MARKER as EMBED_MODEL_ID,
18
+ )
19
+ from confluence_knowledge.retrieval import (
18
20
  LocalEmbedder,
19
21
  LocalReranker,
20
22
  LocalSparseEmbedder,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: local-knowledge
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: Local file/folder indexer + grounded-Q&A MCP service — same engine as confluence-knowledge, no credentials needed
5
5
  License: MIT
6
6
  Project-URL: Repository, https://github.com/nkunal1992/agents
@@ -20,7 +20,7 @@ Requires-Dist: openpyxl>=3.1
20
20
  Requires-Dist: mcp<2,>=1.6
21
21
  Requires-Dist: pip-system-certs>=5.0
22
22
  Provides-Extra: models
23
- Requires-Dist: confluence-knowledge[models]>=0.5.1; extra == "models"
23
+ Requires-Dist: confluence-knowledge[models]>=0.5.2; extra == "models"
24
24
  Provides-Extra: dev
25
25
  Requires-Dist: pytest>=8.0; extra == "dev"
26
26
  Requires-Dist: pytest-cov>=5.0; extra == "dev"
@@ -12,4 +12,4 @@ pytest-cov>=5.0
12
12
  ruff>=0.6
13
13
 
14
14
  [models]
15
- confluence-knowledge[models]>=0.5.1
15
+ confluence-knowledge[models]>=0.5.2