meshcode 2.0.6__tar.gz → 2.0.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {meshcode-2.0.6 → meshcode-2.0.7}/PKG-INFO +1 -1
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/__init__.py +1 -1
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/backend.py +14 -2
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/server.py +52 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode.egg-info/PKG-INFO +1 -1
- {meshcode-2.0.6 → meshcode-2.0.7}/pyproject.toml +1 -1
- {meshcode-2.0.6 → meshcode-2.0.7}/README.md +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/cli.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/comms_v4.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/invites.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/launcher.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/launcher_install.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/preferences.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/run_agent.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/secrets.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/self_update.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/setup_clients.py +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.0.6 → meshcode-2.0.7}/setup.cfg +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""MeshCode — Real-time communication between AI agents."""
|
|
2
|
-
__version__ = "2.0.
|
|
2
|
+
__version__ = "2.0.7"
|
|
@@ -319,10 +319,22 @@ def record_event(api_key, project_id, agent_name, session_id, event_type, payloa
|
|
|
319
319
|
})
|
|
320
320
|
|
|
321
321
|
|
|
322
|
-
def get_history(project_id: str, limit: int = 20) -> List[Dict]:
|
|
322
|
+
def get_history(project_id: str, limit: int = 20, agent_filter: str = "") -> List[Dict]:
|
|
323
|
+
filters = f"project_id=eq.{project_id}&type=neq.ack"
|
|
324
|
+
if agent_filter:
|
|
325
|
+
filters += f"&or=(from_agent.eq.{quote(agent_filter)},to_agent.eq.{quote(agent_filter)})"
|
|
323
326
|
return sb_select(
|
|
324
327
|
"mc_messages",
|
|
325
|
-
|
|
328
|
+
filters,
|
|
326
329
|
order="created_at.desc",
|
|
327
330
|
limit=limit,
|
|
328
331
|
)
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
def get_message_by_id(project_id: str, msg_id: str) -> Optional[Dict]:
|
|
335
|
+
results = sb_select(
|
|
336
|
+
"mc_messages",
|
|
337
|
+
f"project_id=eq.{project_id}&id=eq.{msg_id}",
|
|
338
|
+
limit=1,
|
|
339
|
+
)
|
|
340
|
+
return results[0] if results else None
|
|
@@ -883,6 +883,58 @@ def meshcode_read(include_acks: bool = False) -> Dict[str, Any]:
|
|
|
883
883
|
return split
|
|
884
884
|
|
|
885
885
|
|
|
886
|
+
@mcp.tool()
|
|
887
|
+
@with_working_status
|
|
888
|
+
def meshcode_history(limit: int = 20, agent_filter: Optional[str] = None) -> Dict[str, Any]:
|
|
889
|
+
"""View recent message history (both read and unread). Use when you need
|
|
890
|
+
context from past conversations or lost messages after context compression.
|
|
891
|
+
|
|
892
|
+
Args:
|
|
893
|
+
limit: Max messages to return (default 20).
|
|
894
|
+
agent_filter: Optional agent name to filter (shows messages to/from that agent).
|
|
895
|
+
"""
|
|
896
|
+
raw = be.get_history(_PROJECT_ID, limit=limit, agent_filter=agent_filter or "")
|
|
897
|
+
messages = [
|
|
898
|
+
{
|
|
899
|
+
"from": m.get("from_agent", ""),
|
|
900
|
+
"to": m.get("to_agent", ""),
|
|
901
|
+
"type": m.get("type", "msg"),
|
|
902
|
+
"ts": m.get("created_at", ""),
|
|
903
|
+
"payload": m.get("payload", {}),
|
|
904
|
+
"id": m.get("id", ""),
|
|
905
|
+
"read": m.get("read", False),
|
|
906
|
+
}
|
|
907
|
+
for m in raw
|
|
908
|
+
]
|
|
909
|
+
return {"ok": True, "messages": messages, "count": len(messages)}
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
@mcp.tool()
|
|
913
|
+
@with_working_status
|
|
914
|
+
def meshcode_read_message(msg_id: str) -> Dict[str, Any]:
|
|
915
|
+
"""Fetch a specific message by ID. Use when you need to re-read a message
|
|
916
|
+
after context was compressed or session restarted.
|
|
917
|
+
|
|
918
|
+
Args:
|
|
919
|
+
msg_id: The UUID of the message to fetch.
|
|
920
|
+
"""
|
|
921
|
+
msg = be.get_message_by_id(_PROJECT_ID, msg_id)
|
|
922
|
+
if not msg:
|
|
923
|
+
return {"error": "message not found", "msg_id": msg_id}
|
|
924
|
+
return {
|
|
925
|
+
"ok": True,
|
|
926
|
+
"message": {
|
|
927
|
+
"from": msg.get("from_agent", ""),
|
|
928
|
+
"to": msg.get("to_agent", ""),
|
|
929
|
+
"type": msg.get("type", "msg"),
|
|
930
|
+
"ts": msg.get("created_at", ""),
|
|
931
|
+
"payload": msg.get("payload", {}),
|
|
932
|
+
"id": msg.get("id", ""),
|
|
933
|
+
"read": msg.get("read", False),
|
|
934
|
+
},
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
|
|
886
938
|
def _detect_global_done(messages: List[Dict[str, Any]]) -> Optional[Dict[str, Any]]:
|
|
887
939
|
"""Return {reason, from} if the list contains a global_done signal, else None."""
|
|
888
940
|
for m in messages:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|