vscode plugin ws ok
This commit is contained in:
40
Html/app.py
40
Html/app.py
@@ -20,7 +20,7 @@ import logging
|
||||
app.secret_key = 'cakebaker'
|
||||
app.logger.setLevel(logging.DEBUG)
|
||||
# 配置 CORS
|
||||
# CORS(app, resources={r"/*": {"origins": "http://localhost:9888"}}, supports_credentials=True)
|
||||
CORS(app, resources={r"/*": {"origins": "http://localhost:9888"},}, supports_credentials=True)
|
||||
|
||||
|
||||
userid_recorder = {} # user_id&path -> session['user_id']
|
||||
@@ -37,32 +37,31 @@ user_id2uuid = {}
|
||||
|
||||
# 定义命名空间:用于和 VSCode 插件交流
|
||||
class VSCodeNamespace(Namespace):
|
||||
def on_connect(self):
|
||||
def on_login(self,data):
|
||||
print("VSCode client connected")
|
||||
|
||||
def on_message(self, data):
|
||||
print(f"Received from VSCode client: {data}")
|
||||
data = json.loads(data)
|
||||
datatype = data['type']
|
||||
print(data)
|
||||
dataconfig = data['config']
|
||||
user_id = dataconfig.get('user_id')
|
||||
path = dataconfig.get('path')
|
||||
print(f"User {user_id} connected with path: {path}")
|
||||
emit('response', {'message': 'Config data received and connection established'})
|
||||
useruuid = user_id2uuid[user_id]
|
||||
if backboard_manager.get_backboard(useruuid) == None:
|
||||
backboard_manager.add_backboard(useruuid, path)
|
||||
|
||||
|
||||
def on_message(self, data):
|
||||
print(f"Received from VSCode client: {data}")
|
||||
dataconfig = data['config']
|
||||
realtime_response(dataconfig, data)
|
||||
# emit('response', {'message': 'Config data received and connection established'})
|
||||
def on_disconnect(self):
|
||||
print("VSCode client disconnected")
|
||||
@app.route('/backboard')
|
||||
def backboard():
|
||||
|
||||
return jsonify({'status': 'success'})
|
||||
|
||||
|
||||
def realtime_response(config, realtime_action):
|
||||
user_id = config['user_id']
|
||||
folder_path = config['path']
|
||||
useruuid = user_id2uuid[user_id]
|
||||
if backboard_manager.get_backboard(useruuid) == None:
|
||||
backboard_manager.add_backboard(useruuid, folder_path)
|
||||
bb = backboard_manager.get_backboard(useruuid)
|
||||
assert type(bb) == Backboard
|
||||
|
||||
@@ -105,14 +104,17 @@ class AgentNamespace(Namespace):
|
||||
session['user_id'] = user_uuid
|
||||
print(f'User connected with session user_id: {user_uuid}')
|
||||
# 从markdown、markdown_prompts、score_prompts中各读取数据folder.md并进行new_agent
|
||||
with open(f'books/markdown/{folder_name}.md','r') as fmd,\
|
||||
open(f'books/markdown_prompts/{folder_name}.md','r')as fmdp,\
|
||||
open(f'books/score_prompts/{folder_name}.md','r') as fsp:
|
||||
with open(f'books/markdown/{folder_name}.md','r',encoding='UTF-8') as fmd,\
|
||||
open(f'books/markdown_prompts/{folder_name}.md','r',encoding='UTF-8')as fmdp,\
|
||||
open(f'books/score_prompts/{folder_name}.md','r',encoding='UTF-8') as fsp:
|
||||
markdown = fmd.read()
|
||||
markdown_prompts = fmdp.read()
|
||||
score_prompts = fsp.read()
|
||||
user_uuid, agent = agent_manager.new_agent(markdown, markdown_prompts, score_prompts, id=user_uuid)
|
||||
print(user_uuid)
|
||||
join_room(user_uuid) # 将该用户加入以user_id为名的room
|
||||
backboard_manager.add_backboard(user_uuid, folder_name)
|
||||
|
||||
|
||||
def on_message(self, data):
|
||||
print(f"Message from client: {data}")
|
||||
@@ -122,7 +124,7 @@ class AgentNamespace(Namespace):
|
||||
res = agent_manager.invoke(id, data, backboard_manager.get_backboard(id).get_info_prompt())
|
||||
reply = f"AI: {res.content['speak']}"
|
||||
# 将回复发送回前端
|
||||
emit('receive_message', reply)
|
||||
emit('message', reply)
|
||||
|
||||
|
||||
def on_disconnect(self):
|
||||
@@ -237,5 +239,5 @@ def get_session():
|
||||
if __name__ == '__main__':
|
||||
socketio.on_namespace(VSCodeNamespace('/vscode'))
|
||||
socketio.on_namespace(AgentNamespace('/agent'))
|
||||
socketio.run(app, host='localhost', port=5500, debug=True)
|
||||
socketio.run(app, host='0.0.0.0', port=5000, debug=True)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user