tftsr-devops_investigation/node_modules/@zip.js/zip.js/dist/zip-fs.min.js

2 lines
153 KiB
JavaScript
Raw Normal View History

feat: initial implementation of TFTSR IT Triage & RCA application 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>
2026-03-15 03:36:25 +00:00
((e,A)=>{"object"==typeof exports&&"undefined"!=typeof module?A(exports):"function"==typeof define&&define.amd?define(["exports"],A):A((e="undefined"!=typeof globalThis?globalThis:e||self).zip={})})(this,function(e){"use strict";const{Array:A,Object:t,String:s,Number:n,BigInt:r,Math:i,Date:a,Map:o,Set:g,Response:c,URL:d,Error:l,Uint8Array:B,Uint16Array:p,Uint32Array:h,DataView:u,Blob:m,Promise:E,TextEncoder:w,TextDecoder:I,document:f,crypto:C,btoa:Q,TransformStream:x,ReadableStream:D,WritableStream:y,CompressionStream:v,DecompressionStream:b,navigator:F,Worker:Y}="undefined"!=typeof globalThis?globalThis:this||self;var S=void 0!==f?f.currentScript:null;const G=4294967295,k=65535,M=255,R=67324752,z=134695760,H=z,U=33639248,K=101010256,W=101075792,O=117853008,J=22,T=21589,L=2048,N=16384,q=2048,j=1024,P=512,V="/",Z=30,X=new a(2107,11,31),_=new a(1980,0,1),$=void 0,ee=1/0,Ae="undefined",te="function";let se=2;try{typeof F!=Ae&&F.hardwareConcurrency&&(se=F.hardwareConcurrency)}catch{}const ne={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:se,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof v!=Ae&&v,DecompressionStream:typeof b!=Ae&&b},re=t.assign({},ne);function ie(){return re}function ae(e){return i.max(e.chunkSize,64)}function oe(e){const{baseURI:A,chunkSize:t,maxWorkers:s,terminateWorkerTimeout:n,useCompressionStream:r,useWebWorkers:i,CompressionStream:a,DecompressionStream:o,CompressionStreamZlib:g,DecompressionStreamZlib:c,workerURI:d,wasmURI:l}=e;ge("baseURI",A),ge("wasmURI",l),ge("workerURI",d),ge("chunkSize",t),ge("maxWorkers",s),ge("terminateWorkerTimeout",n),ge("useCompressionStream",r),ge("useWebWorkers",i),ge("CompressionStream",a),ge("DecompressionStream",o),ge("CompressionStreamZlib",g),ge("DecompressionStreamZlib",c)}function ge(e,A){A!==$&&(re[e]=A)}const ce=[];for(let e=0;256>e;e++){let A=e;for(let e=0;8>e;e++)1&A?A=A>>>1^3988292384:A>>>=1;ce[e]=A}class de{constructor(e){this.crc=e||-1}append(e){let A=0|this.crc;for(let t=0,s=0|e.length;s>t;t++)A=A>>>8^ce[255&(A^e[t])];this.crc=A}get(){return~this.crc}}class le extends x{constructor(){let e;const A=new de;super({transform(e,t){A.append(e),t.enqueue(e)},flush(){const t=new B(4);new u(t.buffer).setUint32(0,A.get()),e.value=t}}),e=this}}function Be(e){if(typeof w==Ae){const A=new B((e=unescape(encodeURIComponent(e))).length);for(let t=0;t<A.length;t++)A[t]=e.charCodeAt(t);return A}return(new w).encode(e)}const pe={concat(e,A){if(0===e.length||0===A.length)return e.concat(A);const t=e[e.length-1],s=pe.getPartial(t);return 32===s?e.concat(A):pe._shiftRight(A,s,0|t,e.slice(0,e.length-1))},bitLength(e){const A=e.length;if(0===A)return 0;const t=e[A-1];return 32*(A-1)+pe.getPartial(t)},clamp(e,A){if(32*e.length<A)return e;const t=(e=e.slice(0,i.ceil(A/32))).length;return A&=31,t>0&&A&&(e[t-1]=pe.partial(A,e[t-1]&2147483648>>A-1,1)),e},partial:(e,A,t)=>32===e?A:(t?0|A:A<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,A,t,s){for(void 0===s&&(s=[]);A>=32;A-=32)s.push(t),t=0;if(0===A)return s.concat(e);for(let n=0;n<e.length;n++)s.push(t|e[n]>>>A),t=e[n]<<32-A;const n=e.length?e[e.length-1]:0,r=pe.getPartial(n);return s.push(pe.partial(A+r&31,A+r>32?t:s.pop(),1)),s}},he={bytes:{fromBits(e){const A=pe.bitLength(e)/8,t=new B(A);let s;for(let n=0;A>n;n++)3&n||(s=e[n/4]),t[n]=s>>>24,s<<=8;return t},toBits(e){const A=[];let t,s=0;for(t=0;t<e.length;t++)s=s<<8|e[t],3&~t||(A.push(s),s=0);return 3&t&&A.push(pe.partial(8*(3&t),s)),A}}},ue=class{constructor(e){const A=this;A.blockSize=512,A._init=[1732584193,4023233417,2562383102,271733878,3285377520],A._key=[1518500249,1859775393,2400959708,3395469782],e?(A._h=e._h.slice(0),A._buffer=e._buffer.slice(0),A._length=e._length):A.reset()}reset(){const e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){const A=this;"string"==typeof e&&(e=he.utf8String.toBits(e));const t=A._buffer=pe.concat(A._buffer,e),s=A._length,n=A._length=s+pe.bitLength(e);if(n>9007199254740991)th