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>
55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
import { c as createExpect, a as globalExpect, v as vi, b as vitest } from './vi.DgezovHB.js';
|
|
import { g as getWorkerState } from './utils.C8RiOc4B.js';
|
|
import { i as isFirstRun, a as runOnce } from './run-once.2ogXb3JV.js';
|
|
import { b as bench } from './benchmark.Cdu9hjj4.js';
|
|
import { expectTypeOf } from 'expect-type';
|
|
import { afterAll, afterEach, beforeAll, beforeEach, describe, it, onTestFailed, onTestFinished, suite, test } from '@vitest/runner';
|
|
import * as chai from 'chai';
|
|
import { assert, should } from 'chai';
|
|
|
|
function inject(key) {
|
|
const workerState = getWorkerState();
|
|
return workerState.providedContext[key];
|
|
}
|
|
|
|
function getRunningMode() {
|
|
return process.env.VITEST_MODE === "WATCH" ? "watch" : "run";
|
|
}
|
|
function isWatchMode() {
|
|
return getRunningMode() === "watch";
|
|
}
|
|
|
|
const assertType = function assertType2() {
|
|
};
|
|
|
|
var VitestIndex = /*#__PURE__*/Object.freeze({
|
|
__proto__: null,
|
|
afterAll: afterAll,
|
|
afterEach: afterEach,
|
|
assert: assert,
|
|
assertType: assertType,
|
|
beforeAll: beforeAll,
|
|
beforeEach: beforeEach,
|
|
bench: bench,
|
|
chai: chai,
|
|
createExpect: createExpect,
|
|
describe: describe,
|
|
expect: globalExpect,
|
|
expectTypeOf: expectTypeOf,
|
|
getRunningMode: getRunningMode,
|
|
inject: inject,
|
|
isFirstRun: isFirstRun,
|
|
isWatchMode: isWatchMode,
|
|
it: it,
|
|
onTestFailed: onTestFailed,
|
|
onTestFinished: onTestFinished,
|
|
runOnce: runOnce,
|
|
should: should,
|
|
suite: suite,
|
|
test: test,
|
|
vi: vi,
|
|
vitest: vitest
|
|
});
|
|
|
|
export { VitestIndex as V, isWatchMode as a, assertType as b, getRunningMode as g, inject as i };
|