sage-agent-internal 0.4.1__py3-none-any.whl → 0.4.3__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 (37) hide show
  1. sage_agent_internal/_version.py +1 -1
  2. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/package.json +2 -2
  3. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/schemas/sage-agent-internal/package.json.orig +1 -1
  4. sage_agent_internal-0.4.3.data/data/share/jupyter/labextensions/sage-agent-internal/static/363.db49bb1f85b6e9ca8bea.js +1 -0
  5. sage_agent_internal-0.4.3.data/data/share/jupyter/labextensions/sage-agent-internal/static/581.4d9db3fbc6fcb7f3571d.js +1 -0
  6. sage_agent_internal-0.4.1.data/data/share/jupyter/labextensions/sage-agent-internal/static/973.38ee5148a3908e41c2dd.js → sage_agent_internal-0.4.3.data/data/share/jupyter/labextensions/sage-agent-internal/static/973.c9d731f1117c26d913d0.js +2 -2
  7. sage_agent_internal-0.4.3.data/data/share/jupyter/labextensions/sage-agent-internal/static/remoteEntry.7f1a5792a399128e841b.js +1 -0
  8. {sage_agent_internal-0.4.1.dist-info → sage_agent_internal-0.4.3.dist-info}/METADATA +1 -1
  9. sage_agent_internal-0.4.3.dist-info/RECORD +34 -0
  10. sage_agent_internal-0.4.1.data/data/share/jupyter/labextensions/sage-agent-internal/static/111.2f1f14d27d0810b9fc49.js +0 -1
  11. sage_agent_internal-0.4.1.data/data/share/jupyter/labextensions/sage-agent-internal/static/363.5c47fd2638868c49ed51.js +0 -1
  12. sage_agent_internal-0.4.1.data/data/share/jupyter/labextensions/sage-agent-internal/static/remoteEntry.3bcb51581316f3fb9520.js +0 -1
  13. sage_agent_internal-0.4.1.dist-info/RECORD +0 -34
  14. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/install.json +0 -0
  15. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/schemas/sage-agent-internal/plugin.json +0 -0
  16. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/122.3c2c200586e65203b674.js +0 -0
  17. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/220.d384edfd5bbcfda33a2a.js +0 -0
  18. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/262.3fc4ad88e6f8c273d4ad.js +0 -0
  19. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/353.2c285601a208c3735929.js +0 -0
  20. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/364.c2fb82c6f484097228c6.js +0 -0
  21. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/439.3cb9ac7022c8a6074647.js +0 -0
  22. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/481.96b91d018df31d54d173.js +0 -0
  23. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/553.b7906877d98a62265533.js +0 -0
  24. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/553.b7906877d98a62265533.js.LICENSE.txt +0 -0
  25. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/635.8c395c854aa2b140b668.js +0 -0
  26. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/713.103cb5ae248be385b08a.js +0 -0
  27. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/742.b204789055ded4e07883.js +0 -0
  28. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/747.b8e9485ebcbb3066eb4b.js +0 -0
  29. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/821.b58f29814f5900f1f6f8.js +0 -0
  30. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/845.cc2bc80fbfea6d20a396.js +0 -0
  31. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/888.09382cc93a2ad3932b31.js +0 -0
  32. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/950.7fa048f0e60d99704a22.js +0 -0
  33. /sage_agent_internal-0.4.1.data/data/share/jupyter/labextensions/sage-agent-internal/static/973.38ee5148a3908e41c2dd.js.LICENSE.txt → /sage_agent_internal-0.4.3.data/data/share/jupyter/labextensions/sage-agent-internal/static/973.c9d731f1117c26d913d0.js.LICENSE.txt +0 -0
  34. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/style.js +0 -0
  35. {sage_agent_internal-0.4.1.data → sage_agent_internal-0.4.3.data}/data/share/jupyter/labextensions/sage-agent-internal/static/third-party-licenses.json +0 -0
  36. {sage_agent_internal-0.4.1.dist-info → sage_agent_internal-0.4.3.dist-info}/WHEEL +0 -0
  37. {sage_agent_internal-0.4.1.dist-info → sage_agent_internal-0.4.3.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.4.1'
4
+ __version__ = VERSION = '0.4.3'
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sage-agent-internal",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "description": "Sage Agent - Your Jupyter Notebook Assistant",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -120,7 +120,7 @@
120
120
  "outputDir": "sage_agent_internal/labextension",
121
121
  "schemaDir": "schema",
122
122
  "_build": {
123
- "load": "static/remoteEntry.3bcb51581316f3fb9520.js",
123
+ "load": "static/remoteEntry.7f1a5792a399128e841b.js",
124
124
  "extension": "./extension",
125
125
  "style": "./style"
126
126
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sage-agent-internal",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "description": "Sage Agent - Your Jupyter Notebook Assistant",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunksage_agent_internal=self.webpackChunksage_agent_internal||[]).push([[363],{540:n=>{n.exports=function(n){var o=document.createElement("style");return n.setAttributes(o,n.attributes),n.insert(o,n.options),o}},844:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,".sage-ai-unified-diff-active.has-merge-chunks .jp-Toolbar {\n display: none !important;\n }\n\n.ͼ2.cm-merge-b .cm-changedText {\n background: none !important;\n}\n.code-mirror-empty-original-content .cm-deletedLine:first-of-type,\n.code-mirror-empty-original-content .cm-deletedChunk:first-of-type > .cm-deletedLine {\n display: none !important;\n}\n\n.cm-collapsedLines {\n background: transparent !important;\n}\n\n.cm-deletedChunk {\n background-color: #e5534b1a !important;\n}\n\n.cm-changedLine {\n background-color: #46954a26 !important;\n}",""]);const s=r},1113:n=>{n.exports=function(n,o){if(o.styleSheet)o.styleSheet.cssText=n;else{for(;o.firstChild;)o.removeChild(o.firstChild);o.appendChild(document.createTextNode(n))}}},1346:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* Styles for cell edit mode overlay */\n.sage-ai-diff-edit-mode-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.05);\n z-index: 10;\n cursor: not-allowed;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sage-ai-diff-edit-mode-banner {\n position: absolute;\n top: 0;\n left: 20px;\n background-color: #fc5151;\n color: white;\n padding: 4px 8px;\n font-size: 12px;\n font-weight: bold;\n border-radius: 0 0 0 4px;\n z-index: 11;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n display: none !important;\n}\n\n.sage-ai-diff-edit-mode-instructions {\n position: absolute;\n top: 10px;\n left: 50%;\n transform: translateX(-50%);\n background-color: var(--jp-brand-color1);\n color: var(--jp-ui-font-color1);\n padding: 6px 12px;\n font-size: 11px;\n border-radius: 4px;\n z-index: 11;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n text-align: center;\n max-width: 80%;\n}\n\n/* Make sure the cell has relative positioning for absolute positioning to work */\n.jp-Cell.jp-mod-selected.sage-ai-diff-edit-mode {\n position: relative;\n}\n\n/* Make the diff content more readable */\n.diff-view {\n padding: 10px;\n border-radius: 4px;\n background-color: var(--jp-layout-color0);\n}\n",""]);const s=r},1601:n=>{n.exports=function(n){return n[1]}},2331:(n,o,e)=>{e.d(o,{A:()=>g});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i),s=e(4417),l=e.n(s),p=new URL(e(5655),e.b),d=r()(t()),c=l()(p);d.push([n.id,`/* Snippet Creation Widget Styles */\n.sage-ai-snippet-creation-widget {\n min-width: 280px !important;\n font-family: var(--jp-ui-font-family);\n font-size: var(--jp-ui-font-size1);\n color: var(--jp-ui-font-color1);\n background: var(--jp-layout-color1);\n height: 100%;\n width: 100% !important;\n display: flex;\n flex-direction: column;\n}\n\n/* Hide widget when menu is closed */\n.sage-ai-snippet-creation-widget.hidden {\n display: none !important;\n}\n\n.sage-ai-snippet-creation-panel {\n width: 100% !important;\n padding: 16px;\n height: 100%;\n background: var(--jp-layout-color0);\n display: flex;\n flex-direction: column;\n}\n\n/* Header Styles */\n.sage-ai-snippet-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n\n /* padding-bottom: 8px; */\n}\n\n.sage-ai-snippet-header-div {\n border-bottom: 1px solid var(--jp-border-color2);\n padding-bottom: 12px;\n margin-bottom: 12px;\n}\n\n.sage-ai-snippet-panel-header h3 {\n margin: 0;\n font-size: var(--jp-ui-font-size2);\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-snippet-create-btn {\n background: var(--jp-brand-color1);\n color: white;\n border: none;\n border-radius: 4px;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: background-color 0.2s;\n}\n\n.sage-ai-snippet-create-btn:hover {\n background: var(--jp-brand-color0);\n}\n\n/* Form Styles */\n.sage-ai-snippet-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.sage-ai-snippet-form-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.sage-ai-snippet-form-group label {\n font-weight: 500;\n color: var(--jp-ui-font-color1);\n font-size: var(--jp-ui-font-size0);\n}\n\n.sage-ai-snippet-form-group input,\n.sage-ai-snippet-form-group textarea {\n border: 1px solid var(--jp-border-color2);\n border-radius: 4px;\n padding: 8px;\n font-family: var(--jp-ui-font-family);\n font-size: var(--jp-ui-font-size1);\n background: var(--jp-layout-color1);\n color: var(--jp-ui-font-color0);\n transition: border-color 0.2s;\n}\n\n.sage-ai-snippet-form-group input:focus,\n.sage-ai-snippet-form-group textarea:focus {\n outline: none;\n border-color: var(--jp-brand-color1);\n}\n\n.sage-ai-snippet-form-group textarea {\n resize: vertical;\n min-height: 120px;\n font-family: var(--jp-code-font-family);\n}\n\n.sage-ai-snippet-form-actions {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n margin-top: 8px;\n}\n\n.sage-ai-snippet-save-btn,\n.sage-ai-snippet-cancel-btn {\n padding: 8px 16px;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: var(--jp-ui-font-size1);\n transition: background-color 0.2s;\n}\n\n.sage-ai-snippet-save-btn {\n background: var(--jp-brand-color1);\n color: white;\n}\n\n.sage-ai-snippet-save-btn:hover:not(:disabled) {\n background: var(--jp-brand-color0);\n}\n\n.sage-ai-snippet-save-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.sage-ai-snippet-cancel-btn {\n background: var(--jp-layout-color2);\n color: var(--jp-ui-font-color1);\n border: 1px solid var(--jp-border-color2);\n}\n\n.sage-ai-snippet-cancel-btn:hover {\n background: var(--jp-layout-color3);\n}\n\n/* Viewer Styles */\n.sage-ai-snippet-viewer {\n display: flex;\n flex-direction: column;\n gap: 12px;\n flex: 1; /* Expand to fill available space */\n height: 100%; /* Take full height of parent */\n min-height: 0; /* Allow proper flex shrinking */\n}\n\n.sage-ai-snippet-viewer-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-bottom: 1px solid var(--jp-border-color2);\n padding-bottom: 8px;\n}\n\n.sage-ai-snippet-viewer-header h4 {\n margin: 0;\n font-size: var(--jp-ui-font-size2);\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-snippet-close-btn {\n background: none;\n border: none;\n font-size: 18px;\n cursor: pointer;\n color: var(--jp-ui-font-color2);\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n}\n\n.sage-ai-snippet-close-btn:hover {\n background: var(--jp-layout-color2);\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-snippet-viewer-description {\n color: var(--jp-ui-font-color2);\n font-style: italic;\n line-height: 1.4;\n}\n\n.sage-ai-snippet-viewer-content {\n background: var(--jp-layout-color2);\n border: 1px solid var(--jp-border-color2);\n border-radius: 4px;\n padding: 12px;\n max-height: 300px;\n overflow-y: auto;\n}\n\n.sage-ai-snippet-viewer-content pre {\n margin: 0;\n font-family: var(--jp-code-font-family);\n font-size: var(--jp-code-font-size);\n color: var(--jp-content-font-color0);\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n\n.sage-ai-snippet-viewer-actions {\n display: flex;\n gap: 8px;\n justify-content: flex-start;\n flex-wrap: wrap;\n position: relative;\n}\n\n/* Full action buttons for wider screens */\n.sage-ai-snippet-actions-full {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n/* Compact dropdown for smaller screens */\n.sage-ai-snippet-actions-compact {\n position: relative;\n display: none; /* Hidden by default */\n}\n\n/* Media query for responsive behavior */\n@media (width <= 400px) {\n .sage-ai-snippet-actions-full {\n display: none;\n }\n\n .sage-ai-snippet-actions-compact {\n display: block;\n }\n}\n\n/* Dropdown button styling */\n.sage-ai-snippet-actions-dropdown-btn {\n background: var(--jp-layout-color2);\n border: 1px solid var(--jp-border-color2);\n border-radius: 4px;\n padding: 6px 12px;\n cursor: pointer;\n font-size: 16px;\n color: var(--jp-ui-font-color1);\n transition: background-color 0.2s;\n}\n\n.sage-ai-snippet-actions-dropdown-btn:hover {\n background: var(--jp-layout-color3);\n}\n\n/* Dropdown menu */\n.sage-ai-snippet-actions-dropdown {\n position: absolute;\n top: 100%;\n right: 0;\n background: var(--jp-layout-color1);\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n box-shadow: 0 2px 8px rgb(0 0 0 / 15%);\n z-index: 1000;\n min-width: 120px;\n margin-top: 4px;\n}\n\n/* Dropdown items */\n.sage-ai-snippet-dropdown-item {\n display: block;\n width: 100%;\n padding: 8px 12px;\n background: none;\n border: none;\n text-align: left;\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n color: var(--jp-ui-font-color1);\n transition: background-color 0.2s;\n}\n\n.sage-ai-snippet-dropdown-item:hover {\n background: var(--jp-layout-color2);\n}\n\n.sage-ai-snippet-dropdown-item:first-child {\n border-radius: 4px 4px 0 0;\n}\n\n.sage-ai-snippet-dropdown-item:last-child {\n border-radius: 0 0 4px 4px;\n}\n\n/* Dark theme support for dropdown */\n[data-jp-theme-light='false'] .sage-ai-snippet-actions-dropdown {\n background: var(--jp-layout-color0);\n border-color: var(--jp-border-color0);\n box-shadow: 0 2px 8px rgb(0 0 0 / 40%);\n}\n\n[data-jp-theme-light='false'] .sage-ai-snippet-actions-dropdown-btn {\n background: var(--jp-layout-color1);\n border-color: var(--jp-border-color1);\n}\n\n[data-jp-theme-light='false'] .sage-ai-snippet-actions-dropdown-btn:hover {\n background: var(--jp-layout-color2);\n}\n\n.sage-ai-snippet-enable-btn,\n.sage-ai-snippet-edit-btn {\n padding: 2px;\n border: none;\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n transition: background-color 0.2s;\n}\n\n.sage-ai-snippet-enable-btn {\n background: var(--jp-success-color1);\n color: white;\n}\n\n.sage-ai-snippet-enable-btn:hover {\n background: var(--jp-success-color0);\n}\n\n.sage-ai-snippet-edit-btn {\n background: none !important;\n color: white;\n}\n\n/* List Styles */\n.sage-ai-snippet-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n flex: 1;\n min-height: 0; /* Important for flex shrinking */\n}\n\n.sage-ai-snippet-list-container {\n flex: 1;\n overflow-y: auto;\n min-height: 0; /* Important for flex shrinking */\n}\n\n.sage-ai-snippet-empty {\n text-align: center;\n color: var(--jp-ui-font-color2);\n padding: 32px 16px;\n}\n\n.sage-ai-snippet-empty p {\n margin: 8px 0;\n}\n\n.sage-ai-snippet-items {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding-bottom: 8px; /* Add some padding at the bottom */\n}\n\n.sage-ai-snippet-item-container {\n display: flex;\n flex-direction: column;\n}\n\n.sage-ai-snippet-item {\n /* border: 1px solid var(--jp-border-color2); */\n border-radius: 6px;\n padding: 6px;\n cursor: pointer;\n transition: all 0.2s;\n\n /* background: var(--jp-layout-color1); */\n}\n\n.sage-ai-snippet-item:hover {\n background: var(--jp-layout-color2);\n border-color: var(--jp-brand-color1);\n}\n\n[data-jp-theme-light='false'] .sage-ai-snippet-item:hover {\n background: rgb(56 56 56 / 30%) !important;\n}\n\n.sage-ai-snippet-item.selected {\n border-color: var(--jp-brand-color1);\n background: var(--jp-layout-color2);\n}\n\n.sage-ai-snippet-item-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 13px;\n font-style: normal;\n font-weight: 500;\n line-height: 155%;\n}\n\n[data-jp-theme-light='false'] .sage-ai-snippet-item-header {\n color: #e7e7e7;\n}\n\n.sage-ai-snippet-title-container {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n}\n\n.sage-ai-snippet-item-header h5 {\n margin: 0;\n font-size: 13px;\n font-weight: 500 !important;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-snippet-checkmark {\n color: var(--jp-brand-color1);\n flex-shrink: 0;\n}\n\n.sage-ai-snippet-item-actions {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.sage-ai-snippet-menu-btn {\n background: none;\n border: none;\n font-size: 16px;\n cursor: pointer;\n color: var(--jp-ui-font-color2);\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 3px;\n opacity: 0;\n transition: all 0.2s;\n}\n\n.sage-ai-snippet-item:hover .sage-ai-snippet-menu-btn {\n opacity: 1;\n}\n\n.sage-ai-snippet-menu-btn:hover {\n background: var(--jp-layout-color3);\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-snippet-context-menu {\n position: absolute;\n top: 100%;\n right: 0;\n background: var(--jp-layout-color1);\n border: 1px solid var(--jp-border-color2);\n border-radius: 4px;\n box-shadow: 0 4px 12px rgb(0 0 0 / 15%);\n z-index: 1000;\n min-width: 120px;\n padding: 4px 0;\n}\n\n.sage-ai-snippet-menu-item {\n display: block;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n text-align: left;\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n color: var(--jp-ui-font-color0);\n transition: background-color 0.2s;\n}\n\n.sage-ai-snippet-menu-item:hover {\n background: var(--jp-layout-color2);\n}\n\n.sage-ai-snippet-menu-item.delete:hover {\n background: var(--jp-error-color1);\n color: white;\n}\n\n.sage-ai-snippet-delete-btn {\n background: none;\n border: none;\n font-size: 16px;\n cursor: pointer;\n color: var(--jp-ui-font-color2);\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 3px;\n opacity: 0;\n transition: all 0.2s;\n}\n\n.sage-ai-snippet-item:hover .sage-ai-snippet-delete-btn {\n opacity: 1;\n}\n\n.sage-ai-snippet-delete-btn:hover {\n background: var(--jp-error-color1);\n color: white;\n}\n\n.sage-ai-snippet-item-description {\n margin: 0 0 8px;\n color: var(--jp-ui-font-color2);\n font-size: var(--jp-ui-font-size0);\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.sage-ai-snippet-item-meta {\n font-size: var(--jp-ui-font-size00);\n color: var(--jp-ui-font-color3);\n}\n\n/* Inline Viewer Styles */\n.sage-ai-snippet-viewer-inline {\n margin-top: 16px;\n /*padding: 16px;*/\n background: var(--jp-layout-color0);\n border-top: 1px solid var(--jp-border-color1);\n flex-shrink: 0; /* Don't shrink the viewer */\n max-height: 40vh; /* Limit maximum height */\n display: flex;\n flex-direction: column;\n overflow: hidden; /* Remove scrolling from the entire viewer */\n}\n\n.sage-ai-snippet-description {\n color: var(--jp-ui-font-color3);\n font-size: 13px;\n font-style: normal;\n font-weight: 500;\n line-height: 155%; /* 20.15px */\n}\n\n/* First Row: Toolbar with Preview label and action buttons */\n.sage-ai-snippet-viewer-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 16px;\n padding-top: 16px;\n /*border-bottom: 1px solid var(--jp-border-color2);*/\n flex-shrink: 0; /* Don't shrink the toolbar */\n}\n\n.sage-ai-snippet-preview-label {\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n font-size: 13px;\n}\n\n.sage-ai-snippet-viewer-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sage-ai-snippet-edit-btn {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--jp-ui-font-color2);\n\n /* width: 28px; */\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.sage-ai-snippet-edit-btn:hover {\n background: var(--jp-layout-color2);\n color: var(--jp-brand-color1);\n}\n\n.sage-ai-snippet-close-btn {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--jp-ui-font-color2);\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.sage-ai-snippet-close-btn:hover {\n background: var(--jp-layout-color2);\n color: var(--jp-ui-font-color0);\n}\n\n/* Second Row: Title display */\n.sage-ai-snippet-viewer-title-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n flex-shrink: 0; /* Don't shrink the title row */\n}\n\n.sage-ai-snippet-title-label {\n font-weight: 600;\n color: var(--jp-ui-font-color1);\n font-size: 13px;\n}\n\n.sage-ai-snippet-title-text {\n color: var(--jp-ui-font-color0);\n font-size: 13px;\n flex: 1;\n}\n\n/* Third Row: Code block (simplified) */\n.sage-ai-snippet-code-block {\n margin: 0;\n border: 1px solid var(--jp-border-color2);\n border-radius: 6px;\n overflow: hidden;\n background: var(--jp-layout-color2);\n flex: 1; /* Take up remaining space */\n display: flex;\n flex-direction: column;\n min-height: 0; /* Allow flexbox to shrink */\n}\n\n.sage-ai-snippet-insert-btn {\n background: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n color: var(--jp-brand-color0);\n border-radius: 4px;\n gap: 8px;\n padding: 2px;\n border: none !important;\n cursor: pointer;\n transition: background-color 0.2s;\n text-align: center;\n font-size: 13px;\n font-style: normal;\n font-weight: 600;\n line-height: 155%; /* 20.15px */\n}\n\n.insert-icon-container {\n width: 20px;\n height: 20px;\n}\n\n.sage-ai-snippet-insert-btn:hover {\n background: none;\n}\n\n/* Remove state styling for insert button */\n.sage-ai-snippet-insert-btn.sage-ai-snippet-remove-state {\n color: var(--jp-error-color1) !important;\n background: none !important;\n}\n\n.sage-ai-snippet-insert-btn.sage-ai-snippet-remove-state\n .insert-icon-container {\n fill: var(--jp-error-color1) !important;\n transform: rotate(180deg);\n}\n\n.sage-ai-snippet-insert-btn.sage-ai-snippet-remove-state\n .insert-icon-container {\n div {\n svg {\n g {\n path {\n fill: var(--jp-error-color1) !important;\n }\n }\n }\n }\n}\n\n.sage-ai-snippet-insert-btn.sage-ai-snippet-remove-state:hover {\n background: var(--jp-error-color3);\n}\n\n.sage-ai-snippet-code-content {\n margin: 0;\n padding: 12px;\n font-family: var(--jp-code-font-family);\n font-size: var(--jp-code-font-size);\n color: var(--jp-content-font-color0);\n background: var(--jp-layout-color2);\n overflow: auto auto; /* Make only the content scrollable */\n white-space: pre;\n line-height: 1.4;\n flex: 1; /* Take up remaining space in the code block */\n min-height: 0; /* Allow flexbox to shrink */\n}\n\n.sage-ai-snippet-code-content code {\n background: none;\n padding: 0;\n font-family: inherit;\n font-size: inherit;\n color: inherit;\n}\n\n.sage-ai-snippet-viewer-meta {\n display: flex;\n gap: 16px;\n margin-top: 12px;\n padding-top: 8px;\n border-top: 1px solid var(--jp-border-color2);\n font-size: var(--jp-ui-font-size00);\n color: var(--jp-ui-font-color3);\n flex-shrink: 0; /* Don't shrink the meta section */\n}\n\n/* Custom Icon Styles */\n.sage-ai-snippet-icon {\n background-image: url(${c});\n background-repeat: no-repeat;\n background-position: center;\n background-size: 16px 16px;\n}\n\n/* Dark theme adjustments */\n[data-jp-theme-light='false'] .sage-ai-snippet-creation-widget {\n color: var(--jp-ui-font-color1);\n}\n\n[data-jp-theme-light='false'] .sage-ai-snippet-viewer-content {\n background: var(--jp-layout-color0);\n}\n\n/* Dark mode styling for create button */\n[data-jp-theme-light='false'] .sage-ai-snippet-create-btn {\n border-radius: 8px;\n border: 0.5px solid var(--Border-Border, #383838);\n background: var(--Button-bg-default, #1a1a1a);\n color: white;\n}\n\n[data-jp-theme-light='false'] .sage-ai-snippet-create-btn:hover {\n background: var(--Button-bg-hover, #2a2a2a);\n border-color: var(--Border-Border-hover, #4a4a4a);\n}\n\n/* Make SVG icons white in dark mode */\n[data-jp-theme-light='true'] .sage-ai-snippet-create-btn svg {\n filter: invert(1);\n}\n\n/* Modal Styles */\n.sage-ai-custom-snippet-modal .modal-content {\n border-radius: 12px;\n border: 1px solid var(--Border-Border, #383838);\n background: var(--BG-main, #111);\n box-shadow: 0 8px 17.1px 0 rgb(208 208 208 / 9%);\n}\n\n/* Ensure modal header and body text are readable */\n.sage-ai-custom-snippet-modal .modal-header,\n.sage-ai-custom-snippet-modal .modal-body,\n.sage-ai-custom-snippet-modal .modal-footer {\n background: transparent;\n border-color: var(--Border-Border, #383838);\n color: var(--jp-ui-font-color0);\n}\n\n/* Style the close button to match the dark theme */\n.sage-ai-custom-snippet-modal .btn-close {\n filter: invert(1);\n}\n\n.sage-ai-snippet-form-modal {\n max-width: 600px;\n width: 90%;\n max-height: 80vh;\n overflow-y: auto;\n box-sizing: border-box;\n}\n\n.sage-ai-snippet-form-modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 20px;\n border-bottom: 1px solid var(--jp-border-color2);\n padding-bottom: 12px;\n}\n\n.sage-ai-snippet-form-modal-header .sage-ai-dialog-title {\n margin: 0;\n font-size: 1.2em;\n font-weight: 600;\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-snippet-form-modal .sage-ai-snippet-close-btn {\n background: none;\n border: none;\n font-size: 20px;\n cursor: pointer;\n color: var(--jp-ui-font-color2);\n padding: 4px 8px;\n border-radius: 4px;\n line-height: 1;\n}\n\n.sage-ai-snippet-form-modal .sage-ai-snippet-close-btn:hover {\n background: var(--jp-layout-color2);\n color: var(--jp-ui-font-color1);\n}\n\n/* Modal form inherits existing form styles */\n.sage-ai-snippet-form-modal .sage-ai-snippet-form {\n margin: 0;\n}\n\n.sage-ai-snippet-form-modal .sage-ai-snippet-form-group textarea {\n min-height: 200px;\n resize: vertical;\n}\n\n/* Modal overlay effect */\n.sage-ai-modal {\n backdrop-filter: blur(2px);\n}\n\n/* Responsive adjustments */\n@media (width <= 320px) {\n .sage-ai-snippet-creation-panel {\n padding: 12px;\n }\n\n .sage-ai-snippet-form-actions {\n flex-direction: column;\n }\n\n .sage-ai-snippet-viewer-actions {\n flex-direction: column;\n }\n\n .sage-ai-snippet-form-modal {\n width: 95%;\n max-height: 90vh;\n }\n}\n`,""]);const g=d},3114:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* Wrapper for fixed positioning with flexbox */\n.sage-ai-state-display-container {\n position: fixed !important;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n z-index: 1;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n}\n\n.sage-ai-llm-state-widget {\n order: 2;\n pointer-events: auto;\n margin: 0 17px;\n /* Remove transform since we're using flexbox layout */\n}\n\n.sage-ai-input-spacer {\n order: 3;\n flex-shrink: 0;\n}\n\n/* LLM State Display - positioned above the chat input */\n.sage-ai-llm-state-display {\n display: none; /* Hidden by default */\n align-items: center;\n justify-content: center;\n padding: 8px;\n padding-bottom: 18px;\n margin-bottom: 0;\n background-color: var(--jp-layout-color1);\n border-radius: 8px;\n font-size: 13px;\n color: var(--jp-ui-font-color1);\n box-shadow: 0 2px 4px rgb(0 0 0 / 5%);\n transition: all 0.2s ease-in-out;\n /*transform: translateY(-10px);*/\n border: 1px solid var(--jp-border-color2);\n position: relative;\n z-index: 0; /* Ensure it stays above other content */\n}\n\n.sage-ai-generating,\n.sage-ai-using-tool {\n justify-content: space-between !important;\n}\n\n.sage-ai-llm-state-content {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sage-ai-waiting-for-user {\n width: 12px;\n height: 12px;\n border-radius: 50%;\n background: transparent;\n border: 1px dashed #d3a500;\n}\n\n.sage-ai-llm-state-text {\n color: var(--jp-ui-font-color2);\n font-style: normal;\n font-weight: 500;\n font-size: var(--jp-ui-font-size1);\n}\n\n/* Ensure the blob loader works in this context */\n.sage-ai-llm-state-display .sage-ai-blob-loader {\n flex-shrink: 0;\n}\n\n/* Diff State Styles */\n.sage-ai-diff-state {\n display: flex !important;\n flex-direction: column;\n align-items: stretch !important;\n justify-content: flex-start !important;\n}\n\n/* Diff State Styles */\n.sage-ai-run-kernel {\n display: flex !important;\n justify-content: space-between !important;\n}\n\n.sage-ai-diff-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--jp-border-color2);\n}\n\n.sage-ai-diff-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-diff-icon {\n font-size: 16px;\n}\n\n.sage-ai-diff-text {\n font-size: 14px;\n}\n\n.sage-ai-diff-bulk-actions {\n display: flex;\n gap: 6px;\n}\n\n.sage-ai-diff-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n overflow-y: auto;\n margin-top: 6px;\n}\n\n.sage-ai-diff-decision {\n margin-left: 4px;\n font-size: 9px;\n}\n\n.sage-ai-llm-state-stop-button {\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color1);\n font-size: var(--jp-ui-font-size1);\n font-style: normal;\n font-weight: 500;\n line-height: 160%; /* 19.2px */\n padding: 2px 6px;\n box-shadow: none;\n border: none;\n cursor: pointer;\n}\n\n.sage-ai-llm-state-stop-button:hover {\n background-color: var(--jp-layout-color1);\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-diff-decision-approved {\n color: #28a745;\n}\n\n.sage-ai-diff-decision-rejected {\n color: #dc3545;\n}\n\n.sage-ai-diff-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 4px 6px;\n border: 1px solid var(--jp-border-color2);\n border-radius: 6px;\n font-size: 12px;\n transition: all 0.2s ease;\n position: relative;\n z-index: 0;\n}\n\n.sage-ai-diff-item::before {\n content: '';\n position: absolute;\n inset: 0; /* shorthand for top/right/bottom/left: 0 */\n background: var(--jp-layout-color1);\n opacity: 1; /* initial opacity */\n transition: opacity 0.25s ease;\n z-index: -1; /* behind the box's content */\n border-radius: 6px;\n}\n\n.sage-ai-diff-item:hover {\n cursor: pointer;\n}\n\n.sage-ai-diff-item:hover::before {\n opacity: 0.8; /* hover opacity */\n}\n\n.sage-ai-diff-info {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n\n.sage-ai-diff-operation {\n display: flex;\n align-items: center;\n justify-content: center;\n font-weight: bold;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.sage-ai-diff-changes {\n display: flex;\n gap: 4px;\n font-size: 11px;\n font-weight: 600;\n align-items: center;\n}\n\n.fix_run_cell_size {\n height: 16px;\n}\n\n.sage-ai-diff-summary {\n width: fit-content;\n}\n\n.sage-ai-diff-added {\n color: #28a745;\n}\n\n.sage-ai-diff-removed {\n color: #dc3545;\n}\n\n.sage-ai-diff-actions {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.sage-ai-diff-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 12px;\n font-weight: bold;\n transition: all 0.2s ease;\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color2);\n}\n\n.sage-ai-diff-approve {\n color: #28a745;\n}\n\n.sage-ai-diff-approve:hover {\n background-color: #28a745;\n color: white;\n}\n\n.sage-ai-diff-reject {\n color: #dc3545;\n}\n\n.sage-ai-diff-reject:hover {\n color: white;\n}\n\n.sage-ai-diff-approve-all,\n.sage-ai-diff-reject-all {\n padding: 2px 6px;\n width: auto;\n height: auto;\n border-radius: 5px !important;\n font-size: var(--jp-ui-font-size1);\n font-weight: 500;\n line-height: 160%;\n}\n\n.sage-ai-diff-approve-all {\n color: var(--jp-ui-inverse-font-color0);\n background-color: var(--jp-inverse-layout-color2);\n}\n\n.sage-ai-diff-approve-all:hover {\n color: var(--jp-ui-inverse-font-color1);\n background-color: var(--jp-inverse-layout-color3);\n}\n\n.sage-ai-diff-reject-all {\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-diff-reject-all:hover {\n color: var(--jp-ui-font-color0);\n background-color: var(--jp-layout-color1);\n}\n\n/* Generating state specific styles */\n.sage-ai-generating {\n display: flex !important;\n}\n\n/* Using tool state specific styles */\n.sage-ai-using-tool {\n display: flex !important;\n}\n\n.sage-ai-tool-loader {\n width: 16px;\n height: 16px;\n border: 2px solid var(--jp-border-color2);\n border-top: 2px solid var(--jp-brand-color1);\n border-radius: 50%;\n animation: spin 1s linear infinite;\n flex-shrink: 0;\n}\n\n.sage-ai-tool-icon-container {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sage-ai-tool-icon-container svg {\n width: 16px;\n height: 16px;\n fill: var(--jp-brand-color1);\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n/* Ensure the tool state has the same styling as generating */\n.sage-ai-using-tool .sage-ai-llm-state-text {\n color: var(--jp-ui-font-color2);\n font-style: italic;\n font-weight: 500;\n}\n\n/* Collapsible Diff Summary Bar */\n.sage-ai-diff-summary-bar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n transition: background-color 0.2s ease;\n user-select: none;\n}\n\n.sage-ai-diff-menu-icon {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n.sage-ai-diff-summary-info {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n}\n\n.sage-ai-diff-cell-count {\n font-weight: 600;\n color: var(--jp-ui-font-color1);\n font-size: var(--jp-ui-font-size1);\n}\n\n.sage-ai-diff-cell-count-info {\n display: flex;\n gap: 4px;\n margin: 0;\n}\n\n.sage-ai-diff-added-count {\n color: #28a745;\n border-radius: 4px;\n font-size: 11px;\n font-weight: bold;\n}\n\n.sage-ai-diff-removed-count {\n color: #dc3545;\n border-radius: 4px;\n font-size: 11px;\n font-weight: bold;\n}\n\n.sage-ai-diff-expand-icon {\n color: var(--jp-ui-font-color2);\n font-size: 12px;\n margin-left: auto;\n margin-right: 8px;\n transition: transform 0.2s ease;\n}\n\n.sage-ai-diff-summary-actions {\n display: flex;\n gap: 6px;\n flex-shrink: 0;\n}\n\n/* Hide actions on hover for diff items when showActionsOnHover is true */\n.sage-ai-diff-item-hover-actions .sage-ai-diff-actions {\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n\n.sage-ai-diff-item-hover-actions:hover .sage-ai-diff-actions {\n opacity: 1;\n}\n\n/* Button container for LLM state display */\n.sage-ai-llm-state-buttons {\n display: flex;\n gap: 6px;\n align-items: center;\n}\n\n/* Run/Reject buttons for notebook-run_cell tool */\n.sage-ai-llm-state-run-button,\n.sage-ai-llm-state-reject-button {\n padding: 4px 8px;\n border: none;\n border-radius: 8px !important;\n cursor: pointer;\n font-size: var(--jp-ui-font-size1);\n font-weight: 500;\n line-height: 160%;\n transition: all 0.2s ease;\n box-shadow: none;\n}\n\n.sage-ai-llm-state-run-button {\n background-color: var(--jp-inverse-layout-color0);\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.sage-ai-llm-state-run-button:hover {\n background-color: var(--jp-inverse-layout-color2);\n color: var(--jp-ui-inverse-font-color1);\n}\n\n.sage-ai-llm-state-reject-button {\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-llm-state-reject-button:hover {\n background-color: var(--jp-layout-color1);\n color: var(--jp-ui-font-color0);\n}\n",""]);const s=r},3342:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,'/* Diff Navigation Widget Styles */\n.sage-ai-diff-navigation-widget {\n position: absolute;\n bottom: 20px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 1000;\n pointer-events: auto;\n transition: bottom 0.2s ease;\n}\n\n.sage-ai-diff-navigation-widget:hover {\n bottom: 22px;\n}\n\n/* Ensure the notebook container has relative positioning for absolute child positioning */\n.jp-Notebook {\n position: relative;\n}\n\n.sage-ai-diff-navigation-floating-content {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 8px;\n background-color: var(--jp-layout-color1);\n border: 1px solid var(--jp-border-color1);\n border-radius: 8px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n font-family: var(--jp-ui-font-family);\n}\n\n/* Navigation Section */\n.sage-ai-diff-navigation-navigation-section {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sage-ai-diff-navigation-nav-button {\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 8px;\n background-color: transparent;\n color: var(--jp-ui-font-color0);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: bold;\n transition: all 0.2s ease;\n font-family: var(--jp-ui-font-family);\n}\n\n.sage-ai-diff-navigation-nav-button:hover:not(:disabled) {\n background-color: var(--jp-layout-color2);\n}\n\n.sage-ai-diff-navigation-nav-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n color: var(--jp-ui-font-color3);\n}\n\n.sage-ai-diff-navigation-counter-display {\n font-size: var(--jp-ui-font-size1);\n font-weight: 500;\n color: var(--jp-ui-font-color0);\n min-width: 40px;\n text-align: center;\n font-family: var(--jp-ui-font-family);\n}\n\n/* Button Section */\n.sage-ai-diff-navigation-button-section {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sage-ai-diff-navigation-action-button {\n padding: 4px 6px;\n border-radius: 6px !important;\n font-size: var(--jp-ui-font-size1);\n font-weight: 500;\n cursor: pointer;\n border: none;\n transition: all 0.2s ease;\n font-family: var(--jp-ui-font-family);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.sage-ai-diff-navigation-action-button span {\n white-space: nowrap;\n}\n\n/* Reject Button (Outlined) */\n.sage-ai-diff-navigation-reject-button {\n background-color: var(--jp-layout-color3);\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-diff-navigation-reject-button:hover {\n background-color: var(--jp-layout-color4);\n}\n\n/* Approve Button (Primary) */\n.sage-ai-diff-navigation-approve-button {\n background-color: var(--jp-layout-color3);\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-diff-navigation-approve-button:hover {\n background-color: var(--jp-layout-color4);\n}\n\n/* Accept & Run All Button (Enhanced Primary) */\n.sage-ai-diff-navigation-accept-run-button {\n background-color: var(--jp-inverse-layout-color2);\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.sage-ai-diff-navigation-accept-run-button:hover {\n background-color: var(--jp-inverse-layout-color0);\n}\n\n/* Hidden state */\n.sage-ai-diff-navigation-widget.hidden {\n display: none;\n}\n\n/* Dark theme adjustments */\n[data-jp-theme-light="false"] .sage-ai-diff-navigation-floating-content {\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.3);\n}\n\n/* Light theme specific overrides if needed */\n[data-jp-theme-light="true"] .sage-ai-diff-navigation-floating-content {\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n}\n\n/* Icon styling */\n.sage-ai-diff-navigation-nav-icon {\n opacity: 0.7;\n transition: opacity 0.2s ease;\n}\n\n.sage-ai-diff-navigation-action-icon {\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n/* Make icons lighter on hover */\n.sage-ai-diff-navigation-nav-button:hover:not(:disabled) .sage-ai-diff-navigation-nav-icon {\n opacity: 1;\n}\n\n.sage-ai-diff-navigation-action-button:hover .sage-ai-diff-navigation-action-icon {\n opacity: 1;\n}\n\n/* Icon color adjustments for different button states */\n.sage-ai-diff-navigation-nav-button:disabled .sage-ai-diff-navigation-nav-icon {\n opacity: 0.3;\n}\n\n/* Specific button styling (if needed for customization) */\n.sage-ai-diff-navigation-prev-button {\n /* Previous button specific styles can be added here */\n}\n\n.sage-ai-diff-navigation-next-button {\n /* Next button specific styles can be added here */\n}\n',""]);const s=r},4246:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,".sage-ai-codebase-manager {\n padding: 16px;\n flex-shrink: 0; /* Prevent shrinking within settings container */\n}\n\n.sage-ai-section-title {\n margin-top: 0;\n margin-bottom: 8px;\n}\n\n.sage-ai-section-description {\n margin-top: 0;\n margin-bottom: 16px;\n color: var(--jp-ui-font-color2);\n}\n\n.sage-ai-add-repo-form {\n background-color: var(--jp-layout-color1);\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n padding: 16px;\n margin-bottom: 16px;\n}\n\n.sage-ai-form-group {\n margin-bottom: 12px;\n}\n\n.sage-ai-form-group label {\n display: block;\n margin-bottom: 4px;\n font-weight: 500;\n}\n\n.sage-ai-settings-title {\n margin-left: 16px;\n}\n\n.sage-ai-input, .sage-ai-textarea {\n width: 98%;\n padding: 8px;\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-button {\n padding: 8px 16px;\n border-radius: 4px;\n cursor: pointer;\n font-weight: 500;\n border: none;\n}\n\n.sage-ai-primary-button {\n background-color: var(--jp-brand-color1);\n color: white;\n}\n\n.sage-ai-primary-button:hover {\n background-color: var(--jp-brand-color0);\n}\n\n.sage-ai-codebase-list {\n margin-top: 20px;\n max-height: 400px; /* Set maximum height */\n overflow-y: auto; /* Enable vertical scrolling */\n scroll-behavior: smooth; /* Add smooth scrolling */\n padding-right: 4px; /* Add some padding for the scrollbar */\n}\n\n/* Styling for webkit-based browsers' scrollbars */\n.sage-ai-codebase-list::-webkit-scrollbar {\n width: 8px;\n}\n\n.sage-ai-codebase-list::-webkit-scrollbar-track {\n background: var(--jp-layout-color0);\n border-radius: 4px;\n}\n\n.sage-ai-codebase-list::-webkit-scrollbar-thumb {\n background: var(--jp-border-color2);\n border-radius: 4px;\n}\n\n.sage-ai-codebase-list::-webkit-scrollbar-thumb:hover {\n background: var(--jp-border-color1);\n}\n\n.sage-ai-empty-state {\n padding: 20px;\n text-align: center;\n border: 1px dashed var(--jp-border-color1);\n color: var(--jp-ui-font-color2);\n border-radius: 4px;\n}\n\n.sage-ai-codebase-item {\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n padding: 16px;\n margin-bottom: 12px;\n background-color: var(--jp-layout-color1);\n}\n\n.sage-ai-codebase-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n}\n\n.sage-ai-codebase-title {\n font-weight: bold;\n margin: 0;\n}\n\n.sage-ai-codebase-path {\n margin: 4px 0;\n color: var(--jp-ui-font-color2);\n word-break: break-all;\n}\n\n.sage-ai-codebase-instructions {\n margin: 8px 0;\n padding: 8px;\n background-color: var(--jp-layout-color0);\n border-left: 3px solid var(--jp-brand-color1);\n border-radius: 2px;\n}\n\n.sage-ai-codebase-actions {\n display: flex;\n gap: 8px;\n}\n\n.sage-ai-action-button {\n padding: 4px 8px;\n border-radius: 4px;\n cursor: pointer;\n border: 1px solid var(--jp-border-color1);\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color0);\n font-size: 0.9em;\n}\n\n.sage-ai-action-button:hover {\n background-color: var(--jp-layout-color3);\n}\n\n.sage-ai-danger-button {\n color: var(--jp-error-color1);\n border-color: var(--jp-error-color1);\n}\n\n.sage-ai-danger-button:hover {\n background-color: rgba(var(--jp-error-color-rgb), 0.1);\n}\n\n.sage-ai-index-status {\n font-size: 0.9em;\n margin: 8px 0;\n padding: 4px 8px;\n background-color: var(--jp-layout-color2);\n border-radius: 4px;\n display: inline-block;\n}\n",""]);const s=r},4417:n=>{n.exports=function(n,o){return o||(o={}),n?(n=String(n.__esModule?n.default:n),/^['"].*['"]$/.test(n)&&(n=n.slice(1,-1)),o.hash&&(n+=o.hash),/["'() \t\n]|(%20)/.test(n)||o.needQuotes?'"'.concat(n.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):n):n}},5056:(n,o,e)=>{n.exports=function(n){var o=e.nc;o&&n.setAttribute("nonce",o)}},5072:n=>{var o=[];function e(n){for(var e=-1,a=0;a<o.length;a++)if(o[a].identifier===n){e=a;break}return e}function a(n,a){for(var i={},r=[],s=0;s<n.length;s++){var l=n[s],p=a.base?l[0]+a.base:l[0],d=i[p]||0,c="".concat(p," ").concat(d);i[p]=d+1;var g=e(c),f={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==g)o[g].references++,o[g].updater(f);else{var u=t(f,a);a.byIndex=s,o.splice(s,0,{identifier:c,updater:u,references:1})}r.push(c)}return r}function t(n,o){var e=o.domAPI(o);return e.update(n),function(o){if(o){if(o.css===n.css&&o.media===n.media&&o.sourceMap===n.sourceMap&&o.supports===n.supports&&o.layer===n.layer)return;e.update(n=o)}else e.remove()}}n.exports=function(n,t){var i=a(n=n||[],t=t||{});return function(n){n=n||[];for(var r=0;r<i.length;r++){var s=e(i[r]);o[s].references--}for(var l=a(n,t),p=0;p<i.length;p++){var d=e(i[p]);0===o[d].references&&(o[d].updater(),o.splice(d,1))}i=l}}},5248:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"@import url(https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap);"]),r.push([n.id,"/* Import Geist font from Google Fonts */\n\n/* Override JupyterLab font variables to use Geist */\n:root {\n --jp-ui-font-family:\n 'Geist', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial,\n sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol' !important;\n --jp-content-font-family: 'Geist', 'Source Sans Pro', sans-serif !important;\n}\n\n/* Ensure Geist is applied to the plugin elements */\n.sage-ai-chatbox,\n.sage-ai-chat-input,\n.sage-ai-rich-chat-input,\n.sage-ai-rich-chat-input-wrapper,\n.sage-ai-message,\n.sage-ai-markdown-content,\n.sage-ai-tool-calls,\n.sage-ai-step-floating-box,\n.sage-ai-banner-header {\n font-family:\n 'Geist',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Helvetica,\n Arial,\n sans-serif;\n}\n",""]);const s=r},5433:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,".sage-ai-mention-dropdown {\n position: absolute;\n background-color: var(--jp-layout-color1);\n border: 1px solid var(--jp-inverse-border-color);\n border-radius: 8px;\n box-shadow: 0 2px 8px rgb(0 0 0 / 15%);\n z-index: 150000 !important;\n max-height: 200px;\n overflow: hidden;\n width: auto;\n display: none;\n flex-direction: column;\n min-width: 65%;\n}\n\n[data-jp-theme-light='false'] .sage-ai-mention-dropdown {\n background-color: var(--jp-layout-color1);\n}\n\n.sage-ai-mention-dropdown.visible {\n display: flex;\n}\n\n/* Search container with icon and input */\n.sage-ai-mention-search-container {\n display: flex;\n padding: 4px 8px;\n border-radius: 8px;\n align-items: center;\n gap: 8px;\n align-self: stretch;\n border: 0.8px solid var(--jp-border-color3);\n background-color: var(--jp-layout-color0);\n}\n\n.sage-ai-mention-search-icon {\n width: 16px;\n height: 16px;\n color: var(--jp-ui-font-color2);\n flex-shrink: 0;\n}\n\n.sage-ai-mention-search-input {\n flex: 1;\n outline: none;\n background: transparent;\n color: var(--jp-ui-font-color1);\n font-size: 12px;\n padding: 4px 0;\n border: none;\n}\n\n.sage-ai-mention-search-input::placeholder {\n color: var(--jp-ui-font-color2);\n}\n\n/* Category header container */\n.sage-ai-mention-header-container {\n display: flex;\n padding: 8px 10px;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n gap: 8px;\n align-self: stretch;\n flex-shrink: 0;\n}\n\n/* Content container - scrollable area */\n.sage-ai-mention-content {\n overflow-y: auto;\n overflow-x: hidden;\n flex: 1;\n}\n\n/* Category header with back caret */\n.sage-ai-mention-category-header {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n padding: 0;\n width: 100%;\n}\n\n.sage-ai-mention-category-header:hover {\n opacity: 0.8;\n}\n\n.sage-ai-mention-back-icon {\n width: 14px;\n height: 15px;\n color: #e7e7e7;\n flex-shrink: 0;\n}\n\n.sage-ai-mention-category-title {\n overflow: hidden;\n color: var(--Text-text-primary, #e7e7e7);\n text-overflow: ellipsis;\n font-family: Geist;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n line-height: 160%; /* 19.2px */\n flex: 1;\n}\n\n.sage-ai-mention-item {\n padding: 8px 10px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n\n /* border-bottom: 1px solid var(--jp-border-color2); */\n}\n\n.sage-ai-mention-item:last-child {\n border-bottom: none;\n}\n\n.sage-ai-mention-item:hover,\n.sage-ai-mention-item.active {\n background-color: var(--jp-layout-color2);\n}\n\n[data-jp-theme-light='false'] {\n .sage-ai-mention-content,\n .sage-ai-mention-dropdown {\n background: #111;\n }\n}\n\n.sage-ai-mention-item-icon {\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--jp-ui-font-color1);\n font-size: 14px;\n}\n\n.sage-ai-mention-item-text {\n font-size: 12px;\n color: var(--jp-ui-font-color1);\n flex: 1;\n}\n\n.sage-ai-mention-item-description {\n font-size: var(--jp-ui-font-size0);\n color: var(--jp-ui-font-color2);\n font-style: italic;\n}\n\n.sage-ai-mention-category-main {\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-mention-subcategory {\n padding: 6px 16px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n background-color: var(--jp-layout-color0);\n}\n\n.sage-ai-mention-subcategory:hover,\n.sage-ai-mention-subcategory.active {\n background-color: var(--jp-layout-color2);\n}\n\n.sage-ai-mention-empty {\n padding: 12px;\n font-style: italic;\n color: var(--jp-ui-font-color2);\n text-align: center;\n}\n\n/* Enhanced keyboard navigation styles */\n[data-jp-theme-light='false'] .sage-ai-mention-item.active,\n.sage-ai-mention-subcategory.active {\n background-color: rgb(56 56 56 / 30%) !important;\n\n /* color: var(--jp-ui-inverse-font-color1) !important; */\n\n /* border-left: 3px solid var(--jp-brand-color0); */\n}\n\n.sage-ai-mention-item.active .sage-ai-mention-item-icon,\n.sage-ai-mention-subcategory.active .sage-ai-mention-item-icon {\n color: var(--jp-ui-font-color1);\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\n/* Loading indicator styles */\n.sage-ai-mention-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px 12px;\n gap: 8px;\n color: var(--jp-ui-font-color2);\n font-size: 12px;\n}\n\n.sage-ai-mention-loading-spinner {\n width: 16px;\n height: 16px;\n border: 2px solid var(--jp-border-color3);\n border-top: 2px solid var(--jp-brand-color1);\n border-radius: 50%;\n animation: sage-ai-mention-spinner-rotate 1s linear infinite;\n}\n\n@keyframes sage-ai-mention-spinner-rotate {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n.sage-ai-mention-loading-text {\n color: var(--jp-ui-font-color2);\n font-style: italic;\n}\n",""]);const s=r},5544:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* When LLM state display is hidden, move plan state display up */\n.sage-ai-chatbox:has(.sage-ai-llm-state-widget.hidden)\n .sage-ai-plan-state-widget {\n margin-bottom: 0 !important;\n}\n\n/* Wrapper for fixed positioning with flexbox */\n.sage-ai-state-display-container {\n position: fixed !important;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n z-index: 1;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n}\n\n/* Apply styles directly to widget nodes */\n.sage-ai-plan-state-widget {\n order: 1;\n pointer-events: auto;\n margin: 0 17px 4px;\n margin-bottom: -10px;\n}\n\n.sage-ai-plan-state-widget.hidden {\n display: none;\n}\n\n.sage-ai-llm-state-widget {\n order: 2;\n pointer-events: auto;\n margin: 0 17px;\n}\n\n.sage-ai-input-spacer {\n order: 3;\n flex-shrink: 0;\n}\n\n[data-jp-theme-light='false'] .sage-ai-plan-state-display {\n background-color: #1a1a1a;\n}\n\n[data-jp-theme-light='true'] .sage-ai-plan-state-display {\n background-color: #fff;\n}\n\n/* Plan State Display - positioned above the LLM state display */\n.sage-ai-plan-state-display {\n display: flex;\n flex-direction: column;\n padding: 8px 12px;\n padding-bottom: 14px;\n border-radius: 8px 8px 0 0;\n font-size: 13px;\n color: var(--jp-ui-font-color1);\n box-shadow: 0 2px 4px rgb(0 0 0 / 5%);\n transition: all 0.2s ease-in-out;\n border: 1px solid var(--jp-border-color2);\n}\n\n.sage-ai-plan-state-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.sage-ai-plan-state-content {\n display: flex;\n flex-direction: column;\n gap: 4px;\n width: 100%;\n}\n\n.sage-ai-plan-current-step {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.sage-ai-plan-current-text {\n color: var(--jp-ui-font-color1);\n font-size: 12px;\n font-weight: 400;\n}\n\n.sage-ai-plan-bottom-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.sage-ai-plan-next-text {\n color: var(--jp-ui-font-color2);\n font-weight: 300;\n font-size: 10px;\n flex: 1; /* Take up available space */\n}\n\n.sage-ai-plan-source-toggle {\n align-self: center;\n background: none;\n border: none;\n color: var(--jp-ui-font-color2);\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border-radius: 4px;\n transition:\n background-color 0.2s,\n color 0.2s;\n width: 24px;\n height: 24px;\n}\n\n.sage-ai-plan-source-toggle:hover {\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-plan-source-content {\n margin-top: 8px;\n margin-bottom: 4px;\n padding: 12px;\n background-color: var(--jp-layout-color2);\n border-radius: 6px;\n overflow-y: auto;\n min-height: 100px;\n max-height: 25vh;\n transition: all 0.3s ease-in-out;\n transform-origin: bottom; /* Changed from top to bottom to expand upward */\n}\n\n.sage-ai-plan-source-content.collapsed {\n max-height: 0;\n min-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n margin-top: 0;\n border: none;\n opacity: 0;\n transform: scaleY(0);\n}\n\n.sage-ai-plan-source-content.expanded {\n opacity: 1;\n transform: scaleY(1);\n}\n\n.sage-ai-plan-tasks-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n font-family: var(--jp-ui-font-family);\n font-size: 12px;\n line-height: 1.4;\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-plan-title {\n font-weight: 600;\n font-size: 12px;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-plan-task-item {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sage-ai-plan-subtask-item {\n margin-left: 16px;\n}\n\n.sage-ai-task-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.sage-ai-plan-subtopics {\n margin-top: 4px;\n margin-bottom: 0;\n}\n\n.sage-ai-plan-subtopic {\n margin: 0;\n padding: 0;\n}\n\n.sage-ai-subtopic-bullet {\n color: var(--jp-ui-font-color2);\n font-size: 12px;\n font-weight: bold;\n}\n\n.sage-ai-subtopic-text {\n color: var(--jp-ui-font-color1);\n font-size: var(--jp-ui-font-size1);\n font-weight: 400;\n}\n\n.sage-ai-task-executing {\n background: linear-gradient(\n 135deg,\n transparent,\n var(--jp-ui-font-color1),\n transparent\n );\n background-clip: text;\n color: transparent !important;\n background-size: 200% 100%;\n animation: shimmer 2.5s linear infinite;\n}\n\n@keyframes shimmer {\n 0% {\n background-position: 200% 0;\n }\n\n 100% {\n background-position: -200% 0;\n }\n}\n\n/* Keep the old markdown styles for backward compatibility */\n.sage-ai-plan-source-markdown {\n font-family: var(--jp-code-font-family);\n font-size: 11px;\n line-height: 1.4;\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-plan-source-markdown h1,\n.sage-ai-plan-source-markdown h2,\n.sage-ai-plan-source-markdown h3,\n.sage-ai-plan-source-markdown h4,\n.sage-ai-plan-source-markdown h5,\n.sage-ai-plan-source-markdown h6 {\n margin: 8px 0 4px;\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-plan-source-markdown h1 {\n font-size: 14px;\n}\n\n.sage-ai-plan-source-markdown h2 {\n font-size: 13px;\n}\n\n.sage-ai-plan-source-markdown h3 {\n font-size: 12px;\n}\n\n.sage-ai-plan-source-markdown h4,\n.sage-ai-plan-source-markdown h5,\n.sage-ai-plan-source-markdown h6 {\n font-size: 11px;\n}\n\n.sage-ai-plan-source-markdown p {\n margin: 4px 0;\n}\n\n.sage-ai-plan-source-markdown ul,\n.sage-ai-plan-source-markdown ol {\n padding-left: 16px;\n margin: 4px 0;\n}\n\n.sage-ai-plan-source-markdown li {\n margin: 2px 0;\n}\n\n.sage-ai-plan-source-markdown code {\n background-color: var(--jp-layout-color1);\n padding: 1px 3px;\n border-radius: 2px;\n font-size: 10px;\n}\n\n.sage-ai-plan-source-markdown pre {\n background-color: var(--jp-layout-color1);\n border-radius: 4px;\n padding: 6px;\n margin: 4px 0;\n overflow-x: auto;\n}\n\n.sage-ai-plan-source-markdown pre code {\n background-color: transparent;\n padding: 0;\n font-size: 10px;\n}\n\n.sage-ai-plan-source-markdown blockquote {\n border-left: 3px solid var(--jp-border-color2);\n padding-left: 8px;\n margin: 4px 0;\n color: var(--jp-ui-font-color2);\n font-style: italic;\n}\n\n/* Ensure the blob loader works in this context */\n.sage-ai-plan-state-display .sage-ai-blob-loader {\n flex-shrink: 0;\n}\n\n/* Toggle icon animation */\n.sage-ai-plan-toggle-icon {\n font-size: 12px;\n transition: transform 0.2s ease;\n line-height: 1;\n}\n\n.sage-ai-plan-source-toggle[aria-expanded='false'] > svg {\n transform: rotate(180deg);\n}\n\n.sage-ai-plan-state-loader {\n width: 26px;\n height: 26px;\n display: inline-block;\n position: relative;\n}\n\n.sage-ai-plan-state-loader::after,\n.sage-ai-plan-state-loader::before {\n content: '';\n box-sizing: border-box;\n width: 26px;\n height: 26px;\n border-radius: 50%;\n border: 2px solid rgba(59, 130, 246, 1);\n position: absolute;\n left: 0;\n top: 0;\n opacity: 0;\n animation: sage-ai-plan-state-display-animloader 2s linear infinite;\n}\n\n.sage-ai-plan-state-loader::after {\n animation-delay: 1s;\n}\n\n@keyframes sage-ai-plan-state-display-animloader {\n 0% {\n transform: scale(0);\n opacity: 1;\n }\n\n 100% {\n border-color: #ccdffe;\n transform: scale(1);\n opacity: 0;\n }\n}\n",""]);const s=r},5655:n=>{n.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNNS4xNzc3OCA4TDYuNDg4ODkgNi42ODg4OUM2LjY2NjY3IDYuNTExMTEgNi43NTU1NiA2LjMwMzcgNi43NTU1NiA2LjA2NjY3QzYuNzU1NTYgNS44Mjk2MyA2LjY2NjY3IDUuNjIyMjIgNi40ODg4OSA1LjQ0NDQ0QzYuMzExMTEgNS4yNjY2NyA2LjEgNS4xNzc3OCA1Ljg1NTU2IDUuMTc3NzhDNS42MTExMSA1LjE3Nzc4IDUuNCA1LjI2NjY3IDUuMjIyMjIgNS40NDQ0NEwzLjI4ODg5IDcuMzc3NzhDMy4yIDcuNDY2NjcgMy4xMzcwNCA3LjU2Mjk2IDMuMSA3LjY2NjY3QzMuMDYyOTYgNy43NzAzNyAzLjA0NDQ0IDcuODgxNDggMy4wNDQ0NCA4QzMuMDQ0NDQgOC4xMTg1MiAzLjA2Mjk2IDguMjI5NjMgMy4xIDguMzMzMzNDMy4xMzcwNCA4LjQzNzA0IDMuMiA4LjUzMzMzIDMuMjg4ODkgOC42MjIyMkw1LjIyMjIyIDEwLjU1NTZDNS40IDEwLjczMzMgNS42MTExMSAxMC44MjIyIDUuODU1NTYgMTAuODIyMkM2LjEgMTAuODIyMiA2LjMxMTExIDEwLjczMzMgNi40ODg4OSAxMC41NTU2QzYuNjY2NjcgMTAuMzc3OCA2Ljc1NTU2IDEwLjE3MDQgNi43NTU1NiA5LjkzMzMzQzYuNzU1NTYgOS42OTYzIDYuNjY2NjcgOS40ODg4OSA2LjQ4ODg5IDkuMzExMTFMNS4xNzc3OCA4Wk0xMC44MjIyIDhMOS41MTExMSA5LjMxMTExQzkuMzMzMzMgOS40ODg4OSA5LjI0NDQ0IDkuNjk2MyA5LjI0NDQ0IDkuOTMzMzNDOS4yNDQ0NCAxMC4xNzA0IDkuMzMzMzMgMTAuMzc3OCA5LjUxMTExIDEwLjU1NTZDOS42ODg4OSAxMC43MzMzIDkuOSAxMC44MjIyIDEwLjE0NDQgMTAuODIyMkMxMC4zODg5IDEwLjgyMjIgMTAuNiAxMC43MzMzIDEwLjc3NzggMTAuNTU1NkwxMi43MTExIDguNjIyMjJDMTIuOCA4LjUzMzMzIDEyLjg2MyA4LjQzNzA0IDEyLjkgOC4zMzMzM0MxMi45MzcgOC4yMjk2MyAxMi45NTU2IDguMTE4NTIgMTIuOTU1NiA4QzEyLjk1NTYgNy44ODE0OCAxMi45MzcgNy43NzAzNyAxMi45IDcuNjY2NjdDMTIuODYzIDcuNTYyOTYgMTIuOCA3LjQ2NjY3IDEyLjcxMTEgNy4zNzc3OEwxMC43Nzc4IDUuNDQ0NDRDMTI2ODg4OSA1LjM1NTU2IDEwLjU4ODkgNS4yODg4OSAxMC40Nzc4IDUuMjQ0NDRDMTAuMzY2NyA1LjIgMTAuMjU1NiA1LjE3Nzc4IDEwLjE0NDQgNS4xNzc3OEMxMC4wMzMzIDUuMTc3NzggOS45MjIyMiA1LjIgOS44MTExMSA1LjI0NDQ0QzkuNyA1LjI4ODg5IDkuNiA1LjM1NTU2IDkuNTExMTEgNS40NDQ0NEM5LjMzMzMzIDUuNjIyMjIgOS4yNDQ0NCA1LjgyOTYzIDkuMjQ0NDQgNi4wNjY2N0M5LjI0NDQ0IDYuMzAzNyA5LjMzMzMzIDYuNTExMTEgOS41MTExMSA2LjY4ODg5TDEwLjgyMjIgOFpNMS43Nzc3OCAxNkMxLjI4ODg5IDE2IDAuODcwMzcgMTUuODI1OSAwLjUyMjIyMiAxNS40Nzc4QzAuMTc0MDc0IDE1LjEyOTYgMCAxNC43MTExIDAgMTQuMjIyMlYxLjc3Nzc4QzAgMS4yODg4OSAwLjE3NDA3NCAwLjg3MDM3IDAuNTIyMjIyIDAuNTIyMjIyQzAuODcwMzcgMC4xNzQwNzQgMS4yODg4OSAwIDEuNzc3NzggMEgxNC4yMjIyQzE0LjcxMTEgMCAxNS4xMjk2IDAuMTc0MDc0IDE1LjQ3NzggMC41MjIyMjJDMTUuODI1OSAwLjg3MDM3IDE2IDEuMjg4ODkgMTYgMS43Nzc3OFYxNC4yMjIyQzE2IDE0LjcxMTEgMTUuODI1OSAxNS4xMjk2IDE1LjQ3NzggMTUuNDc3OEMxNS4xMjk2IDE1LjgyNTkgMTQuNzExMSAxNiAxNC4yMjIyIDE2SDEuNzc3NzhaIiBmaWxsPSIjN0E3QTdBIi8+Cjwvc3ZnPg=="},5943:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* Left Side Banner Overlay */\n.sage-ai-banner-overlay {\n position: absolute;\n border-radius: 12px;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.3);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n z-index: 9999;\n opacity: 0;\n transition: opacity 0.3s ease;\n display: none;\n}\n\n.sage-ai-banner-overlay.visible {\n opacity: 1;\n}\n\n/* Left Side Banner */\n.sage-ai-left-side-banner {\n position: absolute;\n border-radius: 12px;\n top: 0;\n left: -400px; /* Start off-screen */\n width: 65%;\n height: 100%;\n background-color: var(--jp-layout-color0);\n z-index: 10000;\n transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: none;\n overflow: hidden;\n}\n\n.sage-ai-left-side-banner.visible {\n left: 0;\n}\n\n/* Banner Header */\n.sage-ai-banner-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px;\n background-color: var(--jp-layout-color0);\n}\n\n.sage-ai-banner-header h3 {\n margin: 0;\n color: var(--jp-ui-font-color0);\n font-size: 16px;\n font-weight: 600;\n}\n\n.sage-ai-banner-close {\n background: none;\n border: none;\n color: #949494;\n font-size: 24px;\n cursor: pointer;\n border-radius: 4px;\n line-height: 1;\n}\n\n/* Banner Content */\n.sage-ai-banner-content {\n height: calc(100vh - 80px);\n overflow-y: auto;\n padding: 0;\n}\n\n.sage-ai-banner-threads {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 0 12px;\n margin-bottom: 70px;\n}\n\n/* Thread Items */\n.sage-ai-banner-thread-item {\n padding: 12px 16px;\n cursor: pointer;\n border-radius: 12px;\n transition: background-color 0.2s ease;\n position: relative;\n}\n\n.sage-ai-banner-thread-item:hover {\n background-color: var(--jp-layout-color2);\n}\n\n.sage-ai-banner-thread-item.active {\n background-color: var(--jp-inverse-layout-color2);\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.sage-ai-banner-thread-item.active .sage-ai-banner-thread-name {\n color: var(--jp-ui-inverse-font-color0);\n}\n\n.sage-ai-banner-thread-item.active .sage-ai-banner-thread-date {\n color: var(--jp-ui-inverse-font-color2);\n}\n\n.sage-ai-banner-thread-name {\n font-weight: 500;\n color: var(--jp-ui-font-color0);\n font-size: 13px;\n margin-bottom: 4px;\n line-height: 1.4;\n}\n\n.sage-ai-banner-thread-date {\n font-size: 12px;\n color: var(--jp-ui-font-color2);\n line-height: 1.3;\n}\n\n/* Empty State */\n.sage-ai-banner-empty {\n padding: 40px 20px;\n text-align: center;\n color: var(--jp-ui-font-color2);\n font-style: italic;\n font-size: 14px;\n}\n\n/* Scrollbar Styling */\n.sage-ai-banner-content::-webkit-scrollbar {\n width: 6px;\n}\n\n.sage-ai-banner-content::-webkit-scrollbar-track {\n background: var(--jp-layout-color0);\n}\n\n.sage-ai-banner-content::-webkit-scrollbar-thumb {\n background: var(--jp-border-color2);\n border-radius: 3px;\n}\n\n.sage-ai-banner-content::-webkit-scrollbar-thumb:hover {\n background: var(--jp-border-color1);\n}\n\n/* Animation for thread items */\n.sage-ai-banner-thread-item {\n animation: slideInFromLeft 0.3s ease forwards;\n opacity: 0;\n transform: translateX(-20px);\n}\n\n.sage-ai-banner-thread-item:nth-child(1) {\n animation-delay: 0.1s;\n}\n.sage-ai-banner-thread-item:nth-child(2) {\n animation-delay: 0.15s;\n}\n.sage-ai-banner-thread-item:nth-child(3) {\n animation-delay: 0.2s;\n}\n.sage-ai-banner-thread-item:nth-child(4) {\n animation-delay: 0.25s;\n}\n.sage-ai-banner-thread-item:nth-child(5) {\n animation-delay: 0.3s;\n}\n.sage-ai-banner-thread-item:nth-child(6) {\n animation-delay: 0.35s;\n}\n.sage-ai-banner-thread-item:nth-child(7) {\n animation-delay: 0.4s;\n}\n.sage-ai-banner-thread-item:nth-child(8) {\n animation-delay: 0.45s;\n}\n.sage-ai-banner-thread-item:nth-child(9) {\n animation-delay: 0.5s;\n}\n.sage-ai-banner-thread-item:nth-child(10) {\n animation-delay: 0.55s;\n}\n.sage-ai-banner-thread-item {\n animation-delay: 0.55s;\n}\n\n@keyframes slideInFromLeft {\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .sage-ai-left-side-banner {\n width: 100vw;\n left: -100vw;\n }\n\n .sage-ai-banner-header {\n padding: 16px;\n }\n\n .sage-ai-banner-thread-item {\n padding: 12px 16px;\n }\n}\n",""]);const s=r},6314:n=>{n.exports=function(n){var o=[];return o.toString=function(){return this.map(function(o){var e="",a=void 0!==o[5];return o[4]&&(e+="@supports (".concat(o[4],") {")),o[2]&&(e+="@media ".concat(o[2]," {")),a&&(e+="@layer".concat(o[5].length>0?" ".concat(o[5]):""," {")),e+=n(o),a&&(e+="}"),o[2]&&(e+="}"),o[4]&&(e+="}"),e}).join("")},o.i=function(n,e,a,t,i){"string"==typeof n&&(n=[[null,n,void 0]]);var r={};if(a)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(r[l]=!0)}for(var p=0;p<n.length;p++){var d=[].concat(n[p]);a&&r[d[0]]||(void 0!==i&&(void 0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=i),e&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=e):d[2]=e),t&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=t):d[4]="".concat(t)),o.push(d))}},o}},6785:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* Mode Selector Dropdown - Ultra Polished Design */\n\n/* Base mode selector styling with proper positioning */\n.sage-ai-mode-selector {\n position: absolute;\n bottom: 12px;\n left: 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 3px 8px;\n background-color: var(--jp-layout-color0);\n border: 1px solid var(--jp-border-color1);\n border-radius: 8px;\n cursor: pointer;\n font-size: var(--jp-ui-font-size1);\n color: var(--jp-ui-font-color0);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n\n /* box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); */\n backdrop-filter: blur(8px);\n z-index: 10; /* Ensure it's above other input elements */\n}\n\n.sage-ai-mode-selector-arrow {\n display: flex;\n align-items: center;\n}\n\n.sage-ai-mode-selector:hover {\n border: 1px solid var(--jp-ui-font-color1);\n\n /* background: linear-gradient( */\n\n /* 135deg, */\n\n /* var(--jp-layout-color3) 0%, */\n\n /* var(--jp-layout-color4) 100% */\n\n /* ); */\n\n /* border-color: var(--jp-brand-color1); */\n\n /* box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); */\n\n /* transform: translateY(-1px); */\n}\n\n.sage-ai-mode-selector:active {\n transform: translateY(0);\n box-shadow: 0 2px 6px rgb(0 0 0 / 12%);\n}\n\n/* Mode display styling */\n.sage-ai-mode-display {\n display: flex;\n align-items: center;\n gap: 6px;\n flex: 1;\n}\n\n.sage-ai-mode-display .sage-ai-mode-option-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n}\n\n.sage-ai-mode-display .sage-ai-mode-option-icon svg {\n width: 16px;\n height: 16px;\n transition: fill 0.2s ease;\n}\n\n.sage-ai-mode-display .sage-ai-mode-option-text {\n font-weight: 500;\n font-size: 12px;\n letter-spacing: 0.02em;\n}\n\n/* Dropdown arrow styling */\n.sage-ai-mode-arrow {\n color: var(--jp-ui-font-color2);\n font-size: 10px;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n margin-left: auto;\n}\n\n.sage-ai-mode-selector:hover .sage-ai-mode-arrow {\n color: var(--jp-brand-color1);\n transform: translateY(-1px);\n}\n\n.sage-ai-mode-selector.open .sage-ai-mode-arrow {\n transform: rotate(180deg);\n color: var(--jp-brand-color1);\n}\n\n/* Dropdown container */\n.sage-ai-mode-dropdown {\n position: absolute;\n bottom: calc(100% + 8px); /* Position above the selector */\n left: 0;\n right: 0;\n min-width: 100%;\n background: var(--jp-layout-color1);\n border: .5px solid var(--jp-border-color1);\n border-radius: 12px;\n box-shadow:\n 0 10px 40px rgb(0 0 0 / 15%),\n 0 4px 12px rgb(0 0 0 / 10%),\n 0 0 0 1px rgb(255 255 255 / 5%);\n z-index: 2000;\n overflow: hidden;\n backdrop-filter: blur(20px);\n\n /* Animation properties */\n opacity: 0;\n visibility: hidden;\n transform: translateY(10px) scale(0.95);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.sage-ai-mode-dropdown.visible {\n opacity: 1;\n visibility: visible;\n transform: translateY(0) scale(1);\n width: fit-content !important;\n}\n\n.sage-ai-mode-dropdown.hidden {\n opacity: 0;\n visibility: hidden;\n transform: translateY(10px) scale(0.95);\n pointer-events: none;\n}\n\n/* Dropdown options container */\n.sage-ai-mode-dropdown-content {\n display: flex;\n flex-direction: column;\n padding: 6px;\n gap: 2px;\n}\n\n/* Individual mode options */\n.sage-ai-mode-option {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 6px 8px;\n border-radius: 8px;\n cursor: pointer;\n transition: background-color 0.2s ease;\n position: relative;\n overflow: hidden;\n background: transparent;\n border: 1px solid transparent;\n}\n\n/* Mode option icon */\n.sage-ai-mode-option-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 6px;\n\n /* background: var(--jp-layout-color2); */\n /*transition: all 0.4s ease;*/\n flex-shrink: 0;\n}\n\n.sage-ai-mode-option:hover {\n background: var(--jp-border-color1);\n}\n\n.sage-ai-mode-option-icon svg {\n width: 16px;\n height: 16px;\n transition: fill 0.2s ease;\n}\n\n/* Mode option text */\n.sage-ai-mode-option-text {\n font-weight: 500;\n font-size: 14px;\n color: var(--jp-ui-font-color0);\n transition: color 0.2s ease;\n letter-spacing: 0.02em;\n margin: 0;\n line-height: 1.3;\n}\n\n.sage-ai-mode-option:hover .sage-ai-mode-option-text {\n color: var(--jp-ui-font-color0);\n}\n\n/* Add mode descriptions */\n.sage-ai-mode-option-description {\n font-size: 10px;\n color: var(--jp-ui-font-color2);\n transition: color 0.2s ease;\n line-height: 160%;\n margin: 0 !important;\n}\n\n.sage-ai-mode-option:hover .sage-ai-mode-option-description {\n color: var(--jp-ui-font-color1);\n}\n\n/* Enhanced flex layout for dropdown content */\n.sage-ai-mode-dropdown {\n display: flex;\n flex-direction: column;\n}\n\n/* Staggered animation for options */\n.sage-ai-mode-option:nth-child(1) {\n transition-delay: 0.05s;\n}\n\n.sage-ai-mode-option:nth-child(2) {\n transition-delay: 0.1s;\n}\n\n.sage-ai-mode-option:nth-child(3) {\n transition-delay: 0.15s;\n}\n\n/* Loading animation when opening */\n@keyframes slideInUp {\n from {\n opacity: 0;\n transform: translateY(20px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes slideOutDown {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n\n to {\n opacity: 0;\n transform: translateY(20px);\n }\n}\n\n/* Enhanced opening animation */\n.sage-ai-mode-dropdown.opening {\n animation: slideInUp 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n}\n\n.sage-ai-mode-dropdown.closing {\n animation: slideOutDown 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n}\n\n/* Subtle glow effect for active/focused state */\n.sage-ai-mode-selector:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 2px var(--jp-border-color1),\n 0 4px 12px rgb(0 0 0 / 15%);\n}\n\n/* Dark theme adjustments */\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mode-dropdown {\n box-shadow:\n 0 10px 40px rgb(0 0 0 / 30%),\n 0 4px 12px rgb(0 0 0 / 20%),\n 0 0 0 1px rgb(255 255 255 / 10%);\n}\n\n.sage-ai-mode-option-title {\n font-size: 13px;\n font-style: normal;\n font-weight: 500;\n margin: 0 !important;\n line-height: 155%;\n}\n\n/* Responsive design for smaller screens */\n@media (max-width: 768px) {\n .sage-ai-mode-dropdown {\n bottom: calc(100% + 4px);\n }\n\n .sage-ai-mode-option {\n padding: 10px 14px;\n }\n\n .sage-ai-mode-option-text {\n font-size: 13px;\n }\n}\n",""]);const s=r},7342:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,'/* More Options Popover Styles */\n.sage-ai-more-options-widget {\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n z-index: 9999;\n}\n\n.sage-ai-more-options-popover {\n pointer-events: auto;\n background: var(--jp-layout-color1);\n border: 1px solid var(--jp-border-color1);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 4px;\n min-width: 140px;\n /* animation: fadeInUp 0.2s ease-out; */\n}\n\n.sage-ai-more-options-popover:empty {\n display: none;\n}\n\n.sage-ai-more-options-content {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.sage-ai-more-options-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border: none;\n background: transparent;\n color: var(--jp-ui-font-color1);\n border-radius: 4px;\n cursor: pointer;\n font-size: 13px;\n font-family: var(--jp-ui-font-family);\n text-align: left;\n width: 100%;\n transition: background-color 0.15s ease;\n}\n\n.sage-ai-more-options-item:hover {\n background: var(--jp-layout-color2);\n}\n\n.sage-ai-more-options-item:active {\n background: var(--jp-layout-color3);\n}\n\n.sage-ai-more-options-item svg {\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n}\n\n.sage-ai-more-options-item span {\n flex: 1;\n}\n\n.sage-ai-more-options-item-danger {\n color: var(--jp-error-color1);\n}\n\n/* Dark theme adjustments */\n[data-jp-theme-light="false"] .sage-ai-more-options-popover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);\n}\n',""]);const s=r},7439:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,'/* Inline Diff Approval for Chat interface */\n.sage-ai-inline-diff-approval,\n.sage-ai-diff-approval-dialog-embedded {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 4px 12px;\n}\n\n.sage-ai-inline-diff-header,\n.sage-ai-diff-approval-header {\n padding-bottom: 8px;\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--jp-border-color2);\n}\n\n.sage-ai-inline-diff-title,\n.sage-ai-diff-title {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n display: flex;\n align-items: center;\n}\n\n.sage-ai-inline-diff-summary,\n.sage-ai-diff-summary {\n font-size: var(--jp-ui-font-size0);\n color: var(--jp-ui-font-color0);\n flex-grow: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.sage-ai-inline-diff-note {\n font-size: 12px;\n color: var(--jp-ui-font-color2);\n font-style: italic;\n margin-bottom: 12px;\n}\n\n.sage-ai-inline-diff-actions {\n display: flex;\n /* TODO: Remove the element from the DOM */\n display: none;\n justify-content: end;\n gap: 8px;\n margin-top: 4px;\n}\n\n.sage-ai-inline-diff-actions button {\n padding: 8px 14px;\n border-radius: 4px;\n font-size: 13px;\n border: none;\n cursor: pointer;\n transition:\n background-color 0.2s,\n transform 0.1s;\n}\n\n.sage-ai-inline-diff-actions button:hover {\n transform: translateY(-1px);\n}\n\n.sage-ai-inline-diff-actions button:active {\n transform: translateY(0px);\n}\n\n.sage-ai-inline-diff-count,\n.sage-ai-diff-count {\n display: inline-block;\n background-color: var(--jp-layout-color3);\n color: var(--jp-ui-font-color1);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 12px;\n margin-left: 6px;\n min-width: 18px;\n text-align: center;\n}\n\n.sage-ai-confirm-button {\n padding: 4px 8px;\n background-color: var(--jp-inverse-layout-color0);\n color: var(--jp-ui-inverse-font-color0);\n transition: background-color 0.2s ease;\n border-radius: 8px !important;\n}\n\n.sage-ai-confirm-button:hover {\n background-color: var(--jp-inverse-layout-color2);\n}\n\n.sage-ai-reject-button {\n padding: 0px 8px;\n font-size: var(--jp-ui-font-size1);\n background-color: transparent;\n color: var(--jp-ui-font-color1);\n}\n\n/* Styles for embedded diff list and cells */\n.sage-ai-diff-approval-dialog-embedded .sage-ai-diff-list {\n margin: 8px 0;\n gap: 8px;\n display: flex;\n flex-direction: column;\n}\n\n.sage-ai-diff-cell-item {\n border-radius: 10px;\n border: 0.5px solid var(--jp-border-color2);\n background-color: transparent;\n display: flex;\n flex-direction: column;\n}\n\n.sage-ai-diff-content-collapse-icon {\n display: flex;\n cursor: pointer;\n transition: transform 0.2s;\n}\n\n.sage-ai-diff-content-collapse-icon:hover {\n transform: scale(1.1);\n}\n\n.sage-ai-diff-cell-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n}\n\n.sage-ai-diff-operation {\n display: flex;\n}\n\n.sage-ai-diff-content {\n position: relative;\n max-height: 150px;\n overflow-y: hidden;\n background-color: var(--jp-layout-color2);\n border-radius: 0 0 10px 10px;\n border-top: 0.5px solid var(--jp-border-color2);\n}\n\n.sage-ai-diff-content .d2h-file-wrapper {\n border-radius: 0 !important;\n}\n\n.sage-ai-diff-content.sage-ai-diff-expanded {\n max-height: none;\n overflow-y: visible;\n}\n\n/* Gradient overlay that stays at bottom when scrolling */\n.sage-ai-diff-gradient-overlay {\n display: flex;\n align-items: center;\n justify-content: center;\n position: sticky;\n bottom: 0;\n left: 0;\n right: 0;\n height: 20px;\n background: linear-gradient(to top, rgba(25, 25, 25, 1) 0%, transparent 100%);\n pointer-events: none;\n border-radius: 0 0 4px 4px;\n z-index: 5;\n}\n\n[data-jp-theme-light="true"] .sage-ai-diff-gradient-overlay {\n background: linear-gradient(to top, rgba(255, 255, 255, 1) 0%, transparent 100%);\n}\n\n.sage-ai-diff-cell-id-label {\n color: #1976d2;\n border-radius: 4px;\n font-size: 12px;\n padding: 2px 6px;\n cursor: pointer;\n flex: 1;\n}\n\n.sage-ai-diff-old-content,\n.sage-ai-diff-new-content {\n padding: 6px;\n font-family: monospace;\n font-size: 12px;\n white-space: pre-wrap;\n}\n\n.sage-ai-diff-old-content {\n border-bottom: 1px dashed var(--jp-border-color2);\n color: var(--jp-content-font-color2);\n text-decoration: line-through;\n}\n\n.sage-ai-diff-cell-actions {\n display: flex;\n justify-content: flex-end;\n margin-top: 6px;\n gap: 8px;\n}\n\n.sage-ai-diff-approval-dialog-embedded .cm-editor {\n border-radius: 0 0 10px 10px !important;\n background: var(--jp-layout-color1) !important;\n}\n\n.sage-ai-diff-hover-buttons {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* Diff action buttons - visible by default */\n.sage-ai-diff-approve-button,\n.sage-ai-diff-reject-button,\n.sage-ai-diff-run-button,\n.sage-ai-diff-reapply-button {\n background-color: transparent;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-weight: bold;\n display: flex;\n align-items: center;\n font-size: 12px;\n padding: 0;\n}\n\n.sage-ai-diff-approve-button:hover,\n.sage-ai-diff-reject-button:hover,\n.sage-ai-diff-run-button:hover,\n.sage-ai-diff-reapply-button:hover {\n transform: scale(1.1);\n transition: transform 0.2s;\n}\n\n/* Disabled button states */\n.sage-ai-diff-approve-button.disabled,\n.sage-ai-diff-reject-button.disabled,\n.sage-ai-diff-run-button.disabled,\n.sage-ai-diff-reapply-button.disabled {\n opacity: 0.6;\n cursor: default;\n pointer-events: none;\n}\n\n.sage-ai-diff-approve-button.disabled:hover,\n.sage-ai-diff-reject-button.disabled:hover,\n.sage-ai-diff-run-button.disabled:hover,\n.sage-ai-diff-reapply-button.disabled:hover {\n transform: none;\n}\n\n/* Button visibility states */\n.sage-ai-diff-approve-button.hidden,\n.sage-ai-diff-reject-button.hidden,\n.sage-ai-diff-run-button.hidden,\n.sage-ai-diff-reapply-button.hidden {\n display: none;\n}\n\n/* Spinner for buttons - visible by default */\n.sage-ai-diff-spinner {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: 2px solid #f3f3f3;\n border-top: 2px solid #3498db;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n.sage-ai-diff-spinner.hidden {\n display: none;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}',""]);const s=r},7476:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* New Chat Display Widget Styles */\n.sage-ai-new-chat-display {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 2rem;\n height: 100% !important;\n overflow: auto;\n}\n\n.sage-ai-new-chat-container {\n max-width: 400px;\n width: 100%;\n text-align: center;\n justify-self: center;\n}\n\n.sage-ai-new-chat-title-section {\n margin-bottom: 2rem;\n text-align: center !important;\n}\n\n.sage-ai-new-chat-title {\n font-size: 13px;\n font-weight: 400;\n color: var(--jp-ui-font-color2);\n font-size: 13px;\n font-weight: 600;\n color: var(--jp-ui-font-color2);\n margin: 0 0 0.5rem 0;\n text-align: center;\n}\n\n.sage-ai-new-chat-help {\n font-size: 15px;\n font-weight: 500;\n color: var(--jp-ui-font-color0);\n font-size: 16px;\n color: var(--jp-ui-font-color1);\n margin: 0;\n text-align: center;\n font-weight: 600;\n}\n\n.sage-ai-new-chat-prompts-section {\n text-align: left;\n}\n\n.sage-ai-new-chat-prompts-title {\n font-size: 0.9rem;\n font-weight: 500;\n color: var(--jp-ui-font-color2);\n margin: 0 0 1rem 0;\n}\n\n.sage-ai-new-chat-prompts-list {\n display: flex;\n flex-direction: column;\n justify-content: center;\n width: 100%;\n gap: 0.5rem;\n}\n\n.sage-ai-new-chat-prompt-button {\n background: var(--jp-layout-color2);\n border-radius: 12px !important;\n border: none;\n color: var(--jp-ui-font-color0);\n text-align: left;\n cursor: pointer;\n transition: all 0.2s ease;\n line-height: 1.4;\n padding: 4px 14px;\n justify-content: center;\n align-items: center;\n width: fit-content;\n font-size: 13px;\n align-self: center;\n}\n\n.sage-ai-new-chat-prompt-button:hover {\n background: var(--jp-layout-color3);\n border-color: var(--jp-brand-color1);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.sage-ai-new-chat-prompt-button:active {\n transform: translateY(0);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);\n}\n\n.sage-ai-new-chat-prompt-button:focus {\n outline: none;\n border-color: var(--jp-brand-color1);\n box-shadow: 0 0 0 2px rgba(54, 124, 226, 0.2);\n}\n",""]);const s=r},7659:n=>{var o={};n.exports=function(n,e){var a=function(n){if(void 0===o[n]){var e=document.querySelector(n);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(n){e=null}o[n]=e}return o[n]}(n);if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(e)}},7825:n=>{n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var o=n.insertStyleElement(n);return{update:function(e){!function(n,o,e){var a="";e.supports&&(a+="@supports (".concat(e.supports,") {")),e.media&&(a+="@media ".concat(e.media," {"));var t=void 0!==e.layer;t&&(a+="@layer".concat(e.layer.length>0?" ".concat(e.layer):""," {")),a+=e.css,t&&(a+="}"),e.media&&(a+="}"),e.supports&&(a+="}");var i=e.sourceMap;i&&"undefined"!=typeof btoa&&(a+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),o.styleTagTransform(a,n,o.options)}(o,n,e)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(o)}}}},7826:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* Settings Widget Styles */\n\n/* Main settings widget container */\n.sage-ai-settings {\n height: 100%;\n max-height: 100vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.sage-ai-settings-container {\n height: 100%;\n max-height: 100vh;\n overflow-y: auto;\n overflow-x: hidden;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n padding: 0 !important;\n}\n\n/* Ensure codebase manager doesn't break the layout */\n.sage-ai-settings-container > div {\n flex-shrink: 0;\n}\n\n.sage-ai-settings-title {\n margin: 0 0 20px 0;\n color: var(--jp-ui-font-color0);\n flex-shrink: 0; /* Prevent shrinking */\n padding-left: 16px;\n padding-top: 40px;\n}\n\n/* Configuration sections */\n.sage-ai-config-section {\n margin-bottom: 20px;\n padding-left: 20px;\n flex-shrink: 0; /* Prevent shrinking */\n}\n\n.sage-ai-config-title {\n margin-bottom: 15px;\n color: var(--jp-ui-font-color0);\n flex-shrink: 0; /* Prevent shrinking */\n}\n\n/* Form fields */\n.sage-ai-field-container {\n margin-bottom: 15px;\n flex-shrink: 0; /* Prevent shrinking */\n}\n\n.sage-ai-field-label {\n display: block;\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n.sage-ai-field-input {\n width: 100%;\n max-width: 400px;\n padding: 8px;\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n font-size: 14px;\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color0);\n box-sizing: border-box;\n}\n\n/* Database input with refresh button */\n.sage-ai-database-input-container {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.sage-ai-database-input {\n flex: 1;\n}\n\n.sage-ai-refresh-button {\n padding: 8px 12px;\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n background-color: var(--jp-layout-color1);\n color: var(--jp-ui-font-color0);\n cursor: pointer;\n font-size: 16px;\n transition: all 0.2s ease;\n min-width: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sage-ai-refresh-button:hover:not(:disabled) {\n background-color: var(--jp-layout-color2);\n border-color: var(--jp-brand-color1);\n}\n\n.sage-ai-refresh-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.sage-ai-refresh-button:active:not(:disabled) {\n transform: rotate(180deg);\n}\n\n/* Cache status */\n.sage-ai-cache-status {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 5px;\n font-size: 12px;\n color: var(--jp-ui-font-color2);\n}\n\n.sage-ai-cache-indicator {\n font-size: 14px;\n}\n\n.sage-ai-cache-indicator.cached {\n color: var(--jp-success-color1);\n}\n\n.sage-ai-cache-indicator.expired {\n color: var(--jp-warn-color1);\n}\n\n.sage-ai-cache-indicator.not-cached {\n color: var(--jp-ui-font-color3);\n}\n\n.sage-ai-cache-text {\n font-family: var(--jp-ui-font-family);\n}\n\n/* Token mode container */\n.sage-token-mode-container {\n margin-bottom: 20px;\n padding-left: 20px;\n flex-shrink: 0; /* Prevent shrinking */\n}\n\n.sage-token-mode-label {\n display: flex;\n align-items: center;\n cursor: pointer;\n}\n\n.sage-token-mode-checkbox {\n margin-right: 8px;\n}\n\n/* Tab autocomplete container */\n.sage-tab-autocomplete-container {\n margin-bottom: 20px;\n padding-left: 20px;\n flex-shrink: 0; /* Prevent shrinking */\n}\n\n.sage-tab-autocomplete-label {\n display: flex;\n align-items: center;\n cursor: pointer;\n}\n\n.sage-tab-autocomplete-checkbox {\n margin-right: 8px;\n}\n\n/* Enhanced Database Metadata Spinner */\n.sage-ai-db-metadata-spinner {\n position: relative;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.sage-ai-db-spinner-ring {\n position: absolute;\n width: 18px;\n height: 18px;\n border: 2px solid transparent;\n border-top: 2px solid var(--jp-brand-color1);\n border-right: 2px solid var(--jp-brand-color1);\n border-radius: 50%;\n animation: sage-ai-db-spinner-rotate 1.2s linear infinite;\n}\n\n.sage-ai-db-spinner-pulse {\n position: absolute;\n width: 8px;\n height: 8px;\n background: var(--jp-brand-color1);\n border-radius: 50%;\n animation: sage-ai-db-spinner-pulse 1.5s ease-in-out infinite;\n}\n\n@keyframes sage-ai-db-spinner-rotate {\n 0% {\n transform: rotate(0deg);\n border-top-color: var(--jp-brand-color1);\n border-right-color: transparent;\n }\n 25% {\n border-top-color: var(--jp-brand-color1);\n border-right-color: var(--jp-brand-color1);\n }\n 50% {\n transform: rotate(180deg);\n border-top-color: transparent;\n border-right-color: var(--jp-brand-color1);\n }\n 75% {\n border-top-color: var(--jp-brand-color1);\n border-right-color: var(--jp-brand-color1);\n }\n 100% {\n transform: rotate(360deg);\n border-top-color: var(--jp-brand-color1);\n border-right-color: transparent;\n }\n}\n\n@keyframes sage-ai-db-spinner-pulse {\n 0%, 100% {\n transform: scale(0.8);\n opacity: 0.5;\n }\n 50% {\n transform: scale(1.2);\n opacity: 1;\n }\n}\n",""]);const s=r},8363:(n,o,e)=>{var a=e(5072),t=e.n(a),i=e(7825),r=e.n(i),s=e(7659),l=e.n(s),p=e(5056),d=e.n(p),c=e(540),g=e.n(c),f=e(1113),u=e.n(f),x=e(5248),b={};b.styleTagTransform=u(),b.setAttributes=d(),b.insert=l().bind(null,"head"),b.domAPI=r(),b.insertStyleElement=g(),t()(x.A,b),x.A&&x.A.locals&&x.A.locals;var m=e(8475),h={};h.styleTagTransform=u(),h.setAttributes=d(),h.insert=l().bind(null,"head"),h.domAPI=r(),h.insertStyleElement=g(),t()(m.A,h),m.A&&m.A.locals&&m.A.locals;var v=e(8789),y={};y.styleTagTransform=u(),y.setAttributes=d(),y.insert=l().bind(null,"head"),y.domAPI=r(),y.insertStyleElement=g(),t()(v.A,y),v.A&&v.A.locals&&v.A.locals;var j=e(7439),w={};w.styleTagTransform=u(),w.setAttributes=d(),w.insert=l().bind(null,"head"),w.domAPI=r(),w.insertStyleElement=g(),t()(j.A,w),j.A&&j.A.locals&&j.A.locals;var k=e(1346),z={};z.styleTagTransform=u(),z.setAttributes=d(),z.insert=l().bind(null,"head"),z.domAPI=r(),z.insertStyleElement=g(),t()(k.A,z),k.A&&k.A.locals&&k.A.locals;var M=e(4246),A={};A.styleTagTransform=u(),A.setAttributes=d(),A.insert=l().bind(null,"head"),A.domAPI=r(),A.insertStyleElement=g(),t()(M.A,A),M.A&&M.A.locals&&M.A.locals;var D=e(5433),N={};N.styleTagTransform=u(),N.setAttributes=d(),N.insert=l().bind(null,"head"),N.domAPI=r(),N.insertStyleElement=g(),t()(D.A,N),D.A&&D.A.locals&&D.A.locals;var I=e(6785),S={};S.styleTagTransform=u(),S.setAttributes=d(),S.insert=l().bind(null,"head"),S.domAPI=r(),S.insertStyleElement=g(),t()(I.A,S),I.A&&I.A.locals&&I.A.locals;var T=e(7476),E={};E.styleTagTransform=u(),E.setAttributes=d(),E.insert=l().bind(null,"head"),E.domAPI=r(),E.insertStyleElement=g(),t()(T.A,E),T.A&&T.A.locals&&T.A.locals;var L=e(3114),O={};O.styleTagTransform=u(),O.setAttributes=d(),O.insert=l().bind(null,"head"),O.domAPI=r(),O.insertStyleElement=g(),t()(L.A,O),L.A&&L.A.locals&&L.A.locals;var C=e(5544),Y={};Y.styleTagTransform=u(),Y.setAttributes=d(),Y.insert=l().bind(null,"head"),Y.domAPI=r(),Y.insertStyleElement=g(),t()(C.A,Y),C.A&&C.A.locals&&C.A.locals;var U=e(7342),P={};P.styleTagTransform=u(),P.setAttributes=d(),P.insert=l().bind(null,"head"),P.domAPI=r(),P.insertStyleElement=g(),t()(U.A,P),U.A&&U.A.locals&&U.A.locals;var Q=e(7826),B={};B.styleTagTransform=u(),B.setAttributes=d(),B.insert=l().bind(null,"head"),B.domAPI=r(),B.insertStyleElement=g(),t()(Q.A,B),Q.A&&Q.A.locals&&Q.A.locals;var R=e(9508),H={};H.styleTagTransform=u(),H.setAttributes=d(),H.insert=l().bind(null,"head"),H.domAPI=r(),H.insertStyleElement=g(),t()(R.A,H),R.A&&R.A.locals&&R.A.locals;var G=e(844),J={};J.styleTagTransform=u(),J.setAttributes=d(),J.insert=l().bind(null,"head"),J.domAPI=r(),J.insertStyleElement=g(),t()(G.A,J),G.A&&G.A.locals&&G.A.locals;var F=e(2331),W={};W.styleTagTransform=u(),W.setAttributes=d(),W.insert=l().bind(null,"head"),W.domAPI=r(),W.insertStyleElement=g(),t()(F.A,W),F.A&&F.A.locals&&F.A.locals;var _=e(5943),X={};X.styleTagTransform=u(),X.setAttributes=d(),X.insert=l().bind(null,"head"),X.domAPI=r(),X.insertStyleElement=g(),t()(_.A,X),_.A&&_.A.locals&&_.A.locals;var q=e(3342),Z={};Z.styleTagTransform=u(),Z.setAttributes=d(),Z.insert=l().bind(null,"head"),Z.domAPI=r(),Z.insertStyleElement=g(),t()(q.A,Z),q.A&&q.A.locals&&q.A.locals},8475:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/*\n See the JupyterLab Developer Guide for useful CSS Patterns:\n\n https://jupyterlab.readthedocs.io/en/stable/developer/css.html\n*/\n\n:root {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-smooth: never;\n\n --jp-ui-font-size0: 0.75em !important;\n --jp-ui-font-size1: 11.7px !important;\n --jp-ui-font-size2: 1.08em !important;\n --jp-ui-font-size3: 1.296em !important;\n --jp-code-font-size: 11.7px !important;\n}\n\n/* Dark mode override for jp-layout-color2 */\n[data-jp-theme-light='false'] {\n --jp-layout-color2: #232323 !important;\n --jp-border-color3: #383838 !important;\n}\n\n/* Chat box widget styling */\n.sage-ai-chatbox {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color1);\n font-family: var(--jp-ui-font-family);\n border-radius: 12px;\n border: 0.5px solid var(--jp-border-color2);\n box-shadow: 0 0 20px 8px rgb(0 0 0 / 10%);\n}\n\n[data-jp-theme-light='false'] .sage-ai-chatbox {\n background-color: #1a1a1a;\n}\n\n[data-jp-theme-light='true'] .sage-ai-chatbox {\n background-color: #fff;\n}\n\n[data-jp-theme-light='false'] .sage-ai-chatbox {\n background-color: #1a1a1a;\n}\n\n[data-jp-theme-light='true'] .sage-ai-chatbox {\n background-color: #fff;\n}\n\n.sage-ai-chat-container {\n width: 100%;\n padding: 6px;\n}\n\n.sage-ai-toolbar {\n display: flex;\n align-items: center;\n padding: 8px;\n border-bottom: 1px solid var(--jp-border-color2);\n height: 53px;\n}\n\n.sage-ai-more-options-button {\n margin-left: 8px;\n}\n\n/* Autorun checkbox container styling */\n.sage-ai-checkbox-container {\n display: flex;\n align-items: center;\n margin-right: 4px;\n padding: 0 2px;\n font-size: var(--jp-ui-font-size0);\n}\n\n.sage-ai-checkbox {\n margin-right: 5px;\n cursor: pointer;\n width: 16px;\n height: 16px;\n}\n\n.sage-ai-checkbox-label {\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n user-select: none;\n font-size: 14px;\n line-height: 4px;\n}\n\n.sage-ai-checkbox-container:hover .sage-ai-checkbox-label {\n color: var(--jp-ui-font-color0);\n}\n\n/* Common styles for buttons and controls */\n.sage-ai-control-base {\n border: 0.5px solid #e7e7e7;\n border-radius: 6px !important;\n background: transparent;\n transition: all 0.2s ease;\n}\n\n[data-jp-theme-light='false'] .sage-ai-control-base {\n border-color: #383838;\n}\n\n.sage-ai-control-base:hover:not(:disabled) {\n border-color: #666;\n}\n\n/* Auto Run Toggle Switch Styles */\n.sage-ai-autorun-toggle {\n padding: 0 10px;\n margin-right: 8px;\n height: 30px;\n min-width: 89px;\n}\n\n.sage-ai-autorun-toggle .sage-ai-toggle-input {\n display: none; /* Hide the actual checkbox */\n}\n\n.sage-ai-toggle-label {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n margin: 0;\n font-size: 13px;\n color: var(--jp-ui-font-color1);\n user-select: none;\n}\n\n.sage-ai-toggle-switch {\n position: relative;\n width: 28px;\n height: 16px;\n background: #494949;\n border-radius: 8px;\n transition: background-color 0.3s ease;\n flex-shrink: 0;\n}\n\n.sage-ai-toggle-switch::before {\n content: '';\n position: absolute;\n top: 1px;\n left: 1px;\n width: 14px;\n height: 14px;\n background: white;\n border-radius: 50%;\n transition: transform 0.3s ease;\n}\n\n/* Active state styles */\n.sage-ai-toggle-input:checked + .sage-ai-toggle-label .sage-ai-toggle-switch {\n background: #4caf50;\n}\n\n.sage-ai-toggle-input:checked\n + .sage-ai-toggle-label\n .sage-ai-toggle-switch::before {\n transform: translateX(12px);\n}\n\n/* Hover effects */\n.sage-ai-autorun-toggle:hover .sage-ai-toggle-label {\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-reset-button {\n box-sizing: border-box;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 8px;\n gap: 6px;\n width: 32px;\n height: 32px;\n flex: none;\n flex-grow: 0;\n cursor: pointer;\n}\n\n.sage-ai-history-container {\n flex: 1;\n overflow: hidden;\n padding-bottom: 20px; /* Reverted to default, now handled dynamically */\n display: flex;\n}\n\n.sage-ai-history-container.floating-box-visible {\n padding-top: 0 !important;\n}\n\n.sage-ai-scroll-down-button {\n position: absolute;\n width: 100%;\n align-items: center;\n -webkit-animation: sage-ai-vert-move 1s infinite alternate;\n animation: sage-ai-vert-move 1s infinite alternate;\n padding: 0;\n margin: 0;\n outline: none;\n border: none;\n background: none;\n cursor: pointer;\n}\n\n.sage-ai-scroll-down-button.hidden {\n display: none;\n}\n\n@keyframes sage-ai-vert-move {\n 0% {\n transform: translateY(0);\n }\n\n 100% {\n transform: translateY(5px);\n }\n}\n\n@keyframes sage-ai-vert-move {\n 0% {\n transform: translateY(0);\n }\n\n 100% {\n transform: translateY(5px);\n }\n}\n\n.sage-ai-scroll-down-button svg {\n border-radius: 50%;\n padding: 2px;\n align-items: center;\n backdrop-filter: blur(10px);\n}\n\n.sage-ai-chat-history {\n flex: 1;\n height: 100%;\n overflow-y: auto;\n\n /* Ensure scrolling works properly with the increased bottom padding */\n scroll-behavior: smooth;\n padding: 0 12px;\n}\n\n.jp-Cell {\n margin-top: 28px !important;\n}\n\n.sage-ai-rich-chat-input {\n margin-bottom: 42px;\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n.sage-ai-rich-chat-input::-webkit-scrollbar {\n width: 0;\n height: 0;\n}\n\n.sage-ai-in-context-cell .jp-Editor {\n border: 1px solid #16bd16 !important;\n border-radius: 2px;\n box-shadow: 0 0 3px rgb(22 189 22 / 20%);\n}\n\n/* New chatbox wrapper for structured input layout */\n.sage-ai-chatbox-wrapper {\n flex: 1;\n border-radius: 8px;\n padding: 1px; /* This creates the border width */\n background: var(--jp-border-color1); /* Default border color */\n display: flex;\n flex-direction: column;\n}\n\n.sage-ai-chatbox-wrapper:focus-within {\n background: conic-gradient(\n from 24deg,\n #a7d8f0,\n #ff9270 14%,\n #fdf0b2 28%,\n #a5ddf4 42%,\n #8521ca 56%,\n #fbf4c8 70%,\n #b169e8 85%,\n #a7d8f0 100%\n );\n}\n\n.sage-ai-input-container {\n z-index: 2;\n display: flex;\n padding: 10px;\n\n /* background-color: var(--jp-layout-color1); */\n background: transparent;\n position: relative;\n}\n\n/* Context row (first row) */\n.sage-ai-context-row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 12px 4px;\n background-color: var(--jp-layout-color0);\n border-radius: 7px 7px 0 0;\n min-height: 24px;\n flex-wrap: wrap;\n\n /* border-bottom: 1px solid var(--jp-border-color2); */\n}\n\n/* Hide context row when no contexts and hide border */\n.sage-ai-context-row:has(.sage-ai-context-display-inline.hidden) {\n display: none;\n}\n\n.sage-ai-context-row:has(.sage-ai-context-display-inline.hidden)\n + .sage-ai-input-row {\n border-radius: 7px;\n}\n\n.sage-ai-context-row:has(.sage-ai-context-display-inline.hidden)\n + .sage-ai-input-row\n .sage-ai-rich-chat-input-wrapper {\n border-radius: 7px;\n}\n\n.sage-ai-context-row:has(.sage-ai-context-display-inline.hidden)\n + .sage-ai-input-row\n .sage-ai-rich-chat-input {\n border-radius: 7px;\n}\n\n/* Alternative fallback for browsers that don't support :has() */\n.sage-ai-context-row.context-row-hidden {\n display: none;\n}\n\n.sage-ai-context-row.context-row-hidden + .sage-ai-input-row {\n border-radius: 7px;\n}\n\n.sage-ai-context-row.context-row-hidden\n + .sage-ai-input-row\n .sage-ai-rich-chat-input-wrapper {\n border-radius: 7px;\n}\n\n.sage-ai-context-row.context-row-hidden\n + .sage-ai-input-row\n .sage-ai-rich-chat-input {\n border-radius: 7px;\n}\n\n.sage-ai-context-text {\n margin: 0;\n font-size: 11px;\n font-weight: 500;\n line-height: 160%;\n}\n\n.sage-ai-at-icon {\n height: 13px;\n margin-right: 5px;\n transform: translateY(-3px);\n}\n\n/* Add Context button */\n.sage-ai-add-context-button {\n border: 1px solid var(--jp-border-color2);\n border-radius: 6px !important;\n color: var(--jp-ui-font-color2);\n cursor: pointer;\n padding: 3px 8px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n flex-shrink: 0;\n background: var(--jp-layout-color0);\n}\n\n.sage-ai-add-context-button:hover {\n border-color: var(--jp-ui-font-color1);\n color: var(--jp-ui-font-color1);\n\n /* background-color: var(--jp-brand-color3); */\n}\n\n.sage-ai-add-context-button:hover .sage-ai-at-icon svg path {\n stroke: var(--jp-ui-font-color1);\n}\n\n/* Inline context display */\n.sage-ai-context-display-inline {\n flex: 1;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 4px;\n min-height: 24px;\n}\n\n.sage-ai-context-display-inline.hidden {\n display: none;\n}\n\n.sage-ai-context-items-inline {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 4px;\n width: 100%;\n}\n\n/* Inline context cell boxes */\n.sage-ai-context-cell-box-inline {\n background: #e6f7ff;\n color: #1976d2;\n border: 1px solid #1976d2;\n border-radius: 4px;\n font-size: 11px;\n padding: 2px 6px;\n display: inline-flex;\n align-items: center;\n position: relative;\n gap: 4px;\n transition: all 0.2s;\n font-weight: 500;\n max-width: 120px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.sage-ai-context-cell-box-inline:hover {\n box-shadow: 0 1px 4px rgb(25 118 210 / 20%);\n}\n\n/* Input row (second row) */\n.sage-ai-input-row {\n display: flex;\n align-items: flex-end;\n position: relative;\n background-color: var(--jp-layout-color0);\n border-radius: 0 0 7px 7px;\n}\n\n/* Rich text input wrapper for gradient border - updated for new structure */\n.sage-ai-rich-chat-input-wrapper {\n flex: 1;\n border: none; /* Remove border since chatbox-wrapper provides it */\n border-radius: 0 0 7px 7px;\n padding: 0; /* Remove padding since wrapper handles it */\n background: transparent; /* Transparent since chatbox-wrapper handles background */\n}\n\n.sage-ai-rich-chat-input-wrapper:focus-within {\n background: transparent; /* Let the parent handle the gradient */\n}\n\n/* Rich text input styling - updated for new structure */\n.sage-ai-rich-chat-input {\n border: none; /* Remove border since wrapper provides it */\n border-radius: 0 0 7px 7px; /* Match the wrapper radius */\n padding: 12px;\n background-color: var(--jp-layout-color0);\n color: var(--jp-ui-font-color1);\n font-size: var(--jp-ui-font-size1);\n font-family: var(--jp-ui-font-family);\n resize: none;\n overflow-y: hidden;\n min-height: 42px;\n max-height: 240px;\n line-height: 1.5;\n transition: height 0.1s ease;\n white-space: pre-wrap;\n word-wrap: break-word;\n word-break: break-word;\n}\n\n[data-jp-theme-light='true'] .sage-ai-rich-chat-input {\n background-color: #fcfcfc;\n}\n\n.sage-ai-rich-chat-input:focus {\n outline: none;\n\n /* Remove the old focus styles since wrapper handles the border */\n}\n\n.sage-ai-new-prompt-cta {\n display: flex;\n flex-flow: row wrap;\n width: 100%;\n align-items: center;\n justify-content: center;\n gap: 6px;\n margin-bottom: 12px;\n color: var(--jp-ui-font-color2);\n}\n\n.sage-ai-new-prompt-cta p {\n text-wrap: nowrap !important;\n margin: 0 !important;\n}\n\n.sage-ai-new-prompt-cta a {\n color: var(--jp-ui-font-color0);\n font-weight: 600;\n font-size: 13px;\n cursor: pointer;\n text-wrap: nowrap !important;\n}\n\n/* Placeholder styling for rich text input */\n.sage-ai-rich-chat-input.empty::before {\n content: attr(data-placeholder);\n color: var(--jp-ui-font-color2);\n pointer-events: none;\n position: absolute;\n transform: translateY(0);\n}\n\n/* Mention styling with different colors for different types */\n.sage-ai-mention {\n font-weight: 600;\n border-radius: 3px;\n padding: 1px 3px;\n margin: 0 1px;\n white-space: nowrap;\n}\n\n.sage-ai-mention-template {\n background-color: rgb(156 39 176 / 10%);\n color: #9c27b0;\n border: 1px solid rgb(156 39 176 / 30%);\n}\n\n.sage-ai-mention-data {\n background-color: rgb(33 150 243 / 10%);\n color: #2196f3;\n border: 1px solid rgb(33 150 243 / 30%);\n}\n\n.sage-ai-mention-variable {\n background-color: rgb(76 175 80 / 10%);\n color: #4caf50;\n border: 1px solid rgb(76 175 80 / 30%);\n}\n\n.sage-ai-mention-cell {\n background-color: rgb(255 152 0 / 10%);\n color: #ff9800;\n border: 1px solid rgb(255 152 0 / 30%);\n}\n\n.sage-ai-mention-default {\n background-color: rgb(96 125 139 / 10%);\n color: #607d8b;\n border: 1px solid rgb(96 125 139 / 30%);\n}\n\n.sage-ai-mention-broken {\n background-color: rgb(244 67 54 / 10%);\n color: #f44336;\n border: 1px solid rgb(244 67 54 / 30%);\n text-decoration: line-through;\n}\n\n/* Dark theme adjustments for mentions */\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mention-template {\n background-color: rgb(156 39 176 / 20%);\n color: #ce93d8;\n}\n\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mention-data {\n background-color: rgb(33 150 243 / 20%);\n color: #90caf9;\n}\n\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mention-variable {\n background-color: rgb(76 175 80 / 20%);\n color: #a5d6a7;\n}\n\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mention-cell {\n background-color: rgb(255 152 0 / 20%);\n color: #ffcc02;\n}\n\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mention-default {\n background-color: rgb(96 125 139 / 20%);\n color: #b0bec5;\n}\n\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-mention-broken {\n background-color: rgb(244 67 54 / 20%);\n color: #ef5350;\n}\n\n.sage-ai-send-button,\n.sage-ai-cancel-button {\n background: var(--jp-inverse-layout-color1);\n color: var(--jp-ui-font-color1);\n border: none;\n padding: 6px;\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n transition: background-color 0.2s;\n width: 28px;\n height: 28px;\n border-radius: 50% !important;\n}\n\n.sage-ai-cancel-button {\n background: var(--jp-inverse-layout-color0) !important;\n}\n\n.sage-ai-cancel-button svg rect {\n fill: var(--jp-ui-inverse-font-color1) !important;\n}\n\n.sage-ai-send-button.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.sage-ai-send-button.enabled {\n background-color: var(--jp-inverse-layout-color0);\n cursor: pointer;\n}\n\n.sage-ai-send-button svg {\n width: 16px;\n height: 16px;\n}\n\n.sage-ai-send-button.enabled svg path {\n stroke: var(--jp-ui-inverse-font-color0) !important;\n}\n\n.sage-ai-message {\n padding: 8px;\n border-radius: 14px;\n max-width: 100%;\n word-wrap: break-word;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.chat-history-item-opaque {\n opacity: 0.3;\n}\n\n.sage-ai-user-message {\n position: relative;\n margin: 8px 0;\n padding: 10px;\n justify-self: end;\n width: 100%;\n border: 1px solid var(--jp-border-color2);\n}\n\n.sage-ai-user-message:has(.sage-ai-user-message-content.collapsible) {\n transition: background-color 0.3s ease;\n cursor: pointer;\n}\n\n.sage-ai-user-message:has(.sage-ai-user-message-content.collapsible):hover {\n background-color: var(--jp-layout-color2);\n}\n\n.sage-ai-user-message-content.collapsed {\n max-height: 65px;\n mask-image: -webkit-gradient(linear, left 70%, left bottom, from(rgba(0,0,0,1)), to(rgba(0,0,0,0)));\n -webkit-mask-image: -webkit-gradient(linear, left 70%, left bottom, from(rgba(0,0,0,1)), to(rgba(0,0,0,0)));\n}\n\n.sage-ai-user-message-content {\n max-height: fit-content;\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 margin-left: 0;\n}\n\n.sage-ai-tool-group {\n margin: 8px 0;\n padding: 8px;\n\n /* border-left: 3px solid var(--jp-brand-color1); */\n background-color: var(--jp-layout-color2);\n border-radius: 4px;\n}\n\n.sage-ai-tool-group-header {\n margin-bottom: 8px;\n font-weight: bold;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.sage-ai-tool-group-header::after {\n content: '▼';\n font-size: 12px;\n transition: transform 0.2s ease;\n}\n\n.sage-ai-tool-group-header.collapsed::after {\n transform: rotate(-90deg);\n}\n\n.sage-ai-tool-group-content {\n overflow: hidden;\n transition: max-height 0.3s ease;\n}\n\n.sage-ai-tool-group-content.collapsed {\n max-height: 0;\n}\n\n.sage-ai-tool-item {\n margin-bottom: 12px;\n border-bottom: 1px solid var(--jp-border-color1);\n padding-bottom: 12px;\n}\n\n.sage-ai-tool-item:last-child {\n margin-bottom: 0;\n border-bottom: none;\n padding-bottom: 0;\n}\n\n.sage-ai-tool-item-header {\n display: flex;\n align-items: center;\n margin-bottom: 4px;\n padding: 0;\n font-weight: bold;\n flex-flow: row wrap;\n place-content: center space-between;\n width: 100%;\n}\n\n.sage-ai-tool-timestamp {\n margin-left: 10px;\n font-size: 11px;\n color: var(--jp-ui-font-color2);\n font-style: italic;\n font-weight: normal;\n}\n\n.sage-ai-tool-call .sage-ai-tool-call-content,\n.sage-ai-tool-result .sage-ai-tool-result-content {\n background-color: var(--jp-layout-color1);\n border-radius: 4px;\n padding: 8px;\n margin-top: 4px;\n font-family: monospace;\n font-size: 12px;\n overflow-x: auto;\n}\n\n/* Add this to your existing CSS */\n\n.sage-ai-dropdown-indicator {\n margin-left: auto;\n font-size: 12px;\n transition: transform 0.2s ease;\n}\n\n.sage-ai-tool-item-header {\n display: flex;\n align-items: center;\n cursor: pointer;\n user-select: none;\n border-radius: 4px;\n}\n\n.sage-ai-tool-item-header:hover {\n background-color: var(--jp-layout-color2);\n}\n\n.sage-ai-tool-item-header.collapsed .sage-ai-dropdown-indicator {\n transform: rotate(-90deg);\n}\n\n.sage-ai-tool-call-content,\n.sage-ai-tool-result-content {\n max-height: 500px;\n overflow: auto;\n transition:\n max-height 0.3s ease,\n opacity 0.3s ease;\n opacity: 1;\n}\n\n.sage-ai-tool-call-content.collapsed,\n.sage-ai-tool-result-content.collapsed {\n max-height: 0;\n overflow: hidden;\n opacity: 0;\n margin: 0;\n padding: 0;\n}\n\n/* Tool group styling */\n.sage-ai-tool-group-title {\n font-weight: bold;\n color: var(--jp-ui-font-color0);\n margin-bottom: 8px;\n padding: 4px 8px;\n background-color: var(--jp-layout-color2);\n border-radius: 4px 4px 0 0;\n border-bottom: 1px solid var(--jp-border-color1);\n}\n\n/* Make sure there's no lingering collapse functionality */\n.sage-ai-tool-group-content {\n display: block;\n overflow: visible;\n max-height: none;\n}\n\n.sage-ai-undo-button {\n box-sizing: border-box;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: 8px;\n gap: 6px;\n width: 32px;\n height: 32px;\n flex: none;\n flex-grow: 0;\n cursor: pointer;\n margin-right: 8px;\n}\n\n.sage-ai-undo-button:disabled {\n opacity: 0.4;\n background-color: rgb(0 0 0 / 10%);\n cursor: not-allowed;\n}\n\n.sage-ai-icon-close {\n font-size: 16px;\n}\n\n.sage-ai-icon-button-sm,\n.sage-ai-icon-button-md {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: transparent;\n color: #949494;\n line-height: 0;\n border: none;\n cursor: pointer;\n padding: 0;\n border-radius: 50% !important;\n width: 24px;\n height: 24px;\n transition: background-color 0.2s ease;\n}\n\n.sage-ai-icon-button-sm {\n width: 20px;\n height: 20px;\n}\n\n.sage-ai-icon-button-md {\n width: 36px;\n height: 36px;\n}\n\n.sage-ai-icon-button-sm:hover,\n.sage-ai-icon-button-md:hover {\n background-color: var(--jp-layout-color2);\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n transition: background-color 0.2s;\n}\n\n.sage-ai-undo-button:disabled {\n background-color: var(--jp-layout-color3);\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.sage-ai-undo-button:hover:not(:disabled) {\n background-color: var(--jp-brand-color1);\n}\n\n/* Thread selector styling */\n.sage-ai-thread-selector {\n background-color: transparent;\n border: none;\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n padding: 4px;\n font-size: 14px;\n display: flex;\n align-items: center;\n border-radius: 4px;\n margin-right: 8px;\n}\n\n.sage-ai-thread-selector:hover {\n background-color: var(--jp-layout-color3);\n}\n\n.sage-ai-thread-selector svg {\n width: 24px;\n height: 24px;\n}\n\n.sage-ai-thread-selector-button {\n margin-right: 4px;\n}\n\n.sage-ai-thread-name {\n flex: 1;\n align-content: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 600;\n font-size: var(--jp-ui-font-size1);\n}\n\n.d2h-file-header {\n display: none !important;\n}\n\n.d2h-file-wrapper {\n margin-bottom: 0 !important;\n}\n\n.d2h-info {\n display: none !important;\n}\n\n.jp-Notebook-footer {\n display: none !important;\n}\n\n/* Markdown Content Styling */\n.sage-ai-markdown-content {\n line-height: 1.6;\n margin-left: 0 !important;\n margin-top: 4px;\n}\n\n.sage-ai-markdown-content h1,\n.sage-ai-markdown-content h2,\n.sage-ai-markdown-content h3,\n.sage-ai-markdown-content h4,\n.sage-ai-markdown-content h5,\n.sage-ai-markdown-content h6 {\n margin-top: 1em;\n margin-bottom: 0.5em;\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-markdown-content h1 {\n font-size: 1.8em;\n}\n\n.sage-ai-markdown-content h2 {\n font-size: 1.6em;\n}\n\n.sage-ai-markdown-content h3 {\n font-size: 1.4em;\n}\n\n.sage-ai-markdown-content h4 {\n font-size: 1.2em;\n}\n\n.sage-ai-markdown-content h5 {\n font-size: 1.1em;\n}\n\n.sage-ai-markdown-content h6 {\n font-size: 1em;\n}\n\n.sage-ai-markdown-content p {\n margin: 0;\n}\n\n.sage-ai-markdown-content ul,\n.sage-ai-markdown-content ol {\n padding-left: 2em;\n margin: 4px;\n}\n\n.sage-ai-markdown-content ul {\n list-style-type: disc;\n}\n\n.sage-ai-markdown-content ol {\n list-style-type: decimal;\n}\n\n.sage-ai-markdown-content li {\n margin: 0.3em 0;\n}\n\n.sage-ai-markdown-content a {\n color: var(--jp-brand-color1);\n text-decoration: none;\n}\n\n.sage-ai-markdown-content a:hover {\n text-decoration: underline;\n}\n\n.sage-ai-markdown-content blockquote {\n border-left: 4px solid var(--jp-border-color2);\n padding-left: 1em;\n margin: 1em 0;\n color: var(--jp-ui-font-color2);\n}\n\n.sage-ai-markdown-content code {\n font-family: var(--jp-code-font-family);\n background-color: var(--jp-layout-color2);\n padding: 2px 4px;\n border-radius: 3px;\n}\n\n.sage-ai-markdown-content pre {\n background-color: var(--jp-layout-color2);\n border-radius: 8px;\n padding: 1em;\n overflow-x: auto;\n margin: 1em 0;\n position: relative;\n}\n\n.sage-ai-markdown-content pre code {\n background-color: transparent;\n padding: 0;\n font-size: 0.9em;\n white-space: pre;\n}\n\n.sage-ai-markdown-content table {\n border-collapse: collapse;\n width: 100%;\n margin: 1em 0;\n}\n\n.sage-ai-markdown-content th,\n.sage-ai-markdown-content td {\n border: 1px solid var(--jp-border-color2);\n padding: 8px;\n text-align: left;\n}\n\n.sage-ai-markdown-content th {\n background-color: var(--jp-layout-color2);\n font-weight: bold;\n}\n\n.sage-ai-markdown-content img {\n max-width: 100%;\n height: auto;\n}\n\n/* Code Block Container */\n.sage-ai-code-block-container {\n position: relative;\n margin: 1em 0;\n}\n\n/* Copy Code Button */\n.sage-ai-copy-code-button {\n position: absolute;\n top: 5px;\n right: 5px;\n background-color: transparent;\n color: var(--jp-ui-font-color1);\n border: none;\n border-radius: 4px;\n padding: 4px 8px;\n font-size: 12px;\n cursor: pointer;\n opacity: 0.7;\n transition: opacity 0.2s;\n}\n\n.sage-ai-copy-code-button:hover {\n opacity: 1;\n}\n\n/* Message structure */\n.sage-ai-message-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.sage-ai-message-header-image {\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(\n 135deg,\n rgb(254 193 99 / 12%) 0%,\n rgb(222 67 19 / 12%) 100%\n );\n height: 27px;\n width: 27px;\n flex-shrink: 0;\n border-radius: 50%;\n}\n\n.sage-ai-message-header-title {\n color: var(--jp-ui-font-color2);\n font-size: var(--jp-ui-font-size1);\n font-weight: 500;\n}\n\n/* Context cells indicator */\n.context-cells-indicator {\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n font-size: 12px;\n margin: 8px;\n margin-bottom: 0;\n border-radius: 4px;\n color: #666;\n width: calc(100% - 32px);\n display: none !important;\n}\n\n/* Hide indicator when no cells are in context */\n.context-cells-indicator.hidden {\n display: none;\n}\n\n/* Context cell box (like .sage-ai-cell-id-label) */\n.sage-ai-context-cell-box {\n background: #e6f7ff;\n color: #1976d2;\n border: 2px solid #1976d2;\n border-radius: 4px;\n font-size: 12px;\n padding: 4px;\n z-index: 101;\n display: inline-flex;\n align-items: center;\n position: relative;\n gap: 4px;\n transition:\n box-shadow 0.2s,\n border 0.2s;\n margin-bottom: 2px;\n box-shadow: 0 2px 8px rgb(25 118 210 / 12%);\n font-weight: 500;\n flex-direction: row;\n}\n\n.sage-ai-context-cell-box:hover {\n box-shadow: 0 4px 16px rgb(25 118 210 / 18%);\n border-color: #1251a3;\n}\n\n.sage-ai-context-cell-delete {\n color: #e53935;\n font-size: 14px;\n cursor: pointer;\n line-height: 0;\n}\n\n.sage-ai-tool-call-v1 {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-top: 4px;\n margin-bottom: 4px;\n padding: 0 8px;\n font-family: var(--jp-ui-font-family);\n font-size: var(--jp-ui-font-size1);\n color: var(--jp-ui-font-color2);\n}\n\n.sage-ai-tool-call-v1.clickable {\n cursor: pointer;\n}\n\n.sage-ai-tool-call-v1.error-state svg {\n fill: var(--error-fill-active) !important;\n}\n\n.sage-ai-tool-call-v1.error-state span {\n color: var(--error-fill-active) !important;\n}\n\n.sage-ai-loading-text {\n background: linear-gradient(\n 135deg,\n transparent,\n var(--jp-ui-font-color1),\n transparent\n );\n background-clip: text;\n color: transparent !important;\n background-size: 200% 100%;\n animation: shimmer 2.5s linear infinite;\n}\n\n@keyframes shimmer {\n 0% {\n background-position: 200% 0;\n }\n\n 100% {\n background-position: -200% 0;\n }\n}\n\n.sage-ai-tool-call-cell {\n border-radius: 5px;\n background: rgb(59 130 246 / 13%);\n color: #60a5fa;\n padding: 1px 6px;\n font-family: var(--jp-code-font-family), serif;\n font-size: 12px;\n font-style: normal;\n font-weight: 500;\n line-height: 160%; /* 19.2px */\n border: none;\n}\n\n.sage-ai-tool-call-cell:hover {\n background: rgb(59 130 246 / 20%);\n color: #2563eb;\n cursor: pointer;\n}\n\n.sage-ai-tool-call-code {\n background: var(--d2h-dark-selected-color);\n color: var(--jp-ui-font-color1);\n border-radius: 4px;\n font-size: var(--jp-ui-font-size0);\n padding: 2px 4px;\n}\n\n/* Mode selector styles are now in mode-selector-dropdown.css */\n\n/* Floating current/next step box */\n.sage-ai-step-floating-box {\n position: fixed;\n justify-self: anchor-center;\n backdrop-filter: blur(10px);\n border: 0 solid var(--jp-border-color2);\n border-bottom-width: 1px;\n width: calc(100% - 25px);\n padding: 8px 12px;\n box-shadow: 0 2px 8px rgb(0 0 0 / 10%);\n z-index: 100;\n display: none;\n font-size: var(--jp-ui-font-size0);\n line-height: 1.4;\n}\n\n.sage-ai-step-floating-box.visible {\n display: flex;\n gap: 8px;\n max-height: 80px;\n}\n\n.sage-ai-chat-history.floating-box-visible > :first-child {\n margin-top: 84px !important;\n}\n\n.sage-ai-step-floating-box .content {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.sage-ai-step-floating-box .current-task-text {\n color: var(--jp-ui-font-color0);\n font-size: 11px;\n margin: 0;\n margin-top: 3px;\n}\n\n.sage-ai-step-floating-box .next-task-text {\n color: var(--jp-ui-font-color2);\n font-size: var(--jp-ui-font-size0);\n margin: 0;\n}\n\n.sage-ai-step-floating-box .close-button {\n background: none;\n border: none;\n color: var(--jp-ui-font-color2);\n cursor: pointer;\n padding: 2px;\n font-size: 14px;\n line-height: 1;\n border-radius: 2px;\n transition: background-color 0.2s;\n}\n\n.sage-ai-step-floating-box .close-button:hover {\n background-color: var(--jp-layout-color3);\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-step-floating-box .loader {\n width: 20px;\n height: 20px;\n display: inline-block;\n position: relative;\n}\n\n.sage-ai-step-floating-box .loader::after,\n.sage-ai-step-floating-box .loader::before {\n content: '';\n box-sizing: border-box;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n border: 2px solid var(--jp-ui-font-color1);\n position: absolute;\n left: 0;\n top: 0;\n animation: sage-ai-step-floating-box-animloader 2s linear infinite;\n}\n\n.sage-ai-step-floating-box .loader::after {\n animation-delay: 1s;\n}\n\n@keyframes sage-ai-step-floating-box-animloader {\n 0% {\n transform: scale(0);\n opacity: 1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0;\n }\n}\n\n.sage-ai-step-floating-box .source-toggle {\n align-self: center;\n background: none;\n border: none;\n color: var(--jp-ui-font-color2);\n cursor: pointer;\n font-size: var(--jp-ui-font-size0);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border-radius: 4px;\n transition:\n background-color 0.2s,\n color 0.2s;\n width: 24px;\n height: 24px;\n}\n\n.sage-ai-step-floating-box .source-toggle:hover {\n background-color: var(--jp-layout-color2);\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-step-floating-box .toggle-icon {\n font-size: 12px;\n transition: transform 0.2s ease;\n line-height: 1;\n}\n\n.sage-ai-step-floating-box .source-content {\n padding: 8px;\n background-color: var(--jp-layout-color2);\n border-radius: 4px;\n border: 1px solid var(--jp-border-color2);\n overflow-y: auto;\n resize: vertical;\n min-height: 100px;\n max-height: 60vh;\n}\n\n.sage-ai-step-floating-box .source-markdown {\n font-family: var(--jp-code-font-family);\n font-size: 11px;\n line-height: 1.4;\n color: var(--jp-ui-font-color1);\n}\n\n.sage-ai-step-floating-box .source-markdown h1,\n.sage-ai-step-floating-box .source-markdown h2,\n.sage-ai-step-floating-box .source-markdown h3,\n.sage-ai-step-floating-box .source-markdown h4,\n.sage-ai-step-floating-box .source-markdown h5,\n.sage-ai-step-floating-box .source-markdown h6 {\n margin: 8px 0 4px;\n font-weight: 600;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-step-floating-box .source-markdown h1 {\n font-size: 14px;\n}\n\n.sage-ai-step-floating-box .source-markdown h2 {\n font-size: 13px;\n}\n\n.sage-ai-step-floating-box .source-markdown h3 {\n font-size: 12px;\n}\n\n.sage-ai-step-floating-box .source-markdown h4,\n.sage-ai-step-floating-box .source-markdown h5,\n.sage-ai-step-floating-box .source-markdown h6 {\n font-size: 11px;\n}\n\n.sage-ai-step-floating-box .source-markdown p {\n margin: 4px 0;\n}\n\n.sage-ai-step-floating-box .source-markdown ul,\n.sage-ai-step-floating-box .source-markdown ol {\n padding-left: 16px;\n margin: 4px 0;\n}\n\n.sage-ai-step-floating-box .source-markdown li {\n margin: 2px 0;\n}\n\n.sage-ai-step-floating-box .source-markdown code {\n background-color: var(--jp-layout-color1);\n padding: 1px 3px;\n border-radius: 2px;\n font-size: 10px;\n}\n\n.sage-ai-step-floating-box .source-markdown pre {\n background-color: var(--jp-layout-color1);\n border-radius: 4px;\n padding: 6px;\n margin: 4px 0;\n overflow-x: auto;\n}\n\n.sage-ai-step-floating-box .source-markdown pre code {\n background-color: transparent;\n padding: 0;\n font-size: 10px;\n}\n\n.sage-ai-step-floating-box .source-markdown blockquote {\n border-left: 3px solid var(--jp-border-color2);\n padding-left: 8px;\n margin: 4px 0;\n color: var(--jp-ui-font-color2);\n font-style: italic;\n}\n\n/* Adjust floating box height when source is expanded */\n.sage-ai-step-floating-box.visible {\n display: flex;\n gap: 8px;\n max-height: none;\n flex-wrap: wrap;\n}\n\n.sage-ai-step-floating-box.visible .content {\n flex: 1;\n min-width: 200px;\n}\n\n.sage-ai-step-floating-box.visible .source-section {\n flex-basis: 100%;\n}\n\n/* Diff2Html overrides */\n.d2h-code-line {\n padding: 0 5em !important;\n}\n\n.d2h-code-linenumber {\n width: 4.5em !important;\n backdrop-filter: blur(8px);\n}\n\n.line-num1,\n.line-num2 {\n width: 50% !important;\n text-align: center !important;\n padding: 0 !important;\n}\n\n.hljs-regexp,\n.hljs-string,\n.hljs-meta .hljs-string {\n color: var(--jp-brand-color0) !important;\n}\n\n.hljs {\n color: var(--jp-ui-font-color2) !important;\n}\n\n.sage-ai-waiting-reply-container {\n display: none;\n bottom: 0;\n margin: 8px 0 0;\n font-size: 12px;\n padding: 12px;\n /*color: rgb(238 196 70 / 100%);*/\n border-radius: 12px;\n /*border: 1px solid rgb(238 196 70 / 50%);*/\n text-align: center;\n /*box-shadow: 0 2px 8px rgb(0 0 0 / 10%);*/\n /*backdrop-filter: blur(8px);*/\n background: transparent;\n}\n\n[data-jp-theme-light='false'] .sage-ai-waiting-reply-container {\n /*background: var(--BG-main, #111);*/\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-waiting-reply-container.visible {\n display: block;\n}\n\n.sage-ai-waiting-reply-text {\n margin-bottom: 2px;\n font-weight: 500;\n}\n\n.sage-ai-continue-button {\n background-color: transparent;\n color: white;\n padding: 6px;\n border-radius: 4px !important;\n border: 1px solid #383838 !important;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n margin-top: 6px;\n transition: all 0.2s ease;\n}\n\n.sage-ai-continue-button.hidden {\n display: none;\n}\n\n.sage-ai-continue-button:hover {\n background-color: transparent;\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgb(0 0 0 / 15%);\n}\n\n.sage-ai-continue-button:active {\n transform: translateY(1px);\n}\n\n.sage-ai-prompt-buttons-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 12px;\n}\n\n[data-jp-theme-light='false'] .sage-ai-prompt-button {\n color: white !important;\n}\n\n.sage-ai-prompt-button {\n background-color: transparent;\n padding: 8px 12px;\n border-radius: 6px !important;\n border: 1px solid #383838 !important;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n text-align: left;\n min-height: 32px;\n white-space: normal;\n word-wrap: break-word;\n}\n\n.sage-ai-prompt-button:hover {\n background-color: transparent;\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgb(0 0 0 / 15%);\n}\n\n.sage-ai-prompt-button:active {\n transform: translateY(1px);\n}\n\n.cm-editor:has(+ .jp-DiffOverlay) {\n display: none !important;\n}\n\n.jp-InputArea:has(.jp-DiffOverlay.sage-ai-quick-gen-diff-overlay) {\n display: block !important;\n}\n\n.hljs-subst {\n color: #9bb8d4 !important;\n}\n\n.sage-ai-restore-redo-element {\n animation: fadeIn 0.2s ease;\n display: none;\n backdrop-filter: blur(2px);\n border-radius: 50%;\n padding: 0;\n position: absolute;\n bottom: -7px;\n right: 25px;\n cursor: pointer;\n z-index: 0;\n}\n\n.sage-ai-restore-redo-element {\n color: var(--jp-ui-font-color2);\n}\n\n.sage-ai-restore-redo-element:hover {\n color: var(--jp-ui-font-color3);\n}\n\n/* Rollback element styles */\n.sage-ai-rollback-element {\n animation: fadeIn 0.2s ease;\n display: inline-flex;\n backdrop-filter: blur(2px);\n border-radius: 50%;\n padding: 2px;\n position: absolute;\n bottom: -6px;\n right: 0;\n align-items: center;\n cursor: pointer;\n z-index: 5;\n}\n\n.sage-ai-rollback-icon {\n transition: transform 0.2s cubic-bezier(.4,2,.6,1), filter 0.2s;\n display: inline-flex;\n}\n\n.sage-ai-rollback-tooltip {\n position: absolute;\n left: -140px;\n top: 50%;\n transform: translateY(-50%) translateX(-10px);\n background: var(--jp-layout-color2, #f5f5f5);\n color: var(--jp-ui-font-color1, #222);\n padding: 4px 10px;\n border-radius: 6px;\n font-size: 13px;\n white-space: nowrap;\n box-shadow: 0 2px 8px rgba(0,0,0,0.08);\n transition: opacity 0.2s cubic-bezier(.4,2,.6,1), transform 0.2s cubic-bezier(.4,2,.6,1);\n z-index: 10;\n opacity: 0;\n pointer-events: none;\n}\n\n.sage-ai-rollback-element:hover .sage-ai-rollback-tooltip {\n opacity: 1;\n transform: translateY(-50%) translateX(0);\n}\n\n.sage-ai-rollback-element:hover .sage-ai-rollback-icon {\n transform: scale(1.25);\n filter: drop-shadow(0 2px 6px rgba(0,0,0,0.10));\n}\n",""]);const s=r},8789:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,"/* Modal dialog styling */\n.sage-ai-modal {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0,0,0,0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n}\n\n.sage-ai-dialog {\n background-color: var(--jp-layout-color1);\n padding: 20px;\n border-radius: 5px;\n width: 50%;\n max-width: 500px;\n box-sizing: border-box;\n}\n\n/* Override width for snippet form modal */\n.sage-ai-dialog.sage-ai-snippet-form-modal {\n width: 90%;\n max-width: 600px;\n}\n\n/* Custom styling for snippet modal in dark mode */\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-custom-snippet-modal .modal-content {\n border-radius: 12px;\n border: 1px solid var(--Border-Border, #383838);\n background: var(--BG-main, #111);\n box-shadow: 0 8px 17.1px 0 rgba(208, 208, 208, 0.09);\n}\n\n/* Custom styling for form inputs in snippet modal - dark mode only */\n[data-jp-theme-name='JupyterLab Dark'] .sage-ai-custom-snippet-modal .form-control {\n border-radius: 8px;\n border: 0.8px solid var(--Border-Border, #383838);\n background: var(--Prompt-box-bg-default, #141414);\n}\n\n.sage-ai-dialog-title {\n margin-top: 0;\n}\n\n.sage-ai-dialog-label {\n display: block;\n margin: 10px 0;\n}\n\n/* Checkbox styling consistent with the autorun checkbox */\n.sage-ai-dialog-checkbox-container {\n display: flex;\n align-items: center;\n margin: 15px 0;\n}\n\n.sage-ai-dialog-checkbox {\n margin-right: 8px;\n cursor: pointer;\n}\n\n.sage-ai-dialog-checkbox-label {\n font-size: var(--jp-ui-font-size1);\n color: var(--jp-ui-font-color1);\n cursor: pointer;\n user-select: none;\n}\n\n.sage-ai-dialog-textarea {\n width: 100%;\n height: 100px;\n margin-bottom: 15px;\n padding: 8px;\n box-sizing: border-box;\n}\n\n.sage-ai-dialog-button-container {\n display: flex;\n justify-content: flex-end;\n}\n\n.sage-ai-dialog-submit-button {\n padding: 8px 16px;\n background-color: var(--jp-brand-color1);\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n}\n\n/* Revert-and-send button styling in modal context */\n.sage-ai-revert-send-button-modal {\n padding: 8px 16px;\n background-color: var(--jp-warn-color1);\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n margin-right: 10px;\n}\n\n.sage-ai-revert-send-button-modal:hover {\n background-color: var(--jp-warn-color0);\n}\n\n.sage-ai-revert-send-button-modal:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n/* Code confirmation styling */\n.sage-ai-code-confirmation {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px;\n margin: 15px 0;\n border: 2px solid var(--jp-border-color1);\n border-radius: 8px;\n background-color: var(--jp-layout-color2);\n}\n\n.sage-ai-confirmation-button-container {\n display: flex;\n gap: 4px;\n}\n\n.sage-ai-reject-button {\n padding: 8px 16px;\n background-color: var(--jp-warn-color1);\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n}\n\n.sage-ai-confirm-button {\n padding: 8px 16px;\n background-color: var(--jp-brand-color1);\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n}\n\n/* Post-cancellation dialog styling */\n.sage-ai-post-cancel-dialog {\n padding: 15px;\n margin: 15px 0;\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n background-color: var(--jp-layout-color1);\n text-align: center;\n}\n\n.sage-ai-post-cancel-heading {\n margin: 0 0 15px 0;\n color: var(--jp-ui-font-color1);\n font-weight: bold;\n}\n\n/* Thread selector dropdown styling - additional styles */\n.sage-ai-thread-dropdown-container {\n position: relative;\n display: inline-block;\n}\n\n.sage-ai-thread-dropdown-header {\n border-bottom: 1px solid var(--jp-border-color1);\n padding: 8px 12px;\n font-weight: bold;\n color: var(--jp-ui-font-color0);\n}\n\n.sage-ai-thread-dropdown-footer {\n border-top: 1px solid var(--jp-border-color1);\n padding: 8px 12px;\n text-align: center;\n}\n\n.sage-ai-thread-dropdown-empty {\n padding: 12px;\n font-style: italic;\n color: var(--jp-ui-font-color2);\n text-align: center;\n}\n\n/* Enhanced button styling for thread items */\n.sage-ai-thread-item-button {\n background: none;\n border: none;\n color: var(--jp-warn-color1);\n cursor: pointer;\n padding: 2px 4px;\n font-size: var(--jp-ui-font-size0);\n visibility: hidden;\n float: right;\n}\n\n.sage-ai-thread-item:hover .sage-ai-thread-item-button {\n visibility: visible;\n}\n\n.sage-ai-thread-item-button:hover {\n color: var(--jp-warn-color0);\n background-color: var(--jp-warn-color3);\n border-radius: 2px;\n}\n\n/* Context display styling */\n.sage-ai-context-display {\n margin: 15px 0;\n padding: 12px;\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n background-color: var(--jp-layout-color0);\n}\n\n.sage-ai-context-display-header {\n font-weight: bold;\n color: var(--jp-ui-font-color0);\n margin-bottom: 8px;\n font-size: var(--jp-ui-font-size1);\n}\n\n.sage-ai-context-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n border-bottom: 1px solid var(--jp-border-color2);\n}\n\n.sage-ai-context-item:last-child {\n border-bottom: none;\n}\n\n.sage-ai-context-item-icon {\n font-size: 14px;\n width: 20px;\n text-align: center;\n}\n\n.sage-ai-context-item-info {\n flex: 1;\n}\n\n.sage-ai-context-item-name {\n font-weight: 500;\n color: var(--jp-ui-font-color0);\n font-size: var(--jp-ui-font-size0);\n}\n\n.sage-ai-context-item-preview {\n color: var(--jp-ui-font-color2);\n font-size: var(--jp-ui-font-size0);\n font-style: italic;\n}\n\n.sage-ai-context-empty {\n color: var(--jp-ui-font-color2);\n font-style: italic;\n text-align: center;\n padding: 8px;\n}\n\n[data-jp-theme-name='JupyterLab Dark'] .form-control {\n border-radius: 8px;\nborder: 0.8px solid var(--Border-Border, #383838);\nbackground: var(--Prompt-box-bg-default, #141414);\ncolor: var(--Text-text-secondary, #949494) !important;\n\n/* Subtle/Medium */\nfont-family: Geist;\nfont-size: 13px;\nfont-style: normal;\nfont-weight: 500;\nline-height: 155%; /* 20.15px */\n}\n",""]);const s=r},9508:(n,o,e)=>{e.d(o,{A:()=>s});var a=e(1601),t=e.n(a),i=e(6314),r=e.n(i)()(t());r.push([n.id,".sage-ai-update-banner-widget {\n position: fixed !important;\n top: 40px !important;\n left: 50% !important;\n transform: translateX(-50%) !important;\n width: auto;\n max-width: 500px;\n min-width: 300px;\n z-index: 999999 !important;\n flex-shrink: 0;\n margin: 0 !important;\n padding: 0 !important;\n border: none !important;\n box-sizing: border-box !important;\n pointer-events: auto !important;\n}\n\n.sage-ai-update-banner {\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n padding: 12px 16px;\n border-radius: 8px;\n margin-bottom: 0;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);\n animation: slideDown 0.3s ease-out;\n}\n\n.sage-ai-update-banner-content {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.sage-ai-update-banner-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n color: #ffffff;\n opacity: 0.9;\n}\n\n.sage-ai-update-banner-text {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.sage-ai-update-banner-title {\n font-weight: 600;\n font-size: 14px;\n line-height: 1.2;\n}\n\n.sage-ai-update-banner-version {\n font-size: 12px;\n opacity: 0.9;\n line-height: 1.2;\n}\n\n.sage-ai-update-banner-actions {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.sage-ai-update-banner-button {\n padding: 6px 12px;\n border: none;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s ease;\n white-space: nowrap;\n}\n\n.sage-ai-update-banner-button:hover {\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n.sage-ai-update-banner-button-update {\n background: #ffffff;\n color: #667eea;\n}\n\n.sage-ai-update-banner-button-update:hover {\n background: #f8f9fa;\n}\n\n.sage-ai-update-banner-button-later {\n background: rgba(255, 255, 255, 0.2);\n color: #ffffff;\n border: 1px solid rgba(255, 255, 255, 0.3);\n}\n\n.sage-ai-update-banner-button-later:hover {\n background: rgba(255, 255, 255, 0.3);\n}\n\n.sage-ai-update-banner-button-decline {\n background: transparent;\n color: #ffffff;\n border: 1px solid rgba(255, 255, 255, 0.3);\n}\n\n.sage-ai-update-banner-button-decline:hover {\n background: rgba(255, 255, 255, 0.1);\n}\n\n.sage-ai-update-banner-progress {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #ffffff;\n font-size: 13px;\n}\n\n.sage-ai-update-banner-spinner {\n width: 16px;\n height: 16px;\n border: 2px solid rgba(255, 255, 255, 0.3);\n border-top: 2px solid #ffffff;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n.sage-ai-update-banner-description {\n font-size: 12px;\n opacity: 0.9;\n color: #ffffff;\n margin-top: 2px;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .sage-ai-update-banner-widget {\n left: 50% !important;\n right: auto !important;\n transform: translateX(-50%) !important;\n max-width: calc(100vw - 40px) !important;\n min-width: auto;\n margin: 0 20px !important;\n }\n\n .sage-ai-update-banner-content {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .sage-ai-update-banner-actions {\n align-self: stretch;\n justify-content: space-between;\n }\n\n .sage-ai-update-banner-button {\n flex: 1;\n text-align: center;\n }\n}\n",""]);const s=r}}]);