sage-agent-internal 0.1.34__py3-none-any.whl → 0.1.36__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 (38) hide show
  1. sage_agent_internal/_version.py +1 -1
  2. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/package.json +4 -3
  3. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/schemas/sage-agent-internal/package.json.orig +3 -2
  4. sage_agent_internal-0.1.36.data/data/share/jupyter/labextensions/sage-agent-internal/static/353.2c285601a208c3735929.js +1 -0
  5. sage_agent_internal-0.1.36.data/data/share/jupyter/labextensions/sage-agent-internal/static/439.3cb9ac7022c8a6074647.js +1 -0
  6. sage_agent_internal-0.1.36.data/data/share/jupyter/labextensions/sage-agent-internal/static/540.3d4b5aa9edd073afbaf7.js +1 -0
  7. sage_agent_internal-0.1.34.data/data/share/jupyter/labextensions/sage-agent-internal/static/424.3ad4f150ad10c26c9cc7.js → sage_agent_internal-0.1.36.data/data/share/jupyter/labextensions/sage-agent-internal/static/573.efca05eb516500b41d7d.js +1 -1
  8. sage_agent_internal-0.1.36.data/data/share/jupyter/labextensions/sage-agent-internal/static/635.8c395c854aa2b140b668.js +1 -0
  9. sage_agent_internal-0.1.36.data/data/share/jupyter/labextensions/sage-agent-internal/static/747.b8e9485ebcbb3066eb4b.js +1 -0
  10. sage_agent_internal-0.1.36.data/data/share/jupyter/labextensions/sage-agent-internal/static/821.b58f29814f5900f1f6f8.js +1 -0
  11. sage_agent_internal-0.1.36.data/data/share/jupyter/labextensions/sage-agent-internal/static/973.38ee5148a3908e41c2dd.js +2 -0
  12. sage_agent_internal-0.1.36.data/data/share/jupyter/labextensions/sage-agent-internal/static/remoteEntry.35d4e613831112eb9bd0.js +1 -0
  13. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/static/third-party-licenses.json +35 -5
  14. {sage_agent_internal-0.1.34.dist-info → sage_agent_internal-0.1.36.dist-info}/METADATA +1 -1
  15. sage_agent_internal-0.1.36.dist-info/RECORD +33 -0
  16. sage_agent_internal-0.1.34.data/data/share/jupyter/labextensions/sage-agent-internal/static/379.b3bf2f8d00bdb186e6f8.js +0 -1
  17. sage_agent_internal-0.1.34.data/data/share/jupyter/labextensions/sage-agent-internal/static/439.61293ec148172a793000.js +0 -1
  18. sage_agent_internal-0.1.34.data/data/share/jupyter/labextensions/sage-agent-internal/static/540.283f7cceb475717261ed.js +0 -1
  19. sage_agent_internal-0.1.34.data/data/share/jupyter/labextensions/sage-agent-internal/static/982.e8f28fa7892d44e0d1bb.js +0 -2
  20. sage_agent_internal-0.1.34.data/data/share/jupyter/labextensions/sage-agent-internal/static/remoteEntry.ce4d128f8a17aa502d88.js +0 -1
  21. sage_agent_internal-0.1.34.dist-info/RECORD +0 -30
  22. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/install.json +0 -0
  23. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/schemas/sage-agent-internal/plugin.json +0 -0
  24. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/static/122.3c2c200586e65203b674.js +0 -0
  25. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/static/220.d384edfd5bbcfda33a2a.js +0 -0
  26. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/static/262.3fc4ad88e6f8c273d4ad.js +0 -0
  27. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/static/364.c2fb82c6f484097228c6.js +0 -0
  28. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/static/481.96b91d018df31d54d173.js +0 -0
  29. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/static/553.b7906877d98a62265533.js +0 -0
  30. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/static/553.b7906877d98a62265533.js.LICENSE.txt +0 -0
  31. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/static/713.103cb5ae248be385b08a.js +0 -0
  32. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/static/742.b204789055ded4e07883.js +0 -0
  33. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/static/845.cc2bc80fbfea6d20a396.js +0 -0
  34. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/static/888.09382cc93a2ad3932b31.js +0 -0
  35. /sage_agent_internal-0.1.34.data/data/share/jupyter/labextensions/sage-agent-internal/static/982.e8f28fa7892d44e0d1bb.js.LICENSE.txt → /sage_agent_internal-0.1.36.data/data/share/jupyter/labextensions/sage-agent-internal/static/973.38ee5148a3908e41c2dd.js.LICENSE.txt +0 -0
  36. {sage_agent_internal-0.1.34.data → sage_agent_internal-0.1.36.data}/data/share/jupyter/labextensions/sage-agent-internal/static/style.js +0 -0
  37. {sage_agent_internal-0.1.34.dist-info → sage_agent_internal-0.1.36.dist-info}/WHEEL +0 -0
  38. {sage_agent_internal-0.1.34.dist-info → sage_agent_internal-0.1.36.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,4 @@
1
1
  # This file is auto-generated by Hatchling. As such, do not:
2
2
  # - modify
3
3
  # - track in version control e.g. be sure to add to .gitignore
4
- __version__ = VERSION = '0.1.34'
4
+ __version__ = VERSION = '0.1.36'
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sage-agent-internal",
3
- "version": "0.1.34",
3
+ "version": "0.1.36",
4
4
  "description": "Sage Agent - Your Jupyter Notebook Assistant",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -59,7 +59,6 @@
59
59
  },
