mito-ai 0.1.41__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 +7 -0
- mito_ai/_version.py +1 -1
- 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/models.py +2 -0
- mito_ai/completions/prompt_builders/utils.py +7 -0
- mito_ai/tests/completions/completion_handlers_utils_test.py +51 -0
- {mito_ai-0.1.41.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/build_log.json +100 -100
- {mito_ai-0.1.41.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/package.json +2 -2
- {mito_ai-0.1.41.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/schemas/mito_ai/package.json.orig +1 -1
- mito_ai-0.1.41.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.01a962c68c8fae380f30.js → mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.a9a35b6fcc54a7bcb32c.js +807 -44
- 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.41.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.9a70f033717ba8689564.js → mito_ai-0.1.42.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.c7d9d8635826165de52e.js +23 -23
- 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.41.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_tokenProvider_tokenProvider_mjs.16430abf3466c3153f59.js → 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 +2977 -610
- 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.41.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_ui-react_dist_esm_index_mjs.61289bff0db44828605b.js → 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 +1 -481
- 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.41.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_core_dist_esm_singleton_apis_fetchAuthSession_mjs-node_modul-758875.dc495fd682071d97070c.js → 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 +2 -60
- 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.41.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.41.dist-info → mito_ai-0.1.42.dist-info}/METADATA +1 -1
- {mito_ai-0.1.41.dist-info → mito_ai-0.1.42.dist-info}/RECORD +44 -40
- mito_ai-0.1.41.data/data/share/jupyter/labextensions/mito_ai/static/lib_index_js.01a962c68c8fae380f30.js.map +0 -1
- mito_ai-0.1.41.data/data/share/jupyter/labextensions/mito_ai/static/node_modules_aws-amplify_core_dist_esm_singleton_apis_fetchAuthSession_mjs.182232e7bc6311fe4528.js +0 -63
- mito_ai-0.1.41.data/data/share/jupyter/labextensions/mito_ai/static/node_modules_aws-amplify_core_dist_esm_singleton_apis_fetchAuthSession_mjs.182232e7bc6311fe4528.js.map +0 -1
- mito_ai-0.1.41.data/data/share/jupyter/labextensions/mito_ai/static/remoteEntry.9a70f033717ba8689564.js.map +0 -1
- mito_ai-0.1.41.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_auth_dist_esm_providers_cognito_tokenProvider_tokenProvider_mjs.16430abf3466c3153f59.js.map +0 -1
- mito_ai-0.1.41.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_core_dist_esm_singleton_Amplify_mjs.3c0035b95fe369aede82.js +0 -2345
- mito_ai-0.1.41.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_core_dist_esm_singleton_Amplify_mjs.3c0035b95fe369aede82.js.map +0 -1
- mito_ai-0.1.41.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_core_dist_esm_singleton_apis_fetchAuthSession_mjs-node_modul-758875.dc495fd682071d97070c.js.map +0 -1
- mito_ai-0.1.41.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_ui-react_dist_esm_index_mjs.61289bff0db44828605b.js.map +0 -1
- mito_ai-0.1.41.data/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_semver_index_js.9795f79265ddb416864b.js.map +0 -1
- {mito_ai-0.1.41.data → mito_ai-0.1.42.data}/data/etc/jupyter/jupyter_server_config.d/mito_ai.json +0 -0
- {mito_ai-0.1.41.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.41.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/static/style.js +0 -0
- {mito_ai-0.1.41.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.41.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.41.data → mito_ai-0.1.42.data}/data/share/jupyter/labextensions/mito_ai/static/vendors-node_modules_aws-amplify_dist_esm_index_mjs.6bac1a8c4cc93f15f6b7.js +0 -0
- {mito_ai-0.1.41.data → 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 +0 -0
- {mito_ai-0.1.41.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.41.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.41.dist-info → mito_ai-0.1.42.dist-info}/WHEEL +0 -0
- {mito_ai-0.1.41.dist-info → mito_ai-0.1.42.dist-info}/entry_points.txt +0 -0
- {mito_ai-0.1.41.dist-info → mito_ai-0.1.42.dist-info}/licenses/LICENSE +0 -0
|
@@ -771,7 +771,8 @@ const ChatDropdown = ({ options, onSelect, filterText, maxDropdownItems = 10, is
|
|
|
771
771
|
return option.file.variable_name.toLowerCase().includes(effectiveFilterText.toLowerCase());
|
|
772
772
|
}
|
|
773
773
|
else if (option.type === 'db') {
|
|
774
|
-
return option.variable.
|
|
774
|
+
return option.variable.variable_name.toLowerCase().includes(effectiveFilterText.toLowerCase()) ||
|
|
775
|
+
option.variable.value.toLowerCase().includes(effectiveFilterText.toLowerCase());
|
|
775
776
|
}
|
|
776
777
|
else {
|
|
777
778
|
return option.rule.toLowerCase().includes(effectiveFilterText.toLowerCase());
|
|
@@ -997,15 +998,33 @@ const ChatInput = ({ app, initialContent, placeholder, onSave, onCancel, isEditi
|
|
|
997
998
|
const [dropdownFilter, setDropdownFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('');
|
|
998
999
|
const [additionalContext, setAdditionalContext] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);
|
|
999
1000
|
const [isDropdownFromButton, setIsDropdownFromButton] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
1000
|
-
const
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
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
|
+
}
|
|
1009
1028
|
};
|
|
1010
1029
|
// Debounce the active cell ID change to avoid multiple rerenders.
|
|
1011
1030
|
// We use this to avoid a flickering screen when the active cell changes.
|
|
@@ -1150,15 +1169,32 @@ const ChatInput = ({ app, initialContent, placeholder, onSave, onCancel, isEditi
|
|
|
1150
1169
|
setIsDropdownFromButton(false);
|
|
1151
1170
|
};
|
|
1152
1171
|
const mapAdditionalContext = () => {
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
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);
|
|
1159
1195
|
}
|
|
1160
|
-
return context;
|
|
1161
1196
|
});
|
|
1197
|
+
return result;
|
|
1162
1198
|
};
|
|
1163
1199
|
// Update the expandedVariables arr when the variable manager changes
|
|
1164
1200
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
@@ -1211,7 +1247,7 @@ const ChatInput = ({ app, initialContent, placeholder, onSave, onCancel, isEditi
|
|
|
1211
1247
|
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: (0,_utils_classNames__WEBPACK_IMPORTED_MODULE_5__.classNames)("chat-input-container") },
|
|
1212
1248
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: 'context-container' },
|
|
1213
1249
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_DatabaseButton__WEBPACK_IMPORTED_MODULE_6__["default"], { app: app }),
|
|
1214
|
-
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_AttachFileButton__WEBPACK_IMPORTED_MODULE_7__["default"], { onFileUploaded:
|
|
1250
|
+
react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_AttachFileButton__WEBPACK_IMPORTED_MODULE_7__["default"], { onFileUploaded: handleFileUpload, notebookTracker: notebookTracker }),
|
|
1215
1251
|
react__WEBPACK_IMPORTED_MODULE_0___default().createElement("button", { className: "context-button", onClick: () => {
|
|
1216
1252
|
var _a;
|
|
1217
1253
|
setDropdownVisible(true);
|
|
@@ -1965,6 +2001,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1965
2001
|
/* harmony import */ var _utils_scroll__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/scroll */ "./lib/utils/scroll.js");
|
|
1966
2002
|
/* harmony import */ var _utils_strings__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../utils/strings */ "./lib/utils/strings.js");
|
|
1967
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");
|
|
1968
2005
|
/* harmony import */ var _SettingsManager_SettingsManagerPlugin__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../SettingsManager/SettingsManagerPlugin */ "./lib/Extensions/SettingsManager/SettingsManagerPlugin.js");
|
|
1969
2006
|
/* harmony import */ var _CTACarousel__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./CTACarousel */ "./lib/Extensions/AiChat/CTACarousel.js");
|
|
1970
2007
|
/* harmony import */ var _CodeDiffDisplay__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./CodeDiffDisplay */ "./lib/Extensions/AiChat/CodeDiffDisplay.js");
|
|
@@ -1977,7 +2014,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1977
2014
|
/* harmony import */ var _style_button_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../style/button.css */ "./style/button.css");
|
|
1978
2015
|
/* harmony import */ var _style_ChatTaskpane_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../style/ChatTaskpane.css */ "./style/ChatTaskpane.css");
|
|
1979
2016
|
/* harmony import */ var _style_TextButton_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../style/TextButton.css */ "./style/TextButton.css");
|
|
1980
|
-
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils */ "./lib/Extensions/AiChat/utils.js");
|
|
1981
2017
|
/*
|
|
1982
2018
|
* Copyright (c) Saga Inc.
|
|
1983
2019
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
@@ -2015,6 +2051,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2015
2051
|
|
|
2016
2052
|
|
|
2017
2053
|
|
|
2054
|
+
|
|
2018
2055
|
// Internal imports - Chat components
|
|
2019
2056
|
|
|
2020
2057
|
|
|
@@ -2028,7 +2065,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2028
2065
|
|
|
2029
2066
|
|
|
2030
2067
|
|
|
2031
|
-
|
|
2032
2068
|
const AGENT_EXECUTION_DEPTH_LIMIT = 20;
|
|
2033
2069
|
const getDefaultChatHistoryManager = (notebookTracker, contextManager) => {
|
|
2034
2070
|
const chatHistoryManager = new _ChatHistoryManager__WEBPACK_IMPORTED_MODULE_7__.ChatHistoryManager(contextManager, notebookTracker);
|
|
@@ -2415,6 +2451,8 @@ const ChatTaskpane = ({ notebookTracker, renderMimeRegistry, contextManager, app
|
|
|
2415
2451
|
if (messageIndex !== undefined) {
|
|
2416
2452
|
agentExecutionMetadata.index = messageIndex;
|
|
2417
2453
|
}
|
|
2454
|
+
// Extract images from additionalContext and update agentExecutionMetadata
|
|
2455
|
+
additionalContext = (0,_utils__WEBPACK_IMPORTED_MODULE_12__.extractImagesFromContext)(additionalContext, agentExecutionMetadata);
|
|
2418
2456
|
agentExecutionMetadata.base64EncodedActiveCellOutput = await (0,_utils__WEBPACK_IMPORTED_MODULE_12__.getBase64EncodedCellOutput)(notebookTracker, sendCellIDOutput);
|
|
2419
2457
|
setChatHistoryManager(newChatHistoryManager);
|
|
2420
2458
|
setLoadingAIResponse(true);
|
|
@@ -2455,6 +2493,8 @@ const ChatTaskpane = ({ notebookTracker, renderMimeRegistry, contextManager, app
|
|
|
2455
2493
|
if (activeCellOutput !== undefined) {
|
|
2456
2494
|
chatMessageMetadata.base64EncodedActiveCellOutput = activeCellOutput;
|
|
2457
2495
|
}
|
|
2496
|
+
// Extract images from additionalContext and update chatMessageMetadata
|
|
2497
|
+
additionalContext = (0,_utils__WEBPACK_IMPORTED_MODULE_12__.extractImagesFromContext)(additionalContext, chatMessageMetadata);
|
|
2458
2498
|
const completionRequest = {
|
|
2459
2499
|
type: 'chat',
|
|
2460
2500
|
message_id: _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__.UUID.uuid4(),
|
|
@@ -3443,6 +3483,7 @@ const IChatTracker = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('m
|
|
|
3443
3483
|
|
|
3444
3484
|
__webpack_require__.r(__webpack_exports__);
|
|
3445
3485
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3486
|
+
/* harmony export */ extractImagesFromContext: () => (/* binding */ extractImagesFromContext),
|
|
3446
3487
|
/* harmony export */ getBase64EncodedCellOutput: () => (/* binding */ getBase64EncodedCellOutput)
|
|
3447
3488
|
/* harmony export */ });
|
|
3448
3489
|
/* harmony import */ var _utils_notebook__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/notebook */ "./lib/utils/notebook.js");
|
|
@@ -3472,6 +3513,18 @@ const getBase64EncodedCellOutput = async (notebookTracker, cellID) => {
|
|
|
3472
3513
|
}
|
|
3473
3514
|
return undefined;
|
|
3474
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
|
+
};
|
|
3475
3528
|
|
|
3476
3529
|
|
|
3477
3530
|
/***/ }),
|
|
@@ -3683,7 +3736,7 @@ const convertNotebookToStreamlit = async (notebookTracker, appBuilderService) =>
|
|
|
3683
3736
|
type: 'build-app',
|
|
3684
3737
|
message_id: _lumino_coreutils__WEBPACK_IMPORTED_MODULE_2__.UUID.uuid4(),
|
|
3685
3738
|
notebook_path: notebookPath,
|
|
3686
|
-
jwt_token: jwtToken
|
|
3739
|
+
jwt_token: jwtToken
|
|
3687
3740
|
});
|
|
3688
3741
|
if (response.error) {
|
|
3689
3742
|
_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Notification.emit(response.error.title, 'error', {
|
|
@@ -3828,9 +3881,11 @@ const AuthPopup = ({ isOpen, onClose, onSuccess }) => {
|
|
|
3828
3881
|
__webpack_require__.r(__webpack_exports__);
|
|
3829
3882
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3830
3883
|
/* harmony export */ getAuthHeaders: () => (/* binding */ getAuthHeaders),
|
|
3831
|
-
/* harmony export */ getJWTToken: () => (/* binding */ getJWTToken)
|
|
3884
|
+
/* harmony export */ getJWTToken: () => (/* binding */ getJWTToken),
|
|
3885
|
+
/* harmony export */ logoutAndClearJWTTokens: () => (/* binding */ logoutAndClearJWTTokens)
|
|
3832
3886
|
/* harmony export */ });
|
|
3833
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");
|
|
3834
3889
|
/* harmony import */ var _aws_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./aws-config */ "./lib/Extensions/AppBuilder/aws-config.js");
|
|
3835
3890
|
/*
|
|
3836
3891
|
* Copyright (c) Saga Inc.
|
|
@@ -3867,6 +3922,35 @@ const getAuthHeaders = async () => {
|
|
|
3867
3922
|
}
|
|
3868
3923
|
return {};
|
|
3869
3924
|
};
|
|
3925
|
+
/**
|
|
3926
|
+
* Logout user and clear all AWS Amplify/Cognito localStorage items
|
|
3927
|
+
*/
|
|
3928
|
+
const logoutAndClearJWTTokens = async () => {
|
|
3929
|
+
try {
|
|
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');
|
|
3933
|
+
}
|
|
3934
|
+
catch (error) {
|
|
3935
|
+
console.error('Error during logout:', error);
|
|
3936
|
+
throw error;
|
|
3937
|
+
}
|
|
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);
|
|
3945
|
+
}
|
|
3946
|
+
}
|
|
3947
|
+
// Remove all identified keys
|
|
3948
|
+
keysToRemove.forEach(key => {
|
|
3949
|
+
localStorage.removeItem(key);
|
|
3950
|
+
});
|
|
3951
|
+
console.log('Auth tokens cleared successfully');
|
|
3952
|
+
}
|
|
3953
|
+
};
|
|
3870
3954
|
|
|
3871
3955
|
|
|
3872
3956
|
/***/ }),
|
|
@@ -4174,6 +4258,312 @@ with tempfile.TemporaryDirectory() as temp_dir:
|
|
|
4174
4258
|
};
|
|
4175
4259
|
|
|
4176
4260
|
|
|
4261
|
+
/***/ }),
|
|
4262
|
+
|
|
4263
|
+
/***/ "./lib/Extensions/AppManager/AppsList.js":
|
|
4264
|
+
/*!***********************************************!*\
|
|
4265
|
+
!*** ./lib/Extensions/AppManager/AppsList.js ***!
|
|
4266
|
+
\***********************************************/
|
|
4267
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4268
|
+
|
|
4269
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4270
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4271
|
+
/* harmony export */ AppsList: () => (/* binding */ AppsList)
|
|
4272
|
+
/* harmony export */ });
|
|
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");
|
|
4280
|
+
/*
|
|
4281
|
+
* Copyright (c) Saga Inc.
|
|
4282
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
4283
|
+
*/
|
|
4284
|
+
//app-list.tsx
|
|
4285
|
+
|
|
4286
|
+
|
|
4287
|
+
|
|
4288
|
+
|
|
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);
|
|
4306
|
+
}
|
|
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
|
+
|
|
4177
4567
|
/***/ }),
|
|
4178
4568
|
|
|
4179
4569
|
/***/ "./lib/Extensions/ContextManager/ContextManagerPlugin.js":
|
|
@@ -7078,7 +7468,7 @@ const AttachFileButton = ({ onFileUploaded, notebookTracker }) => {
|
|
|
7078
7468
|
}
|
|
7079
7469
|
console.log(`Successfully uploaded all ${totalChunks} chunks for file: ${file.name}`);
|
|
7080
7470
|
// Notify the parent component that the file was uploaded
|
|
7081
|
-
onFileUploaded(file
|
|
7471
|
+
onFileUploaded(file);
|
|
7082
7472
|
};
|
|
7083
7473
|
const uploadChunk = async (chunk, filename, chunkNumber, totalChunks, notebookDir) => {
|
|
7084
7474
|
try {
|
|
@@ -7148,7 +7538,7 @@ const AttachFileButton = ({ onFileUploaded, notebookTracker }) => {
|
|
|
7148
7538
|
console.log('File uploaded successfully:', resp.data);
|
|
7149
7539
|
// Notify the parent component that the file was uploaded,
|
|
7150
7540
|
// which will update the context manager.
|
|
7151
|
-
onFileUploaded(file
|
|
7541
|
+
onFileUploaded(file);
|
|
7152
7542
|
}
|
|
7153
7543
|
};
|
|
7154
7544
|
return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { style: { position: 'relative' } },
|
|
@@ -7575,9 +7965,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7575
7965
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
7576
7966
|
/* harmony import */ var _style_SelectedContextContainer_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../style/SelectedContextContainer.css */ "./style/SelectedContextContainer.css");
|
|
7577
7967
|
/* harmony import */ var _icons_RuleIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/RuleIcon */ "./lib/icons/RuleIcon.js");
|
|
7578
|
-
/* harmony import */ var
|
|
7579
|
-
/* harmony import */ var
|
|
7580
|
-
/* 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");
|
|
7581
7972
|
/*
|
|
7582
7973
|
* Copyright (c) Saga Inc.
|
|
7583
7974
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
@@ -7588,22 +7979,24 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
7588
7979
|
|
|
7589
7980
|
|
|
7590
7981
|
|
|
7982
|
+
|
|
7591
7983
|
const SelectedContextContainer = ({ title, type, onRemove, onClick, notebookTracker, activeCellID }) => {
|
|
7592
7984
|
const [isHovered, setIsHovered] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
7593
7985
|
let icon = react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons_RuleIcon__WEBPACK_IMPORTED_MODULE_2__["default"], null);
|
|
7594
|
-
|
|
7595
|
-
|
|
7596
|
-
|
|
7597
|
-
|
|
7598
|
-
|
|
7599
|
-
|
|
7600
|
-
|
|
7601
|
-
|
|
7602
|
-
|
|
7603
|
-
|
|
7604
|
-
|
|
7605
|
-
|
|
7606
|
-
|
|
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);
|
|
7607
8000
|
}
|
|
7608
8001
|
const handleClick = () => {
|
|
7609
8002
|
var _a;
|
|
@@ -7611,13 +8004,13 @@ const SelectedContextContainer = ({ title, type, onRemove, onClick, notebookTrac
|
|
|
7611
8004
|
// Handle active cell context click
|
|
7612
8005
|
if (notebookTracker && activeCellID) {
|
|
7613
8006
|
// Find the cell
|
|
7614
|
-
const cell = (0,
|
|
8007
|
+
const cell = (0,_utils_notebook__WEBPACK_IMPORTED_MODULE_6__.getCellByID)(notebookTracker, activeCellID);
|
|
7615
8008
|
if (cell) {
|
|
7616
8009
|
// Scroll to the cell
|
|
7617
8010
|
void ((_a = notebookTracker.currentWidget) === null || _a === void 0 ? void 0 : _a.content.scrollToCell(cell, 'center'));
|
|
7618
8011
|
// Highlight the cell
|
|
7619
8012
|
setTimeout(() => {
|
|
7620
|
-
(0,
|
|
8013
|
+
(0,_utils_notebook__WEBPACK_IMPORTED_MODULE_6__.highlightCodeCell)(notebookTracker, activeCellID);
|
|
7621
8014
|
}, 500);
|
|
7622
8015
|
}
|
|
7623
8016
|
}
|
|
@@ -8185,6 +8578,33 @@ const PencilIcon = () => (react__WEBPACK_IMPORTED_MODULE_0___default().createEle
|
|
|
8185
8578
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PencilIcon);
|
|
8186
8579
|
|
|
8187
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
|
+
|
|
8188
8608
|
/***/ }),
|
|
8189
8609
|
|
|
8190
8610
|
/***/ "./lib/icons/PlayButtonIcon.js":
|
|
@@ -8365,6 +8785,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8365
8785
|
/* harmony import */ var _Extensions_SettingsManager_SettingsManagerPlugin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Extensions/SettingsManager/SettingsManagerPlugin */ "./lib/Extensions/SettingsManager/SettingsManagerPlugin.js");
|
|
8366
8786
|
/* harmony import */ var _Extensions_VersionCheck__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Extensions/VersionCheck */ "./lib/Extensions/VersionCheck/index.js");
|
|
8367
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");
|
|
8368
8789
|
/*
|
|
8369
8790
|
* Copyright (c) Saga Inc.
|
|
8370
8791
|
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
@@ -8380,6 +8801,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8380
8801
|
|
|
8381
8802
|
|
|
8382
8803
|
|
|
8804
|
+
|
|
8383
8805
|
// This is the main entry point to the mito-ai extension. It must export all of the top level
|
|
8384
8806
|
// extensions that we want to load.
|
|
8385
8807
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([
|
|
@@ -8393,7 +8815,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8393
8815
|
_Extensions_status__WEBPACK_IMPORTED_MODULE_7__.statusItem,
|
|
8394
8816
|
_Extensions_SettingsManager_SettingsManagerPlugin__WEBPACK_IMPORTED_MODULE_8__["default"],
|
|
8395
8817
|
_Extensions_VersionCheck__WEBPACK_IMPORTED_MODULE_9__.versionCheckPlugin,
|
|
8396
|
-
_Extensions_NotebookFooter__WEBPACK_IMPORTED_MODULE_10__["default"]
|
|
8818
|
+
_Extensions_NotebookFooter__WEBPACK_IMPORTED_MODULE_10__["default"],
|
|
8819
|
+
_Extensions_AppManager_ManageAppsPlugin__WEBPACK_IMPORTED_MODULE_11__["default"]
|
|
8397
8820
|
]);
|
|
8398
8821
|
|
|
8399
8822
|
|
|
@@ -10748,6 +11171,101 @@ class AppBuilderWebsocketClient extends _BaseWebsocketClient__WEBPACK_IMPORTED_M
|
|
|
10748
11171
|
}
|
|
10749
11172
|
|
|
10750
11173
|
|
|
11174
|
+
/***/ }),
|
|
11175
|
+
|
|
11176
|
+
/***/ "./lib/websockets/appManager/appManagerWebsocketClient.js":
|
|
11177
|
+
/*!****************************************************************!*\
|
|
11178
|
+
!*** ./lib/websockets/appManager/appManagerWebsocketClient.js ***!
|
|
11179
|
+
\****************************************************************/
|
|
11180
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
11181
|
+
|
|
11182
|
+
__webpack_require__.r(__webpack_exports__);
|
|
11183
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
11184
|
+
/* harmony export */ AppManagerWebsocketClient: () => (/* binding */ AppManagerWebsocketClient)
|
|
11185
|
+
/* harmony export */ });
|
|
11186
|
+
/* harmony import */ var _BaseWebsocketClient__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../BaseWebsocketClient */ "./lib/websockets/BaseWebsocketClient.js");
|
|
11187
|
+
/*
|
|
11188
|
+
* Copyright (c) Saga Inc.
|
|
11189
|
+
* Distributed under the terms of the GNU Affero General Public License v3.0 License.
|
|
11190
|
+
*/
|
|
11191
|
+
|
|
11192
|
+
/**
|
|
11193
|
+
* Mito AI app manager client
|
|
11194
|
+
*
|
|
11195
|
+
* It communicates with the backend over a WebSocket for app managing functionality.
|
|
11196
|
+
*/
|
|
11197
|
+
class AppManagerWebsocketClient extends _BaseWebsocketClient__WEBPACK_IMPORTED_MODULE_0__.BaseWebsocketClient {
|
|
11198
|
+
/**
|
|
11199
|
+
* Create a new app manager client.
|
|
11200
|
+
*/
|
|
11201
|
+
constructor(options = {}) {
|
|
11202
|
+
super(options);
|
|
11203
|
+
/**
|
|
11204
|
+
* The service URL for the websocket endpoint.
|
|
11205
|
+
*/
|
|
11206
|
+
this.SERVICE_URL = 'mito-ai/app-manager';
|
|
11207
|
+
}
|
|
11208
|
+
/**
|
|
11209
|
+
* App manager messages stream.
|
|
11210
|
+
*/
|
|
11211
|
+
get messages() {
|
|
11212
|
+
return this._messages;
|
|
11213
|
+
}
|
|
11214
|
+
/**
|
|
11215
|
+
* Stream of connection status events
|
|
11216
|
+
*/
|
|
11217
|
+
get connectionStatus() {
|
|
11218
|
+
return this._connectionStatus;
|
|
11219
|
+
}
|
|
11220
|
+
/**
|
|
11221
|
+
* Get message ID from request (required by BaseWebsocketClient)
|
|
11222
|
+
*/
|
|
11223
|
+
getMessageId(request) {
|
|
11224
|
+
return `${request.type}_${Date.now()}_${Math.random().toString(36).substring(7)}`;
|
|
11225
|
+
}
|
|
11226
|
+
/**
|
|
11227
|
+
* Process a message received from the websocket.
|
|
11228
|
+
* Routes responses to the appropriate pending requests.
|
|
11229
|
+
*/
|
|
11230
|
+
_onMessage(message) {
|
|
11231
|
+
// Emit the message to stream listeners
|
|
11232
|
+
this._messages.emit(message);
|
|
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];
|
|
11250
|
+
}
|
|
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
|
+
|
|
10751
11269
|
/***/ }),
|
|
10752
11270
|
|
|
10753
11271
|
/***/ "./lib/websockets/completions/CompletionsWebsocketClient.js":
|
|
@@ -11195,6 +11713,197 @@ ___CSS_LOADER_EXPORT___.push([module.id, `/*
|
|
|
11195
11713
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
11196
11714
|
|
|
11197
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
|
+
|
|
11198
11907
|
/***/ }),
|
|
11199
11908
|
|
|
11200
11909
|
/***/ "./node_modules/css-loader/dist/cjs.js!./style/AssumptionTool.css":
|
|
@@ -15157,6 +15866,60 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
|
|
|
15157
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);
|
|
15158
15867
|
|
|
15159
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
|
+
|
|
15160
15923
|
/***/ }),
|
|
15161
15924
|
|
|
15162
15925
|
/***/ "./style/AssumptionTool.css":
|
|
@@ -16672,4 +17435,4 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
|
|
|
16672
17435
|
/***/ })
|
|
16673
17436
|
|
|
16674
17437
|
}]);
|
|
16675
|
-
//# sourceMappingURL=lib_index_js.
|
|
17438
|
+
//# sourceMappingURL=lib_index_js.a9a35b6fcc54a7bcb32c.js.map
|