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

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