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>
87 lines
2.0 KiB
TypeScript
87 lines
2.0 KiB
TypeScript
import { Document } from './index'
|
|
import { CST } from './parse-cst'
|
|
import { AST, Pair, Scalar, Schema } from './types'
|
|
|
|
export function findPair(items: any[], key: Scalar | any): Pair | undefined
|
|
|
|
export function parseMap(doc: Document, cst: CST.Map): AST.BlockMap
|
|
export function parseMap(doc: Document, cst: CST.FlowMap): AST.FlowMap
|
|
export function parseSeq(doc: Document, cst: CST.Seq): AST.BlockSeq
|
|
export function parseSeq(doc: Document, cst: CST.FlowSeq): AST.FlowSeq
|
|
|
|
export function stringifyNumber(item: Scalar): string
|
|
export function stringifyString(
|
|
item: Scalar,
|
|
ctx: Schema.StringifyContext,
|
|
onComment?: () => void,
|
|
onChompKeep?: () => void
|
|
): string
|
|
|
|
export function toJSON(
|
|
value: any,
|
|
arg?: any,
|
|
ctx?: Schema.CreateNodeContext
|
|
): any
|
|
|
|
export enum Type {
|
|
ALIAS = 'ALIAS',
|
|
BLANK_LINE = 'BLANK_LINE',
|
|
BLOCK_FOLDED = 'BLOCK_FOLDED',
|
|
BLOCK_LITERAL = 'BLOCK_LITERAL',
|
|
COMMENT = 'COMMENT',
|
|
DIRECTIVE = 'DIRECTIVE',
|
|
DOCUMENT = 'DOCUMENT',
|
|
FLOW_MAP = 'FLOW_MAP',
|
|
FLOW_SEQ = 'FLOW_SEQ',
|
|
MAP = 'MAP',
|
|
MAP_KEY = 'MAP_KEY',
|
|
MAP_VALUE = 'MAP_VALUE',
|
|
PLAIN = 'PLAIN',
|
|
QUOTE_DOUBLE = 'QUOTE_DOUBLE',
|
|
QUOTE_SINGLE = 'QUOTE_SINGLE',
|
|
SEQ = 'SEQ',
|
|
SEQ_ITEM = 'SEQ_ITEM'
|
|
}
|
|
|
|
interface LinePos {
|
|
line: number
|
|
col: number
|
|
}
|
|
|
|
export class YAMLError extends Error {
|
|
name:
|
|
| 'YAMLReferenceError'
|
|
| 'YAMLSemanticError'
|
|
| 'YAMLSyntaxError'
|
|
| 'YAMLWarning'
|
|
message: string
|
|
source?: CST.Node
|
|
|
|
nodeType?: Type
|
|
range?: CST.Range
|
|
linePos?: { start: LinePos; end: LinePos }
|
|
|
|
/**
|
|
* Drops `source` and adds `nodeType`, `range` and `linePos`, as well as
|
|
* adding details to `message`. Run automatically for document errors if
|
|
* the `prettyErrors` option is set.
|
|
*/
|
|
makePretty(): void
|
|
}
|
|
|
|
export class YAMLReferenceError extends YAMLError {
|
|
name: 'YAMLReferenceError'
|
|
}
|
|
|
|
export class YAMLSemanticError extends YAMLError {
|
|
name: 'YAMLSemanticError'
|
|
}
|
|
|
|
export class YAMLSyntaxError extends YAMLError {
|
|
name: 'YAMLSyntaxError'
|
|
}
|
|
|
|
export class YAMLWarning extends YAMLError {
|
|
name: 'YAMLWarning'
|
|
}
|