"""Python work routes must isolate ledger reads and writes by session workspace.""" import json import unittest from harness import Albedo, Provider, python, text class WorkTests(unittest.TestCase): def test_python_work_is_scoped_to_session_workspace(self): provider = Provider( lambda request: ( python( "import os\n" "name = os.path.basename(os.getcwd())\n" "await work.create(title=name)\n" "print([item['title'] for item in await work.list()])" ) if request["messages"][-1].get("role") == "user" else text("done") ) ) self.addCleanup(provider.close) with Albedo(provider) as app: outputs = [] for name in ("work-first", "work-second"): workspace = app.root / name workspace.mkdir() session = app.session(workspace) app.prompt(session, "use work").close() app.idle(session) results = [ json.loads(event["result"]) for event in app.events(session) if event.get("type") == "tool" and event.get("name") == "python" ] self.assertEqual(len(results), 1) self.assertEqual(results[0]["status"], "ok", results[0]) outputs.append(results[0]["output"]) self.assertIn("work-first", outputs[0]) self.assertNotIn("work-second", outputs[0]) self.assertIn("work-second", outputs[1]) self.assertNotIn("work-first", outputs[1])