Skip to content
Merged

Dev #118

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Vectorless is a Document Understanding Engine for AI written in Rust.
Cargo workspace with 17 fine-grained Rust crates + pure Python SDK:

```
vectorless-core/
crates/
├── vectorless-error/ # Error types (Result, Error enum)
├── vectorless-document/ # Document types (Document, Tree, NavigationIndex, ReasoningIndex)
├── vectorless-config/ # Configuration hub (aggregates all config types)
Expand All @@ -25,7 +25,7 @@ vectorless-core/
├── vectorless-llm/ # LLM client (pool, memo/cache, throttle, fallback)
├── vectorless-storage/ # Persistence (Workspace, LRU cache, file/memory backends)
├── vectorless-query/ # Query understanding (intent classification, rewrite)
├── vectorless-index/ # Compile pipeline (10-stage, checkpointing, incremental update)
├── vectorless-compiler/ # Compile pipeline (15-pass, checkpointing, incremental update)
├── vectorless-agent/ # Retrieval execution (Worker navigation + Orchestrator fusion)
├── vectorless-retrieval/ # Retrieval dispatch layer (dispatcher, cache, streaming)
├── vectorless-rerank/ # Result reranking (dedup, BM25 scoring, fusion)
Expand All @@ -44,7 +44,7 @@ Layer 0: error · document · utils · scoring (no workspace deps)
Layer 1: graph · events · config · metrics (depends on Layer 0)
Layer 2: llm · storage (depends on Layer 0–1)
Layer 3: query (depends on Layer 0–2)
Layer 4: index · agent (depends on Layer 0–3)
Layer 4: compiler · agent (depends on Layer 0–3)
Layer 5: retrieval · rerank (depends on Layer 0–4)
Layer 6: engine (facade) · vectorless-py (bindings) (depends on all)
```
Expand Down Expand Up @@ -170,9 +170,9 @@ When uncertain whether an operation is safe, **default to asking user confirmati

## Common Development Workflow

1. **Adding features**: Implement in the appropriate `vectorless-core/vectorless-*/` crate, add tests
1. **Adding features**: Implement in the appropriate `crates/vectorless-*/` crate, add tests
2. **Fixing bugs**: Add failing test case first, fix and ensure tests pass
3. **Adding crates**: New modules get their own crate under `vectorless-core/`, add to workspace Cargo.toml
4. **Python bindings**: Update `vectorless-core/vectorless-py/src/lib.rs` (PyO3) when Rust APIs change
3. **Adding crates**: New modules get their own crate under `crates/`, add to workspace Cargo.toml
4. **Python bindings**: Update `crates/vectorless-py/src/lib.rs` (PyO3) when Rust APIs change
5. **Python SDK**: Update `vectorless/` when API surface changes
6. **Committing code**: Use semantic commit messages, format: `type(scope): description`
33 changes: 14 additions & 19 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,24 +1,19 @@
[workspace]
members = [
"vectorless-core/vectorless-error",
"vectorless-core/vectorless-document",
"vectorless-core/vectorless-config",
"vectorless-core/vectorless-utils",
"vectorless-core/vectorless-scoring",
"vectorless-core/vectorless-graph",
"vectorless-core/vectorless-events",
"vectorless-core/vectorless-metrics",
"vectorless-core/vectorless-llm",
"vectorless-core/vectorless-storage",
# Strategy layer moved to Python — crates kept but not compiled:
# "vectorless-core/vectorless-query",
# "vectorless-core/vectorless-agent",
# "vectorless-core/vectorless-retrieval",
# "vectorless-core/vectorless-rerank",
"vectorless-core/vectorless-compiler",
"vectorless-core/vectorless-primitives",
"vectorless-core/vectorless-engine",
"vectorless-core/vectorless-py",
"crates/vectorless-error",
"crates/vectorless-document",
"crates/vectorless-config",
"crates/vectorless-utils",
"crates/vectorless-scoring",
"crates/vectorless-graph",
"crates/vectorless-events",
"crates/vectorless-metrics",
"crates/vectorless-llm",
"crates/vectorless-storage",
"crates/vectorless-compiler",
"crates/vectorless-primitives",
"crates/vectorless-engine",
"crates/vectorless-py",
]
resolver = "2"

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ Documentation = "https://www.vectorless.dev/docs/intro"
[tool.maturin]
python-source = "."
module-name = "vectorless._vectorless"
manifest-path = "vectorless-core/vectorless-py/Cargo.toml"
manifest-path = "crates/vectorless-py/Cargo.toml"
features = ["pyo3/extension-module"]

[tool.pytest.ini_options]
Expand Down
2 changes: 0 additions & 2 deletions vectorless/ask/dispatcher.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
"""Dispatcher — unified entry point for retrieval.

Mirrors vectorless-core/vectorless-agent/src/dispatcher.rs.

All queries go through dispatch():
1. Query reasoning -> QueryAnalysis (via QueryAnalyzer)
2. Scope resolution -> Specified | Workspace
Expand Down
2 changes: 0 additions & 2 deletions vectorless/ask/orchestrator.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
"""Orchestrator agent — coordinates multi-document retrieval.

Mirrors vectorless-core/vectorless-agent/src/orchestrator/.

The Orchestrator is always the entry point for retrieval:
- User specified doc_ids → skip_analysis=True → spawn Workers directly
- Workspace (unspecified) → analyze DocCards → select docs → spawn Workers
Expand Down
4 changes: 0 additions & 4 deletions vectorless/ask/prompts.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
"""Prompt templates for the retrieval agent.

Extracted from vectorless-core/vectorless-agent/src/prompts.rs,
vectorless-core/vectorless-agent/src/worker/planning.rs, and
vectorless-core/vectorless-agent/src/orchestrator/replan.rs.

Templates:
1. worker_navigation — Worker nav loop, every round
2. worker_dispatch — Worker first round (when Orchestrator dispatches)
Expand Down
2 changes: 0 additions & 2 deletions vectorless/ask/understand.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
"""Query understanding — LLM-driven analysis of user queries.

Mirrors vectorless-core/vectorless-query/src/understand.rs.

This module is now a thin wrapper around the multi-stage QueryAnalyzer.
Kept for backward compatibility — new code should use QueryAnalyzer directly.
"""
Expand Down
1 change: 0 additions & 1 deletion vectorless/rerank/synthesize.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
"""Evidence deduplication and answer formatting.

Mirrors vectorless-core/vectorless-rerank/src/.
Dedup is pure compute (no LLM). Answer formatting is intent-aware.

The Rust rerank principle: "Find what you find, return what you find."
Expand Down
Loading