Set up the GitLab Inbox (gi) CLI tool as a Rust 2024 edition project. Dependencies organized by purpose: - Database: rusqlite (bundled SQLite), sqlite-vec for vector search - Serialization: serde/serde_json for GitLab API responses - CLI: clap for argument parsing, dialoguer for interactive prompts, comfy-table for formatted output, indicatif for progress bars - HTTP: reqwest with tokio async runtime for GitLab API calls - Async: async-stream and futures for paginated API iteration - Utilities: thiserror for error types, chrono for timestamps, flate2 for payload compression, sha2 for content hashing - Logging: tracing with env-filter for structured debug output Release profile optimized for small binary size (LTO, strip symbols). Project structure follows standard Rust conventions with src/lib.rs exposing modules and src/main.rs as CLI entry point. Added .gitignore for Rust/Cargo artifacts and local database files. Added AGENTS.md with TDD workflow guidance and beads issue tracking integration instructions for AI-assisted development. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
61 lines
1.2 KiB
TOML
61 lines
1.2 KiB
TOML
[package]
|
|
name = "gi"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
description = "GitLab Knowledge Engine - semantic search for GitLab issues, MRs, and discussions"
|
|
authors = ["Taylor Eernisse"]
|
|
license = "MIT"
|
|
|
|
[[bin]]
|
|
name = "gi"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
# Database
|
|
rusqlite = { version = "0.38", features = ["bundled"] }
|
|
sqlite-vec = "0.1"
|
|
|
|
# Serialization
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
|
|
# CLI
|
|
clap = { version = "4", features = ["derive"] }
|
|
dialoguer = "0.12"
|
|
console = "0.16"
|
|
indicatif = "0.18"
|
|
comfy-table = "7"
|
|
open = "5"
|
|
|
|
# HTTP
|
|
reqwest = { version = "0.12", features = ["json"] }
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "time"] }
|
|
|
|
# Async streaming for pagination
|
|
async-stream = "0.3"
|
|
futures = { version = "0.3", default-features = false, features = ["alloc"] }
|
|
|
|
# Utilities
|
|
thiserror = "2"
|
|
dirs = "6"
|
|
url = "2"
|
|
urlencoding = "2"
|
|
sha2 = "0.10"
|
|
flate2 = "1"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
uuid = { version = "1", features = ["v4"] }
|
|
|
|
# Logging
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
tracing-indicatif = "0.3"
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|
|
wiremock = "0.6"
|
|
|
|
[profile.release]
|
|
lto = true
|
|
codegen-units = 1
|
|
strip = true
|