nexor-mneme 0.1.0__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 (54) hide show
  1. nexor_mneme-0.1.0/.gitignore +10 -0
  2. nexor_mneme-0.1.0/PKG-INFO +83 -0
  3. nexor_mneme-0.1.0/README.md +47 -0
  4. nexor_mneme-0.1.0/pyproject.toml +61 -0
  5. nexor_mneme-0.1.0/src/nexor_memory/__init__.py +310 -0
  6. nexor_mneme-0.1.0/src/nexor_memory/_scip/NOTICE.md +13 -0
  7. nexor_mneme-0.1.0/src/nexor_memory/_scip/__init__.py +0 -0
  8. nexor_mneme-0.1.0/src/nexor_memory/_scip/scip.proto +897 -0
  9. nexor_mneme-0.1.0/src/nexor_memory/_scip/scip_pb2.py +89 -0
  10. nexor_mneme-0.1.0/src/nexor_memory/auto_profile.py +492 -0
  11. nexor_mneme-0.1.0/src/nexor_memory/benchmark.py +778 -0
  12. nexor_mneme-0.1.0/src/nexor_memory/category_extractor.py +431 -0
  13. nexor_mneme-0.1.0/src/nexor_memory/classifier.py +110 -0
  14. nexor_mneme-0.1.0/src/nexor_memory/code_chunker.py +874 -0
  15. nexor_mneme-0.1.0/src/nexor_memory/code_communities.py +96 -0
  16. nexor_mneme-0.1.0/src/nexor_memory/code_graph.py +811 -0
  17. nexor_mneme-0.1.0/src/nexor_memory/code_graph_age.py +150 -0
  18. nexor_mneme-0.1.0/src/nexor_memory/code_graph_cache.py +83 -0
  19. nexor_mneme-0.1.0/src/nexor_memory/code_graph_sync.py +159 -0
  20. nexor_mneme-0.1.0/src/nexor_memory/code_repomap.py +130 -0
  21. nexor_mneme-0.1.0/src/nexor_memory/contradiction.py +346 -0
  22. nexor_mneme-0.1.0/src/nexor_memory/embeddings.py +375 -0
  23. nexor_mneme-0.1.0/src/nexor_memory/entity_resolution.py +414 -0
  24. nexor_mneme-0.1.0/src/nexor_memory/episodic.py +289 -0
  25. nexor_mneme-0.1.0/src/nexor_memory/forgetting.py +505 -0
  26. nexor_mneme-0.1.0/src/nexor_memory/layering.py +270 -0
  27. nexor_mneme-0.1.0/src/nexor_memory/lifecycle.py +193 -0
  28. nexor_mneme-0.1.0/src/nexor_memory/mcp_server.py +187 -0
  29. nexor_mneme-0.1.0/src/nexor_memory/observation.py +360 -0
  30. nexor_mneme-0.1.0/src/nexor_memory/obsidian_export.py +208 -0
  31. nexor_mneme-0.1.0/src/nexor_memory/offload.py +122 -0
  32. nexor_mneme-0.1.0/src/nexor_memory/privacy.py +345 -0
  33. nexor_mneme-0.1.0/src/nexor_memory/privacy_rules.default.yaml +41 -0
  34. nexor_mneme-0.1.0/src/nexor_memory/reranker.py +360 -0
  35. nexor_mneme-0.1.0/src/nexor_memory/result_factory.py +74 -0
  36. nexor_mneme-0.1.0/src/nexor_memory/sanitizer.py +145 -0
  37. nexor_mneme-0.1.0/src/nexor_memory/scip_import.py +188 -0
  38. nexor_mneme-0.1.0/src/nexor_memory/semantic.py +697 -0
  39. nexor_mneme-0.1.0/src/nexor_memory/server/__init__.py +11 -0
  40. nexor_mneme-0.1.0/src/nexor_memory/server/__main__.py +25 -0
  41. nexor_mneme-0.1.0/src/nexor_memory/server/app.py +64 -0
  42. nexor_mneme-0.1.0/src/nexor_memory/server/deps.py +143 -0
  43. nexor_mneme-0.1.0/src/nexor_memory/server/routers/__init__.py +5 -0
  44. nexor_mneme-0.1.0/src/nexor_memory/server/routers/code.py +60 -0
  45. nexor_mneme-0.1.0/src/nexor_memory/server/routers/layers.py +62 -0
  46. nexor_mneme-0.1.0/src/nexor_memory/server/routers/memory.py +64 -0
  47. nexor_mneme-0.1.0/src/nexor_memory/server/routers/tasks.py +140 -0
  48. nexor_mneme-0.1.0/src/nexor_memory/short_term.py +187 -0
  49. nexor_mneme-0.1.0/src/nexor_memory/symbolic.py +346 -0
  50. nexor_mneme-0.1.0/src/nexor_memory/sync_pipeline.py +146 -0
  51. nexor_mneme-0.1.0/src/nexor_memory/team_db.py +118 -0
  52. nexor_mneme-0.1.0/src/nexor_memory/temporal.py +378 -0
  53. nexor_mneme-0.1.0/src/nexor_memory/warmup.py +47 -0
  54. nexor_mneme-0.1.0/src/nexor_memory/webhooks.py +203 -0
