From 8370a9ed49d97c2497b24a6973590e3a9f3143c4 Mon Sep 17 00:00:00 2001 From: Cameron Pfiffer Date: Sat, 9 Aug 2025 12:36:31 -0700 Subject: [PATCH] Fix ATProto record types for tool calls and reasoning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Change from stream.thought.ack embedded format back to dedicated collections - Use stream.thought.tool.call for tool call records (dots for valid NSID) - Use stream.thought.reasoning for reasoning records - Add better error logging for debugging record creation issues 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- bsky_utils.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bsky_utils.py b/bsky_utils.py index 53f2df4..8b01164 100644 --- a/bsky_utils.py +++ b/bsky_utils.py @@ -609,6 +609,7 @@ def create_synthesis_ack(client: Client, note: str) -> Optional[Dict[str, Any]]: """ try: import requests + import json from datetime import datetime, timezone # Get session info from the client @@ -681,6 +682,7 @@ def acknowledge_post(client: Client, post_uri: str, post_cid: str, note: Optiona """ try: import requests + import json from datetime import datetime, timezone # Get session info from the client @@ -757,6 +759,7 @@ def create_tool_call_record(client: Client, tool_name: str, arguments: str, tool """ try: import requests + import json from datetime import datetime, timezone # Get session info from the client @@ -783,7 +786,7 @@ def create_tool_call_record(client: Client, tool_name: str, arguments: str, tool # Create tool call record now = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z") tool_record = { - "$type": "stream.thought.tool_call", + "$type": "stream.thought.tool.call", "tool_name": tool_name, "arguments": arguments, # Store as string to avoid parsing issues "createdAt": now @@ -799,11 +802,13 @@ def create_tool_call_record(client: Client, tool_name: str, arguments: str, tool create_data = { "repo": user_did, - "collection": "stream.thought.tool_call", + "collection": "stream.thought.tool.call", "record": tool_record } response = requests.post(create_record_url, headers=headers, json=create_data, timeout=10) + if response.status_code != 200: + logger.error(f"Tool call record creation failed: {response.status_code} - {response.text}") response.raise_for_status() result = response.json() @@ -831,6 +836,7 @@ def create_reasoning_record(client: Client, reasoning_text: str) -> Optional[Dic """ try: import requests + import json from datetime import datetime, timezone # Get session info from the client -- 2.51.2