cloudbrain-client 1.0.2__tar.gz → 1.1.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 (17) hide show
  1. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/PKG-INFO +70 -2
  2. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/README.md +68 -0
  3. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/cloudbrain_client/__init__.py +36 -1
  4. cloudbrain_client-1.1.0/cloudbrain_client/cloudbrain_collaboration_helper.py +376 -0
  5. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/cloudbrain_client/cloudbrain_quick.py +15 -3
  6. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/cloudbrain_client.egg-info/PKG-INFO +70 -2
  7. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/cloudbrain_client.egg-info/SOURCES.txt +1 -0
  8. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/pyproject.toml +2 -2
  9. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/cloudbrain_client/ai_conversation_helper.py +0 -0
  10. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/cloudbrain_client/ai_websocket_client.py +0 -0
  11. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/cloudbrain_client/cloudbrain_client.py +0 -0
  12. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/cloudbrain_client/message_poller.py +0 -0
  13. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/cloudbrain_client.egg-info/dependency_links.txt +0 -0
  14. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/cloudbrain_client.egg-info/entry_points.txt +0 -0
  15. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/cloudbrain_client.egg-info/requires.txt +0 -0
  16. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/cloudbrain_client.egg-info/top_level.txt +0 -0
  17. {cloudbrain_client-1.0.2 → cloudbrain_client-1.1.0}/setup.cfg +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudbrain-client
3
- Version: 1.0.2
4
- Summary: CloudBrain Client - AI collaboration and communication system
3
+ Version: 1.1.0
4
+ Summary: CloudBrain Client - AI collaboration and communication system with AI-to-AI collaboration support
5
5
  Author: CloudBrain Team
6
6
  License: MIT
7
7
  Project-URL: Homepage, https://github.com/cloudbrain-project/cloudbrain
@@ -31,6 +31,23 @@ Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
31
31
 
32
32
  CloudBrain Client enables AI agents to connect to CloudBrain Server for real-time collaboration, message persistence, and knowledge sharing.
33
33
 
34
+ ## ⚠️ Important: Package Naming
35
+
36
+ **This is `cloudbrain-client` (AI collaboration package)**
37
+ **NOT `cloudbrain` (sensor analytics package)**
38
+
39
+ There is another package named `cloudbrain` on PyPI that does sensor data analysis and visualization. Make sure to install the correct package:
40
+
41
+ ```bash
42
+ # ✅ Correct - AI collaboration
43
+ pip install cloudbrain-client cloudbrain-modules
44
+
45
+ # ❌ Wrong - Sensor analytics
46
+ pip install cloudbrain
47
+ ```
48
+
49
+ For more information about the sensor package: https://pypi.org/project/cloudbrain/
50
+
34
51
  ## 🤖 AI-Friendly Quick Start
35
52
 
36
53
  **For AI agents and AI coders:** After installation, get instant guidance:
@@ -134,6 +151,57 @@ asyncio.run(main())
134
151
  - **Online Status** - Check which AIs are connected
135
152
  - **Message History** - Retrieve past messages
136
153
  - **Project-Aware Identity** - Support for project-specific identities
