sage-agent-internal 0.1.30__py3-none-any.whl → 0.1.31rc0__py3-none-any.whl

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.
Files changed (35) hide show
  1. sage_agent_internal/__init__.py +16 -0
  2. {sage_agent → sage_agent_internal}/_version.py +1 -1
  3. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/install.json +5 -0
  4. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/package.json +229 -0
  5. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/schemas/sage-agent-internal/package.json.orig +224 -0
  6. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/schemas/sage-agent-internal/plugin.json +101 -0
  7. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/122.3c2c200586e65203b674.js +1 -0
  8. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/220.d384edfd5bbcfda33a2a.js +1 -0
  9. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/262.3fc4ad88e6f8c273d4ad.js +1 -0
  10. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/353.2c285601a208c3735929.js +1 -0
  11. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/363.d6c25400a011b62fbae6.js +1 -0
  12. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/364.c2fb82c6f484097228c6.js +1 -0
  13. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/439.3cb9ac7022c8a6074647.js +1 -0
  14. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/481.96b91d018df31d54d173.js +1 -0
  15. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/553.b7906877d98a62265533.js +2 -0
  16. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/553.b7906877d98a62265533.js.LICENSE.txt +15 -0
  17. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/635.8c395c854aa2b140b668.js +1 -0
  18. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/713.103cb5ae248be385b08a.js +1 -0
  19. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/742.b204789055ded4e07883.js +1 -0
  20. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/747.b8e9485ebcbb3066eb4b.js +1 -0
  21. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/821.b58f29814f5900f1f6f8.js +1 -0
  22. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/833.1509794f6b586558f96c.js +1 -0
  23. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/845.cc2bc80fbfea6d20a396.js +1 -0
  24. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/888.09382cc93a2ad3932b31.js +1 -0
  25. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/973.38ee5148a3908e41c2dd.js +2 -0
  26. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/973.38ee5148a3908e41c2dd.js.LICENSE.txt +1 -0
  27. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/remoteEntry.b4d298844205dc8d9771.js +1 -0
  28. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/style.js +4 -0
  29. sage_agent_internal-0.1.31rc0.data/data/share/jupyter/labextensions/sage-agent-internal/static/third-party-licenses.json +298 -0
  30. {sage_agent_internal-0.1.30.dist-info → sage_agent_internal-0.1.31rc0.dist-info}/METADATA +12 -12
  31. sage_agent_internal-0.1.31rc0.dist-info/RECORD +33 -0
  32. sage_agent_internal-0.1.30.data/data/share/jupyter/labextensions/sage-agent/install.json +0 -5
  33. sage_agent_internal-0.1.30.dist-info/RECORD +0 -6
  34. {sage_agent_internal-0.1.30.dist-info → sage_agent_internal-0.1.31rc0.dist-info}/WHEEL +0 -0
  35. {sage_agent_internal-0.1.30.dist-info → sage_agent_internal-0.1.31rc0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunksage_agent_internal=self.webpackChunksage_agent_internal||[]).push([[122],{2122:(e,t,n)=>{"use strict";var i,s;n.r(t),n.d(t,{defaultDiff2HtmlConfig:()=>P,html:()=>V,parse:()=>_}),function(e){e.INSERT="insert",e.DELETE="delete",e.CONTEXT="context"}(i||(i={})),function(e){e.AUTO="auto",e.DARK="dark",e.LIGHT="light"}(s||(s={}));const r=RegExp("["+["-","[","]","/","{","}","(",")","*","+","?",".","\\","^","$","|"].join("\\")+"]","g");function a(e){return e?e.replace(/\\/g,"/"):e}function l(e){const t=e.length;let n=-1/0;for(let i=0;i<t;i++)n=Math.max(n,e[i]);return n}function o(e,t){const n=e.split(".");return n.length>1?n[n.length-1]:t}function c(e,t){return t.reduce((t,n)=>t||e.startsWith(n),!1)}const d=["a/","b/","i/","w/","c/","o/"];function h(e,t,n){const i=void 0!==n?[...d,n]:d,s=t?new RegExp(`^${a=t,a.replace(r,"\\$&")} "?(.+?)"?$`):new RegExp('^"?(.+?)"?$');var a;const[,l=""]=s.exec(e)||[],o=i.find(e=>0===l.indexOf(e));return(o?l.slice(o.length):l).replace(/\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d+)? [+-]\d{4}.*$/,"")}function f(e,t={}){const n=[];let s=null,r=null,a=null,l=null,d=null,f=null,b=null;const u="--- ",p="+++ ",g="@@",m=/^old mode (\d{6})/,v=/^new mode (\d{6})/,w=/^deleted file mode (\d{6})/,x=/^new file mode (\d{6})/,y=/^copy from "?(.+)"?/,N=/^copy to "?(.+)"?/,T=/^rename from "?(.+)"?/,E=/^rename to "?(.+)"?/,C=/^similarity index (\d+)%/,S=/^dissimilarity index (\d+)%/,L=/^index ([\da-z]+)\.\.([\da-z]+)\s*(\d{6})?/,k=/^Binary files (.*) and (.*) differ/,H=/^GIT binary patch/,O=/^index ([\da-z]+),([\da-z]+)\.\.([\da-z]+)/,j=/^mode (\d{6}),(\d{6})\.\.(\d{6})/,I=/^new file mode (\d{6})/,M=/^deleted file mode (\d{6}),(\d{6})/,A=e.replace(/\/g,"").replace(/\r\n?/g,"\n").split("\n");function D(){null!==r&&null!==s&&(s.blocks.push(r),r=null)}function W(){null!==s&&(s.oldName||null===f||(s.oldName=f),s.newName||null===b||(s.newName=b),s.newName&&(n.push(s),s=null)),f=null,b=null}function F(){D(),W(),s={blocks:[],deletedLines:0,addedLines:0}}function B(e){let t;D(),null!==s&&((t=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@.*/.exec(e))?(s.isCombined=!1,a=parseInt(t[1],10),d=parseInt(t[2],10)):(t=/^@@@ -(\d+)(?:,\d+)? -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@@.*/.exec(e))?(s.isCombined=!0,a=parseInt(t[1],10),l=parseInt(t[2],10),d=parseInt(t[3],10)):(e.startsWith(g)&&console.error("Failed to parse lines, starting in 0!"),a=0,d=0,s.isCombined=!1)),r={lines:[],oldStartLine:a,oldStartLine2:l,newStartLine:d,header:e}}return A.forEach((e,l)=>{if(!e||e.startsWith("*"))return;let D;const W=A[l-1],z=A[l+1],R=A[l+2];if(e.startsWith("diff --git")||e.startsWith("diff --combined")){if(F(),(D=/^diff --git "?([a-ciow]\/.+)"? "?([a-ciow]\/.+)"?/.exec(e))&&(f=h(D[1],void 0,t.dstPrefix),b=h(D[2],void 0,t.srcPrefix)),null===s)throw new Error("Where is my file !!!");return void(s.isGitDiff=!0)}if(e.startsWith("Binary files")&&!(null==s?void 0:s.isGitDiff)){if(F(),(D=/^Binary files "?([a-ciow]\/.+)"? and "?([a-ciow]\/.+)"? differ/.exec(e))&&(f=h(D[1],void 0,t.dstPrefix),b=h(D[2],void 0,t.srcPrefix)),null===s)throw new Error("Where is my file !!!");return void(s.isBinary=!0)}if((!s||!s.isGitDiff&&s&&e.startsWith(u)&&z.startsWith(p)&&R.startsWith(g))&&F(),null==s?void 0:s.isTooBig)return;if(s&&("number"==typeof t.diffMaxChanges&&s.addedLines+s.deletedLines>t.diffMaxChanges||"number"==typeof t.diffMaxLineLength&&e.length>t.diffMaxLineLength))return s.isTooBig=!0,s.addedLines=0,s.deletedLines=0,s.blocks=[],r=null,void B("function"==typeof t.diffTooBigMessage?t.diffTooBigMessage(n.length):"Diff too big to be displayed");if(e.startsWith(u)&&z.startsWith(p)||e.startsWith(p)&&W.startsWith(u)){if(s&&!s.oldName&&e.startsWith("--- ")&&(D=function(e,t){return h(e,"---",t)}(e,t.srcPrefix)))return s.oldName=D,void(s.language=o(s.oldName,s.language));if(s&&!s.newName&&e.startsWith("+++ ")&&(D=function(e,t){return h(e,"+++",t)}(e,t.dstPrefix)))return s.newName=D,void(s.language=o(s.newName,s.language))}if(s&&(e.startsWith(g)||s.isGitDiff&&s.oldName&&s.newName&&!r))return void B(e);if(r&&(e.startsWith("+")||e.startsWith("-")||e.startsWith(" ")))return void function(e){if(null===s||null===r||null===a||null===d)return;const t={content:e},n=s.isCombined?["+ "," +","++"]:["+"],l=s.isCombined?["- "," -","--"]:["-"];c(e,n)?(s.addedLines++,t.type=i.INSERT,t.oldNumber=void 0,t.newNumber=d++):c(e,l)?(s.deletedLines++,t.type=i.DELETE,t.oldNumber=a++,t.newNumber=void 0):(t.type=i.CONTEXT,t.oldNumber=a++,t.newNumber=d++),r.lines.push(t)}(e);const U=!function(e,t){let n=t;for(;n<A.length-3;){if(e.startsWith("diff"))return!1;if(A[n].startsWith(u)&&A[n+1].startsWith(p)&&A[n+2].startsWith(g))return!0;n++}return!1}(e,l);if(null===s)throw new Error("Where is my file !!!");(D=m.exec(e))?s.oldMode=D[1]:(D=v.exec(e))?s.newMode=D[1]:(D=w.exec(e))?(s.deletedFileMode=D[1],s.isDeleted=!0):(D=x.exec(e))?(s.newFileMode=D[1],s.isNew=!0):(D=y.exec(e))?(U&&(s.oldName=D[1]),s.isCopy=!0):(D=N.exec(e))?(U&&(s.newName=D[1]),s.isCopy=!0):(D=T.exec(e))?(U&&(s.oldName=D[1]),s.isRename=!0):(D=E.exec(e))?(U&&(s.newName=D[1]),s.isRename=!0):(D=k.exec(e))?(s.isBinary=!0,s.oldName=h(D[1],void 0,t.srcPrefix),s.newName=h(D[2],void 0,t.dstPrefix),B("Binary file")):H.test(e)?(s.isBinary=!0,B(e)):(D=C.exec(e))?s.unchangedPercentage=parseInt(D[1],10):(D=S.exec(e))?s.changedPercentage=parseInt(D[1],10):(D=L.exec(e))?(s.checksumBefore=D[1],s.checksumAfter=D[2],D[3]&&(s.mode=D[3])):(D=O.exec(e))?(s.checksumBefore=[D[2],D[3]],s.checksumAfter=D[1]):(D=j.exec(e))?(s.oldMode=[D[2],D[3]],s.newMode=D[1]):(D=I.exec(e))?(s.newFileMode=D[1],s.isNew=!0):(D=M.exec(e))&&(s.deletedFileMode=D[1],s.isDeleted=!0)}),D(),W(),n}var b=n(3379);function u(e){return(t,n)=>{const i=e(t).trim(),s=e(n).trim();return function(e,t){if(0===e.length)return t.length;if(0===t.length)return e.length;const n=[];let i,s;for(i=0;i<=t.length;i++)n[i]=[i];for(s=0;s<=e.length;s++)n[0][s]=s;for(i=1;i<=t.length;i++)for(s=1;s<=e.length;s++)t.charAt(i-1)===e.charAt(s-1)?n[i][s]=n[i-1][s-1]:n[i][s]=Math.min(n[i-1][s-1]+1,Math.min(n[i][s-1]+1,n[i-1][s]+1));return n[t.length][e.length]}(i,s)/(i.length+s.length)}}function p(e){return function t(n,i,s=0,r=new Map){const a=function(t,n,i=new Map){let s,r=1/0;for(let a=0;a<t.length;++a)for(let l=0;l<n.length;++l){const o=JSON.stringify([t[a],n[l]]);let c;i.has(o)&&(c=i.get(o))||(c=e(t[a],n[l]),i.set(o,c)),c<r&&(r=c,s={indexA:a,indexB:l,score:r})}return s}(n,i,r);if(!a||n.length+i.length<3)return[[n,i]];const l=n.slice(0,a.indexA),o=i.slice(0,a.indexB),c=[n[a.indexA]],d=[i[a.indexB]],h=a.indexA+1,f=a.indexB+1,b=n.slice(h),u=i.slice(f),p=t(l,o,s+1,r),g=t(c,d,s+1,r),m=t(b,u,s+1,r);let v=g;return(a.indexA>0||a.indexB>0)&&(v=p.concat(v)),(n.length>h||i.length>f)&&(v=v.concat(m)),v}}const g={INSERTS:"d2h-ins",DELETES:"d2h-del",CONTEXT:"d2h-cntx",INFO:"d2h-info",INSERT_CHANGES:"d2h-ins d2h-change",DELETE_CHANGES:"d2h-del d2h-change"},m={matching:"none",matchWordsThreshold:.25,maxLineLengthHighlight:1e4,diffStyle:"word",colorScheme:s.LIGHT},v="/",w=u(e=>e.value),x=p(w);function y(e){return-1!==e.indexOf("dev/null")}function N(e){return e.replace(/(<del[^>]*>((.|\n)*?)<\/del>)/g,"")}function T(e){switch(e){case i.CONTEXT:return g.CONTEXT;case i.INSERT:return g.INSERTS;case i.DELETE:return g.DELETES}}function E(e){switch(e){case s.DARK:return"d2h-dark-color-scheme";case s.AUTO:return"d2h-auto-color-scheme";case s.LIGHT:default:return"d2h-light-color-scheme"}}function C(e){return e.slice(0).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")}function S(e,t,n=!0){const i=function(e){return e?2:1}(t);return{prefix:e.substring(0,i),content:n?C(e.substring(i)):e.substring(i)}}function L(e){const t=a(e.oldName),n=a(e.newName);if(t===n||y(t)||y(n))return y(n)?t:n;{const e=[],i=[],s=t.split(v),r=n.split(v);let a=0,l=s.length-1,o=r.length-1;for(;a<l&&a<o&&s[a]===r[a];)e.push(r[a]),a+=1;for(;l>a&&o>a&&s[l]===r[o];)i.unshift(r[o]),l-=1,o-=1;const c=e.join(v),d=i.join(v),h=s.slice(a,l+1).join(v),f=r.slice(a,o+1).join(v);return c.length&&d.length?c+v+"{"+h+" → "+f+"}"+v+d:c.length?c+v+"{"+h+" → "+f+"}":d.length?"{"+h+" → "+f+"}"+v+d:t+" → "+n}}function k(e){return`d2h-${function(e){let t,n,i,s=0;for(t=0,i=e.length;t<i;t++)n=e.charCodeAt(t),s=(s<<5)-s+n,s|=0;return s}(L(e)).toString().slice(-6)}`}function H(e){let t="file-changed";return e.isRename||e.isCopy?t="file-renamed":e.isNew?t="file-added":e.isDeleted?t="file-deleted":e.newName!==e.oldName&&(t="file-renamed"),t}function O(e,t,n,i={}){const{matching:s,maxLineLengthHighlight:r,matchWordsThreshold:a,diffStyle:l}=Object.assign(Object.assign({},m),i),o=S(e,n,!1),c=S(t,n,!1);if(o.content.length>r||c.content.length>r)return{oldLine:{prefix:o.prefix,content:C(o.content)},newLine:{prefix:c.prefix,content:C(c.content)}};const d="char"===l?b.diffChars(o.content,c.content):b.diffWordsWithSpace(o.content,c.content),h=[];if("word"===l&&"words"===s){const e=d.filter(e=>e.removed),t=d.filter(e=>e.added);x(t,e).forEach(e=>{1===e[0].length&&1===e[1].length&&w(e[0][0],e[1][0])<a&&(h.push(e[0][0]),h.push(e[1][0]))})}const f=d.reduce((e,t)=>{const n=t.added?"ins":t.removed?"del":null,i=h.indexOf(t)>-1?' class="d2h-change"':"",s=C(t.value);return null!==n?`${e}<${n}${i}>${s}</${n}>`:`${e}${s}`},"");return{oldLine:{prefix:o.prefix,content:(u=f,u.replace(/(<ins[^>]*>((.|\n)*?)<\/ins>)/g,""))},newLine:{prefix:c.prefix,content:N(f)}};var u}const j="file-summary",I={colorScheme:m.colorScheme};class M{constructor(e,t={}){this.hoganUtils=e,this.config=Object.assign(Object.assign({},I),t)}render(e){const t=e.map(e=>this.hoganUtils.render(j,"line",{fileHtmlId:k(e),oldName:e.oldName,newName:e.newName,fileName:L(e),deletedLines:"-"+e.deletedLines,addedLines:"+"+e.addedLines},{fileIcon:this.hoganUtils.template("icon",H(e))})).join("\n");return this.hoganUtils.render(j,"wrapper",{colorScheme:E(this.config.colorScheme),filesNumber:e.length,files:t})}}const A=Object.assign(Object.assign({},m),{renderNothingWhenEmpty:!1,matchingMaxComparisons:2500,maxLineSizeInBlockForComparison:200}),D="generic",W="line-by-line";class F{constructor(e,t={}){this.hoganUtils=e,this.config=Object.assign(Object.assign({},A),t)}render(e){const t=e.map(e=>{let t;return t=e.blocks.length?this.generateFileHtml(e):this.generateEmptyDiff(),this.makeFileDiffHtml(e,t)}).join("\n");return this.hoganUtils.render(D,"wrapper",{colorScheme:E(this.config.colorScheme),content:t})}makeFileDiffHtml(e,t){if(this.config.renderNothingWhenEmpty&&Array.isArray(e.blocks)&&0===e.blocks.length)return"";const n=this.hoganUtils.template(W,"file-diff"),i=this.hoganUtils.template(D,"file-path"),s=this.hoganUtils.template("icon","file"),r=this.hoganUtils.template("tag",H(e));return n.render({file:e,fileHtmlId:k(e),diffs:t,filePath:i.render({fileDiffName:L(e)},{fileIcon:s,fileTag:r})})}generateEmptyDiff(){return this.hoganUtils.render(D,"empty-diff",{contentClass:"d2h-code-line",CSSLineClass:g})}generateFileHtml(e){const t=p(u(t=>S(t.content,e.isCombined).content));return e.blocks.map(n=>{let i=this.hoganUtils.render(D,"block-header",{CSSLineClass:g,blockHeader:e.isTooBig?n.header:C(n.header),lineClass:"d2h-code-linenumber",contentClass:"d2h-code-line"});return this.applyLineGroupping(n).forEach(([n,s,r])=>{if(s.length&&r.length&&!n.length)this.applyRematchMatching(s,r,t).map(([t,n])=>{const{left:s,right:r}=this.processChangedLines(e,e.isCombined,t,n);i+=s,i+=r});else if(n.length)n.forEach(t=>{const{prefix:n,content:s}=S(t.content,e.isCombined);i+=this.generateSingleLineHtml(e,{type:g.CONTEXT,prefix:n,content:s,oldNumber:t.oldNumber,newNumber:t.newNumber})});else if(s.length||r.length){const{left:t,right:n}=this.processChangedLines(e,e.isCombined,s,r);i+=t,i+=n}else console.error("Unknown state reached while processing groups of lines",n,s,r)}),i}).join("\n")}applyLineGroupping(e){const t=[];let n=[],s=[];for(let r=0;r<e.lines.length;r++){const a=e.lines[r];(a.type!==i.INSERT&&s.length||a.type===i.CONTEXT&&n.length>0)&&(t.push([[],n,s]),n=[],s=[]),a.type===i.CONTEXT?t.push([[a],[],[]]):a.type===i.INSERT&&0===n.length?t.push([[],[],[a]]):a.type===i.INSERT&&n.length>0?s.push(a):a.type===i.DELETE&&n.push(a)}return(n.length||s.length)&&(t.push([[],n,s]),n=[],s=[]),t}applyRematchMatching(e,t,n){const i=e.length*t.length,s=l(e.concat(t).map(e=>e.content.length));return i<this.config.matchingMaxComparisons&&s<this.config.maxLineSizeInBlockForComparison&&("lines"===this.config.matching||"words"===this.config.matching)?n(e,t):[[e,t]]}processChangedLines(e,t,n,i){const s={right:"",left:""},r=Math.max(n.length,i.length);for(let a=0;a<r;a++){const r=n[a],l=i[a],o=void 0!==r&&void 0!==l?O(r.content,l.content,t,this.config):void 0,c=void 0!==r&&void 0!==r.oldNumber?Object.assign(Object.assign({},void 0!==o?{prefix:o.oldLine.prefix,content:o.oldLine.content,type:g.DELETE_CHANGES}:Object.assign(Object.assign({},S(r.content,t)),{type:T(r.type)})),{oldNumber:r.oldNumber,newNumber:r.newNumber}):void 0,d=void 0!==l&&void 0!==l.newNumber?Object.assign(Object.assign({},void 0!==o?{prefix:o.newLine.prefix,content:o.newLine.content,type:g.INSERT_CHANGES}:Object.assign(Object.assign({},S(l.content,t)),{type:T(l.type)})),{oldNumber:l.oldNumber,newNumber:l.newNumber}):void 0,{left:h,right:f}=this.generateLineHtml(e,c,d);s.left+=h,s.right+=f}return s}generateLineHtml(e,t,n){return{left:this.generateSingleLineHtml(e,t),right:this.generateSingleLineHtml(e,n)}}generateSingleLineHtml(e,t){if(void 0===t)return"";const n=this.hoganUtils.render(W,"numbers",{oldNumber:t.oldNumber||"",newNumber:t.newNumber||""});return this.hoganUtils.render(D,"line",{type:t.type,lineClass:"d2h-code-linenumber",contentClass:"d2h-code-line",prefix:" "===t.prefix?"&nbsp;":t.prefix,content:t.content,lineNumber:n,line:t,file:e})}}const B=Object.assign(Object.assign({},m),{renderNothingWhenEmpty:!1,matchingMaxComparisons:2500,maxLineSizeInBlockForComparison:200}),z="generic";class R{constructor(e,t={}){this.hoganUtils=e,this.config=Object.assign(Object.assign({},B),t)}render(e){const t=e.map(e=>{let t;return t=e.blocks.length?this.generateFileHtml(e):this.generateEmptyDiff(),this.makeFileDiffHtml(e,t)}).join("\n");return this.hoganUtils.render(z,"wrapper",{colorScheme:E(this.config.colorScheme),content:t})}makeFileDiffHtml(e,t){if(this.config.renderNothingWhenEmpty&&Array.isArray(e.blocks)&&0===e.blocks.length)return"";const n=this.hoganUtils.template("side-by-side","file-diff"),i=this.hoganUtils.template(z,"file-path"),s=this.hoganUtils.template("icon","file"),r=this.hoganUtils.template("tag",H(e));return n.render({file:e,fileHtmlId:k(e),diffs:t,filePath:i.render({fileDiffName:L(e)},{fileIcon:s,fileTag:r})})}generateEmptyDiff(){return{right:"",left:this.hoganUtils.render(z,"empty-diff",{contentClass:"d2h-code-side-line",CSSLineClass:g})}}generateFileHtml(e){const t=p(u(t=>S(t.content,e.isCombined).content));return e.blocks.map(n=>{const i={left:this.makeHeaderHtml(n.header,e),right:this.makeHeaderHtml("")};return this.applyLineGroupping(n).forEach(([n,s,r])=>{if(s.length&&r.length&&!n.length)this.applyRematchMatching(s,r,t).map(([t,n])=>{const{left:s,right:r}=this.processChangedLines(e.isCombined,t,n);i.left+=s,i.right+=r});else if(n.length)n.forEach(t=>{const{prefix:n,content:s}=S(t.content,e.isCombined),{left:r,right:a}=this.generateLineHtml({type:g.CONTEXT,prefix:n,content:s,number:t.oldNumber},{type:g.CONTEXT,prefix:n,content:s,number:t.newNumber});i.left+=r,i.right+=a});else if(s.length||r.length){const{left:t,right:n}=this.processChangedLines(e.isCombined,s,r);i.left+=t,i.right+=n}else console.error("Unknown state reached while processing groups of lines",n,s,r)}),i}).reduce((e,t)=>({left:e.left+t.left,right:e.right+t.right}),{left:"",right:""})}applyLineGroupping(e){const t=[];let n=[],s=[];for(let r=0;r<e.lines.length;r++){const a=e.lines[r];(a.type!==i.INSERT&&s.length||a.type===i.CONTEXT&&n.length>0)&&(t.push([[],n,s]),n=[],s=[]),a.type===i.CONTEXT?t.push([[a],[],[]]):a.type===i.INSERT&&0===n.length?t.push([[],[],[a]]):a.type===i.INSERT&&n.length>0?s.push(a):a.type===i.DELETE&&n.push(a)}return(n.length||s.length)&&(t.push([[],n,s]),n=[],s=[]),t}applyRematchMatching(e,t,n){const i=e.length*t.length,s=l(e.concat(t).map(e=>e.content.length));return i<this.config.matchingMaxComparisons&&s<this.config.maxLineSizeInBlockForComparison&&("lines"===this.config.matching||"words"===this.config.matching)?n(e,t):[[e,t]]}makeHeaderHtml(e,t){return this.hoganUtils.render(z,"block-header",{CSSLineClass:g,blockHeader:(null==t?void 0:t.isTooBig)?e:C(e),lineClass:"d2h-code-side-linenumber",contentClass:"d2h-code-side-line"})}processChangedLines(e,t,n){const i={right:"",left:""},s=Math.max(t.length,n.length);for(let r=0;r<s;r++){const s=t[r],a=n[r],l=void 0!==s&&void 0!==a?O(s.content,a.content,e,this.config):void 0,o=void 0!==s&&void 0!==s.oldNumber?Object.assign(Object.assign({},void 0!==l?{prefix:l.oldLine.prefix,content:l.oldLine.content,type:g.DELETE_CHANGES}:Object.assign(Object.assign({},S(s.content,e)),{type:T(s.type)})),{number:s.oldNumber}):void 0,c=void 0!==a&&void 0!==a.newNumber?Object.assign(Object.assign({},void 0!==l?{prefix:l.newLine.prefix,content:l.newLine.content,type:g.INSERT_CHANGES}:Object.assign(Object.assign({},S(a.content,e)),{type:T(a.type)})),{number:a.newNumber}):void 0,{left:d,right:h}=this.generateLineHtml(o,c);i.left+=d,i.right+=h}return i}generateLineHtml(e,t){return{left:this.generateSingleHtml(e),right:this.generateSingleHtml(t)}}generateSingleHtml(e){const t="d2h-code-side-linenumber",n="d2h-code-side-line";return this.hoganUtils.render(z,"line",{type:(null==e?void 0:e.type)||`${g.CONTEXT} d2h-emptyplaceholder`,lineClass:void 0!==e?t:`${t} d2h-code-side-emptyplaceholder`,contentClass:void 0!==e?n:`${n} d2h-code-side-emptyplaceholder`,prefix:" "===(null==e?void 0:e.prefix)?"&nbsp;":null==e?void 0:e.prefix,content:null==e?void 0:e.content,lineNumber:null==e?void 0:e.number})}}var U=n(2333);const $={};$["file-summary-line"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<li class="d2h-file-list-line">'),i.b("\n"+n),i.b(' <span class="d2h-file-name-wrapper">'),i.b("\n"+n),i.b(i.rp("<fileIcon0",e,t," ")),i.b(' <a href="#'),i.b(i.v(i.f("fileHtmlId",e,t,0))),i.b('" class="d2h-file-name">'),i.b(i.v(i.f("fileName",e,t,0))),i.b("</a>"),i.b("\n"+n),i.b(' <span class="d2h-file-stats">'),i.b("\n"+n),i.b(' <span class="d2h-lines-added">'),i.b(i.v(i.f("addedLines",e,t,0))),i.b("</span>"),i.b("\n"+n),i.b(' <span class="d2h-lines-deleted">'),i.b(i.v(i.f("deletedLines",e,t,0))),i.b("</span>"),i.b("\n"+n),i.b(" </span>"),i.b("\n"+n),i.b(" </span>"),i.b("\n"+n),i.b("</li>"),i.fl()},partials:{"<fileIcon0":{name:"fileIcon",partials:{},subs:{}}},subs:{}}),$["file-summary-wrapper"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<div class="d2h-file-list-wrapper '),i.b(i.v(i.f("colorScheme",e,t,0))),i.b('">'),i.b("\n"+n),i.b(' <div class="d2h-file-list-header">'),i.b("\n"+n),i.b(' <span class="d2h-file-list-title">Files changed ('),i.b(i.v(i.f("filesNumber",e,t,0))),i.b(")</span>"),i.b("\n"+n),i.b(' <a class="d2h-file-switch d2h-hide">hide</a>'),i.b("\n"+n),i.b(' <a class="d2h-file-switch d2h-show">show</a>'),i.b("\n"+n),i.b(" </div>"),i.b("\n"+n),i.b(' <ol class="d2h-file-list">'),i.b("\n"+n),i.b(" "),i.b(i.t(i.f("files",e,t,0))),i.b("\n"+n),i.b(" </ol>"),i.b("\n"+n),i.b("</div>"),i.fl()},partials:{},subs:{}}),$["generic-block-header"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b("<tr>"),i.b("\n"+n),i.b(' <td class="'),i.b(i.v(i.f("lineClass",e,t,0))),i.b(" "),i.b(i.v(i.d("CSSLineClass.INFO",e,t,0))),i.b('"></td>'),i.b("\n"+n),i.b(' <td class="'),i.b(i.v(i.d("CSSLineClass.INFO",e,t,0))),i.b('">'),i.b("\n"+n),i.b(' <div class="'),i.b(i.v(i.f("contentClass",e,t,0))),i.b('">'),i.s(i.f("blockHeader",e,t,1),e,t,0,156,173,"{{ }}")&&(i.rs(e,t,function(e,t,n){n.b(n.t(n.f("blockHeader",e,t,0)))}),e.pop()),i.s(i.f("blockHeader",e,t,1),e,t,1,0,0,"")||i.b("&nbsp;"),i.b("</div>"),i.b("\n"+n),i.b(" </td>"),i.b("\n"+n),i.b("</tr>"),i.fl()},partials:{},subs:{}}),$["generic-empty-diff"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b("<tr>"),i.b("\n"+n),i.b(' <td class="'),i.b(i.v(i.d("CSSLineClass.INFO",e,t,0))),i.b('">'),i.b("\n"+n),i.b(' <div class="'),i.b(i.v(i.f("contentClass",e,t,0))),i.b('">'),i.b("\n"+n),i.b(" File without changes"),i.b("\n"+n),i.b(" </div>"),i.b("\n"+n),i.b(" </td>"),i.b("\n"+n),i.b("</tr>"),i.fl()},partials:{},subs:{}}),$["generic-file-path"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<span class="d2h-file-name-wrapper">'),i.b("\n"+n),i.b(i.rp("<fileIcon0",e,t," ")),i.b(' <span class="d2h-file-name">'),i.b(i.v(i.f("fileDiffName",e,t,0))),i.b("</span>"),i.b("\n"+n),i.b(i.rp("<fileTag1",e,t," ")),i.b("</span>"),i.b("\n"+n),i.b('<label class="d2h-file-collapse">'),i.b("\n"+n),i.b(' <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed">'),i.b("\n"+n),i.b(" Viewed"),i.b("\n"+n),i.b("</label>"),i.fl()},partials:{"<fileIcon0":{name:"fileIcon",partials:{},subs:{}},"<fileTag1":{name:"fileTag",partials:{},subs:{}}},subs:{}}),$["generic-line"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b("<tr>"),i.b("\n"+n),i.b(' <td class="'),i.b(i.v(i.f("lineClass",e,t,0))),i.b(" "),i.b(i.v(i.f("type",e,t,0))),i.b('">'),i.b("\n"+n),i.b(" "),i.b(i.t(i.f("lineNumber",e,t,0))),i.b("\n"+n),i.b(" </td>"),i.b("\n"+n),i.b(' <td class="'),i.b(i.v(i.f("type",e,t,0))),i.b('">'),i.b("\n"+n),i.b(' <div class="'),i.b(i.v(i.f("contentClass",e,t,0))),i.b('">'),i.b("\n"+n),i.s(i.f("prefix",e,t,1),e,t,0,162,238,"{{ }}")&&(i.rs(e,t,function(e,t,i){i.b(' <span class="d2h-code-line-prefix">'),i.b(i.t(i.f("prefix",e,t,0))),i.b("</span>"),i.b("\n"+n)}),e.pop()),i.s(i.f("prefix",e,t,1),e,t,1,0,0,"")||(i.b(' <span class="d2h-code-line-prefix">&nbsp;</span>'),i.b("\n"+n)),i.s(i.f("content",e,t,1),e,t,0,371,445,"{{ }}")&&(i.rs(e,t,function(e,t,i){i.b(' <span class="d2h-code-line-ctn">'),i.b(i.t(i.f("content",e,t,0))),i.b("</span>"),i.b("\n"+n)}),e.pop()),i.s(i.f("content",e,t,1),e,t,1,0,0,"")||(i.b(' <span class="d2h-code-line-ctn"><br></span>'),i.b("\n"+n)),i.b(" </div>"),i.b("\n"+n),i.b(" </td>"),i.b("\n"+n),i.b("</tr>"),i.fl()},partials:{},subs:{}}),$["generic-wrapper"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<div class="d2h-wrapper '),i.b(i.v(i.f("colorScheme",e,t,0))),i.b('">'),i.b("\n"+n),i.b(" "),i.b(i.t(i.f("content",e,t,0))),i.b("\n"+n),i.b("</div>"),i.fl()},partials:{},subs:{}}),$["icon-file-added"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16"'),i.b("\n"+n),i.b(' width="14">'),i.b("\n"+n),i.b(' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path>'),i.b("\n"+n),i.b("</svg>"),i.fl()},partials:{},subs:{}}),$["icon-file-changed"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1"'),i.b("\n"+n),i.b(' viewBox="0 0 14 16" width="14">'),i.b("\n"+n),i.b(' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path>'),i.b("\n"+n),i.b("</svg>"),i.fl()},partials:{},subs:{}}),$["icon-file-deleted"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1"'),i.b("\n"+n),i.b(' viewBox="0 0 14 16" width="14">'),i.b("\n"+n),i.b(' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path>'),i.b("\n"+n),i.b("</svg>"),i.fl()},partials:{},subs:{}}),$["icon-file-renamed"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<svg aria-hidden="true" class="d2h-icon d2h-moved" height="16" title="renamed" version="1.1"'),i.b("\n"+n),i.b(' viewBox="0 0 14 16" width="14">'),i.b("\n"+n),i.b(' <path d="M6 9H3V7h3V4l5 4-5 4V9z m8-7v12c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h12c0.55 0 1 0.45 1 1z m-1 0H1v12h12V2z"></path>'),i.b("\n"+n),i.b("</svg>"),i.fl()},partials:{},subs:{}}),$["icon-file"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">'),i.b("\n"+n),i.b(' <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>'),i.b("\n"+n),i.b("</svg>"),i.fl()},partials:{},subs:{}}),$["line-by-line-file-diff"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<div id="'),i.b(i.v(i.f("fileHtmlId",e,t,0))),i.b('" class="d2h-file-wrapper" data-lang="'),i.b(i.v(i.d("file.language",e,t,0))),i.b('">'),i.b("\n"+n),i.b(' <div class="d2h-file-header">'),i.b("\n"+n),i.b(" "),i.b(i.t(i.f("filePath",e,t,0))),i.b("\n"+n),i.b(" </div>"),i.b("\n"+n),i.b(' <div class="d2h-file-diff">'),i.b("\n"+n),i.b(' <div class="d2h-code-wrapper">'),i.b("\n"+n),i.b(' <table class="d2h-diff-table">'),i.b("\n"+n),i.b(' <tbody class="d2h-diff-tbody">'),i.b("\n"+n),i.b(" "),i.b(i.t(i.f("diffs",e,t,0))),i.b("\n"+n),i.b(" </tbody>"),i.b("\n"+n),i.b(" </table>"),i.b("\n"+n),i.b(" </div>"),i.b("\n"+n),i.b(" </div>"),i.b("\n"+n),i.b("</div>"),i.fl()},partials:{},subs:{}}),$["line-by-line-numbers"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<div class="line-num1">'),i.b(i.v(i.f("oldNumber",e,t,0))),i.b("</div>"),i.b("\n"+n),i.b('<div class="line-num2">'),i.b(i.v(i.f("newNumber",e,t,0))),i.b("</div>"),i.fl()},partials:{},subs:{}}),$["side-by-side-file-diff"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<div id="'),i.b(i.v(i.f("fileHtmlId",e,t,0))),i.b('" class="d2h-file-wrapper" data-lang="'),i.b(i.v(i.d("file.language",e,t,0))),i.b('">'),i.b("\n"+n),i.b(' <div class="d2h-file-header">'),i.b("\n"+n),i.b(" "),i.b(i.t(i.f("filePath",e,t,0))),i.b("\n"+n),i.b(" </div>"),i.b("\n"+n),i.b(' <div class="d2h-files-diff">'),i.b("\n"+n),i.b(' <div class="d2h-file-side-diff">'),i.b("\n"+n),i.b(' <div class="d2h-code-wrapper">'),i.b("\n"+n),i.b(' <table class="d2h-diff-table">'),i.b("\n"+n),i.b(' <tbody class="d2h-diff-tbody">'),i.b("\n"+n),i.b(" "),i.b(i.t(i.d("diffs.left",e,t,0))),i.b("\n"+n),i.b(" </tbody>"),i.b("\n"+n),i.b(" </table>"),i.b("\n"+n),i.b(" </div>"),i.b("\n"+n),i.b(" </div>"),i.b("\n"+n),i.b(' <div class="d2h-file-side-diff">'),i.b("\n"+n),i.b(' <div class="d2h-code-wrapper">'),i.b("\n"+n),i.b(' <table class="d2h-diff-table">'),i.b("\n"+n),i.b(' <tbody class="d2h-diff-tbody">'),i.b("\n"+n),i.b(" "),i.b(i.t(i.d("diffs.right",e,t,0))),i.b("\n"+n),i.b(" </tbody>"),i.b("\n"+n),i.b(" </table>"),i.b("\n"+n),i.b(" </div>"),i.b("\n"+n),i.b(" </div>"),i.b("\n"+n),i.b(" </div>"),i.b("\n"+n),i.b("</div>"),i.fl()},partials:{},subs:{}}),$["tag-file-added"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<span class="d2h-tag d2h-added d2h-added-tag">ADDED</span>'),i.fl()},partials:{},subs:{}}),$["tag-file-changed"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span>'),i.fl()},partials:{},subs:{}}),$["tag-file-deleted"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<span class="d2h-tag d2h-deleted d2h-deleted-tag">DELETED</span>'),i.fl()},partials:{},subs:{}}),$["tag-file-renamed"]=new U.Template({code:function(e,t,n){var i=this;return i.b(n=n||""),i.b('<span class="d2h-tag d2h-moved d2h-moved-tag">RENAMED</span>'),i.fl()},partials:{},subs:{}});class G{constructor({compiledTemplates:e={},rawTemplates:t={}}){const n=Object.entries(t).reduce((e,[t,n])=>{const i=U.compile(n,{asString:!1});return Object.assign(Object.assign({},e),{[t]:i})},{});this.preCompiledTemplates=Object.assign(Object.assign(Object.assign({},$),e),n)}static compile(e){return U.compile(e,{asString:!1})}render(e,t,n,i,s){const r=this.templateKey(e,t);try{return this.preCompiledTemplates[r].render(n,i,s)}catch(e){throw new Error(`Could not find template to render '${r}'`)}}template(e,t){return this.preCompiledTemplates[this.templateKey(e,t)]}templateKey(e,t){return`${e}-${t}`}}const P=Object.assign(Object.assign(Object.assign({},A),B),{outputFormat:"line-by-line",drawFileList:!0});function _(e,t={}){return f(e,Object.assign(Object.assign({},P),t))}function V(e,t={}){const n=Object.assign(Object.assign({},P),t),i="string"==typeof e?f(e,n):e,s=new G(n),{colorScheme:r}=n,a={colorScheme:r};return(n.drawFileList?new M(s,a).render(i):"")+("side-by-side"===n.outputFormat?new R(s,n).render(i):new F(s,n).render(i))}},2333:(e,t,n)=>{var i=n(9110);i.Template=n(9549).Template,i.template=i.Template,e.exports=i},9110:(e,t)=>{!function(e){var t=/\S/,n=/\"/g,i=/\n/g,s=/\r/g,r=/\\/g,a=/\u2028/,l=/\u2029/;function o(e){"}"===e.n.substr(e.n.length-1)&&(e.n=e.n.substring(0,e.n.length-1))}function c(e){return e.trim?e.trim():e.replace(/^\s*|\s*$/g,"")}function d(e,t,n){if(t.charAt(n)!=e.charAt(0))return!1;for(var i=1,s=e.length;i<s;i++)if(t.charAt(n+i)!=e.charAt(i))return!1;return!0}e.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},e.scan=function(n,i){var s=n.length,r=0,a=null,l=null,h="",f=[],b=!1,u=0,p=0,g="{{",m="}}";function v(){h.length>0&&(f.push({tag:"_t",text:new String(h)}),h="")}function w(n,i){if(v(),n&&function(){for(var n=!0,i=p;i<f.length;i++)if(!(n=e.tags[f[i].tag]<e.tags._v||"_t"==f[i].tag&&null===f[i].text.match(t)))return!1;return n}())for(var s,r=p;r<f.length;r++)f[r].text&&((s=f[r+1])&&">"==s.tag&&(s.indent=f[r].text.toString()),f.splice(r,1));else i||f.push({tag:"\n"});b=!1,p=f.length}function x(e,t){var n="="+m,i=e.indexOf(n,t),s=c(e.substring(e.indexOf("=",t)+1,i)).split(" ");return g=s[0],m=s[s.length-1],i+n.length-1}for(i&&(i=i.split(" "),g=i[0],m=i[1]),u=0;u<s;u++)0==r?d(g,n,u)?(--u,v(),r=1):"\n"==n.charAt(u)?w(b):h+=n.charAt(u):1==r?(u+=g.length-1,"="==(a=(l=e.tags[n.charAt(u+1)])?n.charAt(u+1):"_v")?(u=x(n,u),r=0):(l&&u++,r=2),b=u):d(m,n,u)?(f.push({tag:a,n:c(h),otag:g,ctag:m,i:"/"==a?b-g.length:u+m.length}),h="",u+=m.length-1,r=0,"{"==a&&("}}"==m?u++:o(f[f.length-1]))):h+=n.charAt(u);return w(b,!0),f};var h={_t:!0,"\n":!0,$:!0,"/":!0};function f(t,n,i,s){var r,a=[],l=null,o=null;for(r=i[i.length-1];t.length>0;){if(o=t.shift(),r&&"<"==r.tag&&!(o.tag in h))throw new Error("Illegal content in < super tag.");if(e.tags[o.tag]<=e.tags.$||b(o,s))i.push(o),o.nodes=f(t,o.tag,i,s);else{if("/"==o.tag){if(0===i.length)throw new Error("Closing tag without opener: /"+o.n);if(l=i.pop(),o.n!=l.n&&!u(o.n,l.n,s))throw new Error("Nesting error: "+l.n+" vs. "+o.n);return l.end=o.i,a}"\n"==o.tag&&(o.last=0==t.length||"\n"==t[0].tag)}a.push(o)}if(i.length>0)throw new Error("missing closing tag: "+i.pop().n);return a}function b(e,t){for(var n=0,i=t.length;n<i;n++)if(t[n].o==e.n)return e.tag="#",!0}function u(e,t,n){for(var i=0,s=n.length;i<s;i++)if(n[i].c==e&&n[i].o==t)return!0}function p(e){var t=[];for(var n in e.partials)t.push('"'+m(n)+'":{name:"'+m(e.partials[n].name)+'", '+p(e.partials[n])+"}");return"partials: {"+t.join(",")+"}, subs: "+function(e){var t=[];for(var n in e)t.push('"'+m(n)+'": function(c,p,t,i) {'+e[n]+"}");return"{ "+t.join(",")+" }"}(e.subs)}e.stringify=function(t,n,i){return"{code: function (c,p,i) { "+e.wrapMain(t.code)+" },"+p(t)+"}"};var g=0;function m(e){return e.replace(r,"\\\\").replace(n,'\\"').replace(i,"\\n").replace(s,"\\r").replace(a,"\\u2028").replace(l,"\\u2029")}function v(e){return~e.indexOf(".")?"d":"f"}function w(e,t){var n="<"+(t.prefix||"")+e.n+g++;return t.partials[n]={name:e.n,partials:{}},t.code+='t.b(t.rp("'+m(n)+'",c,p,"'+(e.indent||"")+'"));',n}function x(e,t){t.code+="t.b(t.t(t."+v(e.n)+'("'+m(e.n)+'",c,p,0)));'}function y(e){return"t.b("+e+");"}e.generate=function(t,n,i){g=0;var s={code:"",subs:{},partials:{}};return e.walk(t,s),i.asString?this.stringify(s,n,i):this.makeTemplate(s,n,i)},e.wrapMain=function(e){return'var t=this;t.b(i=i||"");'+e+"return t.fl();"},e.template=e.Template,e.makeTemplate=function(e,t,n){var i=this.makePartials(e);return i.code=new Function("c","p","i",this.wrapMain(e.code)),new this.template(i,t,this,n)},e.makePartials=function(e){var t,n={subs:{},partials:e.partials,name:e.name};for(t in n.partials)n.partials[t]=this.makePartials(n.partials[t]);for(t in e.subs)n.subs[t]=new Function("c","p","t","i",e.subs[t]);return n},e.codegen={"#":function(t,n){n.code+="if(t.s(t."+v(t.n)+'("'+m(t.n)+'",c,p,1),c,p,0,'+t.i+","+t.end+',"'+t.otag+" "+t.ctag+'")){t.rs(c,p,function(c,p,t){',e.walk(t.nodes,n),n.code+="});c.pop();}"},"^":function(t,n){n.code+="if(!t.s(t."+v(t.n)+'("'+m(t.n)+'",c,p,1),c,p,1,0,0,"")){',e.walk(t.nodes,n),n.code+="};"},">":w,"<":function(t,n){var i={partials:{},code:"",subs:{},inPartial:!0};e.walk(t.nodes,i);var s=n.partials[w(t,n)];s.subs=i.subs,s.partials=i.partials},$:function(t,n){var i={subs:{},code:"",partials:n.partials,prefix:t.n};e.walk(t.nodes,i),n.subs[t.n]=i.code,n.inPartial||(n.code+='t.sub("'+m(t.n)+'",c,p,i);')},"\n":function(e,t){t.code+=y('"\\n"'+(e.last?"":" + i"))},_v:function(e,t){t.code+="t.b(t.v(t."+v(e.n)+'("'+m(e.n)+'",c,p,0)));'},_t:function(e,t){t.code+=y('"'+m(e.text)+'"')},"{":x,"&":x},e.walk=function(t,n){for(var i,s=0,r=t.length;s<r;s++)(i=e.codegen[t[s].tag])&&i(t[s],n);return n},e.parse=function(e,t,n){return f(e,0,[],(n=n||{}).sectionTags||[])},e.cache={},e.cacheKey=function(e,t){return[e,!!t.asString,!!t.disableLambda,t.delimiters,!!t.modelGet].join("||")},e.compile=function(t,n){n=n||{};var i=e.cacheKey(t,n),s=this.cache[i];if(s){var r=s.partials;for(var a in r)delete r[a].instance;return s}return s=this.generate(this.parse(this.scan(t,n.delimiters),t,n),t,n),this.cache[i]=s}}(t)},9549:(e,t)=>{!function(e){function t(e,t,n){var i;return t&&"object"==typeof t&&(void 0!==t[e]?i=t[e]:n&&t.get&&"function"==typeof t.get&&(i=t.get(e))),i}e.Template=function(e,t,n,i){e=e||{},this.r=e.code||this.r,this.c=n,this.options=i||{},this.text=t||"",this.partials=e.partials||{},this.subs=e.subs||{},this.buf=""},e.Template.prototype={r:function(e,t,n){return""},v:function(e){return e=o(e),l.test(e)?e.replace(n,"&amp;").replace(i,"&lt;").replace(s,"&gt;").replace(r,"&#39;").replace(a,"&quot;"):e},t:o,render:function(e,t,n){return this.ri([e],t||{},n)},ri:function(e,t,n){return this.r(e,t,n)},ep:function(e,t){var n=this.partials[e],i=t[n.name];if(n.instance&&n.base==i)return n.instance;if("string"==typeof i){if(!this.c)throw new Error("No compiler available.");i=this.c.compile(i,this.options)}if(!i)return null;if(this.partials[e].base=i,n.subs){for(key in t.stackText||(t.stackText={}),n.subs)t.stackText[key]||(t.stackText[key]=void 0!==this.activeSub&&t.stackText[this.activeSub]?t.stackText[this.activeSub]:this.text);i=function(e,t,n,i,s,r){function a(){}function l(){}var o;a.prototype=e,l.prototype=e.subs;var c=new a;for(o in c.subs=new l,c.subsText={},c.buf="",i=i||{},c.stackSubs=i,c.subsText=r,t)i[o]||(i[o]=t[o]);for(o in i)c.subs[o]=i[o];for(o in s=s||{},c.stackPartials=s,n)s[o]||(s[o]=n[o]);for(o in s)c.partials[o]=s[o];return c}(i,n.subs,n.partials,this.stackSubs,this.stackPartials,t.stackText)}return this.partials[e].instance=i,i},rp:function(e,t,n,i){var s=this.ep(e,n);return s?s.ri(t,n,i):""},rs:function(e,t,n){var i=e[e.length-1];if(c(i))for(var s=0;s<i.length;s++)e.push(i[s]),n(e,t,this),e.pop();else n(e,t,this)},s:function(e,t,n,i,s,r,a){var l;return(!c(e)||0!==e.length)&&("function"==typeof e&&(e=this.ms(e,t,n,i,s,r,a)),l=!!e,!i&&l&&t&&t.push("object"==typeof e?e:t[t.length-1]),l)},d:function(e,n,i,s){var r,a=e.split("."),l=this.f(a[0],n,i,s),o=this.options.modelGet,d=null;if("."===e&&c(n[n.length-2]))l=n[n.length-1];else for(var h=1;h<a.length;h++)void 0!==(r=t(a[h],l,o))?(d=l,l=r):l="";return!(s&&!l)&&(s||"function"!=typeof l||(n.push(d),l=this.mv(l,n,i),n.pop()),l)},f:function(e,n,i,s){for(var r=!1,a=!1,l=this.options.modelGet,o=n.length-1;o>=0;o--)if(void 0!==(r=t(e,n[o],l))){a=!0;break}return a?(s||"function"!=typeof r||(r=this.mv(r,n,i)),r):!s&&""},ls:function(e,t,n,i,s){var r=this.options.delimiters;return this.options.delimiters=s,this.b(this.ct(o(e.call(t,i)),t,n)),this.options.delimiters=r,!1},ct:function(e,t,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(e,this.options).render(t,n)},b:function(e){this.buf+=e},fl:function(){var e=this.buf;return this.buf="",e},ms:function(e,t,n,i,s,r,a){var l,o=t[t.length-1],c=e.call(o);return"function"==typeof c?!!i||(l=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(c,o,n,l.substring(s,r),a)):c},mv:function(e,t,n){var i=t[t.length-1],s=e.call(i);return"function"==typeof s?this.ct(o(s.call(i)),i,n):s},sub:function(e,t,n,i){var s=this.subs[e];s&&(this.activeSub=e,s(t,n,this,i),this.activeSub=!1)}};var n=/&/g,i=/</g,s=/>/g,r=/\'/g,a=/\"/g,l=/[&<>\"\']/;function o(e){return String(null==e?"":e)}var c=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}}(t)}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunksage_agent_internal=self.webpackChunksage_agent_internal||[]).push([[220],{4474:(t,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.Allow=r.ALL=r.COLLECTION=r.ATOM=r.SPECIAL=r.INF=r._INFINITY=r.INFINITY=r.NAN=r.BOOL=r.NULL=r.OBJ=r.ARR=r.NUM=r.STR=void 0,r.STR=1,r.NUM=2,r.ARR=4,r.OBJ=8,r.NULL=16,r.BOOL=32,r.NAN=64,r.INFINITY=128,r._INFINITY=256,r.INF=r.INFINITY|r._INFINITY,r.SPECIAL=r.NULL|r.BOOL|r.INF|r.NAN,r.ATOM=r.STR|r.NUM|r.SPECIAL,r.COLLECTION=r.ARR|r.OBJ,r.ALL=r.ATOM|r.COLLECTION,r.Allow={STR:r.STR,NUM:r.NUM,ARR:r.ARR,OBJ:r.OBJ,NULL:r.NULL,BOOL:r.BOOL,NAN:r.NAN,INFINITY:r.INFINITY,_INFINITY:r._INFINITY,INF:r.INF,SPECIAL:r.SPECIAL,ATOM:r.ATOM,COLLECTION:r.COLLECTION,ALL:r.ALL},r.default=r.Allow},9220:function(t,r,e){var n=this&&this.__createBinding||(Object.create?function(t,r,e,n){void 0===n&&(n=e);var s=Object.getOwnPropertyDescriptor(r,e);s&&!("get"in s?!r.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return r[e]}}),Object.defineProperty(t,n,s)}:function(t,r,e,n){void 0===n&&(n=e),t[n]=r[e]}),s=this&&this.__exportStar||function(t,r){for(var e in t)"default"===e||Object.prototype.hasOwnProperty.call(r,e)||n(r,t,e)};Object.defineProperty(r,"__esModule",{value:!0}),r.Allow=r.MalformedJSON=r.PartialJSON=r.parseJSON=r.parse=void 0;const i=e(4474);Object.defineProperty(r,"Allow",{enumerable:!0,get:function(){return i.Allow}}),s(e(4474),r);class o extends Error{}r.PartialJSON=o;class l extends Error{}function N(t,r=i.Allow.ALL){if("string"!=typeof t)throw new TypeError("expecting str, got "+typeof t);if(!t.trim())throw new Error(`${t} is empty`);return a(t.trim(),r)}r.MalformedJSON=l,r.parseJSON=N;const a=(t,r)=>{const e=t.length;let n=0;const s=t=>{throw new o(`${t} at position ${n}`)},N=t=>{throw new l(`${t} at position ${n}`)},a=()=>(f(),n>=e&&s("Unexpected end of input"),'"'===t[n]?u():"{"===t[n]?O():"["===t[n]?c():"null"===t.substring(n,n+4)||i.Allow.NULL&r&&e-n<4&&"null".startsWith(t.substring(n))?(n+=4,null):"true"===t.substring(n,n+4)||i.Allow.BOOL&r&&e-n<4&&"true".startsWith(t.substring(n))?(n+=4,!0):"false"===t.substring(n,n+5)||i.Allow.BOOL&r&&e-n<5&&"false".startsWith(t.substring(n))?(n+=5,!1):"Infinity"===t.substring(n,n+8)||i.Allow.INFINITY&r&&e-n<8&&"Infinity".startsWith(t.substring(n))?(n+=8,1/0):"-Infinity"===t.substring(n,n+9)||i.Allow._INFINITY&r&&1<e-n&&e-n<9&&"-Infinity".startsWith(t.substring(n))?(n+=9,-1/0):"NaN"===t.substring(n,n+3)||i.Allow.NAN&r&&e-n<3&&"NaN".startsWith(t.substring(n))?(n+=3,NaN):I()),u=()=>{const o=n;let l=!1;for(n++;n<e&&('"'!==t[n]||l&&"\\"===t[n-1]);)l="\\"===t[n]&&!l,n++;if('"'==t.charAt(n))try{return JSON.parse(t.substring(o,++n-Number(l)))}catch(t){N(String(t))}else if(i.Allow.STR&r)try{return JSON.parse(t.substring(o,n-Number(l))+'"')}catch(r){return JSON.parse(t.substring(o,t.lastIndexOf("\\"))+'"')}s("Unterminated string literal")},O=()=>{n++,f();const o={};try{for(;"}"!==t[n];){if(f(),n>=e&&i.Allow.OBJ&r)return o;const s=u();f(),n++;try{const t=a();o[s]=t}catch(t){if(i.Allow.OBJ&r)return o;throw t}f(),","===t[n]&&n++}}catch(t){if(i.Allow.OBJ&r)return o;s("Expected '}' at end of object")}return n++,o},c=()=>{n++;const e=[];try{for(;"]"!==t[n];)e.push(a()),f(),","===t[n]&&n++}catch(t){if(i.Allow.ARR&r)return e;s("Expected ']' at end of array")}return n++,e},I=()=>{if(0===n){"-"===t&&N("Not sure what '-' is");try{return JSON.parse(t)}catch(e){if(i.Allow.NUM&r)try{return JSON.parse(t.substring(0,t.lastIndexOf("e")))}catch(t){}N(String(e))}}const o=n;for("-"===t[n]&&n++;t[n]&&-1===",]}".indexOf(t[n]);)n++;n!=e||i.Allow.NUM&r||s("Unterminated number literal");try{return JSON.parse(t.substring(o,n))}catch(r){"-"===t.substring(o,n)&&s("Not sure what '-' is");try{return JSON.parse(t.substring(o,t.lastIndexOf("e")))}catch(t){N(String(t))}}},f=()=>{for(;n<e&&" \n\r\t".includes(t[n]);)n++};return a()},u=N;r.parse=u}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunksage_agent_internal=self.webpackChunksage_agent_internal||[]).push([[262],{8262:(n,t,e)=>{e.r(t),e.d(t,{MAX:()=>r,NIL:()=>o,parse:()=>c,stringify:()=>a,v1:()=>p,v1ToV6:()=>U,v3:()=>_,v4:()=>C,v5:()=>N,v6:()=>j,v6ToV1:()=>O,v7:()=>z,validate:()=>s,version:()=>B});const r="ffffffff-ffff-ffff-ffff-ffffffffffff",o="00000000-0000-0000-0000-000000000000",f=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i,s=function(n){return"string"==typeof n&&f.test(n)},c=function(n){if(!s(n))throw TypeError("Invalid UUID");let t;return Uint8Array.of((t=parseInt(n.slice(0,8),16))>>>24,t>>>16&255,t>>>8&255,255&t,(t=parseInt(n.slice(9,13),16))>>>8,255&t,(t=parseInt(n.slice(14,18),16))>>>8,255&t,(t=parseInt(n.slice(19,23),16))>>>8,255&t,(t=parseInt(n.slice(24,36),16))/1099511627776&255,t/4294967296&255,t>>>24&255,t>>>16&255,t>>>8&255,255&t)},i=[];for(let n=0;n<256;++n)i.push((n+256).toString(16).slice(1));function u(n,t=0){return(i[n[t+0]]+i[n[t+1]]+i[n[t+2]]+i[n[t+3]]+"-"+i[n[t+4]]+i[n[t+5]]+"-"+i[n[t+6]]+i[n[t+7]]+"-"+i[n[t+8]]+i[n[t+9]]+"-"+i[n[t+10]]+i[n[t+11]]+i[n[t+12]]+i[n[t+13]]+i[n[t+14]]+i[n[t+15]]).toLowerCase()}const a=function(n,t=0){const e=u(n,t);if(!s(e))throw TypeError("Stringified UUID is invalid");return e};let l;const g=new Uint8Array(16);function d(){if(!l){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");l=crypto.getRandomValues.bind(crypto)}return l(g)}const h={};function y(n,t,e,r,o,f,s=0){if(n.length<16)throw new Error("Random bytes length must be >= 16");if(f){if(s<0||s+16>f.length)throw new RangeError(`UUID byte range ${s}:${s+15} is out of buffer bounds`)}else f=new Uint8Array(16),s=0;t??=Date.now(),e??=0,r??=16383&(n[8]<<8|n[9]),o??=n.slice(10,16);const c=(1e4*(268435455&(t+=122192928e5))+e)%4294967296;f[s++]=c>>>24&255,f[s++]=c>>>16&255,f[s++]=c>>>8&255,f[s++]=255&c;const i=t/4294967296*1e4&268435455;f[s++]=i>>>8&255,f[s++]=255&i,f[s++]=i>>>24&15|16,f[s++]=i>>>16&255,f[s++]=r>>>8|128,f[s++]=255&r;for(let n=0;n<6;++n)f[s++]=o[n];return f}const p=function(n,t,e){let r;const o=n?._v6??!1;if(n){const t=Object.keys(n);1===t.length&&"_v6"===t[0]&&(n=void 0)}if(n)r=y(n.random??n.rng?.()??d(),n.msecs,n.nsecs,n.clockseq,n.node,t,e);else{const n=Date.now(),f=d();!function(n,t,e){n.msecs??=-1/0,n.nsecs??=0,t===n.msecs?(n.nsecs++,n.nsecs>=1e4&&(n.node=void 0,n.nsecs=0)):t>n.msecs?n.nsecs=0:t<n.msecs&&(n.node=void 0),n.node||(n.node=e.slice(10,16),n.node[0]|=1,n.clockseq=16383&(e[8]<<8|e[9])),n.msecs=t}(h,n,f),r=y(f,h.msecs,h.nsecs,o?void 0:h.clockseq,o?void 0:h.node,t,e)}return t??u(r)};function U(n){const t=function(n){return Uint8Array.of((15&n[6])<<4|n[7]>>4&15,(15&n[7])<<4|(240&n[4])>>4,(15&n[4])<<4|(240&n[5])>>4,(15&n[5])<<4|(240&n[0])>>4,(15&n[0])<<4|(240&n[1])>>4,(15&n[1])<<4|(240&n[2])>>4,96|15&n[2],n[3],n[8],n[9],n[10],n[11],n[12],n[13],n[14],n[15])}("string"==typeof n?c(n):n);return"string"==typeof n?u(t):t}function w(n){return 14+(n+64>>>9<<4)+1}function m(n,t){const e=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(e>>16)<<16|65535&e}function b(n,t,e,r,o,f){return m((s=m(m(t,n),m(r,f)))<<(c=o)|s>>>32-c,e);var s,c}function v(n,t,e,r,o,f,s){return b(t&e|~t&r,n,t,o,f,s)}function A(n,t,e,r,o,f,s){return b(t&r|e&~r,n,t,o,f,s)}function I(n,t,e,r,o,f,s){return b(t^e^r,n,t,o,f,s)}function D(n,t,e,r,o,f,s){return b(e^(t|~r),n,t,o,f,s)}const R=function(n){return function(n){const t=new Uint8Array(4*n.length);for(let e=0;e<4*n.length;e++)t[e]=n[e>>2]>>>e%4*8&255;return t}(function(n,t){const e=new Uint32Array(w(t)).fill(0);e.set(n),e[t>>5]|=128<<t%32,e[e.length-1]=t,n=e;let r=1732584193,o=-271733879,f=-1732584194,s=271733878;for(let t=0;t<n.length;t+=16){const e=r,c=o,i=f,u=s;r=v(r,o,f,s,n[t],7,-680876936),s=v(s,r,o,f,n[t+1],12,-389564586),f=v(f,s,r,o,n[t+2],17,606105819),o=v(o,f,s,r,n[t+3],22,-1044525330),r=v(r,o,f,s,n[t+4],7,-176418897),s=v(s,r,o,f,n[t+5],12,1200080426),f=v(f,s,r,o,n[t+6],17,-1473231341),o=v(o,f,s,r,n[t+7],22,-45705983),r=v(r,o,f,s,n[t+8],7,1770035416),s=v(s,r,o,f,n[t+9],12,-1958414417),f=v(f,s,r,o,n[t+10],17,-42063),o=v(o,f,s,r,n[t+11],22,-1990404162),r=v(r,o,f,s,n[t+12],7,1804603682),s=v(s,r,o,f,n[t+13],12,-40341101),f=v(f,s,r,o,n[t+14],17,-1502002290),o=v(o,f,s,r,n[t+15],22,1236535329),r=A(r,o,f,s,n[t+1],5,-165796510),s=A(s,r,o,f,n[t+6],9,-1069501632),f=A(f,s,r,o,n[t+11],14,643717713),o=A(o,f,s,r,n[t],20,-373897302),r=A(r,o,f,s,n[t+5],5,-701558691),s=A(s,r,o,f,n[t+10],9,38016083),f=A(f,s,r,o,n[t+15],14,-660478335),o=A(o,f,s,r,n[t+4],20,-405537848),r=A(r,o,f,s,n[t+9],5,568446438),s=A(s,r,o,f,n[t+14],9,-1019803690),f=A(f,s,r,o,n[t+3],14,-187363961),o=A(o,f,s,r,n[t+8],20,1163531501),r=A(r,o,f,s,n[t+13],5,-1444681467),s=A(s,r,o,f,n[t+2],9,-51403784),f=A(f,s,r,o,n[t+7],14,1735328473),o=A(o,f,s,r,n[t+12],20,-1926607734),r=I(r,o,f,s,n[t+5],4,-378558),s=I(s,r,o,f,n[t+8],11,-2022574463),f=I(f,s,r,o,n[t+11],16,1839030562),o=I(o,f,s,r,n[t+14],23,-35309556),r=I(r,o,f,s,n[t+1],4,-1530992060),s=I(s,r,o,f,n[t+4],11,1272893353),f=I(f,s,r,o,n[t+7],16,-155497632),o=I(o,f,s,r,n[t+10],23,-1094730640),r=I(r,o,f,s,n[t+13],4,681279174),s=I(s,r,o,f,n[t],11,-358537222),f=I(f,s,r,o,n[t+3],16,-722521979),o=I(o,f,s,r,n[t+6],23,76029189),r=I(r,o,f,s,n[t+9],4,-640364487),s=I(s,r,o,f,n[t+12],11,-421815835),f=I(f,s,r,o,n[t+15],16,530742520),o=I(o,f,s,r,n[t+2],23,-995338651),r=D(r,o,f,s,n[t],6,-198630844),s=D(s,r,o,f,n[t+7],10,1126891415),f=D(f,s,r,o,n[t+14],15,-1416354905),o=D(o,f,s,r,n[t+5],21,-57434055),r=D(r,o,f,s,n[t+12],6,1700485571),s=D(s,r,o,f,n[t+3],10,-1894986606),f=D(f,s,r,o,n[t+10],15,-1051523),o=D(o,f,s,r,n[t+1],21,-2054922799),r=D(r,o,f,s,n[t+8],6,1873313359),s=D(s,r,o,f,n[t+15],10,-30611744),f=D(f,s,r,o,n[t+6],15,-1560198380),o=D(o,f,s,r,n[t+13],21,1309151649),r=D(r,o,f,s,n[t+4],6,-145523070),s=D(s,r,o,f,n[t+11],10,-1120210379),f=D(f,s,r,o,n[t+2],15,718787259),o=D(o,f,s,r,n[t+9],21,-343485551),r=m(r,e),o=m(o,c),f=m(f,i),s=m(s,u)}return Uint32Array.of(r,o,f,s)}(function(n){if(0===n.length)return new Uint32Array;const t=new Uint32Array(w(8*n.length)).fill(0);for(let e=0;e<n.length;e++)t[e>>2]|=(255&n[e])<<e%4*8;return t}(n),8*n.length))},E="6ba7b810-9dad-11d1-80b4-00c04fd430c8",q="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function k(n,t,e,r,o,f){const s="string"==typeof e?function(n){n=unescape(encodeURIComponent(n));const t=new Uint8Array(n.length);for(let e=0;e<n.length;++e)t[e]=n.charCodeAt(e);return t}(e):e,i="string"==typeof r?c(r):r;if("string"==typeof r&&(r=c(r)),16!==r?.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let a=new Uint8Array(16+s.length);if(a.set(i),a.set(s,i.length),a=t(a),a[6]=15&a[6]|n,a[8]=63&a[8]|128,o){f=f||0;for(let n=0;n<16;++n)o[f+n]=a[n];return o}return u(a)}function $(n,t,e,r){return k(48,R,n,t,e,r)}$.DNS=E,$.URL=q;const _=$,T={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)},C=function(n,t,e){if(T.randomUUID&&!t&&!n)return T.randomUUID();const r=(n=n||{}).random??n.rng?.()??d();if(r.length<16)throw new Error("Random bytes length must be >= 16");if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){if((e=e||0)<0||e+16>t.length)throw new RangeError(`UUID byte range ${e}:${e+15} is out of buffer bounds`);for(let n=0;n<16;++n)t[e+n]=r[n];return t}return u(r)};function M(n,t,e,r){switch(n){case 0:return t&e^~t&r;case 1:case 3:return t^e^r;case 2:return t&e^t&r^e&r}}function S(n,t){return n<<t|n>>>32-t}const V=function(n){const t=[1518500249,1859775393,2400959708,3395469782],e=[1732584193,4023233417,2562383102,271733878,3285377520],r=new Uint8Array(n.length+1);r.set(n),r[n.length]=128;const o=(n=r).length/4+2,f=Math.ceil(o/16),s=new Array(f);for(let t=0;t<f;++t){const e=new Uint32Array(16);for(let r=0;r<16;++r)e[r]=n[64*t+4*r]<<24|n[64*t+4*r+1]<<16|n[64*t+4*r+2]<<8|n[64*t+4*r+3];s[t]=e}s[f-1][14]=8*(n.length-1)/Math.pow(2,32),s[f-1][14]=Math.floor(s[f-1][14]),s[f-1][15]=8*(n.length-1)&4294967295;for(let n=0;n<f;++n){const r=new Uint32Array(80);for(let t=0;t<16;++t)r[t]=s[n][t];for(let n=16;n<80;++n)r[n]=S(r[n-3]^r[n-8]^r[n-14]^r[n-16],1);let o=e[0],f=e[1],c=e[2],i=e[3],u=e[4];for(let n=0;n<80;++n){const e=Math.floor(n/20),s=S(o,5)+M(e,f,c,i)+u+t[e]+r[n]>>>0;u=i,i=c,c=S(f,30)>>>0,f=o,o=s}e[0]=e[0]+o>>>0,e[1]=e[1]+f>>>0,e[2]=e[2]+c>>>0,e[3]=e[3]+i>>>0,e[4]=e[4]+u>>>0}return Uint8Array.of(e[0]>>24,e[0]>>16,e[0]>>8,e[0],e[1]>>24,e[1]>>16,e[1]>>8,e[1],e[2]>>24,e[2]>>16,e[2]>>8,e[2],e[3]>>24,e[3]>>16,e[3]>>8,e[3],e[4]>>24,e[4]>>16,e[4]>>8,e[4])};function L(n,t,e,r){return k(80,V,n,t,e,r)}L.DNS=E,L.URL=q;const N=L,j=function(n,t,e){n??={},e??=0;let r=p({...n,_v6:!0},new Uint8Array(16));if(r=U(r),t){for(let n=0;n<16;n++)t[e+n]=r[n];return t}return u(r)};function O(n){const t=(e="string"==typeof n?c(n):n,Uint8Array.of((15&e[3])<<4|e[4]>>4&15,(15&e[4])<<4|(240&e[5])>>4,(15&e[5])<<4|15&e[6],e[7],(15&e[1])<<4|(240&e[2])>>4,(15&e[2])<<4|(240&e[3])>>4,16|(240&e[0])>>4,(15&e[0])<<4|(240&e[1])>>4,e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]));var e;return"string"==typeof n?u(t):t}const X={};function x(n,t,e,r,o=0){if(n.length<16)throw new Error("Random bytes length must be >= 16");if(r){if(o<0||o+16>r.length)throw new RangeError(`UUID byte range ${o}:${o+15} is out of buffer bounds`)}else r=new Uint8Array(16),o=0;return t??=Date.now(),e??=127*n[6]<<24|n[7]<<16|n[8]<<8|n[9],r[o++]=t/1099511627776&255,r[o++]=t/4294967296&255,r[o++]=t/16777216&255,r[o++]=t/65536&255,r[o++]=t/256&255,r[o++]=255&t,r[o++]=112|e>>>28&15,r[o++]=e>>>20&255,r[o++]=128|e>>>14&63,r[o++]=e>>>6&255,r[o++]=e<<2&255|3&n[10],r[o++]=n[11],r[o++]=n[12],r[o++]=n[13],r[o++]=n[14],r[o++]=n[15],r}const z=function(n,t,e){let r;if(n)r=x(n.random??n.rng?.()??d(),n.msecs,n.seq,t,e);else{const n=Date.now(),o=d();!function(n,t,e){n.msecs??=-1/0,n.seq??=0,t>n.msecs?(n.seq=e[6]<<23|e[7]<<16|e[8]<<8|e[9],n.msecs=t):(n.seq=n.seq+1|0,0===n.seq&&n.msecs++)}(X,n,o),r=x(o,X.msecs,X.seq,t,e)}return t??u(r)},B=function(n){if(!s(n))throw TypeError("Invalid UUID");return parseInt(n.slice(14,15),16)}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunksage_agent_internal=self.webpackChunksage_agent_internal||[]).push([[353],{4353:(e,t,n)=>{n.d(t,{b6:()=>v,cL:()=>L,g_:()=>y,pw:()=>Te});var r=n(195),o=n(5024),l=n(2084),i=n(3708);function s(e,t){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let o=e(t,n);return!!o&&(r(n.update(o)),!0)}}const a=s(m,0),c=s(d,0),f=s((e,t)=>d(e,t,function(e){let t=[];for(let n of e.selection.ranges){let r=e.doc.lineAt(n.from),o=n.to<=r.to?r:e.doc.lineAt(n.to);o.from>r.from&&o.from==n.to&&(o=n.to==r.to+1?r:e.doc.lineAt(n.to-1));let l=t.length-1;l>=0&&t[l].to>r.from?t[l].to=o.to:t.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:o.to})}return t}(t)),0);function u(e,t){let n=e.languageDataAt("commentTokens",t,1);return n.length?n[0]:{}}const h=50;function d(e,t,n=t.selection.ranges){let r=n.map(e=>u(t,e.from).block);if(!r.every(e=>e))return null;let o=n.map((e,n)=>function(e,{open:t,close:n},r,o){let l,i,s=e.sliceDoc(r-h,r),a=e.sliceDoc(o,o+h),c=/\s*$/.exec(s)[0].length,f=/^\s*/.exec(a)[0].length,u=s.length-c;if(s.slice(u-t.length,u)==t&&a.slice(f,f+n.length)==n)return{open:{pos:r-c,margin:c&&1},close:{pos:o+f,margin:f&&1}};o-r<=2*h?l=i=e.sliceDoc(r,o):(l=e.sliceDoc(r,r+h),i=e.sliceDoc(o-h,o));let d=/^\s*/.exec(l)[0].length,m=/\s*$/.exec(i)[0].length,p=i.length-m-n.length;return l.slice(d,d+t.length)==t&&i.slice(p,p+n.length)==n?{open:{pos:r+d+t.length,margin:/\s/.test(l.charAt(d+t.length))?1:0},close:{pos:o-m-n.length,margin:/\s/.test(i.charAt(p-1))?1:0}}:null}(t,r[n],e.from,e.to));if(2!=e&&!o.every(e=>e))return{changes:t.changes(n.map((e,t)=>o[t]?[]:[{from:e.from,insert:r[t].open+" "},{from:e.to,insert:" "+r[t].close}]))};if(1!=e&&o.some(e=>e)){let e=[];for(let t,n=0;n<o.length;n++)if(t=o[n]){let o=r[n],{open:l,close:i}=t;e.push({from:l.pos-o.open.length,to:l.pos+l.margin},{from:i.pos-i.margin,to:i.pos+o.close.length})}return{changes:e}}return null}function m(e,t,n=t.selection.ranges){let r=[],o=-1;for(let{from:e,to:l}of n){let n=r.length,i=1e9,s=u(t,e).line;if(s){for(let n=e;n<=l;){let a=t.doc.lineAt(n);if(a.from>o&&(e==l||l>a.from)){o=a.from;let e=/^\s*/.exec(a.text)[0].length,t=e==a.length,n=a.text.slice(e,e+s.length)==s?e:-1;e<a.text.length&&e<i&&(i=e),r.push({line:a,comment:n,token:s,indent:e,empty:t,single:!1})}n=a.to+1}if(i<1e9)for(let e=n;e<r.length;e++)r[e].indent<r[e].line.text.length&&(r[e].indent=i);r.length==n+1&&(r[n].single=!0)}}if(2!=e&&r.some(e=>e.comment<0&&(!e.empty||e.single))){let e=[];for(let{line:t,token:n,indent:o,empty:l,single:i}of r)!i&&l||e.push({from:t.from+o,insert:n+" "});let n=t.changes(e);return{changes:n,selection:t.selection.map(n,1)}}if(1!=e&&r.some(e=>e.comment>=0)){let e=[];for(let{line:t,comment:n,token:o}of r)if(n>=0){let r=t.from+n,l=r+o.length;" "==t.text[l-t.from]&&l++,e.push({from:r,to:l})}return{changes:e}}return null}const p=r.Annotation.define(),g=r.Annotation.define(),y=r.Facet.define(),k=r.Facet.define({combine:e=>(0,r.combineConfig)(e,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,r)=>e(n,r)||t(n,r)})}),A=r.StateField.define({create:()=>J.empty,update(e,t){let n=t.state.facet(k),o=t.annotation(p);if(o){let r=C.fromTransaction(t,o.selection),l=o.side,i=0==l?e.undone:e.done;return i=r?B(i,i.length,n.minDepth,r):T(i,t.startState.selection),new J(0==l?o.rest:i,0==l?i:o.rest)}let l=t.annotation(g);if("full"!=l&&"before"!=l||(e=e.isolate()),!1===t.annotation(r.Transaction.addToHistory))return t.changes.empty?e:e.addMapping(t.changes.desc);let i=C.fromTransaction(t),s=t.annotation(r.Transaction.time),a=t.annotation(r.Transaction.userEvent);return i?e=e.addChanges(i,s,a,n,t):t.selection&&(e=e.addSelection(t.startState.selection,s,a,n.newGroupDelay)),"full"!=l&&"after"!=l||(e=e.isolate()),e},toJSON:e=>({done:e.done.map(e=>e.toJSON()),undone:e.undone.map(e=>e.toJSON())}),fromJSON:e=>new J(e.done.map(C.fromJSON),e.undone.map(C.fromJSON))});function v(e={}){return[A,k.of(e),o.EditorView.domEventHandlers({beforeinput(e,t){let n="historyUndo"==e.inputType?w:"historyRedo"==e.inputType?E:null;return!!n&&(e.preventDefault(),n(t))}})]}function S(e,t){return function({state:n,dispatch:r}){if(!t&&n.readOnly)return!1;let o=n.field(A,!1);if(!o)return!1;let l=o.pop(e,n,t);return!!l&&(r(l),!0)}}const w=S(0,!1),E=S(1,!1),D=S(0,!0),x=S(1,!0);class C{constructor(e,t,n,r,o){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=r,this.selectionsAfter=o}setSelAfter(e){return new C(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,n;return{changes:null===(e=this.changes)||void 0===e?void 0:e.toJSON(),mapped:null===(t=this.mapped)||void 0===t?void 0:t.toJSON(),startSelection:null===(n=this.startSelection)||void 0===n?void 0:n.toJSON(),selectionsAfter:this.selectionsAfter.map(e=>e.toJSON())}}static fromJSON(e){return new C(e.changes&&r.ChangeSet.fromJSON(e.changes),[],e.mapped&&r.ChangeDesc.fromJSON(e.mapped),e.startSelection&&r.EditorSelection.fromJSON(e.startSelection),e.selectionsAfter.map(r.EditorSelection.fromJSON))}static fromTransaction(e,t){let n=b;for(let t of e.startState.facet(y)){let r=t(e);r.length&&(n=n.concat(r))}return!n.length&&e.changes.empty?null:new C(e.changes.invert(e.startState.doc),n,void 0,t||e.startState.selection,b)}static selection(e){return new C(void 0,b,void 0,void 0,e)}}function B(e,t,n,r){let o=t+1>n+20?t-n-1:0,l=e.slice(o,t);return l.push(r),l}function M(e,t){return e.length?t.length?e.concat(t):e:t}const b=[],O=200;function T(e,t){if(e.length){let n=e[e.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-O));return r.length&&r[r.length-1].eq(t)?e:(r.push(t),B(e,e.length-1,1e9,n.setSelAfter(r)))}return[C.selection([t])]}function I(e){let t=e[e.length-1],n=e.slice();return n[e.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),n}function V(e,t){if(!e.length)return e;let n=e.length,r=b;for(;n;){let o=N(e[n-1],t,r);if(o.changes&&!o.changes.empty||o.effects.length){let t=e.slice(0,n);return t[n-1]=o,t}t=o.mapped,n--,r=o.selectionsAfter}return r.length?[C.selection(r)]:b}function N(e,t,n){let o=M(e.selectionsAfter.length?e.selectionsAfter.map(e=>e.map(t)):b,n);if(!e.changes)return C.selection(o);let l=e.changes.map(t),i=t.mapDesc(e.changes,!0),s=e.mapped?e.mapped.composeDesc(i):i;return new C(l,r.StateEffect.mapEffects(e.effects,t),s,e.startSelection.map(i),o)}const R=/^(input\.type|delete)($|\.)/;class J{constructor(e,t,n=0,r=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=r}isolate(){return this.prevTime?new J(this.done,this.undone):this}addChanges(e,t,n,o,l){let i=this.done,s=i[i.length-1];return i=s&&s.changes&&!s.changes.empty&&e.changes&&(!n||R.test(n))&&(!s.selectionsAfter.length&&t-this.prevTime<o.newGroupDelay&&o.joinToEvent(l,function(e,t){let n=[],r=!1;return e.iterChangedRanges((e,t)=>n.push(e,t)),t.iterChangedRanges((e,t,o,l)=>{for(let e=0;e<n.length;){let t=n[e++],i=n[e++];l>=t&&o<=i&&(r=!0)}}),r}(s.changes,e.changes))||"input.type.compose"==n)?B(i,i.length-1,o.minDepth,new C(e.changes.compose(s.changes),M(r.StateEffect.mapEffects(e.effects,s.changes),s.effects),s.mapped,s.startSelection,b)):B(i,i.length,o.minDepth,e),new J(i,b,t,n)}addSelection(e,t,n,r){let o=this.done.length?this.done[this.done.length-1].selectionsAfter:b;return o.length>0&&t-this.prevTime<r&&n==this.prevUserEvent&&n&&/^select($|\.)/.test(n)&&(l=o[o.length-1],i=e,l.ranges.length==i.ranges.length&&0===l.ranges.filter((e,t)=>e.empty!=i.ranges[t].empty).length)?this:new J(T(this.done,e),this.undone,t,n);var l,i}addMapping(e){return new J(V(this.done,e),V(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,t,n){let r=0==e?this.done:this.undone;if(0==r.length)return null;let o=r[r.length-1],l=o.selectionsAfter[0]||t.selection;if(n&&o.selectionsAfter.length)return t.update({selection:o.selectionsAfter[o.selectionsAfter.length-1],annotations:p.of({side:e,rest:I(r),selection:l}),userEvent:0==e?"select.undo":"select.redo",scrollIntoView:!0});if(o.changes){let n=1==r.length?b:r.slice(0,r.length-1);return o.mapped&&(n=V(n,o.mapped)),t.update({changes:o.changes,selection:o.startSelection,effects:o.effects,annotations:p.of({side:e,rest:n,selection:l}),filter:!1,userEvent:0==e?"undo":"redo",scrollIntoView:!0})}return null}}J.empty=new J(b,b);const L=[{key:"Mod-z",run:w,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:E,preventDefault:!0},{linux:"Ctrl-Shift-z",run:E,preventDefault:!0},{key:"Mod-u",run:D,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:x,preventDefault:!0}];function U(e,t){return r.EditorSelection.create(e.ranges.map(t),e.mainIndex)}function H(e,t){return e.update({selection:t,scrollIntoView:!0,userEvent:"select"})}function P({state:e,dispatch:t},n){let r=U(e.selection,n);return!r.eq(e.selection,!0)&&(t(H(e,r)),!0)}function z(e,t){return r.EditorSelection.cursor(t?e.to:e.from)}function G(e,t){return P(e,n=>n.empty?e.moveByChar(n,t):z(n,t))}function q(e){return e.textDirectionAt(e.state.selection.main.head)==o.Direction.LTR}const _=e=>G(e,!q(e)),j=e=>G(e,q(e));function F(e,t){return P(e,n=>n.empty?e.moveByGroup(n,t):z(n,t))}function $(e,t,n){if(t.type.prop(n))return!0;let r=t.to-t.from;return r&&(r>2||/[^\s,.;:]/.test(e.sliceDoc(t.from,t.to)))||t.firstChild}function W(e,t,n){let o,s,a=(0,l.syntaxTree)(e).resolveInner(t.head),c=n?i.NodeProp.closedBy:i.NodeProp.openedBy;for(let r=t.head;;){let t=n?a.childAfter(r):a.childBefore(r);if(!t)break;$(e,t,c)?a=t:r=n?t.to:t.from}return s=a.type.prop(c)&&(o=n?(0,l.matchBrackets)(e,a.from,1):(0,l.matchBrackets)(e,a.to,-1))&&o.matched?n?o.end.to:o.end.from:n?a.to:a.from,r.EditorSelection.cursor(s,n?-1:1)}function K(e,t){return P(e,n=>{if(!n.empty)return z(n,t);let r=e.moveVertically(n,t);return r.head!=n.head?r:e.moveToLineBoundary(n,t)})}"undefined"!=typeof Intl&&Intl.Segmenter;const Q=e=>K(e,!1),X=e=>K(e,!0);function Y(e){let t,n=e.scrollDOM.clientHeight<e.scrollDOM.scrollHeight-2,r=0,l=0;if(n){for(let t of e.state.facet(o.EditorView.scrollMargins)){let n=t(e);(null==n?void 0:n.top)&&(r=Math.max(null==n?void 0:n.top,r)),(null==n?void 0:n.bottom)&&(l=Math.max(null==n?void 0:n.bottom,l))}t=e.scrollDOM.clientHeight-r-l}else t=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:r,marginBottom:l,selfScroll:n,height:Math.max(e.defaultLineHeight,t-5)}}function Z(e,t){let n,r=Y(e),{state:l}=e,i=U(l.selection,n=>n.empty?e.moveVertically(n,t,r.height):z(n,t));if(i.eq(l.selection))return!1;if(r.selfScroll){let t=e.coordsAtPos(l.selection.main.head),s=e.scrollDOM.getBoundingClientRect(),a=s.top+r.marginTop,c=s.bottom-r.marginBottom;t&&t.top>a&&t.bottom<c&&(n=o.EditorView.scrollIntoView(i.main.head,{y:"start",yMargin:t.top-a}))}return e.dispatch(H(l,i),{effects:n}),!0}const ee=e=>Z(e,!1),te=e=>Z(e,!0);function ne(e,t,n){let o=e.lineBlockAt(t.head),l=e.moveToLineBoundary(t,n);if(l.head==t.head&&l.head!=(n?o.to:o.from)&&(l=e.moveToLineBoundary(t,n,!1)),!n&&l.head==o.from&&o.length){let n=/^\s*/.exec(e.state.sliceDoc(o.from,Math.min(o.from+100,o.to)))[0].length;n&&t.head!=o.from+n&&(l=r.EditorSelection.cursor(o.from+n))}return l}function re(e,t){let n=U(e.state.selection,e=>{let n=t(e);return r.EditorSelection.range(e.anchor,n.head,n.goalColumn,n.bidiLevel||void 0)});return!n.eq(e.state.selection)&&(e.dispatch(H(e.state,n)),!0)}function oe(e,t){return re(e,n=>e.moveByChar(n,t))}const le=e=>oe(e,!q(e)),ie=e=>oe(e,q(e));function se(e,t){return re(e,n=>e.moveByGroup(n,t))}function ae(e,t){return re(e,n=>e.moveVertically(n,t))}const ce=e=>ae(e,!1),fe=e=>ae(e,!0);function ue(e,t){return re(e,n=>e.moveVertically(n,t,Y(e).height))}const he=e=>ue(e,!1),de=e=>ue(e,!0),me=({state:e,dispatch:t})=>(t(H(e,{anchor:0})),!0),pe=({state:e,dispatch:t})=>(t(H(e,{anchor:e.doc.length})),!0),ge=({state:e,dispatch:t})=>(t(H(e,{anchor:e.selection.main.anchor,head:0})),!0),ye=({state:e,dispatch:t})=>(t(H(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0);function ke(e,t){if(e.state.readOnly)return!1;let n="delete.selection",{state:l}=e,i=l.changeByRange(o=>{let{from:l,to:i}=o;if(l==i){let r=t(o);r<l?(n="delete.backward",r=Ae(e,r,!1)):r>l&&(n="delete.forward",r=Ae(e,r,!0)),l=Math.min(l,r),i=Math.max(i,r)}else l=Ae(e,l,!1),i=Ae(e,i,!0);return l==i?{range:o}:{changes:{from:l,to:i},range:r.EditorSelection.cursor(l,l<o.head?-1:1)}});return!i.changes.empty&&(e.dispatch(l.update(i,{scrollIntoView:!0,userEvent:n,effects:"delete.selection"==n?o.EditorView.announce.of(l.phrase("Selection deleted")):void 0})),!0)}function Ae(e,t,n){if(e instanceof o.EditorView)for(let r of e.state.facet(o.EditorView.atomicRanges).map(t=>t(e)))r.between(t,t,(e,r)=>{e<t&&r>t&&(t=n?r:e)});return t}const ve=(e,t,n)=>ke(e,o=>{let i,s,a=o.from,{state:c}=e,f=c.doc.lineAt(a);if(n&&!t&&a>f.from&&a<f.from+200&&!/[^ \t]/.test(i=f.text.slice(0,a-f.from))){if("\t"==i[i.length-1])return a-1;let e=(0,r.countColumn)(i,c.tabSize)%(0,l.getIndentUnit)(c)||(0,l.getIndentUnit)(c);for(let t=0;t<e&&" "==i[i.length-1-t];t++)a--;s=a}else s=(0,r.findClusterBreak)(f.text,a-f.from,t,t)+f.from,s==a&&f.number!=(t?c.doc.lines:1)?s+=t?1:-1:!t&&/[\ufe00-\ufe0f]/.test(f.text.slice(s-f.from,a-f.from))&&(s=(0,r.findClusterBreak)(f.text,s-f.from,!1,!1)+f.from);return s}),Se=e=>ve(e,!1,!0),we=e=>ve(e,!0,!1),Ee=(e,t)=>ke(e,n=>{let o=n.head,{state:l}=e,i=l.doc.lineAt(o),s=l.charCategorizer(o);for(let e=null;;){if(o==(t?i.to:i.from)){o==n.head&&i.number!=(t?l.doc.lines:1)&&(o+=t?1:-1);break}let a=(0,r.findClusterBreak)(i.text,o-i.from,t)+i.from,c=i.text.slice(Math.min(o,a)-i.from,Math.max(o,a)-i.from),f=s(c);if(null!=e&&f!=e)break;" "==c&&o==n.head||(e=f),o=a}return o}),De=e=>Ee(e,!1);function xe(e){let t=[],n=-1;for(let r of e.selection.ranges){let o=e.doc.lineAt(r.from),l=e.doc.lineAt(r.to);if(r.empty||r.to!=l.from||(l=e.doc.lineAt(r.to-1)),n>=o.number){let e=t[t.length-1];e.to=l.to,e.ranges.push(r)}else t.push({from:o.from,to:l.to,ranges:[r]});n=l.number+1}return t}function Ce(e,t,n){if(e.readOnly)return!1;let o=[],l=[];for(let t of xe(e)){if(n?t.to==e.doc.length:0==t.from)continue;let i=e.doc.lineAt(n?t.to+1:t.from-1),s=i.length+1;if(n){o.push({from:t.to,to:i.to},{from:t.from,insert:i.text+e.lineBreak});for(let n of t.ranges)l.push(r.EditorSelection.range(Math.min(e.doc.length,n.anchor+s),Math.min(e.doc.length,n.head+s)))}else{o.push({from:i.from,to:t.from},{from:t.to,insert:e.lineBreak+i.text});for(let e of t.ranges)l.push(r.EditorSelection.range(e.anchor-s,e.head-s))}}return!!o.length&&(t(e.update({changes:o,scrollIntoView:!0,selection:r.EditorSelection.create(l,e.selection.mainIndex),userEvent:"move.line"})),!0)}function Be(e,t,n){if(e.readOnly)return!1;let r=[];for(let t of xe(e))n?r.push({from:t.from,insert:e.doc.slice(t.from,t.to)+e.lineBreak}):r.push({from:t.to,insert:e.lineBreak+e.doc.slice(t.from,t.to)});return t(e.update({changes:r,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const Me=be(!1);function be(e){return({state:t,dispatch:n})=>{if(t.readOnly)return!1;let o=t.changeByRange(n=>{let{from:o,to:s}=n,a=t.doc.lineAt(o),c=!e&&o==s&&function(e,t){if(/\(\)|\[\]|\{\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};let n,r=(0,l.syntaxTree)(e).resolveInner(t),o=r.childBefore(t),s=r.childAfter(t);return o&&s&&o.to<=t&&s.from>=t&&(n=o.type.prop(i.NodeProp.closedBy))&&n.indexOf(s.name)>-1&&e.doc.lineAt(o.to).from==e.doc.lineAt(s.from).from&&!/\S/.test(e.sliceDoc(o.to,s.from))?{from:o.to,to:s.from}:null}(t,o);e&&(o=s=(s<=a.to?a:t.doc.lineAt(s)).to);let f=new l.IndentContext(t,{simulateBreak:o,simulateDoubleBreak:!!c}),u=(0,l.getIndentation)(f,o);for(null==u&&(u=(0,r.countColumn)(/^\s*/.exec(t.doc.lineAt(o).text)[0],t.tabSize));s<a.to&&/\s/.test(a.text[s-a.from]);)s++;c?({from:o,to:s}=c):o>a.from&&o<a.from+100&&!/\S/.test(a.text.slice(0,o))&&(o=a.from);let h=["",(0,l.indentString)(t,u)];return c&&h.push((0,l.indentString)(t,f.lineIndent(a.from,-1))),{changes:{from:o,to:s,insert:r.Text.of(h)},range:r.EditorSelection.cursor(o+1+h[1].length)}});return n(t.update(o,{scrollIntoView:!0,userEvent:"input"})),!0}}function Oe(e,t){let n=-1;return e.changeByRange(o=>{let l=[];for(let r=o.from;r<=o.to;){let i=e.doc.lineAt(r);i.number>n&&(o.empty||o.to>i.from)&&(t(i,l,o),n=i.number),r=i.to+1}let i=e.changes(l);return{changes:l,range:r.EditorSelection.range(i.mapPos(o.anchor,1),i.mapPos(o.head,1))}})}const Te=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:e=>P(e,t=>W(e.state,t,!q(e))),shift:e=>re(e,t=>W(e.state,t,!q(e)))},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:e=>P(e,t=>W(e.state,t,q(e))),shift:e=>re(e,t=>W(e.state,t,q(e)))},{key:"Alt-ArrowUp",run:({state:e,dispatch:t})=>Ce(e,t,!1)},{key:"Shift-Alt-ArrowUp",run:({state:e,dispatch:t})=>Be(e,t,!1)},{key:"Alt-ArrowDown",run:({state:e,dispatch:t})=>Ce(e,t,!0)},{key:"Shift-Alt-ArrowDown",run:({state:e,dispatch:t})=>Be(e,t,!0)},{key:"Escape",run:({state:e,dispatch:t})=>{let n=e.selection,o=null;return n.ranges.length>1?o=r.EditorSelection.create([n.main]):n.main.empty||(o=r.EditorSelection.create([r.EditorSelection.cursor(n.main.head)])),!!o&&(t(H(e,o)),!0)}},{key:"Mod-Enter",run:be(!0)},{key:"Alt-l",mac:"Ctrl-l",run:({state:e,dispatch:t})=>{let n=xe(e).map(({from:t,to:n})=>r.EditorSelection.range(t,Math.min(n+1,e.doc.length)));return t(e.update({selection:r.EditorSelection.create(n),userEvent:"select"})),!0}},{key:"Mod-i",run:({state:e,dispatch:t})=>{let n=U(e.selection,t=>{let n=(0,l.syntaxTree)(e),o=n.resolveStack(t.from,1);if(t.empty){let e=n.resolveStack(t.from,-1);e.node.from>=o.node.from&&e.node.to<=o.node.to&&(o=e)}for(let e=o;e;e=e.next){let{node:n}=e;if((n.from<t.from&&n.to>=t.to||n.to>t.to&&n.from<=t.from)&&e.next)return r.EditorSelection.range(n.to,n.from)}return t});return!n.eq(e.selection)&&(t(H(e,n)),!0)},preventDefault:!0},{key:"Mod-[",run:({state:e,dispatch:t})=>!e.readOnly&&(t(e.update(Oe(e,(t,n)=>{let o=/^\s*/.exec(t.text)[0];if(!o)return;let i=(0,r.countColumn)(o,e.tabSize),s=0,a=(0,l.indentString)(e,Math.max(0,i-(0,l.getIndentUnit)(e)));for(;s<o.length&&s<a.length&&o.charCodeAt(s)==a.charCodeAt(s);)s++;n.push({from:t.from+s,to:t.from+o.length,insert:a.slice(s)})}),{userEvent:"delete.dedent"})),!0)},{key:"Mod-]",run:({state:e,dispatch:t})=>!e.readOnly&&(t(e.update(Oe(e,(t,n)=>{n.push({from:t.from,insert:e.facet(l.indentUnit)})}),{userEvent:"input.indent"})),!0)},{key:"Mod-Alt-\\",run:({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=Object.create(null),r=new l.IndentContext(e,{overrideIndentation:e=>{let t=n[e];return null==t?-1:t}}),o=Oe(e,(t,o,i)=>{let s=(0,l.getIndentation)(r,t.from);if(null==s)return;/\S/.test(t.text)||(s=0);let a=/^\s*/.exec(t.text)[0],c=(0,l.indentString)(e,s);(a!=c||i.from<t.from+a.length)&&(n[t.from]=s,o.push({from:t.from,to:t.from+a.length,insert:c}))});return o.changes.empty||t(e.update(o,{userEvent:"indent"})),!0}},{key:"Shift-Mod-k",run:e=>{if(e.state.readOnly)return!1;let{state:t}=e,n=t.changes(xe(t).map(({from:e,to:n})=>(e>0?e--:n<t.doc.length&&n++,{from:e,to:n}))),r=U(t.selection,t=>{let n;if(e.lineWrapping){let r=e.lineBlockAt(t.head),o=e.coordsAtPos(t.head,t.assoc||1);o&&(n=r.bottom+e.documentTop-o.bottom+e.defaultLineHeight/2)}return e.moveVertically(t,!0,n)}).map(n);return e.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0}},{key:"Shift-Mod-\\",run:({state:e,dispatch:t})=>function(e,t,n){let o=!1,i=U(e.selection,t=>{let i=(0,l.matchBrackets)(e,t.head,-1)||(0,l.matchBrackets)(e,t.head,1)||t.head>0&&(0,l.matchBrackets)(e,t.head-1,1)||t.head<e.doc.length&&(0,l.matchBrackets)(e,t.head+1,-1);if(!i||!i.end)return t;o=!0;let s=i.start.from==t.head?i.end.to:i.end.from;return n?r.EditorSelection.range(t.anchor,s):r.EditorSelection.cursor(s)});return!!o&&(t(H(e,i)),!0)}(e,t,!1)},{key:"Mod-/",run:e=>{let{state:t}=e,n=t.doc.lineAt(t.selection.main.from),r=u(e.state,n.from);return r.line?a(e):!!r.block&&f(e)}},{key:"Alt-A",run:c},{key:"Ctrl-m",mac:"Shift-Alt-m",run:e=>(e.setTabFocusMode(),!0)}].concat([{key:"ArrowLeft",run:_,shift:le,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:e=>F(e,!q(e)),shift:e=>se(e,!q(e)),preventDefault:!0},{mac:"Cmd-ArrowLeft",run:e=>P(e,t=>ne(e,t,!q(e))),shift:e=>re(e,t=>ne(e,t,!q(e))),preventDefault:!0},{key:"ArrowRight",run:j,shift:ie,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:e=>F(e,q(e)),shift:e=>se(e,q(e)),preventDefault:!0},{mac:"Cmd-ArrowRight",run:e=>P(e,t=>ne(e,t,q(e))),shift:e=>re(e,t=>ne(e,t,q(e))),preventDefault:!0},{key:"ArrowUp",run:Q,shift:ce,preventDefault:!0},{mac:"Cmd-ArrowUp",run:me,shift:ge},{mac:"Ctrl-ArrowUp",run:ee,shift:he},{key:"ArrowDown",run:X,shift:fe,preventDefault:!0},{mac:"Cmd-ArrowDown",run:pe,shift:ye},{mac:"Ctrl-ArrowDown",run:te,shift:de},{key:"PageUp",run:ee,shift:he},{key:"PageDown",run:te,shift:de},{key:"Home",run:e=>P(e,t=>ne(e,t,!1)),shift:e=>re(e,t=>ne(e,t,!1)),preventDefault:!0},{key:"Mod-Home",run:me,shift:ge},{key:"End",run:e=>P(e,t=>ne(e,t,!0)),shift:e=>re(e,t=>ne(e,t,!0)),preventDefault:!0},{key:"Mod-End",run:pe,shift:ye},{key:"Enter",run:Me,shift:Me},{key:"Mod-a",run:({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:"select"})),!0)},{key:"Backspace",run:Se,shift:Se},{key:"Delete",run:we},{key:"Mod-Backspace",mac:"Alt-Backspace",run:De},{key:"Mod-Delete",mac:"Alt-Delete",run:e=>Ee(e,!0)},{mac:"Mod-Backspace",run:e=>ke(e,t=>{let n=e.moveToLineBoundary(t,!1).head;return t.head>n?n:Math.max(0,t.head-1)})},{mac:"Mod-Delete",run:e=>ke(e,t=>{let n=e.moveToLineBoundary(t,!0).head;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)})}].concat([{key:"Ctrl-b",run:_,shift:le,preventDefault:!0},{key:"Ctrl-f",run:j,shift:ie},{key:"Ctrl-p",run:Q,shift:ce},{key:"Ctrl-n",run:X,shift:fe},{key:"Ctrl-a",run:e=>P(e,t=>r.EditorSelection.cursor(e.lineBlockAt(t.head).from,1)),shift:e=>re(e,t=>r.EditorSelection.cursor(e.lineBlockAt(t.head).from))},{key:"Ctrl-e",run:e=>P(e,t=>r.EditorSelection.cursor(e.lineBlockAt(t.head).to,-1)),shift:e=>re(e,t=>r.EditorSelection.cursor(e.lineBlockAt(t.head).to))},{key:"Ctrl-d",run:we},{key:"Ctrl-h",run:Se},{key:"Ctrl-k",run:e=>ke(e,t=>{let n=e.lineBlockAt(t.head).to;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)})},{key:"Ctrl-Alt-h",run:De},{key:"Ctrl-o",run:({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:r.Text.of(["",""])},range:r.EditorSelection.cursor(e.from)}));return t(e.update(n,{scrollIntoView:!0,userEvent:"input"})),!0}},{key:"Ctrl-t",run:({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(t=>{if(!t.empty||0==t.from||t.from==e.doc.length)return{range:t};let n=t.from,o=e.doc.lineAt(n),l=n==o.from?n-1:(0,r.findClusterBreak)(o.text,n-o.from,!1)+o.from,i=n==o.to?n+1:(0,r.findClusterBreak)(o.text,n-o.from,!0)+o.from;return{changes:{from:l,to:i,insert:e.doc.slice(n,i).append(e.doc.slice(l,n))},range:r.EditorSelection.cursor(i)}});return!n.changes.empty&&(t(e.update(n,{scrollIntoView:!0,userEvent:"move.character"})),!0)}},{key:"Ctrl-v",run:te}].map(e=>({mac:e.key,run:e.run,shift:e.shift}))))}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunksage_agent_internal=self.webpackChunksage_agent_internal||[]).push([[363],{540:n=>{n.exports=function(n){var o=document.createElement("style");return n.setAttributes(o,n.attributes),n.insert(o,n.options),o}},844:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,".sage-ai-unified-diff-active.has-merge-chunks .jp-Toolbar {\n display: none !important;\n }\n\n.ͼ2.cm-merge-b .cm-changedText {\n background: none !important;\n}\n.code-mirror-empty-original-content .cm-deletedLine:first-of-type,\n.code-mirror-empty-original-content .cm-deletedChunk:first-of-type > .cm-deletedLine {\n display: none !important;\n}\n\n.cm-collapsedLines {\n background: transparent !important;\n}\n\n.cm-deletedChunk {\n background-color: #e5534b1a !important;\n}\n\n.cm-changedLine {\n background-color: #46954a26 !important;\n}",""]);const s=r},1113:n=>{n.exports=function(n,o){if(o.styleSheet)o.styleSheet.cssText=n;else{for(;o.firstChild;)o.removeChild(o.firstChild);o.appendChild(document.createTextNode(n))}}},1346:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* Styles for cell edit mode overlay */\n.sage-ai-diff-edit-mode-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.05);\n z-index: 10;\n cursor: not-allowed;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sage-ai-diff-edit-mode-banner {\n position: absolute;\n top: 0;\n left: 20px;\n background-color: #fc5151;\n color: white;\n padding: 4px 8px;\n font-size: 12px;\n font-weight: bold;\n border-radius: 0 0 0 4px;\n z-index: 11;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n display: none !important;\n}\n\n.sage-ai-diff-edit-mode-instructions {\n position: absolute;\n top: 10px;\n left: 50%;\n transform: translateX(-50%);\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-font-color1);\n padding: 6px 12px;\n font-size: 11px;\n border-radius: 4px;\n z-index: 11;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n text-align: center;\n max-width: 80%;\n}\n\n/* Make sure the cell has relative positioning for absolute positioning to work */\n.jp-Cell.jp-mod-selected.sage-ai-diff-edit-mode {\n position: relative;\n}\n\n/* Make the diff content more readable */\n.diff-view {\n padding: 10px;\n border-radius: 4px;\n background-color: var(--jp-layout-color0);\n}\n",""]);const s=r},1601:n=>{n.exports=function(n){return n[1]}},2331:(n,o,e)=>{e.d(o,{A:()=>g});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i),s=e(4417),l=e.n(s),p=new URL(e(5655),e.b),d=r()(t()),c=l()(p);d.push([n.id,`/* Snippet Creation Widget Styles */\n.sage-ai-snippet-creation-widget {\n min-width: 280px !important;\n font-family: var(--jp-ui-font-family);\n font-size: var(--jp-ui-font-size1);\n color: var(--jp-ui-font-color1);\n background: var(--jp-layout-color1);\n height: 100%;\n width: 100% !important;\n display: flex;\n flex-direction: column;\n}\n\n/* Hide widget when menu is closed */\n.sage-ai-snippet-creation-widget.hidden {\n display: none !important;\n}\n\n.sage-ai-snippet-creation-panel {\n width: 100% !important;\n padding: 16px;\n height: 100%;\n background: var(--jp-layout-color0);\n display: flex;\n flex-direction: column;\n}\n\n/* Header Styles */\n.sage-ai-snippet-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n\n /* padding-bottom: 8px; */\n}\n\n.sage-ai-snippet-header-div {\n border-bottom: 1px solid var(--jp-border-color2);\n padding-bottom: 12px;\n margin-bottom: 12px;\n}\n\n.sage-ai-snippet-panel-header h3 {\n margin: 0;\n font-size: var(--jp-ui-font-size2);\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-snippet-create-btn {\n background: var(--jp-brand-color1);\n color: white;\n border: none;\n border-radius: 4px;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: background-color 0.2s;\n}\n\n.sage-ai-snippet-create-btn:hover {\n background: var(--jp-brand-color0);\n}\n\n/* Form Styles */\n.sage-ai-snippet-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.sage-ai-snippet-form-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.sage-ai-snippet-form-group label {\n font-weight: 500;\n color: var(--jp-ui-font-color1);\n font-size: var(--jp-ui-font-size0);\n}\n\n.sage-ai-snippet-form-group input,\n.sage-ai-snippet-form-group textarea {\n border: 1px solid var(--jp-border-color2);\n border-radius: 4px;\n padding: 8px;\n font-family: var(--jp-ui-font-family);\n font-size: var(--jp-ui-font-size1);\n background: var(--jp-layout-color1);\n color: var(--jp-ui-font-color0);\n transition: border-color 0.2s;\n}\n\n.sage-ai-snippet-form-group input:focus,\n.sage-ai-snippet-form-group textarea:focus {\n outline: none;\n border-color: var(--jp-brand-color1);\n}\n\n.sage-ai-snippet-form-group textarea {\n resize: vertical;\n min-height: 120px;\n font-family: var(--jp-code-font-family);\n}\n\n.sage-ai-snippet-form-actions {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n margin-top: 8px;\n}\n\n.sage-ai-snippet-save-btn,\n.sage-ai-snippet-cancel-btn {\n padding: 8px 16px;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: var(--jp-ui-font-size1);\n transition: background-color 0.2s;\n}\n\n.sage-ai-snippet-save-btn {\n background: var(--jp-brand-color1);\n color: white;\n}\n\n.sage-ai-snippet-save-btn:hover:not(:disabled) {\n background: var(--jp-brand-color0);\n}\n\n.sage-ai-snippet-save-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.sage-ai-snippet-cancel-btn {\n background: var(--jp-layout-color2);\n color: var(--jp-ui-font-color1);\n border: 1px solid var(--jp-border-color2);\n}\n\n.sage-ai-snippet-cancel-btn:hover {\n background: var(--jp-layout-color3);\n}\n\n/* Viewer Styles */\n.sage-ai-snippet-viewer {\n display: flex;\n flex-direction: column;\n gap: 12px;\n flex: 1; /* Expand to fill available space */\n height: 100%; /* Take full height of parent */\n min-height: 0; /* Allow proper flex shrinking */\n}\n\n.sage-ai-snippet-viewer-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-bottom: 1px solid var(--jp-border-color2);\n padding-bottom: 8px;\n}\n\n.sage-ai-snippet-viewer-header h4 {\n margin: 0;\n font-size: var(--jp-ui-font-size2);\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-snippet-close-btn {\n background: none;\n border: none;\n font-size: 18px;\n cursor: pointer;\n color: var(--jp-ui-font-color2);\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n}\n\n.sage-ai-snippet-close-btn:hover {\n background: var(--jp-layout-color2);\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-snippet-viewer-description {\n color: var(--jp-ui-font-color2);\n font-style: italic;\n line-height: 1.4;\n}\n\n.sage-ai-snippet-viewer-content {\n background: var(--jp-layout-color2);\n border: 1px solid var(--jp-border-color2);\n border-radius: 4px;\n padding: 12px;\n max-height: 300px;\n overflow-y: auto;\n}\n\n.sage-ai-snippet-viewer-content pre {\n margin: 0;\n font-family: var(--jp-code-font-family);\n font-size: var(--jp-code-font-size);\n color: var(--jp-content-font-color0);\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n\n.sage-ai-snippet-viewer-actions {\n display: flex;\n gap: 8px;\n justify-content: flex-start;\n flex-wrap: wrap;\n position: relative;\n}\n\n/* Full action buttons for wider screens */\n.sage-ai-snippet-actions-full {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n/* Compact dropdown for smaller screens */\n.sage-ai-snippet-actions-compact {\n position: relative;\n display: none; /* Hidden by default */\n}\n\n/* Media query for responsive behavior */\n@media (width <= 400px) {\n .sage-ai-snippet-actions-full {\n display: none;\n }\n\n .sage-ai-snippet-actions-compact {\n display: block;\n }\n}\n\n/* Dropdown button styling */\n.sage-ai-snippet-actions-dropdown-btn {\n background: var(--jp-layout-color2);\n border: 1px solid var(--jp-border-color2);\n border-radius: 4px;\n padding: 6px 12px;\n cursor: pointer;\n font-size: 16px;\n color: var(--jp-ui-font-color1);\n transition: background-color 0.2s;\n}\n\n.sage-ai-snippet-actions-dropdown-btn:hover {\n background: var(--jp-layout-color3);\n}\n\n/* Dropdown menu */\n.sage-ai-snippet-actions-dropdown {\n position: absolute;\n top: 100%;\n right: 0;\n background: var(--jp-layout-color1);\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n box-shadow: 0 2px 8px rgb(0 0 0 / 15%);\n z-index: 1000;\n min-width: 120px;\n margin-top: 4px;\n}\n\n/* Dropdown items */\n.sage-ai-snippet-dropdown-item {\n display: block;\n width: 100%;\n padding: 8px 12px;\n background: none;\n border: none;\n text-align: left;\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n color: var(--jp-ui-font-color1);\n transition: background-color 0.2s;\n}\n\n.sage-ai-snippet-dropdown-item:hover {\n background: var(--jp-layout-color2);\n}\n\n.sage-ai-snippet-dropdown-item:first-child {\n border-radius: 4px 4px 0 0;\n}\n\n.sage-ai-snippet-dropdown-item:last-child {\n border-radius: 0 0 4px 4px;\n}\n\n/* Dark theme support for dropdown */\n[data-jp-theme-light='false'] .sage-ai-snippet-actions-dropdown {\n background: var(--jp-layout-color0);\n border-color: var(--jp-border-color0);\n box-shadow: 0 2px 8px rgb(0 0 0 / 40%);\n}\n\n[data-jp-theme-light='false'] .sage-ai-snippet-actions-dropdown-btn {\n background: var(--jp-layout-color1);\n border-color: var(--jp-border-color1);\n}\n\n[data-jp-theme-light='false'] .sage-ai-snippet-actions-dropdown-btn:hover {\n background: var(--jp-layout-color2);\n}\n\n.sage-ai-snippet-enable-btn,\n.sage-ai-snippet-edit-btn {\n padding: 2px;\n border: none;\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n transition: background-color 0.2s;\n}\n\n.sage-ai-snippet-enable-btn {\n background: var(--jp-success-color1);\n color: white;\n}\n\n.sage-ai-snippet-enable-btn:hover {\n background: var(--jp-success-color0);\n}\n\n.sage-ai-snippet-edit-btn {\n background: none !important;\n color: white;\n}\n\n/* List Styles */\n.sage-ai-snippet-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n flex: 1;\n min-height: 0; /* Important for flex shrinking */\n}\n\n.sage-ai-snippet-list-container {\n flex: 1;\n overflow-y: auto;\n min-height: 0; /* Important for flex shrinking */\n}\n\n.sage-ai-snippet-empty {\n text-align: center;\n color: var(--jp-ui-font-color2);\n padding: 32px 16px;\n}\n\n.sage-ai-snippet-empty p {\n margin: 8px 0;\n}\n\n.sage-ai-snippet-items {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding-bottom: 8px; /* Add some padding at the bottom */\n}\n\n.sage-ai-snippet-item-container {\n display: flex;\n flex-direction: column;\n}\n\n.sage-ai-snippet-item {\n /* border: 1px solid var(--jp-border-color2); */\n border-radius: 6px;\n padding: 6px;\n cursor: pointer;\n transition: all 0.2s;\n\n /* background: var(--jp-layout-color1); */\n}\n\n.sage-ai-snippet-item:hover {\n background: var(--jp-layout-color2);\n border-color: var(--jp-brand-color1);\n}\n\n[data-jp-theme-light='false'] .sage-ai-snippet-item:hover {\n background: rgb(56 56 56 / 30%) !important;\n}\n\n.sage-ai-snippet-item.selected {\n border-color: var(--jp-brand-color1);\n background: var(--jp-layout-color2);\n}\n\n.sage-ai-snippet-item-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 13px;\n font-style: normal;\n font-weight: 500;\n line-height: 155%;\n}\n\n[data-jp-theme-light='false'] .sage-ai-snippet-item-header {\n color: #e7e7e7;\n}\n\n.sage-ai-snippet-title-container {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n}\n\n.sage-ai-snippet-item-header h5 {\n margin: 0;\n font-size: 13px;\n font-weight: 500 !important;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-snippet-checkmark {\n color: var(--jp-brand-color1);\n flex-shrink: 0;\n}\n\n.sage-ai-snippet-item-actions {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.sage-ai-snippet-menu-btn {\n background: none;\n border: none;\n font-size: 16px;\n cursor: pointer;\n color: var(--jp-ui-font-color2);\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 3px;\n opacity: 0;\n transition: all 0.2s;\n}\n\n.sage-ai-snippet-item:hover .sage-ai-snippet-menu-btn {\n opacity: 1;\n}\n\n.sage-ai-snippet-menu-btn:hover {\n background: var(--jp-layout-color3);\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-snippet-context-menu {\n position: absolute;\n top: 100%;\n right: 0;\n background: var(--jp-layout-color1);\n border: 1px solid var(--jp-border-color2);\n border-radius: 4px;\n box-shadow: 0 4px 12px rgb(0 0 0 / 15%);\n z-index: 1000;\n min-width: 120px;\n padding: 4px 0;\n}\n\n.sage-ai-snippet-menu-item {\n display: block;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n text-align: left;\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n color: var(--jp-ui-font-color0);\n transition: background-color 0.2s;\n}\n\n.sage-ai-snippet-menu-item:hover {\n background: var(--jp-layout-color2);\n}\n\n.sage-ai-snippet-menu-item.delete:hover {\n background: var(--jp-error-color1);\n color: white;\n}\n\n.sage-ai-snippet-delete-btn {\n background: none;\n border: none;\n font-size: 16px;\n cursor: pointer;\n color: var(--jp-ui-font-color2);\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 3px;\n opacity: 0;\n transition: all 0.2s;\n}\n\n.sage-ai-snippet-item:hover .sage-ai-snippet-delete-btn {\n opacity: 1;\n}\n\n.sage-ai-snippet-delete-btn:hover {\n background: var(--jp-error-color1);\n color: white;\n}\n\n.sage-ai-snippet-item-description {\n margin: 0 0 8px;\n color: var(--jp-ui-font-color2);\n font-size: var(--jp-ui-font-size0);\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.sage-ai-snippet-item-meta {\n font-size: var(--jp-ui-font-size00);\n color: var(--jp-ui-font-color3);\n}\n\n/* Inline Viewer Styles */\n.sage-ai-snippet-viewer-inline {\n margin-top: 16px;\n /*padding: 16px;*/\n background: var(--jp-layout-color0);\n border-top: 1px solid var(--jp-border-color1);\n flex-shrink: 0; /* Don't shrink the viewer */\n max-height: 40vh; /* Limit maximum height */\n display: flex;\n flex-direction: column;\n overflow: hidden; /* Remove scrolling from the entire viewer */\n}\n\n.sage-ai-snippet-description {\n color: var(--jp-ui-font-color3);\n font-size: 13px;\n font-style: normal;\n font-weight: 500;\n line-height: 155%; /* 20.15px */\n}\n\n/* First Row: Toolbar with Preview label and action buttons */\n.sage-ai-snippet-viewer-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 16px;\n padding-top: 16px;\n /*border-bottom: 1px solid var(--jp-border-color2);*/\n flex-shrink: 0; /* Don't shrink the toolbar */\n}\n\n.sage-ai-snippet-preview-label {\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n font-size: 13px;\n}\n\n.sage-ai-snippet-viewer-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sage-ai-snippet-edit-btn {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--jp-ui-font-color2);\n\n /* width: 28px; */\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.sage-ai-snippet-edit-btn:hover {\n background: var(--jp-layout-color2);\n color: var(--jp-brand-color1);\n}\n\n.sage-ai-snippet-close-btn {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--jp-ui-font-color2);\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.sage-ai-snippet-close-btn:hover {\n background: var(--jp-layout-color2);\n color: var(--jp-ui-font-color0);\n}\n\n/* Second Row: Title display */\n.sage-ai-snippet-viewer-title-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n flex-shrink: 0; /* Don't shrink the title row */\n}\n\n.sage-ai-snippet-title-label {\n font-weight: 600;\n color: var(--jp-ui-font-color1);\n font-size: 13px;\n}\n\n.sage-ai-snippet-title-text {\n color: var(--jp-ui-font-color0);\n font-size: 13px;\n flex: 1;\n}\n\n/* Third Row: Code block (simplified) */\n.sage-ai-snippet-code-block {\n margin: 0;\n border: 1px solid var(--jp-border-color2);\n border-radius: 6px;\n overflow: hidden;\n background: var(--jp-layout-color2);\n flex: 1; /* Take up remaining space */\n display: flex;\n flex-direction: column;\n min-height: 0; /* Allow flexbox to shrink */\n}\n\n.sage-ai-snippet-insert-btn {\n background: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n color: var(--jp-brand-color0);\n border-radius: 4px;\n gap: 8px;\n padding: 2px;\n border: none !important;\n cursor: pointer;\n transition: background-color 0.2s;\n text-align: center;\n font-size: 13px;\n font-style: normal;\n font-weight: 600;\n line-height: 155%; /* 20.15px */\n}\n\n.insert-icon-container {\n width: 20px;\n height: 20px;\n}\n\n.sage-ai-snippet-insert-btn:hover {\n background: none;\n}\n\n/* Remove state styling for insert button */\n.sage-ai-snippet-insert-btn.sage-ai-snippet-remove-state {\n color: var(--jp-error-color1) !important;\n background: none !important;\n}\n\n.sage-ai-snippet-insert-btn.sage-ai-snippet-remove-state\n .insert-icon-container {\n fill: var(--jp-error-color1) !important;\n transform: rotate(180deg);\n}\n\n.sage-ai-snippet-insert-btn.sage-ai-snippet-remove-state\n .insert-icon-container {\n div {\n svg {\n g {\n path {\n fill: var(--jp-error-color1) !important;\n }\n }\n }\n }\n}\n\n.sage-ai-snippet-insert-btn.sage-ai-snippet-remove-state:hover {\n background: var(--jp-error-color3);\n}\n\n.sage-ai-snippet-code-content {\n margin: 0;\n padding: 12px;\n font-family: var(--jp-code-font-family);\n font-size: var(--jp-code-font-size);\n color: var(--jp-content-font-color0);\n background: var(--jp-layout-color2);\n overflow: auto auto; /* Make only the content scrollable */\n white-space: pre;\n line-height: 1.4;\n flex: 1; /* Take up remaining space in the code block */\n min-height: 0; /* Allow flexbox to shrink */\n}\n\n.sage-ai-snippet-code-content code {\n background: none;\n padding: 0;\n font-family: inherit;\n font-size: inherit;\n color: inherit;\n}\n\n.sage-ai-snippet-viewer-meta {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n padding-top: 8px;\n border-top: 1px solid var(--jp-border-color2);\n font-size: var(--jp-ui-font-size00);\n color: var(--jp-ui-font-color3);\n flex-shrink: 0; /* Don't shrink the meta section */\n}\n\n/* Custom Icon Styles */\n.sage-ai-snippet-icon {\n background-image: url(${c});\n background-repeat: no-repeat;\n background-position: center;\n background-size: 16px 16px;\n}\n\n/* Dark theme adjustments */\n[data-jp-theme-light='false'] .sage-ai-snippet-creation-widget {\n color: var(--jp-ui-font-color1);\n}\n\n[data-jp-theme-light='false'] .sage-ai-snippet-viewer-content {\n background: var(--jp-layout-color0);\n}\n\n/* Dark mode styling for create button */\n[data-jp-theme-light='false'] .sage-ai-snippet-create-btn {\n border-radius: 8px;\n border: 0.5px solid var(--Border-Border, #383838);\n background: var(--Button-bg-default, #1a1a1a);\n color: white;\n}\n\n[data-jp-theme-light='false'] .sage-ai-snippet-create-btn:hover {\n background: var(--Button-bg-hover, #2a2a2a);\n border-color: var(--Border-Border-hover, #4a4a4a);\n}\n\n/* Make SVG icons white in dark mode */\n[data-jp-theme-light='true'] .sage-ai-snippet-create-btn svg {\n filter: invert(1);\n}\n\n/* Modal Styles */\n.sage-ai-custom-snippet-modal .modal-content {\n border-radius: 12px;\n border: 1px solid var(--Border-Border, #383838);\n background: var(--BG-main, #111);\n box-shadow: 0 8px 17.1px 0 rgb(208 208 208 / 9%);\n}\n\n/* Ensure modal header and body text are readable */\n.sage-ai-custom-snippet-modal .modal-header,\n.sage-ai-custom-snippet-modal .modal-body,\n.sage-ai-custom-snippet-modal .modal-footer {\n background: transparent;\n border-color: var(--Border-Border, #383838);\n color: var(--jp-ui-font-color0);\n}\n\n/* Style the close button to match the dark theme */\n.sage-ai-custom-snippet-modal .btn-close {\n filter: invert(1);\n}\n\n.sage-ai-snippet-form-modal {\n max-width: 600px;\n width: 90%;\n max-height: 80vh;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n.sage-ai-snippet-form-modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 20px;\n border-bottom: 1px solid var(--jp-border-color2);\n padding-bottom: 12px;\n}\n\n.sage-ai-snippet-form-modal-header .sage-ai-dialog-title {\n margin: 0;\n font-size: 1.2em;\n font-weight: 600;\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-snippet-form-modal .sage-ai-snippet-close-btn {\n background: none;\n border: none;\n font-size: 20px;\n cursor: pointer;\n color: var(--jp-ui-font-color2);\n padding: 4px 8px;\n border-radius: 4px;\n line-height: 1;\n}\n\n.sage-ai-snippet-form-modal .sage-ai-snippet-close-btn:hover {\n background: var(--jp-layout-color2);\n color: var(--jp-ui-font-color1);\n}\n\n/* Modal form inherits existing form styles */\n.sage-ai-snippet-form-modal .sage-ai-snippet-form {\n margin: 0;\n}\n\n.sage-ai-snippet-form-modal .sage-ai-snippet-form-group textarea {\n min-height: 200px;\n resize: vertical;\n}\n\n/* Modal overlay effect */\n.sage-ai-modal {\n backdrop-filter: blur(2px);\n}\n\n/* Responsive adjustments */\n@media (width <= 320px) {\n .sage-ai-snippet-creation-panel {\n padding: 12px;\n }\n\n .sage-ai-snippet-form-actions {\n flex-direction: column;\n }\n\n .sage-ai-snippet-viewer-actions {\n flex-direction: column;\n }\n\n .sage-ai-snippet-form-modal {\n width: 95%;\n max-height: 90vh;\n }\n}\n`,""]);const g=d},3114:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* Wrapper for fixed positioning with flexbox */\n.sage-ai-state-display-container {\n position: fixed !important;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n z-index: 1;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n}\n\n.sage-ai-llm-state-widget {\n order: 2;\n pointer-events: auto;\n margin: 0 17px;\n /* Remove transform since we're using flexbox layout */\n}\n\n.sage-ai-input-spacer {\n order: 3;\n flex-shrink: 0;\n}\n\n/* LLM State Display - positioned above the chat input */\n.sage-ai-llm-state-display {\n display: none; /* Hidden by default */\n align-items: center;\n justify-content: center;\n padding: 8px;\n padding-bottom: 18px;\n margin-bottom: 0;\n background-color: var(--jp-layout-color1);\n border-radius: 8px;\n font-size: 13px;\n color: var(--jp-ui-font-color1);\n box-shadow: 0 2px 4px rgb(0 0 0 / 5%);\n transition: all 0.2s ease-in-out;\n /*transform: translateY(-10px);*/\n border: 1px solid var(--jp-border-color2);\n position: relative;\n z-index: 0; /* Ensure it stays above other content */\n}\n\n.sage-ai-generating,\n.sage-ai-using-tool {\n justify-content: space-between !important;\n}\n\n.sage-ai-llm-state-content {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sage-ai-waiting-for-user {\n width: 12px;\n height: 12px;\n border-radius: 50%;\n background: transparent;\n border: 1px dashed #d3a500;\n}\n\n.sage-ai-llm-state-text {\n color: var(--jp-ui-font-color2);\n font-style: normal;\n font-weight: 500;\n font-size: var(--jp-ui-font-size1);\n}\n\n/* Ensure the blob loader works in this context */\n.sage-ai-llm-state-display .sage-ai-blob-loader {\n flex-shrink: 0;\n}\n\n/* Diff State Styles */\n.sage-ai-diff-state {\n display: flex !important;\n flex-direction: column;\n align-items: stretch !important;\n justify-content: flex-start !important;\n}\n\n.sage-ai-diff-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--jp-border-color2);\n}\n\n.sage-ai-diff-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-diff-icon {\n font-size: 16px;\n}\n\n.sage-ai-diff-text {\n font-size: 14px;\n}\n\n.sage-ai-diff-bulk-actions {\n display: flex;\n gap: 6px;\n}\n\n.sage-ai-diff-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n overflow-y: auto;\n margin-top: 6px;\n}\n\n.sage-ai-diff-decision {\n margin-left: 4px;\n font-size: 9px;\n}\n\n.sage-ai-llm-state-stop-button {\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color1);\n font-size: var(--jp-ui-font-size1);\n font-style: normal;\n font-weight: 500;\n line-height: 160%; /* 19.2px */\n padding: 2px 6px;\n box-shadow: none;\n border: none;\n cursor: pointer;\n}\n\n.sage-ai-llm-state-stop-button:hover {\n background-color: var(--jp-layout-color1);\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-diff-decision-approved {\n color: #28a745;\n}\n\n.sage-ai-diff-decision-rejected {\n color: #dc3545;\n}\n\n.sage-ai-diff-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 4px 6px;\n border: 1px solid var(--jp-border-color2);\n border-radius: 6px;\n font-size: 12px;\n transition: all 0.2s ease;\n position: relative;\n z-index: 0;\n}\n\n.sage-ai-diff-item::before {\n content: '';\n position: absolute;\n inset: 0; /* shorthand for top/right/bottom/left: 0 */\n background: var(--jp-layout-color1);\n opacity: 1; /* initial opacity */\n transition: opacity 0.25s ease;\n z-index: -1; /* behind the box's content */\n border-radius: 6px;\n}\n\n.sage-ai-diff-item:hover {\n cursor: pointer;\n}\n\n.sage-ai-diff-item:hover::before {\n opacity: 0.8; /* hover opacity */\n}\n\n.sage-ai-diff-info {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n\n.sage-ai-diff-operation {\n display: flex;\n align-items: center;\n justify-content: center;\n font-weight: bold;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.sage-ai-diff-changes {\n display: flex;\n gap: 4px;\n font-size: 11px;\n font-weight: 600;\n align-items: center;\n}\n\n.fix_run_cell_size {\n height: 16px;\n}\n\n.sage-ai-diff-summary {\n width: fit-content;\n}\n\n.sage-ai-diff-added {\n color: #28a745;\n}\n\n.sage-ai-diff-removed {\n color: #dc3545;\n}\n\n.sage-ai-diff-actions {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.sage-ai-diff-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 12px;\n font-weight: bold;\n transition: all 0.2s ease;\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color2);\n}\n\n.sage-ai-diff-approve {\n color: #28a745;\n}\n\n.sage-ai-diff-approve:hover {\n background-color: #28a745;\n color: white;\n}\n\n.sage-ai-diff-reject {\n color: #dc3545;\n}\n\n.sage-ai-diff-reject:hover {\n color: white;\n}\n\n.sage-ai-diff-approve-all,\n.sage-ai-diff-reject-all {\n padding: 2px 6px;\n width: auto;\n height: auto;\n border-radius: 5px !important;\n font-size: var(--jp-ui-font-size1);\n font-weight: 500;\n line-height: 160%;\n}\n\n.sage-ai-diff-approve-all {\n color: var(--jp-ui-inverse-font-color0);\n background-color: var(--jp-inverse-layout-color2);\n}\n\n.sage-ai-diff-approve-all:hover {\n color: var(--jp-ui-inverse-font-color1);\n background-color: var(--jp-inverse-layout-color3);\n}\n\n.sage-ai-diff-reject-all {\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-diff-reject-all:hover {\n color: var(--jp-ui-font-color0);\n background-color: var(--jp-layout-color1);\n}\n\n/* Generating state specific styles */\n.sage-ai-generating {\n display: flex !important;\n}\n\n/* Using tool state specific styles */\n.sage-ai-using-tool {\n display: flex !important;\n}\n\n.sage-ai-tool-loader {\n width: 16px;\n height: 16px;\n border: 2px solid var(--jp-border-color2);\n border-top: 2px solid var(--jp-brand-color1);\n border-radius: 50%;\n animation: spin 1s linear infinite;\n flex-shrink: 0;\n}\n\n.sage-ai-tool-icon-container {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sage-ai-tool-icon-container svg {\n width: 16px;\n height: 16px;\n fill: var(--jp-brand-color1);\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n/* Ensure the tool state has the same styling as generating */\n.sage-ai-using-tool .sage-ai-llm-state-text {\n color: var(--jp-ui-font-color2);\n font-style: italic;\n font-weight: 500;\n}\n\n/* Collapsible Diff Summary Bar */\n.sage-ai-diff-summary-bar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n transition: background-color 0.2s ease;\n user-select: none;\n}\n\n.sage-ai-diff-menu-icon {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.sage-ai-diff-summary-info {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n}\n\n.sage-ai-diff-cell-count {\n font-weight: 600;\n color: var(--jp-ui-font-color1);\n font-size: var(--jp-ui-font-size1);\n}\n\n.sage-ai-diff-cell-count-info {\n display: flex;\n gap: 4px;\n margin: 0;\n}\n\n.sage-ai-diff-added-count {\n color: #28a745;\n border-radius: 4px;\n font-size: 11px;\n font-weight: bold;\n}\n\n.sage-ai-diff-removed-count {\n color: #dc3545;\n border-radius: 4px;\n font-size: 11px;\n font-weight: bold;\n}\n\n.sage-ai-diff-expand-icon {\n color: var(--jp-ui-font-color2);\n font-size: 12px;\n margin-left: auto;\n margin-right: 8px;\n transition: transform 0.2s ease;\n}\n\n.sage-ai-diff-summary-actions {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n/* Hide actions on hover for diff items when showActionsOnHover is true */\n.sage-ai-diff-item-hover-actions .sage-ai-diff-actions {\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n\n.sage-ai-diff-item-hover-actions:hover .sage-ai-diff-actions {\n opacity: 1;\n}\n\n/* Button container for LLM state display */\n.sage-ai-llm-state-buttons {\n display: flex;\n gap: 6px;\n align-items: center;\n}\n\n/* Run/Reject buttons for notebook-run_cell tool */\n.sage-ai-llm-state-run-button,\n.sage-ai-llm-state-reject-button {\n padding: 4px 8px;\n border: none;\n border-radius: 8px !important;\n cursor: pointer;\n font-size: var(--jp-ui-font-size1);\n font-weight: 500;\n line-height: 160%;\n transition: all 0.2s ease;\n box-shadow: none;\n}\n\n.sage-ai-llm-state-run-button {\n background-color: var(--jp-inverse-layout-color0);\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.sage-ai-llm-state-run-button:hover {\n background-color: var(--jp-inverse-layout-color2);\n color: var(--jp-ui-inverse-font-color1);\n}\n\n.sage-ai-llm-state-reject-button {\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-llm-state-reject-button:hover {\n background-color: var(--jp-layout-color1);\n color: var(--jp-ui-font-color0);\n}\n",""]);const s=r},3342:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,'/* Diff Navigation Widget Styles */\n.sage-ai-diff-navigation-widget {\n position: absolute;\n bottom: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 1000;\n pointer-events: auto;\n transition: bottom 0.2s ease;\n}\n\n.sage-ai-diff-navigation-widget:hover {\n bottom: 22px;\n}\n\n/* Ensure the notebook container has relative positioning for absolute child positioning */\n.jp-Notebook {\n position: relative;\n}\n\n.sage-ai-diff-navigation-floating-content {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 8px;\n background-color: var(--jp-layout-color1);\n border: 1px solid var(--jp-border-color1);\n border-radius: 8px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n font-family: var(--jp-ui-font-family);\n}\n\n/* Navigation Section */\n.sage-ai-diff-navigation-navigation-section {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sage-ai-diff-navigation-nav-button {\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 8px;\n background-color: transparent;\n color: var(--jp-ui-font-color0);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: bold;\n transition: all 0.2s ease;\n font-family: var(--jp-ui-font-family);\n}\n\n.sage-ai-diff-navigation-nav-button:hover:not(:disabled) {\n background-color: var(--jp-layout-color2);\n}\n\n.sage-ai-diff-navigation-nav-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n color: var(--jp-ui-font-color3);\n}\n\n.sage-ai-diff-navigation-counter-display {\n font-size: var(--jp-ui-font-size1);\n font-weight: 500;\n color: var(--jp-ui-font-color0);\n min-width: 40px;\n text-align: center;\n font-family: var(--jp-ui-font-family);\n}\n\n/* Button Section */\n.sage-ai-diff-navigation-button-section {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sage-ai-diff-navigation-action-button {\n padding: 4px 6px;\n border-radius: 6px !important;\n font-size: var(--jp-ui-font-size1);\n font-weight: 500;\n cursor: pointer;\n border: none;\n transition: all 0.2s ease;\n font-family: var(--jp-ui-font-family);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.sage-ai-diff-navigation-action-button span {\n white-space: nowrap;\n}\n\n/* Reject Button (Outlined) */\n.sage-ai-diff-navigation-reject-button {\n background-color: var(--jp-layout-color3);\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-diff-navigation-reject-button:hover {\n background-color: var(--jp-layout-color4);\n}\n\n/* Approve Button (Primary) */\n.sage-ai-diff-navigation-approve-button {\n background-color: var(--jp-layout-color3);\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-diff-navigation-approve-button:hover {\n background-color: var(--jp-layout-color4);\n}\n\n/* Accept & Run All Button (Enhanced Primary) */\n.sage-ai-diff-navigation-accept-run-button {\n background-color: var(--jp-inverse-layout-color2);\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.sage-ai-diff-navigation-accept-run-button:hover {\n background-color: var(--jp-inverse-layout-color0);\n}\n\n/* Hidden state */\n.sage-ai-diff-navigation-widget.hidden {\n display: none;\n}\n\n/* Dark theme adjustments */\n[data-jp-theme-light="false"] .sage-ai-diff-navigation-floating-content {\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.3);\n}\n\n/* Light theme specific overrides if needed */\n[data-jp-theme-light="true"] .sage-ai-diff-navigation-floating-content {\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n}\n\n/* Icon styling */\n.sage-ai-diff-navigation-nav-icon {\n opacity: 0.7;\n transition: opacity 0.2s ease;\n}\n\n.sage-ai-diff-navigation-action-icon {\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n/* Make icons lighter on hover */\n.sage-ai-diff-navigation-nav-button:hover:not(:disabled) .sage-ai-diff-navigation-nav-icon {\n opacity: 1;\n}\n\n.sage-ai-diff-navigation-action-button:hover .sage-ai-diff-navigation-action-icon {\n opacity: 1;\n}\n\n/* Icon color adjustments for different button states */\n.sage-ai-diff-navigation-nav-button:disabled .sage-ai-diff-navigation-nav-icon {\n opacity: 0.3;\n}\n\n/* Specific button styling (if needed for customization) */\n.sage-ai-diff-navigation-prev-button {\n /* Previous button specific styles can be added here */\n}\n\n.sage-ai-diff-navigation-next-button {\n /* Next button specific styles can be added here */\n}\n',""]);const s=r},4246:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,".sage-ai-codebase-manager {\n padding: 16px;\n flex-shrink: 0; /* Prevent shrinking within settings container */\n}\n\n.sage-ai-section-title {\n margin-top: 0;\n margin-bottom: 8px;\n}\n\n.sage-ai-section-description {\n margin-top: 0;\n margin-bottom: 16px;\n color: var(--jp-ui-font-color2);\n}\n\n.sage-ai-add-repo-form {\n background-color: var(--jp-layout-color1);\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.sage-ai-form-group {\n margin-bottom: 12px;\n}\n\n.sage-ai-form-group label {\n display: block;\n margin-bottom: 4px;\n font-weight: 500;\n}\n\n.sage-ai-settings-title {\n margin-left: 16px;\n}\n\n.sage-ai-input, .sage-ai-textarea {\n width: 98%;\n padding: 8px;\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-button {\n padding: 8px 16px;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 500;\n border: none;\n}\n\n.sage-ai-primary-button {\n background-color: var(--jp-brand-color1);\n color: white;\n}\n\n.sage-ai-primary-button:hover {\n background-color: var(--jp-brand-color0);\n}\n\n.sage-ai-codebase-list {\n margin-top: 20px;\n max-height: 400px; /* Set maximum height */\n overflow-y: auto; /* Enable vertical scrolling */\n scroll-behavior: smooth; /* Add smooth scrolling */\n padding-right: 4px; /* Add some padding for the scrollbar */\n}\n\n/* Styling for webkit-based browsers' scrollbars */\n.sage-ai-codebase-list::-webkit-scrollbar {\n width: 8px;\n}\n\n.sage-ai-codebase-list::-webkit-scrollbar-track {\n background: var(--jp-layout-color0);\n border-radius: 4px;\n}\n\n.sage-ai-codebase-list::-webkit-scrollbar-thumb {\n background: var(--jp-border-color2);\n border-radius: 4px;\n}\n\n.sage-ai-codebase-list::-webkit-scrollbar-thumb:hover {\n background: var(--jp-border-color1);\n}\n\n.sage-ai-empty-state {\n padding: 20px;\n text-align: center;\n border: 1px dashed var(--jp-border-color1);\n color: var(--jp-ui-font-color2);\n border-radius: 4px;\n}\n\n.sage-ai-codebase-item {\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n padding: 16px;\n margin-bottom: 12px;\n background-color: var(--jp-layout-color1);\n}\n\n.sage-ai-codebase-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n}\n\n.sage-ai-codebase-title {\n font-weight: bold;\n margin: 0;\n}\n\n.sage-ai-codebase-path {\n margin: 4px 0;\n color: var(--jp-ui-font-color2);\n word-break: break-all;\n}\n\n.sage-ai-codebase-instructions {\n margin: 8px 0;\n padding: 8px;\n background-color: var(--jp-layout-color0);\n border-left: 3px solid var(--jp-brand-color1);\n border-radius: 2px;\n}\n\n.sage-ai-codebase-actions {\n display: flex;\n gap: 8px;\n}\n\n.sage-ai-action-button {\n padding: 4px 8px;\n border-radius: 4px;\n cursor: pointer;\n border: 1px solid var(--jp-border-color1);\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color0);\n font-size: 0.9em;\n}\n\n.sage-ai-action-button:hover {\n background-color: var(--jp-layout-color3);\n}\n\n.sage-ai-danger-button {\n color: var(--jp-error-color1);\n border-color: var(--jp-error-color1);\n}\n\n.sage-ai-danger-button:hover {\n background-color: rgba(var(--jp-error-color-rgb), 0.1);\n}\n\n.sage-ai-index-status {\n font-size: 0.9em;\n margin: 8px 0;\n padding: 4px 8px;\n background-color: var(--jp-layout-color2);\n border-radius: 4px;\n display: inline-block;\n}\n",""]);const s=r},4417:n=>{n.exports=function(n,o){return o||(o={}),n?(n=String(n.__esModule?n.default:n),/^['"].*['"]$/.test(n)&&(n=n.slice(1,-1)),o.hash&&(n+=o.hash),/["'() \t\n]|(%20)/.test(n)||o.needQuotes?'"'.concat(n.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):n):n}},5056:(n,o,e)=>{n.exports=function(n){var o=e.nc;o&&n.setAttribute("nonce",o)}},5072:n=>{var o=[];function e(n){for(var e=-1,a=0;a<o.length;a++)if(o[a].identifier===n){e=a;break}return e}function a(n,a){for(var i={},r=[],s=0;s<n.length;s++){var l=n[s],p=a.base?l[0]+a.base:l[0],d=i[p]||0,c="".concat(p," ").concat(d);i[p]=d+1;var g=e(c),f={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==g)o[g].references++,o[g].updater(f);else{var u=t(f,a);a.byIndex=s,o.splice(s,0,{identifier:c,updater:u,references:1})}r.push(c)}return r}function t(n,o){var e=o.domAPI(o);return e.update(n),function(o){if(o){if(o.css===n.css&&o.media===n.media&&o.sourceMap===n.sourceMap&&o.supports===n.supports&&o.layer===n.layer)return;e.update(n=o)}else e.remove()}}n.exports=function(n,t){var i=a(n=n||[],t=t||{});return function(n){n=n||[];for(var r=0;r<i.length;r++){var s=e(i[r]);o[s].references--}for(var l=a(n,t),p=0;p<i.length;p++){var d=e(i[p]);0===o[d].references&&(o[d].updater(),o.splice(d,1))}i=l}}},5248:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"@import url(https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap);"]),r.push([n.id,"/* Import Geist font from Google Fonts */\n\n/* Override JupyterLab font variables to use Geist */\n:root {\n --jp-ui-font-family:\n 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial,\n sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol' !important;\n --jp-content-font-family: 'Geist', 'Source Sans Pro', sans-serif !important;\n}\n\n/* Ensure Geist is applied to the plugin elements */\n.sage-ai-chatbox,\n.sage-ai-chat-input,\n.sage-ai-rich-chat-input,\n.sage-ai-rich-chat-input-wrapper,\n.sage-ai-message,\n.sage-ai-markdown-content,\n.sage-ai-tool-calls,\n.sage-ai-step-floating-box,\n.sage-ai-banner-header {\n font-family:\n 'Geist',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Helvetica,\n Arial,\n sans-serif;\n}\n",""]);const s=r},5433:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,".sage-ai-mention-dropdown {\n position: absolute;\n background-color: var(--jp-layout-color1);\n border: 1px solid var(--jp-inverse-border-color);\n border-radius: 8px;\n box-shadow: 0 2px 8px rgb(0 0 0 / 15%);\n z-index: 150000 !important;\n max-height: 200px;\n overflow: hidden;\n width: auto;\n display: none;\n flex-direction: column;\n min-width: 65%;\n}\n\n[data-jp-theme-light='false'] .sage-ai-mention-dropdown {\n background-color: var(--jp-layout-color1);\n}\n\n.sage-ai-mention-dropdown.visible {\n display: flex;\n}\n\n/* Search container with icon and input */\n.sage-ai-mention-search-container {\n display: flex;\n padding: 4px 8px;\n border-radius: 8px;\n align-items: center;\n gap: 8px;\n align-self: stretch;\n border: 0.8px solid var(--jp-border-color3);\n background-color: var(--jp-layout-color0);\n}\n\n.sage-ai-mention-search-icon {\n width: 16px;\n height: 16px;\n color: var(--jp-ui-font-color2);\n flex-shrink: 0;\n}\n\n.sage-ai-mention-search-input {\n flex: 1;\n outline: none;\n background: transparent;\n color: var(--jp-ui-font-color1);\n font-size: 12px;\n padding: 4px 0;\n border: none;\n}\n\n.sage-ai-mention-search-input::placeholder {\n color: var(--jp-ui-font-color2);\n}\n\n/* Category header container */\n.sage-ai-mention-header-container {\n display: flex;\n padding: 8px 10px;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n gap: 8px;\n align-self: stretch;\n flex-shrink: 0;\n}\n\n/* Content container - scrollable area */\n.sage-ai-mention-content {\n overflow-y: auto;\n overflow-x: hidden;\n flex: 1;\n}\n\n/* Category header with back caret */\n.sage-ai-mention-category-header {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n padding: 0;\n width: 100%;\n}\n\n.sage-ai-mention-category-header:hover {\n opacity: 0.8;\n}\n\n.sage-ai-mention-back-icon {\n width: 14px;\n height: 15px;\n color: #e7e7e7;\n flex-shrink: 0;\n}\n\n.sage-ai-mention-category-title {\n overflow: hidden;\n color: var(--Text-text-primary, #e7e7e7);\n text-overflow: ellipsis;\n font-family: Geist;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n line-height: 160%; /* 19.2px */\n flex: 1;\n}\n\n.sage-ai-mention-item {\n padding: 8px 10px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n\n /* border-bottom: 1px solid var(--jp-border-color2); */\n}\n\n.sage-ai-mention-item:last-child {\n border-bottom: none;\n}\n\n.sage-ai-mention-item:hover,\n.sage-ai-mention-item.active {\n background-color: var(--jp-layout-color2);\n}\n\n[data-jp-theme-light='false'] {\n .sage-ai-mention-content,\n .sage-ai-mention-dropdown {\n background: #111;\n }\n}\n\n.sage-ai-mention-item-icon {\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--jp-ui-font-color1);\n font-size: 14px;\n}\n\n.sage-ai-mention-item-text {\n font-size: 12px;\n color: var(--jp-ui-font-color1);\n flex: 1;\n}\n\n.sage-ai-mention-item-description {\n font-size: var(--jp-ui-font-size0);\n color: var(--jp-ui-font-color2);\n font-style: italic;\n}\n\n.sage-ai-mention-category-main {\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-mention-subcategory {\n padding: 6px 16px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n background-color: var(--jp-layout-color0);\n}\n\n.sage-ai-mention-subcategory:hover,\n.sage-ai-mention-subcategory.active {\n background-color: var(--jp-layout-color2);\n}\n\n.sage-ai-mention-empty {\n padding: 12px;\n font-style: italic;\n color: var(--jp-ui-font-color2);\n text-align: center;\n}\n\n/* Enhanced keyboard navigation styles */\n[data-jp-theme-light='false'] .sage-ai-mention-item.active,\n.sage-ai-mention-subcategory.active {\n background-color: rgb(56 56 56 / 30%) !important;\n\n /* color: var(--jp-ui-inverse-font-color1) !important; */\n\n /* border-left: 3px solid var(--jp-brand-color0); */\n}\n\n.sage-ai-mention-item.active .sage-ai-mention-item-icon,\n.sage-ai-mention-subcategory.active .sage-ai-mention-item-icon {\n color: var(--jp-ui-inverse-font-color1) !important;\n}\n\n.sage-ai-mention-item.active .sage-ai-mention-item-description,\n.sage-ai-mention-subcategory.active .sage-ai-mention-item-description {\n color: var(--jp-ui-font-color2) !important;\n}\n\n.sage-ai-mention-separator {\n padding: 4px 12px;\n font-size: 10px;\n font-weight: bold;\n color: var(--jp-ui-font-color2);\n background-color: var(--jp-layout-color2);\n border-top: 1px solid var(--jp-border-color1);\n border-bottom: 1px solid var(--jp-border-color1);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n",""]);const s=r},5544:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* When LLM state display is hidden, move plan state display up */\n.sage-ai-chatbox:has(.sage-ai-llm-state-widget.hidden)\n .sage-ai-plan-state-widget {\n margin-bottom: 0 !important;\n}\n\n/* Wrapper for fixed positioning with flexbox */\n.sage-ai-state-display-container {\n position: fixed !important;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n z-index: 1;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n}\n\n/* Apply styles directly to widget nodes */\n.sage-ai-plan-state-widget {\n order: 1;\n pointer-events: auto;\n margin: 0 17px 4px;\n margin-bottom: -10px;\n}\n\n.sage-ai-llm-state-widget {\n order: 2;\n pointer-events: auto;\n margin: 0 17px;\n}\n\n.sage-ai-input-spacer {\n order: 3;\n flex-shrink: 0;\n}\n\n[data-jp-theme-light='false'] .sage-ai-plan-state-display {\n background-color: #1a1a1a;\n}\n\n[data-jp-theme-light='true'] .sage-ai-plan-state-display {\n background-color: #fff;\n}\n\n/* Plan State Display - positioned above the LLM state display */\n.sage-ai-plan-state-display {\n display: flex;\n flex-direction: column;\n padding: 8px 12px;\n padding-bottom: 14px;\n border-radius: 8px 8px 0 0;\n font-size: 13px;\n color: var(--jp-ui-font-color1);\n box-shadow: 0 2px 4px rgb(0 0 0 / 5%);\n transition: all 0.2s ease-in-out;\n border: 1px solid var(--jp-border-color2);\n}\n\n.sage-ai-plan-state-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.sage-ai-plan-state-content {\n display: flex;\n flex-direction: column;\n gap: 4px;\n width: 100%;\n}\n\n.sage-ai-plan-current-step {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.sage-ai-plan-current-text {\n color: var(--jp-ui-font-color1);\n font-size: 12px;\n font-weight: 400;\n}\n\n.sage-ai-plan-bottom-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.sage-ai-plan-next-text {\n color: var(--jp-ui-font-color2);\n font-weight: 300;\n font-size: 10px;\n flex: 1; /* Take up available space */\n}\n\n.sage-ai-plan-source-toggle {\n align-self: center;\n background: none;\n border: none;\n color: var(--jp-ui-font-color2);\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border-radius: 4px;\n transition:\n background-color 0.2s,\n color 0.2s;\n width: 24px;\n height: 24px;\n}\n\n.sage-ai-plan-source-toggle:hover {\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-plan-source-content {\n margin-top: 8px;\n margin-bottom: 4px;\n padding: 12px;\n background-color: var(--jp-layout-color2);\n border-radius: 6px;\n overflow-y: auto;\n min-height: 100px;\n max-height: 25vh;\n transition: all 0.3s ease-in-out;\n transform-origin: bottom; /* Changed from top to bottom to expand upward */\n}\n\n.sage-ai-plan-source-content.collapsed {\n max-height: 0;\n min-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n margin-top: 0;\n border: none;\n opacity: 0;\n transform: scaleY(0);\n}\n\n.sage-ai-plan-source-content.expanded {\n opacity: 1;\n transform: scaleY(1);\n}\n\n.sage-ai-plan-tasks-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n font-family: var(--jp-ui-font-family);\n font-size: 12px;\n line-height: 1.4;\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-plan-title {\n font-weight: 600;\n font-size: 12px;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-plan-task-item {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.sage-ai-task-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sage-ai-task-executing {\n background: linear-gradient(\n 135deg,\n transparent,\n var(--jp-ui-font-color1),\n transparent\n );\n background-clip: text;\n color: transparent !important;\n background-size: 200% 100%;\n animation: shimmer 2.5s linear infinite;\n}\n\n@keyframes shimmer {\n 0% {\n background-position: 200% 0;\n }\n\n 100% {\n background-position: -200% 0;\n }\n}\n\n/* Keep the old markdown styles for backward compatibility */\n.sage-ai-plan-source-markdown {\n font-family: var(--jp-code-font-family);\n font-size: 11px;\n line-height: 1.4;\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-plan-source-markdown h1,\n.sage-ai-plan-source-markdown h2,\n.sage-ai-plan-source-markdown h3,\n.sage-ai-plan-source-markdown h4,\n.sage-ai-plan-source-markdown h5,\n.sage-ai-plan-source-markdown h6 {\n margin: 8px 0 4px;\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-plan-source-markdown h1 {\n font-size: 14px;\n}\n\n.sage-ai-plan-source-markdown h2 {\n font-size: 13px;\n}\n\n.sage-ai-plan-source-markdown h3 {\n font-size: 12px;\n}\n\n.sage-ai-plan-source-markdown h4,\n.sage-ai-plan-source-markdown h5,\n.sage-ai-plan-source-markdown h6 {\n font-size: 11px;\n}\n\n.sage-ai-plan-source-markdown p {\n margin: 4px 0;\n}\n\n.sage-ai-plan-source-markdown ul,\n.sage-ai-plan-source-markdown ol {\n padding-left: 16px;\n margin: 4px 0;\n}\n\n.sage-ai-plan-source-markdown li {\n margin: 2px 0;\n}\n\n.sage-ai-plan-source-markdown code {\n background-color: var(--jp-layout-color1);\n padding: 1px 3px;\n border-radius: 2px;\n font-size: 10px;\n}\n\n.sage-ai-plan-source-markdown pre {\n background-color: var(--jp-layout-color1);\n border-radius: 4px;\n padding: 6px;\n margin: 4px 0;\n overflow-x: auto;\n}\n\n.sage-ai-plan-source-markdown pre code {\n background-color: transparent;\n padding: 0;\n font-size: 10px;\n}\n\n.sage-ai-plan-source-markdown blockquote {\n border-left: 3px solid var(--jp-border-color2);\n padding-left: 8px;\n margin: 4px 0;\n color: var(--jp-ui-font-color2);\n font-style: italic;\n}\n\n/* Ensure the blob loader works in this context */\n.sage-ai-plan-state-display .sage-ai-blob-loader {\n flex-shrink: 0;\n}\n\n/* Toggle icon animation */\n.sage-ai-plan-toggle-icon {\n font-size: 12px;\n transition: transform 0.2s ease;\n line-height: 1;\n}\n\n.sage-ai-plan-source-toggle[aria-expanded='false'] > svg {\n transform: rotate(180deg);\n}\n\n.sage-ai-plan-state-loader {\n width: 26px;\n height: 26px;\n display: inline-block;\n position: relative;\n}\n\n.sage-ai-plan-state-loader::after,\n.sage-ai-plan-state-loader::before {\n content: '';\n box-sizing: border-box;\n width: 26px;\n height: 26px;\n border-radius: 50%;\n border: 2px solid rgba(59, 130, 246, 1);\n position: absolute;\n left: 0;\n top: 0;\n opacity: 0;\n animation: sage-ai-plan-state-display-animloader 2s linear infinite;\n}\n\n.sage-ai-plan-state-loader::after {\n animation-delay: 1s;\n}\n\n@keyframes sage-ai-plan-state-display-animloader {\n 0% {\n transform: scale(0);\n opacity: 1;\n }\n\n 100% {\n border-color: #ccdffe;\n transform: scale(1);\n opacity: 0;\n }\n}\n",""]);const s=r},5655:n=>{n.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNNS4xNzc3OCA4TDYuNDg4ODkgNi42ODg4OUM2LjY2NjY3IDYuNTExMTEgNi43NTU1NiA2LjMwMzcgNi43NTU1NiA2LjA2NjY3QzYuNzU1NTYgNS44Mjk2MyA2LjY2NjY3IDUuNjIyMjIgNi40ODg4OSA1LjQ0NDQ0QzYuMzExMTEgNS4yNjY2NyA2LjEgNS4xNzc3OCA1Ljg1NTU2IDUuMTc3NzhDNS42MTExMSA1LjE3Nzc4IDUuNCA1LjI2NjY3IDUuMjIyMjIgNS40NDQ0NEwzLjI4ODg5IDcuMzc3NzhDMy4yIDcuNDY2NjcgMy4xMzcwNCA3LjU2Mjk2IDMuMSA3LjY2NjY3QzMuMDYyOTYgNy43NzAzNyAzLjA0NDQ0IDcuODgxNDggMy4wNDQ0NCA4QzMuMDQ0NDQgOC4xMTg1MiAzLjA2Mjk2IDguMjI5NjMgMy4xIDguMzMzMzNDMy4xMzcwNCA4LjQzNzA0IDMuMiA4LjUzMzMzIDMuMjg4ODkgOC42MjIyMkw1LjIyMjIyIDEwLjU1NTZDNS40IDEwLjczMzMgNS42MTExMSAxMC44MjIyIDUuODU1NTYgMTAuODIyMkM2LjEgMTAuODIyMiA2LjMxMTExIDEwLjczMzMgNi40ODg4OSAxMC41NTU2QzYuNjY2NjcgMTAuMzc3OCA2Ljc1NTU2IDEwLjE3MDQgNi43NTU1NiA5LjkzMzMzQzYuNzU1NTYgOS42OTYzIDYuNjY2NjcgOS40ODg4OSA2LjQ4ODg5IDkuMzExMTFMNS4xNzc3OCA4Wk0xMC44MjIyIDhMOS41MTExMSA5LjMxMTExQzkuMzMzMzMgOS40ODg4OSA5LjI0NDQ0IDkuNjk2MyA5LjI0NDQ0IDkuOTMzMzNDOS4yNDQ0NCAxMC4xNzA0IDkuMzMzMzMgMTAuMzc3OCA5LjUxMTExIDEwLjU1NTZDOS42ODg4OSAxMC43MzMzIDkuOSAxMC44MjIyIDEwLjE0NDQgMTAuODIyMkMxMC4zODg5IDEwLjgyMjIgMTAuNiAxMC43MzMzIDEwLjc3NzggMTAuNTU1NkwxMi43MTExIDguNjIyMjJDMTIuOCA4LjUzMzMzIDEyLjg2MyA4LjQzNzA0IDEyLjkgOC4zMzMzM0MxMi45MzcgOC4yMjk2MyAxMi45NTU2IDguMTE4NTIgMTIuOTU1NiA4QzEyLjk1NTYgNy44ODE0OCAxMi45MzcgNy43NzAzNyAxMi45IDcuNjY2NjdDMTIuODYzIDcuNTYyOTYgMTIuOCA3LjQ2NjY3IDEyLjcxMTEgNy4zNzc3OEwxMC43Nzc4IDUuNDQ0NDRDMTI2ODg4OSA1LjM1NTU2IDEwLjU4ODkgNS4yODg4OSAxMC40Nzc4IDUuMjQ0NDRDMTAuMzY2NyA1LjIgMTAuMjU1NiA1LjE3Nzc4IDEwLjE0NDQgNS4xNzc3OEMxMC4wMzMzIDUuMTc3NzggOS45MjIyMiA1LjIgOS44MTExMSA1LjI0NDQ0QzkuNyA1LjI4ODg5IDkuNiA1LjM1NTU2IDkuNTExMTEgNS40NDQ0NEM5LjMzMzMzIDUuNjIyMjIgOS4yNDQ0NCA1LjgyOTYzIDkuMjQ0NDQgNi4wNjY2N0M5LjI0NDQ0IDYuMzAzNyA5LjMzMzMzIDYuNTExMTEgOS41MTExMSA2LjY4ODg5TDEwLjgyMjIgOFpNMS43Nzc3OCAxNkMxLjI4ODg5IDE2IDAuODcwMzcgMTUuODI1OSAwLjUyMjIyMiAxNS40Nzc4QzAuMTc0MDc0IDE1LjEyOTYgMCAxNC43MTExIDAgMTQuMjIyMlYxLjc3Nzc4QzAgMS4yODg4OSAwLjE3NDA3NCAwLjg3MDM3IDAuNTIyMjIyIDAuNTIyMjIyQzAuODcwMzcgMC4xNzQwNzQgMS4yODg4OSAwIDEuNzc3NzggMEgxNC4yMjIyQzE0LjcxMTEgMCAxNS4xMjk2IDAuMTc0MDc0IDE1LjQ3NzggMC41MjIyMjJDMTUuODI1OSAwLjg3MDM3IDE2IDEuMjg4ODkgMTYgMS43Nzc3OFYxNC4yMjIyQzE2IDE0LjcxMTEgMTUuODI1OSAxNS4xMjk2IDE1LjQ3NzggMTUuNDc3OEMxNS4xMjk2IDE1LjgyNTkgMTQuNzExMSAxNiAxNC4yMjIyIDE2SDEuNzc3NzhaIiBmaWxsPSIjN0E3QTdBIi8+Cjwvc3ZnPg=="},5943:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* Left Side Banner Overlay */\n.sage-ai-banner-overlay {\n position: absolute;\n border-radius: 12px;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.3);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n z-index: 9999;\n opacity: 0;\n transition: opacity 0.3s ease;\n display: none;\n}\n\n.sage-ai-banner-overlay.visible {\n opacity: 1;\n}\n\n/* Left Side Banner */\n.sage-ai-left-side-banner {\n position: absolute;\n border-radius: 12px;\n top: 0;\n left: -400px; /* Start off-screen */\n width: 65%;\n height: 100%;\n background-color: var(--jp-layout-color0);\n z-index: 10000;\n transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: none;\n overflow: hidden;\n}\n\n.sage-ai-left-side-banner.visible {\n left: 0;\n}\n\n/* Banner Header */\n.sage-ai-banner-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px;\n background-color: var(--jp-layout-color0);\n}\n\n.sage-ai-banner-header h3 {\n margin: 0;\n color: var(--jp-ui-font-color0);\n font-size: 16px;\n font-weight: 600;\n}\n\n.sage-ai-banner-close {\n background: none;\n border: none;\n color: #949494;\n font-size: 24px;\n cursor: pointer;\n border-radius: 4px;\n line-height: 1;\n}\n\n/* Banner Content */\n.sage-ai-banner-content {\n height: calc(100vh - 80px);\n overflow-y: auto;\n padding: 0;\n}\n\n.sage-ai-banner-threads {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 0 12px;\n margin-bottom: 70px;\n}\n\n/* Thread Items */\n.sage-ai-banner-thread-item {\n padding: 12px 16px;\n cursor: pointer;\n border-radius: 12px;\n transition: background-color 0.2s ease;\n position: relative;\n}\n\n.sage-ai-banner-thread-item:hover {\n background-color: var(--jp-layout-color2);\n}\n\n.sage-ai-banner-thread-item.active {\n background-color: var(--jp-inverse-layout-color2);\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.sage-ai-banner-thread-item.active .sage-ai-banner-thread-name {\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.sage-ai-banner-thread-item.active .sage-ai-banner-thread-date {\n color: var(--jp-ui-inverse-font-color2);\n}\n\n.sage-ai-banner-thread-name {\n font-weight: 500;\n color: var(--jp-ui-font-color0);\n font-size: 13px;\n margin-bottom: 4px;\n line-height: 1.4;\n}\n\n.sage-ai-banner-thread-date {\n font-size: 12px;\n color: var(--jp-ui-font-color2);\n line-height: 1.3;\n}\n\n/* Empty State */\n.sage-ai-banner-empty {\n padding: 40px 20px;\n text-align: center;\n color: var(--jp-ui-font-color2);\n font-style: italic;\n font-size: 14px;\n}\n\n/* Scrollbar Styling */\n.sage-ai-banner-content::-webkit-scrollbar {\n width: 6px;\n}\n\n.sage-ai-banner-content::-webkit-scrollbar-track {\n background: var(--jp-layout-color0);\n}\n\n.sage-ai-banner-content::-webkit-scrollbar-thumb {\n background: var(--jp-border-color2);\n border-radius: 3px;\n}\n\n.sage-ai-banner-content::-webkit-scrollbar-thumb:hover {\n background: var(--jp-border-color1);\n}\n\n/* Animation for thread items */\n.sage-ai-banner-thread-item {\n animation: slideInFromLeft 0.3s ease forwards;\n opacity: 0;\n transform: translateX(-20px);\n}\n\n.sage-ai-banner-thread-item:nth-child(1) {\n animation-delay: 0.1s;\n}\n.sage-ai-banner-thread-item:nth-child(2) {\n animation-delay: 0.15s;\n}\n.sage-ai-banner-thread-item:nth-child(3) {\n animation-delay: 0.2s;\n}\n.sage-ai-banner-thread-item:nth-child(4) {\n animation-delay: 0.25s;\n}\n.sage-ai-banner-thread-item:nth-child(5) {\n animation-delay: 0.3s;\n}\n.sage-ai-banner-thread-item:nth-child(6) {\n animation-delay: 0.35s;\n}\n.sage-ai-banner-thread-item:nth-child(7) {\n animation-delay: 0.4s;\n}\n.sage-ai-banner-thread-item:nth-child(8) {\n animation-delay: 0.45s;\n}\n.sage-ai-banner-thread-item:nth-child(9) {\n animation-delay: 0.5s;\n}\n.sage-ai-banner-thread-item:nth-child(10) {\n animation-delay: 0.55s;\n}\n.sage-ai-banner-thread-item {\n animation-delay: 0.55s;\n}\n\n@keyframes slideInFromLeft {\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .sage-ai-left-side-banner {\n width: 100vw;\n left: -100vw;\n }\n\n .sage-ai-banner-header {\n padding: 16px;\n }\n\n .sage-ai-banner-thread-item {\n padding: 12px 16px;\n }\n}\n",""]);const s=r},6314:n=>{n.exports=function(n){var o=[];return o.toString=function(){return this.map(function(o){var e="",a=void 0!==o[5];return o[4]&&(e+="@supports (".concat(o[4],") {")),o[2]&&(e+="@media ".concat(o[2]," {")),a&&(e+="@layer".concat(o[5].length>0?" ".concat(o[5]):""," {")),e+=n(o),a&&(e+="}"),o[2]&&(e+="}"),o[4]&&(e+="}"),e}).join("")},o.i=function(n,e,a,t,i){"string"==typeof n&&(n=[[null,n,void 0]]);var r={};if(a)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(r[l]=!0)}for(var p=0;p<n.length;p++){var d=[].concat(n[p]);a&&r[d[0]]||(void 0!==i&&(void 0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=i),e&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=e):d[2]=e),t&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=t):d[4]="".concat(t)),o.push(d))}},o}},6785:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* Mode Selector Dropdown - Ultra Polished Design */\n\n/* Base mode selector styling with proper positioning */\n.sage-ai-mode-selector {\n position: absolute;\n bottom: 12px;\n left: 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 3px 8px;\n background-color: var(--jp-layout-color0);\n border: 1px solid var(--jp-border-color1);\n border-radius: 8px;\n cursor: pointer;\n font-size: var(--jp-ui-font-size1);\n color: var(--jp-ui-font-color0);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\n /* box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); */\n backdrop-filter: blur(8px);\n z-index: 10; /* Ensure it's above other input elements */\n}\n\n.sage-ai-mode-selector-arrow {\n display: flex;\n align-items: center;\n}\n\n.sage-ai-mode-selector:hover {\n border: 1px solid var(--jp-ui-font-color1);\n\n /* background: linear-gradient( */\n\n /* 135deg, */\n\n /* var(--jp-layout-color3) 0%, */\n\n /* var(--jp-layout-color4) 100% */\n\n /* ); */\n\n /* border-color: var(--jp-brand-color1); */\n\n /* box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); */\n\n /* transform: translateY(-1px); */\n}\n\n.sage-ai-mode-selector:active {\n transform: translateY(0);\n box-shadow: 0 2px 6px rgb(0 0 0 / 12%);\n}\n\n/* Mode display styling */\n.sage-ai-mode-display {\n display: flex;\n align-items: center;\n gap: 6px;\n flex: 1;\n}\n\n.sage-ai-mode-display .sage-ai-mode-option-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n}\n\n.sage-ai-mode-display .sage-ai-mode-option-icon svg {\n width: 16px;\n height: 16px;\n transition: fill 0.2s ease;\n}\n\n.sage-ai-mode-display .sage-ai-mode-option-text {\n font-weight: 500;\n font-size: 12px;\n letter-spacing: 0.02em;\n}\n\n/* Dropdown arrow styling */\n.sage-ai-mode-arrow {\n color: var(--jp-ui-font-color2);\n font-size: 10px;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n margin-left: auto;\n}\n\n.sage-ai-mode-selector:hover .sage-ai-mode-arrow {\n color: var(--jp-brand-color1);\n transform: translateY(-1px);\n}\n\n.sage-ai-mode-selector.open .sage-ai-mode-arrow {\n transform: rotate(180deg);\n color: var(--jp-brand-color1);\n}\n\n/* Dropdown container */\n.sage-ai-mode-dropdown {\n position: absolute;\n bottom: calc(100% + 8px); /* Position above the selector */\n left: 0;\n right: 0;\n min-width: 100%;\n background: var(--jp-layout-color1);\n border: .5px solid var(--jp-border-color1);\n border-radius: 12px;\n box-shadow:\n 0 10px 40px rgb(0 0 0 / 15%),\n 0 4px 12px rgb(0 0 0 / 10%),\n 0 0 0 1px rgb(255 255 255 / 5%);\n z-index: 2000;\n overflow: hidden;\n backdrop-filter: blur(20px);\n\n /* Animation properties */\n opacity: 0;\n visibility: hidden;\n transform: translateY(10px) scale(0.95);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.sage-ai-mode-dropdown.visible {\n opacity: 1;\n visibility: visible;\n transform: translateY(0) scale(1);\n width: fit-content !important;\n}\n\n.sage-ai-mode-dropdown.hidden {\n opacity: 0;\n visibility: hidden;\n transform: translateY(10px) scale(0.95);\n pointer-events: none;\n}\n\n/* Dropdown options container */\n.sage-ai-mode-dropdown-content {\n display: flex;\n flex-direction: column;\n padding: 6px;\n gap: 2px;\n}\n\n/* Individual mode options */\n.sage-ai-mode-option {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 6px 8px;\n border-radius: 8px;\n cursor: pointer;\n transition: background-color 0.2s ease;\n position: relative;\n overflow: hidden;\n background: transparent;\n border: 1px solid transparent;\n}\n\n/* Mode option icon */\n.sage-ai-mode-option-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 6px;\n\n /* background: var(--jp-layout-color2); */\n /*transition: all 0.4s ease;*/\n flex-shrink: 0;\n}\n\n.sage-ai-mode-option:hover {\n background: var(--jp-border-color1);\n}\n\n.sage-ai-mode-option-icon svg {\n width: 16px;\n height: 16px;\n transition: fill 0.2s ease;\n}\n\n/* Mode option text */\n.sage-ai-mode-option-text {\n font-weight: 500;\n font-size: 14px;\n color: var(--jp-ui-font-color0);\n transition: color 0.2s ease;\n letter-spacing: 0.02em;\n margin: 0;\n line-height: 1.3;\n}\n\n.sage-ai-mode-option:hover .sage-ai-mode-option-text {\n color: var(--jp-ui-font-color0);\n}\n\n/* Add mode descriptions */\n.sage-ai-mode-option-description {\n font-size: 10px;\n color: var(--jp-ui-font-color2);\n transition: color 0.2s ease;\n line-height: 160%;\n margin: 0 !important;\n}\n\n.sage-ai-mode-option:hover .sage-ai-mode-option-description {\n color: var(--jp-ui-font-color1);\n}\n\n/* Enhanced flex layout for dropdown content */\n.sage-ai-mode-dropdown {\n display: flex;\n flex-direction: column;\n}\n\n/* Staggered animation for options */\n.sage-ai-mode-option:nth-child(1) {\n transition-delay: 0.05s;\n}\n\n.sage-ai-mode-option:nth-child(2) {\n transition-delay: 0.1s;\n}\n\n.sage-ai-mode-option:nth-child(3) {\n transition-delay: 0.15s;\n}\n\n/* Loading animation when opening */\n@keyframes slideInUp {\n from {\n opacity: 0;\n transform: translateY(20px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes slideOutDown {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n\n to {\n opacity: 0;\n transform: translateY(20px);\n }\n}\n\n/* Enhanced opening animation */\n.sage-ai-mode-dropdown.opening {\n animation: slideInUp 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n}\n\n.sage-ai-mode-dropdown.closing {\n animation: slideOutDown 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n}\n\n/* Subtle glow effect for active/focused state */\n.sage-ai-mode-selector:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 2px var(--jp-border-color1),\n 0 4px 12px rgb(0 0 0 / 15%);\n}\n\n/* Dark theme adjustments */\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mode-dropdown {\n box-shadow:\n 0 10px 40px rgb(0 0 0 / 30%),\n 0 4px 12px rgb(0 0 0 / 20%),\n 0 0 0 1px rgb(255 255 255 / 10%);\n}\n\n.sage-ai-mode-option-title {\n font-size: 13px;\n font-style: normal;\n font-weight: 500;\n margin: 0 !important;\n line-height: 155%;\n}\n\n/* Responsive design for smaller screens */\n@media (max-width: 768px) {\n .sage-ai-mode-dropdown {\n bottom: calc(100% + 4px);\n }\n\n .sage-ai-mode-option {\n padding: 10px 14px;\n }\n\n .sage-ai-mode-option-text {\n font-size: 13px;\n }\n}\n",""]);const s=r},7342:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,'/* More Options Popover Styles */\n.sage-ai-more-options-widget {\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n z-index: 9999;\n}\n\n.sage-ai-more-options-popover {\n pointer-events: auto;\n background: var(--jp-layout-color1);\n border: 1px solid var(--jp-border-color1);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 4px;\n min-width: 140px;\n /* animation: fadeInUp 0.2s ease-out; */\n}\n\n.sage-ai-more-options-popover:empty {\n display: none;\n}\n\n.sage-ai-more-options-content {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.sage-ai-more-options-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border: none;\n background: transparent;\n color: var(--jp-ui-font-color1);\n border-radius: 4px;\n cursor: pointer;\n font-size: 13px;\n font-family: var(--jp-ui-font-family);\n text-align: left;\n width: 100%;\n transition: background-color 0.15s ease;\n}\n\n.sage-ai-more-options-item:hover {\n background: var(--jp-layout-color2);\n}\n\n.sage-ai-more-options-item:active {\n background: var(--jp-layout-color3);\n}\n\n.sage-ai-more-options-item svg {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n}\n\n.sage-ai-more-options-item span {\n flex: 1;\n}\n\n.sage-ai-more-options-item-danger {\n color: var(--jp-error-color1);\n}\n\n/* Dark theme adjustments */\n[data-jp-theme-light="false"] .sage-ai-more-options-popover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);\n}\n',""]);const s=r},7439:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,'/* Inline Diff Approval for Chat interface */\n.sage-ai-inline-diff-approval,\n.sage-ai-diff-approval-dialog-embedded {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 4px 12px;\n}\n\n.sage-ai-inline-diff-header,\n.sage-ai-diff-approval-header {\n padding-bottom: 8px;\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--jp-border-color2);\n}\n\n.sage-ai-inline-diff-title,\n.sage-ai-diff-title {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n display: flex;\n align-items: center;\n}\n\n.sage-ai-inline-diff-summary,\n.sage-ai-diff-summary {\n font-size: var(--jp-ui-font-size0);\n color: var(--jp-ui-font-color0);\n flex-grow: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.sage-ai-inline-diff-note {\n font-size: 12px;\n color: var(--jp-ui-font-color2);\n font-style: italic;\n margin-bottom: 12px;\n}\n\n.sage-ai-inline-diff-actions {\n display: flex;\n /* TODO: Remove the element from the DOM */\n display: none;\n justify-content: end;\n gap: 8px;\n margin-top: 4px;\n}\n\n.sage-ai-inline-diff-actions button {\n padding: 8px 14px;\n border-radius: 4px;\n font-size: 13px;\n border: none;\n cursor: pointer;\n transition:\n background-color 0.2s,\n transform 0.1s;\n}\n\n.sage-ai-inline-diff-actions button:hover {\n transform: translateY(-1px);\n}\n\n.sage-ai-inline-diff-actions button:active {\n transform: translateY(0px);\n}\n\n.sage-ai-inline-diff-count,\n.sage-ai-diff-count {\n display: inline-block;\n background-color: var(--jp-layout-color3);\n color: var(--jp-ui-font-color1);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 12px;\n margin-left: 6px;\n min-width: 18px;\n text-align: center;\n}\n\n.sage-ai-confirm-button {\n padding: 4px 8px;\n background-color: var(--jp-inverse-layout-color0);\n color: var(--jp-ui-inverse-font-color0);\n transition: background-color 0.2s ease;\n border-radius: 8px !important;\n}\n\n.sage-ai-confirm-button:hover {\n background-color: var(--jp-inverse-layout-color2);\n}\n\n.sage-ai-reject-button {\n padding: 0px 8px;\n font-size: var(--jp-ui-font-size1);\n background-color: transparent;\n color: var(--jp-ui-font-color1);\n}\n\n/* Styles for embedded diff list and cells */\n.sage-ai-diff-approval-dialog-embedded .sage-ai-diff-list {\n margin: 8px 0;\n gap: 8px;\n display: flex;\n flex-direction: column;\n}\n\n.sage-ai-diff-cell-item {\n border-radius: 10px;\n border: 0.5px solid var(--jp-border-color2);\n background-color: transparent;\n display: flex;\n flex-direction: column;\n}\n\n.sage-ai-diff-content-collapse-icon {\n display: flex;\n cursor: pointer;\n transition: transform 0.2s;\n}\n\n.sage-ai-diff-content-collapse-icon:hover {\n transform: scale(1.1);\n}\n\n.sage-ai-diff-cell-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n}\n\n.sage-ai-diff-operation {\n display: flex;\n}\n\n.sage-ai-diff-content {\n position: relative;\n max-height: 150px;\n overflow-y: hidden;\n background-color: var(--jp-layout-color2);\n border-radius: 0 0 10px 10px;\n border-top: 0.5px solid var(--jp-border-color2);\n}\n\n.sage-ai-diff-content .d2h-file-wrapper {\n border-radius: 0 !important;\n}\n\n.sage-ai-diff-content.sage-ai-diff-expanded {\n max-height: none;\n overflow-y: visible;\n}\n\n/* Gradient overlay that stays at bottom when scrolling */\n.sage-ai-diff-gradient-overlay {\n display: flex;\n align-items: center;\n justify-content: center;\n position: sticky;\n bottom: 0;\n left: 0;\n right: 0;\n height: 20px;\n background: linear-gradient(to top, rgba(25, 25, 25, 1) 0%, transparent 100%);\n pointer-events: none;\n border-radius: 0 0 4px 4px;\n z-index: 5;\n}\n\n[data-jp-theme-light="true"] .sage-ai-diff-gradient-overlay {\n background: linear-gradient(to top, rgba(255, 255, 255, 1) 0%, transparent 100%);\n}\n\n.sage-ai-diff-cell-id-label {\n color: #1976d2;\n border-radius: 4px;\n font-size: 12px;\n padding: 2px 6px;\n cursor: pointer;\n flex: 1;\n}\n\n.sage-ai-diff-old-content,\n.sage-ai-diff-new-content {\n padding: 6px;\n font-family: monospace;\n font-size: 12px;\n white-space: pre-wrap;\n}\n\n.sage-ai-diff-old-content {\n border-bottom: 1px dashed var(--jp-border-color2);\n color: var(--jp-content-font-color2);\n text-decoration: line-through;\n}\n\n.sage-ai-diff-cell-actions {\n display: flex;\n justify-content: flex-end;\n margin-top: 6px;\n gap: 8px;\n}\n\n.sage-ai-diff-approval-dialog-embedded .cm-editor {\n border-radius: 0 0 10px 10px !important;\n background: var(--jp-layout-color1) !important;\n}\n\n.sage-ai-diff-hover-buttons {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* Diff action buttons - visible by default */\n.sage-ai-diff-approve-button,\n.sage-ai-diff-reject-button,\n.sage-ai-diff-run-button,\n.sage-ai-diff-reapply-button {\n background-color: transparent;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-weight: bold;\n display: flex;\n align-items: center;\n font-size: 12px;\n padding: 0;\n}\n\n.sage-ai-diff-approve-button:hover,\n.sage-ai-diff-reject-button:hover,\n.sage-ai-diff-run-button:hover,\n.sage-ai-diff-reapply-button:hover {\n transform: scale(1.1);\n transition: transform 0.2s;\n}\n\n/* Disabled button states */\n.sage-ai-diff-approve-button.disabled,\n.sage-ai-diff-reject-button.disabled,\n.sage-ai-diff-run-button.disabled,\n.sage-ai-diff-reapply-button.disabled {\n opacity: 0.6;\n cursor: default;\n pointer-events: none;\n}\n\n.sage-ai-diff-approve-button.disabled:hover,\n.sage-ai-diff-reject-button.disabled:hover,\n.sage-ai-diff-run-button.disabled:hover,\n.sage-ai-diff-reapply-button.disabled:hover {\n transform: none;\n}\n\n/* Button visibility states */\n.sage-ai-diff-approve-button.hidden,\n.sage-ai-diff-reject-button.hidden,\n.sage-ai-diff-run-button.hidden,\n.sage-ai-diff-reapply-button.hidden {\n display: none;\n}\n\n/* Spinner for buttons - visible by default */\n.sage-ai-diff-spinner {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid #f3f3f3;\n border-top: 2px solid #3498db;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n.sage-ai-diff-spinner.hidden {\n display: none;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}',""]);const s=r},7476:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* New Chat Display Widget Styles */\n.sage-ai-new-chat-display {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 2rem;\n height: 100% !important;\n overflow: auto;\n}\n\n.sage-ai-new-chat-container {\n max-width: 400px;\n width: 100%;\n text-align: center;\n justify-self: center;\n}\n\n.sage-ai-new-chat-title-section {\n margin-bottom: 2rem;\n text-align: center !important;\n}\n\n.sage-ai-new-chat-title {\n font-size: 13px;\n font-weight: 400;\n color: var(--jp-ui-font-color2);\n font-size: 13px;\n font-weight: 600;\n color: var(--jp-ui-font-color2);\n margin: 0 0 0.5rem 0;\n text-align: center;\n}\n\n.sage-ai-new-chat-help {\n font-size: 15px;\n font-weight: 500;\n color: var(--jp-ui-font-color0);\n font-size: 16px;\n color: var(--jp-ui-font-color1);\n margin: 0;\n text-align: center;\n font-weight: 600;\n}\n\n.sage-ai-new-chat-prompts-section {\n text-align: left;\n}\n\n.sage-ai-new-chat-prompts-title {\n font-size: 0.9rem;\n font-weight: 500;\n color: var(--jp-ui-font-color2);\n margin: 0 0 1rem 0;\n}\n\n.sage-ai-new-chat-prompts-list {\n display: flex;\n flex-direction: column;\n justify-content: center;\n width: 100%;\n gap: 0.5rem;\n}\n\n.sage-ai-new-chat-prompt-button {\n background: var(--jp-layout-color2);\n border-radius: 12px !important;\n border: none;\n color: var(--jp-ui-font-color0);\n text-align: left;\n cursor: pointer;\n transition: all 0.2s ease;\n line-height: 1.4;\n padding: 4px 14px;\n justify-content: center;\n align-items: center;\n width: fit-content;\n font-size: 13px;\n align-self: center;\n}\n\n.sage-ai-new-chat-prompt-button:hover {\n background: var(--jp-layout-color3);\n border-color: var(--jp-brand-color1);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.sage-ai-new-chat-prompt-button:active {\n transform: translateY(0);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);\n}\n\n.sage-ai-new-chat-prompt-button:focus {\n outline: none;\n border-color: var(--jp-brand-color1);\n box-shadow: 0 0 0 2px rgba(54, 124, 226, 0.2);\n}\n",""]);const s=r},7659:n=>{var o={};n.exports=function(n,e){var a=function(n){if(void 0===o[n]){var e=document.querySelector(n);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(n){e=null}o[n]=e}return o[n]}(n);if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(e)}},7825:n=>{n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var o=n.insertStyleElement(n);return{update:function(e){!function(n,o,e){var a="";e.supports&&(a+="@supports (".concat(e.supports,") {")),e.media&&(a+="@media ".concat(e.media," {"));var t=void 0!==e.layer;t&&(a+="@layer".concat(e.layer.length>0?" ".concat(e.layer):""," {")),a+=e.css,t&&(a+="}"),e.media&&(a+="}"),e.supports&&(a+="}");var i=e.sourceMap;i&&"undefined"!=typeof btoa&&(a+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),o.styleTagTransform(a,n,o.options)}(o,n,e)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(o)}}}},7826:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* Settings Widget Styles */\n\n/* Main settings widget container */\n.sage-ai-settings {\n height: 100%;\n max-height: 100vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.sage-ai-settings-container {\n height: 100%;\n max-height: 100vh;\n overflow-y: auto;\n overflow-x: hidden;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n padding: 0 !important;\n}\n\n/* Ensure codebase manager doesn't break the layout */\n.sage-ai-settings-container > div {\n flex-shrink: 0;\n}\n\n.sage-ai-settings-title {\n margin: 0 0 20px 0;\n color: var(--jp-ui-font-color0);\n flex-shrink: 0; /* Prevent shrinking */\n padding-left: 16px;\n padding-top: 40px;\n}\n\n/* Configuration sections */\n.sage-ai-config-section {\n margin-bottom: 20px;\n padding-left: 20px;\n flex-shrink: 0; /* Prevent shrinking */\n}\n\n.sage-ai-config-title {\n margin-bottom: 15px;\n color: var(--jp-ui-font-color0);\n flex-shrink: 0; /* Prevent shrinking */\n}\n\n/* Form fields */\n.sage-ai-field-container {\n margin-bottom: 15px;\n flex-shrink: 0; /* Prevent shrinking */\n}\n\n.sage-ai-field-label {\n display: block;\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n.sage-ai-field-input {\n width: 100%;\n max-width: 400px;\n padding: 8px;\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n font-size: 14px;\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color0);\n box-sizing: border-box;\n}\n\n/* Database input with refresh button */\n.sage-ai-database-input-container {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sage-ai-database-input {\n flex: 1;\n}\n\n.sage-ai-refresh-button {\n padding: 8px 12px;\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n background-color: var(--jp-layout-color1);\n color: var(--jp-ui-font-color0);\n cursor: pointer;\n font-size: 16px;\n transition: all 0.2s ease;\n min-width: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sage-ai-refresh-button:hover:not(:disabled) {\n background-color: var(--jp-layout-color2);\n border-color: var(--jp-brand-color1);\n}\n\n.sage-ai-refresh-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.sage-ai-refresh-button:active:not(:disabled) {\n transform: rotate(180deg);\n}\n\n/* Cache status */\n.sage-ai-cache-status {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 5px;\n font-size: 12px;\n color: var(--jp-ui-font-color2);\n}\n\n.sage-ai-cache-indicator {\n font-size: 14px;\n}\n\n.sage-ai-cache-indicator.cached {\n color: var(--jp-success-color1);\n}\n\n.sage-ai-cache-indicator.expired {\n color: var(--jp-warn-color1);\n}\n\n.sage-ai-cache-indicator.not-cached {\n color: var(--jp-ui-font-color3);\n}\n\n.sage-ai-cache-text {\n font-family: var(--jp-ui-font-family);\n}\n\n/* Token mode container */\n.sage-token-mode-container {\n margin-bottom: 20px;\n padding-left: 20px;\n flex-shrink: 0; /* Prevent shrinking */\n}\n\n.sage-token-mode-label {\n display: flex;\n align-items: center;\n cursor: pointer;\n}\n\n.sage-token-mode-checkbox {\n margin-right: 8px;\n}\n\n/* Enhanced Database Metadata Spinner */\n.sage-ai-db-metadata-spinner {\n position: relative;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sage-ai-db-spinner-ring {\n position: absolute;\n width: 18px;\n height: 18px;\n border: 2px solid transparent;\n border-top: 2px solid var(--jp-brand-color1);\n border-right: 2px solid var(--jp-brand-color1);\n border-radius: 50%;\n animation: sage-ai-db-spinner-rotate 1.2s linear infinite;\n}\n\n.sage-ai-db-spinner-pulse {\n position: absolute;\n width: 8px;\n height: 8px;\n background: var(--jp-brand-color1);\n border-radius: 50%;\n animation: sage-ai-db-spinner-pulse 1.5s ease-in-out infinite;\n}\n\n@keyframes sage-ai-db-spinner-rotate {\n 0% {\n transform: rotate(0deg);\n border-top-color: var(--jp-brand-color1);\n border-right-color: transparent;\n }\n 25% {\n border-top-color: var(--jp-brand-color1);\n border-right-color: var(--jp-brand-color1);\n }\n 50% {\n transform: rotate(180deg);\n border-top-color: transparent;\n border-right-color: var(--jp-brand-color1);\n }\n 75% {\n border-top-color: var(--jp-brand-color1);\n border-right-color: var(--jp-brand-color1);\n }\n 100% {\n transform: rotate(360deg);\n border-top-color: var(--jp-brand-color1);\n border-right-color: transparent;\n }\n}\n\n@keyframes sage-ai-db-spinner-pulse {\n 0%, 100% {\n transform: scale(0.8);\n opacity: 0.5;\n }\n 50% {\n transform: scale(1.2);\n opacity: 1;\n }\n}\n",""]);const s=r},8363:(n,o,e)=>{var a=e(5072),t=e.n(a),i=e(7825),r=e.n(i),s=e(7659),l=e.n(s),p=e(5056),d=e.n(p),c=e(540),g=e.n(c),f=e(1113),u=e.n(f),x=e(5248),b={};b.styleTagTransform=u(),b.setAttributes=d(),b.insert=l().bind(null,"head"),b.domAPI=r(),b.insertStyleElement=g(),t()(x.A,b),x.A&&x.A.locals&&x.A.locals;var m=e(8475),h={};h.styleTagTransform=u(),h.setAttributes=d(),h.insert=l().bind(null,"head"),h.domAPI=r(),h.insertStyleElement=g(),t()(m.A,h),m.A&&m.A.locals&&m.A.locals;var v=e(8789),y={};y.styleTagTransform=u(),y.setAttributes=d(),y.insert=l().bind(null,"head"),y.domAPI=r(),y.insertStyleElement=g(),t()(v.A,y),v.A&&v.A.locals&&v.A.locals;var j=e(7439),w={};w.styleTagTransform=u(),w.setAttributes=d(),w.insert=l().bind(null,"head"),w.domAPI=r(),w.insertStyleElement=g(),t()(j.A,w),j.A&&j.A.locals&&j.A.locals;var k=e(1346),z={};z.styleTagTransform=u(),z.setAttributes=d(),z.insert=l().bind(null,"head"),z.domAPI=r(),z.insertStyleElement=g(),t()(k.A,z),k.A&&k.A.locals&&k.A.locals;var M=e(4246),A={};A.styleTagTransform=u(),A.setAttributes=d(),A.insert=l().bind(null,"head"),A.domAPI=r(),A.insertStyleElement=g(),t()(M.A,A),M.A&&M.A.locals&&M.A.locals;var D=e(5433),N={};N.styleTagTransform=u(),N.setAttributes=d(),N.insert=l().bind(null,"head"),N.domAPI=r(),N.insertStyleElement=g(),t()(D.A,N),D.A&&D.A.locals&&D.A.locals;var I=e(6785),S={};S.styleTagTransform=u(),S.setAttributes=d(),S.insert=l().bind(null,"head"),S.domAPI=r(),S.insertStyleElement=g(),t()(I.A,S),I.A&&I.A.locals&&I.A.locals;var T=e(7476),E={};E.styleTagTransform=u(),E.setAttributes=d(),E.insert=l().bind(null,"head"),E.domAPI=r(),E.insertStyleElement=g(),t()(T.A,E),T.A&&T.A.locals&&T.A.locals;var L=e(3114),O={};O.styleTagTransform=u(),O.setAttributes=d(),O.insert=l().bind(null,"head"),O.domAPI=r(),O.insertStyleElement=g(),t()(L.A,O),L.A&&L.A.locals&&L.A.locals;var C=e(5544),Y={};Y.styleTagTransform=u(),Y.setAttributes=d(),Y.insert=l().bind(null,"head"),Y.domAPI=r(),Y.insertStyleElement=g(),t()(C.A,Y),C.A&&C.A.locals&&C.A.locals;var U=e(7342),Q={};Q.styleTagTransform=u(),Q.setAttributes=d(),Q.insert=l().bind(null,"head"),Q.domAPI=r(),Q.insertStyleElement=g(),t()(U.A,Q),U.A&&U.A.locals&&U.A.locals;var P=e(7826),B={};B.styleTagTransform=u(),B.setAttributes=d(),B.insert=l().bind(null,"head"),B.domAPI=r(),B.insertStyleElement=g(),t()(P.A,B),P.A&&P.A.locals&&P.A.locals;var R=e(9508),H={};H.styleTagTransform=u(),H.setAttributes=d(),H.insert=l().bind(null,"head"),H.domAPI=r(),H.insertStyleElement=g(),t()(R.A,H),R.A&&R.A.locals&&R.A.locals;var G=e(844),J={};J.styleTagTransform=u(),J.setAttributes=d(),J.insert=l().bind(null,"head"),J.domAPI=r(),J.insertStyleElement=g(),t()(G.A,J),G.A&&G.A.locals&&G.A.locals;var F=e(2331),W={};W.styleTagTransform=u(),W.setAttributes=d(),W.insert=l().bind(null,"head"),W.domAPI=r(),W.insertStyleElement=g(),t()(F.A,W),F.A&&F.A.locals&&F.A.locals;var _=e(5943),X={};X.styleTagTransform=u(),X.setAttributes=d(),X.insert=l().bind(null,"head"),X.domAPI=r(),X.insertStyleElement=g(),t()(_.A,X),_.A&&_.A.locals&&_.A.locals;var q=e(3342),Z={};Z.styleTagTransform=u(),Z.setAttributes=d(),Z.insert=l().bind(null,"head"),Z.domAPI=r(),Z.insertStyleElement=g(),t()(q.A,Z),q.A&&q.A.locals&&q.A.locals},8475:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/*\n See the JupyterLab Developer Guide for useful CSS Patterns:\n\n https://jupyterlab.readthedocs.io/en/stable/developer/css.html\n*/\n\n:root {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-smooth: never;\n\n --jp-ui-font-size0: 0.75em !important;\n --jp-ui-font-size1: 11.7px !important;\n --jp-ui-font-size2: 1.08em !important;\n --jp-ui-font-size3: 1.296em !important;\n --jp-code-font-size: 11.7px !important;\n}\n\n/* Dark mode override for jp-layout-color2 */\n[data-jp-theme-light='false'] {\n --jp-layout-color2: #232323 !important;\n --jp-border-color3: #383838 !important;\n}\n\n/* Chat box widget styling */\n.sage-ai-chatbox {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color1);\n font-family: var(--jp-ui-font-family);\n border-radius: 12px;\n border: 0.5px solid var(--jp-border-color2);\n box-shadow: 0 0 20px 8px rgb(0 0 0 / 10%);\n}\n\n[data-jp-theme-light='false'] .sage-ai-chatbox {\n background-color: #1a1a1a;\n}\n\n[data-jp-theme-light='true'] .sage-ai-chatbox {\n background-color: #fff;\n}\n\n[data-jp-theme-light='false'] .sage-ai-chatbox {\n background-color: #1a1a1a;\n}\n\n[data-jp-theme-light='true'] .sage-ai-chatbox {\n background-color: #fff;\n}\n\n.sage-ai-chat-container {\n width: 100%;\n padding: 6px;\n}\n\n.sage-ai-toolbar {\n display: flex;\n align-items: center;\n padding: 8px;\n border-bottom: 1px solid var(--jp-border-color2);\n height: 53px;\n}\n\n.sage-ai-more-options-button {\n margin-left: 8px;\n}\n\n/* Autorun checkbox container styling */\n.sage-ai-checkbox-container {\n display: flex;\n align-items: center;\n margin-right: 4px;\n padding: 0 2px;\n font-size: var(--jp-ui-font-size0);\n}\n\n.sage-ai-checkbox {\n margin-right: 5px;\n cursor: pointer;\n width: 16px;\n height: 16px;\n}\n\n.sage-ai-checkbox-label {\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n user-select: none;\n font-size: 14px;\n line-height: 4px;\n}\n\n.sage-ai-checkbox-container:hover .sage-ai-checkbox-label {\n color: var(--jp-ui-font-color0);\n}\n\n/* Common styles for buttons and controls */\n.sage-ai-control-base {\n border: 0.5px solid #e7e7e7;\n border-radius: 6px !important;\n background: transparent;\n transition: all 0.2s ease;\n}\n\n[data-jp-theme-light='false'] .sage-ai-control-base {\n border-color: #383838;\n}\n\n.sage-ai-control-base:hover:not(:disabled) {\n border-color: #666;\n}\n\n/* Auto Run Toggle Switch Styles */\n.sage-ai-autorun-toggle {\n padding: 0 10px;\n margin-right: 8px;\n height: 30px;\n min-width: 89px;\n}\n\n.sage-ai-autorun-toggle .sage-ai-toggle-input {\n display: none; /* Hide the actual checkbox */\n}\n\n.sage-ai-toggle-label {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n margin: 0;\n font-size: 13px;\n color: var(--jp-ui-font-color1);\n user-select: none;\n}\n\n.sage-ai-toggle-switch {\n position: relative;\n width: 28px;\n height: 16px;\n background: #494949;\n border-radius: 8px;\n transition: background-color 0.3s ease;\n flex-shrink: 0;\n}\n\n.sage-ai-toggle-switch::before {\n content: '';\n position: absolute;\n top: 1px;\n left: 1px;\n width: 14px;\n height: 14px;\n background: white;\n border-radius: 50%;\n transition: transform 0.3s ease;\n}\n\n/* Active state styles */\n.sage-ai-toggle-input:checked + .sage-ai-toggle-label .sage-ai-toggle-switch {\n background: #4caf50;\n}\n\n.sage-ai-toggle-input:checked\n + .sage-ai-toggle-label\n .sage-ai-toggle-switch::before {\n transform: translateX(12px);\n}\n\n/* Hover effects */\n.sage-ai-autorun-toggle:hover .sage-ai-toggle-label {\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-reset-button {\n box-sizing: border-box;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 8px;\n gap: 6px;\n width: 32px;\n height: 32px;\n flex: none;\n flex-grow: 0;\n cursor: pointer;\n}\n\n.sage-ai-history-container {\n flex: 1;\n overflow: hidden;\n padding-bottom: 20px; /* Reverted to default, now handled dynamically */\n display: flex;\n}\n\n.sage-ai-history-container.floating-box-visible {\n padding-top: 0 !important;\n}\n\n.sage-ai-scroll-down-button {\n position: absolute;\n width: 100%;\n align-items: center;\n -webkit-animation: sage-ai-vert-move 1s infinite alternate;\n animation: sage-ai-vert-move 1s infinite alternate;\n padding: 0;\n margin: 0;\n outline: none;\n border: none;\n background: none;\n cursor: pointer;\n}\n\n.sage-ai-scroll-down-button.hidden {\n display: none;\n}\n\n@keyframes sage-ai-vert-move {\n 0% {\n transform: translateY(0);\n }\n\n 100% {\n transform: translateY(5px);\n }\n}\n\n@keyframes sage-ai-vert-move {\n 0% {\n transform: translateY(0);\n }\n\n 100% {\n transform: translateY(5px);\n }\n}\n\n.sage-ai-scroll-down-button svg {\n border-radius: 50%;\n padding: 2px;\n align-items: center;\n backdrop-filter: blur(10px);\n}\n\n.sage-ai-chat-history {\n flex: 1;\n height: 100%;\n overflow-y: auto;\n\n /* Ensure scrolling works properly with the increased bottom padding */\n scroll-behavior: smooth;\n padding: 0 12px;\n}\n\n.jp-Cell {\n margin-top: 28px !important;\n}\n\n.sage-ai-rich-chat-input {\n margin-bottom: 42px;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n.sage-ai-rich-chat-input::-webkit-scrollbar {\n width: 0;\n height: 0;\n}\n\n.sage-ai-in-context-cell .jp-Editor {\n border: 1px solid #16bd16 !important;\n border-radius: 2px;\n box-shadow: 0 0 3px rgb(22 189 22 / 20%);\n}\n\n/* New chatbox wrapper for structured input layout */\n.sage-ai-chatbox-wrapper {\n flex: 1;\n border-radius: 8px;\n padding: 1px; /* This creates the border width */\n background: var(--jp-border-color1); /* Default border color */\n display: flex;\n flex-direction: column;\n}\n\n.sage-ai-chatbox-wrapper:focus-within {\n background: conic-gradient(\n from 24deg,\n #a7d8f0,\n #ff9270 14%,\n #fdf0b2 28%,\n #a5ddf4 42%,\n #8521ca 56%,\n #fbf4c8 70%,\n #b169e8 85%,\n #a7d8f0 100%\n );\n}\n\n.sage-ai-input-container {\n z-index: 2;\n display: flex;\n padding: 10px;\n\n /* background-color: var(--jp-layout-color1); */\n background: transparent;\n position: relative;\n}\n\n/* Context row (first row) */\n.sage-ai-context-row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 12px 4px;\n background-color: var(--jp-layout-color0);\n border-radius: 7px 7px 0 0;\n min-height: 24px;\n flex-wrap: wrap;\n\n /* border-bottom: 1px solid var(--jp-border-color2); */\n}\n\n/* Hide context row when no contexts and hide border */\n.sage-ai-context-row:has(.sage-ai-context-display-inline.hidden) {\n display: none;\n}\n\n.sage-ai-context-row:has(.sage-ai-context-display-inline.hidden)\n + .sage-ai-input-row {\n border-radius: 7px;\n}\n\n.sage-ai-context-row:has(.sage-ai-context-display-inline.hidden)\n + .sage-ai-input-row\n .sage-ai-rich-chat-input-wrapper {\n border-radius: 7px;\n}\n\n.sage-ai-context-row:has(.sage-ai-context-display-inline.hidden)\n + .sage-ai-input-row\n .sage-ai-rich-chat-input {\n border-radius: 7px;\n}\n\n/* Alternative fallback for browsers that don't support :has() */\n.sage-ai-context-row.context-row-hidden {\n display: none;\n}\n\n.sage-ai-context-row.context-row-hidden + .sage-ai-input-row {\n border-radius: 7px;\n}\n\n.sage-ai-context-row.context-row-hidden\n + .sage-ai-input-row\n .sage-ai-rich-chat-input-wrapper {\n border-radius: 7px;\n}\n\n.sage-ai-context-row.context-row-hidden\n + .sage-ai-input-row\n .sage-ai-rich-chat-input {\n border-radius: 7px;\n}\n\n.sage-ai-context-text {\n margin: 0;\n font-size: 11px;\n font-weight: 500;\n line-height: 160%;\n}\n\n.sage-ai-at-icon {\n height: 13px;\n margin-right: 5px;\n transform: translateY(-3px);\n}\n\n/* Add Context button */\n.sage-ai-add-context-button {\n border: 1px solid var(--jp-border-color2);\n border-radius: 6px !important;\n color: var(--jp-ui-font-color2);\n cursor: pointer;\n padding: 3px 8px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n flex-shrink: 0;\n background: var(--jp-layout-color0);\n}\n\n.sage-ai-add-context-button:hover {\n border-color: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n\n /* background-color: var(--jp-brand-color3); */\n}\n\n.sage-ai-add-context-button:hover .sage-ai-at-icon svg path {\n stroke: var(--jp-ui-font-color1);\n}\n\n/* Inline context display */\n.sage-ai-context-display-inline {\n flex: 1;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 4px;\n min-height: 24px;\n}\n\n.sage-ai-context-display-inline.hidden {\n display: none;\n}\n\n.sage-ai-context-items-inline {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 4px;\n width: 100%;\n}\n\n/* Inline context cell boxes */\n.sage-ai-context-cell-box-inline {\n background: #e6f7ff;\n color: #1976d2;\n border: 1px solid #1976d2;\n border-radius: 4px;\n font-size: 11px;\n padding: 2px 6px;\n display: inline-flex;\n align-items: center;\n position: relative;\n gap: 4px;\n transition: all 0.2s;\n font-weight: 500;\n max-width: 120px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.sage-ai-context-cell-box-inline:hover {\n box-shadow: 0 1px 4px rgb(25 118 210 / 20%);\n}\n\n/* Input row (second row) */\n.sage-ai-input-row {\n display: flex;\n align-items: flex-end;\n position: relative;\n background-color: var(--jp-layout-color0);\n border-radius: 0 0 7px 7px;\n}\n\n/* Rich text input wrapper for gradient border - updated for new structure */\n.sage-ai-rich-chat-input-wrapper {\n flex: 1;\n border: none; /* Remove border since chatbox-wrapper provides it */\n border-radius: 0 0 7px 7px;\n padding: 0; /* Remove padding since wrapper handles it */\n background: transparent; /* Transparent since chatbox-wrapper handles background */\n}\n\n.sage-ai-rich-chat-input-wrapper:focus-within {\n background: transparent; /* Let the parent handle the gradient */\n}\n\n/* Rich text input styling - updated for new structure */\n.sage-ai-rich-chat-input {\n border: none; /* Remove border since wrapper provides it */\n border-radius: 0 0 7px 7px; /* Match the wrapper radius */\n padding: 12px;\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color1);\n font-size: var(--jp-ui-font-size1);\n font-family: var(--jp-ui-font-family);\n resize: none;\n overflow-y: hidden;\n min-height: 8px;\n max-height: 240px;\n line-height: 1.5;\n transition: height 0.1s ease;\n white-space: pre-wrap;\n word-wrap: break-word;\n word-break: break-word;\n}\n\n[data-jp-theme-light='true'] .sage-ai-rich-chat-input {\n background-color: #fcfcfc;\n}\n\n.sage-ai-rich-chat-input:focus {\n outline: none;\n\n /* Remove the old focus styles since wrapper handles the border */\n}\n\n.sage-ai-new-prompt-cta {\n display: flex;\n flex-flow: row wrap;\n width: 100%;\n align-items: center;\n justify-content: center;\n gap: 6px;\n margin-bottom: 12px;\n color: var(--jp-ui-font-color2);\n}\n\n.sage-ai-new-prompt-cta p {\n text-wrap: nowrap !important;\n margin: 0 !important;\n}\n\n.sage-ai-new-prompt-cta a {\n color: var(--jp-ui-font-color0);\n font-weight: 600;\n font-size: 13px;\n cursor: pointer;\n text-wrap: nowrap !important;\n}\n\n/* Placeholder styling for rich text input */\n.sage-ai-rich-chat-input.empty::before {\n content: attr(data-placeholder);\n color: var(--jp-ui-font-color2);\n pointer-events: none;\n position: absolute;\n transform: translateY(0);\n}\n\n/* Mention styling with different colors for different types */\n.sage-ai-mention {\n font-weight: 600;\n border-radius: 3px;\n padding: 1px 3px;\n margin: 0 1px;\n white-space: nowrap;\n}\n\n.sage-ai-mention-template {\n background-color: rgb(156 39 176 / 10%);\n color: #9c27b0;\n border: 1px solid rgb(156 39 176 / 30%);\n}\n\n.sage-ai-mention-data {\n background-color: rgb(33 150 243 / 10%);\n color: #2196f3;\n border: 1px solid rgb(33 150 243 / 30%);\n}\n\n.sage-ai-mention-variable {\n background-color: rgb(76 175 80 / 10%);\n color: #4caf50;\n border: 1px solid rgb(76 175 80 / 30%);\n}\n\n.sage-ai-mention-cell {\n background-color: rgb(255 152 0 / 10%);\n color: #ff9800;\n border: 1px solid rgb(255 152 0 / 30%);\n}\n\n.sage-ai-mention-default {\n background-color: rgb(96 125 139 / 10%);\n color: #607d8b;\n border: 1px solid rgb(96 125 139 / 30%);\n}\n\n.sage-ai-mention-broken {\n background-color: rgb(244 67 54 / 10%);\n color: #f44336;\n border: 1px solid rgb(244 67 54 / 30%);\n text-decoration: line-through;\n}\n\n/* Dark theme adjustments for mentions */\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mention-template {\n background-color: rgb(156 39 176 / 20%);\n color: #ce93d8;\n}\n\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mention-data {\n background-color: rgb(33 150 243 / 20%);\n color: #90caf9;\n}\n\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mention-variable {\n background-color: rgb(76 175 80 / 20%);\n color: #a5d6a7;\n}\n\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mention-cell {\n background-color: rgb(255 152 0 / 20%);\n color: #ffcc02;\n}\n\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mention-default {\n background-color: rgb(96 125 139 / 20%);\n color: #b0bec5;\n}\n\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mention-broken {\n background-color: rgb(244 67 54 / 20%);\n color: #ef5350;\n}\n\n.sage-ai-send-button,\n.sage-ai-cancel-button {\n background: var(--jp-inverse-layout-color1);\n color: var(--jp-ui-font-color1);\n border: none;\n padding: 6px;\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n transition: background-color 0.2s;\n width: 28px;\n height: 28px;\n border-radius: 50% !important;\n}\n\n.sage-ai-cancel-button {\n background: var(--jp-inverse-layout-color0) !important;\n}\n\n.sage-ai-cancel-button svg rect {\n fill: var(--jp-ui-inverse-font-color1) !important;\n}\n\n.sage-ai-send-button.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.sage-ai-send-button.enabled {\n background-color: var(--jp-inverse-layout-color0);\n cursor: pointer;\n}\n\n.sage-ai-send-button svg {\n width: 16px;\n height: 16px;\n}\n\n.sage-ai-send-button.enabled svg path {\n stroke: var(--jp-ui-inverse-font-color0) !important;\n}\n\n.sage-ai-message {\n padding: 8px;\n border-radius: 14px;\n max-width: 100%;\n word-wrap: break-word;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.sage-ai-user-message {\n margin: 8px 0;\n padding: 10px;\n justify-self: end;\n max-width: 70%;\n border: 1px solid var(--jp-border-color2);\n}\n\n.sage-ai-system-message {\n color: var(--jp-ui-font-color2);\n font-style: italic;\n justify-content: center;\n align-items: center;\n padding: 4px;\n}\n\n.sage-ai-error-message {\n color: var(--jp-error-color1);\n font-style: italic;\n justify-content: center;\n padding: 4px;\n background-color: var(--jp-error-color3);\n border-left: 3px solid var(--jp-error-color1);\n}\n\n/* Revert and Send button style */\n.sage-ai-revert-send-button {\n background-color: var(--jp-warn-color1);\n color: white;\n border: none;\n border-radius: 4px;\n padding: 8px 16px;\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n transition: background-color 0.2s;\n opacity: 1;\n}\n\n.sage-ai-revert-send-button:hover {\n background-color: var(--jp-warn-color0);\n}\n\n.sage-ai-revert-send-button:disabled {\n background-color: var(--jp-warn-color3);\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.sage-ai-revert-send-button.hidden {\n display: none;\n}\n\n.sage-ai-loading {\n color: var(--jp-ui-font-color3);\n font-style: italic;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n gap: 10px;\n}\n\n.sage-ai-loading-dots {\n display: inline-block;\n position: relative;\n width: 40px;\n height: 12px;\n}\n\n.sage-ai-loading-dots span {\n position: absolute;\n top: 0;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--jp-info-color0);\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.sage-ai-loading-dots span:nth-child(1) {\n left: 0;\n animation: sage-ai-loading-dots1 0.6s infinite;\n}\n\n.sage-ai-loading-dots span:nth-child(2) {\n left: 10px;\n animation: sage-ai-loading-dots2 0.6s infinite;\n}\n\n.sage-ai-loading-dots span:nth-child(3) {\n left: 20px;\n animation: sage-ai-loading-dots2 0.6s infinite;\n}\n\n.sage-ai-loading-dots span:nth-child(4) {\n left: 30px;\n animation: sage-ai-loading-dots3 0.6s infinite;\n}\n\n@keyframes sage-ai-loading-dots1 {\n 0% {\n transform: scale(0);\n }\n\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes sage-ai-loading-dots2 {\n 0% {\n transform: translate(0, 0);\n }\n\n 100% {\n transform: translate(10px, 0);\n }\n}\n\n@keyframes sage-ai-loading-dots3 {\n 0% {\n transform: scale(1);\n }\n\n 100% {\n transform: scale(0);\n }\n}\n\n.sage-ai-blob-loader {\n position: relative;\n width: 15px;\n height: 15px;\n border-radius: 50%;\n background: linear-gradient(135deg, #0057c8, #207fd7, #42d9ff);\n background-size: 300% 300%;\n animation:\n ellipseAnimation 2s linear infinite,\n gradientShift 2s ease-in-out infinite;\n}\n\n/* Blob morphing and rotating animation */\n@keyframes ellipseAnimation {\n 0% {\n border-radius: 50%;\n }\n\n 12.5% {\n border-radius: 25% 50% 50%;\n transform: rotate(45deg);\n }\n\n 25% {\n border-radius: 25% 25% 50% 50%;\n transform: rotate(90deg);\n }\n\n 37.5% {\n border-radius: 25% 25% 25% 50%;\n transform: rotate(135deg);\n }\n\n 50% {\n border-radius: 25%;\n transform: rotate(180deg);\n }\n\n 62.5% {\n border-radius: 50% 25% 25%;\n transform: rotate(225deg);\n }\n\n 75% {\n border-radius: 50% 50% 25% 25%;\n transform: rotate(270deg);\n }\n\n 87.5% {\n border-radius: 50% 50% 50% 25%;\n transform: rotate(315deg);\n }\n\n 100% {\n border-radius: 50%;\n transform: rotate(360deg);\n }\n}\n\n/* Smooth shifting gradient animation */\n@keyframes gradientShift {\n 0% {\n background-position: 0% 50%;\n }\n\n 50% {\n background-position: 100% 50%;\n }\n\n 100% {\n background-position: 0% 50%;\n }\n}\n\n.sage-ai-tool-calls {\n margin: 8px 0;\n padding: 8px;\n border-left: 3px solid var(--jp-brand-color1);\n background-color: var(--jp-layout-color2);\n border-radius: 4px;\n}\n\n.sage-ai-tool-calls-header {\n margin-bottom: 8px;\n font-weight: bold;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.sage-ai-tool-calls-header::after {\n content: '▼';\n font-size: 12px;\n transition: transform 0.2s ease;\n}\n\n.sage-ai-tool-calls-header.collapsed::after {\n transform: rotate(-90deg);\n}\n\n.sage-ai-tool-calls-content {\n overflow: hidden;\n transition: max-height 0.3s ease;\n}\n\n.sage-ai-tool-calls-content.collapsed {\n max-height: 0;\n}\n\n.sage-ai-tool-call {\n margin-bottom: 8px;\n padding: 4px 0;\n}\n\n.sage-ai-tool-call-badge {\n display: inline-block;\n\n /* color: white; */\n margin-right: 8px;\n font-size: 12px;\n}\n\n.sage-ai-tool-call-content {\n background-color: var(--jp-layout-color1);\n border-radius: 4px;\n padding: 8px;\n margin-top: 4px;\n font-family: monospace;\n font-size: 12px;\n overflow-x: auto;\n}\n\n.sage-ai-tool-result {\n margin: 8px 0;\n padding: 8px;\n border-left: 3px solid var(--jp-success-color0);\n background-color: var(--jp-layout-color2);\n border-radius: 4px;\n}\n\n.sage-ai-tool-result-header {\n margin-bottom: 8px;\n font-weight: bold;\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-tool-result-content {\n background-color: var(--jp-layout-color1);\n border-radius: 4px;\n padding: 8px;\n margin-top: 4px;\n font-family: monospace;\n font-size: 12px;\n overflow-x: auto;\n}\n\n.sage-ai-streaming-cursor {\n display: inline-block;\n height: 12px;\n width: 12px;\n border-radius: 50%;\n margin-left: 4px;\n vertical-align: middle;\n margin-bottom: 4px;\n background-color: var(--jp-ui-font-color1);\n animation: blink 1s infinite;\n}\n\n@keyframes blink {\n 0%,\n 50% {\n opacity: 1;\n }\n\n 51%,\n 100% {\n opacity: 0;\n }\n}\n\n.sage-ai-streaming-tool-call {\n opacity: 0.9;\n transition: opacity 0.3s ease;\n}\n\n.sage-ai-streaming-tool-call-container {\n background-color: var(--jp-layout-color2);\n border-radius: 4px;\n padding: 8px;\n margin: 4px 0;\n border-left: 3px solid var(--jp-brand-color1);\n}\n\n.sage-ai-streaming-tool-call-placeholder {\n color: var(--jp-ui-font-color2);\n font-style: italic;\n padding: 8px;\n text-align: center;\n background-color: var(--jp-layout-color1);\n border-radius: 4px;\n border: 1px dashed var(--jp-border-color1);\n}\n\n.sage-ai-streaming-tool-call-container .sage-ai-tool-call-v1 {\n margin-bottom: 8px;\n animation: fadeInUp 0.3s ease;\n}\n\n.sage-ai-streaming-tool-call-container .sage-ai-tool-call-v1:last-child {\n margin-bottom: 0;\n}\n\n@keyframes fadeInUp {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.sage-ai-streaming-content {\n font-family: var(--jp-ui-font-family);\n line-height: 1.5;\n}\n\n/* Improve code block rendering during streaming */\n.sage-ai-streaming-content code {\n font-family: var(--jp-code-font-family);\n background-color: var(--jp-layout-color2);\n padding: 2px 4px;\n border-radius: 3px;\n}\n\n/* Ensure the streaming content expands properly */\n.sage-ai-message-content {\n width: 100%;\n}\n\n.sage-ai-tool-group {\n margin: 8px 0;\n padding: 8px;\n\n /* border-left: 3px solid var(--jp-brand-color1); */\n background-color: var(--jp-layout-color2);\n border-radius: 4px;\n}\n\n.sage-ai-tool-group-header {\n margin-bottom: 8px;\n font-weight: bold;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.sage-ai-tool-group-header::after {\n content: '▼';\n font-size: 12px;\n transition: transform 0.2s ease;\n}\n\n.sage-ai-tool-group-header.collapsed::after {\n transform: rotate(-90deg);\n}\n\n.sage-ai-tool-group-content {\n overflow: hidden;\n transition: max-height 0.3s ease;\n}\n\n.sage-ai-tool-group-content.collapsed {\n max-height: 0;\n}\n\n.sage-ai-tool-item {\n margin-bottom: 12px;\n border-bottom: 1px solid var(--jp-border-color1);\n padding-bottom: 12px;\n}\n\n.sage-ai-tool-item:last-child {\n margin-bottom: 0;\n border-bottom: none;\n padding-bottom: 0;\n}\n\n.sage-ai-tool-item-header {\n display: flex;\n align-items: center;\n margin-bottom: 4px;\n padding: 0;\n font-weight: bold;\n flex-flow: row wrap;\n place-content: center space-between;\n width: 100%;\n}\n\n.sage-ai-tool-timestamp {\n margin-left: 10px;\n font-size: 11px;\n color: var(--jp-ui-font-color2);\n font-style: italic;\n font-weight: normal;\n}\n\n.sage-ai-tool-call .sage-ai-tool-call-content,\n.sage-ai-tool-result .sage-ai-tool-result-content {\n background-color: var(--jp-layout-color1);\n border-radius: 4px;\n padding: 8px;\n margin-top: 4px;\n font-family: monospace;\n font-size: 12px;\n overflow-x: auto;\n}\n\n/* Add this to your existing CSS */\n\n.sage-ai-dropdown-indicator {\n margin-left: auto;\n font-size: 12px;\n transition: transform 0.2s ease;\n}\n\n.sage-ai-tool-item-header {\n display: flex;\n align-items: center;\n cursor: pointer;\n user-select: none;\n border-radius: 4px;\n}\n\n.sage-ai-tool-item-header:hover {\n background-color: var(--jp-layout-color2);\n}\n\n.sage-ai-tool-item-header.collapsed .sage-ai-dropdown-indicator {\n transform: rotate(-90deg);\n}\n\n.sage-ai-tool-call-content,\n.sage-ai-tool-result-content {\n max-height: 500px;\n overflow: auto;\n transition:\n max-height 0.3s ease,\n opacity 0.3s ease;\n opacity: 1;\n}\n\n.sage-ai-tool-call-content.collapsed,\n.sage-ai-tool-result-content.collapsed {\n max-height: 0;\n overflow: hidden;\n opacity: 0;\n margin: 0;\n padding: 0;\n}\n\n/* Tool group styling */\n.sage-ai-tool-group-title {\n font-weight: bold;\n color: var(--jp-ui-font-color0);\n margin-bottom: 8px;\n padding: 4px 8px;\n background-color: var(--jp-layout-color2);\n border-radius: 4px 4px 0 0;\n border-bottom: 1px solid var(--jp-border-color1);\n}\n\n/* Make sure there's no lingering collapse functionality */\n.sage-ai-tool-group-content {\n display: block;\n overflow: visible;\n max-height: none;\n}\n\n.sage-ai-undo-button {\n box-sizing: border-box;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 8px;\n gap: 6px;\n width: 32px;\n height: 32px;\n flex: none;\n flex-grow: 0;\n cursor: pointer;\n margin-right: 8px;\n}\n\n.sage-ai-undo-button:disabled {\n opacity: 0.4;\n background-color: rgb(0 0 0 / 10%);\n cursor: not-allowed;\n}\n\n.sage-ai-icon-close {\n font-size: 16px;\n}\n\n.sage-ai-icon-button-sm,\n.sage-ai-icon-button-md {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: transparent;\n color: #949494;\n line-height: 0;\n border: none;\n cursor: pointer;\n padding: 0;\n border-radius: 50% !important;\n width: 24px;\n height: 24px;\n transition: background-color 0.2s ease;\n}\n\n.sage-ai-icon-button-sm {\n width: 20px;\n height: 20px;\n}\n\n.sage-ai-icon-button-md {\n width: 36px;\n height: 36px;\n}\n\n.sage-ai-icon-button-sm:hover,\n.sage-ai-icon-button-md:hover {\n background-color: var(--jp-layout-color2);\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n transition: background-color 0.2s;\n}\n\n.sage-ai-undo-button:disabled {\n background-color: var(--jp-layout-color3);\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.sage-ai-undo-button:hover:not(:disabled) {\n background-color: var(--jp-brand-color1);\n}\n\n/* Thread selector styling */\n.sage-ai-thread-selector {\n background-color: transparent;\n border: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n padding: 4px;\n font-size: 14px;\n display: flex;\n align-items: center;\n border-radius: 4px;\n margin-right: 8px;\n}\n\n.sage-ai-thread-selector:hover {\n background-color: var(--jp-layout-color3);\n}\n\n.sage-ai-thread-selector svg {\n width: 24px;\n height: 24px;\n}\n\n.sage-ai-thread-selector-button {\n margin-right: 4px;\n}\n\n.sage-ai-thread-name {\n flex: 1;\n align-content: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 600;\n font-size: var(--jp-ui-font-size1);\n}\n\n.d2h-file-header {\n display: none !important;\n}\n\n.d2h-file-wrapper {\n margin-bottom: 0 !important;\n}\n\n.d2h-info {\n display: none !important;\n}\n\n.jp-Notebook-footer {\n display: none !important;\n}\n\n/* Markdown Content Styling */\n.sage-ai-markdown-content {\n line-height: 1.6;\n margin-left: 0 !important;\n margin-top: 4px;\n}\n\n.sage-ai-markdown-content h1,\n.sage-ai-markdown-content h2,\n.sage-ai-markdown-content h3,\n.sage-ai-markdown-content h4,\n.sage-ai-markdown-content h5,\n.sage-ai-markdown-content h6 {\n margin-top: 1em;\n margin-bottom: 0.5em;\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-markdown-content h1 {\n font-size: 1.8em;\n}\n\n.sage-ai-markdown-content h2 {\n font-size: 1.6em;\n}\n\n.sage-ai-markdown-content h3 {\n font-size: 1.4em;\n}\n\n.sage-ai-markdown-content h4 {\n font-size: 1.2em;\n}\n\n.sage-ai-markdown-content h5 {\n font-size: 1.1em;\n}\n\n.sage-ai-markdown-content h6 {\n font-size: 1em;\n}\n\n.sage-ai-markdown-content p {\n margin: 0;\n}\n\n.sage-ai-markdown-content ul,\n.sage-ai-markdown-content ol {\n padding-left: 2em;\n margin: 4px;\n}\n\n.sage-ai-markdown-content ul {\n list-style-type: disc;\n}\n\n.sage-ai-markdown-content ol {\n list-style-type: decimal;\n}\n\n.sage-ai-markdown-content li {\n margin: 0.3em 0;\n}\n\n.sage-ai-markdown-content a {\n color: var(--jp-brand-color1);\n text-decoration: none;\n}\n\n.sage-ai-markdown-content a:hover {\n text-decoration: underline;\n}\n\n.sage-ai-markdown-content blockquote {\n border-left: 4px solid var(--jp-border-color2);\n padding-left: 1em;\n margin: 1em 0;\n color: var(--jp-ui-font-color2);\n}\n\n.sage-ai-markdown-content code {\n font-family: var(--jp-code-font-family);\n background-color: var(--jp-layout-color2);\n padding: 2px 4px;\n border-radius: 3px;\n}\n\n.sage-ai-markdown-content pre {\n background-color: var(--jp-layout-color2);\n border-radius: 8px;\n padding: 1em;\n overflow-x: auto;\n margin: 1em 0;\n position: relative;\n}\n\n.sage-ai-markdown-content pre code {\n background-color: transparent;\n padding: 0;\n font-size: 0.9em;\n white-space: pre;\n}\n\n.sage-ai-markdown-content table {\n border-collapse: collapse;\n width: 100%;\n margin: 1em 0;\n}\n\n.sage-ai-markdown-content th,\n.sage-ai-markdown-content td {\n border: 1px solid var(--jp-border-color2);\n padding: 8px;\n text-align: left;\n}\n\n.sage-ai-markdown-content th {\n background-color: var(--jp-layout-color2);\n font-weight: bold;\n}\n\n.sage-ai-markdown-content img {\n max-width: 100%;\n height: auto;\n}\n\n/* Code Block Container */\n.sage-ai-code-block-container {\n position: relative;\n margin: 1em 0;\n}\n\n/* Copy Code Button */\n.sage-ai-copy-code-button {\n position: absolute;\n top: 5px;\n right: 5px;\n background-color: transparent;\n color: var(--jp-ui-font-color1);\n border: none;\n border-radius: 4px;\n padding: 4px 8px;\n font-size: 12px;\n cursor: pointer;\n opacity: 0.7;\n transition: opacity 0.2s;\n}\n\n.sage-ai-copy-code-button:hover {\n opacity: 1;\n}\n\n/* Message structure */\n.sage-ai-message-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.sage-ai-message-header-image {\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(\n 135deg,\n rgb(254 193 99 / 12%) 0%,\n rgb(222 67 19 / 12%) 100%\n );\n height: 27px;\n width: 27px;\n flex-shrink: 0;\n border-radius: 50%;\n}\n\n.sage-ai-message-header-title {\n color: var(--jp-ui-font-color2);\n font-size: var(--jp-ui-font-size1);\n font-weight: 500;\n}\n\n.sage-ai-message-content {\n margin-left: 0;\n}\n\n/* Context cells indicator */\n.context-cells-indicator {\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n font-size: 12px;\n margin: 8px;\n margin-bottom: 0;\n border-radius: 4px;\n color: #666;\n width: calc(100% - 32px);\n display: none !important;\n}\n\n/* Hide indicator when no cells are in context */\n.context-cells-indicator.hidden {\n display: none;\n}\n\n/* Context cell box (like .sage-ai-cell-id-label) */\n.sage-ai-context-cell-box {\n background: #e6f7ff;\n color: #1976d2;\n border: 2px solid #1976d2;\n border-radius: 4px;\n font-size: 12px;\n padding: 4px;\n z-index: 101;\n display: inline-flex;\n align-items: center;\n position: relative;\n gap: 4px;\n transition:\n box-shadow 0.2s,\n border 0.2s;\n margin-bottom: 2px;\n box-shadow: 0 2px 8px rgb(25 118 210 / 12%);\n font-weight: 500;\n flex-direction: row;\n}\n\n.sage-ai-context-cell-box:hover {\n box-shadow: 0 4px 16px rgb(25 118 210 / 18%);\n border-color: #1251a3;\n}\n\n.sage-ai-context-cell-delete {\n color: #e53935;\n font-size: 14px;\n cursor: pointer;\n line-height: 0;\n}\n\n.sage-ai-tool-call-v1 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-top: 4px;\n margin-bottom: 4px;\n padding: 0 8px;\n font-family: var(--jp-ui-font-family);\n font-size: var(--jp-ui-font-size1);\n color: var(--jp-ui-font-color2);\n}\n\n.sage-ai-tool-call-v1.clickable {\n cursor: pointer;\n}\n\n.sage-ai-tool-call-v1.error-state svg {\n fill: var(--error-fill-active) !important;\n}\n\n.sage-ai-tool-call-v1.error-state span {\n color: var(--error-fill-active) !important;\n}\n\n.sage-ai-loading-text {\n background: linear-gradient(\n 135deg,\n transparent,\n var(--jp-ui-font-color1),\n transparent\n );\n background-clip: text;\n color: transparent !important;\n background-size: 200% 100%;\n animation: shimmer 2.5s linear infinite;\n}\n\n@keyframes shimmer {\n 0% {\n background-position: 200% 0;\n }\n\n 100% {\n background-position: -200% 0;\n }\n}\n\n.sage-ai-tool-call-cell {\n border-radius: 5px;\n background: rgb(59 130 246 / 13%);\n color: #60a5fa;\n padding: 1px 6px;\n font-family: var(--jp-code-font-family), serif;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n line-height: 160%; /* 19.2px */\n border: none;\n}\n\n.sage-ai-tool-call-cell:hover {\n background: rgb(59 130 246 / 20%);\n color: #2563eb;\n cursor: pointer;\n}\n\n.sage-ai-tool-call-code {\n background: var(--d2h-dark-selected-color);\n color: var(--jp-ui-font-color1);\n border-radius: 4px;\n font-size: var(--jp-ui-font-size0);\n padding: 2px 4px;\n}\n\n/* Mode selector styles are now in mode-selector-dropdown.css */\n\n/* Floating current/next step box */\n.sage-ai-step-floating-box {\n position: fixed;\n justify-self: anchor-center;\n backdrop-filter: blur(10px);\n border: 0 solid var(--jp-border-color2);\n border-bottom-width: 1px;\n width: calc(100% - 25px);\n padding: 8px 12px;\n box-shadow: 0 2px 8px rgb(0 0 0 / 10%);\n z-index: 100;\n display: none;\n font-size: var(--jp-ui-font-size0);\n line-height: 1.4;\n}\n\n.sage-ai-step-floating-box.visible {\n display: flex;\n gap: 8px;\n max-height: 80px;\n}\n\n.sage-ai-chat-history.floating-box-visible > :first-child {\n margin-top: 84px !important;\n}\n\n.sage-ai-step-floating-box .content {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.sage-ai-step-floating-box .current-task-text {\n color: var(--jp-ui-font-color0);\n font-size: 11px;\n margin: 0;\n margin-top: 3px;\n}\n\n.sage-ai-step-floating-box .next-task-text {\n color: var(--jp-ui-font-color2);\n font-size: var(--jp-ui-font-size0);\n margin: 0;\n}\n\n.sage-ai-step-floating-box .close-button {\n background: none;\n border: none;\n color: var(--jp-ui-font-color2);\n cursor: pointer;\n padding: 2px;\n font-size: 14px;\n line-height: 1;\n border-radius: 2px;\n transition: background-color 0.2s;\n}\n\n.sage-ai-step-floating-box .close-button:hover {\n background-color: var(--jp-layout-color3);\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-step-floating-box .loader {\n width: 20px;\n height: 20px;\n display: inline-block;\n position: relative;\n}\n\n.sage-ai-step-floating-box .loader::after,\n.sage-ai-step-floating-box .loader::before {\n content: '';\n box-sizing: border-box;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n border: 2px solid var(--jp-ui-font-color1);\n position: absolute;\n left: 0;\n top: 0;\n animation: sage-ai-step-floating-box-animloader 2s linear infinite;\n}\n\n.sage-ai-step-floating-box .loader::after {\n animation-delay: 1s;\n}\n\n@keyframes sage-ai-step-floating-box-animloader {\n 0% {\n transform: scale(0);\n opacity: 1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0;\n }\n}\n\n.sage-ai-step-floating-box .source-toggle {\n align-self: center;\n background: none;\n border: none;\n color: var(--jp-ui-font-color2);\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border-radius: 4px;\n transition:\n background-color 0.2s,\n color 0.2s;\n width: 24px;\n height: 24px;\n}\n\n.sage-ai-step-floating-box .source-toggle:hover {\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-step-floating-box .toggle-icon {\n font-size: 12px;\n transition: transform 0.2s ease;\n line-height: 1;\n}\n\n.sage-ai-step-floating-box .source-content {\n padding: 8px;\n background-color: var(--jp-layout-color2);\n border-radius: 4px;\n border: 1px solid var(--jp-border-color2);\n overflow-y: auto;\n resize: vertical;\n min-height: 100px;\n max-height: 60vh;\n}\n\n.sage-ai-step-floating-box .source-markdown {\n font-family: var(--jp-code-font-family);\n font-size: 11px;\n line-height: 1.4;\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-step-floating-box .source-markdown h1,\n.sage-ai-step-floating-box .source-markdown h2,\n.sage-ai-step-floating-box .source-markdown h3,\n.sage-ai-step-floating-box .source-markdown h4,\n.sage-ai-step-floating-box .source-markdown h5,\n.sage-ai-step-floating-box .source-markdown h6 {\n margin: 8px 0 4px;\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-step-floating-box .source-markdown h1 {\n font-size: 14px;\n}\n\n.sage-ai-step-floating-box .source-markdown h2 {\n font-size: 13px;\n}\n\n.sage-ai-step-floating-box .source-markdown h3 {\n font-size: 12px;\n}\n\n.sage-ai-step-floating-box .source-markdown h4,\n.sage-ai-step-floating-box .source-markdown h5,\n.sage-ai-step-floating-box .source-markdown h6 {\n font-size: 11px;\n}\n\n.sage-ai-step-floating-box .source-markdown p {\n margin: 4px 0;\n}\n\n.sage-ai-step-floating-box .source-markdown ul,\n.sage-ai-step-floating-box .source-markdown ol {\n padding-left: 16px;\n margin: 4px 0;\n}\n\n.sage-ai-step-floating-box .source-markdown li {\n margin: 2px 0;\n}\n\n.sage-ai-step-floating-box .source-markdown code {\n background-color: var(--jp-layout-color1);\n padding: 1px 3px;\n border-radius: 2px;\n font-size: 10px;\n}\n\n.sage-ai-step-floating-box .source-markdown pre {\n background-color: var(--jp-layout-color1);\n border-radius: 4px;\n padding: 6px;\n margin: 4px 0;\n overflow-x: auto;\n}\n\n.sage-ai-step-floating-box .source-markdown pre code {\n background-color: transparent;\n padding: 0;\n font-size: 10px;\n}\n\n.sage-ai-step-floating-box .source-markdown blockquote {\n border-left: 3px solid var(--jp-border-color2);\n padding-left: 8px;\n margin: 4px 0;\n color: var(--jp-ui-font-color2);\n font-style: italic;\n}\n\n/* Adjust floating box height when source is expanded */\n.sage-ai-step-floating-box.visible {\n display: flex;\n gap: 8px;\n max-height: none;\n flex-wrap: wrap;\n}\n\n.sage-ai-step-floating-box.visible .content {\n flex: 1;\n min-width: 200px;\n}\n\n.sage-ai-step-floating-box.visible .source-section {\n flex-basis: 100%;\n}\n\n/* Diff2Html overrides */\n.d2h-code-line {\n padding: 0 5em !important;\n}\n\n.d2h-code-linenumber {\n width: 4.5em !important;\n backdrop-filter: blur(8px);\n}\n\n.line-num1,\n.line-num2 {\n width: 50% !important;\n text-align: center !important;\n padding: 0 !important;\n}\n\n.hljs-regexp,\n.hljs-string,\n.hljs-meta .hljs-string {\n color: var(--jp-brand-color0) !important;\n}\n\n.hljs {\n color: var(--jp-ui-font-color2) !important;\n}\n\n.sage-ai-waiting-reply-container {\n display: none;\n bottom: 0;\n margin: 8px 0 0;\n font-size: 12px;\n padding: 12px;\n /*color: rgb(238 196 70 / 100%);*/\n border-radius: 12px;\n /*border: 1px solid rgb(238 196 70 / 50%);*/\n text-align: center;\n /*box-shadow: 0 2px 8px rgb(0 0 0 / 10%);*/\n /*backdrop-filter: blur(8px);*/\n background: transparent;\n}\n\n[data-jp-theme-light='false'] .sage-ai-waiting-reply-container {\n /*background: var(--BG-main, #111);*/\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-waiting-reply-container.visible {\n display: block;\n}\n\n.sage-ai-waiting-reply-text {\n margin-bottom: 2px;\n font-weight: 500;\n}\n\n.sage-ai-continue-button {\n background-color: transparent;\n color: white;\n padding: 6px;\n border-radius: 4px !important;\n border: 1px solid #383838 !important;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n margin-top: 6px;\n transition: all 0.2s ease;\n}\n\n.sage-ai-continue-button.hidden {\n display: none;\n}\n\n.sage-ai-continue-button:hover {\n background-color: transparent;\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgb(0 0 0 / 15%);\n}\n\n.sage-ai-continue-button:active {\n transform: translateY(1px);\n}\n\n.sage-ai-prompt-buttons-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 12px;\n}\n\n[data-jp-theme-light='false'] .sage-ai-prompt-button {\n color: white !important;\n}\n\n.sage-ai-prompt-button {\n background-color: transparent;\n padding: 8px 12px;\n border-radius: 6px !important;\n border: 1px solid #383838 !important;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: left;\n min-height: 32px;\n white-space: normal;\n word-wrap: break-word;\n}\n\n.sage-ai-prompt-button:hover {\n background-color: transparent;\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgb(0 0 0 / 15%);\n}\n\n.sage-ai-prompt-button:active {\n transform: translateY(1px);\n}\n\n.cm-editor:has(+ .jp-DiffOverlay) {\n display: none !important;\n}\n\n.jp-InputArea:has(.jp-DiffOverlay.sage-ai-quick-gen-diff-overlay) {\n display: block !important;\n}\n\n.hljs-subst {\n color: #9bb8d4 !important;\n}\n",""]);const s=r},8789:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* Modal dialog styling */\n.sage-ai-modal {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n}\n\n.sage-ai-dialog {\n background-color: var(--jp-layout-color1);\n padding: 20px;\n border-radius: 5px;\n width: 50%;\n max-width: 500px;\n box-sizing: border-box;\n}\n\n/* Override width for snippet form modal */\n.sage-ai-dialog.sage-ai-snippet-form-modal {\n width: 90%;\n max-width: 600px;\n}\n\n/* Custom styling for snippet modal in dark mode */\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-custom-snippet-modal .modal-content {\n border-radius: 12px;\n border: 1px solid var(--Border-Border, #383838);\n background: var(--BG-main, #111);\n box-shadow: 0 8px 17.1px 0 rgba(208, 208, 208, 0.09);\n}\n\n/* Custom styling for form inputs in snippet modal - dark mode only */\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-custom-snippet-modal .form-control {\n border-radius: 8px;\n border: 0.8px solid var(--Border-Border, #383838);\n background: var(--Prompt-box-bg-default, #141414);\n}\n\n.sage-ai-dialog-title {\n margin-top: 0;\n}\n\n.sage-ai-dialog-label {\n display: block;\n margin: 10px 0;\n}\n\n/* Checkbox styling consistent with the autorun checkbox */\n.sage-ai-dialog-checkbox-container {\n display: flex;\n align-items: center;\n margin: 15px 0;\n}\n\n.sage-ai-dialog-checkbox {\n margin-right: 8px;\n cursor: pointer;\n}\n\n.sage-ai-dialog-checkbox-label {\n font-size: var(--jp-ui-font-size1);\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n user-select: none;\n}\n\n.sage-ai-dialog-textarea {\n width: 100%;\n height: 100px;\n margin-bottom: 15px;\n padding: 8px;\n box-sizing: border-box;\n}\n\n.sage-ai-dialog-button-container {\n display: flex;\n justify-content: flex-end;\n}\n\n.sage-ai-dialog-submit-button {\n padding: 8px 16px;\n background-color: var(--jp-brand-color1);\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n}\n\n/* Revert-and-send button styling in modal context */\n.sage-ai-revert-send-button-modal {\n padding: 8px 16px;\n background-color: var(--jp-warn-color1);\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n margin-right: 10px;\n}\n\n.sage-ai-revert-send-button-modal:hover {\n background-color: var(--jp-warn-color0);\n}\n\n.sage-ai-revert-send-button-modal:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n/* Code confirmation styling */\n.sage-ai-code-confirmation {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px;\n margin: 15px 0;\n border: 2px solid var(--jp-border-color1);\n border-radius: 8px;\n background-color: var(--jp-layout-color2);\n}\n\n.sage-ai-confirmation-button-container {\n display: flex;\n gap: 4px;\n}\n\n.sage-ai-reject-button {\n padding: 8px 16px;\n background-color: var(--jp-warn-color1);\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n}\n\n.sage-ai-confirm-button {\n padding: 8px 16px;\n background-color: var(--jp-brand-color1);\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n}\n\n/* Post-cancellation dialog styling */\n.sage-ai-post-cancel-dialog {\n padding: 15px;\n margin: 15px 0;\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n background-color: var(--jp-layout-color1);\n text-align: center;\n}\n\n.sage-ai-post-cancel-heading {\n margin: 0 0 15px 0;\n color: var(--jp-ui-font-color1);\n font-weight: bold;\n}\n\n/* Thread selector dropdown styling - additional styles */\n.sage-ai-thread-dropdown-container {\n position: relative;\n display: inline-block;\n}\n\n.sage-ai-thread-dropdown-header {\n border-bottom: 1px solid var(--jp-border-color1);\n padding: 8px 12px;\n font-weight: bold;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-thread-dropdown-footer {\n border-top: 1px solid var(--jp-border-color1);\n padding: 8px 12px;\n text-align: center;\n}\n\n.sage-ai-thread-dropdown-empty {\n padding: 12px;\n font-style: italic;\n color: var(--jp-ui-font-color2);\n text-align: center;\n}\n\n/* Enhanced button styling for thread items */\n.sage-ai-thread-item-button {\n background: none;\n border: none;\n color: var(--jp-warn-color1);\n cursor: pointer;\n padding: 2px 4px;\n font-size: var(--jp-ui-font-size0);\n visibility: hidden;\n float: right;\n}\n\n.sage-ai-thread-item:hover .sage-ai-thread-item-button {\n visibility: visible;\n}\n\n.sage-ai-thread-item-button:hover {\n color: var(--jp-warn-color0);\n background-color: var(--jp-warn-color3);\n border-radius: 2px;\n}\n\n/* Context display styling */\n.sage-ai-context-display {\n margin: 15px 0;\n padding: 12px;\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n background-color: var(--jp-layout-color0);\n}\n\n.sage-ai-context-display-header {\n font-weight: bold;\n color: var(--jp-ui-font-color0);\n margin-bottom: 8px;\n font-size: var(--jp-ui-font-size1);\n}\n\n.sage-ai-context-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n border-bottom: 1px solid var(--jp-border-color2);\n}\n\n.sage-ai-context-item:last-child {\n border-bottom: none;\n}\n\n.sage-ai-context-item-icon {\n font-size: 14px;\n width: 20px;\n text-align: center;\n}\n\n.sage-ai-context-item-info {\n flex: 1;\n}\n\n.sage-ai-context-item-name {\n font-weight: 500;\n color: var(--jp-ui-font-color0);\n font-size: var(--jp-ui-font-size0);\n}\n\n.sage-ai-context-item-preview {\n color: var(--jp-ui-font-color2);\n font-size: var(--jp-ui-font-size0);\n font-style: italic;\n}\n\n.sage-ai-context-empty {\n color: var(--jp-ui-font-color2);\n font-style: italic;\n text-align: center;\n padding: 8px;\n}\n\n[data-jp-theme-name='JupyterLab Dark'] .form-control {\n border-radius: 8px;\nborder: 0.8px solid var(--Border-Border, #383838);\nbackground: var(--Prompt-box-bg-default, #141414);\ncolor: var(--Text-text-secondary, #949494) !important;\n\n/* Subtle/Medium */\nfont-family: Geist;\nfont-size: 13px;\nfont-style: normal;\nfont-weight: 500;\nline-height: 155%; /* 20.15px */\n}\n",""]);const s=r},9508:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,".sage-ai-update-banner-widget {\n position: fixed !important;\n top: 40px !important;\n left: 50% !important;\n transform: translateX(-50%) !important;\n width: auto;\n max-width: 500px;\n min-width: 300px;\n z-index: 999999 !important;\n flex-shrink: 0;\n margin: 0 !important;\n padding: 0 !important;\n border: none !important;\n box-sizing: border-box !important;\n pointer-events: auto !important;\n}\n\n.sage-ai-update-banner {\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n padding: 12px 16px;\n border-radius: 8px;\n margin-bottom: 0;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);\n animation: slideDown 0.3s ease-out;\n}\n\n.sage-ai-update-banner-content {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.sage-ai-update-banner-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n color: #ffffff;\n opacity: 0.9;\n}\n\n.sage-ai-update-banner-text {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.sage-ai-update-banner-title {\n font-weight: 600;\n font-size: 14px;\n line-height: 1.2;\n}\n\n.sage-ai-update-banner-version {\n font-size: 12px;\n opacity: 0.9;\n line-height: 1.2;\n}\n\n.sage-ai-update-banner-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.sage-ai-update-banner-button {\n padding: 6px 12px;\n border: none;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.sage-ai-update-banner-button:hover {\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n.sage-ai-update-banner-button-update {\n background: #ffffff;\n color: #667eea;\n}\n\n.sage-ai-update-banner-button-update:hover {\n background: #f8f9fa;\n}\n\n.sage-ai-update-banner-button-later {\n background: rgba(255, 255, 255, 0.2);\n color: #ffffff;\n border: 1px solid rgba(255, 255, 255, 0.3);\n}\n\n.sage-ai-update-banner-button-later:hover {\n background: rgba(255, 255, 255, 0.3);\n}\n\n.sage-ai-update-banner-button-decline {\n background: transparent;\n color: #ffffff;\n border: 1px solid rgba(255, 255, 255, 0.3);\n}\n\n.sage-ai-update-banner-button-decline:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n\n.sage-ai-update-banner-progress {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #ffffff;\n font-size: 13px;\n}\n\n.sage-ai-update-banner-spinner {\n width: 16px;\n height: 16px;\n border: 2px solid rgba(255, 255, 255, 0.3);\n border-top: 2px solid #ffffff;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n.sage-ai-update-banner-description {\n font-size: 12px;\n opacity: 0.9;\n color: #ffffff;\n margin-top: 2px;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .sage-ai-update-banner-widget {\n left: 50% !important;\n right: auto !important;\n transform: translateX(-50%) !important;\n max-width: calc(100vw - 40px) !important;\n min-width: auto;\n margin: 0 20px !important;\n }\n\n .sage-ai-update-banner-content {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .sage-ai-update-banner-actions {\n align-self: stretch;\n justify-content: space-between;\n }\n\n .sage-ai-update-banner-button {\n flex: 1;\n text-align: center;\n }\n}\n",""]);const s=r}}]);