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>
179 lines
3.4 KiB
JavaScript
179 lines
3.4 KiB
JavaScript
'use strict';
|
|
|
|
var keyboard = require('../system/keyboard.js');
|
|
|
|
/**
|
|
* Mapping for a default US-104-QWERTY keyboard
|
|
*/ const defaultKeyMap = [
|
|
// alphanumeric block - writing system
|
|
...'0123456789'.split('').map((c)=>({
|
|
code: `Digit${c}`,
|
|
key: c
|
|
})),
|
|
...')!@#$%^&*('.split('').map((c, i)=>({
|
|
code: `Digit${i}`,
|
|
key: c,
|
|
shiftKey: true
|
|
})),
|
|
...'abcdefghijklmnopqrstuvwxyz'.split('').map((c)=>({
|
|
code: `Key${c.toUpperCase()}`,
|
|
key: c
|
|
})),
|
|
...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('').map((c)=>({
|
|
code: `Key${c}`,
|
|
key: c,
|
|
shiftKey: true
|
|
})),
|
|
{
|
|
code: 'BracketLeft',
|
|
key: '['
|
|
},
|
|
{
|
|
code: 'BracketLeft',
|
|
key: '{',
|
|
shiftKey: true
|
|
},
|
|
{
|
|
code: 'BracketRight',
|
|
key: ']'
|
|
},
|
|
{
|
|
code: 'BracketRight',
|
|
key: '}',
|
|
shiftKey: true
|
|
},
|
|
// alphanumeric block - functional
|
|
{
|
|
code: 'Space',
|
|
key: ' '
|
|
},
|
|
{
|
|
code: 'AltLeft',
|
|
key: 'Alt',
|
|
location: keyboard.DOM_KEY_LOCATION.LEFT
|
|
},
|
|
{
|
|
code: 'AltRight',
|
|
key: 'Alt',
|
|
location: keyboard.DOM_KEY_LOCATION.RIGHT
|
|
},
|
|
{
|
|
code: 'ShiftLeft',
|
|
key: 'Shift',
|
|
location: keyboard.DOM_KEY_LOCATION.LEFT
|
|
},
|
|
{
|
|
code: 'ShiftRight',
|
|
key: 'Shift',
|
|
location: keyboard.DOM_KEY_LOCATION.RIGHT
|
|
},
|
|
{
|
|
code: 'ControlLeft',
|
|
key: 'Control',
|
|
location: keyboard.DOM_KEY_LOCATION.LEFT
|
|
},
|
|
{
|
|
code: 'ControlRight',
|
|
key: 'Control',
|
|
location: keyboard.DOM_KEY_LOCATION.RIGHT
|
|
},
|
|
{
|
|
code: 'MetaLeft',
|
|
key: 'Meta',
|
|
location: keyboard.DOM_KEY_LOCATION.LEFT
|
|
},
|
|
{
|
|
code: 'MetaRight',
|
|
key: 'Meta',
|
|
location: keyboard.DOM_KEY_LOCATION.RIGHT
|
|
},
|
|
{
|
|
code: 'OSLeft',
|
|
key: 'OS',
|
|
location: keyboard.DOM_KEY_LOCATION.LEFT
|
|
},
|
|
{
|
|
code: 'OSRight',
|
|
key: 'OS',
|
|
location: keyboard.DOM_KEY_LOCATION.RIGHT
|
|
},
|
|
{
|
|
code: 'ContextMenu',
|
|
key: 'ContextMenu'
|
|
},
|
|
{
|
|
code: 'Tab',
|
|
key: 'Tab'
|
|
},
|
|
{
|
|
code: 'CapsLock',
|
|
key: 'CapsLock'
|
|
},
|
|
{
|
|
code: 'Backspace',
|
|
key: 'Backspace'
|
|
},
|
|
{
|
|
code: 'Enter',
|
|
key: 'Enter'
|
|
},
|
|
// function
|
|
{
|
|
code: 'Escape',
|
|
key: 'Escape'
|
|
},
|
|
// arrows
|
|
{
|
|
code: 'ArrowUp',
|
|
key: 'ArrowUp'
|
|
},
|
|
{
|
|
code: 'ArrowDown',
|
|
key: 'ArrowDown'
|
|
},
|
|
{
|
|
code: 'ArrowLeft',
|
|
key: 'ArrowLeft'
|
|
},
|
|
{
|
|
code: 'ArrowRight',
|
|
key: 'ArrowRight'
|
|
},
|
|
// control pad
|
|
{
|
|
code: 'Home',
|
|
key: 'Home'
|
|
},
|
|
{
|
|
code: 'End',
|
|
key: 'End'
|
|
},
|
|
{
|
|
code: 'Delete',
|
|
key: 'Delete'
|
|
},
|
|
{
|
|
code: 'PageUp',
|
|
key: 'PageUp'
|
|
},
|
|
{
|
|
code: 'PageDown',
|
|
key: 'PageDown'
|
|
},
|
|
// Special keys that are not part of a default US-layout but included for specific behavior
|
|
{
|
|
code: 'Fn',
|
|
key: 'Fn'
|
|
},
|
|
{
|
|
code: 'Symbol',
|
|
key: 'Symbol'
|
|
},
|
|
{
|
|
code: 'AltRight',
|
|
key: 'AltGraph'
|
|
}
|
|
];
|
|
|
|
exports.defaultKeyMap = defaultKeyMap;
|