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>
68 lines
1.7 KiB
JavaScript
68 lines
1.7 KiB
JavaScript
/**
|
|
* Inquirer.js
|
|
* A collection of common interactive command line user interfaces.
|
|
*/
|
|
import { input, select, number, confirm, rawlist, expand, checkbox, password, editor, search, Separator, } from '@inquirer/prompts';
|
|
import PromptsRunner from "./ui/prompt.js";
|
|
const builtInPrompts = {
|
|
input,
|
|
select,
|
|
/** @deprecated `list` is now named `select` */
|
|
list: select,
|
|
number,
|
|
confirm,
|
|
rawlist,
|
|
expand,
|
|
checkbox,
|
|
password,
|
|
editor,
|
|
search,
|
|
};
|
|
/**
|
|
* Create a new self-contained prompt module.
|
|
*/
|
|
export function createPromptModule(opt) {
|
|
function promptModule(questions, answers) {
|
|
const runner = new PromptsRunner(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: PromptsRunner,
|
|
},
|
|
createPromptModule,
|
|
registerPrompt,
|
|
restoreDefaultPrompts,
|
|
Separator,
|
|
};
|
|
export default inquirer;
|