@@ -0,0 +1,10 @@
1
+ __pycache__/
2
+ *.pyc
3
+ .venv/
4
+ .ruff_cache/
5
+ .pytest_cache/
6
+ .mypy_cache/
7
+ dist/
8
+ build/
9
+ *.egg-info/
10
+ .codegraph-nightly.log
@@ -0,0 +1,83 @@
1
+ Metadata-Version: 2.4
2
+ Name: nexor-mneme
3
+ Version: 0.1.0
4
+ Summary: Open memory engine + code intelligence for AI agents
5
+ Project-URL: Homepage, https://github.com/nexorhq/nexor-mneme
6
+ Project-URL: Repository, https://github.com/nexorhq/nexor-mneme
7
+ Author: Giovanni Consiglio
8
+ License-Expression: MIT
9
+ Keywords: ai-agents,code-intelligence,knowledge-graph,memory,nexor,rag,scip
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
14
+ Classifier: Topic :: Software Development :: Libraries
15
+ Requires-Python: >=3.12
16
+ Requires-Dist: asyncpg>=0.29
17
+ Requires-Dist: httpx>=0.27
18
+ Requires-Dist: nexor-core>=0.1.0
19
+ Requires-Dist: pyyaml>=6.0
20
+ Requires-Dist: qdrant-client>=1.7
21
+ Requires-Dist: redis>=5.0
22
+ Provides-Extra: codegraph
23
+ Requires-Dist: tree-sitter-languages>=1.10; extra == 'codegraph'
24
+ Requires-Dist: tree-sitter<0.22,>=0.21; extra == 'codegraph'
25
+ Provides-Extra: hybrid
26
+ Requires-Dist: flagembedding>=1.2; extra == 'hybrid'
27
+ Provides-Extra: mcp
28
+ Requires-Dist: httpx>=0.27; extra == 'mcp'
29
+ Requires-Dist: mcp>=1.2; extra == 'mcp'
30
+ Provides-Extra: scip
31
+ Requires-Dist: protobuf>=5; extra == 'scip'
32
+ Provides-Extra: server
33
+ Requires-Dist: fastapi>=0.110; extra == 'server'
34
+ Requires-Dist: uvicorn>=0.30; extra == 'server'
35
+ Description-Content-Type: text/markdown
36
+
37
+ # nexor-mneme
38
+
39
+ > Persistent memory + code-intelligence for AI agents — a knowledge layer you self-host.
40
+
41
+ `nexor-mneme` is the open memory engine of the [Nexor](https://github.com/nexorhq) project
42
+ (*mneme*, μνήμη — "memory"). It gives agents long-term semantic memory **and** a queryable
43
+ structural map of your codebase, so they answer *"what did we decide"* and *"what calls this
44
+ function / what's the blast radius"* without re-reading everything.
45
+
46
+ Dependency-light core; heavier capabilities are optional extras. Run it standalone — **no
47
+ dependency on anyone's personal orchestrator or daemon**.
48
+
49
+ ## What's inside
50
+
51
+ - **Semantic memory** — hybrid (dense+sparse) retrieval over Qdrant, cross-encoder reranking,
52
+ forgetting, contradiction & entity resolution, auto-profile.
53
+ - **Progressive layering (L0→L3)** — a semantic pyramid with provenance + deterministic
54
+ drill-down from an abstraction to its evidence.
55
+ - **Code structure graph** — multi-language (Python via stdlib `ast`; JS/TS/Go via tree-sitter),
56
+ precise resolution via **SCIP** ingest, blast-radius queries, PageRank repo-map, community
57
+ detection, incremental cache — landed in Apache AGE.
58
+ - **Symbolic task memory** — Mermaid task canvases with offload-by-reference.
59
+ - **Obsidian export** — a human-browsable, interlinked vault of the whole graph.
60
+ - **Standalone service** — a FastAPI server + docker-compose (`server` extra).
61
+
62
+ ## Install
63
+
64
+ ```bash
65
+ pip install nexor-mneme # core memory + code graph (Python)
66
+ pip install "nexor-mneme[codegraph]" # + tree-sitter (JS/TS/Go)
67
+ pip install "nexor-mneme[scip]" # + SCIP precise resolution
68
+ pip install "nexor-mneme[server]" # + FastAPI standalone service
69
+ ```
70
+
71
+ ## Run your own instance
72
+
73
+ ```bash
74
+ git clone https://github.com/nexorhq/nexor-mneme && cd nexor-mneme/deploy
75
+ docker compose up -d # API on http://localhost:8200
76
+ curl http://localhost:8200/health
77
+ ```
78
+
79
+ See the [deploy guide](https://github.com/nexorhq/nexor-mneme/blob/main/deploy/README.md).
80
+
81
+ ## License
82
+
83
+ MIT — see [LICENSE](https://github.com/nexorhq/nexor-mneme/blob/main/LICENSE).
@@ -0,0 +1,47 @@
1
+ # nexor-mneme
2
+
3
+ > Persistent memory + code-intelligence for AI agents — a knowledge layer you self-host.
4
+
5
+ `nexor-mneme` is the open memory engine of the [Nexor](https://github.com/nexorhq) project
6
+ (*mneme*, μνήμη — "memory"). It gives agents long-term semantic memory **and** a queryable
7
+ structural map of your codebase, so they answer *"what did we decide"* and *"what calls this
8
+ function / what's the blast radius"* without re-reading everything.
9
+
10
+ Dependency-light core; heavier capabilities are optional extras. Run it standalone — **no
11
+ dependency on anyone's personal orchestrator or daemon**.
12
+
13
+ ## What's inside
14
+
15
+ - **Semantic memory** — hybrid (dense+sparse) retrieval over Qdrant, cross-encoder reranking,
16
+ forgetting, contradiction & entity resolution, auto-profile.
17
+ - **Progressive layering (L0→L3)** — a semantic pyramid with provenance + deterministic
18
+ drill-down from an abstraction to its evidence.
19
+ - **Code structure graph** — multi-language (Python via stdlib `ast`; JS/TS/Go via tree-sitter),
20
+ precise resolution via **SCIP** ingest, blast-radius queries, PageRank repo-map, community
21
+ detection, incremental cache — landed in Apache AGE.
22
+ - **Symbolic task memory** — Mermaid task canvases with offload-by-reference.
23
+ - **Obsidian export** — a human-browsable, interlinked vault of the whole graph.
24
+ - **Standalone service** — a FastAPI server + docker-compose (`server` extra).
25
+
26
+ ## Install
27
+
28
+ ```bash
29
+ pip install nexor-mneme # core memory + code graph (Python)
30
+ pip install "nexor-mneme[codegraph]" # + tree-sitter (JS/TS/Go)
31
+ pip install "nexor-mneme[scip]" # + SCIP precise resolution
32
+ pip install "nexor-mneme[server]" # + FastAPI standalone service
33
+ ```
34
+
35
+ ## Run your own instance
36
+
37
+ ```bash
38
+ git clone https://github.com/nexorhq/nexor-mneme && cd nexor-mneme/deploy
39
+ docker compose up -d # API on http://localhost:8200
40
+ curl http://localhost:8200/health
41
+ ```
42
+
43
+ See the [deploy guide](https://github.com/nexorhq/nexor-mneme/blob/main/deploy/README.md).
44
+
45
+ ## License
46
+
47
+ MIT — see [LICENSE](https://github.com/nexorhq/nexor-mneme/blob/main/LICENSE).
@@ -0,0 +1,61 @@
1
+ [project]
2
+ name = "nexor-mneme"
3
+ version = "0.1.0"
4
+ description = "Open memory engine + code intelligence for AI agents"
5
+ readme = "README.md"
6
+ requires-python = ">=3.12"
7
+ license = "MIT"
8
+ authors = [{ name = "Giovanni Consiglio" }]
9
+ keywords = [
10
+ "nexor",
11
+ "ai-agents",
12
+ "memory",
13
+ "code-intelligence",
14
+ "knowledge-graph",
15
+ "rag",
16
+ "scip",
17
+ ]
18
+ classifiers = [
19
+ "Development Status :: 4 - Beta",
20
+ "Intended Audience :: Developers",
21
+ "Programming Language :: Python :: 3.12",
22
+ "Topic :: Software Development :: Libraries",
23
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
24
+ ]
25
+ dependencies = [
26
+ "nexor-core>=0.1.0",
27
+ "redis>=5.0",
28
+ "asyncpg>=0.29",
29
+ "qdrant-client>=1.7",
30
+ "httpx>=0.27",
31
+ "pyyaml>=6.0",
32
+ ]
33
+
34
+ [project.optional-dependencies]
35
+ hybrid = ["FlagEmbedding>=1.2"]
36
+ # Multi-language code structure graph (tree-sitter). Optional: the Python
37
+ # extractor uses the stdlib ast and needs none of this.
38
+ codegraph = ["tree-sitter-languages>=1.10", "tree-sitter>=0.21,<0.22"]
39
+ # Precise resolution by ingesting SCIP indexes (scip-typescript/python/…).
40
+ scip = ["protobuf>=5"]
41
+ # Standalone deployable service (FastAPI) — run your own nexor-mneme instance.
42
+ server = ["fastapi>=0.110", "uvicorn>=0.30"]
43
+ # MCP server: expose a running nexor-mneme instance to Claude Code / any agent.
44
+ mcp = ["mcp>=1.2", "httpx>=0.27"]
45
+
46
+ [project.scripts]
47
+ nexor-mneme-mcp = "nexor_memory.mcp_server:main"
48
+
49
+ [build-system]
50
+ requires = ["hatchling"]
51
+ build-backend = "hatchling.build"
52
+
53
+ [project.urls]
54
+ Homepage = "https://github.com/nexorhq/nexor-mneme"
55
+ Repository = "https://github.com/nexorhq/nexor-mneme"
56
+
57
+ [tool.hatch.build.targets.wheel]
58
+ packages = ["src/nexor_memory"]
59
+
60
+ [tool.uv.sources]
61
+ nexor-core = { workspace = true }
@@ -0,0 +1,310 @@
1
+ """Nexor Memory — Memory layer (short-term, episodic, semantic).
2
+
3
+ Sprint 2 additions: contradiction resolution, temporal extraction,
4
+ entity resolution, cross-encoder reranking.
5
+
6
+ Sprint 3 additions: category extraction, auto-profile generation,
7
+ AST-aware code chunking.
8
+
9
+ Sprint 5 additions: memory quality benchmark, semantic auto-forgetting.
10
+
11
+ Sprint 6 additions: hybrid search (dense+sparse), HybridEmbedding,
12
+ BGEM3HybridProvider, RRF fusion in Qdrant, migration script.
13
+ """
14
+
15
+ __version__ = "0.6.0"
16
+
17
+ from nexor_memory.auto_profile import (
18
+ AutoProfileGenerator,
19
+ UserProfile,
20
+ export_profile_markdown,
21
+ )
22
+ from nexor_memory.benchmark import (
23
+ ABComparison,
24
+ BenchmarkCategory,
25
+ BenchmarkQuestion,
26
+ BenchmarkRun,
27
+ MemoryBenchmarkRunner,
28
+ QuestionResult,
29
+ aggregate_results,
30
+ compare_runs,
31
+ evaluate_question,
32
+ format_ab_comparison,
33
+ format_benchmark_run,
34
+ load_default_test_set,
35
+ )
36
+ from nexor_memory.category_extractor import (
37
+ CategoryExtractor,
38
+ CategoryResult,
39
+ MemoryCategory,
40
+ )
41
+ from nexor_memory.code_chunker import (
42
+ CodeChunk,
43
+ chunk_code,
44
+ chunk_diff,
45
+ detect_language,
46
+ )
47
+ from nexor_memory.code_communities import (
48
+ Community,
49
+ communities,
50
+ detect_communities,
51
+ )
52
+ from nexor_memory.code_graph import (
53
+ SUPPORTED_EXTENSIONS,
54
+ CodeEdge,
55
+ CodeGraph,
56
+ CodeGraphBuilder,
57
+ CodeNode,
58
+ PythonAstExtractor,
59
+ TreeSitterExtractor,
60
+ build_code_graph,
61
+ )
62
+ from nexor_memory.code_graph_age import CodeGraphStore
63
+ from nexor_memory.code_graph_cache import (
64
+ FileGraphCache,
65
+ file_sha256,
66
+ )
67
+ from nexor_memory.code_graph_sync import (
68
+ CodeGraphSync,
69
+ SourceSpec,
70
+ SyncResult,
71
+ build_for_spec,
72
+ load_sources,
73
+ )
74
+ from nexor_memory.code_repomap import (
75
+ rank_nodes,
76
+ ranked_symbols,
77
+ repo_map,
78
+ )
79
+ from nexor_memory.contradiction import (
80
+ ContradictionCheck,
81
+ ContradictionResolver,
82
+ ContradictionResult,
83
+ ResolutionStrategy,
84
+ )
85
+ from nexor_memory.embeddings import (
86
+ BaseEmbeddingProvider,
87
+ BGEM3HybridProvider,
88
+ FakeEmbeddingProvider,
89
+ HybridEmbedding,
90
+ OllamaEmbeddingProvider,
91
+ )
92
+ from nexor_memory.entity_resolution import (
93
+ EntityCatalog,
94
+ EntityResolver,
95
+ ResolvedEntity,
96
+ fuzzy_similarity,
97
+ levenshtein_distance,
98
+ )
99
+ from nexor_memory.episodic import (
100
+ BaseEpisodicMemory,
101
+ InMemoryEpisodicMemory,
102
+ PostgresEpisodicMemory,
103
+ )
104
+ from nexor_memory.forgetting import (
105
+ DEFAULT_ARCHIVE_THRESHOLD,
106
+ FORGETTABLE_COLLECTIONS,
107
+ PROTECTED_COLLECTIONS,
108
+ ForgettingResult,
109
+ RelevanceScore,
110
+ SemanticForgettingEngine,
111
+ compute_access_score,
112
+ compute_importance_score,
113
+ compute_recency_score,
114
+ format_forgetting_result,
115
+ score_memory,
116
+ )
117
+ from nexor_memory.layering import (
118
+ DEFAULT_TIER,
119
+ TIER_BY_COLLECTION,
120
+ LayeredMemory,
121
+ MemoryTier,
122
+ ProvenanceRef,
123
+ )
124
+ from nexor_memory.lifecycle import (
125
+ cleanup_old_events,
126
+ generate_daily_summary,
127
+ generate_weekly_summary,
128
+ )
129
+ from nexor_memory.observation import (
130
+ Observation,
131
+ ObservationCompressor,
132
+ RawToolEvent,
133
+ should_compress,
134
+ )
135
+ from nexor_memory.obsidian_export import (
136
+ MemoryRecord,
137
+ ObsidianVaultWriter,
138
+ VaultNote,
139
+ code_graph_to_notes,
140
+ memories_to_notes,
141
+ slugify,
142
+ )
143
+ from nexor_memory.offload import (
144
+ DEFAULT_OFFLOAD_THRESHOLD,
145
+ OFFLOAD_COLLECTION,
146
+ LogOffloader,
147
+ OffloadResult,
148
+ )
149
+ from nexor_memory.reranker import (
150
+ CrossEncoderReranker,
151
+ RerankResult,
152
+ rerank_with_cross_encoder,
153
+ )
154
+ from nexor_memory.result_factory import result_from_tool_result
155
+ from nexor_memory.scip_import import (
156
+ ScipDocument,
157
+ ScipOccurrence,
158
+ load_scip_index,
159
+ parse_scip_symbol,
160
+ scip_to_code_graph,
161
+ )
162
+ from nexor_memory.semantic import (
163
+ BaseSemanticMemory,
164
+ InMemorySemanticMemory,
165
+ QdrantSemanticMemory,
166
+ )
167
+ from nexor_memory.short_term import (
168
+ BaseShortTermMemory,
169
+ InMemoryShortTermMemory,
170
+ RedisShortTermMemory,
171
+ )
172
+ from nexor_memory.symbolic import (
173
+ SymbolicEdge,
174
+ SymbolicNode,
175
+ SymbolicTaskMemory,
176
+ TaskCanvas,
177
+ )
178
+ from nexor_memory.temporal import (
179
+ DateExtractor,
180
+ TemporalMetadata,
181
+ build_temporal_filter,
182
+ compute_temporal_boost,
183
+ filter_by_temporal_range,
184
+ )
185
+ from nexor_memory.warmup import WarmupSchedule
186
+
187
+ __all__ = [
188
+ # Sprint 5 — Forgetting
189
+ "DEFAULT_ARCHIVE_THRESHOLD",
190
+ "DEFAULT_OFFLOAD_THRESHOLD",
191
+ "DEFAULT_TIER",
192
+ "FORGETTABLE_COLLECTIONS",
193
+ "OFFLOAD_COLLECTION",
194
+ "PROTECTED_COLLECTIONS",
195
+ "SUPPORTED_EXTENSIONS",
196
+ "TIER_BY_COLLECTION",
197
+ # Sprint 5 — Benchmark
198
+ "ABComparison",
199
+ # Existing
200
+ "AutoProfileGenerator",
201
+ "BGEM3HybridProvider",
202
+ "BaseEmbeddingProvider",
203
+ "BaseEpisodicMemory",
204
+ "BaseSemanticMemory",
205
+ "BaseShortTermMemory",
206
+ "BenchmarkCategory",
207
+ "BenchmarkQuestion",
208
+ "BenchmarkRun",
209
+ "CategoryExtractor",
210
+ "CategoryResult",
211
+ "CodeChunk",
212
+ "CodeEdge",
213
+ "CodeGraph",
214
+ "CodeGraphBuilder",
215
+ "CodeGraphStore",
216
+ "CodeGraphSync",
217
+ "CodeNode",
218
+ "Community",
219
+ "ContradictionCheck",
220
+ "ContradictionResolver",
221
+ "ContradictionResult",
222
+ "CrossEncoderReranker",
223
+ "DateExtractor",
224
+ "EntityCatalog",
225
+ "EntityResolver",
226
+ "FakeEmbeddingProvider",
227
+ "FileGraphCache",
228
+ "ForgettingResult",
229
+ "HybridEmbedding",
230
+ "InMemoryEpisodicMemory",
231
+ "InMemorySemanticMemory",
232
+ "InMemoryShortTermMemory",
233
+ "LayeredMemory",
234
+ "LogOffloader",
235
+ "MemoryBenchmarkRunner",
236
+ "MemoryCategory",
237
+ "MemoryRecord",
238
+ "MemoryTier",
239
+ "Observation",
240
+ "ObservationCompressor",
241
+ "ObsidianVaultWriter",
242
+ "OffloadResult",
243
+ "OllamaEmbeddingProvider",
244
+ "PostgresEpisodicMemory",
245
+ "ProvenanceRef",
246
+ "PythonAstExtractor",
247
+ "QdrantSemanticMemory",
248
+ "QuestionResult",
249
+ "RawToolEvent",
250
+ "RedisShortTermMemory",
251
+ "RelevanceScore",
252
+ "RerankResult",
253
+ "ResolutionStrategy",
254
+ "ResolvedEntity",
255
+ "ScipDocument",
256
+ "ScipOccurrence",
257
+ "SemanticForgettingEngine",
258
+ "SourceSpec",
259
+ "SymbolicEdge",
260
+ "SymbolicNode",
261
+ "SymbolicTaskMemory",
262
+ "SyncResult",
263
+ "TaskCanvas",
264
+ "TemporalMetadata",
265
+ "TreeSitterExtractor",
266
+ "UserProfile",
267
+ "VaultNote",
268
+ "WarmupSchedule",
269
+ "aggregate_results",
270
+ "build_code_graph",
271
+ "build_for_spec",
272
+ "build_temporal_filter",
273
+ "chunk_code",
274
+ "chunk_diff",
275
+ "cleanup_old_events",
276
+ "code_graph_to_notes",
277
+ "communities",
278
+ "compare_runs",
279
+ "compute_access_score",
280
+ "compute_importance_score",
281
+ "compute_recency_score",
282
+ "compute_temporal_boost",
283
+ "detect_communities",
284
+ "detect_language",
285
+ "evaluate_question",
286
+ "export_profile_markdown",
287
+ "file_sha256",
288
+ "filter_by_temporal_range",
289
+ "format_ab_comparison",
290
+ "format_benchmark_run",
291
+ "format_forgetting_result",
292
+ "fuzzy_similarity",
293
+ "generate_daily_summary",
294
+ "generate_weekly_summary",
295
+ "levenshtein_distance",
296
+ "load_default_test_set",
297
+ "load_scip_index",
298
+ "load_sources",
299
+ "memories_to_notes",
300
+ "parse_scip_symbol",
301
+ "rank_nodes",
302
+ "ranked_symbols",
303
+ "repo_map",
304
+ "rerank_with_cross_encoder",
305
+ "result_from_tool_result",
306
+ "scip_to_code_graph",
307
+ "score_memory",
308
+ "should_compress",
309
+ "slugify",
310
+ ]
@@ -0,0 +1,13 @@
1
+ # Vendored SCIP schema
2
+
3
+ `scip.proto` is vendored from [sourcegraph/scip](https://github.com/sourcegraph/scip)
4
+ (SCIP Code Intelligence Protocol), licensed **Apache-2.0**.
5
+
6
+ `scip_pb2.py` is generated from it via `grpc_tools.protoc` and committed so that
7
+ runtime only needs `protobuf` (the `scip` optional extra), not a protoc toolchain.
8
+
9
+ To regenerate after updating `scip.proto`:
10
+
11
+ ```bash
12
+ python -m grpc_tools.protoc -I. --python_out=. scip.proto
13
+ ```
File without changes