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.
Files changed (29) hide show
  1. {meshcode-2.0.6 → meshcode-2.0.7}/PKG-INFO +1 -1
  2. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/__init__.py +1 -1
  3. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/backend.py +14 -2
  4. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/server.py +52 -0
  5. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode.egg-info/PKG-INFO +1 -1
  6. {meshcode-2.0.6 → meshcode-2.0.7}/pyproject.toml +1 -1
  7. {meshcode-2.0.6 → meshcode-2.0.7}/README.md +0 -0
  8. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/cli.py +0 -0
  9. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/comms_v4.py +0 -0
  10. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/invites.py +0 -0
  11. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/launcher.py +0 -0
  12. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/launcher_install.py +0 -0
  13. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/__init__.py +0 -0
  14. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/__main__.py +0 -0
  15. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/realtime.py +0 -0
  16. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/test_backend.py +0 -0
  17. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/meshcode_mcp/test_realtime.py +0 -0
  18. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/preferences.py +0 -0
  19. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/protocol_v2.py +0 -0
  20. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/run_agent.py +0 -0
  21. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/secrets.py +0 -0
  22. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/self_update.py +0 -0
  23. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode/setup_clients.py +0 -0
  24. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode.egg-info/SOURCES.txt +0 -0
  25. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode.egg-info/dependency_links.txt +0 -0
  26. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode.egg-info/entry_points.txt +0 -0
  27. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode.egg-info/requires.txt +0 -0
  28. {meshcode-2.0.6 → meshcode-2.0.7}/meshcode.egg-info/top_level.txt +0 -0
  29. {meshcode-2.0.6 → meshcode-2.0.7}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.0.6
3
+ Version: 2.0.7
4
4
  Summary: Real-time communication between AI agents — Supabase-backed CLI
5
5
  Author-email: MeshCode <hello@meshcode.io>
6
6
  License: MIT
@@ -1,2 +1,2 @@
1
1
  """MeshCode — Real-time communication between AI agents."""
2
- __version__ = "2.0.6"
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
- f"project_id=eq.{project_id}&type=neq.ack",
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:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.0.6
3
+ Version: 2.0.7
4
4
  Summary: Real-time communication between AI agents — Supabase-backed CLI
5
5
  Author-email: MeshCode <hello@meshcode.io>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "meshcode"
7
- version = "2.0.6"
7
+ version = "2.0.7"
8
8
  description = "Real-time communication between AI agents — Supabase-backed CLI"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes