codespine 1.0.9__tar.gz → 1.0.11__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.9 → codespine-1.0.11}/PKG-INFO +30 -4
- {codespine-1.0.9 → codespine-1.0.11}/README.md +28 -3
- {codespine-1.0.9 → codespine-1.0.11}/codespine/__init__.py +1 -1
- {codespine-1.0.9 → codespine-1.0.11}/codespine/cli.py +540 -5
- {codespine-1.0.9 → codespine-1.0.11}/codespine/config.py +4 -3
- {codespine-1.0.9 → codespine-1.0.11}/codespine/db/_cypher_compat.py +65 -12
- {codespine-1.0.9 → codespine-1.0.11}/codespine/db/duckdb_store.py +21 -11
- codespine-1.0.11/codespine/health.py +123 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/indexer/engine.py +40 -18
- {codespine-1.0.9 → codespine-1.0.11}/codespine/mcp/server.py +14 -0
- codespine-1.0.11/codespine/tasks.py +137 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine.egg-info/PKG-INFO +30 -4
- {codespine-1.0.9 → codespine-1.0.11}/codespine.egg-info/SOURCES.txt +5 -1
- {codespine-1.0.9 → codespine-1.0.11}/codespine.egg-info/requires.txt +2 -0
- {codespine-1.0.9 → codespine-1.0.11}/pyproject.toml +5 -1
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_cypher_compat.py +25 -2
- codespine-1.0.11/tests/test_health.py +77 -0
- codespine-1.0.11/tests/test_tasks.py +46 -0
- {codespine-1.0.9 → codespine-1.0.11}/LICENSE +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/analysis/__init__.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/analysis/community.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/analysis/context.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/analysis/coupling.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/analysis/crossmodule.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/analysis/deadcode.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/analysis/flow.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/analysis/impact.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/cache/__init__.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/cache/result_cache.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/db/__init__.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/db/schema.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/db/store.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/diff/__init__.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/diff/branch_diff.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/guide.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/indexer/__init__.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/indexer/call_resolver.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/indexer/di_resolver.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/indexer/java_parser.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/indexer/symbol_builder.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/mcp/__init__.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/noise/__init__.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/noise/blocklist.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/overlay/__init__.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/overlay/git_state.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/overlay/merge.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/overlay/store.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/search/__init__.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/search/bm25.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/search/fuzzy.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/search/hybrid.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/search/rrf.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/search/vector.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/sharding/__init__.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/sharding/router.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/sharding/store.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/watch/__init__.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/watch/git_hook.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine/watch/watcher.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine.egg-info/dependency_links.txt +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine.egg-info/entry_points.txt +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/codespine.egg-info/top_level.txt +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/gindex.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/setup.cfg +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_branch_diff_normalize.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_call_resolver.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_community_detection.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_deadcode.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_duckdb_store.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_index_and_hybrid.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_java_parser.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_multimodule_index.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_overlay.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_parse_resilience.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_result_cache.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_search_ranking.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/tests/test_sharding.py +0 -0
- {codespine-1.0.9 → codespine-1.0.11}/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.11
|
|
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.11** — 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,23 @@ 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
|
+
Quotes are required in zsh: use `pip install "codespine[ui]"`, not `pip install codespine[ui]`.
|
|
115
|
+
|
|
104
116
|
Everything at once (ml + community detection):
|
|
105
117
|
|
|
106
118
|
```bash
|
|
@@ -149,6 +161,8 @@ Detecting execution flows... 34 processes found
|
|
|
149
161
|
Finding dead code... 12 unreachable symbols
|
|
150
162
|
Analyzing git history... 18 coupled file pairs
|
|
151
163
|
Generating embeddings... 623 vectors stored
|
|
164
|
+
Index self-test... passed
|
|
165
|
+
Index health... no anomalies
|
|
152
166
|
|
|
153
167
|
Done in 4.2s — 623 symbols, 1,847 edges, 8 clusters, 34 flows
|
|
154
168
|
Publishing read replica... MCP will reload automatically
|
|
@@ -317,6 +331,12 @@ codespine analyse <path> --complete --deep # + communities, flows, dead code,
|
|
|
317
331
|
codespine analyse <path> --complete --incremental-deep
|
|
318
332
|
codespine analyse <path> --embed # + vector embeddings
|
|
319
333
|
|
|
334
|
+
# Background jobs and local UI
|
|
335
|
+
codespine background # background task progress
|
|
336
|
+
codespine tasks # running/recent background work
|
|
337
|
+
codespine ui # local read-only index explorer
|
|
338
|
+
codespine ui --open # open http://127.0.0.1:8765
|
|
339
|
+
|
|
320
340
|
# Live watch
|
|
321
341
|
codespine watch --path . # file-save-triggered direct-to-graph writes
|
|
322
342
|
codespine watch --path . --install-hook # also install post-commit git hook
|
|
@@ -334,6 +354,8 @@ codespine diff main..feature # symbol-level branch diff
|
|
|
334
354
|
|
|
335
355
|
# Status & Info
|
|
336
356
|
codespine stats # per-project stats (--shards for shard layout)
|
|
357
|
+
codespine health # index coverage and anomaly dashboard
|
|
358
|
+
codespine self-test # smoke queries for schema/translator checks
|
|
337
359
|
codespine list # indexed projects
|
|
338
360
|
codespine status # service and database status
|
|
339
361
|
codespine guide # tool catalog and workflows
|
|
@@ -360,7 +382,7 @@ codespine force-reset # emergency: delete all data files
|
|
|
360
382
|
|
|
361
383
|
`analyse` defaults to incremental mode. Repeat runs only process changed files and are fast.
|
|
362
384
|
|
|
363
|
-
`analyse` runs in fast mode by default: it indexes the core graph,
|
|
385
|
+
`analyse` runs in fast mode by default: it indexes the core graph, honors the foreground time budget, publishes a read replica, then continues unfinished core indexing or enrichment in the background. Use `codespine background` or `codespine ui` to watch that work. Use `--complete --deep` when you want those passes refreshed before the command returns.
|
|
364
386
|
|
|
365
387
|
---
|
|
366
388
|
|
|
@@ -546,7 +568,11 @@ The deep analysis phase covers four passes that are expensive but optional:
|
|
|
546
568
|
| Dead code | Finds methods with no callers (Java-aware exemptions) | Cleanup audits |
|
|
547
569
|
| Change coupling | Analyses git history for co-changed file pairs | `get_change_coupling`, `related` |
|
|
548
570
|
|
|
549
|
-
**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
|
+
**Fast default:** `codespine analyse` prioritizes a queryable core index and keeps the foreground run inside the configured budget. If core indexing or call/type resolution cannot finish in time, the partial index is published and a background continuation finishes the core graph. Communities, flows, dead-code, git coupling, and cross-module links are queued in a detached background enrichment job unless you use `--complete`.
|
|
572
|
+
|
|
573
|
+
**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.
|
|
574
|
+
|
|
575
|
+
**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
576
|
|
|
551
577
|
**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
578
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CodeSpine
|
|
2
2
|
|
|
3
|
-
**v1.0.
|
|
3
|
+
**v1.0.11** — 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,23 @@ 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
|
+
Quotes are required in zsh: use `pip install "codespine[ui]"`, not `pip install codespine[ui]`.
|
|
49
|
+
|
|
39
50
|
Everything at once (ml + community detection):
|
|
40
51
|
|
|
41
52
|
```bash
|
|
@@ -84,6 +95,8 @@ Detecting execution flows... 34 processes found
|
|
|
84
95
|
Finding dead code... 12 unreachable symbols
|
|
85
96
|
Analyzing git history... 18 coupled file pairs
|
|
86
97
|
Generating embeddings... 623 vectors stored
|
|
98
|
+
Index self-test... passed
|
|
99
|
+
Index health... no anomalies
|
|
87
100
|
|
|
88
101
|
Done in 4.2s — 623 symbols, 1,847 edges, 8 clusters, 34 flows
|
|
89
102
|
Publishing read replica... MCP will reload automatically
|
|
@@ -252,6 +265,12 @@ codespine analyse <path> --complete --deep # + communities, flows, dead code,
|
|
|
252
265
|
codespine analyse <path> --complete --incremental-deep
|
|
253
266
|
codespine analyse <path> --embed # + vector embeddings
|
|
254
267
|
|
|
268
|
+
# Background jobs and local UI
|
|
269
|
+
codespine background # background task progress
|
|
270
|
+
codespine tasks # running/recent background work
|
|
271
|
+
codespine ui # local read-only index explorer
|
|
272
|
+
codespine ui --open # open http://127.0.0.1:8765
|
|
273
|
+
|
|
255
274
|
# Live watch
|
|
256
275
|
codespine watch --path . # file-save-triggered direct-to-graph writes
|
|
257
276
|
codespine watch --path . --install-hook # also install post-commit git hook
|
|
@@ -269,6 +288,8 @@ codespine diff main..feature # symbol-level branch diff
|
|
|
269
288
|
|
|
270
289
|
# Status & Info
|
|
271
290
|
codespine stats # per-project stats (--shards for shard layout)
|
|
291
|
+
codespine health # index coverage and anomaly dashboard
|
|
292
|
+
codespine self-test # smoke queries for schema/translator checks
|
|
272
293
|
codespine list # indexed projects
|
|
273
294
|
codespine status # service and database status
|
|
274
295
|
codespine guide # tool catalog and workflows
|
|
@@ -295,7 +316,7 @@ codespine force-reset # emergency: delete all data files
|
|
|
295
316
|
|
|
296
317
|
`analyse` defaults to incremental mode. Repeat runs only process changed files and are fast.
|
|
297
318
|
|
|
298
|
-
`analyse` runs in fast mode by default: it indexes the core graph,
|
|
319
|
+
`analyse` runs in fast mode by default: it indexes the core graph, honors the foreground time budget, publishes a read replica, then continues unfinished core indexing or enrichment in the background. Use `codespine background` or `codespine ui` to watch that work. Use `--complete --deep` when you want those passes refreshed before the command returns.
|
|
299
320
|
|
|
300
321
|
---
|
|
301
322
|
|
|
@@ -481,7 +502,11 @@ The deep analysis phase covers four passes that are expensive but optional:
|
|
|
481
502
|
| Dead code | Finds methods with no callers (Java-aware exemptions) | Cleanup audits |
|
|
482
503
|
| Change coupling | Analyses git history for co-changed file pairs | `get_change_coupling`, `related` |
|
|
483
504
|
|
|
484
|
-
**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
|
+
**Fast default:** `codespine analyse` prioritizes a queryable core index and keeps the foreground run inside the configured budget. If core indexing or call/type resolution cannot finish in time, the partial index is published and a background continuation finishes the core graph. Communities, flows, dead-code, git coupling, and cross-module links are queued in a detached background enrichment job unless you use `--complete`.
|
|
506
|
+
|
|
507
|
+
**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.
|
|
508
|
+
|
|
509
|
+
**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
510
|
|
|
486
511
|
**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
512
|
|