fix: resolve doctest failures, database bugs, and remove dead code
- Fix all 96 doctest failures across 20 files by adding hidden imports and proper test setup (68 pass, 33 intentionally ignored) - Fix set_item_tags: wrap in transaction and replace item.id.unwrap() with proper error handling - Fix get_items_matching: replace N+1 per-item meta queries with batch get_meta_for_items() call - Fix get_item_matching: apply meta filtering instead of ignoring the parameter - Remove duplicate doc comment in store_meta - Remove dead code files: plugin.rs, plugins.rs, binary_detection.rs (never declared as modules) - Apply cargo fmt formatting fixes - Add keep.db to .gitignore
This commit is contained in:
94
AGENTS.md
94
AGENTS.md
@@ -1,84 +1,56 @@
|
||||
# Agent Configuration
|
||||
|
||||
**IMPORTANT:** Prefer to use the `write_file` tool if the edit is for the majority of a file, or if you are correcting previous problems made edits from other tools.
|
||||
|
||||
## Tools
|
||||
|
||||
**IMPORTANT**: Be very careful when quoting text in tool calls to add the right amount of escaping.
|
||||
**IMPORTANT:** When using `write_file`, you must provide the whole file, even the unchanged parts.
|
||||
|
||||
### `write_file`
|
||||
|
||||
When editing files use the `write_file` tool to output the complete version of the corrected file.
|
||||
**IMPORTANT**: You must provide the whole file to `write_file`, even the unchanged parts.
|
||||
**IMPORTANT:** `xxx | keep | zzz` must be as performant as possible in all situations.
|
||||
|
||||
## Build/Test Commands
|
||||
|
||||
**IMPORTANT**: Do not run application, start the web server, or the trunk server.
|
||||
**IMPORTANT:** The cargo command cannot be ran in parallel.
|
||||
**IMPORTANT**: Do not run the application, start the web server, or the trunk server.
|
||||
**IMPORTANT:** Cargo commands cannot be run in parallel. Prefix all commands with `TERM=dumb`.
|
||||
|
||||
```bash
|
||||
# Check project
|
||||
TERM=dumb cargo check
|
||||
|
||||
# Build project
|
||||
TERM=dumb cargo build
|
||||
|
||||
# DO NOT RUN RUN APPLICATION (native)
|
||||
# TERM=dumb cargo run
|
||||
|
||||
# Run all tests
|
||||
TERM=dumb cargo test
|
||||
|
||||
# Run specific test (by name substring)
|
||||
TERM=dumb cargo test test_function_name
|
||||
|
||||
# Run specific test with verbose output
|
||||
TERM=dumb cargo test test_function_name -- --nocapture
|
||||
|
||||
# Check formatting
|
||||
TERM=dumb cargo fmt --check
|
||||
|
||||
# Apply formatting
|
||||
TERM=dumb cargo fmt
|
||||
|
||||
# Lint with clippy
|
||||
TERM=dumb cargo clippy -- -D warnings
|
||||
|
||||
# Build for release
|
||||
TERM=dumb cargo build --release
|
||||
TERM=dumb cargo check # Fast compile check
|
||||
TERM=dumb cargo build # Build project
|
||||
TERM=dumb cargo test # Run all tests
|
||||
TERM=dumb cargo test test_name # Run specific test by name substring
|
||||
TERM=dumb cargo test -- --nocapture # Verbose test output
|
||||
TERM=dumb cargo fmt --check # Check formatting
|
||||
TERM=dumb cargo fmt # Apply formatting
|
||||
TERM=dumb cargo clippy -- -D warnings # Lint (warnings are errors)
|
||||
TERM=dumb cargo build --release # Release build
|
||||
TERM=dumb cargo build --features server # With server feature
|
||||
```
|
||||
|
||||
Prefix commands with `TERM=dumb` for consistent output.
|
||||
## Code Conventions
|
||||
|
||||
## Code Style Guidelines
|
||||
- `anyhow::Result` for error handling; `thiserror` for custom error types (`src/services/error.rs`)
|
||||
- Plugin traits: `CompressionEngine`, `FilterPlugin`, `MetaPlugin`
|
||||
- Dynamic trait objects use `clone_box()` for `Clone` on `Box<dyn Trait>`
|
||||
- Plugin registration uses `ctor` constructors at module load time
|
||||
- Filter plugins must implement `filter()`, `clone_box()`, and `options()`
|
||||
- Meta plugins extend `BaseMetaPlugin` for boilerplate reduction
|
||||
- Enum string representations: `#[strum(serialize_all = "snake_case")]`
|
||||
- Lint rules: `deny(clippy::all)`, `deny(unsafe_code)` (except `libc::umask` in main.rs)
|
||||
- Feature flags: `default = ["magic", "lz4", "gzip"]`; optional: `server`, `mcp`, `swagger`
|
||||
|
||||
### Imports
|
||||
- Group imports in order: standard library, external crates, local modules
|
||||
- Use explicit imports over glob imports (`use std::fs::File;` not `use std::fs::*;`)
|
||||
## Testing
|
||||
|
||||
### Documentation
|
||||
- Document all public APIs with rustdoc
|
||||
- Use examples in documentation only when helpful
|
||||
- Tests in `src/tests/` mirroring `src/` structure; shared helpers in `src/tests/common/test_helpers.rs`
|
||||
- Key helpers: `create_temp_dir()`, `create_temp_db()`, `test_compression_engine()`
|
||||
- Test naming: `test_<feature>_<scenario>`
|
||||
|
||||
## Procedures
|
||||
|
||||
### Fix build problems
|
||||
|
||||
1. Check the project: `TERM=dumb cargo check`.
|
||||
2. If there are errors or warnings, create a new sub agent (expert rust developer) that uses the `TERM=dumb cargo check` output as input, planned using strategic thinking.
|
||||
a. Read all affected files
|
||||
d. Plan the fixes using strategic thinking:
|
||||
- Read other files if they provide context or examples
|
||||
- Look up relevant API information
|
||||
- Do not downgrade versions
|
||||
- Preserve functionality
|
||||
- Use `TERM=dumb cargo fix` if appropriate.
|
||||
- Prefer the `write_file` tool if there is evidence of double escaping
|
||||
- You must generate the full file contents when using `write_file` or it will be truncated.
|
||||
c. Return the list of files modified
|
||||
3. If any files were modified, loop back to 1.
|
||||
1. `TERM=dumb cargo check`
|
||||
2. Read affected files, fix errors, preserve functionality, don't downgrade versions
|
||||
3. Prefer `write_file` for full file rewrites; repeat from step 1
|
||||
|
||||
### Fix formatting
|
||||
|
||||
1. Format the project the project: `TERM=dumb cargo fmt`
|
||||
2. Continue with the fix build problems procedure.
|
||||
1. `TERM=dumb cargo fmt`
|
||||
2. Continue with fix build problems procedure
|
||||
|
||||
Reference in New Issue
Block a user