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>
110 lines
2.3 KiB
TypeScript
110 lines
2.3 KiB
TypeScript
// IncludeOptions definitions copied from minimatch (https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/minimatch/index.d.ts)
|
|
interface IncludeOptions {
|
|
/**
|
|
* Dump a ton of stuff to stderr.
|
|
*
|
|
* @default false
|
|
*/
|
|
debug?: boolean;
|
|
|
|
/**
|
|
* Do not expand {a,b} and {1..3} brace sets.
|
|
*
|
|
* @default false
|
|
*/
|
|
nobrace?: boolean;
|
|
|
|
/**
|
|
* Disable ** matching against multiple folder names.
|
|
*
|
|
* @default false
|
|
*/
|
|
noglobstar?: boolean;
|
|
|
|
/**
|
|
* Allow patterns to match filenames starting with a period,
|
|
* even if the pattern does not explicitly have a period in that spot.
|
|
*
|
|
* @default false
|
|
*/
|
|
dot?: boolean;
|
|
|
|
/**
|
|
* Disable "extglob" style patterns like +(a|b).
|
|
*
|
|
* @default false
|
|
*/
|
|
noext?: boolean;
|
|
|
|
/**
|
|
* Perform a case-insensitive match.
|
|
*
|
|
* @default false
|
|
*/
|
|
nocase?: boolean;
|
|
|
|
/**
|
|
* When a match is not found by minimatch.match,
|
|
* return a list containing the pattern itself if this option is set.
|
|
* Otherwise, an empty list is returned if there are no matches.
|
|
*
|
|
* @default false
|
|
*/
|
|
nonull?: boolean;
|
|
|
|
/**
|
|
* If set, then patterns without slashes will be matched against
|
|
* the basename of the path if it contains slashes.
|
|
*
|
|
* @default false
|
|
*/
|
|
matchBase?: boolean;
|
|
|
|
/**
|
|
* Suppress the behavior of treating #
|
|
* at the start of a pattern as a comment.
|
|
*
|
|
* @default false
|
|
*/
|
|
nocomment?: boolean;
|
|
|
|
/**
|
|
* Suppress the behavior of treating a leading ! character as negation.
|
|
*
|
|
* @default false
|
|
*/
|
|
nonegate?: boolean;
|
|
|
|
/**
|
|
* Returns from negate expressions the same as if they were not negated.
|
|
* (Ie, true on a hit, false on a miss.)
|
|
*
|
|
* @default false
|
|
*/
|
|
flipNegate?: boolean;
|
|
}
|
|
|
|
export class FileList {
|
|
static clone(): FileList
|
|
static verbose: boolean
|
|
}
|
|
|
|
export interface FileList extends Omit<Array<string>, "length"> {
|
|
pendingAdd: string[]
|
|
pending: boolean
|
|
excludes: {
|
|
pats: RegExp[],
|
|
funcs: Function[],
|
|
regex: null | RegExp
|
|
}
|
|
items: string[]
|
|
toArray(): string[]
|
|
include(...items: string[]): this
|
|
include(...items: (IncludeOptions | string)[]): this
|
|
exclude(...items: string[]): this
|
|
shouldExclude(item: string): boolean
|
|
resolve(): this
|
|
clearInclusions(): this
|
|
clearExclusions(): this
|
|
length(): number
|
|
} |