Skip to content

Dev#82

Merged
zTgx merged 98 commits intomainfrom
dev
Apr 20, 2026
Merged

Dev#82
zTgx merged 98 commits intomainfrom
dev

Conversation

@zTgx
Copy link
Copy Markdown
Member

@zTgx zTgx commented Apr 20, 2026

Summary

Changes

Checklist

  • Code compiles (cargo build)
  • Tests pass (cargo test --lib --all-features)
  • No new clippy warnings (cargo clippy --all-features)
  • Public APIs have documentation comments
  • Python bindings updated (if Rust API changed)

Notes

zTgx added 30 commits April 18, 2026 11:58
Add a new navigation module containing:
- NavigationIndex struct for agent-based retrieval
- NavEntry and ChildRoute data structures
- Comprehensive test coverage

The navigation index serves as the primary data source for agents during
query phase, providing pre-computed navigation metadata based on the
Corpus2Skill paper approach.

BREAKING CHANGE: New module structure introduced
- Implement custom Serialize/Deserialize for NavigationIndex to handle
  HashMap<NodeId, _> in JSON since serde_json requires map keys to be
  strings but indextree::NodeId serializes as an integer
- Convert to/from Vec<(NodeId, V)> pairs for proper JSON serialization
- Add documentation explaining the serialization approach
- Include comprehensive tests for serialization roundtrip functionality
- Add additional tests for navigation index edge cases and end-to-end
  execution scenarios
- Add new serde_helpers module to handle HashMap<NodeId, _>
  serialization/deserialization in JSON
- Replace custom Serialize/Deserialize implementations with
  serde attributes using the new helpers
- Support backward compatibility with empty object {} format
  from previous versions
- Add comprehensive tests for serialization roundtrips and
  edge cases
- Ensure deterministic ordering by sorting NodeId keys during
  serialization
Add comprehensive indexing flow example demonstrating:
- Full indexing pipeline with sample markdown document
- Detailed per-stage timing metrics display
- Environment variable support for LLM configuration
- Cleanup workflow demonstration

refactor: standardize log messages with [stage] prefix

Replace generic log messages with structured [stage] prefixed format
across all indexing pipeline stages for better traceability and
consistency.

chore: enhance pipeline logging with additional debug info

Add more granular debug logging and conditional info messages to
improve pipeline observability while maintaining clean default output.
- Refactor parallel execution logic to support arbitrary number of
  stages in parallel groups instead of hardcoded 2-stage limitation
- Implement proper tree writer identification using AccessPattern
  instead of name-based checks
- Add ParallelEntry struct to manage stage execution contexts during
  parallel operations
- Introduce merge_reader_outputs function to consolidate reader
  stage results back into main context
- Update logging format with [pipeline] prefix for better traceability
- Modify parallel group condition from exact 2 stages to any non-empty
  group for future checkpoint skipping logic

fix(navigation): correct log parameter order in navigation index completion

refactor(reasoning): improve synonym expansion with concurrent LLM calls

- Replace sequential LLM calls with concurrent processing using
  buffer_unordered for better performance
- Add configurable concurrency parameter based on global settings
- Improve error handling and logging with [reasoning_index] prefix
- Optimize HashMap imports by using standard collections path
- Fix closure parameter typing in topic count calculation

feat(index): add navigation_index dependency to optimize stage

- Update OptimizeStage dependencies to include navigation_index stage
- Ensure proper execution ordering between navigation index
  construction and optimization steps
- Add extensive unit tests for OptimizeStage including merge_small_leaves
  functionality with various scenarios (adjacent pairs, thresholds,
  content preservation, non-leaf handling)

- Add tests for remove_empty_nodes covering edge cases like root nodes,
  leaves, multi-child nodes and non-empty nodes

- Include test for optimize stage disabled functionality

- Add comprehensive tests for ReasoningIndexStage's build_topic_paths
  with keyword extraction, weight normalization and max entries respect

- Add tests for build_section_map and build_summary_shortcut with
  fallback behavior

- Add thorough test suite for RetrievalOrchestrator including
  dependency resolution, execution groups, and edge cases like
  circular dependencies and missing dependencies

- Introduce StubStage helper for testing pipeline orchestration
Add routing_keywords and question_hints fields to TreeNode struct to
enable enhanced navigation capabilities. These fields are populated
by the EnhanceStage using LLM extraction and used by NavigationIndexStage
for improved document navigation.

