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.
This commit is contained in:
chenmingxuan committed 2026-10-18 14:18:37 +08:00
1 parent 2328a4df0c
commit e1ea099592
128 files changed
+4944 -700

No files matched your search

+39
View File
@@ -245,6 +245,45 @@ async def test_executor_cancellation_reaches_coroutine():
await executor.stop()
@pytest.mark.asyncio
async def test_sync_tool_runs_once_off_both_event_loops():
import threading
executor = ToolExecutor()
executor.start()
caller = threading.get_ident()
calls = []
def operation(value):
calls.append(threading.get_ident())
return {"accepted": value}
try:
assert await executor.invoke(operation, "job") == {"accepted": "job"}
assert len(calls) == 1
assert calls[0] not in {caller, executor.thread.ident}
finally:
await executor.stop()
@pytest.mark.asyncio
async def test_sync_tool_error_does_not_repeat_the_side_effect():
executor = ToolExecutor()
executor.start()
calls = []
def operation():
calls.append("submitted")
raise ValueError("reply lost")
try:
with pytest.raises(ValueError, match="reply lost"):
await executor.invoke(operation)
assert calls == ["submitted"]
finally:
await executor.stop()
def test_stale_pid_and_wrong_installation_are_not_reused(tmp_path, monkeypatch):
monkeypatch.setattr(tempfile, "tempdir", str(tmp_path))
directory = registry.registry_directory()