60
60
  "dependencies": {
61
61
  "@anthropic-ai/sdk": "^0.54.0",
62
- "@codemirror/merge": "^6.10.2",
63
62
  "@electric-sql/pglite": "^0.3.6",
64
63
  "@google/generative-ai": "^0.24.0",
65
64
  "@jupyterlab/application": "^4.0.0",
@@ -71,6 +70,8 @@
71
70
  "best-effort-json-parser": "^1.1.3",
72
71
  "bootstrap": "^5.3.7",
73
72
  "chalk": "^4.1.2",
73
+ "codemirror": "^6.0.2",
74
+ "codemirror-merge-alpinex": "^6.10.4",
74
75
  "diff": "^8.0.1",
75
76
  "diff2html": "^3.4.51",
76
77
  "dompurify": "^3.2.5",
@@ -125,7 +126,7 @@
125
126
  "outputDir": "sage_agent_internal/labextension",
126
127
  "schemaDir": "schema",
127
128
  "_build": {
128
- "load": "static/remoteEntry.ce4d128f8a17aa502d88.js",
129
+ "load": "static/remoteEntry.35d4e613831112eb9bd0.js",
129
130
  "extension": "./extension",
130
131
  "style": "./style"
131
132
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sage-agent-internal",
3
- "version": "0.1.34",
3
+ "version": "0.1.36",
4
4
  "description": "Sage Agent - Your Jupyter Notebook Assistant",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -59,7 +59,6 @@
59
59
  },
60
60
  "dependencies": {
61
61
  "@anthropic-ai/sdk": "^0.54.0",
62
- "@codemirror/merge": "^6.10.2",
63
62
  "@electric-sql/pglite": "^0.3.6",
64
63
  "@google/generative-ai": "^0.24.0",
65
64
  "@jupyterlab/application": "^4.0.0",
@@ -71,6 +70,8 @@
71
70
  "best-effort-json-parser": "^1.1.3",
72
71
  "bootstrap": "^5.3.7",
73
72
  "chalk": "^4.1.2",
73
+ "codemirror": "^6.0.2",
74
+ "codemirror-merge-alpinex": "^6.10.4",
74
75
  "diff": "^8.0.1",
75
76
  "diff2html": "^3.4.51",
76
77
  "dompurify": "^3.2.5",
@@ -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([[439],{7820:(n,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.parse=r.enableErrorLogging=r.disableErrorLogging=r.setErrorLogger=void 0;let t=console.error;function e(n){if(void 0!==n){if(null===n)return null;if(""===n)return"";n=n.replace(/\\+$/,n=>n.length%2==0?n:n.slice(0,-1));try{return JSON.parse(n)}catch(r){const[t,i]=":"===n.trimLeft()[0]?s(n,r):s(n,r,h);if(e.lastParseReminding=i,e.onExtraToken&&i.length>0){const r=i.trimRight();e.lastParseReminding=r,r.length>0&&e.onExtraToken(n,t,r)}return t}}}function s(n,r,e){const s=o[n[0]]||e;if(!s)throw t(`no parser registered for ${JSON.stringify(n[0])}:`,{s:n}),r;return s(n,r)}function i(n,r,t){return'"'===n[0]?g(n):"'"===n[0]?b(n):h(n,0,t)}r.setErrorLogger=function(n){t=n},r.disableErrorLogging=function(){t=()=>{}},r.enableErrorLogging=function(){t=console.error},r.parse=e,function(n){n.onExtraToken=(n,r,e)=>{t("parsed json with extra tokens:",{text:n,data:r,reminding:e})}}(e=r.parse||(r.parse={}));const o={};function u(n){return n.trimLeft()}function c(n,r){return s(n=u(n),r)}o[" "]=c,o["\r"]=c,o["\n"]=c,o["\t"]=c,o["["]=function(n,r){const t=[];for(n=u(n=n.substr(1));n.length>0;){if("]"===n[0]){n=n.substr(1);break}const e=s(n,r,(n,r)=>h(n,0,[",","]"]));t.push(e[0]),","===(n=u(n=e[1]))[0]&&(n=u(n=n.substring(1)))}return[t,n]};for(const n of"0123456789.-".slice())o[n]=f;function f(n){for(let r=0;r<n.length;r++){const t=n[r];if(o[t]===f)continue;const e=n.substring(0,r);return n=n.substring(r),[l(e),n]}return[l(n),""]}function l(n){if("-"===n)return-0;const r=+n;return Number.isNaN(r)?n:r}function g(n){for(let r=1;r<n.length;r++){const t=n[r];if("\\"!==t){if('"'===t){const t=a(n.substring(0,r+1));return n=n.substring(r+1),[JSON.parse(t),n]}}else r++}return[JSON.parse(a(n)+'"'),""]}function a(n){return n.replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/\r/g,"\\r")}function b(n){for(let r=1;r<n.length;r++){const t=n[r];if("\\"!==t){if("'"===t){const t=a(n.substring(0,r+1));return n=n.substring(r+1),[JSON.parse('"'+t.slice(1,-1)+'"'),n]}}else r++}return[JSON.parse('"'+a(n.slice(1))+'"'),""]}function h(n,r,t=[" "]){const e=Math.min(...t.map(r=>{const t=n.indexOf(r);return-1===t?n.length:t}));return[n.substring(0,e).trim(),n.substring(e)]}function p(n,r,e,s){for(let t=r.length;t>=1;t--)if(n.startsWith(r.slice(0,t)))return[e,n.slice(t)];{const e=JSON.stringify(n.slice(0,r.length));throw t(`unknown token starting with ${e}:`,{s:n}),s}}o['"']=g,o["'"]=b,o["{"]=function(n,r){const t={};for(n=u(n=n.substr(1));n.length>0;){if("}"===n[0]){n=n.substr(1);break}const e=i(n,0,[":","}"]),o=e[0];if(":"!==(n=u(n=e[1]))[0]){t[o]=void 0;break}if(0===(n=u(n=n.substr(1))).length){t[o]=void 0;break}const c=s(n,r);t[o]=c[0],","===(n=u(n=c[1]))[0]&&(n=u(n=n.substr(1)))}return[t,n]},o.t=function(n,r){return p(n,"true",!0,r)},o.f=function(n,r){return p(n,"false",!1,r)},o.n=function(n,r){return p(n,"null",null,r)}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunksage_agent_internal=self.webpackChunksage_agent_internal||[]).push([[540],{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),r=e(6314),i=e.n(r)()(t());i.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}",""]);const s=i},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),r=e(6314),i=e.n(r)()(t());i.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=i},1540:(n,o,e)=>{var a=e(5072),t=e.n(a),r=e(7825),i=e.n(r),s=e(7659),l=e.n(s),p=e(5056),d=e.n(p),c=e(540),g=e.n(c),f=e(1113),x=e.n(f),u=e(5248),b={};b.styleTagTransform=x(),b.setAttributes=d(),b.insert=l().bind(null,"head"),b.domAPI=i(),b.insertStyleElement=g(),t()(u.A,b),u.A&&u.A.locals&&u.A.locals;var m=e(8475),h={};h.styleTagTransform=x(),h.setAttributes=d(),h.insert=l().bind(null,"head"),h.domAPI=i(),h.insertStyleElement=g(),t()(m.A,h),m.A&&m.A.locals&&m.A.locals;var v=e(8789),y={};y.styleTagTransform=x(),y.setAttributes=d(),y.insert=l().bind(null,"head"),y.domAPI=i(),y.insertStyleElement=g(),t()(v.A,y),v.A&&v.A.locals&&v.A.locals;var j=e(7439),w={};w.styleTagTransform=x(),w.setAttributes=d(),w.insert=l().bind(null,"head"),w.domAPI=i(),w.insertStyleElement=g(),t()(j.A,w),j.A&&j.A.locals&&j.A.locals;var k=e(1346),z={};z.styleTagTransform=x(),z.setAttributes=d(),z.insert=l().bind(null,"head"),z.domAPI=i(),z.insertStyleElement=g(),t()(k.A,z),k.A&&k.A.locals&&k.A.locals;var M=e(4246),A={};A.styleTagTransform=x(),A.setAttributes=d(),A.insert=l().bind(null,"head"),A.domAPI=i(),A.insertStyleElement=g(),t()(M.A,A),M.A&&M.A.locals&&M.A.locals;var D=e(5433),N={};N.styleTagTransform=x(),N.setAttributes=d(),N.insert=l().bind(null,"head"),N.domAPI=i(),N.insertStyleElement=g(),t()(D.A,N),D.A&&D.A.locals&&D.A.locals;var I=e(6785),T={};T.styleTagTransform=x(),T.setAttributes=d(),T.insert=l().bind(null,"head"),T.domAPI=i(),T.insertStyleElement=g(),t()(I.A,T),I.A&&I.A.locals&&I.A.locals;var S=e(7476),E={};E.styleTagTransform=x(),E.setAttributes=d(),E.insert=l().bind(null,"head"),E.domAPI=i(),E.insertStyleElement=g(),t()(S.A,E),S.A&&S.A.locals&&S.A.locals;var L=e(3114),O={};O.styleTagTransform=x(),O.setAttributes=d(),O.insert=l().bind(null,"head"),O.domAPI=i(),O.insertStyleElement=g(),t()(L.A,O),L.A&&L.A.locals&&L.A.locals;var C=e(5544),Y={};Y.styleTagTransform=x(),Y.setAttributes=d(),Y.insert=l().bind(null,"head"),Y.domAPI=i(),Y.insertStyleElement=g(),t()(C.A,Y),C.A&&C.A.locals&&C.A.locals;var U=e(7342),Q={};Q.styleTagTransform=x(),Q.setAttributes=d(),Q.insert=l().bind(null,"head"),Q.domAPI=i(),Q.insertStyleElement=g(),t()(U.A,Q),U.A&&U.A.locals&&U.A.locals;var P=e(7826),B={};B.styleTagTransform=x(),B.setAttributes=d(),B.insert=l().bind(null,"head"),B.domAPI=i(),B.insertStyleElement=g(),t()(P.A,B),P.A&&P.A.locals&&P.A.locals;var R=e(9508),H={};H.styleTagTransform=x(),H.setAttributes=d(),H.insert=l().bind(null,"head"),H.domAPI=i(),H.insertStyleElement=g(),t()(R.A,H),R.A&&R.A.locals&&R.A.locals;var G=e(844),J={};J.styleTagTransform=x(),J.setAttributes=d(),J.insert=l().bind(null,"head"),J.domAPI=i(),J.insertStyleElement=g(),t()(G.A,J),G.A&&G.A.locals&&G.A.locals;var F=e(2331),W={};W.styleTagTransform=x(),W.setAttributes=d(),W.insert=l().bind(null,"head"),W.domAPI=i(),W.insertStyleElement=g(),t()(F.A,W),F.A&&F.A.locals&&F.A.locals;var _=e(5943),q={};q.styleTagTransform=x(),q.setAttributes=d(),q.insert=l().bind(null,"head"),q.domAPI=i(),q.insertStyleElement=g(),t()(_.A,q),_.A&&_.A.locals&&_.A.locals},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),r=e(6314),i=e.n(r),s=e(4417),l=e.n(s),p=new URL(e(5655),e.b),d=i()(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),r=e(6314),i=e.n(r)()(t());i.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-added-count {\n color: #28a745;\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: bold;\n}\n\n.sage-ai-diff-removed-count {\n color: #dc3545;\n padding: 2px 6px;\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=i},4246:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),r=e(6314),i=e.n(r)()(t());i.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=i},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 r={},i=[],s=0;s<n.length;s++){var l=n[s],p=a.base?l[0]+a.base:l[0],d=r[p]||0,c="".concat(p," ").concat(d);r[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 x=t(f,a);a.byIndex=s,o.splice(s,0,{identifier:c,updater:x,references:1})}i.push(c)}return i}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 r=a(n=n||[],t=t||{});return function(n){n=n||[];for(var i=0;i<r.length;i++){var s=e(r[i]);o[s].references--}for(var l=a(n,t),p=0;p<r.length;p++){var d=e(r[p]);0===o[d].references&&(o[d].updater(),o.splice(d,1))}r=l}}},5248:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),r=e(6314),i=e.n(r)()(t());i.push([n.id,"@import url(https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap);"]),i.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=i},5433:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),r=e(6314),i=e.n(r)()(t());i.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: 2000;\n max-height: 200px;\n overflow: hidden;\n width: auto;\n display: none;\n flex-direction: column;\n min-width: 65%;\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'] .sage-ai-mention-content,\n.sage-ai-mention-dropdown {\n background: #111;\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=i},5544:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),r=e(6314),i=e.n(r)()(t());i.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;\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: 13px;\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: 12px;\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 padding: 8px;\n background-color: var(--jp-layout-color1);\n border-radius: 4px;\n border: 1px solid var(--jp-border-color2);\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-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=i},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),r=e(6314),i=e.n(r)()(t());i.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=i},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,r){"string"==typeof n&&(n=[[null,n,void 0]]);var i={};if(a)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(i[l]=!0)}for(var p=0;p<n.length;p++){var d=[].concat(n[p]);a&&i[d[0]]||(void 0!==r&&(void 0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=r),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),r=e(6314),i=e.n(r)()(t());i.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=i},7342:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),r=e(6314),i=e.n(r)()(t());i.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=i},7439:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),r=e(6314),i=e.n(r)()(t());i.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}',""]);const s=i},7476:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),r=e(6314),i=e.n(r)()(t());i.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=i},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 r=e.sourceMap;r&&"undefined"!=typeof btoa&&(a+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),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),r=e(6314),i=e.n(r)()(t());i.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=i},8475:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),r=e(6314),i=e.n(r)()(t());i.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 --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@-webkit-keyframes sage-ai-vert-move {\n 0% {\n transform: translateY(0);\n }\n 100% {\n transform: translateY(5px);\n }\n}\n@keyframes sage-ai-vert-move {\n 0% {\n transform: translateY(0);\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 /* 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 /*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-direction: row;\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 flex-wrap: wrap;\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}\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/* 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.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 rgba(254, 193, 99, 0.12) 0%,\n rgba(222, 67, 19, 0.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 !important;\n position: absolute;\n top: -18px;\n font-size: 11px;\n padding: 4px 8px;\n background-color: rgb(238 196 70 / 20%);\n color: rgb(238 196 70 / 100%);\n border-radius: 18px;\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=i},8789:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),r=e(6314),i=e.n(r)()(t());i.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=i},9508:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),r=e(6314),i=e.n(r)()(t());i.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=i}}]);