The changes include:
- Adding routing_keywords and question_hints to TreeNode
- Initializing these fields in DocumentTree construction
- Updating test fixtures across multiple modules
- Implementing structured parsing for LLM responses in navigation format

The LLM now generates structured responses for non-leaf nodes in the
format: OVERVIEW, QUESTIONS, and TAGS which are parsed and stored
in the respective node fields for navigation purposes.
- Rename "Indexing Overview" to "Indexing Pipeline" to better reflect content focus
- Add comprehensive pipeline diagram showing all stages with priority numbers
- Document each stage in detail: Parse (10), Build (20), Validate (22),
  Split (25), Enhance (30), Enrich (40), ReasoningIndex (45),
  NavigationIndex (50), and Optimize (60)
- Explain stage priorities and parallel execution capabilities
- Provide detailed examples for Enhance stage LLM outputs including
  OVERVIEW, QUESTIONS, and TAGS components
- Add usage examples for both Python and Rust APIs
- Include data flow diagram showing relationship between indexes and
  retrieval phase
- Update code examples to use Engine instead of IndexOptions
- Add configuration reference pointing to separate config documentation
…tration

- Introduce DocCard struct to provide compact document summaries
  for multi-document Orchestrator Agent
- Add SectionCard struct for top-level section summaries
- Store DocCard in NavigationIndex with getter/setter methods
- Implement DocCard building in NavigationIndexStage phase 3
- Add comprehensive tests for DocCard functionality
- Ensure backward compatibility with optional serialization
Add Send bound to the boxed future types in the PipelineOrchestrator
to ensure proper trait bounds for concurrent execution.
- Implement command parsing for agent navigation loop with commands like
 ls, cd, cat, find, pwd, check, and done
- Add configuration system with support for max rounds, fast-path,
  and answer synthesis
- Create context wrapper types for read-only access to document
  trees, navigation indices, and reasoning indices
- Implement state management for both SubAgent and Orchestrator loops
- Add tool system with common, subagent, and orchestrator-specific
  tools
- Include comprehensive test coverage for command parsing and target
  resolution logic

This establishes the foundation for the retrieval agent system with
proper separation of concerns between different components.
- Add prompts module to handle LLM prompt templates for retrieval agent
- Implement five prompt templates: subagent navigation, orchestrator
  analysis, subagent dispatch, orchestrator integration, and answer
  synthesis
