auto-coder-web 0.1.81__py3-none-any.whl → 0.1.82__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.
- auto_coder_web/auto_coder_runner_wrapper.py +1 -2
- auto_coder_web/init_project.py +9 -0
- auto_coder_web/proxy.py +2 -2
- auto_coder_web/routers/auto_router.py +4 -5
- auto_coder_web/routers/chat_router.py +4 -4
- auto_coder_web/routers/coding_router.py +3 -3
- auto_coder_web/routers/direct_chat_router.py +42 -0
- auto_coder_web/version.py +1 -1
- auto_coder_web/web/assets/{main-x88Ziufd.css → main-B3_hzhoO.css} +2 -2
- auto_coder_web/web/assets/main.js +272 -272
- auto_coder_web/web/index.html +1 -1
- {auto_coder_web-0.1.81.dist-info → auto_coder_web-0.1.82.dist-info}/METADATA +2 -2
- {auto_coder_web-0.1.81.dist-info → auto_coder_web-0.1.82.dist-info}/RECORD +16 -15
- {auto_coder_web-0.1.81.dist-info → auto_coder_web-0.1.82.dist-info}/WHEEL +0 -0
- {auto_coder_web-0.1.81.dist-info → auto_coder_web-0.1.82.dist-info}/entry_points.txt +0 -0
- {auto_coder_web-0.1.81.dist-info → auto_coder_web-0.1.82.dist-info}/top_level.txt +0 -0
auto_coder_web/init_project.py
CHANGED
@@ -20,6 +20,15 @@ def init_project(project_path: str):
|
|
20
20
|
f.write("\n/actions/")
|
21
21
|
f.write("\n/output.txt")
|
22
22
|
|
23
|
+
|
24
|
+
# 生成 .autocoderignore 文件,采用 .gitignore 格式
|
25
|
+
autocoderignore_path = os.path.join(source_dir, ".autocoderignore")
|
26
|
+
autocoderignore_content = (
|
27
|
+
"target\n"
|
28
|
+
)
|
29
|
+
with open(autocoderignore_path, "w", encoding="utf-8") as f:
|
30
|
+
f.write(autocoderignore_content)
|
31
|
+
|
23
32
|
print(
|
24
33
|
f"""Successfully initialized auto-coder project in {os.path.abspath(project_path)}."""
|
25
34
|
)
|
auto_coder_web/proxy.py
CHANGED
@@ -19,7 +19,7 @@ import sys
|
|
19
19
|
from auto_coder_web.terminal import terminal_manager
|
20
20
|
from autocoder.common import AutoCoderArgs
|
21
21
|
from auto_coder_web.auto_coder_runner_wrapper import AutoCoderRunnerWrapper
|
22
|
-
from auto_coder_web.routers import todo_router, settings_router, auto_router, commit_router, chat_router, coding_router, index_router, config_router, upload_router, rag_router, editable_preview_router,mcp_router
|
22
|
+
from auto_coder_web.routers import todo_router, settings_router, auto_router, commit_router, chat_router, coding_router, index_router, config_router, upload_router, rag_router, editable_preview_router, mcp_router, direct_chat_router
|
23
23
|
from auto_coder_web.expert_routers import history_router
|
24
24
|
from auto_coder_web.common_router import completions_router, file_router, auto_coder_conf_router, chat_list_router, file_group_router, model_router, compiler_router
|
25
25
|
from auto_coder_web.common_router import active_context_router
|
@@ -106,7 +106,7 @@ class ProxyServer:
|
|
106
106
|
self.app.include_router(editable_preview_router.router)
|
107
107
|
self.app.include_router(mcp_router.router)
|
108
108
|
self.app.include_router(active_context_router.router)
|
109
|
-
|
109
|
+
self.app.include_router(direct_chat_router.router)
|
110
110
|
|
111
111
|
@self.app.on_event("shutdown")
|
112
112
|
async def shutdown_event():
|
@@ -96,7 +96,8 @@ async def auto_command(request: AutoCommandRequest, project_path: str = Depends(
|
|
96
96
|
try:
|
97
97
|
# 创建AutoCoderRunnerWrapper实例,使用从应用上下文获取的项目路径
|
98
98
|
wrapper = AutoCoderRunnerWrapper(project_path)
|
99
|
-
wrapper.configure_wrapper(f"event_file:{event_file}")
|
99
|
+
wrapper.configure_wrapper(f"event_file:{event_file}")
|
100
|
+
global_cancel.register_token(event_file)
|
100
101
|
prompt_text = request.command
|
101
102
|
|
102
103
|
if request.include_conversation_history:
|
@@ -374,12 +375,10 @@ async def cancel_task(request: CancelTaskRequest, project_path: str = Depends(ge
|
|
374
375
|
"""
|
375
376
|
# 定义在线程中执行的取消任务函数
|
376
377
|
def cancel_task_thread(event_file_id: str, project_path: str):
|
377
|
-
try:
|
378
|
-
# 设置全局取消标志
|
379
|
-
global_cancel.set()
|
380
|
-
|
378
|
+
try:
|
381
379
|
# 获取事件文件路径和事件管理器
|
382
380
|
event_file = get_event_file_path(file_id=event_file_id, project_path=project_path)
|
381
|
+
global_cancel.set(token=event_file)
|
383
382
|
event_manager = get_event_manager(event_file)
|
384
383
|
|
385
384
|
# 向事件流写入取消事件
|
@@ -68,7 +68,8 @@ async def chat_command(request: ChatCommandRequest, project_path: str = Depends(
|
|
68
68
|
try:
|
69
69
|
# 创建AutoCoderRunnerWrapper实例,使用从应用上下文获取的项目路径
|
70
70
|
wrapper = AutoCoderRunnerWrapper(project_path)
|
71
|
-
wrapper.configure_wrapper(f"event_file:{event_file}")
|
71
|
+
wrapper.configure_wrapper(f"event_file:{event_file}")
|
72
|
+
global_cancel.register_token(event_file)
|
72
73
|
|
73
74
|
# 调用chat方法
|
74
75
|
result = wrapper.chat_wrapper(request.command)
|
@@ -304,9 +305,8 @@ async def cancel_task(request: CancelTaskRequest, project_path: str = Depends(ge
|
|
304
305
|
event_file = get_event_file_path(file_id=request.event_file_id, project_path=project_path)
|
305
306
|
|
306
307
|
def cancel_in_thread():
|
307
|
-
try:
|
308
|
-
|
309
|
-
global_cancel.set_cancel(request.event_file_id)
|
308
|
+
try:
|
309
|
+
global_cancel.set(token=event_file)
|
310
310
|
|
311
311
|
# 获取事件管理器
|
312
312
|
event_manager = get_event_manager(event_file)
|
@@ -89,6 +89,7 @@ async def coding_command(request: CodingCommandRequest, project_path: str = Depe
|
|
89
89
|
# 创建AutoCoderRunnerWrapper实例,使用从应用上下文获取的项目路径
|
90
90
|
wrapper = AutoCoderRunnerWrapper(project_path)
|
91
91
|
wrapper.configure_wrapper(f"event_file:{event_file}")
|
92
|
+
global_cancel.register_token(event_file)
|
92
93
|
|
93
94
|
# 获取当前会话名称
|
94
95
|
current_session_file = os.path.join(project_path, ".auto-coder", "auto-coder.web", "current-session.json")
|
@@ -362,9 +363,8 @@ async def cancel_task(request: CancelTaskRequest, project_path: str = Depends(ge
|
|
362
363
|
event_file = get_event_file_path(file_id=request.event_file_id, project_path=project_path)
|
363
364
|
|
364
365
|
def cancel_in_thread():
|
365
|
-
try:
|
366
|
-
|
367
|
-
global_cancel.set()
|
366
|
+
try:
|
367
|
+
global_cancel.set(token=event_file)
|
368
368
|
|
369
369
|
# 获取事件管理器
|
370
370
|
event_manager = get_event_manager(event_file)
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import traceback
|
2
|
+
from fastapi import APIRouter, Request
|
3
|
+
from pydantic import BaseModel
|
4
|
+
from typing import Any, Dict
|
5
|
+
from loguru import logger
|
6
|
+
import byzerllm
|
7
|
+
|
8
|
+
from autocoder.utils.llms import get_single_llm
|
9
|
+
|
10
|
+
router = APIRouter()
|
11
|
+
|
12
|
+
class DirectChatRequest(BaseModel):
|
13
|
+
model: str
|
14
|
+
content: str
|
15
|
+
product_mode: str = "lite"
|
16
|
+
options: Dict[str, Any] = {}
|
17
|
+
|
18
|
+
class DirectChatResponse(BaseModel):
|
19
|
+
success: bool
|
20
|
+
result: Any = None
|
21
|
+
error: str = None
|
22
|
+
|
23
|
+
@router.post("/api/direct_chat", response_model=DirectChatResponse)
|
24
|
+
async def direct_chat(req: DirectChatRequest, request: Request):
|
25
|
+
"""
|
26
|
+
简单直聊API,指定模型和内容,返回模型回复。
|
27
|
+
"""
|
28
|
+
try:
|
29
|
+
# 获取模型
|
30
|
+
llm = get_single_llm(req.model, product_mode=req.product_mode)
|
31
|
+
|
32
|
+
@byzerllm.prompt()
|
33
|
+
def chat_func(content: str) -> str:
|
34
|
+
"""
|
35
|
+
{{ content }}
|
36
|
+
"""
|
37
|
+
# 支持自定义llm_config等参数
|
38
|
+
result = chat_func.with_llm(llm).run(req.content)
|
39
|
+
return DirectChatResponse(success=True, result=result)
|
40
|
+
except Exception as e:
|
41
|
+
logger.error(f"direct_chat error: {e}\n{traceback.format_exc()}")
|
42
|
+
return DirectChatResponse(success=False, error=f"{str(e)}")
|
auto_coder_web/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.1.
|
1
|
+
__version__ = "0.1.82"
|