meshcode 1.7.0__tar.gz → 1.8.0__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 (27) hide show
  1. {meshcode-1.7.0 → meshcode-1.8.0}/PKG-INFO +1 -1
  2. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/__init__.py +1 -1
  3. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/meshcode_mcp/backend.py +3 -1
  4. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/meshcode_mcp/server.py +18 -2
  5. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode.egg-info/PKG-INFO +1 -1
  6. {meshcode-1.7.0 → meshcode-1.8.0}/pyproject.toml +1 -1
  7. {meshcode-1.7.0 → meshcode-1.8.0}/README.md +0 -0
  8. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/cli.py +0 -0
  9. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/comms_v4.py +0 -0
  10. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/invites.py +0 -0
  11. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/launcher.py +0 -0
  12. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/launcher_install.py +0 -0
  13. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/meshcode_mcp/__init__.py +0 -0
  14. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/meshcode_mcp/__main__.py +0 -0
  15. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/meshcode_mcp/realtime.py +0 -0
  16. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/meshcode_mcp/test_backend.py +0 -0
  17. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/meshcode_mcp/test_realtime.py +0 -0
  18. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/protocol_v2.py +0 -0
  19. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/run_agent.py +0 -0
  20. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/secrets.py +0 -0
  21. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode/setup_clients.py +0 -0
  22. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode.egg-info/SOURCES.txt +0 -0
  23. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode.egg-info/dependency_links.txt +0 -0
  24. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode.egg-info/entry_points.txt +0 -0
  25. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode.egg-info/requires.txt +0 -0
  26. {meshcode-1.7.0 → meshcode-1.8.0}/meshcode.egg-info/top_level.txt +0 -0
  27. {meshcode-1.7.0 → meshcode-1.8.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 1.7.0
3
+ Version: 1.8.0
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__ = "1.7.0"
2
+ __version__ = "1.8.0"
@@ -164,7 +164,7 @@ def register_agent(project: str, name: str, role: str = "") -> Dict:
164
164
  }
165
165
 
166
166
 
167
- def send_message(project_id: str, from_agent: str, to_agent: str, payload: Any, msg_type: str = "msg", parent_msg_id: Optional[str] = None) -> Dict:
167
+ def send_message(project_id: str, from_agent: str, to_agent: str, payload: Any, msg_type: str = "msg", parent_msg_id: Optional[str] = None, sensitive: bool = False) -> Dict:
168
168
  if not isinstance(payload, dict):
169
169
  payload = {"text": str(payload)}
170
170
  msg = {
@@ -177,6 +177,8 @@ def send_message(project_id: str, from_agent: str, to_agent: str, payload: Any,
177
177
  }
178
178
  if parent_msg_id:
179
179
  msg["parent_msg_id"] = parent_msg_id
180
+ if sensitive:
181
+ msg["is_sensitive"] = True
180
182
  result = sb_insert("mc_messages", msg)
181
183
  if isinstance(result, dict) and result.get("_error"):
182
184
  return {"error": result["_error"]}
@@ -363,6 +363,14 @@ meshcode_wait / meshcode_check / meshcode_read now includes an `id` field
363
363
  (use it for in_reply_to) and a `parent_id` field (so you can see whether
364
364
  the message you received is itself a reply to something).
365
365
 
366
+ SENSITIVE DATA: when sharing API keys, credentials, customer data, personal
367
+ information, secrets, or anything that should not be in a public log, set
368
+ sensitive=True in your meshcode_send call. Sensitive messages are NEVER
369
+ included in public meshwork exports, even if the meshwork owner publishes
370
+ the meshwork. The flag is enforced at the database level — there is no way
371
+ for a public viewer to read sensitive messages. Use this liberally — false
372
+ positives are harmless, false negatives are a privacy leak.
373
+
366
374
  LOOP-SAFETY RULES (IMPORTANT — prevent token-burning ping-pong):
367
375
  - Do NOT reply "Done" / "OK" / "Got it" to every message. If a message
368
376
  is a status update or pure ack, just process it and call meshcode_wait
@@ -505,7 +513,8 @@ except Exception:
505
513
  # ----------------- TOOLS -----------------
506
514
 
507
515
  @mcp.tool()
508
- def meshcode_send(to: str, message: Any, in_reply_to: Optional[str] = None) -> Dict[str, Any]:
516
+ def meshcode_send(to: str, message: Any, in_reply_to: Optional[str] = None,
517
+ sensitive: bool = False) -> Dict[str, Any]:
509
518
  """Send a message to another agent in the meshwork.
510
519
 
511
520
  If you only have plain text, just pass it as a string and it will be
@@ -520,6 +529,13 @@ def meshcode_send(to: str, message: Any, in_reply_to: Optional[str] = None) -> D
520
529
  message is a threaded reply — the dashboard renders it under the
521
530
  original. Use this especially when replying to one of several
522
531
  outstanding broadcasts so humans can tell which is which.
532
+ sensitive: If True, this message will NEVER appear in a public meshwork
533
+ export, regardless of whether the meshwork is published. ALWAYS
534
+ set this to True when sharing API keys, credentials, customer
535
+ data, secrets, personal information, or anything that should not
536
+ be visible to anyone outside the meshwork. The owner can publish
537
+ the meshwork without leaking sensitive messages, because the
538
+ sensitive flag is enforced at the database level.
523
539
  """
524
540
  if isinstance(message, str):
525
541
  payload: Dict[str, Any] = {"text": message}
@@ -528,7 +544,7 @@ def meshcode_send(to: str, message: Any, in_reply_to: Optional[str] = None) -> D
528
544
  else:
529
545
  payload = {"text": str(message)}
530
546
  return be.send_message(_PROJECT_ID, AGENT_NAME, to, payload, msg_type="msg",
531
- parent_msg_id=in_reply_to)
547
+ parent_msg_id=in_reply_to, sensitive=sensitive)
532
548
 
533
549
 
534
550
  @mcp.tool()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 1.7.0
3
+ Version: 1.8.0
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 = "1.7.0"
7
+ version = "1.8.0"
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