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>
31 lines
1.8 KiB
JSON
31 lines
1.8 KiB
JSON
{
|
|
"repositories": "'repositories' (plural) Not supported. Please pick one as the 'repository' field"
|
|
,"missingRepository": "No repository field."
|
|
,"brokenGitUrl": "Probably broken git url: %s"
|
|
,"nonObjectScripts": "scripts must be an object"
|
|
,"nonStringScript": "script values must be string commands"
|
|
,"nonArrayFiles": "Invalid 'files' member"
|
|
,"invalidFilename": "Invalid filename in 'files' list: %s"
|
|
,"nonArrayBundleDependencies": "Invalid 'bundleDependencies' list. Must be array of package names"
|
|
,"nonStringBundleDependency": "Invalid bundleDependencies member: %s"
|
|
,"nonDependencyBundleDependency": "Non-dependency in bundleDependencies: %s"
|
|
,"nonObjectDependencies": "%s field must be an object"
|
|
,"nonStringDependency": "Invalid dependency: %s %s"
|
|
,"deprecatedArrayDependencies": "specifying %s as array is deprecated"
|
|
,"deprecatedModules": "modules field is deprecated"
|
|
,"nonArrayKeywords": "keywords should be an array of strings"
|
|
,"nonStringKeyword": "keywords should be an array of strings"
|
|
,"conflictingName": "%s is also the name of a node core module."
|
|
,"nonStringDescription": "'description' field should be a string"
|
|
,"missingDescription": "No description"
|
|
,"missingReadme": "No README data"
|
|
,"missingLicense": "No license field."
|
|
,"nonEmailUrlBugsString": "Bug string field must be url, email, or {email,url}"
|
|
,"nonUrlBugsUrlField": "bugs.url field must be a string url. Deleted."
|
|
,"nonEmailBugsEmailField": "bugs.email field must be a string email. Deleted."
|
|
,"emptyNormalizedBugs": "Normalized value of bugs field is an empty object. Deleted."
|
|
,"nonUrlHomepage": "homepage field must be a string url. Deleted."
|
|
,"invalidLicense": "license should be a valid SPDX license expression"
|
|
,"typo": "%s should probably be %s."
|
|
}
|