mito-ai 0.1.40__py3-none-any.whl → 0.1.42__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.
Potentially problematic release.
This version of mito-ai might be problematic. Click here for more details.
- mito_ai/__init__.py +19 -6
- mito_ai/_version.py +1 -1
- mito_ai/app_builder/handlers.py +1 -2
- mito_ai/app_manager/__init__.py +4 -0
- mito_ai/app_manager/handlers.py +129 -0
- mito_ai/app_manager/models.py +58 -0
- mito_ai/completions/completion_handlers/agent_execution_handler.py +1 -1
- mito_ai/completions/completion_handlers/chat_completion_handler.py +2 -2
- mito_ai/completions/completion_handlers/utils.py +77 -37
- mito_ai/completions/handlers.py +1 -1
- mito_ai/completions/message_history.py +9 -1
- mito_ai/completions/models.py +3 -1
- mito_ai/completions/prompt_builders/agent_execution_prompt.py +2 -0
- mito_ai/completions/prompt_builders/agent_smart_debug_prompt.py +8 -0
- mito_ai/completions/prompt_builders/agent_system_message.py +17 -0
- mito_ai/completions/prompt_builders/utils.py +7 -0
- mito_ai/constants.py +3 -2
- mito_ai/file_uploads/__init__.py +3 -0
- mito_ai/file_uploads/handlers.py +225 -0
- mito_ai/file_uploads/urls.py +21 -0
- mito_ai/openai_client.py +1 -1
- mito_ai/tests/completions/completion_handlers_utils_test.py +51 -0
- mito_ai/tests/file_uploads/__init__.py +2 -0
- mito_ai/tests/file_uploads/test_handlers.py +267 -0
- mito_ai/tests/message_history/test_message_history_utils.py +57 -4
- mito_ai/utils/mito_server_utils.py +7 -0
- mito_ai/utils/server_limits.py +1 -1
- mito_ai/utils/telemetry_utils.py +26 -9
- {mito_ai-0.1.40.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/build_log.json +102 -100
- {mito_ai-0.1.40.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/package.json +4 -2
- {mito_ai-0.1.40.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/package.json.orig +3 -1
- mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.55d9f8ca386d87856d2d.js → mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.a9a35b6fcc54a7bcb32c.js +2662 -1144
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.a9a35b6fcc54a7bcb32c.js.map +1 -0
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/node_modules_process_browser_js.4b128e94d31a81ebd209.js +198 -0
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/node_modules_process_browser_js.4b128e94d31a81ebd209.js.map +1 -0
- mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.264103d9addd1e166113.js → mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.c7d9d8635826165de52e.js +50 -26
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.c7d9d8635826165de52e.js.map +1 -0
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_apis_signOut_mjs-node_module-75790d.688c25857e7b81b1740f.js +533 -0
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_apis_signOut_mjs-node_module-75790d.688c25857e7b81b1740f.js.map +1 -0
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_tokenProvider_tokenProvider_-72f1c8.a917210f057fcfe224ad.js +6941 -0
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_tokenProvider_tokenProvider_-72f1c8.a917210f057fcfe224ad.js.map +1 -0
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_dist_esm_index_mjs.6bac1a8c4cc93f15f6b7.js +1021 -0
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_dist_esm_index_mjs.6bac1a8c4cc93f15f6b7.js.map +1 -0
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_ui-react_dist_esm_index_mjs.4fcecd65bef9e9847609.js +59698 -0
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_ui-react_dist_esm_index_mjs.4fcecd65bef9e9847609.js.map +1 -0
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_react-dom_client_js-node_modules_aws-amplify_ui-react_dist_styles_css.b43d4249e4d3dac9ad7b.js +7440 -0
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_react-dom_client_js-node_modules_aws-amplify_ui-react_dist_styles_css.b43d4249e4d3dac9ad7b.js.map +1 -0
- mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.9795f79265ddb416864b.js → mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.3f6754ac5116d47de76b.js +2 -240
- mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.3f6754ac5116d47de76b.js.map +1 -0
- {mito_ai-0.1.40.dist-info → mito_ai-0.1.42.dist-info}/METADATA +1 -1
- {mito_ai-0.1.40.dist-info → mito_ai-0.1.42.dist-info}/RECORD +61 -40
- mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.55d9f8ca386d87856d2d.js.map +0 -1
- mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.264103d9addd1e166113.js.map +0 -1
- mito_ai-0.1.40.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.9795f79265ddb416864b.js.map +0 -1
- {mito_ai-0.1.40.data → mito_ai-0.1.42.data}/data/etc/jupyter/jupyter_server_config.d/mito_ai.json +0 -0
- {mito_ai-0.1.40.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/toolbar-buttons.json +0 -0
- {mito_ai-0.1.40.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/static/style.js +0 -0
- {mito_ai-0.1.40.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js +0 -0
- {mito_ai-0.1.40.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/static/style_index_js.5876024bb17dbd6a3ee6.js.map +0 -0
- {mito_ai-0.1.40.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js +0 -0
- {mito_ai-0.1.40.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_vscode-diff_dist_index_js.ea55f1f9346638aafbcf.js.map +0 -0
- {mito_ai-0.1.40.dist-info → mito_ai-0.1.42.dist-info}/WHEEL +0 -0
- {mito_ai-0.1.40.dist-info → mito_ai-0.1.42.dist-info}/entry_points.txt +0 -0
- {mito_ai-0.1.40.dist-info → mito_ai-0.1.42.dist-info}/licenses/LICENSE +0 -0
|
@@ -140,6 +140,7 @@ const AiChatPlugin = {
|
|
|
140
140
|
});
|
|
141
141
|
// Update jupyter settings to work best with mito-ai
|
|
142
142
|
void (0,_jupyterSettingsManager__WEBPACK_IMPORTED_MODULE_10__.setRenameUntitledFileOnSave)(settingRegistry, documentManager);
|
|
143
|
+
void (0,_jupyterSettingsManager__WEBPACK_IMPORTED_MODULE_10__.setDefaultWindowingMode)(settingRegistry);
|
|
143
144
|
// By returning a tracker token, we can require the token in other
|
|
144
145
|
// plugins. This allows us to force plugin load order. For example,
|
|
145
146
|
// we can ensure that the COMMAND_MITO_AI_OPEN_CHAT is created
|
|
@@ -523,10 +524,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
523
524
|
/* harmony export */ });
|
|
524
525
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
525
526
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
526
|
-
/* harmony import */ var
|
|
527
|
-
/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/errors */ "./lib/utils/errors.js");
|
|
527
|
+
/* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../utils/errors */ "./lib/utils/errors.js");
|
|
528
528
|
/* harmony import */ var _utils_stripe__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../utils/stripe */ "./lib/utils/stripe.js");
|
|
529
|
-
/* harmony import */ var
|
|
529
|
+
/* harmony import */ var _restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../restAPI/RestAPI */ "./lib/restAPI/RestAPI.js");
|
|
530
|
+
/* harmony import */ var _style_AlertBlock_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../style/AlertBlock.css */ "./style/AlertBlock.css");
|
|
530
531
|
/*
|
|
531
532
|
* Copyright (c) Saga Inc.
|
|
532
533
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
@@ -536,26 +537,56 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
536
537
|
|
|
537
538
|
|
|
538
539
|
|
|
540
|
+
// Add calendly link constant
|
|
541
|
+
const CALENDLY_LINK = 'https://calendly.com/jake_from_mito/mito-meeting';
|
|
539
542
|
const AlertBlock = ({ content, mitoAIConnectionErrorType }) => {
|
|
540
543
|
const [showEmailDetails, setShowEmailDetails] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
541
544
|
// The first time this AlertBlock is rendered, log the error type
|
|
542
545
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
543
|
-
void (0,
|
|
546
|
+
void (0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_2__.logEvent)('alert_block_displayed', { 'type': mitoAIConnectionErrorType, 'error': content });
|
|
544
547
|
}, []);
|
|
545
|
-
if (mitoAIConnectionErrorType ===
|
|
546
|
-
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "chat-message-alert" },
|
|
547
|
-
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("
|
|
548
|
-
"
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("
|
|
552
|
-
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null,
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
548
|
+
if (mitoAIConnectionErrorType === _utils_errors__WEBPACK_IMPORTED_MODULE_3__.FREE_TIER_LIMIT_REACHED_ERROR_TITLE) {
|
|
549
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "chat-message-alert-container upgrade" },
|
|
550
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "chat-message-alert" },
|
|
551
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "alert-error-message" }, "Free Trial Limit Reached")),
|
|
552
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", { className: "alert-actions-title" }, "You've used up your free trial of Mito AI for this month."),
|
|
553
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", { className: "alert-actions-title", style: { marginTop: '0px', marginBottom: '5px' } }, "Choose how you'd like to continue:"),
|
|
554
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ol", { style: { margin: '0', paddingLeft: '20px' } },
|
|
555
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null,
|
|
556
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("form", { action: _utils_stripe__WEBPACK_IMPORTED_MODULE_4__.STRIPE_PAYMENT_LINK, method: "POST", target: "_blank", style: { display: 'inline' } },
|
|
557
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", { type: "submit", className: "secondary-option-link", style: {
|
|
558
|
+
background: 'none',
|
|
559
|
+
border: 'none',
|
|
560
|
+
padding: 0,
|
|
561
|
+
font: 'inherit',
|
|
562
|
+
color: 'var(--purple-700)',
|
|
563
|
+
textDecoration: 'underline',
|
|
564
|
+
cursor: 'pointer',
|
|
565
|
+
transition: 'color 0.2s ease'
|
|
566
|
+
} }, "Upgrade to Mito Pro")),
|
|
567
|
+
' ',
|
|
568
|
+
" for unlimited AI access and dedicated support"),
|
|
569
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null,
|
|
570
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", { onClick: () => {
|
|
571
|
+
window.open(CALENDLY_LINK, '_blank');
|
|
572
|
+
}, className: "secondary-option-link", style: {
|
|
573
|
+
background: 'none',
|
|
574
|
+
border: 'none',
|
|
575
|
+
padding: 0,
|
|
576
|
+
font: 'inherit',
|
|
577
|
+
color: 'var(--purple-700)',
|
|
578
|
+
textDecoration: 'underline',
|
|
579
|
+
cursor: 'pointer',
|
|
580
|
+
transition: 'color 0.2s ease'
|
|
581
|
+
} }, "Schedule a call with our founders"),
|
|
582
|
+
' ',
|
|
583
|
+
" to get 3 free months of Mito Pro"),
|
|
584
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null,
|
|
585
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", { href: "https://docs.trymito.io/mito-ai/configuring-ai-provider-keys", target: "_blank", rel: "noreferrer", className: "secondary-option-link" }, "Use your own API keys"),
|
|
586
|
+
' ',
|
|
587
|
+
" to continue using Mito AI"))));
|
|
588
|
+
}
|
|
589
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "chat-message-alert-container error" },
|
|
559
590
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "chat-message-alert" },
|
|
560
591
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "alert-error-message" },
|
|
561
592
|
"\u26A0 ",
|
|
@@ -612,10 +643,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
612
643
|
|
|
613
644
|
|
|
614
645
|
|
|
615
|
-
const AssistantCodeBlock = ({ code, codeSummary, isCodeComplete, renderMimeRegistry, previewAICode, acceptAICode, rejectAICode, isLastAiMessage, codeReviewStatus, agentModeEnabled, isErrorFixup }) => {
|
|
646
|
+
const AssistantCodeBlock = ({ code, codeSummary, isCodeComplete, renderMimeRegistry, previewAICode, acceptAICode, rejectAICode, isLastAiMessage, codeReviewStatus, agentModeEnabled, isErrorFixup, }) => {
|
|
616
647
|
const [isCodeExpanded, setIsCodeExpanded] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
617
648
|
const shouldShowToolbar = isLastAiMessage || isCodeComplete;
|
|
618
649
|
if (agentModeEnabled) {
|
|
650
|
+
// Handle regular code blocks
|
|
619
651
|
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: (0,_utils_classNames__WEBPACK_IMPORTED_MODULE_3__.classNames)('code-block-container', 'agent-mode', {
|
|
620
652
|
'agent-mode-collapsed': !isCodeExpanded,
|
|
621
653
|
}) },
|
|
@@ -739,7 +771,8 @@ const ChatDropdown = ({ options, onSelect, filterText, maxDropdownItems = 10, is
|
|
|
739
771
|
return option.file.variable_name.toLowerCase().includes(effectiveFilterText.toLowerCase());
|
|
740
772
|
}
|
|
741
773
|
else if (option.type === 'db') {
|
|
742
|
-
return option.variable.
|
|
774
|
+
return option.variable.variable_name.toLowerCase().includes(effectiveFilterText.toLowerCase()) ||
|
|
775
|
+
option.variable.value.toLowerCase().includes(effectiveFilterText.toLowerCase());
|
|
743
776
|
}
|
|
744
777
|
else {
|
|
745
778
|
return option.rule.toLowerCase().includes(effectiveFilterText.toLowerCase());
|
|
@@ -932,12 +965,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
932
965
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
933
966
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
934
967
|
/* harmony import */ var _utils_classNames__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../utils/classNames */ "./lib/utils/classNames.js");
|
|
935
|
-
/* harmony import */ var
|
|
968
|
+
/* harmony import */ var _ChatDropdown__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ChatDropdown */ "./lib/Extensions/AiChat/ChatMessage/ChatDropdown.js");
|
|
936
969
|
/* harmony import */ var _utils_notebook__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../utils/notebook */ "./lib/utils/notebook.js");
|
|
937
970
|
/* harmony import */ var _style_ChatInput_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../style/ChatInput.css */ "./style/ChatInput.css");
|
|
938
971
|
/* harmony import */ var _style_ChatDropdown_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../style/ChatDropdown.css */ "./style/ChatDropdown.css");
|
|
939
972
|
/* harmony import */ var _hooks_useDebouncedFunction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../hooks/useDebouncedFunction */ "./lib/hooks/useDebouncedFunction.js");
|
|
940
|
-
/* harmony import */ var
|
|
973
|
+
/* harmony import */ var _components_SelectedContextContainer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../../components/SelectedContextContainer */ "./lib/components/SelectedContextContainer.js");
|
|
974
|
+
/* harmony import */ var _components_AttachFileButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../components/AttachFileButton */ "./lib/components/AttachFileButton.js");
|
|
941
975
|
/* harmony import */ var _components_DatabaseButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../components/DatabaseButton */ "./lib/components/DatabaseButton.js");
|
|
942
976
|
/*
|
|
943
977
|
* Copyright (c) Saga Inc.
|
|
@@ -952,6 +986,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
952
986
|
|
|
953
987
|
|
|
954
988
|
|
|
989
|
+
|
|
955
990
|
const ChatInput = ({ app, initialContent, placeholder, onSave, onCancel, isEditing, contextManager, notebookTracker, agentModeEnabled = false, agentExecutionStatus = 'idle', }) => {
|
|
956
991
|
var _a;
|
|
957
992
|
const [input, setInput] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initialContent);
|
|
@@ -963,6 +998,34 @@ const ChatInput = ({ app, initialContent, placeholder, onSave, onCancel, isEditi
|
|
|
963
998
|
const [dropdownFilter, setDropdownFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('');
|
|
964
999
|
const [additionalContext, setAdditionalContext] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);
|
|
965
1000
|
const [isDropdownFromButton, setIsDropdownFromButton] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
1001
|
+
const handleFileUpload = (file) => {
|
|
1002
|
+
if (file.type.startsWith('image/')) {
|
|
1003
|
+
const reader = new FileReader();
|
|
1004
|
+
reader.onload = () => {
|
|
1005
|
+
const base64String = reader.result;
|
|
1006
|
+
const base64Data = base64String.split(',')[1]; // Remove data URL prefix
|
|
1007
|
+
// Add the uploaded file to the additional context
|
|
1008
|
+
setAdditionalContext(prev => [
|
|
1009
|
+
...prev, {
|
|
1010
|
+
type: file.type || 'image',
|
|
1011
|
+
value: base64Data || '',
|
|
1012
|
+
display: file.name
|
|
1013
|
+
}
|
|
1014
|
+
]);
|
|
1015
|
+
};
|
|
1016
|
+
reader.readAsDataURL(file);
|
|
1017
|
+
}
|
|
1018
|
+
else {
|
|
1019
|
+
// Add the uploaded file to the additional context
|
|
1020
|
+
setAdditionalContext(prev => [
|
|
1021
|
+
...prev, {
|
|
1022
|
+
type: 'file',
|
|
1023
|
+
value: file.name,
|
|
1024
|
+
display: file.name
|
|
1025
|
+
}
|
|
1026
|
+
]);
|
|
1027
|
+
}
|
|
1028
|
+
};
|
|
966
1029
|
// Debounce the active cell ID change to avoid multiple rerenders.
|
|
967
1030
|
// We use this to avoid a flickering screen when the active cell changes.
|
|
968
1031
|
const debouncedSetActiveCellID = (0,_hooks_useDebouncedFunction__WEBPACK_IMPORTED_MODULE_4__.useDebouncedFunction)((newID) => {
|
|
@@ -1106,15 +1169,32 @@ const ChatInput = ({ app, initialContent, placeholder, onSave, onCancel, isEditi
|
|
|
1106
1169
|
setIsDropdownFromButton(false);
|
|
1107
1170
|
};
|
|
1108
1171
|
const mapAdditionalContext = () => {
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1172
|
+
const result = [];
|
|
1173
|
+
additionalContext.forEach(contextItem => {
|
|
1174
|
+
if (contextItem.type === 'db') {
|
|
1175
|
+
result.push({
|
|
1176
|
+
type: contextItem.type,
|
|
1177
|
+
value: contextItem.value
|
|
1178
|
+
});
|
|
1179
|
+
}
|
|
1180
|
+
else if (contextItem.type.startsWith('image/')) {
|
|
1181
|
+
// If the user uploaded an image, we:
|
|
1182
|
+
// 1. Keep the original context item. This is the base64 encoded image
|
|
1183
|
+
// that will be processed in ChatTaskpane.tsx.
|
|
1184
|
+
// 2. Add a second item to the additionalContext array, which will
|
|
1185
|
+
// have the image's filename, and be used in the prompt.
|
|
1186
|
+
result.push(contextItem);
|
|
1187
|
+
const fileName = contextItem.display || contextItem.value.split('/').pop() || 'image';
|
|
1188
|
+
result.push({
|
|
1189
|
+
type: 'img',
|
|
1190
|
+
value: fileName
|
|
1191
|
+
});
|
|
1192
|
+
}
|
|
1193
|
+
else {
|
|
1194
|
+
result.push(contextItem);
|
|
1115
1195
|
}
|
|
1116
|
-
return context;
|
|
1117
1196
|
});
|
|
1197
|
+
return result;
|
|
1118
1198
|
};
|
|
1119
1199
|
// Update the expandedVariables arr when the variable manager changes
|
|
1120
1200
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
@@ -1167,6 +1247,7 @@ const ChatInput = ({ app, initialContent, placeholder, onSave, onCancel, isEditi
|
|
|
1167
1247
|
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: (0,_utils_classNames__WEBPACK_IMPORTED_MODULE_5__.classNames)("chat-input-container") },
|
|
1168
1248
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: 'context-container' },
|
|
1169
1249
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_DatabaseButton__WEBPACK_IMPORTED_MODULE_6__["default"], { app: app }),
|
|
1250
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_AttachFileButton__WEBPACK_IMPORTED_MODULE_7__["default"], { onFileUploaded: handleFileUpload, notebookTracker: notebookTracker }),
|
|
1170
1251
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", { className: "context-button", onClick: () => {
|
|
1171
1252
|
var _a;
|
|
1172
1253
|
setDropdownVisible(true);
|
|
@@ -1174,7 +1255,7 @@ const ChatInput = ({ app, initialContent, placeholder, onSave, onCancel, isEditi
|
|
|
1174
1255
|
setIsDropdownFromButton(true);
|
|
1175
1256
|
(_a = textAreaRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
1176
1257
|
} }, "\uFF20 Add Context"),
|
|
1177
|
-
additionalContext.map((context, index) => (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
|
|
1258
|
+
additionalContext.map((context, index) => (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_SelectedContextContainer__WEBPACK_IMPORTED_MODULE_8__["default"], { key: `${context.type}-${context.value}-${index}`, title: context.display || context.value, type: context.type, onRemove: () => setAdditionalContext(additionalContext.filter((_, i) => i !== index)), notebookTracker: notebookTracker, activeCellID: activeCellID })))),
|
|
1178
1259
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: 'chat-input-text-area-container' },
|
|
1179
1260
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("textarea", { ref: textAreaRef, className: (0,_utils_classNames__WEBPACK_IMPORTED_MODULE_5__.classNames)("message", "message-user", 'chat-input', { "agent-mode": agentModeEnabled }), placeholder: placeholder, value: input, disabled: agentExecutionStatus === 'working' || agentExecutionStatus === 'stopping', onChange: handleInputChange, onKeyDown: (e) => {
|
|
1180
1261
|
// If dropdown is visible, only handle escape to close it
|
|
@@ -1203,7 +1284,7 @@ const ChatInput = ({ app, initialContent, placeholder, onSave, onCancel, isEditi
|
|
|
1203
1284
|
}
|
|
1204
1285
|
}
|
|
1205
1286
|
} }),
|
|
1206
|
-
isDropdownVisible && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
|
|
1287
|
+
isDropdownVisible && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ChatDropdown__WEBPACK_IMPORTED_MODULE_9__["default"], { options: expandedVariables, onSelect: handleOptionSelect, filterText: dropdownFilter, isDropdownFromButton: isDropdownFromButton, onFilterChange: setDropdownFilter, onClose: handleDropdownClose }))),
|
|
1207
1288
|
isEditing &&
|
|
1208
1289
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "message-edit-buttons" },
|
|
1209
1290
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", { onClick: () => onSave(input, undefined, mapAdditionalContext()) }, "Save"),
|
|
@@ -1244,6 +1325,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1244
1325
|
/* harmony import */ var _components_AgentComponents_GetCellOutputToolUI__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../../components/AgentComponents/GetCellOutputToolUI */ "./lib/components/AgentComponents/GetCellOutputToolUI.js");
|
|
1245
1326
|
/* harmony import */ var _components_AgentComponents_AssumptionToolUI__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../../components/AgentComponents/AssumptionToolUI */ "./lib/components/AgentComponents/AssumptionToolUI.js");
|
|
1246
1327
|
/* harmony import */ var _components_SelectedContextContainer__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../../components/SelectedContextContainer */ "./lib/components/SelectedContextContainer.js");
|
|
1328
|
+
/* harmony import */ var _components_AgentComponents_RunAllCellsToolUI__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../../components/AgentComponents/RunAllCellsToolUI */ "./lib/components/AgentComponents/RunAllCellsToolUI.js");
|
|
1247
1329
|
/*
|
|
1248
1330
|
* Copyright (c) Saga Inc.
|
|
1249
1331
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
@@ -1267,6 +1349,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1267
1349
|
|
|
1268
1350
|
|
|
1269
1351
|
|
|
1352
|
+
|
|
1270
1353
|
const ChatMessage = ({ app, message, promptType, agentResponse, messageIndex, mitoAIConnectionError, mitoAIConnectionErrorType, notebookTracker, renderMimeRegistry, isLastAiMessage, isLastMessage, operatingSystem, previewAICode, acceptAICode, rejectAICode, onUpdateMessage, contextManager, codeReviewStatus, setNextSteps, agentModeEnabled, additionalContext, }) => {
|
|
1271
1354
|
const [isEditing, setIsEditing] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
1272
1355
|
if (message.role !== 'user' && message.role !== 'assistant') {
|
|
@@ -1320,7 +1403,7 @@ const ChatMessage = ({ app, message, promptType, agentResponse, messageIndex, mi
|
|
|
1320
1403
|
// An empty code will look like this '```python ```'
|
|
1321
1404
|
if (messagePart.length > 14) {
|
|
1322
1405
|
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null,
|
|
1323
|
-
message.role === 'user' ? (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_UserCodeBlock__WEBPACK_IMPORTED_MODULE_7__["default"], { code: messagePart, renderMimeRegistry: renderMimeRegistry, agentModeEnabled: agentModeEnabled })) : (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_AssistantCodeBlock__WEBPACK_IMPORTED_MODULE_8__["default"], { code: messagePart, codeSummary: (_b = (_a = agentResponse === null || agentResponse === void 0 ? void 0 : agentResponse.cell_update) === null || _a === void 0 ? void 0 : _a.code_summary) !== null && _b !== void 0 ? _b : undefined, isCodeComplete: isCodeComplete, renderMimeRegistry: renderMimeRegistry, previewAICode: previewAICode, acceptAICode: acceptAICode, rejectAICode: rejectAICode, isLastAiMessage: isLastAiMessage, codeReviewStatus: codeReviewStatus, agentModeEnabled: agentModeEnabled })),
|
|
1406
|
+
message.role === 'user' ? (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_UserCodeBlock__WEBPACK_IMPORTED_MODULE_7__["default"], { code: messagePart, renderMimeRegistry: renderMimeRegistry, agentModeEnabled: agentModeEnabled })) : (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_AssistantCodeBlock__WEBPACK_IMPORTED_MODULE_8__["default"], { code: messagePart, codeSummary: (_b = (_a = agentResponse === null || agentResponse === void 0 ? void 0 : agentResponse.cell_update) === null || _a === void 0 ? void 0 : _a.code_summary) !== null && _b !== void 0 ? _b : ((agentResponse === null || agentResponse === void 0 ? void 0 : agentResponse.type) === 'run_all_cells' ? 'Running all cells' : undefined), isCodeComplete: isCodeComplete, renderMimeRegistry: renderMimeRegistry, previewAICode: previewAICode, acceptAICode: acceptAICode, rejectAICode: rejectAICode, isLastAiMessage: isLastAiMessage, codeReviewStatus: codeReviewStatus, agentModeEnabled: agentModeEnabled })),
|
|
1324
1407
|
isLastAiMessage && isCodeComplete && codeReviewStatus === 'chatPreview' &&
|
|
1325
1408
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: 'chat-message-buttons' },
|
|
1326
1409
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_TextAndIconButton__WEBPACK_IMPORTED_MODULE_9__["default"], { onClick: () => { previewAICode(); }, text: 'Overwrite Active Cell', icon: _icons_PlayButtonIcon__WEBPACK_IMPORTED_MODULE_10__["default"], title: 'Write the Ai generated code to the active cell in the jupyter notebook, replacing the current code.', variant: 'gray', width: 'fit-contents' }),
|
|
@@ -1358,7 +1441,9 @@ const ChatMessage = ({ app, message, promptType, agentResponse, messageIndex, mi
|
|
|
1358
1441
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", { className: "message-start-editing-button", onClick: handleEditClick, title: "Edit message" },
|
|
1359
1442
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_Pencil__WEBPACK_IMPORTED_MODULE_17__["default"], null))),
|
|
1360
1443
|
(agentResponse === null || agentResponse === void 0 ? void 0 : agentResponse.type) === 'get_cell_output' &&
|
|
1361
|
-
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_AgentComponents_GetCellOutputToolUI__WEBPACK_IMPORTED_MODULE_18__["default"], null)
|
|
1444
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_AgentComponents_GetCellOutputToolUI__WEBPACK_IMPORTED_MODULE_18__["default"], null),
|
|
1445
|
+
(agentResponse === null || agentResponse === void 0 ? void 0 : agentResponse.type) === 'run_all_cells' && agentModeEnabled &&
|
|
1446
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_AgentComponents_RunAllCellsToolUI__WEBPACK_IMPORTED_MODULE_19__["default"], null)));
|
|
1362
1447
|
};
|
|
1363
1448
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ChatMessage);
|
|
1364
1449
|
|
|
@@ -1916,6 +2001,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1916
2001
|
/* harmony import */ var _utils_scroll__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/scroll */ "./lib/utils/scroll.js");
|
|
1917
2002
|
/* harmony import */ var _utils_strings__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../utils/strings */ "./lib/utils/strings.js");
|
|
1918
2003
|
/* harmony import */ var _utils_waitForNotebookReady__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils/waitForNotebookReady */ "./lib/utils/waitForNotebookReady.js");
|
|
2004
|
+
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils */ "./lib/Extensions/AiChat/utils.js");
|
|
1919
2005
|
/* harmony import */ var _SettingsManager_SettingsManagerPlugin__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../SettingsManager/SettingsManagerPlugin */ "./lib/Extensions/SettingsManager/SettingsManagerPlugin.js");
|
|
1920
2006
|
/* harmony import */ var _CTACarousel__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./CTACarousel */ "./lib/Extensions/AiChat/CTACarousel.js");
|
|
1921
2007
|
/* harmony import */ var _CodeDiffDisplay__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./CodeDiffDisplay */ "./lib/Extensions/AiChat/CodeDiffDisplay.js");
|
|
@@ -1928,7 +2014,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1928
2014
|
/* harmony import */ var _style_button_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../style/button.css */ "./style/button.css");
|
|
1929
2015
|
/* harmony import */ var _style_ChatTaskpane_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../style/ChatTaskpane.css */ "./style/ChatTaskpane.css");
|
|
1930
2016
|
/* harmony import */ var _style_TextButton_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../style/TextButton.css */ "./style/TextButton.css");
|
|
1931
|
-
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils */ "./lib/Extensions/AiChat/utils.js");
|
|
1932
2017
|
/*
|
|
1933
2018
|
* Copyright (c) Saga Inc.
|
|
1934
2019
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
@@ -1966,6 +2051,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1966
2051
|
|
|
1967
2052
|
|
|
1968
2053
|
|
|
2054
|
+
|
|
1969
2055
|
// Internal imports - Chat components
|
|
1970
2056
|
|
|
1971
2057
|
|
|
@@ -1979,7 +2065,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1979
2065
|
|
|
1980
2066
|
|
|
1981
2067
|
|
|
1982
|
-
|
|
1983
2068
|
const AGENT_EXECUTION_DEPTH_LIMIT = 20;
|
|
1984
2069
|
const getDefaultChatHistoryManager = (notebookTracker, contextManager) => {
|
|
1985
2070
|
const chatHistoryManager = new _ChatHistoryManager__WEBPACK_IMPORTED_MODULE_7__.ChatHistoryManager(contextManager, notebookTracker);
|
|
@@ -2366,6 +2451,8 @@ const ChatTaskpane = ({ notebookTracker, renderMimeRegistry, contextManager, app
|
|
|
2366
2451
|
if (messageIndex !== undefined) {
|
|
2367
2452
|
agentExecutionMetadata.index = messageIndex;
|
|
2368
2453
|
}
|
|
2454
|
+
// Extract images from additionalContext and update agentExecutionMetadata
|
|
2455
|
+
additionalContext = (0,_utils__WEBPACK_IMPORTED_MODULE_12__.extractImagesFromContext)(additionalContext, agentExecutionMetadata);
|
|
2369
2456
|
agentExecutionMetadata.base64EncodedActiveCellOutput = await (0,_utils__WEBPACK_IMPORTED_MODULE_12__.getBase64EncodedCellOutput)(notebookTracker, sendCellIDOutput);
|
|
2370
2457
|
setChatHistoryManager(newChatHistoryManager);
|
|
2371
2458
|
setLoadingAIResponse(true);
|
|
@@ -2406,6 +2493,8 @@ const ChatTaskpane = ({ notebookTracker, renderMimeRegistry, contextManager, app
|
|
|
2406
2493
|
if (activeCellOutput !== undefined) {
|
|
2407
2494
|
chatMessageMetadata.base64EncodedActiveCellOutput = activeCellOutput;
|
|
2408
2495
|
}
|
|
2496
|
+
// Extract images from additionalContext and update chatMessageMetadata
|
|
2497
|
+
additionalContext = (0,_utils__WEBPACK_IMPORTED_MODULE_12__.extractImagesFromContext)(additionalContext, chatMessageMetadata);
|
|
2409
2498
|
const completionRequest = {
|
|
2410
2499
|
type: 'chat',
|
|
2411
2500
|
message_id: _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__.UUID.uuid4(),
|
|
@@ -2642,6 +2731,22 @@ const ChatTaskpane = ({ notebookTracker, renderMimeRegistry, contextManager, app
|
|
|
2642
2731
|
// in the next loop iteration
|
|
2643
2732
|
sendCellIDOutput = agentResponse.get_cell_output_cell_id;
|
|
2644
2733
|
}
|
|
2734
|
+
if (agentResponse.type === 'run_all_cells') {
|
|
2735
|
+
const result = await (0,_utils_agentActions__WEBPACK_IMPORTED_MODULE_17__.runAllCells)(app, notebookTracker);
|
|
2736
|
+
// If run_all_cells resulted in an error, handle it through the error fixup process
|
|
2737
|
+
if (!result.success && result.errorMessage && result.errorCellId) {
|
|
2738
|
+
// Set the error cell as active so the error retry logic can work with it
|
|
2739
|
+
(0,_utils_notebook__WEBPACK_IMPORTED_MODULE_13__.setActiveCellByID)(notebookTracker, result.errorCellId);
|
|
2740
|
+
const status = await (0,_utils_agentActions__WEBPACK_IMPORTED_MODULE_17__.retryIfExecutionError)(notebookTracker, app, getDuplicateChatHistoryManager, addAIMessageFromResponseAndUpdateState, sendAgentSmartDebugMessage, previewAICodeToActiveCell, acceptAICode, shouldContinueAgentExecution, finalizeAgentStop, chatHistoryManagerRef);
|
|
2741
|
+
if (status === 'interupted') {
|
|
2742
|
+
break;
|
|
2743
|
+
}
|
|
2744
|
+
if (status === 'failure') {
|
|
2745
|
+
addAIMessageFromResponseAndUpdateState("I apologize, but I encountered an error while running all cells and was unable to fix it after multiple attempts. You may want to check the notebook for errors.", 'agent:execution', chatHistoryManager);
|
|
2746
|
+
break;
|
|
2747
|
+
}
|
|
2748
|
+
}
|
|
2749
|
+
}
|
|
2645
2750
|
}
|
|
2646
2751
|
if (agentExecutionDepth > AGENT_EXECUTION_DEPTH_LIMIT) {
|
|
2647
2752
|
addAIMessageFromResponseAndUpdateState("Since I've been working for a while now, give my work a review and then tell me how to continue.", 'agent:execution', chatHistoryManager);
|
|
@@ -3305,6 +3410,7 @@ const getFirstMessageFromCookie = () => {
|
|
|
3305
3410
|
|
|
3306
3411
|
__webpack_require__.r(__webpack_exports__);
|
|
3307
3412
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3413
|
+
/* harmony export */ setDefaultWindowingMode: () => (/* binding */ setDefaultWindowingMode),
|
|
3308
3414
|
/* harmony export */ setRenameUntitledFileOnSave: () => (/* binding */ setRenameUntitledFileOnSave)
|
|
3309
3415
|
/* harmony export */ });
|
|
3310
3416
|
/*
|
|
@@ -3313,6 +3419,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3313
3419
|
*/
|
|
3314
3420
|
// Document manager plugin ID
|
|
3315
3421
|
const DOCMANAGER_PLUGIN_ID = '@jupyterlab/docmanager-extension:plugin';
|
|
3422
|
+
const NOTEBOOK_PLUGIN_ID = '@jupyterlab/notebook-extension:tracker';
|
|
3316
3423
|
// Set renameUntitledFileOnSave to false when the extension loads
|
|
3317
3424
|
const setRenameUntitledFileOnSave = async (settingRegistry, _documentManager) => {
|
|
3318
3425
|
// Note we don't use the documentManager, but we require it as a parameter to make sure
|
|
@@ -3321,7 +3428,15 @@ const setRenameUntitledFileOnSave = async (settingRegistry, _documentManager) =>
|
|
|
3321
3428
|
await settingRegistry.set(DOCMANAGER_PLUGIN_ID, 'renameUntitledFileOnSave', false);
|
|
3322
3429
|
}
|
|
3323
3430
|
catch (error) {
|
|
3324
|
-
console.error('Failed to set renameUntitledFileOnSave setting:', error);
|
|
3431
|
+
console.error('[mito-ai jupyter settings manager] Failed to set renameUntitledFileOnSave setting:', error);
|
|
3432
|
+
}
|
|
3433
|
+
};
|
|
3434
|
+
const setDefaultWindowingMode = async (settingRegistry) => {
|
|
3435
|
+
try {
|
|
3436
|
+
await settingRegistry.set(NOTEBOOK_PLUGIN_ID, 'windowingMode', 'defer');
|
|
3437
|
+
}
|
|
3438
|
+
catch (error) {
|
|
3439
|
+
console.log('[mito-ai jupyter settings manager] Failed to set windowingMode to defer', error);
|
|
3325
3440
|
}
|
|
3326
3441
|
};
|
|
3327
3442
|
|
|
@@ -3368,6 +3483,7 @@ const IChatTracker = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('m
|
|
|
3368
3483
|
|
|
3369
3484
|
__webpack_require__.r(__webpack_exports__);
|
|
3370
3485
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3486
|
+
/* harmony export */ extractImagesFromContext: () => (/* binding */ extractImagesFromContext),
|
|
3371
3487
|
/* harmony export */ getBase64EncodedCellOutput: () => (/* binding */ getBase64EncodedCellOutput)
|
|
3372
3488
|
/* harmony export */ });
|
|
3373
3489
|
/* harmony import */ var _utils_notebook__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/notebook */ "./lib/utils/notebook.js");
|
|
@@ -3397,6 +3513,18 @@ const getBase64EncodedCellOutput = async (notebookTracker, cellID) => {
|
|
|
3397
3513
|
}
|
|
3398
3514
|
return undefined;
|
|
3399
3515
|
};
|
|
3516
|
+
const extractImagesFromContext = (additionalContext, metadata) => {
|
|
3517
|
+
// Move any (base64 encoded) images from additionalContext into metadata.
|
|
3518
|
+
// The metadata is used on the backend to "attach" the image to the prompt;
|
|
3519
|
+
// plus the base64 encoded image is too big to include directly in the prompt.
|
|
3520
|
+
additionalContext === null || additionalContext === void 0 ? void 0 : additionalContext.map((context) => {
|
|
3521
|
+
if (context.type.startsWith('image/')) {
|
|
3522
|
+
metadata.base64EncodedUploadedImage = context.value;
|
|
3523
|
+
}
|
|
3524
|
+
});
|
|
3525
|
+
// Remove images from the additionalContext array and return the filtered result.
|
|
3526
|
+
return additionalContext === null || additionalContext === void 0 ? void 0 : additionalContext.filter(c => !c.type.startsWith('image/'));
|
|
3527
|
+
};
|
|
3400
3528
|
|
|
3401
3529
|
|
|
3402
3530
|
/***/ }),
|
|
@@ -3539,12 +3667,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3539
3667
|
/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__);
|
|
3540
3668
|
/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/apputils */ "webpack/sharing/consume/default/@jupyterlab/apputils");
|
|
3541
3669
|
/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__);
|
|
3542
|
-
/* harmony import */ var
|
|
3543
|
-
/* harmony import */ var
|
|
3670
|
+
/* harmony import */ var _requirementsUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./requirementsUtils */ "./lib/Extensions/AppBuilder/requirementsUtils.js");
|
|
3671
|
+
/* harmony import */ var _fileUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./fileUtils */ "./lib/Extensions/AppBuilder/fileUtils.js");
|
|
3544
3672
|
/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/coreutils */ "webpack/sharing/consume/default/@lumino/coreutils");
|
|
3545
3673
|
/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_2__);
|
|
3546
|
-
/* harmony import */ var
|
|
3674
|
+
/* harmony import */ var _DeployAppNotification__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./DeployAppNotification */ "./lib/Extensions/AppBuilder/DeployAppNotification.js");
|
|
3547
3675
|
/* harmony import */ var _auth__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./auth */ "./lib/Extensions/AppBuilder/auth.js");
|
|
3676
|
+
/* harmony import */ var _authPopupUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./authPopupUtils */ "./lib/Extensions/AppBuilder/authPopupUtils.js");
|
|
3548
3677
|
/*
|
|
3549
3678
|
* Copyright (c) Saga Inc.
|
|
3550
3679
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
@@ -3556,15 +3685,32 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3556
3685
|
|
|
3557
3686
|
|
|
3558
3687
|
|
|
3688
|
+
|
|
3559
3689
|
/*
|
|
3560
3690
|
This function generates a requirements.txt file that lists the dependencies for the streamlit app
|
|
3561
3691
|
*/
|
|
3562
3692
|
const convertNotebookToStreamlit = async (notebookTracker, appBuilderService) => {
|
|
3563
|
-
|
|
3564
|
-
|
|
3565
|
-
|
|
3693
|
+
let jwtToken = await (0,_auth__WEBPACK_IMPORTED_MODULE_3__.getJWTToken)();
|
|
3694
|
+
if (!jwtToken) {
|
|
3695
|
+
// No token found, show authentication popup
|
|
3566
3696
|
console.log('User not authenticated, redirected to signup');
|
|
3567
|
-
|
|
3697
|
+
try {
|
|
3698
|
+
const user = await (0,_authPopupUtils__WEBPACK_IMPORTED_MODULE_4__.showAuthenticationPopup)();
|
|
3699
|
+
console.log('User authenticated successfully:', user);
|
|
3700
|
+
// Try to get the JWT token again after successful authentication
|
|
3701
|
+
jwtToken = await (0,_auth__WEBPACK_IMPORTED_MODULE_3__.getJWTToken)();
|
|
3702
|
+
if (!jwtToken) {
|
|
3703
|
+
console.error('JWT token still not available after authentication');
|
|
3704
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit('Authentication failed - JWT token not found', 'error', {
|
|
3705
|
+
autoClose: false
|
|
3706
|
+
});
|
|
3707
|
+
return;
|
|
3708
|
+
}
|
|
3709
|
+
}
|
|
3710
|
+
catch (error) {
|
|
3711
|
+
console.log('Authentication cancelled or failed:', error);
|
|
3712
|
+
return; // Exit early if authentication was cancelled
|
|
3713
|
+
}
|
|
3568
3714
|
}
|
|
3569
3715
|
const notebookPanel = notebookTracker.currentWidget;
|
|
3570
3716
|
if (!notebookPanel) {
|
|
@@ -3578,20 +3724,19 @@ const convertNotebookToStreamlit = async (notebookTracker, appBuilderService) =>
|
|
|
3578
3724
|
console.log('Current working directory info:', notebookPanel.context);
|
|
3579
3725
|
// Build the requirements.txt file
|
|
3580
3726
|
console.debug("Building requirements.txt file");
|
|
3581
|
-
const requirementsContent = await (0,
|
|
3727
|
+
const requirementsContent = await (0,_requirementsUtils__WEBPACK_IMPORTED_MODULE_5__.generateRequirementsTxt)(notebookTracker);
|
|
3582
3728
|
// Save the files to the current directory
|
|
3583
|
-
await (0,
|
|
3729
|
+
await (0,_fileUtils__WEBPACK_IMPORTED_MODULE_6__.saveFileWithKernel)(notebookTracker, './requirements.txt', requirementsContent);
|
|
3584
3730
|
// After building the files, we need to send a request to the backend to deploy the app
|
|
3585
3731
|
if (appBuilderService) {
|
|
3586
3732
|
try {
|
|
3587
3733
|
console.log("Sending request to deploy the app");
|
|
3588
|
-
//
|
|
3589
|
-
const jwtToken = (0,_auth__WEBPACK_IMPORTED_MODULE_3__.getJWTToken)();
|
|
3734
|
+
// Use the JWT token that was already obtained or refreshed above
|
|
3590
3735
|
const response = await appBuilderService.client.sendMessage({
|
|
3591
3736
|
type: 'build-app',
|
|
3592
3737
|
message_id: _lumino_coreutils__WEBPACK_IMPORTED_MODULE_2__.UUID.uuid4(),
|
|
3593
3738
|
notebook_path: notebookPath,
|
|
3594
|
-
jwt_token: jwtToken
|
|
3739
|
+
jwt_token: jwtToken
|
|
3595
3740
|
});
|
|
3596
3741
|
if (response.error) {
|
|
3597
3742
|
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit(response.error.title, 'error', {
|
|
@@ -3601,7 +3746,7 @@ const convertNotebookToStreamlit = async (notebookTracker, appBuilderService) =>
|
|
|
3601
3746
|
else {
|
|
3602
3747
|
console.log("App deployment response:", response);
|
|
3603
3748
|
const url = response.url;
|
|
3604
|
-
(0,
|
|
3749
|
+
(0,_DeployAppNotification__WEBPACK_IMPORTED_MODULE_7__.deployAppNotification)(url);
|
|
3605
3750
|
}
|
|
3606
3751
|
}
|
|
3607
3752
|
catch (error) {
|
|
@@ -3615,6 +3760,116 @@ const convertNotebookToStreamlit = async (notebookTracker, appBuilderService) =>
|
|
|
3615
3760
|
};
|
|
3616
3761
|
|
|
3617
3762
|
|
|
3763
|
+
/***/ }),
|
|
3764
|
+
|
|
3765
|
+
/***/ "./lib/Extensions/AppBuilder/auth-popup-deploy.js":
|
|
3766
|
+
/*!********************************************************!*\
|
|
3767
|
+
!*** ./lib/Extensions/AppBuilder/auth-popup-deploy.js ***!
|
|
3768
|
+
\********************************************************/
|
|
3769
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3770
|
+
|
|
3771
|
+
__webpack_require__.r(__webpack_exports__);
|
|
3772
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3773
|
+
/* harmony export */ AuthPopup: () => (/* binding */ AuthPopup)
|
|
3774
|
+
/* harmony export */ });
|
|
3775
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
3776
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
3777
|
+
/* harmony import */ var _aws_amplify_ui_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @aws-amplify/ui-react */ "webpack/sharing/consume/default/@aws-amplify/ui-react/@aws-amplify/ui-react");
|
|
3778
|
+
/* harmony import */ var _aws_amplify_ui_react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_aws_amplify_ui_react__WEBPACK_IMPORTED_MODULE_1__);
|
|
3779
|
+
/* harmony import */ var _aws_amplify_ui_react_styles_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @aws-amplify/ui-react/styles.css */ "./node_modules/@aws-amplify/ui-react/dist/styles.css");
|
|
3780
|
+
/* harmony import */ var _style_ConnectionForm_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../style/ConnectionForm.css */ "./style/ConnectionForm.css");
|
|
3781
|
+
/* harmony import */ var _style_button_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../style/button.css */ "./style/button.css");
|
|
3782
|
+
/* harmony import */ var _style_AuthPopup_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../style/AuthPopup.css */ "./style/AuthPopup.css");
|
|
3783
|
+
/*
|
|
3784
|
+
* Copyright (c) Saga Inc.
|
|
3785
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
3786
|
+
*/
|
|
3787
|
+
// auth-popup.tsx - Simple authentication popup with CSS-based requirements
|
|
3788
|
+
|
|
3789
|
+
|
|
3790
|
+
|
|
3791
|
+
|
|
3792
|
+
|
|
3793
|
+
|
|
3794
|
+
const AuthPopup = ({ isOpen, onClose, onSuccess }) => {
|
|
3795
|
+
// Track if we've already called onSuccess to prevent infinite loops
|
|
3796
|
+
const hasCalledOnSuccess = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(false);
|
|
3797
|
+
// Track if we should show progress bar
|
|
3798
|
+
const [showProgress, setShowProgress] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(false);
|
|
3799
|
+
// Cleanup on unmount
|
|
3800
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(() => {
|
|
3801
|
+
return () => {
|
|
3802
|
+
setShowProgress(false);
|
|
3803
|
+
};
|
|
3804
|
+
}, []);
|
|
3805
|
+
if (!isOpen)
|
|
3806
|
+
return null;
|
|
3807
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "modal-overlay" },
|
|
3808
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "modal-content" },
|
|
3809
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "modal-header" },
|
|
3810
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", null, "Sign In / Sign Up"),
|
|
3811
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", { onClick: onClose, className: "modal-close-button", title: "Close" }, "\u00D7")),
|
|
3812
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_aws_amplify_ui_react__WEBPACK_IMPORTED_MODULE_1__.Authenticator, { loginMechanisms: ['email'], signUpAttributes: ['name', 'email'], formFields: {
|
|
3813
|
+
signUp: {
|
|
3814
|
+
name: {
|
|
3815
|
+
order: 1,
|
|
3816
|
+
placeholder: 'Enter your full name',
|
|
3817
|
+
label: 'Full Name *',
|
|
3818
|
+
required: true
|
|
3819
|
+
},
|
|
3820
|
+
email: {
|
|
3821
|
+
order: 2,
|
|
3822
|
+
placeholder: 'Enter your email address',
|
|
3823
|
+
label: 'Email *'
|
|
3824
|
+
},
|
|
3825
|
+
password: {
|
|
3826
|
+
order: 3,
|
|
3827
|
+
placeholder: 'Enter your password',
|
|
3828
|
+
label: 'Password *',
|
|
3829
|
+
required: true
|
|
3830
|
+
},
|
|
3831
|
+
confirm_password: {
|
|
3832
|
+
order: 4,
|
|
3833
|
+
placeholder: 'Confirm your password',
|
|
3834
|
+
label: 'Confirm Password *'
|
|
3835
|
+
}
|
|
3836
|
+
}
|
|
3837
|
+
} }, ({ user }) => {
|
|
3838
|
+
// Call onSuccess when user is authenticated, but only once and with delay
|
|
3839
|
+
if (user && !hasCalledOnSuccess.current) {
|
|
3840
|
+
// Show the progress bar
|
|
3841
|
+
setShowProgress(true);
|
|
3842
|
+
// Give users time to see the success message before calling onSuccess
|
|
3843
|
+
setTimeout(() => {
|
|
3844
|
+
if (!hasCalledOnSuccess.current) {
|
|
3845
|
+
hasCalledOnSuccess.current = true;
|
|
3846
|
+
onSuccess(user);
|
|
3847
|
+
}
|
|
3848
|
+
}, 3000); // 3 second delay
|
|
3849
|
+
}
|
|
3850
|
+
// If user is signed in, show the welcome message
|
|
3851
|
+
if (user) {
|
|
3852
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "welcome-message-container" },
|
|
3853
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", { className: "welcome-message-title" }, "Welcome to mito!"),
|
|
3854
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", { className: "welcome-message-description" }, "You're all set to deploy your app."),
|
|
3855
|
+
showProgress && (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "progress-bar-container" },
|
|
3856
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "progress-bar-fill" }))),
|
|
3857
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", { className: "progress-bar-timer" }, "Closing automatically in a few seconds...")));
|
|
3858
|
+
}
|
|
3859
|
+
// If user is not signed in, don't render anything here
|
|
3860
|
+
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { style: { display: 'none' } });
|
|
3861
|
+
}),
|
|
3862
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "password-requirements" },
|
|
3863
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "Password Requirements:"),
|
|
3864
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", null,
|
|
3865
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, "At least 8 characters long"),
|
|
3866
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, "Contains at least one uppercase letter"),
|
|
3867
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, "Contains at least one lowercase letter"),
|
|
3868
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, "Contains at least one number"),
|
|
3869
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, "Contains at least one special character"))))));
|
|
3870
|
+
};
|
|
3871
|
+
|
|
3872
|
+
|
|
3618
3873
|
/***/ }),
|
|
3619
3874
|
|
|
3620
3875
|
/***/ "./lib/Extensions/AppBuilder/auth.js":
|
|
@@ -3625,176 +3880,172 @@ const convertNotebookToStreamlit = async (notebookTracker, appBuilderService) =>
|
|
|
3625
3880
|
|
|
3626
3881
|
__webpack_require__.r(__webpack_exports__);
|
|
3627
3882
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3628
|
-
/* harmony export */ checkAuthenticationAndRedirect: () => (/* binding */ checkAuthenticationAndRedirect),
|
|
3629
|
-
/* harmony export */ exchangeCodeForTokens: () => (/* binding */ exchangeCodeForTokens),
|
|
3630
3883
|
/* harmony export */ getAuthHeaders: () => (/* binding */ getAuthHeaders),
|
|
3631
3884
|
/* harmony export */ getJWTToken: () => (/* binding */ getJWTToken),
|
|
3632
|
-
/* harmony export */
|
|
3633
|
-
/* harmony export */ redirectToSignin: () => (/* binding */ redirectToSignin),
|
|
3634
|
-
/* harmony export */ redirectToSignup: () => (/* binding */ redirectToSignup),
|
|
3635
|
-
/* harmony export */ removeJWTToken: () => (/* binding */ removeJWTToken),
|
|
3636
|
-
/* harmony export */ setJWTToken: () => (/* binding */ setJWTToken)
|
|
3885
|
+
/* harmony export */ logoutAndClearJWTTokens: () => (/* binding */ logoutAndClearJWTTokens)
|
|
3637
3886
|
/* harmony export */ });
|
|
3638
|
-
/* harmony import */ var
|
|
3887
|
+
/* harmony import */ var aws_amplify_auth__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! aws-amplify/auth */ "./node_modules/@aws-amplify/core/dist/esm/singleton/apis/fetchAuthSession.mjs");
|
|
3888
|
+
/* harmony import */ var aws_amplify_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! aws-amplify/auth */ "./node_modules/@aws-amplify/auth/dist/esm/providers/cognito/apis/signOut.mjs");
|
|
3889
|
+
/* harmony import */ var _aws_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./aws-config */ "./lib/Extensions/AppBuilder/aws-config.js");
|
|
3639
3890
|
/*
|
|
3640
3891
|
* Copyright (c) Saga Inc.
|
|
3641
3892
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
3642
3893
|
*/
|
|
3643
3894
|
|
|
3644
|
-
|
|
3645
|
-
|
|
3646
|
-
|
|
3647
|
-
const active_domain = domain_dev;
|
|
3648
|
-
const currentUrl = window.location.href;
|
|
3649
|
-
let redirectUrl;
|
|
3650
|
-
// As of now we only support localhost:8888 because we have only allowed this redirect url on AWS conito
|
|
3651
|
-
// We can modify the redirect to include other ports in the future
|
|
3652
|
-
if (currentUrl.includes('localhost')) {
|
|
3653
|
-
redirectUrl = 'http://localhost:8888/lab';
|
|
3654
|
-
}
|
|
3655
|
-
else if (currentUrl.includes('trymito')) {
|
|
3656
|
-
redirectUrl = 'https://launch.trymito.io';
|
|
3657
|
-
}
|
|
3658
|
-
else {
|
|
3659
|
-
redirectUrl = currentUrl;
|
|
3660
|
-
}
|
|
3661
|
-
console.log("currentUrl: ", currentUrl);
|
|
3662
|
-
// AWS Cognito configuration
|
|
3663
|
-
const COGNITO_CONFIG = {
|
|
3664
|
-
SIGNUP_URL: `${active_domain}/signup?client_id=${client_id}&response_type=code&scope=email+openid+profile&redirect_uri=${redirectUrl}`,
|
|
3665
|
-
SIGNIN_URL: `${active_domain}/login?client_id=${client_id}&response_type=code&scope=email+openid+profile&redirect_uri=${redirectUrl}`,
|
|
3666
|
-
JWT_COOKIE_NAME: 'mito-auth-token',
|
|
3667
|
-
JWT_COOKIE_EXPIRY_HOURS: 1
|
|
3668
|
-
};
|
|
3669
|
-
/**
|
|
3670
|
-
* Check if user is authenticated by looking for JWT token in cookies
|
|
3671
|
-
*/
|
|
3672
|
-
const isUserAuthenticated = () => {
|
|
3673
|
-
const token = getJWTToken();
|
|
3674
|
-
return token !== null && token !== undefined && token !== '';
|
|
3675
|
-
};
|
|
3895
|
+
|
|
3896
|
+
// Ensure Amplify is configured before any auth operations
|
|
3897
|
+
(0,_aws_config__WEBPACK_IMPORTED_MODULE_0__.configureAmplify)();
|
|
3676
3898
|
/**
|
|
3677
3899
|
* Get JWT token from cookies
|
|
3678
3900
|
*/
|
|
3679
|
-
const getJWTToken = () => {
|
|
3680
|
-
|
|
3681
|
-
|
|
3682
|
-
|
|
3683
|
-
const
|
|
3684
|
-
return
|
|
3901
|
+
const getJWTToken = async () => {
|
|
3902
|
+
var _a, _b;
|
|
3903
|
+
try {
|
|
3904
|
+
const session = await (0,aws_amplify_auth__WEBPACK_IMPORTED_MODULE_1__.fetchAuthSession)();
|
|
3905
|
+
const accessToken = (_b = (_a = session.tokens) === null || _a === void 0 ? void 0 : _a.accessToken) === null || _b === void 0 ? void 0 : _b.toString();
|
|
3906
|
+
return accessToken || '';
|
|
3685
3907
|
}
|
|
3686
|
-
|
|
3687
|
-
|
|
3688
|
-
|
|
3689
|
-
* Set JWT token as a cookie
|
|
3690
|
-
*/
|
|
3691
|
-
const setJWTToken = (token) => {
|
|
3692
|
-
const date = new Date();
|
|
3693
|
-
date.setTime(date.getTime() + (COGNITO_CONFIG.JWT_COOKIE_EXPIRY_HOURS * 60 * 60 * 1000));
|
|
3694
|
-
const expires = "expires=" + date.toUTCString();
|
|
3695
|
-
// Set cookie for all subdomains of trymito.io (production)
|
|
3696
|
-
document.cookie = `${COGNITO_CONFIG.JWT_COOKIE_NAME}=${token}; ${expires}; path=/; domain=.trymito.io; SameSite=Lax; Secure`;
|
|
3697
|
-
// For localhost development
|
|
3698
|
-
if (window.location.hostname === 'localhost') {
|
|
3699
|
-
document.cookie = `${COGNITO_CONFIG.JWT_COOKIE_NAME}=${token}; ${expires}; path=/`;
|
|
3908
|
+
catch (error) {
|
|
3909
|
+
console.error('Error getting JWT token:', error);
|
|
3910
|
+
return '';
|
|
3700
3911
|
}
|
|
3701
3912
|
};
|
|
3702
3913
|
/**
|
|
3703
|
-
*
|
|
3914
|
+
* Get authentication headers for API requests
|
|
3704
3915
|
*/
|
|
3705
|
-
const
|
|
3706
|
-
|
|
3707
|
-
|
|
3708
|
-
|
|
3709
|
-
|
|
3916
|
+
const getAuthHeaders = async () => {
|
|
3917
|
+
const token = await getJWTToken();
|
|
3918
|
+
if (token) {
|
|
3919
|
+
return {
|
|
3920
|
+
'Authorization': `Bearer ${token}`
|
|
3921
|
+
};
|
|
3922
|
+
}
|
|
3923
|
+
return {};
|
|
3710
3924
|
};
|
|
3711
3925
|
/**
|
|
3712
|
-
*
|
|
3926
|
+
* Logout user and clear all AWS Amplify/Cognito localStorage items
|
|
3713
3927
|
*/
|
|
3714
|
-
const
|
|
3928
|
+
const logoutAndClearJWTTokens = async () => {
|
|
3715
3929
|
try {
|
|
3716
|
-
|
|
3717
|
-
|
|
3718
|
-
|
|
3719
|
-
});
|
|
3720
|
-
if (response.error) {
|
|
3721
|
-
console.error('Failed to exchange code for tokens:', response.error);
|
|
3722
|
-
return false;
|
|
3723
|
-
}
|
|
3724
|
-
if (response.data) {
|
|
3725
|
-
const data = response.data;
|
|
3726
|
-
const { access_token } = data;
|
|
3727
|
-
// Store the access token as the JWT token
|
|
3728
|
-
if (access_token) {
|
|
3729
|
-
setJWTToken(access_token);
|
|
3730
|
-
return true;
|
|
3731
|
-
}
|
|
3732
|
-
}
|
|
3733
|
-
return false;
|
|
3930
|
+
// Sign out from AWS Cognito using Amplify
|
|
3931
|
+
await (0,aws_amplify_auth__WEBPACK_IMPORTED_MODULE_2__.signOut)();
|
|
3932
|
+
console.log('User logged out successfully');
|
|
3734
3933
|
}
|
|
3735
3934
|
catch (error) {
|
|
3736
|
-
console.error('Error
|
|
3737
|
-
|
|
3935
|
+
console.error('Error during logout:', error);
|
|
3936
|
+
throw error;
|
|
3738
3937
|
}
|
|
3739
|
-
|
|
3740
|
-
|
|
3741
|
-
|
|
3742
|
-
|
|
3743
|
-
const
|
|
3744
|
-
|
|
3745
|
-
|
|
3746
|
-
/**
|
|
3747
|
-
* Redirect user to AWS Cognito signin page
|
|
3748
|
-
*/
|
|
3749
|
-
const redirectToSignin = () => {
|
|
3750
|
-
window.location.href = COGNITO_CONFIG.SIGNIN_URL;
|
|
3751
|
-
};
|
|
3752
|
-
/**
|
|
3753
|
-
* Handle authentication check and redirect if needed
|
|
3754
|
-
* Returns true if user is authenticated, false if redirected
|
|
3755
|
-
*/
|
|
3756
|
-
const checkAuthenticationAndRedirect = async () => {
|
|
3757
|
-
if (!isUserAuthenticated()) {
|
|
3758
|
-
// Check if there's a code parameter in the URL (indicating return from Cognito)
|
|
3759
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
3760
|
-
const code = urlParams.get('code');
|
|
3761
|
-
if (code) {
|
|
3762
|
-
// User has returned from Cognito with authorization code
|
|
3763
|
-
console.log('Received authorization code from Cognito:', code);
|
|
3764
|
-
// Exchange the code for JWT tokens
|
|
3765
|
-
const success = await exchangeCodeForTokens(code);
|
|
3766
|
-
if (success) {
|
|
3767
|
-
// Clean up URL
|
|
3768
|
-
const newUrl = window.location.pathname;
|
|
3769
|
-
window.history.replaceState({}, document.title, newUrl);
|
|
3770
|
-
return true;
|
|
3771
|
-
}
|
|
3772
|
-
else {
|
|
3773
|
-
// Failed to exchange code, redirect to signup
|
|
3774
|
-
redirectToSignup();
|
|
3775
|
-
return false;
|
|
3938
|
+
finally {
|
|
3939
|
+
// Remove all keys that start with common Amplify prefixes
|
|
3940
|
+
const keysToRemove = [];
|
|
3941
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
3942
|
+
const key = localStorage.key(i);
|
|
3943
|
+
if (key && (key.startsWith('CognitoIdentityServiceProvider.'))) {
|
|
3944
|
+
keysToRemove.push(key);
|
|
3776
3945
|
}
|
|
3777
3946
|
}
|
|
3778
|
-
|
|
3779
|
-
|
|
3780
|
-
|
|
3781
|
-
|
|
3782
|
-
|
|
3947
|
+
// Remove all identified keys
|
|
3948
|
+
keysToRemove.forEach(key => {
|
|
3949
|
+
localStorage.removeItem(key);
|
|
3950
|
+
});
|
|
3951
|
+
console.log('Auth tokens cleared successfully');
|
|
3783
3952
|
}
|
|
3784
|
-
return true;
|
|
3785
3953
|
};
|
|
3954
|
+
|
|
3955
|
+
|
|
3956
|
+
/***/ }),
|
|
3957
|
+
|
|
3958
|
+
/***/ "./lib/Extensions/AppBuilder/authPopupUtils.js":
|
|
3959
|
+
/*!*****************************************************!*\
|
|
3960
|
+
!*** ./lib/Extensions/AppBuilder/authPopupUtils.js ***!
|
|
3961
|
+
\*****************************************************/
|
|
3962
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3963
|
+
|
|
3964
|
+
__webpack_require__.r(__webpack_exports__);
|
|
3965
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3966
|
+
/* harmony export */ showAuthenticationPopup: () => (/* binding */ showAuthenticationPopup)
|
|
3967
|
+
/* harmony export */ });
|
|
3968
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
3969
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
3970
|
+
/* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom/client */ "./node_modules/react-dom/client.js");
|
|
3971
|
+
/* harmony import */ var _auth_popup_deploy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./auth-popup-deploy */ "./lib/Extensions/AppBuilder/auth-popup-deploy.js");
|
|
3972
|
+
/*
|
|
3973
|
+
* Copyright (c) Saga Inc.
|
|
3974
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
3975
|
+
*/
|
|
3976
|
+
|
|
3977
|
+
|
|
3978
|
+
|
|
3786
3979
|
/**
|
|
3787
|
-
*
|
|
3980
|
+
* Shows an authentication popup and returns a promise that resolves when authentication is successful
|
|
3788
3981
|
*/
|
|
3789
|
-
const
|
|
3790
|
-
|
|
3791
|
-
|
|
3792
|
-
|
|
3793
|
-
|
|
3982
|
+
const showAuthenticationPopup = () => {
|
|
3983
|
+
return new Promise((resolve, reject) => {
|
|
3984
|
+
// Create a container for the popup
|
|
3985
|
+
const popupContainer = document.createElement('div');
|
|
3986
|
+
popupContainer.id = 'auth-popup-container';
|
|
3987
|
+
document.body.appendChild(popupContainer);
|
|
3988
|
+
// Create root for React 18
|
|
3989
|
+
const root = (0,react_dom_client__WEBPACK_IMPORTED_MODULE_1__.createRoot)(popupContainer);
|
|
3990
|
+
const handleSuccess = (user) => {
|
|
3991
|
+
// Clean up the popup
|
|
3992
|
+
root.unmount();
|
|
3993
|
+
document.body.removeChild(popupContainer);
|
|
3994
|
+
resolve(user);
|
|
3794
3995
|
};
|
|
3795
|
-
|
|
3796
|
-
|
|
3996
|
+
const handleClose = () => {
|
|
3997
|
+
// Clean up the popup
|
|
3998
|
+
root.unmount();
|
|
3999
|
+
document.body.removeChild(popupContainer);
|
|
4000
|
+
reject(new Error('Authentication cancelled'));
|
|
4001
|
+
};
|
|
4002
|
+
// Render the AuthPopup
|
|
4003
|
+
root.render(react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_auth_popup_deploy__WEBPACK_IMPORTED_MODULE_2__.AuthPopup, { isOpen: true, onSuccess: handleSuccess, onClose: handleClose }));
|
|
4004
|
+
});
|
|
4005
|
+
};
|
|
4006
|
+
|
|
4007
|
+
|
|
4008
|
+
/***/ }),
|
|
4009
|
+
|
|
4010
|
+
/***/ "./lib/Extensions/AppBuilder/aws-config.js":
|
|
4011
|
+
/*!*************************************************!*\
|
|
4012
|
+
!*** ./lib/Extensions/AppBuilder/aws-config.js ***!
|
|
4013
|
+
\*************************************************/
|
|
4014
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4015
|
+
|
|
4016
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4017
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4018
|
+
/* harmony export */ configureAmplify: () => (/* binding */ configureAmplify)
|
|
4019
|
+
/* harmony export */ });
|
|
4020
|
+
/* harmony import */ var aws_amplify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! aws-amplify */ "webpack/sharing/consume/default/aws-amplify/aws-amplify?b926");
|
|
4021
|
+
/* harmony import */ var aws_amplify__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(aws_amplify__WEBPACK_IMPORTED_MODULE_0__);
|
|
4022
|
+
/*
|
|
4023
|
+
* Copyright (c) Saga Inc.
|
|
4024
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
4025
|
+
*/
|
|
4026
|
+
|
|
4027
|
+
const userPoolIdDev = 'us-east-1_Kk0f9mOfx';
|
|
4028
|
+
const userPoolClientIdDev = '6ara3u3l8sss738hrhbq1qtiqf';
|
|
4029
|
+
// TODO: modify to prod user ID and client ID on after creating teh cognito resources in prod
|
|
4030
|
+
const userPoolId = userPoolIdDev;
|
|
4031
|
+
const userPoolClientId = userPoolClientIdDev;
|
|
4032
|
+
const configureAmplify = () => {
|
|
4033
|
+
aws_amplify__WEBPACK_IMPORTED_MODULE_0__.Amplify.configure({
|
|
4034
|
+
Auth: {
|
|
4035
|
+
Cognito: {
|
|
4036
|
+
userPoolId: userPoolId,
|
|
4037
|
+
userPoolClientId: userPoolClientId,
|
|
4038
|
+
loginWith: {
|
|
4039
|
+
email: true,
|
|
4040
|
+
username: false,
|
|
4041
|
+
}
|
|
4042
|
+
},
|
|
4043
|
+
}
|
|
4044
|
+
});
|
|
4045
|
+
console.log('Amplify configuration loaded successfully');
|
|
3797
4046
|
};
|
|
4047
|
+
// Configure immediately when this module is imported
|
|
4048
|
+
configureAmplify();
|
|
3798
4049
|
|
|
3799
4050
|
|
|
3800
4051
|
/***/ }),
|
|
@@ -4009,73 +4260,379 @@ with tempfile.TemporaryDirectory() as temp_dir:
|
|
|
4009
4260
|
|
|
4010
4261
|
/***/ }),
|
|
4011
4262
|
|
|
4012
|
-
/***/ "./lib/Extensions/
|
|
4013
|
-
|
|
4014
|
-
!*** ./lib/Extensions/
|
|
4015
|
-
|
|
4263
|
+
/***/ "./lib/Extensions/AppManager/AppsList.js":
|
|
4264
|
+
/*!***********************************************!*\
|
|
4265
|
+
!*** ./lib/Extensions/AppManager/AppsList.js ***!
|
|
4266
|
+
\***********************************************/
|
|
4016
4267
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4017
4268
|
|
|
4018
4269
|
__webpack_require__.r(__webpack_exports__);
|
|
4019
4270
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4020
|
-
/* harmony export */
|
|
4021
|
-
/* harmony export */ ContextManagerPlugin: () => (/* binding */ ContextManagerPlugin),
|
|
4022
|
-
/* harmony export */ IContextManager: () => (/* binding */ IContextManager),
|
|
4023
|
-
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
4271
|
+
/* harmony export */ AppsList: () => (/* binding */ AppsList)
|
|
4024
4272
|
/* harmony export */ });
|
|
4025
|
-
/* harmony import */ var
|
|
4026
|
-
/* harmony import */ var
|
|
4027
|
-
/* harmony import */ var
|
|
4028
|
-
/* harmony import */ var
|
|
4029
|
-
/* harmony import */ var
|
|
4030
|
-
/* harmony import */ var
|
|
4273
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
4274
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
4275
|
+
/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/ui-components */ "webpack/sharing/consume/default/@jupyterlab/ui-components");
|
|
4276
|
+
/* harmony import */ var _jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__);
|
|
4277
|
+
/* harmony import */ var _AppBuilder_auth__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../AppBuilder/auth */ "./lib/Extensions/AppBuilder/auth.js");
|
|
4278
|
+
/* harmony import */ var _ListAppsAPI__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ListAppsAPI */ "./lib/Extensions/AppManager/ListAppsAPI.js");
|
|
4279
|
+
/* harmony import */ var _style_AppsList_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../style/AppsList.css */ "./style/AppsList.css");
|
|
4031
4280
|
/*
|
|
4032
4281
|
* Copyright (c) Saga Inc.
|
|
4033
4282
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
4034
4283
|
*/
|
|
4284
|
+
//app-list.tsx
|
|
4035
4285
|
|
|
4036
4286
|
|
|
4037
4287
|
|
|
4038
4288
|
|
|
4039
|
-
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
const
|
|
4043
|
-
|
|
4044
|
-
|
|
4045
|
-
|
|
4046
|
-
|
|
4047
|
-
|
|
4048
|
-
|
|
4049
|
-
|
|
4050
|
-
|
|
4051
|
-
|
|
4052
|
-
|
|
4053
|
-
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
get files() {
|
|
4057
|
-
return this._files;
|
|
4058
|
-
}
|
|
4059
|
-
setFiles(newFiles) {
|
|
4060
|
-
this._files = newFiles;
|
|
4061
|
-
}
|
|
4062
|
-
// Setup kernel execution listener
|
|
4063
|
-
setupKernelListener(app, notebookTracker) {
|
|
4064
|
-
notebookTracker.currentChanged.connect(async (tracker, notebookPanel) => {
|
|
4065
|
-
if (!notebookPanel) {
|
|
4066
|
-
return;
|
|
4067
|
-
}
|
|
4068
|
-
// Listen for kernel refresh events
|
|
4069
|
-
notebookPanel.context.sessionContext.statusChanged.connect((sender, status) => {
|
|
4070
|
-
if (status === 'restarting') {
|
|
4071
|
-
this.setVariables([]); // Clear variables on kernel refresh
|
|
4289
|
+
|
|
4290
|
+
const AppsList = ({ appManagerService }) => {
|
|
4291
|
+
const [apps, setApps] = react__WEBPACK_IMPORTED_MODULE_0__.useState([]);
|
|
4292
|
+
const [loading, setLoading] = react__WEBPACK_IMPORTED_MODULE_0__.useState(true);
|
|
4293
|
+
const [error, setError] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);
|
|
4294
|
+
// Fetch apps on component mount
|
|
4295
|
+
react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
|
|
4296
|
+
const loadApps = async () => {
|
|
4297
|
+
try {
|
|
4298
|
+
console.log('[AppsList] Starting to load apps...');
|
|
4299
|
+
setLoading(true);
|
|
4300
|
+
setError(null);
|
|
4301
|
+
console.log('[AppsList] Calling fetchUserApps...');
|
|
4302
|
+
const response = await (0,_ListAppsAPI__WEBPACK_IMPORTED_MODULE_3__.fetchUserApps)(appManagerService);
|
|
4303
|
+
console.log('[AppsList] fetchUserApps response:', response);
|
|
4304
|
+
if ((0,_ListAppsAPI__WEBPACK_IMPORTED_MODULE_3__.isGetAppsSuccess)(response)) {
|
|
4305
|
+
setApps(response.apps);
|
|
4072
4306
|
}
|
|
4073
|
-
|
|
4074
|
-
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
4307
|
+
else {
|
|
4308
|
+
setError(response.errorMessage || 'Failed to load apps');
|
|
4309
|
+
setApps([]);
|
|
4310
|
+
}
|
|
4311
|
+
}
|
|
4312
|
+
catch (err) {
|
|
4313
|
+
console.error('[AppsList] Error loading apps:', err);
|
|
4314
|
+
setError(err instanceof Error ? err.message : 'An unexpected error occurred');
|
|
4315
|
+
setApps([]);
|
|
4316
|
+
}
|
|
4317
|
+
finally {
|
|
4318
|
+
setLoading(false);
|
|
4319
|
+
}
|
|
4320
|
+
};
|
|
4321
|
+
console.log('[AppsList] Component mounted, calling loadApps...');
|
|
4322
|
+
void loadApps();
|
|
4323
|
+
}, [appManagerService]);
|
|
4324
|
+
const refreshApps = async () => {
|
|
4325
|
+
const response = await (0,_ListAppsAPI__WEBPACK_IMPORTED_MODULE_3__.fetchUserApps)(appManagerService);
|
|
4326
|
+
if ((0,_ListAppsAPI__WEBPACK_IMPORTED_MODULE_3__.isGetAppsSuccess)(response)) {
|
|
4327
|
+
setApps(response.apps);
|
|
4328
|
+
setError(null);
|
|
4329
|
+
}
|
|
4330
|
+
else {
|
|
4331
|
+
setError(response.errorMessage || 'Failed to refresh apps');
|
|
4332
|
+
}
|
|
4333
|
+
};
|
|
4334
|
+
const copyToClipboard = async (url, appName) => {
|
|
4335
|
+
try {
|
|
4336
|
+
await navigator.clipboard.writeText(url);
|
|
4337
|
+
console.log(`Copied URL for ${appName}: ${url}`);
|
|
4338
|
+
}
|
|
4339
|
+
catch (err) {
|
|
4340
|
+
console.error('Failed to copy URL:', err);
|
|
4341
|
+
// Fallback for older browsers
|
|
4342
|
+
const textArea = document.createElement('textarea');
|
|
4343
|
+
textArea.value = url;
|
|
4344
|
+
document.body.appendChild(textArea);
|
|
4345
|
+
textArea.select();
|
|
4346
|
+
document.execCommand('copy');
|
|
4347
|
+
document.body.removeChild(textArea);
|
|
4348
|
+
}
|
|
4349
|
+
};
|
|
4350
|
+
const getStatusColor = (status) => {
|
|
4351
|
+
switch (status) {
|
|
4352
|
+
case 'active':
|
|
4353
|
+
return '#4caf50';
|
|
4354
|
+
case 'error':
|
|
4355
|
+
return '#f44336';
|
|
4356
|
+
case 'deploying':
|
|
4357
|
+
return '#2196f3';
|
|
4358
|
+
case 'shut down':
|
|
4359
|
+
return '#9e9e9e';
|
|
4360
|
+
default:
|
|
4361
|
+
return '#9e9e9e';
|
|
4362
|
+
}
|
|
4363
|
+
};
|
|
4364
|
+
const getStatusText = (status) => {
|
|
4365
|
+
return status.charAt(0).toUpperCase() + status.slice(1);
|
|
4366
|
+
};
|
|
4367
|
+
return (react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "apps-list-container" },
|
|
4368
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "apps-list-header" },
|
|
4369
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("h3", { className: "apps-list-title" }, "Your Apps"),
|
|
4370
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "apps-list-actions" },
|
|
4371
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("button", { onClick: refreshApps, disabled: loading, className: "apps-list-button", title: "Refresh apps" }, loading ? 'Loading...' : 'Refresh'),
|
|
4372
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("button", { onClick: () => {
|
|
4373
|
+
console.log('Logout clicked');
|
|
4374
|
+
void (0,_AppBuilder_auth__WEBPACK_IMPORTED_MODULE_4__.logoutAndClearJWTTokens)();
|
|
4375
|
+
}, className: "apps-list-button", title: "Logout" }, "Logout"))),
|
|
4376
|
+
loading ? (react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "apps-list-loading" }, "Loading apps...")) : error ? (react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "apps-list-error" },
|
|
4377
|
+
"Error: ",
|
|
4378
|
+
error,
|
|
4379
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "apps-list-error-actions" },
|
|
4380
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("button", { onClick: refreshApps, className: "apps-list-button primary" }, "Try Again")))) : apps.length === 0 ? (react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "apps-list-empty" }, "No apps deployed yet")) : (react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", null, apps.map((app) => (react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { key: app.name, className: "app-item" },
|
|
4381
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "app-item-header" },
|
|
4382
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "app-item-content" },
|
|
4383
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "app-item-name" }, app.name),
|
|
4384
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "app-item-status-container" },
|
|
4385
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", { className: "app-item-status-indicator", style: { backgroundColor: getStatusColor(app.status) } }),
|
|
4386
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", { className: "app-item-status-text" }, getStatusText(app.status))),
|
|
4387
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "app-item-created" },
|
|
4388
|
+
"Created: ",
|
|
4389
|
+
app.createdAt))),
|
|
4390
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "app-item-url-container" },
|
|
4391
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", { className: "app-item-url" }, app.url),
|
|
4392
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement("button", { onClick: () => copyToClipboard(app.url, app.name), className: "app-item-copy-button", title: `Copy URL for ${app.name}` },
|
|
4393
|
+
react__WEBPACK_IMPORTED_MODULE_0__.createElement(_jupyterlab_ui_components__WEBPACK_IMPORTED_MODULE_1__.copyIcon.react, { width: "14px", height: "14px", fill: "var(--jp-ui-font-color2)" }))))))))));
|
|
4394
|
+
};
|
|
4395
|
+
|
|
4396
|
+
|
|
4397
|
+
/***/ }),
|
|
4398
|
+
|
|
4399
|
+
/***/ "./lib/Extensions/AppManager/ListAppsAPI.js":
|
|
4400
|
+
/*!**************************************************!*\
|
|
4401
|
+
!*** ./lib/Extensions/AppManager/ListAppsAPI.js ***!
|
|
4402
|
+
\**************************************************/
|
|
4403
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4404
|
+
|
|
4405
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4406
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4407
|
+
/* harmony export */ fetchUserApps: () => (/* binding */ fetchUserApps),
|
|
4408
|
+
/* harmony export */ isGetAppsFailure: () => (/* binding */ isGetAppsFailure),
|
|
4409
|
+
/* harmony export */ isGetAppsSuccess: () => (/* binding */ isGetAppsSuccess)
|
|
4410
|
+
/* harmony export */ });
|
|
4411
|
+
/* harmony import */ var _AppBuilder_auth__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../AppBuilder/auth */ "./lib/Extensions/AppBuilder/auth.js");
|
|
4412
|
+
/*
|
|
4413
|
+
* Copyright (c) Saga Inc.
|
|
4414
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
4415
|
+
*/
|
|
4416
|
+
|
|
4417
|
+
// Type guards for working with the discriminated union
|
|
4418
|
+
const isGetAppsSuccess = (response) => {
|
|
4419
|
+
return response.success === true;
|
|
4420
|
+
};
|
|
4421
|
+
const isGetAppsFailure = (response) => {
|
|
4422
|
+
return response.success === false;
|
|
4423
|
+
};
|
|
4424
|
+
const fetchUserApps = async (appManagerService) => {
|
|
4425
|
+
try {
|
|
4426
|
+
const jwtToken = await (0,_AppBuilder_auth__WEBPACK_IMPORTED_MODULE_0__.getJWTToken)();
|
|
4427
|
+
if (!jwtToken) {
|
|
4428
|
+
return {
|
|
4429
|
+
success: false,
|
|
4430
|
+
errorMessage: 'User not authenticated'
|
|
4431
|
+
};
|
|
4432
|
+
}
|
|
4433
|
+
// Create the request message with proper typing
|
|
4434
|
+
const request = {
|
|
4435
|
+
type: 'manage-app',
|
|
4436
|
+
jwt_token: jwtToken
|
|
4437
|
+
};
|
|
4438
|
+
// Using websocket service with correct message structure and proper typing
|
|
4439
|
+
const response = await appManagerService.client.sendMessage(request);
|
|
4440
|
+
// Check if the response indicates an error
|
|
4441
|
+
if (response.error) {
|
|
4442
|
+
return {
|
|
4443
|
+
success: false,
|
|
4444
|
+
errorMessage: response.error.title || 'Failed to fetch apps'
|
|
4445
|
+
};
|
|
4446
|
+
}
|
|
4447
|
+
// Transform the response to match expected format
|
|
4448
|
+
const apps = (response.apps || []).map(app => {
|
|
4449
|
+
var _a;
|
|
4450
|
+
return ({
|
|
4451
|
+
name: app.app_name,
|
|
4452
|
+
url: app.url,
|
|
4453
|
+
status: (_a = app.status) === null || _a === void 0 ? void 0 : _a.toLowerCase(),
|
|
4454
|
+
createdAt: app.created_at
|
|
4455
|
+
});
|
|
4456
|
+
});
|
|
4457
|
+
return {
|
|
4458
|
+
success: true,
|
|
4459
|
+
apps
|
|
4460
|
+
};
|
|
4461
|
+
}
|
|
4462
|
+
catch (error) {
|
|
4463
|
+
console.error('Error fetching apps:', error);
|
|
4464
|
+
return {
|
|
4465
|
+
success: false,
|
|
4466
|
+
errorMessage: error instanceof Error ? error.message : 'Failed to fetch apps'
|
|
4467
|
+
};
|
|
4468
|
+
}
|
|
4469
|
+
};
|
|
4470
|
+
|
|
4471
|
+
|
|
4472
|
+
/***/ }),
|
|
4473
|
+
|
|
4474
|
+
/***/ "./lib/Extensions/AppManager/ManageAppsPlugin.js":
|
|
4475
|
+
/*!*******************************************************!*\
|
|
4476
|
+
!*** ./lib/Extensions/AppManager/ManageAppsPlugin.js ***!
|
|
4477
|
+
\*******************************************************/
|
|
4478
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4479
|
+
|
|
4480
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4481
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4482
|
+
/* harmony export */ IAppManagerService: () => (/* binding */ IAppManagerService),
|
|
4483
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
4484
|
+
/* harmony export */ });
|
|
4485
|
+
/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/apputils */ "webpack/sharing/consume/default/@jupyterlab/apputils");
|
|
4486
|
+
/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__);
|
|
4487
|
+
/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/coreutils */ "webpack/sharing/consume/default/@lumino/coreutils");
|
|
4488
|
+
/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__);
|
|
4489
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
4490
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
|
|
4491
|
+
/* harmony import */ var _AppsList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./AppsList */ "./lib/Extensions/AppManager/AppsList.js");
|
|
4492
|
+
/* harmony import */ var _websockets_appManager_appManagerWebsocketClient__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../websockets/appManager/appManagerWebsocketClient */ "./lib/websockets/appManager/appManagerWebsocketClient.js");
|
|
4493
|
+
/* harmony import */ var _restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../restAPI/RestAPI */ "./lib/restAPI/RestAPI.js");
|
|
4494
|
+
/*
|
|
4495
|
+
* Copyright (c) Saga Inc.
|
|
4496
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
4497
|
+
*/
|
|
4498
|
+
|
|
4499
|
+
|
|
4500
|
+
|
|
4501
|
+
|
|
4502
|
+
|
|
4503
|
+
|
|
4504
|
+
/**
|
|
4505
|
+
* The token for the AppManager service.
|
|
4506
|
+
*/
|
|
4507
|
+
const IAppManagerService = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__.Token('mito-ai:IAppManagerService', 'Token for the AppManager service that provides access to the websocket client');
|
|
4508
|
+
/**
|
|
4509
|
+
* Implementation of the AppManager service.
|
|
4510
|
+
*/
|
|
4511
|
+
class AppManagerService {
|
|
4512
|
+
/**
|
|
4513
|
+
* Create a new AppManager service.
|
|
4514
|
+
*/
|
|
4515
|
+
constructor(app) {
|
|
4516
|
+
// Create the websocket client with the app's server settings
|
|
4517
|
+
this.client = new _websockets_appManager_appManagerWebsocketClient__WEBPACK_IMPORTED_MODULE_3__.AppManagerWebsocketClient({
|
|
4518
|
+
serverSettings: app.serviceManager.serverSettings
|
|
4519
|
+
});
|
|
4520
|
+
// Initialize the websocket connection in the background
|
|
4521
|
+
void this.client.initialize().catch(error => {
|
|
4522
|
+
console.error('Failed to initialize AppManager websocket client:', error);
|
|
4523
|
+
// We don't need to throw the error since the client will attempt to reconnect when used
|
|
4524
|
+
});
|
|
4525
|
+
}
|
|
4526
|
+
}
|
|
4527
|
+
class ManageAppsWidget extends _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.ReactWidget {
|
|
4528
|
+
constructor(appManagerService) {
|
|
4529
|
+
super();
|
|
4530
|
+
this._appManagerService = appManagerService;
|
|
4531
|
+
}
|
|
4532
|
+
render() {
|
|
4533
|
+
// Pass the appManagerService as a prop to the AppsList component
|
|
4534
|
+
return react__WEBPACK_IMPORTED_MODULE_2__.createElement(_AppsList__WEBPACK_IMPORTED_MODULE_4__.AppsList, {
|
|
4535
|
+
appManagerService: this._appManagerService
|
|
4536
|
+
});
|
|
4537
|
+
}
|
|
4538
|
+
}
|
|
4539
|
+
const ManageAppsPlugin = {
|
|
4540
|
+
id: 'manage-apps:manage-app-plugin',
|
|
4541
|
+
autoStart: true,
|
|
4542
|
+
provides: IAppManagerService,
|
|
4543
|
+
activate: (app) => {
|
|
4544
|
+
console.log('ManageApps plugin activated');
|
|
4545
|
+
// Create the AppManager service
|
|
4546
|
+
const appManagerService = new AppManagerService(app);
|
|
4547
|
+
// Create and add the ManageApps widget
|
|
4548
|
+
const widget = new ManageAppsWidget(appManagerService);
|
|
4549
|
+
widget.title.label = 'Manage apps';
|
|
4550
|
+
widget.id = 'manage-apps-widget';
|
|
4551
|
+
// For now, only show the manage apps widget if beta mode is enabled
|
|
4552
|
+
(0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_5__.getSetting)('beta_mode').then(value => {
|
|
4553
|
+
if (value === 'true') {
|
|
4554
|
+
// Add to right sidebar
|
|
4555
|
+
app.shell.add(widget, 'right');
|
|
4556
|
+
}
|
|
4557
|
+
}).catch(error => {
|
|
4558
|
+
console.error('Error checking beta mode:', error);
|
|
4559
|
+
});
|
|
4560
|
+
// Return the service so other plugins can use it
|
|
4561
|
+
return appManagerService;
|
|
4562
|
+
}
|
|
4563
|
+
};
|
|
4564
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ManageAppsPlugin);
|
|
4565
|
+
|
|
4566
|
+
|
|
4567
|
+
/***/ }),
|
|
4568
|
+
|
|
4569
|
+
/***/ "./lib/Extensions/ContextManager/ContextManagerPlugin.js":
|
|
4570
|
+
/*!***************************************************************!*\
|
|
4571
|
+
!*** ./lib/Extensions/ContextManager/ContextManagerPlugin.js ***!
|
|
4572
|
+
\***************************************************************/
|
|
4573
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4574
|
+
|
|
4575
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4576
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4577
|
+
/* harmony export */ ContextManager: () => (/* binding */ ContextManager),
|
|
4578
|
+
/* harmony export */ ContextManagerPlugin: () => (/* binding */ ContextManagerPlugin),
|
|
4579
|
+
/* harmony export */ IContextManager: () => (/* binding */ IContextManager),
|
|
4580
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
4581
|
+
/* harmony export */ });
|
|
4582
|
+
/* harmony import */ var _jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/notebook */ "webpack/sharing/consume/default/@jupyterlab/notebook");
|
|
4583
|
+
/* harmony import */ var _jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_notebook__WEBPACK_IMPORTED_MODULE_0__);
|
|
4584
|
+
/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/coreutils */ "webpack/sharing/consume/default/@lumino/coreutils");
|
|
4585
|
+
/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__);
|
|
4586
|
+
/* harmony import */ var _VariableInspector__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./VariableInspector */ "./lib/Extensions/ContextManager/VariableInspector.js");
|
|
4587
|
+
/* harmony import */ var _FileInspector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FileInspector */ "./lib/Extensions/ContextManager/FileInspector.js");
|
|
4588
|
+
/*
|
|
4589
|
+
* Copyright (c) Saga Inc.
|
|
4590
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
4591
|
+
*/
|
|
4592
|
+
|
|
4593
|
+
|
|
4594
|
+
|
|
4595
|
+
|
|
4596
|
+
// The provides field in JupyterLab's JupyterFrontEndPlugin expects a token
|
|
4597
|
+
// that can be used to look up the service in the dependency injection system,
|
|
4598
|
+
// so we define a new token for the ContextManager
|
|
4599
|
+
const IContextManager = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__.Token('mito-ai:IContextManager');
|
|
4600
|
+
class ContextManager {
|
|
4601
|
+
constructor(app, notebookTracker) {
|
|
4602
|
+
this._variables = [];
|
|
4603
|
+
this._files = [];
|
|
4604
|
+
// Setup the kernel listener to update context as kernel messages are received
|
|
4605
|
+
this.setupKernelListener(app, notebookTracker);
|
|
4606
|
+
}
|
|
4607
|
+
get variables() {
|
|
4608
|
+
return this._variables;
|
|
4609
|
+
}
|
|
4610
|
+
setVariables(newVars) {
|
|
4611
|
+
this._variables = newVars;
|
|
4612
|
+
}
|
|
4613
|
+
get files() {
|
|
4614
|
+
return this._files;
|
|
4615
|
+
}
|
|
4616
|
+
setFiles(newFiles) {
|
|
4617
|
+
this._files = newFiles;
|
|
4618
|
+
}
|
|
4619
|
+
// Setup kernel execution listener
|
|
4620
|
+
setupKernelListener(app, notebookTracker) {
|
|
4621
|
+
notebookTracker.currentChanged.connect(async (tracker, notebookPanel) => {
|
|
4622
|
+
if (!notebookPanel) {
|
|
4623
|
+
return;
|
|
4624
|
+
}
|
|
4625
|
+
// Listen for kernel refresh events
|
|
4626
|
+
notebookPanel.context.sessionContext.statusChanged.connect((sender, status) => {
|
|
4627
|
+
if (status === 'restarting') {
|
|
4628
|
+
this.setVariables([]); // Clear variables on kernel refresh
|
|
4629
|
+
}
|
|
4630
|
+
});
|
|
4631
|
+
// As soon as the notebook is opened, fetch the files so we don't have to wait for the first message.
|
|
4632
|
+
await (0,_FileInspector__WEBPACK_IMPORTED_MODULE_2__.fetchFilesAndUpdateState)(app, notebookTracker, this.setFiles.bind(this));
|
|
4633
|
+
// Listen to kernel messages
|
|
4634
|
+
notebookPanel.context.sessionContext.iopubMessage.connect(async (sender, msg) => {
|
|
4635
|
+
// Watch for execute_input messages, which indicate is a request to execute code.
|
|
4079
4636
|
// Previosuly, we watched for 'execute_result' messages, but these are only returned
|
|
4080
4637
|
// from the kernel when a code cell prints a value to the output cell, which is not what we want.
|
|
4081
4638
|
// TODO: Check if there is a race condition where we might end up fetching variables before the
|
|
@@ -4269,10 +4826,17 @@ def structured_globals():
|
|
|
4269
4826
|
|
|
4270
4827
|
else:
|
|
4271
4828
|
|
|
4829
|
+
max_value_length = 4000 # This is roughly 1000 tokens in the LLM
|
|
4830
|
+
truncated_value = str(repr(v)) # Force to string
|
|
4831
|
+
|
|
4832
|
+
if len(truncated_value) > max_value_length:
|
|
4833
|
+
split_length = max_value_length // 2
|
|
4834
|
+
truncated_value = truncated_value[:split_length] + '... <middle of value truncated> ...' + truncated_value[-split_length:]
|
|
4835
|
+
|
|
4272
4836
|
new_variable = {
|
|
4273
4837
|
"variable_name": k,
|
|
4274
4838
|
"type": str(type(v)),
|
|
4275
|
-
"value":
|
|
4839
|
+
"value": truncated_value
|
|
4276
4840
|
}
|
|
4277
4841
|
|
|
4278
4842
|
try:
|
|
@@ -6648,11 +7212,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6648
7212
|
/* harmony import */ var _utils_classNames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/classNames */ "./lib/utils/classNames.js");
|
|
6649
7213
|
/* harmony import */ var _utils_strings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/strings */ "./lib/utils/strings.js");
|
|
6650
7214
|
/* harmony import */ var _Extensions_AiChat_ChatMessage_PythonCode__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../Extensions/AiChat/ChatMessage/PythonCode */ "./lib/Extensions/AiChat/ChatMessage/PythonCode.js");
|
|
6651
|
-
/* harmony import */ var
|
|
7215
|
+
/* harmony import */ var _Extensions_AiChat_ChatMessage_AssistantCodeBlock__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../Extensions/AiChat/ChatMessage/AssistantCodeBlock */ "./lib/Extensions/AiChat/ChatMessage/AssistantCodeBlock.js");
|
|
6652
7216
|
/* harmony import */ var _icons_AlertIcon__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../icons/AlertIcon */ "./lib/icons/AlertIcon.js");
|
|
6653
7217
|
/* harmony import */ var _AgentComponentHeader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./AgentComponentHeader */ "./lib/components/AgentComponents/AgentComponentHeader.js");
|
|
6654
7218
|
/* harmony import */ var _style_ErrorFixupToolUI_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../style/ErrorFixupToolUI.css */ "./style/ErrorFixupToolUI.css");
|
|
6655
7219
|
/* harmony import */ var _style_AgentComponentHeader_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../style/AgentComponentHeader.css */ "./style/AgentComponentHeader.css");
|
|
7220
|
+
/* harmony import */ var _RunAllCellsToolUI__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./RunAllCellsToolUI */ "./lib/components/AgentComponents/RunAllCellsToolUI.js");
|
|
6656
7221
|
/*
|
|
6657
7222
|
* Copyright (c) Saga Inc.
|
|
6658
7223
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
@@ -6666,6 +7231,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6666
7231
|
|
|
6667
7232
|
|
|
6668
7233
|
|
|
7234
|
+
|
|
6669
7235
|
const parsePythonErrorType = (content) => {
|
|
6670
7236
|
if (!content)
|
|
6671
7237
|
return 'Error';
|
|
@@ -6698,12 +7264,15 @@ const GroupedErrorsAndFixes = ({ messages, renderMimeRegistry, }) => {
|
|
|
6698
7264
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "error-fixup-header" },
|
|
6699
7265
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", null, "Fixing an error")),
|
|
6700
7266
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "error-fixup-messages-container" }, messages.map((messageItem, index) => {
|
|
6701
|
-
var _a, _b, _c;
|
|
7267
|
+
var _a, _b, _c, _d;
|
|
6702
7268
|
const isUserMessage = messageItem.message.role === 'user';
|
|
6703
7269
|
if (isUserMessage) {
|
|
6704
7270
|
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ErrorDetectedBlock, { key: `error-${index}`, errorMessage: messageItem.message, renderMimeRegistry: renderMimeRegistry }));
|
|
6705
7271
|
}
|
|
6706
|
-
|
|
7272
|
+
if (((_a = messageItem.agentResponse) === null || _a === void 0 ? void 0 : _a.type) === 'run_all_cells') {
|
|
7273
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_RunAllCellsToolUI__WEBPACK_IMPORTED_MODULE_8__["default"], { key: `run-all-cells-${index}`, inErrorFixup: true }));
|
|
7274
|
+
}
|
|
7275
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Extensions_AiChat_ChatMessage_AssistantCodeBlock__WEBPACK_IMPORTED_MODULE_9__["default"], { key: `assistant-${index}`, code: messageItem.message.content, codeSummary: (_d = (_c = (_b = messageItem.agentResponse) === null || _b === void 0 ? void 0 : _b.cell_update) === null || _c === void 0 ? void 0 : _c.code_summary) !== null && _d !== void 0 ? _d : 'Fixing error', isCodeComplete: true, renderMimeRegistry: renderMimeRegistry, previewAICode: () => { }, acceptAICode: () => { }, rejectAICode: () => { }, isLastAiMessage: false, codeReviewStatus: "chatPreview", agentModeEnabled: true, isErrorFixup: true }));
|
|
6707
7276
|
}))));
|
|
6708
7277
|
};
|
|
6709
7278
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (GroupedErrorsAndFixes);
|
|
@@ -6724,7 +7293,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6724
7293
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
6725
7294
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
6726
7295
|
/* harmony import */ var _icons_MagnifyingGlassIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../icons/MagnifyingGlassIcon */ "./lib/icons/MagnifyingGlassIcon.js");
|
|
6727
|
-
/* harmony import */ var
|
|
7296
|
+
/* harmony import */ var _style_AgentToolUIComponent_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../style/AgentToolUIComponent.css */ "./style/AgentToolUIComponent.css");
|
|
6728
7297
|
/*
|
|
6729
7298
|
* Copyright (c) Saga Inc.
|
|
6730
7299
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
@@ -6733,8 +7302,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6733
7302
|
|
|
6734
7303
|
|
|
6735
7304
|
const GetCellOutputToolUI = () => {
|
|
6736
|
-
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "
|
|
6737
|
-
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "
|
|
7305
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "agent-tool-ui-container" },
|
|
7306
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "agent-tool-ui-content" },
|
|
6738
7307
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_MagnifyingGlassIcon__WEBPACK_IMPORTED_MODULE_2__["default"], null),
|
|
6739
7308
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", null, "Taking a look at the cell output"))));
|
|
6740
7309
|
};
|
|
@@ -6743,10 +7312,10 @@ const GetCellOutputToolUI = () => {
|
|
|
6743
7312
|
|
|
6744
7313
|
/***/ }),
|
|
6745
7314
|
|
|
6746
|
-
/***/ "./lib/components/
|
|
6747
|
-
|
|
6748
|
-
!*** ./lib/components/
|
|
6749
|
-
|
|
7315
|
+
/***/ "./lib/components/AgentComponents/RunAllCellsToolUI.js":
|
|
7316
|
+
/*!*************************************************************!*\
|
|
7317
|
+
!*** ./lib/components/AgentComponents/RunAllCellsToolUI.js ***!
|
|
7318
|
+
\*************************************************************/
|
|
6750
7319
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6751
7320
|
|
|
6752
7321
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -6755,10 +7324,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6755
7324
|
/* harmony export */ });
|
|
6756
7325
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
6757
7326
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
6758
|
-
/* harmony import */ var
|
|
6759
|
-
/* harmony import */ var
|
|
6760
|
-
/* harmony import */ var
|
|
6761
|
-
/* harmony import */ var _restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../restAPI/RestAPI */ "./lib/restAPI/RestAPI.js");
|
|
7327
|
+
/* harmony import */ var _icons_PlayButtonIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../icons/PlayButtonIcon */ "./lib/icons/PlayButtonIcon.js");
|
|
7328
|
+
/* harmony import */ var _style_AgentToolUIComponent_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../style/AgentToolUIComponent.css */ "./style/AgentToolUIComponent.css");
|
|
7329
|
+
/* harmony import */ var _utils_classNames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/classNames */ "./lib/utils/classNames.js");
|
|
6762
7330
|
/*
|
|
6763
7331
|
* Copyright (c) Saga Inc.
|
|
6764
7332
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
@@ -6767,42 +7335,23 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6767
7335
|
|
|
6768
7336
|
|
|
6769
7337
|
|
|
6770
|
-
|
|
6771
|
-
|
|
6772
|
-
|
|
6773
|
-
|
|
6774
|
-
|
|
6775
|
-
|
|
6776
|
-
|
|
6777
|
-
setDatabaseConnections(databaseConnections);
|
|
6778
|
-
};
|
|
6779
|
-
// Fetch database connections
|
|
6780
|
-
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
6781
|
-
void fetchDatabaseConnections();
|
|
6782
|
-
}, []);
|
|
6783
|
-
// Determine notification dot type based on connections
|
|
6784
|
-
const getNotificationDotType = () => {
|
|
6785
|
-
if (!isIconVisible) {
|
|
6786
|
-
return null;
|
|
6787
|
-
}
|
|
6788
|
-
return Object.keys(databaseConnections).length > 0 ? 'success' : 'warning';
|
|
6789
|
-
};
|
|
6790
|
-
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_IconButton__WEBPACK_IMPORTED_MODULE_2__["default"], { icon: react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_DatabaseOutlineIcon__WEBPACK_IMPORTED_MODULE_3__["default"], null), title: 'Add Database', onClick: () => {
|
|
6791
|
-
void app.commands.execute(_Extensions_SettingsManager_SettingsManagerPlugin__WEBPACK_IMPORTED_MODULE_4__.COMMAND_MITO_AI_SETTINGS);
|
|
6792
|
-
setIsIconVisible(false);
|
|
6793
|
-
}, notificationDotType: getNotificationDotType(), className: 'icon-button-hover', style: {
|
|
6794
|
-
height: 'var(--chat-context-button-height)'
|
|
6795
|
-
} }));
|
|
7338
|
+
const RunAllCellsToolUI = ({ inErrorFixup }) => {
|
|
7339
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: (0,_utils_classNames__WEBPACK_IMPORTED_MODULE_2__.classNames)('agent-tool-ui-container', {
|
|
7340
|
+
'agent-tool-ui-error-fixup': inErrorFixup,
|
|
7341
|
+
}) },
|
|
7342
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "agent-tool-ui-content" },
|
|
7343
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_PlayButtonIcon__WEBPACK_IMPORTED_MODULE_3__["default"], null),
|
|
7344
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", null, "Running all cells"))));
|
|
6796
7345
|
};
|
|
6797
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (
|
|
7346
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RunAllCellsToolUI);
|
|
6798
7347
|
|
|
6799
7348
|
|
|
6800
7349
|
/***/ }),
|
|
6801
7350
|
|
|
6802
|
-
/***/ "./lib/components/
|
|
6803
|
-
|
|
6804
|
-
!*** ./lib/components/
|
|
6805
|
-
|
|
7351
|
+
/***/ "./lib/components/AttachFileButton.js":
|
|
7352
|
+
/*!********************************************!*\
|
|
7353
|
+
!*** ./lib/components/AttachFileButton.js ***!
|
|
7354
|
+
\********************************************/
|
|
6806
7355
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6807
7356
|
|
|
6808
7357
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -6811,28 +7360,289 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6811
7360
|
/* harmony export */ });
|
|
6812
7361
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
6813
7362
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
6814
|
-
/* harmony import */ var
|
|
7363
|
+
/* harmony import */ var _IconButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./IconButton */ "./lib/components/IconButton.js");
|
|
7364
|
+
/* harmony import */ var _icons_PaperClipIcon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/PaperClipIcon */ "./lib/icons/PaperClipIcon.js");
|
|
7365
|
+
/* harmony import */ var _restAPI_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../restAPI/utils */ "./lib/restAPI/utils.js");
|
|
7366
|
+
/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/apputils */ "webpack/sharing/consume/default/@jupyterlab/apputils");
|
|
7367
|
+
/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__);
|
|
6815
7368
|
/*
|
|
6816
7369
|
* Copyright (c) Saga Inc.
|
|
6817
7370
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
6818
7371
|
*/
|
|
6819
7372
|
|
|
6820
7373
|
|
|
6821
|
-
|
|
6822
|
-
|
|
6823
|
-
|
|
6824
|
-
|
|
6825
|
-
|
|
6826
|
-
|
|
6827
|
-
|
|
6828
|
-
|
|
6829
|
-
|
|
6830
|
-
|
|
6831
|
-
|
|
6832
|
-
|
|
6833
|
-
|
|
6834
|
-
|
|
6835
|
-
|
|
7374
|
+
|
|
7375
|
+
|
|
7376
|
+
|
|
7377
|
+
// Constants for file handling
|
|
7378
|
+
const CHUNKED_UPLOAD_SIZE_CUTOFF = 25 * 1024 * 1024; // 25MB cutoff for chunked uploads
|
|
7379
|
+
const CHUNK_SIZE = 10 * 1024 * 1024; // 10MB chunks
|
|
7380
|
+
const AttachFileButton = ({ onFileUploaded, notebookTracker }) => {
|
|
7381
|
+
const fileInputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
|
|
7382
|
+
const [isUploading, setIsUploading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
7383
|
+
// Helper function to get notebook directory from notebook path
|
|
7384
|
+
const getNotebookDirectory = (notebookPath) => {
|
|
7385
|
+
const lastSlashIndex = notebookPath.lastIndexOf('/');
|
|
7386
|
+
if (lastSlashIndex === -1) {
|
|
7387
|
+
// No directory, just filename (root directory)
|
|
7388
|
+
return '.';
|
|
7389
|
+
}
|
|
7390
|
+
return notebookPath.substring(0, lastSlashIndex);
|
|
7391
|
+
};
|
|
7392
|
+
const handleClick = () => {
|
|
7393
|
+
var _a;
|
|
7394
|
+
// Don't allow clicks if uploading
|
|
7395
|
+
if (isUploading)
|
|
7396
|
+
return;
|
|
7397
|
+
// Trigger the hidden file input
|
|
7398
|
+
(_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click();
|
|
7399
|
+
};
|
|
7400
|
+
const handleFileSelect = async (event) => {
|
|
7401
|
+
const files = event.target.files;
|
|
7402
|
+
if (!files || files.length === 0)
|
|
7403
|
+
return;
|
|
7404
|
+
const file = files[0];
|
|
7405
|
+
if (!file)
|
|
7406
|
+
return;
|
|
7407
|
+
// Don't allow new uploads if already uploading
|
|
7408
|
+
if (isUploading)
|
|
7409
|
+
return;
|
|
7410
|
+
setIsUploading(true);
|
|
7411
|
+
try {
|
|
7412
|
+
// Check file size and handle accordingly
|
|
7413
|
+
if (file.size > CHUNKED_UPLOAD_SIZE_CUTOFF) {
|
|
7414
|
+
console.log(`File ${file.name} is larger than 25MB (${(file.size / (1024 * 1024)).toFixed(2)}MB). Splitting into chunks...`);
|
|
7415
|
+
await handleLargeFile(file);
|
|
7416
|
+
}
|
|
7417
|
+
else {
|
|
7418
|
+
// Upload file directly for files <= 25MB
|
|
7419
|
+
await uploadFile(file);
|
|
7420
|
+
}
|
|
7421
|
+
}
|
|
7422
|
+
catch (error) {
|
|
7423
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit(`Upload failed: ${error}`, "error", {
|
|
7424
|
+
autoClose: 5 * 1000 // 5 seconds
|
|
7425
|
+
});
|
|
7426
|
+
console.error('Error during file upload:', error);
|
|
7427
|
+
}
|
|
7428
|
+
finally {
|
|
7429
|
+
setIsUploading(false);
|
|
7430
|
+
// Clear the file input
|
|
7431
|
+
if (fileInputRef.current) {
|
|
7432
|
+
fileInputRef.current.value = '';
|
|
7433
|
+
}
|
|
7434
|
+
}
|
|
7435
|
+
};
|
|
7436
|
+
const handleLargeFile = async (file) => {
|
|
7437
|
+
const totalChunks = Math.ceil(file.size / CHUNK_SIZE);
|
|
7438
|
+
console.log(`Splitting file into ${totalChunks} chunks of ${(CHUNK_SIZE / (1024 * 1024)).toFixed(2)}MB each`);
|
|
7439
|
+
// Get notebook directory path
|
|
7440
|
+
const notebookPanel = notebookTracker.currentWidget;
|
|
7441
|
+
if (!notebookPanel) {
|
|
7442
|
+
console.error('No notebook is currently active');
|
|
7443
|
+
throw new Error('No notebook is currently active');
|
|
7444
|
+
}
|
|
7445
|
+
const notebookPath = notebookPanel.context.path;
|
|
7446
|
+
const notebookDir = getNotebookDirectory(notebookPath);
|
|
7447
|
+
for (let chunkIndex = 0; chunkIndex < totalChunks; chunkIndex++) {
|
|
7448
|
+
const start = chunkIndex * CHUNK_SIZE;
|
|
7449
|
+
const end = Math.min(start + CHUNK_SIZE, file.size);
|
|
7450
|
+
const chunk = file.slice(start, end);
|
|
7451
|
+
console.log(`Uploading chunk ${chunkIndex + 1}/${totalChunks}:`, {
|
|
7452
|
+
chunkNumber: chunkIndex + 1,
|
|
7453
|
+
totalChunks: totalChunks,
|
|
7454
|
+
chunkSize: chunk.size,
|
|
7455
|
+
chunkSizeMB: (chunk.size / (1024 * 1024)).toFixed(2),
|
|
7456
|
+
startByte: start,
|
|
7457
|
+
endByte: end,
|
|
7458
|
+
fileName: file.name,
|
|
7459
|
+
originalFileSize: file.size,
|
|
7460
|
+
originalFileSizeMB: (file.size / (1024 * 1024)).toFixed(2)
|
|
7461
|
+
});
|
|
7462
|
+
// Upload chunk to backend
|
|
7463
|
+
const success = await uploadChunk(chunk, file.name, chunkIndex + 1, totalChunks, notebookDir);
|
|
7464
|
+
if (!success) {
|
|
7465
|
+
console.error(`Failed to upload chunk ${chunkIndex + 1}`);
|
|
7466
|
+
throw new Error(`Failed to upload chunk ${chunkIndex + 1}`);
|
|
7467
|
+
}
|
|
7468
|
+
}
|
|
7469
|
+
console.log(`Successfully uploaded all ${totalChunks} chunks for file: ${file.name}`);
|
|
7470
|
+
// Notify the parent component that the file was uploaded
|
|
7471
|
+
onFileUploaded(file);
|
|
7472
|
+
};
|
|
7473
|
+
const uploadChunk = async (chunk, filename, chunkNumber, totalChunks, notebookDir) => {
|
|
7474
|
+
try {
|
|
7475
|
+
// Create FormData for chunk upload
|
|
7476
|
+
const formData = new FormData();
|
|
7477
|
+
formData.append('file', chunk, filename);
|
|
7478
|
+
formData.append('chunk_number', chunkNumber.toString());
|
|
7479
|
+
formData.append('total_chunks', totalChunks.toString());
|
|
7480
|
+
formData.append('notebook_dir', notebookDir);
|
|
7481
|
+
// Upload chunk to backend
|
|
7482
|
+
const resp = await (0,_restAPI_utils__WEBPACK_IMPORTED_MODULE_2__.requestAPI)('upload', {
|
|
7483
|
+
method: 'POST',
|
|
7484
|
+
body: formData
|
|
7485
|
+
});
|
|
7486
|
+
if (resp.error) {
|
|
7487
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit(`Upload failed: ${resp.error.message}`, "error", {
|
|
7488
|
+
autoClose: 5 * 1000 // 5 seconds
|
|
7489
|
+
});
|
|
7490
|
+
console.error(`Chunk ${chunkNumber} upload failed:`, resp.error.message);
|
|
7491
|
+
return false;
|
|
7492
|
+
}
|
|
7493
|
+
else if (resp.data) {
|
|
7494
|
+
if (resp.data.chunk_complete) {
|
|
7495
|
+
console.log(`All chunks uploaded successfully. File reconstructed: ${resp.data.filename}`);
|
|
7496
|
+
}
|
|
7497
|
+
else if (resp.data.chunk_received) {
|
|
7498
|
+
console.log(`Chunk ${resp.data.chunk_number}/${resp.data.total_chunks} uploaded successfully`);
|
|
7499
|
+
}
|
|
7500
|
+
return true;
|
|
7501
|
+
}
|
|
7502
|
+
return false;
|
|
7503
|
+
}
|
|
7504
|
+
catch (error) {
|
|
7505
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit(`Upload failed: ${error}`, "error", {
|
|
7506
|
+
autoClose: 5 * 1000 // 5 seconds
|
|
7507
|
+
});
|
|
7508
|
+
console.error(`Error uploading chunk ${chunkNumber}:`, error);
|
|
7509
|
+
return false;
|
|
7510
|
+
}
|
|
7511
|
+
};
|
|
7512
|
+
const uploadFile = async (file) => {
|
|
7513
|
+
// Get notebook directory path
|
|
7514
|
+
const notebookPanel = notebookTracker.currentWidget;
|
|
7515
|
+
if (!notebookPanel) {
|
|
7516
|
+
console.error('No notebook is currently active');
|
|
7517
|
+
throw new Error('No notebook is currently active');
|
|
7518
|
+
}
|
|
7519
|
+
const notebookPath = notebookPanel.context.path;
|
|
7520
|
+
const notebookDir = getNotebookDirectory(notebookPath);
|
|
7521
|
+
// Create FormData for file upload
|
|
7522
|
+
const formData = new FormData();
|
|
7523
|
+
formData.append('file', file);
|
|
7524
|
+
formData.append('notebook_dir', notebookDir);
|
|
7525
|
+
// Upload file to backend using FormData
|
|
7526
|
+
const resp = await (0,_restAPI_utils__WEBPACK_IMPORTED_MODULE_2__.requestAPI)('upload', {
|
|
7527
|
+
method: 'POST',
|
|
7528
|
+
body: formData
|
|
7529
|
+
});
|
|
7530
|
+
if (resp.error) {
|
|
7531
|
+
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit(`Upload failed: ${resp.error.message}`, "error", {
|
|
7532
|
+
autoClose: 5 * 1000 // 5 seconds
|
|
7533
|
+
});
|
|
7534
|
+
console.error('Upload failed:', resp.error.message);
|
|
7535
|
+
throw new Error(resp.error.message);
|
|
7536
|
+
}
|
|
7537
|
+
else if (resp.data) {
|
|
7538
|
+
console.log('File uploaded successfully:', resp.data);
|
|
7539
|
+
// Notify the parent component that the file was uploaded,
|
|
7540
|
+
// which will update the context manager.
|
|
7541
|
+
onFileUploaded(file);
|
|
7542
|
+
}
|
|
7543
|
+
};
|
|
7544
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { style: { position: 'relative' } },
|
|
7545
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", { ref: fileInputRef, type: "file", style: { display: 'none' }, onChange: handleFileSelect, accept: "*" }),
|
|
7546
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_IconButton__WEBPACK_IMPORTED_MODULE_3__["default"], { icon: react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_PaperClipIcon__WEBPACK_IMPORTED_MODULE_4__["default"], null), title: isUploading ? 'Uploading...' : 'Attach File', onClick: handleClick, className: 'icon-button-hover', disabled: isUploading, style: {
|
|
7547
|
+
opacity: isUploading ? 0.5 : 1,
|
|
7548
|
+
cursor: isUploading ? 'not-allowed' : 'pointer'
|
|
7549
|
+
} })));
|
|
7550
|
+
};
|
|
7551
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AttachFileButton);
|
|
7552
|
+
|
|
7553
|
+
|
|
7554
|
+
/***/ }),
|
|
7555
|
+
|
|
7556
|
+
/***/ "./lib/components/DatabaseButton.js":
|
|
7557
|
+
/*!******************************************!*\
|
|
7558
|
+
!*** ./lib/components/DatabaseButton.js ***!
|
|
7559
|
+
\******************************************/
|
|
7560
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7561
|
+
|
|
7562
|
+
__webpack_require__.r(__webpack_exports__);
|
|
7563
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
7564
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
7565
|
+
/* harmony export */ });
|
|
7566
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
7567
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
7568
|
+
/* harmony import */ var _IconButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./IconButton */ "./lib/components/IconButton.js");
|
|
7569
|
+
/* harmony import */ var _icons_DatabaseOutlineIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/DatabaseOutlineIcon */ "./lib/icons/DatabaseOutlineIcon.js");
|
|
7570
|
+
/* harmony import */ var _Extensions_SettingsManager_SettingsManagerPlugin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Extensions/SettingsManager/SettingsManagerPlugin */ "./lib/Extensions/SettingsManager/SettingsManagerPlugin.js");
|
|
7571
|
+
/* harmony import */ var _restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../restAPI/RestAPI */ "./lib/restAPI/RestAPI.js");
|
|
7572
|
+
/*
|
|
7573
|
+
* Copyright (c) Saga Inc.
|
|
7574
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
7575
|
+
*/
|
|
7576
|
+
|
|
7577
|
+
|
|
7578
|
+
|
|
7579
|
+
|
|
7580
|
+
|
|
7581
|
+
const DatabaseButton = ({ app }) => {
|
|
7582
|
+
const [databaseConnections, setDatabaseConnections] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});
|
|
7583
|
+
const [isIconVisible, setIsIconVisible] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);
|
|
7584
|
+
// Fetch database connections
|
|
7585
|
+
const fetchDatabaseConnections = async () => {
|
|
7586
|
+
const databaseConnections = await (0,_restAPI_RestAPI__WEBPACK_IMPORTED_MODULE_1__.getDatabaseConnections)();
|
|
7587
|
+
setDatabaseConnections(databaseConnections);
|
|
7588
|
+
};
|
|
7589
|
+
// Fetch database connections
|
|
7590
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
7591
|
+
void fetchDatabaseConnections();
|
|
7592
|
+
}, []);
|
|
7593
|
+
// Determine notification dot type based on connections
|
|
7594
|
+
const getNotificationDotType = () => {
|
|
7595
|
+
if (!isIconVisible) {
|
|
7596
|
+
return null;
|
|
7597
|
+
}
|
|
7598
|
+
return Object.keys(databaseConnections).length > 0 ? 'success' : 'warning';
|
|
7599
|
+
};
|
|
7600
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_IconButton__WEBPACK_IMPORTED_MODULE_2__["default"], { icon: react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_DatabaseOutlineIcon__WEBPACK_IMPORTED_MODULE_3__["default"], null), title: 'Add Database', onClick: () => {
|
|
7601
|
+
void app.commands.execute(_Extensions_SettingsManager_SettingsManagerPlugin__WEBPACK_IMPORTED_MODULE_4__.COMMAND_MITO_AI_SETTINGS);
|
|
7602
|
+
setIsIconVisible(false);
|
|
7603
|
+
}, notificationDotType: getNotificationDotType(), className: 'icon-button-hover', style: {
|
|
7604
|
+
height: 'var(--chat-context-button-height)'
|
|
7605
|
+
} }));
|
|
7606
|
+
};
|
|
7607
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DatabaseButton);
|
|
7608
|
+
|
|
7609
|
+
|
|
7610
|
+
/***/ }),
|
|
7611
|
+
|
|
7612
|
+
/***/ "./lib/components/DropdownMenu.js":
|
|
7613
|
+
/*!****************************************!*\
|
|
7614
|
+
!*** ./lib/components/DropdownMenu.js ***!
|
|
7615
|
+
\****************************************/
|
|
7616
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7617
|
+
|
|
7618
|
+
__webpack_require__.r(__webpack_exports__);
|
|
7619
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
7620
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
7621
|
+
/* harmony export */ });
|
|
7622
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
7623
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
7624
|
+
/* harmony import */ var _style_DropdownMenu_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../style/DropdownMenu.css */ "./style/DropdownMenu.css");
|
|
7625
|
+
/*
|
|
7626
|
+
* Copyright (c) Saga Inc.
|
|
7627
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
7628
|
+
*/
|
|
7629
|
+
|
|
7630
|
+
|
|
7631
|
+
const DropdownMenu = ({ trigger, items, className = '', alignment = 'left', }) => {
|
|
7632
|
+
const [isOpen, setIsOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
7633
|
+
const dropdownRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
|
|
7634
|
+
// Close dropdown when clicking outside
|
|
7635
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
7636
|
+
const handleClickOutside = (event) => {
|
|
7637
|
+
if (dropdownRef.current &&
|
|
7638
|
+
!dropdownRef.current.contains(event.target)) {
|
|
7639
|
+
setIsOpen(false);
|
|
7640
|
+
}
|
|
7641
|
+
};
|
|
7642
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
7643
|
+
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
7644
|
+
}, []);
|
|
7645
|
+
// Handle the main click (primary action)
|
|
6836
7646
|
const handlePrimaryClick = (onClick, disabled) => {
|
|
6837
7647
|
if (disabled)
|
|
6838
7648
|
return;
|
|
@@ -6888,8 +7698,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6888
7698
|
|
|
6889
7699
|
|
|
6890
7700
|
|
|
6891
|
-
const IconButton = ({ icon, onClick, title, style, notificationDotType = null, className }) => {
|
|
6892
|
-
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", { className: (0,_utils_classNames__WEBPACK_IMPORTED_MODULE_3__.classNames)("icon-button", className), onClick: onClick, title: title, style: style },
|
|
7701
|
+
const IconButton = ({ icon, onClick, title, style, notificationDotType = null, className, disabled = false }) => {
|
|
7702
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", { className: (0,_utils_classNames__WEBPACK_IMPORTED_MODULE_3__.classNames)("icon-button", className), onClick: onClick, title: title, style: style, disabled: disabled },
|
|
6893
7703
|
icon,
|
|
6894
7704
|
notificationDotType && react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: `notification-dot notification-dot-${notificationDotType}` })));
|
|
6895
7705
|
};
|
|
@@ -7155,9 +7965,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7155
7965
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
7156
7966
|
/* harmony import */ var _style_SelectedContextContainer_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../style/SelectedContextContainer.css */ "./style/SelectedContextContainer.css");
|
|
7157
7967
|
/* harmony import */ var _icons_RuleIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/RuleIcon */ "./lib/icons/RuleIcon.js");
|
|
7158
|
-
/* harmony import */ var
|
|
7159
|
-
/* harmony import */ var
|
|
7160
|
-
/* harmony import */ var
|
|
7968
|
+
/* harmony import */ var _icons_CodeIcon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/CodeIcon */ "./lib/icons/CodeIcon.js");
|
|
7969
|
+
/* harmony import */ var _icons_DatabaseIcon__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/DatabaseIcon */ "./lib/icons/DatabaseIcon.js");
|
|
7970
|
+
/* harmony import */ var _icons_PhotoIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/PhotoIcon */ "./lib/icons/PhotoIcon.js");
|
|
7971
|
+
/* harmony import */ var _utils_notebook__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/notebook */ "./lib/utils/notebook.js");
|
|
7161
7972
|
/*
|
|
7162
7973
|
* Copyright (c) Saga Inc.
|
|
7163
7974
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
@@ -7168,22 +7979,24 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7168
7979
|
|
|
7169
7980
|
|
|
7170
7981
|
|
|
7982
|
+
|
|
7171
7983
|
const SelectedContextContainer = ({ title, type, onRemove, onClick, notebookTracker, activeCellID }) => {
|
|
7172
7984
|
const [isHovered, setIsHovered] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
7173
7985
|
let icon = react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_RuleIcon__WEBPACK_IMPORTED_MODULE_2__["default"], null);
|
|
7174
|
-
|
|
7175
|
-
|
|
7176
|
-
|
|
7177
|
-
|
|
7178
|
-
|
|
7179
|
-
|
|
7180
|
-
|
|
7181
|
-
|
|
7182
|
-
|
|
7183
|
-
|
|
7184
|
-
|
|
7185
|
-
|
|
7186
|
-
|
|
7986
|
+
if (type.startsWith('image/')) {
|
|
7987
|
+
icon = react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_PhotoIcon__WEBPACK_IMPORTED_MODULE_3__["default"], null);
|
|
7988
|
+
}
|
|
7989
|
+
else if (type === 'rule') {
|
|
7990
|
+
icon = react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_RuleIcon__WEBPACK_IMPORTED_MODULE_2__["default"], null);
|
|
7991
|
+
}
|
|
7992
|
+
else if (type === 'variable') {
|
|
7993
|
+
icon = react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_CodeIcon__WEBPACK_IMPORTED_MODULE_4__["default"], null);
|
|
7994
|
+
}
|
|
7995
|
+
else if (type === 'db') {
|
|
7996
|
+
icon = react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_DatabaseIcon__WEBPACK_IMPORTED_MODULE_5__["default"], null);
|
|
7997
|
+
}
|
|
7998
|
+
else if (type === 'active_cell') {
|
|
7999
|
+
icon = react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_CodeIcon__WEBPACK_IMPORTED_MODULE_4__["default"], null);
|
|
7187
8000
|
}
|
|
7188
8001
|
const handleClick = () => {
|
|
7189
8002
|
var _a;
|
|
@@ -7191,13 +8004,13 @@ const SelectedContextContainer = ({ title, type, onRemove, onClick, notebookTrac
|
|
|
7191
8004
|
// Handle active cell context click
|
|
7192
8005
|
if (notebookTracker && activeCellID) {
|
|
7193
8006
|
// Find the cell
|
|
7194
|
-
const cell = (0,
|
|
8007
|
+
const cell = (0,_utils_notebook__WEBPACK_IMPORTED_MODULE_6__.getCellByID)(notebookTracker, activeCellID);
|
|
7195
8008
|
if (cell) {
|
|
7196
8009
|
// Scroll to the cell
|
|
7197
8010
|
void ((_a = notebookTracker.currentWidget) === null || _a === void 0 ? void 0 : _a.content.scrollToCell(cell, 'center'));
|
|
7198
8011
|
// Highlight the cell
|
|
7199
8012
|
setTimeout(() => {
|
|
7200
|
-
(0,
|
|
8013
|
+
(0,_utils_notebook__WEBPACK_IMPORTED_MODULE_6__.highlightCodeCell)(notebookTracker, activeCellID);
|
|
7201
8014
|
}, 500);
|
|
7202
8015
|
}
|
|
7203
8016
|
}
|
|
@@ -7715,6 +8528,31 @@ const NucleausIcon = ({ height = 20, width = 20, }) => (react__WEBPACK_IMPORTED_
|
|
|
7715
8528
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (NucleausIcon);
|
|
7716
8529
|
|
|
7717
8530
|
|
|
8531
|
+
/***/ }),
|
|
8532
|
+
|
|
8533
|
+
/***/ "./lib/icons/PaperClipIcon.js":
|
|
8534
|
+
/*!************************************!*\
|
|
8535
|
+
!*** ./lib/icons/PaperClipIcon.js ***!
|
|
8536
|
+
\************************************/
|
|
8537
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8538
|
+
|
|
8539
|
+
__webpack_require__.r(__webpack_exports__);
|
|
8540
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
8541
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
8542
|
+
/* harmony export */ });
|
|
8543
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
8544
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
8545
|
+
/*
|
|
8546
|
+
* Copyright (c) Saga Inc.
|
|
8547
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
8548
|
+
*/
|
|
8549
|
+
|
|
8550
|
+
const PaperClipIcon = () => (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("svg", { width: "14", height: "14", viewBox: "0 0 72 86", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
8551
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("g", { fill: "currentColor" },
|
|
8552
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", { d: "M70.363 44.59C68.6013 43.258 66.0935 43.6017 64.7575 45.3634L46.4995 69.4724C39.73 78.4099 27.0735 80.6284 17.6905 74.5154C12.71 71.2693 9.39359 66.2537 8.37409 60.3904C7.31939 54.3435 8.8819 48.0154 12.6632 43.0234L35.3312 13.0894C39.5773 7.48783 47.5812 6.37853 53.1902 10.6246C58.7879 14.8668 59.8894 22.8746 55.6472 28.4766L50.8425 34.8204L32.6475 58.8434C31.1709 60.7965 28.4366 61.3629 26.5577 60.109C25.5304 59.4215 24.8546 58.3863 24.6515 57.1832C24.4484 55.984 24.7413 54.7887 25.4757 53.8199L43.8707 29.5389C45.2027 27.7772 44.859 25.2694 43.0973 23.9334C41.3356 22.6014 38.8278 22.9452 37.4918 24.7069L19.0968 48.9879C17.0499 51.691 16.1984 55.1637 16.7648 58.5113C17.296 61.6597 18.964 64.4019 21.4914 66.316C21.6945 66.4722 21.9054 66.6207 22.1203 66.7652C27.3781 70.273 34.5073 69.0933 38.6323 64.1441C38.6948 64.0699 38.769 64.0113 38.8276 63.9332L39.0229 63.6714L62.0229 33.3044C68.9291 24.1833 67.1362 11.1484 58.0112 4.23843C48.8979 -2.66387 35.8632 -0.863167 28.9522 8.25793L6.2842 38.1919L5.88967 38.7115C5.8428 38.774 5.81545 38.8404 5.77248 38.9029C1.03418 45.5435 -0.895518 53.8209 0.491282 61.7619C1.77648 69.1252 5.68268 75.5239 11.5693 79.9849C12.1357 80.4146 12.7216 80.8247 13.3232 81.2154C26.2102 89.606 43.5812 86.567 52.8782 74.2974L71.1362 50.1924C72.4721 48.4307 72.1247 45.9221 70.363 44.59Z" }))));
|
|
8553
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PaperClipIcon);
|
|
8554
|
+
|
|
8555
|
+
|
|
7718
8556
|
/***/ }),
|
|
7719
8557
|
|
|
7720
8558
|
/***/ "./lib/icons/Pencil.js":
|
|
@@ -7740,6 +8578,33 @@ const PencilIcon = () => (react__WEBPACK_IMPORTED_MODULE_0___default().createEle
|
|
|
7740
8578
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PencilIcon);
|
|
7741
8579
|
|
|
7742
8580
|
|
|
8581
|
+
/***/ }),
|
|
8582
|
+
|
|
8583
|
+
/***/ "./lib/icons/PhotoIcon.js":
|
|
8584
|
+
/*!********************************!*\
|
|
8585
|
+
!*** ./lib/icons/PhotoIcon.js ***!
|
|
8586
|
+
\********************************/
|
|
8587
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8588
|
+
|
|
8589
|
+
__webpack_require__.r(__webpack_exports__);
|
|
8590
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
8591
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
8592
|
+
/* harmony export */ });
|
|
8593
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react");
|
|
8594
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
8595
|
+
/*
|
|
8596
|
+
* Copyright (c) Saga Inc.
|
|
8597
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
8598
|
+
*/
|
|
8599
|
+
|
|
8600
|
+
const PhotoIcon = () => {
|
|
8601
|
+
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("svg", { width: "14", height: "14", viewBox: "0 0 98 76", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
8602
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("g", { fill: "currentColor" },
|
|
8603
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M14.85 0.129997H83.15C91.32 0.129997 98 6.82 98 14.98V61.02C98 69.18 91.32 75.87 83.15 75.87H14.85C6.68 75.87 0 69.18 0 61.02V14.98C0 6.82 6.68 0.129997 14.85 0.129997ZM70.01 11.03C74.21 11.03 77.61 14.43 77.61 18.63C77.61 22.83 74.21 26.24 70.01 26.24C65.81 26.24 62.4 22.83 62.4 18.63C62.4 14.43 65.81 11.03 70.01 11.03ZM21.03 52.61L38.48 24.28C39.94 22.6 43.25 22.6 44.71 24.28L56.04 42.66L60.53 35.37C61.57 34.17 63.92 34.17 64.96 35.37L77.35 55.49C79.69 59.29 77.22 63.95 73.08 63.95C57.73 63.95 42.38 63.95 27.03 63.95C21.14 63.95 17.73 57.96 21.03 52.61Z" }))));
|
|
8604
|
+
};
|
|
8605
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PhotoIcon);
|
|
8606
|
+
|
|
8607
|
+
|
|
7743
8608
|
/***/ }),
|
|
7744
8609
|
|
|
7745
8610
|
/***/ "./lib/icons/PlayButtonIcon.js":
|
|
@@ -7920,6 +8785,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7920
8785
|
/* harmony import */ var _Extensions_SettingsManager_SettingsManagerPlugin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Extensions/SettingsManager/SettingsManagerPlugin */ "./lib/Extensions/SettingsManager/SettingsManagerPlugin.js");
|
|
7921
8786
|
/* harmony import */ var _Extensions_VersionCheck__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Extensions/VersionCheck */ "./lib/Extensions/VersionCheck/index.js");
|
|
7922
8787
|
/* harmony import */ var _Extensions_NotebookFooter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Extensions/NotebookFooter */ "./lib/Extensions/NotebookFooter/index.js");
|
|
8788
|
+
/* harmony import */ var _Extensions_AppManager_ManageAppsPlugin__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Extensions/AppManager/ManageAppsPlugin */ "./lib/Extensions/AppManager/ManageAppsPlugin.js");
|
|
7923
8789
|
/*
|
|
7924
8790
|
* Copyright (c) Saga Inc.
|
|
7925
8791
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
@@ -7935,6 +8801,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7935
8801
|
|
|
7936
8802
|
|
|
7937
8803
|
|
|
8804
|
+
|
|
7938
8805
|
// This is the main entry point to the mito-ai extension. It must export all of the top level
|
|
7939
8806
|
// extensions that we want to load.
|
|
7940
8807
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([
|
|
@@ -7948,7 +8815,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7948
8815
|
_Extensions_status__WEBPACK_IMPORTED_MODULE_7__.statusItem,
|
|
7949
8816
|
_Extensions_SettingsManager_SettingsManagerPlugin__WEBPACK_IMPORTED_MODULE_8__["default"],
|
|
7950
8817
|
_Extensions_VersionCheck__WEBPACK_IMPORTED_MODULE_9__.versionCheckPlugin,
|
|
7951
|
-
_Extensions_NotebookFooter__WEBPACK_IMPORTED_MODULE_10__["default"]
|
|
8818
|
+
_Extensions_NotebookFooter__WEBPACK_IMPORTED_MODULE_10__["default"],
|
|
8819
|
+
_Extensions_AppManager_ManageAppsPlugin__WEBPACK_IMPORTED_MODULE_11__["default"]
|
|
7952
8820
|
]);
|
|
7953
8821
|
|
|
7954
8822
|
|
|
@@ -8193,7 +9061,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8193
9061
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
8194
9062
|
/* harmony export */ acceptAndRunCellUpdate: () => (/* binding */ acceptAndRunCellUpdate),
|
|
8195
9063
|
/* harmony export */ acceptAndRunCode: () => (/* binding */ acceptAndRunCode),
|
|
8196
|
-
/* harmony export */ retryIfExecutionError: () => (/* binding */ retryIfExecutionError)
|
|
9064
|
+
/* harmony export */ retryIfExecutionError: () => (/* binding */ retryIfExecutionError),
|
|
9065
|
+
/* harmony export */ runAllCells: () => (/* binding */ runAllCells)
|
|
8197
9066
|
/* harmony export */ });
|
|
8198
9067
|
/* harmony import */ var _Extensions_ErrorMimeRenderer_errorUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Extensions/ErrorMimeRenderer/errorUtils */ "./lib/Extensions/ErrorMimeRenderer/errorUtils.js");
|
|
8199
9068
|
/* harmony import */ var _sleep__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sleep */ "./lib/utils/sleep.js");
|
|
@@ -8249,12 +9118,14 @@ const acceptAndRunCode = async (app, notebookTracker, previewAICodeToActiveCell,
|
|
|
8249
9118
|
await (0,_sleep__WEBPACK_IMPORTED_MODULE_1__.sleep)(1000);
|
|
8250
9119
|
};
|
|
8251
9120
|
const retryIfExecutionError = async (notebookTracker, app, getDuplicateChatHistoryManager, addAIMessageFromResponseAndUpdateState, sendAgentSmartDebugMessage, previewAICodeToActiveCell, acceptAICode, shouldContinueAgentExecution, finalizeAgentStop, chatHistoryManagerRef) => {
|
|
8252
|
-
var _a, _b, _c
|
|
9121
|
+
var _a, _b, _c;
|
|
8253
9122
|
const cell = (_b = (_a = notebookTracker.currentWidget) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.activeCell;
|
|
8254
9123
|
// Note: If you update the max retries, update the message we display on each failure
|
|
8255
9124
|
// attempt to ensure we don't say "third attempt" over and over again.
|
|
8256
9125
|
const MAX_RETRIES = 3;
|
|
8257
9126
|
let attempts = 0;
|
|
9127
|
+
let runAllCellsAttempts = 0;
|
|
9128
|
+
const MAX_RUN_ALL_CELLS_ATTEMPTS = 2; // Only allow two run_all_cells attempt per error cycle
|
|
8258
9129
|
while ((0,_notebook__WEBPACK_IMPORTED_MODULE_0__.didCellExecutionError)(cell) && attempts < MAX_RETRIES) {
|
|
8259
9130
|
if (!shouldContinueAgentExecution.current) {
|
|
8260
9131
|
finalizeAgentStop();
|
|
@@ -8269,16 +9140,35 @@ const retryIfExecutionError = async (notebookTracker, app, getDuplicateChatHisto
|
|
|
8269
9140
|
const errorMessage = (0,_Extensions_ErrorMimeRenderer_errorUtils__WEBPACK_IMPORTED_MODULE_2__.getFullErrorMessageFromTraceback)(errorOutput.traceback);
|
|
8270
9141
|
await sendAgentSmartDebugMessage(errorMessage);
|
|
8271
9142
|
const aiDisplayOptimizedChatItem = chatHistoryManagerRef.current.getLastAIDisplayOptimizedChatItem();
|
|
8272
|
-
//
|
|
8273
|
-
|
|
8274
|
-
|
|
8275
|
-
// typescript knows what type it is.
|
|
8276
|
-
if (((_d = aiDisplayOptimizedChatItem === null || aiDisplayOptimizedChatItem === void 0 ? void 0 : aiDisplayOptimizedChatItem.agentResponse) === null || _d === void 0 ? void 0 : _d.type) !== 'cell_update' || ((_e = aiDisplayOptimizedChatItem === null || aiDisplayOptimizedChatItem === void 0 ? void 0 : aiDisplayOptimizedChatItem.agentResponse) === null || _e === void 0 ? void 0 : _e.cell_update) === undefined) {
|
|
9143
|
+
// Handle different response types from the agent when fixing errors
|
|
9144
|
+
const agentResponse = aiDisplayOptimizedChatItem === null || aiDisplayOptimizedChatItem === void 0 ? void 0 : aiDisplayOptimizedChatItem.agentResponse;
|
|
9145
|
+
if (!agentResponse) {
|
|
8277
9146
|
return 'failure';
|
|
8278
9147
|
}
|
|
8279
|
-
|
|
8280
|
-
|
|
8281
|
-
|
|
9148
|
+
if (agentResponse.type === 'cell_update') {
|
|
9149
|
+
const cellUpdate = agentResponse.cell_update;
|
|
9150
|
+
if (cellUpdate !== undefined && cellUpdate !== null) {
|
|
9151
|
+
await acceptAndRunCellUpdate(cellUpdate, notebookTracker, app, previewAICodeToActiveCell, acceptAICode);
|
|
9152
|
+
}
|
|
9153
|
+
}
|
|
9154
|
+
else if (agentResponse.type === 'run_all_cells') {
|
|
9155
|
+
// Prevent infinite loops by limiting run_all_cells attempts
|
|
9156
|
+
if (runAllCellsAttempts >= MAX_RUN_ALL_CELLS_ATTEMPTS) {
|
|
9157
|
+
console.log('Maximum run_all_cells attempts reached, treating as failure');
|
|
9158
|
+
return 'failure';
|
|
9159
|
+
}
|
|
9160
|
+
runAllCellsAttempts++;
|
|
9161
|
+
// Execute runAllCells to fix NameError issues
|
|
9162
|
+
const result = await runAllCells(app, notebookTracker);
|
|
9163
|
+
if (!result.success) {
|
|
9164
|
+
// If run_all_cells resulted in an error, we should continue with error handling
|
|
9165
|
+
// The error will be caught in the main loop
|
|
9166
|
+
console.log('Error after running all cells:', result.errorMessage);
|
|
9167
|
+
}
|
|
9168
|
+
}
|
|
9169
|
+
else {
|
|
9170
|
+
// Agent responded with an unexpected type for error fixing
|
|
9171
|
+
return 'failure';
|
|
8282
9172
|
}
|
|
8283
9173
|
attempts++;
|
|
8284
9174
|
// If this was the last attempt and it still failed
|
|
@@ -8288,6 +9178,37 @@ const retryIfExecutionError = async (notebookTracker, app, getDuplicateChatHisto
|
|
|
8288
9178
|
}
|
|
8289
9179
|
return 'success';
|
|
8290
9180
|
};
|
|
9181
|
+
const runAllCells = async (app, notebookTracker) => {
|
|
9182
|
+
var _a, _b;
|
|
9183
|
+
await app.commands.execute("notebook:run-all-cells");
|
|
9184
|
+
// Give the execution some time to complete and update variables
|
|
9185
|
+
// This ensures that the variable manager has time to update the state
|
|
9186
|
+
await (0,_sleep__WEBPACK_IMPORTED_MODULE_1__.sleep)(2000);
|
|
9187
|
+
// Check all cells for errors after execution
|
|
9188
|
+
const notebook = (_a = notebookTracker.currentWidget) === null || _a === void 0 ? void 0 : _a.content;
|
|
9189
|
+
if (!notebook) {
|
|
9190
|
+
return { success: false, errorMessage: "No active notebook found" };
|
|
9191
|
+
}
|
|
9192
|
+
// Iterate through all cells to find any with errors
|
|
9193
|
+
for (let i = 0; i < notebook.widgets.length; i++) {
|
|
9194
|
+
const cell = notebook.widgets[i];
|
|
9195
|
+
if (cell && cell.model.type === 'code') {
|
|
9196
|
+
const codeCell = cell;
|
|
9197
|
+
if ((0,_notebook__WEBPACK_IMPORTED_MODULE_0__.didCellExecutionError)(codeCell)) {
|
|
9198
|
+
const errorOutput = (_b = codeCell.model.outputs) === null || _b === void 0 ? void 0 : _b.toJSON().find(output => output.output_type === "error");
|
|
9199
|
+
if (errorOutput) {
|
|
9200
|
+
const errorMessage = (0,_Extensions_ErrorMimeRenderer_errorUtils__WEBPACK_IMPORTED_MODULE_2__.getFullErrorMessageFromTraceback)(errorOutput.traceback);
|
|
9201
|
+
return {
|
|
9202
|
+
success: false,
|
|
9203
|
+
errorMessage: errorMessage,
|
|
9204
|
+
errorCellId: codeCell.model.id
|
|
9205
|
+
};
|
|
9206
|
+
}
|
|
9207
|
+
}
|
|
9208
|
+
}
|
|
9209
|
+
}
|
|
9210
|
+
return { success: true };
|
|
9211
|
+
};
|
|
8291
9212
|
|
|
8292
9213
|
|
|
8293
9214
|
/***/ }),
|
|
@@ -10252,15 +11173,15 @@ class AppBuilderWebsocketClient extends _BaseWebsocketClient__WEBPACK_IMPORTED_M
|
|
|
10252
11173
|
|
|
10253
11174
|
/***/ }),
|
|
10254
11175
|
|
|
10255
|
-
/***/ "./lib/websockets/
|
|
10256
|
-
|
|
10257
|
-
!*** ./lib/websockets/
|
|
10258
|
-
|
|
11176
|
+
/***/ "./lib/websockets/appManager/appManagerWebsocketClient.js":
|
|
11177
|
+
/*!****************************************************************!*\
|
|
11178
|
+
!*** ./lib/websockets/appManager/appManagerWebsocketClient.js ***!
|
|
11179
|
+
\****************************************************************/
|
|
10259
11180
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
10260
11181
|
|
|
10261
11182
|
__webpack_require__.r(__webpack_exports__);
|
|
10262
11183
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
10263
|
-
/* harmony export */
|
|
11184
|
+
/* harmony export */ AppManagerWebsocketClient: () => (/* binding */ AppManagerWebsocketClient)
|
|
10264
11185
|
/* harmony export */ });
|
|
10265
11186
|
/* harmony import */ var _BaseWebsocketClient__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../BaseWebsocketClient */ "./lib/websockets/BaseWebsocketClient.js");
|
|
10266
11187
|
/*
|
|
@@ -10269,33 +11190,27 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
10269
11190
|
*/
|
|
10270
11191
|
|
|
10271
11192
|
/**
|
|
10272
|
-
* Mito AI
|
|
11193
|
+
* Mito AI app manager client
|
|
10273
11194
|
*
|
|
10274
|
-
* It communicates with the backend over a WebSocket
|
|
11195
|
+
* It communicates with the backend over a WebSocket for app managing functionality.
|
|
10275
11196
|
*/
|
|
10276
|
-
class
|
|
11197
|
+
class AppManagerWebsocketClient extends _BaseWebsocketClient__WEBPACK_IMPORTED_MODULE_0__.BaseWebsocketClient {
|
|
10277
11198
|
/**
|
|
10278
|
-
* Create a new
|
|
11199
|
+
* Create a new app manager client.
|
|
10279
11200
|
*/
|
|
10280
11201
|
constructor(options = {}) {
|
|
10281
11202
|
super(options);
|
|
10282
11203
|
/**
|
|
10283
11204
|
* The service URL for the websocket endpoint.
|
|
10284
11205
|
*/
|
|
10285
|
-
this.SERVICE_URL = 'mito-ai/
|
|
11206
|
+
this.SERVICE_URL = 'mito-ai/app-manager';
|
|
10286
11207
|
}
|
|
10287
11208
|
/**
|
|
10288
|
-
*
|
|
11209
|
+
* App manager messages stream.
|
|
10289
11210
|
*/
|
|
10290
11211
|
get messages() {
|
|
10291
11212
|
return this._messages;
|
|
10292
11213
|
}
|
|
10293
|
-
/**
|
|
10294
|
-
* Completion chunk stream.
|
|
10295
|
-
*/
|
|
10296
|
-
get stream() {
|
|
10297
|
-
return this._stream;
|
|
10298
|
-
}
|
|
10299
11214
|
/**
|
|
10300
11215
|
* Stream of connection status events
|
|
10301
11216
|
*/
|
|
@@ -10303,37 +11218,138 @@ class CompletionWebsocketClient extends _BaseWebsocketClient__WEBPACK_IMPORTED_M
|
|
|
10303
11218
|
return this._connectionStatus;
|
|
10304
11219
|
}
|
|
10305
11220
|
/**
|
|
10306
|
-
*
|
|
11221
|
+
* Get message ID from request (required by BaseWebsocketClient)
|
|
10307
11222
|
*/
|
|
10308
|
-
getMessageId(
|
|
10309
|
-
return
|
|
11223
|
+
getMessageId(request) {
|
|
11224
|
+
return `${request.type}_${Date.now()}_${Math.random().toString(36).substring(7)}`;
|
|
10310
11225
|
}
|
|
10311
11226
|
/**
|
|
10312
11227
|
* Process a message received from the websocket.
|
|
11228
|
+
* Routes responses to the appropriate pending requests.
|
|
10313
11229
|
*/
|
|
10314
11230
|
_onMessage(message) {
|
|
10315
|
-
|
|
10316
|
-
* Emit unconditionally the message to interested parties.
|
|
10317
|
-
*/
|
|
11231
|
+
// Emit the message to stream listeners
|
|
10318
11232
|
this._messages.emit(message);
|
|
10319
|
-
|
|
10320
|
-
|
|
10321
|
-
|
|
10322
|
-
|
|
10323
|
-
|
|
10324
|
-
|
|
10325
|
-
|
|
10326
|
-
|
|
10327
|
-
|
|
10328
|
-
|
|
10329
|
-
|
|
10330
|
-
|
|
10331
|
-
|
|
10332
|
-
|
|
10333
|
-
|
|
11233
|
+
// Determine which pending request this message belongs to
|
|
11234
|
+
let pendingId = null;
|
|
11235
|
+
let pendingReply = null;
|
|
11236
|
+
const messageId = message.message_id;
|
|
11237
|
+
// First, try to match by message_id
|
|
11238
|
+
if (messageId && this._pendingRepliesMap.has(messageId)) {
|
|
11239
|
+
pendingId = messageId;
|
|
11240
|
+
pendingReply = this._pendingRepliesMap.get(messageId);
|
|
11241
|
+
}
|
|
11242
|
+
// If no message_id, check if this is a response to a single pending request
|
|
11243
|
+
else if (this._pendingRepliesMap.size === 1 && !messageId) {
|
|
11244
|
+
const entries = Array.from(this._pendingRepliesMap.entries());
|
|
11245
|
+
if (entries.length > 0) {
|
|
11246
|
+
const entry = entries[0];
|
|
11247
|
+
if (entry) {
|
|
11248
|
+
pendingId = entry[0];
|
|
11249
|
+
pendingReply = entry[1];
|
|
10334
11250
|
}
|
|
10335
|
-
|
|
10336
|
-
|
|
11251
|
+
}
|
|
11252
|
+
}
|
|
11253
|
+
// Guard clause - exit if we couldn't find a matching pending request
|
|
11254
|
+
if (!pendingId || !pendingReply) {
|
|
11255
|
+
return;
|
|
11256
|
+
}
|
|
11257
|
+
// Common cleanup and resolution logic
|
|
11258
|
+
this._pendingRepliesMap.delete(pendingId);
|
|
11259
|
+
if (message.error) {
|
|
11260
|
+
pendingReply.reject(new Error(message.error.title || 'Server error'));
|
|
11261
|
+
}
|
|
11262
|
+
else {
|
|
11263
|
+
pendingReply.resolve(message);
|
|
11264
|
+
}
|
|
11265
|
+
}
|
|
11266
|
+
}
|
|
11267
|
+
|
|
11268
|
+
|
|
11269
|
+
/***/ }),
|
|
11270
|
+
|
|
11271
|
+
/***/ "./lib/websockets/completions/CompletionsWebsocketClient.js":
|
|
11272
|
+
/*!******************************************************************!*\
|
|
11273
|
+
!*** ./lib/websockets/completions/CompletionsWebsocketClient.js ***!
|
|
11274
|
+
\******************************************************************/
|
|
11275
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
11276
|
+
|
|
11277
|
+
__webpack_require__.r(__webpack_exports__);
|
|
11278
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
11279
|
+
/* harmony export */ CompletionWebsocketClient: () => (/* binding */ CompletionWebsocketClient)
|
|
11280
|
+
/* harmony export */ });
|
|
11281
|
+
/* harmony import */ var _BaseWebsocketClient__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../BaseWebsocketClient */ "./lib/websockets/BaseWebsocketClient.js");
|
|
11282
|
+
/*
|
|
11283
|
+
* Copyright (c) Saga Inc.
|
|
11284
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
11285
|
+
*/
|
|
11286
|
+
|
|
11287
|
+
/**
|
|
11288
|
+
* Mito AI completion client
|
|
11289
|
+
*
|
|
11290
|
+
* It communicates with the backend over a WebSocket to allow streaming answer.
|
|
11291
|
+
*/
|
|
11292
|
+
class CompletionWebsocketClient extends _BaseWebsocketClient__WEBPACK_IMPORTED_MODULE_0__.BaseWebsocketClient {
|
|
11293
|
+
/**
|
|
11294
|
+
* Create a new completion client.
|
|
11295
|
+
*/
|
|
11296
|
+
constructor(options = {}) {
|
|
11297
|
+
super(options);
|
|
11298
|
+
/**
|
|
11299
|
+
* The service URL for the websocket endpoint.
|
|
11300
|
+
*/
|
|
11301
|
+
this.SERVICE_URL = 'mito-ai/completions';
|
|
11302
|
+
}
|
|
11303
|
+
/**
|
|
11304
|
+
* Completion chunk stream.
|
|
11305
|
+
*/
|
|
11306
|
+
get messages() {
|
|
11307
|
+
return this._messages;
|
|
11308
|
+
}
|
|
11309
|
+
/**
|
|
11310
|
+
* Completion chunk stream.
|
|
11311
|
+
*/
|
|
11312
|
+
get stream() {
|
|
11313
|
+
return this._stream;
|
|
11314
|
+
}
|
|
11315
|
+
/**
|
|
11316
|
+
* Stream of connection status events
|
|
11317
|
+
*/
|
|
11318
|
+
get connectionStatus() {
|
|
11319
|
+
return this._connectionStatus;
|
|
11320
|
+
}
|
|
11321
|
+
/**
|
|
11322
|
+
* Extract the message ID from a request message.
|
|
11323
|
+
*/
|
|
11324
|
+
getMessageId(message) {
|
|
11325
|
+
return message.message_id;
|
|
11326
|
+
}
|
|
11327
|
+
/**
|
|
11328
|
+
* Process a message received from the websocket.
|
|
11329
|
+
*/
|
|
11330
|
+
_onMessage(message) {
|
|
11331
|
+
/**
|
|
11332
|
+
* Emit unconditionally the message to interested parties.
|
|
11333
|
+
*/
|
|
11334
|
+
this._messages.emit(message);
|
|
11335
|
+
/**
|
|
11336
|
+
* Dispatch completion messages
|
|
11337
|
+
*/
|
|
11338
|
+
switch (message.type) {
|
|
11339
|
+
case 'chunk': {
|
|
11340
|
+
// To see the stream in action, uncomment the following line
|
|
11341
|
+
// console.log(`[Mito AI Stream] ${message.done ? 'FINAL' : ''} Chunk:`, message.chunk.content);
|
|
11342
|
+
this._stream.emit(message);
|
|
11343
|
+
break;
|
|
11344
|
+
}
|
|
11345
|
+
case 'reply': {
|
|
11346
|
+
const resolver = this._pendingRepliesMap.get(message.parent_id);
|
|
11347
|
+
if (resolver) {
|
|
11348
|
+
resolver.resolve(message);
|
|
11349
|
+
this._pendingRepliesMap.delete(message.parent_id);
|
|
11350
|
+
}
|
|
11351
|
+
else {
|
|
11352
|
+
// For streaming responses, emit the error through the stream
|
|
10337
11353
|
// We need to do this here because errors do not come in as "chunk" messages
|
|
10338
11354
|
// they come in as "reply" messages.
|
|
10339
11355
|
if (message.error) {
|
|
@@ -10395,119 +11411,1031 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
10395
11411
|
transition: background-color 0.2s ease, border-color 0.2s ease;
|
|
10396
11412
|
}
|
|
10397
11413
|
|
|
10398
|
-
.agent-component-header:hover {
|
|
10399
|
-
background-color: var(--jp-layout-color3);
|
|
11414
|
+
.agent-component-header:hover {
|
|
11415
|
+
background-color: var(--jp-layout-color3);
|
|
11416
|
+
}
|
|
11417
|
+
|
|
11418
|
+
.agent-component-header.no-border {
|
|
11419
|
+
border: none;
|
|
11420
|
+
}
|
|
11421
|
+
|
|
11422
|
+
.agent-component-header.expanded {
|
|
11423
|
+
border: none;
|
|
11424
|
+
border-radius: 5px 5px 0 0;
|
|
11425
|
+
background-color: var(--jp-layout-color2);
|
|
11426
|
+
}
|
|
11427
|
+
|
|
11428
|
+
.agent-component-header.error-fixup {
|
|
11429
|
+
border: none;
|
|
11430
|
+
}
|
|
11431
|
+
|
|
11432
|
+
.agent-component-header.error-fixup.expanded {
|
|
11433
|
+
background-color: var(--jp-layout-color2);
|
|
11434
|
+
}
|
|
11435
|
+
|
|
11436
|
+
.agent-component-header-content {
|
|
11437
|
+
display: flex;
|
|
11438
|
+
align-items: center;
|
|
11439
|
+
gap: 10px;
|
|
11440
|
+
flex: 1;
|
|
11441
|
+
min-width: 0;
|
|
11442
|
+
}
|
|
11443
|
+
|
|
11444
|
+
.agent-component-header-content svg {
|
|
11445
|
+
flex-shrink: 0;
|
|
11446
|
+
}
|
|
11447
|
+
|
|
11448
|
+
.agent-component-header-expand-icon {
|
|
11449
|
+
flex-shrink: 0;
|
|
11450
|
+
transition: transform 0.2s ease;
|
|
11451
|
+
}
|
|
11452
|
+
|
|
11453
|
+
.agent-component-header-expand-icon.expanded {
|
|
11454
|
+
transform: rotate(90deg);
|
|
11455
|
+
} `, "",{"version":3,"sources":["webpack://./style/AgentComponentHeader.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;IACI,eAAe;IACf,+DAA+D;IAC/D,+BAA+B;IAC/B,aAAa;IACb,8BAA8B;IAC9B,mBAAmB;IACnB,oDAAoD;IACpD,sDAAsD;IACtD,8DAA8D;AAClE;;AAEA;IACI,yCAAyC;AAC7C;;AAEA;IACI,YAAY;AAChB;;AAEA;IACI,YAAY;IACZ,0BAA0B;IAC1B,yCAAyC;AAC7C;;AAEA;IACI,YAAY;AAChB;;AAEA;IACI,yCAAyC;AAC7C;;AAEA;IACI,aAAa;IACb,mBAAmB;IACnB,SAAS;IACT,OAAO;IACP,YAAY;AAChB;;AAEA;IACI,cAAc;AAClB;;AAEA;IACI,cAAc;IACd,+BAA+B;AACnC;;AAEA;IACI,wBAAwB;AAC5B","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n.agent-component-header {\n cursor: pointer;\n padding: 10px var(--chat-taskpane-tool-call-horizontal-padding);\n color: var(--jp-ui-font-color2);\n display: flex;\n justify-content: space-between;\n align-items: center;\n border: 1px solid var(--jp-cell-editor-border-color);\n border-radius: var(--chat-taskpane-item-border-radius);\n transition: background-color 0.2s ease, border-color 0.2s ease;\n}\n\n.agent-component-header:hover {\n background-color: var(--jp-layout-color3);\n}\n\n.agent-component-header.no-border {\n border: none;\n}\n\n.agent-component-header.expanded {\n border: none;\n border-radius: 5px 5px 0 0;\n background-color: var(--jp-layout-color2);\n}\n\n.agent-component-header.error-fixup {\n border: none;\n}\n\n.agent-component-header.error-fixup.expanded {\n background-color: var(--jp-layout-color2);\n}\n\n.agent-component-header-content {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n min-width: 0;\n}\n\n.agent-component-header-content svg {\n flex-shrink: 0;\n}\n\n.agent-component-header-expand-icon {\n flex-shrink: 0;\n transition: transform 0.2s ease;\n}\n\n.agent-component-header-expand-icon.expanded {\n transform: rotate(90deg);\n} "],"sourceRoot":""}]);
|
|
11456
|
+
// Exports
|
|
11457
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
11458
|
+
|
|
11459
|
+
|
|
11460
|
+
/***/ }),
|
|
11461
|
+
|
|
11462
|
+
/***/ "./node_modules/css-loader/dist/cjs.js!./style/AgentToolUIComponent.css":
|
|
11463
|
+
/*!******************************************************************************!*\
|
|
11464
|
+
!*** ./node_modules/css-loader/dist/cjs.js!./style/AgentToolUIComponent.css ***!
|
|
11465
|
+
\******************************************************************************/
|
|
11466
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
11467
|
+
|
|
11468
|
+
__webpack_require__.r(__webpack_exports__);
|
|
11469
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
11470
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
11471
|
+
/* harmony export */ });
|
|
11472
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
11473
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
11474
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
|
11475
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
11476
|
+
// Imports
|
|
11477
|
+
|
|
11478
|
+
|
|
11479
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
11480
|
+
// Module
|
|
11481
|
+
___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
11482
|
+
* Copyright (c) Saga Inc.
|
|
11483
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
11484
|
+
*/
|
|
11485
|
+
|
|
11486
|
+
.agent-tool-ui-container {
|
|
11487
|
+
display: flex;
|
|
11488
|
+
flex-direction: row;
|
|
11489
|
+
align-items: center;
|
|
11490
|
+
justify-content: start;
|
|
11491
|
+
background-color: transparent;
|
|
11492
|
+
padding: 10px;
|
|
11493
|
+
color: var(--jp-ui-font-color2);
|
|
11494
|
+
}
|
|
11495
|
+
|
|
11496
|
+
.agent-tool-ui-container:not(.agent-tool-ui-error-fixup) {
|
|
11497
|
+
margin: 10px 0;
|
|
11498
|
+
border-radius: 5px;
|
|
11499
|
+
border: 1px solid var(--jp-cell-editor-border-color);
|
|
11500
|
+
}
|
|
11501
|
+
|
|
11502
|
+
.agent-tool-ui-container:not(.agent-tool-ui-error-fixup) .agent-tool-ui-content {
|
|
11503
|
+
margin-left: 5px;
|
|
11504
|
+
}
|
|
11505
|
+
|
|
11506
|
+
.agent-tool-ui-content {
|
|
11507
|
+
display: flex;
|
|
11508
|
+
align-items: center;
|
|
11509
|
+
gap: 10px;
|
|
11510
|
+
}
|
|
11511
|
+
`, "",{"version":3,"sources":["webpack://./style/AgentToolUIComponent.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;IACI,aAAa;IACb,mBAAmB;IACnB,mBAAmB;IACnB,sBAAsB;IACtB,6BAA6B;IAC7B,aAAa;IACb,+BAA+B;AACnC;;AAEA;IACI,cAAc;IACd,kBAAkB;IAClB,oDAAoD;AACxD;;AAEA;IACI,gBAAgB;AACpB;;AAEA;IACI,aAAa;IACb,mBAAmB;IACnB,SAAS;AACb","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n.agent-tool-ui-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: start;\n background-color: transparent;\n padding: 10px;\n color: var(--jp-ui-font-color2);\n}\n\n.agent-tool-ui-container:not(.agent-tool-ui-error-fixup) {\n margin: 10px 0;\n border-radius: 5px;\n border: 1px solid var(--jp-cell-editor-border-color);\n}\n\n.agent-tool-ui-container:not(.agent-tool-ui-error-fixup) .agent-tool-ui-content {\n margin-left: 5px;\n}\n\n.agent-tool-ui-content {\n display: flex;\n align-items: center;\n gap: 10px;\n} \n"],"sourceRoot":""}]);
|
|
11512
|
+
// Exports
|
|
11513
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
11514
|
+
|
|
11515
|
+
|
|
11516
|
+
/***/ }),
|
|
11517
|
+
|
|
11518
|
+
/***/ "./node_modules/css-loader/dist/cjs.js!./style/AlertBlock.css":
|
|
11519
|
+
/*!********************************************************************!*\
|
|
11520
|
+
!*** ./node_modules/css-loader/dist/cjs.js!./style/AlertBlock.css ***!
|
|
11521
|
+
\********************************************************************/
|
|
11522
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
11523
|
+
|
|
11524
|
+
__webpack_require__.r(__webpack_exports__);
|
|
11525
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
11526
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
11527
|
+
/* harmony export */ });
|
|
11528
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
11529
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
11530
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
|
11531
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
11532
|
+
// Imports
|
|
11533
|
+
|
|
11534
|
+
|
|
11535
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
11536
|
+
// Module
|
|
11537
|
+
___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
11538
|
+
* Copyright (c) Saga Inc.
|
|
11539
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
11540
|
+
*/
|
|
11541
|
+
|
|
11542
|
+
/* Base alert container styles */
|
|
11543
|
+
.chat-message-alert-container {
|
|
11544
|
+
display: flex;
|
|
11545
|
+
flex-direction: column;
|
|
11546
|
+
gap: 10px;
|
|
11547
|
+
border-radius: 5px;
|
|
11548
|
+
padding: 10px;
|
|
11549
|
+
border: 1px solid;
|
|
11550
|
+
}
|
|
11551
|
+
|
|
11552
|
+
/* Red variant for errors */
|
|
11553
|
+
.chat-message-alert-container.error {
|
|
11554
|
+
background-color: var(--red-300);
|
|
11555
|
+
border-color: var(--red-900);
|
|
11556
|
+
color: var(--red-900);
|
|
11557
|
+
}
|
|
11558
|
+
|
|
11559
|
+
/* Purple variant for upgrades/CTAs */
|
|
11560
|
+
.chat-message-alert-container.upgrade {
|
|
11561
|
+
background-color: var(--purple-300);
|
|
11562
|
+
color: var(--grey-900);
|
|
11563
|
+
}
|
|
11564
|
+
|
|
11565
|
+
.chat-message-alert a {
|
|
11566
|
+
color: var(--purple-700) !important;
|
|
11567
|
+
text-decoration: underline;
|
|
11568
|
+
}
|
|
11569
|
+
|
|
11570
|
+
/* Error message styles - red variant */
|
|
11571
|
+
.alert-error-message {
|
|
11572
|
+
font-size: 14px;
|
|
11573
|
+
font-weight: 600;
|
|
11574
|
+
line-height: 1.4;
|
|
11575
|
+
margin-bottom: 8px;
|
|
11576
|
+
}
|
|
11577
|
+
|
|
11578
|
+
.chat-message-alert-container.error .alert-error-message {
|
|
11579
|
+
color: var(--red-900);
|
|
11580
|
+
}
|
|
11581
|
+
|
|
11582
|
+
.alert-actions-header {
|
|
11583
|
+
margin-bottom: 12px;
|
|
11584
|
+
}
|
|
11585
|
+
|
|
11586
|
+
.alert-actions-title {
|
|
11587
|
+
font-weight: 500;
|
|
11588
|
+
margin: 0 0 8px 0;
|
|
11589
|
+
font-size: 13px;
|
|
11590
|
+
}
|
|
11591
|
+
|
|
11592
|
+
.chat-message-alert-container.error .alert-actions-title {
|
|
11593
|
+
color: var(--red-900);
|
|
11594
|
+
}
|
|
11595
|
+
|
|
11596
|
+
.alert-actions-list {
|
|
11597
|
+
margin: 0;
|
|
11598
|
+
padding-left: 16px;
|
|
11599
|
+
}
|
|
11600
|
+
|
|
11601
|
+
.chat-message-alert-container.error .alert-actions-list {
|
|
11602
|
+
color: var(--red-800);
|
|
11603
|
+
}
|
|
11604
|
+
|
|
11605
|
+
.chat-message-alert-container.upgrade .alert-actions-list {
|
|
11606
|
+
color: var(--purple-800);
|
|
11607
|
+
}
|
|
11608
|
+
|
|
11609
|
+
.alert-actions-list li {
|
|
11610
|
+
margin-bottom: 4px;
|
|
11611
|
+
font-size: 13px;
|
|
11612
|
+
line-height: 1.4;
|
|
11613
|
+
}
|
|
11614
|
+
|
|
11615
|
+
.alert-action-item {
|
|
11616
|
+
display: flex;
|
|
11617
|
+
align-items: flex-start;
|
|
11618
|
+
gap: 8px;
|
|
11619
|
+
padding: 8px 0;
|
|
11620
|
+
font-size: 13px;
|
|
11621
|
+
line-height: 1.4;
|
|
11622
|
+
}
|
|
11623
|
+
|
|
11624
|
+
.chat-message-alert-container.error .alert-action-item {
|
|
11625
|
+
color: var(--red-800);
|
|
11626
|
+
}
|
|
11627
|
+
|
|
11628
|
+
.chat-message-alert-container.upgrade .alert-action-item {
|
|
11629
|
+
color: var(--purple-800);
|
|
11630
|
+
}
|
|
11631
|
+
|
|
11632
|
+
.action-icon {
|
|
11633
|
+
font-size: 16px;
|
|
11634
|
+
flex-shrink: 0;
|
|
11635
|
+
margin-top: 1px;
|
|
11636
|
+
}
|
|
11637
|
+
|
|
11638
|
+
.details-toggle {
|
|
11639
|
+
display: inline-flex;
|
|
11640
|
+
align-items: center;
|
|
11641
|
+
}
|
|
11642
|
+
|
|
11643
|
+
.toggle-button {
|
|
11644
|
+
background: none;
|
|
11645
|
+
border: none;
|
|
11646
|
+
padding: 0;
|
|
11647
|
+
cursor: pointer;
|
|
11648
|
+
display: flex;
|
|
11649
|
+
align-items: center;
|
|
11650
|
+
gap: 4px;
|
|
11651
|
+
font-size: 12px;
|
|
11652
|
+
font-family: inherit;
|
|
11653
|
+
text-decoration: underline;
|
|
11654
|
+
}
|
|
11655
|
+
|
|
11656
|
+
.chat-message-alert-container.error .toggle-button {
|
|
11657
|
+
color: var(--red-900);
|
|
11658
|
+
}
|
|
11659
|
+
|
|
11660
|
+
.toggle-button:hover {
|
|
11661
|
+
text-decoration: none;
|
|
11662
|
+
}
|
|
11663
|
+
|
|
11664
|
+
.chat-message-alert-container.error .toggle-button:hover {
|
|
11665
|
+
color: var(--red-800);
|
|
11666
|
+
}
|
|
11667
|
+
|
|
11668
|
+
.chat-message-alert-container.upgrade .toggle-button:hover {
|
|
11669
|
+
color: var(--purple-800);
|
|
11670
|
+
}
|
|
11671
|
+
|
|
11672
|
+
.toggle-caret {
|
|
11673
|
+
font-size: 10px;
|
|
11674
|
+
transition: transform 0.2s ease;
|
|
11675
|
+
display: inline-block;
|
|
11676
|
+
text-decoration: none !important;
|
|
11677
|
+
}
|
|
11678
|
+
|
|
11679
|
+
.toggle-caret.open {
|
|
11680
|
+
transform: rotate(180deg);
|
|
11681
|
+
}
|
|
11682
|
+
|
|
11683
|
+
.details-content {
|
|
11684
|
+
margin-top: 8px;
|
|
11685
|
+
margin-left: 16px;
|
|
11686
|
+
padding: 8px;
|
|
11687
|
+
background-color: var(--grey-100);
|
|
11688
|
+
border-radius: 4px;
|
|
11689
|
+
animation: slideDown 0.2s ease-out;
|
|
11690
|
+
}
|
|
11691
|
+
|
|
11692
|
+
@keyframes slideDown {
|
|
11693
|
+
from {
|
|
11694
|
+
opacity: 0;
|
|
11695
|
+
transform: translateY(-4px);
|
|
11696
|
+
}
|
|
11697
|
+
to {
|
|
11698
|
+
opacity: 1;
|
|
11699
|
+
transform: translateY(0);
|
|
11700
|
+
}
|
|
11701
|
+
}
|
|
11702
|
+
|
|
11703
|
+
.secondary-option-link {
|
|
11704
|
+
color: var(--purple-700) !important;
|
|
11705
|
+
text-decoration: underline !important;
|
|
11706
|
+
}
|
|
11707
|
+
|
|
11708
|
+
.secondary-option-link:hover {
|
|
11709
|
+
color: var(--purple-600) !important;
|
|
11710
|
+
}
|
|
11711
|
+
`, "",{"version":3,"sources":["webpack://./style/AlertBlock.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF,gCAAgC;AAChC;EACE,aAAa;EACb,sBAAsB;EACtB,SAAS;EACT,kBAAkB;EAClB,aAAa;EACb,iBAAiB;AACnB;;AAEA,2BAA2B;AAC3B;EACE,gCAAgC;EAChC,4BAA4B;EAC5B,qBAAqB;AACvB;;AAEA,qCAAqC;AACrC;EACE,mCAAmC;EACnC,sBAAsB;AACxB;;AAEA;EACE,mCAAmC;EACnC,0BAA0B;AAC5B;;AAEA,uCAAuC;AACvC;EACE,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;AACjB;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,SAAS;EACT,kBAAkB;AACpB;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,wBAAwB;AAC1B;;AAEA;EACE,kBAAkB;EAClB,eAAe;EACf,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,uBAAuB;EACvB,QAAQ;EACR,cAAc;EACd,eAAe;EACf,gBAAgB;AAClB;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,wBAAwB;AAC1B;;AAEA;EACE,eAAe;EACf,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;EAChB,YAAY;EACZ,UAAU;EACV,eAAe;EACf,aAAa;EACb,mBAAmB;EACnB,QAAQ;EACR,eAAe;EACf,oBAAoB;EACpB,0BAA0B;AAC5B;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,wBAAwB;AAC1B;;AAEA;EACE,eAAe;EACf,+BAA+B;EAC/B,qBAAqB;EACrB,gCAAgC;AAClC;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,eAAe;EACf,iBAAiB;EACjB,YAAY;EACZ,iCAAiC;EACjC,kBAAkB;EAClB,kCAAkC;AACpC;;AAEA;EACE;IACE,UAAU;IACV,2BAA2B;EAC7B;EACA;IACE,UAAU;IACV,wBAAwB;EAC1B;AACF;;AAEA;IACI,mCAAmC;IACnC,qCAAqC;AACzC;;AAEA;IACI,mCAAmC;AACvC","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n/* Base alert container styles */\n.chat-message-alert-container {\n display: flex;\n flex-direction: column;\n gap: 10px;\n border-radius: 5px;\n padding: 10px;\n border: 1px solid;\n}\n\n/* Red variant for errors */\n.chat-message-alert-container.error {\n background-color: var(--red-300);\n border-color: var(--red-900);\n color: var(--red-900);\n}\n\n/* Purple variant for upgrades/CTAs */\n.chat-message-alert-container.upgrade {\n background-color: var(--purple-300);\n color: var(--grey-900);\n}\n\n.chat-message-alert a {\n color: var(--purple-700) !important;\n text-decoration: underline;\n}\n\n/* Error message styles - red variant */\n.alert-error-message {\n font-size: 14px;\n font-weight: 600;\n line-height: 1.4;\n margin-bottom: 8px;\n}\n\n.chat-message-alert-container.error .alert-error-message {\n color: var(--red-900);\n}\n\n.alert-actions-header {\n margin-bottom: 12px;\n}\n\n.alert-actions-title {\n font-weight: 500;\n margin: 0 0 8px 0;\n font-size: 13px;\n}\n\n.chat-message-alert-container.error .alert-actions-title {\n color: var(--red-900);\n}\n\n.alert-actions-list {\n margin: 0;\n padding-left: 16px;\n}\n\n.chat-message-alert-container.error .alert-actions-list {\n color: var(--red-800);\n}\n\n.chat-message-alert-container.upgrade .alert-actions-list {\n color: var(--purple-800);\n}\n\n.alert-actions-list li {\n margin-bottom: 4px;\n font-size: 13px;\n line-height: 1.4;\n}\n\n.alert-action-item {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 8px 0;\n font-size: 13px;\n line-height: 1.4;\n}\n\n.chat-message-alert-container.error .alert-action-item {\n color: var(--red-800);\n}\n\n.chat-message-alert-container.upgrade .alert-action-item {\n color: var(--purple-800);\n}\n\n.action-icon {\n font-size: 16px;\n flex-shrink: 0;\n margin-top: 1px;\n}\n\n.details-toggle {\n display: inline-flex;\n align-items: center;\n}\n\n.toggle-button {\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-family: inherit;\n text-decoration: underline;\n}\n\n.chat-message-alert-container.error .toggle-button {\n color: var(--red-900);\n}\n\n.toggle-button:hover {\n text-decoration: none;\n}\n\n.chat-message-alert-container.error .toggle-button:hover {\n color: var(--red-800);\n}\n\n.chat-message-alert-container.upgrade .toggle-button:hover {\n color: var(--purple-800);\n}\n\n.toggle-caret {\n font-size: 10px;\n transition: transform 0.2s ease;\n display: inline-block;\n text-decoration: none !important;\n}\n\n.toggle-caret.open {\n transform: rotate(180deg);\n}\n\n.details-content {\n margin-top: 8px;\n margin-left: 16px;\n padding: 8px;\n background-color: var(--grey-100);\n border-radius: 4px;\n animation: slideDown 0.2s ease-out;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.secondary-option-link {\n color: var(--purple-700) !important;\n text-decoration: underline !important;\n}\n\n.secondary-option-link:hover {\n color: var(--purple-600) !important;\n}\n"],"sourceRoot":""}]);
|
|
11712
|
+
// Exports
|
|
11713
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
11714
|
+
|
|
11715
|
+
|
|
11716
|
+
/***/ }),
|
|
11717
|
+
|
|
11718
|
+
/***/ "./node_modules/css-loader/dist/cjs.js!./style/AppsList.css":
|
|
11719
|
+
/*!******************************************************************!*\
|
|
11720
|
+
!*** ./node_modules/css-loader/dist/cjs.js!./style/AppsList.css ***!
|
|
11721
|
+
\******************************************************************/
|
|
11722
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
11723
|
+
|
|
11724
|
+
__webpack_require__.r(__webpack_exports__);
|
|
11725
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
11726
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
11727
|
+
/* harmony export */ });
|
|
11728
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
11729
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
11730
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
|
11731
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
11732
|
+
// Imports
|
|
11733
|
+
|
|
11734
|
+
|
|
11735
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
11736
|
+
// Module
|
|
11737
|
+
___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
11738
|
+
* Copyright (c) Saga Inc.
|
|
11739
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
11740
|
+
*/
|
|
11741
|
+
|
|
11742
|
+
/* apps-list.css */
|
|
11743
|
+
.apps-list-container {
|
|
11744
|
+
padding: 16px;
|
|
11745
|
+
font-size: 13px;
|
|
11746
|
+
font-family: var(--jp-ui-font-family);
|
|
11747
|
+
}
|
|
11748
|
+
|
|
11749
|
+
.apps-list-header {
|
|
11750
|
+
display: flex;
|
|
11751
|
+
justify-content: space-between;
|
|
11752
|
+
align-items: center;
|
|
11753
|
+
margin-bottom: 16px;
|
|
11754
|
+
}
|
|
11755
|
+
|
|
11756
|
+
.apps-list-title {
|
|
11757
|
+
margin: 0;
|
|
11758
|
+
font-size: 14px;
|
|
11759
|
+
font-weight: bold;
|
|
11760
|
+
color: var(--jp-ui-font-color1);
|
|
11761
|
+
}
|
|
11762
|
+
|
|
11763
|
+
.apps-list-actions {
|
|
11764
|
+
display: flex;
|
|
11765
|
+
gap: 8px;
|
|
11766
|
+
}
|
|
11767
|
+
|
|
11768
|
+
.apps-list-button {
|
|
11769
|
+
padding: 4px 8px;
|
|
11770
|
+
font-size: 11px;
|
|
11771
|
+
background-color: transparent;
|
|
11772
|
+
color: var(--jp-ui-font-color2);
|
|
11773
|
+
border: 1px solid var(--jp-border-color2);
|
|
11774
|
+
border-radius: 3px;
|
|
11775
|
+
cursor: pointer;
|
|
11776
|
+
font-weight: normal;
|
|
11777
|
+
transition: background-color 0.2s ease;
|
|
11778
|
+
}
|
|
11779
|
+
|
|
11780
|
+
.apps-list-button:hover {
|
|
11781
|
+
background-color: var(--jp-layout-color2);
|
|
11782
|
+
}
|
|
11783
|
+
|
|
11784
|
+
.apps-list-button:disabled {
|
|
11785
|
+
cursor: not-allowed;
|
|
11786
|
+
}
|
|
11787
|
+
|
|
11788
|
+
.apps-list-button.primary {
|
|
11789
|
+
background-color: var(--jp-brand-color1);
|
|
11790
|
+
color: white;
|
|
11791
|
+
border: none;
|
|
11792
|
+
}
|
|
11793
|
+
|
|
11794
|
+
.apps-list-loading {
|
|
11795
|
+
color: var(--jp-ui-font-color2);
|
|
11796
|
+
text-align: center;
|
|
11797
|
+
padding: 20px 0;
|
|
11798
|
+
}
|
|
11799
|
+
|
|
11800
|
+
.apps-list-error {
|
|
11801
|
+
color: #f44336;
|
|
11802
|
+
text-align: center;
|
|
11803
|
+
padding: 20px 0;
|
|
11804
|
+
background-color: var(--jp-layout-color1);
|
|
11805
|
+
border: 1px solid #f44336;
|
|
11806
|
+
border-radius: 4px;
|
|
11807
|
+
}
|
|
11808
|
+
|
|
11809
|
+
.apps-list-error-actions {
|
|
11810
|
+
margin-top: 8px;
|
|
11811
|
+
}
|
|
11812
|
+
|
|
11813
|
+
.apps-list-empty {
|
|
11814
|
+
color: var(--jp-ui-font-color2);
|
|
11815
|
+
text-align: center;
|
|
11816
|
+
padding: 20px 0;
|
|
11817
|
+
}
|
|
11818
|
+
|
|
11819
|
+
.app-item {
|
|
11820
|
+
border: 1px solid var(--jp-border-color1);
|
|
11821
|
+
border-radius: 4px;
|
|
11822
|
+
padding: 12px;
|
|
11823
|
+
margin-bottom: 8px;
|
|
11824
|
+
background-color: var(--jp-layout-color0);
|
|
11825
|
+
}
|
|
11826
|
+
|
|
11827
|
+
.app-item-header {
|
|
11828
|
+
display: flex;
|
|
11829
|
+
justify-content: space-between;
|
|
11830
|
+
align-items: flex-start;
|
|
11831
|
+
margin-bottom: 8px;
|
|
11832
|
+
}
|
|
11833
|
+
|
|
11834
|
+
.app-item-content {
|
|
11835
|
+
flex: 1;
|
|
11836
|
+
}
|
|
11837
|
+
|
|
11838
|
+
.app-item-name {
|
|
11839
|
+
font-weight: bold;
|
|
11840
|
+
color: var(--jp-ui-font-color1);
|
|
11841
|
+
margin-bottom: 4px;
|
|
11842
|
+
}
|
|
11843
|
+
|
|
11844
|
+
.app-item-status-container {
|
|
11845
|
+
display: flex;
|
|
11846
|
+
align-items: center;
|
|
11847
|
+
margin-bottom: 4px;
|
|
11848
|
+
}
|
|
11849
|
+
|
|
11850
|
+
.app-item-status-indicator {
|
|
11851
|
+
display: inline-block;
|
|
11852
|
+
width: 8px;
|
|
11853
|
+
height: 8px;
|
|
11854
|
+
border-radius: 50%;
|
|
11855
|
+
margin-right: 6px;
|
|
11856
|
+
}
|
|
11857
|
+
|
|
11858
|
+
.app-item-status-text {
|
|
11859
|
+
color: var(--jp-ui-font-color2);
|
|
11860
|
+
font-size: 12px;
|
|
11861
|
+
}
|
|
11862
|
+
|
|
11863
|
+
.app-item-created {
|
|
11864
|
+
color: var(--jp-ui-font-color2);
|
|
11865
|
+
font-size: 11px;
|
|
11866
|
+
}
|
|
11867
|
+
|
|
11868
|
+
.app-item-url-container {
|
|
11869
|
+
display: flex;
|
|
11870
|
+
align-items: center;
|
|
11871
|
+
background-color: var(--jp-layout-color1);
|
|
11872
|
+
border: 1px solid var(--jp-border-color2);
|
|
11873
|
+
border-radius: 3px;
|
|
11874
|
+
padding: 6px 8px;
|
|
11875
|
+
}
|
|
11876
|
+
|
|
11877
|
+
.app-item-url {
|
|
11878
|
+
flex: 1;
|
|
11879
|
+
color: var(--jp-ui-font-color1);
|
|
11880
|
+
font-size: 11px;
|
|
11881
|
+
overflow: hidden;
|
|
11882
|
+
text-overflow: ellipsis;
|
|
11883
|
+
white-space: nowrap;
|
|
11884
|
+
font-family: var(--jp-code-font-family);
|
|
11885
|
+
}
|
|
11886
|
+
|
|
11887
|
+
.app-item-copy-button {
|
|
11888
|
+
border: none;
|
|
11889
|
+
background: transparent;
|
|
11890
|
+
cursor: pointer;
|
|
11891
|
+
padding: 2px;
|
|
11892
|
+
display: flex;
|
|
11893
|
+
align-items: center;
|
|
11894
|
+
justify-content: center;
|
|
11895
|
+
margin-left: 8px;
|
|
11896
|
+
border-radius: 2px;
|
|
11897
|
+
}
|
|
11898
|
+
|
|
11899
|
+
.app-item-copy-button:hover {
|
|
11900
|
+
background-color: var(--jp-layout-color2);
|
|
11901
|
+
}
|
|
11902
|
+
`, "",{"version":3,"sources":["webpack://./style/AppsList.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF,kBAAkB;AAClB;EACE,aAAa;EACb,eAAe;EACf,qCAAqC;AACvC;;AAEA;EACE,aAAa;EACb,8BAA8B;EAC9B,mBAAmB;EACnB,mBAAmB;AACrB;;AAEA;EACE,SAAS;EACT,eAAe;EACf,iBAAiB;EACjB,+BAA+B;AACjC;;AAEA;EACE,aAAa;EACb,QAAQ;AACV;;AAEA;EACE,gBAAgB;EAChB,eAAe;EACf,6BAA6B;EAC7B,+BAA+B;EAC/B,yCAAyC;EACzC,kBAAkB;EAClB,eAAe;EACf,mBAAmB;EACnB,sCAAsC;AACxC;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,wCAAwC;EACxC,YAAY;EACZ,YAAY;AACd;;AAEA;EACE,+BAA+B;EAC/B,kBAAkB;EAClB,eAAe;AACjB;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,eAAe;EACf,yCAAyC;EACzC,yBAAyB;EACzB,kBAAkB;AACpB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,+BAA+B;EAC/B,kBAAkB;EAClB,eAAe;AACjB;;AAEA;EACE,yCAAyC;EACzC,kBAAkB;EAClB,aAAa;EACb,kBAAkB;EAClB,yCAAyC;AAC3C;;AAEA;EACE,aAAa;EACb,8BAA8B;EAC9B,uBAAuB;EACvB,kBAAkB;AACpB;;AAEA;EACE,OAAO;AACT;;AAEA;EACE,iBAAiB;EACjB,+BAA+B;EAC/B,kBAAkB;AACpB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA;EACE,qBAAqB;EACrB,UAAU;EACV,WAAW;EACX,kBAAkB;EAClB,iBAAiB;AACnB;;AAEA;EACE,+BAA+B;EAC/B,eAAe;AACjB;;AAEA;EACE,+BAA+B;EAC/B,eAAe;AACjB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,yCAAyC;EACzC,yCAAyC;EACzC,kBAAkB;EAClB,gBAAgB;AAClB;;AAEA;EACE,OAAO;EACP,+BAA+B;EAC/B,eAAe;EACf,gBAAgB;EAChB,uBAAuB;EACvB,mBAAmB;EACnB,uCAAuC;AACzC;;AAEA;EACE,YAAY;EACZ,uBAAuB;EACvB,eAAe;EACf,YAAY;EACZ,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA;EACE,yCAAyC;AAC3C","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n/* apps-list.css */\n.apps-list-container {\n padding: 16px;\n font-size: 13px;\n font-family: var(--jp-ui-font-family);\n}\n\n.apps-list-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.apps-list-title {\n margin: 0;\n font-size: 14px;\n font-weight: bold;\n color: var(--jp-ui-font-color1);\n}\n\n.apps-list-actions {\n display: flex;\n gap: 8px;\n}\n\n.apps-list-button {\n padding: 4px 8px;\n font-size: 11px;\n background-color: transparent;\n color: var(--jp-ui-font-color2);\n border: 1px solid var(--jp-border-color2);\n border-radius: 3px;\n cursor: pointer;\n font-weight: normal;\n transition: background-color 0.2s ease;\n}\n\n.apps-list-button:hover {\n background-color: var(--jp-layout-color2);\n}\n\n.apps-list-button:disabled {\n cursor: not-allowed;\n}\n\n.apps-list-button.primary {\n background-color: var(--jp-brand-color1);\n color: white;\n border: none;\n}\n\n.apps-list-loading {\n color: var(--jp-ui-font-color2);\n text-align: center;\n padding: 20px 0;\n}\n\n.apps-list-error {\n color: #f44336;\n text-align: center;\n padding: 20px 0;\n background-color: var(--jp-layout-color1);\n border: 1px solid #f44336;\n border-radius: 4px;\n}\n\n.apps-list-error-actions {\n margin-top: 8px;\n}\n\n.apps-list-empty {\n color: var(--jp-ui-font-color2);\n text-align: center;\n padding: 20px 0;\n}\n\n.app-item {\n border: 1px solid var(--jp-border-color1);\n border-radius: 4px;\n padding: 12px;\n margin-bottom: 8px;\n background-color: var(--jp-layout-color0);\n}\n\n.app-item-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 8px;\n}\n\n.app-item-content {\n flex: 1;\n}\n\n.app-item-name {\n font-weight: bold;\n color: var(--jp-ui-font-color1);\n margin-bottom: 4px;\n}\n\n.app-item-status-container {\n display: flex;\n align-items: center;\n margin-bottom: 4px;\n}\n\n.app-item-status-indicator {\n display: inline-block;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n margin-right: 6px;\n}\n\n.app-item-status-text {\n color: var(--jp-ui-font-color2);\n font-size: 12px;\n}\n\n.app-item-created {\n color: var(--jp-ui-font-color2);\n font-size: 11px;\n}\n\n.app-item-url-container {\n display: flex;\n align-items: center;\n background-color: var(--jp-layout-color1);\n border: 1px solid var(--jp-border-color2);\n border-radius: 3px;\n padding: 6px 8px;\n}\n\n.app-item-url {\n flex: 1;\n color: var(--jp-ui-font-color1);\n font-size: 11px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-family: var(--jp-code-font-family);\n}\n\n.app-item-copy-button {\n border: none;\n background: transparent;\n cursor: pointer;\n padding: 2px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: 8px;\n border-radius: 2px;\n}\n\n.app-item-copy-button:hover {\n background-color: var(--jp-layout-color2);\n}\n"],"sourceRoot":""}]);
|
|
11903
|
+
// Exports
|
|
11904
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
11905
|
+
|
|
11906
|
+
|
|
11907
|
+
/***/ }),
|
|
11908
|
+
|
|
11909
|
+
/***/ "./node_modules/css-loader/dist/cjs.js!./style/AssumptionTool.css":
|
|
11910
|
+
/*!************************************************************************!*\
|
|
11911
|
+
!*** ./node_modules/css-loader/dist/cjs.js!./style/AssumptionTool.css ***!
|
|
11912
|
+
\************************************************************************/
|
|
11913
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
11914
|
+
|
|
11915
|
+
__webpack_require__.r(__webpack_exports__);
|
|
11916
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
11917
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
11918
|
+
/* harmony export */ });
|
|
11919
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
11920
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
11921
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
|
11922
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
11923
|
+
// Imports
|
|
11924
|
+
|
|
11925
|
+
|
|
11926
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
11927
|
+
// Module
|
|
11928
|
+
___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
11929
|
+
* Copyright (c) Saga Inc.
|
|
11930
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
11931
|
+
*/
|
|
11932
|
+
|
|
11933
|
+
.assumption-tool-container {
|
|
11934
|
+
color: var(--jp-ui-font-color2);
|
|
11935
|
+
display: flex;
|
|
11936
|
+
justify-content: space-between;
|
|
11937
|
+
align-items: center;
|
|
11938
|
+
margin-top: 10px;
|
|
11939
|
+
margin-bottom: 10px;
|
|
11940
|
+
position: relative;
|
|
11941
|
+
padding: 8px var(--chat-taskpane-tool-call-horizontal-padding);
|
|
11942
|
+
border-radius: var(--chat-taskpane-item-border-radius);
|
|
11943
|
+
border: 1px solid var(--jp-cell-editor-border-color);
|
|
11944
|
+
cursor: default;
|
|
11945
|
+
}
|
|
11946
|
+
|
|
11947
|
+
.assumption-header-label {
|
|
11948
|
+
position: absolute;
|
|
11949
|
+
top: -10px;
|
|
11950
|
+
left: 12px;
|
|
11951
|
+
background-color: var(--chat-background-color);
|
|
11952
|
+
padding: 2px 8px;
|
|
11953
|
+
border-radius: 4px;
|
|
11954
|
+
font-size: 12px;
|
|
11955
|
+
color: var(--jp-ui-font-color2);
|
|
11956
|
+
font-style: italic;
|
|
11957
|
+
}
|
|
11958
|
+
|
|
11959
|
+
.assumption-content {
|
|
11960
|
+
display: flex;
|
|
11961
|
+
align-items: flex-start;
|
|
11962
|
+
gap: 8px;
|
|
11963
|
+
color: var(--jp-ui-font-color2);
|
|
11964
|
+
font-size: 14px;
|
|
11965
|
+
line-height: 1.4;
|
|
11966
|
+
margin: 0;
|
|
11967
|
+
padding: 10px 10px 5px 10px;
|
|
11968
|
+
}
|
|
11969
|
+
|
|
11970
|
+
.assumption-content ul {
|
|
11971
|
+
margin: 0;
|
|
11972
|
+
padding-left: 10px;
|
|
11973
|
+
}`, "",{"version":3,"sources":["webpack://./style/AssumptionTool.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;IACI,+BAA+B;IAC/B,aAAa;IACb,8BAA8B;IAC9B,mBAAmB;IACnB,gBAAgB;IAChB,mBAAmB;IACnB,kBAAkB;IAClB,8DAA8D;IAC9D,sDAAsD;IACtD,oDAAoD;IACpD,eAAe;AACnB;;AAEA;IACI,kBAAkB;IAClB,UAAU;IACV,UAAU;IACV,8CAA8C;IAC9C,gBAAgB;IAChB,kBAAkB;IAClB,eAAe;IACf,+BAA+B;IAC/B,kBAAkB;AACtB;;AAEA;IACI,aAAa;IACb,uBAAuB;IACvB,QAAQ;IACR,+BAA+B;IAC/B,eAAe;IACf,gBAAgB;IAChB,SAAS;IACT,2BAA2B;AAC/B;;AAEA;IACI,SAAS;IACT,kBAAkB;AACtB","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n.assumption-tool-container {\n color: var(--jp-ui-font-color2);\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n margin-bottom: 10px;\n position: relative;\n padding: 8px var(--chat-taskpane-tool-call-horizontal-padding);\n border-radius: var(--chat-taskpane-item-border-radius);\n border: 1px solid var(--jp-cell-editor-border-color);\n cursor: default;\n}\n\n.assumption-header-label {\n position: absolute;\n top: -10px;\n left: 12px;\n background-color: var(--chat-background-color);\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 12px;\n color: var(--jp-ui-font-color2);\n font-style: italic;\n}\n\n.assumption-content {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n color: var(--jp-ui-font-color2);\n font-size: 14px;\n line-height: 1.4;\n margin: 0;\n padding: 10px 10px 5px 10px;\n}\n\n.assumption-content ul {\n margin: 0;\n padding-left: 10px;\n}"],"sourceRoot":""}]);
|
|
11974
|
+
// Exports
|
|
11975
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
11976
|
+
|
|
11977
|
+
|
|
11978
|
+
/***/ }),
|
|
11979
|
+
|
|
11980
|
+
/***/ "./node_modules/css-loader/dist/cjs.js!./style/AuthPopup.css":
|
|
11981
|
+
/*!*******************************************************************!*\
|
|
11982
|
+
!*** ./node_modules/css-loader/dist/cjs.js!./style/AuthPopup.css ***!
|
|
11983
|
+
\*******************************************************************/
|
|
11984
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
11985
|
+
|
|
11986
|
+
__webpack_require__.r(__webpack_exports__);
|
|
11987
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
11988
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
11989
|
+
/* harmony export */ });
|
|
11990
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
11991
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
11992
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
|
11993
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
11994
|
+
// Imports
|
|
11995
|
+
|
|
11996
|
+
|
|
11997
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
11998
|
+
// Module
|
|
11999
|
+
___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
12000
|
+
* Copyright (c) Saga Inc.
|
|
12001
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
12002
|
+
*/
|
|
12003
|
+
|
|
12004
|
+
/* Auth popup specific styling to integrate AWS Amplify with Mito theme */
|
|
12005
|
+
.modal-content .amplify-authenticator {
|
|
12006
|
+
--amplify-colors-font-primary: var(--jp-ui-font-color1);
|
|
12007
|
+
--amplify-colors-font-secondary: var(--jp-ui-font-color2);
|
|
12008
|
+
--amplify-colors-background-primary: var(--jp-layout-color0);
|
|
12009
|
+
--amplify-colors-background-secondary: var(--jp-layout-color1);
|
|
12010
|
+
--amplify-colors-border-primary: var(--jp-border-color1);
|
|
12011
|
+
--amplify-colors-brand-primary-10: var(--purple-700);
|
|
12012
|
+
--amplify-colors-brand-primary-80: var(--purple-500);
|
|
12013
|
+
--amplify-colors-brand-primary-90: var(--purple-400);
|
|
12014
|
+
--amplify-colors-brand-primary-100: var(--purple-300);
|
|
12015
|
+
--amplify-radii-small: 4px;
|
|
12016
|
+
--amplify-radii-medium: 4px;
|
|
12017
|
+
--amplify-space-small: 8px;
|
|
12018
|
+
--amplify-space-medium: 12px;
|
|
12019
|
+
--amplify-space-large: 16px;
|
|
12020
|
+
--amplify-font-sizes-small: 14px;
|
|
12021
|
+
--amplify-font-sizes-medium: 14px;
|
|
12022
|
+
|
|
12023
|
+
/* Remove the blue top border on active tabs */
|
|
12024
|
+
--amplify-components-tabs-item-active-border-width: 0;
|
|
12025
|
+
--amplify-components-tabs-item-border-width: 0;
|
|
12026
|
+
|
|
12027
|
+
/* Ensure active tab bottom border uses purple */
|
|
12028
|
+
--amplify-components-tabs-item-active-border-color: var(--purple-500);
|
|
12029
|
+
--amplify-components-tabs-item-active-color: var(--purple-700);
|
|
12030
|
+
}
|
|
12031
|
+
|
|
12032
|
+
/* Ensure modal content has adequate width for auth form */
|
|
12033
|
+
.modal-content:has(.amplify-authenticator) {
|
|
12034
|
+
width: 480px;
|
|
12035
|
+
max-width: 90vw;
|
|
12036
|
+
min-width: 400px;
|
|
12037
|
+
}
|
|
12038
|
+
|
|
12039
|
+
/* Style the authenticator container */
|
|
12040
|
+
.modal-content .amplify-authenticator__modal {
|
|
12041
|
+
background: transparent !important;
|
|
12042
|
+
box-shadow: none !important;
|
|
12043
|
+
border: none !important;
|
|
12044
|
+
}
|
|
12045
|
+
|
|
12046
|
+
/* Constrain authenticator content within modal bounds */
|
|
12047
|
+
.modal-content .amplify-authenticator {
|
|
12048
|
+
width: 100% !important;
|
|
12049
|
+
max-width: 100% !important;
|
|
12050
|
+
overflow: hidden !important;
|
|
12051
|
+
}
|
|
12052
|
+
|
|
12053
|
+
/* Specifically target the data-amplify-container to prevent overflow */
|
|
12054
|
+
.modal-content [data-amplify-container] {
|
|
12055
|
+
width: 100% !important;
|
|
12056
|
+
max-width: 100% !important;
|
|
12057
|
+
overflow: hidden !important;
|
|
12058
|
+
box-sizing: border-box !important;
|
|
12059
|
+
}
|
|
12060
|
+
|
|
12061
|
+
|
|
12062
|
+
|
|
12063
|
+
/* Constrain the tabs container */
|
|
12064
|
+
.modal-content .amplify-tabs {
|
|
12065
|
+
width: 100% !important;
|
|
12066
|
+
max-width: 100% !important;
|
|
12067
|
+
overflow: hidden !important;
|
|
12068
|
+
}
|
|
12069
|
+
|
|
12070
|
+
/* Ensure form fields don't overflow */
|
|
12071
|
+
.modal-content .amplify-field,
|
|
12072
|
+
.modal-content .amplify-field__group {
|
|
12073
|
+
width: 100% !important;
|
|
12074
|
+
max-width: 100% !important;
|
|
12075
|
+
box-sizing: border-box !important;
|
|
12076
|
+
}
|
|
12077
|
+
|
|
12078
|
+
/* Align form elements with Mito styling */
|
|
12079
|
+
.modal-content .amplify-field__label {
|
|
12080
|
+
color: var(--jp-ui-font-color1) !important;
|
|
12081
|
+
font-weight: 500 !important;
|
|
12082
|
+
}
|
|
12083
|
+
|
|
12084
|
+
.modal-content .amplify-input,
|
|
12085
|
+
.modal-content .amplify-select {
|
|
12086
|
+
background: var(--jp-layout-color0) !important;
|
|
12087
|
+
border: 1px solid var(--jp-border-color1) !important;
|
|
12088
|
+
color: var(--jp-ui-font-color1) !important;
|
|
12089
|
+
border-radius: 4px !important;
|
|
12090
|
+
}
|
|
12091
|
+
|
|
12092
|
+
.modal-content .amplify-input:focus,
|
|
12093
|
+
.modal-content .amplify-select:focus {
|
|
12094
|
+
border-color: var(--purple-500) !important;
|
|
12095
|
+
box-shadow: 0 0 0 2px rgba(124, 58, 237, 0.1) !important;
|
|
12096
|
+
}
|
|
12097
|
+
|
|
12098
|
+
|
|
12099
|
+
|
|
12100
|
+
/* Style Amplify buttons to match Mito theme */
|
|
12101
|
+
.modal-content .amplify-button--primary {
|
|
12102
|
+
background-color: var(--purple-400) !important;
|
|
12103
|
+
color: var(--purple-700) !important;
|
|
12104
|
+
border: none !important;
|
|
12105
|
+
border-radius: 4px !important;
|
|
12106
|
+
font-weight: 500 !important;
|
|
12107
|
+
padding: 8px 16px !important;
|
|
12108
|
+
width: 100% !important;
|
|
12109
|
+
max-width: 100% !important;
|
|
12110
|
+
box-sizing: border-box !important;
|
|
12111
|
+
}
|
|
12112
|
+
|
|
12113
|
+
.modal-content .amplify-button--primary:hover {
|
|
12114
|
+
background-color: var(--purple-500) !important;
|
|
12115
|
+
}
|
|
12116
|
+
|
|
12117
|
+
.modal-content .amplify-button--link {
|
|
12118
|
+
color: var(--purple-600) !important;
|
|
12119
|
+
text-decoration: none !important;
|
|
12120
|
+
}
|
|
12121
|
+
|
|
12122
|
+
.modal-content .amplify-button--link:hover {
|
|
12123
|
+
color: var(--purple-700) !important;
|
|
12124
|
+
text-decoration: underline !important;
|
|
12125
|
+
}
|
|
12126
|
+
|
|
12127
|
+
/* Error and success message styling */
|
|
12128
|
+
.modal-content .amplify-alert--error {
|
|
12129
|
+
background-color: var(--red-300) !important;
|
|
12130
|
+
color: var(--red-900) !important;
|
|
12131
|
+
border: 1px solid var(--red-400) !important;
|
|
12132
|
+
border-radius: 4px !important;
|
|
12133
|
+
}
|
|
12134
|
+
|
|
12135
|
+
.modal-content .amplify-alert--info {
|
|
12136
|
+
background-color: var(--purple-300) !important;
|
|
12137
|
+
color: var(--purple-700) !important;
|
|
12138
|
+
border: 1px solid var(--purple-400) !important;
|
|
12139
|
+
border-radius: 4px !important;
|
|
12140
|
+
}
|
|
12141
|
+
|
|
12142
|
+
/* Tab styling for sign in/sign up tabs */
|
|
12143
|
+
.modal-content .amplify-tabs__item {
|
|
12144
|
+
color: var(--jp-ui-font-color2) !important;
|
|
12145
|
+
border-bottom: 2px solid transparent !important;
|
|
12146
|
+
}
|
|
12147
|
+
|
|
12148
|
+
.modal-content .amplify-tabs__item[data-state="active"] {
|
|
12149
|
+
color: var(--purple-700) !important;
|
|
12150
|
+
border-bottom-color: var(--purple-500) !important;
|
|
12151
|
+
}
|
|
12152
|
+
|
|
12153
|
+
/* Ensure inactive tabs don't have purple styling */
|
|
12154
|
+
.modal-content .amplify-tabs__item[data-state="inactive"] {
|
|
12155
|
+
color: var(--jp-ui-font-color2) !important;
|
|
12156
|
+
border-bottom: 2px solid transparent !important;
|
|
12157
|
+
}
|
|
12158
|
+
|
|
12159
|
+
|
|
12160
|
+
|
|
12161
|
+
.modal-content .amplify-tabs__item:hover {
|
|
12162
|
+
color: var(--jp-ui-font-color1) !important;
|
|
12163
|
+
}
|
|
12164
|
+
|
|
12165
|
+
/* Override any default blue tab styling from Amplify */
|
|
12166
|
+
.modal-content .amplify-tabs__list {
|
|
12167
|
+
border-bottom: 1px solid var(--jp-border-color1) !important;
|
|
12168
|
+
}
|
|
12169
|
+
|
|
12170
|
+
.modal-content .amplify-tabs__item[data-state="active"]:after,
|
|
12171
|
+
.modal-content .amplify-tabs__item[aria-selected="true"]:after {
|
|
12172
|
+
background-color: var(--purple-500) !important;
|
|
12173
|
+
border-color: var(--purple-500) !important;
|
|
12174
|
+
}
|
|
12175
|
+
|
|
12176
|
+
/* Override any Amplify default blue colors */
|
|
12177
|
+
.modal-content .amplify-tabs [data-amplify-color-mode] .amplify-tabs__item[data-state="active"] {
|
|
12178
|
+
color: var(--purple-700) !important;
|
|
12179
|
+
border-bottom-color: var(--purple-500) !important;
|
|
12180
|
+
}
|
|
12181
|
+
|
|
12182
|
+
.modal-content .amplify-tabs [data-amplify-color-mode] .amplify-tabs__item[aria-selected="true"] {
|
|
12183
|
+
color: var(--purple-700) !important;
|
|
12184
|
+
border-bottom-color: var(--purple-500) !important;
|
|
12185
|
+
}
|
|
12186
|
+
|
|
12187
|
+
/* Additional selectors to ensure default active state on initial load */
|
|
12188
|
+
.modal-content .amplify-tabs__item[aria-selected="true"] {
|
|
12189
|
+
color: var(--purple-700) !important;
|
|
12190
|
+
border-bottom: 2px solid var(--purple-500) !important;
|
|
12191
|
+
}
|
|
12192
|
+
|
|
12193
|
+
|
|
12194
|
+
|
|
12195
|
+
/* Loading spinner colors */
|
|
12196
|
+
.modal-content .amplify-loader {
|
|
12197
|
+
border-top-color: var(--purple-500) !important;
|
|
12198
|
+
}
|
|
12199
|
+
|
|
12200
|
+
/* Additional purple color overrides for any remaining blue elements */
|
|
12201
|
+
.modal-content .amplify-tabs__item[data-state="active"] *,
|
|
12202
|
+
.modal-content .amplify-tabs__item[aria-selected="true"] * {
|
|
12203
|
+
color: var(--purple-700) !important;
|
|
12204
|
+
}
|
|
12205
|
+
|
|
12206
|
+
/* Override focus states to use purple */
|
|
12207
|
+
.modal-content .amplify-tabs__item:focus,
|
|
12208
|
+
.modal-content .amplify-tabs__item:focus-visible {
|
|
12209
|
+
border-bottom-color: var(--purple-500) !important;
|
|
12210
|
+
outline-color: var(--purple-500) !important;
|
|
12211
|
+
}
|
|
12212
|
+
|
|
12213
|
+
/* Ensure any nested tab content uses purple theme */
|
|
12214
|
+
.modal-content [data-amplify-authenticator] [data-amplify-router] .amplify-tabs__item[data-state="active"] {
|
|
12215
|
+
color: var(--purple-700) !important;
|
|
12216
|
+
border-bottom-color: var(--purple-500) !important;
|
|
12217
|
+
}
|
|
12218
|
+
|
|
12219
|
+
/* Remove any top borders, outlines, or blue styling from tabs */
|
|
12220
|
+
.modal-content .amplify-tabs__item {
|
|
12221
|
+
border-top: none !important;
|
|
12222
|
+
border-left: none !important;
|
|
12223
|
+
border-right: none !important;
|
|
12224
|
+
outline: none !important;
|
|
12225
|
+
}
|
|
12226
|
+
|
|
12227
|
+
.modal-content .amplify-tabs__item[data-state="active"],
|
|
12228
|
+
.modal-content .amplify-tabs__item[aria-selected="true"] {
|
|
12229
|
+
border-top: none !important;
|
|
12230
|
+
border-left: none !important;
|
|
12231
|
+
border-right: none !important;
|
|
12232
|
+
outline: none !important;
|
|
12233
|
+
box-shadow: none !important;
|
|
12234
|
+
}
|
|
12235
|
+
|
|
12236
|
+
/* Remove any pseudo-element borders that might create blue lines */
|
|
12237
|
+
.modal-content .amplify-tabs__item:before,
|
|
12238
|
+
.modal-content .amplify-tabs__item:after,
|
|
12239
|
+
.modal-content .amplify-tabs__item[data-state="active"]:before,
|
|
12240
|
+
.modal-content .amplify-tabs__item[aria-selected="true"]:before {
|
|
12241
|
+
display: none !important;
|
|
12242
|
+
border: none !important;
|
|
12243
|
+
background: none !important;
|
|
12244
|
+
}
|
|
12245
|
+
|
|
12246
|
+
|
|
12247
|
+
|
|
12248
|
+
/* Additional containment rules for better layout */
|
|
12249
|
+
.modal-content .amplify-authenticator * {
|
|
12250
|
+
box-sizing: border-box !important;
|
|
12251
|
+
}
|
|
12252
|
+
|
|
12253
|
+
/* Prevent any Amplify containers from overflowing */
|
|
12254
|
+
.modal-content [data-amplify-authenticator],
|
|
12255
|
+
.modal-content [data-amplify-router],
|
|
12256
|
+
.modal-content [data-amplify-authenticator-signin],
|
|
12257
|
+
.modal-content [data-amplify-authenticator-signup] {
|
|
12258
|
+
width: 100% !important;
|
|
12259
|
+
max-width: 100% !important;
|
|
12260
|
+
overflow: hidden !important;
|
|
12261
|
+
box-sizing: border-box !important;
|
|
12262
|
+
}
|
|
12263
|
+
|
|
12264
|
+
/* Remove any default margins or padding that might cause overflow */
|
|
12265
|
+
.modal-content [data-amplify-container] * {
|
|
12266
|
+
max-width: 100% !important;
|
|
12267
|
+
}
|
|
12268
|
+
|
|
12269
|
+
/* Ensure modal content itself doesn't allow horizontal scroll */
|
|
12270
|
+
.modal-content:has(.amplify-authenticator) {
|
|
12271
|
+
overflow-x: hidden !important;
|
|
10400
12272
|
}
|
|
10401
12273
|
|
|
10402
|
-
|
|
10403
|
-
|
|
12274
|
+
/* Target main Amplify containers but not inputs */
|
|
12275
|
+
.modal-content div[data-amplify-container] {
|
|
12276
|
+
width: 100% !important;
|
|
12277
|
+
max-width: 100% !important;
|
|
12278
|
+
box-sizing: border-box !important;
|
|
10404
12279
|
}
|
|
10405
12280
|
|
|
10406
|
-
|
|
10407
|
-
|
|
10408
|
-
|
|
10409
|
-
|
|
12281
|
+
/* Ensure tab panels fit within bounds */
|
|
12282
|
+
.modal-content .amplify-tabs__panel {
|
|
12283
|
+
width: 100% !important;
|
|
12284
|
+
max-width: 100% !important;
|
|
12285
|
+
overflow: hidden !important;
|
|
12286
|
+
padding: 16px !important;
|
|
10410
12287
|
}
|
|
10411
12288
|
|
|
10412
|
-
|
|
10413
|
-
|
|
12289
|
+
/* Ensure tab list doesn't overflow */
|
|
12290
|
+
.modal-content .amplify-tabs__list {
|
|
12291
|
+
width: 100% !important;
|
|
12292
|
+
max-width: 100% !important;
|
|
12293
|
+
display: flex !important;
|
|
12294
|
+
justify-content: space-around !important;
|
|
10414
12295
|
}
|
|
10415
12296
|
|
|
10416
|
-
.
|
|
10417
|
-
|
|
12297
|
+
.modal-content .amplify-tabs__item {
|
|
12298
|
+
flex: 1 !important;
|
|
12299
|
+
text-align: center !important;
|
|
12300
|
+
max-width: 50% !important;
|
|
10418
12301
|
}
|
|
10419
12302
|
|
|
10420
|
-
.
|
|
10421
|
-
|
|
10422
|
-
|
|
10423
|
-
|
|
10424
|
-
|
|
10425
|
-
|
|
12303
|
+
/* Add this to your AuthPopup.css file */
|
|
12304
|
+
|
|
12305
|
+
/* Hide password requirements by default */
|
|
12306
|
+
.password-requirements {
|
|
12307
|
+
display: none;
|
|
12308
|
+
padding: 16px 20px;
|
|
12309
|
+
background-color: var(--jp-layout-color2);
|
|
12310
|
+
border-top: 1px solid var(--jp-border-color1);
|
|
12311
|
+
font-size: 13px;
|
|
10426
12312
|
}
|
|
10427
12313
|
|
|
10428
|
-
|
|
10429
|
-
|
|
12314
|
+
/* Show password requirements when sign-up form is present */
|
|
12315
|
+
.modal-content:has([data-amplify-authenticator-signup]) .password-requirements {
|
|
12316
|
+
display: block;
|
|
10430
12317
|
}
|
|
10431
12318
|
|
|
10432
|
-
|
|
10433
|
-
|
|
10434
|
-
|
|
12319
|
+
/* Style the requirements content */
|
|
12320
|
+
.password-requirements p {
|
|
12321
|
+
margin: 0 0 8px 0;
|
|
12322
|
+
font-weight: bold;
|
|
12323
|
+
color: var(--jp-ui-font-color1);
|
|
10435
12324
|
}
|
|
10436
12325
|
|
|
10437
|
-
.
|
|
10438
|
-
|
|
10439
|
-
|
|
10440
|
-
|
|
10441
|
-
|
|
12326
|
+
.password-requirements ul {
|
|
12327
|
+
margin: 0;
|
|
12328
|
+
padding-left: 20px;
|
|
12329
|
+
color: var(--jp-ui-font-color2);
|
|
12330
|
+
font-size: 12px;
|
|
12331
|
+
}
|
|
10442
12332
|
|
|
12333
|
+
/* Success message styling */
|
|
12334
|
+
.auth-success-message {
|
|
12335
|
+
padding: 32px 24px;
|
|
12336
|
+
text-align: center;
|
|
12337
|
+
background: var(--jp-layout-color0);
|
|
12338
|
+
border-radius: 8px;
|
|
12339
|
+
}
|
|
10443
12340
|
|
|
10444
|
-
|
|
12341
|
+
.success-icon {
|
|
12342
|
+
margin-bottom: 20px;
|
|
12343
|
+
display: flex;
|
|
12344
|
+
justify-content: center;
|
|
12345
|
+
}
|
|
10445
12346
|
|
|
10446
|
-
|
|
10447
|
-
|
|
10448
|
-
|
|
10449
|
-
|
|
10450
|
-
|
|
12347
|
+
.success-title {
|
|
12348
|
+
color: var(--jp-ui-font-color1);
|
|
12349
|
+
font-size: 24px;
|
|
12350
|
+
font-weight: 600;
|
|
12351
|
+
margin: 0 0 12px 0;
|
|
12352
|
+
font-family: var(--jp-ui-font-family);
|
|
12353
|
+
}
|
|
10451
12354
|
|
|
10452
|
-
|
|
10453
|
-
|
|
10454
|
-
|
|
10455
|
-
|
|
10456
|
-
|
|
10457
|
-
|
|
10458
|
-
|
|
10459
|
-
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
10460
|
-
// Imports
|
|
12355
|
+
.success-description {
|
|
12356
|
+
color: var(--jp-ui-font-color1);
|
|
12357
|
+
font-size: 16px;
|
|
12358
|
+
margin: 0 0 16px 0;
|
|
12359
|
+
font-family: var(--jp-ui-font-family);
|
|
12360
|
+
line-height: 1.5;
|
|
12361
|
+
}
|
|
10461
12362
|
|
|
12363
|
+
.success-timer {
|
|
12364
|
+
color: var(--jp-ui-font-color2);
|
|
12365
|
+
font-size: 14px;
|
|
12366
|
+
margin: 0 0 24px 0;
|
|
12367
|
+
font-family: var(--jp-ui-font-family);
|
|
12368
|
+
font-style: italic;
|
|
12369
|
+
}
|
|
10462
12370
|
|
|
10463
|
-
|
|
10464
|
-
|
|
10465
|
-
|
|
10466
|
-
|
|
10467
|
-
|
|
10468
|
-
*/
|
|
12371
|
+
.success-actions {
|
|
12372
|
+
display: flex;
|
|
12373
|
+
justify-content: center;
|
|
12374
|
+
gap: 12px;
|
|
12375
|
+
}
|
|
10469
12376
|
|
|
10470
|
-
|
|
10471
|
-
|
|
10472
|
-
|
|
10473
|
-
|
|
10474
|
-
align-items: center;
|
|
10475
|
-
margin-top: 10px;
|
|
10476
|
-
margin-bottom: 10px;
|
|
10477
|
-
position: relative;
|
|
10478
|
-
padding: 8px var(--chat-taskpane-tool-call-horizontal-padding);
|
|
10479
|
-
border-radius: var(--chat-taskpane-item-border-radius);
|
|
10480
|
-
border: 1px solid var(--jp-cell-editor-border-color);
|
|
10481
|
-
cursor: default;
|
|
12377
|
+
/* Progress bar animation */
|
|
12378
|
+
@keyframes progressFill {
|
|
12379
|
+
from { width: 0%; }
|
|
12380
|
+
to { width: 100%; }
|
|
10482
12381
|
}
|
|
10483
12382
|
|
|
10484
|
-
|
|
10485
|
-
|
|
10486
|
-
|
|
10487
|
-
|
|
10488
|
-
|
|
10489
|
-
|
|
10490
|
-
|
|
10491
|
-
|
|
10492
|
-
color: var(--jp-ui-font-color2);
|
|
10493
|
-
font-style: italic;
|
|
12383
|
+
/* Welcome message container styling */
|
|
12384
|
+
.welcome-message-container {
|
|
12385
|
+
border: 1px solid var(--jp-border-color1);
|
|
12386
|
+
border-radius: 8px;
|
|
12387
|
+
padding: 32px 24px;
|
|
12388
|
+
margin: 16px 0;
|
|
12389
|
+
background-color: var(--jp-layout-color0);
|
|
12390
|
+
text-align: center;
|
|
10494
12391
|
}
|
|
10495
12392
|
|
|
10496
|
-
|
|
10497
|
-
|
|
10498
|
-
|
|
10499
|
-
|
|
10500
|
-
|
|
10501
|
-
|
|
10502
|
-
|
|
10503
|
-
margin: 0;
|
|
10504
|
-
padding: 10px 10px 5px 10px;
|
|
12393
|
+
/* Welcome message title */
|
|
12394
|
+
.welcome-message-title {
|
|
12395
|
+
color: var(--jp-ui-font-color1);
|
|
12396
|
+
font-size: 24px;
|
|
12397
|
+
font-weight: 600;
|
|
12398
|
+
margin: 0 0 12px 0;
|
|
12399
|
+
font-family: var(--jp-ui-font-family);
|
|
10505
12400
|
}
|
|
10506
12401
|
|
|
10507
|
-
|
|
10508
|
-
|
|
10509
|
-
|
|
10510
|
-
|
|
12402
|
+
/* Welcome message description */
|
|
12403
|
+
.welcome-message-description {
|
|
12404
|
+
color: var(--jp-ui-font-color1);
|
|
12405
|
+
font-size: 16px;
|
|
12406
|
+
margin: 0 0 16px 0;
|
|
12407
|
+
font-family: var(--jp-ui-font-family);
|
|
12408
|
+
line-height: 1.5;
|
|
12409
|
+
}
|
|
12410
|
+
|
|
12411
|
+
/* Progress bar container */
|
|
12412
|
+
.progress-bar-container {
|
|
12413
|
+
width: 100%;
|
|
12414
|
+
height: 4px;
|
|
12415
|
+
background-color: var(--jp-border-color1);
|
|
12416
|
+
border-radius: 2px;
|
|
12417
|
+
overflow: hidden;
|
|
12418
|
+
margin-top: 20px;
|
|
12419
|
+
margin-bottom: 12px;
|
|
12420
|
+
}
|
|
12421
|
+
|
|
12422
|
+
/* Progress bar fill with CSS animation */
|
|
12423
|
+
.progress-bar-fill {
|
|
12424
|
+
width: 0%;
|
|
12425
|
+
height: 100%;
|
|
12426
|
+
background-color: var(--purple-500);
|
|
12427
|
+
border-radius: 2px;
|
|
12428
|
+
animation: progressFill 3s linear forwards;
|
|
12429
|
+
}
|
|
12430
|
+
|
|
12431
|
+
/* Progress bar timer text */
|
|
12432
|
+
.progress-bar-timer {
|
|
12433
|
+
color: var(--jp-ui-font-color2);
|
|
12434
|
+
font-size: 14px;
|
|
12435
|
+
margin: 0;
|
|
12436
|
+
font-family: var(--jp-ui-font-family);
|
|
12437
|
+
font-style: italic;
|
|
12438
|
+
}`, "",{"version":3,"sources":["webpack://./style/AuthPopup.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF,yEAAyE;AACzE;EACE,uDAAuD;EACvD,yDAAyD;EACzD,4DAA4D;EAC5D,8DAA8D;EAC9D,wDAAwD;EACxD,oDAAoD;EACpD,oDAAoD;EACpD,oDAAoD;EACpD,qDAAqD;EACrD,0BAA0B;EAC1B,2BAA2B;EAC3B,0BAA0B;EAC1B,4BAA4B;EAC5B,2BAA2B;EAC3B,gCAAgC;EAChC,iCAAiC;;EAEjC,8CAA8C;EAC9C,qDAAqD;EACrD,8CAA8C;;EAE9C,gDAAgD;EAChD,qEAAqE;EACrE,8DAA8D;AAChE;;AAEA,0DAA0D;AAC1D;EACE,YAAY;EACZ,eAAe;EACf,gBAAgB;AAClB;;AAEA,sCAAsC;AACtC;EACE,kCAAkC;EAClC,2BAA2B;EAC3B,uBAAuB;AACzB;;AAEA,wDAAwD;AACxD;EACE,sBAAsB;EACtB,0BAA0B;EAC1B,2BAA2B;AAC7B;;AAEA,uEAAuE;AACvE;EACE,sBAAsB;EACtB,0BAA0B;EAC1B,2BAA2B;EAC3B,iCAAiC;AACnC;;;;AAIA,iCAAiC;AACjC;EACE,sBAAsB;EACtB,0BAA0B;EAC1B,2BAA2B;AAC7B;;AAEA,sCAAsC;AACtC;;EAEE,sBAAsB;EACtB,0BAA0B;EAC1B,iCAAiC;AACnC;;AAEA,0CAA0C;AAC1C;EACE,0CAA0C;EAC1C,2BAA2B;AAC7B;;AAEA;;EAEE,8CAA8C;EAC9C,oDAAoD;EACpD,0CAA0C;EAC1C,6BAA6B;AAC/B;;AAEA;;EAEE,0CAA0C;EAC1C,wDAAwD;AAC1D;;;;AAIA,8CAA8C;AAC9C;EACE,8CAA8C;EAC9C,mCAAmC;EACnC,uBAAuB;EACvB,6BAA6B;EAC7B,2BAA2B;EAC3B,4BAA4B;EAC5B,sBAAsB;EACtB,0BAA0B;EAC1B,iCAAiC;AACnC;;AAEA;EACE,8CAA8C;AAChD;;AAEA;EACE,mCAAmC;EACnC,gCAAgC;AAClC;;AAEA;EACE,mCAAmC;EACnC,qCAAqC;AACvC;;AAEA,sCAAsC;AACtC;EACE,2CAA2C;EAC3C,gCAAgC;EAChC,2CAA2C;EAC3C,6BAA6B;AAC/B;;AAEA;EACE,8CAA8C;EAC9C,mCAAmC;EACnC,8CAA8C;EAC9C,6BAA6B;AAC/B;;AAEA,yCAAyC;AACzC;EACE,0CAA0C;EAC1C,+CAA+C;AACjD;;AAEA;EACE,mCAAmC;EACnC,iDAAiD;AACnD;;AAEA,mDAAmD;AACnD;EACE,0CAA0C;EAC1C,+CAA+C;AACjD;;;;AAIA;EACE,0CAA0C;AAC5C;;AAEA,uDAAuD;AACvD;EACE,2DAA2D;AAC7D;;AAEA;;EAEE,8CAA8C;EAC9C,0CAA0C;AAC5C;;AAEA,6CAA6C;AAC7C;EACE,mCAAmC;EACnC,iDAAiD;AACnD;;AAEA;EACE,mCAAmC;EACnC,iDAAiD;AACnD;;AAEA,wEAAwE;AACxE;EACE,mCAAmC;EACnC,qDAAqD;AACvD;;;;AAIA,2BAA2B;AAC3B;EACE,8CAA8C;AAChD;;AAEA,sEAAsE;AACtE;;EAEE,mCAAmC;AACrC;;AAEA,wCAAwC;AACxC;;EAEE,iDAAiD;EACjD,2CAA2C;AAC7C;;AAEA,oDAAoD;AACpD;EACE,mCAAmC;EACnC,iDAAiD;AACnD;;AAEA,gEAAgE;AAChE;EACE,2BAA2B;EAC3B,4BAA4B;EAC5B,6BAA6B;EAC7B,wBAAwB;AAC1B;;AAEA;;EAEE,2BAA2B;EAC3B,4BAA4B;EAC5B,6BAA6B;EAC7B,wBAAwB;EACxB,2BAA2B;AAC7B;;AAEA,mEAAmE;AACnE;;;;EAIE,wBAAwB;EACxB,uBAAuB;EACvB,2BAA2B;AAC7B;;;;AAIA,mDAAmD;AACnD;EACE,iCAAiC;AACnC;;AAEA,oDAAoD;AACpD;;;;EAIE,sBAAsB;EACtB,0BAA0B;EAC1B,2BAA2B;EAC3B,iCAAiC;AACnC;;AAEA,oEAAoE;AACpE;EACE,0BAA0B;AAC5B;;AAEA,gEAAgE;AAChE;EACE,6BAA6B;AAC/B;;AAEA,kDAAkD;AAClD;EACE,sBAAsB;EACtB,0BAA0B;EAC1B,iCAAiC;AACnC;;AAEA,wCAAwC;AACxC;EACE,sBAAsB;EACtB,0BAA0B;EAC1B,2BAA2B;EAC3B,wBAAwB;AAC1B;;AAEA,qCAAqC;AACrC;EACE,sBAAsB;EACtB,0BAA0B;EAC1B,wBAAwB;EACxB,wCAAwC;AAC1C;;AAEA;EACE,kBAAkB;EAClB,6BAA6B;EAC7B,yBAAyB;AAC3B;;AAEA,wCAAwC;;AAExC,0CAA0C;AAC1C;EACE,aAAa;EACb,kBAAkB;EAClB,yCAAyC;EACzC,6CAA6C;EAC7C,eAAe;AACjB;;AAEA,4DAA4D;AAC5D;EACE,cAAc;AAChB;;AAEA,mCAAmC;AACnC;EACE,iBAAiB;EACjB,iBAAiB;EACjB,+BAA+B;AACjC;;AAEA;EACE,SAAS;EACT,kBAAkB;EAClB,+BAA+B;EAC/B,eAAe;AACjB;;AAEA,4BAA4B;AAC5B;EACE,kBAAkB;EAClB,kBAAkB;EAClB,mCAAmC;EACnC,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;EACnB,aAAa;EACb,uBAAuB;AACzB;;AAEA;EACE,+BAA+B;EAC/B,eAAe;EACf,gBAAgB;EAChB,kBAAkB;EAClB,qCAAqC;AACvC;;AAEA;EACE,+BAA+B;EAC/B,eAAe;EACf,kBAAkB;EAClB,qCAAqC;EACrC,gBAAgB;AAClB;;AAEA;EACE,+BAA+B;EAC/B,eAAe;EACf,kBAAkB;EAClB,qCAAqC;EACrC,kBAAkB;AACpB;;AAEA;EACE,aAAa;EACb,uBAAuB;EACvB,SAAS;AACX;;AAEA,2BAA2B;AAC3B;EACE,OAAO,SAAS,EAAE;EAClB,KAAK,WAAW,EAAE;AACpB;;AAEA,sCAAsC;AACtC;EACE,yCAAyC;EACzC,kBAAkB;EAClB,kBAAkB;EAClB,cAAc;EACd,yCAAyC;EACzC,kBAAkB;AACpB;;AAEA,0BAA0B;AAC1B;EACE,+BAA+B;EAC/B,eAAe;EACf,gBAAgB;EAChB,kBAAkB;EAClB,qCAAqC;AACvC;;AAEA,gCAAgC;AAChC;EACE,+BAA+B;EAC/B,eAAe;EACf,kBAAkB;EAClB,qCAAqC;EACrC,gBAAgB;AAClB;;AAEA,2BAA2B;AAC3B;EACE,WAAW;EACX,WAAW;EACX,yCAAyC;EACzC,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,mBAAmB;AACrB;;AAEA,yCAAyC;AACzC;EACE,SAAS;EACT,YAAY;EACZ,mCAAmC;EACnC,kBAAkB;EAClB,0CAA0C;AAC5C;;AAEA,4BAA4B;AAC5B;EACE,+BAA+B;EAC/B,eAAe;EACf,SAAS;EACT,qCAAqC;EACrC,kBAAkB;AACpB","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n/* Auth popup specific styling to integrate AWS Amplify with Mito theme */\n.modal-content .amplify-authenticator {\n --amplify-colors-font-primary: var(--jp-ui-font-color1);\n --amplify-colors-font-secondary: var(--jp-ui-font-color2);\n --amplify-colors-background-primary: var(--jp-layout-color0);\n --amplify-colors-background-secondary: var(--jp-layout-color1);\n --amplify-colors-border-primary: var(--jp-border-color1);\n --amplify-colors-brand-primary-10: var(--purple-700);\n --amplify-colors-brand-primary-80: var(--purple-500);\n --amplify-colors-brand-primary-90: var(--purple-400);\n --amplify-colors-brand-primary-100: var(--purple-300);\n --amplify-radii-small: 4px;\n --amplify-radii-medium: 4px;\n --amplify-space-small: 8px;\n --amplify-space-medium: 12px;\n --amplify-space-large: 16px;\n --amplify-font-sizes-small: 14px;\n --amplify-font-sizes-medium: 14px;\n \n /* Remove the blue top border on active tabs */\n --amplify-components-tabs-item-active-border-width: 0;\n --amplify-components-tabs-item-border-width: 0;\n \n /* Ensure active tab bottom border uses purple */\n --amplify-components-tabs-item-active-border-color: var(--purple-500);\n --amplify-components-tabs-item-active-color: var(--purple-700);\n}\n\n/* Ensure modal content has adequate width for auth form */\n.modal-content:has(.amplify-authenticator) {\n width: 480px;\n max-width: 90vw;\n min-width: 400px;\n}\n\n/* Style the authenticator container */\n.modal-content .amplify-authenticator__modal {\n background: transparent !important;\n box-shadow: none !important;\n border: none !important;\n}\n\n/* Constrain authenticator content within modal bounds */\n.modal-content .amplify-authenticator {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n}\n\n/* Specifically target the data-amplify-container to prevent overflow */\n.modal-content [data-amplify-container] {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n box-sizing: border-box !important;\n}\n\n\n\n/* Constrain the tabs container */\n.modal-content .amplify-tabs {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n}\n\n/* Ensure form fields don't overflow */\n.modal-content .amplify-field,\n.modal-content .amplify-field__group {\n width: 100% !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n}\n\n/* Align form elements with Mito styling */\n.modal-content .amplify-field__label {\n color: var(--jp-ui-font-color1) !important;\n font-weight: 500 !important;\n}\n\n.modal-content .amplify-input,\n.modal-content .amplify-select {\n background: var(--jp-layout-color0) !important;\n border: 1px solid var(--jp-border-color1) !important;\n color: var(--jp-ui-font-color1) !important;\n border-radius: 4px !important;\n}\n\n.modal-content .amplify-input:focus,\n.modal-content .amplify-select:focus {\n border-color: var(--purple-500) !important;\n box-shadow: 0 0 0 2px rgba(124, 58, 237, 0.1) !important;\n}\n\n\n\n/* Style Amplify buttons to match Mito theme */\n.modal-content .amplify-button--primary {\n background-color: var(--purple-400) !important;\n color: var(--purple-700) !important;\n border: none !important;\n border-radius: 4px !important;\n font-weight: 500 !important;\n padding: 8px 16px !important;\n width: 100% !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n}\n\n.modal-content .amplify-button--primary:hover {\n background-color: var(--purple-500) !important;\n}\n\n.modal-content .amplify-button--link {\n color: var(--purple-600) !important;\n text-decoration: none !important;\n}\n\n.modal-content .amplify-button--link:hover {\n color: var(--purple-700) !important;\n text-decoration: underline !important;\n}\n\n/* Error and success message styling */\n.modal-content .amplify-alert--error {\n background-color: var(--red-300) !important;\n color: var(--red-900) !important;\n border: 1px solid var(--red-400) !important;\n border-radius: 4px !important;\n}\n\n.modal-content .amplify-alert--info {\n background-color: var(--purple-300) !important;\n color: var(--purple-700) !important;\n border: 1px solid var(--purple-400) !important;\n border-radius: 4px !important;\n}\n\n/* Tab styling for sign in/sign up tabs */\n.modal-content .amplify-tabs__item {\n color: var(--jp-ui-font-color2) !important;\n border-bottom: 2px solid transparent !important;\n}\n\n.modal-content .amplify-tabs__item[data-state=\"active\"] {\n color: var(--purple-700) !important;\n border-bottom-color: var(--purple-500) !important;\n}\n\n/* Ensure inactive tabs don't have purple styling */\n.modal-content .amplify-tabs__item[data-state=\"inactive\"] {\n color: var(--jp-ui-font-color2) !important;\n border-bottom: 2px solid transparent !important;\n}\n\n\n\n.modal-content .amplify-tabs__item:hover {\n color: var(--jp-ui-font-color1) !important;\n}\n\n/* Override any default blue tab styling from Amplify */\n.modal-content .amplify-tabs__list {\n border-bottom: 1px solid var(--jp-border-color1) !important;\n}\n\n.modal-content .amplify-tabs__item[data-state=\"active\"]:after,\n.modal-content .amplify-tabs__item[aria-selected=\"true\"]:after {\n background-color: var(--purple-500) !important;\n border-color: var(--purple-500) !important;\n}\n\n/* Override any Amplify default blue colors */\n.modal-content .amplify-tabs [data-amplify-color-mode] .amplify-tabs__item[data-state=\"active\"] {\n color: var(--purple-700) !important;\n border-bottom-color: var(--purple-500) !important;\n}\n\n.modal-content .amplify-tabs [data-amplify-color-mode] .amplify-tabs__item[aria-selected=\"true\"] {\n color: var(--purple-700) !important;\n border-bottom-color: var(--purple-500) !important;\n}\n\n/* Additional selectors to ensure default active state on initial load */\n.modal-content .amplify-tabs__item[aria-selected=\"true\"] {\n color: var(--purple-700) !important;\n border-bottom: 2px solid var(--purple-500) !important;\n}\n\n\n\n/* Loading spinner colors */\n.modal-content .amplify-loader {\n border-top-color: var(--purple-500) !important;\n}\n\n/* Additional purple color overrides for any remaining blue elements */\n.modal-content .amplify-tabs__item[data-state=\"active\"] *,\n.modal-content .amplify-tabs__item[aria-selected=\"true\"] * {\n color: var(--purple-700) !important;\n}\n\n/* Override focus states to use purple */\n.modal-content .amplify-tabs__item:focus,\n.modal-content .amplify-tabs__item:focus-visible {\n border-bottom-color: var(--purple-500) !important;\n outline-color: var(--purple-500) !important;\n}\n\n/* Ensure any nested tab content uses purple theme */\n.modal-content [data-amplify-authenticator] [data-amplify-router] .amplify-tabs__item[data-state=\"active\"] {\n color: var(--purple-700) !important;\n border-bottom-color: var(--purple-500) !important;\n}\n\n/* Remove any top borders, outlines, or blue styling from tabs */\n.modal-content .amplify-tabs__item {\n border-top: none !important;\n border-left: none !important;\n border-right: none !important;\n outline: none !important;\n}\n\n.modal-content .amplify-tabs__item[data-state=\"active\"],\n.modal-content .amplify-tabs__item[aria-selected=\"true\"] {\n border-top: none !important;\n border-left: none !important;\n border-right: none !important;\n outline: none !important;\n box-shadow: none !important;\n}\n\n/* Remove any pseudo-element borders that might create blue lines */\n.modal-content .amplify-tabs__item:before,\n.modal-content .amplify-tabs__item:after,\n.modal-content .amplify-tabs__item[data-state=\"active\"]:before,\n.modal-content .amplify-tabs__item[aria-selected=\"true\"]:before {\n display: none !important;\n border: none !important;\n background: none !important;\n}\n\n\n\n/* Additional containment rules for better layout */\n.modal-content .amplify-authenticator * {\n box-sizing: border-box !important;\n}\n\n/* Prevent any Amplify containers from overflowing */\n.modal-content [data-amplify-authenticator],\n.modal-content [data-amplify-router],\n.modal-content [data-amplify-authenticator-signin],\n.modal-content [data-amplify-authenticator-signup] {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n box-sizing: border-box !important;\n}\n\n/* Remove any default margins or padding that might cause overflow */\n.modal-content [data-amplify-container] * {\n max-width: 100% !important;\n}\n\n/* Ensure modal content itself doesn't allow horizontal scroll */\n.modal-content:has(.amplify-authenticator) {\n overflow-x: hidden !important;\n}\n\n/* Target main Amplify containers but not inputs */\n.modal-content div[data-amplify-container] {\n width: 100% !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n}\n\n/* Ensure tab panels fit within bounds */\n.modal-content .amplify-tabs__panel {\n width: 100% !important;\n max-width: 100% !important;\n overflow: hidden !important;\n padding: 16px !important;\n}\n\n/* Ensure tab list doesn't overflow */\n.modal-content .amplify-tabs__list {\n width: 100% !important;\n max-width: 100% !important;\n display: flex !important;\n justify-content: space-around !important;\n}\n\n.modal-content .amplify-tabs__item {\n flex: 1 !important;\n text-align: center !important;\n max-width: 50% !important;\n}\n\n/* Add this to your AuthPopup.css file */\n\n/* Hide password requirements by default */\n.password-requirements {\n display: none;\n padding: 16px 20px;\n background-color: var(--jp-layout-color2);\n border-top: 1px solid var(--jp-border-color1);\n font-size: 13px;\n}\n\n/* Show password requirements when sign-up form is present */\n.modal-content:has([data-amplify-authenticator-signup]) .password-requirements {\n display: block;\n}\n\n/* Style the requirements content */\n.password-requirements p {\n margin: 0 0 8px 0;\n font-weight: bold;\n color: var(--jp-ui-font-color1);\n}\n\n.password-requirements ul {\n margin: 0;\n padding-left: 20px;\n color: var(--jp-ui-font-color2);\n font-size: 12px;\n}\n\n/* Success message styling */\n.auth-success-message {\n padding: 32px 24px;\n text-align: center;\n background: var(--jp-layout-color0);\n border-radius: 8px;\n}\n\n.success-icon {\n margin-bottom: 20px;\n display: flex;\n justify-content: center;\n}\n\n.success-title {\n color: var(--jp-ui-font-color1);\n font-size: 24px;\n font-weight: 600;\n margin: 0 0 12px 0;\n font-family: var(--jp-ui-font-family);\n}\n\n.success-description {\n color: var(--jp-ui-font-color1);\n font-size: 16px;\n margin: 0 0 16px 0;\n font-family: var(--jp-ui-font-family);\n line-height: 1.5;\n}\n\n.success-timer {\n color: var(--jp-ui-font-color2);\n font-size: 14px;\n margin: 0 0 24px 0;\n font-family: var(--jp-ui-font-family);\n font-style: italic;\n}\n\n.success-actions {\n display: flex;\n justify-content: center;\n gap: 12px;\n}\n\n/* Progress bar animation */\n@keyframes progressFill {\n from { width: 0%; }\n to { width: 100%; }\n}\n\n/* Welcome message container styling */\n.welcome-message-container {\n border: 1px solid var(--jp-border-color1);\n border-radius: 8px;\n padding: 32px 24px;\n margin: 16px 0;\n background-color: var(--jp-layout-color0);\n text-align: center;\n}\n\n/* Welcome message title */\n.welcome-message-title {\n color: var(--jp-ui-font-color1);\n font-size: 24px;\n font-weight: 600;\n margin: 0 0 12px 0;\n font-family: var(--jp-ui-font-family);\n}\n\n/* Welcome message description */\n.welcome-message-description {\n color: var(--jp-ui-font-color1);\n font-size: 16px;\n margin: 0 0 16px 0;\n font-family: var(--jp-ui-font-family);\n line-height: 1.5;\n}\n\n/* Progress bar container */\n.progress-bar-container {\n width: 100%;\n height: 4px;\n background-color: var(--jp-border-color1);\n border-radius: 2px;\n overflow: hidden;\n margin-top: 20px;\n margin-bottom: 12px;\n}\n\n/* Progress bar fill with CSS animation */\n.progress-bar-fill {\n width: 0%;\n height: 100%;\n background-color: var(--purple-500);\n border-radius: 2px;\n animation: progressFill 3s linear forwards;\n}\n\n/* Progress bar timer text */\n.progress-bar-timer {\n color: var(--jp-ui-font-color2);\n font-size: 14px;\n margin: 0;\n font-family: var(--jp-ui-font-family);\n font-style: italic;\n}"],"sourceRoot":""}]);
|
|
10511
12439
|
// Exports
|
|
10512
12440
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
10513
12441
|
|
|
@@ -10969,173 +12897,55 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
10969
12897
|
.message-action-buttons button:not(:last-child) {
|
|
10970
12898
|
border-right: 1px solid var(--jp-border-color1);
|
|
10971
12899
|
}
|
|
10972
|
-
|
|
10973
|
-
/* Remove the individual button radius styles since we're handling it at the container level */
|
|
10974
|
-
.message-action-buttons button:first-child,
|
|
10975
|
-
.message-action-buttons button:last-child {
|
|
10976
|
-
border-radius: 0;
|
|
10977
|
-
}
|
|
10978
|
-
|
|
10979
|
-
/* Standalone edit button */
|
|
10980
|
-
.message-start-editing-button {
|
|
10981
|
-
position: relative;
|
|
10982
|
-
padding: 4px;
|
|
10983
|
-
border-radius: 4px;
|
|
10984
|
-
}
|
|
10985
|
-
|
|
10986
|
-
/* SVG icon color */
|
|
10987
|
-
.message-action-buttons button svg {
|
|
10988
|
-
color: var(--jp-content-font-color1);
|
|
10989
|
-
}
|
|
10990
|
-
|
|
10991
|
-
/* Hover states */
|
|
10992
|
-
.message-action-buttons button:hover,
|
|
10993
|
-
.message-start-editing-button:hover {
|
|
10994
|
-
background-color: var(--jp-layout-color4);
|
|
10995
|
-
}
|
|
10996
|
-
|
|
10997
|
-
/* Show buttons on message hover */
|
|
10998
|
-
.message:hover .message-action-buttons button,
|
|
10999
|
-
.message:hover .message-start-editing-button {
|
|
11000
|
-
opacity: 1;
|
|
11001
|
-
}
|
|
11002
|
-
|
|
11003
|
-
.message-edit-buttons {
|
|
11004
|
-
display: flex;
|
|
11005
|
-
gap: 8px;
|
|
11006
|
-
padding: 5px;
|
|
11007
|
-
}
|
|
11008
|
-
|
|
11009
|
-
.message-edit-buttons button {
|
|
11010
|
-
padding: 4px 12px;
|
|
11011
|
-
border-radius: 4px;
|
|
11012
|
-
background-color: var(--jp-layout-color1);
|
|
11013
|
-
color: var(--jp-content-font-color1);
|
|
11014
|
-
border: 1px solid var(--jp-border-color1);
|
|
11015
|
-
cursor: pointer;
|
|
11016
|
-
}
|
|
11017
|
-
|
|
11018
|
-
.message-edit-buttons button:hover {
|
|
11019
|
-
background-color: var(--jp-layout-color2);
|
|
11020
|
-
}
|
|
11021
|
-
|
|
11022
|
-
.chat-message-alert-container {
|
|
11023
|
-
display: flex;
|
|
11024
|
-
flex-direction: column;
|
|
11025
|
-
gap: 10px;
|
|
11026
|
-
background-color: var(--red-300);
|
|
11027
|
-
border-radius: 5px;
|
|
11028
|
-
padding: 10px;
|
|
11029
|
-
border: 1px solid var(--red-900);
|
|
11030
|
-
color: var(--red-900);
|
|
11031
|
-
}
|
|
11032
|
-
|
|
11033
|
-
.chat-message-alert a {
|
|
11034
|
-
color: var(--purple-700);
|
|
11035
|
-
text-decoration: underline;
|
|
11036
|
-
}
|
|
11037
|
-
|
|
11038
|
-
/* New style for the main error message */
|
|
11039
|
-
.alert-error-message {
|
|
11040
|
-
font-size: 14px;
|
|
11041
|
-
font-weight: 600;
|
|
11042
|
-
line-height: 1.4;
|
|
11043
|
-
color: var(--red-900);
|
|
11044
|
-
margin-bottom: 8px;
|
|
11045
|
-
}
|
|
11046
|
-
|
|
11047
|
-
.alert-actions-header {
|
|
11048
|
-
margin-bottom: 12px;
|
|
11049
|
-
}
|
|
11050
|
-
|
|
11051
|
-
.alert-actions-title {
|
|
11052
|
-
font-weight: 500;
|
|
11053
|
-
margin: 0 0 8px 0;
|
|
11054
|
-
color: var(--red-900);
|
|
11055
|
-
font-size: 13px;
|
|
11056
|
-
}
|
|
11057
|
-
|
|
11058
|
-
.alert-actions-list {
|
|
11059
|
-
margin: 0;
|
|
11060
|
-
padding-left: 16px;
|
|
11061
|
-
color: var(--red-800);
|
|
11062
|
-
}
|
|
11063
|
-
|
|
11064
|
-
.alert-actions-list li {
|
|
11065
|
-
margin-bottom: 4px;
|
|
11066
|
-
font-size: 13px;
|
|
11067
|
-
line-height: 1.4;
|
|
11068
|
-
}
|
|
11069
|
-
|
|
11070
|
-
.alert-action-item {
|
|
11071
|
-
display: flex;
|
|
11072
|
-
align-items: flex-start;
|
|
11073
|
-
gap: 8px;
|
|
11074
|
-
padding: 8px 0;
|
|
11075
|
-
color: var(--red-800);
|
|
11076
|
-
font-size: 13px;
|
|
11077
|
-
line-height: 1.4;
|
|
11078
|
-
}
|
|
11079
|
-
|
|
11080
|
-
.action-icon {
|
|
11081
|
-
font-size: 16px;
|
|
11082
|
-
flex-shrink: 0;
|
|
11083
|
-
margin-top: 1px;
|
|
12900
|
+
|
|
12901
|
+
/* Remove the individual button radius styles since we're handling it at the container level */
|
|
12902
|
+
.message-action-buttons button:first-child,
|
|
12903
|
+
.message-action-buttons button:last-child {
|
|
12904
|
+
border-radius: 0;
|
|
11084
12905
|
}
|
|
11085
12906
|
|
|
11086
|
-
|
|
11087
|
-
|
|
11088
|
-
|
|
12907
|
+
/* Standalone edit button */
|
|
12908
|
+
.message-start-editing-button {
|
|
12909
|
+
position: relative;
|
|
12910
|
+
padding: 4px;
|
|
12911
|
+
border-radius: 4px;
|
|
11089
12912
|
}
|
|
11090
12913
|
|
|
11091
|
-
|
|
11092
|
-
|
|
11093
|
-
|
|
11094
|
-
padding: 0;
|
|
11095
|
-
cursor: pointer;
|
|
11096
|
-
display: flex;
|
|
11097
|
-
align-items: center;
|
|
11098
|
-
gap: 4px;
|
|
11099
|
-
color: var(--red-900);
|
|
11100
|
-
font-size: 12px;
|
|
11101
|
-
font-family: inherit;
|
|
11102
|
-
text-decoration: underline;
|
|
12914
|
+
/* SVG icon color */
|
|
12915
|
+
.message-action-buttons button svg {
|
|
12916
|
+
color: var(--jp-content-font-color1);
|
|
11103
12917
|
}
|
|
11104
12918
|
|
|
11105
|
-
|
|
11106
|
-
|
|
12919
|
+
/* Hover states */
|
|
12920
|
+
.message-action-buttons button:hover,
|
|
12921
|
+
.message-start-editing-button:hover {
|
|
12922
|
+
background-color: var(--jp-layout-color4);
|
|
11107
12923
|
}
|
|
11108
12924
|
|
|
11109
|
-
|
|
11110
|
-
|
|
11111
|
-
|
|
11112
|
-
|
|
11113
|
-
text-decoration: none !important;
|
|
12925
|
+
/* Show buttons on message hover */
|
|
12926
|
+
.message:hover .message-action-buttons button,
|
|
12927
|
+
.message:hover .message-start-editing-button {
|
|
12928
|
+
opacity: 1;
|
|
11114
12929
|
}
|
|
11115
12930
|
|
|
11116
|
-
.
|
|
11117
|
-
|
|
12931
|
+
.message-edit-buttons {
|
|
12932
|
+
display: flex;
|
|
12933
|
+
gap: 8px;
|
|
12934
|
+
padding: 5px;
|
|
11118
12935
|
}
|
|
11119
12936
|
|
|
11120
|
-
.
|
|
11121
|
-
|
|
11122
|
-
margin-left: 16px;
|
|
11123
|
-
padding: 8px;
|
|
11124
|
-
background-color: var(--grey-100);
|
|
12937
|
+
.message-edit-buttons button {
|
|
12938
|
+
padding: 4px 12px;
|
|
11125
12939
|
border-radius: 4px;
|
|
11126
|
-
|
|
12940
|
+
background-color: var(--jp-layout-color1);
|
|
12941
|
+
color: var(--jp-content-font-color1);
|
|
12942
|
+
border: 1px solid var(--jp-border-color1);
|
|
12943
|
+
cursor: pointer;
|
|
11127
12944
|
}
|
|
11128
12945
|
|
|
11129
|
-
|
|
11130
|
-
|
|
11131
|
-
opacity: 0;
|
|
11132
|
-
transform: translateY(-4px);
|
|
11133
|
-
}
|
|
11134
|
-
to {
|
|
11135
|
-
opacity: 1;
|
|
11136
|
-
transform: translateY(0);
|
|
11137
|
-
}
|
|
11138
|
-
}`, "",{"version":3,"sources":["webpack://./style/ChatMessage.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;EACE,kBAAkB;EAClB,mBAAmB;EACnB,sBAAsB;EACtB,WAAW;EACX,eAAe;EACf,sDAAsD;EACtD,2CAA2C;AAC7C;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,2DAA2D;EAC3D,0CAA0C;EAC1C,aAAa;AACf;;AAEA;EACE,+CAA+C;AACjD;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,QAAQ;EACR,gBAAgB;EAChB,kBAAkB;EAClB,eAAe;AACjB;;AAEA;EACE,gBAAgB;EAChB,sBAAsB;EACtB,SAAS;EACT,gBAAgB;AAClB;;AAEA;EACE,mBAAmB;AACrB;;AAEA,qCAAqC;AACrC;EACE,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,aAAa;EACb,kBAAkB;EAClB,gBAAgB,EAAE,0DAA0D;AAC9E;;AAEA,qCAAqC;AACrC;;EAEE,eAAe;EACf,UAAU;EACV;;qCAEmC;EACnC,yCAAyC;EACzC,YAAY;EACZ,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,oCAAoC;AACtC;;AAEA,gCAAgC;AAChC;EACE,WAAW;EACX,YAAY;EACZ,UAAU;EACV,gBAAgB,EAAE,oCAAoC;AACxD;;AAEA,yCAAyC;AACzC;EACE,+CAA+C;AACjD;;AAEA,8FAA8F;AAC9F;;EAEE,gBAAgB;AAClB;;AAEA,2BAA2B;AAC3B;EACE,kBAAkB;EAClB,YAAY;EACZ,kBAAkB;AACpB;;AAEA,mBAAmB;AACnB;EACE,oCAAoC;AACtC;;AAEA,iBAAiB;AACjB;;EAEE,yCAAyC;AAC3C;;AAEA,kCAAkC;AAClC;;EAEE,UAAU;AACZ;;AAEA;EACE,aAAa;EACb,QAAQ;EACR,YAAY;AACd;;AAEA;EACE,iBAAiB;EACjB,kBAAkB;EAClB,yCAAyC;EACzC,oCAAoC;EACpC,yCAAyC;EACzC,eAAe;AACjB;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,SAAS;EACT,gCAAgC;EAChC,kBAAkB;EAClB,aAAa;EACb,gCAAgC;EAChC,qBAAqB;AACvB;;AAEA;EACE,wBAAwB;EACxB,0BAA0B;AAC5B;;AAEA,yCAAyC;AACzC;EACE,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB,qBAAqB;EACrB,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;EAChB,iBAAiB;EACjB,qBAAqB;EACrB,eAAe;AACjB;;AAEA;EACE,SAAS;EACT,kBAAkB;EAClB,qBAAqB;AACvB;;AAEA;EACE,kBAAkB;EAClB,eAAe;EACf,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,uBAAuB;EACvB,QAAQ;EACR,cAAc;EACd,qBAAqB;EACrB,eAAe;EACf,gBAAgB;AAClB;;AAEA;EACE,eAAe;EACf,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;EAChB,YAAY;EACZ,UAAU;EACV,eAAe;EACf,aAAa;EACb,mBAAmB;EACnB,QAAQ;EACR,qBAAqB;EACrB,eAAe;EACf,oBAAoB;EACpB,0BAA0B;AAC5B;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,eAAe;EACf,+BAA+B;EAC/B,qBAAqB;EACrB,gCAAgC;AAClC;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,eAAe;EACf,iBAAiB;EACjB,YAAY;EACZ,iCAAiC;EACjC,kBAAkB;EAClB,kCAAkC;AACpC;;AAEA;EACE;IACE,UAAU;IACV,2BAA2B;EAC7B;EACA;IACE,UAAU;IACV,wBAAwB;EAC1B;AACF","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n.message {\n position: relative;\n height: min-content;\n box-sizing: border-box;\n width: 100%;\n font-size: 14px;\n border-radius: var(--chat-taskpane-item-border-radius);\n padding: 0 var(--chat-taskpane-item-indent);\n}\n\n.message:not(.chat-input) {\n margin-bottom: 20px;\n}\n\n.message:hover .message-start-editing-button {\n opacity: 1 !important;\n}\n\n.message-user {\n background-color: var(--chat-user-message-background-color);\n color: var(--chat-user-message-font-color);\n padding: 10px;\n}\n\n.message-assistant-chat {\n color: var(--chat-assistant-message-font-color);\n}\n\n.chat-message-buttons {\n display: flex;\n flex-direction: row;\n gap: 8px;\n margin-top: 10px;\n margin-bottom: 4px;\n flex-wrap: wrap;\n}\n\n.chat-taskpane-smart-debug-error-message {\n white-space: pre;\n font-family: monospace;\n margin: 0;\n overflow-x: auto;\n}\n\n.message-text {\n align-items: center;\n}\n\n/* Message Action Buttons Container */\n.message-action-buttons {\n position: absolute;\n bottom: 8px;\n right: 8px;\n display: flex;\n border-radius: 4px;\n overflow: hidden; /* Ensures inner buttons don't break the rounded corners */\n}\n\n/* Common styles for action buttons */\n.message-action-buttons button,\n.message-start-editing-button {\n cursor: pointer;\n opacity: 0;\n transition:\n opacity 0.2s ease-in-out,\n background-color 0.2s ease-in-out;\n background-color: var(--jp-layout-color3);\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--jp-content-font-color1);\n}\n\n/* Action buttons in the group */\n.message-action-buttons button {\n width: 28px;\n height: 28px;\n padding: 0;\n border-radius: 0; /* Remove individual button radius */\n}\n\n/* Add subtle separator between buttons */\n.message-action-buttons button:not(:last-child) {\n border-right: 1px solid var(--jp-border-color1);\n}\n\n/* Remove the individual button radius styles since we're handling it at the container level */\n.message-action-buttons button:first-child,\n.message-action-buttons button:last-child {\n border-radius: 0;\n}\n\n/* Standalone edit button */\n.message-start-editing-button {\n position: relative;\n padding: 4px;\n border-radius: 4px;\n}\n\n/* SVG icon color */\n.message-action-buttons button svg {\n color: var(--jp-content-font-color1);\n}\n\n/* Hover states */\n.message-action-buttons button:hover,\n.message-start-editing-button:hover {\n background-color: var(--jp-layout-color4);\n}\n\n/* Show buttons on message hover */\n.message:hover .message-action-buttons button,\n.message:hover .message-start-editing-button {\n opacity: 1;\n}\n\n.message-edit-buttons {\n display: flex;\n gap: 8px;\n padding: 5px;\n}\n\n.message-edit-buttons button {\n padding: 4px 12px;\n border-radius: 4px;\n background-color: var(--jp-layout-color1);\n color: var(--jp-content-font-color1);\n border: 1px solid var(--jp-border-color1);\n cursor: pointer;\n}\n\n.message-edit-buttons button:hover {\n background-color: var(--jp-layout-color2);\n}\n\n.chat-message-alert-container {\n display: flex;\n flex-direction: column;\n gap: 10px;\n background-color: var(--red-300);\n border-radius: 5px;\n padding: 10px;\n border: 1px solid var(--red-900);\n color: var(--red-900);\n}\n\n.chat-message-alert a {\n color: var(--purple-700);\n text-decoration: underline;\n}\n\n/* New style for the main error message */\n.alert-error-message {\n font-size: 14px;\n font-weight: 600;\n line-height: 1.4;\n color: var(--red-900);\n margin-bottom: 8px;\n}\n\n.alert-actions-header {\n margin-bottom: 12px;\n}\n\n.alert-actions-title {\n font-weight: 500;\n margin: 0 0 8px 0;\n color: var(--red-900);\n font-size: 13px;\n}\n\n.alert-actions-list {\n margin: 0;\n padding-left: 16px;\n color: var(--red-800);\n}\n\n.alert-actions-list li {\n margin-bottom: 4px;\n font-size: 13px;\n line-height: 1.4;\n}\n\n.alert-action-item {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 8px 0;\n color: var(--red-800);\n font-size: 13px;\n line-height: 1.4;\n}\n\n.action-icon {\n font-size: 16px;\n flex-shrink: 0;\n margin-top: 1px;\n}\n\n.details-toggle {\n display: inline-flex;\n align-items: center;\n}\n\n.toggle-button {\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n color: var(--red-900);\n font-size: 12px;\n font-family: inherit;\n text-decoration: underline;\n}\n\n.toggle-button:hover {\n color: var(--red-800);\n}\n\n.toggle-caret {\n font-size: 10px;\n transition: transform 0.2s ease;\n display: inline-block;\n text-decoration: none !important;\n}\n\n.toggle-caret.open {\n transform: rotate(180deg);\n}\n\n.details-content {\n margin-top: 8px;\n margin-left: 16px;\n padding: 8px;\n background-color: var(--grey-100);\n border-radius: 4px;\n animation: slideDown 0.2s ease-out;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}"],"sourceRoot":""}]);
|
|
12946
|
+
.message-edit-buttons button:hover {
|
|
12947
|
+
background-color: var(--jp-layout-color2);
|
|
12948
|
+
}`, "",{"version":3,"sources":["webpack://./style/ChatMessage.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;EACE,kBAAkB;EAClB,mBAAmB;EACnB,sBAAsB;EACtB,WAAW;EACX,eAAe;EACf,sDAAsD;EACtD,2CAA2C;AAC7C;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,2DAA2D;EAC3D,0CAA0C;EAC1C,aAAa;AACf;;AAEA;EACE,+CAA+C;AACjD;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,QAAQ;EACR,gBAAgB;EAChB,kBAAkB;EAClB,eAAe;AACjB;;AAEA;EACE,gBAAgB;EAChB,sBAAsB;EACtB,SAAS;EACT,gBAAgB;AAClB;;AAEA;EACE,mBAAmB;AACrB;;AAEA,qCAAqC;AACrC;EACE,kBAAkB;EAClB,WAAW;EACX,UAAU;EACV,aAAa;EACb,kBAAkB;EAClB,gBAAgB,EAAE,0DAA0D;AAC9E;;AAEA,qCAAqC;AACrC;;EAEE,eAAe;EACf,UAAU;EACV;;qCAEmC;EACnC,yCAAyC;EACzC,YAAY;EACZ,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,oCAAoC;AACtC;;AAEA,gCAAgC;AAChC;EACE,WAAW;EACX,YAAY;EACZ,UAAU;EACV,gBAAgB,EAAE,oCAAoC;AACxD;;AAEA,yCAAyC;AACzC;EACE,+CAA+C;AACjD;;AAEA,8FAA8F;AAC9F;;EAEE,gBAAgB;AAClB;;AAEA,2BAA2B;AAC3B;EACE,kBAAkB;EAClB,YAAY;EACZ,kBAAkB;AACpB;;AAEA,mBAAmB;AACnB;EACE,oCAAoC;AACtC;;AAEA,iBAAiB;AACjB;;EAEE,yCAAyC;AAC3C;;AAEA,kCAAkC;AAClC;;EAEE,UAAU;AACZ;;AAEA;EACE,aAAa;EACb,QAAQ;EACR,YAAY;AACd;;AAEA;EACE,iBAAiB;EACjB,kBAAkB;EAClB,yCAAyC;EACzC,oCAAoC;EACpC,yCAAyC;EACzC,eAAe;AACjB;;AAEA;EACE,yCAAyC;AAC3C","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n.message {\n position: relative;\n height: min-content;\n box-sizing: border-box;\n width: 100%;\n font-size: 14px;\n border-radius: var(--chat-taskpane-item-border-radius);\n padding: 0 var(--chat-taskpane-item-indent);\n}\n\n.message:not(.chat-input) {\n margin-bottom: 20px;\n}\n\n.message:hover .message-start-editing-button {\n opacity: 1 !important;\n}\n\n.message-user {\n background-color: var(--chat-user-message-background-color);\n color: var(--chat-user-message-font-color);\n padding: 10px;\n}\n\n.message-assistant-chat {\n color: var(--chat-assistant-message-font-color);\n}\n\n.chat-message-buttons {\n display: flex;\n flex-direction: row;\n gap: 8px;\n margin-top: 10px;\n margin-bottom: 4px;\n flex-wrap: wrap;\n}\n\n.chat-taskpane-smart-debug-error-message {\n white-space: pre;\n font-family: monospace;\n margin: 0;\n overflow-x: auto;\n}\n\n.message-text {\n align-items: center;\n}\n\n/* Message Action Buttons Container */\n.message-action-buttons {\n position: absolute;\n bottom: 8px;\n right: 8px;\n display: flex;\n border-radius: 4px;\n overflow: hidden; /* Ensures inner buttons don't break the rounded corners */\n}\n\n/* Common styles for action buttons */\n.message-action-buttons button,\n.message-start-editing-button {\n cursor: pointer;\n opacity: 0;\n transition:\n opacity 0.2s ease-in-out,\n background-color 0.2s ease-in-out;\n background-color: var(--jp-layout-color3);\n border: none;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--jp-content-font-color1);\n}\n\n/* Action buttons in the group */\n.message-action-buttons button {\n width: 28px;\n height: 28px;\n padding: 0;\n border-radius: 0; /* Remove individual button radius */\n}\n\n/* Add subtle separator between buttons */\n.message-action-buttons button:not(:last-child) {\n border-right: 1px solid var(--jp-border-color1);\n}\n\n/* Remove the individual button radius styles since we're handling it at the container level */\n.message-action-buttons button:first-child,\n.message-action-buttons button:last-child {\n border-radius: 0;\n}\n\n/* Standalone edit button */\n.message-start-editing-button {\n position: relative;\n padding: 4px;\n border-radius: 4px;\n}\n\n/* SVG icon color */\n.message-action-buttons button svg {\n color: var(--jp-content-font-color1);\n}\n\n/* Hover states */\n.message-action-buttons button:hover,\n.message-start-editing-button:hover {\n background-color: var(--jp-layout-color4);\n}\n\n/* Show buttons on message hover */\n.message:hover .message-action-buttons button,\n.message:hover .message-start-editing-button {\n opacity: 1;\n}\n\n.message-edit-buttons {\n display: flex;\n gap: 8px;\n padding: 5px;\n}\n\n.message-edit-buttons button {\n padding: 4px 12px;\n border-radius: 4px;\n background-color: var(--jp-layout-color1);\n color: var(--jp-content-font-color1);\n border: 1px solid var(--jp-border-color1);\n cursor: pointer;\n}\n\n.message-edit-buttons button:hover {\n background-color: var(--jp-layout-color2);\n}"],"sourceRoot":""}]);
|
|
11139
12949
|
// Exports
|
|
11140
12950
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
11141
12951
|
|
|
@@ -12243,55 +14053,6 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
12243
14053
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
12244
14054
|
|
|
12245
14055
|
|
|
12246
|
-
/***/ }),
|
|
12247
|
-
|
|
12248
|
-
/***/ "./node_modules/css-loader/dist/cjs.js!./style/GetCellOutputToolUI.css":
|
|
12249
|
-
/*!*****************************************************************************!*\
|
|
12250
|
-
!*** ./node_modules/css-loader/dist/cjs.js!./style/GetCellOutputToolUI.css ***!
|
|
12251
|
-
\*****************************************************************************/
|
|
12252
|
-
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
12253
|
-
|
|
12254
|
-
__webpack_require__.r(__webpack_exports__);
|
|
12255
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
12256
|
-
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
12257
|
-
/* harmony export */ });
|
|
12258
|
-
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
12259
|
-
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
12260
|
-
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
|
12261
|
-
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
12262
|
-
// Imports
|
|
12263
|
-
|
|
12264
|
-
|
|
12265
|
-
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
12266
|
-
// Module
|
|
12267
|
-
___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
12268
|
-
* Copyright (c) Saga Inc.
|
|
12269
|
-
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
12270
|
-
*/
|
|
12271
|
-
|
|
12272
|
-
.get-cell-output-container {
|
|
12273
|
-
display: flex;
|
|
12274
|
-
flex-direction: row;
|
|
12275
|
-
align-items: center;
|
|
12276
|
-
justify-content: start;
|
|
12277
|
-
background-color: transparent;
|
|
12278
|
-
padding: 10px;
|
|
12279
|
-
border-radius: 5px;
|
|
12280
|
-
border: 1px solid var(--jp-cell-editor-border-color);
|
|
12281
|
-
margin: 10px 0;
|
|
12282
|
-
color: var(--jp-ui-font-color2);
|
|
12283
|
-
}
|
|
12284
|
-
|
|
12285
|
-
.get-cell-output-content {
|
|
12286
|
-
display: flex;
|
|
12287
|
-
align-items: center;
|
|
12288
|
-
gap: 10px;
|
|
12289
|
-
margin-left: 5px;
|
|
12290
|
-
} `, "",{"version":3,"sources":["webpack://./style/GetCellOutputToolUI.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;IACI,aAAa;IACb,mBAAmB;IACnB,mBAAmB;IACnB,sBAAsB;IACtB,6BAA6B;IAC7B,aAAa;IACb,kBAAkB;IAClB,oDAAoD;IACpD,cAAc;IACd,+BAA+B;AACnC;;AAEA;IACI,aAAa;IACb,mBAAmB;IACnB,SAAS;IACT,gBAAgB;AACpB","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n.get-cell-output-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: start;\n background-color: transparent;\n padding: 10px;\n border-radius: 5px;\n border: 1px solid var(--jp-cell-editor-border-color);\n margin: 10px 0;\n color: var(--jp-ui-font-color2);\n}\n\n.get-cell-output-content {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-left: 5px;\n} "],"sourceRoot":""}]);
|
|
12291
|
-
// Exports
|
|
12292
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
12293
|
-
|
|
12294
|
-
|
|
12295
14056
|
/***/ }),
|
|
12296
14057
|
|
|
12297
14058
|
/***/ "./node_modules/css-loader/dist/cjs.js!./style/IconButton.css":
|
|
@@ -13148,15 +14909,19 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
13148
14909
|
white-space: pre !important;
|
|
13149
14910
|
}
|
|
13150
14911
|
|
|
13151
|
-
.code-block-python-code .jp-RenderedHTMLCommon
|
|
14912
|
+
.code-block-python-code .jp-RenderedHTMLCommon {
|
|
14913
|
+
/* Remove default Jupyter padding */
|
|
14914
|
+
padding-right: 0px !important;
|
|
14915
|
+
}
|
|
14916
|
+
|
|
14917
|
+
.code-block-python-code .jp-RenderedHTMLCommon>*:last-child {
|
|
13152
14918
|
/*
|
|
13153
14919
|
Remove the default Jupyter ending margin
|
|
13154
14920
|
so that the rendered code is flush with the bottom
|
|
13155
14921
|
of the CodeMessagePart
|
|
13156
14922
|
*/
|
|
13157
14923
|
margin-bottom: 0px;
|
|
13158
|
-
}
|
|
13159
|
-
`, "",{"version":3,"sources":["webpack://./style/PythonCode.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;EACE,YAAY;EACZ,YAAY;EACZ,WAAW;EACX,oBAAoB;EACpB,wBAAwB;EACxB,0BAA0B;EAC1B,gBAAgB;AAClB;;AAEA;EACE,2BAA2B;AAC7B;;AAEA;EACE;;;;KAIG;EACH,kBAAkB;AACpB","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n.code-block-python-code pre {\n flex-grow: 1;\n height: 100%;\n width: 100%;\n margin: 0 !important;\n padding: 10px !important;\n font-size: 12px !important;\n overflow-x: auto;\n}\n\n.code-block-python-code code {\n white-space: pre !important;\n}\n\n.code-block-python-code .jp-RenderedHTMLCommon > *:last-child {\n /* \n Remove the default Jupyter ending margin \n so that the rendered code is flush with the bottom\n of the CodeMessagePart\n */\n margin-bottom: 0px;\n}\n"],"sourceRoot":""}]);
|
|
14924
|
+
}`, "",{"version":3,"sources":["webpack://./style/PythonCode.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;EACE,YAAY;EACZ,YAAY;EACZ,WAAW;EACX,oBAAoB;EACpB,wBAAwB;EACxB,0BAA0B;EAC1B,gBAAgB;AAClB;;AAEA;EACE,2BAA2B;AAC7B;;AAEA;EACE,mCAAmC;EACnC,6BAA6B;AAC/B;;AAEA;EACE;;;;KAIG;EACH,kBAAkB;AACpB","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n.code-block-python-code pre {\n flex-grow: 1;\n height: 100%;\n width: 100%;\n margin: 0 !important;\n padding: 10px !important;\n font-size: 12px !important;\n overflow-x: auto;\n}\n\n.code-block-python-code code {\n white-space: pre !important;\n}\n\n.code-block-python-code .jp-RenderedHTMLCommon {\n /* Remove default Jupyter padding */\n padding-right: 0px !important;\n}\n\n.code-block-python-code .jp-RenderedHTMLCommon>*:last-child {\n /* \n Remove the default Jupyter ending margin \n so that the rendered code is flush with the bottom\n of the CodeMessagePart\n */\n margin-bottom: 0px;\n}"],"sourceRoot":""}]);
|
|
13160
14925
|
// Exports
|
|
13161
14926
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
13162
14927
|
|
|
@@ -13852,441 +15617,32 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
13852
15617
|
background-color: var(--purple-400);
|
|
13853
15618
|
}
|
|
13854
15619
|
|
|
13855
|
-
.button-
|
|
13856
|
-
|
|
13857
|
-
|
|
13858
|
-
|
|
13859
|
-
.button-width-fit-contents {
|
|
13860
|
-
width: fit-content;
|
|
13861
|
-
}
|
|
13862
|
-
|
|
13863
|
-
.button-small {
|
|
13864
|
-
height: 20px;
|
|
13865
|
-
font-size: 12px;
|
|
13866
|
-
padding: 2px 5px;
|
|
13867
|
-
}
|
|
13868
|
-
`, "",{"version":3,"sources":["webpack://./style/button.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;;;;CAIC;;AAED;EACE,YAAY;EACZ,kBAAkB;EAClB,eAAe;EACf,eAAe;EACf,2EAA2E;EAC3E,mBAAmB;EACnB,iBAAiB;AACnB;;AAEA;EACE,kCAAkC;EAClC,kCAAkC;AACpC;;AAEA;EACE,kCAAkC;AACpC;;AAEA;EACE,gCAAgC;EAChC,gCAAgC;AAClC;;AAEA;EACE,gCAAgC;AAClC;;AAEA;EACE,yCAAyC;EACzC,+CAA+C;AACjD;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,mCAAmC;EACnC,mCAAmC;AACrC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,YAAY;EACZ,eAAe;EACf,gBAAgB;AAClB","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n/* \n Classes that can be used for any button, making it easier to keep \n the theme consistent. For example, use them to make a textButton or\n textAndIconButton green.\n*/\n\n.button-base {\n border: none;\n border-radius: 3px;\n cursor: pointer;\n font-size: 14px;\n /* Make sure the button grows large enough so that the text does not wrap */\n white-space: nowrap;\n padding: 5px 10px;\n}\n\n.button-green {\n background-color: var(--green-400);\n color: var(--green-900) !important;\n}\n\n.button-green:hover {\n background-color: var(--green-500);\n}\n\n.button-red {\n background-color: var(--red-400);\n color: var(--red-900) !important;\n}\n\n.button-red:hover {\n background-color: var(--red-500);\n}\n\n.button-gray {\n background-color: var(--jp-layout-color2);\n color: var(--jp-content-font-color1) !important;\n}\n\n.button-gray:hover {\n background-color: var(--jp-layout-color3);\n}\n\n.button-purple {\n background-color: var(--purple-300);\n color: var(--purple-700) !important;\n}\n\n.button-purple:hover {\n background-color: var(--purple-400);\n}\n\n.button-width-block {\n width: 100%;\n}\n\n.button-width-fit-contents {\n width: fit-content;\n}\n\n.button-small {\n height: 20px;\n font-size: 12px;\n padding: 2px 5px;\n}\n"],"sourceRoot":""}]);
|
|
13869
|
-
// Exports
|
|
13870
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
13871
|
-
|
|
13872
|
-
|
|
13873
|
-
/***/ }),
|
|
13874
|
-
|
|
13875
|
-
/***/ "./node_modules/css-loader/dist/runtime/api.js":
|
|
13876
|
-
/*!*****************************************************!*\
|
|
13877
|
-
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
|
|
13878
|
-
\*****************************************************/
|
|
13879
|
-
/***/ ((module) => {
|
|
13880
|
-
|
|
13881
|
-
|
|
13882
|
-
|
|
13883
|
-
/*
|
|
13884
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
13885
|
-
Author Tobias Koppers @sokra
|
|
13886
|
-
*/
|
|
13887
|
-
module.exports = function (cssWithMappingToString) {
|
|
13888
|
-
var list = [];
|
|
13889
|
-
|
|
13890
|
-
// return the list of modules as css string
|
|
13891
|
-
list.toString = function toString() {
|
|
13892
|
-
return this.map(function (item) {
|
|
13893
|
-
var content = "";
|
|
13894
|
-
var needLayer = typeof item[5] !== "undefined";
|
|
13895
|
-
if (item[4]) {
|
|
13896
|
-
content += "@supports (".concat(item[4], ") {");
|
|
13897
|
-
}
|
|
13898
|
-
if (item[2]) {
|
|
13899
|
-
content += "@media ".concat(item[2], " {");
|
|
13900
|
-
}
|
|
13901
|
-
if (needLayer) {
|
|
13902
|
-
content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
|
|
13903
|
-
}
|
|
13904
|
-
content += cssWithMappingToString(item);
|
|
13905
|
-
if (needLayer) {
|
|
13906
|
-
content += "}";
|
|
13907
|
-
}
|
|
13908
|
-
if (item[2]) {
|
|
13909
|
-
content += "}";
|
|
13910
|
-
}
|
|
13911
|
-
if (item[4]) {
|
|
13912
|
-
content += "}";
|
|
13913
|
-
}
|
|
13914
|
-
return content;
|
|
13915
|
-
}).join("");
|
|
13916
|
-
};
|
|
13917
|
-
|
|
13918
|
-
// import a list of modules into the list
|
|
13919
|
-
list.i = function i(modules, media, dedupe, supports, layer) {
|
|
13920
|
-
if (typeof modules === "string") {
|
|
13921
|
-
modules = [[null, modules, undefined]];
|
|
13922
|
-
}
|
|
13923
|
-
var alreadyImportedModules = {};
|
|
13924
|
-
if (dedupe) {
|
|
13925
|
-
for (var k = 0; k < this.length; k++) {
|
|
13926
|
-
var id = this[k][0];
|
|
13927
|
-
if (id != null) {
|
|
13928
|
-
alreadyImportedModules[id] = true;
|
|
13929
|
-
}
|
|
13930
|
-
}
|
|
13931
|
-
}
|
|
13932
|
-
for (var _k = 0; _k < modules.length; _k++) {
|
|
13933
|
-
var item = [].concat(modules[_k]);
|
|
13934
|
-
if (dedupe && alreadyImportedModules[item[0]]) {
|
|
13935
|
-
continue;
|
|
13936
|
-
}
|
|
13937
|
-
if (typeof layer !== "undefined") {
|
|
13938
|
-
if (typeof item[5] === "undefined") {
|
|
13939
|
-
item[5] = layer;
|
|
13940
|
-
} else {
|
|
13941
|
-
item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
|
|
13942
|
-
item[5] = layer;
|
|
13943
|
-
}
|
|
13944
|
-
}
|
|
13945
|
-
if (media) {
|
|
13946
|
-
if (!item[2]) {
|
|
13947
|
-
item[2] = media;
|
|
13948
|
-
} else {
|
|
13949
|
-
item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
|
|
13950
|
-
item[2] = media;
|
|
13951
|
-
}
|
|
13952
|
-
}
|
|
13953
|
-
if (supports) {
|
|
13954
|
-
if (!item[4]) {
|
|
13955
|
-
item[4] = "".concat(supports);
|
|
13956
|
-
} else {
|
|
13957
|
-
item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
|
|
13958
|
-
item[4] = supports;
|
|
13959
|
-
}
|
|
13960
|
-
}
|
|
13961
|
-
list.push(item);
|
|
13962
|
-
}
|
|
13963
|
-
};
|
|
13964
|
-
return list;
|
|
13965
|
-
};
|
|
13966
|
-
|
|
13967
|
-
/***/ }),
|
|
13968
|
-
|
|
13969
|
-
/***/ "./node_modules/css-loader/dist/runtime/sourceMaps.js":
|
|
13970
|
-
/*!************************************************************!*\
|
|
13971
|
-
!*** ./node_modules/css-loader/dist/runtime/sourceMaps.js ***!
|
|
13972
|
-
\************************************************************/
|
|
13973
|
-
/***/ ((module) => {
|
|
13974
|
-
|
|
13975
|
-
|
|
13976
|
-
|
|
13977
|
-
module.exports = function (item) {
|
|
13978
|
-
var content = item[1];
|
|
13979
|
-
var cssMapping = item[3];
|
|
13980
|
-
if (!cssMapping) {
|
|
13981
|
-
return content;
|
|
13982
|
-
}
|
|
13983
|
-
if (typeof btoa === "function") {
|
|
13984
|
-
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));
|
|
13985
|
-
var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
|
|
13986
|
-
var sourceMapping = "/*# ".concat(data, " */");
|
|
13987
|
-
return [content].concat([sourceMapping]).join("\n");
|
|
13988
|
-
}
|
|
13989
|
-
return [content].join("\n");
|
|
13990
|
-
};
|
|
13991
|
-
|
|
13992
|
-
/***/ }),
|
|
13993
|
-
|
|
13994
|
-
/***/ "./node_modules/react-dom/client.js":
|
|
13995
|
-
/*!******************************************!*\
|
|
13996
|
-
!*** ./node_modules/react-dom/client.js ***!
|
|
13997
|
-
\******************************************/
|
|
13998
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
13999
|
-
|
|
14000
|
-
|
|
14001
|
-
|
|
14002
|
-
var m = __webpack_require__(/*! react-dom */ "webpack/sharing/consume/default/react-dom");
|
|
14003
|
-
if (false) {} else {
|
|
14004
|
-
var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
|
|
14005
|
-
exports.createRoot = function(c, o) {
|
|
14006
|
-
i.usingClientEntryPoint = true;
|
|
14007
|
-
try {
|
|
14008
|
-
return m.createRoot(c, o);
|
|
14009
|
-
} finally {
|
|
14010
|
-
i.usingClientEntryPoint = false;
|
|
14011
|
-
}
|
|
14012
|
-
};
|
|
14013
|
-
exports.hydrateRoot = function(c, h, o) {
|
|
14014
|
-
i.usingClientEntryPoint = true;
|
|
14015
|
-
try {
|
|
14016
|
-
return m.hydrateRoot(c, h, o);
|
|
14017
|
-
} finally {
|
|
14018
|
-
i.usingClientEntryPoint = false;
|
|
14019
|
-
}
|
|
14020
|
-
};
|
|
14021
|
-
}
|
|
14022
|
-
|
|
14023
|
-
|
|
14024
|
-
/***/ }),
|
|
14025
|
-
|
|
14026
|
-
/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
|
|
14027
|
-
/*!****************************************************************************!*\
|
|
14028
|
-
!*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
|
|
14029
|
-
\****************************************************************************/
|
|
14030
|
-
/***/ ((module) => {
|
|
14031
|
-
|
|
14032
|
-
|
|
14033
|
-
|
|
14034
|
-
var stylesInDOM = [];
|
|
14035
|
-
function getIndexByIdentifier(identifier) {
|
|
14036
|
-
var result = -1;
|
|
14037
|
-
for (var i = 0; i < stylesInDOM.length; i++) {
|
|
14038
|
-
if (stylesInDOM[i].identifier === identifier) {
|
|
14039
|
-
result = i;
|
|
14040
|
-
break;
|
|
14041
|
-
}
|
|
14042
|
-
}
|
|
14043
|
-
return result;
|
|
14044
|
-
}
|
|
14045
|
-
function modulesToDom(list, options) {
|
|
14046
|
-
var idCountMap = {};
|
|
14047
|
-
var identifiers = [];
|
|
14048
|
-
for (var i = 0; i < list.length; i++) {
|
|
14049
|
-
var item = list[i];
|
|
14050
|
-
var id = options.base ? item[0] + options.base : item[0];
|
|
14051
|
-
var count = idCountMap[id] || 0;
|
|
14052
|
-
var identifier = "".concat(id, " ").concat(count);
|
|
14053
|
-
idCountMap[id] = count + 1;
|
|
14054
|
-
var indexByIdentifier = getIndexByIdentifier(identifier);
|
|
14055
|
-
var obj = {
|
|
14056
|
-
css: item[1],
|
|
14057
|
-
media: item[2],
|
|
14058
|
-
sourceMap: item[3],
|
|
14059
|
-
supports: item[4],
|
|
14060
|
-
layer: item[5]
|
|
14061
|
-
};
|
|
14062
|
-
if (indexByIdentifier !== -1) {
|
|
14063
|
-
stylesInDOM[indexByIdentifier].references++;
|
|
14064
|
-
stylesInDOM[indexByIdentifier].updater(obj);
|
|
14065
|
-
} else {
|
|
14066
|
-
var updater = addElementStyle(obj, options);
|
|
14067
|
-
options.byIndex = i;
|
|
14068
|
-
stylesInDOM.splice(i, 0, {
|
|
14069
|
-
identifier: identifier,
|
|
14070
|
-
updater: updater,
|
|
14071
|
-
references: 1
|
|
14072
|
-
});
|
|
14073
|
-
}
|
|
14074
|
-
identifiers.push(identifier);
|
|
14075
|
-
}
|
|
14076
|
-
return identifiers;
|
|
14077
|
-
}
|
|
14078
|
-
function addElementStyle(obj, options) {
|
|
14079
|
-
var api = options.domAPI(options);
|
|
14080
|
-
api.update(obj);
|
|
14081
|
-
var updater = function updater(newObj) {
|
|
14082
|
-
if (newObj) {
|
|
14083
|
-
if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {
|
|
14084
|
-
return;
|
|
14085
|
-
}
|
|
14086
|
-
api.update(obj = newObj);
|
|
14087
|
-
} else {
|
|
14088
|
-
api.remove();
|
|
14089
|
-
}
|
|
14090
|
-
};
|
|
14091
|
-
return updater;
|
|
14092
|
-
}
|
|
14093
|
-
module.exports = function (list, options) {
|
|
14094
|
-
options = options || {};
|
|
14095
|
-
list = list || [];
|
|
14096
|
-
var lastIdentifiers = modulesToDom(list, options);
|
|
14097
|
-
return function update(newList) {
|
|
14098
|
-
newList = newList || [];
|
|
14099
|
-
for (var i = 0; i < lastIdentifiers.length; i++) {
|
|
14100
|
-
var identifier = lastIdentifiers[i];
|
|
14101
|
-
var index = getIndexByIdentifier(identifier);
|
|
14102
|
-
stylesInDOM[index].references--;
|
|
14103
|
-
}
|
|
14104
|
-
var newLastIdentifiers = modulesToDom(newList, options);
|
|
14105
|
-
for (var _i = 0; _i < lastIdentifiers.length; _i++) {
|
|
14106
|
-
var _identifier = lastIdentifiers[_i];
|
|
14107
|
-
var _index = getIndexByIdentifier(_identifier);
|
|
14108
|
-
if (stylesInDOM[_index].references === 0) {
|
|
14109
|
-
stylesInDOM[_index].updater();
|
|
14110
|
-
stylesInDOM.splice(_index, 1);
|
|
14111
|
-
}
|
|
14112
|
-
}
|
|
14113
|
-
lastIdentifiers = newLastIdentifiers;
|
|
14114
|
-
};
|
|
14115
|
-
};
|
|
14116
|
-
|
|
14117
|
-
/***/ }),
|
|
14118
|
-
|
|
14119
|
-
/***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js":
|
|
14120
|
-
/*!********************************************************************!*\
|
|
14121
|
-
!*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***!
|
|
14122
|
-
\********************************************************************/
|
|
14123
|
-
/***/ ((module) => {
|
|
14124
|
-
|
|
14125
|
-
|
|
14126
|
-
|
|
14127
|
-
var memo = {};
|
|
14128
|
-
|
|
14129
|
-
/* istanbul ignore next */
|
|
14130
|
-
function getTarget(target) {
|
|
14131
|
-
if (typeof memo[target] === "undefined") {
|
|
14132
|
-
var styleTarget = document.querySelector(target);
|
|
14133
|
-
|
|
14134
|
-
// Special case to return head of iframe instead of iframe itself
|
|
14135
|
-
if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
|
|
14136
|
-
try {
|
|
14137
|
-
// This will throw an exception if access to iframe is blocked
|
|
14138
|
-
// due to cross-origin restrictions
|
|
14139
|
-
styleTarget = styleTarget.contentDocument.head;
|
|
14140
|
-
} catch (e) {
|
|
14141
|
-
// istanbul ignore next
|
|
14142
|
-
styleTarget = null;
|
|
14143
|
-
}
|
|
14144
|
-
}
|
|
14145
|
-
memo[target] = styleTarget;
|
|
14146
|
-
}
|
|
14147
|
-
return memo[target];
|
|
14148
|
-
}
|
|
14149
|
-
|
|
14150
|
-
/* istanbul ignore next */
|
|
14151
|
-
function insertBySelector(insert, style) {
|
|
14152
|
-
var target = getTarget(insert);
|
|
14153
|
-
if (!target) {
|
|
14154
|
-
throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
|
|
14155
|
-
}
|
|
14156
|
-
target.appendChild(style);
|
|
14157
|
-
}
|
|
14158
|
-
module.exports = insertBySelector;
|
|
14159
|
-
|
|
14160
|
-
/***/ }),
|
|
14161
|
-
|
|
14162
|
-
/***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js":
|
|
14163
|
-
/*!**********************************************************************!*\
|
|
14164
|
-
!*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
|
|
14165
|
-
\**********************************************************************/
|
|
14166
|
-
/***/ ((module) => {
|
|
14167
|
-
|
|
14168
|
-
|
|
14169
|
-
|
|
14170
|
-
/* istanbul ignore next */
|
|
14171
|
-
function insertStyleElement(options) {
|
|
14172
|
-
var element = document.createElement("style");
|
|
14173
|
-
options.setAttributes(element, options.attributes);
|
|
14174
|
-
options.insert(element, options.options);
|
|
14175
|
-
return element;
|
|
14176
|
-
}
|
|
14177
|
-
module.exports = insertStyleElement;
|
|
14178
|
-
|
|
14179
|
-
/***/ }),
|
|
14180
|
-
|
|
14181
|
-
/***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
|
|
14182
|
-
/*!**********************************************************************************!*\
|
|
14183
|
-
!*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
|
|
14184
|
-
\**********************************************************************************/
|
|
14185
|
-
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
14186
|
-
|
|
14187
|
-
|
|
14188
|
-
|
|
14189
|
-
/* istanbul ignore next */
|
|
14190
|
-
function setAttributesWithoutAttributes(styleElement) {
|
|
14191
|
-
var nonce = true ? __webpack_require__.nc : 0;
|
|
14192
|
-
if (nonce) {
|
|
14193
|
-
styleElement.setAttribute("nonce", nonce);
|
|
14194
|
-
}
|
|
15620
|
+
.button-dark-purple {
|
|
15621
|
+
background-color: var(--purple-500);
|
|
15622
|
+
color: var(--white) !important;
|
|
14195
15623
|
}
|
|
14196
|
-
module.exports = setAttributesWithoutAttributes;
|
|
14197
|
-
|
|
14198
|
-
/***/ }),
|
|
14199
|
-
|
|
14200
|
-
/***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js":
|
|
14201
|
-
/*!***************************************************************!*\
|
|
14202
|
-
!*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
|
|
14203
|
-
\***************************************************************/
|
|
14204
|
-
/***/ ((module) => {
|
|
14205
|
-
|
|
14206
|
-
|
|
14207
|
-
|
|
14208
|
-
/* istanbul ignore next */
|
|
14209
|
-
function apply(styleElement, options, obj) {
|
|
14210
|
-
var css = "";
|
|
14211
|
-
if (obj.supports) {
|
|
14212
|
-
css += "@supports (".concat(obj.supports, ") {");
|
|
14213
|
-
}
|
|
14214
|
-
if (obj.media) {
|
|
14215
|
-
css += "@media ".concat(obj.media, " {");
|
|
14216
|
-
}
|
|
14217
|
-
var needLayer = typeof obj.layer !== "undefined";
|
|
14218
|
-
if (needLayer) {
|
|
14219
|
-
css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
|
|
14220
|
-
}
|
|
14221
|
-
css += obj.css;
|
|
14222
|
-
if (needLayer) {
|
|
14223
|
-
css += "}";
|
|
14224
|
-
}
|
|
14225
|
-
if (obj.media) {
|
|
14226
|
-
css += "}";
|
|
14227
|
-
}
|
|
14228
|
-
if (obj.supports) {
|
|
14229
|
-
css += "}";
|
|
14230
|
-
}
|
|
14231
|
-
var sourceMap = obj.sourceMap;
|
|
14232
|
-
if (sourceMap && typeof btoa !== "undefined") {
|
|
14233
|
-
css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
|
|
14234
|
-
}
|
|
14235
15624
|
|
|
14236
|
-
|
|
14237
|
-
|
|
14238
|
-
options.styleTagTransform(css, styleElement, options.options);
|
|
14239
|
-
}
|
|
14240
|
-
function removeStyleElement(styleElement) {
|
|
14241
|
-
// istanbul ignore if
|
|
14242
|
-
if (styleElement.parentNode === null) {
|
|
14243
|
-
return false;
|
|
14244
|
-
}
|
|
14245
|
-
styleElement.parentNode.removeChild(styleElement);
|
|
15625
|
+
.button-dark-purple:hover {
|
|
15626
|
+
background-color: var(--purple-600);
|
|
14246
15627
|
}
|
|
14247
15628
|
|
|
14248
|
-
|
|
14249
|
-
|
|
14250
|
-
if (typeof document === "undefined") {
|
|
14251
|
-
return {
|
|
14252
|
-
update: function update() {},
|
|
14253
|
-
remove: function remove() {}
|
|
14254
|
-
};
|
|
14255
|
-
}
|
|
14256
|
-
var styleElement = options.insertStyleElement(options);
|
|
14257
|
-
return {
|
|
14258
|
-
update: function update(obj) {
|
|
14259
|
-
apply(styleElement, options, obj);
|
|
14260
|
-
},
|
|
14261
|
-
remove: function remove() {
|
|
14262
|
-
removeStyleElement(styleElement);
|
|
14263
|
-
}
|
|
14264
|
-
};
|
|
15629
|
+
.button-width-block {
|
|
15630
|
+
width: 100%;
|
|
14265
15631
|
}
|
|
14266
|
-
module.exports = domAPI;
|
|
14267
|
-
|
|
14268
|
-
/***/ }),
|
|
14269
|
-
|
|
14270
|
-
/***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js":
|
|
14271
|
-
/*!*********************************************************************!*\
|
|
14272
|
-
!*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
|
|
14273
|
-
\*********************************************************************/
|
|
14274
|
-
/***/ ((module) => {
|
|
14275
|
-
|
|
14276
15632
|
|
|
15633
|
+
.button-width-fit-contents {
|
|
15634
|
+
width: fit-content;
|
|
15635
|
+
}
|
|
14277
15636
|
|
|
14278
|
-
|
|
14279
|
-
|
|
14280
|
-
|
|
14281
|
-
|
|
14282
|
-
} else {
|
|
14283
|
-
while (styleElement.firstChild) {
|
|
14284
|
-
styleElement.removeChild(styleElement.firstChild);
|
|
14285
|
-
}
|
|
14286
|
-
styleElement.appendChild(document.createTextNode(css));
|
|
14287
|
-
}
|
|
15637
|
+
.button-small {
|
|
15638
|
+
height: 20px;
|
|
15639
|
+
font-size: 12px;
|
|
15640
|
+
padding: 2px 5px;
|
|
14288
15641
|
}
|
|
14289
|
-
|
|
15642
|
+
`, "",{"version":3,"sources":["webpack://./style/button.css"],"names":[],"mappings":"AAAA;;;EAGE;;AAEF;;;;CAIC;;AAED;EACE,YAAY;EACZ,kBAAkB;EAClB,eAAe;EACf,eAAe;EACf,2EAA2E;EAC3E,mBAAmB;EACnB,iBAAiB;AACnB;;AAEA;EACE,kCAAkC;EAClC,kCAAkC;AACpC;;AAEA;EACE,kCAAkC;AACpC;;AAEA;EACE,gCAAgC;EAChC,gCAAgC;AAClC;;AAEA;EACE,gCAAgC;AAClC;;AAEA;EACE,yCAAyC;EACzC,+CAA+C;AACjD;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,mCAAmC;EACnC,mCAAmC;AACrC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,mCAAmC;EACnC,8BAA8B;AAChC;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,YAAY;EACZ,eAAe;EACf,gBAAgB;AAClB","sourcesContent":["/*\n * Copyright (c) Saga Inc.\n * Distributed under the terms of the GNU Affero General Public License v3.0 License.\n */\n\n/* \n Classes that can be used for any button, making it easier to keep \n the theme consistent. For example, use them to make a textButton or\n textAndIconButton green.\n*/\n\n.button-base {\n border: none;\n border-radius: 3px;\n cursor: pointer;\n font-size: 14px;\n /* Make sure the button grows large enough so that the text does not wrap */\n white-space: nowrap;\n padding: 5px 10px;\n}\n\n.button-green {\n background-color: var(--green-400);\n color: var(--green-900) !important;\n}\n\n.button-green:hover {\n background-color: var(--green-500);\n}\n\n.button-red {\n background-color: var(--red-400);\n color: var(--red-900) !important;\n}\n\n.button-red:hover {\n background-color: var(--red-500);\n}\n\n.button-gray {\n background-color: var(--jp-layout-color2);\n color: var(--jp-content-font-color1) !important;\n}\n\n.button-gray:hover {\n background-color: var(--jp-layout-color3);\n}\n\n.button-purple {\n background-color: var(--purple-300);\n color: var(--purple-700) !important;\n}\n\n.button-purple:hover {\n background-color: var(--purple-400);\n}\n\n.button-dark-purple {\n background-color: var(--purple-500);\n color: var(--white) !important;\n}\n\n.button-dark-purple:hover {\n background-color: var(--purple-600);\n}\n\n.button-width-block {\n width: 100%;\n}\n\n.button-width-fit-contents {\n width: fit-content;\n}\n\n.button-small {\n height: 20px;\n font-size: 12px;\n padding: 2px 5px;\n}\n"],"sourceRoot":""}]);
|
|
15643
|
+
// Exports
|
|
15644
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
15645
|
+
|
|
14290
15646
|
|
|
14291
15647
|
/***/ }),
|
|
14292
15648
|
|
|
@@ -14402,6 +15758,168 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
|
|
|
14402
15758
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_AgentComponentHeader_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_AgentComponentHeader_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_AgentComponentHeader_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
14403
15759
|
|
|
14404
15760
|
|
|
15761
|
+
/***/ }),
|
|
15762
|
+
|
|
15763
|
+
/***/ "./style/AgentToolUIComponent.css":
|
|
15764
|
+
/*!****************************************!*\
|
|
15765
|
+
!*** ./style/AgentToolUIComponent.css ***!
|
|
15766
|
+
\****************************************/
|
|
15767
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
15768
|
+
|
|
15769
|
+
__webpack_require__.r(__webpack_exports__);
|
|
15770
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
15771
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
15772
|
+
/* harmony export */ });
|
|
15773
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
15774
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
15775
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
15776
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
15777
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
15778
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
15779
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
15780
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
15781
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
15782
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
15783
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
15784
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
15785
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_AgentToolUIComponent_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./AgentToolUIComponent.css */ "./node_modules/css-loader/dist/cjs.js!./style/AgentToolUIComponent.css");
|
|
15786
|
+
|
|
15787
|
+
|
|
15788
|
+
|
|
15789
|
+
|
|
15790
|
+
|
|
15791
|
+
|
|
15792
|
+
|
|
15793
|
+
|
|
15794
|
+
|
|
15795
|
+
|
|
15796
|
+
|
|
15797
|
+
var options = {};
|
|
15798
|
+
|
|
15799
|
+
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
15800
|
+
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
15801
|
+
|
|
15802
|
+
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
15803
|
+
|
|
15804
|
+
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
15805
|
+
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
15806
|
+
|
|
15807
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_AgentToolUIComponent_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
15808
|
+
|
|
15809
|
+
|
|
15810
|
+
|
|
15811
|
+
|
|
15812
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_AgentToolUIComponent_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_AgentToolUIComponent_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_AgentToolUIComponent_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
15813
|
+
|
|
15814
|
+
|
|
15815
|
+
/***/ }),
|
|
15816
|
+
|
|
15817
|
+
/***/ "./style/AlertBlock.css":
|
|
15818
|
+
/*!******************************!*\
|
|
15819
|
+
!*** ./style/AlertBlock.css ***!
|
|
15820
|
+
\******************************/
|
|
15821
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
15822
|
+
|
|
15823
|
+
__webpack_require__.r(__webpack_exports__);
|
|
15824
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
15825
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
15826
|
+
/* harmony export */ });
|
|
15827
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
15828
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
15829
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
15830
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
15831
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
15832
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
15833
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
15834
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
15835
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
15836
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
15837
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
15838
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
15839
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_AlertBlock_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./AlertBlock.css */ "./node_modules/css-loader/dist/cjs.js!./style/AlertBlock.css");
|
|
15840
|
+
|
|
15841
|
+
|
|
15842
|
+
|
|
15843
|
+
|
|
15844
|
+
|
|
15845
|
+
|
|
15846
|
+
|
|
15847
|
+
|
|
15848
|
+
|
|
15849
|
+
|
|
15850
|
+
|
|
15851
|
+
var options = {};
|
|
15852
|
+
|
|
15853
|
+
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
15854
|
+
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
15855
|
+
|
|
15856
|
+
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
15857
|
+
|
|
15858
|
+
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
15859
|
+
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
15860
|
+
|
|
15861
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_AlertBlock_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
15862
|
+
|
|
15863
|
+
|
|
15864
|
+
|
|
15865
|
+
|
|
15866
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_AlertBlock_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_AlertBlock_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_AlertBlock_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
15867
|
+
|
|
15868
|
+
|
|
15869
|
+
/***/ }),
|
|
15870
|
+
|
|
15871
|
+
/***/ "./style/AppsList.css":
|
|
15872
|
+
/*!****************************!*\
|
|
15873
|
+
!*** ./style/AppsList.css ***!
|
|
15874
|
+
\****************************/
|
|
15875
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
15876
|
+
|
|
15877
|
+
__webpack_require__.r(__webpack_exports__);
|
|
15878
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
15879
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
15880
|
+
/* harmony export */ });
|
|
15881
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
15882
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
15883
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
15884
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
15885
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
15886
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
15887
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
15888
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
15889
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
15890
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
15891
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
15892
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
15893
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_AppsList_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./AppsList.css */ "./node_modules/css-loader/dist/cjs.js!./style/AppsList.css");
|
|
15894
|
+
|
|
15895
|
+
|
|
15896
|
+
|
|
15897
|
+
|
|
15898
|
+
|
|
15899
|
+
|
|
15900
|
+
|
|
15901
|
+
|
|
15902
|
+
|
|
15903
|
+
|
|
15904
|
+
|
|
15905
|
+
var options = {};
|
|
15906
|
+
|
|
15907
|
+
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
15908
|
+
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
15909
|
+
|
|
15910
|
+
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
15911
|
+
|
|
15912
|
+
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
15913
|
+
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
15914
|
+
|
|
15915
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_AppsList_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
15916
|
+
|
|
15917
|
+
|
|
15918
|
+
|
|
15919
|
+
|
|
15920
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_AppsList_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_AppsList_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_AppsList_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
15921
|
+
|
|
15922
|
+
|
|
14405
15923
|
/***/ }),
|
|
14406
15924
|
|
|
14407
15925
|
/***/ "./style/AssumptionTool.css":
|
|
@@ -14456,6 +15974,60 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
|
|
|
14456
15974
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_AssumptionTool_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_AssumptionTool_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_AssumptionTool_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
14457
15975
|
|
|
14458
15976
|
|
|
15977
|
+
/***/ }),
|
|
15978
|
+
|
|
15979
|
+
/***/ "./style/AuthPopup.css":
|
|
15980
|
+
/*!*****************************!*\
|
|
15981
|
+
!*** ./style/AuthPopup.css ***!
|
|
15982
|
+
\*****************************/
|
|
15983
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
15984
|
+
|
|
15985
|
+
__webpack_require__.r(__webpack_exports__);
|
|
15986
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
15987
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
15988
|
+
/* harmony export */ });
|
|
15989
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
15990
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
15991
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
15992
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
15993
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
15994
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
15995
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
15996
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
15997
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
15998
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
15999
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
16000
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
16001
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_AuthPopup_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./AuthPopup.css */ "./node_modules/css-loader/dist/cjs.js!./style/AuthPopup.css");
|
|
16002
|
+
|
|
16003
|
+
|
|
16004
|
+
|
|
16005
|
+
|
|
16006
|
+
|
|
16007
|
+
|
|
16008
|
+
|
|
16009
|
+
|
|
16010
|
+
|
|
16011
|
+
|
|
16012
|
+
|
|
16013
|
+
var options = {};
|
|
16014
|
+
|
|
16015
|
+
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
16016
|
+
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
16017
|
+
|
|
16018
|
+
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
16019
|
+
|
|
16020
|
+
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
16021
|
+
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
16022
|
+
|
|
16023
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_AuthPopup_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
16024
|
+
|
|
16025
|
+
|
|
16026
|
+
|
|
16027
|
+
|
|
16028
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_AuthPopup_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_AuthPopup_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_AuthPopup_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
16029
|
+
|
|
16030
|
+
|
|
14459
16031
|
/***/ }),
|
|
14460
16032
|
|
|
14461
16033
|
/***/ "./style/CTACarousel.css":
|
|
@@ -15104,60 +16676,6 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
|
|
|
15104
16676
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ErrorMimeRendererPlugin_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_ErrorMimeRendererPlugin_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_ErrorMimeRendererPlugin_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
15105
16677
|
|
|
15106
16678
|
|
|
15107
|
-
/***/ }),
|
|
15108
|
-
|
|
15109
|
-
/***/ "./style/GetCellOutputToolUI.css":
|
|
15110
|
-
/*!***************************************!*\
|
|
15111
|
-
!*** ./style/GetCellOutputToolUI.css ***!
|
|
15112
|
-
\***************************************/
|
|
15113
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
15114
|
-
|
|
15115
|
-
__webpack_require__.r(__webpack_exports__);
|
|
15116
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
15117
|
-
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
15118
|
-
/* harmony export */ });
|
|
15119
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
15120
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
15121
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
15122
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
15123
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
15124
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
15125
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
15126
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
15127
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
15128
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
15129
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
15130
|
-
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
15131
|
-
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_GetCellOutputToolUI_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./GetCellOutputToolUI.css */ "./node_modules/css-loader/dist/cjs.js!./style/GetCellOutputToolUI.css");
|
|
15132
|
-
|
|
15133
|
-
|
|
15134
|
-
|
|
15135
|
-
|
|
15136
|
-
|
|
15137
|
-
|
|
15138
|
-
|
|
15139
|
-
|
|
15140
|
-
|
|
15141
|
-
|
|
15142
|
-
|
|
15143
|
-
var options = {};
|
|
15144
|
-
|
|
15145
|
-
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
15146
|
-
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
15147
|
-
|
|
15148
|
-
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
15149
|
-
|
|
15150
|
-
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
15151
|
-
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
15152
|
-
|
|
15153
|
-
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_GetCellOutputToolUI_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
15154
|
-
|
|
15155
|
-
|
|
15156
|
-
|
|
15157
|
-
|
|
15158
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_GetCellOutputToolUI_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_GetCellOutputToolUI_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_GetCellOutputToolUI_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
15159
|
-
|
|
15160
|
-
|
|
15161
16679
|
/***/ }),
|
|
15162
16680
|
|
|
15163
16681
|
/***/ "./style/IconButton.css":
|
|
@@ -15917,4 +17435,4 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
|
|
|
15917
17435
|
/***/ })
|
|
15918
17436
|
|
|
15919
17437
|
}]);
|
|
15920
|
-
//# sourceMappingURL=lib_index_js.
|
|
17438
|
+
//# sourceMappingURL=lib_index_js.a9a35b6fcc54a7bcb32c.js.map
|