pythonclaw 0.6.1__tar.gz → 0.6.2__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 (131) hide show
  1. {pythonclaw-0.6.1/pythonclaw.egg-info → pythonclaw-0.6.2}/PKG-INFO +1 -1
  2. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pyproject.toml +1 -1
  3. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/agent.py +5 -7
  4. {pythonclaw-0.6.1 → pythonclaw-0.6.2/pythonclaw.egg-info}/PKG-INFO +1 -1
  5. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/tests/test_skills.py +1 -1
  6. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/LICENSE +0 -0
  7. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/MANIFEST.in +0 -0
  8. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/README.md +0 -0
  9. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/__init__.py +0 -0
  10. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/__main__.py +0 -0
  11. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/channels/discord_bot.py +0 -0
  12. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/channels/telegram_bot.py +0 -0
  13. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/channels/whatsapp_bot.py +0 -0
  14. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/config.py +0 -0
  15. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/__init__.py +0 -0
  16. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/compaction.py +0 -0
  17. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/knowledge/rag.py +0 -0
  18. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/llm/anthropic_client.py +0 -0
  19. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/llm/base.py +0 -0
  20. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/llm/gemini_client.py +0 -0
  21. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/llm/openai_compatible.py +0 -0
  22. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/llm/response.py +0 -0
  23. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/memory/manager.py +0 -0
  24. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/memory/storage.py +0 -0
  25. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/persistent_agent.py +0 -0
  26. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/retrieval/__init__.py +0 -0
  27. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/retrieval/chunker.py +0 -0
  28. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/retrieval/dense.py +0 -0
  29. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/retrieval/fusion.py +0 -0
  30. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/retrieval/reranker.py +0 -0
  31. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/retrieval/retriever.py +0 -0
  32. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/retrieval/sparse.py +0 -0
  33. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/session_store.py +0 -0
  34. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/skill_loader.py +0 -0
  35. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/skillhub.py +0 -0
  36. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/tools.py +0 -0
  37. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/core/utils.py +0 -0
  38. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/daemon.py +0 -0
  39. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/init.py +0 -0
  40. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/main.py +0 -0
  41. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/onboard.py +0 -0
  42. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/scheduler/cron.py +0 -0
  43. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/scheduler/heartbeat.py +0 -0
  44. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/server.py +0 -0
  45. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/session_manager.py +0 -0
  46. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/persona/demo_persona.md +0 -0
  47. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/communication/CATEGORY.md +0 -0
  48. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/communication/email/SKILL.md +0 -0
  49. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/communication/email/send_email.py +0 -0
  50. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/communication/slack/SKILL.md +0 -0
  51. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/communication/slack/slack_api.py +0 -0
  52. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/CATEGORY.md +0 -0
  53. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/csv_analyzer/SKILL.md +0 -0
  54. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/csv_analyzer/analyze.py +0 -0
  55. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/finance/SKILL.md +0 -0
  56. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/finance/fetch_quote.py +0 -0
  57. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/news/SKILL.md +0 -0
  58. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/news/search_news.py +0 -0
  59. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/pdf_reader/SKILL.md +0 -0
  60. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/pdf_reader/read_pdf.py +0 -0
  61. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/scraper/SKILL.md +0 -0
  62. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/scraper/scrape.py +0 -0
  63. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/weather/SKILL.md +0 -0
  64. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/weather/weather.py +0 -0
  65. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/youtube/SKILL.md +0 -0
  66. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/data/youtube/youtube_info.py +0 -0
  67. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/dev/CATEGORY.md +0 -0
  68. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/dev/code_runner/SKILL.md +0 -0
  69. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/dev/code_runner/run_code.py +0 -0
  70. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/dev/github/SKILL.md +0 -0
  71. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/dev/github/gh.py +0 -0
  72. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/dev/http_request/SKILL.md +0 -0
  73. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/dev/http_request/request.py +0 -0
  74. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/google/CATEGORY.md +0 -0
  75. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/google/workspace/SKILL.md +0 -0
  76. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/google/workspace/check_setup.sh +0 -0
  77. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/media/CATEGORY.md +0 -0
  78. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/media/image_gen/SKILL.md +0 -0
  79. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/media/image_gen/generate.py +0 -0
  80. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/media/spotify/SKILL.md +0 -0
  81. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/media/spotify/spotify_ctl.py +0 -0
  82. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/media/tts/SKILL.md +0 -0
  83. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/media/tts/speak.py +0 -0
  84. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/meta/CATEGORY.md +0 -0
  85. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/meta/skill_creator/SKILL.md +0 -0
  86. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/productivity/CATEGORY.md +0 -0
  87. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/productivity/notion/SKILL.md +0 -0
  88. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/productivity/notion/notion_api.py +0 -0
  89. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/productivity/obsidian/SKILL.md +0 -0
  90. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/productivity/obsidian/obsidian_vault.py +0 -0
  91. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/productivity/trello/SKILL.md +0 -0
  92. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/productivity/trello/trello_api.py +0 -0
  93. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/CATEGORY.md +0 -0
  94. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/change_persona/SKILL.md +0 -0
  95. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/change_setting/SKILL.md +0 -0
  96. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/change_setting/update_config.py +0 -0
  97. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/change_soul/SKILL.md +0 -0
  98. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/model_usage/SKILL.md +0 -0
  99. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/model_usage/usage_stats.py +0 -0
  100. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/onboarding/SKILL.md +0 -0
  101. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/onboarding/write_identity.py +0 -0
  102. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/random/SKILL.md +0 -0
  103. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/random/random_util.py +0 -0
  104. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/session_logs/SKILL.md +0 -0
  105. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/session_logs/search_sessions.py +0 -0
  106. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/time/SKILL.md +0 -0
  107. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/system/time/time_util.py +0 -0
  108. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/text/CATEGORY.md +0 -0
  109. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/text/translator/SKILL.md +0 -0
  110. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/text/translator/translate.py +0 -0
  111. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/web/CATEGORY.md +0 -0
  112. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/web/summarize/SKILL.md +0 -0
  113. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/web/summarize/summarize_url.py +0 -0
  114. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/skills/web/tavily/SKILL.md +0 -0
  115. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/soul/SOUL.md +0 -0
  116. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/templates/tools/TOOLS.md +0 -0
  117. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/web/__init__.py +0 -0
  118. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/web/app.py +0 -0
  119. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/web/static/favicon.png +0 -0
  120. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/web/static/index.html +0 -0
  121. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw/web/static/logo.png +0 -0
  122. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw.egg-info/SOURCES.txt +0 -0
  123. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw.egg-info/dependency_links.txt +0 -0
  124. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw.egg-info/entry_points.txt +0 -0
  125. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw.egg-info/requires.txt +0 -0
  126. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/pythonclaw.egg-info/top_level.txt +0 -0
  127. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/setup.cfg +0 -0
  128. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/tests/test_compaction.py +0 -0
  129. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/tests/test_persistence.py +0 -0
  130. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/tests/test_rag_hybrid.py +0 -0
  131. {pythonclaw-0.6.1 → pythonclaw-0.6.2}/tests/test_soul.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonclaw
