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>
280 lines
5.0 KiB
TypeScript
280 lines
5.0 KiB
TypeScript
/// <reference path="./types/importMeta.d.ts" />
|
|
|
|
// CSS modules
|
|
type CSSModuleClasses = { readonly [key: string]: string }
|
|
|
|
declare module '*.module.css' {
|
|
const classes: CSSModuleClasses
|
|
export default classes
|
|
}
|
|
declare module '*.module.scss' {
|
|
const classes: CSSModuleClasses
|
|
export default classes
|
|
}
|
|
declare module '*.module.sass' {
|
|
const classes: CSSModuleClasses
|
|
export default classes
|
|
}
|
|
declare module '*.module.less' {
|
|
const classes: CSSModuleClasses
|
|
export default classes
|
|
}
|
|
declare module '*.module.styl' {
|
|
const classes: CSSModuleClasses
|
|
export default classes
|
|
}
|
|
declare module '*.module.stylus' {
|
|
const classes: CSSModuleClasses
|
|
export default classes
|
|
}
|
|
declare module '*.module.pcss' {
|
|
const classes: CSSModuleClasses
|
|
export default classes
|
|
}
|
|
declare module '*.module.sss' {
|
|
const classes: CSSModuleClasses
|
|
export default classes
|
|
}
|
|
|
|
// CSS
|
|
declare module '*.css' {}
|
|
declare module '*.scss' {}
|
|
declare module '*.sass' {}
|
|
declare module '*.less' {}
|
|
declare module '*.styl' {}
|
|
declare module '*.stylus' {}
|
|
declare module '*.pcss' {}
|
|
declare module '*.sss' {}
|
|
|
|
// Built-in asset types
|
|
// see `src/node/constants.ts`
|
|
|
|
// images
|
|
declare module '*.apng' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.bmp' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.png' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.jpg' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.jpeg' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.jfif' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.pjpeg' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.pjp' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.gif' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.svg' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.ico' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.webp' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.avif' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.cur' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.jxl' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
|
|
// media
|
|
declare module '*.mp4' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.webm' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.ogg' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.mp3' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.wav' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.flac' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.aac' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.opus' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.mov' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.m4a' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.vtt' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
|
|
// fonts
|
|
declare module '*.woff' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.woff2' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.eot' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.ttf' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.otf' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
|
|
// other
|
|
declare module '*.webmanifest' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.pdf' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
declare module '*.txt' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
|
|
// wasm?init
|
|
declare module '*.wasm?init' {
|
|
const initWasm: (
|
|
options?: WebAssembly.Imports,
|
|
) => Promise<WebAssembly.Instance>
|
|
export default initWasm
|
|
}
|
|
|
|
// web worker
|
|
declare module '*?worker' {
|
|
const workerConstructor: {
|
|
new (options?: { name?: string }): Worker
|
|
}
|
|
export default workerConstructor
|
|
}
|
|
|
|
declare module '*?worker&inline' {
|
|
const workerConstructor: {
|
|
new (options?: { name?: string }): Worker
|
|
}
|
|
export default workerConstructor
|
|
}
|
|
|
|
declare module '*?worker&url' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
|
|
declare module '*?sharedworker' {
|
|
const sharedWorkerConstructor: {
|
|
new (options?: { name?: string }): SharedWorker
|
|
}
|
|
export default sharedWorkerConstructor
|
|
}
|
|
|
|
declare module '*?sharedworker&inline' {
|
|
const sharedWorkerConstructor: {
|
|
new (options?: { name?: string }): SharedWorker
|
|
}
|
|
export default sharedWorkerConstructor
|
|
}
|
|
|
|
declare module '*?sharedworker&url' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
|
|
declare module '*?raw' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
|
|
declare module '*?url' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
|
|
declare module '*?inline' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
|
|
declare module '*?no-inline' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
|
|
declare module '*?url&inline' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
|
|
declare module '*?url&no-inline' {
|
|
const src: string
|
|
export default src
|
|
}
|
|
|
|
declare interface VitePreloadErrorEvent extends Event {
|
|
payload: Error
|
|
}
|
|
|
|
declare interface WindowEventMap {
|
|
'vite:preloadError': VitePreloadErrorEvent
|
|
}
|