thulp-query 0.3.3

Query engine for searching and filtering thulp tools
Documentation
# thulp-query

Query engine for searching and filtering tools in the Thulp framework.

## Overview

This crate provides a DSL for querying tool definitions by various criteria such as name, description, parameters, and more. It's particularly useful for building intelligent tool discovery systems that can match user intent to available tools.

## Features

- Query tools by name with wildcard support
- Filter by description keywords
- Match tools with specific parameters
- Filter by parameter count (min/max)
- Combine criteria with AND/OR logic
- Natural language query parsing
- Efficient execution against tool collections

## Usage

```rust
use thulp_query::{QueryBuilder, QueryCriteria};
use thulp_core::ToolDefinition;

// Create a query using the builder pattern
let query = QueryBuilder::new()
    .name("file_*")
    .description("read")
    .min_parameters(1)
    .build();

// Execute against a collection of tools
let tools: Vec<ToolDefinition> = vec![/* ... */];
let results = query.execute(&tools);
```

### Natural Language Queries

The crate also supports parsing natural language queries:

```rust
use thulp_query::parse_query;

// Parse a natural language query
let criteria = parse_query("name:search and has:query").unwrap();
let query = Query::new(criteria);
```

## Query Criteria

- `Name(String)` - Match tools by name (supports wildcards with `*`)
- `Description(String)` - Match tools by description keyword
- `HasParameter(String)` - Match tools with specific parameter
- `MinParameters(usize)` - Match tools with at least N parameters
- `MaxParameters(usize)` - Match tools with at most N parameters
- `And(Vec<QueryCriteria>)` - Combine criteria with AND
- `Or(Vec<QueryCriteria>)` - Combine criteria with OR
- `Not(Box<QueryCriteria>)` - Negate a criteria

## License

Licensed under either of:

- Apache License, Version 2.0 ([LICENSE-APACHE]../../LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT]../../LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.