feat: prepare 2.2.0 with UI and execution fixes
Add dark theme, richer Markdown and readable plugin results. Improve Android input evidence, response integrity and diagnostics. Unify lifecycle, guidance receipts and evidence sources across clients. Keep direct action dispatch without an added AI quota approval layer. Align version metadata at 2.2.0 and bundle Helper 1.2.2. Validation: 3063 backend tests before the version bump; 44 after. Frontend: 317 tests and production build passed.
This commit is contained in:
1 parent
83bcfd54d5
commit
fac4ccb760
146 files changed
+5689
-2033
No files matched your search
@@ -70,7 +70,7 @@ def pause_running_task(session_id: str):
|
||||
|
||||
@router.post("/api/tasks/{session_id}/guide")
|
||||
def guide_running_task(session_id: str, value: GuidanceRequest):
|
||||
_live_task(session_id)
|
||||
live = _live_task(session_id)
|
||||
from apps.admin_console.services.exploration_service import exploration_service
|
||||
from artemis.exploration.store import ExplorationConflict
|
||||
|
||||
@@ -93,18 +93,33 @@ def guide_running_task(session_id: str, value: GuidanceRequest):
|
||||
or (control_dir(session_id) / "pause.request").exists()
|
||||
):
|
||||
request_resume(session_id)
|
||||
return {"session_id": session_id, "status": "guidance_submitted", "guidance": guidance}
|
||||
from apps.admin_console.services.task_lifecycle import guidance_details
|
||||
|
||||
details = guidance_details(session_id)
|
||||
guidance = next(
|
||||
(item for item in details["instructions"] if item["id"] == guidance.get("id")), guidance
|
||||
)
|
||||
return {
|
||||
"session_id": session_id,
|
||||
"status": "guidance_submitted",
|
||||
"guidance": guidance,
|
||||
"worker_active": live["process"].returncode is None,
|
||||
"message": "指导已接收;接收不保证任务结束前消费,请以消费记录为准。",
|
||||
}
|
||||
|
||||
|
||||
@router.get("/api/tasks/{session_id}/guidance")
|
||||
def task_guidance_history(session_id: str):
|
||||
def task_guidance_history(session_id: str, details: bool = False):
|
||||
from apps.admin_console.services.automation_store import identifier
|
||||
|
||||
try:
|
||||
identifier(session_id)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(400, str(exc)) from exc
|
||||
return list_instructions(session_id)
|
||||
from apps.admin_console.services.task_lifecycle import guidance_details
|
||||
|
||||
result = guidance_details(session_id)
|
||||
return result if details else result["instructions"]
|
||||
|
||||
|
||||
@router.post("/api/tasks/{session_id}/continue")
|
||||
@@ -451,6 +466,16 @@ async def get_status():
|
||||
with store.connection() as connection:
|
||||
exploration_runs = exploration_metadata(connection)
|
||||
for item in [*queue_data, *active_tasks]:
|
||||
control_status = (
|
||||
read_state(str(item["session_id"])).get("status") if item.get("session_id") else None
|
||||
)
|
||||
item["phase"] = {
|
||||
"queued": "waiting_resources",
|
||||
"resuming": "waiting_resources",
|
||||
"task_paused": "paused",
|
||||
"demonstrating": "demonstrating",
|
||||
"analyzing_demo": "analyzing_demo",
|
||||
}.get(control_status)
|
||||
item.update(exploration_runs.get(str(item.get("session_id")), {}))
|
||||
if job := batch_jobs.get(str(item.get("session_id"))):
|
||||
item["batch_id"] = job.get("batch_id")
|
||||
|
||||
Reference in new issue
Block a user