MCPcopy Index your code
hub / github.com/google/adk-python / z5A

Function z5A

src/google/adk/cli/browser/main-3CUQG2IN.js:4134–4134  ·  view source on GitHub ↗
(i,e)

Source from the content-addressed store, hash-verified

4132
4133
4134`]})};var PX=(i,e)=>e.key;function dwA(i,e){if(i&1){let A=aA();I(0,"div",7)(1,"div",11),U("click",function(){L(A);let n=p(3);return G(n.setActiveTab("form"))}),D(2,"Form"),h(),I(3,"div",11),U("click",function(){L(A);let n=p(3);return G(n.setActiveTab("json"))}),D(4,"JSON"),h(),I(5,"div",11),U("click",function(){L(A);let n=p(3);return G(n.setActiveTab("payload"))}),D(6,"Payload"),h(),I(7,"div",11),U("click",function(){L(A);let n=p(3);return G(n.setActiveTab("response schema"))}),D(8,"Schema"),h()()}if(i&2){let A=p(3);Q(),_A("active",A.activeTab==="form"),Q(2),_A("active",A.activeTab==="json"),Q(2),_A("active",A.activeTab==="payload"),Q(2),_A("active",A.activeTab==="response schema")}}function IwA(i,e){if(i&1){let A=aA();I(0,"div",9)(1,"div",12),D(2),h(),I(3,"div",13)(4,"div",14),D(5,"Payload"),h(),lA(6,"app-custom-json-viewer",15),h(),I(7,"div",16)(8,"div",17)(9,"label",18)(10,"input",19),Ni("ngModelChange",function(n){L(A);let o=p(3);return wi(o.confirmationModel.confirmed,n)||(o.confirmationModel.confirmed=n),G(n)}),h(),I(11,"span"),D(12,"Confirmed"),h()()(),I(13,"button",20),U("click",function(){L(A);let n=p(3);return G(n.onSend())}),D(14," Submit "),h()()()}if(i&2){let A=p(3);Q(2),Ee(" ",A.functionCall.args==null||A.functionCall.args.toolConfirmation==null?null:A.functionCall.args.toolConfirmation.hint," "),Q(4),H("json",A.functionCall.args==null||A.functionCall.args.originalFunctionCall==null?null:A.functionCall.args.originalFunctionCall.args),Q(4),H("id",ZE("confirmed-checkbox-",A.functionCall.id)),Ri("ngModel",A.confirmationModel.confirmed)}}function BwA(i,e){i&1&&D(0," *")}function hwA(i,e){if(i&1&&(I(0,"div",28),D(1),h()),i&2){let A=p(2).$implicit;Q(),nA(A.description)}}function EwA(i,e){if(i&1){let A=aA();I(0,"input",27),Ni("ngModelChange",function(n){L(A);let o=p().$implicit,a=p(5);return wi(a.formModel[o.key],n)||(a.formModel[o.key]=n),G(n)}),h(),T(1,hwA,2,1,"div",28)}if(i&2){let A=p().$implicit,t=p(5);H("id",A.key),Ri("ngModel",t.formModel[A.key]),Q(),O(A.description?1:-1)}}function QwA(i,e){if(i&1){let A=aA();I(0,"input",31),Ni("ngModelChange",function(n){L(A);let o=p(2).$implicit,a=p(5);return wi(a.formModel[o.key],n)||(a.formModel[o.key]=n),G(n)}),h()}if(i&2){let A=p(2).$implicit,t=p(5);H("id",A.key),Ri("ngModel",t.formModel[A.key])}}function uwA(i,e){if(i&1){let A=aA();I(0,"input",32),Ni("ngModelChange",function(n){L(A);let o=p(2).$implicit,a=p(5);return wi(a.formModel[o.key],n)||(a.formModel[o.key]=n),G(n)}),h()}if(i&2){let A=p(2).$implicit,t=p(5);H("id",A.key),Ri("ngModel",t.formModel[A.key])}}function pwA(i,e){if(i&1&&(I(0,"div",28),D(1),h()),i&2){let A=p(2).$implicit;Q(),nA(A.description)}}function fwA(i,e){if(i&1&&(T(0,QwA,1,2,"input",29)(1,uwA,1,2,"input",30),T(2,pwA,2,1,"div",28)),i&2){let A=p().$implicit;O(A.type==="number"||A.type==="integer"?0:1),Q(2),O(A.description?2:-1)}}function mwA(i,e){if(i&1&&(I(0,"div",25),D(1),T(2,BwA,1,0),h(),I(3,"div",26),T(4,EwA,2,3)(5,fwA,3,2),h()),i&2){let A=e.$implicit;Q(),Ee(" ",A.title),Q(),O(A.required?2:-1),Q(2),O(A.type==="boolean"?4:5)}}function wwA(i,e){if(i&1){let A=aA();I(0,"div",21),ke(1,mwA,6,3,null,null,PX),I(3,"div",23)(4,"button",24),U("click",function(){L(A);let n=p(4);return G(n.onSend())}),D(5," Submit "),h()()()}if(i&2){let A=p(4);Q(),_e(A.formFields)}}function ywA(i,e){if(i&1){let A=aA();I(0,"div",22)(1,"textarea",33),Ni("ngModelChange",function(n){L(A);let o=p(4);return wi(o.formModelJson,n)||(o.formModelJson=n),G(n)}),U("ngModelChange",function(n){L(A);let o=p(4);return G(o.onJsonInputChange(n))}),h()(),I(2,"div",23)(3,"button",24),U("click",function(){L(A);let n=p(4);return G(n.onSend())}),D(4," Submit "),h()()}if(i&2){let A=p(4);Q(),Ri("ngModel",A.formModelJson)}}function DwA(i,e){if(i&1&&(I(0,"div",22)(1,"pre"),D(2),h()()),i&2){let A=p(4);Q(2),nA(A.getPayloadJson())}}function vwA(i,e){if(i&1&&(I(0,"div",22)(1,"pre"),D(2),h()()),i&2){let A=p(4);Q(2),nA(A.getResponseSchemaJson())}}function bwA(i,e){if(i&1&&(I(0,"div",10),T(1,wwA,6,0,"div",21)(2,ywA,5,1)(3,DwA,3,1,"div",22)(4,vwA,3,1,"div",22),h()),i&2){let A=p(3);Q(),O(A.activeTab==="form"?1:A.activeTab==="json"?2:A.activeTab==="payload"?3:A.activeTab==="response schema"?4:-1)}}function MwA(i,e){if(i&1){let A=aA();I(0,"input",34),Ni("ngModelChange",function(n){L(A);let o=p(3);return wi(o.functionCall.userResponse,n)||(o.functionCall.userResponse=n),G(n)}),U("keydown.enter",function(){L(A);let n=p(3);return G(n.onSend())}),h(),I(1,"button",35),U("click",function(){L(A);let n=p(3);return G(n.onSend())}),I(2,"mat-icon"),D(3,"send"),h()()}if(i&2){let A=p(3);Ri("ngModel",A.functionCall.userResponse),Q(),H("disabled",!A.functionCall.userResponse)}}function SwA(i,e){if(i&1&&(I(0,"div",2)(1,"div",4),lA(2,"app-markdown",5),h(),I(3,"div",6),T(4,dwA,9,8,"div",7),I(5,"div",8),T(6,IwA,15,5,"div",9)(7,bwA,5,1,"div",10)(8,MwA,4,2),h()()()),i&2){let A=p(2);Q(2),H("text",A.getPromptText()),Q(2),O(A.formFields.length>0?4:-1),Q(2),O(A.isConfirmationRequest?6:A.formFields.length>0?7:8)}}function kwA(i,e){if(i&1){let A=aA();I(0,"div",7)(1,"div",11),U("click",function(){L(A);let n=p(3);return G(n.setActiveTab("form"))}),D(2,"Form"),h(),I(3,"div",11),U("click",function(){L(A);let n=p(3);return G(n.setActiveTab("json"))}),D(4,"JSON"),h(),I(5,"div",11),U("click",function(){L(A);let n=p(3);return G(n.setActiveTab("payload"))}),D(6,"Payload"),h(),I(7,"div",11),U("click",function(){L(A);let n=p(3);return G(n.setActiveTab("response schema"))}),D(8,"Schema"),h()()}if(i&2){let A=p(3);Q(),_A("active",A.activeTab==="form"),Q(2),_A("active",A.activeTab==="json"),Q(2),_A("active",A.activeTab==="payload"),Q(2),_A("active",A.activeTab==="response schema")}}function _wA(i,e){if(i&1){let A=aA();I(0,"div",9)(1,"div",12),D(2),h(),I(3,"div",13)(4,"div",14),D(5,"Payload"),h(),lA(6,"app-custom-json-viewer",15),h(),I(7,"div",16)(8,"div",17)(9,"label",18)(10,"input",19),Ni("ngModelChange",function(n){L(A);let o=p(3);return wi(o.confirmationModel.confirmed,n)||(o.confirmationModel.confirmed=n),G(n)}),h(),I(11,"span"),D(12,"Confirmed"),h()()(),I(13,"button",20),U("click",function(){L(A);let n=p(3);return G(n.onSend())}),D(14," Submit "),h()()()}if(i&2){let A=p(3);Q(2),Ee(" ",A.functionCall.args==null||A.functionCall.args.toolConfirmation==null?null:A.functionCall.args.toolConfirmation.hint," "),Q(4),H("json",A.functionCall.args==null||A.functionCall.args.originalFunctionCall==null?null:A.functionCall.args.originalFunctionCall.args),Q(4),H("id",ZE("confirmed-checkbox-standalone-",A.functionCall.id)),Ri("ngModel",A.confirmationModel.confirmed)}}function xwA(i,e){i&1&&D(0," *")}function RwA(i,e){if(i&1&&(I(0,"div",28),D(1),h()),i&2){let A=p(2).$implicit;Q(),nA(A.description)}}function NwA(i,e){if(i&1){let A=aA();I(0,"input",27),Ni("ngModelChange",function(n){L(A);let o=p().$implicit,a=p(5);return wi(a.formModel[o.key],n)||(a.formModel[o.key]=n),G(n)}),h(),T(1,RwA,2,1,"div",28)}if(i&2){let A=p().$implicit,t=p(5);H("id",A.key),Ri("ngModel",t.formModel[A.key]),Q(),O(A.description?1:-1)}}function FwA(i,e){if(i&1){let A=aA();I(0,"input",31),Ni("ngModelChange",function(n){L(A);let o=p(2).$implicit,a=p(5);return wi(a.formModel[o.key],n)||(a.formModel[o.key]=n),G(n)}),h()}if(i&2){let A=p(2).$implicit,t=p(5);H("id",A.key),Ri("ngModel",t.formModel[A.key])}}function LwA(i,e){if(i&1){let A=aA();I(0,"input",32),Ni("ngModelChange",function(n){L(A);let o=p(2).$implicit,a=p(5);return wi(a.formModel[o.key],n)||(a.formModel[o.key]=n),G(n)}),h()}if(i&2){let A=p(2).$implicit,t=p(5);H("id",A.key),Ri("ngModel",t.formModel[A.key])}}function GwA(i,e){if(i&1&&(I(0,"div",28),D(1),h()),i&2){let A=p(2).$implicit;Q(),nA(A.description)}}function KwA(i,e){if(i&1&&(T(0,FwA,1,2,"input",29)(1,LwA,1,2,"input",30),T(2,GwA,2,1,"div",28)),i&2){let A=p().$implicit;O(A.type==="number"||A.type==="integer"?0:1),Q(2),O(A.description?2:-1)}}function UwA(i,e){if(i&1&&(I(0,"div",25),D(1),T(2,xwA,1,0),h(),I(3,"div",26),T(4,NwA,2,3)(5,KwA,3,2),h()),i&2){let A=e.$implicit;Q(),Ee(" ",A.title),Q(),O(A.required?2:-1),Q(2),O(A.type==="boolean"?4:5)}}function TwA(i,e){if(i&1){let A=aA();I(0,"div",21),ke(1,UwA,6,3,null,null,PX),I(3,"div",23)(4,"button",24),U("click",function(){L(A);let n=p(4);return G(n.onSend())}),D(5," Submit "),h()()()}if(i&2){let A=p(4);Q(),_e(A.formFields)}}function OwA(i,e){if(i&1){let A=aA();I(0,"div",22)(1,"textarea",33),Ni("ngModelChange",function(n){L(A);let o=p(4);return wi(o.formModelJson,n)||(o.formModelJson=n),G(n)}),U("ngModelChange",function(n){L(A);let o=p(4);return G(o.onJsonInputChange(n))}),h()(),I(2,"div",23)(3,"button",24),U("click",function(){L(A);let n=p(4);return G(n.onSend())}),D(4," Submit "),h()()}if(i&2){let A=p(4);Q(),Ri("ngModel",A.formModelJson)}}function JwA(i,e){if(i&1&&(I(0,"div",22)(1,"pre"),D(2),h()()),i&2){let A=p(4);Q(2),nA(A.getPayloadJson())}}function YwA(i,e){if(i&1&&(I(0,"div",22)(1,"pre"),D(2),h()()),i&2){let A=p(4);Q(2),nA(A.getResponseSchemaJson())}}function HwA(i,e){if(i&1&&(I(0,"div",10),T(1,TwA,6,0,"div",21)(2,OwA,5,1)(3,JwA,3,1,"div",22)(4,YwA,3,1,"div",22),h()),i&2){let A=p(3);Q(),O(A.activeTab==="form"?1:A.activeTab==="json"?2:A.activeTab==="payload"?3:A.activeTab==="response schema"?4:-1)}}function zwA(i,e){if(i&1){let A=aA();I(0,"input",34),Ni("ngModelChange",function(n){L(A);let o=p(3);return wi(o.functionCall.userResponse,n)||(o.functionCall.userResponse=n),G(n)}),U("keydown.enter",function(){L(A);let n=p(3);return G(n.onSend())}),h(),I(1,"button",35),U("click",function(){L(A);let n=p(3);return G(n.onSend())}),I(2,"mat-icon"),D(3,"send"),h()()}if(i&2){let A=p(3);Ri("ngModel",A.functionCall.userResponse),Q(),H("disabled",!A.functionCall.userResponse)}}function PwA(i,e){if(i&1&&(I(0,"div",3),T(1,kwA,9,8,"div",7),I(2,"div",8),T(3,_wA,15,5,"div",9)(4,HwA,5,1,"div",10)(5,zwA,4,2),h()()),i&2){let A=p(2);Q(),O(A.formFields.length>0?1:-1),Q(2),O(A.isConfirmationRequest?3:A.formFields.length>0?4:5)}}function jwA(i,e){if(i&1&&(I(0,"div",1),U("click",function(t){return t.stopPropagation()}),T(1,SwA,9,3,"div",2)(2,PwA,6,2,"div",3),h()),i&2){let A=p();Q(),O(A.hasMessage()?1:2)}}var ly=class i{functionCall;appName;userId;sessionId;responseComplete=new FA;formModel={};formFields=[];activeTab="form";formModelJson="";confirmationModel={confirmed:!1,payload:""};get isConfirmationRequest(){return this.functionCall?.name==="adk_request_confirmation"}cdr=w(Mt);ngOnChanges(e){e.functionCall&&this.initForm()}initForm(){if(this.formModel={},this.formFields=[],this.isConfirmationRequest){this.confirmationModel.confirmed=this.functionCall.args?.toolConfirmation?.confirmed||!1,this.confirmationModel.payload=JSON.stringify(this.functionCall.args?.originalFunctionCall?.args||{},null,2);return}let e=this.functionCall?.args?.response_schema;if(e&&e.type==="object"&&e.properties)for(let A of Object.keys(e.properties)){let t=e.properties[A],n=t.type;if(!n&&t.anyOf){let o=t.anyOf.find(a=>a.type!=="null");o&&(n=o.type)}this.formFields.push({key:A,type:n,title:t.title||A,description:t.description||"",required:e.required?.includes(A)||!1}),n==="boolean"?this.formModel[A]=!1:n==="number"||n==="integer"?this.formModel[A]=null:this.formModel[A]=""}}getCleanedFormModel(){let e=this.functionCall?.args?.response_schema;if(!e||e.type!=="object"||!e.properties)return this.formModel;let A=P({},this.formModel);for(let t of Object.keys(e.properties)){let n=e.properties[t],o=A[t];if(o!=null&&o!==""){let a=n.type;if(!a&&n.anyOf){let r=n.anyOf.find(s=>s.type!=="null");r&&(a=r.type)}a==="integer"?A[t]=parseInt(o,10):a==="number"&&(A[t]=parseFloat(o))}else A[t]=null}return A}updateFormModelJson(){this.formModelJson=JSON.stringify(this.getCleanedFormModel(),null,2)}onJsonInputChange(e){try{let A=JSON.parse(e);this.formModel=A}catch(A){}}setActiveTab(e){this.activeTab=e,e==="json"&&this.updateFormModelJson()}hasMessage(){return!!(this.functionCall.args?.prompt||this.functionCall.args?.message)}getPromptText(){return this.functionCall.args?.prompt||this.functionCall.args?.message||"Please provide your response"}hasPayload(){return this.functionCall.args?.payload!==void 0&&this.functionCall.args?.payload!==null}getPayloadJson(){try{return JSON.stringify(this.functionCall.args?.payload||{},null,2)}catch(e){return""}}hasResponseSchema(){return!!this.functionCall.args?.response_schema}getResponseSchemaJson(){try{return JSON.stringify(this.functionCall.args?.response_schema||{},null,2)}catch(e){return""}}onSend(){if(this.isConfirmationRequest){let o={};try{o=JSON.parse(this.confirmationModel.payload)}catch(s){o=this.functionCall.args?.originalFunctionCall?.args||{}}let a={confirmed:this.confirmationModel.confirmed,payload:o};this.functionCall.responseStatus="sent",this.cdr.detectChanges();let r={role:"user",parts:[{functionResponse:{id:this.functionCall.id,name:this.functionCall.name,response:a}}],functionCallEventId:this.functionCall.functionCallEventId};this.responseComplete.emit(r);return}let e,A=this.functionCall?.args?.response_schema;if(A&&A.type==="object"&&A.properties&&this.formFields.length>0){let o=this.getCleanedFormModel();e=o,this.functionCall.userResponse=JSON.stringify(o),this.functionCall.sentUserResponse=this.functionCall.userResponse}else{if(!this.functionCall.userResponse||!this.functionCall.userResponse.trim())return;this.functionCall.sentUserResponse=this.functionCall.userResponse;try{let o=JSON.parse(this.functionCall.userResponse);typeof o=="object"&&o!==null?e=o:e={result:this.functionCall.userResponse}}catch(o){e={result:this.functionCall.userResponse}}}this.functionCall.responseStatus="sent",this.cdr.detectChanges();let n={role:"user",parts:[{functionResponse:{id:this.functionCall.id,name:this.functionCall.name,response:e}}],functionCallEventId:this.functionCall.functionCallEventId};this.responseComplete.emit(n)}static \u0275fac=function(A){return new(A||i)};static \u0275cmp=vA({type:i,selectors:[["app-long-running-response"]],inputs:{functionCall:"functionCall",appName:"appName",userId:"userId",sessionId:"sessionId"},outputs:{responseComplete:"responseComplete"},features:[ii],decls:1,vars:1,consts:[[1,"response-chip-container"],[1,"response-chip-container",3,"click"],[1,"message-box"],[1,"request-card-standalone"],[1,"message-content"],[3,"text"],[1,"request-card"],[1,"tabs-header"],[1,"input-container"],[1,"confirmation-container",2,"width","100%"],[1,"tabs-content"],[1,"tab-link",3,"click"],[1,"confirmation-hint",2,"margin-bottom","10px","font-size","13px","font-weight","600","color","var(--mat-sys-on-surface)"],[1,"confirmation-payload",2,"margin-bottom","10px"],[1,"field-label",2,"margin-bottom","5px","font-size","12px","font-weight","500","color","var(--mat-sys-on-surface-variant)"],[3,"json"],[1,"confirmation-footer",2,"display","flex","justify-content","space-between","align-items","center","margin-top","10px"],[1,"confirmation-checkbox",2,"font-size","12px"],[2,"display","flex","align-items","center","gap","6px","cursor","pointer"],["type","checkbox",2,"cursor","pointer",3,"ngModelChange","id","ngModel"],["mat-raised-button","","color","primary",1,"form-submit-button",2,"margin-top","0",3,"click"],[1,"schema-form","grid-layout"],[1,"json-view"],[1,"grid-submit"],["mat-raised-button","","color","primary",1,"form-submit-button",3,"click"],[1,"grid-label"],[1,"grid-value"],["type","checkbox",3,"ngModelChange","id","ngModel"],[1,"field-description"],["type","number",1,"form-input",3,"id","ngModel"],["type","text",1,"form-input",3,"id","ngModel"],["type","number",1,"form-input",3,"ngModelChange","id","ngModel"],["type","text",1,"form-input",3,"ngModelChange","id","ngModel"],[1,"json-textarea",3,"ngModelChange","ngModel"],["placeholder","Enter your response...",1,"response-input",3,"ngModelChange","keydown.enter","ngModel"],["mat-icon-button","",1,"send-button",3,"click","disabled"]],template:function(A,t){A&1&&T(0,jwA,3,1,"div",0),A&2&&O(t.functionCall.responseStatus!=="sent"&&t.functionCall.responseStatus!=="sending"?0:-1)},dependencies:[fn,Gn,gQ,ev,Kn,Ho,yi,ki,zt,B1,fl],styles:["[_nghost-%COMP%]{display:block}.response-chip-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;margin:5px 5px 5px 0}.message-box[_ngcontent-%COMP%]{background-color:var(--mat-sys-surface-container-high);border:1px solid var(--mat-sys-outline-variant);border-radius:20px;padding:12px 16px;box-shadow:none;display:flex;flex-direction:column;gap:12px}.message-content[_ngcontent-%COMP%]{flex:1;font-size:12px}.request-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;width:100%}.request-card-standalone[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--mat-sys-surface-container-high) 70%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid color-mix(in srgb,var(--mat-sys-outline-variant) 30%,transparent);border-radius:12px;padding:12px;box-shadow:0 4px 16px #0003;display:flex;flex-direction:column;gap:8px;max-width:400px}.data-buttons[_ngcontent-%COMP%]{display:flex;gap:8px}.input-container[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;width:100%}.input-container[_ngcontent-%COMP%] .response-input[_ngcontent-%COMP%]{flex:1;border:1px solid var(--mat-sys-outline-variant);border-radius:4px;padding:4px 8px;background:var(--mat-sys-surface-container);outline:none;font-size:12px;font-family:inherit;color:var(--mat-sys-on-surface);caret-color:var(--mat-sys-primary)}.input-container[_ngcontent-%COMP%] .response-input[_ngcontent-%COMP%]::placeholder{color:var(--mat-sys-on-surface-variant);opacity:.6}.input-container[_ngcontent-%COMP%] .send-button[_ngcontent-%COMP%]{color:var(--mat-sys-primary);width:24px;height:24px;min-width:24px;padding:0;line-height:24px;box-sizing:border-box}.input-container[_ngcontent-%COMP%] .send-button[_ngcontent-%COMP%]:disabled{color:var(--mat-sys-on-surface-variant);opacity:.3}.input-container[_ngcontent-%COMP%] .send-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.tabs-header[_ngcontent-%COMP%]{display:flex;gap:8px;border-bottom:1px solid var(--mat-sys-outline-variant);margin-bottom:8px;padding-bottom:4px}.tab-link[_ngcontent-%COMP%]{font-size:11px;font-weight:500;color:var(--mat-sys-on-surface-variant);cursor:pointer;padding:2px 6px;border-radius:4px}.tab-link[_ngcontent-%COMP%]:hover{background:var(--mat-sys-surface-container-high)}.tab-link.active[_ngcontent-%COMP%]{color:var(--mat-sys-primary);background:var(--mat-sys-primary-container)}.tabs-content[_ngcontent-%COMP%]{width:100%}.json-view[_ngcontent-%COMP%]{padding:4px 0;max-height:200px;overflow:auto}.json-view[_ngcontent-%COMP%] pre[_ngcontent-%COMP%]{margin:0;font-size:10px;font-family:monospace;color:var(--mat-sys-on-surface)}.json-view[_ngcontent-%COMP%] .json-textarea[_ngcontent-%COMP%]{width:100%;height:150px;margin:0;font-size:10px;font-family:monospace;color:var(--mat-sys-on-surface);background:transparent;border:1px solid var(--mat-sys-outline-variant);border-radius:4px;padding:4px;resize:vertical;box-sizing:border-box}.json-view[_ngcontent-%COMP%] .json-textarea[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--mat-sys-primary)}.schema-form.grid-layout[_ngcontent-%COMP%]{display:grid;grid-template-columns:max-content 1fr;gap:4px 8px;align-items:start;width:100%;padding:4px 2px}.grid-label[_ngcontent-%COMP%]{font-size:11px;font-weight:500;color:var(--mat-sys-on-surface);text-align:right;white-space:nowrap;padding-top:6px}.grid-value[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;width:100%}.grid-value[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%]{width:100%;border:1px solid var(--mat-sys-outline-variant);border-radius:4px;padding:4px 6px;font-size:11px;background:var(--mat-sys-surface-container);color:var(--mat-sys-on-surface);box-sizing:border-box;height:28px}.grid-value[_ngcontent-%COMP%] .form-input[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--mat-sys-primary)}.grid-value[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%]{margin:4px 0;align-self:flex-start}.field-description[_ngcontent-%COMP%]{font-size:10px;color:var(--mat-sys-on-surface-variant);opacity:.8}.grid-submit[_ngcontent-%COMP%]{grid-column:1/-1;display:flex;justify-content:flex-end;margin-top:4px}.form-submit-button[_ngcontent-%COMP%]{align-self:flex-end;margin-top:2px;height:28px!important;line-height:28px!important;font-size:11px!important}"]})};function VwA(i,e){if(i&1&&lA(0,"a2ui-surface",0),i&2){let A=p();H("surfaceId",A.surfaceId())("surface",A.surface())}}var gy=class i{processor=w(ZN);beginRendering=null;surfaceUpdate=null;dataModelUpdate=null;surfaceId=mA(null);activeSurface=mA(null);surface=ye(()=>this.activeSurface());constructor(){}ngOnChanges(e){let A=[],t=null;e.beginRendering&&this.beginRendering&&Object.keys(this.beginRendering).length>0&&(A.push(this.beginRendering),t=this.beginRendering?.beginRendering?.surfaceId??t),e.surfaceUpdate&&this.surfaceUpdate&&Object.keys(this.surfaceUpdate).length>0&&(A.push(this.surfaceUpdate),t=this.surfaceUpdate?.surfaceUpdate?.surfaceId??t),e.dataModelUpdate&&this.dataModelUpdate&&Object.keys(this.dataModelUpdate).length>0&&(A.push(this.dataModelUpdate),t=this.dataModelUpdate?.dataModelUpdate?.surfaceId??t),A.length>0&&this.processor.processMessages(A),t&&this.surfaceId.set(t);let n=this.surfaceId();if(n){let o=this.processor.getSurfaces();o.has(n)&&this.activeSurface.set(o.get(n))}}static \u0275fac=function(A){return new(A||i)};static \u0275cmp=vA({type:i,selectors:[["app-a2ui-canvas"]],inputs:{beginRendering:"beginRendering",surfaceUpdate:"surfaceUpdate",dataModelUpdate:"dataModelUpdate"},features:[ii],decls:1,vars:1,consts:[[3,"surfaceId","surface"]],template:function(A,t){A&1&&T(0,VwA,1,2,"a2ui-surface",0),A&2&&O(t.surface()?0:-1)},dependencies:[li,AF],styles:["[_nghost-%COMP%]{display:block;height:100%;width:100%;overflow:auto}[_nghost-%COMP%] *{box-sizing:border-box}.canvas[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px;padding:16px;box-sizing:border-box;min-height:100%}"],changeDetection:0})};var Cy=(i,e)=>({text:i,thought:e});function qwA(i,e){if(i&1&&(I(0,"div",1),D(1),h()),i&2){let A=p();Q(),nA(A.type)}}function WwA(i,e){if(i&1&&lA(0,"img",8),i&2){let A=p().$implicit;H("src",A.url,mo)}}function ZwA(i,e){if(i&1&&(I(0,"a",9),D(1),h()),i&2){let A=p(2).$implicit;H("href",A.url,mo),Q(),nA(A.file.name)}}function XwA(i,e){if(i&1&&D(0),i&2){let A=p(2).$implicit;Ee(" ",A.file.name," ")}}function $wA(i,e){if(i&1&&(I(0,"mat-icon"),D(1,"insert_drive_file"),h(),T(2,ZwA,2,2,"a",9)(3,XwA,1,1)),i&2){let A=p().$implicit;Q(2),O(A.url?2:3)}}function A5A(i,e){if(i&1&&(I(0,"div",7),T(1,WwA,1,1,"img",8),T(2,$wA,4,1),h()),i&2){let A=e.$implicit;Q(),O(A.file.type.startsWith("image/")?1:-1),Q(),O(A.file.type.startsWith("image/")?-1:2)}}function e5A(i,e){if(i&1&&(I(0,"div",4),ke(1,A5A,3,2,"div",7,ni),h()),i&2){let A=p(2);Q(),_e(A.uiEvent.attachments)}}function t5A(i,e){i&1&&(I(0,"div",1),D(1,"thought"),h())}function i5A(i,e){if(i&1&&(I(0,"div"),T(1,t5A,2,0,"div",1),dn(2,10),h()),i&2){let A=e.$implicit,t=e.$index,n=p(4);_A("thought-container",A.thought&&n.type!=="thought")("not-first-part",t!==0),Q(),O(A.thought&&n.type!=="thought"?1:-1),Q(),H("ngComponentOutlet",n.markdownComponent)("ngComponentOutletInputs",L0(7,Cy,A.text,A.thought))}}function n5A(i,e){if(i&1&&ke(0,i5A,3,10,"div",11,ni),i&2){let A=p(3);_e(A.uiEvent.textParts)}}function o5A(i,e){if(i&1&&dn(0,10),i&2){let A=p(3);H("ngComponentOutlet",A.markdownComponent)("ngComponentOutletInputs",L0(2,Cy,A.uiEvent.text||A.rawMessageText,A.uiEvent.thought))}}function a5A(i,e){if(i&1&&(I(0,"div",5),T(1,n5A,2,0)(2,o5A,1,5,"ng-container",10),h()),i&2){let A=p(2);H("appJsonTooltip",A.jsonOutputData),Q(),O(A.uiEvent.textParts&&A.uiEvent.textParts.length>0?1:2)}}function r5A(i,e){if(i&1){let A=aA();I(0,"div",13)(1,"textarea",14,0),U("ngModelChange",function(n){L(A);let o=p(4);return G(o.userEditEvalCaseMessageChange.emit(n))})("keydown",function(n){L(A);let o=p(4);return G(o.handleKeydown.emit({event:n,message:o.uiEvent}))}),h(),I(3,"div",15)(4,"span",16),U("click",function(){L(A);let n=p(4);return G(n.cancelEditMessage.emit(n.uiEvent))}),D(5," close "),h(),I(6,"span",17),U("click",function(){L(A);let n=p(4);return G(n.saveEditMessage.emit(n.uiEvent))}),D(7," check "),h()()()}if(i&2){let A=p(4);Q(),H("ngModel",A.userEditEvalCaseMessage),Q(3),H("matTooltip",A.i18n.cancelEditingTooltip),Q(2),H("matTooltip",A.i18n.saveEvalMessageTooltip)}}function s5A(i,e){i&1&&(I(0,"div",1),D(1,"thought"),h())}function l5A(i,e){if(i&1&&(I(0,"div"),T(1,s5A,2,0,"div",1),dn(2,10),h()),i&2){let A=e.$implicit,t=e.$index,n=p(6);_A("thought-container",A.thought&&n.type!=="thought")("not-first-part",t!==0),Q(),O(A.thought&&n.type!=="thought"?1:-1),Q(),H("ngComponentOutlet",n.markdownComponent)("ngComponentOutletInputs",L0(7,Cy,A.text,A.thought))}}function g5A(i,e){if(i&1&&ke(0,l5A,3,10,"div",11,ni),i&2){let A=p(5);_e(A.uiEvent.textParts)}}function c5A(i,e){if(i&1&&dn(0,10),i&2){let A=p(5);H("ngComponentOutlet",A.markdownComponent)("ngComponentOutletInputs",L0(2,Cy,A.uiEvent.text,A.uiEvent.thought))}}function C5A(i,e){if(i&1&&T(0,g5A,2,0)(1,c5A,1,5,"ng-container",10),i&2){let A=p(4);O(A.uiEvent.textParts&&A.uiEvent.textParts.length>0?0:1)}}function d5A(i,e){if(i&1&&T(0,r5A,8,3,"div",13)(1,C5A,2,1),i&2){let A=p(3);O(A.uiEvent.isEditing?0:1)}}function I5A(i,e){if(i&1&&(I(0,"div"),lA(1,"div",18),h()),i&2){let A=p(3);Q(),H("innerHTML",A.renderGooglerSearch(A.uiEvent.renderedContent),Fc)}}function B5A(i,e){if(i&1&&lA(0,"app-a2ui-canvas",12),i&2){let A=p(3);H("beginRendering",A.uiEvent.a2uiData.beginRendering)("surfaceUpdate",A.uiEvent.a2uiData.surfaceUpdate)("dataModelUpdate",A.uiEvent.a2uiData.dataModelUpdate)}}function h5A(i,e){if(i&1&&(I(0,"div")(1,"div"),T(2,d5A,2,1),h(),T(3,I5A,2,1,"div"),T(4,B5A,1,3,"app-a2ui-canvas",12),h()),i&2){let A=p(2);Q(2),O(A.uiEvent.text?2:-1),Q(),O(A.uiEvent.renderedContent?3:-1),Q(),O(A.uiEvent.a2uiData?4:-1)}}function E5A(i,e){if(i&1&&(I(0,"code"),D(1),h()),i&2){let A=p(2);Q(),Ee(" ",A.uiEvent.executableCode.code," ")}}function Q5A(i,e){if(i&1&&(I(0,"div")(1,"div"),D(2),h(),I(3,"div"),D(4),h()()),i&2){let A=p(2);Q(2),Ya("",A.i18n.outcomeLabel,": ",A.uiEvent.codeExecutionResult.outcome),Q(2),Ya("",A.i18n.outputLabel,": ",A.uiEvent.codeExecutionResult.output)}}function u5A(i,e){if(i&1){let A=aA();I(0,"div",19)(1,"img",21),U("click",function(){L(A);let n=p(4);return G(n.openViewImageDialog.emit(n.uiEvent.inlineData.data))}),h()()}if(i&2){let A=p(4);Q(),H("src",A.uiEvent.inlineData.data,mo)}}function p5A(i,e){if(i&1&&(I(0,"div"),lA(1,"app-audio-player",22),h()),i&2){let A=p(4);Q(),H("base64data",A.uiEvent.inlineData.data)}}function f5A(i,e){if(i&1&&(I(0,"div",20),lA(1,"video",23),h()),i&2){let A=p(4);Q(),H("src",A.uiEvent.inlineData.data,mo)}}function m5A(i,e){if(i&1){let A=aA();I(0,"div")(1,"div",25)(2,"mat-icon",26),D(3,"description"),h(),I(4,"a",27),U("click",function(){L(A);let n=p(5);return G(n.openBase64InNewTab.emit({data:n.uiEvent.inlineData.data,mimeType:n.uiEvent.inlineData.mimeType}))}),D(5),h()()()}if(i&2){let A=p(5);Q(5),Ee(" ",A.uiEvent.inlineData.name," ")}}function w5A(i,e){if(i&1&&(I(0,"div",24)(1,"pre",28),D(2),h()()),i&2){let A=p(5);Q(2),nA(A.getTextContent(A.uiEvent.inlineData.data))}}function y5A(i,e){if(i&1&&T(0,m5A,6,1,"div")(1,w5A,3,1,"div",24),i&2){let A=p(4);O(A.uiEvent.inlineData.mimeType==="text/html"?0:1)}}function D5A(i,e){if(i&1){let A=aA();I(0,"div")(1,"button",29),U("click",function(){L(A);let n=p(4);return G(n.openBase64InNewTab.emit({data:n.uiEvent.inlineData.data,mimeType:n.uiEvent.inlineData.mimeType}))}),D(2),h()()}if(i&2){let A=p(4);Q(2),Ee(" ",A.uiEvent.inlineData.name," ")}}function v5A(i,e){if(i&1&&(I(0,"div")(1,"div"),T(2,u5A,2,1,"div",19)(3,p5A,2,1,"div")(4,f5A,2,1,"div",20)(5,y5A,2,1)(6,D5A,3,1,"div"),h()()),i&2){let A,t=p(3);Q(2),O((A=t.uiEvent.inlineData.mediaType)===t.MediaType.IMAGE?2:A===t.MediaType.AUDIO?3:A===t.MediaType.VIDEO?4:A===t.MediaType.TEXT?5:6)}}function b5A(i,e){if(i&1){let A=aA();I(0,"div")(1,"img",30),U("click",function(){L(A);let n=p(4);return G(n.openViewImageDialog.emit(n.uiEvent.inlineData.data))}),h()()}if(i&2){let A=p(4);Q(),H("src",A.uiEvent.inlineData.data,mo)}}function M5A(i,e){if(i&1&&(I(0,"div",20),lA(1,"video",23),h()),i&2){let A=p(4);Q(),H("src",A.uiEvent.inlineData.data,mo)}}function S5A(i,e){if(i&1&&(I(0,"div",7)(1,"mat-icon"),D(2,"insert_drive_file"),h(),I(3,"a",9),D(4),h()()),i&2){let A=p(4);Q(3),H("href",A.uiEvent.inlineData.data,mo),Q(),nA(A.uiEvent.inlineData.displayName)}}function k5A(i,e){if(i&1&&(I(0,"div"),T(1,b5A,2,1,"div")(2,M5A,2,1,"div",20)(3,S5A,5,2,"div",7),h()),i&2){let A=p(3);Q(),O(A.uiEvent.inlineData.mimeType.startsWith("image/")?1:A.uiEvent.inlineData.mimeType.startsWith("video/")?2:3)}}function _5A(i,e){if(i&1&&T(0,v5A,7,1,"div")(1,k5A,4,1,"div"),i&2){let A=p(2);O(A.uiEvent.role==="bot"?0:1)}}function x5A(i,e){if(i&1&&(I(0,"div",31),lA(1,"app-audio-player",22),h()),i&2){let A=p(4);Q(),H("base64data",A.audioUrl||"")}}function R5A(i,e){if(i&1&&T(0,x5A,2,1,"div",31),i&2){let A=e.$implicit;O(A.fileData&&A.fileData.mimeType.startsWith("audio/")?0:-1)}}function N5A(i,e){if(i&1&&ke(0,R5A,1,1,null,null,ni),i&2){let A=p(2);_e(A.uiEvent.event==null||A.uiEvent.event.content==null?null:A.uiEvent.event.content.parts)}}function F5A(i,e){if(i&1&&(I(0,"div",34)(1,"div",35),D(2),h(),lA(3,"app-custom-json-viewer",36),h(),I(4,"div",37)(5,"div",38),D(6),h(),lA(7,"app-custom-json-viewer",36),h()),i&2){let A=p(3);Q(2),nA(A.i18n.actualToolUsesLabel),Q(),H("json",A.uiEvent.actualInvocationToolUses),Q(3),nA(A.i18n.expectedToolUsesLabel),Q(),H("json",A.uiEvent.expectedInvocationToolUses)}}function L5A(i,e){if(i&1&&(I(0,"div",34)(1,"div",35),D(2),h(),I(3,"div"),D(4),h()(),I(5,"div",37)(6,"div",38),D(7),h(),I(8,"div"),D(9),h()()),i&2){let A=p(3);Q(2),nA(A.i18n.actualResponseLabel),Q(2),nA(A.uiEvent.actualFinalResponse),Q(3),nA(A.i18n.expectedResponseLabel),Q(2),nA(A.uiEvent.expectedFinalResponse)}}function G5A(i,e){if(i&1&&(I(0,"div",33)(1,"span",39),D(2),h(),I(3,"span",40),D(4),h()()),i&2){let A=p(3);Q(2),Ya("",A.i18n.matchScoreLabel,": ",A.uiEvent.evalScore),Q(2),Ya("",A.i18n.thresholdLabel,": ",A.uiEvent.evalThreshold)}}function K5A(i,e){if(i&1&&(I(0,"div",6)(1,"div",32),T(2,F5A,8,4)(3,L5A,10,4),h(),T(4,G5A,5,4,"div",33),h()),i&2){let A=p(2);Q(2),O(A.uiEvent.actualInvocationToolUses?2:A.uiEvent.actualFinalResponse?3:-1),Q(2),O(A.uiEvent.evalScore!==void 0&&A.uiEvent.evalThreshold!==void 0?4:-1)}}function U5A(i,e){if(i&1&&(T(0,e5A,3,0,"div",4),T(1,a5A,3,2,"div",5)(2,h5A,5,3,"div"),T(3,E5A,2,1,"code"),T(4,Q5A,5,4,"div"),T(5,_5A,2,1),T(6,N5A,2,0),T(7,K5A,5,2,"div",6)),i&2){let A=p();O(A.uiEvent.attachments?0:-1),Q(),O(A.uiEvent.event.nodeInfo!=null&&A.uiEvent.event.nodeInfo.messageAsOutput?1:A.uiEvent.thought||A.uiEvent.text||A.uiEvent.renderedContent||A.uiEvent.a2uiData||A.uiEvent.event.inputTranscription||A.uiEvent.event.outputTranscription?2:-1),Q(2),O(A.uiEvent.executableCode?3:-1),Q(),O(A.uiEvent.codeExecutionResult?4:-1),Q(),O(A.uiEvent.inlineData?5:-1),Q(),O(!(A.uiEvent.event==null||A.uiEvent.event.content==null)&&A.uiEvent.event.content.parts?6:-1),Q(),O(A.uiEvent.failedMetric&&A.uiEvent.evalStatus===2?7:-1)}}function T5A(i,e){if(i&1&&lA(0,"app-custom-json-viewer",2),i&2){let A=p();H("json",A.uiEvent.event.output)("appJsonTooltip",(A.uiEvent.event.nodeInfo==null?null:A.uiEvent.event.nodeInfo.outputFor)||A.uiEvent.nodePath)}}function O5A(i,e){if(i&1&&lA(0,"app-custom-json-viewer",3),i&2){let A=p();H("json",A.uiEvent.error)("appJsonTooltip",A.uiEvent.error)}}function J5A(i,e){if(i&1&&D(0),i&2){let A=p(2);Ee(" ",A.uiEvent.event.inputTranscription.text," ")}}function Y5A(i,e){if(i&1&&D(0),i&2){let A=p(2);Ee(" ",A.uiEvent.event.outputTranscription.text," ")}}function H5A(i,e){if(i&1&&T(0,J5A,1,1)(1,Y5A,1,1),i&2){let A=p();O(A.role==="user"&&A.uiEvent.event.inputTranscription?0:A.role==="bot"&&A.uiEvent.event.outputTranscription?1:-1)}}var cy=class i{uiEvent;type="message";role="bot";evalStatus;userEditEvalCaseMessage="";userEditEvalCaseMessageChange=new FA;handleKeydown=new FA;cancelEditMessage=new FA;saveEditMessage=new FA;openViewImageDialog=new FA;openBase64InNewTab=new FA;i18n=w(C1);sanitizer=w(Qs);markdownComponent=w(g1);MediaType=iC;renderGooglerSearch(e){return this.sanitizer.bypassSecurityTrustHtml(e)}get rawMessageText(){let e=this.uiEvent.event?.content?.parts;return e?e.filter(A=>A.text).map(A=>A.text).join(""):""}get jsonOutputData(){if(this.uiEvent.event?.nodeInfo?.messageAsOutput===!0){let e=this.rawMessageText;if(e)try{return JSON.parse(e)}catch(A){return null}}return null}get hasAudio(){if(this.uiEvent.inlineData?.mediaType==="audio")return!0;let e=this.uiEvent.event?.content?.parts;return e?e.some(A=>A.fileData&&A.fileData.mimeType&&A.fileData.mimeType.startsWith("audio/")):!1}get noBubble(){if(this.uiEvent.text||this.rawMessageText)return!1;if(this.uiEvent.inlineData){let A=this.uiEvent.inlineData.mediaType;if(A==="audio"||A==="image"||A==="video"||A==="text")return!0}if(this.uiEvent.inlineData?.mimeType){let A=this.uiEvent.inlineData.mimeType;if(A.startsWith("audio/")||A.startsWith("image/")||A.startsWith("video/"))return!0}let e=this.uiEvent.event?.content?.parts;return e?e.some(A=>A.fileData&&A.fileData.mimeType&&(A.fileData.mimeType.startsWith("audio/")||A.fileData.mimeType.startsWith("image/")||A.fileData.mimeType.startsWith("video/"))):!1}getTextContent(e){if(!e)return"";let A=e.indexOf(",");if(A===-1)return"";let t=e.substring(A+1);try{return atob(t)}catch(n){return"Failed to decode text content"}}audioUrl=null;ngOnChanges(e){e.uiEvent&&this.uiEvent&&this.checkAndLoadAudio()}http=w(Mr);artifactService=w(EB);changeDetectorRef=w(Mt);checkAndLoadAudio(){let e=this.uiEvent.event?.content?.parts;if(e){let A=e.find(t=>t.fileData&&t.fileData.mimeType&&t.fileData.mimeType.startsWith("audio/pcm"));A&&A.fileData&&this.loadAudio(A.fileData.fileUri)}}loadAudio(e){if(!e||!e.startsWith("artifact://"))return;let A=e.substring(11).split("/"),t=A[0],n=A[1],o=A[2],a=A.slice(3).join("/"),r=a.indexOf("#"),s=r!==-1?a.substring(0,r):a,l=r!==-1?a.substring(r+1):"0",g=s.lastIndexOf("/"),C=g!==-1?s.substring(g+1):s;this.artifactService.getLatestArtifact(n,t,o,C).subscribe(d=>{let B="";if(d.inlineData&&d.inlineData.data?B=d.inlineData.data:d.data&&(B=d.data),B){let u=this.base64ToArrayBuffer(B),E=u.byteLength-u.byteLength%2,f=u.slice(0,E),v=this.pcmToWav(f,24e3,1),S=new FileReader;S.onloadend=()=>{this.audioUrl=S.result,this.changeDetectorRef.detectChanges()},S.readAsDataURL(v)}})}base64ToArrayBuffer(e){let A=e.replace(/\s/g,""),t=A.indexOf(",");for(t!==-1&&(A=A.substring(t+1)),A=A.replace(/-/g,"+").replace(/_/g,"/");A.length%4!==0;)A+="=";let n=window.atob(A),o=n.length,a=new Uint8Array(o);for(let r=0;r<o;r++)a[r]=n.charCodeAt(r);return a.buffer}buf2hex(e){return Array.from(new Uint8Array(e)).map(A=>A.toString(16).padStart(2,"0")).join(" ")}pcmToWav(e,A,t){let n=new ArrayBuffer(44),o=new DataView(n);return this.writeString(o,0,"RIFF"),o.setUint32(4,36+e.byteLength,!0),this.writeString(o,8,"WAVE"),this.writeString(o,12,"fmt "),o.setUint32(16,16,!0),o.setUint16(20,1,!0),o.setUint16(22,t,!0),o.setUint32(24,A,!0),o.setUint32(28,A*t*2,!0),o.setUint16(32,t*2,!0),o.setUint16(34,16,!0),this.writeString(o,36,"data"),o.setUint32(40,e.byteLength,!0),new Blob([n,e],{type:"audio/wav"})}writeString(e,A,t){for(let n=0;n<t.length;n++)e.setUint8(A+n,t.charCodeAt(n))}static \u0275fac=function(A){return new(A||i)};static \u0275cmp=vA({type:i,selectors:[["app-content-bubble"]],hostAttrs:[1,"content-bubble-host"],inputs:{uiEvent:"uiEvent",type:"type",role:"role",evalStatus:"evalStatus",userEditEvalCaseMessage:"userEditEvalCaseMessage"},outputs:{userEditEvalCaseMessageChange:"userEditEvalCaseMessageChange",handleKeydown:"handleKeydown",cancelEditMessage:"cancelEditMessage",saveEditMessage:"saveEditMessage",openViewImageDialog:"openViewImageDialog",openBase64InNewTab:"openBase64InNewTab"},features:[ii],decls:6,vars:10,consts:[["messageTextarea",""],[1,"output-chip-header"],["appJsonTooltipTitle","Node Output for",3,"json","appJsonTooltip"],["appJsonTooltipTitle","Error Details",3,"json","appJsonTooltip"],[1,"attachments"],["appJsonTooltipTitle","Node Output",3,"appJsonTooltip"],[1,"eval-compare-container"],[1,"attachment"],["alt","attachment",1,"image-preview-chat",3,"src"],["download","",3,"href"],[3,"ngComponentOutlet","ngComponentOutletInputs"],[3,"thought-container","not-first-part"],[3,"beginRendering","surfaceUpdate","dataModelUpdate"],[1,"edit-message-container"],["rows","4","cols","80",1,"message-textarea",3,"ngModelChange","keydown","ngModel"],[1,"edit-message-buttons-container"],[1,"material-symbols-outlined","cancel-edit-button",3,"click","matTooltip"],[1,"material-symbols-outlined","save-edit-button",3,"click","matTooltip"],[3,"innerHTML"],[1,"generated-image-container"],[1,"video-player-container",2,"max-width","400px","margin-top","8px"],["alt","image",1,"generated-image",3,"click","src"],[3,"base64data"],["controls","",2,"width","100%","border-radius","8px",3,"src"],[1,"text-artifact-container",2,"max-height","200px","overflow-y","auto","background","var(--mat-sys-surface-container-highest)","padding","12px","border-radius","8px","margin-top","8px"],[1,"html-artifact-container",2,"display","flex","align-items","center","gap","4px"],[2,"color","#1a73e8","font-size","18px","width","18px","height","18px"],[2,"color","#1a73e8","text-decoration","underline","cursor","pointer","font-weight","500","font-size","14px",3,"click"],[2,"margin","0","white-space","pre-wrap","font-family","monospace","font-size","12px","color","var(--mat-sys-on-surface)"],[1,"link-style-button",3,"click"],["alt","image",1,"image-preview-chat",3,"click","src"],[1,"audio-attachment"],[1,"actual-expected-compare-container"],[1,"score-threshold-container"],[1,"actual-result"],[1,"eval-response-header","header-actual"],[3,"json"],[1,"expected-result"],[1,"eval-response-header","header-expected"],[1,"header-actual"],[1,"header-expected"]],template:function(A,t){A&1&&(I(0,"div"),T(1,qwA,2,1,"div",1),T(2,U5A,8,7)(3,T5A,1,2,"app-custom-json-viewer",2)(4,O5A,1,2,"app-custom-json-viewer",3)(5,H5A,2,1),h()),A&2&&(Ao(_N("content-bubble type-",t.type," role-",t.role)),_A("eval-fail",t.evalStatus===2)("no-bubble",t.noBubble),Q(),O(t.type!=="message"&&t.type!=="output"?1:-1),Q(),O(t.type==="message"||t.type==="thought"?2:t.type==="output"?3:t.type==="error"?4:t.type==="transcription"?5:-1))},dependencies:[li,Kc,fn,Gn,Kn,Ho,Un,zt,Ha,rn,fl,gy,GB,E1],styles:["[_nghost-%COMP%]{display:contents}.content-bubble[_ngcontent-%COMP%]{padding:5px 20px;border-radius:20px}.content-bubble[_ngcontent-%COMP%]:not(.type-message){border-radius:8px}.content-bubble[_ngcontent-%COMP%]{max-width:80%;font-size:14px;font-weight:400;position:relative;display:inline-block}.content-bubble[_ngcontent-%COMP%]:empty{display:none}.role-user[_ngcontent-%COMP%]{color:var(--mat-sys-on-primary-container);background-color:var(--mat-sys-primary-container);box-shadow:none;width:auto;min-width:fit-content;max-width:80%}.role-bot[_ngcontent-%COMP%]{align-self:flex-start;color:var(--mat-sys-on-secondary-container);background-color:var(--mat-sys-secondary-container);box-shadow:none}.type-error[_ngcontent-%COMP%]{background-color:var(--mat-sys-error-container, rgba(186, 26, 26, .1));color:var(--mat-sys-on-error-container, #ba1a1a)}.type-error[_ngcontent-%COMP%] .output-chip-header[_ngcontent-%COMP%]{color:var(--mat-sys-error, #ba1a1a)}.type-transcription[_ngcontent-%COMP%]{background-color:var(--mat-sys-surface-container)}.type-output[_ngcontent-%COMP%]{background-color:var(--mat-sys-surface-container-highest)}.output-chip-header[_ngcontent-%COMP%]{font-weight:600;font-size:9px;color:var(--mat-sys-primary);opacity:.5;margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}.content-bubble.no-bubble[_ngcontent-%COMP%]{background-color:transparent;padding:0;border-radius:0;box-shadow:none}.content-bubble[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:min(400px,100%);max-height:70vh;height:auto;border-radius:8px}.image-preview-chat[_ngcontent-%COMP%]{max-width:min(400px,100%);max-height:70vh;width:auto;height:auto;border-radius:8px;cursor:pointer;transition:transform .2s ease-in-out}.generated-image-container[_ngcontent-%COMP%]{max-width:400px;margin-top:8px}.generated-image[_ngcontent-%COMP%]{max-width:100%;min-width:40px;border-radius:8px;cursor:pointer}.role-user[_ngcontent-%COMP%]{text-align:right}.role-user[_ngcontent-%COMP%] .attachments[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-end;width:100%}.role-user[_ngcontent-%COMP%] .image-preview-chat[_ngcontent-%COMP%]{display:block;margin-left:auto}.thought-container[_ngcontent-%COMP%]{margin-bottom:12px;padding-bottom:8px;border-bottom:1px dashed var(--mat-sys-outline-variant, rgba(0, 0, 0, .1))}.thought-container[_ngcontent-%COMP%]:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.not-first-part[_ngcontent-%COMP%]{margin-top:12px}@media(max-width:768px){.content-bubble[_ngcontent-%COMP%]{padding:5px 12px!important;max-width:90%!important}.role-user[_ngcontent-%COMP%]{max-width:90%!important}}"]})};function z5A(i,e){if(i&1&&(I(0,"span"),D(1),h()),i&2){let A=e.$implicit;Ao("token-"+A.type),Q(),nA(A.value)}}function P5A(i,e){if(i&1&&ke(0,z5A,2,3,"span",24,Ja),i&2){let A=p().$implicit;_e(A.left.tokens)}}function j5A(i,e){if(i&1&&D(0),i&2){let A=p().$implicit;nA(A.left.value)}}function V5A(i,e){if(i&1&&(I(0,"div",20)(1,"span",21),D(2),h(),I(3,"span",22),D(4),h(),I(5,"span",23),T(6,P5A,2,0)(7,j5A,1,1),h()()),i&2){let A=e.$implicit;_A("line-removed",A.left.type==="removed")("line-empty",A.left.type==="empty")("line-unchanged",A.left.type==="unchanged"),Q(2),nA(A.left.lineNumber||""),Q(2),nA(A.left.type==="removed"?"-":""),Q(2),O(A.left.tokens&&A.left.tokens.length>0?6:7)}}function q5A(i,e){if(i&1&&(I(0,"span"),D(1),h()),i&2){let A=e.$implicit;Ao("token-"+A.type),Q(),nA(A.value)}}function W5A(i,e){if(i&1&&ke(0,q5A,2,3,"span",24,Ja),i&2){let A=p().$implicit;_e(A.right.tokens)}}function Z5A(i,e){if(i&1&&D(0),i&2){let A=p().$implicit;nA(A.right.value)}}function X5A(i,e){if(i&1&&(I(0,"div",20)(1,"span",21),D(2),h(),I(3,"span",22),D(4),h(),I(5,"span",23),T(6,W5A,2,0)(7,Z5A,1,1),h()()),i&2){let A=e.$implicit;_A("line-added",A.right.type==="added")("line-empty",A.right.type==="empty")("line-unchanged",A.right.type==="unchanged"),Q(2),nA(A.right.lineNumber||""),Q(2),nA(A.right.type==="added"?"+":""),Q(2),O(A.right.tokens&&A.right.tokens.length>0?6:7)}}var dy=class i{dialogRef=w(zn);data=w(Do);diffRows=[];ngOnInit(){let e=this.data.precedingInstruction||"",A=this.data.currentInstruction||"",t=this.diffLines(e,A);this.diffRows=this.alignDiff(t)}diffLines(e,A){let t=e.split(`
4135`),n=A.split(`
4136`),o=t.length,a=n.length,r=Array.from({length:o+1},()=>Array(a+1).fill(0));for(let C=1;C<=o;C++)for(let d=1;d<=a;d++)t[C-1]===n[d-1]?r[C][d]=r[C-1][d-1]+1:r[C][d]=Math.max(r[C-1][d],r[C][d-1]);let s=[],l=o,g=a;for(;l>0||g>0;)l>0&&g>0&&t[l-1]===n[g-1]?(s.unshift({type:"unchanged",value:t[l-1],leftLineNumber:l,rightLineNumber:g}),l--,g--):g>0&&(l===0||r[l][g-1]>=r[l-1][g])?(s.unshift({type:"added",value:n[g-1],rightLineNumber:g}),g--):(s.unshift({type:"removed",value:t[l-1],leftLineNumber:l}),l--);return s}alignDiff(e){let A=[],t=0;for(;t<e.length;){let n=e[t];if(n.type==="unchanged")A.push({left:{type:"unchanged",value:n.value,lineNumber:n.leftLineNumber},right:{type:"unchanged",value:n.value,lineNumber:n.rightLineNumber}}),t++;else if(n.type==="removed")if(t+1<e.length&&e[t+1].type==="added"){let o=e[t+1],a=this.diffChars(n.value,o.value);A.push({left:{type:"removed",value:n.value,lineNumber:n.leftLineNumber,tokens:a.left},right:{type:"added",value:o.value,lineNumber:o.rightLineNumber,tokens:a.right}}),t+=2}else A.push({left:{type:"removed",value:n.value,lineNumber:n.leftLineNumber},right:{type:"empty",value:""}}),t++;else n.type==="added"&&(A.push({left:{type:"empty",value:""},right:{type:"added",value:n.value,lineNumber:n.rightLineNumber}}),t++)}return A}diffChars(e,A){let t=e.split(""),n=A.split(""),o=t.length,a=n.length,r=Array.from({length:o+1},()=>Array(a+1).fill(0));for(let d=1;d<=o;d++)for(let B=1;B<=a;B++)t[d-1]===n[B-1]?r[d][B]=r[d-1][B-1]+1:r[d][B]=Math.max(r[d-1][B],r[d][B-1]);let s=o,l=a,g=[],C=[];for(;s>0||l>0;)if(s>0&&l>0&&t[s-1]===n[l-1]){let d=t[s-1];g.unshift({type:"unchanged",value:d}),C.unshift({type:"unchanged",value:d}),s--,l--}else l>0&&(s===0||r[s][l-1]>=r[s-1][l])?(C.unshift({type:"added",value:n[l-1]}),l--):(g.unshift({type:"removed",value:t[s-1]}),s--);return{left:this.mergeTokens(g),right:this.mergeTokens(C)}}mergeTokens(e){if(e.length===0)return[];let A=[e[0]];for(let t=1;t<e.length;t++){let n=e[t],o=A[A.length-1];n.type===o.type?o.value+=n.value:A.push(n)}return A}close(){this.dialogRef.close()}static \u0275fac=function(A){return new(A||i)};static \u0275cmp=vA({type:i,selectors:[["app-system-instruction-diff-dialog"]],decls:36,vars:0,consts:[[1,"diff-dialog-container"],[1,"diff-dialog-header"],[1,"title-row"],["mat-dialog-title","",1,"dialog-title"],[1,"warning-icon"],[2,"flex","1"],["mat-icon-button","","aria-label","Close dialog",1,"close-header-btn",3,"click"],[1,"performance-alert-banner"],[1,"info-icon"],[1,"alert-message"],["mat-dialog-content","",1,"diff-dialog-content"],[1,"diff-split-container"],[1,"diff-column","left-column"],[1,"column-title"],[1,"code-editor-viewport"],[1,"diff-line-row",3,"line-removed","line-empty","line-unchanged"],[1,"diff-column","right-column"],[1,"diff-line-row",3,"line-added","line-empty","line-unchanged"],["mat-dialog-actions","","align","end",1,"diff-dialog-actions"],["mat-flat-button","",1,"action-close-btn",3,"click"],[1,"diff-line-row"],[1,"line-number-cell"],[1,"line-sign-cell"],[1,"line-content-cell"],[3,"class"]],template:function(A,t){A&1&&(I(0,"div",0)(1,"div",1)(2,"div",2)(3,"h2",3)(4,"mat-icon",4),D(5,"warning"),h(),I(6,"span"),D(7,"System Instruction Performance Analysis"),h()(),lA(8,"span",5),I(9,"button",6),U("click",function(){return t.close()}),I(10,"mat-icon"),D(11,"close"),h()()(),I(12,"div",7)(13,"mat-icon",8),D(14,"info"),h(),I(15,"span",9)(16,"strong"),D(17,"Performance Alert:"),h(),D(18," System instructions were modified between consecutive turns in this session. This change breaks context cache alignment, resulting in a cache miss that increases generation latency for subsequent requests. "),h()()(),I(19,"div",10)(20,"div",11)(21,"div",12)(22,"div",13),D(23,"Preceding Instruction"),h(),I(24,"div",14),ke(25,V5A,8,9,"div",15,Ja),h()(),I(27,"div",16)(28,"div",13),D(29,"Current Instruction"),h(),I(30,"div",14),ke(31,X5A,8,9,"div",17,Ja),h()()()(),I(33,"div",18)(34,"button",19),U("click",function(){return t.close()}),D(35,"Close"),h()()()),A&2&&(Q(25),_e(t.diffRows),Q(6),_e(t.diffRows))},dependencies:[li,Ls,Xo,ha,Ba,qi,ki,yi,Un,zt],styles:[`.diff-dialog-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:90vh;max-height:90vh;min-width:80vw;max-width:95vw;background-color:var(--mat-sys-background);color:var(--mat-sys-on-surface)}.diff-dialog-header[_ngcontent-%COMP%]{padding:20px 24px 12px;flex-shrink:0;border-bottom:1px solid var(--mat-sys-outline-variant);display:flex;flex-direction:column;gap:16px}.title-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.title-row[_ngcontent-%COMP%] .dialog-title[_ngcontent-%COMP%]{margin:0!important;font-family:Google Sans,sans-serif;font-weight:500;font-size:18px;color:var(--mat-sys-on-surface);padding:0!important;display:inline-flex;align-items:center;gap:12px;line-height:1!important}.title-row[_ngcontent-%COMP%] .dialog-title[_ngcontent-%COMP%] .warning-icon[_ngcontent-%COMP%]{color:#ffb300;font-size:28px;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.title-row[_ngcontent-%COMP%] .close-header-btn[_ngcontent-%COMP%]{color:var(--mat-sys-on-surface-variant)}.title-row[_ngcontent-%COMP%] .close-header-btn[_ngcontent-%COMP%]:hover{background-color:var(--mat-sys-surface-container-high)!important}.performance-alert-banner[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;background-color:#ffb30014;border:1px solid rgba(255,179,0,.25);border-radius:8px}.performance-alert-banner[_ngcontent-%COMP%] .info-icon[_ngcontent-%COMP%]{color:#ffb300;font-size:20px;width:20px;height:20px;flex-shrink:0;margin-top:2px}.performance-alert-banner[_ngcontent-%COMP%] .alert-message[_ngcontent-%COMP%]{font-family:Google Sans,sans-serif;font-size:13px;line-height:1.5;color:var(--mat-sys-on-surface)}.performance-alert-banner[_ngcontent-%COMP%] .alert-message[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:#ffb300;font-weight:600}.diff-dialog-content[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;overflow:hidden;padding:16px 24px!important;margin:0!important}.diff-split-container[_ngcontent-%COMP%]{flex:1;display:flex;gap:16px;overflow:hidden}.diff-column[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;min-width:0;border:1px solid var(--mat-sys-outline-variant);border-radius:8px;background-color:var(--mat-sys-surface-container-lowest);overflow:hidden}.diff-column[_ngcontent-%COMP%] .column-title[_ngcontent-%COMP%]{padding:10px 16px;font-family:Google Sans,sans-serif;font-size:13px;font-weight:600;color:var(--mat-sys-on-surface-variant);background-color:var(--mat-sys-surface-container-low);border-bottom:1px solid var(--mat-sys-outline-variant);flex-shrink:0}.code-editor-viewport[_ngcontent-%COMP%]{flex:1;overflow:auto;font-family:Google Sans Mono,Roboto Mono,monospace;font-size:12px;line-height:1.6;padding:8px 0;background-color:var(--mat-sys-surface-container-lowest)}.diff-line-row[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;white-space:pre-wrap;word-break:break-all;min-height:20px;box-sizing:border-box}.diff-line-row[_ngcontent-%COMP%] .line-number-cell[_ngcontent-%COMP%]{width:40px;min-width:40px;text-align:right;padding-right:12px;color:var(--mat-sys-outline);-webkit-user-select:none;user-select:none;font-size:11px;border-right:1px solid var(--mat-sys-outline-variant);background-color:var(--mat-sys-surface-container-lowest)}.diff-line-row[_ngcontent-%COMP%] .line-sign-cell[_ngcontent-%COMP%]{width:24px;min-width:24px;text-align:center;font-weight:700;-webkit-user-select:none;user-select:none}.diff-line-row[_ngcontent-%COMP%] .line-content-cell[_ngcontent-%COMP%]{flex:1;padding-left:4px;padding-right:16px}.diff-line-row[_ngcontent-%COMP%] .line-content-cell[_ngcontent-%COMP%] .token-removed[_ngcontent-%COMP%]{background-color:#ef535040!important;color:#ef5350!important;text-decoration:line-through;border-radius:2px;padding:1px 0}.diff-line-row[_ngcontent-%COMP%] .line-content-cell[_ngcontent-%COMP%] .token-added[_ngcontent-%COMP%]{background-color:#66bb6a4d!important;color:#66bb6a!important;font-weight:600;border-radius:2px;padding:1px 0}.diff-line-row.line-removed[_ngcontent-%COMP%]{background-color:#ef53501a!important}.diff-line-row.line-removed[_ngcontent-%COMP%] .line-sign-cell[_ngcontent-%COMP%], .diff-line-row.line-removed[_ngcontent-%COMP%] .line-content-cell[_ngcontent-%COMP%]{color:#ef5350!important}.diff-line-row.line-added[_ngcontent-%COMP%]{background-color:#66bb6a1a!important}.diff-line-row.line-added[_ngcontent-%COMP%] .line-sign-cell[_ngcontent-%COMP%], .diff-line-row.line-added[_ngcontent-%COMP%] .line-content-cell[_ngcontent-%COMP%]{color:#66bb6a!important}.diff-line-row.line-empty[_ngcontent-%COMP%]{background-color:#8080800a!important;-webkit-user-select:none;user-select:none}.diff-line-row.line-empty[_ngcontent-%COMP%] .line-number-cell[_ngcontent-%COMP%]{border-right:1px solid transparent}.diff-line-row.line-unchanged[_ngcontent-%COMP%]:hover{background-color:var(--mat-sys-surface-container-low)}.diff-dialog-actions[_ngcontent-%COMP%]{padding:12px 24px 20px!important;flex-shrink:0;border-top:1px solid var(--mat-sys-outline-variant);margin:0!important}.diff-dialog-actions[_ngcontent-%COMP%] .action-close-btn[_ngcontent-%COMP%]{background-color:var(--mat-sys-primary)!important;color:var(--mat-sys-on-primary)!important;font-family:Google Sans,sans-serif;font-weight:500;border-radius:6px!important;padding:0 16px;height:36px;line-height:36px}.diff-dialog-actions[_ngcontent-%COMP%] .action-close-btn[_ngcontent-%COMP%]:hover{box-shadow:0 2px 8px #005fb740!important}html.light-theme[_ngcontent-%COMP%] .title-row[_ngcontent-%COMP%] .dialog-title[_ngcontent-%COMP%] .warning-icon[_ngcontent-%COMP%]{color:#e65100}html.light-theme[_ngcontent-%COMP%] .performance-alert-banner[_ngcontent-%COMP%]{background-color:#e651000d;border:1px solid rgba(230,81,0,.25)}html.light-theme[_ngcontent-%COMP%] .performance-alert-banner[_ngcontent-%COMP%] .info-icon[_ngcontent-%COMP%], html.light-theme[_ngcontent-%COMP%] .performance-alert-banner[_ngcontent-%COMP%] .alert-message[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:#e65100}html.light-theme[_ngcontent-%COMP%] .diff-line-row.line-removed[_ngcontent-%COMP%]{background-color:#d32f2f0f!important}html.light-theme[_ngcontent-%COMP%] .diff-line-row.line-removed[_ngcontent-%COMP%] .line-sign-cell[_ngcontent-%COMP%], html.light-theme[_ngcontent-%COMP%] .diff-line-row.line-removed[_ngcontent-%COMP%] .line-content-cell[_ngcontent-%COMP%]{color:#c62828!important}html.light-theme[_ngcontent-%COMP%] .diff-line-row.line-removed[_ngcontent-%COMP%] .token-removed[_ngcontent-%COMP%]{background-color:#d32f2f2e!important;color:#b71c1c!important;text-decoration:line-through}html.light-theme[_ngcontent-%COMP%] .diff-line-row.line-added[_ngcontent-%COMP%]{background-color:#388e3c0f!important}html.light-theme[_ngcontent-%COMP%] .diff-line-row.line-added[_ngcontent-%COMP%] .line-sign-cell[_ngcontent-%COMP%], html.light-theme[_ngcontent-%COMP%] .diff-line-row.line-added[_ngcontent-%COMP%] .line-content-cell[_ngcontent-%COMP%]{color:#2e7d32!important}html.light-theme[_ngcontent-%COMP%] .diff-line-row.line-added[_ngcontent-%COMP%] .token-added[_ngcontent-%COMP%]{background-color:#388e3c2e!important;color:#1b5e20!important;font-weight:600}
4137

Callers

nothing calls this directly

Calls 6

IFunction · 0.90
DFunction · 0.90
hFunction · 0.90
QFunction · 0.90
AoFunction · 0.85
nAFunction · 0.85

Tested by

no test coverage detected