Implements Phases 1-8 of the TFTSR implementation plan. Rust backend (Tauri 2.x, src-tauri/): - Multi-provider AI: OpenAI-compatible, Anthropic, Gemini, Mistral, Ollama - PII detection engine: 11 regex patterns with overlap resolution - SQLCipher AES-256 encrypted database with 10 versioned migrations - 28 Tauri IPC commands for triage, analysis, document, and system ops - Ollama: hardware probe, model recommendations, pull/delete with events - RCA and blameless post-mortem Markdown document generators - PDF export via printpdf - Audit log: SHA-256 hash of every external data send - Integration stubs for Confluence, ServiceNow, Azure DevOps (v0.2) Frontend (React 18 + TypeScript + Vite, src/): - 9 pages: full triage workflow NewIssue→LogUpload→Triage→Resolution→RCA→Postmortem→History+Settings - 7 components: ChatWindow, TriageProgress, PiiDiffViewer, DocEditor, HardwareReport, ModelSelector, UI primitives - 3 Zustand stores: session, settings (persisted), history - Type-safe tauriCommands.ts matching Rust backend types exactly - 8 IT domain system prompts (Linux, Windows, Network, K8s, DB, Virt, HW, Obs) DevOps: - .woodpecker/test.yml: rustfmt, clippy, cargo test, tsc, vitest on every push - .woodpecker/release.yml: linux/amd64 + linux/arm64 builds, Gogs release upload Verified: - cargo check: zero errors - tsc --noEmit: zero errors - vitest run: 13/13 unit tests passing Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
1 line
2.1 KiB
JSON
1 line
2.1 KiB
JSON
{"rustc":9435880562281667341,"features":"[]","declared_features":"[]","target":13315146551321264332,"profile":17672942494452627365,"path":4942398508502643691,"deps":[[511378585800432286,"tauri_plugin_stronghold",false,15009774175972398686],[530211389790465181,"hex",false,14091109973000251093],[1497337015631716659,"tauri_plugin_cli",false,8760630665760283192],[3856126590694406759,"chrono",false,10077479474220867303],[4093251733041599906,"futures",false,2096022364369501134],[5380358770761950913,"tracing_subscriber",false,17466701048219715548],[6804519996442711849,"uuid",false,7484211793556699926],[8008191657135824715,"thiserror",false,4586594838562516920],[9857275760291862238,"sha2",false,776339899796038703],[10109271232940425330,"tauri_plugin_dialog",false,5519228398577859517],[11968910597431257436,"tauri_plugin_shell",false,15138124920469780534],[12478428894219133322,"anyhow",false,11668834652967039845],[13077212702700853852,"base64",false,1724586486040521648],[13298363700532491723,"tokio",false,15662614361045245662],[13548984313718623784,"serde",false,535738971094763500],[13795362694956882968,"serde_json",false,13758373779650404829],[13853631059051463864,"tftsr_lib",false,12006370725593868156],[13853631059051463864,"build_script_build",false,11862057410168159056],[14074621041967118326,"printpdf",false,13648893627387649685],[14173322034500918072,"tauri_plugin_updater",false,7868886784770331818],[14261240476176424521,"tauri",false,17787493014070117887],[14508109296445423596,"tauri_plugin_fs",false,13277973121930888209],[14757622794040968908,"tracing",false,15861861103483316527],[15299814984394074821,"rusqlite",false,15301071208103530429],[15324871377471570981,"aho_corasick",false,578709376101423321],[16611674984963787466,"async_trait",false,5535852451931006902],[17096086488572562914,"tauri_plugin_http",false,9667254928675312369],[17109794424245468765,"regex",false,11446939082009847678],[17325453097244291330,"reqwest",false,335513607427005649]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/tftsr-e516b66d13674082/dep-bin-tftsr","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} |