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>
74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
"use strict";
|
|
/**
|
|
* Inquirer.js
|
|
* A collection of common interactive command line user interfaces.
|
|
*/
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.createPromptModule = createPromptModule;
|
|
const prompts_1 = require("@inquirer/prompts");
|
|
const prompt_ts_1 = __importDefault(require("./ui/prompt.js"));
|
|
const builtInPrompts = {
|
|
input: prompts_1.input,
|
|
select: prompts_1.select,
|
|
/** @deprecated `list` is now named `select` */
|
|
list: prompts_1.select,
|
|
number: prompts_1.number,
|
|
confirm: prompts_1.confirm,
|
|
rawlist: prompts_1.rawlist,
|
|
expand: prompts_1.expand,
|
|
checkbox: prompts_1.checkbox,
|
|
password: prompts_1.password,
|
|
editor: prompts_1.editor,
|
|
search: prompts_1.search,
|
|
};
|
|
/**
|
|
* Create a new self-contained prompt module.
|
|
*/
|
|
function createPromptModule(opt) {
|
|
function promptModule(questions, answers) {
|
|
const runner = new prompt_ts_1.default(promptModule.prompts, opt);
|
|
const promptPromise = runner.run(questions, answers);
|
|
return Object.assign(promptPromise, { ui: runner });
|
|
}
|
|
promptModule.prompts = { ...builtInPrompts };
|
|
/**
|
|
* Register a prompt type
|
|
*/
|
|
promptModule.registerPrompt = function (name, prompt) {
|
|
promptModule.prompts[name] = prompt;
|
|
return this;
|
|
};
|
|
/**
|
|
* Register the defaults provider prompts
|
|
*/
|
|
promptModule.restoreDefaultPrompts = function () {
|
|
promptModule.prompts = { ...builtInPrompts };
|
|
};
|
|
return promptModule;
|
|
}
|
|
/**
|
|
* Public CLI helper interface
|
|
*/
|
|
const prompt = createPromptModule();
|
|
// Expose helper functions on the top level for easiest usage by common users
|
|
function registerPrompt(name, newPrompt) {
|
|
prompt.registerPrompt(name, newPrompt);
|
|
}
|
|
function restoreDefaultPrompts() {
|
|
prompt.restoreDefaultPrompts();
|
|
}
|
|
const inquirer = {
|
|
prompt,
|
|
ui: {
|
|
Prompt: prompt_ts_1.default,
|
|
},
|
|
createPromptModule,
|
|
registerPrompt,
|
|
restoreDefaultPrompts,
|
|
Separator: prompts_1.Separator,
|
|
};
|
|
exports.default = inquirer;
|