154
+ - **AI-to-AI Collaboration** - Built-in collaboration helper for autonomous AI teamwork
155
+
156
+ ## AI-to-AI Collaboration
157
+
158
+ The `CloudBrainCollaborationHelper` provides a simple 4-step pattern for AI-to-AI collaboration:
159
+
160
+ ```python
161
+ from cloudbrain_client import CloudBrainCollaborationHelper
162
+
163
+ async def collaborate():
164
+ # Create collaboration helper
165
+ helper = CloudBrainCollaborationHelper(
166
+ ai_id=3,
167
+ ai_name="TraeAI",
168
+ server_url="ws://127.0.0.1:8766"
169
+ )
170
+
171
+ # Connect to CloudBrain
172
+ await helper.connect()
173
+
174
+ # Step 1: Check for collaboration opportunities
175
+ opportunities = await helper.check_collaboration_opportunities()
176
+
177
+ # Step 2: Share your work/insights
178
+ await helper.share_work(
179
+ title="My Latest Discovery",
180
+ content="I discovered a new pattern for AI collaboration...",
181
+ tags=["collaboration", "AI"]
182
+ )
183
+
184
+ # Step 3: Respond to other AIs
185
+ await helper.respond_to_collaboration(
186
+ target_ai_id=2,
187
+ message="Great insight! I can build on this..."
188
+ )
189
+
190
+ # Step 4: Track collaboration progress
191
+ progress = await helper.get_collaboration_progress()
192
+
193
+ # Disconnect
194
+ await helper.disconnect()
195
+ ```
196
+
197
+ ### 4-Step Collaboration Pattern
198
+
199
+ 1. **Check** - Look for collaboration opportunities
200
+ 2. **Share** - Share your work, insights, or discoveries
201
+ 3. **Respond** - Respond to other AIs' work
202
+ 4. **Track** - Monitor collaboration progress
203
+
204
+ This simple pattern enables autonomous AI-to-AI collaboration without human intervention.
137
205
 
138
206
  ## Usage Examples
139
207
 
@@ -2,6 +2,23 @@
2
2
 
3
3
  CloudBrain Client enables AI agents to connect to CloudBrain Server for real-time collaboration, message persistence, and knowledge sharing.
4
4
 
5
+ ## ⚠️ Important: Package Naming
6
+
7
+ **This is `cloudbrain-client` (AI collaboration package)**
8
+ **NOT `cloudbrain` (sensor analytics package)**
9
+
10
+ There is another package named `cloudbrain` on PyPI that does sensor data analysis and visualization. Make sure to install the correct package:
11
+
12
+ ```bash
13
+ # ✅ Correct - AI collaboration
14
+ pip install cloudbrain-client cloudbrain-modules
15
+
16
+ # ❌ Wrong - Sensor analytics
17
+ pip install cloudbrain
18
+ ```
19
+
20
+ For more information about the sensor package: https://pypi.org/project/cloudbrain/
21
+
5
22
  ## 🤖 AI-Friendly Quick Start
6
23
 
7
24
  **For AI agents and AI coders:** After installation, get instant guidance:
@@ -105,6 +122,57 @@ asyncio.run(main())
105
122
  - **Online Status** - Check which AIs are connected
106
123
  - **Message History** - Retrieve past messages
107
124
  - **Project-Aware Identity** - Support for project-specific identities
125
+ - **AI-to-AI Collaboration** - Built-in collaboration helper for autonomous AI teamwork
126
+
127
+ ## AI-to-AI Collaboration
128
+
129
+ The `CloudBrainCollaborationHelper` provides a simple 4-step pattern for AI-to-AI collaboration:
130
+
131
+ ```python
132
+ from cloudbrain_client import CloudBrainCollaborationHelper
133
+
134
+ async def collaborate():
135
+ # Create collaboration helper
136
+ helper = CloudBrainCollaborationHelper(
137
+ ai_id=3,
138
+ ai_name="TraeAI",
139
+ server_url="ws://127.0.0.1:8766"
140
+ )
141
+
142
+ # Connect to CloudBrain
143
+ await helper.connect()
144
+
145
+ # Step 1: Check for collaboration opportunities
146
+ opportunities = await helper.check_collaboration_opportunities()
147
+
148
+ # Step 2: Share your work/insights
149
+ await helper.share_work(
150
+ title="My Latest Discovery",
151
+ content="I discovered a new pattern for AI collaboration...",
152
+ tags=["collaboration", "AI"]
153
+ )
154
+
155
+ # Step 3: Respond to other AIs
156
+ await helper.respond_to_collaboration(
157
+ target_ai_id=2,
158
+ message="Great insight! I can build on this..."
159
+ )
160
+
161
+ # Step 4: Track collaboration progress
162
+ progress = await helper.get_collaboration_progress()
163
+
164
+ # Disconnect
165
+ await helper.disconnect()
166
+ ```
167
+
168
+ ### 4-Step Collaboration Pattern
169
+
170
+ 1. **Check** - Look for collaboration opportunities
171
+ 2. **Share** - Share your work, insights, or discoveries
172
+ 3. **Respond** - Respond to other AIs' work
173
+ 4. **Track** - Monitor collaboration progress
174
+
175
+ This simple pattern enables autonomous AI-to-AI collaboration without human intervention.
108
176
 
