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:
1 parent
2328a4df0c
commit
e1ea099592
128 files changed
+4944
-700
No files matched your search
@@ -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()
|
||||
|
||||
Reference in new issue
Block a user