tabby-ai-assistant 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +232 -0
- package/dist/components/chat/chat-input.component.d.ts +65 -0
- package/dist/components/chat/chat-interface.component.d.ts +71 -0
- package/dist/components/chat/chat-message.component.d.ts +53 -0
- package/dist/components/chat/chat-settings.component.d.ts +62 -0
- package/dist/components/common/error-message.component.d.ts +11 -0
- package/dist/components/common/loading-spinner.component.d.ts +4 -0
- package/dist/components/security/consent-dialog.component.d.ts +11 -0
- package/dist/components/security/password-prompt.component.d.ts +10 -0
- package/dist/components/security/risk-confirm-dialog.component.d.ts +36 -0
- package/dist/components/settings/ai-settings-tab.component.d.ts +72 -0
- package/dist/components/settings/general-settings.component.d.ts +60 -0
- package/dist/components/settings/provider-config.component.d.ts +182 -0
- package/dist/components/settings/security-settings.component.d.ts +23 -0
- package/dist/components/terminal/ai-toolbar-button.component.d.ts +10 -0
- package/dist/components/terminal/command-preview.component.d.ts +15 -0
- package/dist/components/terminal/command-suggestion.component.d.ts +16 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +2 -0
- package/dist/index.js.LICENSE.txt +18 -0
- package/dist/main.d.ts +8 -0
- package/dist/providers/tabby/ai-config.provider.d.ts +18 -0
- package/dist/providers/tabby/ai-hotkey.provider.d.ts +21 -0
- package/dist/providers/tabby/ai-settings-tab.provider.d.ts +11 -0
- package/dist/providers/tabby/ai-toolbar-button.provider.d.ts +17 -0
- package/dist/services/chat/chat-history.service.d.ts +67 -0
- package/dist/services/chat/chat-session.service.d.ts +58 -0
- package/dist/services/chat/command-generator.service.d.ts +49 -0
- package/dist/services/core/ai-assistant.service.d.ts +88 -0
- package/dist/services/core/ai-provider-manager.service.d.ts +119 -0
- package/dist/services/core/config-provider.service.d.ts +137 -0
- package/dist/services/core/logger.service.d.ts +21 -0
- package/dist/services/providers/anthropic-provider.service.d.ts +39 -0
- package/dist/services/providers/base-provider.service.d.ts +137 -0
- package/dist/services/providers/glm-provider.service.d.ts +91 -0
- package/dist/services/providers/minimax-provider.service.d.ts +93 -0
- package/dist/services/providers/openai-compatible.service.d.ts +39 -0
- package/dist/services/providers/openai-provider.service.d.ts +38 -0
- package/dist/services/security/consent-manager.service.d.ts +65 -0
- package/dist/services/security/password-manager.service.d.ts +67 -0
- package/dist/services/security/risk-assessment.service.d.ts +65 -0
- package/dist/services/security/security-validator.service.d.ts +36 -0
- package/dist/services/terminal/command-analyzer.service.d.ts +20 -0
- package/dist/services/terminal/context-menu.service.d.ts +24 -0
- package/dist/services/terminal/hotkey.service.d.ts +28 -0
- package/dist/services/terminal/terminal-context.service.d.ts +100 -0
- package/dist/types/ai.types.d.ts +107 -0
- package/dist/types/provider.types.d.ts +105 -0
- package/dist/types/security.types.d.ts +85 -0
- package/dist/types/terminal.types.d.ts +150 -0
- package/dist/utils/encryption.utils.d.ts +83 -0
- package/dist/utils/formatting.utils.d.ts +106 -0
- package/dist/utils/validation.utils.d.ts +83 -0
- package/integration-test-output.txt +50 -0
- package/integration-tests/api-integration.test.ts +183 -0
- package/jest.config.js +47 -0
- package/package.json +73 -0
- package/setup-jest.ts +37 -0
- package/src/components/chat/chat-input.component.html +61 -0
- package/src/components/chat/chat-input.component.scss +183 -0
- package/src/components/chat/chat-input.component.ts +149 -0
- package/src/components/chat/chat-interface.component.html +119 -0
- package/src/components/chat/chat-interface.component.scss +354 -0
- package/src/components/chat/chat-interface.component.ts +224 -0
- package/src/components/chat/chat-message.component.html +65 -0
- package/src/components/chat/chat-message.component.scss +178 -0
- package/src/components/chat/chat-message.component.ts +93 -0
- package/src/components/chat/chat-settings.component.html +132 -0
- package/src/components/chat/chat-settings.component.scss +172 -0
- package/src/components/chat/chat-settings.component.ts +168 -0
- package/src/components/common/error-message.component.ts +124 -0
- package/src/components/common/loading-spinner.component.ts +72 -0
- package/src/components/security/consent-dialog.component.ts +77 -0
- package/src/components/security/password-prompt.component.ts +79 -0
- package/src/components/security/risk-confirm-dialog.component.html +87 -0
- package/src/components/security/risk-confirm-dialog.component.scss +360 -0
- package/src/components/security/risk-confirm-dialog.component.ts +96 -0
- package/src/components/settings/ai-settings-tab.component.html +140 -0
- package/src/components/settings/ai-settings-tab.component.scss +371 -0
- package/src/components/settings/ai-settings-tab.component.ts +193 -0
- package/src/components/settings/general-settings.component.html +103 -0
- package/src/components/settings/general-settings.component.scss +285 -0
- package/src/components/settings/general-settings.component.ts +123 -0
- package/src/components/settings/provider-config.component.html +95 -0
- package/src/components/settings/provider-config.component.scss +60 -0
- package/src/components/settings/provider-config.component.ts +206 -0
- package/src/components/settings/security-settings.component.html +51 -0
- package/src/components/settings/security-settings.component.scss +66 -0
- package/src/components/settings/security-settings.component.ts +71 -0
- package/src/components/terminal/ai-toolbar-button.component.ts +49 -0
- package/src/components/terminal/command-preview.component.ts +185 -0
- package/src/components/terminal/command-suggestion.component.ts +128 -0
- package/src/index.ts +163 -0
- package/src/main.ts +16 -0
- package/src/providers/tabby/ai-config.provider.ts +70 -0
- package/src/providers/tabby/ai-hotkey.provider.ts +55 -0
- package/src/providers/tabby/ai-settings-tab.provider.ts +18 -0
- package/src/providers/tabby/ai-toolbar-button.provider.ts +49 -0
- package/src/services/chat/chat-history.service.ts +239 -0
- package/src/services/chat/chat-session.service.spec.ts +249 -0
- package/src/services/chat/chat-session.service.ts +180 -0
- package/src/services/chat/command-generator.service.ts +301 -0
- package/src/services/core/ai-assistant.service.ts +334 -0
- package/src/services/core/ai-provider-manager.service.ts +314 -0
- package/src/services/core/config-provider.service.ts +347 -0
- package/src/services/core/logger.service.ts +104 -0
- package/src/services/providers/anthropic-provider.service.ts +373 -0
- package/src/services/providers/base-provider.service.ts +369 -0
- package/src/services/providers/glm-provider.service.ts +467 -0
- package/src/services/providers/minimax-provider.service.ts +427 -0
- package/src/services/providers/openai-compatible.service.ts +394 -0
- package/src/services/providers/openai-provider.service.ts +376 -0
- package/src/services/security/consent-manager.service.ts +332 -0
- package/src/services/security/password-manager.service.ts +188 -0
- package/src/services/security/risk-assessment.service.ts +340 -0
- package/src/services/security/security-validator.service.ts +143 -0
- package/src/services/terminal/command-analyzer.service.ts +43 -0
- package/src/services/terminal/context-menu.service.ts +45 -0
- package/src/services/terminal/hotkey.service.ts +53 -0
- package/src/services/terminal/terminal-context.service.ts +317 -0
- package/src/styles/ai-assistant.scss +449 -0
- package/src/types/ai.types.ts +133 -0
- package/src/types/provider.types.ts +147 -0
- package/src/types/security.types.ts +103 -0
- package/src/types/terminal.types.ts +186 -0
- package/src/utils/encryption.utils.spec.ts +250 -0
- package/src/utils/encryption.utils.ts +271 -0
- package/src/utils/formatting.utils.ts +359 -0
- package/src/utils/validation.utils.spec.ts +225 -0
- package/src/utils/validation.utils.ts +314 -0
- package/tsconfig.json +45 -0
- package/webpack-docker.config.js +42 -0
- package/webpack.config.js +59 -0
- package/webpack.config.js.backup +57 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see index.js.LICENSE.txt */
|
|
2
|
+
(()=>{var e={19(e,t,n){var r,i,o,s,a,c,l,u,d;e.exports=(d=n(9021),n(3009),n(1025),o=(i=(r=d).lib).Base,s=i.WordArray,c=(a=r.algo).SHA256,l=a.HMAC,u=a.PBKDF2=o.extend({cfg:o.extend({keySize:4,hasher:c,iterations:25e4}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=this.cfg,r=l.create(n.hasher,e),i=s.create(),o=s.create([1]),a=i.words,c=o.words,u=n.keySize,d=n.iterations;a.length<u;){var f=r.update(t).finalize(o);r.reset();for(var p=f.words,h=p.length,m=f,g=1;g<d;g++){m=r.finalize(m),r.reset();for(var v=m.words,b=0;b<h;b++)p[b]^=v[b]}i.concat(f),c[0]++}return i.sigBytes=4*u,i}}),r.PBKDF2=function(e,t,n){return u.create(n).compute(e,t)},d.PBKDF2)},25(e,t,n){var r,i,o,s;e.exports=(s=n(9021),n(7165),i=(r=s).lib.CipherParams,o=r.enc.Hex,r.format.Hex={stringify:function(e){return e.ciphertext.toString(o)},parse:function(e){var t=o.parse(e);return i.create({ciphertext:t})}},s.format.Hex)},37(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.windowTime=void 0;var r=n(6808),i=n(2326),o=n(9879),s=n(5212),a=n(7214),c=n(4830),l=n(6404),u=n(8619);t.windowTime=function(e){for(var t,n,d=[],f=1;f<arguments.length;f++)d[f-1]=arguments[f];var p=null!==(t=l.popScheduler(d))&&void 0!==t?t:i.asyncScheduler,h=null!==(n=d[0])&&void 0!==n?n:null,m=d[1]||1/0;return s.operate(function(t,n){var i=[],s=!1,l=function(e){var t=e.window,n=e.subs;t.complete(),n.unsubscribe(),c.arrRemove(i,e),s&&d()},d=function(){if(i){var t=new o.Subscription;n.add(t);var s=new r.Subject,a={window:s,subs:t,seen:0};i.push(a),n.next(s.asObservable()),u.executeSchedule(t,p,function(){return l(a)},e)}};null!==h&&h>=0?u.executeSchedule(n,p,d,h,!0):s=!0,d();var f=function(e){return i.slice().forEach(e)},g=function(e){f(function(t){var n=t.window;return e(n)}),e(n),n.unsubscribe()};return t.subscribe(a.createOperatorSubscriber(n,function(e){f(function(t){t.window.next(e),m<=++t.seen&&l(t)})},function(){return g(function(e){return e.complete()})},function(e){return g(function(t){return t.error(e)})})),function(){i=null}})}},75(e,t,n){"use strict";var r,i,o,s,a,c,l,u,d,f,p,h,m,g,v,b,y,w,_,x,S=this&&this.__classPrivateFieldSet||function(e,t,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?i.call(e,n):i?i.value=n:t.set(e,n),n},O=this&&this.__classPrivateFieldGet||function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Object.defineProperty(t,"__esModule",{value:!0}),t.MessageStream=void 0;const P=n(2854),k=n(2492);class C{constructor(){r.add(this),this.messages=[],this.receivedMessages=[],i.set(this,void 0),this.controller=new AbortController,o.set(this,void 0),s.set(this,()=>{}),a.set(this,()=>{}),c.set(this,void 0),l.set(this,()=>{}),u.set(this,()=>{}),d.set(this,{}),f.set(this,!1),p.set(this,!1),h.set(this,!1),m.set(this,!1),b.set(this,e=>{if(S(this,p,!0,"f"),e instanceof Error&&"AbortError"===e.name&&(e=new P.APIUserAbortError),e instanceof P.APIUserAbortError)return S(this,h,!0,"f"),this._emit("abort",e);if(e instanceof P.AnthropicError)return this._emit("error",e);if(e instanceof Error){const t=new P.AnthropicError(e.message);return t.cause=e,this._emit("error",t)}return this._emit("error",new P.AnthropicError(String(e)))}),S(this,o,new Promise((e,t)=>{S(this,s,e,"f"),S(this,a,t,"f")}),"f"),S(this,c,new Promise((e,t)=>{S(this,l,e,"f"),S(this,u,t,"f")}),"f"),O(this,o,"f").catch(()=>{}),O(this,c,"f").catch(()=>{})}static fromReadableStream(e){const t=new C;return t._run(()=>t._fromReadableStream(e)),t}static createMessage(e,t,n){const r=new C;for(const e of t.messages)r._addMessageParam(e);return r._run(()=>r._createMessage(e,{...t,stream:!0},{...n,headers:{...n?.headers,"X-Stainless-Helper-Method":"stream"}})),r}_run(e){e().then(()=>{this._emitFinal(),this._emit("end")},O(this,b,"f"))}_addMessageParam(e){this.messages.push(e)}_addMessage(e,t=!0){this.receivedMessages.push(e),t&&this._emit("message",e)}async _createMessage(e,t,n){const i=n?.signal;i&&(i.aborted&&this.controller.abort(),i.addEventListener("abort",()=>this.controller.abort())),O(this,r,"m",y).call(this);const o=await e.create({...t,stream:!0},{...n,signal:this.controller.signal});this._connected();for await(const e of o)O(this,r,"m",w).call(this,e);if(o.controller.signal?.aborted)throw new P.APIUserAbortError;O(this,r,"m",_).call(this)}_connected(){this.ended||(O(this,s,"f").call(this),this._emit("connect"))}get ended(){return O(this,f,"f")}get errored(){return O(this,p,"f")}get aborted(){return O(this,h,"f")}abort(){this.controller.abort()}on(e,t){return(O(this,d,"f")[e]||(O(this,d,"f")[e]=[])).push({listener:t}),this}off(e,t){const n=O(this,d,"f")[e];if(!n)return this;const r=n.findIndex(e=>e.listener===t);return r>=0&&n.splice(r,1),this}once(e,t){return(O(this,d,"f")[e]||(O(this,d,"f")[e]=[])).push({listener:t,once:!0}),this}emitted(e){return new Promise((t,n)=>{S(this,m,!0,"f"),"error"!==e&&this.once("error",n),this.once(e,t)})}async done(){S(this,m,!0,"f"),await O(this,c,"f")}get currentMessage(){return O(this,i,"f")}async finalMessage(){return await this.done(),O(this,r,"m",g).call(this)}async finalText(){return await this.done(),O(this,r,"m",v).call(this)}_emit(e,...t){if(O(this,f,"f"))return;"end"===e&&(S(this,f,!0,"f"),O(this,l,"f").call(this));const n=O(this,d,"f")[e];if(n&&(O(this,d,"f")[e]=n.filter(e=>!e.once),n.forEach(({listener:e})=>e(...t))),"abort"===e){const e=t[0];return O(this,m,"f")||n?.length||Promise.reject(e),O(this,a,"f").call(this,e),O(this,u,"f").call(this,e),void this._emit("end")}if("error"===e){const e=t[0];O(this,m,"f")||n?.length||Promise.reject(e),O(this,a,"f").call(this,e),O(this,u,"f").call(this,e),this._emit("end")}}_emitFinal(){this.receivedMessages.at(-1)&&this._emit("finalMessage",O(this,r,"m",g).call(this))}async _fromReadableStream(e,t){const n=t?.signal;n&&(n.aborted&&this.controller.abort(),n.addEventListener("abort",()=>this.controller.abort())),O(this,r,"m",y).call(this),this._connected();const i=k.Stream.fromReadableStream(e,this.controller);for await(const e of i)O(this,r,"m",w).call(this,e);if(i.controller.signal?.aborted)throw new P.APIUserAbortError;O(this,r,"m",_).call(this)}[(i=new WeakMap,o=new WeakMap,s=new WeakMap,a=new WeakMap,c=new WeakMap,l=new WeakMap,u=new WeakMap,d=new WeakMap,f=new WeakMap,p=new WeakMap,h=new WeakMap,m=new WeakMap,b=new WeakMap,r=new WeakSet,g=function(){if(0===this.receivedMessages.length)throw new P.AnthropicError("stream ended without producing a Message with role=assistant");return this.receivedMessages.at(-1)},v=function(){if(0===this.receivedMessages.length)throw new P.AnthropicError("stream ended without producing a Message with role=assistant");const e=this.receivedMessages.at(-1).content.filter(e=>"text"===e.type).map(e=>e.text);if(0===e.length)throw new P.AnthropicError("stream ended without producing a content block with type=text");return e.join(" ")},y=function(){this.ended||S(this,i,void 0,"f")},w=function(e){if(this.ended)return;const t=O(this,r,"m",x).call(this,e);switch(this._emit("streamEvent",e,t),e.type){case"content_block_delta":"text_delta"===e.delta.type&&this._emit("text",e.delta.text,t.content.at(-1).text||"");break;case"message_stop":this._addMessageParam(t),this._addMessage(t,!0);break;case"content_block_stop":this._emit("contentBlock",t.content.at(-1));break;case"message_start":S(this,i,t,"f")}},_=function(){if(this.ended)throw new P.AnthropicError("stream has ended, this shouldn't happen");const e=O(this,i,"f");if(!e)throw new P.AnthropicError("request ended without sending any chunks");return S(this,i,void 0,"f"),e},x=function(e){let t=O(this,i,"f");if("message_start"===e.type){if(t)throw new P.AnthropicError(`Unexpected event order, got ${e.type} before receiving "message_stop"`);return e.message}if(!t)throw new P.AnthropicError(`Unexpected event order, got ${e.type} before "message_start"`);switch(e.type){case"message_stop":case"content_block_stop":return t;case"message_delta":return t.stop_reason=e.delta.stop_reason,t.stop_sequence=e.delta.stop_sequence,t.usage.output_tokens=e.usage.output_tokens,t;case"content_block_start":return t.content.push(e.content_block),t;case"content_block_delta":{const n=t.content.at(e.index);return"text"===n?.type&&"text_delta"===e.delta.type&&(n.text+=e.delta.text),t}}},Symbol.asyncIterator)](){const e=[],t=[];let n=!1;return this.on("streamEvent",n=>{const r=t.shift();r?r.resolve(n):e.push(n)}),this.on("end",()=>{n=!0;for(const e of t)e.resolve(void 0);t.length=0}),this.on("abort",e=>{n=!0;for(const n of t)n.reject(e);t.length=0}),this.on("error",e=>{n=!0;for(const n of t)n.reject(e);t.length=0}),{next:async()=>e.length?{value:e.shift(),done:!1}:n?{value:void 0,done:!0}:new Promise((e,n)=>t.push({resolve:e,reject:n})).then(e=>e?{value:e,done:!1}:{value:void 0,done:!0}),return:async()=>(this.abort(),{value:void 0,done:!0})}}toReadableStream(){return new k.Stream(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}}t.MessageStream=C},96(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.max=void 0;var r=n(2070),i=n(281);t.max=function(e){return r.reduce(i.isFunction(e)?function(t,n){return e(t,n)>0?t:n}:function(e,t){return e>t?e:t})}},131(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.scheduled=void 0;var r=n(5650),i=n(4530),o=n(4950),s=n(6805),a=n(7873),c=n(629),l=n(7552),u=n(4975),d=n(2187),f=n(8263),p=n(6297),h=n(5462),m=n(380);t.scheduled=function(e,t){if(null!=e){if(c.isInteropObservable(e))return r.scheduleObservable(e,t);if(u.isArrayLike(e))return o.scheduleArray(e,t);if(l.isPromise(e))return i.schedulePromise(e,t);if(f.isAsyncIterable(e))return a.scheduleAsyncIterable(e,t);if(d.isIterable(e))return s.scheduleIterable(e,t);if(h.isReadableStreamLike(e))return m.scheduleReadableStreamLike(e,t)}throw p.createInvalidObservableTypeError(e)}},138(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createForm=t.multipartFormRequestOptions=t.maybeMultipartFormRequestOptions=t.isMultipartBody=t.toFile=t.isUploadable=t.isBlobLike=t.isFileLike=t.isResponseLike=t.fileFromPath=void 0;const r=n(3428);var i=n(3428);async function o(e,n,i){if(e=await e,i??(i=(0,t.isFileLike)(e)?{lastModified:e.lastModified,type:e.type}:{}),(0,t.isResponseLike)(e)){const t=await e.blob();return n||(n=new URL(e.url).pathname.split(/[\\/]/).pop()??"unknown_file"),new r.File([t],n,i)}const o=await async function(e){let n=[];if("string"==typeof e||ArrayBuffer.isView(e)||e instanceof ArrayBuffer)n.push(e);else if((0,t.isBlobLike)(e))n.push(await e.arrayBuffer());else{if(!a(e))throw new Error(`Unexpected data type: ${typeof e}; constructor: ${e?.constructor?.name}; props: ${function(e){return`[${Object.getOwnPropertyNames(e).map(e=>`"${e}"`).join(", ")}]`}(e)}`);for await(const t of e)n.push(t)}return n}(e);if(n||(n=function(e){return s(e.name)||s(e.filename)||s(e.path)?.split(/[\\/]/).pop()}(e)??"unknown_file"),!i.type){const e=o[0]?.type;"string"==typeof e&&(i={...i,type:e})}return new r.File(o,n,i)}Object.defineProperty(t,"fileFromPath",{enumerable:!0,get:function(){return i.fileFromPath}}),t.isResponseLike=e=>null!=e&&"object"==typeof e&&"string"==typeof e.url&&"function"==typeof e.blob,t.isFileLike=e=>null!=e&&"object"==typeof e&&"string"==typeof e.name&&"number"==typeof e.lastModified&&(0,t.isBlobLike)(e),t.isBlobLike=e=>null!=e&&"object"==typeof e&&"number"==typeof e.size&&"string"==typeof e.type&&"function"==typeof e.text&&"function"==typeof e.slice&&"function"==typeof e.arrayBuffer,t.isUploadable=e=>(0,t.isFileLike)(e)||(0,t.isResponseLike)(e)||(0,r.isFsReadStream)(e),t.toFile=o;const s=e=>"string"==typeof e?e:"undefined"!=typeof Buffer&&e instanceof Buffer?String(e):void 0,a=e=>null!=e&&"object"==typeof e&&"function"==typeof e[Symbol.asyncIterator];t.isMultipartBody=e=>e&&"object"==typeof e&&e.body&&"MultipartBody"===e[Symbol.toStringTag],t.maybeMultipartFormRequestOptions=async e=>{if(!c(e.body))return e;const n=await(0,t.createForm)(e.body);return(0,r.getMultipartRequestOptions)(n,e)},t.multipartFormRequestOptions=async e=>{const n=await(0,t.createForm)(e.body);return(0,r.getMultipartRequestOptions)(n,e)},t.createForm=async e=>{const t=new r.FormData;return await Promise.all(Object.entries(e||{}).map(([e,n])=>l(t,e,n))),t};const c=e=>{if((0,t.isUploadable)(e))return!0;if(Array.isArray(e))return e.some(c);if(e&&"object"==typeof e)for(const t in e)if(c(e[t]))return!0;return!1},l=async(e,n,r)=>{if(void 0!==r){if(null==r)throw new TypeError(`Received null for "${n}"; to pass null in FormData, you must use the string 'null'`);if("string"==typeof r||"number"==typeof r||"boolean"==typeof r)e.append(n,String(r));else if((0,t.isUploadable)(r)){const t=await o(r);e.append(n,t)}else if(Array.isArray(r))await Promise.all(r.map(t=>l(e,n+"[]",t)));else{if("object"!=typeof r)throw new TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${r} instead`);await Promise.all(Object.entries(r).map(([t,r])=>l(e,`${n}[${t}]`,r)))}}}},142(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.min=void 0;var r=n(2070),i=n(281);t.min=function(e){return r.reduce(i.isFunction(e)?function(t,n){return e(t,n)<0?t:n}:function(e,t){return e<t?e:t})}},201(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.concatAll=void 0;var r=n(8087);t.concatAll=function(){return r.mergeAll(1)}},281(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isFunction=void 0,t.isFunction=function(e){return"function"==typeof e}},380(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.scheduleReadableStreamLike=void 0;var r=n(7873),i=n(5462);t.scheduleReadableStreamLike=function(e,t){return r.scheduleAsyncIterable(i.readableStreamLikeToAsyncGenerator(e),t)}},381(e,t,n){"use strict";var r,i=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.ReplaySubject=void 0;var o=n(6808),s=n(3275),a=function(e){function t(t,n,r){void 0===t&&(t=1/0),void 0===n&&(n=1/0),void 0===r&&(r=s.dateTimestampProvider);var i=e.call(this)||this;return i._bufferSize=t,i._windowTime=n,i._timestampProvider=r,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,t),i._windowTime=Math.max(1,n),i}return i(t,e),t.prototype.next=function(t){var n=this,r=n.isStopped,i=n._buffer,o=n._infiniteTimeWindow,s=n._timestampProvider,a=n._windowTime;r||(i.push(t),!o&&i.push(s.now()+a)),this._trimBuffer(),e.prototype.next.call(this,t)},t.prototype._subscribe=function(e){this._throwIfClosed(),this._trimBuffer();for(var t=this._innerSubscribe(e),n=this._infiniteTimeWindow,r=this._buffer.slice(),i=0;i<r.length&&!e.closed;i+=n?1:2)e.next(r[i]);return this._checkFinalizedStatuses(e),t},t.prototype._trimBuffer=function(){var e=this,t=e._bufferSize,n=e._timestampProvider,r=e._buffer,i=e._infiniteTimeWindow,o=(i?1:2)*t;if(t<1/0&&o<r.length&&r.splice(0,r.length-o),!i){for(var s=n.now(),a=0,c=1;c<r.length&&r[c]<=s;c+=2)a=c;a&&r.splice(0,a+1)}},t}(o.Subject);t.ReplaySubject=a},389(e,t){"use strict";var n,r,i;Object.defineProperty(t,"__esModule",{value:!0}),t.HealthStatus=t.ProviderCapability=t.MessageRole=void 0,(i=t.MessageRole||(t.MessageRole={})).USER="user",i.ASSISTANT="assistant",i.SYSTEM="system",(r=t.ProviderCapability||(t.ProviderCapability={})).CHAT="chat",r.COMMAND_GENERATION="command_generation",r.COMMAND_EXPLANATION="command_explanation",r.REASONING="reasoning",r.FUNCTION_CALL="function_call",r.STREAMING="streaming",(n=t.HealthStatus||(t.HealthStatus={})).HEALTHY="healthy",n.DEGRADED="degraded",n.UNHEALTHY="unhealthy"},410(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Messages=t.Completions=t.Beta=void 0;var r=n(1671);Object.defineProperty(t,"Beta",{enumerable:!0,get:function(){return r.Beta}});var i=n(9861);Object.defineProperty(t,"Completions",{enumerable:!0,get:function(){return i.Completions}});var o=n(7736);Object.defineProperty(t,"Messages",{enumerable:!0,get:function(){return o.Messages}})},439(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.argsArgArrayOrObject=void 0;var n=Array.isArray,r=Object.getPrototypeOf,i=Object.prototype,o=Object.keys;t.argsArgArrayOrObject=function(e){if(1===e.length){var t=e[0];if(n(t))return{args:t,keys:null};if((a=t)&&"object"==typeof a&&r(a)===i){var s=o(t);return{args:s.map(function(e){return t[e]}),keys:s}}}var a;return{args:e,keys:null}}},477(){},482(e,t,n){var r;e.exports=(r=n(9021),n(7165),r.pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)},537(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r='<div class="chat-message"\n [ngClass]="{\n \'user-message\': isUserMessage(),\n \'assistant-message\': isAssistantMessage(),\n \'system-message\': isSystemMessage(),\n \'grouped\': isGrouped,\n \'with-avatar\': showAvatar\n }"\n (click)="onMessageClick()">\n\n \x3c!-- 头像 --\x3e\n <div *ngIf="showAvatar" class="message-avatar">\n <div *ngIf="isUserMessage()" class="avatar user">\n <i class="icon-user"></i>\n </div>\n <div *ngIf="isAssistantMessage()" class="avatar assistant">\n <i class="icon-bot"></i>\n </div>\n <div *ngIf="isSystemMessage()" class="avatar system">\n <i class="icon-info"></i>\n </div>\n </div>\n\n \x3c!-- 消息内容 --\x3e\n <div class="message-content">\n <div class="message-bubble">\n \x3c!-- 用户消息 --\x3e\n <div *ngIf="isUserMessage()" class="message-text">\n {{ message.content }}\n </div>\n\n \x3c!-- AI消息 --\x3e\n <div *ngIf="isAssistantMessage()" class="message-text ai-response">\n <pre>{{ message.content }}</pre>\n </div>\n\n \x3c!-- 系统消息 --\x3e\n <div *ngIf="isSystemMessage()" class="message-text system">\n <i class="icon-warning"></i>\n {{ message.content }}\n </div>\n\n \x3c!-- 操作按钮(仅AI消息显示) --\x3e\n <div *ngIf="isAssistantMessage()" class="message-actions">\n <button class="action-btn" (click)="copyMessage()" title="复制">\n <i class="icon-copy"></i>\n </button>\n <button class="action-btn" (click)="regenerateResponse()" title="重新生成">\n <i class="icon-refresh"></i>\n </button>\n <button class="action-btn" (click)="markAsHelpful()" title="有用">\n <i class="icon-thumbs-up"></i>\n </button>\n <button class="action-btn" (click)="markAsNotHelpful()" title="无用">\n <i class="icon-thumbs-down"></i>\n </button>\n </div>\n </div>\n\n \x3c!-- 时间戳 --\x3e\n <div *ngIf="showTimestamp" class="message-time">\n {{ formatTime(message.timestamp) }}\n </div>\n </div>\n</div>\n'},597(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.timeoutWith=void 0;var r=n(2326),i=n(5345),o=n(1713);t.timeoutWith=function(e,t,n){var s,a,c;if(n=null!=n?n:r.async,i.isValidDate(e)?s=e:"number"==typeof e&&(a=e),!t)throw new TypeError("No observable provided to switch to");if(c=function(){return t},null==s&&null==a)throw new TypeError("No timeout provided.");return o.timeout({first:s,each:a,scheduler:n,with:c})}},598(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.takeWhile=void 0;var r=n(5212),i=n(7214);t.takeWhile=function(e,t){return void 0===t&&(t=!1),r.operate(function(n,r){var o=0;n.subscribe(i.createOperatorSubscriber(r,function(n){var i=e(n,o++);(i||t)&&r.next(n),!i&&r.complete()}))})}},629(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isInteropObservable=void 0;var r=n(2884),i=n(281);t.isInteropObservable=function(e){return i.isFunction(e[r.observable])}},632(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.throwIfEmpty=void 0;var r=n(9328),i=n(5212),o=n(7214);function s(){return new r.EmptyError}t.throwIfEmpty=function(e){return void 0===e&&(e=s),i.operate(function(t,n){var r=!1;t.subscribe(o.createOperatorSubscriber(n,function(e){r=!0,n.next(e)},function(){return r?n.complete():n.error(e())}))})}},680(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.switchMap=void 0;var r=n(9724),i=n(5212),o=n(7214);t.switchMap=function(e,t){return i.operate(function(n,i){var s=null,a=0,c=!1,l=function(){return c&&!s&&i.complete()};n.subscribe(o.createOperatorSubscriber(i,function(n){null==s||s.unsubscribe();var c=0,u=a++;r.innerFrom(e(n,u)).subscribe(s=o.createOperatorSubscriber(i,function(e){return i.next(t?t(n,e,u,c++):e)},function(){s=null,l()}))},function(){c=!0,l()}))})}},706(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.buffer=void 0;var r=n(5212),i=n(5717),o=n(7214),s=n(9724);t.buffer=function(e){return r.operate(function(t,n){var r=[];return t.subscribe(o.createOperatorSubscriber(n,function(e){return r.push(e)},function(){n.next(r),n.complete()})),s.innerFrom(e).subscribe(o.createOperatorSubscriber(n,function(){var e=r;r=[],n.next(e)},i.noop)),function(){r=null}})}},719(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.joinAllInternals=void 0;var r=n(7699),i=n(3916),o=n(1898),s=n(7478),a=n(3484);t.joinAllInternals=function(e,t){return o.pipe(a.toArray(),s.mergeMap(function(t){return e(t)}),t?i.mapOneOrManyArgs(t):r.identity)}},754(e,t,n){var r,i,o;e.exports=(r=n(9021),o=(i=r).lib.WordArray,i.enc.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,r=this._map;e.clamp();for(var i=[],o=0;o<n;o+=3)for(var s=(t[o>>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,a=0;a<4&&o+.75*a<n;a++)i.push(r.charAt(s>>>6*(3-a)&63));var c=r.charAt(64);if(c)for(;i.length%4;)i.push(c);return i.join("")},parse:function(e){var t=e.length,n=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var i=0;i<n.length;i++)r[n.charCodeAt(i)]=i}var s=n.charAt(64);if(s){var a=e.indexOf(s);-1!==a&&(t=a)}return function(e,t,n){for(var r=[],i=0,s=0;s<t;s++)if(s%4){var a=n[e.charCodeAt(s-1)]<<s%4*2|n[e.charCodeAt(s)]>>>6-s%4*2;r[i>>>2]|=a<<24-i%4*8,i++}return o.create(r,i)}(e,t,r)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},r.enc.Base64)},761(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.switchMapTo=void 0;var r=n(680),i=n(281);t.switchMapTo=function(e,t){return i.isFunction(t)?r.switchMap(function(){return e},t):r.switchMap(function(){return e})}},790(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ConsentDialogComponent=void 0;const o=n(9430),s=n(7643),a=n(8785);let c=class{constructor(e){this.activeModal=e,this.command="",this.riskLevel=a.RiskLevel.MEDIUM,this.rememberChoice=!1}confirm(){this.activeModal.close({confirmed:!0,remember:this.rememberChoice})}cancel(){this.activeModal.dismiss("cancel")}};r([(0,o.Input)(),i("design:type",String)],c.prototype,"command",void 0),r([(0,o.Input)(),i("design:type",String)],c.prototype,"riskLevel",void 0),c=r([(0,o.Component)({selector:"app-consent-dialog",template:'\n <div class="consent-dialog">\n <div class="dialog-header">\n <i class="icon-help-circle"></i>\n <h3>确认执行</h3>\n </div>\n <div class="dialog-content">\n <p>确定要执行此命令吗?</p>\n <div class="command-preview">\n <code>{{ command }}</code>\n </div>\n <div class="checkbox-group">\n <label>\n <input type="checkbox" [(ngModel)]="rememberChoice">\n 记住我的选择(30天内不再提示)\n </label>\n </div>\n </div>\n <div class="dialog-footer">\n <button class="btn btn-secondary" (click)="cancel()">取消</button>\n <button class="btn btn-primary" (click)="confirm()">确认执行</button>\n </div>\n </div>\n ',styles:["\n .consent-dialog {\n background: var(--ai-bg-primary);\n border-radius: 0.5rem;\n max-width: 500px;\n }\n .dialog-header {\n padding: 1.5rem;\n text-align: center;\n border-bottom: 1px solid var(--ai-border);\n }\n .dialog-content {\n padding: 1.5rem;\n }\n .command-preview {\n background: var(--ai-bg-secondary);\n padding: 0.75rem;\n border-radius: 0.375rem;\n margin: 1rem 0;\n }\n .checkbox-group {\n margin-top: 1rem;\n }\n .dialog-footer {\n padding: 1rem 1.5rem;\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n border-top: 1px solid var(--ai-border);\n }\n "]}),i("design:paramtypes",[s.NgbActiveModal])],c),t.ConsentDialogComponent=c},818(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),i(n(5675),t)},839(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ObjectUnsubscribedError=void 0;var r=n(9619);t.ObjectUnsubscribedError=r.createErrorClass(function(e){return function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}})},863(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ChatInterfaceComponent=void 0;const o=n(9430),s=n(2607),a=n(389),c=n(7295),l=n(5084),u=n(9048),d=n(7643);let f=class{constructor(e,t,n,r){this.aiService=e,this.config=t,this.logger=n,this.modal=r,this.messages=[],this.isLoading=!1,this.currentProvider="",this.destroy$=new s.Subject}ngOnInit(){this.loadCurrentProvider(),this.loadChatHistory(),this.sendWelcomeMessage()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}loadCurrentProvider(){const e=this.aiService.getProviderStatus();this.currentProvider=e.active?.displayName||"Unknown"}loadChatHistory(){this.messages=[]}sendWelcomeMessage(){const e={id:this.generateId(),role:a.MessageRole.ASSISTANT,content:`您好!我是AI助手。\n\n我可以帮助您:\n• 将自然语言转换为终端命令\n• 解释复杂的命令\n• 分析命令执行结果\n• 提供错误修复建议\n\n当前使用:${this.currentProvider}\n\n请输入您的问题或描述您想执行的命令。`,timestamp:new Date};this.messages.push(e)}async onSendMessage(e){if(!e.trim()||this.isLoading)return;const t={id:this.generateId(),role:a.MessageRole.USER,content:e.trim(),timestamp:new Date};this.messages.push(t),setTimeout(()=>this.scrollToBottom(),0),e="",this.isLoading=!0;try{const e=await this.aiService.chat({messages:this.messages,maxTokens:1e3,temperature:.7});this.messages.push(e.message),this.saveChatHistory()}catch(e){this.logger.error("Failed to send message",e);const t={id:this.generateId(),role:a.MessageRole.ASSISTANT,content:`抱歉,我遇到了一些问题:${e instanceof Error?e.message:"Unknown error"}\n\n请稍后重试。`,timestamp:new Date};this.messages.push(t)}finally{this.isLoading=!1,setTimeout(()=>this.scrollToBottom(),0)}}clearChat(){confirm("确定要清空聊天记录吗?")&&(this.messages=[],this.sendWelcomeMessage(),localStorage.removeItem("ai-assistant-chat-history"))}exportChat(){const e={provider:this.currentProvider,exportTime:(new Date).toISOString(),messages:this.messages},t=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),n=window.URL.createObjectURL(t),r=document.createElement("a");r.href=n,r.download=`ai-chat-${(new Date).toISOString().slice(0,10)}.json`,r.click(),window.URL.revokeObjectURL(n)}switchProvider(){this.logger.info("Switch provider requested")}scrollToBottom(){const e=document.querySelector(".ai-chat-container");e&&(e.scrollTop=e.scrollHeight)}saveChatHistory(){try{const e=this.messages.slice(-100);localStorage.setItem("ai-assistant-chat-history",JSON.stringify(e))}catch(e){this.logger.error("Failed to save chat history",e)}}generateId(){return`${Date.now()}_${Math.random().toString(36).substr(2,9)}`}formatTimestamp(e){return e.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})}isToday(e){const t=new Date;return e.toDateString()===t.toDateString()}isSameDay(e,t){return e.toDateString()===t.toDateString()}};f=r([(0,o.Component)({selector:"app-chat-interface",template:n(1521),styles:[n(8118)]}),i("design:paramtypes",[c.AiAssistantService,l.ConfigProviderService,u.LoggerService,d.NgbModal])],f),t.ChatInterfaceComponent=f},955(e,t,n){var r;e.exports=(r=n(9021),n(754),n(4636),n(9506),n(7165),function(){var e=r,t=e.lib.BlockCipher,n=e.algo,i=[],o=[],s=[],a=[],c=[],l=[],u=[],d=[],f=[],p=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var n=0,r=0;for(t=0;t<256;t++){var h=r^r<<1^r<<2^r<<3^r<<4;h=h>>>8^255&h^99,i[n]=h,o[h]=n;var m=e[n],g=e[m],v=e[g],b=257*e[h]^16843008*h;s[n]=b<<24|b>>>8,a[n]=b<<16|b>>>16,c[n]=b<<8|b>>>24,l[n]=b,b=16843009*v^65537*g^257*m^16843008*n,u[h]=b<<24|b>>>8,d[h]=b<<16|b>>>16,f[h]=b<<8|b>>>24,p[h]=b,n?(n=m^e[e[e[v^m]]],r^=e[e[r]]):n=r=1}}();var h=[0,1,2,4,8,16,32,64,128,27,54],m=n.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,n=e.sigBytes/4,r=4*((this._nRounds=n+6)+1),o=this._keySchedule=[],s=0;s<r;s++)s<n?o[s]=t[s]:(l=o[s-1],s%n?n>6&&s%n==4&&(l=i[l>>>24]<<24|i[l>>>16&255]<<16|i[l>>>8&255]<<8|i[255&l]):(l=i[(l=l<<8|l>>>24)>>>24]<<24|i[l>>>16&255]<<16|i[l>>>8&255]<<8|i[255&l],l^=h[s/n|0]<<24),o[s]=o[s-n]^l);for(var a=this._invKeySchedule=[],c=0;c<r;c++){if(s=r-c,c%4)var l=o[s];else l=o[s-4];a[c]=c<4||s<=4?l:u[i[l>>>24]]^d[i[l>>>16&255]]^f[i[l>>>8&255]]^p[i[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,s,a,c,l,i)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,u,d,f,p,o),n=e[t+1],e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,r,i,o,s,a){for(var c=this._nRounds,l=e[t]^n[0],u=e[t+1]^n[1],d=e[t+2]^n[2],f=e[t+3]^n[3],p=4,h=1;h<c;h++){var m=r[l>>>24]^i[u>>>16&255]^o[d>>>8&255]^s[255&f]^n[p++],g=r[u>>>24]^i[d>>>16&255]^o[f>>>8&255]^s[255&l]^n[p++],v=r[d>>>24]^i[f>>>16&255]^o[l>>>8&255]^s[255&u]^n[p++],b=r[f>>>24]^i[l>>>16&255]^o[u>>>8&255]^s[255&d]^n[p++];l=m,u=g,d=v,f=b}m=(a[l>>>24]<<24|a[u>>>16&255]<<16|a[d>>>8&255]<<8|a[255&f])^n[p++],g=(a[u>>>24]<<24|a[d>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^n[p++],v=(a[d>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&u])^n[p++],b=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[u>>>8&255]<<8|a[255&d])^n[p++],e[t]=m,e[t+1]=g,e[t+2]=v,e[t+3]=b},keySize:8});e.AES=t._createHelper(m)}(),r.AES)},1025(e,t,n){var r,i,o;e.exports=(i=(r=n(9021)).lib.Base,o=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=o.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),s=this._iKey=t.clone(),a=i.words,c=s.words,l=0;l<n;l++)a[l]^=1549556828,c[l]^=909522486;i.sigBytes=s.sigBytes=r,this.reset()},reset:function(){var e=this._hasher;e.reset(),e.update(this._iKey)},update:function(e){return this._hasher.update(e),this},finalize:function(e){var t=this._hasher,n=t.finalize(e);return t.reset(),t.finalize(this._oKey.clone().concat(n))}})))},1071(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fromSubscribable=void 0;var r=n(8051);t.fromSubscribable=function(e){return new r.Observable(function(t){return e.subscribe(t)})}},1170(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseAiProvider=t.HealthStatus=t.ProviderCapability=void 0;const r=n(389);Object.defineProperty(t,"ProviderCapability",{enumerable:!0,get:function(){return r.ProviderCapability}}),Object.defineProperty(t,"HealthStatus",{enumerable:!0,get:function(){return r.HealthStatus}}),t.BaseAiProvider=class{constructor(){this.config=null}getInfo(){return{name:this.name,displayName:this.displayName,version:"1.0.0",description:`${this.displayName} AI Provider`,capabilities:this.capabilities,authConfig:this.authConfig,supportedModels:this.config?.model?[this.config.model]:[]}}supportsCapability(e){return this.capabilities.includes(e)}getConfig(){return this.config}}},1245(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.observeNotification=t.Notification=t.NotificationKind=void 0;var r,i=n(4885),o=n(1587),s=n(6680),a=n(281);(r=t.NotificationKind||(t.NotificationKind={})).NEXT="N",r.ERROR="E",r.COMPLETE="C";var c=function(){function e(e,t,n){this.kind=e,this.value=t,this.error=n,this.hasValue="N"===e}return e.prototype.observe=function(e){return l(this,e)},e.prototype.do=function(e,t,n){var r=this,i=r.kind,o=r.value,s=r.error;return"N"===i?null==e?void 0:e(o):"E"===i?null==t?void 0:t(s):null==n?void 0:n()},e.prototype.accept=function(e,t,n){var r;return a.isFunction(null===(r=e)||void 0===r?void 0:r.next)?this.observe(e):this.do(e,t,n)},e.prototype.toObservable=function(){var e=this,t=e.kind,n=e.value,r=e.error,a="N"===t?o.of(n):"E"===t?s.throwError(function(){return r}):"C"===t?i.EMPTY:0;if(!a)throw new TypeError("Unexpected notification kind "+t);return a},e.createNext=function(t){return new e("N",t)},e.createError=function(t){return new e("E",void 0,t)},e.createComplete=function(){return e.completeNotification},e.completeNotification=new e("C"),e}();function l(e,t){var n,r,i,o=e,s=o.kind,a=o.value,c=o.error;if("string"!=typeof s)throw new TypeError('Invalid notification, missing "kind"');"N"===s?null===(n=t.next)||void 0===n||n.call(t,a):"E"===s?null===(r=t.error)||void 0===r||r.call(t,c):null===(i=t.complete)||void 0===i||i.call(t)}t.Notification=c,t.observeNotification=l},1256(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ContextMenuService=void 0;const o=n(9430),s=n(2607);let a=class{constructor(){this.menuItemSelected$=new s.Subject}showMenu(e,t,n){console.log("Show context menu at",e,t,n)}hideMenu(){console.log("Hide context menu")}onMenuItemSelected(){return this.menuItemSelected$.asObservable()}selectMenuItem(e){this.menuItemSelected$.next(e)}};a=r([(0,o.Injectable)({providedIn:"root"}),i("design:paramtypes",[])],a),t.ContextMenuService=a},1268(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.AiToolbarButtonProvider=void 0;const o=n(9430),s=n(1368),a=n(7643),c=n(7295),l=n(863);let u=class extends s.ToolbarButtonProvider{constructor(e,t){super(),this.modal=e,this.aiService=t}provide(){return[{icon:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-robot" viewBox="0 0 16 16">\n <path d="M6 12.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5M4 14a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 1 0v2a.5.5 0 0 1-.5.5m0 1a1.5 1.5 0 0 0-1.5 1.5v2a1.5 1.5 0 0 0 3 0v-2A1.5 1.5 0 0 0 4 15"/>\n <path d="M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m3 2a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1 0-1h3a.5.5 0 0 1 .5.5M11 7.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5M12 8.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5M13 9.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5"/>\n <path d="M16 6.5a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 0-1 0v2a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1 0-1h3a1.5 1.5 0 0 0 1.5-1.5v-2a1.5 1.5 0 0 0-3 0v2a.5.5 0 0 1-.5.5z"/>\n</svg>',weight:100,title:"AI Assistant",click:()=>{this.openAiChat()}}]}openAiChat(){this.modal.open(l.ChatInterfaceComponent,{size:"xl",backdrop:!0,keyboard:!0})}};u=r([(0,o.Injectable)(),i("design:paramtypes",[a.NgbModal,c.AiAssistantService])],u),t.AiToolbarButtonProvider=u},1279(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.elementAt=void 0;var r=n(7024),i=n(5934),o=n(632),s=n(8799),a=n(4383);t.elementAt=function(e,t){if(e<0)throw new r.ArgumentOutOfRangeError;var n=arguments.length>=2;return function(c){return c.pipe(i.filter(function(t,n){return n===e}),a.take(1),n?s.defaultIfEmpty(t):o.throwIfEmpty(function(){return new r.ArgumentOutOfRangeError}))}}},1361(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.every=void 0;var r=n(5212),i=n(7214);t.every=function(e,t){return r.operate(function(n,r){var o=0;n.subscribe(i.createOperatorSubscriber(r,function(i){e.call(t,i,o++,n)||(r.next(!1),r.complete())},function(){r.next(!0),r.complete()}))})}},1368(e){"use strict";e.exports=require("tabby-core")},1380(e,t,n){var r;e.exports=(r=n(9021),n(3240),function(){var e=r,t=e.lib.Hasher,n=e.x64,i=n.Word,o=n.WordArray,s=e.algo;function a(){return i.create.apply(i,arguments)}var c=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=a()}();var u=s.SHA512=t.extend({_doReset:function(){this._hash=new o.init([new i.init(1779033703,4089235720),new i.init(3144134277,2227873595),new i.init(1013904242,4271175723),new i.init(2773480762,1595750129),new i.init(1359893119,2917565137),new i.init(2600822924,725511199),new i.init(528734635,4215389547),new i.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],o=n[2],s=n[3],a=n[4],u=n[5],d=n[6],f=n[7],p=r.high,h=r.low,m=i.high,g=i.low,v=o.high,b=o.low,y=s.high,w=s.low,_=a.high,x=a.low,S=u.high,O=u.low,P=d.high,k=d.low,C=f.high,R=f.low,A=p,E=h,j=m,M=g,I=v,T=b,L=y,N=w,D=_,H=x,B=S,F=O,U=P,z=k,$=C,q=R,W=0;W<80;W++){var K,J,G=l[W];if(W<16)J=G.high=0|e[t+2*W],K=G.low=0|e[t+2*W+1];else{var V=l[W-15],Y=V.high,X=V.low,Q=(Y>>>1|X<<31)^(Y>>>8|X<<24)^Y>>>7,Z=(X>>>1|Y<<31)^(X>>>8|Y<<24)^(X>>>7|Y<<25),ee=l[W-2],te=ee.high,ne=ee.low,re=(te>>>19|ne<<13)^(te<<3|ne>>>29)^te>>>6,ie=(ne>>>19|te<<13)^(ne<<3|te>>>29)^(ne>>>6|te<<26),oe=l[W-7],se=oe.high,ae=oe.low,ce=l[W-16],le=ce.high,ue=ce.low;J=(J=(J=Q+se+((K=Z+ae)>>>0<Z>>>0?1:0))+re+((K+=ie)>>>0<ie>>>0?1:0))+le+((K+=ue)>>>0<ue>>>0?1:0),G.high=J,G.low=K}var de,fe=D&B^~D&U,pe=H&F^~H&z,he=A&j^A&I^j&I,me=E&M^E&T^M&T,ge=(A>>>28|E<<4)^(A<<30|E>>>2)^(A<<25|E>>>7),ve=(E>>>28|A<<4)^(E<<30|A>>>2)^(E<<25|A>>>7),be=(D>>>14|H<<18)^(D>>>18|H<<14)^(D<<23|H>>>9),ye=(H>>>14|D<<18)^(H>>>18|D<<14)^(H<<23|D>>>9),we=c[W],_e=we.high,xe=we.low,Se=$+be+((de=q+ye)>>>0<q>>>0?1:0),Oe=ve+me;$=U,q=z,U=B,z=F,B=D,F=H,D=L+(Se=(Se=(Se=Se+fe+((de+=pe)>>>0<pe>>>0?1:0))+_e+((de+=xe)>>>0<xe>>>0?1:0))+J+((de+=K)>>>0<K>>>0?1:0))+((H=N+de|0)>>>0<N>>>0?1:0)|0,L=I,N=T,I=j,T=M,j=A,M=E,A=Se+(ge+he+(Oe>>>0<ve>>>0?1:0))+((E=de+Oe|0)>>>0<de>>>0?1:0)|0}h=r.low=h+E,r.high=p+A+(h>>>0<E>>>0?1:0),g=i.low=g+M,i.high=m+j+(g>>>0<M>>>0?1:0),b=o.low=b+T,o.high=v+I+(b>>>0<T>>>0?1:0),w=s.low=w+N,s.high=y+L+(w>>>0<N>>>0?1:0),x=a.low=x+H,a.high=_+D+(x>>>0<H>>>0?1:0),O=u.low=O+F,u.high=S+B+(O>>>0<F>>>0?1:0),k=d.low=k+z,d.high=P+U+(k>>>0<z>>>0?1:0),R=f.low=R+q,f.high=C+$+(R>>>0<q>>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[30+(r+128>>>10<<5)]=Math.floor(n/4294967296),t[31+(r+128>>>10<<5)]=n,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(u),e.HmacSHA512=t._createHmacHelper(u)}(),r.SHA512)},1396(e,t,n){var r;e.exports=(r=n(9021),n(3240),n(6440),n(5503),n(754),n(4725),n(4636),n(5471),n(3009),n(6308),n(1380),n(9557),n(5953),n(8056),n(1025),n(19),n(9506),n(7165),n(2169),n(6939),n(6372),n(3797),n(8454),n(2073),n(4905),n(482),n(2155),n(8124),n(25),n(955),n(7628),n(7193),n(6298),n(2696),n(3128),r)},1415(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.zip=void 0;var o=n(8051),s=n(9724),a=n(7652),c=n(4885),l=n(7214),u=n(6404);t.zip=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=u.popResultSelector(e),d=a.argsOrArgArray(e);return d.length?new o.Observable(function(e){var t=d.map(function(){return[]}),o=d.map(function(){return!1});e.add(function(){t=o=null});for(var a=function(a){s.innerFrom(d[a]).subscribe(l.createOperatorSubscriber(e,function(s){if(t[a].push(s),t.every(function(e){return e.length})){var c=t.map(function(e){return e.shift()});e.next(n?n.apply(void 0,i([],r(c))):c),t.some(function(e,t){return!e.length&&o[t]})&&e.complete()}},function(){o[a]=!0,!t[a].length&&e.complete()}))},c=0;!e.closed&&c<d.length;c++)a(c);return function(){t=o=null}}):c.EMPTY}},1464(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.exhaust=void 0;var r=n(7977);t.exhaust=r.exhaustAll},1521(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r='<div class="ai-chat-interface">\n \x3c!-- 头部 --\x3e\n <div class="ai-chat-header">\n <div class="header-left">\n <h2 class="ai-title">\n <i class="icon-chat"></i>\n AI助手\n </h2>\n <span class="provider-badge">\n <i class="icon-provider"></i>\n {{ currentProvider }}\n </span>\n </div>\n <div class="header-actions">\n <button class="btn-icon" (click)="switchProvider()" title="切换AI提供商">\n <i class="icon-switch"></i>\n </button>\n <button class="btn-icon" (click)="exportChat()" title="导出聊天记录">\n <i class="icon-export"></i>\n </button>\n <button class="btn-icon danger" (click)="clearChat()" title="清空聊天记录">\n <i class="icon-clear"></i>\n </button>\n </div>\n </div>\n\n \x3c!-- 消息列表 --\x3e\n <div class="ai-chat-container">\n <div class="messages-wrapper">\n \x3c!-- 消息分组 --\x3e\n <ng-container *ngFor="let message of messages; let i = index">\n \x3c!-- 检查是否需要显示日期分隔线 --\x3e\n <div *ngIf="i === 0 || !isSameDay(message.timestamp, messages[i-1].timestamp)"\n class="date-separator">\n <span class="date-text">\n {{ isToday(message.timestamp) ? \'今天\' : message.timestamp.toLocaleDateString(\'zh-CN\') }}\n </span>\n </div>\n\n \x3c!-- 消息项 --\x3e\n <div class="message-item"\n [ngClass]="{\n \'user-message\': message.role === \'user\',\n \'assistant-message\': message.role === \'assistant\',\n \'system-message\': message.role === \'system\'\n }">\n \x3c!-- 头像 --\x3e\n <div class="message-avatar">\n <div *ngIf="message.role === \'user\'" class="avatar user">\n <i class="icon-user"></i>\n </div>\n <div *ngIf="message.role === \'assistant\'" class="avatar assistant">\n <i class="icon-bot"></i>\n </div>\n <div *ngIf="message.role === \'system\'" class="avatar system">\n <i class="icon-info"></i>\n </div>\n </div>\n\n \x3c!-- 消息内容 --\x3e\n <div class="message-content">\n <div class="message-bubble">\n \x3c!-- 用户消息 --\x3e\n <div *ngIf="message.role === \'user\'" class="message-text">\n {{ message.content }}\n </div>\n\n \x3c!-- AI消息 --\x3e\n <div *ngIf="message.role === \'assistant\'" class="message-text ai-response">\n <pre>{{ message.content }}</pre>\n </div>\n\n \x3c!-- 系统消息 --\x3e\n <div *ngIf="message.role === \'system\'" class="message-text system">\n <i class="icon-warning"></i>\n {{ message.content }}\n </div>\n </div>\n\n \x3c!-- 消息时间 --\x3e\n <div class="message-time">\n {{ formatTimestamp(message.timestamp) }}\n </div>\n </div>\n </div>\n </ng-container>\n\n \x3c!-- 加载指示器 --\x3e\n <div *ngIf="isLoading" class="loading-indicator">\n <div class="typing-indicator">\n <span></span>\n <span></span>\n <span></span>\n </div>\n <span class="loading-text">AI正在思考...</span>\n </div>\n </div>\n </div>\n\n \x3c!-- 输入区域 --\x3e\n <div class="ai-chat-input">\n <app-chat-input\n (send)="onSendMessage($event)"\n [disabled]="isLoading">\n </app-chat-input>\n </div>\n\n \x3c!-- 提示信息 --\x3e\n <div class="chat-tips" *ngIf="messages.length === 1">\n <div class="tip-item">\n <i class="icon-lightbulb"></i>\n <span>提示:您可以描述想执行的命令,例如"查看当前目录的所有文件"</span>\n </div>\n <div class="tip-item">\n <i class="icon-keyboard"></i>\n <span>快捷键:Ctrl+Shift+G 生成命令,Ctrl+Shift+E 解释命令</span>\n </div>\n </div>\n</div>\n'},1576(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.AiConfigProvider=void 0;const o=n(9430),s=n(1368),a=n(5084);let c=class extends s.ConfigProvider{constructor(e){super(),this.configService=e}provideConfig(){return{aiAssistant:{enabled:!0,defaultProvider:"openai",autoSuggestCommands:!0,enableSecurityChecks:!0,providers:{openai:{apiKey:"",model:"gpt-3.5-turbo",baseURL:"https://api.openai.com/v1"},anthropic:{apiKey:"",model:"claude-3-sonnet",baseURL:"https://api.anthropic.com"},minimax:{apiKey:"",model:"abab6.5s-chat",baseURL:"https://api.minimaxi.com/anthropic"},glm:{apiKey:"",model:"glm-4.6",baseURL:"https://open.bigmodel.cn/api/anthropic"},openaiCompatible:{apiKey:"",model:"gpt-3.5-turbo",baseURL:""}},security:{passwordProtection:!1,riskAssessmentLevel:"medium",consentPersistenceDays:30}}}}async onConfigLoaded(){console.log("[AI Config Provider] Configuration loaded")}};c=r([(0,o.Injectable)(),i("design:paramtypes",[a.ConfigProviderService])],c),t.AiConfigProvider=c},1583(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.CommandAnalyzerService=void 0;const o=n(9430),s=n(2607);let a=class{constructor(){}analyzeCommand(e){return(0,s.of)({type:"unknown",suggestions:[],explanation:""})}getCommandHistory(){return[]}parseCommand(e){const t=e.trim().split(/\s+/);return{command:t[0],args:t.slice(1)}}};a=r([(0,o.Injectable)({providedIn:"root"}),i("design:paramtypes",[])],a),t.CommandAnalyzerService=a},1587(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.of=void 0;var r=n(6404),i=n(7058);t.of=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=r.popScheduler(e);return i.from(e,n)}},1608(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.auditTime=void 0;var r=n(2326),i=n(8877),o=n(5825);t.auditTime=function(e,t){return void 0===t&&(t=r.asyncScheduler),i.audit(function(){return o.timer(e,t)})}},1630(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ErrorMessageComponent=void 0;const o=n(9430);let s=class{constructor(){this.type="error",this.title="",this.message="",this.details="",this.dismissible=!1,this.dismissed=new o.EventEmitter}getIconClass(){return{error:"icon-error",warning:"icon-warning",info:"icon-info",success:"icon-success"}[this.type]||"icon-error"}onDismiss(){this.dismissed.emit()}};r([(0,o.Input)(),i("design:type",String)],s.prototype,"type",void 0),r([(0,o.Input)(),i("design:type",String)],s.prototype,"title",void 0),r([(0,o.Input)(),i("design:type",String)],s.prototype,"message",void 0),r([(0,o.Input)(),i("design:type",String)],s.prototype,"details",void 0),r([(0,o.Input)(),i("design:type",Boolean)],s.prototype,"dismissible",void 0),r([(0,o.Output)(),i("design:type",Object)],s.prototype,"dismissed",void 0),s=r([(0,o.Component)({selector:"app-error-message",template:'\n <div class="error-message" [ngClass]="type">\n <div class="error-icon">\n <i [class]="getIconClass()"></i>\n </div>\n <div class="error-content">\n <h4 *ngIf="title">{{ title }}</h4>\n <p>{{ message }}</p>\n <div *ngIf="details" class="error-details">\n <small>{{ details }}</small>\n </div>\n </div>\n <button *ngIf="dismissible" class="error-close" (click)="onDismiss()">\n <i class="icon-close"></i>\n </button>\n </div>\n ',styles:["\n .error-message {\n display: flex;\n align-items: flex-start;\n gap: 0.75rem;\n padding: 1rem;\n border-radius: 0.5rem;\n border: 1px solid;\n margin: 0.5rem 0;\n\n &.error {\n background-color: rgba(220, 53, 69, 0.1);\n border-color: var(--ai-danger);\n color: var(--ai-danger);\n }\n\n &.warning {\n background-color: rgba(255, 193, 7, 0.1);\n border-color: var(--ai-warning);\n color: #856404;\n }\n\n &.info {\n background-color: rgba(23, 162, 184, 0.1);\n border-color: var(--ai-info);\n color: var(--ai-info);\n }\n\n &.success {\n background-color: rgba(40, 167, 69, 0.1);\n border-color: var(--ai-success);\n color: var(--ai-success);\n }\n }\n\n .error-icon {\n flex-shrink: 0;\n font-size: 1.25rem;\n }\n\n .error-content {\n flex: 1;\n\n h4 {\n margin: 0 0 0.5rem 0;\n font-size: 1rem;\n font-weight: 600;\n }\n\n p {\n margin: 0;\n line-height: 1.5;\n }\n\n .error-details {\n margin-top: 0.5rem;\n opacity: 0.8;\n }\n }\n\n .error-close {\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: 0.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n opacity: 0.6;\n transition: opacity 0.2s;\n\n &:hover {\n opacity: 1;\n }\n }\n "]})],s),t.ErrorMessageComponent=s},1666(e,t,n){"use strict";var r,i=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.Action=void 0;var o=function(e){function t(t,n){return e.call(this)||this}return i(t,e),t.prototype.schedule=function(e,t){return void 0===t&&(t=0),this},t}(n(9879).Subscription);t.Action=o},1671(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.Beta=void 0;const s=n(9698),a=o(n(1962));class c extends s.APIResource{constructor(){super(...arguments),this.tools=new a.Tools(this._client)}}t.Beta=c,function(e){e.Tools=a.Tools}(c=t.Beta||(t.Beta={}))},1713(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.timeout=t.TimeoutError=void 0;var r=n(2326),i=n(5345),o=n(5212),s=n(9724),a=n(9619),c=n(7214),l=n(8619);function u(e){throw new t.TimeoutError(e)}t.TimeoutError=a.createErrorClass(function(e){return function(t){void 0===t&&(t=null),e(this),this.message="Timeout has occurred",this.name="TimeoutError",this.info=t}}),t.timeout=function(e,t){var n=i.isValidDate(e)?{first:e}:"number"==typeof e?{each:e}:e,a=n.first,d=n.each,f=n.with,p=void 0===f?u:f,h=n.scheduler,m=void 0===h?null!=t?t:r.asyncScheduler:h,g=n.meta,v=void 0===g?null:g;if(null==a&&null==d)throw new TypeError("No timeout provided.");return o.operate(function(e,t){var n,r,i=null,o=0,u=function(e){r=l.executeSchedule(t,m,function(){try{n.unsubscribe(),s.innerFrom(p({meta:v,lastValue:i,seen:o})).subscribe(t)}catch(e){t.error(e)}},e)};n=e.subscribe(c.createOperatorSubscriber(t,function(e){null==r||r.unsubscribe(),o++,t.next(i=e),d>0&&u(d)},void 0,void 0,function(){(null==r?void 0:r.closed)||null==r||r.unsubscribe(),i=null})),!o&&u(null!=a?"number"==typeof a?a:+a-m.now():d)})}},1719(e,t,n){"use strict";var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.bufferTime=void 0;var i=n(9879),o=n(5212),s=n(7214),a=n(4830),c=n(2326),l=n(6404),u=n(8619);t.bufferTime=function(e){for(var t,n,d=[],f=1;f<arguments.length;f++)d[f-1]=arguments[f];var p=null!==(t=l.popScheduler(d))&&void 0!==t?t:c.asyncScheduler,h=null!==(n=d[0])&&void 0!==n?n:null,m=d[1]||1/0;return o.operate(function(t,n){var o=[],c=!1,l=function(e){var t=e.buffer;e.subs.unsubscribe(),a.arrRemove(o,e),n.next(t),c&&d()},d=function(){if(o){var t=new i.Subscription;n.add(t);var r={buffer:[],subs:t};o.push(r),u.executeSchedule(t,p,function(){return l(r)},e)}};null!==h&&h>=0?u.executeSchedule(n,p,d,h,!0):c=!0,d();var f=s.createOperatorSubscriber(n,function(e){var t,n,i=o.slice();try{for(var s=r(i),a=s.next();!a.done;a=s.next()){var c=a.value,u=c.buffer;u.push(e),m<=u.length&&l(c)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}},function(){for(;null==o?void 0:o.length;)n.next(o.shift().buffer);null==f||f.unsubscribe(),n.complete(),n.unsubscribe()},void 0,function(){return o=null});t.subscribe(f)})}},1728(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.AiToolbarButtonComponent=void 0;const o=n(9430);let s=class{constructor(){this.label="AI Assistant",this.tooltip="Open AI Assistant",this.showLabel=!0}onClick(){console.log("AI Assistant button clicked")}};r([(0,o.Input)(),i("design:type",String)],s.prototype,"label",void 0),r([(0,o.Input)(),i("design:type",String)],s.prototype,"tooltip",void 0),r([(0,o.Input)(),i("design:type",Boolean)],s.prototype,"showLabel",void 0),s=r([(0,o.Component)({selector:"ai-toolbar-button",template:'\n <button\n class="btn btn-sm btn-primary"\n [title]="tooltip"\n (click)="onClick()"\n >\n <i class="fas fa-robot"></i>\n <span class="ms-1" *ngIf="showLabel">{{ label }}</span>\n </button>\n ',styles:["\n :host {\n display: inline-block;\n }\n button {\n padding: 4px 8px;\n border-radius: 4px;\n border: none;\n background: #007bff;\n color: white;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n transition: background-color 0.2s;\n }\n button:hover {\n background: #0056b3;\n }\n "]})],s),t.AiToolbarButtonComponent=s},1762(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.debounceTime=void 0;var r=n(2326),i=n(5212),o=n(7214);t.debounceTime=function(e,t){return void 0===t&&(t=r.asyncScheduler),i.operate(function(n,r){var i=null,s=null,a=null,c=function(){if(i){i.unsubscribe(),i=null;var e=s;s=null,r.next(e)}};function l(){var n=a+e,o=t.now();if(o<n)return i=this.schedule(void 0,n-o),void r.add(i);c()}n.subscribe(o.createOperatorSubscriber(r,function(n){s=n,a=t.now(),i||(i=t.schedule(l,e),r.add(i))},function(){c(),r.complete()},void 0,function(){s=i=null}))})}},1778(e,t,n){"use strict";var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.bufferToggle=void 0;var i=n(9879),o=n(5212),s=n(9724),a=n(7214),c=n(5717),l=n(4830);t.bufferToggle=function(e,t){return o.operate(function(n,o){var u=[];s.innerFrom(e).subscribe(a.createOperatorSubscriber(o,function(e){var n=[];u.push(n);var r=new i.Subscription;r.add(s.innerFrom(t(e)).subscribe(a.createOperatorSubscriber(o,function(){l.arrRemove(u,n),o.next(n),r.unsubscribe()},c.noop)))},c.noop)),n.subscribe(a.createOperatorSubscriber(o,function(e){var t,n;try{for(var i=r(u),o=i.next();!o.done;o=i.next())o.value.push(e)}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}},function(){for(;u.length>0;)o.next(u.shift());o.complete()}))})}},1898(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.pipeFromArray=t.pipe=void 0;var r=n(7699);function i(e){return 0===e.length?r.identity:1===e.length?e[0]:function(t){return e.reduce(function(e,t){return t(e)},t)}}t.pipe=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return i(e)},t.pipeFromArray=i},1903(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.onErrorResumeNext=void 0;var r=n(8051),i=n(7652),o=n(7214),s=n(5717),a=n(9724);t.onErrorResumeNext=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=i.argsOrArgArray(e);return new r.Observable(function(e){var t=0,r=function(){if(t<n.length){var i=void 0;try{i=a.innerFrom(n[t++])}catch(e){return void r()}var c=new o.OperatorSubscriber(e,void 0,s.noop,s.noop);i.subscribe(c),c.add(r)}else e.complete()};r()})}},1962(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.Tools=void 0;const s=n(9698),a=o(n(8357));class c extends s.APIResource{constructor(){super(...arguments),this.messages=new a.Messages(this._client)}}t.Tools=c,function(e){e.Messages=a.Messages}(c=t.Tools||(t.Tools={}))},2044(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.combineLatestWith=void 0;var o=n(4948);t.combineLatestWith=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return o.combineLatest.apply(void 0,i([],r(e)))}},2070(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reduce=void 0;var r=n(8531),i=n(5212);t.reduce=function(e,t){return i.operate(r.scanInternals(e,t,arguments.length>=2,!1,!0))}},2071(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.observeOn=void 0;var r=n(8619),i=n(5212),o=n(7214);t.observeOn=function(e,t){return void 0===t&&(t=0),i.operate(function(n,i){n.subscribe(o.createOperatorSubscriber(i,function(n){return r.executeSchedule(i,e,function(){return i.next(n)},t)},function(){return r.executeSchedule(i,e,function(){return i.complete()},t)},function(n){return r.executeSchedule(i,e,function(){return i.error(n)},t)}))})}},2073(e,t,n){var r;e.exports=(r=n(9021),n(7165),r.pad.AnsiX923={pad:function(e,t){var n=e.sigBytes,r=4*t,i=r-n%r,o=n+i-1;e.clamp(),e.words[o>>>2]|=i<<24-o%4*8,e.sigBytes+=i},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)},2136(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r='.chat-settings {\n padding: 1.5rem;\n\n h3 {\n margin: 0 0 1.5rem 0;\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--ai-dark);\n }\n\n .settings-section {\n margin-bottom: 2rem;\n padding-bottom: 1.5rem;\n border-bottom: 1px solid var(--ai-border);\n\n &:last-child {\n border-bottom: none;\n }\n\n h4 {\n margin: 0 0 1rem 0;\n font-size: 1.125rem;\n font-weight: 600;\n color: var(--ai-dark);\n }\n\n .form-group {\n margin-bottom: 1rem;\n\n label {\n display: block;\n font-weight: 500;\n margin-bottom: 0.5rem;\n color: var(--ai-dark);\n }\n\n .form-control {\n width: 100%;\n padding: 0.5rem 0.75rem;\n border: 1px solid var(--ai-border);\n border-radius: 0.375rem;\n background-color: var(--ai-bg-primary);\n color: var(--ai-dark);\n font-size: 14px;\n\n &:focus {\n outline: none;\n border-color: var(--ai-primary);\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.15);\n }\n }\n\n .font-size-selector {\n display: flex;\n gap: 0.5rem;\n flex-wrap: wrap;\n\n .font-size-btn {\n padding: 0.5rem 0.75rem;\n border: 1px solid var(--ai-border);\n border-radius: 0.375rem;\n background-color: var(--ai-bg-primary);\n color: var(--ai-dark);\n cursor: pointer;\n transition: all 0.2s;\n font-size: 0.875rem;\n\n &:hover {\n border-color: var(--ai-primary);\n }\n\n &.active {\n background-color: var(--ai-primary);\n color: white;\n border-color: var(--ai-primary);\n }\n }\n }\n\n .form-text {\n font-size: 0.875rem;\n color: var(--ai-secondary);\n margin-top: 0.25rem;\n }\n }\n\n .form-check {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-bottom: 0.75rem;\n\n input[type="checkbox"] {\n width: 1rem;\n height: 1rem;\n accent-color: var(--ai-primary);\n }\n\n label {\n margin: 0;\n font-weight: 400;\n cursor: pointer;\n color: var(--ai-dark);\n }\n }\n }\n\n .settings-actions {\n display: flex;\n gap: 0.75rem;\n flex-wrap: wrap;\n margin-top: 2rem;\n padding-top: 1.5rem;\n border-top: 1px solid var(--ai-border);\n\n .btn {\n padding: 0.5rem 1rem;\n border: none;\n border-radius: 0.375rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 0.375rem;\n font-size: 0.875rem;\n\n &.btn-secondary {\n background-color: var(--ai-secondary);\n color: white;\n\n &:hover {\n background-color: darken(#6c757d, 7.5%);\n }\n }\n\n &.btn-danger {\n background-color: var(--ai-danger);\n color: white;\n\n &:hover {\n background-color: darken(#dc3545, 7.5%);\n }\n }\n\n &.btn-warning {\n background-color: var(--ai-warning);\n color: var(--ai-dark);\n\n &:hover {\n background-color: darken(#ffc107, 7.5%);\n }\n }\n }\n }\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n .chat-settings {\n padding: 1rem;\n\n .settings-actions {\n flex-direction: column;\n\n .btn {\n width: 100%;\n justify-content: center;\n }\n }\n }\n}\n'},2139(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.repeatWhen=void 0;var r=n(9724),i=n(6808),o=n(5212),s=n(7214);t.repeatWhen=function(e){return o.operate(function(t,n){var o,a,c=!1,l=!1,u=!1,d=function(){return u&&l&&(n.complete(),!0)},f=function(){u=!1,o=t.subscribe(s.createOperatorSubscriber(n,void 0,function(){u=!0,!d()&&(a||(a=new i.Subject,r.innerFrom(e(a)).subscribe(s.createOperatorSubscriber(n,function(){o?f():c=!0},function(){l=!0,d()}))),a).next()})),c&&(o.unsubscribe(),o=null,c=!1,f())};f()})}},2155(e,t,n){var r;e.exports=(r=n(9021),n(7165),r.pad.ZeroPadding={pad:function(e,t){var n=4*t;e.clamp(),e.sigBytes+=n-(e.sigBytes%n||n)},unpad:function(e){var t=e.words,n=e.sigBytes-1;for(n=e.sigBytes-1;n>=0;n--)if(t[n>>>2]>>>24-n%4*8&255){e.sigBytes=n+1;break}}},r.pad.ZeroPadding)},2166(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.OpenAiCompatibleProviderService=void 0;const s=n(9430),a=o(n(6425)),c=n(6240),l=n(1170),u=n(389),d=n(9048);let f=class extends c.BaseAiProvider{constructor(e){super(e),this.name="openai-compatible",this.displayName="OpenAI Compatible",this.capabilities=[l.ProviderCapability.CHAT,l.ProviderCapability.COMMAND_GENERATION,l.ProviderCapability.COMMAND_EXPLANATION,l.ProviderCapability.FUNCTION_CALL,l.ProviderCapability.STREAMING],this.authConfig={type:"bearer",credentials:{apiKey:""}},this.client=null,this.supportedModels=["gpt-3.5-turbo","gpt-4","gpt-4-turbo","llama2","llama2:70b","codellama","mistral","mistral:7b","mixtral","local-model"]}configure(e){super.configure(e),this.authConfig.credentials.apiKey=e.apiKey||"",this.initializeClient()}initializeClient(){if(this.config?.apiKey&&this.config?.baseURL)try{this.client=a.default.create({baseURL:this.config.baseURL,timeout:this.getTimeout(),headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json"}}),this.logger.info("OpenAI compatible client initialized",{baseURL:this.config.baseURL,model:this.config.model||"gpt-3.5-turbo"})}catch(e){throw this.logger.error("Failed to initialize OpenAI compatible client",e),e}else this.logger.warn("OpenAI compatible provider configuration incomplete")}async chat(e){if(!this.client)throw new Error("OpenAI compatible client not initialized");this.logRequest(e);try{const t=await this.withRetry(async()=>{const t=await this.client.post("/chat/completions",{model:this.config?.model||"gpt-3.5-turbo",messages:this.transformMessages(e.messages),max_tokens:e.maxTokens||1e3,temperature:e.temperature||.7,stream:e.stream||!1});return this.logResponse(t.data),t.data});return this.transformChatResponse(t)}catch(t){throw this.logError(t,{request:e}),new Error(`OpenAI compatible chat failed: ${t instanceof Error?t.message:String(t)}`)}}async generateCommand(e){const t=this.buildCommandPrompt(e),n={messages:[{id:this.generateId(),role:u.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:500,temperature:.3},r=await this.chat(n);return this.parseCommandResponse(r.message.content)}async explainCommand(e){const t=this.buildExplainPrompt(e),n={messages:[{id:this.generateId(),role:u.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:1e3,temperature:.5},r=await this.chat(n);return this.parseExplainResponse(r.message.content)}async analyzeResult(e){const t=this.buildAnalysisPrompt(e),n={messages:[{id:this.generateId(),role:u.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:1e3,temperature:.7},r=await this.chat(n);return this.parseAnalysisResponse(r.message.content)}async healthCheck(){try{return this.client?200===(await this.client.post("/chat/completions",{model:this.config?.model||"gpt-3.5-turbo",max_tokens:1,messages:[{role:"user",content:"Hi"}]})).status?(this.lastHealthCheck={status:l.HealthStatus.HEALTHY,timestamp:new Date},l.HealthStatus.HEALTHY):l.HealthStatus.DEGRADED:l.HealthStatus.UNHEALTHY}catch(e){return this.logger.error("OpenAI compatible health check failed",e),this.lastHealthCheck={status:l.HealthStatus.UNHEALTHY,timestamp:new Date},l.HealthStatus.UNHEALTHY}}validateConfig(){const e=super.validateConfig();return this.config?.apiKey?this.config?.baseURL?(this.config.model&&!this.supportedModels.includes(this.config.model)&&(e.warnings=[...e.warnings||[],`Model ${this.config.model} might not be supported. Supported models: ${this.supportedModels.join(", ")}`]),e):{valid:!1,errors:[...e.errors||[],"Base URL is required"]}:{valid:!1,errors:[...e.errors||[],"API key is required"]}}getDefaultBaseURL(){return"http://localhost:11434/v1"}transformMessages(e){return e.map(e=>({role:e.role,content:e.content}))}transformChatResponse(e){const t=e.choices?.[0],n=t?.message?.content||"";return{message:{id:this.generateId(),role:u.MessageRole.ASSISTANT,content:n,timestamp:new Date},usage:e.usage?{promptTokens:e.usage.prompt_tokens||0,completionTokens:e.usage.completion_tokens||0,totalTokens:e.usage.total_tokens||0}:void 0}}buildCommandPrompt(e){let t=`请将以下自然语言描述转换为准确的终端命令:\n\n"${e.naturalLanguage}"\n\n`;return e.context&&(t+="当前环境:\n",e.context.currentDirectory&&(t+=`- 当前目录:${e.context.currentDirectory}\n`),e.context.operatingSystem&&(t+=`- 操作系统:${e.context.operatingSystem}\n`),e.context.shell&&(t+=`- Shell:${e.context.shell}\n`)),t+="\n请直接返回JSON格式:\n",t+="{\n",t+=' "command": "具体命令",\n',t+=' "explanation": "命令解释",\n',t+=' "confidence": 0.95\n',t+="}\n",t}buildExplainPrompt(e){let t=`请详细解释以下终端命令:\n\n\`${e.command}\`\n\n`;return e.context?.currentDirectory&&(t+=`当前目录:${e.context.currentDirectory}\n`),e.context?.operatingSystem&&(t+=`操作系统:${e.context.operatingSystem}\n`),t+="\n请按以下JSON格式返回:\n",t+="{\n",t+=' "explanation": "整体解释",\n',t+=' "breakdown": [\n',t+=' {"part": "命令部分", "description": "说明"}\n',t+=" ],\n",t+=' "examples": ["使用示例"]\n',t+="}\n",t}buildAnalysisPrompt(e){let t="请分析以下命令执行结果:\n\n";return t+=`命令:${e.command}\n`,t+=`退出码:${e.exitCode}\n`,t+=`输出:\n${e.output}\n\n`,e.context?.workingDirectory&&(t+=`工作目录:${e.context.workingDirectory}\n`),t+="\n请按以下JSON格式返回:\n",t+="{\n",t+=' "summary": "结果总结",\n',t+=' "insights": ["洞察1", "洞察2"],\n',t+=' "success": true/false,\n',t+=' "issues": [\n',t+=' {"severity": "warning|error|info", "message": "问题描述", "suggestion": "建议"}\n',t+=" ]\n",t+="}\n",t}parseCommandResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{command:e.command||"",explanation:e.explanation||"",confidence:e.confidence||.5}}}catch(e){this.logger.warn("Failed to parse command response as JSON",e)}const t=e.split("\n").map(e=>e.trim()).filter(e=>e);return{command:t[0]||"",explanation:t.slice(1).join(" ")||"AI生成的命令",confidence:.5}}parseExplainResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{explanation:e.explanation||"",breakdown:e.breakdown||[],examples:e.examples||[]}}}catch(e){this.logger.warn("Failed to parse explain response as JSON",e)}return{explanation:e,breakdown:[]}}parseAnalysisResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{summary:e.summary||"",insights:e.insights||[],success:!1!==e.success,issues:e.issues||[]}}}catch(e){this.logger.warn("Failed to parse analysis response as JSON",e)}return{summary:e,insights:[],success:!0}}};f=r([(0,s.Injectable)(),i("design:paramtypes",[d.LoggerService])],f),t.OpenAiCompatibleProviderService=f},2169(e,t,n){var r;e.exports=(r=n(9021),n(7165),r.mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,n,r){var i,o=this._iv;o?(i=o.slice(0),this._iv=void 0):i=this._prevBlock,r.encryptBlock(i,0);for(var s=0;s<n;s++)e[t+s]^=i[s]}return e.Encryptor=e.extend({processBlock:function(e,n){var r=this._cipher,i=r.blockSize;t.call(this,e,n,i,r),this._prevBlock=e.slice(n,n+i)}}),e.Decryptor=e.extend({processBlock:function(e,n){var r=this._cipher,i=r.blockSize,o=e.slice(n,n+i);t.call(this,e,n,i,r),this._prevBlock=o}}),e}(),r.mode.CFB)},2187(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isIterable=void 0;var r=n(4891),i=n(281);t.isIterable=function(e){return i.isFunction(null==e?void 0:e[r.iterator])}},2275(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.interval=void 0;var r=n(2326),i=n(5825);t.interval=function(e,t){return void 0===e&&(e=0),void 0===t&&(t=r.asyncScheduler),e<0&&(e=0),i.timer(e,e,t)}},2326(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.async=t.asyncScheduler=void 0;var r=n(4772),i=n(9533);t.asyncScheduler=new i.AsyncScheduler(r.AsyncAction),t.async=t.asyncScheduler},2359(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.skipLast=void 0;var r=n(7699),i=n(5212),o=n(7214);t.skipLast=function(e){return e<=0?r.identity:i.operate(function(t,n){var r=new Array(e),i=0;return t.subscribe(o.createOperatorSubscriber(n,function(t){var o=i++;if(o<e)r[o]=t;else{var s=o%e,a=r[s];r[s]=t,n.next(a)}})),function(){r=null}})}},2380(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},a=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},c=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=n(9430),u=n(8804),d=n(3440),f=n(7643),p=s(n(1368)),h=c(n(4319)),m=n(3262),g=n(7295),v=n(7942),b=n(5084),y=n(9048),w=n(3181),_=n(4265),x=n(6692),S=n(6835),O=n(2166),P=n(5102),k=n(2561),C=n(7120),R=n(6353),A=n(7280),E=n(6356),j=n(4456),M=n(1583),I=n(1256),T=n(5655),L=n(863),N=n(5467),D=n(4728),H=n(5393),B=n(5924),F=n(8936),U=n(8526),z=n(3828),$=n(8279),q=n(790),W=n(4697),K=n(6883),J=n(1728),G=n(4606),V=n(1630),Y=n(1268),X=n(4855),Q=n(1576),Z=n(8860);let ee=class{constructor(e,t,n){this.app=e,this.aiService=t,this.config=n,this.app&&this.app.ready$&&this.app.ready$.subscribe(()=>{this.aiService.initialize()})}};ee=o([(0,l.NgModule)({imports:[u.CommonModule,d.FormsModule,p.default,h.default,f.NgbModule],providers:[g.AiAssistantService,v.AiProviderManagerService,b.ConfigProviderService,y.LoggerService,w.OpenAiProviderService,_.AnthropicProviderService,x.MinimaxProviderService,S.GlmProviderService,O.OpenAiCompatibleProviderService,P.SecurityValidatorService,k.RiskAssessmentService,C.PasswordManagerService,R.ConsentManagerService,A.ChatSessionService,E.ChatHistoryService,j.CommandGeneratorService,M.CommandAnalyzerService,I.ContextMenuService,T.HotkeyService,{provide:p.ToolbarButtonProvider,useClass:Y.AiToolbarButtonProvider,multi:!0},{provide:m.SettingsTabProvider,useClass:X.AiSettingsTabProvider,multi:!0},{provide:p.ConfigProvider,useClass:Q.AiConfigProvider,multi:!0},{provide:p.HotkeyProvider,useClass:Z.AiHotkeyProvider,multi:!0}],declarations:[L.ChatInterfaceComponent,N.ChatMessageComponent,D.ChatInputComponent,H.ChatSettingsComponent,B.AiSettingsTabComponent,F.ProviderConfigComponent,U.SecuritySettingsComponent,z.RiskConfirmDialogComponent,$.PasswordPromptComponent,q.ConsentDialogComponent,W.CommandSuggestionComponent,K.CommandPreviewComponent,J.AiToolbarButtonComponent,G.LoadingSpinnerComponent,V.ErrorMessageComponent],entryComponents:[L.ChatInterfaceComponent,z.RiskConfirmDialogComponent,$.PasswordPromptComponent,q.ConsentDialogComponent,W.CommandSuggestionComponent,K.CommandPreviewComponent]}),a("design:paramtypes",[Object,g.AiAssistantService,b.ConfigProviderService])],ee),t.default=ee},2492(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.readableStreamAsyncIterable=t._decodeChunks=t._iterSSEMessages=t.Stream=void 0;const r=n(3428),i=n(2854),o=n(4293),s=n(2854);class a{constructor(e,t){this.iterator=e,this.controller=t}static fromSSEResponse(e,t){let n=!1;return new a(async function*(){if(n)throw new Error("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");n=!0;let r=!1;try{for await(const n of c(e,t)){if("completion"===n.event)try{yield JSON.parse(n.data)}catch(e){throw console.error("Could not parse message into JSON:",n.data),console.error("From chunk:",n.raw),e}if("message_start"===n.event||"message_delta"===n.event||"message_stop"===n.event||"content_block_start"===n.event||"content_block_delta"===n.event||"content_block_stop"===n.event)try{yield JSON.parse(n.data)}catch(e){throw console.error("Could not parse message into JSON:",n.data),console.error("From chunk:",n.raw),e}if("ping"!==n.event&&"error"===n.event){const t=n.data,r=(0,o.safeJSON)(t),i=r?void 0:t;throw s.APIError.generate(void 0,r,i,(0,o.createResponseHeaders)(e.headers))}}r=!0}catch(e){if(e instanceof Error&&"AbortError"===e.name)return;throw e}finally{r||t.abort()}},t)}static fromReadableStream(e,t){let n=!1;return new a(async function*(){if(n)throw new Error("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");n=!0;let r=!1;try{for await(const t of async function*(){const t=new d,n=f(e);for await(const e of n)for(const n of t.decode(e))yield n;for(const e of t.flush())yield e}())r||t&&(yield JSON.parse(t));r=!0}catch(e){if(e instanceof Error&&"AbortError"===e.name)return;throw e}finally{r||t.abort()}},t)}[Symbol.asyncIterator](){return this.iterator()}tee(){const e=[],t=[],n=this.iterator(),r=r=>({next:()=>{if(0===r.length){const r=n.next();e.push(r),t.push(r)}return r.shift()}});return[new a(()=>r(e),this.controller),new a(()=>r(t),this.controller)]}toReadableStream(){const e=this;let t;const n=new TextEncoder;return new r.ReadableStream({async start(){t=e[Symbol.asyncIterator]()},async pull(e){try{const{value:r,done:i}=await t.next();if(i)return e.close();const o=n.encode(JSON.stringify(r)+"\n");e.enqueue(o)}catch(t){e.error(t)}},async cancel(){await(t.return?.())}})}}async function*c(e,t){if(!e.body)throw t.abort(),new i.AnthropicError("Attempted to iterate over a response with no body");const n=new u,r=new d,o=f(e.body);for await(const e of async function*(e){let t=new Uint8Array;for await(const n of e){if(null==n)continue;const e=n instanceof ArrayBuffer?new Uint8Array(n):"string"==typeof n?(new TextEncoder).encode(n):n;let r,i=new Uint8Array(t.length+e.length);for(i.set(t),i.set(e,t.length),t=i;-1!==(r=l(t));)yield t.slice(0,r),t=t.slice(r)}t.length>0&&(yield t)}(o))for(const t of r.decode(e)){const e=n.decode(t);e&&(yield e)}for(const e of r.flush()){const t=n.decode(e);t&&(yield t)}}function l(e){for(let t=0;t<e.length-2;t++){if(10===e[t]&&10===e[t+1])return t+2;if(13===e[t]&&13===e[t+1])return t+2;if(13===e[t]&&10===e[t+1]&&t+3<e.length&&13===e[t+2]&&10===e[t+3])return t+4}return-1}t.Stream=a,t._iterSSEMessages=c;class u{constructor(){this.event=null,this.data=[],this.chunks=[]}decode(e){if(e.endsWith("\r")&&(e=e.substring(0,e.length-1)),!e){if(!this.event&&!this.data.length)return null;const e={event:this.event,data:this.data.join("\n"),raw:this.chunks};return this.event=null,this.data=[],this.chunks=[],e}if(this.chunks.push(e),e.startsWith(":"))return null;let[t,n,r]=function(e){const t=e.indexOf(":");return-1!==t?[e.substring(0,t),":",e.substring(t+1)]:[e,"",""]}(e);return r.startsWith(" ")&&(r=r.substring(1)),"event"===t?this.event=r:"data"===t&&this.data.push(r),null}}class d{constructor(){this.buffer=[],this.trailingCR=!1}decode(e){let t=this.decodeText(e);if(this.trailingCR&&(t="\r"+t,this.trailingCR=!1),t.endsWith("\r")&&(this.trailingCR=!0,t=t.slice(0,-1)),!t)return[];const n=d.NEWLINE_CHARS.has(t[t.length-1]||"");let r=t.split(d.NEWLINE_REGEXP);return n&&r.pop(),1!==r.length||n?(this.buffer.length>0&&(r=[this.buffer.join("")+r[0],...r.slice(1)],this.buffer=[]),n||(this.buffer=[r.pop()||""]),r):(this.buffer.push(r[0]),[])}decodeText(e){if(null==e)return"";if("string"==typeof e)return e;if("undefined"!=typeof Buffer){if(e instanceof Buffer)return e.toString();if(e instanceof Uint8Array)return Buffer.from(e).toString();throw new i.AnthropicError(`Unexpected: received non-Uint8Array (${e.constructor.name}) stream chunk in an environment with a global "Buffer" defined, which this library assumes to be Node. Please report this error.`)}if("undefined"!=typeof TextDecoder){if(e instanceof Uint8Array||e instanceof ArrayBuffer)return this.textDecoder??(this.textDecoder=new TextDecoder("utf8")),this.textDecoder.decode(e);throw new i.AnthropicError(`Unexpected: received non-Uint8Array/ArrayBuffer (${e.constructor.name}) in a web platform. Please report this error.`)}throw new i.AnthropicError("Unexpected: neither Buffer nor TextDecoder are available as globals. Please report this error.")}flush(){if(!this.buffer.length&&!this.trailingCR)return[];const e=[this.buffer.join("")];return this.buffer=[],this.trailingCR=!1,e}}function f(e){if(e[Symbol.asyncIterator])return e;const t=e.getReader();return{async next(){try{const e=await t.read();return e?.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){const e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}d.NEWLINE_CHARS=new Set(["\n","\r"]),d.NEWLINE_REGEXP=/\r\n|[\n\r]/g,t._decodeChunks=function(e){const t=new d,n=[];for(const r of e)n.push(...t.decode(r));return n},t.readableStreamAsyncIterable=f},2508(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TimeInterval=t.timeInterval=void 0;var r=n(2326),i=n(5212),o=n(7214);t.timeInterval=function(e){return void 0===e&&(e=r.asyncScheduler),i.operate(function(t,n){var r=e.now();t.subscribe(o.createOperatorSubscriber(n,function(t){var i=e.now(),o=i-r;r=i,n.next(new s(t,o))}))})};var s=function(e,t){this.value=e,this.interval=t};t.TimeInterval=s},2561(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.RiskAssessmentService=void 0;const o=n(9430),s=n(8785),a=n(9048);let c=class{constructor(e){this.logger=e,this.DANGEROUS_PATTERNS=[{pattern:/rm\s+-rf\s+\//,description:"删除根目录",severity:s.RiskLevel.CRITICAL},{pattern:/sudo\s+rm/,description:"sudo删除命令",severity:s.RiskLevel.CRITICAL},{pattern:/>\s*\/dev\/null/,description:"输出重定向到黑洞",severity:s.RiskLevel.HIGH},{pattern:/chmod\s+777/,description:"危险权限修改",severity:s.RiskLevel.HIGH},{pattern:/mv\s+.*\s+\//,description:"移动到根目录",severity:s.RiskLevel.HIGH},{pattern:/fork\s*\(/,description:"fork炸弹",severity:s.RiskLevel.CRITICAL},{pattern:/dd\s+if=/,description:"dd命令(可能危险)",severity:s.RiskLevel.HIGH},{pattern:/format\s+/,description:"格式化命令",severity:s.RiskLevel.CRITICAL},{pattern:/del\s+\/s\s+/i,description:"Windows删除命令",severity:s.RiskLevel.HIGH},{pattern:/rd\s+\/s\s+/i,description:"Windows删除目录命令",severity:s.RiskLevel.HIGH}],this.SYSTEM_COMMANDS=["rm","del","rd","mv","cp","chmod","chown","dd","fdisk","mkfs","format","mount","umount","sysctl","echo","tee"],this.NETWORK_COMMANDS=["curl","wget","ssh","scp","ftp","telnet","nc","netcat"],this.READONLY_COMMANDS=["ls","cat","grep","find","ps","df","du","top","htop","pwd","whoami","which","whereis","type","file","stat","head","tail","less","more","sort","uniq","wc","echo"]}async assessRisk(e){return(await this.performAssessment(e)).level}async performAssessment(e){this.logger.debug("Assessing risk for command",{command:e});const t=[];let n=s.RiskLevel.LOW;const r=[];for(const i of this.DANGEROUS_PATTERNS)i.pattern.test(e)&&(t.push({pattern:i.pattern.source,match:e.match(i.pattern)?.[0]||"",severity:i.severity}),r.push(`检测到危险模式:${i.description}`),this.getSeverityLevel(i.severity)>this.getSeverityLevel(n)&&(n=i.severity));this.hasCommand(e,this.SYSTEM_COMMANDS)&&n<s.RiskLevel.MEDIUM&&(n=s.RiskLevel.MEDIUM,r.push("包含系统修改命令")),this.hasCommand(e,this.NETWORK_COMMANDS)&&n<s.RiskLevel.MEDIUM&&(n=s.RiskLevel.MEDIUM,r.push("包含网络命令,可能涉及外部请求")),this.hasOnlyReadonlyCommands(e,this.READONLY_COMMANDS)&&n<s.RiskLevel.MEDIUM&&(n=s.RiskLevel.LOW,r.push("仅包含只读安全命令"));const i={level:n,score:this.calculateRiskScore(e,n,t),reasons:r,patterns:t,suggestions:this.generateSuggestions(e,n,r)};return this.logger.info("Risk assessment completed",{assessment:i}),i}hasCommand(e,t){const n=e.toLowerCase();return t.some(e=>new RegExp(`\\b${e}\\b`).test(n))}hasOnlyReadonlyCommands(e,t){return e.toLowerCase().split(/\s+/).filter(e=>!(e.startsWith("-")||e.startsWith("/")||e.startsWith(".")||/^\d+$/.test(e))).every(e=>t.some(t=>e===t)||this.isArgumentOrPath(e))}isArgumentOrPath(e){return e.startsWith("-")||e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.includes(":")||e.includes("=")||/^\d+$/.test(e)}calculateRiskScore(e,t,n){let r=0;switch(t){case s.RiskLevel.CRITICAL:r=90;break;case s.RiskLevel.HIGH:r=70;break;case s.RiskLevel.MEDIUM:r=40;break;case s.RiskLevel.LOW:r=10}return r+=10*n.length,e.length>200&&(r+=10),Math.min(r,100)}generateSuggestions(e,t,n){const r=[];return t===s.RiskLevel.CRITICAL?(r.push("此命令非常危险,可能导致数据丢失或系统损坏"),r.push("强烈建议在执行前备份重要数据"),r.push("考虑使用更安全的替代方案")):t===s.RiskLevel.HIGH?(r.push("此命令可能修改系统或删除文件"),r.push("请确认您了解命令的作用"),r.push("建议先在测试环境中验证")):t===s.RiskLevel.MEDIUM?(r.push("此命令可能涉及系统操作"),r.push("请确保您有适当的权限")):r.push("此命令相对安全"),n.some(e=>e.includes("网络命令"))&&r.push("注意网络安全,避免访问未知来源"),n.some(e=>e.includes("权限"))&&r.push("检查文件权限,避免给予过高的权限"),r}getSeverityLevel(e){switch(e){case s.RiskLevel.LOW:return 1;case s.RiskLevel.MEDIUM:return 2;case s.RiskLevel.HIGH:return 3;case s.RiskLevel.CRITICAL:return 4;default:return 0}}async isDangerous(e){const t=await this.performAssessment(e);return t.level===s.RiskLevel.HIGH||t.level===s.RiskLevel.CRITICAL}getRiskLevelDescription(e){switch(e){case s.RiskLevel.LOW:return"低风险 - 安全命令";case s.RiskLevel.MEDIUM:return"中风险 - 需要注意的命令";case s.RiskLevel.HIGH:return"高风险 - 危险命令";case s.RiskLevel.CRITICAL:return"极高风险 - 极危险命令";default:return"未知风险"}}getRiskLevelColor(e){switch(e){case s.RiskLevel.LOW:return"#28a745";case s.RiskLevel.MEDIUM:return"#ffc107";case s.RiskLevel.HIGH:return"#fd7e14";case s.RiskLevel.CRITICAL:return"#dc3545";default:return"#6c757d"}}async assessMultiple(e){const t=[];for(const n of e){const e=await this.assessRisk(n);t.push({command:n,level:e})}return t}};c=r([(0,o.Injectable)({providedIn:"root"}),i("design:paramtypes",[a.LoggerService])],c),t.RiskAssessmentService=c},2568(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.last=void 0;var r=n(9328),i=n(5934),o=n(5279),s=n(632),a=n(8799),c=n(7699);t.last=function(e,t){var n=arguments.length>=2;return function(l){return l.pipe(e?i.filter(function(t,n){return e(t,n,l)}):c.identity,o.takeLast(1),n?a.defaultIfEmpty(t):s.throwIfEmpty(function(){return new r.EmptyError}))}}},2574(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mergeInternals=void 0;var r=n(9724),i=n(8619),o=n(7214);t.mergeInternals=function(e,t,n,s,a,c,l,u){var d=[],f=0,p=0,h=!1,m=function(){!h||d.length||f||t.complete()},g=function(e){return f<s?v(e):d.push(e)},v=function(e){c&&t.next(e),f++;var u=!1;r.innerFrom(n(e,p++)).subscribe(o.createOperatorSubscriber(t,function(e){null==a||a(e),c?g(e):t.next(e)},function(){u=!0},void 0,function(){if(u)try{f--;for(var e=function(){var e=d.shift();l?i.executeSchedule(t,l,function(){return v(e)}):v(e)};d.length&&f<s;)e();m()}catch(e){t.error(e)}}))};return e.subscribe(o.createOperatorSubscriber(t,g,function(){h=!0,m()})),function(){null==u||u()}}},2607(e){"use strict";e.exports=require("rxjs")},2688(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.captureError=t.errorContext=void 0;var r=n(3728),i=null;t.errorContext=function(e){if(r.config.useDeprecatedSynchronousErrorHandling){var t=!i;if(t&&(i={errorThrown:!1,error:null}),e(),t){var n=i,o=n.errorThrown,s=n.error;if(i=null,o)throw s}}else e()},t.captureError=function(e){r.config.useDeprecatedSynchronousErrorHandling&&i&&(i.errorThrown=!0,i.error=e)}},2696(e,t,n){var r;e.exports=(r=n(9021),n(754),n(4636),n(9506),n(7165),function(){var e=r,t=e.lib.StreamCipher,n=e.algo,i=[],o=[],s=[],a=n.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,n=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var i=0;i<4;i++)c.call(this);for(i=0;i<8;i++)r[i]^=n[i+4&7];if(t){var o=t.words,s=o[0],a=o[1],l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),u=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),d=l>>>16|4294901760&u,f=u<<16|65535&l;for(r[0]^=l,r[1]^=d,r[2]^=u,r[3]^=f,r[4]^=l,r[5]^=d,r[6]^=u,r[7]^=f,i=0;i<4;i++)c.call(this)}},_doProcessBlock:function(e,t){var n=this._X;c.call(this),i[0]=n[0]^n[5]>>>16^n[3]<<16,i[1]=n[2]^n[7]>>>16^n[5]<<16,i[2]=n[4]^n[1]>>>16^n[7]<<16,i[3]=n[6]^n[3]>>>16^n[1]<<16;for(var r=0;r<4;r++)i[r]=16711935&(i[r]<<8|i[r]>>>24)|4278255360&(i[r]<<24|i[r]>>>8),e[t+r]^=i[r]},blockSize:4,ivSize:2});function c(){for(var e=this._X,t=this._C,n=0;n<8;n++)o[n]=t[n];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0<o[0]>>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0<o[1]>>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0<o[2]>>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0<o[3]>>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0<o[4]>>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0<o[5]>>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0<o[6]>>>0?1:0)|0,this._b=t[7]>>>0<o[7]>>>0?1:0,n=0;n<8;n++){var r=e[n]+t[n],i=65535&r,a=r>>>16,c=((i*i>>>17)+i*a>>>15)+a*a,l=((4294901760&r)*r|0)+((65535&r)*r|0);s[n]=c^l}e[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,e[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,e[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,e[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,e[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,e[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,e[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,e[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}e.RabbitLegacy=t._createHelper(a)}(),r.RabbitLegacy)},2708(e,t,n){"use strict";var r,i=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.EMPTY_OBSERVER=t.SafeSubscriber=t.Subscriber=void 0;var o=n(281),s=n(9879),a=n(3728),c=n(2980),l=n(5717),u=n(2767),d=n(4808),f=n(2688),p=function(e){function n(n){var r=e.call(this)||this;return r.isStopped=!1,n?(r.destination=n,s.isSubscription(n)&&n.add(r)):r.destination=t.EMPTY_OBSERVER,r}return i(n,e),n.create=function(e,t,n){return new v(e,t,n)},n.prototype.next=function(e){this.isStopped?y(u.nextNotification(e),this):this._next(e)},n.prototype.error=function(e){this.isStopped?y(u.errorNotification(e),this):(this.isStopped=!0,this._error(e))},n.prototype.complete=function(){this.isStopped?y(u.COMPLETE_NOTIFICATION,this):(this.isStopped=!0,this._complete())},n.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},n.prototype._next=function(e){this.destination.next(e)},n.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},n.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},n}(s.Subscription);t.Subscriber=p;var h=Function.prototype.bind;function m(e,t){return h.call(e,t)}var g=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){b(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){b(e)}else b(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){b(e)}},e}(),v=function(e){function t(t,n,r){var i,s,c=e.call(this)||this;return o.isFunction(t)||!t?i={next:null!=t?t:void 0,error:null!=n?n:void 0,complete:null!=r?r:void 0}:c&&a.config.useDeprecatedNextContext?((s=Object.create(t)).unsubscribe=function(){return c.unsubscribe()},i={next:t.next&&m(t.next,s),error:t.error&&m(t.error,s),complete:t.complete&&m(t.complete,s)}):i=t,c.destination=new g(i),c}return i(t,e),t}(p);function b(e){a.config.useDeprecatedSynchronousErrorHandling?f.captureError(e):c.reportUnhandledError(e)}function y(e,t){var n=a.config.onStoppedNotification;n&&d.timeoutProvider.setTimeout(function(){return n(e,t)})}t.SafeSubscriber=v,t.EMPTY_OBSERVER={closed:!0,next:l.noop,error:function(e){throw e},complete:l.noop}},2719(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.catchError=void 0;var r=n(9724),i=n(7214),o=n(5212);t.catchError=function e(t){return o.operate(function(n,o){var s,a=null,c=!1;a=n.subscribe(i.createOperatorSubscriber(o,void 0,void 0,function(i){s=r.innerFrom(t(i,e(t)(n))),a?(a.unsubscribe(),a=null,s.subscribe(o)):c=!0})),c&&(a.unsubscribe(),a=null,s.subscribe(o))})}},2767(e,t){"use strict";function n(e,t,n){return{kind:e,value:t,error:n}}Object.defineProperty(t,"__esModule",{value:!0}),t.createNotification=t.nextNotification=t.errorNotification=t.COMPLETE_NOTIFICATION=void 0,t.COMPLETE_NOTIFICATION=n("C",void 0,void 0),t.errorNotification=function(e){return n("E",void 0,e)},t.nextNotification=function(e){return n("N",e,void 0)},t.createNotification=n},2794(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mergeAll=t.merge=t.max=t.materialize=t.mapTo=t.map=t.last=t.isEmpty=t.ignoreElements=t.groupBy=t.first=t.findIndex=t.find=t.finalize=t.filter=t.expand=t.exhaustMap=t.exhaustAll=t.exhaust=t.every=t.endWith=t.elementAt=t.distinctUntilKeyChanged=t.distinctUntilChanged=t.distinct=t.dematerialize=t.delayWhen=t.delay=t.defaultIfEmpty=t.debounceTime=t.debounce=t.count=t.connect=t.concatWith=t.concatMapTo=t.concatMap=t.concatAll=t.concat=t.combineLatestWith=t.combineLatest=t.combineLatestAll=t.combineAll=t.catchError=t.bufferWhen=t.bufferToggle=t.bufferTime=t.bufferCount=t.buffer=t.auditTime=t.audit=void 0,t.timeInterval=t.throwIfEmpty=t.throttleTime=t.throttle=t.tap=t.takeWhile=t.takeUntil=t.takeLast=t.take=t.switchScan=t.switchMapTo=t.switchMap=t.switchAll=t.subscribeOn=t.startWith=t.skipWhile=t.skipUntil=t.skipLast=t.skip=t.single=t.shareReplay=t.share=t.sequenceEqual=t.scan=t.sampleTime=t.sample=t.refCount=t.retryWhen=t.retry=t.repeatWhen=t.repeat=t.reduce=t.raceWith=t.race=t.publishReplay=t.publishLast=t.publishBehavior=t.publish=t.pluck=t.partition=t.pairwise=t.onErrorResumeNext=t.observeOn=t.multicast=t.min=t.mergeWith=t.mergeScan=t.mergeMapTo=t.mergeMap=t.flatMap=void 0,t.zipWith=t.zipAll=t.zip=t.withLatestFrom=t.windowWhen=t.windowToggle=t.windowTime=t.windowCount=t.window=t.toArray=t.timestamp=t.timeoutWith=t.timeout=void 0;var r=n(8877);Object.defineProperty(t,"audit",{enumerable:!0,get:function(){return r.audit}});var i=n(1608);Object.defineProperty(t,"auditTime",{enumerable:!0,get:function(){return i.auditTime}});var o=n(706);Object.defineProperty(t,"buffer",{enumerable:!0,get:function(){return o.buffer}});var s=n(9287);Object.defineProperty(t,"bufferCount",{enumerable:!0,get:function(){return s.bufferCount}});var a=n(1719);Object.defineProperty(t,"bufferTime",{enumerable:!0,get:function(){return a.bufferTime}});var c=n(1778);Object.defineProperty(t,"bufferToggle",{enumerable:!0,get:function(){return c.bufferToggle}});var l=n(6606);Object.defineProperty(t,"bufferWhen",{enumerable:!0,get:function(){return l.bufferWhen}});var u=n(2719);Object.defineProperty(t,"catchError",{enumerable:!0,get:function(){return u.catchError}});var d=n(9244);Object.defineProperty(t,"combineAll",{enumerable:!0,get:function(){return d.combineAll}});var f=n(7933);Object.defineProperty(t,"combineLatestAll",{enumerable:!0,get:function(){return f.combineLatestAll}});var p=n(4948);Object.defineProperty(t,"combineLatest",{enumerable:!0,get:function(){return p.combineLatest}});var h=n(2044);Object.defineProperty(t,"combineLatestWith",{enumerable:!0,get:function(){return h.combineLatestWith}});var m=n(6328);Object.defineProperty(t,"concat",{enumerable:!0,get:function(){return m.concat}});var g=n(201);Object.defineProperty(t,"concatAll",{enumerable:!0,get:function(){return g.concatAll}});var v=n(9512);Object.defineProperty(t,"concatMap",{enumerable:!0,get:function(){return v.concatMap}});var b=n(9913);Object.defineProperty(t,"concatMapTo",{enumerable:!0,get:function(){return b.concatMapTo}});var y=n(8032);Object.defineProperty(t,"concatWith",{enumerable:!0,get:function(){return y.concatWith}});var w=n(7812);Object.defineProperty(t,"connect",{enumerable:!0,get:function(){return w.connect}});var _=n(8589);Object.defineProperty(t,"count",{enumerable:!0,get:function(){return _.count}});var x=n(3143);Object.defineProperty(t,"debounce",{enumerable:!0,get:function(){return x.debounce}});var S=n(1762);Object.defineProperty(t,"debounceTime",{enumerable:!0,get:function(){return S.debounceTime}});var O=n(8799);Object.defineProperty(t,"defaultIfEmpty",{enumerable:!0,get:function(){return O.defaultIfEmpty}});var P=n(5797);Object.defineProperty(t,"delay",{enumerable:!0,get:function(){return P.delay}});var k=n(2885);Object.defineProperty(t,"delayWhen",{enumerable:!0,get:function(){return k.delayWhen}});var C=n(9818);Object.defineProperty(t,"dematerialize",{enumerable:!0,get:function(){return C.dematerialize}});var R=n(7876);Object.defineProperty(t,"distinct",{enumerable:!0,get:function(){return R.distinct}});var A=n(9663);Object.defineProperty(t,"distinctUntilChanged",{enumerable:!0,get:function(){return A.distinctUntilChanged}});var E=n(6035);Object.defineProperty(t,"distinctUntilKeyChanged",{enumerable:!0,get:function(){return E.distinctUntilKeyChanged}});var j=n(1279);Object.defineProperty(t,"elementAt",{enumerable:!0,get:function(){return j.elementAt}});var M=n(6791);Object.defineProperty(t,"endWith",{enumerable:!0,get:function(){return M.endWith}});var I=n(1361);Object.defineProperty(t,"every",{enumerable:!0,get:function(){return I.every}});var T=n(1464);Object.defineProperty(t,"exhaust",{enumerable:!0,get:function(){return T.exhaust}});var L=n(7977);Object.defineProperty(t,"exhaustAll",{enumerable:!0,get:function(){return L.exhaustAll}});var N=n(6632);Object.defineProperty(t,"exhaustMap",{enumerable:!0,get:function(){return N.exhaustMap}});var D=n(5544);Object.defineProperty(t,"expand",{enumerable:!0,get:function(){return D.expand}});var H=n(5934);Object.defineProperty(t,"filter",{enumerable:!0,get:function(){return H.filter}});var B=n(7802);Object.defineProperty(t,"finalize",{enumerable:!0,get:function(){return B.finalize}});var F=n(8183);Object.defineProperty(t,"find",{enumerable:!0,get:function(){return F.find}});var U=n(9035);Object.defineProperty(t,"findIndex",{enumerable:!0,get:function(){return U.findIndex}});var z=n(9980);Object.defineProperty(t,"first",{enumerable:!0,get:function(){return z.first}});var $=n(5128);Object.defineProperty(t,"groupBy",{enumerable:!0,get:function(){return $.groupBy}});var q=n(2959);Object.defineProperty(t,"ignoreElements",{enumerable:!0,get:function(){return q.ignoreElements}});var W=n(9915);Object.defineProperty(t,"isEmpty",{enumerable:!0,get:function(){return W.isEmpty}});var K=n(2568);Object.defineProperty(t,"last",{enumerable:!0,get:function(){return K.last}});var J=n(6872);Object.defineProperty(t,"map",{enumerable:!0,get:function(){return J.map}});var G=n(3337);Object.defineProperty(t,"mapTo",{enumerable:!0,get:function(){return G.mapTo}});var V=n(5019);Object.defineProperty(t,"materialize",{enumerable:!0,get:function(){return V.materialize}});var Y=n(96);Object.defineProperty(t,"max",{enumerable:!0,get:function(){return Y.max}});var X=n(9330);Object.defineProperty(t,"merge",{enumerable:!0,get:function(){return X.merge}});var Q=n(8087);Object.defineProperty(t,"mergeAll",{enumerable:!0,get:function(){return Q.mergeAll}});var Z=n(4613);Object.defineProperty(t,"flatMap",{enumerable:!0,get:function(){return Z.flatMap}});var ee=n(7478);Object.defineProperty(t,"mergeMap",{enumerable:!0,get:function(){return ee.mergeMap}});var te=n(6075);Object.defineProperty(t,"mergeMapTo",{enumerable:!0,get:function(){return te.mergeMapTo}});var ne=n(6707);Object.defineProperty(t,"mergeScan",{enumerable:!0,get:function(){return ne.mergeScan}});var re=n(9694);Object.defineProperty(t,"mergeWith",{enumerable:!0,get:function(){return re.mergeWith}});var ie=n(142);Object.defineProperty(t,"min",{enumerable:!0,get:function(){return ie.min}});var oe=n(8464);Object.defineProperty(t,"multicast",{enumerable:!0,get:function(){return oe.multicast}});var se=n(2071);Object.defineProperty(t,"observeOn",{enumerable:!0,get:function(){return se.observeOn}});var ae=n(5513);Object.defineProperty(t,"onErrorResumeNext",{enumerable:!0,get:function(){return ae.onErrorResumeNext}});var ce=n(6744);Object.defineProperty(t,"pairwise",{enumerable:!0,get:function(){return ce.pairwise}});var le=n(9516);Object.defineProperty(t,"partition",{enumerable:!0,get:function(){return le.partition}});var ue=n(6355);Object.defineProperty(t,"pluck",{enumerable:!0,get:function(){return ue.pluck}});var de=n(3197);Object.defineProperty(t,"publish",{enumerable:!0,get:function(){return de.publish}});var fe=n(2955);Object.defineProperty(t,"publishBehavior",{enumerable:!0,get:function(){return fe.publishBehavior}});var pe=n(6569);Object.defineProperty(t,"publishLast",{enumerable:!0,get:function(){return pe.publishLast}});var he=n(8710);Object.defineProperty(t,"publishReplay",{enumerable:!0,get:function(){return he.publishReplay}});var me=n(6081);Object.defineProperty(t,"race",{enumerable:!0,get:function(){return me.race}});var ge=n(6677);Object.defineProperty(t,"raceWith",{enumerable:!0,get:function(){return ge.raceWith}});var ve=n(2070);Object.defineProperty(t,"reduce",{enumerable:!0,get:function(){return ve.reduce}});var be=n(6131);Object.defineProperty(t,"repeat",{enumerable:!0,get:function(){return be.repeat}});var ye=n(2139);Object.defineProperty(t,"repeatWhen",{enumerable:!0,get:function(){return ye.repeatWhen}});var we=n(3352);Object.defineProperty(t,"retry",{enumerable:!0,get:function(){return we.retry}});var _e=n(3956);Object.defineProperty(t,"retryWhen",{enumerable:!0,get:function(){return _e.retryWhen}});var xe=n(9224);Object.defineProperty(t,"refCount",{enumerable:!0,get:function(){return xe.refCount}});var Se=n(3434);Object.defineProperty(t,"sample",{enumerable:!0,get:function(){return Se.sample}});var Oe=n(4143);Object.defineProperty(t,"sampleTime",{enumerable:!0,get:function(){return Oe.sampleTime}});var Pe=n(5565);Object.defineProperty(t,"scan",{enumerable:!0,get:function(){return Pe.scan}});var ke=n(3929);Object.defineProperty(t,"sequenceEqual",{enumerable:!0,get:function(){return ke.sequenceEqual}});var Ce=n(3405);Object.defineProperty(t,"share",{enumerable:!0,get:function(){return Ce.share}});var Re=n(7782);Object.defineProperty(t,"shareReplay",{enumerable:!0,get:function(){return Re.shareReplay}});var Ae=n(5440);Object.defineProperty(t,"single",{enumerable:!0,get:function(){return Ae.single}});var Ee=n(3079);Object.defineProperty(t,"skip",{enumerable:!0,get:function(){return Ee.skip}});var je=n(2359);Object.defineProperty(t,"skipLast",{enumerable:!0,get:function(){return je.skipLast}});var Me=n(7783);Object.defineProperty(t,"skipUntil",{enumerable:!0,get:function(){return Me.skipUntil}});var Ie=n(5774);Object.defineProperty(t,"skipWhile",{enumerable:!0,get:function(){return Ie.skipWhile}});var Te=n(9054);Object.defineProperty(t,"startWith",{enumerable:!0,get:function(){return Te.startWith}});var Le=n(5455);Object.defineProperty(t,"subscribeOn",{enumerable:!0,get:function(){return Le.subscribeOn}});var Ne=n(6201);Object.defineProperty(t,"switchAll",{enumerable:!0,get:function(){return Ne.switchAll}});var De=n(680);Object.defineProperty(t,"switchMap",{enumerable:!0,get:function(){return De.switchMap}});var He=n(761);Object.defineProperty(t,"switchMapTo",{enumerable:!0,get:function(){return He.switchMapTo}});var Be=n(8461);Object.defineProperty(t,"switchScan",{enumerable:!0,get:function(){return Be.switchScan}});var Fe=n(4383);Object.defineProperty(t,"take",{enumerable:!0,get:function(){return Fe.take}});var Ue=n(5279);Object.defineProperty(t,"takeLast",{enumerable:!0,get:function(){return Ue.takeLast}});var ze=n(6911);Object.defineProperty(t,"takeUntil",{enumerable:!0,get:function(){return ze.takeUntil}});var $e=n(598);Object.defineProperty(t,"takeWhile",{enumerable:!0,get:function(){return $e.takeWhile}});var qe=n(7400);Object.defineProperty(t,"tap",{enumerable:!0,get:function(){return qe.tap}});var We=n(4880);Object.defineProperty(t,"throttle",{enumerable:!0,get:function(){return We.throttle}});var Ke=n(7245);Object.defineProperty(t,"throttleTime",{enumerable:!0,get:function(){return Ke.throttleTime}});var Je=n(632);Object.defineProperty(t,"throwIfEmpty",{enumerable:!0,get:function(){return Je.throwIfEmpty}});var Ge=n(2508);Object.defineProperty(t,"timeInterval",{enumerable:!0,get:function(){return Ge.timeInterval}});var Ve=n(1713);Object.defineProperty(t,"timeout",{enumerable:!0,get:function(){return Ve.timeout}});var Ye=n(597);Object.defineProperty(t,"timeoutWith",{enumerable:!0,get:function(){return Ye.timeoutWith}});var Xe=n(3866);Object.defineProperty(t,"timestamp",{enumerable:!0,get:function(){return Xe.timestamp}});var Qe=n(3484);Object.defineProperty(t,"toArray",{enumerable:!0,get:function(){return Qe.toArray}});var Ze=n(8072);Object.defineProperty(t,"window",{enumerable:!0,get:function(){return Ze.window}});var et=n(2893);Object.defineProperty(t,"windowCount",{enumerable:!0,get:function(){return et.windowCount}});var tt=n(37);Object.defineProperty(t,"windowTime",{enumerable:!0,get:function(){return tt.windowTime}});var nt=n(8996);Object.defineProperty(t,"windowToggle",{enumerable:!0,get:function(){return nt.windowToggle}});var rt=n(5156);Object.defineProperty(t,"windowWhen",{enumerable:!0,get:function(){return rt.windowWhen}});var it=n(6975);Object.defineProperty(t,"withLatestFrom",{enumerable:!0,get:function(){return it.withLatestFrom}});var ot=n(6749);Object.defineProperty(t,"zip",{enumerable:!0,get:function(){return ot.zip}});var st=n(5362);Object.defineProperty(t,"zipAll",{enumerable:!0,get:function(){return st.zipAll}});var at=n(6977);Object.defineProperty(t,"zipWith",{enumerable:!0,get:function(){return at.zipWith}})},2854(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InternalServerError=t.RateLimitError=t.UnprocessableEntityError=t.ConflictError=t.NotFoundError=t.PermissionDeniedError=t.AuthenticationError=t.BadRequestError=t.APIConnectionTimeoutError=t.APIConnectionError=t.APIUserAbortError=t.APIError=t.AnthropicError=void 0;const r=n(4293);class i extends Error{}t.AnthropicError=i;class o extends i{constructor(e,t,n,r){super(`${o.makeMessage(e,t,n)}`),this.status=e,this.headers=r,this.error=t}static makeMessage(e,t,n){const r=t?.message?"string"==typeof t.message?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||"(no status code or body)"}static generate(e,t,n,i){if(!e)return new s({cause:(0,r.castToError)(t)});const m=t;return 400===e?new a(e,m,n,i):401===e?new c(e,m,n,i):403===e?new l(e,m,n,i):404===e?new u(e,m,n,i):409===e?new d(e,m,n,i):422===e?new f(e,m,n,i):429===e?new p(e,m,n,i):e>=500?new h(e,m,n,i):new o(e,m,n,i)}}t.APIError=o,t.APIUserAbortError=class extends o{constructor({message:e}={}){super(void 0,void 0,e||"Request was aborted.",void 0),this.status=void 0}};class s extends o{constructor({message:e,cause:t}){super(void 0,void 0,e||"Connection error.",void 0),this.status=void 0,t&&(this.cause=t)}}t.APIConnectionError=s,t.APIConnectionTimeoutError=class extends s{constructor({message:e}={}){super({message:e??"Request timed out."})}};class a extends o{constructor(){super(...arguments),this.status=400}}t.BadRequestError=a;class c extends o{constructor(){super(...arguments),this.status=401}}t.AuthenticationError=c;class l extends o{constructor(){super(...arguments),this.status=403}}t.PermissionDeniedError=l;class u extends o{constructor(){super(...arguments),this.status=404}}t.NotFoundError=u;class d extends o{constructor(){super(...arguments),this.status=409}}t.ConflictError=d;class f extends o{constructor(){super(...arguments),this.status=422}}t.UnprocessableEntityError=f;class p extends o{constructor(){super(...arguments),this.status=429}}t.RateLimitError=p;class h extends o{}t.InternalServerError=h},2884(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.observable=void 0,t.observable="function"==typeof Symbol&&Symbol.observable||"@@observable"},2885(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.delayWhen=void 0;var r=n(9546),i=n(4383),o=n(2959),s=n(3337),a=n(7478),c=n(9724);t.delayWhen=function e(t,n){return n?function(s){return r.concat(n.pipe(i.take(1),o.ignoreElements()),s.pipe(e(t)))}:a.mergeMap(function(e,n){return c.innerFrom(t(e,n)).pipe(i.take(1),s.mapTo(e))})}},2893(e,t,n){"use strict";var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.windowCount=void 0;var i=n(6808),o=n(5212),s=n(7214);t.windowCount=function(e,t){void 0===t&&(t=0);var n=t>0?t:e;return o.operate(function(t,o){var a=[new i.Subject],c=0;o.next(a[0].asObservable()),t.subscribe(s.createOperatorSubscriber(o,function(t){var s,l;try{for(var u=r(a),d=u.next();!d.done;d=u.next())d.value.next(t)}catch(e){s={error:e}}finally{try{d&&!d.done&&(l=u.return)&&l.call(u)}finally{if(s)throw s.error}}var f=c-e+1;if(f>=0&&f%n===0&&a.shift().complete(),++c%n===0){var p=new i.Subject;a.push(p),o.next(p.asObservable())}},function(){for(;a.length>0;)a.shift().complete();o.complete()},function(e){for(;a.length>0;)a.shift().error(e);o.error(e)},function(){a=null}))})}},2955(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.publishBehavior=void 0;var r=n(7314),i=n(4359);t.publishBehavior=function(e){return function(t){var n=new r.BehaviorSubject(e);return new i.ConnectableObservable(t,function(){return n})}}},2959(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ignoreElements=void 0;var r=n(5212),i=n(7214),o=n(5717);t.ignoreElements=function(){return r.operate(function(e,t){e.subscribe(i.createOperatorSubscriber(t,o.noop))})}},2980(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reportUnhandledError=void 0;var r=n(3728),i=n(4808);t.reportUnhandledError=function(e){i.timeoutProvider.setTimeout(function(){var t=r.config.onUnhandledError;if(!t)throw e;t(e)})}},3009(e,t,n){var r;e.exports=(r=n(9021),function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,s=t.algo,a=[],c=[];!function(){function t(t){for(var n=e.sqrt(t),r=2;r<=n;r++)if(!(t%r))return!1;return!0}function n(e){return 4294967296*(e-(0|e))|0}for(var r=2,i=0;i<64;)t(r)&&(i<8&&(a[i]=n(e.pow(r,.5))),c[i]=n(e.pow(r,1/3)),i++),r++}();var l=[],u=s.SHA256=o.extend({_doReset:function(){this._hash=new i.init(a.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],o=n[2],s=n[3],a=n[4],u=n[5],d=n[6],f=n[7],p=0;p<64;p++){if(p<16)l[p]=0|e[t+p];else{var h=l[p-15],m=(h<<25|h>>>7)^(h<<14|h>>>18)^h>>>3,g=l[p-2],v=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;l[p]=m+l[p-7]+v+l[p-16]}var b=r&i^r&o^i&o,y=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),w=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&u^~a&d)+c[p]+l[p];f=d,d=u,u=a,a=s+w|0,s=o,o=i,i=r,r=w+(y+b)|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+o|0,n[3]=n[3]+s|0,n[4]=n[4]+a|0,n[5]=n[5]+u|0,n[6]=n[6]+d|0,n[7]=n[7]+f|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return n[i>>>5]|=128<<24-i%32,n[14+(i+64>>>9<<4)]=e.floor(r/4294967296),n[15+(i+64>>>9<<4)]=r,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(u),t.HmacSHA256=o._createHmacHelper(u)}(Math),r.SHA256)},3079(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.skip=void 0;var r=n(5934);t.skip=function(e){return r.filter(function(t,n){return e<=n})}},3128(e,t,n){var r;e.exports=(r=n(9021),n(754),n(4636),n(9506),n(7165),function(){var e=r,t=e.lib.BlockCipher,n=e.algo;const i=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],s=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var a={pbox:[],sbox:[]};function c(e,t){let n=t>>24&255,r=t>>16&255,i=t>>8&255,o=255&t,s=e.sbox[0][n]+e.sbox[1][r];return s^=e.sbox[2][i],s+=e.sbox[3][o],s}function l(e,t,n){let r,o=t,s=n;for(let t=0;t<i;++t)o^=e.pbox[t],s=c(e,o)^s,r=o,o=s,s=r;return r=o,o=s,s=r,s^=e.pbox[i],o^=e.pbox[17],{left:o,right:s}}var u=n.Blowfish=t.extend({_doReset:function(){if(this._keyPriorReset!==this._key){var e=this._keyPriorReset=this._key,t=e.words,n=e.sigBytes/4;!function(e,t,n){for(let t=0;t<4;t++){e.sbox[t]=[];for(let n=0;n<256;n++)e.sbox[t][n]=s[t][n]}let r=0;for(let i=0;i<18;i++)e.pbox[i]=o[i]^t[r],r++,r>=n&&(r=0);let i=0,a=0,c=0;for(let t=0;t<18;t+=2)c=l(e,i,a),i=c.left,a=c.right,e.pbox[t]=i,e.pbox[t+1]=a;for(let t=0;t<4;t++)for(let n=0;n<256;n+=2)c=l(e,i,a),i=c.left,a=c.right,e.sbox[t][n]=i,e.sbox[t][n+1]=a}(a,t,n)}},encryptBlock:function(e,t){var n=l(a,e[t],e[t+1]);e[t]=n.left,e[t+1]=n.right},decryptBlock:function(e,t){var n=function(e,t,n){let r,i=t,o=n;for(let t=17;t>1;--t)i^=e.pbox[t],o=c(e,i)^o,r=i,i=o,o=r;return r=i,i=o,o=r,o^=e.pbox[1],i^=e.pbox[0],{left:i,right:o}}(a,e[t],e[t+1]);e[t]=n.left,e[t+1]=n.right},blockSize:2,keySize:4,ivSize:2});e.Blowfish=t._createHelper(u)}(),r.Blowfish)},3143(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.debounce=void 0;var r=n(5212),i=n(5717),o=n(7214),s=n(9724);t.debounce=function(e){return r.operate(function(t,n){var r=!1,a=null,c=null,l=function(){if(null==c||c.unsubscribe(),c=null,r){r=!1;var e=a;a=null,n.next(e)}};t.subscribe(o.createOperatorSubscriber(n,function(t){null==c||c.unsubscribe(),r=!0,a=t,c=o.createOperatorSubscriber(n,l,i.noop),s.innerFrom(e(t)).subscribe(c)},function(){l(),n.complete()},void 0,function(){a=c=null}))})}},3181(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.OpenAiProviderService=void 0;const s=n(9430),a=o(n(6425)),c=n(6240),l=n(1170),u=n(389),d=n(9048);let f=class extends c.BaseAiProvider{constructor(e){super(e),this.name="openai",this.displayName="OpenAI (GPT-4)",this.capabilities=[l.ProviderCapability.CHAT,l.ProviderCapability.COMMAND_GENERATION,l.ProviderCapability.COMMAND_EXPLANATION,l.ProviderCapability.FUNCTION_CALL,l.ProviderCapability.STREAMING],this.authConfig={type:"bearer",credentials:{apiKey:""}},this.client=null}configure(e){super.configure(e),this.authConfig.credentials.apiKey=e.apiKey||"",this.initializeClient()}initializeClient(){if(this.config?.apiKey)try{this.client=a.default.create({baseURL:this.getBaseURL(),timeout:this.getTimeout(),headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json"}}),this.logger.info("OpenAI client initialized",{baseURL:this.getBaseURL(),model:this.config.model||"gpt-4"})}catch(e){throw this.logger.error("Failed to initialize OpenAI client",e),e}else this.logger.warn("OpenAI API key not provided")}async chat(e){if(!this.client)throw new Error("OpenAI client not initialized");this.logRequest(e);try{const t=await this.withRetry(async()=>{const t=await this.client.post("/chat/completions",{model:this.config?.model||"gpt-4",messages:this.transformMessages(e.messages),max_tokens:e.maxTokens||1e3,temperature:e.temperature||.7,stream:e.stream||!1});return this.logResponse(t.data),t.data});return this.transformChatResponse(t)}catch(t){throw this.logError(t,{request:e}),new Error(`OpenAI chat failed: ${t instanceof Error?t.message:String(t)}`)}}async generateCommand(e){const t=this.buildCommandPrompt(e),n={messages:[{id:this.generateId(),role:u.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:500,temperature:.3},r=await this.chat(n);return this.parseCommandResponse(r.message.content)}async explainCommand(e){const t=this.buildExplainPrompt(e),n={messages:[{id:this.generateId(),role:u.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:1e3,temperature:.5},r=await this.chat(n);return this.parseExplainResponse(r.message.content)}async analyzeResult(e){const t=this.buildAnalysisPrompt(e),n={messages:[{id:this.generateId(),role:u.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:1e3,temperature:.7},r=await this.chat(n);return this.parseAnalysisResponse(r.message.content)}async healthCheck(){try{return this.client?200===(await this.client.post("/chat/completions",{model:this.config?.model||"gpt-4",max_tokens:1,messages:[{role:"user",content:"Hi"}]})).status?(this.lastHealthCheck={status:l.HealthStatus.HEALTHY,timestamp:new Date},l.HealthStatus.HEALTHY):l.HealthStatus.DEGRADED:l.HealthStatus.UNHEALTHY}catch(e){return this.logger.error("OpenAI health check failed",e),this.lastHealthCheck={status:l.HealthStatus.UNHEALTHY,timestamp:new Date},l.HealthStatus.UNHEALTHY}}validateConfig(){const e=super.validateConfig();if(!this.config?.apiKey)return{valid:!1,errors:[...e.errors||[],"OpenAI API key is required"]};const t=["gpt-4","gpt-4-turbo","gpt-3.5-turbo"];return this.config.model&&!t.includes(this.config.model)&&(e.warnings=[...e.warnings||[],`Model ${this.config.model} might not be supported. Supported models: ${t.join(", ")}`]),e}getDefaultBaseURL(){return"https://api.openai.com/v1"}transformMessages(e){return e.map(e=>({role:e.role,content:e.content}))}transformChatResponse(e){const t=e.choices?.[0],n=t?.message?.content||"";return{message:{id:this.generateId(),role:u.MessageRole.ASSISTANT,content:n,timestamp:new Date},usage:e.usage?{promptTokens:e.usage.prompt_tokens||0,completionTokens:e.usage.completion_tokens||0,totalTokens:e.usage.total_tokens||0}:void 0}}buildCommandPrompt(e){let t=`请将以下自然语言描述转换为准确的终端命令:\n\n"${e.naturalLanguage}"\n\n`;return e.context&&(t+="当前环境:\n",e.context.currentDirectory&&(t+=`- 当前目录:${e.context.currentDirectory}\n`),e.context.operatingSystem&&(t+=`- 操作系统:${e.context.operatingSystem}\n`),e.context.shell&&(t+=`- Shell:${e.context.shell}\n`)),t+="\n请直接返回JSON格式:\n",t+="{\n",t+=' "command": "具体命令",\n',t+=' "explanation": "命令解释",\n',t+=' "confidence": 0.95\n',t+="}\n",t}buildExplainPrompt(e){let t=`请详细解释以下终端命令:\n\n\`${e.command}\`\n\n`;return e.context?.currentDirectory&&(t+=`当前目录:${e.context.currentDirectory}\n`),e.context?.operatingSystem&&(t+=`操作系统:${e.context.operatingSystem}\n`),t+="\n请按以下JSON格式返回:\n",t+="{\n",t+=' "explanation": "整体解释",\n',t+=' "breakdown": [\n',t+=' {"part": "命令部分", "description": "说明"}\n',t+=" ],\n",t+=' "examples": ["使用示例"]\n',t+="}\n",t}buildAnalysisPrompt(e){let t="请分析以下命令执行结果:\n\n";return t+=`命令:${e.command}\n`,t+=`退出码:${e.exitCode}\n`,t+=`输出:\n${e.output}\n\n`,e.context?.workingDirectory&&(t+=`工作目录:${e.context.workingDirectory}\n`),t+="\n请按以下JSON格式返回:\n",t+="{\n",t+=' "summary": "结果总结",\n',t+=' "insights": ["洞察1", "洞察2"],\n',t+=' "success": true/false,\n',t+=' "issues": [\n',t+=' {"severity": "warning|error|info", "message": "问题描述", "suggestion": "建议"}\n',t+=" ]\n",t+="}\n",t}parseCommandResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{command:e.command||"",explanation:e.explanation||"",confidence:e.confidence||.5}}}catch(e){this.logger.warn("Failed to parse command response as JSON",e)}const t=e.split("\n").map(e=>e.trim()).filter(e=>e);return{command:t[0]||"",explanation:t.slice(1).join(" ")||"AI生成的命令",confidence:.5}}parseExplainResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{explanation:e.explanation||"",breakdown:e.breakdown||[],examples:e.examples||[]}}}catch(e){this.logger.warn("Failed to parse explain response as JSON",e)}return{explanation:e,breakdown:[]}}parseAnalysisResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{summary:e.summary||"",insights:e.insights||[],success:!1!==e.success,issues:e.issues||[]}}}catch(e){this.logger.warn("Failed to parse analysis response as JSON",e)}return{summary:e,insights:[],success:!0}}};f=r([(0,s.Injectable)(),i("design:paramtypes",[d.LoggerService])],f),t.OpenAiProviderService=f},3197(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.publish=void 0;var r=n(6808),i=n(8464),o=n(7812);t.publish=function(e){return e?function(t){return o.connect(e)(t)}:function(e){return i.multicast(new r.Subject)(e)}}},3240(e,t,n){var r,i,o,s,a,c;e.exports=(r=n(9021),o=(i=r).lib,s=o.Base,a=o.WordArray,(c=i.x64={}).Word=s.extend({init:function(e,t){this.high=e,this.low=t}}),c.WordArray=s.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:8*e.length},toX32:function(){for(var e=this.words,t=e.length,n=[],r=0;r<t;r++){var i=e[r];n.push(i.high),n.push(i.low)}return a.create(n,this.sigBytes)},clone:function(){for(var e=s.clone.call(this),t=e.words=this.words.slice(0),n=t.length,r=0;r<n;r++)t[r]=t[r].clone();return e}}),r)},3262(e){"use strict";e.exports=require("tabby-settings")},3275(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dateTimestampProvider=void 0,t.dateTimestampProvider={now:function(){return(t.dateTimestampProvider.delegate||Date).now()},delegate:void 0}},3337(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mapTo=void 0;var r=n(6872);t.mapTo=function(e){return r.map(function(){return e})}},3352(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.retry=void 0;var r=n(5212),i=n(7214),o=n(7699),s=n(5825),a=n(9724);t.retry=function(e){var t;void 0===e&&(e=1/0);var n=(t=e&&"object"==typeof e?e:{count:e}).count,c=void 0===n?1/0:n,l=t.delay,u=t.resetOnSuccess,d=void 0!==u&&u;return c<=0?o.identity:r.operate(function(e,t){var n,r=0,o=function(){var u=!1;n=e.subscribe(i.createOperatorSubscriber(t,function(e){d&&(r=0),t.next(e)},void 0,function(e){if(r++<c){var d=function(){n?(n.unsubscribe(),n=null,o()):u=!0};if(null!=l){var f="number"==typeof l?s.timer(l):a.innerFrom(l(e,r)),p=i.createOperatorSubscriber(t,function(){p.unsubscribe(),d()},function(){t.complete()});f.subscribe(p)}else d()}else t.error(e)})),u&&(n.unsubscribe(),n=null,o())};o()})}},3405(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.share=void 0;var o=n(9724),s=n(6808),a=n(2708),c=n(5212);function l(e,t){for(var n=[],s=2;s<arguments.length;s++)n[s-2]=arguments[s];if(!0!==t){if(!1!==t){var c=new a.SafeSubscriber({next:function(){c.unsubscribe(),e()}});return o.innerFrom(t.apply(void 0,i([],r(n)))).subscribe(c)}}else e()}t.share=function(e){void 0===e&&(e={});var t=e.connector,n=void 0===t?function(){return new s.Subject}:t,r=e.resetOnError,i=void 0===r||r,u=e.resetOnComplete,d=void 0===u||u,f=e.resetOnRefCountZero,p=void 0===f||f;return function(e){var t,r,s,u=0,f=!1,h=!1,m=function(){null==r||r.unsubscribe(),r=void 0},g=function(){m(),t=s=void 0,f=h=!1},v=function(){var e=t;g(),null==e||e.unsubscribe()};return c.operate(function(e,c){u++,h||f||m();var b=s=null!=s?s:n();c.add(function(){0!==--u||h||f||(r=l(v,p))}),b.subscribe(c),!t&&u>0&&(t=new a.SafeSubscriber({next:function(e){return b.next(e)},error:function(e){h=!0,m(),r=l(g,i,e),b.error(e)},complete:function(){f=!0,m(),r=l(g,d),b.complete()}}),o.innerFrom(e).subscribe(t))})(e)}}},3428(e,t,n){const r=n(9821),i=n(818);r.kind||r.setShims(i.getRuntime(),{auto:!0});for(const e of Object.keys(r))Object.defineProperty(t,e,{get:()=>r[e]})},3434(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sample=void 0;var r=n(9724),i=n(5212),o=n(5717),s=n(7214);t.sample=function(e){return i.operate(function(t,n){var i=!1,a=null;t.subscribe(s.createOperatorSubscriber(n,function(e){i=!0,a=e})),r.innerFrom(e).subscribe(s.createOperatorSubscriber(n,function(){if(i){i=!1;var e=a;a=null,n.next(e)}},o.noop))})}},3440(e){"use strict";e.exports=require("@angular/forms")},3484(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.toArray=void 0;var r=n(2070),i=n(5212),o=function(e,t){return e.push(t),e};t.toArray=function(){return i.operate(function(e,t){r.reduce(o,[])(e).subscribe(t)})}},3506(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NotFoundError=void 0;var r=n(9619);t.NotFoundError=r.createErrorClass(function(e){return function(t){e(this),this.name="NotFoundError",this.message=t}})},3728(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.config=void 0,t.config={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1}},3797(e,t,n){var r,i,o;e.exports=(o=n(9021),n(7165),o.mode.OFB=(i=(r=o.lib.BlockCipherMode.extend()).Encryptor=r.extend({processBlock:function(e,t){var n=this._cipher,r=n.blockSize,i=this._iv,o=this._keystream;i&&(o=this._keystream=i.slice(0),this._iv=void 0),n.encryptBlock(o,0);for(var s=0;s<r;s++)e[t+s]^=o[s]}}),r.Decryptor=i,r),o.mode.OFB)},3828(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.RiskConfirmDialogComponent=void 0;const o=n(9430),s=n(7643),a=n(8785);let c=class{constructor(e){this.activeModal=e,this.command="",this.explanation="",this.riskLevel=a.RiskLevel.MEDIUM,this.suggestions=[],this.confirmed=new o.EventEmitter}confirm(){this.confirmed.emit(!0),this.activeModal.close(!0)}cancel(){this.confirmed.emit(!1),this.activeModal.dismiss(!1)}getRiskLevelText(){switch(this.riskLevel){case a.RiskLevel.LOW:return"低风险";case a.RiskLevel.MEDIUM:return"中风险";case a.RiskLevel.HIGH:return"高风险";case a.RiskLevel.CRITICAL:return"极风险";default:return"未知风险"}}getRiskLevelColor(){switch(this.riskLevel){case a.RiskLevel.LOW:return"var(--ai-risk-low)";case a.RiskLevel.MEDIUM:return"var(--ai-risk-medium)";case a.RiskLevel.HIGH:return"var(--ai-risk-high)";case a.RiskLevel.CRITICAL:return"var(--ai-risk-critical)";default:return"var(--ai-secondary)"}}getRiskLevelIcon(){switch(this.riskLevel){case a.RiskLevel.LOW:return"icon-check-circle";case a.RiskLevel.MEDIUM:return"icon-warning";case a.RiskLevel.HIGH:return"icon-alert-triangle";case a.RiskLevel.CRITICAL:return"icon-alert-octagon";default:return"icon-help-circle"}}isHighRisk(){return this.riskLevel===a.RiskLevel.HIGH||this.riskLevel===a.RiskLevel.CRITICAL}};r([(0,o.Input)(),i("design:type",String)],c.prototype,"command",void 0),r([(0,o.Input)(),i("design:type",String)],c.prototype,"explanation",void 0),r([(0,o.Input)(),i("design:type",String)],c.prototype,"riskLevel",void 0),r([(0,o.Input)(),i("design:type",Array)],c.prototype,"suggestions",void 0),r([(0,o.Output)(),i("design:type",Object)],c.prototype,"confirmed",void 0),c=r([(0,o.Component)({selector:"app-risk-confirm-dialog",template:n(8590),styles:[n(7361)]}),i("design:paramtypes",[s.NgbActiveModal])],c),t.RiskConfirmDialogComponent=c},3866(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.timestamp=void 0;var r=n(3275),i=n(6872);t.timestamp=function(e){return void 0===e&&(e=r.dateTimestampProvider),i.map(function(t){return{value:t,timestamp:e.now()}})}},3916(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.mapOneOrManyArgs=void 0;var o=n(6872),s=Array.isArray;t.mapOneOrManyArgs=function(e){return o.map(function(t){return function(e,t){return s(t)?e.apply(void 0,i([],r(t))):e(t)}(e,t)})}},3929(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sequenceEqual=void 0;var r=n(5212),i=n(7214),o=n(9724);t.sequenceEqual=function(e,t){return void 0===t&&(t=function(e,t){return e===t}),r.operate(function(n,r){var s={buffer:[],complete:!1},a={buffer:[],complete:!1},c=function(e){r.next(e),r.complete()},l=function(e,n){var o=i.createOperatorSubscriber(r,function(r){var i=n.buffer,o=n.complete;0===i.length?o?c(!1):e.buffer.push(r):!t(r,i.shift())&&c(!1)},function(){e.complete=!0;var t=n.complete,r=n.buffer;t&&c(0===r.length),null==o||o.unsubscribe()});return o};n.subscribe(l(s,a)),o.innerFrom(e).subscribe(l(a,s))})}},3956(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.retryWhen=void 0;var r=n(9724),i=n(6808),o=n(5212),s=n(7214);t.retryWhen=function(e){return o.operate(function(t,n){var o,a,c=!1,l=function(){o=t.subscribe(s.createOperatorSubscriber(n,void 0,void 0,function(t){a||(a=new i.Subject,r.innerFrom(e(a)).subscribe(s.createOperatorSubscriber(n,function(){return o?l():c=!0}))),a&&a.next(t)})),c&&(o.unsubscribe(),o=null,c=!1,l())};l()})}},4084(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r='<div class="security-settings">\n <h3>Security Settings</h3>\n\n <div class="form-group">\n <label class="form-label">\n <input type="checkbox" [(ngModel)]="enablePasswordProtection">\n Enable Password Protection\n </label>\n <small class="form-text text-muted">\n Require password for high-risk commands\n </small>\n </div>\n\n <div class="form-group" *ngIf="enablePasswordProtection">\n <label class="form-label">Set Password</label>\n <input type="password" class="form-control" [(ngModel)]="password" placeholder="Enter password">\n </div>\n\n <div class="form-group">\n <label class="form-label">\n <input type="checkbox" [(ngModel)]="enableRiskAssessment">\n Enable Risk Assessment\n </label>\n <small class="form-text text-muted">\n Automatically assess command risk levels\n </small>\n </div>\n\n <div class="form-group">\n <label class="form-label">Default Risk Level</label>\n <select class="form-control" [(ngModel)]="defaultRiskLevel">\n <option value="low">Low</option>\n <option value="medium">Medium</option>\n <option value="high">High</option>\n </select>\n </div>\n\n <div class="form-group">\n <label class="form-label">\n <input type="checkbox" [(ngModel)]="enableConsentPersistence">\n Persist User Consent\n </label>\n <small class="form-text text-muted">\n Remember user consent for 30 days\n </small>\n </div>\n\n <button class="btn btn-primary" (click)="saveSettings()">\n Save Settings\n </button>\n</div>\n'},4120(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.not=void 0,t.not=function(e,t){return function(n,r){return!e.call(t,n,r)}}},4125(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r="/* Provider Configuration Styles */\n.provider-config {\n .form-group {\n margin-bottom: 1rem;\n }\n\n .form-label {\n font-weight: 600;\n margin-bottom: 0.5rem;\n display: block;\n }\n\n .form-control {\n width: 100%;\n padding: 0.5rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n\n &:focus {\n outline: none;\n border-color: #007bff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n }\n }\n\n .btn {\n padding: 0.5rem 1rem;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n transition: background-color 0.2s;\n\n &.btn-primary {\n background-color: #007bff;\n color: white;\n\n &:hover {\n background-color: #0056b3;\n }\n }\n }\n\n .alert {\n padding: 0.75rem;\n border-radius: 4px;\n margin-bottom: 1rem;\n\n &.alert-danger {\n background-color: #f8d7da;\n border: 1px solid #f5c6cb;\n color: #721c24;\n }\n\n &.alert-success {\n background-color: #d4edda;\n border: 1px solid #c3e6cb;\n color: #155724;\n }\n }\n}\n"},4143(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sampleTime=void 0;var r=n(2326),i=n(3434),o=n(2275);t.sampleTime=function(e,t){return void 0===t&&(t=r.asyncScheduler),i.sample(o.interval(e,t))}},4265(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.AnthropicProviderService=void 0;const o=n(9430),s=n(4524),a=n(6240),c=n(1170),l=n(389),u=n(9048);let d=class extends a.BaseAiProvider{constructor(e){super(e),this.name="anthropic",this.displayName="Anthropic Claude",this.capabilities=[c.ProviderCapability.CHAT,c.ProviderCapability.COMMAND_GENERATION,c.ProviderCapability.COMMAND_EXPLANATION,c.ProviderCapability.REASONING,c.ProviderCapability.STREAMING],this.authConfig={type:"bearer",credentials:{apiKey:""}},this.client=null}configure(e){super.configure(e),this.authConfig.credentials.apiKey=e.apiKey||"",this.initializeClient()}initializeClient(){if(this.config?.apiKey)try{this.client=new s.Anthropic({apiKey:this.config.apiKey,baseURL:this.getBaseURL()}),this.logger.info("Anthropic client initialized",{baseURL:this.getBaseURL(),model:this.config.model||"claude-3-sonnet"})}catch(e){throw this.logger.error("Failed to initialize Anthropic client",e),e}else this.logger.warn("Anthropic API key not provided")}async chat(e){if(!this.client)throw new Error("Anthropic client not initialized");this.logRequest(e);try{const t=await this.withRetry(async()=>{const t=await this.client.messages.create({model:this.config?.model||"claude-3-sonnet",max_tokens:e.maxTokens||1e3,system:e.systemPrompt||this.getDefaultSystemPrompt(),messages:this.transformMessages(e.messages),temperature:e.temperature||1,stream:e.stream||!1});return this.logResponse(t),t});return this.transformChatResponse(t)}catch(t){throw this.logError(t,{request:e}),new Error(`Anthropic chat failed: ${t instanceof Error?t.message:String(t)}`)}}async generateCommand(e){const t=this.buildCommandPrompt(e),n={messages:[{id:this.generateId(),role:l.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:500,temperature:.3},r=await this.chat(n);return this.parseCommandResponse(r.message.content)}async explainCommand(e){const t=this.buildExplainPrompt(e),n={messages:[{id:this.generateId(),role:l.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:1e3,temperature:.5},r=await this.chat(n);return this.parseExplainResponse(r.message.content)}async analyzeResult(e){const t=this.buildAnalysisPrompt(e),n={messages:[{id:this.generateId(),role:l.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:1e3,temperature:.7},r=await this.chat(n);return this.parseAnalysisResponse(r.message.content)}async healthCheck(){try{return this.client?(await this.client.messages.create({model:this.config?.model||"claude-3-sonnet",max_tokens:1,messages:[{role:"user",content:"Hi"}]}),this.lastHealthCheck={status:c.HealthStatus.HEALTHY,timestamp:new Date},c.HealthStatus.HEALTHY):c.HealthStatus.UNHEALTHY}catch(e){return this.logger.error("Anthropic health check failed",e),this.lastHealthCheck={status:c.HealthStatus.UNHEALTHY,timestamp:new Date},c.HealthStatus.UNHEALTHY}}validateConfig(){const e=super.validateConfig();if(!this.config?.apiKey)return{valid:!1,errors:[...e.errors||[],"Anthropic API key is required"]};const t=["claude-3-opus","claude-3-sonnet","claude-3-haiku"];return this.config.model&&!t.includes(this.config.model)&&(e.warnings=[...e.warnings||[],`Model ${this.config.model} might not be supported. Supported models: ${t.join(", ")}`]),e}getDefaultBaseURL(){return"https://api.anthropic.com"}transformMessages(e){return e.map(e=>({role:e.role,content:[{type:"text",text:e.content}]}))}transformChatResponse(e){const t=e.content[0],n="text"===t.type?t.text:"";return{message:{id:this.generateId(),role:l.MessageRole.ASSISTANT,content:n,timestamp:new Date},usage:e.usage?{promptTokens:e.usage.input_tokens||0,completionTokens:e.usage.output_tokens||0,totalTokens:(e.usage.input_tokens||0)+(e.usage.output_tokens||0)}:void 0}}buildCommandPrompt(e){let t=`请将以下自然语言描述转换为准确的终端命令:\n\n"${e.naturalLanguage}"\n\n`;return e.context&&(t+="当前环境:\n",e.context.currentDirectory&&(t+=`- 当前目录:${e.context.currentDirectory}\n`),e.context.operatingSystem&&(t+=`- 操作系统:${e.context.operatingSystem}\n`),e.context.shell&&(t+=`- Shell:${e.context.shell}\n`)),t+="\n请直接返回JSON格式:\n",t+="{\n",t+=' "command": "具体命令",\n',t+=' "explanation": "命令解释",\n',t+=' "confidence": 0.95\n',t+="}\n",t}buildExplainPrompt(e){let t=`请详细解释以下终端命令:\n\n\`${e.command}\`\n\n`;return e.context?.currentDirectory&&(t+=`当前目录:${e.context.currentDirectory}\n`),e.context?.operatingSystem&&(t+=`操作系统:${e.context.operatingSystem}\n`),t+="\n请按以下JSON格式返回:\n",t+="{\n",t+=' "explanation": "整体解释",\n',t+=' "breakdown": [\n',t+=' {"part": "命令部分", "description": "说明"}\n',t+=" ],\n",t+=' "examples": ["使用示例"]\n',t+="}\n",t}buildAnalysisPrompt(e){let t="请分析以下命令执行结果:\n\n";return t+=`命令:${e.command}\n`,t+=`退出码:${e.exitCode}\n`,t+=`输出:\n${e.output}\n\n`,e.context?.workingDirectory&&(t+=`工作目录:${e.context.workingDirectory}\n`),t+="\n请按以下JSON格式返回:\n",t+="{\n",t+=' "summary": "结果总结",\n',t+=' "insights": ["洞察1", "洞察2"],\n',t+=' "success": true/false,\n',t+=' "issues": [\n',t+=' {"severity": "warning|error|info", "message": "问题描述", "suggestion": "建议"}\n',t+=" ]\n",t+="}\n",t}parseCommandResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{command:e.command||"",explanation:e.explanation||"",confidence:e.confidence||.5}}}catch(e){this.logger.warn("Failed to parse command response as JSON",e)}const t=e.split("\n").map(e=>e.trim()).filter(e=>e);return{command:t[0]||"",explanation:t.slice(1).join(" ")||"AI生成的命令",confidence:.5}}parseExplainResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{explanation:e.explanation||"",breakdown:e.breakdown||[],examples:e.examples||[]}}}catch(e){this.logger.warn("Failed to parse explain response as JSON",e)}return{explanation:e,breakdown:[]}}parseAnalysisResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{summary:e.summary||"",insights:e.insights||[],success:!1!==e.success,issues:e.issues||[]}}}catch(e){this.logger.warn("Failed to parse analysis response as JSON",e)}return{summary:e,insights:[],success:!0}}getDefaultSystemPrompt(){return"你是一个专业的终端命令助手,擅长将自然语言转换为准确的命令,并提供详细的解释。"}};d=r([(0,o.Injectable)(),i("design:paramtypes",[u.LoggerService])],d),t.AnthropicProviderService=d},4293(e,t,n){"use strict";var r,i=this&&this.__classPrivateFieldSet||function(e,t,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?i.call(e,n):i?i.value=n:t.set(e,n),n},o=this&&this.__classPrivateFieldGet||function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Object.defineProperty(t,"__esModule",{value:!0}),t.isObj=t.toBase64=t.getRequiredHeader=t.isHeadersProtocol=t.isRunningInBrowser=t.debug=t.hasOwn=t.isEmptyObj=t.maybeCoerceBoolean=t.maybeCoerceFloat=t.maybeCoerceInteger=t.coerceBoolean=t.coerceFloat=t.coerceInteger=t.readEnv=t.ensurePresent=t.castToError=t.sleep=t.safeJSON=t.isRequestOptions=t.createResponseHeaders=t.PagePromise=t.AbstractPage=t.APIClient=t.APIPromise=t.createForm=t.multipartFormRequestOptions=t.maybeMultipartFormRequestOptions=void 0;const s=n(9232),a=n(2492),c=n(2854),l=n(3428),u=n(138);var d=n(138);async function f(e){const{response:t}=e;if(e.options.stream)return C("response",t.status,t.url,t.headers,t.body),e.options.__streamClass?e.options.__streamClass.fromSSEResponse(t,e.controller):a.Stream.fromSSEResponse(t,e.controller);if(204===t.status)return null;if(e.options.__binaryResponse)return t;const n=t.headers.get("content-type");if(n?.includes("application/json")||n?.includes("application/vnd.api+json")){const e=await t.json();return C("response",t.status,t.url,t.headers,e),e}const r=await t.text();return C("response",t.status,t.url,t.headers,r),r}Object.defineProperty(t,"maybeMultipartFormRequestOptions",{enumerable:!0,get:function(){return d.maybeMultipartFormRequestOptions}}),Object.defineProperty(t,"multipartFormRequestOptions",{enumerable:!0,get:function(){return d.multipartFormRequestOptions}}),Object.defineProperty(t,"createForm",{enumerable:!0,get:function(){return d.createForm}});class p extends Promise{constructor(e,t=f){super(e=>{e(null)}),this.responsePromise=e,this.parseResponse=t}_thenUnwrap(e){return new p(this.responsePromise,async t=>e(await this.parseResponse(t)))}asResponse(){return this.responsePromise.then(e=>e.response)}async withResponse(){const[e,t]=await Promise.all([this.parse(),this.asResponse()]);return{data:e,response:t}}parse(){return this.parsedPromise||(this.parsedPromise=this.responsePromise.then(this.parseResponse)),this.parsedPromise}then(e,t){return this.parse().then(e,t)}catch(e){return this.parse().catch(e)}finally(e){return this.parse().finally(e)}}t.APIPromise=p,t.APIClient=class{constructor({baseURL:e,maxRetries:t=2,timeout:n=6e5,httpAgent:r,fetch:i}){this.baseURL=e,this.maxRetries=S("maxRetries",t),this.timeout=S("timeout",n),this.httpAgent=r,this.fetch=i??l.fetch}authHeaders(e){return{}}defaultHeaders(e){return{Accept:"application/json","Content-Type":"application/json","User-Agent":this.getUserAgent(),...w(),...this.authHeaders(e)}}validateHeaders(e,t){}defaultIdempotencyKey(){return`stainless-node-retry-${R()}`}get(e,t){return this.methodRequest("get",e,t)}post(e,t){return this.methodRequest("post",e,t)}patch(e,t){return this.methodRequest("patch",e,t)}put(e,t){return this.methodRequest("put",e,t)}delete(e,t){return this.methodRequest("delete",e,t)}methodRequest(e,t,n){return this.request(Promise.resolve(n).then(n=>({method:e,path:t,...n})))}getAPIList(e,t,n){return this.requestAPIList(t,{method:"get",path:e,...n})}calculateContentLength(e){if("string"==typeof e){if("undefined"!=typeof Buffer)return Buffer.byteLength(e,"utf8").toString();if("undefined"!=typeof TextEncoder)return(new TextEncoder).encode(e).length.toString()}return null}buildRequest(e){const{method:t,path:n,query:r,headers:i={}}=e,o=(0,u.isMultipartBody)(e.body)?e.body.body:e.body?JSON.stringify(e.body,null,2):null,s=this.calculateContentLength(o),a=this.buildURL(n,r);"timeout"in e&&S("timeout",e.timeout);const c=e.timeout??this.timeout,d=e.httpAgent??this.httpAgent??(0,l.getDefaultAgent)(a),f=c+1e3;return"number"==typeof d?.options?.timeout&&f>(d.options.timeout??0)&&(d.options.timeout=f),this.idempotencyHeader&&"get"!==t&&(e.idempotencyKey||(e.idempotencyKey=this.defaultIdempotencyKey()),i[this.idempotencyHeader]=e.idempotencyKey),{req:{method:t,...o&&{body:o},headers:this.buildHeaders({options:e,headers:i,contentLength:s}),...d&&{agent:d},signal:e.signal??null},url:a,timeout:c}}buildHeaders({options:e,headers:t,contentLength:n}){const r={};return n&&(r["content-length"]=n),k(r,this.defaultHeaders(e)),k(r,t),(0,u.isMultipartBody)(e.body)&&"node"!==l.kind&&delete r["content-type"],this.validateHeaders(r,t),r}async prepareOptions(e){}async prepareRequest(e,{url:t,options:n}){}parseHeaders(e){return e?Symbol.iterator in e?Object.fromEntries(Array.from(e).map(e=>[...e])):{...e}:{}}makeStatusError(e,t,n,r){return c.APIError.generate(e,t,n,r)}request(e,t=null){return new p(this.makeRequest(e,t))}async makeRequest(e,n){const r=await e;null==n&&(n=r.maxRetries??this.maxRetries),await this.prepareOptions(r);const{req:i,url:o,timeout:s}=this.buildRequest(r);if(await this.prepareRequest(i,{url:o,options:r}),C("request",o,r,i.headers),r.signal?.aborted)throw new c.APIUserAbortError;const a=new AbortController,l=await this.fetchWithTimeout(o,i,s,a).catch(t.castToError);if(l instanceof Error){if(r.signal?.aborted)throw new c.APIUserAbortError;if(n)return this.retryRequest(r,n);if("AbortError"===l.name)throw new c.APIConnectionTimeoutError;throw new c.APIConnectionError({cause:l})}const u=(0,t.createResponseHeaders)(l.headers);if(!l.ok){if(n&&this.shouldRetry(l))return C(`response (error; retrying, ${n} attempts remaining)`,l.status,o,u),this.retryRequest(r,n,u);const e=await l.text().catch(e=>(0,t.castToError)(e).message),i=(0,t.safeJSON)(e),s=i?void 0:e;throw C(`response (error; ${n?"(error; no more retries left)":"(error; not retryable)"})`,l.status,o,u,s),this.makeStatusError(l.status,i,s,u)}return{response:l,options:r,controller:a}}requestAPIList(e,t){const n=this.makeRequest(t,null);return new m(this,n,e)}buildURL(e,t){const n=x(e)?new URL(e):new URL(this.baseURL+(this.baseURL.endsWith("/")&&e.startsWith("/")?e.slice(1):e)),r=this.defaultQuery();return O(r)||(t={...r,...t}),"object"==typeof t&&t&&!Array.isArray(t)&&(n.search=this.stringifyQuery(t)),n.toString()}stringifyQuery(e){return Object.entries(e).filter(([e,t])=>void 0!==t).map(([e,t])=>{if("string"==typeof t||"number"==typeof t||"boolean"==typeof t)return`${encodeURIComponent(e)}=${encodeURIComponent(t)}`;if(null===t)return`${encodeURIComponent(e)}=`;throw new c.AnthropicError(`Cannot stringify type ${typeof t}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`)}).join("&")}async fetchWithTimeout(e,t,n,r){const{signal:i,...o}=t||{};i&&i.addEventListener("abort",()=>r.abort());const s=setTimeout(()=>r.abort(),n);return this.getRequestClient().fetch.call(void 0,e,{signal:r.signal,...o}).finally(()=>{clearTimeout(s)})}getRequestClient(){return{fetch:this.fetch}}shouldRetry(e){const t=e.headers.get("x-should-retry");return"true"===t||"false"!==t&&(408===e.status||409===e.status||429===e.status||e.status>=500)}async retryRequest(e,n,r){let i;const o=r?.["retry-after-ms"];if(o){const e=parseFloat(o);Number.isNaN(e)||(i=e)}const s=r?.["retry-after"];if(s&&!i){const e=parseFloat(s);i=Number.isNaN(e)?Date.parse(s)-Date.now():1e3*e}if(!(i&&0<=i&&i<6e4)){const t=e.maxRetries??this.maxRetries;i=this.calculateDefaultRetryTimeoutMillis(n,t)}return await(0,t.sleep)(i),this.makeRequest(e,n-1)}calculateDefaultRetryTimeoutMillis(e,t){const n=t-e;return Math.min(.5*Math.pow(2,n),8)*(1-.25*Math.random())*1e3}getUserAgent(){return`${this.constructor.name}/JS ${s.VERSION}`}};class h{constructor(e,t,n,o){r.set(this,void 0),i(this,r,e,"f"),this.options=o,this.response=t,this.body=n}hasNextPage(){return!!this.getPaginatedItems().length&&null!=this.nextPageInfo()}async getNextPage(){const e=this.nextPageInfo();if(!e)throw new c.AnthropicError("No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.");const t={...this.options};if("params"in e&&"object"==typeof t.query)t.query={...t.query,...e.params};else if("url"in e){const n=[...Object.entries(t.query||{}),...e.url.searchParams.entries()];for(const[t,r]of n)e.url.searchParams.set(t,r);t.query=void 0,t.path=e.url.toString()}return await o(this,r,"f").requestAPIList(this.constructor,t)}async*iterPages(){let e=this;for(yield e;e.hasNextPage();)e=await e.getNextPage(),yield e}async*[(r=new WeakMap,Symbol.asyncIterator)](){for await(const e of this.iterPages())for(const t of e.getPaginatedItems())yield t}}t.AbstractPage=h;class m extends p{constructor(e,t,n){super(t,async t=>new n(e,t.response,await f(t),t.options))}async*[Symbol.asyncIterator](){const e=await(this);for await(const t of e)yield t}}t.PagePromise=m,t.createResponseHeaders=e=>new Proxy(Object.fromEntries(e.entries()),{get(e,t){const n=t.toString();return e[n.toLowerCase()]||e[n]}});const g={method:!0,path:!0,query:!0,body:!0,headers:!0,maxRetries:!0,stream:!0,timeout:!0,httpAgent:!0,signal:!0,idempotencyKey:!0,__binaryResponse:!0,__streamClass:!0};t.isRequestOptions=e=>"object"==typeof e&&null!==e&&!O(e)&&Object.keys(e).every(e=>P(g,e));const v=e=>"x32"===e?"x32":"x86_64"===e||"x64"===e?"x64":"arm"===e?"arm":"aarch64"===e||"arm64"===e?"arm64":e?`other:${e}`:"unknown",b=e=>(e=e.toLowerCase()).includes("ios")?"iOS":"android"===e?"Android":"darwin"===e?"MacOS":"win32"===e?"Windows":"freebsd"===e?"FreeBSD":"openbsd"===e?"OpenBSD":"linux"===e?"Linux":e?`Other:${e}`:"Unknown";let y;const w=()=>y??(y=(()=>{if("undefined"!=typeof Deno&&null!=Deno.build)return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":s.VERSION,"X-Stainless-OS":b(Deno.build.os),"X-Stainless-Arch":v(Deno.build.arch),"X-Stainless-Runtime":"deno","X-Stainless-Runtime-Version":"string"==typeof Deno.version?Deno.version:Deno.version?.deno??"unknown"};if("undefined"!=typeof EdgeRuntime)return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":s.VERSION,"X-Stainless-OS":"Unknown","X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":"edge","X-Stainless-Runtime-Version":process.version};if("[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0))return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":s.VERSION,"X-Stainless-OS":b(process.platform),"X-Stainless-Arch":v(process.arch),"X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":process.version};const e=function(){if("undefined"==typeof navigator||!navigator)return null;const e=[{key:"edge",pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"chrome",pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"firefox",pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"safari",pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}];for(const{key:t,pattern:n}of e){const e=n.exec(navigator.userAgent);if(e)return{browser:t,version:`${e[1]||0}.${e[2]||0}.${e[3]||0}`}}return null}();return e?{"X-Stainless-Lang":"js","X-Stainless-Package-Version":s.VERSION,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":`browser:${e.browser}`,"X-Stainless-Runtime-Version":e.version}:{"X-Stainless-Lang":"js","X-Stainless-Package-Version":s.VERSION,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":"unknown","X-Stainless-Runtime-Version":"unknown"}})());t.safeJSON=e=>{try{return JSON.parse(e)}catch(e){return}};const _=new RegExp("^(?:[a-z]+:)?//","i"),x=e=>_.test(e);t.sleep=e=>new Promise(t=>setTimeout(t,e));const S=(e,t)=>{if("number"!=typeof t||!Number.isInteger(t))throw new c.AnthropicError(`${e} must be an integer`);if(t<0)throw new c.AnthropicError(`${e} must be a positive integer`);return t};function O(e){if(!e)return!0;for(const t in e)return!1;return!0}function P(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function k(e,t){for(const n in t){if(!P(t,n))continue;const r=n.toLowerCase();if(!r)continue;const i=t[n];null===i?delete e[r]:void 0!==i&&(e[r]=i)}}function C(e,...t){"undefined"!=typeof process&&"true"===process?.env?.DEBUG&&console.log(`Anthropic:DEBUG:${e}`,...t)}t.castToError=e=>e instanceof Error?e:new Error(e),t.ensurePresent=e=>{if(null==e)throw new c.AnthropicError(`Expected a value to be given but received ${e} instead.`);return e},t.readEnv=e=>"undefined"!=typeof process?process.env?.[e]?.trim()??void 0:"undefined"!=typeof Deno?Deno.env?.get?.(e)?.trim():void 0,t.coerceInteger=e=>{if("number"==typeof e)return Math.round(e);if("string"==typeof e)return parseInt(e,10);throw new c.AnthropicError(`Could not coerce ${e} (type: ${typeof e}) into a number`)},t.coerceFloat=e=>{if("number"==typeof e)return e;if("string"==typeof e)return parseFloat(e);throw new c.AnthropicError(`Could not coerce ${e} (type: ${typeof e}) into a number`)},t.coerceBoolean=e=>"boolean"==typeof e?e:"string"==typeof e?"true"===e:Boolean(e),t.maybeCoerceInteger=e=>{if(void 0!==e)return(0,t.coerceInteger)(e)},t.maybeCoerceFloat=e=>{if(void 0!==e)return(0,t.coerceFloat)(e)},t.maybeCoerceBoolean=e=>{if(void 0!==e)return(0,t.coerceBoolean)(e)},t.isEmptyObj=O,t.hasOwn=P,t.debug=C;const R=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)});t.isRunningInBrowser=()=>"undefined"!=typeof window&&void 0!==window.document&&"undefined"!=typeof navigator,t.isHeadersProtocol=e=>"function"==typeof e?.get,t.getRequiredHeader=(e,n)=>{const r=n.toLowerCase();if((0,t.isHeadersProtocol)(e)){const t=n[0]?.toUpperCase()+n.substring(1).replace(/([^\w])(\w)/g,(e,t,n)=>t+n.toUpperCase());for(const i of[n,r,n.toUpperCase(),t]){const t=e.get(i);if(t)return t}}for(const[t,i]of Object.entries(e))if(t.toLowerCase()===r)return Array.isArray(i)?(i.length<=1||console.warn(`Received ${i.length} entries for the ${n} header, using the first entry.`),i[0]):i;throw new Error(`Could not find ${n} header`)},t.toBase64=e=>{if(!e)return"";if("undefined"!=typeof Buffer)return Buffer.from(e).toString("base64");if("undefined"!=typeof btoa)return btoa(e);throw new c.AnthropicError("Cannot generate b64 string; Expected `Buffer` or `btoa` to be defined")},t.isObj=function(e){return null!=e&&"object"==typeof e&&!Array.isArray(e)}},4319(e){"use strict";e.exports=require("tabby-terminal")},4359(e,t,n){"use strict";var r,i=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.ConnectableObservable=void 0;var o=n(8051),s=n(9879),a=n(9224),c=n(7214),l=n(5212),u=function(e){function t(t,n){var r=e.call(this)||this;return r.source=t,r.subjectFactory=n,r._subject=null,r._refCount=0,r._connection=null,l.hasLift(t)&&(r.lift=t.lift),r}return i(t,e),t.prototype._subscribe=function(e){return this.getSubject().subscribe(e)},t.prototype.getSubject=function(){var e=this._subject;return e&&!e.isStopped||(this._subject=this.subjectFactory()),this._subject},t.prototype._teardown=function(){this._refCount=0;var e=this._connection;this._subject=this._connection=null,null==e||e.unsubscribe()},t.prototype.connect=function(){var e=this,t=this._connection;if(!t){t=this._connection=new s.Subscription;var n=this.getSubject();t.add(this.source.subscribe(c.createOperatorSubscriber(n,void 0,function(){e._teardown(),n.complete()},function(t){e._teardown(),n.error(t)},function(){return e._teardown()}))),t.closed&&(this._connection=null,t=s.Subscription.EMPTY)}return t},t.prototype.refCount=function(){return a.refCount()(this)},t}(o.Observable);t.ConnectableObservable=u},4383(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.take=void 0;var r=n(4885),i=n(5212),o=n(7214);t.take=function(e){return e<=0?function(){return r.EMPTY}:i.operate(function(t,n){var r=0;t.subscribe(o.createOperatorSubscriber(n,function(t){++r<=e&&(n.next(t),e<=r&&n.complete())}))})}},4407(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r='/* Security Settings Styles */\n.security-settings {\n h3 {\n margin-bottom: 1.5rem;\n color: #333;\n }\n\n .form-group {\n margin-bottom: 1.5rem;\n }\n\n .form-label {\n font-weight: 600;\n margin-bottom: 0.5rem;\n display: block;\n\n input[type="checkbox"] {\n margin-right: 0.5rem;\n }\n }\n\n .form-control {\n width: 100%;\n padding: 0.5rem;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-size: 14px;\n\n &:focus {\n outline: none;\n border-color: #007bff;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n }\n }\n\n .form-text {\n display: block;\n margin-top: 0.25rem;\n font-size: 12px;\n color: #6c757d;\n }\n\n .btn {\n padding: 0.5rem 1.5rem;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 600;\n transition: all 0.2s;\n\n &.btn-primary {\n background-color: #007bff;\n color: white;\n\n &:hover {\n background-color: #0056b3;\nY(-1px transform: translate);\n }\n\n &:active {\n transform: translateY(0);\n }\n }\n }\n}\n'},4456(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.CommandGeneratorService=void 0;const o=n(9430),s=n(389),a=n(7295),c=n(7451),l=n(5102),u=n(9048);let d=class{constructor(e,t,n,r){this.aiService=e,this.terminalContext=t,this.securityValidator=n,this.logger=r}async generateCommand(e){this.logger.info("Generating command",{request:e});try{const t=this.terminalContext.getCurrentContext(),n=this.terminalContext.getLastError(),r=this.buildEnhancedPrompt(e,t,n),i={messages:[{id:this.generateId(),role:s.MessageRole.SYSTEM,content:this.getSystemPrompt(),timestamp:new Date},{id:this.generateId(),role:s.MessageRole.USER,content:r,timestamp:new Date}],maxTokens:500,temperature:.3},o=await this.aiService.chat(i),a=this.parseAiResponse(o.message.content),c=await this.securityValidator.validateAndConfirm(a.command,a.explanation,t);if(!c.approved)throw new Error(`Command blocked by security validator: ${c.reason}`);return this.logger.info("Command generated successfully",{commandResponse:a}),a}catch(e){throw this.logger.error("Failed to generate command",e),e}}async generateFromSelection(e){const t={naturalLanguage:e,context:this.buildTerminalContext()};return this.generateCommand(t)}async generateFixForError(e){const t=this.terminalContext.getCurrentContext(),n={naturalLanguage:`修复错误:${e.message}`,context:{currentDirectory:t?.session.cwd,operatingSystem:t?.systemInfo.platform,shell:t?.session.shell,environment:t?.session.environment},constraints:{forbiddenCommands:["rm -rf /","sudo rm -rf /","format"]}};return this.generateCommand(n)}async generateSuggestions(e){const t=this.terminalContext.getCurrentContext(),n=`\n基于当前终端状态,为输入"${e}"生成3-5个可能的命令建议。\n\n当前上下文:\n- 目录:${t?.session.cwd}\n- Shell:${t?.session.shell}\n- 系统:${t?.systemInfo.platform}\n- 最近命令:${t?.recentCommands.slice(0,5).join(", ")}\n\n请直接返回命令列表,每行一个,不要解释。\n `;try{return(await this.aiService.chat({messages:[{id:this.generateId(),role:s.MessageRole.USER,content:n,timestamp:new Date}],maxTokens:200,temperature:.5})).message.content.split("\n").map(e=>e.trim()).filter(e=>e.length>0).slice(0,5)}catch(e){return this.logger.error("Failed to generate suggestions",e),[]}}buildEnhancedPrompt(e,t,n){let r=`请将以下自然语言描述转换为准确的命令:\n\n"${e.naturalLanguage}"\n\n`;if(t&&(r+="\n当前终端状态:\n",r+=`- 当前目录:${t.session.cwd}\n`,r+=`- Shell类型:${t.session.shell}\n`,r+=`- 操作系统:${t.systemInfo.platform}\n`,r+=`- 用户:${t.session.user}\n`,t.recentCommands.length>0&&(r+=`- 最近执行的命令:${t.recentCommands.slice(0,3).join(", ")}\n`),t.projectInfo&&(r+=`- 检测到项目类型:${t.projectInfo.type}\n`,r+=`- 项目根目录:${t.projectInfo.root}\n`)),n&&(r+="\n当前错误信息:\n",r+=`- 错误类型:${n.type}\n`,r+=`- 错误消息:${n.message}\n`,r+=`- 失败命令:${n.command}\n`,r+=`- 退出码:${n.exitCode}\n`),t?.session.environment){const e=["PATH","HOME","USER","PWD","SHELL"].filter(e=>t.session.environment[e]).map(e=>`${e}=${t.session.environment[e]}`).join(", ");e&&(r+=`\n重要环境变量:${e}\n`)}return e.constraints&&(r+="\n约束条件:\n",e.constraints.maxLength&&(r+=`- 命令最大长度:${e.constraints.maxLength}字符\n`),e.constraints.allowedCommands?.length&&(r+=`- 允许使用的命令:${e.constraints.allowedCommands.join(", ")}\n`),e.constraints.forbiddenCommands?.length&&(r+=`- 禁止使用的命令:${e.constraints.forbiddenCommands.join(", ")}\n`)),r+="\n请按照以下JSON格式返回:\n",r+="{\n",r+=' "command": "具体的命令",\n',r+=' "explanation": "命令的解释说明",\n',r+=' "confidence": 0.95\n',r+="}\n",r}getSystemPrompt(){return"你是一个专业的终端命令生成助手。你的任务是:\n\n1. 将自然语言描述转换为准确、高效的终端命令\n2. 考虑当前操作系统和Shell环境\n3. 优先使用安全、最佳实践的命令\n4. 提供清晰的命令解释\n5. 考虑当前工作目录和上下文环境\n\n请始终返回有效的命令,避免危险操作(如删除系统文件、格式化磁盘等)。\n如果无法确定准确的命令,请明确说明并提供替代方案。"}parseAiResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{command:e.command||"",explanation:e.explanation||"",confidence:e.confidence||.5,alternatives:e.alternatives||[]}}}catch(e){this.logger.warn("Failed to parse JSON response, fallback to text parsing",e)}const t=e.split("\n").map(e=>e.trim()).filter(e=>e);return{command:t[0]||"",explanation:t.slice(1).join(" ")||"AI生成的命令建议",confidence:.5}}buildTerminalContext(){const e=this.terminalContext.getCurrentContext();return{currentDirectory:e?.session.cwd,operatingSystem:e?.systemInfo.platform,shell:e?.session.shell,environment:e?.session.environment}}generateId(){return`${Date.now()}_${Math.random().toString(36).substr(2,9)}`}};d=r([(0,o.Injectable)({providedIn:"root"}),i("design:paramtypes",[a.AiAssistantService,c.TerminalContextService,l.SecurityValidatorService,u.LoggerService])],d),t.CommandGeneratorService=d},4524(e,t,n){"use strict";var r,i=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return o(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.fileFromPath=t.toFile=t.UnprocessableEntityError=t.PermissionDeniedError=t.InternalServerError=t.AuthenticationError=t.BadRequestError=t.RateLimitError=t.ConflictError=t.NotFoundError=t.APIUserAbortError=t.APIConnectionTimeoutError=t.APIConnectionError=t.APIError=t.AnthropicError=t.AI_PROMPT=t.HUMAN_PROMPT=t.Anthropic=void 0;const a=s(n(4293)),c=s(n(2854)),l=s(n(138)),u=s(n(410));class d extends a.APIClient{constructor({baseURL:e=a.readEnv("ANTHROPIC_BASE_URL"),apiKey:t=a.readEnv("ANTHROPIC_API_KEY")??null,authToken:n=a.readEnv("ANTHROPIC_AUTH_TOKEN")??null,...r}={}){const i={apiKey:t,authToken:n,...r,baseURL:e||"https://api.anthropic.com"};super({baseURL:i.baseURL,timeout:i.timeout??6e5,httpAgent:i.httpAgent,maxRetries:i.maxRetries,fetch:i.fetch}),this.completions=new u.Completions(this),this.messages=new u.Messages(this),this.beta=new u.Beta(this),this._options=i,this.apiKey=t,this.authToken=n}defaultQuery(){return this._options.defaultQuery}defaultHeaders(e){return{...super.defaultHeaders(e),"anthropic-version":"2023-06-01",...this._options.defaultHeaders}}validateHeaders(e,t){if(!(this.apiKey&&e["x-api-key"]||null===t["x-api-key"]||this.authToken&&e.authorization||null===t.authorization))throw new Error('Could not resolve authentication method. Expected either apiKey or authToken to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted')}authHeaders(e){const t=this.apiKeyAuth(e),n=this.bearerAuth(e);return null==t||a.isEmptyObj(t)?null==n||a.isEmptyObj(n)?{}:n:t}apiKeyAuth(e){return null==this.apiKey?{}:{"X-Api-Key":this.apiKey}}bearerAuth(e){return null==this.authToken?{}:{Authorization:`Bearer ${this.authToken}`}}}t.Anthropic=d,r=d,d.Anthropic=r,d.HUMAN_PROMPT="\n\nHuman:",d.AI_PROMPT="\n\nAssistant:",d.AnthropicError=c.AnthropicError,d.APIError=c.APIError,d.APIConnectionError=c.APIConnectionError,d.APIConnectionTimeoutError=c.APIConnectionTimeoutError,d.APIUserAbortError=c.APIUserAbortError,d.NotFoundError=c.NotFoundError,d.ConflictError=c.ConflictError,d.RateLimitError=c.RateLimitError,d.BadRequestError=c.BadRequestError,d.AuthenticationError=c.AuthenticationError,d.InternalServerError=c.InternalServerError,d.PermissionDeniedError=c.PermissionDeniedError,d.UnprocessableEntityError=c.UnprocessableEntityError,d.toFile=l.toFile,d.fileFromPath=l.fileFromPath,t.HUMAN_PROMPT=d.HUMAN_PROMPT,t.AI_PROMPT=d.AI_PROMPT,t.AnthropicError=c.AnthropicError,t.APIError=c.APIError,t.APIConnectionError=c.APIConnectionError,t.APIConnectionTimeoutError=c.APIConnectionTimeoutError,t.APIUserAbortError=c.APIUserAbortError,t.NotFoundError=c.NotFoundError,t.ConflictError=c.ConflictError,t.RateLimitError=c.RateLimitError,t.BadRequestError=c.BadRequestError,t.AuthenticationError=c.AuthenticationError,t.InternalServerError=c.InternalServerError,t.PermissionDeniedError=c.PermissionDeniedError,t.UnprocessableEntityError=c.UnprocessableEntityError,t.toFile=l.toFile,t.fileFromPath=l.fileFromPath,function(e){e.Completions=u.Completions,e.Messages=u.Messages,e.Beta=u.Beta}(d=t.Anthropic||(t.Anthropic={})),(t=e.exports=d).default=d},4530(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.schedulePromise=void 0;var r=n(9724),i=n(2071),o=n(5455);t.schedulePromise=function(e,t){return r.innerFrom(e).pipe(o.subscribeOn(t),i.observeOn(t))}},4606(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.LoadingSpinnerComponent=void 0;const o=n(9430);let s=class{constructor(){this.size="medium",this.message=""}};r([(0,o.Input)(),i("design:type",String)],s.prototype,"size",void 0),r([(0,o.Input)(),i("design:type",String)],s.prototype,"message",void 0),s=r([(0,o.Component)({selector:"app-loading-spinner",template:'\n <div class="spinner-container" [ngClass]="size">\n <div class="spinner"></div>\n <p *ngIf="message" class="spinner-message">{{ message }}</p>\n </div>\n ',styles:["\n .spinner-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n\n &.small {\n padding: 1rem;\n\n .spinner {\n width: 24px;\n height: 24px;\n border-width: 2px;\n }\n\n .spinner-message {\n font-size: 0.75rem;\n margin-top: 0.5rem;\n }\n }\n\n &.medium {\n .spinner {\n width: 36px;\n height: 36px;\n border-width: 3px;\n }\n }\n\n &.large {\n .spinner {\n width: 48px;\n height: 48px;\n border-width: 4px;\n }\n }\n }\n\n .spinner {\n border: 3px solid var(--ai-border);\n border-top-color: var(--ai-primary);\n border-radius: 50%;\n animation: spin 0.8s linear infinite;\n }\n\n .spinner-message {\n margin-top: 1rem;\n color: var(--ai-secondary);\n font-size: 0.875rem;\n }\n\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n "]})],s),t.LoadingSpinnerComponent=s},4613(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.flatMap=void 0;var r=n(7478);t.flatMap=r.mergeMap},4636(e,t,n){var r;e.exports=(r=n(9021),function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,s=t.algo,a=[];!function(){for(var t=0;t<64;t++)a[t]=4294967296*e.abs(e.sin(t+1))|0}();var c=s.MD5=o.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=t+n,i=e[r];e[r]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o=this._hash.words,s=e[t+0],c=e[t+1],p=e[t+2],h=e[t+3],m=e[t+4],g=e[t+5],v=e[t+6],b=e[t+7],y=e[t+8],w=e[t+9],_=e[t+10],x=e[t+11],S=e[t+12],O=e[t+13],P=e[t+14],k=e[t+15],C=o[0],R=o[1],A=o[2],E=o[3];C=l(C,R,A,E,s,7,a[0]),E=l(E,C,R,A,c,12,a[1]),A=l(A,E,C,R,p,17,a[2]),R=l(R,A,E,C,h,22,a[3]),C=l(C,R,A,E,m,7,a[4]),E=l(E,C,R,A,g,12,a[5]),A=l(A,E,C,R,v,17,a[6]),R=l(R,A,E,C,b,22,a[7]),C=l(C,R,A,E,y,7,a[8]),E=l(E,C,R,A,w,12,a[9]),A=l(A,E,C,R,_,17,a[10]),R=l(R,A,E,C,x,22,a[11]),C=l(C,R,A,E,S,7,a[12]),E=l(E,C,R,A,O,12,a[13]),A=l(A,E,C,R,P,17,a[14]),C=u(C,R=l(R,A,E,C,k,22,a[15]),A,E,c,5,a[16]),E=u(E,C,R,A,v,9,a[17]),A=u(A,E,C,R,x,14,a[18]),R=u(R,A,E,C,s,20,a[19]),C=u(C,R,A,E,g,5,a[20]),E=u(E,C,R,A,_,9,a[21]),A=u(A,E,C,R,k,14,a[22]),R=u(R,A,E,C,m,20,a[23]),C=u(C,R,A,E,w,5,a[24]),E=u(E,C,R,A,P,9,a[25]),A=u(A,E,C,R,h,14,a[26]),R=u(R,A,E,C,y,20,a[27]),C=u(C,R,A,E,O,5,a[28]),E=u(E,C,R,A,p,9,a[29]),A=u(A,E,C,R,b,14,a[30]),C=d(C,R=u(R,A,E,C,S,20,a[31]),A,E,g,4,a[32]),E=d(E,C,R,A,y,11,a[33]),A=d(A,E,C,R,x,16,a[34]),R=d(R,A,E,C,P,23,a[35]),C=d(C,R,A,E,c,4,a[36]),E=d(E,C,R,A,m,11,a[37]),A=d(A,E,C,R,b,16,a[38]),R=d(R,A,E,C,_,23,a[39]),C=d(C,R,A,E,O,4,a[40]),E=d(E,C,R,A,s,11,a[41]),A=d(A,E,C,R,h,16,a[42]),R=d(R,A,E,C,v,23,a[43]),C=d(C,R,A,E,w,4,a[44]),E=d(E,C,R,A,S,11,a[45]),A=d(A,E,C,R,k,16,a[46]),C=f(C,R=d(R,A,E,C,p,23,a[47]),A,E,s,6,a[48]),E=f(E,C,R,A,b,10,a[49]),A=f(A,E,C,R,P,15,a[50]),R=f(R,A,E,C,g,21,a[51]),C=f(C,R,A,E,S,6,a[52]),E=f(E,C,R,A,h,10,a[53]),A=f(A,E,C,R,_,15,a[54]),R=f(R,A,E,C,c,21,a[55]),C=f(C,R,A,E,y,6,a[56]),E=f(E,C,R,A,k,10,a[57]),A=f(A,E,C,R,v,15,a[58]),R=f(R,A,E,C,O,21,a[59]),C=f(C,R,A,E,m,6,a[60]),E=f(E,C,R,A,x,10,a[61]),A=f(A,E,C,R,p,15,a[62]),R=f(R,A,E,C,w,21,a[63]),o[0]=o[0]+C|0,o[1]=o[1]+R|0,o[2]=o[2]+A|0,o[3]=o[3]+E|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;n[i>>>5]|=128<<24-i%32;var o=e.floor(r/4294967296),s=r;n[15+(i+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),n[14+(i+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),t.sigBytes=4*(n.length+1),this._process();for(var a=this._hash,c=a.words,l=0;l<4;l++){var u=c[l];c[l]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}return a},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,n,r,i,o,s){var a=e+(t&n|~t&r)+i+s;return(a<<o|a>>>32-o)+t}function u(e,t,n,r,i,o,s){var a=e+(t&r|n&~r)+i+s;return(a<<o|a>>>32-o)+t}function d(e,t,n,r,i,o,s){var a=e+(t^n^r)+i+s;return(a<<o|a>>>32-o)+t}function f(e,t,n,r,i,o,s){var a=e+(n^(t|~r))+i+s;return(a<<o|a>>>32-o)+t}t.MD5=o._createHelper(c),t.HmacMD5=o._createHmacHelper(c)}(Math),r.MD5)},4697(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.CommandSuggestionComponent=void 0;const o=n(9430),s=n(2607),a=n(2794);let c=class{constructor(){this.inputText="",this.suggestionSelected=new o.EventEmitter,this.closed=new o.EventEmitter,this.suggestions=[],this.inputSubject=new s.Subject,this.destroy$=new s.Subject}ngOnInit(){this.inputSubject.pipe((0,a.debounceTime)(500),(0,a.takeUntil)(this.destroy$)).subscribe(e=>{this.generateSuggestions(e)})}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}onInputChange(e){this.inputSubject.next(e)}generateSuggestions(e){this.suggestions=[]}selectSuggestion(e){this.suggestionSelected.emit(e),this.close()}close(){this.closed.emit(),this.suggestions=[]}};r([(0,o.Input)(),i("design:type",Object)],c.prototype,"inputText",void 0),r([(0,o.Output)(),i("design:type",Object)],c.prototype,"suggestionSelected",void 0),r([(0,o.Output)(),i("design:type",Object)],c.prototype,"closed",void 0),c=r([(0,o.Component)({selector:"app-command-suggestion",template:'\n <div class="command-suggestion" *ngIf="suggestions.length > 0">\n <div class="suggestion-header">\n <i class="icon-lightbulb"></i>\n <span>AI命令建议</span>\n <button class="btn-close" (click)="close()">\n <i class="icon-x"></i>\n </button>\n </div>\n <div class="suggestion-list">\n <div\n *ngFor="let suggestion of suggestions"\n class="suggestion-item"\n (click)="selectSuggestion(suggestion)">\n <div class="suggestion-command">\n <code>{{ suggestion.command }}</code>\n </div>\n <div class="suggestion-explanation">\n {{ suggestion.explanation }}\n </div>\n <div class="suggestion-confidence">\n <span class="confidence-bar" [style.width.%]="suggestion.confidence * 100"></span>\n <span class="confidence-text">{{ (suggestion.confidence * 100).toFixed(0) }}%</span>\n </div>\n </div>\n </div>\n </div>\n ',styles:["\n .command-suggestion {\n background: var(--ai-bg-primary);\n border: 1px solid var(--ai-border);\n border-radius: 0.5rem;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n max-width: 600px;\n margin: 0.5rem auto;\n }\n .suggestion-header {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.75rem 1rem;\n background: var(--ai-bg-secondary);\n border-bottom: 1px solid var(--ai-border);\n }\n .suggestion-list {\n max-height: 300px;\n overflow-y: auto;\n }\n .suggestion-item {\n padding: 1rem;\n border-bottom: 1px solid var(--ai-border);\n cursor: pointer;\n transition: background-color 0.2s;\n }\n .suggestion-item:hover {\n background-color: var(--ai-bg-secondary);\n }\n .suggestion-item:last-child {\n border-bottom: none;\n }\n .suggestion-command {\n font-family: monospace;\n margin-bottom: 0.5rem;\n }\n .suggestion-confidence {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-top: 0.5rem;\n }\n .confidence-bar {\n height: 4px;\n background: var(--ai-primary);\n border-radius: 2px;\n }\n "]})],c),t.CommandSuggestionComponent=c},4708(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SequenceError=void 0;var r=n(9619);t.SequenceError=r.createErrorClass(function(e){return function(t){e(this),this.name="SequenceError",this.message=t}})},4725(e,t,n){var r,i,o;e.exports=(r=n(9021),o=(i=r).lib.WordArray,i.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var n=e.words,r=e.sigBytes,i=t?this._safe_map:this._map;e.clamp();for(var o=[],s=0;s<r;s+=3)for(var a=(n[s>>>2]>>>24-s%4*8&255)<<16|(n[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|n[s+2>>>2]>>>24-(s+2)%4*8&255,c=0;c<4&&s+.75*c<r;c++)o.push(i.charAt(a>>>6*(3-c)&63));var l=i.charAt(64);if(l)for(;o.length%4;)o.push(l);return o.join("")},parse:function(e,t){void 0===t&&(t=!0);var n=e.length,r=t?this._safe_map:this._map,i=this._reverseMap;if(!i){i=this._reverseMap=[];for(var s=0;s<r.length;s++)i[r.charCodeAt(s)]=s}var a=r.charAt(64);if(a){var c=e.indexOf(a);-1!==c&&(n=c)}return function(e,t,n){for(var r=[],i=0,s=0;s<t;s++)if(s%4){var a=n[e.charCodeAt(s-1)]<<s%4*2|n[e.charCodeAt(s)]>>>6-s%4*2;r[i>>>2]|=a<<24-i%4*8,i++}return o.create(r,i)}(e,n,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_safe_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"},r.enc.Base64url)},4728(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ChatInputComponent=void 0;const o=n(9430),s=n(2607),a=n(2794);let c=class{constructor(){this.disabled=!1,this.placeholder="输入您的问题或描述要执行的命令...",this.send=new o.EventEmitter,this.inputValue="",this.inputSubject=new s.Subject,this.destroy$=new s.Subject,this.isComposing=!1}ngOnInit(){this.inputSubject.pipe((0,a.debounceTime)(300),(0,a.takeUntil)(this.destroy$)).subscribe(e=>{this.onInputChange(e)})}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}onInputChange(e){}onKeydown(e){"Enter"!==e.key||e.shiftKey||this.isComposing||(e.preventDefault(),this.submit())}onInput(e){const t=e.target;this.inputValue=t.value,this.inputSubject.next(this.inputValue),this.autoResize()}onCompositionStart(){this.isComposing=!0}onCompositionEnd(){this.isComposing=!1,this.autoResize()}submit(){const e=this.inputValue.trim();e&&!this.disabled&&(this.send.emit(e),this.inputValue="",setTimeout(()=>this.autoResize(),0),this.textInput?.nativeElement.focus())}clear(){this.inputValue="",this.autoResize(),this.textInput?.nativeElement.focus()}autoResize(){if(this.textInput?.nativeElement){const e=this.textInput.nativeElement;e.style.height="auto",e.style.height=Math.min(e.scrollHeight,120)+"px"}}getCharCount(){return this.inputValue.length}getCharLimit(){return 4e3}isNearLimit(){return this.getCharCount()>.8*this.getCharLimit()}isOverLimit(){return this.getCharCount()>this.getCharLimit()}focus(){this.textInput?.nativeElement.focus()}};r([(0,o.Input)(),i("design:type",Object)],c.prototype,"disabled",void 0),r([(0,o.Input)(),i("design:type",Object)],c.prototype,"placeholder",void 0),r([(0,o.Output)(),i("design:type",Object)],c.prototype,"send",void 0),r([(0,o.ViewChild)("textInput",{static:!1}),i("design:type",o.ElementRef)],c.prototype,"textInput",void 0),c=r([(0,o.Component)({selector:"app-chat-input",template:n(6126),styles:[n(8817)]})],c),t.ChatInputComponent=c},4772(e,t,n){"use strict";var r,i=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncAction=void 0;var o=n(1666),s=n(8284),a=n(4830),c=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.scheduler=t,r.work=n,r.pending=!1,r}return i(t,e),t.prototype.schedule=function(e,t){var n;if(void 0===t&&(t=0),this.closed)return this;this.state=e;var r=this.id,i=this.scheduler;return null!=r&&(this.id=this.recycleAsyncId(i,r,t)),this.pending=!0,this.delay=t,this.id=null!==(n=this.id)&&void 0!==n?n:this.requestAsyncId(i,this.id,t),this},t.prototype.requestAsyncId=function(e,t,n){return void 0===n&&(n=0),s.intervalProvider.setInterval(e.flush.bind(e,this),n)},t.prototype.recycleAsyncId=function(e,t,n){if(void 0===n&&(n=0),null!=n&&this.delay===n&&!1===this.pending)return t;null!=t&&s.intervalProvider.clearInterval(t)},t.prototype.execute=function(e,t){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var n=this._execute(e,t);if(n)return n;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(e,t){var n,r=!1;try{this.work(e)}catch(e){r=!0,n=e||new Error("Scheduled action threw falsy error")}if(r)return this.unsubscribe(),n},t.prototype.unsubscribe=function(){if(!this.closed){var t=this.id,n=this.scheduler,r=n.actions;this.work=this.state=this.scheduler=null,this.pending=!1,a.arrRemove(r,this),null!=t&&(this.id=this.recycleAsyncId(n,t,null)),this.delay=null,e.prototype.unsubscribe.call(this)}},t}(o.Action);t.AsyncAction=c},4808(e,t){"use strict";var n=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},r=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.timeoutProvider=void 0,t.timeoutProvider={setTimeout:function(e,i){for(var o=[],s=2;s<arguments.length;s++)o[s-2]=arguments[s];var a=t.timeoutProvider.delegate;return(null==a?void 0:a.setTimeout)?a.setTimeout.apply(a,r([e,i],n(o))):setTimeout.apply(void 0,r([e,i],n(o)))},clearTimeout:function(e){var n=t.timeoutProvider.delegate;return((null==n?void 0:n.clearTimeout)||clearTimeout)(e)},delegate:void 0}},4830(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.arrRemove=void 0,t.arrRemove=function(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}},4855(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.AiSettingsTabProvider=void 0;const i=n(9430),o=n(3262),s=n(5924);let a=class extends o.SettingsTabProvider{constructor(){super(...arguments),this.id="ai-assistant",this.icon="bi-robot",this.title="AI Assistant"}getComponentType(){return s.AiSettingsTabComponent}};a=r([(0,i.Injectable)()],a),t.AiSettingsTabProvider=a},4880(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.throttle=void 0;var r=n(5212),i=n(7214),o=n(9724);t.throttle=function(e,t){return r.operate(function(n,r){var s=null!=t?t:{},a=s.leading,c=void 0===a||a,l=s.trailing,u=void 0!==l&&l,d=!1,f=null,p=null,h=!1,m=function(){null==p||p.unsubscribe(),p=null,u&&(b(),h&&r.complete())},g=function(){p=null,h&&r.complete()},v=function(t){return p=o.innerFrom(e(t)).subscribe(i.createOperatorSubscriber(r,m,g))},b=function(){if(d){d=!1;var e=f;f=null,r.next(e),!h&&v(e)}};n.subscribe(i.createOperatorSubscriber(r,function(e){d=!0,f=e,(!p||p.closed)&&(c?b():v(e))},function(){h=!0,(!(u&&d&&p)||p.closed)&&r.complete()}))})}},4885(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.empty=t.EMPTY=void 0;var r=n(8051);t.EMPTY=new r.Observable(function(e){return e.complete()}),t.empty=function(e){return e?function(e){return new r.Observable(function(t){return e.schedule(function(){return t.complete()})})}(e):t.EMPTY}},4891(e,t){"use strict";function n(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}Object.defineProperty(t,"__esModule",{value:!0}),t.iterator=t.getSymbolIterator=void 0,t.getSymbolIterator=n,t.iterator=n()},4905(e,t,n){var r;e.exports=(r=n(9021),n(7165),r.pad.Iso10126={pad:function(e,t){var n=4*t,i=n-e.sigBytes%n;e.concat(r.lib.WordArray.random(i-1)).concat(r.lib.WordArray.create([i<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)},4948(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.combineLatest=void 0;var o=n(8246),s=n(5212),a=n(7652),c=n(3916),l=n(1898),u=n(6404);t.combineLatest=function e(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var d=u.popResultSelector(t);return d?l.pipe(e.apply(void 0,i([],r(t))),c.mapOneOrManyArgs(d)):s.operate(function(e,n){o.combineLatestInit(i([e],r(a.argsOrArgArray(t))))(n)})}},4950(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.scheduleArray=void 0;var r=n(8051);t.scheduleArray=function(e,t){return new r.Observable(function(n){var r=0;return t.schedule(function(){r===e.length?n.complete():(n.next(e[r++]),n.closed||this.schedule())})})}},4975(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isArrayLike=void 0,t.isArrayLike=function(e){return e&&"number"==typeof e.length&&"function"!=typeof e}},5019(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.materialize=void 0;var r=n(1245),i=n(5212),o=n(7214);t.materialize=function(){return i.operate(function(e,t){e.subscribe(o.createOperatorSubscriber(t,function(e){t.next(r.Notification.createNext(e))},function(){t.next(r.Notification.createComplete()),t.complete()},function(e){t.next(r.Notification.createError(e)),t.complete()}))})}},5084(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ConfigProviderService=void 0;const o=n(9430),s=n(2607),a=n(9048),c={enabled:!0,defaultProvider:"openai",chatHistoryEnabled:!0,maxChatHistory:100,autoSaveChat:!0,theme:"auto",language:"zh-CN",logLevel:"info",security:{enablePasswordProtection:!1,consentExpiryDays:30,maxConsentAge:30,enableRiskAssessment:!0,autoApproveLowRisk:!0,promptForMediumRisk:!0,requirePasswordForHighRisk:!0,dangerousPatterns:["rm -rf /","sudo rm -rf /","format","dd if=","> /dev/null","fork\\("],allowedCommands:[],forbiddenCommands:[]},providers:{},hotkeys:{openChat:"Ctrl-Shift-A",generateCommand:"Ctrl-Shift-G",explainCommand:"Ctrl-Shift-E"},ui:{showTooltips:!0,compactMode:!1,fontSize:14}};let l=class{constructor(e){this.logger=e,this.config={...c},this.configChange$=new s.Subject,this.loadConfig()}loadConfig(){try{const e=localStorage.getItem("ai-assistant-config");if(e){const t=JSON.parse(e);this.config={...c,...t},this.logger.info("Configuration loaded from storage")}else this.logger.info("No stored configuration found, using defaults")}catch(e){this.logger.error("Failed to load configuration",e),this.config={...c}}}saveConfig(){try{localStorage.setItem("ai-assistant-config",JSON.stringify(this.config)),this.logger.debug("Configuration saved to storage")}catch(e){this.logger.error("Failed to save configuration",e)}}getConfig(){return{...this.config}}setConfig(e){this.config={...this.config,...e},this.saveConfig(),this.configChange$.next({key:"*",value:this.config}),this.logger.info("Configuration updated")}get(e,t){const n=e.split(".");let r=this.config;for(const e of n){if(null==r)return t;r=r[e]}return void 0!==r?r:t}set(e,t){const n=e.split("."),r=n.pop();let i=this.config;for(const e of n)e in i&&"object"==typeof i[e]||(i[e]={}),i=i[e];i[r]=t,this.saveConfig(),this.configChange$.next({key:e,value:t}),this.logger.debug("Configuration item updated",{key:e,value:t})}getProviderConfig(e){return this.config.providers[e]||null}setProviderConfig(e,t){this.config.providers[e]=t,this.saveConfig(),this.configChange$.next({key:`providers.${e}`,value:t}),this.logger.info("Provider configuration updated",{provider:e})}deleteProviderConfig(e){delete this.config.providers[e],this.saveConfig(),this.configChange$.next({key:`providers.${e}`,value:null}),this.logger.info("Provider configuration deleted",{provider:e})}getAllProviderConfigs(){return{...this.config.providers}}getDefaultProvider(){return this.config.defaultProvider}setDefaultProvider(e){this.config.defaultProvider=e,this.saveConfig(),this.configChange$.next({key:"defaultProvider",value:e}),this.logger.info("Default provider changed",{provider:e})}getSecurityConfig(){return{...this.config.security}}updateSecurityConfig(e){this.config.security={...this.config.security,...e},this.saveConfig(),this.configChange$.next({key:"security",value:this.config.security}),this.logger.info("Security configuration updated")}isEnabled(){return this.config.enabled}setEnabled(e){this.config.enabled=e,this.saveConfig(),this.configChange$.next({key:"enabled",value:e}),this.logger.info("AI Assistant enabled state changed",{enabled:e})}getLogLevel(){return this.config.logLevel}setLogLevel(e){this.config.logLevel=e,this.saveConfig(),this.configChange$.next({key:"logLevel",value:e}),this.logger.info("Log level changed",{level:e})}reset(){this.config={...c},this.saveConfig(),this.configChange$.next({key:"*",value:this.config}),this.logger.info("Configuration reset to defaults")}onConfigChange(){return this.configChange$.asObservable()}exportConfig(){const e={...this.config};return e.providers&&Object.keys(e.providers).forEach(t=>{e.providers[t].apiKey&&(e.providers[t].apiKey="***MASKED***")}),JSON.stringify(e,null,2)}importConfig(e){try{const t=JSON.parse(e);this.setConfig(t),this.logger.info("Configuration imported successfully")}catch(e){throw this.logger.error("Failed to import configuration",e),new Error("Invalid configuration format")}}validateConfig(){const e=[];return this.config.providers[this.config.defaultProvider]||e.push("Default provider configuration not found"),this.config.security.consentExpiryDays<1&&e.push("Consent expiry days must be at least 1"),this.config.maxChatHistory<0&&e.push("Max chat history must be non-negative"),{valid:0===e.length,errors:e}}};l=r([(0,o.Injectable)({providedIn:"root"}),i("design:paramtypes",[a.LoggerService])],l),t.ConfigProviderService=l},5102(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.SecurityValidatorService=void 0;const o=n(9430),s=n(8785),a=n(2561),c=n(6353),l=n(7120),u=n(9048);let d=class{constructor(e,t,n,r){this.riskAssessment=e,this.consentManager=t,this.passwordManager=n,this.logger=r}async validateAndConfirm(e,t,n){this.logger.info("Validating command",{command:e});try{const n=await this.riskAssessment.performAssessment(e),r=n.level;if(this.logger.debug("Risk assessment completed",{riskLevel:r,score:n.score}),await this.consentManager.hasConsent(e,r))return this.logger.info("User consent found, skipping confirmation",{command:e}),{approved:!0,riskLevel:r,skipConfirmation:!0,timestamp:new Date};if(r===s.RiskLevel.CRITICAL||r===s.RiskLevel.HIGH){if(this.logger.warn("High risk command detected, requesting password",{command:e}),!await this.passwordManager.requestPassword())return{approved:!1,riskLevel:r,reason:"Invalid password",timestamp:new Date}}else if(r===s.RiskLevel.MEDIUM&&(this.logger.info("Medium risk command, requesting user confirmation",{command:e}),!await this.consentManager.requestConsent(e,t,r)))return{approved:!1,riskLevel:r,reason:"User cancelled",timestamp:new Date};return await this.consentManager.storeConsent(e,r),this.logger.info("Command validation approved",{command:e,riskLevel:r}),{approved:!0,riskLevel:r,timestamp:new Date}}catch(e){return this.logger.error("Command validation failed",e),{approved:!1,riskLevel:s.RiskLevel.HIGH,reason:e instanceof Error?e.message:"Validation error",timestamp:new Date}}}async isCommandSafe(e){return(await this.riskAssessment.performAssessment(e)).level===s.RiskLevel.LOW}async getRiskLevel(e){return this.riskAssessment.assessRisk(e)}async requiresConfirmation(e){const t=await this.riskAssessment.performAssessment(e);return!await this.consentManager.hasConsent(e,t.level)&&(t.level===s.RiskLevel.MEDIUM||t.level===s.RiskLevel.HIGH||t.level===s.RiskLevel.CRITICAL)}async clearAllConsents(){await this.consentManager.clearAllConsents(),this.logger.info("All user consents cleared")}async getSecurityStats(){return{totalValidations:await this.consentManager.getTotalValidations(),activeConsents:await this.consentManager.getActiveConsentsCount(),passwordAttempts:await this.passwordManager.getTotalAttempts(),failedAttempts:await this.passwordManager.getFailedAttempts()}}};d=r([(0,o.Injectable)({providedIn:"root"}),i("design:paramtypes",[a.RiskAssessmentService,c.ConsentManagerService,l.PasswordManagerService,u.LoggerService])],d),t.SecurityValidatorService=d},5128(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.groupBy=void 0;var r=n(8051),i=n(9724),o=n(6808),s=n(5212),a=n(7214);t.groupBy=function(e,t,n,c){return s.operate(function(s,l){var u;t&&"function"!=typeof t?(n=t.duration,u=t.element,c=t.connector):u=t;var d=new Map,f=function(e){d.forEach(e),e(l)},p=function(e){return f(function(t){return t.error(e)})},h=0,m=!1,g=new a.OperatorSubscriber(l,function(t){try{var s=e(t),f=d.get(s);if(!f){d.set(s,f=c?c():new o.Subject);var v=(y=s,w=f,(_=new r.Observable(function(e){h++;var t=w.subscribe(e);return function(){t.unsubscribe(),0===--h&&m&&g.unsubscribe()}})).key=y,_);if(l.next(v),n){var b=a.createOperatorSubscriber(f,function(){f.complete(),null==b||b.unsubscribe()},void 0,void 0,function(){return d.delete(s)});g.add(i.innerFrom(n(v)).subscribe(b))}}f.next(u?u(t):t)}catch(e){p(e)}var y,w,_},function(){return f(function(e){return e.complete()})},p,function(){return d.clear()},function(){return m=!0,0===h});s.subscribe(g)})}},5130(e,t,n){"use strict";var r,i=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncSubject=void 0;var o=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._value=null,t._hasValue=!1,t._isComplete=!1,t}return i(t,e),t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t._hasValue,i=t._value,o=t.thrownError,s=t.isStopped,a=t._isComplete;n?e.error(o):(s||a)&&(r&&e.next(i),e.complete())},t.prototype.next=function(e){this.isStopped||(this._value=e,this._hasValue=!0)},t.prototype.complete=function(){var t=this,n=t._hasValue,r=t._value;t._isComplete||(this._isComplete=!0,n&&e.prototype.next.call(this,r),e.prototype.complete.call(this))},t}(n(6808).Subject);t.AsyncSubject=o},5156(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.windowWhen=void 0;var r=n(6808),i=n(5212),o=n(7214),s=n(9724);t.windowWhen=function(e){return i.operate(function(t,n){var i,a,c=function(e){i.error(e),n.error(e)},l=function(){var t;null==a||a.unsubscribe(),null==i||i.complete(),i=new r.Subject,n.next(i.asObservable());try{t=s.innerFrom(e())}catch(e){return void c(e)}t.subscribe(a=o.createOperatorSubscriber(n,l,l,c))};l(),t.subscribe(o.createOperatorSubscriber(n,function(e){return i.next(e)},function(){i.complete(),n.complete()},c,function(){null==a||a.unsubscribe(),i=null}))})}},5212(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.operate=t.hasLift=void 0;var r=n(281);function i(e){return r.isFunction(null==e?void 0:e.lift)}t.hasLift=i,t.operate=function(e){return function(t){if(i(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw new TypeError("Unable to lift unknown Observable type")}}},5279(e,t,n){"use strict";var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.takeLast=void 0;var i=n(4885),o=n(5212),s=n(7214);t.takeLast=function(e){return e<=0?function(){return i.EMPTY}:o.operate(function(t,n){var i=[];t.subscribe(s.createOperatorSubscriber(n,function(t){i.push(t),e<i.length&&i.shift()},function(){var e,t;try{for(var o=r(i),s=o.next();!s.done;s=o.next()){var a=s.value;n.next(a)}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}n.complete()},void 0,function(){i=null}))})}},5345(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isValidDate=void 0,t.isValidDate=function(e){return e instanceof Date&&!isNaN(e)}},5362(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.zipAll=void 0;var r=n(1415),i=n(719);t.zipAll=function(e){return i.joinAllInternals(r.zip,e)}},5393(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ChatSettingsComponent=void 0;const o=n(9430),s=n(5084),a=n(9048);let c=class{constructor(e,t){this.config=e,this.logger=t,this.settings={chatHistoryEnabled:!0,maxChatHistory:100,autoSaveChat:!0,theme:"auto",fontSize:14,compactMode:!1,showTimestamps:!0,showAvatars:!0,enterToSend:!0,soundEnabled:!0},this.themes=[{value:"auto",label:"跟随系统"},{value:"light",label:"浅色主题"},{value:"dark",label:"深色主题"}],this.fontSizes=[12,14,16,18,20]}ngOnInit(){this.loadSettings()}loadSettings(){this.settings.chatHistoryEnabled=this.config.get("chatHistoryEnabled",!0),this.settings.maxChatHistory=this.config.get("maxChatHistory",100),this.settings.autoSaveChat=this.config.get("autoSaveChat",!0),this.settings.theme=this.config.get("theme","auto"),this.settings.fontSize=this.config.get("ui.fontSize",14),this.settings.compactMode=this.config.get("ui.compactMode",!1),this.settings.showTimestamps=this.config.get("ui.showTimestamps",!0),this.settings.showAvatars=this.config.get("ui.showAvatars",!0),this.settings.enterToSend=this.config.get("ui.enterToSend",!0),this.settings.soundEnabled=this.config.get("ui.soundEnabled",!0)}saveSetting(e,t){try{this.config.set(e,t),this.logger.debug("Chat setting saved",{key:e,value:t})}catch(e){this.logger.error("Failed to save chat setting",e)}}updateTheme(e){this.settings.theme=e,this.saveSetting("theme",e),this.applyTheme(e)}applyTheme(e){const t=document.body;t.classList.remove("light-theme","dark-theme"),"light"===e?t.classList.add("light-theme"):"dark"===e&&t.classList.add("dark-theme")}updateFontSize(e){this.settings.fontSize=e,this.saveSetting("ui.fontSize",e),document.documentElement.style.setProperty("--chat-font-size",`${e}px`)}toggleCompactMode(){this.settings.compactMode=!this.settings.compactMode,this.saveSetting("ui.compactMode",this.settings.compactMode),document.documentElement.classList.toggle("compact-chat",this.settings.compactMode)}clearChatHistory(){confirm("确定要清空所有聊天记录吗?此操作不可恢复。")&&(localStorage.removeItem("ai-assistant-chat-history"),this.logger.info("Chat history cleared"),alert("聊天记录已清空"))}exportSettings(){const e={chatSettings:this.settings,exportTime:(new Date).toISOString()},t=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),n=window.URL.createObjectURL(t),r=document.createElement("a");r.href=n,r.download=`chat-settings-${(new Date).toISOString().slice(0,10)}.json`,r.click(),window.URL.revokeObjectURL(n)}resetToDefaults(){confirm("确定要重置所有设置为默认值吗?")&&(this.settings={chatHistoryEnabled:!0,maxChatHistory:100,autoSaveChat:!0,theme:"auto",fontSize:14,compactMode:!1,showTimestamps:!0,showAvatars:!0,enterToSend:!0,soundEnabled:!0},Object.entries(this.settings).forEach(([e,t])=>{const n=e.includes(".")?e:`ui.${e}`;this.saveSetting(n,t)}),this.logger.info("Chat settings reset to defaults"),alert("设置已重置为默认值"))}};c=r([(0,o.Component)({selector:"app-chat-settings",template:n(5547),styles:[n(2136)]}),i("design:paramtypes",[s.ConfigProviderService,a.LoggerService])],c),t.ChatSettingsComponent=c},5426(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r='<div class="provider-config">\n <h3>AI提供商配置</h3>\n\n \x3c!-- 可用提供商列表 --\x3e\n <div class="providers-list">\n <div\n *ngFor="let providerName of Object.keys(providerTemplates)"\n class="provider-item"\n [class.configured]="hasConfig(providerName)">\n <div class="provider-info">\n <h4>{{ providerTemplates[providerName].name }}</h4>\n <p>{{ providerTemplates[providerName].description }}</p>\n </div>\n <div class="provider-actions">\n <button\n *ngIf="!hasConfig(providerName)"\n class="btn btn-primary"\n (click)="addProvider(providerName)">\n <i class="icon-plus"></i>\n 添加\n </button>\n <button\n *ngIf="hasConfig(providerName)"\n class="btn btn-secondary"\n (click)="testConnection(providerName)">\n <i class="icon-test"></i>\n 测试\n </button>\n <button\n *ngIf="hasConfig(providerName)"\n class="btn btn-danger"\n (click)="removeProvider(providerName)">\n <i class="icon-trash"></i>\n 删除\n </button>\n </div>\n\n \x3c!-- 配置表单 --\x3e\n <div *ngIf="hasConfig(providerName)" class="config-form">\n <div class="form-row">\n <div class="form-group">\n <label>显示名称</label>\n <input\n type="text"\n class="form-control"\n [(ngModel)]="configs[providerName].displayName">\n </div>\n <div class="form-group">\n <label>状态</label>\n <div class="toggle-switch">\n <input\n type="checkbox"\n [id]="\'enabled-\' + providerName"\n [checked]="configs[providerName].enabled"\n (change)="toggleProviderEnabled(providerName)">\n <label [for]="\'enabled-\' + providerName]">\n {{ configs[providerName].enabled ? \'已启用\' : \'已禁用\' }}\n </label>\n </div>\n </div>\n </div>\n\n <div *ngFor="let field of providerTemplates[providerName].fields" class="form-group">\n <label>\n {{ field.label }}\n <span *ngIf="isRequired(field)" class="required">*</span>\n </label>\n <input\n *ngIf="getFieldType(field) === \'text\'"\n [type]="isPasswordField(field) ? \'password\' : \'text\'"\n class="form-control"\n [placeholder]="field.placeholder || \'\'"\n [value]="getConfigValue(providerName, field.key, field.default)"\n (input)="updateConfigValue(providerName, field.key, $any($event.target).value)">\n <select\n *ngIf="getFieldType(field) === \'select\'"\n class="form-control"\n [value]="getConfigValue(providerName, field.key, field.default)"\n (change)="updateConfigValue(providerName, field.key, $any($event.target).value)">\n <option *ngFor="let option of getFieldOptions(field)" [value]="option">\n {{ option }}\n </option>\n </select>\n </div>\n\n <div class="form-actions">\n <button class="btn btn-primary" (click)="saveConfig(providerName)">\n <i class="icon-save"></i>\n 保存配置\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n'},5440(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.single=void 0;var r=n(9328),i=n(4708),o=n(3506),s=n(5212),a=n(7214);t.single=function(e){return s.operate(function(t,n){var s,c=!1,l=!1,u=0;t.subscribe(a.createOperatorSubscriber(n,function(r){l=!0,e&&!e(r,u++,t)||(c&&n.error(new i.SequenceError("Too many matching values")),c=!0,s=r)},function(){c?(n.next(s),n.complete()):n.error(l?new o.NotFoundError("No matching values"):new r.EmptyError)}))})}},5455(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.subscribeOn=void 0;var r=n(5212);t.subscribeOn=function(e,t){return void 0===t&&(t=0),r.operate(function(n,r){r.add(e.schedule(function(){return n.subscribe(r)},t))})}},5462(e,t,n){"use strict";var r=this&&this.__generator||function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(e){o=[6,e],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}},i=this&&this.__await||function(e){return this instanceof i?(this.v=e,this):new i(e)},o=this&&this.__asyncGenerator||function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,o=n.apply(e,t||[]),s=[];return r={},a("next"),a("throw"),a("return"),r[Symbol.asyncIterator]=function(){return this},r;function a(e){o[e]&&(r[e]=function(t){return new Promise(function(n,r){s.push([e,t,n,r])>1||c(e,t)})})}function c(e,t){try{(n=o[e](t)).value instanceof i?Promise.resolve(n.value.v).then(l,u):d(s[0][2],n)}catch(e){d(s[0][3],e)}var n}function l(e){c("next",e)}function u(e){c("throw",e)}function d(e,t){e(t),s.shift(),s.length&&c(s[0][0],s[0][1])}};Object.defineProperty(t,"__esModule",{value:!0}),t.isReadableStreamLike=t.readableStreamLikeToAsyncGenerator=void 0;var s=n(281);t.readableStreamLikeToAsyncGenerator=function(e){return o(this,arguments,function(){var t,n,o;return r(this,function(r){switch(r.label){case 0:t=e.getReader(),r.label=1;case 1:r.trys.push([1,,9,10]),r.label=2;case 2:return[4,i(t.read())];case 3:return n=r.sent(),o=n.value,n.done?[4,i(void 0)]:[3,5];case 4:return[2,r.sent()];case 5:return[4,i(o)];case 6:return[4,r.sent()];case 7:return r.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}})})},t.isReadableStreamLike=function(e){return s.isFunction(null==e?void 0:e.getReader)}},5467(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ChatMessageComponent=void 0;const o=n(9430);let s=class{constructor(){this.showAvatar=!0,this.showTimestamp=!0,this.isGrouped=!1,this.messageClick=new o.EventEmitter,this.messageAction=new o.EventEmitter}onMessageClick(){this.messageClick.emit(this.message)}onAction(e){this.messageAction.emit({action:e,message:this.message})}copyMessage(){navigator.clipboard.writeText(this.message.content).then(()=>{})}regenerateResponse(){"assistant"===this.message.role&&this.onAction("regenerate")}markAsHelpful(){this.onAction("helpful")}markAsNotHelpful(){this.onAction("not-helpful")}formatTime(e){return e.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})}isUserMessage(){return"user"===this.message.role}isAssistantMessage(){return"assistant"===this.message.role}isSystemMessage(){return"system"===this.message.role}};r([(0,o.Input)(),i("design:type",Object)],s.prototype,"message",void 0),r([(0,o.Input)(),i("design:type",Object)],s.prototype,"showAvatar",void 0),r([(0,o.Input)(),i("design:type",Object)],s.prototype,"showTimestamp",void 0),r([(0,o.Input)(),i("design:type",Object)],s.prototype,"isGrouped",void 0),r([(0,o.Output)(),i("design:type",Object)],s.prototype,"messageClick",void 0),r([(0,o.Output)(),i("design:type",Object)],s.prototype,"messageAction",void 0),s=r([(0,o.Component)({selector:"app-chat-message",template:n(537),styles:[n(9326)]})],s),t.ChatMessageComponent=s},5471(e,t,n){var r,i,o,s,a,c,l,u;e.exports=(i=(r=u=n(9021)).lib,o=i.WordArray,s=i.Hasher,a=r.algo,c=[],l=a.SHA1=s.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],o=n[2],s=n[3],a=n[4],l=0;l<80;l++){if(l<16)c[l]=0|e[t+l];else{var u=c[l-3]^c[l-8]^c[l-14]^c[l-16];c[l]=u<<1|u>>>31}var d=(r<<5|r>>>27)+a+c[l];d+=l<20?1518500249+(i&o|~i&s):l<40?1859775393+(i^o^s):l<60?(i&o|i&s|o&s)-1894007588:(i^o^s)-899497514,a=s,s=o,o=i<<30|i>>>2,i=r,r=d}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+o|0,n[3]=n[3]+s|0,n[4]=n[4]+a|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=Math.floor(n/4294967296),t[15+(r+64>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(l),r.HmacSHA1=s._createHmacHelper(l),u.SHA1)},5503(e,t,n){var r;e.exports=(r=n(9021),function(){var e=r,t=e.lib.WordArray,n=e.enc;function i(e){return e<<8&4278255360|e>>>8&16711935}n.Utf16=n.Utf16BE={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],i=0;i<n;i+=2){var o=t[i>>>2]>>>16-i%4*8&65535;r.push(String.fromCharCode(o))}return r.join("")},parse:function(e){for(var n=e.length,r=[],i=0;i<n;i++)r[i>>>1]|=e.charCodeAt(i)<<16-i%2*16;return t.create(r,2*n)}},n.Utf16LE={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],o=0;o<n;o+=2){var s=i(t[o>>>2]>>>16-o%4*8&65535);r.push(String.fromCharCode(s))}return r.join("")},parse:function(e){for(var n=e.length,r=[],o=0;o<n;o++)r[o>>>1]|=i(e.charCodeAt(o)<<16-o%2*16);return t.create(r,2*n)}}}(),r.enc.Utf16)},5513(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.onErrorResumeNext=t.onErrorResumeNextWith=void 0;var o=n(7652),s=n(1903);function a(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.argsOrArgArray(e);return function(e){return s.onErrorResumeNext.apply(void 0,i([e],r(n)))}}t.onErrorResumeNextWith=a,t.onErrorResumeNext=a},5544(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.expand=void 0;var r=n(5212),i=n(2574);t.expand=function(e,t,n){return void 0===t&&(t=1/0),t=(t||0)<1?1/0:t,r.operate(function(r,o){return i.mergeInternals(r,o,e,t,void 0,!0,n)})}},5547(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r='<div class="chat-settings">\n <h3>聊天设置</h3>\n\n \x3c!-- 主题设置 --\x3e\n <div class="settings-section">\n <h4>外观</h4>\n\n <div class="form-group">\n <label>主题</label>\n <select class="form-control" [(ngModel)]="settings.theme" (change)="updateTheme(settings.theme)">\n <option *ngFor="let theme of themes" [value]="theme.value">\n {{ theme.label }}\n </option>\n </select>\n </div>\n\n <div class="form-group">\n <label>字体大小</label>\n <div class="font-size-selector">\n <button\n *ngFor="let size of fontSizes"\n class="font-size-btn"\n [class.active]="settings.fontSize === size"\n (click)="updateFontSize(size)">\n {{ size }}px\n </button>\n </div>\n </div>\n\n <div class="form-check">\n <input\n type="checkbox"\n id="compactMode"\n [(ngModel)]="settings.compactMode"\n (change)="toggleCompactMode()">\n <label for="compactMode">紧凑模式</label>\n </div>\n </div>\n\n \x3c!-- 聊天行为 --\x3e\n <div class="settings-section">\n <h4>聊天行为</h4>\n\n <div class="form-check">\n <input\n type="checkbox"\n id="enterToSend"\n [(ngModel)]="settings.enterToSend"\n (change)="saveSetting(\'ui.enterToSend\', settings.enterToSend)">\n <label for="enterToSend">Enter键发送消息</label>\n </div>\n\n <div class="form-check">\n <input\n type="checkbox"\n id="showTimestamps"\n [(ngModel)]="settings.showTimestamps"\n (change)="saveSetting(\'ui.showTimestamps\', settings.showTimestamps)">\n <label for="showTimestamps">显示时间戳</label>\n </div>\n\n <div class="form-check">\n <input\n type="checkbox"\n id="showAvatars"\n [(ngModel)]="settings.showAvatars"\n (change)="saveSetting(\'ui.showAvatars\', settings.showAvatars)">\n <label for="showAvatars">显示头像</label>\n </div>\n\n <div class="form-check">\n <input\n type="checkbox"\n id="soundEnabled"\n [(ngModel)]="settings.soundEnabled"\n (change)="saveSetting(\'ui.soundEnabled\', settings.soundEnabled)">\n <label for="soundEnabled">启用提示音</label>\n </div>\n </div>\n\n \x3c!-- 聊天历史 --\x3e\n <div class="settings-section">\n <h4>聊天历史</h4>\n\n <div class="form-check">\n <input\n type="checkbox"\n id="chatHistoryEnabled"\n [(ngModel)]="settings.chatHistoryEnabled"\n (change)="saveSetting(\'chatHistoryEnabled\', settings.chatHistoryEnabled)">\n <label for="chatHistoryEnabled">启用聊天历史</label>\n </div>\n\n <div class="form-group" *ngIf="settings.chatHistoryEnabled">\n <label>最大历史记录数</label>\n <input\n type="number"\n class="form-control"\n [(ngModel)]="settings.maxChatHistory"\n (change)="saveSetting(\'maxChatHistory\', settings.maxChatHistory)"\n min="10"\n max="1000"\n step="10">\n <small class="form-text">保存的最大聊天记录数量</small>\n </div>\n\n <div class="form-check" *ngIf="settings.chatHistoryEnabled">\n <input\n type="checkbox"\n id="autoSaveChat"\n [(ngModel)]="settings.autoSaveChat"\n (change)="saveSetting(\'autoSaveChat\', settings.autoSaveChat)">\n <label for="autoSaveChat">自动保存聊天记录</label>\n </div>\n </div>\n\n \x3c!-- 操作按钮 --\x3e\n <div class="settings-actions">\n <button class="btn btn-secondary" (click)="exportSettings()">\n <i class="icon-export"></i>\n 导出设置\n </button>\n <button class="btn btn-danger" (click)="clearChatHistory()">\n <i class="icon-clear"></i>\n 清空聊天记录\n </button>\n <button class="btn btn-warning" (click)="resetToDefaults()">\n <i class="icon-refresh"></i>\n 重置为默认\n </button>\n </div>\n</div>\n'},5565(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.scan=void 0;var r=n(5212),i=n(8531);t.scan=function(e,t){return r.operate(i.scanInternals(e,t,arguments.length>=2,!0))}},5650(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.scheduleObservable=void 0;var r=n(9724),i=n(2071),o=n(5455);t.scheduleObservable=function(e,t){return r.innerFrom(e).pipe(o.subscribeOn(t),i.observeOn(t))}},5655(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.HotkeyService=void 0;const o=n(9430),s=n(2607);let a=class{constructor(){this.hotkeyPressed$=new s.Subject}registerHotkey(e,t){console.log("Register hotkey",e)}unregisterHotkey(e){console.log("Unregister hotkey",e)}onHotkeyPressed(){return this.hotkeyPressed$.asObservable()}triggerHotkey(e){this.hotkeyPressed$.next(e)}isHotkeyRegistered(e){return!1}};a=r([(0,o.Injectable)({providedIn:"root"}),i("design:paramtypes",[])],a),t.HotkeyService=a},5675(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getRuntime=void 0;const r=n(8548);t.getRuntime=function({manuallyImported:e}={}){const t=e?"You may need to use polyfills":"Add one of these imports before your first `import … from '@anthropic-ai/sdk'`:\n- `import '@anthropic-ai/sdk/shims/node'` (if you're running on Node)\n- `import '@anthropic-ai/sdk/shims/web'` (otherwise)\n";let n,i,o,s;try{n=fetch,i=Request,o=Response,s=Headers}catch(e){throw new Error(`this environment is missing the following Web Fetch API type: ${e.message}. ${t}`)}return{kind:"web",fetch:n,Request:i,Response:o,Headers:s,FormData:"undefined"!=typeof FormData?FormData:class{constructor(){throw new Error(`file uploads aren't supported in this environment yet as 'FormData' is undefined. ${t}`)}},Blob:"undefined"!=typeof Blob?Blob:class{constructor(){throw new Error(`file uploads aren't supported in this environment yet as 'Blob' is undefined. ${t}`)}},File:"undefined"!=typeof File?File:class{constructor(){throw new Error(`file uploads aren't supported in this environment yet as 'File' is undefined. ${t}`)}},ReadableStream:"undefined"!=typeof ReadableStream?ReadableStream:class{constructor(){throw new Error(`streaming isn't supported in this environment yet as 'ReadableStream' is undefined. ${t}`)}},getMultipartRequestOptions:async(e,t)=>({...t,body:new r.MultipartBody(e)}),getDefaultAgent:e=>{},fileFromPath:()=>{throw new Error("The `fileFromPath` function is only supported in Node. See the README for more details: https://www.github.com/anthropics/anthropic-sdk-typescript#file-uploads")},isFsReadStream:e=>!1}}},5717(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.noop=void 0,t.noop=function(){}},5774(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.skipWhile=void 0;var r=n(5212),i=n(7214);t.skipWhile=function(e){return r.operate(function(t,n){var r=!1,o=0;t.subscribe(i.createOperatorSubscriber(n,function(t){return(r||(r=!e(t,o++)))&&n.next(t)}))})}},5797(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.delay=void 0;var r=n(2326),i=n(2885),o=n(5825);t.delay=function(e,t){void 0===t&&(t=r.asyncScheduler);var n=o.timer(e,t);return i.delayWhen(function(){return n})}},5810(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createObject=void 0,t.createObject=function(e,t){return e.reduce(function(e,n,r){return e[n]=t[r],e},{})}},5825(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.timer=void 0;var r=n(8051),i=n(2326),o=n(8596),s=n(5345);t.timer=function(e,t,n){void 0===e&&(e=0),void 0===n&&(n=i.async);var a=-1;return null!=t&&(o.isScheduler(t)?n=t:a=t),new r.Observable(function(t){var r=s.isValidDate(e)?+e-n.now():e;r<0&&(r=0);var i=0;return n.schedule(function(){t.closed||(t.next(i++),0<=a?this.schedule(void 0,a):t.complete())},r)})}},5881(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Scheduler=void 0;var r=n(3275),i=function(){function e(t,n){void 0===n&&(n=e.now),this.schedulerActionCtor=t,this.now=n}return e.prototype.schedule=function(e,t,n){return void 0===t&&(t=0),new this.schedulerActionCtor(this,e).schedule(n,t)},e.now=r.dateTimestampProvider.now,e}();t.Scheduler=i},5924(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.AiSettingsTabComponent=void 0;const o=n(9430),s=n(7295),a=n(5084),c=n(9048);let l=class{constructor(e,t,n){this.aiService=e,this.config=t,this.logger=n,this.activeTab="general",this.isEnabled=!0,this.currentProvider="",this.providerStatus={},this.tabs=[{id:"general",label:"基本设置",icon:"icon-settings"},{id:"providers",label:"AI提供商",icon:"icon-provider"},{id:"security",label:"安全设置",icon:"icon-shield"},{id:"chat",label:"聊天设置",icon:"icon-chat"},{id:"advanced",label:"高级设置",icon:"icon-advanced"}]}ngOnInit(){this.loadSettings(),this.loadProviderStatus()}loadSettings(){this.isEnabled=this.config.isEnabled();const e=this.config.getDefaultProvider();this.currentProvider=e}loadProviderStatus(){this.providerStatus=this.aiService.getProviderStatus()}switchTab(e){this.activeTab=e}toggleEnabled(){this.isEnabled=!this.isEnabled,this.config.setEnabled(this.isEnabled),this.isEnabled?this.logger.info("AI Assistant enabled"):this.logger.info("AI Assistant disabled")}switchProvider(e){this.aiService.switchProvider(e)&&(this.currentProvider=e,this.config.setDefaultProvider(e),this.loadProviderStatus(),this.logger.info("Provider switched",{provider:e}))}async refreshProviderStatus(){this.loadProviderStatus(),this.logger.debug("Provider status refreshed")}getProviderIcon(e){return{openai:"icon-openai",anthropic:"icon-anthropic",minimax:"icon-minimax",glm:"icon-glm","openai-compatible":"icon-compatible"}[e]||"icon-provider"}getProviderStatusColor(e){return e?"var(--ai-success)":"var(--ai-danger)"}getProviderStatusText(e){return e?"正常":"异常"}async validateConfig(){try{const e=(await this.aiService.validateConfig()).filter(e=>!e.valid);e.length>0?alert(`发现 ${e.length} 个配置问题,请检查AI提供商设置。`):alert("所有配置验证通过!")}catch(e){this.logger.error("Failed to validate config",e),alert("配置验证失败,请检查日志。")}}exportConfig(){const e=this.config.exportConfig(),t=new Blob([e],{type:"application/json"}),n=window.URL.createObjectURL(t),r=document.createElement("a");r.href=n,r.download=`ai-assistant-config-${(new Date).toISOString().slice(0,10)}.json`,r.click(),window.URL.revokeObjectURL(n)}importConfig(){const e=document.createElement("input");e.type="file",e.accept=".json",e.onchange=e=>{const t=e.target.files?.[0];if(t){const e=new FileReader;e.onload=e=>{try{const t=e.target?.result;this.config.importConfig(t),alert("配置导入成功,请重启插件生效。"),this.loadSettings(),this.loadProviderStatus()}catch(e){alert("配置导入失败,请检查文件格式。")}},e.readAsText(t)}},e.click()}resetToDefaults(){confirm("确定要重置所有设置为默认值吗?此操作不可恢复。")&&(this.config.reset(),this.loadSettings(),this.loadProviderStatus(),alert("配置已重置为默认值。"))}};l=r([(0,o.Component)({selector:"app-ai-settings-tab",template:n(6406),styles:[n(8457)]}),i("design:paramtypes",[s.AiAssistantService,a.ConfigProviderService,c.LoggerService])],l),t.AiSettingsTabComponent=l},5934(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.filter=void 0;var r=n(5212),i=n(7214);t.filter=function(e,t){return r.operate(function(n,r){var o=0;n.subscribe(i.createOperatorSubscriber(r,function(n){return e.call(t,n,o++)&&r.next(n)}))})}},5953(e,t,n){var r;e.exports=(r=n(9021),n(3240),function(e){var t=r,n=t.lib,i=n.WordArray,o=n.Hasher,s=t.x64.Word,a=t.algo,c=[],l=[],u=[];!function(){for(var e=1,t=0,n=0;n<24;n++){c[e+5*t]=(n+1)*(n+2)/2%64;var r=(2*e+3*t)%5;e=t%5,t=r}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var i=1,o=0;o<24;o++){for(var a=0,d=0,f=0;f<7;f++){if(1&i){var p=(1<<f)-1;p<32?d^=1<<p:a^=1<<p-32}128&i?i=i<<1^113:i<<=1}u[o]=s.create(a,d)}}();var d=[];!function(){for(var e=0;e<25;e++)d[e]=s.create()}();var f=a.SHA3=o.extend({cfg:o.cfg.extend({outputLength:512}),_doReset:function(){for(var e=this._state=[],t=0;t<25;t++)e[t]=new s.init;this.blockSize=(1600-2*this.cfg.outputLength)/32},_doProcessBlock:function(e,t){for(var n=this._state,r=this.blockSize/2,i=0;i<r;i++){var o=e[t+2*i],s=e[t+2*i+1];o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),s=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),(R=n[i]).high^=s,R.low^=o}for(var a=0;a<24;a++){for(var f=0;f<5;f++){for(var p=0,h=0,m=0;m<5;m++)p^=(R=n[f+5*m]).high,h^=R.low;var g=d[f];g.high=p,g.low=h}for(f=0;f<5;f++){var v=d[(f+4)%5],b=d[(f+1)%5],y=b.high,w=b.low;for(p=v.high^(y<<1|w>>>31),h=v.low^(w<<1|y>>>31),m=0;m<5;m++)(R=n[f+5*m]).high^=p,R.low^=h}for(var _=1;_<25;_++){var x=(R=n[_]).high,S=R.low,O=c[_];O<32?(p=x<<O|S>>>32-O,h=S<<O|x>>>32-O):(p=S<<O-32|x>>>64-O,h=x<<O-32|S>>>64-O);var P=d[l[_]];P.high=p,P.low=h}var k=d[0],C=n[0];for(k.high=C.high,k.low=C.low,f=0;f<5;f++)for(m=0;m<5;m++){var R=n[_=f+5*m],A=d[_],E=d[(f+1)%5+5*m],j=d[(f+2)%5+5*m];R.high=A.high^~E.high&j.high,R.low=A.low^~E.low&j.low}R=n[0];var M=u[a];R.high^=M.high,R.low^=M.low}},_doFinalize:function(){var t=this._data,n=t.words,r=(this._nDataBytes,8*t.sigBytes),o=32*this.blockSize;n[r>>>5]|=1<<24-r%32,n[(e.ceil((r+1)/o)*o>>>5)-1]|=128,t.sigBytes=4*n.length,this._process();for(var s=this._state,a=this.cfg.outputLength/8,c=a/8,l=[],u=0;u<c;u++){var d=s[u],f=d.high,p=d.low;f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),p=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8),l.push(p),l.push(f)}return new i.init(l,a)},clone:function(){for(var e=o.clone.call(this),t=e._state=this._state.slice(0),n=0;n<25;n++)t[n]=t[n].clone();return e}});t.SHA3=o._createHelper(f),t.HmacSHA3=o._createHmacHelper(f)}(Math),r.SHA3)},6035(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.distinctUntilKeyChanged=void 0;var r=n(9663);t.distinctUntilKeyChanged=function(e,t){return r.distinctUntilChanged(function(n,r){return t?t(n[e],r[e]):n[e]===r[e]})}},6075(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mergeMapTo=void 0;var r=n(7478),i=n(281);t.mergeMapTo=function(e,t,n){return void 0===n&&(n=1/0),i.isFunction(t)?r.mergeMap(function(){return e},t,n):("number"==typeof t&&(n=t),r.mergeMap(function(){return e},n))}},6081(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.race=void 0;var o=n(7652),s=n(6677);t.race=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return s.raceWith.apply(void 0,i([],r(o.argsOrArgArray(e))))}},6126(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r='<div class="chat-input-container">\n \x3c!-- 输入区域 --\x3e\n <div class="input-wrapper">\n <textarea\n #textInput\n class="chat-textarea"\n [value]="inputValue"\n [placeholder]="placeholder"\n [disabled]="disabled"\n (keydown)="onKeydown($event)"\n (input)="onInput($event)"\n (compositionstart)="onCompositionStart()"\n (compositionend)="onCompositionEnd()"\n rows="1">\n </textarea>\n\n \x3c!-- 字符计数 --\x3e\n <div class="char-counter" [ngClass]="{\n \'warning\': isNearLimit() && !isOverLimit(),\n \'error\': isOverLimit()\n }">\n {{ getCharCount() }} / {{ getCharLimit() }}\n </div>\n </div>\n\n \x3c!-- 操作按钮 --\x3e\n <div class="input-actions">\n \x3c!-- 清空按钮 --\x3e\n <button\n *ngIf="inputValue && !disabled"\n class="btn-icon"\n (click)="clear()"\n title="清空">\n <i class="icon-clear"></i>\n </button>\n\n \x3c!-- 发送按钮 --\x3e\n <button\n class="btn-send"\n [disabled]="!inputValue.trim() || disabled || isOverLimit()"\n (click)="submit()"\n title="发送 (Enter)">\n <i class="icon-send"></i>\n <span class="btn-text">发送</span>\n </button>\n </div>\n\n \x3c!-- 帮助提示 --\x3e\n <div class="input-hints">\n <span class="hint-item">\n <kbd>Enter</kbd> 发送\n </span>\n <span class="hint-item">\n <kbd>Shift + Enter</kbd> 换行\n </span>\n <span class="hint-item" *ngIf="isNearLimit()">\n <i class="icon-warning"></i>\n 接近字符限制\n </span>\n </div>\n</div>\n'},6131(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.repeat=void 0;var r=n(4885),i=n(5212),o=n(7214),s=n(9724),a=n(5825);t.repeat=function(e){var t,n,c=1/0;return null!=e&&("object"==typeof e?(t=e.count,c=void 0===t?1/0:t,n=e.delay):c=e),c<=0?function(){return r.EMPTY}:i.operate(function(e,t){var r,i=0,l=function(){if(null==r||r.unsubscribe(),r=null,null!=n){var e="number"==typeof n?a.timer(n):s.innerFrom(n(i)),c=o.createOperatorSubscriber(t,function(){c.unsubscribe(),u()});e.subscribe(c)}else u()},u=function(){var n=!1;r=e.subscribe(o.createOperatorSubscriber(t,void 0,function(){++i<c?r?l():n=!0:t.complete()})),n&&l()};u()})}},6201(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.switchAll=void 0;var r=n(680),i=n(7699);t.switchAll=function(){return r.switchMap(i.identity)}},6240(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.BaseAiProvider=void 0;const o=n(9430),s=n(1170),a=n(9048);let c=class extends s.BaseAiProvider{constructor(e){super(),this.logger=e,this.config=null,this.isInitialized=!1,this.lastHealthCheck=null}configure(e){this.config={...e},this.isInitialized=!0,this.logger.debug(`Provider ${this.name} configured`,{config:{...e,apiKey:"***"}})}async healthCheck(){try{return this.validateConfig().valid?(this.lastHealthCheck={status:s.HealthStatus.HEALTHY,timestamp:new Date},s.HealthStatus.HEALTHY):(this.lastHealthCheck={status:s.HealthStatus.UNHEALTHY,timestamp:new Date},s.HealthStatus.UNHEALTHY)}catch(e){return this.logger.error(`Health check failed for ${this.name}`,e),this.lastHealthCheck={status:s.HealthStatus.UNHEALTHY,timestamp:new Date},s.HealthStatus.UNHEALTHY}}validateConfig(){const e=[],t=[];return this.config?(this.config.apiKey||e.push("API key is required"),this.config.model||t.push("No model specified, using default"),this.config.baseURL||t.push("No base URL specified, using provider default"),this.config.maxTokens&&this.config.maxTokens<1&&e.push("Max tokens must be greater than 0"),void 0!==this.config.temperature&&(this.config.temperature<0||this.config.temperature>2)&&t.push("Temperature should be between 0 and 2"),{valid:0===e.length,errors:e.length>0?e:void 0,warnings:t.length>0?t:void 0}):(e.push("Provider not configured"),{valid:!1,errors:e,warnings:t})}supportsCapability(e){return this.capabilities.includes(e)}getInfo(){return{name:this.name,displayName:this.displayName,version:"1.0.0",description:`${this.displayName} AI Provider`,capabilities:this.capabilities,authConfig:this.authConfig,supportedModels:this.config?.model?[this.config.model]:[],configured:this.isInitialized,lastHealthCheck:this.lastHealthCheck}}getConfig(){return this.config}isConfigured(){return this.isInitialized&&null!==this.config}isEnabled(){return!1!==this.config?.enabled}getAuthHeaders(){const e={"Content-Type":"application/json"};switch(this.authConfig.type){case"apiKey":case"bearer":this.config?.apiKey&&(e.Authorization=`Bearer ${this.config.apiKey}`);break;case"basic":if(this.authConfig.credentials.username&&this.authConfig.credentials.password){const t=Buffer.from(`${this.authConfig.credentials.username}:${this.authConfig.credentials.password}`).toString("base64");e.Authorization=`Basic ${t}`}}return e}getTimeout(){return this.config?.timeout||3e4}getRetries(){return this.config?.retries||3}async withRetry(e){let t=null;const n=this.getRetries();for(let r=0;r<=n;r++)try{return await e()}catch(e){if(t=e instanceof Error?e:new Error(String(e)),r===n)break;const i=1e3*Math.pow(2,r);this.logger.warn(`Operation failed (attempt ${r+1}/${n+1}), retrying in ${i}ms`,{error:t.message}),await new Promise(e=>setTimeout(e,i))}throw t}logRequest(e){this.logger.debug(`[${this.name}] Request`,{request:this.sanitizeRequest(e)})}logResponse(e){this.logger.debug(`[${this.name}] Response`,{response:this.sanitizeResponse(e)})}logError(e,t){this.logger.error(`[${this.name}] Error`,{error:e instanceof Error?e.message:String(e),stack:e instanceof Error?e.stack:void 0,context:t})}sanitizeRequest(e){const t={...e};return t.apiKey&&(t.apiKey="***"),t.headers?.Authorization&&(t.headers.Authorization="***"),t}sanitizeResponse(e){const t={...e};return t.data?.apiKey&&(t.data.apiKey="***"),t}getBaseURL(){return this.config?.baseURL||this.getDefaultBaseURL()}getDefaultModel(){return this.config?.model||"default"}transformMessages(e){return e}transformResponse(e){return{message:{id:this.generateId(),role:"assistant",content:"string"==typeof e?e:JSON.stringify(e),timestamp:new Date}}}generateId(){return`${Date.now()}_${Math.random().toString(36).substr(2,9)}`}isSuccessfulResponse(e){return e&&!e.error}extractError(e){return e.error?.message?e.error.message:e.message?e.message:"string"==typeof e?e:"Unknown error"}};c=r([(0,o.Injectable)(),i("design:paramtypes",[a.LoggerService])],c),t.BaseAiProvider=c},6297(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createInvalidObservableTypeError=void 0,t.createInvalidObservableTypeError=function(e){return new TypeError("You provided "+(null!==e&&"object"==typeof e?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}},6298(e,t,n){var r;e.exports=(r=n(9021),n(754),n(4636),n(9506),n(7165),function(){var e=r,t=e.lib.StreamCipher,n=e.algo,i=[],o=[],s=[],a=n.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,n=0;n<4;n++)e[n]=16711935&(e[n]<<8|e[n]>>>24)|4278255360&(e[n]<<24|e[n]>>>8);var r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,n=0;n<4;n++)c.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var o=t.words,s=o[0],a=o[1],l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),u=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),d=l>>>16|4294901760&u,f=u<<16|65535&l;for(i[0]^=l,i[1]^=d,i[2]^=u,i[3]^=f,i[4]^=l,i[5]^=d,i[6]^=u,i[7]^=f,n=0;n<4;n++)c.call(this)}},_doProcessBlock:function(e,t){var n=this._X;c.call(this),i[0]=n[0]^n[5]>>>16^n[3]<<16,i[1]=n[2]^n[7]>>>16^n[5]<<16,i[2]=n[4]^n[1]>>>16^n[7]<<16,i[3]=n[6]^n[3]>>>16^n[1]<<16;for(var r=0;r<4;r++)i[r]=16711935&(i[r]<<8|i[r]>>>24)|4278255360&(i[r]<<24|i[r]>>>8),e[t+r]^=i[r]},blockSize:4,ivSize:2});function c(){for(var e=this._X,t=this._C,n=0;n<8;n++)o[n]=t[n];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0<o[0]>>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0<o[1]>>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0<o[2]>>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0<o[3]>>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0<o[4]>>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0<o[5]>>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0<o[6]>>>0?1:0)|0,this._b=t[7]>>>0<o[7]>>>0?1:0,n=0;n<8;n++){var r=e[n]+t[n],i=65535&r,a=r>>>16,c=((i*i>>>17)+i*a>>>15)+a*a,l=((4294901760&r)*r|0)+((65535&r)*r|0);s[n]=c^l}e[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,e[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,e[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,e[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,e[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,e[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,e[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,e[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}e.Rabbit=t._createHelper(a)}(),r.Rabbit)},6308(e,t,n){var r,i,o,s,a,c;e.exports=(c=n(9021),n(3009),i=(r=c).lib.WordArray,o=r.algo,s=o.SHA256,a=o.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(a),r.HmacSHA224=s._createHmacHelper(a),c.SHA224)},6328(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.concat=void 0;var o=n(5212),s=n(201),a=n(6404),c=n(7058);t.concat=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.popScheduler(e);return o.operate(function(t,o){s.concatAll()(c.from(i([t],r(e)),n)).subscribe(o)})}},6353(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},a=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ConsentManagerService=void 0;const c=n(9430),l=s(n(1396)),u=n(8785),d=n(9048);let f=class{constructor(e){this.logger=e,this.CONSENT_KEY_PREFIX="ai-assistant-consent-",this.DEFAULT_EXPIRY=2592e6}async storeConsent(e,t){const n={commandHash:this.hashCommand(e),riskLevel:t,timestamp:Date.now(),expiry:Date.now()+this.DEFAULT_EXPIRY};localStorage.setItem(this.CONSENT_KEY_PREFIX+n.commandHash,JSON.stringify(n)),this.logger.debug("User consent stored",{commandHash:n.commandHash,riskLevel:t})}async hasConsent(e,t){const n=this.hashCommand(e),r=localStorage.getItem(this.CONSENT_KEY_PREFIX+n);if(!r)return!1;try{const e=JSON.parse(r);return Date.now()>e.expiry?(localStorage.removeItem(this.CONSENT_KEY_PREFIX+n),this.logger.debug("Expired consent removed",{commandHash:n}),!1):e.riskLevel===t?(this.logger.debug("Valid consent found",{commandHash:n}),!0):(this.logger.debug("Risk level mismatch",{stored:e.riskLevel,current:t}),!1)}catch(e){return this.logger.error("Failed to parse consent",e),!1}}async requestConsent(e,t,n){const r=this.getRiskLevelText(n),i=confirm(`此命令为${r}风险:\n\n命令: ${e}\n\n解释: ${t}\n\n确定要执行此命令吗?`);return i?this.logger.info("User granted consent",{command:e,riskLevel:n}):this.logger.info("User denied consent",{command:e,riskLevel:n}),i}async clearAllConsents(){const e=Object.keys(localStorage).filter(e=>e.startsWith(this.CONSENT_KEY_PREFIX));e.forEach(e=>{localStorage.removeItem(e)}),this.logger.info("All consents cleared",{count:e.length})}async getActiveConsentsCount(){const e=Object.keys(localStorage).filter(e=>e.startsWith(this.CONSENT_KEY_PREFIX));let t=0;const n=Date.now();return e.forEach(e=>{try{const r=localStorage.getItem(e);if(r){const i=JSON.parse(r);n<=i.expiry?t++:localStorage.removeItem(e)}}catch(t){localStorage.removeItem(e)}}),t}async getTotalValidations(){return Object.keys(localStorage).filter(e=>e.startsWith(this.CONSENT_KEY_PREFIX)).length}async getConsentStats(){const e={total:0,byLevel:{[u.RiskLevel.LOW]:0,[u.RiskLevel.MEDIUM]:0,[u.RiskLevel.HIGH]:0,[u.RiskLevel.CRITICAL]:0},expired:0},t=Object.keys(localStorage).filter(e=>e.startsWith(this.CONSENT_KEY_PREFIX)),n=Date.now();return t.forEach(t=>{try{const r=localStorage.getItem(t);if(r){const i=JSON.parse(r);e.total++,n<=i.expiry?e.byLevel[i.riskLevel]++:(e.expired++,localStorage.removeItem(t))}}catch(e){localStorage.removeItem(t)}}),e}async cleanupExpiredConsents(){const e=Object.keys(localStorage).filter(e=>e.startsWith(this.CONSENT_KEY_PREFIX));let t=0;const n=Date.now();return e.forEach(e=>{try{const r=localStorage.getItem(e);if(r){const i=JSON.parse(r);n>i.expiry&&(localStorage.removeItem(e),t++)}}catch(n){localStorage.removeItem(e),t++}}),t>0&&this.logger.info("Expired consents cleaned up",{removedCount:t}),t}getRiskLevelText(e){switch(e){case u.RiskLevel.LOW:return"低";case u.RiskLevel.MEDIUM:return"中";case u.RiskLevel.HIGH:return"高";case u.RiskLevel.CRITICAL:return"极";default:return"未知"}}hashCommand(e){const t=e.trim().toLowerCase();return l.SHA256(t).toString()}exportConsents(){const e=[];return Object.keys(localStorage).filter(e=>e.startsWith(this.CONSENT_KEY_PREFIX)).forEach(t=>{try{const n=localStorage.getItem(t);n&&e.push(JSON.parse(n))}catch(e){}}),JSON.stringify({exportTime:(new Date).toISOString(),consents:e},null,2)}importConsents(e){return new Promise((t,n)=>{try{const n=JSON.parse(e);if(!n.consents||!Array.isArray(n.consents))throw new Error("Invalid data format");let r=0,i=0;n.consents.forEach(e=>{try{const t=localStorage.getItem(this.CONSENT_KEY_PREFIX+e.commandHash);if(t){const e=JSON.parse(t);if(Date.now()<=e.expiry)return void i++}localStorage.setItem(this.CONSENT_KEY_PREFIX+e.commandHash,JSON.stringify(e)),r++}catch(e){i++}}),this.logger.info("Consents imported",{imported:r,skipped:i}),t({imported:r,skipped:i})}catch(e){n(e)}})}};f=o([(0,c.Injectable)({providedIn:"root"}),a("design:paramtypes",[d.LoggerService])],f),t.ConsentManagerService=f},6355(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.pluck=void 0;var r=n(6872);t.pluck=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=e.length;if(0===n)throw new Error("list of properties cannot be empty.");return r.map(function(t){for(var r=t,i=0;i<n;i++){var o=null==r?void 0:r[e[i]];if(void 0===o)return;r=o}return r})}},6356(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ChatHistoryService=void 0;const o=n(9430),s=n(2607),a=n(9048),c="tabby-ai-assistant-chat-history";let l=class{constructor(e){this.logger=e,this.sessionsSubject=new s.BehaviorSubject([]),this.sessions$=this.sessionsSubject.asObservable(),this.loadSessions()}saveSession(e,t,n){try{const r=this.sessionsSubject.value,i=r.findIndex(t=>t.sessionId===e),o=n||this.generateSessionTitle(t),s=new Date,a={sessionId:e,title:o,messages:this.trimMessages(t),createdAt:i>=0?r[i].createdAt:s,updatedAt:s,messageCount:t.length};i>=0?r[i]=a:r.unshift(a);const c=r.slice(0,50);this.sessionsSubject.next(c),this.saveToStorage(c),this.logger.info("Session saved",{sessionId:e,title:o})}catch(t){throw this.logger.error("Failed to save session",{error:t,sessionId:e}),t}}loadSession(e){return this.sessionsSubject.value.find(t=>t.sessionId===e)}deleteSession(e){const t=this.sessionsSubject.value.filter(t=>t.sessionId!==e);this.sessionsSubject.next(t),this.saveToStorage(t),this.logger.info("Session deleted",{sessionId:e})}clearAllHistory(){this.sessionsSubject.next([]),this.saveToStorage([]),this.logger.info("All chat history cleared")}searchSessions(e){const t=this.sessionsSubject.value,n=e.toLowerCase();return t.filter(e=>e.title.toLowerCase().includes(n)||e.messages.some(e=>e.content.toLowerCase().includes(n)))}getRecentSessions(e=10){return this.sessionsSubject.value.slice(0,e)}getStatistics(){const e=this.sessionsSubject.value,t=e.length,n=e.reduce((e,t)=>e+t.messageCount,0),r=t>0?n/t:0,i=e.map(e=>e.createdAt.getTime()),o=i.length>0?new Date(Math.min(...i)):void 0,s=i.length>0?new Date(Math.max(...i)):void 0;return{totalSessions:t,totalMessages:n,averageMessagesPerSession:Math.round(100*r)/100,oldestSession:o,newestSession:s}}exportAllHistory(){const e=this.sessionsSubject.value,t={exportDate:(new Date).toISOString(),version:"1.0",sessions:e};return JSON.stringify(t,null,2)}importHistory(e){try{const t=JSON.parse(e);if(!t.sessions||!Array.isArray(t.sessions))throw new Error("Invalid history format");const n=t.sessions.map(e=>({...e,createdAt:new Date(e.createdAt),updatedAt:new Date(e.updatedAt)}));this.sessionsSubject.next(n),this.saveToStorage(n),this.logger.info("History imported",{sessionCount:n.length})}catch(e){throw this.logger.error("Failed to import history",e),new Error("Invalid history file format")}}loadSessions(){try{const e=localStorage.getItem(c);if(e){const t=JSON.parse(e).map(e=>({...e,createdAt:new Date(e.createdAt),updatedAt:new Date(e.updatedAt)}));this.sessionsSubject.next(t),this.logger.info("Loaded sessions from storage",{count:t.length})}}catch(e){this.logger.error("Failed to load sessions from storage",e),this.sessionsSubject.next([])}}saveToStorage(e){try{localStorage.setItem(c,JSON.stringify(e))}catch(e){this.logger.error("Failed to save sessions to storage",e)}}generateSessionTitle(e){const t=e.find(e=>"user"===e.role);if(!t)return`会话 ${(new Date).toLocaleString()}`;const n=t.content;return n.length>50?n.substring(0,50)+"...":n}trimMessages(e){return e.length<=1e3?e:e.slice(-1e3)}};l=r([(0,o.Injectable)({providedIn:"root"}),i("design:paramtypes",[a.LoggerService])],l),t.ChatHistoryService=l},6372(e,t,n){var r;e.exports=(r=n(9021),n(7165),r.mode.CTRGladman=function(){var e=r.lib.BlockCipherMode.extend();function t(e){if(255&~(e>>24))e+=1<<24;else{var t=e>>16&255,n=e>>8&255,r=255&e;255===t?(t=0,255===n?(n=0,255===r?r=0:++r):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=r}return e}var n=e.Encryptor=e.extend({processBlock:function(e,n){var r=this._cipher,i=r.blockSize,o=this._iv,s=this._counter;o&&(s=this._counter=o.slice(0),this._iv=void 0),function(e){0===(e[0]=t(e[0]))&&(e[1]=t(e[1]))}(s);var a=s.slice(0);r.encryptBlock(a,0);for(var c=0;c<i;c++)e[n+c]^=a[c]}});return e.Decryptor=n,e}(),r.mode.CTRGladman)},6404(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.popNumber=t.popScheduler=t.popResultSelector=void 0;var r=n(281),i=n(8596);function o(e){return e[e.length-1]}t.popResultSelector=function(e){return r.isFunction(o(e))?e.pop():void 0},t.popScheduler=function(e){return i.isScheduler(o(e))?e.pop():void 0},t.popNumber=function(e,t){return"number"==typeof o(e)?e.pop():t}},6406(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r='<div class="ai-settings-tab">\n \x3c!-- 头部 --\x3e\n <div class="settings-header">\n <div class="header-content">\n <h2>\n <i class="icon-robot"></i>\n AI助手设置\n </h2>\n <div class="header-status">\n <div class="status-indicator" [class.enabled]="isEnabled">\n <i class="icon-power"></i>\n <span>{{ isEnabled ? \'已启用\' : \'已禁用\' }}</span>\n </div>\n <div class="provider-info" *ngIf="isEnabled">\n <i class="icon-provider"></i>\n <span>当前提供商: {{ currentProvider }}</span>\n </div>\n </div>\n </div>\n <div class="header-actions">\n <button class="btn-icon" (click)="toggleEnabled()" [title]="isEnabled ? \'禁用AI助手\' : \'启用AI助手\'">\n <i [class]="isEnabled ? \'icon-pause\' : \'icon-play\'"></i>\n </button>\n <button class="btn-icon" (click)="refreshProviderStatus()" title="刷新状态">\n <i class="icon-refresh"></i>\n </button>\n <button class="btn-icon" (click)="exportConfig()" title="导出配置">\n <i class="icon-export"></i>\n </button>\n <button class="btn-icon" (click)="importConfig()" title="导入配置">\n <i class="icon-import"></i>\n </button>\n </div>\n </div>\n\n \x3c!-- 标签页导航 --\x3e\n <div class="tabs-nav" *ngIf="isEnabled">\n <button\n *ngFor="let tab of tabs"\n class="tab-button"\n [class.active]="activeTab === tab.id"\n (click)="switchTab(tab.id)">\n <i [class]="tab.icon"></i>\n <span>{{ tab.label }}</span>\n </button>\n </div>\n\n \x3c!-- 内容区域 --\x3e\n <div class="settings-content" *ngIf="isEnabled">\n \x3c!-- 基本设置 --\x3e\n <div *ngIf="activeTab === \'general\'" class="tab-content">\n <app-general-settings (providerChanged)="switchProvider($event)"></app-general-settings>\n </div>\n\n \x3c!-- AI提供商设置 --\x3e\n <div *ngIf="activeTab === \'providers\'" class="tab-content">\n <app-provider-config\n [providerStatus]="providerStatus"\n (refreshStatus)="refreshProviderStatus()"\n (switchProvider)="switchProvider($event)">\n </app-provider-config>\n </div>\n\n \x3c!-- 安全设置 --\x3e\n <div *ngIf="activeTab === \'security\'" class="tab-content">\n <app-security-settings></app-security-settings>\n </div>\n\n \x3c!-- 聊天设置 --\x3e\n <div *ngIf="activeTab === \'chat\'" class="tab-content">\n <app-chat-settings></app-chat-settings>\n </div>\n\n \x3c!-- 高级设置 --\x3e\n <div *ngIf="activeTab === \'advanced\'" class="tab-content">\n <div class="advanced-settings">\n <h3>高级设置</h3>\n\n \x3c!-- 配置验证 --\x3e\n <div class="settings-section">\n <h4>配置管理</h4>\n <button class="btn btn-primary" (click)="validateConfig()">\n <i class="icon-check"></i>\n 验证配置\n </button>\n <button class="btn btn-warning" (click)="resetToDefaults()">\n <i class="icon-refresh"></i>\n 重置为默认\n </button>\n </div>\n\n \x3c!-- 日志设置 --\x3e\n <div class="settings-section">\n <h4>日志设置</h4>\n <div class="log-level-selector">\n <label>日志级别</label>\n <select class="form-control" [(ngModel)]="config.logLevel" (change)="config.setLogLevel(config.logLevel)">\n <option value="debug">Debug (详细)</option>\n <option value="info">Info (信息)</option>\n <option value="warn">Warn (警告)</option>\n <option value="error">Error (错误)</option>\n </select>\n </div>\n </div>\n\n \x3c!-- 系统信息 --\x3e\n <div class="settings-section">\n <h4>系统信息</h4>\n <div class="system-info">\n <div class="info-item">\n <label>插件版本:</label>\n <span>1.0.0</span>\n </div>\n <div class="info-item">\n <label>支持的提供商:</label>\n <span>{{ providerStatus.count }}</span>\n </div>\n <div class="info-item">\n <label>当前提供商:</label>\n <span>{{ currentProvider }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n \x3c!-- 禁用提示 --\x3e\n <div class="disabled-message" *ngIf="!isEnabled">\n <div class="message-content">\n <i class="icon-pause-circle"></i>\n <h3>AI助手已禁用</h3>\n <p>点击上方按钮启用AI助手功能</p>\n <button class="btn btn-primary" (click)="toggleEnabled()">\n <i class="icon-play"></i>\n 启用AI助手\n </button>\n </div>\n </div>\n</div>\n'},6425(e,t,n){"use strict";function r(e,t){return function(){return e.apply(t,arguments)}}const{toString:i}=Object.prototype,{getPrototypeOf:o}=Object,{iterator:s,toStringTag:a}=Symbol,c=(l=Object.create(null),e=>{const t=i.call(e);return l[t]||(l[t]=t.slice(8,-1).toLowerCase())});var l;const u=e=>(e=e.toLowerCase(),t=>c(t)===e),d=e=>t=>typeof t===e,{isArray:f}=Array,p=d("undefined");function h(e){return null!==e&&!p(e)&&null!==e.constructor&&!p(e.constructor)&&v(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const m=u("ArrayBuffer"),g=d("string"),v=d("function"),b=d("number"),y=e=>null!==e&&"object"==typeof e,w=e=>{if("object"!==c(e))return!1;const t=o(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||a in e||s in e)},_=u("Date"),x=u("File"),S=u("Blob"),O=u("FileList"),P=u("URLSearchParams"),[k,C,R,A]=["ReadableStream","Request","Response","Headers"].map(u);function E(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,i;if("object"!=typeof e&&(e=[e]),f(e))for(r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else{if(h(e))return;const i=n?Object.getOwnPropertyNames(e):Object.keys(e),o=i.length;let s;for(r=0;r<o;r++)s=i[r],t.call(null,e[s],s,e)}}function j(e,t){if(h(e))return null;t=t.toLowerCase();const n=Object.keys(e);let r,i=n.length;for(;i-- >0;)if(r=n[i],t===r.toLowerCase())return r;return null}const M="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:n.g,I=e=>!p(e)&&e!==M,T=(L="undefined"!=typeof Uint8Array&&o(Uint8Array),e=>L&&e instanceof L);var L;const N=u("HTMLFormElement"),D=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),H=u("RegExp"),B=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};E(n,(n,i)=>{let o;!1!==(o=t(n,i,e))&&(r[i]=o||n)}),Object.defineProperties(e,r)},F=u("AsyncFunction"),U=(z="function"==typeof setImmediate,$=v(M.postMessage),z?setImmediate:$?(q=`axios@${Math.random()}`,W=[],M.addEventListener("message",({source:e,data:t})=>{e===M&&t===q&&W.length&&W.shift()()},!1),e=>{W.push(e),M.postMessage(q,"*")}):e=>setTimeout(e));var z,$,q,W;const K="undefined"!=typeof queueMicrotask?queueMicrotask.bind(M):"undefined"!=typeof process&&process.nextTick||U;var J={isArray:f,isArrayBuffer:m,isBuffer:h,isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||v(e.append)&&("formdata"===(t=c(e))||"object"===t&&v(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&m(e.buffer),t},isString:g,isNumber:b,isBoolean:e=>!0===e||!1===e,isObject:y,isPlainObject:w,isEmptyObject:e=>{if(!y(e)||h(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(e){return!1}},isReadableStream:k,isRequest:C,isResponse:R,isHeaders:A,isUndefined:p,isDate:_,isFile:x,isBlob:S,isRegExp:H,isFunction:v,isStream:e=>y(e)&&v(e.pipe),isURLSearchParams:P,isTypedArray:T,isFileList:O,forEach:E,merge:function e(){const{caseless:t,skipUndefined:n}=I(this)&&this||{},r={},i=(i,o)=>{const s=t&&j(r,o)||o;w(r[s])&&w(i)?r[s]=e(r[s],i):w(i)?r[s]=e({},i):f(i)?r[s]=i.slice():n&&p(i)||(r[s]=i)};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&E(arguments[e],i);return r},extend:(e,t,n,{allOwnKeys:i}={})=>(E(t,(t,i)=>{n&&v(t)?e[i]=r(t,n):e[i]=t},{allOwnKeys:i}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,r)=>{let i,s,a;const c={};if(t=t||{},null==e)return t;do{for(i=Object.getOwnPropertyNames(e),s=i.length;s-- >0;)a=i[s],r&&!r(a,e,t)||c[a]||(t[a]=e[a],c[a]=!0);e=!1!==n&&o(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:c,kindOfTest:u,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(f(e))return e;let t=e.length;if(!b(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[s]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:N,hasOwnProperty:D,hasOwnProp:D,reduceDescriptors:B,freezeMethods:e=>{B(e,(t,n)=>{if(v(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];v(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))})},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach(e=>{n[e]=!0})};return f(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n}),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:j,global:M,isContextDefined:I,isSpecCompliantForm:function(e){return!!(e&&v(e.append)&&"FormData"===e[a]&&e[s])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(y(e)){if(t.indexOf(e)>=0)return;if(h(e))return e;if(!("toJSON"in e)){t[r]=e;const i=f(e)?[]:{};return E(e,(e,t)=>{const o=n(e,r+1);!p(o)&&(i[t]=o)}),t[r]=void 0,i}}return e};return n(e,0)},isAsyncFn:F,isThenable:e=>e&&(y(e)||v(e))&&v(e.then)&&v(e.catch),setImmediate:U,asap:K,isIterable:e=>null!=e&&v(e[s])};function G(e,t,n,r,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),i&&(this.response=i,this.status=i.status?i.status:null)}J.inherits(G,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:J.toJSONObject(this.config),code:this.code,status:this.status}}});const V=G.prototype,Y={};function X(e){return J.isPlainObject(e)||J.isArray(e)}function Q(e){return J.endsWith(e,"[]")?e.slice(0,-2):e}function Z(e,t,n){return e?e.concat(t).map(function(e,t){return e=Q(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Y[e]={value:e}}),Object.defineProperties(G,Y),Object.defineProperty(V,"isAxiosError",{value:!0}),G.from=(e,t,n,r,i,o)=>{const s=Object.create(V);J.toFlatObject(e,s,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e);const a=e&&e.message?e.message:"Error",c=null==t&&e?e.code:t;return G.call(s,a,c,n,r,i),e&&null==s.cause&&Object.defineProperty(s,"cause",{value:e,configurable:!0}),s.name=e&&e.name||"Error",o&&Object.assign(s,o),s};const ee=J.toFlatObject(J,{},null,function(e){return/^is[A-Z]/.test(e)});function te(e,t,n){if(!J.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=J.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!J.isUndefined(t[e])})).metaTokens,i=n.visitor||l,o=n.dots,s=n.indexes,a=(n.Blob||"undefined"!=typeof Blob&&Blob)&&J.isSpecCompliantForm(t);if(!J.isFunction(i))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(J.isDate(e))return e.toISOString();if(J.isBoolean(e))return e.toString();if(!a&&J.isBlob(e))throw new G("Blob is not supported. Use a Buffer instead.");return J.isArrayBuffer(e)||J.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function l(e,n,i){let a=e;if(e&&!i&&"object"==typeof e)if(J.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(J.isArray(e)&&function(e){return J.isArray(e)&&!e.some(X)}(e)||(J.isFileList(e)||J.endsWith(n,"[]"))&&(a=J.toArray(e)))return n=Q(n),a.forEach(function(e,r){!J.isUndefined(e)&&null!==e&&t.append(!0===s?Z([n],r,o):null===s?n:n+"[]",c(e))}),!1;return!!X(e)||(t.append(Z(i,n,o),c(e)),!1)}const u=[],d=Object.assign(ee,{defaultVisitor:l,convertValue:c,isVisitable:X});if(!J.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!J.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+r.join("."));u.push(n),J.forEach(n,function(n,o){!0===(!(J.isUndefined(n)||null===n)&&i.call(t,n,J.isString(o)?o.trim():o,r,d))&&e(n,r?r.concat(o):[o])}),u.pop()}}(e),t}function ne(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function re(e,t){this._pairs=[],e&&te(e,this,t)}const ie=re.prototype;function oe(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function se(e,t,n){if(!t)return e;const r=n&&n.encode||oe;J.isFunction(n)&&(n={serialize:n});const i=n&&n.serialize;let o;if(o=i?i(t,n):J.isURLSearchParams(t)?t.toString():new re(t,n).toString(r),o){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}ie.append=function(e,t){this._pairs.push([e,t])},ie.toString=function(e){const t=e?function(t){return e.call(this,t,ne)}:ne;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};var ae=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){J.forEach(this.handlers,function(t){null!==t&&e(t)})}},ce={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},le={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:re,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const ue="undefined"!=typeof window&&"undefined"!=typeof document,de="object"==typeof navigator&&navigator||void 0,fe=ue&&(!de||["ReactNative","NativeScript","NS"].indexOf(de.product)<0),pe="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,he=ue&&window.location.href||"http://localhost";var me={...Object.freeze({__proto__:null,hasBrowserEnv:ue,hasStandardBrowserWebWorkerEnv:pe,hasStandardBrowserEnv:fe,navigator:de,origin:he}),...le};function ge(e){function t(e,n,r,i){let o=e[i++];if("__proto__"===o)return!0;const s=Number.isFinite(+o),a=i>=e.length;return o=!o&&J.isArray(r)?r.length:o,a?(J.hasOwnProp(r,o)?r[o]=[r[o],n]:r[o]=n,!s):(r[o]&&J.isObject(r[o])||(r[o]=[]),t(e,n,r[o],i)&&J.isArray(r[o])&&(r[o]=function(e){const t={},n=Object.keys(e);let r;const i=n.length;let o;for(r=0;r<i;r++)o=n[r],t[o]=e[o];return t}(r[o])),!s)}if(J.isFormData(e)&&J.isFunction(e.entries)){const n={};return J.forEachEntry(e,(e,r)=>{t(function(e){return J.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),r,n,0)}),n}return null}const ve={transitional:ce,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,i=J.isObject(e);if(i&&J.isHTMLForm(e)&&(e=new FormData(e)),J.isFormData(e))return r?JSON.stringify(ge(e)):e;if(J.isArrayBuffer(e)||J.isBuffer(e)||J.isStream(e)||J.isFile(e)||J.isBlob(e)||J.isReadableStream(e))return e;if(J.isArrayBufferView(e))return e.buffer;if(J.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let o;if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return te(e,new me.classes.URLSearchParams,{visitor:function(e,t,n,r){return me.isNode&&J.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)},...t})}(e,this.formSerializer).toString();if((o=J.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return te(o?{"files[]":e}:e,t&&new t,this.formSerializer)}}return i||r?(t.setContentType("application/json",!1),function(e){if(J.isString(e))try{return(0,JSON.parse)(e),J.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||ve.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(J.isResponse(e)||J.isReadableStream(e))return e;if(e&&J.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e,this.parseReviver)}catch(e){if(n){if("SyntaxError"===e.name)throw G.from(e,G.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:me.classes.FormData,Blob:me.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};J.forEach(["delete","get","head","post","put","patch"],e=>{ve.headers[e]={}});var be=ve;const ye=J.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),we=Symbol("internals");function _e(e){return e&&String(e).trim().toLowerCase()}function xe(e){return!1===e||null==e?e:J.isArray(e)?e.map(xe):String(e)}function Se(e,t,n,r,i){return J.isFunction(r)?r.call(this,t,n):(i&&(t=n),J.isString(t)?J.isString(r)?-1!==t.indexOf(r):J.isRegExp(r)?r.test(t):void 0:void 0)}class Oe{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function i(e,t,n){const i=_e(t);if(!i)throw new Error("header name must be a non-empty string");const o=J.findKey(r,i);(!o||void 0===r[o]||!0===n||void 0===n&&!1!==r[o])&&(r[o||t]=xe(e))}const o=(e,t)=>J.forEach(e,(e,n)=>i(e,n,t));if(J.isPlainObject(e)||e instanceof this.constructor)o(e,t);else if(J.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))o((e=>{const t={};let n,r,i;return e&&e.split("\n").forEach(function(e){i=e.indexOf(":"),n=e.substring(0,i).trim().toLowerCase(),r=e.substring(i+1).trim(),!n||t[n]&&ye[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t})(e),t);else if(J.isObject(e)&&J.isIterable(e)){let n,r,i={};for(const t of e){if(!J.isArray(t))throw TypeError("Object iterator must return a key-value pair");i[r=t[0]]=(n=i[r])?J.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}o(i,t)}else null!=e&&i(t,e,n);return this}get(e,t){if(e=_e(e)){const n=J.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(J.isFunction(t))return t.call(this,e,n);if(J.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=_e(e)){const n=J.findKey(this,e);return!(!n||void 0===this[n]||t&&!Se(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function i(e){if(e=_e(e)){const i=J.findKey(n,e);!i||t&&!Se(0,n[i],i,t)||(delete n[i],r=!0)}}return J.isArray(e)?e.forEach(i):i(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const i=t[n];e&&!Se(0,this[i],i,e,!0)||(delete this[i],r=!0)}return r}normalize(e){const t=this,n={};return J.forEach(this,(r,i)=>{const o=J.findKey(n,i);if(o)return t[o]=xe(r),void delete t[i];const s=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}(i):String(i).trim();s!==i&&delete t[i],t[s]=xe(r),n[s]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return J.forEach(this,(n,r)=>{null!=n&&!1!==n&&(t[r]=e&&J.isArray(n)?n.join(", "):n)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach(e=>n.set(e)),n}static accessor(e){const t=(this[we]=this[we]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=_e(e);t[r]||(function(e,t){const n=J.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(e,n,i){return this[r].call(this,t,e,n,i)},configurable:!0})})}(n,e),t[r]=!0)}return J.isArray(e)?e.forEach(r):r(e),this}}Oe.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),J.reduceDescriptors(Oe.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),J.freezeMethods(Oe);var Pe=Oe;function ke(e,t){const n=this||be,r=t||n,i=Pe.from(r.headers);let o=r.data;return J.forEach(e,function(e){o=e.call(n,o,i.normalize(),t?t.status:void 0)}),i.normalize(),o}function Ce(e){return!(!e||!e.__CANCEL__)}function Re(e,t,n){G.call(this,null==e?"canceled":e,G.ERR_CANCELED,t,n),this.name="CanceledError"}function Ae(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new G("Request failed with status code "+n.status,[G.ERR_BAD_REQUEST,G.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}J.inherits(Re,G,{__CANCEL__:!0});const Ee=(e,t,n=3)=>{let r=0;const i=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let i,o=0,s=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),l=r[s];i||(i=c),n[o]=a,r[o]=c;let u=s,d=0;for(;u!==o;)d+=n[u++],u%=e;if(o=(o+1)%e,o===s&&(s=(s+1)%e),c-i<t)return;const f=l&&c-l;return f?Math.round(1e3*d/f):void 0}}(50,250);return function(n,o){let s,a,c=0,l=1e3/o;const u=(n,o=Date.now())=>{c=o,s=null,a&&(clearTimeout(a),a=null),(n=>{const o=n.loaded,s=n.lengthComputable?n.total:void 0,a=o-r,c=i(a);r=o,e({loaded:o,total:s,progress:s?o/s:void 0,bytes:a,rate:c||void 0,estimated:c&&s&&o<=s?(s-o)/c:void 0,event:n,lengthComputable:null!=s,[t?"download":"upload"]:!0})})(...n)};return[(...e)=>{const t=Date.now(),n=t-c;n>=l?u(e,t):(s=e,a||(a=setTimeout(()=>{a=null,u(s)},l-n)))},()=>s&&u(s)]}(0,n)},je=(e,t)=>{const n=null!=e;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Me=e=>(...t)=>J.asap(()=>e(...t));var Ie=me.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,me.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(me.origin),me.navigator&&/(msie|trident)/i.test(me.navigator.userAgent)):()=>!0,Te=me.hasStandardBrowserEnv?{write(e,t,n,r,i,o,s){if("undefined"==typeof document)return;const a=[`${e}=${encodeURIComponent(t)}`];J.isNumber(n)&&a.push(`expires=${new Date(n).toUTCString()}`),J.isString(r)&&a.push(`path=${r}`),J.isString(i)&&a.push(`domain=${i}`),!0===o&&a.push("secure"),J.isString(s)&&a.push(`SameSite=${s}`),document.cookie=a.join("; ")},read(e){if("undefined"==typeof document)return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read:()=>null,remove(){}};function Le(e,t,n){let r=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e&&(r||0==n)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Ne=e=>e instanceof Pe?{...e}:e;function De(e,t){t=t||{};const n={};function r(e,t,n,r){return J.isPlainObject(e)&&J.isPlainObject(t)?J.merge.call({caseless:r},e,t):J.isPlainObject(t)?J.merge({},t):J.isArray(t)?t.slice():t}function i(e,t,n,i){return J.isUndefined(t)?J.isUndefined(e)?void 0:r(void 0,e,0,i):r(e,t,0,i)}function o(e,t){if(!J.isUndefined(t))return r(void 0,t)}function s(e,t){return J.isUndefined(t)?J.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function a(n,i,o){return o in t?r(n,i):o in e?r(void 0,n):void 0}const c={url:o,method:o,data:o,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:a,headers:(e,t,n)=>i(Ne(e),Ne(t),0,!0)};return J.forEach(Object.keys({...e,...t}),function(r){const o=c[r]||i,s=o(e[r],t[r],r);J.isUndefined(s)&&o!==a||(n[r]=s)}),n}var He=e=>{const t=De({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:i,xsrfCookieName:o,headers:s,auth:a}=t;if(t.headers=s=Pe.from(s),t.url=se(Le(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),a&&s.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):""))),J.isFormData(n))if(me.hasStandardBrowserEnv||me.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(J.isFunction(n.getHeaders)){const e=n.getHeaders(),t=["content-type","content-length"];Object.entries(e).forEach(([e,n])=>{t.includes(e.toLowerCase())&&s.set(e,n)})}if(me.hasStandardBrowserEnv&&(r&&J.isFunction(r)&&(r=r(t)),r||!1!==r&&Ie(t.url))){const e=i&&o&&Te.read(o);e&&s.set(i,e)}return t},Be="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,n){const r=He(e);let i=r.data;const o=Pe.from(r.headers).normalize();let s,a,c,l,u,{responseType:d,onUploadProgress:f,onDownloadProgress:p}=r;function h(){l&&l(),u&&u(),r.cancelToken&&r.cancelToken.unsubscribe(s),r.signal&&r.signal.removeEventListener("abort",s)}let m=new XMLHttpRequest;function g(){if(!m)return;const r=Pe.from("getAllResponseHeaders"in m&&m.getAllResponseHeaders());Ae(function(e){t(e),h()},function(e){n(e),h()},{data:d&&"text"!==d&&"json"!==d?m.response:m.responseText,status:m.status,statusText:m.statusText,headers:r,config:e,request:m}),m=null}m.open(r.method.toUpperCase(),r.url,!0),m.timeout=r.timeout,"onloadend"in m?m.onloadend=g:m.onreadystatechange=function(){m&&4===m.readyState&&(0!==m.status||m.responseURL&&0===m.responseURL.indexOf("file:"))&&setTimeout(g)},m.onabort=function(){m&&(n(new G("Request aborted",G.ECONNABORTED,e,m)),m=null)},m.onerror=function(t){const r=new G(t&&t.message?t.message:"Network Error",G.ERR_NETWORK,e,m);r.event=t||null,n(r),m=null},m.ontimeout=function(){let t=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const i=r.transitional||ce;r.timeoutErrorMessage&&(t=r.timeoutErrorMessage),n(new G(t,i.clarifyTimeoutError?G.ETIMEDOUT:G.ECONNABORTED,e,m)),m=null},void 0===i&&o.setContentType(null),"setRequestHeader"in m&&J.forEach(o.toJSON(),function(e,t){m.setRequestHeader(t,e)}),J.isUndefined(r.withCredentials)||(m.withCredentials=!!r.withCredentials),d&&"json"!==d&&(m.responseType=r.responseType),p&&([c,u]=Ee(p,!0),m.addEventListener("progress",c)),f&&m.upload&&([a,l]=Ee(f),m.upload.addEventListener("progress",a),m.upload.addEventListener("loadend",l)),(r.cancelToken||r.signal)&&(s=t=>{m&&(n(!t||t.type?new Re(null,e,m):t),m.abort(),m=null)},r.cancelToken&&r.cancelToken.subscribe(s),r.signal&&(r.signal.aborted?s():r.signal.addEventListener("abort",s)));const v=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(r.url);v&&-1===me.protocols.indexOf(v)?n(new G("Unsupported protocol "+v+":",G.ERR_BAD_REQUEST,e)):m.send(i||null)})},Fe=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,r=new AbortController;const i=function(e){if(!n){n=!0,s();const t=e instanceof Error?e:this.reason;r.abort(t instanceof G?t:new Re(t instanceof Error?t.message:t))}};let o=t&&setTimeout(()=>{o=null,i(new G(`timeout ${t} of ms exceeded`,G.ETIMEDOUT))},t);const s=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(i):e.removeEventListener("abort",i)}),e=null)};e.forEach(e=>e.addEventListener("abort",i));const{signal:a}=r;return a.unsubscribe=()=>J.asap(s),a}};const Ue=function*(e,t){let n=e.byteLength;if(!t||n<t)return void(yield e);let r,i=0;for(;i<n;)r=i+t,yield e.slice(i,r),i=r},ze=(e,t,n,r)=>{const i=async function*(e,t){for await(const n of async function*(e){if(e[Symbol.asyncIterator])return void(yield*e);const t=e.getReader();try{for(;;){const{done:e,value:n}=await t.read();if(e)break;yield n}}finally{await t.cancel()}}(e))yield*Ue(n,t)}(e,t);let o,s=0,a=e=>{o||(o=!0,r&&r(e))};return new ReadableStream({async pull(e){try{const{done:t,value:r}=await i.next();if(t)return a(),void e.close();let o=r.byteLength;if(n){let e=s+=o;n(e)}e.enqueue(new Uint8Array(r))}catch(e){throw a(e),e}},cancel:e=>(a(e),i.return())},{highWaterMark:2})},{isFunction:$e}=J,qe=(({Request:e,Response:t})=>({Request:e,Response:t}))(J.global),{ReadableStream:We,TextEncoder:Ke}=J.global,Je=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},Ge=e=>{e=J.merge.call({skipUndefined:!0},qe,e);const{fetch:t,Request:n,Response:r}=e,i=t?$e(t):"function"==typeof fetch,o=$e(n),s=$e(r);if(!i)return!1;const a=i&&$e(We),c=i&&("function"==typeof Ke?(l=new Ke,e=>l.encode(e)):async e=>new Uint8Array(await new n(e).arrayBuffer()));var l;const u=o&&a&&Je(()=>{let e=!1;const t=new n(me.origin,{body:new We,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),d=s&&a&&Je(()=>J.isReadableStream(new r("").body)),f={stream:d&&(e=>e.body)};i&&["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!f[e]&&(f[e]=(t,n)=>{let r=t&&t[e];if(r)return r.call(t);throw new G(`Response type '${e}' is not supported`,G.ERR_NOT_SUPPORT,n)})});return async e=>{let{url:i,method:s,data:a,signal:l,cancelToken:p,timeout:h,onDownloadProgress:m,onUploadProgress:g,responseType:v,headers:b,withCredentials:y="same-origin",fetchOptions:w}=He(e),_=t||fetch;v=v?(v+"").toLowerCase():"text";let x=Fe([l,p&&p.toAbortSignal()],h),S=null;const O=x&&x.unsubscribe&&(()=>{x.unsubscribe()});let P;try{if(g&&u&&"get"!==s&&"head"!==s&&0!==(P=await(async(e,t)=>{const r=J.toFiniteNumber(e.getContentLength());return null==r?(async e=>{if(null==e)return 0;if(J.isBlob(e))return e.size;if(J.isSpecCompliantForm(e)){const t=new n(me.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return J.isArrayBufferView(e)||J.isArrayBuffer(e)?e.byteLength:(J.isURLSearchParams(e)&&(e+=""),J.isString(e)?(await c(e)).byteLength:void 0)})(t):r})(b,a))){let e,t=new n(i,{method:"POST",body:a,duplex:"half"});if(J.isFormData(a)&&(e=t.headers.get("content-type"))&&b.setContentType(e),t.body){const[e,n]=je(P,Ee(Me(g)));a=ze(t.body,65536,e,n)}}J.isString(y)||(y=y?"include":"omit");const t=o&&"credentials"in n.prototype,l={...w,signal:x,method:s.toUpperCase(),headers:b.normalize().toJSON(),body:a,duplex:"half",credentials:t?y:void 0};S=o&&new n(i,l);let p=await(o?_(S,w):_(i,l));const h=d&&("stream"===v||"response"===v);if(d&&(m||h&&O)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=p[t]});const t=J.toFiniteNumber(p.headers.get("content-length")),[n,i]=m&&je(t,Ee(Me(m),!0))||[];p=new r(ze(p.body,65536,n,()=>{i&&i(),O&&O()}),e)}v=v||"text";let k=await f[J.findKey(f,v)||"text"](p,e);return!h&&O&&O(),await new Promise((t,n)=>{Ae(t,n,{data:k,headers:Pe.from(p.headers),status:p.status,statusText:p.statusText,config:e,request:S})})}catch(t){if(O&&O(),t&&"TypeError"===t.name&&/Load failed|fetch/i.test(t.message))throw Object.assign(new G("Network Error",G.ERR_NETWORK,e,S),{cause:t.cause||t});throw G.from(t,t&&t.code,e,S)}}},Ve=new Map,Ye=e=>{let t=e&&e.env||{};const{fetch:n,Request:r,Response:i}=t,o=[r,i,n];let s,a,c=o.length,l=Ve;for(;c--;)s=o[c],a=l.get(s),void 0===a&&l.set(s,a=c?new Map:Ge(t)),l=a;return a};Ye();const Xe={http:null,xhr:Be,fetch:{get:Ye}};J.forEach(Xe,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}});const Qe=e=>`- ${e}`,Ze=e=>J.isFunction(e)||null===e||!1===e;var et=function(e,t){e=J.isArray(e)?e:[e];const{length:n}=e;let r,i;const o={};for(let s=0;s<n;s++){let n;if(r=e[s],i=r,!Ze(r)&&(i=Xe[(n=String(r)).toLowerCase()],void 0===i))throw new G(`Unknown adapter '${n}'`);if(i&&(J.isFunction(i)||(i=i.get(t))))break;o[n||"#"+s]=i}if(!i){const e=Object.entries(o).map(([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));throw new G("There is no suitable adapter to dispatch the request "+(n?e.length>1?"since :\n"+e.map(Qe).join("\n"):" "+Qe(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return i};function tt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Re(null,e)}function nt(e){return tt(e),e.headers=Pe.from(e.headers),e.data=ke.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),et(e.adapter||be.adapter,e)(e).then(function(t){return tt(e),t.data=ke.call(e,e.transformResponse,t),t.headers=Pe.from(t.headers),t},function(t){return Ce(t)||(tt(e),t&&t.response&&(t.response.data=ke.call(e,e.transformResponse,t.response),t.response.headers=Pe.from(t.response.headers))),Promise.reject(t)})}const rt="1.13.2",it={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{it[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const ot={};it.transitional=function(e,t,n){function r(e,t){return"[Axios v"+rt+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,i,o)=>{if(!1===e)throw new G(r(i," has been removed"+(t?" in "+t:"")),G.ERR_DEPRECATED);return t&&!ot[i]&&(ot[i]=!0,console.warn(r(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,i,o)}},it.spelling=function(e){return(t,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};var st={assertOptions:function(e,t,n){if("object"!=typeof e)throw new G("options must be an object",G.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let i=r.length;for(;i-- >0;){const o=r[i],s=t[o];if(s){const t=e[o],n=void 0===t||s(t,o,e);if(!0!==n)throw new G("option "+o+" must be "+n,G.ERR_BAD_OPTION_VALUE);continue}if(!0!==n)throw new G("Unknown option "+o,G.ERR_BAD_OPTION)}},validators:it};const at=st.validators;class ct{constructor(e){this.defaults=e||{},this.interceptors={request:new ae,response:new ae}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t={};Error.captureStackTrace?Error.captureStackTrace(t):t=new Error;const n=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?n&&!String(e.stack).endsWith(n.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+n):e.stack=n}catch(e){}}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=De(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:i}=t;void 0!==n&&st.assertOptions(n,{silentJSONParsing:at.transitional(at.boolean),forcedJSONParsing:at.transitional(at.boolean),clarifyTimeoutError:at.transitional(at.boolean)},!1),null!=r&&(J.isFunction(r)?t.paramsSerializer={serialize:r}:st.assertOptions(r,{encode:at.function,serialize:at.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),st.assertOptions(t,{baseUrl:at.spelling("baseURL"),withXsrfToken:at.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let o=i&&J.merge(i.common,i[t.method]);i&&J.forEach(["delete","get","head","post","put","patch","common"],e=>{delete i[e]}),t.headers=Pe.concat(o,i);const s=[];let a=!0;this.interceptors.request.forEach(function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,s.unshift(e.fulfilled,e.rejected))});const c=[];let l;this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let u,d=0;if(!a){const e=[nt.bind(this),void 0];for(e.unshift(...s),e.push(...c),u=e.length,l=Promise.resolve(t);d<u;)l=l.then(e[d++],e[d++]);return l}u=s.length;let f=t;for(;d<u;){const e=s[d++],t=s[d++];try{f=e(f)}catch(e){t.call(this,e);break}}try{l=nt.call(this,f)}catch(e){return Promise.reject(e)}for(d=0,u=c.length;d<u;)l=l.then(c[d++],c[d++]);return l}getUri(e){return se(Le((e=De(this.defaults,e)).baseURL,e.url,e.allowAbsoluteUrls),e.params,e.paramsSerializer)}}J.forEach(["delete","get","head","options"],function(e){ct.prototype[e]=function(t,n){return this.request(De(n||{},{method:e,url:t,data:(n||{}).data}))}}),J.forEach(["post","put","patch"],function(e){function t(t){return function(n,r,i){return this.request(De(i||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:n,data:r}))}}ct.prototype[e]=t(),ct.prototype[e+"Form"]=t(!0)});var lt=ct;class ut{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise(function(e){t=e});const n=this;this.promise.then(e=>{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t;const r=new Promise(e=>{n.subscribe(e),t=e}).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e(function(e,r,i){n.reason||(n.reason=new Re(e,r,i),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;return{token:new ut(function(t){e=t}),cancel:e}}}var dt=ut;const ft={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(ft).forEach(([e,t])=>{ft[t]=e});var pt=ft;const ht=function e(t){const n=new lt(t),i=r(lt.prototype.request,n);return J.extend(i,lt.prototype,n,{allOwnKeys:!0}),J.extend(i,n,null,{allOwnKeys:!0}),i.create=function(n){return e(De(t,n))},i}(be);ht.Axios=lt,ht.CanceledError=Re,ht.CancelToken=dt,ht.isCancel=Ce,ht.VERSION=rt,ht.toFormData=te,ht.AxiosError=G,ht.Cancel=ht.CanceledError,ht.all=function(e){return Promise.all(e)},ht.spread=function(e){return function(t){return e.apply(null,t)}},ht.isAxiosError=function(e){return J.isObject(e)&&!0===e.isAxiosError},ht.mergeConfig=De,ht.AxiosHeaders=Pe,ht.formToJSON=e=>ge(J.isHTMLForm(e)?new FormData(e):e),ht.getAdapter=et,ht.HttpStatusCode=pt,ht.default=ht,e.exports=ht},6440(e,t,n){var r;e.exports=(r=n(9021),function(){if("function"==typeof ArrayBuffer){var e=r.lib.WordArray,t=e.init,n=e.init=function(e){if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),(e instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array)&&(e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),e instanceof Uint8Array){for(var n=e.byteLength,r=[],i=0;i<n;i++)r[i>>>2]|=e[i]<<24-i%4*8;t.call(this,r,n)}else t.apply(this,arguments)};n.prototype=e}}(),r.lib.WordArray)},6569(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.publishLast=void 0;var r=n(5130),i=n(4359);t.publishLast=function(){return function(e){var t=new r.AsyncSubject;return new i.ConnectableObservable(e,function(){return t})}}},6606(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.bufferWhen=void 0;var r=n(5212),i=n(5717),o=n(7214),s=n(9724);t.bufferWhen=function(e){return r.operate(function(t,n){var r=null,a=null,c=function(){null==a||a.unsubscribe();var t=r;r=[],t&&n.next(t),s.innerFrom(e()).subscribe(a=o.createOperatorSubscriber(n,c,i.noop))};c(),t.subscribe(o.createOperatorSubscriber(n,function(e){return null==r?void 0:r.push(e)},function(){r&&n.next(r),n.complete()},void 0,function(){return r=a=null}))})}},6632(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.exhaustMap=void 0;var r=n(6872),i=n(9724),o=n(5212),s=n(7214);t.exhaustMap=function e(t,n){return n?function(o){return o.pipe(e(function(e,o){return i.innerFrom(t(e,o)).pipe(r.map(function(t,r){return n(e,t,o,r)}))}))}:o.operate(function(e,n){var r=0,o=null,a=!1;e.subscribe(s.createOperatorSubscriber(n,function(e){o||(o=s.createOperatorSubscriber(n,void 0,function(){o=null,a&&n.complete()}),i.innerFrom(t(e,r++)).subscribe(o))},function(){a=!0,!o&&n.complete()}))})}},6677(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.raceWith=void 0;var o=n(9795),s=n(5212),a=n(7699);t.raceWith=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return e.length?s.operate(function(t,n){o.raceInit(i([t],r(e)))(n)}):a.identity}},6680(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.throwError=void 0;var r=n(8051),i=n(281);t.throwError=function(e,t){var n=i.isFunction(e)?e:function(){return e},o=function(e){return e.error(n())};return new r.Observable(t?function(e){return t.schedule(o,0,e)}:o)}},6692(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.MinimaxProviderService=void 0;const o=n(9430),s=n(4524),a=n(6240),c=n(1170),l=n(389),u=n(9048);let d=class extends a.BaseAiProvider{constructor(e){super(e),this.name="minimax",this.displayName="Minimax (MiniMax-M2)",this.capabilities=[c.ProviderCapability.CHAT,c.ProviderCapability.COMMAND_GENERATION,c.ProviderCapability.COMMAND_EXPLANATION,c.ProviderCapability.REASONING,c.ProviderCapability.STREAMING],this.authConfig={type:"bearer",credentials:{apiKey:""}},this.client=null}configure(e){super.configure(e),this.authConfig.credentials.apiKey=e.apiKey||"",this.initializeClient()}initializeClient(){if(this.config?.apiKey)try{this.client=new s.Anthropic({apiKey:this.config.apiKey,baseURL:this.getBaseURL()}),this.logger.info("Minimax client initialized",{baseURL:this.getBaseURL(),model:this.config.model||"MiniMax-M2"})}catch(e){throw this.logger.error("Failed to initialize Minimax client",e),e}else this.logger.warn("Minimax API key not provided")}async chat(e){if(!this.client)throw new Error("Minimax client not initialized");this.logRequest(e);try{const t=await this.withRetry(async()=>{const t=await this.client.messages.create({model:this.config?.model||"MiniMax-M2",max_tokens:e.maxTokens||1e3,system:e.systemPrompt||this.getDefaultSystemPrompt(),messages:this.transformMessages(e.messages),temperature:e.temperature||1,stream:e.stream||!1});return this.logResponse(t),t});return this.transformChatResponse(t)}catch(t){throw this.logError(t,{request:e}),new Error(`Minimax chat failed: ${t instanceof Error?t.message:String(t)}`)}}async generateCommand(e){const t=this.buildCommandPrompt(e),n={messages:[{id:this.generateId(),role:l.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:500,temperature:.3},r=await this.chat(n);return this.parseCommandResponse(r.message.content)}async explainCommand(e){const t=this.buildExplainPrompt(e),n={messages:[{id:this.generateId(),role:l.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:1e3,temperature:.5},r=await this.chat(n);return this.parseExplainResponse(r.message.content)}async analyzeResult(e){const t=this.buildAnalysisPrompt(e),n={messages:[{id:this.generateId(),role:l.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:1e3,temperature:.7},r=await this.chat(n);return this.parseAnalysisResponse(r.message.content)}async healthCheck(){try{return this.client?(await this.client.messages.create({model:this.config?.model||"MiniMax-M2",max_tokens:1,messages:[{role:"user",content:"Hi"}]}),this.lastHealthCheck={status:c.HealthStatus.HEALTHY,timestamp:new Date},c.HealthStatus.HEALTHY):c.HealthStatus.UNHEALTHY}catch(e){return this.logger.error("Minimax health check failed",e),this.lastHealthCheck={status:c.HealthStatus.UNHEALTHY,timestamp:new Date},c.HealthStatus.UNHEALTHY}}validateConfig(){const e=super.validateConfig();return this.config?.apiKey?(this.config.apiKey&&!this.config.apiKey.startsWith("sk-")&&(e.warnings=[...e.warnings||[],"API key format might be invalid (should start with sk-)"]),e):{valid:!1,errors:[...e.errors||[],"Minimax API key is required"]}}getDefaultBaseURL(){return"https://api.minimaxi.com/anthropic"}transformMessages(e){return e.map(e=>({role:e.role,content:[{type:"text",text:e.content}]}))}transformChatResponse(e){const t=e.content[0],n="text"===t.type?t.text:"";return{message:{id:this.generateId(),role:l.MessageRole.ASSISTANT,content:n,timestamp:new Date},usage:e.usage?{promptTokens:e.usage.input_tokens||0,completionTokens:e.usage.output_tokens||0,totalTokens:(e.usage.input_tokens||0)+(e.usage.output_tokens||0)}:void 0}}buildCommandPrompt(e){let t=`请将以下自然语言描述转换为准确的终端命令:\n\n"${e.naturalLanguage}"\n\n`;return e.context&&(t+="当前环境:\n",e.context.currentDirectory&&(t+=`- 当前目录:${e.context.currentDirectory}\n`),e.context.operatingSystem&&(t+=`- 操作系统:${e.context.operatingSystem}\n`),e.context.shell&&(t+=`- Shell:${e.context.shell}\n`)),t+="\n请直接返回JSON格式:\n",t+="{\n",t+=' "command": "具体命令",\n',t+=' "explanation": "命令解释",\n',t+=' "confidence": 0.95\n',t+="}\n",t}buildExplainPrompt(e){let t=`请详细解释以下终端命令:\n\n\`${e.command}\`\n\n`;return e.context?.currentDirectory&&(t+=`当前目录:${e.context.currentDirectory}\n`),e.context?.operatingSystem&&(t+=`操作系统:${e.context.operatingSystem}\n`),t+="\n请按以下JSON格式返回:\n",t+="{\n",t+=' "explanation": "整体解释",\n',t+=' "breakdown": [\n',t+=' {"part": "命令部分", "description": "说明"}\n',t+=" ],\n",t+=' "examples": ["使用示例"]\n',t+="}\n",t}buildAnalysisPrompt(e){let t="请分析以下命令执行结果:\n\n";return t+=`命令:${e.command}\n`,t+=`退出码:${e.exitCode}\n`,t+=`输出:\n${e.output}\n\n`,e.context?.workingDirectory&&(t+=`工作目录:${e.context.workingDirectory}\n`),t+="\n请按以下JSON格式返回:\n",t+="{\n",t+=' "summary": "结果总结",\n',t+=' "insights": ["洞察1", "洞察2"],\n',t+=' "success": true/false,\n',t+=' "issues": [\n',t+=' {"severity": "warning|error|info", "message": "问题描述", "suggestion": "建议"}\n',t+=" ]\n",t+="}\n",t}parseCommandResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{command:e.command||"",explanation:e.explanation||"",confidence:e.confidence||.5}}}catch(e){this.logger.warn("Failed to parse command response as JSON",e)}const t=e.split("\n").map(e=>e.trim()).filter(e=>e);return{command:t[0]||"",explanation:t.slice(1).join(" ")||"AI生成的命令",confidence:.5}}parseExplainResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{explanation:e.explanation||"",breakdown:e.breakdown||[],examples:e.examples||[]}}}catch(e){this.logger.warn("Failed to parse explain response as JSON",e)}return{explanation:e,breakdown:[]}}parseAnalysisResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{summary:e.summary||"",insights:e.insights||[],success:!1!==e.success,issues:e.issues||[]}}}catch(e){this.logger.warn("Failed to parse analysis response as JSON",e)}return{summary:e,insights:[],success:!0}}getDefaultSystemPrompt(){return"你是一个专业的终端命令助手,擅长将自然语言转换为准确的命令,并提供详细的解释。"}};d=r([(0,o.Injectable)(),i("design:paramtypes",[u.LoggerService])],d),t.MinimaxProviderService=d},6707(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mergeScan=void 0;var r=n(5212),i=n(2574);t.mergeScan=function(e,t,n){return void 0===n&&(n=1/0),r.operate(function(r,o){var s=t;return i.mergeInternals(r,o,function(t,n){return e(s,t,n)},n,function(e){s=e},!1,void 0,function(){return s=null})})}},6744(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.pairwise=void 0;var r=n(5212),i=n(7214);t.pairwise=function(){return r.operate(function(e,t){var n,r=!1;e.subscribe(i.createOperatorSubscriber(t,function(e){var i=n;n=e,r&&t.next([i,e]),r=!0}))})}},6749(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.zip=void 0;var o=n(1415),s=n(5212);t.zip=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return s.operate(function(t,n){o.zip.apply(void 0,i([t],r(e))).subscribe(n)})}},6791(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.endWith=void 0;var o=n(9546),s=n(1587);t.endWith=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return function(t){return o.concat(t,s.of.apply(void 0,i([],r(e))))}}},6805(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.scheduleIterable=void 0;var r=n(8051),i=n(4891),o=n(281),s=n(8619);t.scheduleIterable=function(e,t){return new r.Observable(function(n){var r;return s.executeSchedule(n,t,function(){r=e[i.iterator](),s.executeSchedule(n,t,function(){var e,t,i;try{t=(e=r.next()).value,i=e.done}catch(e){return void n.error(e)}i?n.complete():n.next(t)},0,!0)}),function(){return o.isFunction(null==r?void 0:r.return)&&r.return()}})}},6808(e,t,n){"use strict";var r,i=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),o=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.AnonymousSubject=t.Subject=void 0;var s=n(8051),a=n(9879),c=n(839),l=n(4830),u=n(2688),d=function(e){function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return i(t,e),t.prototype.lift=function(e){var t=new f(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new c.ObjectUnsubscribedError},t.prototype.next=function(e){var t=this;u.errorContext(function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||(t.currentObservers=Array.from(t.observers));try{for(var i=o(t.currentObservers),s=i.next();!s.done;s=i.next())s.value.next(e)}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}})},t.prototype.error=function(e){var t=this;u.errorContext(function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}})},t.prototype.complete=function(){var e=this;u.errorContext(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,i=n.isStopped,o=n.observers;return r||i?a.EMPTY_SUBSCRIPTION:(this.currentObservers=null,o.push(e),new a.Subscription(function(){t.currentObservers=null,l.arrRemove(o,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,i=t.isStopped;n?e.error(r):i&&e.complete()},t.prototype.asObservable=function(){var e=new s.Observable;return e.source=this,e},t.create=function(e,t){return new f(e,t)},t}(s.Observable);t.Subject=d;var f=function(e){function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return i(t,e),t.prototype.next=function(e){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.next)||void 0===n||n.call(t,e)},t.prototype.error=function(e){var t,n;null===(n=null===(t=this.destination)||void 0===t?void 0:t.error)||void 0===n||n.call(t,e)},t.prototype.complete=function(){var e,t;null===(t=null===(e=this.destination)||void 0===e?void 0:e.complete)||void 0===t||t.call(e)},t.prototype._subscribe=function(e){var t,n;return null!==(n=null===(t=this.source)||void 0===t?void 0:t.subscribe(e))&&void 0!==n?n:a.EMPTY_SUBSCRIPTION},t}(d);t.AnonymousSubject=f},6835(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.GlmProviderService=void 0;const s=n(9430),a=o(n(6425)),c=n(6240),l=n(1170),u=n(389),d=n(9048);let f=class extends c.BaseAiProvider{constructor(e){super(e),this.name="glm",this.displayName="GLM (ChatGLM-4.6)",this.capabilities=[l.ProviderCapability.CHAT,l.ProviderCapability.COMMAND_GENERATION,l.ProviderCapability.COMMAND_EXPLANATION,l.ProviderCapability.FUNCTION_CALL,l.ProviderCapability.STREAMING],this.authConfig={type:"bearer",credentials:{apiKey:""}},this.client=null}configure(e){super.configure(e),this.authConfig.credentials.apiKey=e.apiKey||"",this.initializeClient()}initializeClient(){if(this.config?.apiKey)try{this.client=a.default.create({baseURL:this.getBaseURL(),timeout:this.getTimeout(),headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json"}}),this.client.interceptors.request.use(e=>(this.logger.debug("GLM API request",{url:e.url,method:e.method,data:this.sanitizeRequest(e.data)}),e),e=>(this.logger.error("GLM API request error",e),Promise.reject(e))),this.client.interceptors.response.use(e=>(this.logger.debug("GLM API response",{status:e.status,data:this.sanitizeResponse(e.data)}),e),e=>(this.logger.error("GLM API response error",e),Promise.reject(e))),this.logger.info("GLM client initialized",{baseURL:this.getBaseURL(),model:this.config.model||"glm-4.6"})}catch(e){throw this.logger.error("Failed to initialize GLM client",e),e}else this.logger.warn("GLM API key not provided")}async chat(e){if(!this.client)throw new Error("GLM client not initialized");this.logRequest(e);try{const t=await this.withRetry(async()=>{const t=await this.client.post("/v1/messages",{model:this.config?.model||"glm-4.6",max_tokens:e.maxTokens||1e3,system:e.systemPrompt||this.getDefaultSystemPrompt(),messages:this.transformMessages(e.messages),temperature:e.temperature||.95,stream:e.stream||!1});return this.logResponse(t.data),t.data});return this.transformChatResponse(t)}catch(t){throw this.logError(t,{request:e}),new Error(`GLM chat failed: ${t instanceof Error?t.message:String(t)}`)}}async generateCommand(e){const t=this.buildCommandPrompt(e),n={messages:[{id:this.generateId(),role:u.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:500,temperature:.3},r=await this.chat(n);return this.parseCommandResponse(r.message.content)}async explainCommand(e){const t=this.buildExplainPrompt(e),n={messages:[{id:this.generateId(),role:u.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:1e3,temperature:.5},r=await this.chat(n);return this.parseExplainResponse(r.message.content)}async analyzeResult(e){const t=this.buildAnalysisPrompt(e),n={messages:[{id:this.generateId(),role:u.MessageRole.USER,content:t,timestamp:new Date}],maxTokens:1e3,temperature:.7},r=await this.chat(n);return this.parseAnalysisResponse(r.message.content)}async healthCheck(){try{return this.client?200===(await this.client.post("/v1/messages",{model:this.config?.model||"glm-4.6",max_tokens:1,messages:[{role:"user",content:[{type:"text",text:"Hi"}]}]})).status?(this.lastHealthCheck={status:l.HealthStatus.HEALTHY,timestamp:new Date},l.HealthStatus.HEALTHY):l.HealthStatus.DEGRADED:l.HealthStatus.UNHEALTHY}catch(e){return this.logger.error("GLM health check failed",e),this.lastHealthCheck={status:l.HealthStatus.UNHEALTHY,timestamp:new Date},l.HealthStatus.UNHEALTHY}}validateConfig(){const e=super.validateConfig();if(!this.config?.apiKey)return{valid:!1,errors:[...e.errors||[],"GLM API key is required"]};const t=["glm-4.6"];return this.config.model&&!t.includes(this.config.model)&&(e.warnings=[...e.warnings||[],`Model ${this.config.model} might not be supported. Supported models: ${t.join(", ")}`]),e}getDefaultBaseURL(){return"https://open.bigmodel.cn/api/anthropic"}transformMessages(e){return e.map(e=>({role:e.role,content:[{type:"text",text:e.content}]}))}transformChatResponse(e){const t=e.content[0],n="text"===t.type?t.text:"";return{message:{id:this.generateId(),role:u.MessageRole.ASSISTANT,content:n,timestamp:new Date},usage:e.usage?{promptTokens:e.usage.input_tokens||0,completionTokens:e.usage.output_tokens||0,totalTokens:(e.usage.input_tokens||0)+(e.usage.output_tokens||0)}:void 0}}buildCommandPrompt(e){let t=`请将以下自然语言描述转换为准确的终端命令:\n\n"${e.naturalLanguage}"\n\n`;return e.context&&(t+="当前环境:\n",e.context.currentDirectory&&(t+=`- 当前目录:${e.context.currentDirectory}\n`),e.context.operatingSystem&&(t+=`- 操作系统:${e.context.operatingSystem}\n`),e.context.shell&&(t+=`- Shell:${e.context.shell}\n`)),t+="\n请直接返回JSON格式:\n",t+="{\n",t+=' "command": "具体命令",\n',t+=' "explanation": "命令解释",\n',t+=' "confidence": 0.95\n',t+="}\n",t}buildExplainPrompt(e){let t=`请详细解释以下终端命令:\n\n\`${e.command}\`\n\n`;return e.context?.currentDirectory&&(t+=`当前目录:${e.context.currentDirectory}\n`),e.context?.operatingSystem&&(t+=`操作系统:${e.context.operatingSystem}\n`),t+="\n请按以下JSON格式返回:\n",t+="{\n",t+=' "explanation": "整体解释",\n',t+=' "breakdown": [\n',t+=' {"part": "命令部分", "description": "说明"}\n',t+=" ],\n",t+=' "examples": ["使用示例"]\n',t+="}\n",t}buildAnalysisPrompt(e){let t="请分析以下命令执行结果:\n\n";return t+=`命令:${e.command}\n`,t+=`退出码:${e.exitCode}\n`,t+=`输出:\n${e.output}\n\n`,e.context?.workingDirectory&&(t+=`工作目录:${e.context.workingDirectory}\n`),t+="\n请按以下JSON格式返回:\n",t+="{\n",t+=' "summary": "结果总结",\n',t+=' "insights": ["洞察1", "洞察2"],\n',t+=' "success": true/false,\n',t+=' "issues": [\n',t+=' {"severity": "warning|error|info", "message": "问题描述", "suggestion": "建议"}\n',t+=" ]\n",t+="}\n",t}parseCommandResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{command:e.command||"",explanation:e.explanation||"",confidence:e.confidence||.5}}}catch(e){this.logger.warn("Failed to parse command response as JSON",e)}const t=e.split("\n").map(e=>e.trim()).filter(e=>e);return{command:t[0]||"",explanation:t.slice(1).join(" ")||"AI生成的命令",confidence:.5}}parseExplainResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{explanation:e.explanation||"",breakdown:e.breakdown||[],examples:e.examples||[]}}}catch(e){this.logger.warn("Failed to parse explain response as JSON",e)}return{explanation:e,breakdown:[]}}parseAnalysisResponse(e){try{const t=e.match(/\{[\s\S]*\}/);if(t){const e=JSON.parse(t[0]);return{summary:e.summary||"",insights:e.insights||[],success:!1!==e.success,issues:e.issues||[]}}}catch(e){this.logger.warn("Failed to parse analysis response as JSON",e)}return{summary:e,insights:[],success:!0}}getDefaultSystemPrompt(){return"你是一个专业的终端命令助手,擅长将自然语言转换为准确的命令,并提供详细的解释。"}};f=r([(0,s.Injectable)(),i("design:paramtypes",[d.LoggerService])],f),t.GlmProviderService=f},6872(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.map=void 0;var r=n(5212),i=n(7214);t.map=function(e,t){return r.operate(function(n,r){var o=0;n.subscribe(i.createOperatorSubscriber(r,function(n){r.next(e.call(t,n,o++))}))})}},6883(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.CommandPreviewComponent=void 0;const o=n(9430),s=n(8785);let a=class{constructor(){this.command=null,this.riskLevel=s.RiskLevel.LOW,this.executed=new o.EventEmitter,this.closed=new o.EventEmitter}getRiskText(){switch(this.riskLevel){case s.RiskLevel.LOW:return"低风险";case s.RiskLevel.MEDIUM:return"中风险";case s.RiskLevel.HIGH:return"高风险";case s.RiskLevel.CRITICAL:return"极风险";default:return"未知风险"}}getRiskIcon(){switch(this.riskLevel){case s.RiskLevel.LOW:return"icon-check-circle";case s.RiskLevel.MEDIUM:return"icon-warning";case s.RiskLevel.HIGH:return"icon-alert-triangle";case s.RiskLevel.CRITICAL:return"icon-alert-octagon";default:return"icon-help-circle"}}copyCommand(){this.command&&navigator.clipboard.writeText(this.command.command)}execute(){this.command&&this.executed.emit(this.command)}close(){this.closed.emit()}selectAlternative(e){}};r([(0,o.Input)(),i("design:type",Object)],a.prototype,"command",void 0),r([(0,o.Input)(),i("design:type",String)],a.prototype,"riskLevel",void 0),r([(0,o.Output)(),i("design:type",Object)],a.prototype,"executed",void 0),r([(0,o.Output)(),i("design:type",Object)],a.prototype,"closed",void 0),a=r([(0,o.Component)({selector:"app-command-preview",template:'\n <div class="command-preview" *ngIf="command">\n <div class="preview-header">\n <h4>\n <i class="icon-terminal"></i>\n 命令预览\n </h4>\n <button class="btn-close" (click)="close()">\n <i class="icon-x"></i>\n </button>\n </div>\n\n <div class="preview-content">\n \x3c!-- 风险级别 --\x3e\n <div class="risk-indicator" [ngClass]="\'risk-\' + riskLevel.toLowerCase()">\n <i [class]="getRiskIcon()"></i>\n <span>{{ getRiskText() }}</span>\n </div>\n\n \x3c!-- 命令 --\x3e\n <div class="command-section">\n <label>将要执行的命令:</label>\n <div class="command-display">\n <code>{{ command.command }}</code>\n <button class="btn-copy" (click)="copyCommand()" title="复制">\n <i class="icon-copy"></i>\n </button>\n </div>\n </div>\n\n \x3c!-- 解释 --\x3e\n <div class="explanation-section">\n <label>命令解释:</label>\n <p>{{ command.explanation }}</p>\n </div>\n\n \x3c!-- 置信度 --\x3e\n <div class="confidence-section" *ngIf="command.confidence">\n <label>AI置信度:</label>\n <div class="confidence-meter">\n <div class="confidence-bar" [style.width.%]="command.confidence * 100"></div>\n <span class="confidence-text">{{ (command.confidence * 100).toFixed(0) }}%</span>\n </div>\n </div>\n\n \x3c!-- 替代方案 --\x3e\n <div class="alternatives-section" *ngIf="command.alternatives && command.alternatives.length > 0">\n <label>替代方案:</label>\n <div class="alternatives-list">\n <div\n *ngFor="let alt of command.alternatives"\n class="alternative-item"\n (click)="selectAlternative(alt)">\n <code>{{ alt.command }}</code>\n <span class="alt-confidence">{{ (alt.confidence * 100).toFixed(0) }}%</span>\n </div>\n </div>\n </div>\n </div>\n\n <div class="preview-footer">\n <button class="btn btn-secondary" (click)="close()">取消</button>\n <button class="btn btn-primary" (click)="execute()">执行命令</button>\n </div>\n </div>\n ',styles:["\n .command-preview {\n background: var(--ai-bg-primary);\n border: 1px solid var(--ai-border);\n border-radius: 0.5rem;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n max-width: 600px;\n }\n .preview-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n background: var(--ai-bg-secondary);\n border-bottom: 1px solid var(--ai-border);\n }\n .preview-content {\n padding: 1rem;\n max-height: 50vh;\n overflow-y: auto;\n }\n .risk-indicator {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem;\n margin-bottom: 1rem;\n border-radius: 0.375rem;\n }\n .command-section, .explanation-section, .confidence-section, .alternatives-section {\n margin-bottom: 1rem;\n }\n .command-display {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n background: var(--ai-bg-secondary);\n padding: 0.75rem;\n border-radius: 0.375rem;\n }\n .alternatives-list {\n background: var(--ai-bg-secondary);\n border-radius: 0.375rem;\n overflow: hidden;\n }\n .alternative-item {\n padding: 0.75rem;\n border-bottom: 1px solid var(--ai-border);\n cursor: pointer;\n transition: background-color 0.2s;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n .alternative-item:hover {\n background-color: var(--ai-border);\n }\n .preview-footer {\n padding: 1rem;\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n border-top: 1px solid var(--ai-border);\n }\n "]})],a),t.CommandPreviewComponent=a},6911(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.takeUntil=void 0;var r=n(5212),i=n(7214),o=n(9724),s=n(5717);t.takeUntil=function(e){return r.operate(function(t,n){o.innerFrom(e).subscribe(i.createOperatorSubscriber(n,function(){return n.complete()},s.noop)),!n.closed&&t.subscribe(n)})}},6939(e,t,n){var r,i,o;e.exports=(o=n(9021),n(7165),o.mode.CTR=(i=(r=o.lib.BlockCipherMode.extend()).Encryptor=r.extend({processBlock:function(e,t){var n=this._cipher,r=n.blockSize,i=this._iv,o=this._counter;i&&(o=this._counter=i.slice(0),this._iv=void 0);var s=o.slice(0);n.encryptBlock(s,0),o[r-1]=o[r-1]+1|0;for(var a=0;a<r;a++)e[t+a]^=s[a]}}),r.Decryptor=i,r),o.mode.CTR)},6975(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.withLatestFrom=void 0;var o=n(5212),s=n(7214),a=n(9724),c=n(7699),l=n(5717),u=n(6404);t.withLatestFrom=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=u.popResultSelector(e);return o.operate(function(t,o){for(var u=e.length,d=new Array(u),f=e.map(function(){return!1}),p=!1,h=function(t){a.innerFrom(e[t]).subscribe(s.createOperatorSubscriber(o,function(e){d[t]=e,p||f[t]||(f[t]=!0,(p=f.every(c.identity))&&(f=null))},l.noop))},m=0;m<u;m++)h(m);t.subscribe(s.createOperatorSubscriber(o,function(e){if(p){var t=i([e],r(d));o.next(n?n.apply(void 0,i([],r(t))):t)}}))})}},6977(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.zipWith=void 0;var o=n(6749);t.zipWith=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return o.zip.apply(void 0,i([],r(e)))}},7024(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ArgumentOutOfRangeError=void 0;var r=n(9619);t.ArgumentOutOfRangeError=r.createErrorClass(function(e){return function(){e(this),this.name="ArgumentOutOfRangeError",this.message="argument out of range"}})},7058(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.from=void 0;var r=n(131),i=n(9724);t.from=function(e,t){return t?r.scheduled(e,t):i.innerFrom(e)}},7120(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},a=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordManagerService=void 0;const c=n(9430),l=s(n(1396)),u=n(9048);let d=class{constructor(e){this.logger=e,this.STORAGE_KEY="ai-assistant-password-hash",this.MAX_ATTEMPTS=5,this.LOCKOUT_TIME=9e5,this.attempts=0,this.lockoutUntil=null,this.loadState()}setPassword(e){const t=this.hashPassword(e);localStorage.setItem(this.STORAGE_KEY,t),this.logger.info("Password set successfully")}async requestPassword(){if(this.isLocked()){const e=this.getRemainingLockoutTime();return this.logger.warn("Password attempts locked",{remainingTime:e}),alert(`账户已锁定,请等待 ${Math.ceil(e/6e4)} 分钟后再试`),!1}const e=prompt("请输入密码以执行此操作:");return null!==e&&(await this.verifyPassword(e)?(this.resetAttempts(),this.logger.info("Password verified successfully"),!0):(this.attempts++,this.logger.warn("Password verification failed",{attempts:this.attempts}),this.attempts>=this.MAX_ATTEMPTS&&(this.lockoutUntil=Date.now()+this.LOCKOUT_TIME,this.saveState(),this.logger.error("Password attempts exceeded, account locked"),alert(`密码错误次数过多,账户已锁定 ${this.LOCKOUT_TIME/6e4} 分钟`)),!1))}hasPassword(){return!!localStorage.getItem(this.STORAGE_KEY)}clearPassword(){localStorage.removeItem(this.STORAGE_KEY),this.resetAttempts(),this.logger.info("Password cleared")}async verifyPassword(e){const t=localStorage.getItem(this.STORAGE_KEY);return!t||this.hashPassword(e)===t}hashPassword(e){return l.SHA256(e).toString()}isLocked(){return null!==this.lockoutUntil&&Date.now()<this.lockoutUntil}getRemainingLockoutTime(){return null===this.lockoutUntil?0:Math.max(0,this.lockoutUntil-Date.now())}resetAttempts(){this.attempts=0,this.lockoutUntil=null,this.saveState()}saveState(){const e={attempts:this.attempts,lockoutUntil:this.lockoutUntil};localStorage.setItem("ai-assistant-password-state",JSON.stringify(e))}loadState(){try{const e=localStorage.getItem("ai-assistant-password-state");if(e){const t=JSON.parse(e);this.attempts=t.attempts||0,this.lockoutUntil=t.lockoutUntil,this.lockoutUntil&&Date.now()>=this.lockoutUntil&&this.resetAttempts()}}catch(e){this.logger.error("Failed to load password state",e)}}getValidationResult(){return{valid:0===this.attempts&&!this.isLocked(),attempts:this.attempts,locked:this.isLocked(),lockExpiry:this.lockoutUntil||void 0}}getTotalAttempts(){return this.attempts}getFailedAttempts(){return Math.max(0,this.attempts-1)}};d=o([(0,c.Injectable)({providedIn:"root"}),a("design:paramtypes",[u.LoggerService])],d),t.PasswordManagerService=d},7165(e,t,n){var r,i,o,s,a,c,l,u,d,f,p,h,m,g,v,b,y,w,_;e.exports=(r=n(9021),n(9506),void(r.lib.Cipher||(i=r,o=i.lib,s=o.Base,a=o.WordArray,c=o.BufferedBlockAlgorithm,l=i.enc,l.Utf8,u=l.Base64,d=i.algo.EvpKDF,f=o.Cipher=c.extend({cfg:s.extend(),createEncryptor:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)},createDecryptor:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)},init:function(e,t,n){this.cfg=this.cfg.extend(n),this._xformMode=e,this._key=t,this.reset()},reset:function(){c.reset.call(this),this._doReset()},process:function(e){return this._append(e),this._process()},finalize:function(e){return e&&this._append(e),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function e(e){return"string"==typeof e?_:y}return function(t){return{encrypt:function(n,r,i){return e(r).encrypt(t,n,r,i)},decrypt:function(n,r,i){return e(r).decrypt(t,n,r,i)}}}}()}),o.StreamCipher=f.extend({_doFinalize:function(){return this._process(!0)},blockSize:1}),p=i.mode={},h=o.BlockCipherMode=s.extend({createEncryptor:function(e,t){return this.Encryptor.create(e,t)},createDecryptor:function(e,t){return this.Decryptor.create(e,t)},init:function(e,t){this._cipher=e,this._iv=t}}),m=p.CBC=function(){var e=h.extend();function t(e,t,n){var r,i=this._iv;i?(r=i,this._iv=void 0):r=this._prevBlock;for(var o=0;o<n;o++)e[t+o]^=r[o]}return e.Encryptor=e.extend({processBlock:function(e,n){var r=this._cipher,i=r.blockSize;t.call(this,e,n,i),r.encryptBlock(e,n),this._prevBlock=e.slice(n,n+i)}}),e.Decryptor=e.extend({processBlock:function(e,n){var r=this._cipher,i=r.blockSize,o=e.slice(n,n+i);r.decryptBlock(e,n),t.call(this,e,n,i),this._prevBlock=o}}),e}(),g=(i.pad={}).Pkcs7={pad:function(e,t){for(var n=4*t,r=n-e.sigBytes%n,i=r<<24|r<<16|r<<8|r,o=[],s=0;s<r;s+=4)o.push(i);var c=a.create(o,r);e.concat(c)},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},o.BlockCipher=f.extend({cfg:f.cfg.extend({mode:m,padding:g}),reset:function(){var e;f.reset.call(this);var t=this.cfg,n=t.iv,r=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=r.createEncryptor:(e=r.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,n&&n.words):(this._mode=e.call(r,this,n&&n.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4}),v=o.CipherParams=s.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),b=(i.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,n=e.salt;return(n?a.create([1398893684,1701076831]).concat(n).concat(t):t).toString(u)},parse:function(e){var t,n=u.parse(e),r=n.words;return 1398893684==r[0]&&1701076831==r[1]&&(t=a.create(r.slice(2,4)),r.splice(0,4),n.sigBytes-=16),v.create({ciphertext:n,salt:t})}},y=o.SerializableCipher=s.extend({cfg:s.extend({format:b}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=e.createEncryptor(n,r),o=i.finalize(t),s=i.cfg;return v.create({ciphertext:o,key:n,iv:s.iv,algorithm:e,mode:s.mode,padding:s.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),w=(i.kdf={}).OpenSSL={execute:function(e,t,n,r,i){if(r||(r=a.random(8)),i)o=d.create({keySize:t+n,hasher:i}).compute(e,r);else var o=d.create({keySize:t+n}).compute(e,r);var s=a.create(o.words.slice(t),4*n);return o.sigBytes=4*t,v.create({key:o,iv:s,salt:r})}},_=o.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:w}),encrypt:function(e,t,n,r){var i=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize,r.salt,r.hasher);r.iv=i.iv;var o=y.encrypt.call(this,e,t,i.key,r);return o.mixIn(i),o},decrypt:function(e,t,n,r){r=this.cfg.extend(r),t=this._parse(t,r.format);var i=r.kdf.execute(n,e.keySize,e.ivSize,t.salt,r.hasher);return r.iv=i.iv,y.decrypt.call(this,e,t,i.key,r)}}))))},7193(e,t,n){var r;e.exports=(r=n(9021),n(754),n(4636),n(9506),n(7165),function(){var e=r,t=e.lib.StreamCipher,n=e.algo,i=n.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,n=e.sigBytes,r=this._S=[],i=0;i<256;i++)r[i]=i;i=0;for(var o=0;i<256;i++){var s=i%n,a=t[s>>>2]>>>24-s%4*8&255;o=(o+r[i]+a)%256;var c=r[i];r[i]=r[o],r[o]=c}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var e=this._S,t=this._i,n=this._j,r=0,i=0;i<4;i++){n=(n+e[t=(t+1)%256])%256;var o=e[t];e[t]=e[n],e[n]=o,r|=e[(e[t]+e[n])%256]<<24-8*i}return this._i=t,this._j=n,r}e.RC4=t._createHelper(i);var s=n.RC4Drop=i.extend({cfg:i.cfg.extend({drop:192}),_doReset:function(){i._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)o.call(this)}});e.RC4Drop=t._createHelper(s)}(),r.RC4)},7214(e,t,n){"use strict";var r,i=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.OperatorSubscriber=t.createOperatorSubscriber=void 0;var o=n(2708);t.createOperatorSubscriber=function(e,t,n,r,i){return new s(e,t,n,r,i)};var s=function(e){function t(t,n,r,i,o,s){var a=e.call(this,t)||this;return a.onFinalize=o,a.shouldUnsubscribe=s,a._next=n?function(e){try{n(e)}catch(e){t.error(e)}}:e.prototype._next,a._error=i?function(e){try{i(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,a._complete=r?function(){try{r()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,a}return i(t,e),t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}},t}(o.Subscriber);t.OperatorSubscriber=s},7245(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.throttleTime=void 0;var r=n(2326),i=n(4880),o=n(5825);t.throttleTime=function(e,t,n){void 0===t&&(t=r.asyncScheduler);var s=o.timer(e,t);return i.throttle(function(){return s},n)}},7280(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ChatSessionService=void 0;const o=n(9430),s=n(2607),a=n(389),c=n(7295),l=n(9048);let u=class{constructor(e,t){this.aiService=e,this.logger=t,this.currentSessionId=null,this.messagesSubject=new s.BehaviorSubject([]),this.isTypingSubject=new s.BehaviorSubject(!1),this.errorSubject=new s.Subject,this.messages$=this.messagesSubject.asObservable(),this.isTyping$=this.isTypingSubject.asObservable(),this.error$=this.errorSubject.asObservable()}createSession(){return this.currentSessionId=this.generateSessionId(),this.messagesSubject.next([]),this.logger.info("Created new chat session",{sessionId:this.currentSessionId}),this.currentSessionId}switchToSession(e){this.currentSessionId=e,this.logger.info("Switched to session",{sessionId:e})}async sendMessage(e,t){this.currentSessionId||this.createSession();try{const n={id:this.generateMessageId(),role:a.MessageRole.USER,content:e,timestamp:new Date},r=this.messagesSubject.value;this.messagesSubject.next([...r,n]),this.isTypingSubject.next(!0);const i={messages:[...r,n],systemPrompt:t,maxTokens:2e3,temperature:.7},o={...(await this.aiService.chat(i)).message,id:this.generateMessageId()};this.messagesSubject.next([...this.messagesSubject.value,o]),this.logger.info("Message sent successfully",{sessionId:this.currentSessionId,messageId:o.id})}catch(t){const n=t instanceof Error?t.message:String(t);throw this.errorSubject.next(n),this.logger.error("Failed to send message",{error:t,sessionId:this.currentSessionId,content:e}),t}finally{this.isTypingSubject.next(!1)}}clearSession(){this.messagesSubject.next([]),this.logger.info("Cleared chat session",{sessionId:this.currentSessionId})}deleteMessage(e){const t=this.messagesSubject.value.filter(t=>t.id!==e);this.messagesSubject.next(t),this.logger.info("Deleted message",{messageId:e,sessionId:this.currentSessionId})}getCurrentSessionId(){return this.currentSessionId}getCurrentMessages(){return this.messagesSubject.value}exportSession(){const e={sessionId:this.currentSessionId,messages:this.messagesSubject.value,timestamp:(new Date).toISOString()};return JSON.stringify(e,null,2)}importSession(e){try{const t=JSON.parse(e);this.currentSessionId=t.sessionId,this.messagesSubject.next(t.messages||[]),this.logger.info("Imported session",{sessionId:this.currentSessionId})}catch(e){throw this.logger.error("Failed to import session",e),new Error("Invalid session data format")}}generateSessionId(){return`session_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}generateMessageId(){return`msg_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}};u=r([(0,o.Injectable)({providedIn:"root"}),i("design:paramtypes",[c.AiAssistantService,l.LoggerService])],u),t.ChatSessionService=u},7295(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.AiAssistantService=void 0;const o=n(9430),s=n(7942),a=n(5084),c=n(7451),l=n(9048);let u=class{constructor(e,t,n,r){this.providerManager=e,this.config=t,this.terminalContext=n,this.logger=r}initialize(){if(this.logger.info("Initializing AI Assistant..."),!this.config.isEnabled())return void this.logger.info("AI Assistant is disabled in configuration");const e=this.config.getDefaultProvider();e&&this.providerManager.hasProvider(e)&&this.providerManager.setActiveProvider(e),this.logger.info("AI Assistant initialized successfully")}async chat(e){const t=this.providerManager.getActiveProvider();if(!t)throw new Error("No active AI provider available");this.logger.info("Processing chat request",{provider:t.name});try{if(!t.supportsCapability("chat"))throw new Error(`Provider ${t.name} does not support chat capability`);const n=await t.chat(e);return this.logger.info("Chat request completed successfully"),n}catch(e){throw this.logger.error("Chat request failed",e),e}}async generateCommand(e){const t=this.providerManager.getActiveProvider();if(!t)throw new Error("No active AI provider available");this.logger.info("Processing command generation request",{provider:t.name});try{if(!t.supportsCapability("command_generation"))throw new Error(`Provider ${t.name} does not support command generation capability`);const n=await t.generateCommand(e);return this.logger.info("Command generation completed successfully"),n}catch(e){throw this.logger.error("Command generation failed",e),e}}async explainCommand(e){const t=this.providerManager.getActiveProvider();if(!t)throw new Error("No active AI provider available");this.logger.info("Processing command explanation request",{provider:t.name});try{if(!t.supportsCapability("command_explanation"))throw new Error(`Provider ${t.name} does not support command explanation capability`);const n=await t.explainCommand(e);return this.logger.info("Command explanation completed successfully"),n}catch(e){throw this.logger.error("Command explanation failed",e),e}}async analyzeResult(e){const t=this.providerManager.getActiveProvider();if(!t)throw new Error("No active AI provider available");this.logger.info("Processing result analysis request",{provider:t.name});try{const n=await t.analyzeResult(e);return this.logger.info("Result analysis completed successfully"),n}catch(e){throw this.logger.error("Result analysis failed",e),e}}async generateCommandFromSelection(){try{const e="",t=this.terminalContext.getCurrentContext(),n={naturalLanguage:e||"帮我执行上一个命令",context:{currentDirectory:t?.session.cwd,operatingSystem:t?.systemInfo.platform,shell:t?.session.shell,environment:t?.session.environment}};return this.generateCommand(n)}catch(e){return this.logger.error("Failed to generate command from selection",e),null}}async explainCommandFromSelection(){try{const e="";if(!e)return null;const t=this.terminalContext.getCurrentContext(),n={command:e,context:{currentDirectory:t?.session.cwd,operatingSystem:t?.systemInfo.platform}};return this.explainCommand(n)}catch(e){return this.logger.error("Failed to explain command from selection",e),null}}openChatInterface(){this.logger.info("Opening chat interface")}getProviderStatus(){const e=this.providerManager.getActiveProvider(),t=this.providerManager.getAllProviderInfo();return{active:e?.getInfo(),all:t,count:t.length}}switchProvider(e){const t=this.providerManager.setActiveProvider(e);return t?(this.config.setDefaultProvider(e),this.logger.info("Provider switched successfully",{provider:e})):this.logger.error("Failed to switch provider",{provider:e}),t}switchToNextProvider(){return this.providerManager.switchToNextProvider()}switchToPreviousProvider(){return this.providerManager.switchToPreviousProvider()}async healthCheck(){return this.logger.info("Performing health check on all providers"),this.providerManager.checkAllProvidersHealth()}async validateConfig(){return this.logger.info("Validating all provider configurations"),this.providerManager.validateAllProviders()}getContextAwarePrompt(e){const t=this.terminalContext.getCurrentContext(),n=this.terminalContext.getLastError();let r=e;return t&&(r+="\n\n当前环境:\n",r+=`- 目录:${t.session.cwd}\n`,r+=`- Shell:${t.session.shell}\n`,r+=`- 系统:${t.systemInfo.platform}\n`,t.recentCommands.length>0&&(r+=`- 最近命令:${t.recentCommands.slice(0,3).join(" → ")}\n`),n&&(r+="\n当前错误:\n",r+=`- 错误:${n.message}\n`,r+=`- 命令:${n.command}\n`)),r}async getSuggestedCommands(e){if(!this.providerManager.getActiveProvider())return[];try{return[]}catch(e){return this.logger.error("Failed to get suggested commands",e),[]}}async getErrorFix(e){try{const t=this.terminalContext.getCurrentContext(),n={naturalLanguage:`修复这个错误:${e.message}`,context:{currentDirectory:t?.session.cwd,operatingSystem:t?.systemInfo.platform,shell:t?.session.shell,environment:t?.session.environment}};return this.generateCommand(n)}catch(e){return this.logger.error("Failed to get error fix",e),null}}};u=r([(0,o.Injectable)({providedIn:"root"}),i("design:paramtypes",[s.AiProviderManagerService,a.ConfigProviderService,c.TerminalContextService,l.LoggerService])],u),t.AiAssistantService=u},7314(e,t,n){"use strict";var r,i=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.BehaviorSubject=void 0;var o=function(e){function t(t){var n=e.call(this)||this;return n._value=t,n}return i(t,e),Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(t){var n=e.prototype._subscribe.call(this,t);return!n.closed&&t.next(this._value),n},t.prototype.getValue=function(){var e=this,t=e.hasError,n=e.thrownError,r=e._value;if(t)throw n;return this._throwIfClosed(),r},t.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},t}(n(6808).Subject);t.BehaviorSubject=o},7361(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r=".risk-confirm-dialog {\n background-color: var(--ai-bg-primary);\n border-radius: 0.5rem;\n box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);\n max-width: 600px;\n margin: 0 auto;\n}\n\n/* 头部 */\n.dialog-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1.5rem;\n border-bottom: 1px solid var(--ai-border);\n\n .risk-indicator {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 1.125rem;\n font-weight: 600;\n\n i {\n font-size: 1.5rem;\n }\n\n span {\n color: var(--ai-dark);\n }\n }\n\n .close-button {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n border-radius: 0.375rem;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s;\n color: var(--ai-secondary);\n\n &:hover {\n background-color: var(--ai-border);\n color: var(--ai-dark);\n }\n }\n}\n\n/* 内容 */\n.dialog-content {\n padding: 1.5rem;\n max-height: 60vh;\n overflow-y: auto;\n\n /* 风险警告 */\n .risk-warning {\n display: flex;\n gap: 1rem;\n padding: 1rem;\n border-radius: 0.5rem;\n margin-bottom: 1.5rem;\n border: 1px solid;\n\n &.medium-risk {\n background-color: rgba(255, 193, 7, 0.1);\n border-color: var(--ai-warning);\n color: #856404;\n\n .warning-icon i {\n color: var(--ai-warning);\n }\n }\n\n &.high-risk {\n background-color: rgba(253, 126, 20, 0.1);\n border-color: var(--ai-risk-high);\n color: var(--ai-risk-high);\n\n .warning-icon i {\n color: var(--ai-risk-high);\n }\n }\n\n .warning-icon {\n flex-shrink: 0;\n font-size: 2rem;\n }\n\n .warning-text {\n flex: 1;\n\n h4 {\n margin: 0 0 0.5rem 0;\n font-size: 1.125rem;\n font-weight: 600;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n line-height: 1.5;\n }\n }\n }\n\n /* 命令信息 */\n .command-info {\n .info-section {\n margin-bottom: 1.5rem;\n\n &:last-child {\n margin-bottom: 0;\n }\n\n label {\n display: block;\n font-weight: 600;\n margin-bottom: 0.5rem;\n color: var(--ai-dark);\n font-size: 0.875rem;\n }\n\n .command-display {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n background-color: var(--ai-bg-secondary);\n border: 1px solid var(--ai-border);\n border-radius: 0.375rem;\n padding: 0.75rem;\n\n code {\n flex: 1;\n font-family: 'Courier New', Courier, monospace;\n font-size: 0.875rem;\n color: var(--ai-dark);\n word-break: break-all;\n }\n\n .btn-copy {\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n border-radius: 0.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s;\n color: var(--ai-secondary);\n\n &:hover {\n background-color: var(--ai-border);\n color: var(--ai-dark);\n }\n }\n }\n\n .explanation {\n margin: 0;\n padding: 0.75rem;\n background-color: var(--ai-bg-secondary);\n border: 1px solid var(--ai-border);\n border-radius: 0.375rem;\n font-size: 0.875rem;\n line-height: 1.6;\n color: var(--ai-dark);\n }\n\n .suggestions-list {\n list-style: none;\n padding: 0;\n margin: 0;\n\n li {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n background-color: var(--ai-bg-secondary);\n border-radius: 0.375rem;\n border: 1px solid var(--ai-border);\n\n &:last-child {\n margin-bottom: 0;\n }\n\n i {\n color: var(--ai-info);\n font-size: 1rem;\n margin-top: 0.125rem;\n }\n\n span {\n flex: 1;\n font-size: 0.875rem;\n line-height: 1.5;\n color: var(--ai-dark);\n }\n }\n }\n }\n }\n\n /* 高风险警告 */\n .high-risk-warning {\n margin-top: 1.5rem;\n\n .warning-box {\n display: flex;\n gap: 1rem;\n padding: 1rem;\n background-color: rgba(220, 53, 69, 0.1);\n border: 1px solid var(--ai-danger);\n border-radius: 0.5rem;\n color: var(--ai-danger);\n\n i {\n font-size: 1.5rem;\n color: var(--ai-danger);\n }\n\n .warning-content {\n flex: 1;\n\n strong {\n display: block;\n margin-bottom: 0.5rem;\n font-size: 1rem;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n line-height: 1.6;\n }\n }\n }\n }\n}\n\n/* 底部按钮 */\n.dialog-footer {\n display: flex;\n justify-content: flex-end;\n gap: 0.75rem;\n padding: 1.5rem;\n border-top: 1px solid var(--ai-border);\n background-color: var(--ai-bg-secondary);\n border-radius: 0 0 0.5rem 0.5rem;\n\n .btn {\n padding: 0.5rem 1.5rem;\n border: none;\n border-radius: 0.375rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.875rem;\n\n &.btn-secondary {\n background-color: var(--ai-secondary);\n color: white;\n\n &:hover {\n background-color: darken(#6c757d, 7.5%);\n }\n }\n\n &.btn-danger {\n background-color: var(--ai-danger);\n color: white;\n\n &:hover {\n background-color: darken(#dc3545, 7.5%);\n }\n }\n\n &.btn-critical {\n background-color: var(--ai-danger);\n color: white;\n animation: pulse 2s infinite;\n\n &:hover {\n animation: none;\n background-color: darken(#dc3545, 10%);\n }\n }\n }\n}\n\n/* 动画 */\n@keyframes pulse {\n 0%, 100% {\n box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.7);\n }\n 50% {\n box-shadow: 0 0 0 10px rgba(220, 53, 69, 0);\n }\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n .risk-confirm-dialog {\n max-width: 100%;\n margin: 0;\n border-radius: 0;\n }\n\n .dialog-header {\n padding: 1rem;\n\n .risk-indicator {\n font-size: 1rem;\n\n i {\n font-size: 1.25rem;\n }\n }\n }\n\n .dialog-content {\n padding: 1rem;\n\n .risk-warning {\n .warning-icon {\n font-size: 1.5rem;\n }\n\n .warning-text {\n h4 {\n font-size: 1rem;\n }\n\n p {\n font-size: 0.8rem;\n }\n }\n }\n }\n\n .dialog-footer {\n padding: 1rem;\n flex-direction: column-reverse;\n\n .btn {\n width: 100%;\n justify-content: center;\n }\n }\n}\n"},7400(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.tap=void 0;var r=n(281),i=n(5212),o=n(7214),s=n(7699);t.tap=function(e,t,n){var a=r.isFunction(e)||t||n?{next:e,error:t,complete:n}:e;return a?i.operate(function(e,t){var n;null===(n=a.subscribe)||void 0===n||n.call(a);var r=!0;e.subscribe(o.createOperatorSubscriber(t,function(e){var n;null===(n=a.next)||void 0===n||n.call(a,e),t.next(e)},function(){var e;r=!1,null===(e=a.complete)||void 0===e||e.call(a),t.complete()},function(e){var n;r=!1,null===(n=a.error)||void 0===n||n.call(a,e),t.error(e)},function(){var e,t;r&&(null===(e=a.unsubscribe)||void 0===e||e.call(a)),null===(t=a.finalize)||void 0===t||t.call(a)}))}):s.identity}},7451(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.TerminalContextService=void 0;const o=n(9430),s=n(2607),a=n(9048);let c=class{constructor(e){this.logger=e,this.currentContext=null,this.contextChange$=new s.Subject,this.errorDetected$=new s.Subject,this.commandExecuted$=new s.Subject,this.initializeContext()}async initializeContext(){try{const e=await this.getCurrentSession(),t=await this.getSystemInfo(),n=await this.detectProjectInfo();this.currentContext={session:e,isRunning:!1,recentCommands:[],systemInfo:t,projectInfo:n},this.logger.info("Terminal context initialized",{context:this.currentContext})}catch(e){this.logger.error("Failed to initialize terminal context",e)}}getCurrentContext(){return this.currentContext}onContextChange(){return this.contextChange$.asObservable()}onError(){return this.errorDetected$.asObservable()}onCommandExecuted(){return this.commandExecuted$.asObservable()}updateCurrentCommand(e){this.currentContext&&(this.currentContext.currentCommand=e,this.contextChange$.next(this.currentContext),this.logger.debug("Current command updated",{command:e}))}setCommandResult(e){if(this.currentContext){if(this.currentContext.lastCommand=e.command,this.currentContext.lastOutput=e.stdout,this.currentContext.lastError=e.stderr,this.currentContext.exitCode=e.exitCode,this.currentContext.isRunning=!1,this.currentContext.recentCommands.unshift(e.command),this.currentContext.recentCommands.length>50&&(this.currentContext.recentCommands=this.currentContext.recentCommands.slice(0,50)),!e.success||0!==e.exitCode){const t=this.analyzeError(e);this.errorDetected$.next(t)}this.commandExecuted$.next(e),this.contextChange$.next(this.currentContext),this.logger.debug("Command result set",{result:e})}}setRunningStatus(e,t){this.currentContext&&(this.currentContext.isRunning=e,this.currentContext.runningProcess=t||void 0,this.contextChange$.next(this.currentContext))}changeDirectory(e){this.currentContext&&(this.currentContext.session.cwd=e,this.currentContext.session.lastActivity=new Date,this.contextChange$.next(this.currentContext),this.logger.debug("Directory changed",{path:e}))}analyzeError(e){let t="unknown",n=e.stderr||"Unknown error";e.stderr.includes("command not found")?t="command_not_found":e.stderr.includes("Permission denied")?t="permission_denied":e.stderr.includes("No such file or directory")?t="file_not_found":e.stderr.includes("Syntax error")&&(t="syntax_error");const r=this.generateSuggestions(t,e.command,e.stderr);return{type:t,message:n,command:e.command,exitCode:e.exitCode,suggestions:r,timestamp:new Date}}generateSuggestions(e,t,n){const r=[];switch(e){case"command_not_found":r.push("检查命令拼写是否正确"),r.push("使用 `which <command>` 或 `command -v <command>` 确认命令是否存在"),r.push("使用 `apt install <package>` (Ubuntu/Debian) 或 `brew install <package>` (macOS) 安装缺失命令");break;case"permission_denied":r.push("使用 `sudo` 提升权限"),r.push("检查文件权限:`ls -l <file>`"),r.push("使用 `chmod` 修改文件权限");break;case"file_not_found":r.push("检查文件路径是否正确"),r.push("使用 `pwd` 确认当前目录"),r.push("使用 `ls` 查看当前目录内容");break;case"syntax_error":r.push("检查命令语法"),r.push("使用 `man <command>` 查看命令手册"),r.push("使用 `--help` 或 `-h` 查看帮助信息")}return r}async getCurrentSession(){const e={};return Object.keys(process.env).forEach(t=>{const n=process.env[t];void 0!==n&&(e[t]=n)}),{sessionId:this.generateSessionId(),cwd:process.cwd(),shell:this.detectShell(),user:e.USER||e.USERNAME,hostname:e.HOSTNAME||"localhost",environment:e,startTime:new Date,lastActivity:new Date}}async getSystemInfo(){return{platform:"browser",arch:"unknown",type:"Browser",release:"N/A",cpus:0,totalMemory:0,availableMemory:0,nodeVersion:"N/A"}}getSystemInfoPublic(){return this.currentContext?.systemInfo||null}async detectProjectInfo(){return null}detectShell(){return process.env.SHELL||process.env.COMSPEC||"unknown"}generateSessionId(){return`session_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}getEnvironmentVariables(){return this.currentContext?.session.environment||{}}getCurrentDirectory(){return this.currentContext?.session.cwd||""}getRecentCommands(){return this.currentContext?.recentCommands||[]}getProjectInfo(){return this.currentContext?.projectInfo||null}hasError(){return!(!this.currentContext?.lastError||0===this.currentContext.exitCode)}getLastError(){return this.hasError()?{type:"unknown",message:this.currentContext?.lastError||"",command:this.currentContext?.lastCommand,exitCode:this.currentContext?.exitCode,timestamp:new Date}:null}};c=r([(0,o.Injectable)({providedIn:"root"}),i("design:paramtypes",[a.LoggerService])],c),t.TerminalContextService=c},7478(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mergeMap=void 0;var r=n(6872),i=n(9724),o=n(5212),s=n(2574),a=n(281);t.mergeMap=function e(t,n,c){return void 0===c&&(c=1/0),a.isFunction(n)?e(function(e,o){return r.map(function(t,r){return n(e,t,o,r)})(i.innerFrom(t(e,o)))},c):("number"==typeof n&&(c=n),o.operate(function(e,n){return s.mergeInternals(e,n,t,c)}))}},7552(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isPromise=void 0;var r=n(281);t.isPromise=function(e){return r.isFunction(null==e?void 0:e.then)}},7628(e,t,n){var r;e.exports=(r=n(9021),n(754),n(4636),n(9506),n(7165),function(){var e=r,t=e.lib,n=t.WordArray,i=t.BlockCipher,o=e.algo,s=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],c=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],u=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],d=o.DES=i.extend({_doReset:function(){for(var e=this._key.words,t=[],n=0;n<56;n++){var r=s[n]-1;t[n]=e[r>>>5]>>>31-r%32&1}for(var i=this._subKeys=[],o=0;o<16;o++){var l=i[o]=[],u=c[o];for(n=0;n<24;n++)l[n/6|0]|=t[(a[n]-1+u)%28]<<31-n%6,l[4+(n/6|0)]|=t[28+(a[n+24]-1+u)%28]<<31-n%6;for(l[0]=l[0]<<1|l[0]>>>31,n=1;n<7;n++)l[n]=l[n]>>>4*(n-1)+3;l[7]=l[7]<<5|l[7]>>>27}var d=this._invSubKeys=[];for(n=0;n<16;n++)d[n]=i[15-n]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,n){this._lBlock=e[t],this._rBlock=e[t+1],f.call(this,4,252645135),f.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),f.call(this,1,1431655765);for(var r=0;r<16;r++){for(var i=n[r],o=this._lBlock,s=this._rBlock,a=0,c=0;c<8;c++)a|=l[c][((s^i[c])&u[c])>>>0];this._lBlock=s,this._rBlock=o^a}var d=this._lBlock;this._lBlock=this._rBlock,this._rBlock=d,f.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),f.call(this,16,65535),f.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function f(e,t){var n=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=n,this._lBlock^=n<<e}function p(e,t){var n=(this._rBlock>>>e^this._lBlock)&t;this._lBlock^=n,this._rBlock^=n<<e}e.DES=i._createHelper(d);var h=o.TripleDES=i.extend({_doReset:function(){var e=this._key.words;if(2!==e.length&&4!==e.length&&e.length<6)throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),i=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=d.createEncryptor(n.create(t)),this._des2=d.createEncryptor(n.create(r)),this._des3=d.createEncryptor(n.create(i))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=i._createHelper(h)}(),r.TripleDES)},7643(e){"use strict";e.exports=require("@ng-bootstrap/ng-bootstrap")},7652(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.argsOrArgArray=void 0;var n=Array.isArray;t.argsOrArgArray=function(e){return 1===e.length&&n(e[0])?e[0]:e}},7699(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.identity=void 0,t.identity=function(e){return e}},7736(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Messages=t.MessageStream=void 0;const r=n(9698),i=n(75);var o=n(75);Object.defineProperty(t,"MessageStream",{enumerable:!0,get:function(){return o.MessageStream}});class s extends r.APIResource{create(e,t){return this._client.post("/v1/messages",{body:e,timeout:6e5,...t,stream:e.stream??!1})}stream(e,t){return i.MessageStream.createMessage(this,e,t)}}t.Messages=s,s=t.Messages||(t.Messages={})},7782(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shareReplay=void 0;var r=n(381),i=n(3405);t.shareReplay=function(e,t,n){var o,s,a,c,l=!1;return e&&"object"==typeof e?(o=e.bufferSize,c=void 0===o?1/0:o,s=e.windowTime,t=void 0===s?1/0:s,l=void 0!==(a=e.refCount)&&a,n=e.scheduler):c=null!=e?e:1/0,i.share({connector:function(){return new r.ReplaySubject(c,t,n)},resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:l})}},7783(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.skipUntil=void 0;var r=n(5212),i=n(7214),o=n(9724),s=n(5717);t.skipUntil=function(e){return r.operate(function(t,n){var r=!1,a=i.createOperatorSubscriber(n,function(){null==a||a.unsubscribe(),r=!0},s.noop);o.innerFrom(e).subscribe(a),t.subscribe(i.createOperatorSubscriber(n,function(e){return r&&n.next(e)}))})}},7802(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.finalize=void 0;var r=n(5212);t.finalize=function(e){return r.operate(function(t,n){try{t.subscribe(n)}finally{n.add(e)}})}},7812(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.connect=void 0;var r=n(6808),i=n(9724),o=n(5212),s=n(1071),a={connector:function(){return new r.Subject}};t.connect=function(e,t){void 0===t&&(t=a);var n=t.connector;return o.operate(function(t,r){var o=n();i.innerFrom(e(s.fromSubscribable(o))).subscribe(r),r.add(t.subscribe(o))})}},7873(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.scheduleAsyncIterable=void 0;var r=n(8051),i=n(8619);t.scheduleAsyncIterable=function(e,t){if(!e)throw new Error("Iterable cannot be null");return new r.Observable(function(n){i.executeSchedule(n,t,function(){var r=e[Symbol.asyncIterator]();i.executeSchedule(n,t,function(){r.next().then(function(e){e.done?n.complete():n.next(e.value)})},0,!0)})})}},7876(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.distinct=void 0;var r=n(5212),i=n(7214),o=n(5717),s=n(9724);t.distinct=function(e,t){return r.operate(function(n,r){var a=new Set;n.subscribe(i.createOperatorSubscriber(r,function(t){var n=e?e(t):t;a.has(n)||(a.add(n),r.next(t))})),t&&s.innerFrom(t).subscribe(i.createOperatorSubscriber(r,function(){return a.clear()},o.noop))})}},7933(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.combineLatestAll=void 0;var r=n(8246),i=n(719);t.combineLatestAll=function(e){return i.joinAllInternals(r.combineLatest,e)}},7942(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.AiProviderManagerService=void 0;const o=n(9430),s=n(2607),a=n(9048);let c=class{constructor(e){this.logger=e,this.providers=new Map,this.activeProvider=null,this.eventSubject=new s.Subject}registerProvider(e){this.providers.has(e.name)&&this.logger.warn(`Provider ${e.name} is already registered, replacing...`),this.providers.set(e.name,e),this.logger.info(`Provider registered: ${e.name}`),this.activeProvider||this.setActiveProvider(e.name),this.emitEvent({type:"config_changed",provider:e.name,timestamp:new Date})}unregisterProvider(e){if(this.providers.has(e)){if(this.providers.delete(e),this.activeProvider===e){const e=Array.from(this.providers.keys());e.length>0?this.setActiveProvider(e[0]):this.activeProvider=null}this.logger.info(`Provider unregistered: ${e}`)}else this.logger.warn(`Provider ${e} not found, cannot unregister`)}getProvider(e){return this.providers.get(e)}getAllProviders(){return Array.from(this.providers.values())}getActiveProvider(){if(this.activeProvider)return this.providers.get(this.activeProvider)}setActiveProvider(e){if(!this.providers.has(e))return this.logger.error(`Provider ${e} not found`),!1;const t=this.activeProvider;return this.activeProvider=e,this.logger.info(`Active provider changed: ${t} -> ${e}`),this.emitEvent({type:"config_changed",provider:e,timestamp:new Date}),!0}getProviderInfo(e){const t=this.providers.get(e);return t?t.getInfo():void 0}getAllProviderInfo(){return this.getAllProviders().map(e=>e.getInfo())}hasProvider(e){return this.providers.has(e)}getProviderCount(){return this.providers.size}getActiveProviderName(){return this.activeProvider}async validateAllProviders(){const e=[];for(const[t,n]of this.providers)try{const r=n.validateConfig();e.push({name:t,valid:r.valid,errors:r.errors||[]})}catch(n){e.push({name:t,valid:!1,errors:[`Validation error: ${n instanceof Error?n.message:String(n)}`]})}return e}async checkAllProvidersHealth(){const e=[];for(const[t,n]of this.providers)try{const r=Date.now(),i=await n.healthCheck(),o=Date.now()-r;e.push({provider:t,status:i,latency:o})}catch(n){e.push({provider:t,status:"unhealthy"})}return e}getEnabledProviders(){return this.getAllProviders().filter(e=>{const t=e.getConfig();return!1!==t?.enabled})}getEnabledProviderNames(){return this.getEnabledProviders().map(e=>e.name)}switchToNextProvider(){const e=this.getEnabledProviders();if(0===e.length)return!1;const t=e.findIndex(e=>e.name===this.activeProvider),n=e[(t+1)%e.length];return this.setActiveProvider(n.name)}switchToPreviousProvider(){const e=this.getEnabledProviders();if(0===e.length)return!1;const t=e.findIndex(e=>e.name===this.activeProvider),n=e[0===t?e.length-1:t-1];return this.setActiveProvider(n.name)}onEvent(){return this.eventSubject.asObservable()}async getBestPerformingProvider(){const e=(await this.checkAllProvidersHealth()).filter(e=>"healthy"===e.status).sort((e,t)=>(e.latency||0)-(t.latency||0));if(0===e.length)return null;const t=e[0].provider;return this.providers.get(t)||null}emitEvent(e){this.eventSubject.next(e)}getStats(){const e=this.getAllProviders();return{totalProviders:e.length,enabledProviders:this.getEnabledProviders().length,activeProvider:this.activeProvider,providers:e.map(e=>({name:e.name,enabled:!1!==e.getConfig()?.enabled,healthy:!0}))}}reset(){this.providers.clear(),this.activeProvider=null,this.logger.info("All providers reset")}};c=r([(0,o.Injectable)({providedIn:"root"}),i("design:paramtypes",[a.LoggerService])],c),t.AiProviderManagerService=c},7977(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.exhaustAll=void 0;var r=n(6632),i=n(7699);t.exhaustAll=function(){return r.exhaustMap(i.identity)}},8032(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.concatWith=void 0;var o=n(6328);t.concatWith=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return o.concat.apply(void 0,i([],r(e)))}},8051(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Observable=void 0;var r=n(2708),i=n(9879),o=n(2884),s=n(1898),a=n(3728),c=n(281),l=n(2688),u=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var o,s=this,a=(o=e)&&o instanceof r.Subscriber||function(e){return e&&c.isFunction(e.next)&&c.isFunction(e.error)&&c.isFunction(e.complete)}(o)&&i.isSubscription(o)?e:new r.SafeSubscriber(e,t,n);return l.errorContext(function(){var e=s,t=e.operator,n=e.source;a.add(t?t.call(a,n):n?s._subscribe(a):s._trySubscribe(a))}),a},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var n=this;return new(t=d(t))(function(t,i){var o=new r.SafeSubscriber({next:function(t){try{e(t)}catch(e){i(e),o.unsubscribe()}},error:i,complete:t});n.subscribe(o)})},e.prototype._subscribe=function(e){var t;return null===(t=this.source)||void 0===t?void 0:t.subscribe(e)},e.prototype[o.observable]=function(){return this},e.prototype.pipe=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return s.pipeFromArray(e)(this)},e.prototype.toPromise=function(e){var t=this;return new(e=d(e))(function(e,n){var r;t.subscribe(function(e){return r=e},function(e){return n(e)},function(){return e(r)})})},e.create=function(t){return new e(t)},e}();function d(e){var t;return null!==(t=null!=e?e:a.config.Promise)&&void 0!==t?t:Promise}t.Observable=u},8056(e,t,n){var r;e.exports=(r=n(9021),function(){var e=r,t=e.lib,n=t.WordArray,i=t.Hasher,o=e.algo,s=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),a=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),c=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),l=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),d=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=o.RIPEMD160=i.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=t+n,i=e[r];e[r]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o,f,y,w,_,x,S,O,P,k,C,R=this._hash.words,A=u.words,E=d.words,j=s.words,M=a.words,I=c.words,T=l.words;for(x=o=R[0],S=f=R[1],O=y=R[2],P=w=R[3],k=_=R[4],n=0;n<80;n+=1)C=o+e[t+j[n]]|0,C+=n<16?p(f,y,w)+A[0]:n<32?h(f,y,w)+A[1]:n<48?m(f,y,w)+A[2]:n<64?g(f,y,w)+A[3]:v(f,y,w)+A[4],C=(C=b(C|=0,I[n]))+_|0,o=_,_=w,w=b(y,10),y=f,f=C,C=x+e[t+M[n]]|0,C+=n<16?v(S,O,P)+E[0]:n<32?g(S,O,P)+E[1]:n<48?m(S,O,P)+E[2]:n<64?h(S,O,P)+E[3]:p(S,O,P)+E[4],C=(C=b(C|=0,T[n]))+k|0,x=k,k=P,P=b(O,10),O=S,S=C;C=R[1]+y+P|0,R[1]=R[2]+w+k|0,R[2]=R[3]+_+x|0,R[3]=R[4]+o+S|0,R[4]=R[0]+f+O|0,R[0]=C},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process();for(var i=this._hash,o=i.words,s=0;s<5;s++){var a=o[s];o[s]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return i},clone:function(){var e=i.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,n){return e^t^n}function h(e,t,n){return e&t|~e&n}function m(e,t,n){return(e|~t)^n}function g(e,t,n){return e&n|t&~n}function v(e,t,n){return e^(t|~n)}function b(e,t){return e<<t|e>>>32-t}e.RIPEMD160=i._createHelper(f),e.HmacRIPEMD160=i._createHmacHelper(f)}(Math),r.RIPEMD160)},8072(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.window=void 0;var r=n(6808),i=n(5212),o=n(7214),s=n(5717),a=n(9724);t.window=function(e){return i.operate(function(t,n){var i=new r.Subject;n.next(i.asObservable());var c=function(e){i.error(e),n.error(e)};return t.subscribe(o.createOperatorSubscriber(n,function(e){return null==i?void 0:i.next(e)},function(){i.complete(),n.complete()},c)),a.innerFrom(e).subscribe(o.createOperatorSubscriber(n,function(){i.complete(),n.next(i=new r.Subject)},s.noop,c)),function(){null==i||i.unsubscribe(),i=null}})}},8087(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mergeAll=void 0;var r=n(7478),i=n(7699);t.mergeAll=function(e){return void 0===e&&(e=1/0),r.mergeMap(i.identity,e)}},8118(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r=".ai-chat-interface {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--ai-bg-primary);\n color: var(--ai-dark);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n/* 头部 */\n.ai-chat-header {\n padding: 1rem 1.5rem;\n background-color: var(--ai-bg-secondary);\n border-bottom: 1px solid var(--ai-border);\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n\n .header-left {\n display: flex;\n align-items: center;\n gap: 1rem;\n\n .ai-title {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n .icon-chat {\n font-size: 1.5rem;\n }\n }\n\n .provider-badge {\n padding: 0.25rem 0.75rem;\n background-color: var(--ai-primary);\n color: white;\n border-radius: 1rem;\n font-size: 0.875rem;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 0.375rem;\n }\n }\n\n .header-actions {\n display: flex;\n gap: 0.5rem;\n\n .btn-icon {\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 0.375rem;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s;\n color: var(--ai-secondary);\n\n &:hover {\n background-color: var(--ai-border);\n color: var(--ai-dark);\n }\n\n &.danger:hover {\n background-color: var(--ai-danger);\n color: white;\n }\n\n .icon-switch,\n .icon-export,\n .icon-clear {\n font-size: 1.125rem;\n }\n }\n }\n}\n\n/* 消息容器 */\n.ai-chat-container {\n flex: 1;\n overflow-y: auto;\n padding: 1rem;\n scroll-behavior: smooth;\n\n .messages-wrapper {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n\n .date-separator {\n text-align: center;\n margin: 1rem 0;\n position: relative;\n\n &::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 1px;\n background-color: var(--ai-border);\n }\n\n .date-text {\n background-color: var(--ai-bg-primary);\n padding: 0 1rem;\n font-size: 0.875rem;\n color: var(--ai-secondary);\n position: relative;\n }\n }\n}\n\n/* 消息项 */\n.message-item {\n display: flex;\n gap: 0.75rem;\n max-width: 85%;\n\n &.user-message {\n align-self: flex-end;\n flex-direction: row-reverse;\n\n .message-avatar {\n .avatar.user {\n background-color: var(--ai-primary);\n color: white;\n }\n }\n\n .message-content {\n .message-bubble {\n background-color: var(--ai-primary);\n color: white;\n border-bottom-right-radius: 0.25rem;\n }\n }\n }\n\n &.assistant-message {\n align-self: flex-start;\n\n .message-avatar {\n .avatar.assistant {\n background-color: var(--ai-success);\n color: white;\n }\n }\n\n .message-content {\n .message-bubble {\n background-color: var(--ai-assistant-message);\n color: var(--ai-dark);\n border-bottom-left-radius: 0.25rem;\n }\n }\n }\n\n &.system-message {\n align-self: center;\n max-width: 90%;\n\n .message-avatar {\n .avatar.system {\n background-color: var(--ai-warning);\n color: white;\n }\n }\n\n .message-content {\n .message-bubble {\n background-color: var(--ai-system-message);\n color: var(--ai-dark);\n border-radius: 0.5rem;\n font-style: italic;\n }\n }\n }\n}\n\n/* 头像 */\n.message-avatar {\n flex-shrink: 0;\n\n .avatar {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.25rem;\n }\n}\n\n/* 消息内容 */\n.message-content {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n\n .message-bubble {\n padding: 0.75rem 1rem;\n border-radius: 0.75rem;\n box-shadow: var(--ai-box-shadow);\n word-wrap: break-word;\n white-space: pre-wrap;\n\n .message-text {\n margin: 0;\n line-height: 1.6;\n\n pre {\n margin: 0;\n white-space: pre-wrap;\n word-wrap: break-word;\n font-family: inherit;\n font-size: inherit;\n }\n\n &.ai-response {\n white-space: pre-wrap;\n }\n }\n }\n\n .message-time {\n font-size: 0.75rem;\n opacity: 0.6;\n padding: 0 0.5rem;\n }\n}\n\n/* 加载指示器 */\n.loading-indicator {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n padding: 0.75rem 1rem;\n background-color: var(--ai-assistant-message);\n border-radius: 0.75rem;\n align-self: flex-start;\n max-width: 200px;\n\n .typing-indicator {\n display: flex;\n gap: 0.25rem;\n\n span {\n width: 6: 6pxpx;\n height;\n border-radius: 50%;\n background-color: var(--ai-secondary);\n animation: typing 1.4s infinite ease-in-out;\n\n &:nth-child(1) {\n animation-delay: -0.32s;\n }\n\n &:nth-child(2) {\n animation-delay: -0.16s;\n }\n }\n }\n\n .loading-text {\n font-size: 0.875rem;\n color: var(--ai-secondary);\n }\n}\n\n@keyframes typing {\n 0%, 80%, 100% {\n transform: scale(0.8);\n opacity: 0.5;\n }\n 40% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n/* 输入区域 */\n.ai-chat-input {\n flex-shrink: 0;\n border-top: 1px solid var(--ai-border);\n background-color: var(--ai-bg-secondary);\n}\n\n/* 提示信息 */\n.chat-tips {\n padding: 0.75rem 1.5rem;\n background-color: rgba(0, 123, 255, 0.05);\n border-top: 1px solid var(--ai-border);\n\n .tip-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin: 0.375rem 0;\n font-size: 0.875rem;\n color: var(--ai-info);\n\n i {\n font-size: 1rem;\n }\n }\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n .ai-chat-header {\n padding: 0.75rem 1rem;\n\n .header-left {\n .ai-title {\n font-size: 1rem;\n }\n\n .provider-badge {\n font-size: 0.75rem;\n padding: 0.2rem 0.6rem;\n }\n }\n\n .header-actions .btn-icon {\n width: 32px;\n height: 32px;\n }\n }\n\n .message-item {\n max-width: 95%;\n }\n\n .chat-tips {\n padding: 0.5rem 1rem;\n\n .tip-item {\n font-size: 0.8rem;\n }\n }\n}\n"},8124(e,t,n){var r;e.exports=(r=n(9021),n(7165),r.pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)},8183(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createFind=t.find=void 0;var r=n(5212),i=n(7214);function o(e,t,n){var r="index"===n;return function(n,o){var s=0;n.subscribe(i.createOperatorSubscriber(o,function(i){var a=s++;e.call(t,i,a,n)&&(o.next(r?a:i),o.complete())},function(){o.next(r?-1:void 0),o.complete()}))}}t.find=function(e,t){return r.operate(o(e,t,"value"))},t.createFind=o},8246(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.combineLatestInit=t.combineLatest=void 0;var r=n(8051),i=n(439),o=n(7058),s=n(7699),a=n(3916),c=n(6404),l=n(5810),u=n(7214),d=n(8619);function f(e,t,n){return void 0===n&&(n=s.identity),function(r){p(t,function(){for(var i=e.length,s=new Array(i),a=i,c=i,l=function(i){p(t,function(){var l=o.from(e[i],t),d=!1;l.subscribe(u.createOperatorSubscriber(r,function(e){s[i]=e,d||(d=!0,c--),c||r.next(n(s.slice()))},function(){--a||r.complete()}))},r)},d=0;d<i;d++)l(d)},r)}}function p(e,t,n){e?d.executeSchedule(n,e,t):t()}t.combineLatest=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=c.popScheduler(e),u=c.popResultSelector(e),d=i.argsArgArrayOrObject(e),p=d.args,h=d.keys;if(0===p.length)return o.from([],n);var m=new r.Observable(f(p,n,h?function(e){return l.createObject(h,e)}:s.identity));return u?m.pipe(a.mapOneOrManyArgs(u)):m},t.combineLatestInit=f},8263(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isAsyncIterable=void 0;var r=n(281);t.isAsyncIterable=function(e){return Symbol.asyncIterator&&r.isFunction(null==e?void 0:e[Symbol.asyncIterator])}},8279(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordPromptComponent=void 0;const o=n(9430),s=n(7643);let a=class{constructor(e){this.activeModal=e,this.title="密码验证",this.password="",this.errorMessage=""}submit(){this.password?this.activeModal.close(this.password):this.errorMessage="请输入密码"}cancel(){this.activeModal.dismiss("cancel")}};r([(0,o.Input)(),i("design:type",String)],a.prototype,"title",void 0),a=r([(0,o.Component)({selector:"app-password-prompt",template:'\n <div class="password-prompt">\n <div class="prompt-header">\n <i class="icon-lock"></i>\n <h3>密码验证</h3>\n </div>\n <div class="prompt-content">\n <p>请输入密码以执行此高风险操作:</p>\n <input\n type="password"\n class="form-control"\n [(ngModel)]="password"\n (keydown.enter)="submit()"\n placeholder="输入密码"\n #passwordInput>\n <div *ngIf="errorMessage" class="error-message">\n <i class="icon-alert-circle"></i>\n {{ errorMessage }}\n </div>\n </div>\n <div class="prompt-footer">\n <button class="btn btn-secondary" (click)="cancel()">取消</button>\n <button class="btn btn-primary" (click)="submit()" [disabled]="!password">确认</button>\n </div>\n </div>\n ',styles:["\n .password-prompt {\n background: var(--ai-bg-primary);\n border-radius: 0.5rem;\n max-width: 400px;\n margin: 0 auto;\n }\n .prompt-header {\n padding: 1.5rem;\n text-align: center;\n border-bottom: 1px solid var(--ai-border);\n }\n .prompt-content {\n padding: 1.5rem;\n }\n .error-message {\n margin-top: 0.75rem;\n color: var(--ai-danger);\n font-size: 0.875rem;\n }\n .prompt-footer {\n padding: 1rem 1.5rem;\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n border-top: 1px solid var(--ai-border);\n }\n "]}),i("design:paramtypes",[s.NgbActiveModal])],a),t.PasswordPromptComponent=a},8284(e,t){"use strict";var n=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},r=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.intervalProvider=void 0,t.intervalProvider={setInterval:function(e,i){for(var o=[],s=2;s<arguments.length;s++)o[s-2]=arguments[s];var a=t.intervalProvider.delegate;return(null==a?void 0:a.setInterval)?a.setInterval.apply(a,r([e,i],n(o))):setInterval.apply(void 0,r([e,i],n(o)))},clearInterval:function(e){var n=t.intervalProvider.delegate;return((null==n?void 0:n.clearInterval)||clearInterval)(e)},delegate:void 0}},8357(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Messages=void 0;const r=n(9698);class i extends r.APIResource{create(e,t){return this._client.post("/v1/messages?beta=tools",{body:e,timeout:6e5,...t,headers:{"anthropic-beta":"tools-2024-04-04",...t?.headers},stream:e.stream??!1})}}t.Messages=i,i=t.Messages||(t.Messages={})},8454(e,t,n){var r,i;e.exports=(i=n(9021),n(7165),i.mode.ECB=((r=i.lib.BlockCipherMode.extend()).Encryptor=r.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),r.Decryptor=r.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),r),i.mode.ECB)},8457(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r=".ai-settings-tab {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--ai-bg-primary);\n}\n\n/* 头部 */\n.settings-header {\n padding: 1.5rem;\n background-color: var(--ai-bg-secondary);\n border-bottom: 1px solid var(--ai-border);\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n .header-content {\n flex: 1;\n\n h2 {\n margin: 0 0 0.75rem 0;\n font-size: 1.5rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: var(--ai-dark);\n\n .icon-robot {\n font-size: 1.75rem;\n }\n }\n\n .header-status {\n display: flex;\n gap: 1.5rem;\n flex-wrap: wrap;\n\n .status-indicator,\n .provider-info {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.875rem;\n\n .icon-power {\n font-size: 1rem;\n }\n }\n\n .status-indicator {\n &.enabled {\n color: var(--ai-success);\n\n .icon-power {\n animation: pulse 2s infinite;\n }\n }\n\n &:not(.enabled) {\n color: var(--ai-secondary);\n }\n }\n\n .provider-info {\n color: var(--ai-secondary);\n }\n }\n }\n\n .header-actions {\n display: flex;\n gap: 0.5rem;\n\n .btn-icon {\n width: 40px;\n height: 40px;\n border: none;\n background: transparent;\n border-radius: 0.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s;\n color: var(--ai-secondary);\n\n &:hover {\n background-color: var(--ai-border);\n color: var(--ai-dark);\n }\n\n .icon-refresh {\n animation: spin 2s linear infinite;\n }\n }\n }\n}\n\n/* 标签页导航 */\n.tabs-nav {\n display: flex;\n background-color: var(--ai-bg-secondary);\n border-bottom: 1px solid var(--ai-border);\n overflow-x: auto;\n\n .tab-button {\n padding: 0.75rem 1.5rem;\n border: none;\n background: transparent;\n border-bottom: 2px solid transparent;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n cursor: pointer;\n transition: all 0.2s;\n color: var(--ai-secondary);\n white-space: nowrap;\n font-size: 0.875rem;\n font-weight: 500;\n\n &:hover {\n color: var(--ai-dark);\n background-color: rgba(0, 0, 0, 0.05);\n }\n\n &.active {\n color: var(--ai-primary);\n border-bottom-color: var(--ai-primary);\n background-color: rgba(0, 123, 255, 0.05);\n }\n\n .icon-settings,\n .icon-provider,\n .icon-shield,\n .icon-chat,\n .icon-advanced {\n font-size: 1rem;\n }\n }\n}\n\n/* 内容区域 */\n.settings-content {\n flex: 1;\n overflow-y: auto;\n\n .tab-content {\n padding: 1.5rem;\n }\n}\n\n/* 高级设置 */\n.advanced-settings {\n max-width: 800px;\n\n h3 {\n margin: 0 0 1.5rem 0;\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--ai-dark);\n }\n\n .settings-section {\n margin-bottom: 2rem;\n padding: 1.5rem;\n background-color: var(--ai-bg-secondary);\n border-radius: 0.5rem;\n border: 1px solid var(--ai-border);\n\n h4 {\n margin: 0 0 1rem 0;\n font-size: 1.125rem;\n font-weight: 600;\n color: var(--ai-dark);\n }\n\n .btn {\n padding: 0.5rem 1rem;\n margin-right: 0.75rem;\n margin-bottom: 0.5rem;\n border: none;\n border-radius: 0.375rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n font-size: 0.875rem;\n\n &.btn-primary {\n background-color: var(--ai-primary);\n color: white;\n\n &:hover {\n background-color: darken(#007bff, 7.5%);\n }\n }\n\n &.btn-warning {\n background-color: var(--ai-warning);\n color: var(--ai-dark);\n\n &:hover {\n background-color: darken(#ffc107, 7.5%);\n }\n }\n }\n\n .log-level-selector {\n label {\n display: block;\n font-weight: 500;\n margin-bottom: 0.5rem;\n color: var(--ai-dark);\n }\n\n .form-control {\n width: 200px;\n padding: 0.5rem 0.75rem;\n border: 1px solid var(--ai-border);\n border-radius: 0.375rem;\n background-color: var(--ai-bg-primary);\n color: var(--ai-dark);\n\n &:focus {\n outline: none;\n border-color: var(--ai-primary);\n }\n }\n }\n\n .system-info {\n .info-item {\n display: flex;\n justify-content: space-between;\n padding: 0.5rem 0;\n border-bottom: 1px solid var(--ai-border);\n\n &:last-child {\n border-bottom: none;\n }\n\n label {\n font-weight: 500;\n color: var(--ai-dark);\n }\n\n span {\n color: var(--ai-secondary);\n }\n }\n }\n }\n}\n\n/* 禁用提示 */\n.disabled-message {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 3rem;\n\n .message-content {\n text-align: center;\n max-width: 400px;\n\n .icon-pause-circle {\n font-size: 4rem;\n color: var(--ai-secondary);\n margin-bottom: 1rem;\n }\n\n h3 {\n margin: 0 0 0.75rem 0;\n font-size: 1.5rem;\n font-weight: 600;\n color: var(--ai-dark);\n }\n\n p {\n margin: 0 0 2rem 0;\n color: var(--ai-secondary);\n font-size: 1rem;\n }\n\n .btn {\n padding: 0.75rem 2rem;\n border: none;\n border-radius: 0.5rem;\n background-color: var(--ai-primary);\n color: white;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 1rem;\n\n &:hover {\n background-color: darken(#007bff, 7.5%);\n transform: translateY(-1px);\n }\n }\n }\n}\n\n/* 动画 */\n@keyframes pulse {\n 0%, 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n .settings-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 1rem;\n\n .header-content {\n width: 100%;\n\n .header-status {\n flex-direction: column;\n gap: 0.5rem;\n }\n }\n\n .header-actions {\n width: 100%;\n justify-content: flex-end;\n }\n }\n\n .tabs-nav {\n .tab-button {\n padding: 0.5rem 1rem;\n font-size: 0.8rem;\n }\n }\n\n .settings-content .tab-content {\n padding: 1rem;\n }\n\n .advanced-settings {\n .settings-section {\n padding: 1rem;\n\n .btn {\n width: 100%;\n margin-right: 0;\n justify-content: center;\n }\n }\n }\n}\n"},8461(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.switchScan=void 0;var r=n(680),i=n(5212);t.switchScan=function(e,t){return i.operate(function(n,i){var o=t;return r.switchMap(function(t,n){return e(o,t,n)},function(e,t){return o=t,t})(n).subscribe(i),function(){o=null}})}},8464(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.multicast=void 0;var r=n(4359),i=n(281),o=n(7812);t.multicast=function(e,t){var n=i.isFunction(e)?e:function(){return e};return i.isFunction(t)?o.connect(t,{connector:n}):function(e){return new r.ConnectableObservable(e,n)}}},8526(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.SecuritySettingsComponent=void 0;const o=n(9430),s=n(5084),a=n(9048);let c=class{constructor(e,t){this.config=e,this.logger=t,this.settings={enablePasswordProtection:!1,consentExpiryDays:30,autoApproveLowRisk:!0,promptForMediumRisk:!0,requirePasswordForHighRisk:!0,enableRiskAssessment:!0},this.dangerousPatterns=["rm -rf /","sudo rm","format","dd if=","fork("]}ngOnInit(){this.loadSettings()}loadSettings(){const e=this.config.getSecurityConfig();this.settings={...this.settings,...e}}updateSetting(e,t){this.settings[e]=t,this.config.updateSecurityConfig({[e]:t}),this.logger.debug("Security setting updated",{key:e,value:t})}addDangerousPattern(e){e&&!this.dangerousPatterns.includes(e)&&this.dangerousPatterns.push(e)}removeDangerousPattern(e){this.dangerousPatterns.splice(e,1)}resetToDefaults(){confirm("确定要重置安全设置为默认值吗?")&&(this.settings={enablePasswordProtection:!1,consentExpiryDays:30,autoApproveLowRisk:!0,promptForMediumRisk:!0,requirePasswordForHighRisk:!0,enableRiskAssessment:!0},this.config.updateSecurityConfig(this.settings))}};c=r([(0,o.Component)({selector:"app-security-settings",template:n(4084),styles:[n(4407)]}),i("design:paramtypes",[s.ConfigProviderService,a.LoggerService])],c),t.SecuritySettingsComponent=c},8531(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.scanInternals=void 0;var r=n(7214);t.scanInternals=function(e,t,n,i,o){return function(s,a){var c=n,l=t,u=0;s.subscribe(r.createOperatorSubscriber(a,function(t){var n=u++;l=c?e(l,t,n):(c=!0,t),i&&a.next(l)},o&&function(){c&&a.next(l),a.complete()}))}}},8548(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MultipartBody=void 0;class n{constructor(e){this.body=e}get[Symbol.toStringTag](){return"MultipartBody"}}t.MultipartBody=n},8589(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.count=void 0;var r=n(2070);t.count=function(e){return r.reduce(function(t,n,r){return!e||e(n,r)?t+1:t},0)}},8590(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r='<div class="risk-confirm-dialog">\n \x3c!-- 头部 --\x3e\n <div class="dialog-header">\n <div class="risk-indicator" [style.color]="getRiskLevelColor()">\n <i [class]="getRiskLevelIcon()"></i>\n <span>{{ getRiskLevelText() }}</span>\n </div>\n <button type="button" class="close-button" (click)="cancel()">\n <i class="icon-x"></i>\n </button>\n </div>\n\n \x3c!-- 内容 --\x3e\n <div class="dialog-content">\n \x3c!-- 风险提示 --\x3e\n <div class="risk-warning" [ngClass]="isHighRisk() ? \'high-risk\' : \'medium-risk\'">\n <div class="warning-icon">\n <i [class]="getRiskLevelIcon()"></i>\n </div>\n <div class="warning-text">\n <h4>安全警告</h4>\n <p>此命令被识别为{{ getRiskLevelText() }},请仔细确认后再执行。</p>\n </div>\n </div>\n\n \x3c!-- 命令信息 --\x3e\n <div class="command-info">\n <div class="info-section">\n <label>将要执行的命令:</label>\n <div class="command-display">\n <code>{{ command }}</code>\n <button class="btn-copy" (click)="navigator.clipboard.writeText(command)" title="复制">\n <i class="icon-copy"></i>\n </button>\n </div>\n </div>\n\n <div class="info-section">\n <label>命令解释:</label>\n <p class="explanation">{{ explanation }}</p>\n </div>\n\n \x3c!-- 安全建议 --\x3e\n <div class="info-section" *ngIf="suggestions.length > 0">\n <label>安全建议:</label>\n <ul class="suggestions-list">\n <li *ngFor="let suggestion of suggestions">\n <i class="icon-lightbulb"></i>\n <span>{{ suggestion }}</span>\n </li>\n </ul>\n </div>\n </div>\n\n \x3c!-- 额外警告(高风险) --\x3e\n <div *ngIf="isHighRisk()" class="high-risk-warning">\n <div class="warning-box">\n <i class="icon-alert-triangle"></i>\n <div class="warning-content">\n <strong>⚠️ 重要提示</strong>\n <p *ngIf="riskLevel === \'critical\'">\n 此命令可能导致系统损坏或数据丢失,请在执行前备份重要数据!\n </p>\n <p *ngIf="riskLevel === \'high\'">\n 此命令将修改系统设置或删除文件,请确保您了解命令的作用。\n </p>\n </div>\n </div>\n </div>\n </div>\n\n \x3c!-- 底部按钮 --\x3e\n <div class="dialog-footer">\n <button type="button" class="btn btn-secondary" (click)="cancel()">\n <i class="icon-x"></i>\n 取消\n </button>\n <button\n type="button"\n class="btn btn-danger"\n [ngClass]="{ \'btn-critical\': isHighRisk() }"\n (click)="confirm()">\n <i [class]="isHighRisk() ? \'icon-alert-triangle\' : \'icon-check\'"></i>\n {{ isHighRisk() ? \'仍要执行\' : \'确认执行\' }}\n </button>\n </div>\n</div>\n'},8596(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isScheduler=void 0;var r=n(281);t.isScheduler=function(e){return e&&r.isFunction(e.schedule)}},8619(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.executeSchedule=void 0,t.executeSchedule=function(e,t,n,r,i){void 0===r&&(r=0),void 0===i&&(i=!1);var o=t.schedule(function(){n(),i?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(o),!i)return o}},8710(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.publishReplay=void 0;var r=n(381),i=n(8464),o=n(281);t.publishReplay=function(e,t,n,s){n&&!o.isFunction(n)&&(s=n);var a=o.isFunction(n)?n:void 0;return function(n){return i.multicast(new r.ReplaySubject(e,t,s),a)(n)}}},8785(e,t){"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.RiskLevel=void 0,(n=t.RiskLevel||(t.RiskLevel={})).LOW="low",n.MEDIUM="medium",n.HIGH="high",n.CRITICAL="critical"},8799(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultIfEmpty=void 0;var r=n(5212),i=n(7214);t.defaultIfEmpty=function(e){return r.operate(function(t,n){var r=!1;t.subscribe(i.createOperatorSubscriber(n,function(e){r=!0,n.next(e)},function(){r||n.next(e),n.complete()}))})}},8804(e){"use strict";e.exports=require("@angular/common")},8817(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r=".chat-input-container {\n padding: 1rem;\n background-color: var(--ai-bg-secondary);\n}\n\n/* 输入区域 */\n.input-wrapper {\n position: relative;\n margin-bottom: 0.75rem;\n\n .chat-textarea {\n width: 100%;\n min-height: 44px;\n max-height: 120px;\n padding: 0.75rem 1rem;\n padding-right: 4rem; // 为字符计数留出空间\n border: 2px solid var(--ai-border);\n border-radius: 0.75rem;\n background-color: var(--ai-bg-primary);\n color: var(--ai-dark);\n font-family: inherit;\n font-size: 14px;\n line-height: 1.5;\n resize: none;\n transition: all 0.2s;\n overflow-y: hidden; // 初始隐藏滚动条\n\n &:focus {\n outline: none;\n border-color: var(--ai-primary);\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.15);\n }\n\n &:disabled {\n background-color: var(--ai-bg-secondary);\n cursor: not-allowed;\n opacity: 0.6;\n }\n\n &::placeholder {\n color: var(--ai-secondary);\n opacity: 0.8;\n }\n }\n\n .char-counter {\n position: absolute;\n bottom: 0.5rem;\n right: 0.75rem;\n font-size: 0.75rem;\n color: var(--ai-secondary);\n background-color: var(--ai-bg-primary);\n padding: 0.125rem 0.375rem;\n border-radius: 0.25rem;\n\n &.warning {\n color: var(--ai-warning);\n }\n\n &.error {\n color: var(--ai-danger);\n font-weight: 600;\n }\n }\n}\n\n/* 操作按钮 */\n.input-actions {\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n\n .btn-icon {\n width: 40px;\n height: 40px;\n border: none;\n background: transparent;\n border-radius: 0.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s;\n color: var(--ai-secondary);\n\n &:hover {\n background-color: var(--ai-border);\n color: var(--ai-dark);\n }\n\n .icon-clear {\n font-size: 1.125rem;\n }\n }\n\n .btn-send {\n min-width: 100px;\n height: 40px;\n padding: 0 1rem;\n border: none;\n border-radius: 0.5rem;\n background-color: var(--ai-primary);\n color: white;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n\n &:hover:not(:disabled) {\n background-color: darken(#007bff, 7.5%);\n transform: translateY(-1px);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n }\n\n .icon-send {\n font-size: 1rem;\n }\n\n .btn-text {\n font-size: 0.875rem;\n }\n }\n}\n\n/* 帮助提示 */\n.input-hints {\n margin-top: 0.5rem;\n display: flex;\n gap: 1rem;\n flex-wrap: wrap;\n\n .hint-item {\n font-size: 0.75rem;\n color: var(--ai-secondary);\n display: flex;\n align-items: center;\n gap: 0.375rem;\n\n kbd {\n padding: 0.125rem 0.375rem;\n background-color: var(--ai-bg-primary);\n border: 1px solid var(--ai-border);\n border-radius: 0.25rem;\n font-size: 0.7rem;\n font-family: monospace;\n }\n\n .icon-warning {\n color: var(--ai-warning);\n font-size: 0.875rem;\n }\n }\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n .chat-input-container {\n padding: 0.75rem;\n }\n\n .input-actions {\n .btn-send {\n min-width: 80px;\n .btn-text {\n display: none;\n }\n }\n }\n\n .input-hints {\n .hint-item {\n font-size: 0.7rem;\n }\n }\n}\n"},8860(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.AiHotkeyProvider=void 0;const o=n(9430),s=n(1368),a=n(7643),c=n(7295),l=n(863);let u=class extends s.HotkeyProvider{constructor(e,t){super(),this.modal=e,this.aiService=t}async provide(){return[{id:"ai-assistant-chat",name:"Open AI Assistant Chat"},{id:"ai-command-generation",name:"Generate Command from Natural Language"}]}openAiChat(){this.modal.open(l.ChatInterfaceComponent,{size:"xl",backdrop:!0,keyboard:!0})}openCommandGeneration(){this.modal.open(l.ChatInterfaceComponent,{size:"lg",backdrop:!0,keyboard:!0})}};u=r([(0,o.Injectable)(),i("design:paramtypes",[a.NgbModal,c.AiAssistantService])],u),t.AiHotkeyProvider=u},8877(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.audit=void 0;var r=n(5212),i=n(9724),o=n(7214);t.audit=function(e){return r.operate(function(t,n){var r=!1,s=null,a=null,c=!1,l=function(){if(null==a||a.unsubscribe(),a=null,r){r=!1;var e=s;s=null,n.next(e)}c&&n.complete()},u=function(){a=null,c&&n.complete()};t.subscribe(o.createOperatorSubscriber(n,function(t){r=!0,s=t,a||i.innerFrom(e(t)).subscribe(a=o.createOperatorSubscriber(n,l,u))},function(){c=!0,(!r||!a||a.closed)&&n.complete()}))})}},8936(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderConfigComponent=void 0;const o=n(9430),s=n(5084),a=n(9048);let c=class{constructor(e,t){this.config=e,this.logger=t,this.providerStatus={},this.refreshStatus=new o.EventEmitter,this.switchProvider=new o.EventEmitter,this.selectedProvider="",this.configs={},this.providerTemplates={openai:{name:"OpenAI",description:"OpenAI GPT模型",fields:[{key:"apiKey",label:"API Key",type:"password",required:!0},{key:"baseURL",label:"Base URL",type:"text",default:"https://api.openai.com/v1",required:!1},{key:"model",label:"Model",type:"select",options:["gpt-4","gpt-3.5-turbo"],default:"gpt-4",required:!1}]},anthropic:{name:"Anthropic Claude",description:"Anthropic Claude模型",fields:[{key:"apiKey",label:"API Key",type:"password",required:!0},{key:"baseURL",label:"Base URL",type:"text",default:"https://api.anthropic.com",required:!1},{key:"model",label:"Model",type:"select",options:["claude-3-opus","claude-3-sonnet"],default:"claude-3-sonnet",required:!1}]},minimax:{name:"Minimax",description:"Minimax AI模型",fields:[{key:"apiKey",label:"API Key",type:"password",required:!0},{key:"baseURL",label:"Base URL",type:"text",default:"https://api.minimaxi.com/anthropic",required:!1},{key:"model",label:"Model",type:"select",options:["MiniMax-M2","MiniMax-M2-Stable"],default:"MiniMax-M2",required:!1}]},glm:{name:"GLM (ChatGLM)",description:"智谱AI ChatGLM模型",fields:[{key:"apiKey",label:"API Key",type:"password",required:!0},{key:"baseURL",label:"Base URL",type:"text",default:"https://open.bigmodel.cn/api/paas/v4",required:!1},{key:"model",label:"Model",type:"select",options:["glm-4","glm-4-air","chatglm4"],default:"glm-4",required:!1}]}}}ngOnInit(){this.loadConfigs()}loadConfigs(){const e=this.config.getAllProviderConfigs();this.configs=e,this.selectedProvider=this.config.getDefaultProvider()}saveConfig(e){const t=this.configs[e];t&&(this.config.setProviderConfig(e,t),this.logger.info("Provider config saved",{provider:e}))}addProvider(e){if(!this.configs[e]){const t=this.providerTemplates[e];if(t){const n={name:e,displayName:t.name,enabled:!0,...this.createDefaultConfig(t.fields)};this.configs[e]=n,this.saveConfig(e)}}}removeProvider(e){confirm(`确定要删除 ${this.providerTemplates[e]?.name} 的配置吗?`)&&(delete this.configs[e],this.config.deleteProviderConfig(e),this.logger.info("Provider config removed",{provider:e}))}toggleProviderEnabled(e){this.configs[e]&&(this.configs[e].enabled=!this.configs[e].enabled,this.saveConfig(e))}async testConnection(e){alert(`正在测试 ${this.providerTemplates[e]?.name} 的连接...`)}createDefaultConfig(e){const t={};return e.forEach(e=>{void 0!==e.default&&(t[e.key]=e.default)}),t}getFieldType(e){return e.type||"text"}getFieldOptions(e){return e.options||[]}isPasswordField(e){return"password"===e.type}isRequired(e){return e.required}getProviderTemplate(e){return this.providerTemplates[e]}hasConfig(e){return!!this.configs[e]}getConfigValue(e,t,n=""){return this.configs[e]?.[t]??n}updateConfigValue(e,t,n){this.configs[e]||(this.configs[e]={}),this.configs[e][t]=n}};r([(0,o.Input)(),i("design:type",Object)],c.prototype,"providerStatus",void 0),r([(0,o.Output)(),i("design:type",Object)],c.prototype,"refreshStatus",void 0),r([(0,o.Output)(),i("design:type",Object)],c.prototype,"switchProvider",void 0),c=r([(0,o.Component)({selector:"app-provider-config",template:n(5426),styles:[n(4125)]}),i("design:paramtypes",[s.ConfigProviderService,a.LoggerService])],c),t.ProviderConfigComponent=c},8996(e,t,n){"use strict";var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.windowToggle=void 0;var i=n(6808),o=n(9879),s=n(5212),a=n(9724),c=n(7214),l=n(5717),u=n(4830);t.windowToggle=function(e,t){return s.operate(function(n,s){var d=[],f=function(e){for(;0<d.length;)d.shift().error(e);s.error(e)};a.innerFrom(e).subscribe(c.createOperatorSubscriber(s,function(e){var n=new i.Subject;d.push(n);var r,p=new o.Subscription;try{r=a.innerFrom(t(e))}catch(e){return void f(e)}s.next(n.asObservable()),p.add(r.subscribe(c.createOperatorSubscriber(s,function(){u.arrRemove(d,n),n.complete(),p.unsubscribe()},l.noop,f)))},l.noop)),n.subscribe(c.createOperatorSubscriber(s,function(e){var t,n,i=d.slice();try{for(var o=r(i),s=o.next();!s.done;s=o.next())s.value.next(e)}catch(e){t={error:e}}finally{try{s&&!s.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}},function(){for(;0<d.length;)d.shift().complete();s.complete()},f,function(){for(;0<d.length;)d.shift().unsubscribe()}))})}},9021(e,t,n){var r;e.exports=(r=r||function(e){var t;if("undefined"!=typeof window&&window.crypto&&(t=window.crypto),"undefined"!=typeof self&&self.crypto&&(t=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(t=globalThis.crypto),!t&&"undefined"!=typeof window&&window.msCrypto&&(t=window.msCrypto),!t&&void 0!==n.g&&n.g.crypto&&(t=n.g.crypto),!t)try{t=n(477)}catch(e){}var r=function(){if(t){if("function"==typeof t.getRandomValues)try{return t.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof t.randomBytes)try{return t.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},i=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),o={},s=o.lib={},a=s.Base={extend:function(e){var t=i(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},c=s.WordArray=a.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||u).stringify(this)},concat:function(e){var t=this.words,n=e.words,r=this.sigBytes,i=e.sigBytes;if(this.clamp(),r%4)for(var o=0;o<i;o++){var s=n[o>>>2]>>>24-o%4*8&255;t[r+o>>>2]|=s<<24-(r+o)%4*8}else for(var a=0;a<i;a+=4)t[r+a>>>2]=n[a>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=a.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n<e;n+=4)t.push(r());return new c.init(t,e)}}),l=o.enc={},u=l.Hex={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],i=0;i<n;i++){var o=t[i>>>2]>>>24-i%4*8&255;r.push((o>>>4).toString(16)),r.push((15&o).toString(16))}return r.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r<t;r+=2)n[r>>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new c.init(n,t/2)}},d=l.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],i=0;i<n;i++){var o=t[i>>>2]>>>24-i%4*8&255;r.push(String.fromCharCode(o))}return r.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r<t;r++)n[r>>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new c.init(n,t)}},f=l.Utf8={stringify:function(e){try{return decodeURIComponent(escape(d.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return d.parse(unescape(encodeURIComponent(e)))}},p=s.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n,r=this._data,i=r.words,o=r.sigBytes,s=this.blockSize,a=o/(4*s),l=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*s,u=e.min(4*l,o);if(l){for(var d=0;d<l;d+=s)this._doProcessBlock(i,d);n=i.splice(0,l),r.sigBytes-=u}return new c.init(n,u)},clone:function(){var e=a.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0}),h=(s.Hasher=p.extend({cfg:a.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){p.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,n){return new e.init(n).finalize(t)}},_createHmacHelper:function(e){return function(t,n){return new h.HMAC.init(e,n).finalize(t)}}}),o.algo={});return o}(Math),r)},9035(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.findIndex=void 0;var r=n(5212),i=n(8183);t.findIndex=function(e,t){return r.operate(i.createFind(e,t,"index"))}},9048(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(s=(o<3?i(s):o>3?i(t,n,s):i(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.LoggerService=void 0;const o=n(9430);let s=class{constructor(){this.logLevel="info",this.logs=[],this.loadLogLevel()}loadLogLevel(){try{const e=localStorage.getItem("ai-assistant-config");if(e){const t=JSON.parse(e);this.logLevel=t.logLevel||"info"}}catch(e){}}debug(e,t){this.shouldLog("debug")&&this.log("DEBUG",e,t)}info(e,t){this.shouldLog("info")&&this.log("INFO",e,t)}warn(e,t){this.shouldLog("warn")&&this.log("WARN",e,t)}error(e,t){this.shouldLog("error")&&this.log("ERROR",e,t)}shouldLog(e){const t=["debug","info","warn","error"],n=t.indexOf(this.logLevel);return t.indexOf(e)>=n}log(e,t,n){const r={level:e,message:t,timestamp:new Date,data:n};switch(this.logs.push(r),this.logs.length>1e3&&(this.logs=this.logs.slice(-500)),e){case"DEBUG":console.debug(`[AI Assistant] ${t}`,n);break;case"INFO":console.info(`[AI Assistant] ${t}`,n);break;case"WARN":console.warn(`[AI Assistant] ${t}`,n);break;case"ERROR":console.error(`[AI Assistant] ${t}`,n)}}getLogs(){return[...this.logs]}clearLogs(){this.logs=[]}setLogLevel(e){this.logLevel=e,localStorage.setItem("ai-assistant-log-level",e)}getLogLevel(){return this.logLevel}};s=r([(0,o.Injectable)({providedIn:"root"}),i("design:paramtypes",[])],s),t.LoggerService=s},9054(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.startWith=void 0;var r=n(9546),i=n(6404),o=n(5212);t.startWith=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=i.popScheduler(e);return o.operate(function(t,i){(n?r.concat(e,t,n):r.concat(e,t)).subscribe(i)})}},9224(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.refCount=void 0;var r=n(5212),i=n(7214);t.refCount=function(){return r.operate(function(e,t){var n=null;e._refCount++;var r=i.createOperatorSubscriber(t,void 0,void 0,void 0,function(){if(!e||e._refCount<=0||0<--e._refCount)n=null;else{var r=e._connection,i=n;n=null,!r||i&&r!==i||r.unsubscribe(),t.unsubscribe()}});e.subscribe(r),r.closed||(n=e.connect())})}},9232(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0,t.VERSION="0.20.9"},9244(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.combineAll=void 0;var r=n(7933);t.combineAll=r.combineLatestAll},9287(e,t,n){"use strict";var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.bufferCount=void 0;var i=n(5212),o=n(7214),s=n(4830);t.bufferCount=function(e,t){return void 0===t&&(t=null),t=null!=t?t:e,i.operate(function(n,i){var a=[],c=0;n.subscribe(o.createOperatorSubscriber(i,function(n){var o,l,u,d,f=null;c++%t===0&&a.push([]);try{for(var p=r(a),h=p.next();!h.done;h=p.next())(v=h.value).push(n),e<=v.length&&(f=null!=f?f:[]).push(v)}catch(e){o={error:e}}finally{try{h&&!h.done&&(l=p.return)&&l.call(p)}finally{if(o)throw o.error}}if(f)try{for(var m=r(f),g=m.next();!g.done;g=m.next()){var v=g.value;s.arrRemove(a,v),i.next(v)}}catch(e){u={error:e}}finally{try{g&&!g.done&&(d=m.return)&&d.call(m)}finally{if(u)throw u.error}}},function(){var e,t;try{for(var n=r(a),o=n.next();!o.done;o=n.next()){var s=o.value;i.next(s)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}i.complete()},void 0,function(){a=null}))})}},9326(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r});const r=".chat-message {\n display: flex;\n gap: 0.75rem;\n margin-bottom: 1rem;\n cursor: pointer;\n transition: opacity 0.2s;\n\n &:hover {\n opacity: 0.95;\n }\n\n &.user-message {\n flex-direction: row-reverse;\n\n .message-avatar {\n .avatar.user {\n background-color: var(--ai-primary);\n color: white;\n }\n }\n\n .message-content {\n .message-bubble {\n background-color: var(--ai-primary);\n color: white;\n border-bottom-right-radius: 0.25rem;\n }\n }\n }\n\n &.assistant-message {\n .message-avatar {\n .avatar.assistant {\n background-color: var(--ai-success);\n color: white;\n }\n }\n\n .message-content {\n .message-bubble {\n background-color: var(--ai-assistant-message);\n color: var(--ai-dark);\n border-bottom-left-radius: 0.25rem;\n }\n }\n }\n\n &.system-message {\n justify-content: center;\n\n .message-avatar {\n .avatar.system {\n background-color: var(--ai-warning);\n color: white;\n }\n }\n\n .message-content {\n .message-bubble {\n background-color: var(--ai-system-message);\n color: var(--ai-dark);\n border-radius: 0.5rem;\n font-style: italic;\n }\n }\n }\n\n &.grouped {\n &.user-message,\n &.assistant-message {\n .message-avatar {\n opacity: 0.6;\n }\n\n .message-content {\n .message-bubble {\n border-radius: 0.75rem;\n }\n }\n }\n }\n\n &.with-avatar {\n .message-avatar {\n flex-shrink: 0;\n\n .avatar {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1rem;\n }\n }\n }\n}\n\n/* 消息内容 */\n.message-content {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n max-width: 70%;\n\n .message-bubble {\n padding: 0.75rem 1rem;\n border-radius: 0.75rem;\n box-shadow: var(--ai-box-shadow);\n word-wrap: break-word;\n position: relative;\n\n .message-text {\n margin: 0;\n line-height: 1.6;\n\n pre {\n margin: 0;\n white-space: pre-wrap;\n word-wrap: break-word;\n font-family: inherit;\n font-size: inherit;\n }\n\n &.ai-response {\n white-space: pre-wrap;\n }\n }\n\n /* 操作按钮 */\n .message-actions {\n display: flex;\n gap: 0.25rem;\n margin-top: 0.5rem;\n opacity: 0;\n transition: opacity 0.2s;\n\n .action-btn {\n width: 28px;\n height: 28px;\n border: none;\n background: rgba(0, 0, 0, 0.05);\n border-radius: 0.375rem;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s;\n color: var(--ai-secondary);\n\n &:hover {\n background: rgba(0, 0, 0, 0.1);\n color: var(--ai-dark);\n }\n }\n }\n\n &:hover .message-actions {\n opacity: 1;\n }\n }\n\n .message-time {\n font-size: 0.75rem;\n opacity: 0.6;\n padding: 0 0.5rem;\n }\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n .chat-message {\n .message-content {\n max-width: 85%;\n }\n }\n}\n"},9328(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmptyError=void 0;var r=n(9619);t.EmptyError=r.createErrorClass(function(e){return function(){e(this),this.name="EmptyError",this.message="no elements in sequence"}})},9330(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.merge=void 0;var o=n(5212),s=n(8087),a=n(6404),c=n(7058);t.merge=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.popScheduler(e),l=a.popNumber(e,1/0);return o.operate(function(t,o){s.mergeAll(l)(c.from(i([t],r(e)),n)).subscribe(o)})}},9430(e){"use strict";e.exports=require("@angular/core")},9506(e,t,n){var r,i,o,s,a,c,l,u;e.exports=(u=n(9021),n(5471),n(1025),o=(i=(r=u).lib).Base,s=i.WordArray,c=(a=r.algo).MD5,l=a.EvpKDF=o.extend({cfg:o.extend({keySize:4,hasher:c,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n,r=this.cfg,i=r.hasher.create(),o=s.create(),a=o.words,c=r.keySize,l=r.iterations;a.length<c;){n&&i.update(n),n=i.update(e).finalize(t),i.reset();for(var u=1;u<l;u++)n=i.finalize(n),i.reset();o.concat(n)}return o.sigBytes=4*c,o}}),r.EvpKDF=function(e,t,n){return l.create(n).compute(e,t)},u.EvpKDF)},9512(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.concatMap=void 0;var r=n(7478),i=n(281);t.concatMap=function(e,t){return i.isFunction(t)?r.mergeMap(e,t,1):r.mergeMap(e,1)}},9516(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.partition=void 0;var r=n(4120),i=n(5934);t.partition=function(e,t){return function(n){return[i.filter(e,t)(n),i.filter(r.not(e,t))(n)]}}},9517(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UnsubscriptionError=void 0;var r=n(9619);t.UnsubscriptionError=r.createErrorClass(function(e){return function(t){e(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map(function(e,t){return t+1+") "+e.toString()}).join("\n "):"",this.name="UnsubscriptionError",this.errors=t}})},9533(e,t,n){"use strict";var r,i=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.AsyncScheduler=void 0;var o=n(5881),s=function(e){function t(t,n){void 0===n&&(n=o.Scheduler.now);var r=e.call(this,t,n)||this;return r.actions=[],r._active=!1,r}return i(t,e),t.prototype.flush=function(e){var t=this.actions;if(this._active)t.push(e);else{var n;this._active=!0;do{if(n=e.execute(e.state,e.delay))break}while(e=t.shift());if(this._active=!1,n){for(;e=t.shift();)e.unsubscribe();throw n}}},t}(o.Scheduler);t.AsyncScheduler=s},9546(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.concat=void 0;var r=n(201),i=n(6404),o=n(7058);t.concat=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return r.concatAll()(o.from(e,i.popScheduler(e)))}},9557(e,t,n){var r,i,o,s,a,c,l,u;e.exports=(u=n(9021),n(3240),n(1380),i=(r=u).x64,o=i.Word,s=i.WordArray,a=r.algo,c=a.SHA512,l=a.SHA384=c.extend({_doReset:function(){this._hash=new s.init([new o.init(3418070365,3238371032),new o.init(1654270250,914150663),new o.init(2438529370,812702999),new o.init(355462360,4144912697),new o.init(1731405415,4290775857),new o.init(2394180231,1750603025),new o.init(3675008525,1694076839),new o.init(1203062813,3204075428)])},_doFinalize:function(){var e=c._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=c._createHelper(l),r.HmacSHA384=c._createHmacHelper(l),u.SHA384)},9619(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createErrorClass=void 0,t.createErrorClass=function(e){var t=e(function(e){Error.call(e),e.stack=(new Error).stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}},9663(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.distinctUntilChanged=void 0;var r=n(7699),i=n(5212),o=n(7214);function s(e,t){return e===t}t.distinctUntilChanged=function(e,t){return void 0===t&&(t=r.identity),e=null!=e?e:s,i.operate(function(n,r){var i,s=!0;n.subscribe(o.createOperatorSubscriber(r,function(n){var o=t(n);!s&&e(i,o)||(s=!1,i=o,r.next(n))}))})}},9694(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},i=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.mergeWith=void 0;var o=n(9330);t.mergeWith=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return o.merge.apply(void 0,i([],r(e)))}},9698(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.APIResource=void 0,t.APIResource=class{constructor(e){this._client=e}}},9724(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(i,o){function s(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}c((r=r.apply(e,t||[])).next())})},i=this&&this.__generator||function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(e){o=[6,e],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}},o=this&&this.__asyncValues||function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e="function"==typeof s?s(e):e[Symbol.iterator](),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise(function(r,i){!function(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}(r,i,(t=e[n](t)).done,t.value)})}}},s=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.fromReadableStreamLike=t.fromAsyncIterable=t.fromIterable=t.fromPromise=t.fromArrayLike=t.fromInteropObservable=t.innerFrom=void 0;var a=n(4975),c=n(7552),l=n(8051),u=n(629),d=n(8263),f=n(6297),p=n(2187),h=n(5462),m=n(281),g=n(2980),v=n(2884);function b(e){return new l.Observable(function(t){var n=e[v.observable]();if(m.isFunction(n.subscribe))return n.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function y(e){return new l.Observable(function(t){for(var n=0;n<e.length&&!t.closed;n++)t.next(e[n]);t.complete()})}function w(e){return new l.Observable(function(t){e.then(function(e){t.closed||(t.next(e),t.complete())},function(e){return t.error(e)}).then(null,g.reportUnhandledError)})}function _(e){return new l.Observable(function(t){var n,r;try{for(var i=s(e),o=i.next();!o.done;o=i.next()){var a=o.value;if(t.next(a),t.closed)return}}catch(e){n={error:e}}finally{try{o&&!o.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}t.complete()})}function x(e){return new l.Observable(function(t){(function(e,t){var n,s,a,c;return r(this,void 0,void 0,function(){var r,l;return i(this,function(i){switch(i.label){case 0:i.trys.push([0,5,6,11]),n=o(e),i.label=1;case 1:return[4,n.next()];case 2:if((s=i.sent()).done)return[3,4];if(r=s.value,t.next(r),t.closed)return[2];i.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return l=i.sent(),a={error:l},[3,11];case 6:return i.trys.push([6,,9,10]),s&&!s.done&&(c=n.return)?[4,c.call(n)]:[3,8];case 7:i.sent(),i.label=8;case 8:return[3,10];case 9:if(a)throw a.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})})(e,t).catch(function(e){return t.error(e)})})}function S(e){return x(h.readableStreamLikeToAsyncGenerator(e))}t.innerFrom=function(e){if(e instanceof l.Observable)return e;if(null!=e){if(u.isInteropObservable(e))return b(e);if(a.isArrayLike(e))return y(e);if(c.isPromise(e))return w(e);if(d.isAsyncIterable(e))return x(e);if(p.isIterable(e))return _(e);if(h.isReadableStreamLike(e))return S(e)}throw f.createInvalidObservableTypeError(e)},t.fromInteropObservable=b,t.fromArrayLike=y,t.fromPromise=w,t.fromIterable=_,t.fromAsyncIterable=x,t.fromReadableStreamLike=S},9795(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.raceInit=t.race=void 0;var r=n(8051),i=n(9724),o=n(7652),s=n(7214);function a(e){return function(t){for(var n=[],r=function(r){n.push(i.innerFrom(e[r]).subscribe(s.createOperatorSubscriber(t,function(e){if(n){for(var i=0;i<n.length;i++)i!==r&&n[i].unsubscribe();n=null}t.next(e)})))},o=0;n&&!t.closed&&o<e.length;o++)r(o)}}t.race=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return 1===(e=o.argsOrArgArray(e)).length?i.innerFrom(e[0]):new r.Observable(a(e))},t.raceInit=a},9818(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dematerialize=void 0;var r=n(1245),i=n(5212),o=n(7214);t.dematerialize=function(){return i.operate(function(e,t){e.subscribe(o.createOperatorSubscriber(t,function(e){return r.observeNotification(e,t)}))})}},9821(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setShims=t.isFsReadStream=t.fileFromPath=t.getDefaultAgent=t.getMultipartRequestOptions=t.ReadableStream=t.File=t.Blob=t.FormData=t.Headers=t.Response=t.Request=t.fetch=t.kind=t.auto=void 0,t.auto=!1,t.kind=void 0,t.fetch=void 0,t.Request=void 0,t.Response=void 0,t.Headers=void 0,t.FormData=void 0,t.Blob=void 0,t.File=void 0,t.ReadableStream=void 0,t.getMultipartRequestOptions=void 0,t.getDefaultAgent=void 0,t.fileFromPath=void 0,t.isFsReadStream=void 0,t.setShims=function(e,n={auto:!1}){if(t.auto)throw new Error(`you must \`import '@anthropic-ai/sdk/shims/${e.kind}'\` before importing anything else from @anthropic-ai/sdk`);if(t.kind)throw new Error(`can't \`import '@anthropic-ai/sdk/shims/${e.kind}'\` after \`import '@anthropic-ai/sdk/shims/${t.kind}'\``);t.auto=n.auto,t.kind=e.kind,t.fetch=e.fetch,t.Request=e.Request,t.Response=e.Response,t.Headers=e.Headers,t.FormData=e.FormData,t.Blob=e.Blob,t.File=e.File,t.ReadableStream=e.ReadableStream,t.getMultipartRequestOptions=e.getMultipartRequestOptions,t.getDefaultAgent=e.getDefaultAgent,t.fileFromPath=e.fileFromPath,t.isFsReadStream=e.isFsReadStream}},9861(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Completions=void 0;const r=n(9698);class i extends r.APIResource{create(e,t){return this._client.post("/v1/complete",{body:e,timeout:6e5,...t,stream:e.stream??!1})}}t.Completions=i,i=t.Completions||(t.Completions={})},9879(e,t,n){"use strict";var r=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=this&&this.__read||function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s},o=this&&this.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n<r;n++,i++)e[i]=t[n];return e};Object.defineProperty(t,"__esModule",{value:!0}),t.isSubscription=t.EMPTY_SUBSCRIPTION=t.Subscription=void 0;var s=n(281),a=n(9517),c=n(4830),l=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}var t;return e.prototype.unsubscribe=function(){var e,t,n,c,l;if(!this.closed){this.closed=!0;var d=this._parentage;if(d)if(this._parentage=null,Array.isArray(d))try{for(var f=r(d),p=f.next();!p.done;p=f.next())p.value.remove(this)}catch(t){e={error:t}}finally{try{p&&!p.done&&(t=f.return)&&t.call(f)}finally{if(e)throw e.error}}else d.remove(this);var h=this.initialTeardown;if(s.isFunction(h))try{h()}catch(e){l=e instanceof a.UnsubscriptionError?e.errors:[e]}var m=this._finalizers;if(m){this._finalizers=null;try{for(var g=r(m),v=g.next();!v.done;v=g.next()){var b=v.value;try{u(b)}catch(e){l=null!=l?l:[],e instanceof a.UnsubscriptionError?l=o(o([],i(l)),i(e.errors)):l.push(e)}}}catch(e){n={error:e}}finally{try{v&&!v.done&&(c=g.return)&&c.call(g)}finally{if(n)throw n.error}}}if(l)throw new a.UnsubscriptionError(l)}},e.prototype.add=function(t){var n;if(t&&t!==this)if(this.closed)u(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&c.arrRemove(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&c.arrRemove(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function u(e){s.isFunction(e)?e():e.unsubscribe()}t.Subscription=l,t.EMPTY_SUBSCRIPTION=l.EMPTY,t.isSubscription=function(e){return e instanceof l||e&&"closed"in e&&s.isFunction(e.remove)&&s.isFunction(e.add)&&s.isFunction(e.unsubscribe)}},9913(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.concatMapTo=void 0;var r=n(9512),i=n(281);t.concatMapTo=function(e,t){return i.isFunction(t)?r.concatMap(function(){return e},t):r.concatMap(function(){return e})}},9915(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isEmpty=void 0;var r=n(5212),i=n(7214);t.isEmpty=function(){return r.operate(function(e,t){e.subscribe(i.createOperatorSubscriber(t,function(){t.next(!1),t.complete()},function(){t.next(!0),t.complete()}))})}},9980(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.first=void 0;var r=n(9328),i=n(5934),o=n(4383),s=n(8799),a=n(632),c=n(7699);t.first=function(e,t){var n=arguments.length>=2;return function(l){return l.pipe(e?i.filter(function(t,n){return e(t,n,l)}):c.identity,o.take(1),n?s.defaultIfEmpty(t):a.throwIfEmpty(function(){return new r.EmptyError}))}}}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,n),o.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r=n(2380);module.exports.AiAssistantModule=r.default})();
|