codespine 1.0.8__tar.gz → 1.0.10__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.
- {codespine-1.0.8 → codespine-1.0.10}/PKG-INFO +35 -10
- {codespine-1.0.8 → codespine-1.0.10}/README.md +33 -9
- {codespine-1.0.8 → codespine-1.0.10}/codespine/__init__.py +1 -1
- {codespine-1.0.8 → codespine-1.0.10}/codespine/cli.py +624 -29
- {codespine-1.0.8 → codespine-1.0.10}/codespine/config.py +5 -2
- {codespine-1.0.8 → codespine-1.0.10}/codespine/db/_cypher_compat.py +65 -12
- {codespine-1.0.8 → codespine-1.0.10}/codespine/db/duckdb_store.py +21 -11
- codespine-1.0.10/codespine/health.py +123 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/indexer/call_resolver.py +6 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/indexer/engine.py +66 -38
- {codespine-1.0.8 → codespine-1.0.10}/codespine/mcp/server.py +17 -2
- codespine-1.0.10/codespine/tasks.py +137 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine.egg-info/PKG-INFO +35 -10
- {codespine-1.0.8 → codespine-1.0.10}/codespine.egg-info/SOURCES.txt +5 -1
- {codespine-1.0.8 → codespine-1.0.10}/codespine.egg-info/requires.txt +2 -0
- {codespine-1.0.8 → codespine-1.0.10}/pyproject.toml +5 -1
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_call_resolver.py +34 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_cypher_compat.py +25 -2
- codespine-1.0.10/tests/test_health.py +77 -0
- codespine-1.0.10/tests/test_tasks.py +34 -0
- {codespine-1.0.8 → codespine-1.0.10}/LICENSE +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/analysis/__init__.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/analysis/community.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/analysis/context.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/analysis/coupling.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/analysis/crossmodule.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/analysis/deadcode.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/analysis/flow.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/analysis/impact.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/cache/__init__.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/cache/result_cache.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/db/__init__.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/db/schema.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/db/store.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/diff/__init__.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/diff/branch_diff.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/guide.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/indexer/__init__.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/indexer/di_resolver.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/indexer/java_parser.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/indexer/symbol_builder.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/mcp/__init__.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/noise/__init__.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/noise/blocklist.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/overlay/__init__.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/overlay/git_state.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/overlay/merge.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/overlay/store.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/search/__init__.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/search/bm25.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/search/fuzzy.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/search/hybrid.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/search/rrf.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/search/vector.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/sharding/__init__.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/sharding/router.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/sharding/store.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/watch/__init__.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/watch/git_hook.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine/watch/watcher.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine.egg-info/dependency_links.txt +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine.egg-info/entry_points.txt +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/codespine.egg-info/top_level.txt +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/gindex.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/setup.cfg +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_branch_diff_normalize.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_community_detection.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_deadcode.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_duckdb_store.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_index_and_hybrid.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_java_parser.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_multimodule_index.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_overlay.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_parse_resilience.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_result_cache.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_search_ranking.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_sharding.py +0 -0
- {codespine-1.0.8 → codespine-1.0.10}/tests/test_store_recovery.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codespine
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.10
|
|
4
4
|
Summary: Local Java code intelligence indexer backed by a graph database
|
|
5
5
|
Author: CodeSpine contributors
|
|
6
6
|
License: MIT License
|
|
@@ -56,6 +56,7 @@ Requires-Dist: numpy; extra == "ml"
|
|
|
56
56
|
Provides-Extra: community
|
|
57
57
|
Requires-Dist: igraph; extra == "community"
|
|
58
58
|
Requires-Dist: leidenalg; extra == "community"
|
|
59
|
+
Provides-Extra: ui
|
|
59
60
|
Provides-Extra: full
|
|
60
61
|
Requires-Dist: sentence-transformers; extra == "full"
|
|
61
62
|
Requires-Dist: numpy; extra == "full"
|
|
@@ -65,7 +66,7 @@ Dynamic: license-file
|
|
|
65
66
|
|
|
66
67
|
# CodeSpine
|
|
67
68
|
|
|
68
|
-
**v1.0.
|
|
69
|
+
**v1.0.10** — Local Java code intelligence for coding agents, backed by a graph database.
|
|
69
70
|
|
|
70
71
|
CodeSpine cuts token burn for coding agents working on Java codebases.
|
|
71
72
|
|
|
@@ -95,12 +96,22 @@ File changes are written directly to the graph and are immediately queryable —
|
|
|
95
96
|
pip install codespine
|
|
96
97
|
```
|
|
97
98
|
|
|
99
|
+
Default install includes the CLI, MCP server, Java indexer, watch mode, health checks, background task tracking, and graph/search commands.
|
|
100
|
+
|
|
98
101
|
Optional semantic search (sentence-transformers):
|
|
99
102
|
|
|
100
103
|
```bash
|
|
101
104
|
pip install "codespine[ml]"
|
|
102
105
|
```
|
|
103
106
|
|
|
107
|
+
Add the local index explorer UI:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
pip install "codespine[ui]"
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
The current lite UI is dependency-free and served locally by CodeSpine; the `ui` extra is the stable add-on install target for the browser explorer.
|
|
114
|
+
|
|
104
115
|
Everything at once (ml + community detection):
|
|
105
116
|
|
|
106
117
|
```bash
|
|
@@ -124,8 +135,7 @@ Downloads and caches the embedding model. Only needed once. After this, `--embed
|
|
|
124
135
|
codespine analyse /path/to/java-project
|
|
125
136
|
|
|
126
137
|
# 2. (Optional) Run the expensive deep passes: communities, flows, dead code, coupling
|
|
127
|
-
|
|
128
|
-
codespine analyse /path/to/java-project --deep
|
|
138
|
+
codespine analyse /path/to/java-project --complete --deep
|
|
129
139
|
|
|
130
140
|
# 3. (Optional) Add semantic embeddings for concept-level search
|
|
131
141
|
codespine analyse /path/to/java-project --embed
|
|
@@ -150,6 +160,8 @@ Detecting execution flows... 34 processes found
|
|
|
150
160
|
Finding dead code... 12 unreachable symbols
|
|
151
161
|
Analyzing git history... 18 coupled file pairs
|
|
152
162
|
Generating embeddings... 623 vectors stored
|
|
163
|
+
Index self-test... passed
|
|
164
|
+
Index health... no anomalies
|
|
153
165
|
|
|
154
166
|
Done in 4.2s — 623 symbols, 1,847 edges, 8 clusters, 34 flows
|
|
155
167
|
Publishing read replica... MCP will reload automatically
|
|
@@ -313,10 +325,17 @@ Higher-level tools designed to answer full agent questions in a single call, wit
|
|
|
313
325
|
# Indexing
|
|
314
326
|
codespine analyse <path> # incremental index (default)
|
|
315
327
|
codespine analyse <path> --full # full re-index from scratch
|
|
316
|
-
codespine analyse <path> --
|
|
317
|
-
codespine analyse <path> --
|
|
328
|
+
codespine analyse <path> --budget 90 # fast index with a resolver deadline
|
|
329
|
+
codespine analyse <path> --complete --deep # + communities, flows, dead code, coupling
|
|
330
|
+
codespine analyse <path> --complete --incremental-deep
|
|
318
331
|
codespine analyse <path> --embed # + vector embeddings
|
|
319
332
|
|
|
333
|
+
# Background jobs and local UI
|
|
334
|
+
codespine background # background task progress
|
|
335
|
+
codespine tasks # running/recent background work
|
|
336
|
+
codespine ui # local read-only index explorer
|
|
337
|
+
codespine ui --open # open http://127.0.0.1:8765
|
|
338
|
+
|
|
320
339
|
# Live watch
|
|
321
340
|
codespine watch --path . # file-save-triggered direct-to-graph writes
|
|
322
341
|
codespine watch --path . --install-hook # also install post-commit git hook
|
|
@@ -334,6 +353,8 @@ codespine diff main..feature # symbol-level branch diff
|
|
|
334
353
|
|
|
335
354
|
# Status & Info
|
|
336
355
|
codespine stats # per-project stats (--shards for shard layout)
|
|
356
|
+
codespine health # index coverage and anomaly dashboard
|
|
357
|
+
codespine self-test # smoke queries for schema/translator checks
|
|
337
358
|
codespine list # indexed projects
|
|
338
359
|
codespine status # service and database status
|
|
339
360
|
codespine guide # tool catalog and workflows
|
|
@@ -360,7 +381,7 @@ codespine force-reset # emergency: delete all data files
|
|
|
360
381
|
|
|
361
382
|
`analyse` defaults to incremental mode. Repeat runs only process changed files and are fast.
|
|
362
383
|
|
|
363
|
-
|
|
384
|
+
`analyse` runs in fast mode by default: it indexes the core graph, publishes that read replica from a detached process, then continues communities, flows, dead code, coupling, and cross-module enrichment in the background. Use `codespine tasks` or `codespine ui` to watch that work. Use `--complete --deep` when you want those passes refreshed before the command returns.
|
|
364
385
|
|
|
365
386
|
---
|
|
366
387
|
|
|
@@ -546,12 +567,16 @@ The deep analysis phase covers four passes that are expensive but optional:
|
|
|
546
567
|
| Dead code | Finds methods with no callers (Java-aware exemptions) | Cleanup audits |
|
|
547
568
|
| Change coupling | Analyses git history for co-changed file pairs | `get_change_coupling`, `related` |
|
|
548
569
|
|
|
549
|
-
**
|
|
570
|
+
**Fast default:** `codespine analyse` prioritizes a queryable core index. Communities, flows, dead-code, git coupling, and cross-module links are queued in a detached background enrichment job unless you use `--complete`.
|
|
571
|
+
|
|
572
|
+
**Health checks:** every analyse run now performs a small self-test query suite and reports index anomalies such as large projects with zero call edges. Use `codespine health` for the terminal dashboard or `codespine self-test --json` in CI.
|
|
573
|
+
|
|
574
|
+
**Background visibility:** `codespine background` shows running background job progress in the terminal, and `codespine tasks` remains available as the shorter registry view. `codespine ui` serves a local read-only index explorer with project counts, index health, and the same background task state at `http://127.0.0.1:8765`.
|
|
550
575
|
|
|
551
|
-
**
|
|
576
|
+
**Complete deep:** `--complete --deep` runs the expensive enrichment passes before returning. `--complete --incremental-deep` combines incremental file indexing with a forced full deep pass.
|
|
552
577
|
|
|
553
578
|
```bash
|
|
554
|
-
codespine analyse . --incremental-deep
|
|
579
|
+
codespine analyse . --complete --incremental-deep
|
|
555
580
|
```
|
|
556
581
|
|
|
557
582
|
**Embeddings** (`--embed`) are independent of deep analysis. Without them, BM25 + fuzzy search still works. Add embeddings when you need concept-level retrieval ("find retry logic", "find payment processing").
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CodeSpine
|
|
2
2
|
|
|
3
|
-
**v1.0.
|
|
3
|
+
**v1.0.10** — Local Java code intelligence for coding agents, backed by a graph database.
|
|
4
4
|
|
|
5
5
|
CodeSpine cuts token burn for coding agents working on Java codebases.
|
|
6
6
|
|
|
@@ -30,12 +30,22 @@ File changes are written directly to the graph and are immediately queryable —
|
|
|
30
30
|
pip install codespine
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
+
Default install includes the CLI, MCP server, Java indexer, watch mode, health checks, background task tracking, and graph/search commands.
|
|
34
|
+
|
|
33
35
|
Optional semantic search (sentence-transformers):
|
|
34
36
|
|
|
35
37
|
```bash
|
|
36
38
|
pip install "codespine[ml]"
|
|
37
39
|
```
|
|
38
40
|
|
|
41
|
+
Add the local index explorer UI:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pip install "codespine[ui]"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
The current lite UI is dependency-free and served locally by CodeSpine; the `ui` extra is the stable add-on install target for the browser explorer.
|
|
48
|
+
|
|
39
49
|
Everything at once (ml + community detection):
|
|
40
50
|
|
|
41
51
|
```bash
|
|
@@ -59,8 +69,7 @@ Downloads and caches the embedding model. Only needed once. After this, `--embed
|
|
|
59
69
|
codespine analyse /path/to/java-project
|
|
60
70
|
|
|
61
71
|
# 2. (Optional) Run the expensive deep passes: communities, flows, dead code, coupling
|
|
62
|
-
|
|
63
|
-
codespine analyse /path/to/java-project --deep
|
|
72
|
+
codespine analyse /path/to/java-project --complete --deep
|
|
64
73
|
|
|
65
74
|
# 3. (Optional) Add semantic embeddings for concept-level search
|
|
66
75
|
codespine analyse /path/to/java-project --embed
|
|
@@ -85,6 +94,8 @@ Detecting execution flows... 34 processes found
|
|
|
85
94
|
Finding dead code... 12 unreachable symbols
|
|
86
95
|
Analyzing git history... 18 coupled file pairs
|
|
87
96
|
Generating embeddings... 623 vectors stored
|
|
97
|
+
Index self-test... passed
|
|
98
|
+
Index health... no anomalies
|
|
88
99
|
|
|
89
100
|
Done in 4.2s — 623 symbols, 1,847 edges, 8 clusters, 34 flows
|
|
90
101
|
Publishing read replica... MCP will reload automatically
|
|
@@ -248,10 +259,17 @@ Higher-level tools designed to answer full agent questions in a single call, wit
|
|
|
248
259
|
# Indexing
|
|
249
260
|
codespine analyse <path> # incremental index (default)
|
|
250
261
|
codespine analyse <path> --full # full re-index from scratch
|
|
251
|
-
codespine analyse <path> --
|
|
252
|
-
codespine analyse <path> --
|
|
262
|
+
codespine analyse <path> --budget 90 # fast index with a resolver deadline
|
|
263
|
+
codespine analyse <path> --complete --deep # + communities, flows, dead code, coupling
|
|
264
|
+
codespine analyse <path> --complete --incremental-deep
|
|
253
265
|
codespine analyse <path> --embed # + vector embeddings
|
|
254
266
|
|
|
267
|
+
# Background jobs and local UI
|
|
268
|
+
codespine background # background task progress
|
|
269
|
+
codespine tasks # running/recent background work
|
|
270
|
+
codespine ui # local read-only index explorer
|
|
271
|
+
codespine ui --open # open http://127.0.0.1:8765
|
|
272
|
+
|
|
255
273
|
# Live watch
|
|
256
274
|
codespine watch --path . # file-save-triggered direct-to-graph writes
|
|
257
275
|
codespine watch --path . --install-hook # also install post-commit git hook
|
|
@@ -269,6 +287,8 @@ codespine diff main..feature # symbol-level branch diff
|
|
|
269
287
|
|
|
270
288
|
# Status & Info
|
|
271
289
|
codespine stats # per-project stats (--shards for shard layout)
|
|
290
|
+
codespine health # index coverage and anomaly dashboard
|
|
291
|
+
codespine self-test # smoke queries for schema/translator checks
|
|
272
292
|
codespine list # indexed projects
|
|
273
293
|
codespine status # service and database status
|
|
274
294
|
codespine guide # tool catalog and workflows
|
|
@@ -295,7 +315,7 @@ codespine force-reset # emergency: delete all data files
|
|
|
295
315
|
|
|
296
316
|
`analyse` defaults to incremental mode. Repeat runs only process changed files and are fast.
|
|
297
317
|
|
|
298
|
-
|
|
318
|
+
`analyse` runs in fast mode by default: it indexes the core graph, publishes that read replica from a detached process, then continues communities, flows, dead code, coupling, and cross-module enrichment in the background. Use `codespine tasks` or `codespine ui` to watch that work. Use `--complete --deep` when you want those passes refreshed before the command returns.
|
|
299
319
|
|
|
300
320
|
---
|
|
301
321
|
|
|
@@ -481,12 +501,16 @@ The deep analysis phase covers four passes that are expensive but optional:
|
|
|
481
501
|
| Dead code | Finds methods with no callers (Java-aware exemptions) | Cleanup audits |
|
|
482
502
|
| Change coupling | Analyses git history for co-changed file pairs | `get_change_coupling`, `related` |
|
|
483
503
|
|
|
484
|
-
**
|
|
504
|
+
**Fast default:** `codespine analyse` prioritizes a queryable core index. Communities, flows, dead-code, git coupling, and cross-module links are queued in a detached background enrichment job unless you use `--complete`.
|
|
505
|
+
|
|
506
|
+
**Health checks:** every analyse run now performs a small self-test query suite and reports index anomalies such as large projects with zero call edges. Use `codespine health` for the terminal dashboard or `codespine self-test --json` in CI.
|
|
507
|
+
|
|
508
|
+
**Background visibility:** `codespine background` shows running background job progress in the terminal, and `codespine tasks` remains available as the shorter registry view. `codespine ui` serves a local read-only index explorer with project counts, index health, and the same background task state at `http://127.0.0.1:8765`.
|
|
485
509
|
|
|
486
|
-
**
|
|
510
|
+
**Complete deep:** `--complete --deep` runs the expensive enrichment passes before returning. `--complete --incremental-deep` combines incremental file indexing with a forced full deep pass.
|
|
487
511
|
|
|
488
512
|
```bash
|
|
489
|
-
codespine analyse . --incremental-deep
|
|
513
|
+
codespine analyse . --complete --incremental-deep
|
|
490
514
|
```
|
|
491
515
|
|
|
492
516
|
**Embeddings** (`--embed`) are independent of deep analysis. Without them, BM25 + fuzzy search still works. Add embeddings when you need concept-level retrieval ("find retry logic", "find payment processing").
|