docs: Remove outdated development plan document

This commit is contained in:
Andrew Phillips
2025-09-10 12:32:07 -03:00
committed by Andrew Phillips (aider)
parent 58b5c8187b
commit 653aebe1f0

113
PLAN.md
View File

@@ -1,113 +0,0 @@
# Development Plan for Keep
## Overview
Keep is a command-line tool for managing temporary files with automatic compression, metadata generation, and querying capabilities. It includes a REST API server and supports extensible plugins for compression, metadata, and filtering.
## Current Status (as of latest updates)
The project is in a functional state with core features implemented. Key components:
### Core Features
- **Save Mode**: Stores content with compression and metadata generation. Supports tags and custom metadata via environment variables.
- **Get Mode**: Retrieves item content by ID or tags, with optional filtering (head, tail, grep, etc.) and binary detection.
- **List Mode**: Lists items with customizable table format, sorting, and filtering by tags/metadata.
- **Delete Mode**: Deletes items by ID.
- **Info Mode**: Shows detailed information about an item including metadata.
- **Diff Mode**: Compares two items using the `diff` utility.
- **Status Mode**: Displays system status including paths, compression engines, and configured plugins.
- **Status Plugins Mode**: Shows detailed plugin configurations and available options.
### Compression Engines
- Built-in: LZ4, GZip, None.
- External programs: BZip2, XZ, ZStd (via `CompressionEngineProgram`).
- Factory system for selecting engines with fallback to default (LZ4 if available).
### Meta Plugins
- **Text**: Detects binary/text content, counts lines/words, tracks line length statistics (max, mean, median).
- **Cwd**: Captures current working directory.
- **User**: Captures user ID, group ID, username, group name.
- **Shell**: Captures shell environment.
- **ShellPid/KeepPid**: Captures parent and current process IDs.
- **Digest**: Computes MD5, SHA256, SHA512 hashes (configurable).
- **MagicFile**: Detects MIME type, encoding, and file type using libmagic.
- **Hostname**: Captures short/full hostname with DNS resolution.
- **Exec**: Runs external programs for custom metadata.
- **Env**: Captures environment variables prefixed with `KEEP_META_`.
- Plugin registry and configuration via YAML (options/outputs mapping).
### Filter Plugins
- **Head/Tail/Skip**: Bytes and lines (head_bytes(10), tail_lines(5), etc.).
- **Grep**: Regex pattern matching on lines.
- **StripAnsi**: Removes ANSI escape sequences.
- Chainable via filter strings (e.g., "head_lines(10)|grep(pattern=error)").
### Server Mode
- REST API with endpoints: `/api/status`, `/api/item/` (list/post), `/api/item/{id}/meta`, `/api/item/{id}/content`, `/api/item/latest/*`.
- Authentication: Bearer token or Basic auth (password or hashed).
- MCP (Model Context Protocol) support via SSE and JSON-RPC tools (save_item, get_item, list_items, etc.).
- OpenAPI/Swagger documentation.
- HTML pages for item listing and details.
- Streaming support for large content with offset/length parameters.
- Binary content detection and restriction.
### Configuration
- YAML config file (`~/.config/keep/config.yml`) with overrides from env vars and CLI.
- Table customization: columns, alignment, colors, styles (ASCII/UTF8).
- Plugin configuration: enable/disable outputs, custom options.
### Database
- SQLite with schema for items, tags, metadata.
- Migrations for schema evolution.
- Indexes on tags and metadata names.
- Foreign key constraints.
### Testing
- Unit tests for compression engines, meta plugins, filter plugins, database operations.
- Integration tests for modes (save, get, list, etc.).
- Test helpers for temp files/DBs.
### Other
- Binary detection using signatures and printable character ratio.
- Human-readable size formatting.
- Logging with configurable verbosity.
- Error handling with structured errors (`CoreError`).
## Completed Changes
- Implemented full plugin system for meta and filters with registry via ctors.
- Added async item service for server mode with blocking task spawning.
- Enhanced server API with streaming, pagination, and MCP integration.
- Improved configuration with table styling and plugin output mapping.
- Added binary detection in get mode and API.
- Implemented diff mode with pipes and compression handling.
- Created status and status-plugins modes with detailed output.
- Added generate-config mode with commented defaults.
- Integrated libmagic for file type detection.
- Enhanced text meta plugin with line/word statistics.
- Added exec meta plugin for external commands.
- Implemented filter parsing with pest grammar.
- Added HTML UI for server with item listing and details.
## Remaining/Planned Tasks
- **Documentation**: Update README.md with installation, usage examples, API docs.
- **More Plugins**: Add file size, creation time plugins if needed.
- **Performance**: Optimize streaming for very large files; add content caching.
- **Security**: Add rate limiting to API; validate input more strictly.
- **Features**:
- Update mode for modifying existing items.
- Search mode with full-text search on metadata/content.
- Export/import database.
- Backup/restore functionality.
- **Testing**: Add more integration tests for server API and MCP.
- **Polish**:
- Improve error messages and user feedback.
- Add progress indicators for large operations.
- Support for custom compression plugins.
- **Packaging**: Create installation scripts, Docker support.
## Potential Improvements
- Switch to a more efficient database for large datasets (e.g., SQLite with WAL mode).
- Add WebSocket support for real-time updates in server mode.
- Implement plugin hot-reloading for development.
- Add CLI completion (bash/zsh/fish).
- Support for archiving old items automatically.
Last updated: After codebase initialization and feature implementation.