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>
70 lines
1.8 KiB
TypeScript
70 lines
1.8 KiB
TypeScript
import Container, { ContainerProps } from './container.js'
|
||
import { ProcessOptions } from './postcss.js'
|
||
import Result from './result.js'
|
||
import Root from './root.js'
|
||
|
||
declare namespace Document {
|
||
export interface DocumentProps extends ContainerProps {
|
||
nodes?: readonly Root[]
|
||
|
||
/**
|
||
* Information to generate byte-to-byte equal node string as it was
|
||
* in the origin input.
|
||
*
|
||
* Every parser saves its own properties.
|
||
*/
|
||
raws?: Record<string, any>
|
||
}
|
||
|
||
|
||
export { Document_ as default }
|
||
}
|
||
|
||
/**
|
||
* Represents a file and contains all its parsed nodes.
|
||
*
|
||
* **Experimental:** some aspects of this node could change within minor
|
||
* or patch version releases.
|
||
*
|
||
* ```js
|
||
* const document = htmlParser(
|
||
* '<html><style>a{color:black}</style><style>b{z-index:2}</style>'
|
||
* )
|
||
* document.type //=> 'document'
|
||
* document.nodes.length //=> 2
|
||
* ```
|
||
*/
|
||
declare class Document_ extends Container<Root> {
|
||
nodes: Root[]
|
||
parent: undefined
|
||
type: 'document'
|
||
|
||
constructor(defaults?: Document.DocumentProps)
|
||
|
||
assign(overrides: Document.DocumentProps | object): this
|
||
clone(overrides?: Partial<Document.DocumentProps>): this
|
||
cloneAfter(overrides?: Partial<Document.DocumentProps>): this
|
||
cloneBefore(overrides?: Partial<Document.DocumentProps>): this
|
||
|
||
/**
|
||
* Returns a `Result` instance representing the document’s CSS roots.
|
||
*
|
||
* ```js
|
||
* const root1 = postcss.parse(css1, { from: 'a.css' })
|
||
* const root2 = postcss.parse(css2, { from: 'b.css' })
|
||
* const document = postcss.document()
|
||
* document.append(root1)
|
||
* document.append(root2)
|
||
* const result = document.toResult({ to: 'all.css', map: true })
|
||
* ```
|
||
*
|
||
* @param opts Options.
|
||
* @return Result with current document’s CSS.
|
||
*/
|
||
toResult(options?: ProcessOptions): Result
|
||
}
|
||
|
||
declare class Document extends Document_ {}
|
||
|
||
export = Document
|