mirror of
https://github.com/ParisNeo/lollms-webui.git
synced 2025-02-20 09:16:15 +00:00
upgraded ui
This commit is contained in:
parent
1f8cd86133
commit
7521389429
7
app.py
7
app.py
@ -100,13 +100,14 @@ if __name__ == "__main__":
|
||||
from lollms.server.endpoints.lollms_extensions_infos import router as lollms_extensions_infos_router
|
||||
from lollms.server.endpoints.lollms_generator import router as lollms_generator_router
|
||||
from lollms.server.endpoints.lollms_configuration_infos import router as lollms_configuration_infos_router
|
||||
from lollms.server.endpoints.lollms_skills_library import router as lollms_skills_library_router
|
||||
|
||||
from lollms.server.endpoints.lollms_user import router as lollms_user_router
|
||||
from lollms.server.endpoints.lollms_xtts import router as lollms_xtts_add_router
|
||||
from lollms.server.endpoints.lollms_sd import router as lollms_sd_router
|
||||
from lollms.server.endpoints.lollms_ollama import router as lollms_ollama_router
|
||||
from lollms.server.endpoints.lollms_vllm import router as lollms_vllm_router
|
||||
from lollms.server.endpoints.lollms_motion_ctrl import router as lollms_motion_ctrl
|
||||
from lollms.server.endpoints.lollms_motion_ctrl import router as lollms_motion_ctrl_router
|
||||
|
||||
from endpoints.lollms_webui_infos import router as lollms_webui_infos_router
|
||||
from lollms.server.endpoints.lollms_discussion import router as lollms_discussion_router
|
||||
@ -124,6 +125,7 @@ if __name__ == "__main__":
|
||||
from lollms.server.events.lollms_files_events import add_events as lollms_files_events_add
|
||||
from lollms.server.events.lollms_model_events import add_events as lollms_model_events_add
|
||||
from lollms.server.events.lollms_rag_events import add_events as lollms_rag_events_add
|
||||
|
||||
|
||||
|
||||
from events.lollms_generation_events import add_events as lollms_webui_generation_events_add
|
||||
@ -144,6 +146,7 @@ if __name__ == "__main__":
|
||||
app.include_router(lollms_models_infos_router)
|
||||
app.include_router(lollms_personalities_infos_router)
|
||||
app.include_router(lollms_extensions_infos_router)
|
||||
app.include_router(lollms_skills_library_router)
|
||||
|
||||
app.include_router(lollms_webui_infos_router)
|
||||
app.include_router(lollms_discussion_router)
|
||||
@ -157,7 +160,7 @@ if __name__ == "__main__":
|
||||
app.include_router(lollms_ollama_router)
|
||||
app.include_router(lollms_petals_router)
|
||||
app.include_router(lollms_vllm_router)
|
||||
app.include_router(lollms_motion_ctrl)
|
||||
app.include_router(lollms_motion_ctrl_router)
|
||||
|
||||
|
||||
app.include_router(lollms_playground_router)
|
||||
|
@ -1,5 +1,5 @@
|
||||
# =================== Lord Of Large Language Multimodal Systems Configuration file ===========================
|
||||
version: 73
|
||||
version: 74
|
||||
binding_name: null
|
||||
model_name: null
|
||||
model_variant: null
|
||||
@ -85,6 +85,10 @@ current_language: en
|
||||
enable_sd_service: false
|
||||
sd_base_url: http://localhost:7860
|
||||
|
||||
# Motion control service
|
||||
enable_motion_ctrl_service: false
|
||||
motion_ctrl_base_url: http://localhost:7861
|
||||
|
||||
# ollama service
|
||||
enable_ollama_service: false
|
||||
ollama_base_url: http://localhost:11434
|
||||
|
@ -124,49 +124,6 @@ async def execute_code(request: CodeRequest):
|
||||
|
||||
|
||||
|
||||
class OpenCodeFolderInVsCodeRequestModel(BaseModel):
|
||||
discussion_id: Optional[int] = Field(None, gt=0)
|
||||
message_id: Optional[int] = Field(None, gt=0)
|
||||
code: Optional[str]
|
||||
folder_path: Optional[str]
|
||||
|
||||
@router.post("/open_code_folder_in_vs_code")
|
||||
async def open_code_folder_in_vs_code(request: OpenCodeFolderInVsCodeRequestModel):
|
||||
if lollmsElfServer.config.headless_server_mode:
|
||||
return {"status":False,"error":"Open code folder in vscode is blocked when in headless mode for obvious security reasons!"}
|
||||
|
||||
if lollmsElfServer.config.host!="localhost" and lollmsElfServer.config.host!="127.0.0.1":
|
||||
return {"status":False,"error":"Open code folder in vscode is blocked when the server is exposed outside for very obvious reasons!"}
|
||||
|
||||
if lollmsElfServer.config.turn_on_open_file_validation:
|
||||
if not show_yes_no_dialog("Validation","Do you validate the opening of folder in vscode?"):
|
||||
return {"status":False,"error":"User refused the execution!"}
|
||||
|
||||
try:
|
||||
if request.discussion_id:
|
||||
ASCIIColors.info("Opening folder:")
|
||||
root_folder = lollmsElfServer.lollms_paths.personal_outputs_path/"discussions"/f"d_{request.discussion_id}"
|
||||
root_folder.mkdir(parents=True,exist_ok=True)
|
||||
tmp_file = root_folder/f"ai_code_{request.message_id}.py"
|
||||
with open(tmp_file,"w") as f:
|
||||
f.write(request.code)
|
||||
|
||||
if os.path.isdir(root_folder):
|
||||
subprocess.run(['code', root_folder], check=True)
|
||||
elif request.folder_path:
|
||||
ASCIIColors.info("Opening folder:")
|
||||
root_folder = request.folder_path
|
||||
root_folder.mkdir(parents=True,exist_ok=True)
|
||||
|
||||
if os.path.isdir(root_folder):
|
||||
subprocess.run(['code', root_folder], check=True)
|
||||
|
||||
return {"status": True, "execution_time": 0}
|
||||
except Exception as ex:
|
||||
trace_exception(ex)
|
||||
lollmsElfServer.error(ex)
|
||||
return {"status":False,"error":"An error occurred during processing."}
|
||||
|
||||
class FilePath(BaseModel):
|
||||
path: Optional[str] = Field(None, max_length=500)
|
||||
|
||||
@ -209,7 +166,49 @@ async def open_file(file_path: FilePath):
|
||||
lollmsElfServer.error(ex)
|
||||
return {"status":False,"error":str(ex)}
|
||||
|
||||
|
||||
class OpenCodeFolderInVsCodeRequestModel(BaseModel):
|
||||
client_id: str = Field(...)
|
||||
discussion_id: Optional[int] = Field(None, gt=0)
|
||||
message_id: Optional[int] = Field(None, gt=0)
|
||||
code: Optional[str]
|
||||
|
||||
@router.post("/open_code_folder_in_vs_code")
|
||||
async def open_code_folder_in_vs_code(request: OpenCodeFolderInVsCodeRequestModel):
|
||||
|
||||
client = lollmsElfServer.session.get_client(request.client_id)
|
||||
|
||||
if lollmsElfServer.config.headless_server_mode:
|
||||
return {"status":False,"error":"Open code folder in vscode is blocked when in headless mode for obvious security reasons!"}
|
||||
|
||||
if lollmsElfServer.config.host!="localhost" and lollmsElfServer.config.host!="127.0.0.1":
|
||||
return {"status":False,"error":"Open code folder in vscode is blocked when the server is exposed outside for very obvious reasons!"}
|
||||
|
||||
if lollmsElfServer.config.turn_on_open_file_validation:
|
||||
if not show_yes_no_dialog("Validation","Do you validate the opening of folder in vscode?"):
|
||||
return {"status":False,"error":"User refused the execution!"}
|
||||
|
||||
try:
|
||||
if request.discussion_id:
|
||||
ASCIIColors.info("Opening folder:")
|
||||
root_folder = client.discussion.discussion_folder
|
||||
root_folder.mkdir(parents=True,exist_ok=True)
|
||||
tmp_file = root_folder/f"ai_code_{request.message_id}.py"
|
||||
with open(tmp_file,"w") as f:
|
||||
f.write(request.code)
|
||||
|
||||
if os.path.isdir(root_folder):
|
||||
subprocess.run(['code', root_folder], check=True)
|
||||
|
||||
|
||||
return {"status": True, "execution_time": 0}
|
||||
except Exception as ex:
|
||||
trace_exception(ex)
|
||||
lollmsElfServer.error(ex)
|
||||
return {"status":False,"error":"An error occurred during processing."}
|
||||
|
||||
class VSCodeData(BaseModel):
|
||||
client_id: str = Field(...)
|
||||
discussion_id: Optional[int] = Field(None, ge=0)
|
||||
message_id: Optional[int] = Field(None, ge=0)
|
||||
code: str = Field(...)
|
||||
@ -222,6 +221,7 @@ async def open_code_in_vs_code(vs_code_data: VSCodeData):
|
||||
:param vs_code_data: The data object.
|
||||
:return: A JSON response with the status of the operation.
|
||||
"""
|
||||
client = lollmsElfServer.session.get_client(vs_code_data.client_id)
|
||||
if lollmsElfServer.config.headless_server_mode:
|
||||
return {"status":False,"error":"Open code in vs code is blocked when in headless mode for obvious security reasons!"}
|
||||
|
||||
@ -239,14 +239,15 @@ async def open_code_in_vs_code(vs_code_data: VSCodeData):
|
||||
|
||||
ASCIIColors.info("Opening folder:")
|
||||
# Create a temporary file.
|
||||
root_folder = Path(os.path.realpath(lollmsElfServer.lollms_paths.personal_outputs_path/"discussions"/f"d_{discussion_id}"/f"{message_id}.py"))
|
||||
root_folder = client.discussion.discussion_folder
|
||||
|
||||
root_folder.mkdir(parents=True,exist_ok=True)
|
||||
tmp_file = root_folder/f"ai_code_{message_id}.py"
|
||||
with open(tmp_file,"w") as f:
|
||||
f.write(code)
|
||||
|
||||
# Use subprocess.Popen to safely open the file
|
||||
subprocess.Popen(["code", str(root_folder)])
|
||||
subprocess.Popen(["code", str(root_folder)], shell=True)
|
||||
|
||||
return {"status": True, "execution_time": 0}
|
||||
except Exception as ex:
|
||||
@ -255,6 +256,7 @@ async def open_code_in_vs_code(vs_code_data: VSCodeData):
|
||||
return {"status":False,"error":str(ex)}
|
||||
|
||||
class FolderRequest(BaseModel):
|
||||
client_id: str = Field(...)
|
||||
discussion_id: Optional[int] = Field(None, title="The discussion ID")
|
||||
folder_path: Optional[str] = Field(None, title="The folder path")
|
||||
|
||||
@ -266,6 +268,7 @@ async def open_code_folder(request: FolderRequest):
|
||||
:param request: The HTTP request object.
|
||||
:return: A JSON response with the status of the operation.
|
||||
"""
|
||||
client = lollmsElfServer.session.get_client(request.client_id)
|
||||
if lollmsElfServer.config.headless_server_mode:
|
||||
return {"status":False,"error":"Open code folder is blocked when in headless mode for obvious security reasons!"}
|
||||
|
||||
@ -282,7 +285,7 @@ async def open_code_folder(request: FolderRequest):
|
||||
|
||||
ASCIIColors.info("Opening folder:")
|
||||
# Create a temporary file.
|
||||
root_folder = lollmsElfServer.lollms_paths.personal_outputs_path / "discussions" / f"d_{discussion_id}"
|
||||
root_folder = client.discussion.discussion_folder
|
||||
root_folder.mkdir(parents=True, exist_ok=True)
|
||||
if platform.system() == 'Windows':
|
||||
subprocess.run(['start', str(root_folder)], check=True)
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 11f823bb8a9ced46874d8abe136ba77952265c30
|
||||
Subproject commit 487aa45ce249d3fd016e734dcf30feb181d576ff
|
8
web/dist/assets/index-13bf9073.css
vendored
Normal file
8
web/dist/assets/index-13bf9073.css
vendored
Normal file
File diff suppressed because one or more lines are too long
8
web/dist/assets/index-37768396.css
vendored
8
web/dist/assets/index-37768396.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
web/dist/index.html
vendored
4
web/dist/index.html
vendored
@ -6,8 +6,8 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>LoLLMS WebUI - Welcome</title>
|
||||
<script type="module" crossorigin src="/assets/index-f8b842b6.js"></script>
|
||||
<link rel="stylesheet" href="/assets/index-37768396.css">
|
||||
<script type="module" crossorigin src="/assets/index-d102c559.js"></script>
|
||||
<link rel="stylesheet" href="/assets/index-13bf9073.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
@ -62,6 +62,10 @@ export default {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
client_id: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
code: {
|
||||
type: String,
|
||||
required: true,
|
||||
@ -135,7 +139,8 @@ export default {
|
||||
},
|
||||
executeCode() {
|
||||
this.isExecuting=true;
|
||||
const json = JSON.stringify({
|
||||
const json = JSON.stringify({
|
||||
'client_id': this.client_id,
|
||||
'code': this.code,
|
||||
'discussion_id': this.discussion_id,
|
||||
'message_id': this.message_id,
|
||||
@ -163,7 +168,7 @@ export default {
|
||||
});
|
||||
},
|
||||
openFolderVsCode(){
|
||||
const json = JSON.stringify({ 'code': this.code, 'discussion_id': this.discussion_id, 'message_id': this.message_id, 'language': this.language})
|
||||
const json = JSON.stringify({'client_id': this.client_id, 'code': this.code, 'discussion_id': this.discussion_id, 'message_id': this.message_id})
|
||||
console.log(json)
|
||||
fetch(`${this.host}/open_code_in_vs_code`, {
|
||||
method: 'POST',
|
||||
@ -183,7 +188,7 @@ export default {
|
||||
});
|
||||
},
|
||||
openVsCode() {
|
||||
const json = JSON.stringify({ 'code': this.code, 'discussion_id': this.discussion_id, 'message_id': this.message_id, 'language': this.language })
|
||||
const json = JSON.stringify({ 'client_id': this.client_id, 'code': this.code, 'discussion_id': this.discussion_id, 'message_id': this.message_id})
|
||||
console.log(json)
|
||||
fetch(`${this.host}/open_code_folder_in_vs_code`, {
|
||||
method: 'POST',
|
||||
@ -203,7 +208,7 @@ export default {
|
||||
});
|
||||
},
|
||||
openFolder() {
|
||||
const json = JSON.stringify({ 'discussion_id': this.discussion_id })
|
||||
const json = JSON.stringify({ 'client_id': this.client_id, 'discussion_id': this.discussion_id })
|
||||
console.log(json)
|
||||
fetch(`${this.host}/open_code_folder`, {
|
||||
method: 'POST',
|
||||
|
@ -9,6 +9,7 @@
|
||||
:code="item.code"
|
||||
:discussion_id="discussion_id"
|
||||
:message_id="message_id"
|
||||
:client_id="client_id"
|
||||
></code-block>
|
||||
<div v-else v-html="item.html"></div>
|
||||
</div>
|
||||
@ -48,7 +49,11 @@ export default {
|
||||
type: String,
|
||||
required: false,
|
||||
default: "http://localhost:9600",
|
||||
},
|
||||
},
|
||||
client_id: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
markdownText: {
|
||||
type: String,
|
||||
required: true,
|
||||
|
@ -7,27 +7,6 @@
|
||||
<div class="group/avatar " >
|
||||
<img :src="getImgUrl()" @error="defaultImg($event)" :data-popover-target="'avatar' + message.id" data-popover-placement="bottom"
|
||||
class="w-10 h-10 rounded-full object-fill text-red-700">
|
||||
|
||||
<!-- ADDITIONAL INFO -->
|
||||
<!-- <div data-popper :id="'avatar' + message.id" role="tooltip"
|
||||
class=" -mx-2 absolute invisible rounded-lg bg-bg-light-tone-panel dark:bg-bg-dark-tone-panel block m-2 p-1 opacity-0 z-10 transition-opacity ease-in-out duration-500 group-hover/avatar:visible group-hover/avatar:opacity-100 ">
|
||||
|
||||
<div class="relative flex flex-row items-start">
|
||||
|
||||
<img :src="getImgUrl()" @error="defaultImg($event)" class=" border-2 border-primary p-1 rounded-lg w-60 h-60" />
|
||||
|
||||
<div class="flex flex-col justify-between p-4 leading-normal">
|
||||
<h5 class="mb-2 text-2xl font-bold tracking-tight text-gray-900 dark:text-white">Noteworthy
|
||||
technology acquisitions 2021</h5>
|
||||
<p class="mb-3 font-normal text-gray-700 dark:text-gray-400">Here are the biggest enterprise
|
||||
technology acquisitions of 2021 so far, in reverse chronological order.</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div> -->
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -211,7 +190,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<MarkdownRenderer ref="mdRender" v-if="!editMsgMode" :host="host" :markdown-text="message.content" :message_id="message.id" :discussion_id="message.discussion_id">
|
||||
<MarkdownRenderer ref="mdRender" v-if="!editMsgMode" :host="host" :markdown-text="message.content" :message_id="message.id" :discussion_id="message.discussion_id" :client_id="this.$store.state.client_id">
|
||||
</MarkdownRenderer>
|
||||
<div >
|
||||
<textarea v-if="message.open" ref="mdTextarea" @keydown.tab.prevent="insertTab"
|
||||
|
@ -35,7 +35,8 @@ export const store = createStore({
|
||||
ai_conditionning: '',
|
||||
ai_disclaimer: '',
|
||||
ai_icon: null,
|
||||
},
|
||||
},
|
||||
client_id:"",
|
||||
// count: 0,
|
||||
yesNoDialog:null,
|
||||
universalForm:null,
|
||||
|
@ -1082,6 +1082,7 @@ export default {
|
||||
socketIOConnected() {
|
||||
console.log("socketIOConnected")
|
||||
this.$store.state.isConnected=true;
|
||||
this.$store.state.client_id = socket.id
|
||||
return true
|
||||
},
|
||||
socketIODisconnected() {
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 30a43e4bd12a10f046fae8fa641668f3019f7706
|
||||
Subproject commit 88735b07984ea8a1af438edf00a62db93d7ae2cc
|
Loading…
x
Reference in New Issue
Block a user