Skip to content

Commit 62103be

Browse files
committed
refactor(collaboration): reuse canonical retry identity
Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
1 parent 77a5144 commit 62103be

1 file changed

Lines changed: 8 additions & 20 deletions

File tree

‎loopx/collaboration_mcp.py‎

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -223,28 +223,16 @@ def start(self, binding_id: str, operation_id: str, brief: dict,
223223
raise ValueError("delegation cannot depend on itself")
224224
path = self.path(operation_id)
225225
with exclusive_file_lock(path.with_suffix(".dispatch")):
226-
if path.exists():
227-
source_id = "peer:" + _hash([self.goal_id, self.agent_id, operation_id])
228-
request_id = _hash([source_id, {"goal_id": self.goal_id, "agent_id": binding["agent_id"]}])
229-
identity = {"binding": binding, "request_id": request_id, "operation_id": operation_id}
230-
entry = _entry(self.root, self.goal_id, binding["agent_id"], request_id)
231-
expected_entry = {
232-
"request_id": request_id,
233-
"goal_id": self.goal_id,
234-
"agent_id": binding["agent_id"],
235-
"source_id": source_id,
236-
"source_agent_id": self.agent_id,
237-
"parent_request_id": parent_request_id,
238-
"brief": brief,
239-
}
240-
if (_read(path).get("identity") != identity
241-
or any(entry.get(key) != value for key, value in expected_entry.items())):
226+
exists = path.exists()
227+
if not exists:
228+
delegation_results.require_dependencies(self, binding, brief)
229+
delivered = request(self.root, self.registry, self.goal_id, self.agent_id,
230+
binding["agent_id"], operation_id, brief, parent_request_id)
231+
identity = {"binding": binding, "request_id": delivered["request_id"], "operation_id": operation_id}
232+
if exists:
233+
if _read(path).get("identity") != identity:
242234
raise ValueError("delegation operation identity conflict")
243235
else:
244-
delegation_results.require_dependencies(self, binding, brief)
245-
delivered = request(self.root, self.registry, self.goal_id, self.agent_id,
246-
binding["agent_id"], operation_id, brief, parent_request_id)
247-
identity = {"binding": binding, "request_id": delivered["request_id"], "operation_id": operation_id}
248236
_write(path, {"identity": identity, "status": "prepared", "created_at": time.time()})
249237
self._spawn(operation_id)
250238
return self.read(operation_id)

0 commit comments

Comments
 (0)