Files
Artemis-Eapil/mcp_server/task_requests.py
T
chenmingxuan e1ea099592 feat: add official Codex skill and harden task execution
Install and update artemis-use with task diagnostics and plugin guidance. Preserve cross-device file receipts, review canonical reports, guard stage transitions and reduce small history summaries. Improve exploration lifecycle, request recovery and browser live connections.
2026-10-18 14:18:37 +08:00

61 lines
2.3 KiB
Python

"""Durable admission receipts in the existing automation store; never replay a write."""
import hashlib
import json
import time
from uuid import uuid4
from apps.admin_console.services.automation_store import identifier, store
def lookup(request_id: str) -> dict:
record = store.get("mcp_task_request", identifier(request_id))
if record is None:
return {"request_id": request_id, "status": "not_found"}
job = store.job(record["trace_id"])
return {
**record.get("response", {}),
**({"status": job["status"]} if job else {}),
"status_scope": "task_queue" if job else "submission_receipt",
"request_id": request_id,
"trace_id": record["trace_id"],
"submission_state": record["state"],
"message": "请求已登记;请按 trace_id 查询详细状态,不要用新 request_id 自动重提。",
}
def run_once(request_id: str, parameters: dict, execute) -> dict:
identifier(request_id)
fingerprint = hashlib.sha256(
json.dumps(parameters, sort_keys=True, ensure_ascii=False).encode("utf-8")
).hexdigest()
with store.connection() as connection:
connection.execute("BEGIN IMMEDIATE")
row = connection.execute(
"SELECT payload FROM automation_records WHERE kind='mcp_task_request' AND id=?",
(request_id,),
).fetchone()
if row:
if json.loads(row[0])["fingerprint"] != fingerprint:
raise ValueError("request_id 已用于不同任务内容,请使用新的编号")
connection.commit()
return {**lookup(request_id), "deduplicated": True}
record = {
"trace_id": str(uuid4()),
"fingerprint": fingerprint,
"state": "submitting",
}
connection.execute(
"INSERT INTO automation_records VALUES ('mcp_task_request',?,?,?)",
(request_id, json.dumps(record), time.time()),
)
connection.commit()
try:
response = execute(record["trace_id"])
except Exception:
# A lost reply says nothing about whether the queue accepted the task.
store.put("mcp_task_request", request_id, {**record, "state": "unknown"})
raise
store.put("mcp_task_request", request_id, {**record, "state": "returned", "response": response})
return {**response, "request_id": request_id}