- Add parameter structs for each prompt type with required fields
- Include parsing functions for dispatch plans and sufficiency responses
- Add comprehensive tests for all prompt templates and parsing logic
- Export DispatchEntry, parse_dispatch_plan, and parse_sufficiency_response
- Add orchestrator module for multi-document retrieval using MapReduce approach
- Implement subagent module for single document navigation and evidence collection
- Enable routing in main retrieve function based on scope (single vs workspace)
- Add fast path optimization for both single and cross-document scenarios
- Implement parallel dispatch of subagents for workspace queries
- Add integration and synthesis phases for cross-document evidence combining
- Include fallback mechanisms for LLM call failures
- Add comprehensive error handling and logging throughout the agent loops
- Change primary colors from pink (#AF788B) to amber (#F59E0B)
- Add accent colors for tech (#5E6AD2) and green (#10B981)
- Update both light and dark theme variables
- Modify navbar to include bottom border and increase max-width
- Adjust letter spacing and hover/active states for better UX
- Apply backdrop-filter for dark theme navbar transparency
…llback

Remove the conditional LLM complexity detection logic and rely solely
on heuristic detection for performance optimization.

BREAKING CHANGE: Removes LLM-based complexity detection fallback which
may affect retrieval accuracy in some cases.

style(docs): update hero title emphasis color variable

Change the hero title emphasis color from --text to --primary variable
for better theme consistency.

style(docs): adjust demo code header border color

Update the demo code header bottom border color from #2A2E34 to #252A30
for improved visual appearance.

style(docs): update comment syntax highlighting color

Change the highlight comment color from #5E6673 to #6B7280 for better
readability.

style(docs): adjust terminal output border color

Update the terminal output top border color from #2A2E34 to #252A30 for
consistent styling.

style(docs): fix dark theme hero title emphasis color

Correct the dark theme hero title emphasis color from --primary-light
to --primary for proper theming.

style(navbar): update logo styling and theming

Reduce logo font size from 1.6rem to 1.3rem, change font weight from
800 to 600, add Inter font family, and set different colors for light
and dark themes.

refactor(retrieval): remove unused PipelineRetriever import

Clean up unused import statement from engine module to reduce
dependencies.

feat(retrieval): remove beam and greedy search algorithms

Remove the beam search and pure pilot search implementations along
with their associated backtracking functionality to simplify the
retrieval system architecture.
…nitoring

Add comprehensive event system for agent-based retrieval operations
that provides real-time visibility into navigation decisions, evidence
collection, and multi-document orchestration.

The new AgentEvent enum includes events for:
- Retrieval start/completion
- Fast path hits
- Round completion status
- Evidence collection
- Sufficiency checks
- Sub-agent dispatch/completion
- Answer synthesis
- Error reporting

Also adds EventEmitter wrapper with silent drop behavior when receiver
is closed, and integrates events throughout the agent workflow.
- Add dark mode as default theme with user preference support
- Implement custom color palette for both light and dark modes
- Add theme toggle button to navbar with sun/moon icons
- Update CSS variables for consistent dark theme across components

refactor(rust): clean up imports and remove unused modules

- Remove unused CacheConfig and HotNodeEntry exports
- Remove unused modules: decompose, reference, cache, search
- Clean up LlmExecutor and Command exports
- Simplify memo types exports by removing PilotDecisionValue
- Update module re-exports for better organization

fix(rust): update agent event handling and data structures

- Fix document index cloning to use .clone() instead of move
- Update AgentEvent pattern matching to use references
- Modify RetrieveResponse structure with new fields
- Remove unused query_for_relay variable in engine
- Update sufficiency level path resolution
- Consolidate multi-line print statements into single lines where appropriate
- Reorganize import statements for better clarity
- Simplify variable assignments by removing unnecessary newlines
- Adjust formatting of complex expressions and function calls

This change focuses on code style improvements without altering functionality,
making the codebase more maintainable and readable.
…ation

BREAKING CHANGE: The pipeline strategy option has been removed,
leaving only the agent strategy available for retrieval.

- Remove 'pipeline' option from retrieval.strategy in config_cmd.py
- Only 'agent' strategy remains supported

refactor(agent): improve logging and phase tracking in orchestrator

- Add debug logging for analysis phase entry
- Enhance info messages with phase indicators (Phase 1, Phase 2, etc.)
- Improve fast path hit messaging with clearer description
- Add detailed logging for cross-doc sufficiency checks
- Include evidence count and retry information in logs
- Add debug logging for integration and synthesis phases
- Improve synthesis completion logging with answer length

refactor(subagent): enhance logging and phase tracking

- Add clear phase indicators (Phase 1: bird's-eye view, etc.)
- Improve fast path logging with skip navigation message
- Add debug logging for navigation loop entry
- Enhance synthesis phase logging with evidence counts
- Improve synthesis failure handling with fallback message
- Add evidence collection logging with document context
- Include sufficiency check details in logs
…ent discovery

Add a second LLM pass that provides detailed keyword hit information
when initial analysis fails to find relevant documents. The expanded
context includes per-document keyword matches with depth and weight
information to guide deeper analysis.

refactor(subagent): enhance navigation with history and visited tracking

Introduce ReAct history tracking and visited node title tracking to
prevent redundant navigation. Add history context to prompts and
include visited titles to avoid revisiting the same content.

feat(tools): improve navigation tools with absolute path support

Enhance the `cd` command to support absolute path navigation (e.g.,
`/root/Chapter 1/Section 1.2`) in addition to relative paths. Also
improve `ls` output with current section overview and question hints.
…ation

- Add Grep command for regex search across node content in current subtree
- Add Head command to preview first N lines of a node without collecting evidence
- Add FindTree command to search for nodes by title pattern across entire tree
- Add Wc command to show node content size statistics (lines, chars, words)

Update command parsing to handle new commands with proper argument extraction
and validation patterns.

Refactor Find command description to clarify it searches in ReasoningIndex
instead of general document search.

Add comprehensive test coverage for all new command parsing and execution
scenarios including edge cases and error handling.

Update agent prompts to include new commands with usage guidelines and best
practices for effective document navigation.
- Add navigation plan field to State struct to store bird's-eye view guidance
- Implement Phase 1.5 planning with separate LLM call to generate navigation plan
- Add plan injection into subagent navigation prompts as non-binding guidance
- Introduce rounds_since_evidence counter for stuck detection
- Add stuck warning when no new evidence collected for 3 consecutive rounds
- Include plan parameter in NavigationParams and update related test cases
- Add parse failure detection and handling to preserve raw LLM output
- Update evidence tracking to reset stuck counter when new evidence found
…mmand execution

Simplify command execution by removing the ToolResultLike wrapper and directly
using String results. This makes the code cleaner and removes unnecessary
abstraction layers in the subagent command handling.

fix(agent): correct variable binding in head command parsing

Fix variable binding in the head command parser to use consistent variable names
and prevent potential issues with variable shadowing.

perf(agent): merge integration and synthesis phases into single LLM call

Combine the separate integration and synthesis phases into a single LLM call to
reduce API calls and improve performance. The cross-document integration and
final answer synthesis are now handled together in one phase instead of two
separate calls.

refactor(agent): remove unused integrate_retries field

Remove the unused integrate_retries field from OrchestratorState as the
integration retry logic has been simplified.

feat(agent): enhance find_cross tool output with node titles and summaries

Improve the find_cross tool output by including node titles and summaries in
the search results, making it easier for the agent to understand context.

fix(agent): add guard against duplicate evidence collection in cat command

Prevent duplicate evidence collection by checking if a node has already been
visited before processing it in the cat command.

test(agent): update test state mutability

Update test to reflect changes in state mutability requirements.
- Add max_llm_calls field to Config to set hard cap on total LLM calls
  per SubAgent (planning + nav + check + synthesis), preventing runaway
  costs regardless of max_rounds. 0 means no limit.
- Implement LLM call budget checking alongside existing navigation
  budget to prevent excessive API usage.
- Modify max_rounds documentation to clarify it covers only navigation
  commands (ls/cd/cat/grep/head/find) while check does NOT count
  against this budget.
- Add budget_exhausted flag to Output and Metrics to track when
  either navigation or LLM call limits are reached.
- Introduce mid-budget checkpoint reminder that suggests running
  check command when half the navigation budget is used.
- Track check command invocation separately to enable budget logic.
- Clear plan when check determines evidence is insufficient to allow
  react decisions to take over.
- Log detailed budget information including max_rounds and max_llm_calls
  when SubAgent starts.
…dback

- Add ORCH_SYNTHESIS_EVIDENCE_CAP constant (10000 chars) to limit total
  evidence characters in orchestrator synthesis prompt
- Modify format_evidence_for_synthesis to truncate evidence content with
  [truncated] marker when exceeding character cap
- Add SYNTHESIS_EVIDENCE_CAP constant (8000 chars) for subagent synthesis
  prompt evidence limit
- Implement similar truncation logic for subagent evidence formatting
- Add MAX_FEEDBACK_CHARS constant (500 chars) to prevent large outputs
  from bloating prompts
- Introduce set_feedback method that automatically truncates feedback
  at line boundaries with "(truncated)" notice
- Replace direct assignment of state.last_feedback with set_feedback
  calls throughout subagent execution
- Add stuck detection guard to prevent duplicate warning messages
- Improve find command to sort entries by weight and remove duplicates
Add a new max_depth() method to DocumentTree that calculates the
maximum depth of any node in the tree using a single BFS pass.
The method returns 0 for single-node trees and provides the
depth from root (0) to deepest leaf (≥ 0).

BREAKING CHANGE: None

feat(agent): implement adaptive round budget based on document depth

Modify the subagent to adaptively adjust the number of rounds based
on document tree depth:
- Depth 0-2: use original configuration (8 rounds)
- Depth 3-4: add 2 rounds per extra level beyond depth 2
- Depth 5+: cap at 1.5x the configured max_rounds

Add logging to show when adaptive budgeting is applied and the
calculated round count. This improves retrieval performance for
deeply nested documents by providing more rounds for exploration.

BREAKING CHANGE: None
- Add `request_timeout_secs` field to LlmConfig with default value of 0 (no timeout)
- Implement timeout logic in LlmExecutor using tokio::time::timeout
- Add warning logging when requests time out
- Record timeout metrics when available
- Initialize timeout config in LlmPool

refactor(agent): update metrics structure and state tracking

- Remove unused fields from Metrics: rounds_used, llm_calls, nodes_visited, budget_exhausted
- Add new metrics fields: plan_generated, check_count, evidence_chars
- Track plan generation status in agent state
- Count check command invocations
- Calculate total evidence character count
- Aggregate metrics properly in orchestrator state conversion
…messages

- Update orchestrator to return meaningful message when no evidence is found
  across all documents instead of empty string
- Add warning log for out-of-range document references in dispatch plans
- Modify subagent to provide document-specific not-found messages when no
  evidence is collected from individual documents
Add question_hints and topic_tags information to the subagent tool
output when available from NavEntry. This provides additional context
about what questions the route can answer and relevant topics,
improving the agent's ability to select appropriate tools.
zTgx added 28 commits April 20, 2026 11:58
- Introduce QueryPlan struct to capture query intent, complexity,
  and key concepts from LLM analysis
- Add QueryPipeline::understand() method to analyze queries and
  generate structured query plans
- Modify Orchestrator to accept and utilize QueryPlan for
  intent-aware analysis strategies
- Update dispatcher to perform query understanding before
  orchestrator dispatch
- Add comprehensive logging for query understanding process
  including intent and complexity metrics
- Integrate QueryPlan into analyze phase to inform document selection
- Add intent, complexity, and strategy hints to guide LLM analysis
- Propagate LLM errors as Error::LlmReasoning instead of silent fallback
- Remove expanded analysis retry logic and fallback dispatch mechanism
- Update function signatures to return Result types for proper error handling
- Enrich orchestrator analysis prompts with query understanding context
- Simplify error propagation and remove AnalysisFailed outcome variant

The analyze phase now uses query understanding to make more informed
document selection decisions while maintaining strict error handling
without silent degradation.
- Add evaluate.rs module to assess cross-document evidence sufficiency via LLM
- Replace old heuristic sufficiency checks with LLM-driven evaluation
- Implement proper error propagation without silent fallbacks
- Add replan.rs module for LLM-driven re-dispatch after insufficient evidence
- Create new dispatch targets based on missing information analysis
- Update orchestrator mod.rs to include new evaluate and replan modules
- Add comprehensive unit tests for both new components
…upervisor loop

BREAKING CHANGE: Remove the fast_path and integrate modules from orchestrator
and replace them with a new supervisor loop implementation that uses evaluate
and replan phases instead.

The new implementation changes the orchestrator workflow from:
1. Fast path
2. Analyze
3. Dispatch
4. Integrate
5. Rerank

To:
1. Analyze
2. Supervisor loop (dispatch → evaluate → replan if insufficient)
3. Rerank

Also remove unused warn! logging import and change LLM call error handling
from warnings to proper error propagation in worker module.
- Remove fast_path_hit field from PyQueryMetrics and QueryMetrics
- Remove fast_path_hit from PyQueryResultItem and internal metrics structures
- Remove enable_fast_path and fast_path_threshold from WorkerConfig
- Remove enable_fast_path, max_integration_retries, and max_supplemental_docs from OrchestratorConfig
- Remove fast_path_hit field from Metrics structure
- Remove Output::fast_path constructor method
- Update all related struct initializations to remove fast-path references
- Rename project from hierarchical engine to Vectorless
- Add core principles section explaining reasoning-native approach
- Update project structure documentation with accurate module descriptions
- Revise engine flow diagram to reflect Orchestrator-centered architecture

refactor(agent): restructure orchestrator and worker components

- Replace SubAgent with Worker terminology for clarity
- Implement supervisor loop pattern in Orchestrator
- Update analyze phase to return structured dispatch entries
- Enhance sufficiency checking and replanning capabilities

refactor(events): clean up AgentEvent enum formatting

- Remove unnecessary whitespace from event definitions
- Format multi-line event variants consistently
- Improve test assertions readability

refactor(tools): standardize tool implementations

- Extract common target resolution logic across tools
- Maintain consistent error handling patterns
- Reorder imports for better code organization

refactor(worker): improve navigation planning and execution

- Add adaptive budget calculation based on document depth
- Enhance mid-budget checkpoint logic
- Implement dynamic re-planning after insufficient checks
- Standardize command execution interface

refactor(metrics): consolidate metric collection in orchestrator state

- Aggregate metrics from worker sub-results correctly
- Sum evidence character counts across all workers
- Include node visitation metrics in final output

style(rust): format long function calls and expressions

- Break long function calls across multiple lines
- Maintain consistent indentation patterns
- Improve code readability with proper line breaks
…-driven approach

- replace old 4-phase pipeline with new LLM-supervisor loop architecture
- add detailed explanation of core principles: reason-don't-vector, model-fails-we-fail, no-thought-no-answer
- document new flow including Engine.query(), Dispatcher, Query Understanding, Orchestrator, Workers
- explain Query Understanding with Intent, Complexity, Key Concepts, and Strategy Hint fields
- describe Orchestrator supervisor loop with Analyze, Dispatch, Evaluate, and Replan steps
- detail Worker navigation process using tree commands and self-evaluation
- document Rerank Pipeline with Dedup, BM25 Scoring, and Answer Generation steps
- update index page to reflect new terminology: SubAgent renamed to Worker, updated descriptions
BREAKING CHANGE: Removed enable_synthesis field from AnswerConfig
and removed nav_plan.rs and plan.rs modules that are no longer used.

feat(rerank): implement intent-driven synthesis strategy

Synthesis strategy now depends on QueryIntent instead of static flag.
Navigational queries format locations, analytical multi-doc uses fusion,
and other intents use standard synthesis.

refactor(worker): integrate query plan and remove adaptive logic

Worker now receives QueryPlan and passes intent context to prompts.
Removed adaptive rounds calculation and stuck detection logic.
Remove the text.rs module that contained word counting utilities,
as it's no longer used in the query functionality. The module was
migrated from agent::worker but is now obsolete.
- Replace detailed feature list with concise bullet points
- Remove Rust code example and dependency instructions
- Add simplified Python installation instructions
- Restructure content for better readability
- Remove OrchestratorConfig struct and related fields from AgentConfig
- Eliminate orchestrator fast-path events and their emission methods
- Clean up worker fast-path events and related handler logic
- Update event mapping in client engine to remove fast-path handling
- Remove BM25 scorer module and related confidence heuristics
- Replace discrete confidence levels (High/Medium/Low) with continuous
  0.0-1.0 confidence scores
- Derive confidence from LLM evaluate() result in orchestrator loop
- Update QueryResultItem to use confidence instead of score field
- Add compute_confidence function to calculate score based on
  evaluation sufficiency and replan rounds
- Remove the combine.rs and relevance.rs modules as they were unused
- Rename the score field to confidence in the example output for clarity
- Update the scoring module documentation to reflect current functionality
- Remove unused QueryResultItem from vectorless import in python/src/results.rs
- Format long line for compute_confidence function call in rust/src/agent/orchestrator/mod.rs
- Break long string concatenation into multiple lines in
  rust/src/agent/worker/planning.rs for better readability
Add navigation_index field to IndexedDocument struct and ensure it's
properly initialized and persisted during indexing operations.
- Add new cat command variant that reads current node's content when no target is specified
- Update command parsing to handle cat without arguments using default target "."
- Update documentation to reflect new cat command behavior
- Improve error messages to guide users on available options
The visited nodes set was being updated in the cd function but this
tracking is no longer needed. The change removes the insertion into
the visited set when navigating to a new node.
- Add catalog HashMap to WorkspaceInner to store DocCard summaries
- Implement load_catalog_index, save_catalog_index, and rebuild_catalog methods
- Add list_catalog and get_doc_card public methods for catalog access
- Update document lifecycle to maintain catalog synchronization
- Include catalog key in reserved keys to prevent conflicts

refactor(rerank): update synthesis prompt for precise extraction

- Change system prompt from analytical approach to direct extraction
- Require exact passage quotes instead of paraphrasing or summarization
- Request original text citations without introductory phrases
- Update missing information handling for clarity

refactor(agent): simplify resolve_target_extended function call

- Remove unnecessary line breaks in function call formatting
- Maintain same functionality while improving code readability

refactor(llm): consolidate log parameters in executor

- Combine prompt_tokens and completion_tokens on single line
- Remove redundant line breaks in warning message formatting
- Change max_tokens parameter to _max_tokens to indicate it's unused
- Remove the mutable request variable since max_tokens assignment is commented out
- Comment out the entire max_tokens handling logic block
- Keep the logging information intact for debugging purposes
BREAKING CHANGE: Remove LLM-dependent synthesis and fusion functionality
from the rerank module. The system now returns original evidence text
directly without any language model processing.

- Remove fusion.rs and synthesis.rs modules
- Simplify process function to return evidence as-is
- Remove LLM client dependency from rerank pipeline
- Update orchestrator to remove unused config and llm parameters
- Modify example flow to display full content instead of previews
- Add info logging for ls, cd, cd_up, cat, grep, head, find_tree, and wc commands
- Include document name, command parameters, and feedback in log messages
- Implement truncate_log function to limit feedback length to 300 characters
- Prevent noisy logs by truncating long feedback strings with character count
Add a new example demonstrating how to query already-indexed documents
using the vectorless library. The example shows how to list available
documents and perform queries against them with proper error handling.

The example includes:
- Environment variable configuration for LLM API access
- Document listing functionality
- Sample queries against the first available document
- Proper error handling and result display
- Add critical stopping rules that require immediate 'done' after cat
  collects relevant evidence
- Clarify that grep should not be used after cat since content is
  already collected
- Improve guidelines for handling leaf nodes and low remaining rounds
- Update check sufficiency prompt with more detailed evaluation
  criteria and default to sufficient unless clearly irrelevant
Add a new utility function `strip_quotes` that handles straight quotes
(`"`, `'`) and Unicode smart quotes (U+201C/U+201D, U+2018/U+2019) when
parsing command targets. This allows commands like `cd "multi word name"`
or `cd 'quoted path'` to work correctly by stripping surrounding quotes.

Apply quote stripping to all command parsers in the agent including:
- cd, cat, find, grep, head, findtree, wc commands
- Target resolution functions in navigation index

Also add comprehensive unit tests for quote stripping functionality
covering various quote types and edge cases.

refactor(engine): simplify graph rebuild logic and remove failure tracking

Remove the lazy graph rebuild mechanism and atomic failure counters.
Instead, rebuild the cross-document graph immediately after indexing
completes. Remove unused AtomicU32 import and related constants since
the failure tracking is no longer needed.

fix(worker): improve sufficiency check logging and response tracking

Add detailed logging for sufficiency check prompts including system
and user messages. Include the LLM response in sufficiency check logs
for better debugging visibility.

refactor(worker): enhance execution flow and planning visibility

Replace plan length with full plan text in logs for better debugging.
Add round number tracking for worker execution rounds. Reduce minimum
LLM output length threshold from 5 to 2 characters.

docs(ls): update help text to include cat command option

Update the help message for nodes without navigation data to suggest
using both `cat` to read content and `cd ..` to navigate back.
Add keyword_hints field to NavigationParams to provide formatted
keyword index matches for the LLM agent. Update worker_navigation
prompt to include search strategy guidance for using find with exact
keywords from the hints.

Also update the prompt to include priority search strategy:
- Use find with exact keywords when hints are available
- Use ls for discovering unknown section structure
- Use findtree for section title patterns

refactor(worker): extract keyword hints formatting logic

Move keyword hints formatting into dedicated format_keyword_hints
function that creates structured output showing keyword matches with
weights and paths for direct navigation.

style(engine): improve graph rebuild logging

Replace immediate graph rebuild with background task using tokio::spawn
to allow index operation to return immediately. Add detailed progress
logging including document counts and graph statistics during rebuild.

perf(worker): add find command execution logging

Add info-level logging for find command results to track keyword
search performance and document interactions.
- Change keyword hints header from 'Keyword matches available for find:'
  to 'Keyword matches (use find <keyword> to jump directly):'
- Simplify displayed paths by showing only document titles instead of full
  ancestor paths in keyword hints
- Change path separator from ' > ' to '/' in ancestor path display
- Update test expectations to match new path separator format
- Update version field in Cargo.toml workspace package section
- Prepare for new release cycle
Update project version in pyproject.toml to prepare for new release.
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 20, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
vectorless Ready Ready Preview, Comment Apr 20, 2026 11:01am

@zTgx zTgx merged commit 48e3be4 into main Apr 20, 2026
5 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant