youclaw 4.6.8__tar.gz → 4.6.10__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 (30) hide show
  1. {youclaw-4.6.8/src/youclaw.egg-info → youclaw-4.6.10}/PKG-INFO +1 -1
  2. {youclaw-4.6.8 → youclaw-4.6.10}/pyproject.toml +1 -1
  3. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/cli.py +37 -0
  4. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/dashboard.py +14 -5
  5. {youclaw-4.6.8 → youclaw-4.6.10/src/youclaw.egg-info}/PKG-INFO +1 -1
  6. {youclaw-4.6.8 → youclaw-4.6.10}/LICENSE +0 -0
  7. {youclaw-4.6.8 → youclaw-4.6.10}/MANIFEST.in +0 -0
  8. {youclaw-4.6.8 → youclaw-4.6.10}/README.md +0 -0
  9. {youclaw-4.6.8 → youclaw-4.6.10}/setup.cfg +0 -0
  10. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/__init__.py +0 -0
  11. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/bot.py +0 -0
  12. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/commands.py +0 -0
  13. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/config.py +0 -0
  14. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/core_skills.py +0 -0
  15. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/discord_handler.py +0 -0
  16. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/env_manager.py +0 -0
  17. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/main.py +0 -0
  18. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/memory_manager.py +0 -0
  19. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/ollama_client.py +0 -0
  20. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/personality_manager.py +0 -0
  21. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/scheduler_manager.py +0 -0
  22. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/search_client.py +0 -0
  23. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/skills_manager.py +0 -0
  24. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/telegram_handler.py +0 -0
  25. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw/vector_manager.py +0 -0
  26. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw.egg-info/SOURCES.txt +0 -0
  27. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw.egg-info/dependency_links.txt +0 -0
  28. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw.egg-info/entry_points.txt +0 -0
  29. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw.egg-info/requires.txt +0 -0
  30. {youclaw-4.6.8 → youclaw-4.6.10}/src/youclaw.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: youclaw
3
- Version: 4.6.8
3
+ Version: 4.6.10
4
4
  Summary: Your Personal AI Assistant - Universal Neural Core
5
5
  Author-email: Imran <imran@example.com>
6
6
  Classifier: Programming Language :: Python :: 3
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "youclaw"
7
- version = "4.6.8"
7
+ version = "4.6.10"
8
8
  authors = [
9
9
  { name="Imran", email="imran@example.com" },
10
10
  ]
@@ -390,6 +390,39 @@ class YouClawCLI:
390
390
  print("\n👋 Dashboard stopped")
391
391
  return 0
392
392
 
393
+ def cmd_uninstall(self, args):
394
+ """Uninstall YouClaw"""
395
+ print("🦞 YouClaw Unmet protocol initiated...")
396
+ confirm = input("Are you sure you want to remove YouClaw configuration and data? (y/N): ").strip().lower()
397
+ if confirm != 'y':
398
+ print("❌ Cancelled.")
399
+ return 0
400
+
401
+ # Stop service
402
+ self.cmd_stop(args)
403
+
404
+ # Remove data
405
+ try:
406
+ import shutil
407
+ data_dir = self.project_dir / "data"
408
+ if data_dir.exists():
409
+ print(f"🗑️ Removing {data_dir}...")
410
+ shutil.rmtree(data_dir)
411
+
412
+ for file in ["youclaw.log", "bot_output.log", ".env"]:
413
+ fpath = Path(file)
414
+ if fpath.exists():
415
+ print(f"🗑️ Removing {fpath}...")
416
+ fpath.unlink()
417
+
418
+ print("\n✅ Data and configuration cleared.")
419
+ print("To complete the uninstallation, please run:")
420
+ print("\n pip uninstall youclaw\n")
421
+ return 0
422
+ except Exception as e:
423
+ print(f"❌ Error cleaning up: {e}")
424
+ return 1
425
+
393
426
  def run(self):
394
427
  """Main CLI entry point"""
395
428
  parser = argparse.ArgumentParser(
@@ -434,6 +467,9 @@ Examples:
434
467
  dashboard_parser = subparsers.add_parser("dashboard", help="Start web dashboard")
435
468
  dashboard_parser.add_argument("-p", "--port", type=int, default=8080, help="Dashboard port")
436
469
 
470
+ # Uninstall command
471
+ subparsers.add_parser("uninstall", help="Uninstall YouClaw and clean up data")
472
+
437
473
  args = parser.parse_args()
438
474
 
439
475
  if not args.command:
@@ -450,6 +486,7 @@ Examples:
450
486
  "stop": self.cmd_stop,
451
487
  "restart": self.cmd_restart,
452
488
  "dashboard": self.cmd_dashboard,
489
+ "uninstall": self.cmd_uninstall,
453
490
  }
454
491
 
455
492
  if args.command in command_map:
@@ -141,6 +141,17 @@ async def api_stats(request):
141
141
  total_messages = (await cursor.fetchone())[0]
142
142
  async with memory_manager.db.execute("SELECT COUNT(DISTINCT user_id) FROM conversations") as cursor:
143
143
  unique_users = (await cursor.fetchone())[0]
144
+
145
+ # Calculate uptime
146
+ import time, psutil, os
147
+ try:
148
+ process = psutil.Process(os.getpid())
149
+ uptime_seconds = time.time() - process.create_time()
150
+ hours = int(uptime_seconds // 3600)
151
+ minutes = int((uptime_seconds % 3600) // 60)
152
+ uptime_str = f"{hours}h {minutes}m"
153
+ except:
154
+ uptime_str = "0h 0m"
144
155
 
145
156
  from personality_manager import PERSONALITIES, DEFAULT_PERSONALITY
146
157
  active_p = await memory_manager.get_global_setting("active_personality", DEFAULT_PERSONALITY)
@@ -153,11 +164,9 @@ async def api_stats(request):
153
164
 
154
165
  stats = {
155
166
  "status": "online",
156
- "user_messages": count,
157
- "is_admin": is_admin,
158
- "is_linked": bool(user_id),
159
- "ollama_status": "online" if ollama_health else "offline",
160
- "model": ollama_client.model,
167
+ "uptime": uptime_str,
168
+ "ollama_connected": ollama_health,
169
+ "ollama_model": ollama_client.model if ollama_health else "Disconnected (Check URL)",
161
170
  "telegram_enabled": config.telegram.enabled,
162
171
  "discord_enabled": config.discord.enabled,
163
172
  "timestamp": datetime.now().isoformat(),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: youclaw
3
- Version: 4.6.8
3
+ Version: 4.6.10
4
4
  Summary: Your Personal AI Assistant - Universal Neural Core
5
5
  Author-email: Imran <imran@example.com>
6
6
  Classifier: Programming Language :: Python :: 3
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes