Merged
Conversation
Bumps [actions/cache](https://github.com/actions/cache) from 2.1.4 to 2.1.5. - [Release notes](https://github.com/actions/cache/releases) - [Commits](actions/cache@v2.1.4...v2.1.5) Signed-off-by: dependabot[bot] <support@github.com>
vsilent
added a commit
that referenced
this pull request
Mar 31, 2026
* Testing (#9) * upload artifacts * upload artifacts * syntax fix * try another approach * list files Co-authored-by: vsilent <jabberroid@gmail.com> * Update README.md * Add editorconfig. Append gitignore fot emacs * editorconfig * Update README.md * Update actix requirement from 0.10 to 0.11 (#18) Updates the requirements on [actix](https://github.com/actix/actix) to permit the latest version. - [Release notes](https://github.com/actix/actix/releases) - [Commits](actix/actix@actix-v0.11.0-beta.3...v0.11.1) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update actix-cors requirement from 0.3.0 to 0.5.4 (#19) Updates the requirements on [actix-cors](https://github.com/actix/actix-extras) to permit the latest version. - [Release notes](https://github.com/actix/actix-extras/releases) - [Commits](actix/actix-extras@cors-v0.3.0...cors-v0.5.4) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update bcrypt requirement from 0.8.2 to 0.9.0 (#17) Updates the requirements on [bcrypt](https://github.com/Keats/rust-bcrypt) to permit the latest version. - [Release notes](https://github.com/Keats/rust-bcrypt/releases) - [Commits](Keats/rust-bcrypt@v0.8.2...v0.9.0) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update env_logger requirement from 0.7.1 to 0.8.3 (#16) Updates the requirements on [env_logger](https://github.com/env-logger-rs/env_logger) to permit the latest version. - [Release notes](https://github.com/env-logger-rs/env_logger/releases) - [Changelog](https://github.com/env-logger-rs/env_logger/blob/master/CHANGELOG.md) - [Commits](rust-cli/env_logger@v0.7.1...v0.8.3) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update bigdecimal requirement from 0.0.14 to 0.2.0 (#15) Updates the requirements on [bigdecimal](https://github.com/akubera/bigdecimal-rs) to permit the latest version. - [Release notes](https://github.com/akubera/bigdecimal-rs/releases) - [Commits](akubera/bigdecimal-rs@v0.0.14...v0.2.0) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update actix-service requirement from 1.0.6 to 2.0.0 (#23) Updates the requirements on [actix-service](https://github.com/actix/actix-net) to permit the latest version. - [Release notes](https://github.com/actix/actix-net/releases) - [Commits](actix/actix-net@service-v1.0.6...rt-v2.0.0) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump codacy/codacy-analysis-cli-action from 2.0.1 to 3.0.1 (#24) Bumps [codacy/codacy-analysis-cli-action](https://github.com/codacy/codacy-analysis-cli-action) from 2.0.1 to 3.0.1. - [Release notes](https://github.com/codacy/codacy-analysis-cli-action/releases) - [Commits](codacy/codacy-analysis-cli-action@2.0.1...84fbefe) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump codacy/codacy-analysis-cli-action from 3.0.1 to 3.0.2 (#25) Bumps [codacy/codacy-analysis-cli-action](https://github.com/codacy/codacy-analysis-cli-action) from 3.0.1 to 3.0.2. - [Release notes](https://github.com/codacy/codacy-analysis-cli-action/releases) - [Commits](codacy/codacy-analysis-cli-action@3.0.1...3.0.2) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump actions/cache from 2.1.4 to 2.1.5 (#26) Bumps [actions/cache](https://github.com/actions/cache) from 2.1.4 to 2.1.5. - [Release notes](https://github.com/actions/cache/releases) - [Commits](actions/cache@v2.1.4...v2.1.5) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump codacy/codacy-analysis-cli-action from 3.0.2 to 3.0.3 (#28) Bumps [codacy/codacy-analysis-cli-action](https://github.com/codacy/codacy-analysis-cli-action) from 3.0.2 to 3.0.3. - [Release notes](https://github.com/codacy/codacy-analysis-cli-action/releases) - [Commits](codacy/codacy-analysis-cli-action@3.0.2...3.0.3) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update actix requirement from 0.11 to 0.12 (#31) Updates the requirements on [actix](https://github.com/actix/actix) to permit the latest version. - [Release notes](https://github.com/actix/actix/releases) - [Commits](actix/actix@v0.11.0...v0.12.0) --- updated-dependencies: - dependency-name: actix dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump actions/cache from 2.1.5 to 2.1.6 (#29) Bumps [actions/cache](https://github.com/actions/cache) from 2.1.5 to 2.1.6. - [Release notes](https://github.com/actions/cache/releases) - [Commits](actions/cache@v2.1.5...v2.1.6) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update bcrypt requirement from 0.9.0 to 0.10.0 (#32) Updates the requirements on [bcrypt](https://github.com/Keats/rust-bcrypt) to permit the latest version. - [Release notes](https://github.com/Keats/rust-bcrypt/releases) - [Commits](Keats/rust-bcrypt@v0.9.0...v0.10.0) --- updated-dependencies: - dependency-name: bcrypt dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump codacy/codacy-analysis-cli-action from 3.0.3 to 4.0.0 (#35) Bumps [codacy/codacy-analysis-cli-action](https://github.com/codacy/codacy-analysis-cli-action) from 3.0.3 to 4.0.0. - [Release notes](https://github.com/codacy/codacy-analysis-cli-action/releases) - [Commits](codacy/codacy-analysis-cli-action@3.0.3...4.0.0) --- updated-dependencies: - dependency-name: codacy/codacy-analysis-cli-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update env_logger requirement from 0.8.3 to 0.9.0 (#34) Updates the requirements on [env_logger](https://github.com/env-logger-rs/env_logger) to permit the latest version. - [Release notes](https://github.com/env-logger-rs/env_logger/releases) - [Changelog](https://github.com/env-logger-rs/env_logger/blob/main/CHANGELOG.md) - [Commits](rust-cli/env_logger@v0.8.3...v0.9.0) --- updated-dependencies: - dependency-name: env_logger dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update bigdecimal requirement from 0.2.0 to 0.3.0 (#37) Updates the requirements on [bigdecimal](https://github.com/akubera/bigdecimal-rs) to permit the latest version. - [Release notes](https://github.com/akubera/bigdecimal-rs/releases) - [Commits](akubera/bigdecimal-rs@v0.2.0...v0.3.0) --- updated-dependencies: - dependency-name: bigdecimal dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update actix-tls requirement from 2.0.0 to 3.0.0 (#39) Updates the requirements on [actix-tls](https://github.com/actix/actix-net) to permit the latest version. - [Release notes](https://github.com/actix/actix-net/releases) - [Commits](actix/actix-net@rt-v2.0.0...tls-v3.0.0) --- updated-dependencies: - dependency-name: actix-tls dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Remove unused imports, list docker containers added * actix-web upgrade * shell commands * shell commands * rustscan, openssl binaries added * rustscan, openssl binaries added * phase 1 files * Broken, integrating bollard for container security check * Update README with new logo and project details Added a new logo image and updated the project description. * Revise README with new images and title case Updated image and title formatting in README. * diesel replaced with r2d2 and rusqlite * ebpf files * refactoring, ebpf / containers * feat(cli): add clap subcommands (serve/sniff) + sniff config - Add clap 4 for CLI argument parsing - Refactor main.rs: dispatch to serve (default) or sniff subcommand - Create src/cli.rs with Cli/Command enums - Create src/sniff/config.rs with SniffConfig (env + CLI args) - Add new deps: clap, async-trait, reqwest, zstd - Update .env.sample with sniff + AI provider config vars - 12 unit tests (7 CLI parsing + 5 config loading) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat(sniff): log source discovery + database persistence - Create src/sniff/discovery.rs: LogSource, LogSourceType, discovery functions for system logs, Docker containers, and custom paths - Create src/database/repositories/log_sources.rs: CRUD for log_sources and log_summaries tables (follows existing alerts repository pattern) - Add log_sources and log_summaries tables to init_database() - Export docker module from lib.rs for reuse by sniff discovery - 14 unit tests (8 discovery + 6 repository) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat(sniff): log reader trait + File/Docker/Journald implementations - Create src/sniff/reader.rs with LogReader async trait and LogEntry struct - FileLogReader: byte offset tracking, incremental reads, log rotation detection - DockerLogReader: bollard-based container log streaming with timestamp filtering - JournaldReader: journalctl subprocess (Linux-gated with #[cfg(target_os = "linux")]) - Add futures-util dependency for Docker log stream consumption - 10 unit tests covering read, incremental, truncation, empty lines, metadata Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat(sniff): AI log analysis with OpenAI and pattern backends - Create src/sniff/analyzer.rs with LogAnalyzer trait - OpenAiAnalyzer: single client for OpenAI/Ollama/vLLM/any compatible API sends batched logs to /chat/completions, parses structured JSON response - PatternAnalyzer: fallback local analyzer using regex-free pattern matching detects error spikes, counts errors/warnings without external AI - LogSummary and LogAnomaly types with serialization support - JSON response parsing with graceful handling of partial LLM output - 16 unit tests (prompt building, JSON parsing, pattern analysis, serialization) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat(sniff): consume mode — zstd compression, dedup, log purge - Create src/sniff/consumer.rs with LogConsumer - FNV hashing deduplication with configurable capacity (100k entries) - zstd compression (level 3) with timestamped archive files - File purge via truncation (preserves fd for syslog daemons) - Docker log purge via /var/lib/docker/containers/ JSON log truncation - Full consume pipeline: deduplicate → compress → purge → report stats - ConsumeResult tracks entries_archived, duplicates_skipped, bytes_freed - 13 unit tests (hashing, dedup, compression, purge, full pipeline) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat(sniff): reporter + orchestrator loop - Reporter: converts LogSummary/LogAnomaly into Alerts using existing AlertManager infrastructure (route_by_severity, NotificationChannel) - SniffOrchestrator: full discover → read → analyze → report → consume pipeline with continuous and one-shot modes - Wire up run_sniff() in main.rs to use SniffOrchestrator - Add events, rules, alerting, models modules to binary crate - 7 new tests (reporter: 5, orchestrator: 3) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat(sniff): REST API for log sources and summaries - GET /api/logs/sources — list discovered log sources - POST /api/logs/sources — manually add a custom log source - GET /api/logs/sources/{path} — get a single source - DELETE /api/logs/sources/{path} — remove a source - GET /api/logs/summaries — list AI summaries (optional source_id filter) - Register routes in configure_all_routes - 7 tests covering all endpoints Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs: update CHANGELOG and README for sniff feature - CHANGELOG: document all sniff additions (discovery, readers, AI analysis, consumer, reporter, orchestrator, REST API, deps) - README: add log sniffing to key features, architecture diagram, project structure, CLI usage examples, REST API examples, and completed tasks list Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore: remove task files from repo and gitignore Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat: add curl-based binary installation - install.sh: POSIX shell installer — detects Linux x86_64/aarch64, downloads from GitHub Releases, verifies SHA256, installs to /usr/local/bin - release.yml: GitHub Actions workflow — builds Linux binaries on tag push using cross, creates release with tarballs + checksums - README: add curl install one-liner to Quick Start Usage: curl -fsSL https://github.com/vsilent/stackdog/dev/install.sh | sudo bash Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs: fix ML module status — stub infrastructure, not in progress Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat(cli): add --ai-model and --ai-api-url flags to sniff command - Add --ai-model flag to specify AI model (e.g. qwen2.5-coder:latest) - Add --ai-api-url flag to specify API endpoint URL - Recognize "ollama" as AI provider alias (maps to OpenAI-compatible client) - CLI args override env vars for model and API URL - Log AI model and API URL at startup for transparency Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat(sniff): add debug logging and robust LLM JSON extraction - Add debug/trace logging across entire sniff pipeline: discovery, reader, analyzer, orchestrator, reporter - Respect user RUST_LOG env var (no longer hardcoded to info) - Improve LLM response JSON extraction to handle: markdown code fences, preamble text, trailing text - Include raw LLM response in trace logs for debugging parse failures - Show first 200 chars of failed JSON in error messages - Add 5 tests for extract_json edge cases Usage: RUST_LOG=debug stackdog sniff --once ... Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat(alerting): implement real Slack webhook notifications - Add --slack-webhook CLI flag to sniff command - Read STACKDOG_SLACK_WEBHOOK_URL env var (CLI overrides env) - Implement actual HTTP POST to Slack incoming webhook API - Build proper JSON payloads with serde_json (color-coded by severity) - Add reqwest blocking feature for synchronous notification delivery - Wire NotificationConfig through SniffConfig → Orchestrator → Reporter - Add STACKDOG_WEBHOOK_URL env var support - Update .env.sample with notification channel examples - Add 3 tests for Slack webhook config (CLI, env, override priority) Usage: stackdog sniff --once --slack-webhook https://hooks.slack.com/services/T/B/xxx # or via env: export STACKDOG_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T/B/xxx Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update docker.yml --------- Co-authored-by: vsilent <jabberroid@gmail.com> Co-authored-by: Evgeny Duzhakov <diaevd@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Merged
vsilent
added a commit
that referenced
this pull request
Mar 31, 2026
* Testing (#9) * upload artifacts * upload artifacts * syntax fix * try another approach * list files * Update README.md * Add editorconfig. Append gitignore fot emacs * editorconfig * Update README.md * Update actix requirement from 0.10 to 0.11 (#18) Updates the requirements on [actix](https://github.com/actix/actix) to permit the latest version. - [Release notes](https://github.com/actix/actix/releases) - [Commits](actix/actix@actix-v0.11.0-beta.3...v0.11.1) * Update actix-cors requirement from 0.3.0 to 0.5.4 (#19) Updates the requirements on [actix-cors](https://github.com/actix/actix-extras) to permit the latest version. - [Release notes](https://github.com/actix/actix-extras/releases) - [Commits](actix/actix-extras@cors-v0.3.0...cors-v0.5.4) * Update bcrypt requirement from 0.8.2 to 0.9.0 (#17) Updates the requirements on [bcrypt](https://github.com/Keats/rust-bcrypt) to permit the latest version. - [Release notes](https://github.com/Keats/rust-bcrypt/releases) - [Commits](Keats/rust-bcrypt@v0.8.2...v0.9.0) * Update env_logger requirement from 0.7.1 to 0.8.3 (#16) Updates the requirements on [env_logger](https://github.com/env-logger-rs/env_logger) to permit the latest version. - [Release notes](https://github.com/env-logger-rs/env_logger/releases) - [Changelog](https://github.com/env-logger-rs/env_logger/blob/master/CHANGELOG.md) - [Commits](rust-cli/env_logger@v0.7.1...v0.8.3) * Update bigdecimal requirement from 0.0.14 to 0.2.0 (#15) Updates the requirements on [bigdecimal](https://github.com/akubera/bigdecimal-rs) to permit the latest version. - [Release notes](https://github.com/akubera/bigdecimal-rs/releases) - [Commits](akubera/bigdecimal-rs@v0.0.14...v0.2.0) * Update actix-service requirement from 1.0.6 to 2.0.0 (#23) Updates the requirements on [actix-service](https://github.com/actix/actix-net) to permit the latest version. - [Release notes](https://github.com/actix/actix-net/releases) - [Commits](actix/actix-net@service-v1.0.6...rt-v2.0.0) * Bump codacy/codacy-analysis-cli-action from 2.0.1 to 3.0.1 (#24) Bumps [codacy/codacy-analysis-cli-action](https://github.com/codacy/codacy-analysis-cli-action) from 2.0.1 to 3.0.1. - [Release notes](https://github.com/codacy/codacy-analysis-cli-action/releases) - [Commits](codacy/codacy-analysis-cli-action@2.0.1...84fbefe) * Bump codacy/codacy-analysis-cli-action from 3.0.1 to 3.0.2 (#25) Bumps [codacy/codacy-analysis-cli-action](https://github.com/codacy/codacy-analysis-cli-action) from 3.0.1 to 3.0.2. - [Release notes](https://github.com/codacy/codacy-analysis-cli-action/releases) - [Commits](codacy/codacy-analysis-cli-action@3.0.1...3.0.2) * Bump actions/cache from 2.1.4 to 2.1.5 (#26) Bumps [actions/cache](https://github.com/actions/cache) from 2.1.4 to 2.1.5. - [Release notes](https://github.com/actions/cache/releases) - [Commits](actions/cache@v2.1.4...v2.1.5) * Bump codacy/codacy-analysis-cli-action from 3.0.2 to 3.0.3 (#28) Bumps [codacy/codacy-analysis-cli-action](https://github.com/codacy/codacy-analysis-cli-action) from 3.0.2 to 3.0.3. - [Release notes](https://github.com/codacy/codacy-analysis-cli-action/releases) - [Commits](codacy/codacy-analysis-cli-action@3.0.2...3.0.3) * Update actix requirement from 0.11 to 0.12 (#31) Updates the requirements on [actix](https://github.com/actix/actix) to permit the latest version. - [Release notes](https://github.com/actix/actix/releases) - [Commits](actix/actix@v0.11.0...v0.12.0) --- updated-dependencies: - dependency-name: actix dependency-type: direct:production ... * Bump actions/cache from 2.1.5 to 2.1.6 (#29) Bumps [actions/cache](https://github.com/actions/cache) from 2.1.5 to 2.1.6. - [Release notes](https://github.com/actions/cache/releases) - [Commits](actions/cache@v2.1.5...v2.1.6) * Update bcrypt requirement from 0.9.0 to 0.10.0 (#32) Updates the requirements on [bcrypt](https://github.com/Keats/rust-bcrypt) to permit the latest version. - [Release notes](https://github.com/Keats/rust-bcrypt/releases) - [Commits](Keats/rust-bcrypt@v0.9.0...v0.10.0) --- updated-dependencies: - dependency-name: bcrypt dependency-type: direct:production ... * Bump codacy/codacy-analysis-cli-action from 3.0.3 to 4.0.0 (#35) Bumps [codacy/codacy-analysis-cli-action](https://github.com/codacy/codacy-analysis-cli-action) from 3.0.3 to 4.0.0. - [Release notes](https://github.com/codacy/codacy-analysis-cli-action/releases) - [Commits](codacy/codacy-analysis-cli-action@3.0.3...4.0.0) --- updated-dependencies: - dependency-name: codacy/codacy-analysis-cli-action dependency-type: direct:production update-type: version-update:semver-major ... * Update env_logger requirement from 0.8.3 to 0.9.0 (#34) Updates the requirements on [env_logger](https://github.com/env-logger-rs/env_logger) to permit the latest version. - [Release notes](https://github.com/env-logger-rs/env_logger/releases) - [Changelog](https://github.com/env-logger-rs/env_logger/blob/main/CHANGELOG.md) - [Commits](rust-cli/env_logger@v0.8.3...v0.9.0) --- updated-dependencies: - dependency-name: env_logger dependency-type: direct:production ... * Update bigdecimal requirement from 0.2.0 to 0.3.0 (#37) Updates the requirements on [bigdecimal](https://github.com/akubera/bigdecimal-rs) to permit the latest version. - [Release notes](https://github.com/akubera/bigdecimal-rs/releases) - [Commits](akubera/bigdecimal-rs@v0.2.0...v0.3.0) --- updated-dependencies: - dependency-name: bigdecimal dependency-type: direct:production ... * Update actix-tls requirement from 2.0.0 to 3.0.0 (#39) Updates the requirements on [actix-tls](https://github.com/actix/actix-net) to permit the latest version. - [Release notes](https://github.com/actix/actix-net/releases) - [Commits](actix/actix-net@rt-v2.0.0...tls-v3.0.0) --- updated-dependencies: - dependency-name: actix-tls dependency-type: direct:production ... * Remove unused imports, list docker containers added * actix-web upgrade * shell commands * shell commands * rustscan, openssl binaries added * rustscan, openssl binaries added * phase 1 files * Broken, integrating bollard for container security check * Update README with new logo and project details Added a new logo image and updated the project description. * Revise README with new images and title case Updated image and title formatting in README. * diesel replaced with r2d2 and rusqlite * ebpf files * refactoring, ebpf / containers * feat(cli): add clap subcommands (serve/sniff) + sniff config - Add clap 4 for CLI argument parsing - Refactor main.rs: dispatch to serve (default) or sniff subcommand - Create src/cli.rs with Cli/Command enums - Create src/sniff/config.rs with SniffConfig (env + CLI args) - Add new deps: clap, async-trait, reqwest, zstd - Update .env.sample with sniff + AI provider config vars - 12 unit tests (7 CLI parsing + 5 config loading) * feat(sniff): log source discovery + database persistence - Create src/sniff/discovery.rs: LogSource, LogSourceType, discovery functions for system logs, Docker containers, and custom paths - Create src/database/repositories/log_sources.rs: CRUD for log_sources and log_summaries tables (follows existing alerts repository pattern) - Add log_sources and log_summaries tables to init_database() - Export docker module from lib.rs for reuse by sniff discovery - 14 unit tests (8 discovery + 6 repository) * feat(sniff): log reader trait + File/Docker/Journald implementations - Create src/sniff/reader.rs with LogReader async trait and LogEntry struct - FileLogReader: byte offset tracking, incremental reads, log rotation detection - DockerLogReader: bollard-based container log streaming with timestamp filtering - JournaldReader: journalctl subprocess (Linux-gated with #[cfg(target_os = "linux")]) - Add futures-util dependency for Docker log stream consumption - 10 unit tests covering read, incremental, truncation, empty lines, metadata * feat(sniff): AI log analysis with OpenAI and pattern backends - Create src/sniff/analyzer.rs with LogAnalyzer trait - OpenAiAnalyzer: single client for OpenAI/Ollama/vLLM/any compatible API sends batched logs to /chat/completions, parses structured JSON response - PatternAnalyzer: fallback local analyzer using regex-free pattern matching detects error spikes, counts errors/warnings without external AI - LogSummary and LogAnomaly types with serialization support - JSON response parsing with graceful handling of partial LLM output - 16 unit tests (prompt building, JSON parsing, pattern analysis, serialization) * feat(sniff): consume mode — zstd compression, dedup, log purge - Create src/sniff/consumer.rs with LogConsumer - FNV hashing deduplication with configurable capacity (100k entries) - zstd compression (level 3) with timestamped archive files - File purge via truncation (preserves fd for syslog daemons) - Docker log purge via /var/lib/docker/containers/ JSON log truncation - Full consume pipeline: deduplicate → compress → purge → report stats - ConsumeResult tracks entries_archived, duplicates_skipped, bytes_freed - 13 unit tests (hashing, dedup, compression, purge, full pipeline) * feat(sniff): reporter + orchestrator loop - Reporter: converts LogSummary/LogAnomaly into Alerts using existing AlertManager infrastructure (route_by_severity, NotificationChannel) - SniffOrchestrator: full discover → read → analyze → report → consume pipeline with continuous and one-shot modes - Wire up run_sniff() in main.rs to use SniffOrchestrator - Add events, rules, alerting, models modules to binary crate - 7 new tests (reporter: 5, orchestrator: 3) * feat(sniff): REST API for log sources and summaries - GET /api/logs/sources — list discovered log sources - POST /api/logs/sources — manually add a custom log source - GET /api/logs/sources/{path} — get a single source - DELETE /api/logs/sources/{path} — remove a source - GET /api/logs/summaries — list AI summaries (optional source_id filter) - Register routes in configure_all_routes - 7 tests covering all endpoints * docs: update CHANGELOG and README for sniff feature - CHANGELOG: document all sniff additions (discovery, readers, AI analysis, consumer, reporter, orchestrator, REST API, deps) - README: add log sniffing to key features, architecture diagram, project structure, CLI usage examples, REST API examples, and completed tasks list * chore: remove task files from repo and gitignore * feat: add curl-based binary installation - install.sh: POSIX shell installer — detects Linux x86_64/aarch64, downloads from GitHub Releases, verifies SHA256, installs to /usr/local/bin - release.yml: GitHub Actions workflow — builds Linux binaries on tag push using cross, creates release with tarballs + checksums - README: add curl install one-liner to Quick Start Usage: curl -fsSL https://github.com/vsilent/stackdog/dev/install.sh | sudo bash * docs: fix ML module status — stub infrastructure, not in progress * feat(cli): add --ai-model and --ai-api-url flags to sniff command - Add --ai-model flag to specify AI model (e.g. qwen2.5-coder:latest) - Add --ai-api-url flag to specify API endpoint URL - Recognize "ollama" as AI provider alias (maps to OpenAI-compatible client) - CLI args override env vars for model and API URL - Log AI model and API URL at startup for transparency * feat(sniff): add debug logging and robust LLM JSON extraction - Add debug/trace logging across entire sniff pipeline: discovery, reader, analyzer, orchestrator, reporter - Respect user RUST_LOG env var (no longer hardcoded to info) - Improve LLM response JSON extraction to handle: markdown code fences, preamble text, trailing text - Include raw LLM response in trace logs for debugging parse failures - Show first 200 chars of failed JSON in error messages - Add 5 tests for extract_json edge cases Usage: RUST_LOG=debug stackdog sniff --once ... * feat(alerting): implement real Slack webhook notifications - Add --slack-webhook CLI flag to sniff command - Read STACKDOG_SLACK_WEBHOOK_URL env var (CLI overrides env) - Implement actual HTTP POST to Slack incoming webhook API - Build proper JSON payloads with serde_json (color-coded by severity) - Add reqwest blocking feature for synchronous notification delivery - Wire NotificationConfig through SniffConfig → Orchestrator → Reporter - Add STACKDOG_WEBHOOK_URL env var support - Update .env.sample with notification channel examples - Add 3 tests for Slack webhook config (CLI, env, override priority) Usage: stackdog sniff --once --slack-webhook https://hooks.slack.com/services/T/B/xxx # or via env: export STACKDOG_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T/B/xxx * Update docker.yml --------- Co-authored-by: vsilent <jabberroid@gmail.com> Co-authored-by: Evgeny Duzhakov <diaevd@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps actions/cache from 2.1.4 to 2.1.5.
Release notes
Sourced from actions/cache's releases.
Commits
1a9e213Update cache module to v1.0.7 (#562)981fa98Merge pull request #469 from ericmj/patch-14498c5bDrop the example based on using pip's internals (#519)4134e6dIt is not recommended to cache node_modules (#537)62a4d75Also cache _build for ElixirDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)