3
- Version: 0.6.1
3
+ Version: 0.6.2
4
4
  Summary: OpenClaw reimagined in pure Python — autonomous AI agent with memory, RAG, skills, web dashboard, and multi-channel support.
5
5
  Author-email: Eric Wang <wangchen2007915@gmail.com>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pythonclaw"
7
- version = "0.6.1"
7
+ version = "0.6.2"
8
8
  description = "OpenClaw reimagined in pure Python — autonomous AI agent with memory, RAG, skills, web dashboard, and multi-channel support."
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -1027,17 +1027,15 @@ Don't repeat this if `bot_name` already exists in memory.
1027
1027
  tools=current_tools,
1028
1028
  tool_choice="auto",
1029
1029
  )
1030
- try:
1031
- for chunk in gen:
1030
+ response = None
1031
+ while True:
1032
+ try:
1033
+ chunk = next(gen)
1032
1034
  if chunk.get("type") == "text_delta" and on_token:
1033
1035
  on_token(chunk["text"])
1034
- except StopIteration as si:
1035
- response = si.value
1036
- else:
1037
- try:
1038
- response = gen.send(None)
1039
1036
  except StopIteration as si:
1040
1037
  response = si.value
1038
+ break
1041
1039
 
1042
1040
  if response is None:
1043
1041
  return ""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonclaw
3
- Version: 0.6.1
3
+ Version: 0.6.2
4
4
  Summary: OpenClaw reimagined in pure Python — autonomous AI agent with memory, RAG, skills, web dashboard, and multi-channel support.
5
5
  Author-email: Eric Wang <wangchen2007915@gmail.com>
6
6
  License: MIT
@@ -155,7 +155,7 @@ class TestCatalogBuilder:
155
155
  def test_catalog_groups_by_category(self, skills_dir):
156
156
  registry = SkillRegistry([skills_dir])
157
157
  catalog = registry.build_catalog()
158
- assert "**math**" in catalog
158
+ assert "[math]" in catalog
159
159
 
160
160
  def test_catalog_empty_shows_message(self, tmp_path):
161
161
  registry = SkillRegistry([str(tmp_path)])
File without changes
File without changes
File without changes
File without changes