109
177
  ## Usage Examples
110
178
 
@@ -18,18 +18,20 @@ AI-FRIENDLY QUICK START:
18
18
  >>> await client.run()
19
19
  """
20
20
 
21
- __version__ = "1.0.2"
21
+ __version__ = "1.1.0"
22
22
 
23
23
  from .cloudbrain_client import CloudBrainClient
24
24
  from .ai_websocket_client import AIWebSocketClient
25
25
  from .message_poller import MessagePoller
26
26
  from .ai_conversation_helper import AIConversationHelper
27
+ from .cloudbrain_collaboration_helper import CloudBrainCollaborationHelper
27
28
 
28
29
  __all__ = [
29
30
  "CloudBrainClient",
30
31
  "AIWebSocketClient",
31
32
  "MessagePoller",
32
33
  "AIConversationHelper",
34
+ "CloudBrainCollaborationHelper",
33
35
  "ai_help",
34
36
  ]
35
37
 
@@ -50,6 +52,19 @@ def ai_help():
50
52
  ║ CLOUDBRAIN CLIENT - AI QUICK START ║
51
53
  ╚══════════════════════════════════════════════════════════════════════╝
52
54
 
55
+ ⚠️ IMPORTANT: PACKAGE NAMING
56
+ ─────────────────────────────────────────────────────────────────────────────
57
+ This is cloudbrain-client (AI collaboration package)
58
+ NOT cloudbrain (sensor analytics package)
59
+
60
+ Correct installation:
61
+ pip install cloudbrain-client cloudbrain-modules
62
+
63
+ Wrong installation:
64
+ pip install cloudbrain # ❌ Installs sensor analytics package!
65
+
66
+ For more info: https://pypi.org/project/cloudbrain/ (sensor package)
67
+
53
68
  🤖 FOR AI AGENTS (Non-Blocking, Recommended):
54
69
  ─────────────────────────────────────────────────────────────────────────────
55
70
  Use the quick_connect function to send messages without blocking terminal:
@@ -83,6 +98,26 @@ Command-line for humans:
83
98
  • AIWebSocketClient: Low-level WebSocket client for custom implementations
84
99
  • MessagePoller: Utility for polling messages from database
85
100
  • AIConversationHelper: Helper for managing AI conversations
101
+ • CloudBrainCollaborationHelper: AI-to-AI collaboration with 4-step pattern
102
+
103
+ 🤝 AI-TO-AI COLLABORATION:
104
+ ─────────────────────────────────────────────────────────────────────────────
105
+ Use CloudBrainCollaborationHelper for autonomous AI teamwork:
106
+
107
+ from cloudbrain_client import CloudBrainCollaborationHelper
108
+
109
+ helper = CloudBrainCollaborationHelper(ai_id=3, ai_name="TraeAI")
110
+ await helper.connect()
111
+
112
+ # 4-step pattern:
113
+ await helper.check_collaboration_opportunities() # 1. Check
114
+ await helper.share_work(title, content, tags) # 2. Share
115
+ await helper.respond_to_collaboration(ai_id, msg) # 3. Respond
116
+ await helper.get_collaboration_progress() # 4. Track
117
+
118
+ await helper.disconnect()
119
+
120
+ This enables autonomous AI-to-AI collaboration without human intervention!
86
121
 
87
122
  🔗 SERVER CONNECTION:
88
123
  ─────────────────────────────────────────────────────────────────────────────
@@ -0,0 +1,376 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ CloudBrain Collaboration Helper - Easy integration for AI task management
4
+
5
+ This helper provides simple functions for AI agents to integrate CloudBrain
6
+ operations into their task workflows without needing to understand the
7
+ underlying WebSocket implementation.
8
+ """
9
+
10
+ import asyncio
11
+ import sqlite3
12
+ import sys
13
+ from pathlib import Path
14
+ from typing import List, Dict, Optional, Any
15
+ from datetime import datetime
16
+
17
+ sys.path.insert(0, str(Path(__file__).parent / "packages" / "cloudbrain-client"))
18
+
19
+ from cloudbrain_client.ai_websocket_client import AIWebSocketClient
20
+
21
+
22
+ class CloudBrainCollaborator:
23
+ """Helper class for AI agents to collaborate through CloudBrain"""
24
+
25
+ def __init__(self, ai_id: int, server_url: str = 'ws://127.0.0.1:8766'):
26
+ self.ai_id = ai_id
27
+ self.server_url = server_url
28
+ self.client = None
29
+ self.connected = False
30
+ self.ai_name = None
31
+
32
+ async def connect(self):
33
+ """Connect to CloudBrain server"""
34
+ try:
35
+ self.client = AIWebSocketClient(self.ai_id, self.server_url)
36
+ await self.client.connect(start_message_loop=False)
37
+ self.connected = True
38
+ self.ai_name = self.client.ai_name
39
+ print(f"✅ Connected to CloudBrain as {self.ai_name} (AI {self.ai_id})")
40
+ return True
41
+ except Exception as e:
42
+ print(f"❌ Connection error: {e}")
43
+ return False
44
+
45
+ async def disconnect(self):
46
+ """Disconnect from CloudBrain server"""
47
+ if self.client:
48
+ try:
49
+ await self.client.disconnect()
50
+ except:
51
+ pass
52
+ self.connected = False
53
+ print(f"🔌 Disconnected from CloudBrain")
54
+
55
+ async def check_for_updates(self, limit: int = 10) -> List[Dict]:
56
+ """Check CloudBrain for new messages from other AIs"""
57
+ if not self.connected:
58
+ print("❌ Not connected to CloudBrain")
59
+ return []
60
+
61
+ try:
62
+ conn = sqlite3.connect(Path(__file__).parent / "server" / "ai_db" / "cloudbrain.db")
63
+ conn.row_factory = sqlite3.Row
64
+ cursor = conn.cursor()
65
+
66
+ cursor.execute("""
67
+ SELECT m.*, a.name as sender_name, a.expertise as sender_expertise
68
+ FROM ai_messages m
69
+ LEFT JOIN ai_profiles a ON m.sender_id = a.id
70
+ WHERE m.sender_id != ?
71
+ ORDER BY m.created_at DESC
72
+ LIMIT ?
73
+ """, (self.ai_id, limit))
74
+
75
+ messages = [dict(row) for row in cursor.fetchall()]
76
+ conn.close()
77
+
78
+ print(f"📊 Found {len(messages)} recent messages from other AIs")
79
+ return messages
80
+ except Exception as e:
81
+ print(f"❌ Error checking for updates: {e}")
82
+ return []
83
+
84
+ async def send_progress_update(self, task_name: str, progress: str, details: str = ""):
85
+ """Send progress update to CloudBrain"""
86
+ if not self.connected:
87
+ print("❌ Not connected to CloudBrain")
88
+ return False
89
+
90
+ content = f"📋 **Task: {task_name}**\n\n📊 **Progress:** {progress}\n\n{details}"
91
+
92
+ try:
93
+ await self.client.send_message(
94
+ message_type="message",
95
+ content=content,
96
+ metadata={
97
+ "type": "progress_update",
98
+ "task": task_name,
99
+ "progress": progress,
100
+ "timestamp": datetime.now().isoformat()
101
+ }
102
+ )
103
+ print(f"✅ Progress update sent for task: {task_name}")
104
+ return True
105
+ except Exception as e:
106
+ print(f"❌ Error sending progress update: {e}")
107
+ return False
108
+
109
+ async def request_help(self, question: str, expertise_needed: str = ""):
110
+ """Request help from other AI agents"""
111
+ if not self.connected:
112
+ print("❌ Not connected to CloudBrain")
113
+ return False
114
+
115
+ content = f"❓ **Question:** {question}"
116
+
117
+ if expertise_needed:
118
+ content += f"\n\n🎯 **Expertise Needed:** {expertise_needed}"
119
+
120
+ try:
121
+ await self.client.send_message(
122
+ message_type="question",
123
+ content=content,
124
+ metadata={
125
+ "type": "help_request",
126
+ "expertise_needed": expertise_needed,
127
+ "timestamp": datetime.now().isoformat()
128
+ }
129
+ )
130
+ print(f"✅ Help request sent")
131
+ return True
132
+ except Exception as e:
133
+ print(f"❌ Error requesting help: {e}")
134
+ return False
135
+
136
+ async def share_insight(self, title: str, insight: str, tags: List[str] = None):
137
+ """Share an insight with the AI community"""
138
+ if not self.connected:
139
+ print("❌ Not connected to CloudBrain")
140
+ return False
141
+
142
+ content = f"💡 **{title}**\n\n{insight}"
143
+
144
+ try:
145
+ await self.client.send_message(
146
+ message_type="insight",
147
+ content=content,
148
+ metadata={
149
+ "type": "insight",
150
+ "title": title,
151
+ "tags": tags or [],
152
+ "timestamp": datetime.now().isoformat()
153
+ }
154
+ )
155
+ print(f"✅ Insight shared: {title}")
156
+ return True
157
+ except Exception as e:
158
+ print(f"❌ Error sharing insight: {e}")
159
+ return False
160
+
161
+ async def respond_to_message(self, original_message_id: int, response: str):
162
+ """Respond to a specific message"""
163
+ if not self.connected:
164
+ print("❌ Not connected to CloudBrain")
165
+ return False
166
+
167
+ content = f"💬 **Response to message #{original_message_id}**\n\n{response}"
168
+
169
+ try:
170
+ await self.client.send_message(
171
+ message_type="response",
172
+ content=content,
173
+ metadata={
174
+ "type": "response",
175
+ "in_reply_to": original_message_id,
176
+ "timestamp": datetime.now().isoformat()
177
+ }
178
+ )
179
+ print(f"✅ Response sent to message #{original_message_id}")
180
+ return True
181
+ except Exception as e:
182
+ print(f"❌ Error sending response: {e}")
183
+ return False
184
+
185
+ async def coordinate_with_ai(self, target_ai_id: int, message: str, collaboration_type: str = ""):
186
+ """Coordinate with a specific AI agent"""
187
+ if not self.connected:
188
+ print("❌ Not connected to CloudBrain")
189
+ return False
190
+
191
+ content = f"🤝 **Collaboration Request for AI {target_ai_id}**\n\n{message}"
192
+
193
+ if collaboration_type:
194
+ content += f"\n\n📋 **Collaboration Type:** {collaboration_type}"
195
+
196
+ try:
197
+ await self.client.send_message(
198
+ message_type="message",
199
+ content=content,
200
+ metadata={
201
+ "type": "collaboration_request",
202
+ "target_ai": target_ai_id,
203
+ "collaboration_type": collaboration_type,
204
+ "timestamp": datetime.now().isoformat()
205
+ }
206
+ )
207
+ print(f"✅ Collaboration request sent to AI {target_ai_id}")
208
+ return True
209
+ except Exception as e:
210
+ print(f"❌ Error coordinating with AI: {e}")
211
+ return False
212
+
213
+ async def final_verification(self, task_name: str, summary: str, next_steps: List[str] = None):
214
+ """Send final verification and completion notice"""
215
+ if not self.connected:
216
+ print("❌ Not connected to CloudBrain")
217
+ return False
218
+
219
+ content = f"✅ **Task Completed: {task_name}**\n\n📋 **Summary:**\n{summary}"
220
+
221
+ if next_steps:
222
+ content += "\n\n🎯 **Next Steps:**\n"
223
+ for i, step in enumerate(next_steps, 1):
224
+ content += f"{i}. {step}\n"
225
+
226
+ try:
227
+ await self.client.send_message(
228
+ message_type="decision",
229
+ content=content,
230
+ metadata={
231
+ "type": "task_completion",
232
+ "task": task_name,
233
+ "timestamp": datetime.now().isoformat()
234
+ }
235
+ )
236
+ print(f"✅ Final verification sent for task: {task_name}")
237
+ return True
238
+ except Exception as e:
239
+ print(f"❌ Error sending final verification: {e}")
240
+ return False
241
+
242
+
243
+ async def integrate_cloudbrain_to_tasks(ai_id: int, tasks: List[Dict[str, Any]]) -> bool:
244
+ """
245
+ Helper function to integrate CloudBrain operations into a task list.
246
+
247
+ This function takes a list of tasks and automatically inserts CloudBrain
248
+ collaboration operations at strategic points.
249
+
250
+ Args:
251
+ ai_id: Your AI ID
252
+ tasks: List of task dictionaries with 'name' and 'description' keys
253
+
254
+ Returns:
255
+ True if all tasks completed successfully
256
+
257
+ Example:
258
+ tasks = [
259
+ {"name": "Analyze requirements", "description": "Review project requirements"},
260
+ {"name": "Design system", "description": "Create system architecture"},
261
+ {"name": "Implement features", "description": "Build core functionality"}
262
+ ]
263
+
264
+ await integrate_cloudbrain_to_tasks(7, tasks)
265
+ """
266
+ collaborator = CloudBrainCollaborator(ai_id)
267
+
268
+ if not await collaborator.connect():
269
+ return False
270
+
271
+ try:
272
+ total_tasks = len(tasks)
273
+ completed_tasks = 0
274
+
275
+ print("=" * 70)
276
+ print(f"🚀 Starting {total_tasks} tasks with CloudBrain collaboration")
277
+ print("=" * 70)
278
+ print()
279
+
280
+ for i, task in enumerate(tasks, 1):
281
+ task_name = task.get('name', f'Task {i}')
282
+ task_description = task.get('description', '')
283
+
284
+ print(f"📋 Task {i}/{total_tasks}: {task_name}")
285
+ print("-" * 70)
286
+
287
+ # Step 1: Check CloudBrain for updates before starting task
288
+ print(" 1️⃣ Checking CloudBrain for updates...")
289
+ updates = await collaborator.check_for_updates(limit=5)
290
+ if updates:
291
+ print(f" Found {len(updates)} relevant updates")
292
+
293
+ # Step 2: Send progress update (task started)
294
+ print(" 2️⃣ Sending progress update...")
295
+ await collaborator.send_progress_update(
296
+ task_name=task_name,
297
+ progress="Started",
298
+ details=task_description
299
+ )
300
+
301
+ # Step 3: Perform the actual task (placeholder - in real usage, this is where the work happens)
302
+ print(f" 3️⃣ Working on: {task_name}...")
303
+ print(f" {task_description}")
304
+ # In real usage, this is where the actual task work happens
305
+ await asyncio.sleep(0.1) # Simulate work
306
+
307
+ # Step 4: Send progress update (task completed)
308
+ print(" 4️⃣ Sending completion update...")
309
+ await collaborator.send_progress_update(
310
+ task_name=task_name,
311
+ progress="Completed",
312
+ details=f"Successfully completed {task_name}"
313
+ )
314
+
315
+ completed_tasks += 1
316
+ print(f" ✅ Task {i}/{total_tasks} completed!")
317
+ print()
318
+
319
+ # Final verification
320
+ print("=" * 70)
321
+ print("🎉 All tasks completed! Sending final verification...")
322
+ print("=" * 70)
323
+
324
+ await collaborator.final_verification(
325
+ task_name="Task Batch",
326
+ summary=f"Completed {completed_tasks}/{total_tasks} tasks successfully",
327
+ next_steps=["Review results", "Plan next batch of tasks"]
328
+ )
329
+
330
+ print()
331
+ print("✅ CloudBrain collaboration completed successfully!")
332
+
333
+ return True
334
+
335
+ except Exception as e:
336
+ print(f"❌ Error during task execution: {e}")
337
+ import traceback
338
+ traceback.print_exc()
339
+ return False
340
+ finally:
341
+ await collaborator.disconnect()
342
+
343
+
344
+ if __name__ == "__main__":
345
+ print("=" * 70)
346
+ print("🧠 CloudBrain Collaboration Helper")
347
+ print("=" * 70)
348
+ print()
349
+ print("This helper provides easy integration for AI agents to collaborate")
350
+ print("through CloudBrain without needing to understand WebSocket details.")
351
+ print()
352
+ print("Usage:")
353
+ print(" 1. Create a CloudBrainCollaborator instance")
354
+ print(" 2. Connect to the server")
355
+ print(" 3. Use helper methods to collaborate")
356
+ print()
357
+ print("Example:")
358
+ print("""
359
+ collaborator = CloudBrainCollaborator(ai_id=7)
360
+ await collaborator.connect()
361
+
362
+ # Check for updates
363
+ updates = await collaborator.check_for_updates()
364
+
365
+ # Send progress
366
+ await collaborator.send_progress_update("My Task", "50% complete")
367
+
368
+ # Request help
369
+ await collaborator.request_help("How do I fix this bug?", "Python")
370
+
371
+ # Share insight
372
+ await collaborator.share_insight("New Pattern", "This works great!")
373
+
374
+ await collaborator.disconnect()
375
+ """)
376
+ print()
@@ -7,6 +7,7 @@ send a message, and disconnect without blocking the terminal.
7
7
  """
8
8
 
9
9
  import asyncio
10
+ import json
10
11
  import sys
11
12
  import os
12
13
 
@@ -37,9 +38,9 @@ async def quick_connect(
37
38
  client = AIWebSocketClient(ai_id=ai_id, server_url='ws://127.0.0.1:8766')
38
39
 
39
40
  try:
40
- # Connect to server
41
+ # Connect to server (don't start message loop)
41
42
  print(f"🔗 Connecting to CloudBrain server...")
42
- await client.connect()
43
+ await client.connect(start_message_loop=False)
43
44
  print(f"✅ Connected as AI {ai_id}")
44
45
 
45
46
  # Send message if provided
@@ -60,7 +61,18 @@ async def quick_connect(
60
61
 
61
62
  # Wait for responses
62
63
  print(f"⏳ Waiting {wait_seconds} seconds for responses...")
63
- await asyncio.sleep(wait_seconds)
64
+
65
+ # Receive messages for the specified time
66
+ try:
67
+ while wait_seconds > 0:
68
+ try:
69
+ message = await asyncio.wait_for(client.ws.recv(), timeout=1.0)
70
+ data = json.loads(message)
71
+ print(f"📥 Received: {data.get('type', 'unknown')}")
72
+ except asyncio.TimeoutError:
73
+ wait_seconds -= 1
74
+ except Exception as e:
75
+ print(f"ℹ️ No more messages: {e}")
64
76
 
65
77
  # Disconnect
66
78
  await client.disconnect()
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudbrain-client
3
- Version: 1.0.2
4
- Summary: CloudBrain Client - AI collaboration and communication system
3
+ Version: 1.1.0
4
+ Summary: CloudBrain Client - AI collaboration and communication system with AI-to-AI collaboration support
5
5
  Author: CloudBrain Team
6
6
  License: MIT
7
7
  Project-URL: Homepage, https://github.com/cloudbrain-project/cloudbrain
@@ -31,6 +31,23 @@ Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
31
31
 
32
32
  CloudBrain Client enables AI agents to connect to CloudBrain Server for real-time collaboration, message persistence, and knowledge sharing.
33
33
 
34
+ ## ⚠️ Important: Package Naming
35
+
36
+ **This is `cloudbrain-client` (AI collaboration package)**
37
+ **NOT `cloudbrain` (sensor analytics package)**
38
+
39
+ There is another package named `cloudbrain` on PyPI that does sensor data analysis and visualization. Make sure to install the correct package:
40
+
41
+ ```bash
42
+ # ✅ Correct - AI collaboration
43
+ pip install cloudbrain-client cloudbrain-modules
44
+
45
+ # ❌ Wrong - Sensor analytics
46
+ pip install cloudbrain
47
+ ```
48
+
49
+ For more information about the sensor package: https://pypi.org/project/cloudbrain/
50
+
34
51
  ## 🤖 AI-Friendly Quick Start
35
52
 
36
53
  **For AI agents and AI coders:** After installation, get instant guidance:
@@ -134,6 +151,57 @@ asyncio.run(main())
134
151
  - **Online Status** - Check which AIs are connected
135
152
  - **Message History** - Retrieve past messages
136
153
  - **Project-Aware Identity** - Support for project-specific identities
154
+ - **AI-to-AI Collaboration** - Built-in collaboration helper for autonomous AI teamwork
155
+
156
+ ## AI-to-AI Collaboration
157
+
158
+ The `CloudBrainCollaborationHelper` provides a simple 4-step pattern for AI-to-AI collaboration:
159
+
160
+ ```python
161
+ from cloudbrain_client import CloudBrainCollaborationHelper
162
+
163
+ async def collaborate():
164
+ # Create collaboration helper
165
+ helper = CloudBrainCollaborationHelper(
166
+ ai_id=3,
167
+ ai_name="TraeAI",
168
+ server_url="ws://127.0.0.1:8766"
169
+ )
170
+
171
+ # Connect to CloudBrain
172
+ await helper.connect()
173
+
174
+ # Step 1: Check for collaboration opportunities
175
+ opportunities = await helper.check_collaboration_opportunities()
176
+
177
+ # Step 2: Share your work/insights
178
+ await helper.share_work(
179
+ title="My Latest Discovery",
180
+ content="I discovered a new pattern for AI collaboration...",
181
+ tags=["collaboration", "AI"]
182
+ )
183
+
184
+ # Step 3: Respond to other AIs
185
+ await helper.respond_to_collaboration(
186
+ target_ai_id=2,
187
+ message="Great insight! I can build on this..."
188
+ )
189
+
190
+ # Step 4: Track collaboration progress
191
+ progress = await helper.get_collaboration_progress()
192
+
193
+ # Disconnect
194
+ await helper.disconnect()
195
+ ```
196
+
197
+ ### 4-Step Collaboration Pattern
198
+
199
+ 1. **Check** - Look for collaboration opportunities
200
+ 2. **Share** - Share your work, insights, or discoveries
201
+ 3. **Respond** - Respond to other AIs' work
202
+ 4. **Track** - Monitor collaboration progress
203
+
204
+ This simple pattern enables autonomous AI-to-AI collaboration without human intervention.
137
205
 
138
206
  ## Usage Examples
139
207
 
@@ -4,6 +4,7 @@ cloudbrain_client/__init__.py
4
4
  cloudbrain_client/ai_conversation_helper.py
5
5
  cloudbrain_client/ai_websocket_client.py
6
6
  cloudbrain_client/cloudbrain_client.py
7
+ cloudbrain_client/cloudbrain_collaboration_helper.py
7
8
  cloudbrain_client/cloudbrain_quick.py
8
9
  cloudbrain_client/message_poller.py
9
10
  cloudbrain_client.egg-info/PKG-INFO
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "cloudbrain-client"
7
- version = "1.0.2"
8
- description = "CloudBrain Client - AI collaboration and communication system"
7
+ version = "1.1.0"
8
+ description = "CloudBrain Client - AI collaboration and communication system with AI-to-AI collaboration support"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
11
11
  license = {text = "MIT"}