openclaw-py 0.1.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 (678) hide show
  1. openclaw_py-0.1.2/.agent/workflows/components/connections/channel-auth.md +34 -0
  2. openclaw_py-0.1.2/.agent/workflows/components/connections/llm-provider.md +41 -0
  3. openclaw_py-0.1.2/.agent/workflows/components/nodes/http-probe.md +53 -0
  4. openclaw_py-0.1.2/.agent/workflows/components/nodes/llm-chat.md +66 -0
  5. openclaw_py-0.1.2/.agent/workflows/components/nodes/notify.md +61 -0
  6. openclaw_py-0.1.2/.agent/workflows/components/nodes/pip-audit.md +48 -0
  7. openclaw_py-0.1.2/.agent/workflows/components/triggers/cron.md +16 -0
  8. openclaw_py-0.1.2/.agent/workflows/components/triggers/event.md +17 -0
  9. openclaw_py-0.1.2/.agent/workflows/components/triggers/webhook.md +17 -0
  10. openclaw_py-0.1.2/.agent/workflows/flows/channel-health-check/config.yaml +13 -0
  11. openclaw_py-0.1.2/.agent/workflows/flows/channel-health-check/flow.md +32 -0
  12. openclaw_py-0.1.2/.agent/workflows/flows/channel-health-check/logs/.gitkeep +0 -0
  13. openclaw_py-0.1.2/.agent/workflows/flows/channel-health-check/run.sh +42 -0
  14. openclaw_py-0.1.2/.agent/workflows/flows/channel-health-check/state/.gitkeep +0 -0
  15. openclaw_py-0.1.2/.agent/workflows/flows/daily-memory-digest/config.yaml +16 -0
  16. openclaw_py-0.1.2/.agent/workflows/flows/daily-memory-digest/flow.md +31 -0
  17. openclaw_py-0.1.2/.agent/workflows/flows/daily-memory-digest/logs/.gitkeep +0 -0
  18. openclaw_py-0.1.2/.agent/workflows/flows/daily-memory-digest/run.sh +37 -0
  19. openclaw_py-0.1.2/.agent/workflows/flows/daily-memory-digest/state/.gitkeep +0 -0
  20. openclaw_py-0.1.2/.agent/workflows/flows/dependency-check/config.yaml +12 -0
  21. openclaw_py-0.1.2/.agent/workflows/flows/dependency-check/flow.md +31 -0
  22. openclaw_py-0.1.2/.agent/workflows/flows/dependency-check/logs/.gitkeep +0 -0
  23. openclaw_py-0.1.2/.agent/workflows/flows/dependency-check/run.sh +47 -0
  24. openclaw_py-0.1.2/.agent/workflows/flows/dependency-check/state/.gitkeep +0 -0
  25. openclaw_py-0.1.2/.agent/workflows/flows/model-probe/config.yaml +14 -0
  26. openclaw_py-0.1.2/.agent/workflows/flows/model-probe/flow.md +31 -0
  27. openclaw_py-0.1.2/.agent/workflows/flows/model-probe/logs/.gitkeep +0 -0
  28. openclaw_py-0.1.2/.agent/workflows/flows/model-probe/run.sh +49 -0
  29. openclaw_py-0.1.2/.agent/workflows/flows/model-probe/state/.gitkeep +0 -0
  30. openclaw_py-0.1.2/.agent/workflows/flows/security-audit/config.yaml +20 -0
  31. openclaw_py-0.1.2/.agent/workflows/flows/security-audit/flow.md +32 -0
  32. openclaw_py-0.1.2/.agent/workflows/flows/security-audit/logs/.gitkeep +0 -0
  33. openclaw_py-0.1.2/.agent/workflows/flows/security-audit/run.sh +44 -0
  34. openclaw_py-0.1.2/.agent/workflows/flows/security-audit/state/.gitkeep +0 -0
  35. openclaw_py-0.1.2/.agent/workflows/index.md +27 -0
  36. openclaw_py-0.1.2/.dockerignore +21 -0
  37. openclaw_py-0.1.2/.github/FUNDING.yml +1 -0
  38. openclaw_py-0.1.2/.github/ISSUE_TEMPLATE/bug_report.yml +108 -0
  39. openclaw_py-0.1.2/.github/ISSUE_TEMPLATE/config.yml +8 -0
  40. openclaw_py-0.1.2/.github/ISSUE_TEMPLATE/feature_request.yml +70 -0
  41. openclaw_py-0.1.2/.github/dependabot.yml +62 -0
  42. openclaw_py-0.1.2/.github/labeler.yml +85 -0
  43. openclaw_py-0.1.2/.github/pull_request_template.md +108 -0
  44. openclaw_py-0.1.2/.github/workflows/actionlint.yml +30 -0
  45. openclaw_py-0.1.2/.github/workflows/ci.yml +181 -0
  46. openclaw_py-0.1.2/.github/workflows/codeql.yml +46 -0
  47. openclaw_py-0.1.2/.github/workflows/dependency-review.yml +24 -0
  48. openclaw_py-0.1.2/.github/workflows/docker.yml +64 -0
  49. openclaw_py-0.1.2/.github/workflows/install-smoke.yml +120 -0
  50. openclaw_py-0.1.2/.github/workflows/labeler.yml +49 -0
  51. openclaw_py-0.1.2/.github/workflows/pr-label-automation.yml +54 -0
  52. openclaw_py-0.1.2/.github/workflows/pr-template-check.yml +38 -0
  53. openclaw_py-0.1.2/.github/workflows/pre-commit.yml +41 -0
  54. openclaw_py-0.1.2/.github/workflows/release.yml +217 -0
  55. openclaw_py-0.1.2/.github/workflows/scorecard.yml +51 -0
  56. openclaw_py-0.1.2/.github/workflows/stale.yml +40 -0
  57. openclaw_py-0.1.2/.gitignore +68 -0
  58. openclaw_py-0.1.2/.pre-commit-config.yaml +7 -0
  59. openclaw_py-0.1.2/CHANGELOG.md +52 -0
  60. openclaw_py-0.1.2/CONTRIBUTING.md +264 -0
  61. openclaw_py-0.1.2/Dockerfile +39 -0
  62. openclaw_py-0.1.2/Formula/pyclaw.rb +39 -0
  63. openclaw_py-0.1.2/LICENSE +21 -0
  64. openclaw_py-0.1.2/Makefile +71 -0
  65. openclaw_py-0.1.2/PKG-INFO +940 -0
  66. openclaw_py-0.1.2/README.md +829 -0
  67. openclaw_py-0.1.2/docker-compose.yml +18 -0
  68. openclaw_py-0.1.2/docs/.i18n/README.md +31 -0
  69. openclaw_py-0.1.2/docs/.i18n/glossary.ja-JP.json +14 -0
  70. openclaw_py-0.1.2/docs/.i18n/glossary.zh-CN.json +210 -0
  71. openclaw_py-0.1.2/docs/CNAME +1 -0
  72. openclaw_py-0.1.2/docs/README.md +54 -0
  73. openclaw_py-0.1.2/docs/api-reference.md +477 -0
  74. openclaw_py-0.1.2/docs/architecture.md +393 -0
  75. openclaw_py-0.1.2/docs/concepts.md +209 -0
  76. openclaw_py-0.1.2/docs/configuration.md +366 -0
  77. openclaw_py-0.1.2/docs/install.md +188 -0
  78. openclaw_py-0.1.2/docs/quickstart.md +127 -0
  79. openclaw_py-0.1.2/docs/reference/20260301_plan.md +687 -0
  80. openclaw_py-0.1.2/docs/reference/20260301gap.md +544 -0
  81. openclaw_py-0.1.2/docs/reference/20260302_todo.md +344 -0
  82. openclaw_py-0.1.2/docs/reference/PROGRESS.md +809 -0
  83. openclaw_py-0.1.2/docs/reference/gap-analysis.md +418 -0
  84. openclaw_py-0.1.2/docs/reference/github_automation_plan_0304.md +304 -0
  85. openclaw_py-0.1.2/docs/reference/implement_plan_20260228.md +183 -0
  86. openclaw_py-0.1.2/docs/reference/implement_plan_next.md +644 -0
  87. openclaw_py-0.1.2/docs/reference/platform_implement_plan_0304.md +364 -0
  88. openclaw_py-0.1.2/docs/reference/python-flet-rewrite-plan.md +678 -0
  89. openclaw_py-0.1.2/docs/reference/ui_upgrade_plan.md +481 -0
  90. openclaw_py-0.1.2/docs/troubleshooting.md +242 -0
  91. openclaw_py-0.1.2/flet_app.py +37 -0
  92. openclaw_py-0.1.2/pyproject.toml +228 -0
  93. openclaw_py-0.1.2/scripts/build-all.ps1 +76 -0
  94. openclaw_py-0.1.2/scripts/build-all.sh +90 -0
  95. openclaw_py-0.1.2/scripts/build-desktop.sh +61 -0
  96. openclaw_py-0.1.2/scripts/build-mobile.sh +57 -0
  97. openclaw_py-0.1.2/scripts/build-web.sh +30 -0
  98. openclaw_py-0.1.2/scripts/generate-release-notes.sh +74 -0
  99. openclaw_py-0.1.2/scripts/install.ps1 +116 -0
  100. openclaw_py-0.1.2/scripts/install.sh +140 -0
  101. openclaw_py-0.1.2/scripts/uninstall.ps1 +101 -0
  102. openclaw_py-0.1.2/scripts/uninstall.sh +75 -0
  103. openclaw_py-0.1.2/src/pyclaw/__init__.py +3 -0
  104. openclaw_py-0.1.2/src/pyclaw/acp/__init__.py +46 -0
  105. openclaw_py-0.1.2/src/pyclaw/acp/acpx_runtime.py +331 -0
  106. openclaw_py-0.1.2/src/pyclaw/acp/client.py +185 -0
  107. openclaw_py-0.1.2/src/pyclaw/acp/control_plane.py +218 -0
  108. openclaw_py-0.1.2/src/pyclaw/acp/event_mapper.py +67 -0
  109. openclaw_py-0.1.2/src/pyclaw/acp/server.py +431 -0
  110. openclaw_py-0.1.2/src/pyclaw/acp/session.py +83 -0
  111. openclaw_py-0.1.2/src/pyclaw/acp/session_mapper.py +175 -0
  112. openclaw_py-0.1.2/src/pyclaw/acp/thread_ownership.py +110 -0
  113. openclaw_py-0.1.2/src/pyclaw/acp/types.py +44 -0
  114. openclaw_py-0.1.2/src/pyclaw/agents/__init__.py +0 -0
  115. openclaw_py-0.1.2/src/pyclaw/agents/auth/__init__.py +0 -0
  116. openclaw_py-0.1.2/src/pyclaw/agents/auth_profiles/__init__.py +49 -0
  117. openclaw_py-0.1.2/src/pyclaw/agents/auth_profiles/profiles.py +115 -0
  118. openclaw_py-0.1.2/src/pyclaw/agents/auth_profiles/store.py +123 -0
  119. openclaw_py-0.1.2/src/pyclaw/agents/auth_profiles/types.py +177 -0
  120. openclaw_py-0.1.2/src/pyclaw/agents/auth_profiles/usage.py +145 -0
  121. openclaw_py-0.1.2/src/pyclaw/agents/auto_reply.py +243 -0
  122. openclaw_py-0.1.2/src/pyclaw/agents/compaction_policy.py +263 -0
  123. openclaw_py-0.1.2/src/pyclaw/agents/embedded_runner/__init__.py +0 -0
  124. openclaw_py-0.1.2/src/pyclaw/agents/embedded_runner/helpers.py +295 -0
  125. openclaw_py-0.1.2/src/pyclaw/agents/embedded_runner/run.py +263 -0
  126. openclaw_py-0.1.2/src/pyclaw/agents/embedded_runner/session_manager.py +216 -0
  127. openclaw_py-0.1.2/src/pyclaw/agents/embedded_runner/thinking.py +268 -0
  128. openclaw_py-0.1.2/src/pyclaw/agents/embedded_runner/tool_guards.py +271 -0
  129. openclaw_py-0.1.2/src/pyclaw/agents/export/template.css +1060 -0
  130. openclaw_py-0.1.2/src/pyclaw/agents/export/template.html +88 -0
  131. openclaw_py-0.1.2/src/pyclaw/agents/intent.py +173 -0
  132. openclaw_py-0.1.2/src/pyclaw/agents/interrupt.py +118 -0
  133. openclaw_py-0.1.2/src/pyclaw/agents/link_understanding.py +253 -0
  134. openclaw_py-0.1.2/src/pyclaw/agents/model_catalog.py +507 -0
  135. openclaw_py-0.1.2/src/pyclaw/agents/model_fallback.py +238 -0
  136. openclaw_py-0.1.2/src/pyclaw/agents/models/__init__.py +0 -0
  137. openclaw_py-0.1.2/src/pyclaw/agents/planner.py +305 -0
  138. openclaw_py-0.1.2/src/pyclaw/agents/progress.py +133 -0
  139. openclaw_py-0.1.2/src/pyclaw/agents/providers/__init__.py +0 -0
  140. openclaw_py-0.1.2/src/pyclaw/agents/providers/azure_openai.py +232 -0
  141. openclaw_py-0.1.2/src/pyclaw/agents/providers/bedrock.py +221 -0
  142. openclaw_py-0.1.2/src/pyclaw/agents/providers/cn_providers.py +193 -0
  143. openclaw_py-0.1.2/src/pyclaw/agents/providers/extra_providers.py +171 -0
  144. openclaw_py-0.1.2/src/pyclaw/agents/providers/oauth_providers.py +308 -0
  145. openclaw_py-0.1.2/src/pyclaw/agents/providers/ollama_enhanced.py +232 -0
  146. openclaw_py-0.1.2/src/pyclaw/agents/providers/openai_compat.py +299 -0
  147. openclaw_py-0.1.2/src/pyclaw/agents/providers/registry.py +203 -0
  148. openclaw_py-0.1.2/src/pyclaw/agents/runner.py +295 -0
  149. openclaw_py-0.1.2/src/pyclaw/agents/session.py +352 -0
  150. openclaw_py-0.1.2/src/pyclaw/agents/session_lock.py +68 -0
  151. openclaw_py-0.1.2/src/pyclaw/agents/skills/__init__.py +27 -0
  152. openclaw_py-0.1.2/src/pyclaw/agents/skills/docx/SKILL.md +24 -0
  153. openclaw_py-0.1.2/src/pyclaw/agents/skills/loader.py +167 -0
  154. openclaw_py-0.1.2/src/pyclaw/agents/skills/marketplace.py +198 -0
  155. openclaw_py-0.1.2/src/pyclaw/agents/skills/pdf/SKILL.md +24 -0
  156. openclaw_py-0.1.2/src/pyclaw/agents/skills/pptx/SKILL.md +24 -0
  157. openclaw_py-0.1.2/src/pyclaw/agents/skills/prompt.py +98 -0
  158. openclaw_py-0.1.2/src/pyclaw/agents/skills/social/SKILL.md +40 -0
  159. openclaw_py-0.1.2/src/pyclaw/agents/skills/types.py +59 -0
  160. openclaw_py-0.1.2/src/pyclaw/agents/skills/xlsx/SKILL.md +24 -0
  161. openclaw_py-0.1.2/src/pyclaw/agents/stream.py +337 -0
  162. openclaw_py-0.1.2/src/pyclaw/agents/subagents/__init__.py +19 -0
  163. openclaw_py-0.1.2/src/pyclaw/agents/subagents/manager.py +257 -0
  164. openclaw_py-0.1.2/src/pyclaw/agents/subagents/runner.py +33 -0
  165. openclaw_py-0.1.2/src/pyclaw/agents/subagents/types.py +61 -0
  166. openclaw_py-0.1.2/src/pyclaw/agents/system_prompt.py +256 -0
  167. openclaw_py-0.1.2/src/pyclaw/agents/templates/AGENTS.default.md +124 -0
  168. openclaw_py-0.1.2/src/pyclaw/agents/templates/AGENTS.dev.md +83 -0
  169. openclaw_py-0.1.2/src/pyclaw/agents/templates/AGENTS.md +219 -0
  170. openclaw_py-0.1.2/src/pyclaw/agents/templates/BOOT.md +11 -0
  171. openclaw_py-0.1.2/src/pyclaw/agents/templates/BOOTSTRAP.md +62 -0
  172. openclaw_py-0.1.2/src/pyclaw/agents/templates/HEARTBEAT.md +12 -0
  173. openclaw_py-0.1.2/src/pyclaw/agents/templates/IDENTITY.dev.md +47 -0
  174. openclaw_py-0.1.2/src/pyclaw/agents/templates/SOUL.dev.md +76 -0
  175. openclaw_py-0.1.2/src/pyclaw/agents/templates/SOUL.md +43 -0
  176. openclaw_py-0.1.2/src/pyclaw/agents/templates/TOOLS.dev.md +24 -0
  177. openclaw_py-0.1.2/src/pyclaw/agents/templates/TOOLS.md +47 -0
  178. openclaw_py-0.1.2/src/pyclaw/agents/templates/USER.dev.md +18 -0
  179. openclaw_py-0.1.2/src/pyclaw/agents/tokens.py +55 -0
  180. openclaw_py-0.1.2/src/pyclaw/agents/tool_policy.py +157 -0
  181. openclaw_py-0.1.2/src/pyclaw/agents/tools/__init__.py +6 -0
  182. openclaw_py-0.1.2/src/pyclaw/agents/tools/base.py +34 -0
  183. openclaw_py-0.1.2/src/pyclaw/agents/tools/browser_tool.py +140 -0
  184. openclaw_py-0.1.2/src/pyclaw/agents/tools/clipboard_tool.py +73 -0
  185. openclaw_py-0.1.2/src/pyclaw/agents/tools/cron_tool.py +129 -0
  186. openclaw_py-0.1.2/src/pyclaw/agents/tools/desktop_screenshot.py +103 -0
  187. openclaw_py-0.1.2/src/pyclaw/agents/tools/exec_tool.py +225 -0
  188. openclaw_py-0.1.2/src/pyclaw/agents/tools/file_tools.py +239 -0
  189. openclaw_py-0.1.2/src/pyclaw/agents/tools/fs_tools.py +338 -0
  190. openclaw_py-0.1.2/src/pyclaw/agents/tools/host-env-security-policy.json +23 -0
  191. openclaw_py-0.1.2/src/pyclaw/agents/tools/memory_tools.py +119 -0
  192. openclaw_py-0.1.2/src/pyclaw/agents/tools/message_tool.py +75 -0
  193. openclaw_py-0.1.2/src/pyclaw/agents/tools/office_tools.py +260 -0
  194. openclaw_py-0.1.2/src/pyclaw/agents/tools/patch_tool.py +216 -0
  195. openclaw_py-0.1.2/src/pyclaw/agents/tools/process_tool.py +160 -0
  196. openclaw_py-0.1.2/src/pyclaw/agents/tools/registry.py +165 -0
  197. openclaw_py-0.1.2/src/pyclaw/agents/tools/runtime_context.py +54 -0
  198. openclaw_py-0.1.2/src/pyclaw/agents/tools/send_file.py +89 -0
  199. openclaw_py-0.1.2/src/pyclaw/agents/tools/session_tools.py +118 -0
  200. openclaw_py-0.1.2/src/pyclaw/agents/tools/social_tools.py +127 -0
  201. openclaw_py-0.1.2/src/pyclaw/agents/tools/subagent_tools.py +210 -0
  202. openclaw_py-0.1.2/src/pyclaw/agents/tools/tool-display.json +316 -0
  203. openclaw_py-0.1.2/src/pyclaw/agents/tools/tts_tool.py +129 -0
  204. openclaw_py-0.1.2/src/pyclaw/agents/tools/web_tools.py +227 -0
  205. openclaw_py-0.1.2/src/pyclaw/agents/transports/__init__.py +1 -0
  206. openclaw_py-0.1.2/src/pyclaw/agents/transports/codex.py +131 -0
  207. openclaw_py-0.1.2/src/pyclaw/agents/tts_extended.py +255 -0
  208. openclaw_py-0.1.2/src/pyclaw/agents/types.py +72 -0
  209. openclaw_py-0.1.2/src/pyclaw/agents/workspace_sync.py +85 -0
  210. openclaw_py-0.1.2/src/pyclaw/auto_reply/__init__.py +0 -0
  211. openclaw_py-0.1.2/src/pyclaw/auto_reply/block_streaming.py +180 -0
  212. openclaw_py-0.1.2/src/pyclaw/auto_reply/commands_core.py +173 -0
  213. openclaw_py-0.1.2/src/pyclaw/auto_reply/commands_model.py +95 -0
  214. openclaw_py-0.1.2/src/pyclaw/auto_reply/commands_registry.py +286 -0
  215. openclaw_py-0.1.2/src/pyclaw/auto_reply/commands_session.py +83 -0
  216. openclaw_py-0.1.2/src/pyclaw/auto_reply/directives.py +193 -0
  217. openclaw_py-0.1.2/src/pyclaw/auto_reply/export_html.py +168 -0
  218. openclaw_py-0.1.2/src/pyclaw/auto_reply/message_queue.py +187 -0
  219. openclaw_py-0.1.2/src/pyclaw/auto_reply/reply_dispatcher.py +202 -0
  220. openclaw_py-0.1.2/src/pyclaw/browser/__init__.py +1 -0
  221. openclaw_py-0.1.2/src/pyclaw/browser/agent_tools.py +336 -0
  222. openclaw_py-0.1.2/src/pyclaw/browser/bridge_server.py +220 -0
  223. openclaw_py-0.1.2/src/pyclaw/browser/navigation_guard.py +178 -0
  224. openclaw_py-0.1.2/src/pyclaw/browser/relay.py +237 -0
  225. openclaw_py-0.1.2/src/pyclaw/browser/screenshot.py +217 -0
  226. openclaw_py-0.1.2/src/pyclaw/browser/session_manager.py +261 -0
  227. openclaw_py-0.1.2/src/pyclaw/canvas/__init__.py +13 -0
  228. openclaw_py-0.1.2/src/pyclaw/canvas/handler.py +76 -0
  229. openclaw_py-0.1.2/src/pyclaw/canvas/server.py +143 -0
  230. openclaw_py-0.1.2/src/pyclaw/channels/__init__.py +6 -0
  231. openclaw_py-0.1.2/src/pyclaw/channels/auth_guard.py +259 -0
  232. openclaw_py-0.1.2/src/pyclaw/channels/base.py +294 -0
  233. openclaw_py-0.1.2/src/pyclaw/channels/bluebubbles/__init__.py +1 -0
  234. openclaw_py-0.1.2/src/pyclaw/channels/bluebubbles/channel.py +128 -0
  235. openclaw_py-0.1.2/src/pyclaw/channels/command_gating.py +205 -0
  236. openclaw_py-0.1.2/src/pyclaw/channels/dingtalk/__init__.py +1 -0
  237. openclaw_py-0.1.2/src/pyclaw/channels/dingtalk/channel.py +255 -0
  238. openclaw_py-0.1.2/src/pyclaw/channels/discord/__init__.py +5 -0
  239. openclaw_py-0.1.2/src/pyclaw/channels/discord/channel.py +142 -0
  240. openclaw_py-0.1.2/src/pyclaw/channels/discord/voice.py +206 -0
  241. openclaw_py-0.1.2/src/pyclaw/channels/feishu/__init__.py +1 -0
  242. openclaw_py-0.1.2/src/pyclaw/channels/feishu/channel.py +299 -0
  243. openclaw_py-0.1.2/src/pyclaw/channels/feishu/docx.py +300 -0
  244. openclaw_py-0.1.2/src/pyclaw/channels/feishu/messages.py +271 -0
  245. openclaw_py-0.1.2/src/pyclaw/channels/feishu/reactions.py +146 -0
  246. openclaw_py-0.1.2/src/pyclaw/channels/feishu/routing.py +140 -0
  247. openclaw_py-0.1.2/src/pyclaw/channels/feishu/runtime.py +226 -0
  248. openclaw_py-0.1.2/src/pyclaw/channels/googlechat/__init__.py +1 -0
  249. openclaw_py-0.1.2/src/pyclaw/channels/googlechat/channel.py +123 -0
  250. openclaw_py-0.1.2/src/pyclaw/channels/imessage/__init__.py +4 -0
  251. openclaw_py-0.1.2/src/pyclaw/channels/imessage/channel.py +126 -0
  252. openclaw_py-0.1.2/src/pyclaw/channels/imessage/client.py +156 -0
  253. openclaw_py-0.1.2/src/pyclaw/channels/irc/__init__.py +1 -0
  254. openclaw_py-0.1.2/src/pyclaw/channels/irc/channel.py +206 -0
  255. openclaw_py-0.1.2/src/pyclaw/channels/line/__init__.py +1 -0
  256. openclaw_py-0.1.2/src/pyclaw/channels/line/channel.py +211 -0
  257. openclaw_py-0.1.2/src/pyclaw/channels/manager.py +112 -0
  258. openclaw_py-0.1.2/src/pyclaw/channels/matrix/__init__.py +1 -0
  259. openclaw_py-0.1.2/src/pyclaw/channels/matrix/channel.py +130 -0
  260. openclaw_py-0.1.2/src/pyclaw/channels/mattermost/__init__.py +1 -0
  261. openclaw_py-0.1.2/src/pyclaw/channels/mattermost/channel.py +157 -0
  262. openclaw_py-0.1.2/src/pyclaw/channels/msteams/__init__.py +1 -0
  263. openclaw_py-0.1.2/src/pyclaw/channels/msteams/channel.py +153 -0
  264. openclaw_py-0.1.2/src/pyclaw/channels/nextcloud/__init__.py +1 -0
  265. openclaw_py-0.1.2/src/pyclaw/channels/nextcloud/channel.py +124 -0
  266. openclaw_py-0.1.2/src/pyclaw/channels/nostr/__init__.py +1 -0
  267. openclaw_py-0.1.2/src/pyclaw/channels/nostr/channel.py +211 -0
  268. openclaw_py-0.1.2/src/pyclaw/channels/outbound.py +260 -0
  269. openclaw_py-0.1.2/src/pyclaw/channels/plugin_sdk/__init__.py +0 -0
  270. openclaw_py-0.1.2/src/pyclaw/channels/plugin_sdk/ack_reactions.py +158 -0
  271. openclaw_py-0.1.2/src/pyclaw/channels/plugin_sdk/adapters.py +289 -0
  272. openclaw_py-0.1.2/src/pyclaw/channels/plugin_sdk/draft_stream.py +228 -0
  273. openclaw_py-0.1.2/src/pyclaw/channels/plugin_sdk/mention_gating.py +140 -0
  274. openclaw_py-0.1.2/src/pyclaw/channels/plugin_sdk/model_overrides.py +118 -0
  275. openclaw_py-0.1.2/src/pyclaw/channels/plugin_sdk/status_issues.py +250 -0
  276. openclaw_py-0.1.2/src/pyclaw/channels/plugins/__init__.py +0 -0
  277. openclaw_py-0.1.2/src/pyclaw/channels/plugins/account_helpers.py +168 -0
  278. openclaw_py-0.1.2/src/pyclaw/channels/plugins/actions.py +135 -0
  279. openclaw_py-0.1.2/src/pyclaw/channels/plugins/catalog.py +647 -0
  280. openclaw_py-0.1.2/src/pyclaw/channels/plugins/normalize.py +221 -0
  281. openclaw_py-0.1.2/src/pyclaw/channels/plugins/onboarding.py +492 -0
  282. openclaw_py-0.1.2/src/pyclaw/channels/plugins/outbound_adapters.py +293 -0
  283. openclaw_py-0.1.2/src/pyclaw/channels/plugins/status_issues.py +444 -0
  284. openclaw_py-0.1.2/src/pyclaw/channels/qq/__init__.py +1 -0
  285. openclaw_py-0.1.2/src/pyclaw/channels/qq/channel.py +283 -0
  286. openclaw_py-0.1.2/src/pyclaw/channels/signal/__init__.py +5 -0
  287. openclaw_py-0.1.2/src/pyclaw/channels/signal/channel.py +229 -0
  288. openclaw_py-0.1.2/src/pyclaw/channels/slack/__init__.py +5 -0
  289. openclaw_py-0.1.2/src/pyclaw/channels/slack/channel.py +178 -0
  290. openclaw_py-0.1.2/src/pyclaw/channels/synology/__init__.py +1 -0
  291. openclaw_py-0.1.2/src/pyclaw/channels/synology/channel.py +99 -0
  292. openclaw_py-0.1.2/src/pyclaw/channels/telegram/__init__.py +5 -0
  293. openclaw_py-0.1.2/src/pyclaw/channels/telegram/channel.py +291 -0
  294. openclaw_py-0.1.2/src/pyclaw/channels/telegram/enhanced.py +331 -0
  295. openclaw_py-0.1.2/src/pyclaw/channels/thread_bindings_policy.py +219 -0
  296. openclaw_py-0.1.2/src/pyclaw/channels/tlon/__init__.py +1 -0
  297. openclaw_py-0.1.2/src/pyclaw/channels/tlon/channel.py +186 -0
  298. openclaw_py-0.1.2/src/pyclaw/channels/twitch/__init__.py +1 -0
  299. openclaw_py-0.1.2/src/pyclaw/channels/twitch/channel.py +129 -0
  300. openclaw_py-0.1.2/src/pyclaw/channels/typing_manager.py +228 -0
  301. openclaw_py-0.1.2/src/pyclaw/channels/voice_call/__init__.py +1 -0
  302. openclaw_py-0.1.2/src/pyclaw/channels/voice_call/channel.py +213 -0
  303. openclaw_py-0.1.2/src/pyclaw/channels/voice_call/twilio_provider.py +138 -0
  304. openclaw_py-0.1.2/src/pyclaw/channels/voice_call/types.py +94 -0
  305. openclaw_py-0.1.2/src/pyclaw/channels/whatsapp/__init__.py +5 -0
  306. openclaw_py-0.1.2/src/pyclaw/channels/whatsapp/channel.py +286 -0
  307. openclaw_py-0.1.2/src/pyclaw/channels/zalo/__init__.py +1 -0
  308. openclaw_py-0.1.2/src/pyclaw/channels/zalo/channel.py +114 -0
  309. openclaw_py-0.1.2/src/pyclaw/channels/zalouser/__init__.py +1 -0
  310. openclaw_py-0.1.2/src/pyclaw/channels/zalouser/channel.py +112 -0
  311. openclaw_py-0.1.2/src/pyclaw/cli/__init__.py +0 -0
  312. openclaw_py-0.1.2/src/pyclaw/cli/app.py +1372 -0
  313. openclaw_py-0.1.2/src/pyclaw/cli/commands/__init__.py +0 -0
  314. openclaw_py-0.1.2/src/pyclaw/cli/commands/acp_cmd.py +111 -0
  315. openclaw_py-0.1.2/src/pyclaw/cli/commands/agent.py +231 -0
  316. openclaw_py-0.1.2/src/pyclaw/cli/commands/agents_cmd.py +86 -0
  317. openclaw_py-0.1.2/src/pyclaw/cli/commands/auth_cmd.py +241 -0
  318. openclaw_py-0.1.2/src/pyclaw/cli/commands/auth_providers.py +403 -0
  319. openclaw_py-0.1.2/src/pyclaw/cli/commands/backup_cmd.py +143 -0
  320. openclaw_py-0.1.2/src/pyclaw/cli/commands/bindings_cmd.py +123 -0
  321. openclaw_py-0.1.2/src/pyclaw/cli/commands/browser_cmd.py +518 -0
  322. openclaw_py-0.1.2/src/pyclaw/cli/commands/channels_cmd.py +120 -0
  323. openclaw_py-0.1.2/src/pyclaw/cli/commands/channels_enhanced.py +247 -0
  324. openclaw_py-0.1.2/src/pyclaw/cli/commands/config_cmd.py +125 -0
  325. openclaw_py-0.1.2/src/pyclaw/cli/commands/devices_cmd.py +75 -0
  326. openclaw_py-0.1.2/src/pyclaw/cli/commands/doctor.py +240 -0
  327. openclaw_py-0.1.2/src/pyclaw/cli/commands/doctor_flows.py +399 -0
  328. openclaw_py-0.1.2/src/pyclaw/cli/commands/gateway.py +20 -0
  329. openclaw_py-0.1.2/src/pyclaw/cli/commands/gateway_cmd.py +354 -0
  330. openclaw_py-0.1.2/src/pyclaw/cli/commands/local_models_cmd.py +91 -0
  331. openclaw_py-0.1.2/src/pyclaw/cli/commands/logs_cmd.py +106 -0
  332. openclaw_py-0.1.2/src/pyclaw/cli/commands/mcp_cmd.py +90 -0
  333. openclaw_py-0.1.2/src/pyclaw/cli/commands/message_cmd.py +107 -0
  334. openclaw_py-0.1.2/src/pyclaw/cli/commands/models_cmd.py +371 -0
  335. openclaw_py-0.1.2/src/pyclaw/cli/commands/models_deep.py +206 -0
  336. openclaw_py-0.1.2/src/pyclaw/cli/commands/node_cmd.py +19 -0
  337. openclaw_py-0.1.2/src/pyclaw/cli/commands/onboarding_enhanced.py +263 -0
  338. openclaw_py-0.1.2/src/pyclaw/cli/commands/secrets_cmd.py +138 -0
  339. openclaw_py-0.1.2/src/pyclaw/cli/commands/security_cmd.py +231 -0
  340. openclaw_py-0.1.2/src/pyclaw/cli/commands/service_cmd.py +68 -0
  341. openclaw_py-0.1.2/src/pyclaw/cli/commands/sessions_cmd.py +219 -0
  342. openclaw_py-0.1.2/src/pyclaw/cli/commands/setup.py +252 -0
  343. openclaw_py-0.1.2/src/pyclaw/cli/commands/skills_cmd.py +97 -0
  344. openclaw_py-0.1.2/src/pyclaw/cli/commands/status.py +226 -0
  345. openclaw_py-0.1.2/src/pyclaw/cli/commands/status_enhanced.py +283 -0
  346. openclaw_py-0.1.2/src/pyclaw/cli/commands/system_cmd.py +174 -0
  347. openclaw_py-0.1.2/src/pyclaw/cli/commands/workspace_cmd.py +54 -0
  348. openclaw_py-0.1.2/src/pyclaw/config/__init__.py +15 -0
  349. openclaw_py-0.1.2/src/pyclaw/config/backup.py +157 -0
  350. openclaw_py-0.1.2/src/pyclaw/config/defaults.py +138 -0
  351. openclaw_py-0.1.2/src/pyclaw/config/env_substitution.py +156 -0
  352. openclaw_py-0.1.2/src/pyclaw/config/includes.py +170 -0
  353. openclaw_py-0.1.2/src/pyclaw/config/io.py +74 -0
  354. openclaw_py-0.1.2/src/pyclaw/config/migrations.py +317 -0
  355. openclaw_py-0.1.2/src/pyclaw/config/paths.py +100 -0
  356. openclaw_py-0.1.2/src/pyclaw/config/runtime_overrides.py +175 -0
  357. openclaw_py-0.1.2/src/pyclaw/config/schema.py +424 -0
  358. openclaw_py-0.1.2/src/pyclaw/config/secrets.py +246 -0
  359. openclaw_py-0.1.2/src/pyclaw/config/session_store.py +267 -0
  360. openclaw_py-0.1.2/src/pyclaw/config/sessions/__init__.py +0 -0
  361. openclaw_py-0.1.2/src/pyclaw/config/sessions/types.py +114 -0
  362. openclaw_py-0.1.2/src/pyclaw/cron/__init__.py +5 -0
  363. openclaw_py-0.1.2/src/pyclaw/cron/advanced.py +273 -0
  364. openclaw_py-0.1.2/src/pyclaw/cron/history.py +183 -0
  365. openclaw_py-0.1.2/src/pyclaw/cron/scheduler.py +311 -0
  366. openclaw_py-0.1.2/src/pyclaw/daemon/__init__.py +8 -0
  367. openclaw_py-0.1.2/src/pyclaw/daemon/launchd.py +132 -0
  368. openclaw_py-0.1.2/src/pyclaw/daemon/schtasks.py +80 -0
  369. openclaw_py-0.1.2/src/pyclaw/daemon/service.py +55 -0
  370. openclaw_py-0.1.2/src/pyclaw/daemon/systemd.py +119 -0
  371. openclaw_py-0.1.2/src/pyclaw/gateway/__init__.py +1 -0
  372. openclaw_py-0.1.2/src/pyclaw/gateway/channel_health.py +198 -0
  373. openclaw_py-0.1.2/src/pyclaw/gateway/config_reload.py +243 -0
  374. openclaw_py-0.1.2/src/pyclaw/gateway/control_plane_rate_limit.py +131 -0
  375. openclaw_py-0.1.2/src/pyclaw/gateway/control_ui.py +124 -0
  376. openclaw_py-0.1.2/src/pyclaw/gateway/discovery.py +208 -0
  377. openclaw_py-0.1.2/src/pyclaw/gateway/events.py +193 -0
  378. openclaw_py-0.1.2/src/pyclaw/gateway/hooks_mapping.py +210 -0
  379. openclaw_py-0.1.2/src/pyclaw/gateway/message_bus.py +155 -0
  380. openclaw_py-0.1.2/src/pyclaw/gateway/methods/__init__.py +5 -0
  381. openclaw_py-0.1.2/src/pyclaw/gateway/methods/agents.py +91 -0
  382. openclaw_py-0.1.2/src/pyclaw/gateway/methods/backup_methods.py +78 -0
  383. openclaw_py-0.1.2/src/pyclaw/gateway/methods/browser_methods.py +503 -0
  384. openclaw_py-0.1.2/src/pyclaw/gateway/methods/channels.py +222 -0
  385. openclaw_py-0.1.2/src/pyclaw/gateway/methods/chat.py +526 -0
  386. openclaw_py-0.1.2/src/pyclaw/gateway/methods/chat_advanced.py +182 -0
  387. openclaw_py-0.1.2/src/pyclaw/gateway/methods/config_methods.py +78 -0
  388. openclaw_py-0.1.2/src/pyclaw/gateway/methods/connect.py +53 -0
  389. openclaw_py-0.1.2/src/pyclaw/gateway/methods/cron_history_methods.py +38 -0
  390. openclaw_py-0.1.2/src/pyclaw/gateway/methods/cron_methods.py +83 -0
  391. openclaw_py-0.1.2/src/pyclaw/gateway/methods/device_pair.py +79 -0
  392. openclaw_py-0.1.2/src/pyclaw/gateway/methods/exec_approvals.py +240 -0
  393. openclaw_py-0.1.2/src/pyclaw/gateway/methods/extended.py +355 -0
  394. openclaw_py-0.1.2/src/pyclaw/gateway/methods/health.py +42 -0
  395. openclaw_py-0.1.2/src/pyclaw/gateway/methods/logs_methods.py +61 -0
  396. openclaw_py-0.1.2/src/pyclaw/gateway/methods/models.py +55 -0
  397. openclaw_py-0.1.2/src/pyclaw/gateway/methods/plan_methods.py +93 -0
  398. openclaw_py-0.1.2/src/pyclaw/gateway/methods/registration.py +55 -0
  399. openclaw_py-0.1.2/src/pyclaw/gateway/methods/secrets_methods.py +35 -0
  400. openclaw_py-0.1.2/src/pyclaw/gateway/methods/sessions.py +223 -0
  401. openclaw_py-0.1.2/src/pyclaw/gateway/methods/tools_catalog.py +48 -0
  402. openclaw_py-0.1.2/src/pyclaw/gateway/node_command_policy.py +285 -0
  403. openclaw_py-0.1.2/src/pyclaw/gateway/openai_compat.py +238 -0
  404. openclaw_py-0.1.2/src/pyclaw/gateway/openresponses_http.py +282 -0
  405. openclaw_py-0.1.2/src/pyclaw/gateway/plugin_routes.py +52 -0
  406. openclaw_py-0.1.2/src/pyclaw/gateway/protocol/__init__.py +17 -0
  407. openclaw_py-0.1.2/src/pyclaw/gateway/protocol/frames.py +102 -0
  408. openclaw_py-0.1.2/src/pyclaw/gateway/server.py +290 -0
  409. openclaw_py-0.1.2/src/pyclaw/gateway/ws_guard.py +195 -0
  410. openclaw_py-0.1.2/src/pyclaw/hooks/__init__.py +27 -0
  411. openclaw_py-0.1.2/src/pyclaw/hooks/bundled/__init__.py +1 -0
  412. openclaw_py-0.1.2/src/pyclaw/hooks/bundled/extra_hooks.py +256 -0
  413. openclaw_py-0.1.2/src/pyclaw/hooks/bundled/gmail_watcher.py +129 -0
  414. openclaw_py-0.1.2/src/pyclaw/hooks/bundled/session_memory.py +67 -0
  415. openclaw_py-0.1.2/src/pyclaw/hooks/loader.py +84 -0
  416. openclaw_py-0.1.2/src/pyclaw/hooks/registry.py +72 -0
  417. openclaw_py-0.1.2/src/pyclaw/hooks/types.py +57 -0
  418. openclaw_py-0.1.2/src/pyclaw/infra/__init__.py +0 -0
  419. openclaw_py-0.1.2/src/pyclaw/infra/archive.py +186 -0
  420. openclaw_py-0.1.2/src/pyclaw/infra/bonjour.py +131 -0
  421. openclaw_py-0.1.2/src/pyclaw/infra/delivery.py +261 -0
  422. openclaw_py-0.1.2/src/pyclaw/infra/exec_approvals.py +200 -0
  423. openclaw_py-0.1.2/src/pyclaw/infra/heartbeat.py +265 -0
  424. openclaw_py-0.1.2/src/pyclaw/infra/misc_extras.py +501 -0
  425. openclaw_py-0.1.2/src/pyclaw/infra/outbound/__init__.py +0 -0
  426. openclaw_py-0.1.2/src/pyclaw/infra/outbound/channel_adapters.py +151 -0
  427. openclaw_py-0.1.2/src/pyclaw/infra/outbound/message_actions.py +139 -0
  428. openclaw_py-0.1.2/src/pyclaw/infra/outbound/send_service.py +157 -0
  429. openclaw_py-0.1.2/src/pyclaw/infra/outbound/target_resolver.py +146 -0
  430. openclaw_py-0.1.2/src/pyclaw/infra/provider_usage.py +228 -0
  431. openclaw_py-0.1.2/src/pyclaw/infra/rate_limit.py +122 -0
  432. openclaw_py-0.1.2/src/pyclaw/infra/retry.py +136 -0
  433. openclaw_py-0.1.2/src/pyclaw/infra/session_cost.py +384 -0
  434. openclaw_py-0.1.2/src/pyclaw/infra/ssh.py +170 -0
  435. openclaw_py-0.1.2/src/pyclaw/infra/system_events.py +206 -0
  436. openclaw_py-0.1.2/src/pyclaw/infra/tailscale.py +239 -0
  437. openclaw_py-0.1.2/src/pyclaw/infra/update_check.py +184 -0
  438. openclaw_py-0.1.2/src/pyclaw/local_models/__init__.py +26 -0
  439. openclaw_py-0.1.2/src/pyclaw/local_models/backends/__init__.py +1 -0
  440. openclaw_py-0.1.2/src/pyclaw/local_models/backends/llamacpp.py +85 -0
  441. openclaw_py-0.1.2/src/pyclaw/local_models/backends/mlx_backend.py +101 -0
  442. openclaw_py-0.1.2/src/pyclaw/local_models/chat_model.py +76 -0
  443. openclaw_py-0.1.2/src/pyclaw/local_models/manager.py +259 -0
  444. openclaw_py-0.1.2/src/pyclaw/local_models/schema.py +50 -0
  445. openclaw_py-0.1.2/src/pyclaw/logging/__init__.py +14 -0
  446. openclaw_py-0.1.2/src/pyclaw/logging/advanced.py +207 -0
  447. openclaw_py-0.1.2/src/pyclaw/logging/redact.py +93 -0
  448. openclaw_py-0.1.2/src/pyclaw/logging/subsystem.py +80 -0
  449. openclaw_py-0.1.2/src/pyclaw/main.py +11 -0
  450. openclaw_py-0.1.2/src/pyclaw/markdown/__init__.py +33 -0
  451. openclaw_py-0.1.2/src/pyclaw/markdown/channel_formats.py +223 -0
  452. openclaw_py-0.1.2/src/pyclaw/markdown/fences.py +62 -0
  453. openclaw_py-0.1.2/src/pyclaw/markdown/ir.py +191 -0
  454. openclaw_py-0.1.2/src/pyclaw/markdown/render.py +86 -0
  455. openclaw_py-0.1.2/src/pyclaw/markdown/tables.py +74 -0
  456. openclaw_py-0.1.2/src/pyclaw/mcp/__init__.py +1 -0
  457. openclaw_py-0.1.2/src/pyclaw/mcp/client.py +113 -0
  458. openclaw_py-0.1.2/src/pyclaw/mcp/http_transport.py +68 -0
  459. openclaw_py-0.1.2/src/pyclaw/mcp/registry.py +132 -0
  460. openclaw_py-0.1.2/src/pyclaw/mcp/stdio_transport.py +112 -0
  461. openclaw_py-0.1.2/src/pyclaw/mcp/types.py +78 -0
  462. openclaw_py-0.1.2/src/pyclaw/mcp/watcher.py +97 -0
  463. openclaw_py-0.1.2/src/pyclaw/media/__init__.py +23 -0
  464. openclaw_py-0.1.2/src/pyclaw/media/audio.py +54 -0
  465. openclaw_py-0.1.2/src/pyclaw/media/fetch.py +194 -0
  466. openclaw_py-0.1.2/src/pyclaw/media/images.py +121 -0
  467. openclaw_py-0.1.2/src/pyclaw/media/mime.py +89 -0
  468. openclaw_py-0.1.2/src/pyclaw/media/storage.py +102 -0
  469. openclaw_py-0.1.2/src/pyclaw/media/understanding/__init__.py +0 -0
  470. openclaw_py-0.1.2/src/pyclaw/media/understanding/apply.py +173 -0
  471. openclaw_py-0.1.2/src/pyclaw/media/understanding/extended.py +327 -0
  472. openclaw_py-0.1.2/src/pyclaw/media/understanding/providers/__init__.py +1 -0
  473. openclaw_py-0.1.2/src/pyclaw/media/understanding/providers/anthropic.py +73 -0
  474. openclaw_py-0.1.2/src/pyclaw/media/understanding/providers/google.py +102 -0
  475. openclaw_py-0.1.2/src/pyclaw/media/understanding/providers/openai.py +93 -0
  476. openclaw_py-0.1.2/src/pyclaw/media/understanding/registry.py +43 -0
  477. openclaw_py-0.1.2/src/pyclaw/media/understanding/types.py +105 -0
  478. openclaw_py-0.1.2/src/pyclaw/media/understanding/video.py +250 -0
  479. openclaw_py-0.1.2/src/pyclaw/memory/__init__.py +38 -0
  480. openclaw_py-0.1.2/src/pyclaw/memory/backend.py +220 -0
  481. openclaw_py-0.1.2/src/pyclaw/memory/daily_summary.py +218 -0
  482. openclaw_py-0.1.2/src/pyclaw/memory/embeddings.py +247 -0
  483. openclaw_py-0.1.2/src/pyclaw/memory/extended.py +269 -0
  484. openclaw_py-0.1.2/src/pyclaw/memory/file_manager.py +211 -0
  485. openclaw_py-0.1.2/src/pyclaw/memory/hybrid.py +93 -0
  486. openclaw_py-0.1.2/src/pyclaw/memory/lancedb_backend.py +229 -0
  487. openclaw_py-0.1.2/src/pyclaw/memory/mmr.py +130 -0
  488. openclaw_py-0.1.2/src/pyclaw/memory/qmd/__init__.py +9 -0
  489. openclaw_py-0.1.2/src/pyclaw/memory/qmd/store.py +208 -0
  490. openclaw_py-0.1.2/src/pyclaw/memory/query_expansion.py +194 -0
  491. openclaw_py-0.1.2/src/pyclaw/memory/store.py +284 -0
  492. openclaw_py-0.1.2/src/pyclaw/memory/temporal_decay.py +116 -0
  493. openclaw_py-0.1.2/src/pyclaw/node_host/__init__.py +9 -0
  494. openclaw_py-0.1.2/src/pyclaw/node_host/invoke.py +128 -0
  495. openclaw_py-0.1.2/src/pyclaw/node_host/runner.py +91 -0
  496. openclaw_py-0.1.2/src/pyclaw/pairing/__init__.py +25 -0
  497. openclaw_py-0.1.2/src/pyclaw/pairing/challenge.py +48 -0
  498. openclaw_py-0.1.2/src/pyclaw/pairing/setup_code.py +37 -0
  499. openclaw_py-0.1.2/src/pyclaw/pairing/store.py +221 -0
  500. openclaw_py-0.1.2/src/pyclaw/plugins/__init__.py +5 -0
  501. openclaw_py-0.1.2/src/pyclaw/plugins/contrib/__init__.py +0 -0
  502. openclaw_py-0.1.2/src/pyclaw/plugins/contrib/gemini_cli_auth.py +204 -0
  503. openclaw_py-0.1.2/src/pyclaw/plugins/contrib/memory_core.py +262 -0
  504. openclaw_py-0.1.2/src/pyclaw/plugins/contrib/misc_extensions.py +513 -0
  505. openclaw_py-0.1.2/src/pyclaw/plugins/extensions.py +199 -0
  506. openclaw_py-0.1.2/src/pyclaw/plugins/loader.py +125 -0
  507. openclaw_py-0.1.2/src/pyclaw/plugins/onboarding.py +190 -0
  508. openclaw_py-0.1.2/src/pyclaw/process/__init__.py +0 -0
  509. openclaw_py-0.1.2/src/pyclaw/process/command_queue.py +216 -0
  510. openclaw_py-0.1.2/src/pyclaw/process/supervisor.py +238 -0
  511. openclaw_py-0.1.2/src/pyclaw/py.typed +0 -0
  512. openclaw_py-0.1.2/src/pyclaw/routing/__init__.py +17 -0
  513. openclaw_py-0.1.2/src/pyclaw/routing/bindings.py +353 -0
  514. openclaw_py-0.1.2/src/pyclaw/routing/dispatch.py +226 -0
  515. openclaw_py-0.1.2/src/pyclaw/routing/session_key.py +56 -0
  516. openclaw_py-0.1.2/src/pyclaw/secrets/__init__.py +21 -0
  517. openclaw_py-0.1.2/src/pyclaw/secrets/apply.py +87 -0
  518. openclaw_py-0.1.2/src/pyclaw/secrets/audit.py +208 -0
  519. openclaw_py-0.1.2/src/pyclaw/secrets/plan.py +101 -0
  520. openclaw_py-0.1.2/src/pyclaw/secrets/resolve.py +149 -0
  521. openclaw_py-0.1.2/src/pyclaw/secrets/runtime.py +61 -0
  522. openclaw_py-0.1.2/src/pyclaw/security/__init__.py +20 -0
  523. openclaw_py-0.1.2/src/pyclaw/security/allowlist_boundaries.py +195 -0
  524. openclaw_py-0.1.2/src/pyclaw/security/audit.py +210 -0
  525. openclaw_py-0.1.2/src/pyclaw/security/audit_extra.py +271 -0
  526. openclaw_py-0.1.2/src/pyclaw/security/dangerous_tools.py +303 -0
  527. openclaw_py-0.1.2/src/pyclaw/security/dm_policy.py +77 -0
  528. openclaw_py-0.1.2/src/pyclaw/security/exec_approval.py +236 -0
  529. openclaw_py-0.1.2/src/pyclaw/security/exec_hardening.py +220 -0
  530. openclaw_py-0.1.2/src/pyclaw/security/gateway_hardening.py +235 -0
  531. openclaw_py-0.1.2/src/pyclaw/security/sandbox.py +219 -0
  532. openclaw_py-0.1.2/src/pyclaw/security/ssrf.py +179 -0
  533. openclaw_py-0.1.2/src/pyclaw/sessions/__init__.py +0 -0
  534. openclaw_py-0.1.2/src/pyclaw/sessions/advanced.py +222 -0
  535. openclaw_py-0.1.2/src/pyclaw/shared/__init__.py +0 -0
  536. openclaw_py-0.1.2/src/pyclaw/shared/utils.py +221 -0
  537. openclaw_py-0.1.2/src/pyclaw/social/__init__.py +5 -0
  538. openclaw_py-0.1.2/src/pyclaw/social/clawdchat.py +167 -0
  539. openclaw_py-0.1.2/src/pyclaw/social/moltbook.py +169 -0
  540. openclaw_py-0.1.2/src/pyclaw/social/registry.py +128 -0
  541. openclaw_py-0.1.2/src/pyclaw/terminal/__init__.py +13 -0
  542. openclaw_py-0.1.2/src/pyclaw/terminal/ansi.py +24 -0
  543. openclaw_py-0.1.2/src/pyclaw/terminal/palette.py +57 -0
  544. openclaw_py-0.1.2/src/pyclaw/terminal/table.py +158 -0
  545. openclaw_py-0.1.2/src/pyclaw/tools/__init__.py +1 -0
  546. openclaw_py-0.1.2/src/pyclaw/tools/canvas_tools.py +146 -0
  547. openclaw_py-0.1.2/src/pyclaw/tools/gateway_tools.py +121 -0
  548. openclaw_py-0.1.2/src/pyclaw/tools/nodes.py +105 -0
  549. openclaw_py-0.1.2/src/pyclaw/ui/__init__.py +1 -0
  550. openclaw_py-0.1.2/src/pyclaw/ui/agents_panel.py +229 -0
  551. openclaw_py-0.1.2/src/pyclaw/ui/app.py +2748 -0
  552. openclaw_py-0.1.2/src/pyclaw/ui/channels_panel.py +266 -0
  553. openclaw_py-0.1.2/src/pyclaw/ui/components.py +204 -0
  554. openclaw_py-0.1.2/src/pyclaw/ui/gateway_client.py +345 -0
  555. openclaw_py-0.1.2/src/pyclaw/ui/i18n.py +144 -0
  556. openclaw_py-0.1.2/src/pyclaw/ui/locales/de.json +46 -0
  557. openclaw_py-0.1.2/src/pyclaw/ui/locales/en.json +107 -0
  558. openclaw_py-0.1.2/src/pyclaw/ui/locales/ja.json +107 -0
  559. openclaw_py-0.1.2/src/pyclaw/ui/locales/zh-CN.json +107 -0
  560. openclaw_py-0.1.2/src/pyclaw/ui/media_preview.py +142 -0
  561. openclaw_py-0.1.2/src/pyclaw/ui/menubar.py +100 -0
  562. openclaw_py-0.1.2/src/pyclaw/ui/onboarding.py +212 -0
  563. openclaw_py-0.1.2/src/pyclaw/ui/permissions.py +287 -0
  564. openclaw_py-0.1.2/src/pyclaw/ui/responsive_shell.py +118 -0
  565. openclaw_py-0.1.2/src/pyclaw/ui/shimmer.py +205 -0
  566. openclaw_py-0.1.2/src/pyclaw/ui/theme.py +248 -0
  567. openclaw_py-0.1.2/src/pyclaw/ui/toolbar.py +112 -0
  568. openclaw_py-0.1.2/src/pyclaw/ui/tray.py +119 -0
  569. openclaw_py-0.1.2/src/pyclaw/ui/voice.py +218 -0
  570. openclaw_py-0.1.2/src/pyclaw/wizard/__init__.py +0 -0
  571. openclaw_py-0.1.2/src/pyclaw/wizard/session.py +286 -0
  572. openclaw_py-0.1.2/tests/__init__.py +0 -0
  573. openclaw_py-0.1.2/tests/conftest.py +16 -0
  574. openclaw_py-0.1.2/tests/fixtures/exec-allowlist-shell-parser-parity.json +82 -0
  575. openclaw_py-0.1.2/tests/fixtures/exec-wrapper-resolution-parity.json +39 -0
  576. openclaw_py-0.1.2/tests/fixtures/system-run-approval-binding-contract.json +115 -0
  577. openclaw_py-0.1.2/tests/fixtures/system-run-approval-mismatch-contract.json +67 -0
  578. openclaw_py-0.1.2/tests/fixtures/system-run-command-contract.json +75 -0
  579. openclaw_py-0.1.2/tests/test_acp.py +83 -0
  580. openclaw_py-0.1.2/tests/test_acp_cli_phase40.py +222 -0
  581. openclaw_py-0.1.2/tests/test_acp_enhanced.py +307 -0
  582. openclaw_py-0.1.2/tests/test_agent_runner.py +188 -0
  583. openclaw_py-0.1.2/tests/test_auto_reply.py +153 -0
  584. openclaw_py-0.1.2/tests/test_auto_reply_commands.py +463 -0
  585. openclaw_py-0.1.2/tests/test_benchmark.py +239 -0
  586. openclaw_py-0.1.2/tests/test_bindings.py +225 -0
  587. openclaw_py-0.1.2/tests/test_browser_automation.py +636 -0
  588. openclaw_py-0.1.2/tests/test_browser_cli_phase42.py +155 -0
  589. openclaw_py-0.1.2/tests/test_browser_deep_phase48.py +83 -0
  590. openclaw_py-0.1.2/tests/test_canvas.py +99 -0
  591. openclaw_py-0.1.2/tests/test_catalog_schema_alignment.py +161 -0
  592. openclaw_py-0.1.2/tests/test_channel_plugins_deep.py +291 -0
  593. openclaw_py-0.1.2/tests/test_channel_security.py +557 -0
  594. openclaw_py-0.1.2/tests/test_channels.py +233 -0
  595. openclaw_py-0.1.2/tests/test_channels_dingtalk_qq.py +185 -0
  596. openclaw_py-0.1.2/tests/test_cli_deep_phase47.py +171 -0
  597. openclaw_py-0.1.2/tests/test_cli_enhanced.py +480 -0
  598. openclaw_py-0.1.2/tests/test_cli_surface_phase39.py +164 -0
  599. openclaw_py-0.1.2/tests/test_config.py +127 -0
  600. openclaw_py-0.1.2/tests/test_config_advanced.py +416 -0
  601. openclaw_py-0.1.2/tests/test_cron.py +46 -0
  602. openclaw_py-0.1.2/tests/test_cron_history.py +97 -0
  603. openclaw_py-0.1.2/tests/test_cron_scheduler_enhanced.py +88 -0
  604. openclaw_py-0.1.2/tests/test_cron_tts_logging.py +477 -0
  605. openclaw_py-0.1.2/tests/test_daemon.py +82 -0
  606. openclaw_py-0.1.2/tests/test_delivery.py +140 -0
  607. openclaw_py-0.1.2/tests/test_docker_smoke.py +142 -0
  608. openclaw_py-0.1.2/tests/test_docs_parity_phase43.py +68 -0
  609. openclaw_py-0.1.2/tests/test_e2e_gateway.py +146 -0
  610. openclaw_py-0.1.2/tests/test_embedded_runner.py +606 -0
  611. openclaw_py-0.1.2/tests/test_embedded_runner_phase45.py +199 -0
  612. openclaw_py-0.1.2/tests/test_exec_approval.py +184 -0
  613. openclaw_py-0.1.2/tests/test_ext_channels.py +63 -0
  614. openclaw_py-0.1.2/tests/test_extensions.py +166 -0
  615. openclaw_py-0.1.2/tests/test_extensions_misc.py +352 -0
  616. openclaw_py-0.1.2/tests/test_feishu_enhanced.py +324 -0
  617. openclaw_py-0.1.2/tests/test_final_extras.py +484 -0
  618. openclaw_py-0.1.2/tests/test_gateway.py +244 -0
  619. openclaw_py-0.1.2/tests/test_gateway_advanced.py +401 -0
  620. openclaw_py-0.1.2/tests/test_gateway_agent_hardening.py +447 -0
  621. openclaw_py-0.1.2/tests/test_gateway_channels.py +174 -0
  622. openclaw_py-0.1.2/tests/test_gateway_cli_phase44.py +252 -0
  623. openclaw_py-0.1.2/tests/test_gateway_client.py +301 -0
  624. openclaw_py-0.1.2/tests/test_gateway_hardening.py +185 -0
  625. openclaw_py-0.1.2/tests/test_gateway_methods.py +83 -0
  626. openclaw_py-0.1.2/tests/test_gateway_methods_extended.py +337 -0
  627. openclaw_py-0.1.2/tests/test_gateway_rpc_phase46.py +196 -0
  628. openclaw_py-0.1.2/tests/test_hooks.py +145 -0
  629. openclaw_py-0.1.2/tests/test_i18n.py +118 -0
  630. openclaw_py-0.1.2/tests/test_infra.py +138 -0
  631. openclaw_py-0.1.2/tests/test_infra_misc.py +602 -0
  632. openclaw_py-0.1.2/tests/test_intent.py +114 -0
  633. openclaw_py-0.1.2/tests/test_interrupt.py +53 -0
  634. openclaw_py-0.1.2/tests/test_logging_module.py +73 -0
  635. openclaw_py-0.1.2/tests/test_markdown.py +132 -0
  636. openclaw_py-0.1.2/tests/test_mcp.py +188 -0
  637. openclaw_py-0.1.2/tests/test_mcp_integration.py +458 -0
  638. openclaw_py-0.1.2/tests/test_memory.py +95 -0
  639. openclaw_py-0.1.2/tests/test_memory_backend.py +232 -0
  640. openclaw_py-0.1.2/tests/test_message_bus.py +69 -0
  641. openclaw_py-0.1.2/tests/test_model_fallback.py +156 -0
  642. openclaw_py-0.1.2/tests/test_naming_parity_phase49.py +148 -0
  643. openclaw_py-0.1.2/tests/test_node_command_policy.py +140 -0
  644. openclaw_py-0.1.2/tests/test_node_host.py +60 -0
  645. openclaw_py-0.1.2/tests/test_onboarding_hooks.py +132 -0
  646. openclaw_py-0.1.2/tests/test_openresponses.py +252 -0
  647. openclaw_py-0.1.2/tests/test_outbound.py +147 -0
  648. openclaw_py-0.1.2/tests/test_pairing.py +105 -0
  649. openclaw_py-0.1.2/tests/test_planner.py +163 -0
  650. openclaw_py-0.1.2/tests/test_plugin_sdk.py +519 -0
  651. openclaw_py-0.1.2/tests/test_plugins.py +47 -0
  652. openclaw_py-0.1.2/tests/test_process_media.py +496 -0
  653. openclaw_py-0.1.2/tests/test_providers_extended.py +513 -0
  654. openclaw_py-0.1.2/tests/test_qmd.py +131 -0
  655. openclaw_py-0.1.2/tests/test_rpc_contract_phase58.py +365 -0
  656. openclaw_py-0.1.2/tests/test_runtime_context.py +42 -0
  657. openclaw_py-0.1.2/tests/test_sandbox.py +185 -0
  658. openclaw_py-0.1.2/tests/test_secrets.py +152 -0
  659. openclaw_py-0.1.2/tests/test_security.py +102 -0
  660. openclaw_py-0.1.2/tests/test_session.py +271 -0
  661. openclaw_py-0.1.2/tests/test_skills_marketplace.py +85 -0
  662. openclaw_py-0.1.2/tests/test_streaming_delivery.py +336 -0
  663. openclaw_py-0.1.2/tests/test_telegram_browser.py +385 -0
  664. openclaw_py-0.1.2/tests/test_terminal.py +48 -0
  665. openclaw_py-0.1.2/tests/test_thread_lifecycle.py +233 -0
  666. openclaw_py-0.1.2/tests/test_timeline.py +77 -0
  667. openclaw_py-0.1.2/tests/test_tools.py +290 -0
  668. openclaw_py-0.1.2/tests/test_tools_extra.py +64 -0
  669. openclaw_py-0.1.2/tests/test_typing_manager.py +129 -0
  670. openclaw_py-0.1.2/tests/test_usage_cost_phase41.py +150 -0
  671. openclaw_py-0.1.2/tests/test_workspace_sync.py +69 -0
  672. openclaw_py-0.1.2/uv.lock +2506 -0
  673. openclaw_py-0.1.2/web/icons/icon-192.png +0 -0
  674. openclaw_py-0.1.2/web/icons/icon-512.png +0 -0
  675. openclaw_py-0.1.2/web/icons/icon-maskable-192.png +0 -0
  676. openclaw_py-0.1.2/web/icons/icon-maskable-512.png +0 -0
  677. openclaw_py-0.1.2/web/manifest.json +36 -0
  678. openclaw_py-0.1.2/web/service-worker.js +76 -0
@@ -0,0 +1,34 @@
1
+ # Connection: Channel Auth
2
+
3
+ Authentication tokens for messaging channels, resolved from pyclaw config.
4
+
5
+ ## Schema
6
+
7
+ ```yaml
8
+ type: connection
9
+ name: channel-auth
10
+ source: config # reads from ~/.openclaw/openclaw.json → channels
11
+
12
+ fields:
13
+ channel_type:
14
+ type: string
15
+ required: true
16
+ enum: [telegram, discord, slack, dingtalk, feishu, qq, whatsapp, matrix, line, msteams, wechat, irc, nostr, mattermost, nextcloud, synology, twitch, tlon, zalo, signal, bluebubbles, googlechat, imessage, voice_call]
17
+ token:
18
+ type: string
19
+ secret: true
20
+ required: true
21
+ extra:
22
+ type: object
23
+ required: false
24
+ description: Channel-specific additional fields (webhook_url, app_id, etc.)
25
+ ```
26
+
27
+ ## Resolution
28
+
29
+ ```python
30
+ from pyclaw.config.io import load_config
31
+
32
+ cfg = load_config()
33
+ channel_cfg = cfg.channels # per-channel config with tokens
34
+ ```
@@ -0,0 +1,41 @@
1
+ # Connection: LLM Provider
2
+
3
+ Credentials for LLM API providers, resolved from pyclaw config.
4
+
5
+ ## Schema
6
+
7
+ ```yaml
8
+ type: connection
9
+ name: llm-provider
10
+ source: config # reads from ~/.openclaw/openclaw.json → models.providers
11
+
12
+ fields:
13
+ provider:
14
+ type: string
15
+ required: true
16
+ enum: [openai, anthropic, google, azure, ollama, custom]
17
+ base_url:
18
+ type: string
19
+ required: false
20
+ api_key:
21
+ type: string
22
+ secret: true
23
+ required: true
24
+ model:
25
+ type: string
26
+ required: false
27
+ ```
28
+
29
+ ## Resolution
30
+
31
+ The connection reads credentials from the active pyclaw config:
32
+
33
+ ```python
34
+ from pyclaw.config.io import load_config
35
+
36
+ cfg = load_config()
37
+ provider = cfg.models.providers.get(provider_name)
38
+ # provider.baseUrl, provider.apiKey
39
+ ```
40
+
41
+ No separate credential files are needed — pyclaw's config is the source of truth.
@@ -0,0 +1,53 @@
1
+ # Node: HTTP Probe
2
+
3
+ Performs HTTP health checks against endpoints with configurable timeout and expected status codes.
4
+
5
+ ## Schema
6
+
7
+ ```yaml
8
+ type: node
9
+ name: http-probe
10
+ inputs:
11
+ url:
12
+ type: string
13
+ required: true
14
+ method:
15
+ type: string
16
+ default: GET
17
+ timeout_seconds:
18
+ type: number
19
+ default: 10
20
+ expected_status:
21
+ type: array
22
+ default: [200, 201, 204]
23
+ headers:
24
+ type: object
25
+ required: false
26
+
27
+ outputs:
28
+ status_code: number
29
+ response_time_ms: number
30
+ healthy: boolean
31
+ error: string | null
32
+
33
+ on_error: continue
34
+ on_empty: skip
35
+ ```
36
+
37
+ ## Implementation
38
+
39
+ ```bash
40
+ #!/usr/bin/env bash
41
+ URL="$1"
42
+ TIMEOUT="${2:-10}"
43
+ START=$(date +%s%N)
44
+ HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" --max-time "$TIMEOUT" "$URL" 2>/dev/null)
45
+ END=$(date +%s%N)
46
+ ELAPSED=$(( (END - START) / 1000000 ))
47
+
48
+ if [[ "$HTTP_CODE" =~ ^2 ]]; then
49
+ echo "{\"status_code\": $HTTP_CODE, \"response_time_ms\": $ELAPSED, \"healthy\": true, \"error\": null}"
50
+ else
51
+ echo "{\"status_code\": $HTTP_CODE, \"response_time_ms\": $ELAPSED, \"healthy\": false, \"error\": \"HTTP $HTTP_CODE\"}"
52
+ fi
53
+ ```
@@ -0,0 +1,66 @@
1
+ # Node: LLM Chat
2
+
3
+ Sends a prompt to an LLM provider and captures the response. Used for summarization, analysis, and generation tasks within workflows.
4
+
5
+ ## Schema
6
+
7
+ ```yaml
8
+ type: node
9
+ name: llm-chat
10
+ connection: llm-provider
11
+ inputs:
12
+ prompt:
13
+ type: string
14
+ required: true
15
+ system_prompt:
16
+ type: string
17
+ required: false
18
+ model:
19
+ type: string
20
+ required: false
21
+ description: Override default model
22
+ max_tokens:
23
+ type: number
24
+ default: 1024
25
+ temperature:
26
+ type: number
27
+ default: 0.3
28
+
29
+ outputs:
30
+ response: string
31
+ usage:
32
+ prompt_tokens: number
33
+ completion_tokens: number
34
+ model_used: string
35
+ latency_ms: number
36
+
37
+ on_error: fail
38
+ on_empty: fail
39
+ ```
40
+
41
+ ## Implementation
42
+
43
+ ```python
44
+ import time
45
+ from pyclaw.agents.stream import chat_completion
46
+
47
+ async def run(inputs: dict, connection: dict) -> dict:
48
+ start = time.monotonic()
49
+ result = await chat_completion(
50
+ provider=connection["provider"],
51
+ model=inputs.get("model", connection.get("model")),
52
+ messages=[
53
+ {"role": "system", "content": inputs.get("system_prompt", "")},
54
+ {"role": "user", "content": inputs["prompt"]},
55
+ ],
56
+ max_tokens=inputs.get("max_tokens", 1024),
57
+ temperature=inputs.get("temperature", 0.3),
58
+ )
59
+ elapsed = int((time.monotonic() - start) * 1000)
60
+ return {
61
+ "response": result.content,
62
+ "usage": result.usage,
63
+ "model_used": result.model,
64
+ "latency_ms": elapsed,
65
+ }
66
+ ```
@@ -0,0 +1,61 @@
1
+ # Node: Notify
2
+
3
+ Sends a notification message through a configured pyclaw channel. Useful for alerting on workflow results.
4
+
5
+ ## Schema
6
+
7
+ ```yaml
8
+ type: node
9
+ name: notify
10
+ connection: channel-auth
11
+ inputs:
12
+ channel_type:
13
+ type: string
14
+ required: true
15
+ recipient:
16
+ type: string
17
+ required: true
18
+ description: Chat ID, user ID, or channel name
19
+ message:
20
+ type: string
21
+ required: true
22
+ level:
23
+ type: string
24
+ default: info
25
+ enum: [info, warning, error, critical]
26
+
27
+ outputs:
28
+ sent: boolean
29
+ message_id: string | null
30
+ error: string | null
31
+
32
+ on_error: continue
33
+ on_empty: skip
34
+ ```
35
+
36
+ ## Implementation
37
+
38
+ ```python
39
+ from pyclaw.channels.manager import get_channel
40
+ from pyclaw.channels.base import ChannelReply
41
+
42
+ async def run(inputs: dict, connection: dict) -> dict:
43
+ level_emoji = {
44
+ "info": "ℹ️", "warning": "⚠️",
45
+ "error": "❌", "critical": "🚨"
46
+ }
47
+ prefix = level_emoji.get(inputs.get("level", "info"), "")
48
+ text = f"{prefix} {inputs['message']}"
49
+
50
+ channel = get_channel(inputs["channel_type"])
51
+ reply = ChannelReply(
52
+ chat_id=inputs["recipient"],
53
+ text=text,
54
+ )
55
+ result = await channel.send(reply)
56
+ return {
57
+ "sent": result is not None,
58
+ "message_id": str(result) if result else None,
59
+ "error": None,
60
+ }
61
+ ```
@@ -0,0 +1,48 @@
1
+ # Node: Pip Audit
2
+
3
+ Runs `pip-audit` to scan project dependencies for known vulnerabilities.
4
+
5
+ ## Schema
6
+
7
+ ```yaml
8
+ type: node
9
+ name: pip-audit
10
+ inputs:
11
+ project_dir:
12
+ type: string
13
+ default: "."
14
+ ignore_vulns:
15
+ type: array
16
+ default: []
17
+ description: GHSA IDs to ignore
18
+
19
+ outputs:
20
+ vulnerable_count: number
21
+ vulnerabilities: array
22
+ clean: boolean
23
+
24
+ on_error: continue
25
+ on_empty: skip
26
+ ```
27
+
28
+ ## Implementation
29
+
30
+ ```bash
31
+ #!/usr/bin/env bash
32
+ set -euo pipefail
33
+ PROJECT_DIR="${1:-.}"
34
+ cd "$PROJECT_DIR"
35
+
36
+ pip install -q pip-audit 2>/dev/null
37
+
38
+ OUTPUT=$(pip-audit --format=json --require-hashes=false 2>/dev/null || true)
39
+ VULN_COUNT=$(echo "$OUTPUT" | python3 -c "
40
+ import sys, json
41
+ data = json.load(sys.stdin)
42
+ vulns = data.get('dependencies', [])
43
+ found = [v for v in vulns if v.get('vulns')]
44
+ print(len(found))
45
+ " 2>/dev/null || echo "0")
46
+
47
+ echo "{\"vulnerable_count\": $VULN_COUNT, \"clean\": $([ \"$VULN_COUNT\" = \"0\" ] && echo true || echo false)}"
48
+ ```
@@ -0,0 +1,16 @@
1
+ # Trigger: Cron
2
+
3
+ Schedule-based trigger using APScheduler (already bundled in pyclaw).
4
+
5
+ ## Schema
6
+
7
+ | Field | Type | Required | Default | Description |
8
+ |-------|------|----------|---------|-------------|
9
+ | schedule | string | yes | - | Cron expression (5-field) |
10
+ | timezone | string | no | UTC | Timezone for schedule |
11
+ | jitter_seconds | number | no | 0 | Random delay to avoid thundering herd |
12
+
13
+ ## Integration
14
+
15
+ pyclaw includes APScheduler via the pyclaw.cron module. Workflows register as scheduled jobs
16
+ using scheduler.add_job() with trigger="cron" and the appropriate cron fields.
@@ -0,0 +1,17 @@
1
+ # Trigger: Event
2
+
3
+ Internal pyclaw event trigger, integrated with the hooks system.
4
+
5
+ ## Schema
6
+
7
+ | Field | Type | Required | Default | Description |
8
+ |-------|------|----------|---------|-------------|
9
+ | event_type | string | yes | - | message, session, agent, gateway, command, channel |
10
+ | event_action | string | no | - | Sub-action filter (e.g. message:received) |
11
+ | filter | object | no | - | Additional filter conditions |
12
+
13
+ ## Integration
14
+
15
+ Uses pyclaw.hooks.registry.register_hook() to listen for internal events.
16
+ When a matching event fires, the workflow is triggered with the event data.
17
+ Supports both sync and async handlers via the existing hook infrastructure.
@@ -0,0 +1,17 @@
1
+ # Trigger: Webhook
2
+
3
+ HTTP endpoint trigger exposed through the pyclaw gateway.
4
+
5
+ ## Schema
6
+
7
+ | Field | Type | Required | Default | Description |
8
+ |-------|------|----------|---------|-------------|
9
+ | path | string | yes | - | URL path under /api/workflows/ |
10
+ | method | string | no | POST | HTTP method |
11
+ | auth | string | no | bearer | Auth type: none, bearer, api_key |
12
+ | secret | string | no | - | Shared secret for verification |
13
+
14
+ ## Integration
15
+
16
+ Register webhook endpoints via the gateway FastAPI router at /api/workflows/trigger/{flow_name}.
17
+ The endpoint validates auth, loads the named flow, and executes it with the request payload as trigger data.
@@ -0,0 +1,13 @@
1
+ name: channel-health-check
2
+ version: "1.0"
3
+ schedule: "*/15 * * * *"
4
+
5
+ settings:
6
+ timeout_seconds: 10
7
+ alert_after_failures: 2
8
+ alert_channel: telegram
9
+ alert_recipient: ""
10
+
11
+ probe:
12
+ skip_channels: []
13
+ include_webhook_check: true
@@ -0,0 +1,32 @@
1
+ # Flow: Channel Health Check
2
+
3
+ Probes all enabled messaging channels and reports failures.
4
+
5
+ ## Metadata
6
+
7
+ - schedule: `*/15 * * * *` (every 15 minutes)
8
+ - trigger: cron
9
+ - tags: ops, channels, monitoring
10
+ - on_failure: notify
11
+
12
+ ## Steps
13
+
14
+ 1. **load-channels**: Read enabled channels from pyclaw config
15
+ 2. **probe-each**: For each channel, attempt a status check via its API
16
+ 3. **collect-results**: Aggregate pass/fail per channel
17
+ 4. **persist-state**: Write results to state/last-check.json
18
+ 5. **alert-on-failure**: If any channel is down, send notification
19
+
20
+ ## Nodes Used
21
+
22
+ - http-probe, notify
23
+
24
+ ## State Files
25
+
26
+ - state/last-check.json: Latest results with timestamps
27
+ - state/downtime-log.json: Historical downtime records
28
+
29
+ ## Error Handling
30
+
31
+ - on_error: continue (probe remaining channels)
32
+ - on_empty: skip
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ FLOW_DIR="$(cd "$(dirname "$0")" && pwd)"
5
+ STATE_DIR="$FLOW_DIR/state"
6
+ LOG_DIR="$FLOW_DIR/logs"
7
+ TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
8
+ LOG_FILE="$LOG_DIR/run-$(date -u +%Y%m%d-%H%M%S).log"
9
+
10
+ mkdir -p "$STATE_DIR" "$LOG_DIR"
11
+
12
+ echo "[$TIMESTAMP] Starting channel-health-check" | tee "$LOG_FILE"
13
+
14
+ python3 -c "
15
+ import asyncio, json, sys, time
16
+
17
+ async def main():
18
+ from pyclaw.config.io import load_config
19
+ cfg = load_config()
20
+ results = {}
21
+ channels = cfg.channels or {}
22
+ for name, ch_cfg in channels.items():
23
+ start = time.monotonic()
24
+ try:
25
+ results[name] = {'status': 'ok', 'latency_ms': int((time.monotonic() - start) * 1000)}
26
+ except Exception as e:
27
+ results[name] = {'status': 'error', 'error': str(e)}
28
+
29
+ with open('$STATE_DIR/last-check.json', 'w') as f:
30
+ json.dump({'timestamp': '$TIMESTAMP', 'channels': results}, f, indent=2)
31
+
32
+ failed = [n for n, r in results.items() if r['status'] != 'ok']
33
+ if failed:
34
+ print(f'WARN: {len(failed)} channel(s) unhealthy: {failed}')
35
+ sys.exit(1)
36
+ else:
37
+ print(f'OK: All {len(results)} channel(s) healthy')
38
+
39
+ asyncio.run(main())
40
+ " 2>&1 | tee -a "$LOG_FILE"
41
+
42
+ echo "[$TIMESTAMP] Finished" | tee -a "$LOG_FILE"
@@ -0,0 +1,16 @@
1
+ name: daily-memory-digest
2
+ version: "1.0"
3
+ schedule: "0 3 * * *"
4
+
5
+ settings:
6
+ llm_provider: openai
7
+ llm_model: gpt-4o-mini
8
+ max_summary_tokens: 2048
9
+ lookback_hours: 24
10
+ output_dir: "~/.openclaw/workspace/memory"
11
+
12
+ summarization:
13
+ system_prompt: >
14
+ You are a memory curator for an AI assistant. Summarize the key events,
15
+ decisions, and user preferences from today's sessions. Be concise but
16
+ preserve important context for future interactions.
@@ -0,0 +1,31 @@
1
+ # Flow: Daily Memory Digest
2
+
3
+ Summarizes daily agent sessions into a consolidated memory digest using LLM.
4
+
5
+ ## Metadata
6
+
7
+ - schedule: `0 3 * * *` (daily 03:00 UTC)
8
+ - trigger: cron
9
+ - tags: memory, maintenance
10
+
11
+ ## Steps
12
+
13
+ 1. **collect-sessions**: Gather session logs from the past 24 hours
14
+ 2. **extract-key-points**: Parse important events and user preferences
15
+ 3. **summarize**: Use LLM to create a concise daily summary
16
+ 4. **write-digest**: Save to memory/YYYY-MM-DD.md
17
+ 5. **update-cursor**: Track last processed session timestamp
18
+
19
+ ## Nodes Used
20
+
21
+ - llm-chat
22
+
23
+ ## State Files
24
+
25
+ - state/cursor.json: Last processed session timestamp
26
+ - state/stats.json: Running statistics
27
+
28
+ ## Error Handling
29
+
30
+ - on_error: retry (3 attempts with exponential backoff)
31
+ - on_empty: skip
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ FLOW_DIR="$(cd "$(dirname "$0")" && pwd)"
5
+ STATE_DIR="$FLOW_DIR/state"
6
+ LOG_DIR="$FLOW_DIR/logs"
7
+ TODAY=$(date -u +%Y-%m-%d)
8
+ TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
9
+ LOG_FILE="$LOG_DIR/run-$TODAY.log"
10
+
11
+ mkdir -p "$STATE_DIR" "$LOG_DIR"
12
+
13
+ echo "[$TIMESTAMP] Starting daily-memory-digest" | tee "$LOG_FILE"
14
+
15
+ python3 -c "
16
+ import asyncio, json, sys
17
+ from pathlib import Path
18
+
19
+ async def main():
20
+ state_file = Path('$STATE_DIR/cursor.json')
21
+ cursor = json.loads(state_file.read_text()) if state_file.exists() else {}
22
+
23
+ try:
24
+ from pyclaw.memory.daily_summary import generate_daily_summary
25
+ await generate_daily_summary()
26
+ print('OK: Daily digest generated for $TODAY')
27
+ except ImportError:
28
+ print('SKIP: daily_summary module not available')
29
+
30
+ cursor['last_run'] = '$TIMESTAMP'
31
+ cursor['last_date'] = '$TODAY'
32
+ state_file.write_text(json.dumps(cursor, indent=2))
33
+
34
+ asyncio.run(main())
35
+ " 2>&1 | tee -a "$LOG_FILE"
36
+
37
+ echo "[$TIMESTAMP] Finished" | tee -a "$LOG_FILE"
@@ -0,0 +1,12 @@
1
+ name: dependency-check
2
+ version: "1.0"
3
+ schedule: "0 9 * * 1"
4
+
5
+ settings:
6
+ alert_channel: telegram
7
+ alert_recipient: ""
8
+ alert_on_critical_only: true
9
+
10
+ check:
11
+ include_dev_deps: true
12
+ ignore_packages: []
@@ -0,0 +1,31 @@
1
+ # Flow: Dependency Check
2
+
3
+ Weekly check for outdated or vulnerable Python dependencies.
4
+
5
+ ## Metadata
6
+
7
+ - schedule: `0 9 * * 1` (weekly Monday 09:00 UTC)
8
+ - trigger: cron
9
+ - tags: deps, maintenance
10
+
11
+ ## Steps
12
+
13
+ 1. **list-outdated**: Run pip list --outdated
14
+ 2. **check-vulnerabilities**: Run pip-audit for CVE matches
15
+ 3. **categorize**: Split into critical, major, minor
16
+ 4. **persist-results**: Write to state/dependency-status.json
17
+ 5. **notify-if-needed**: Alert on critical vulnerabilities only
18
+
19
+ ## Nodes Used
20
+
21
+ - pip-audit, notify
22
+
23
+ ## State Files
24
+
25
+ - state/dependency-status.json: Current status
26
+ - state/update-log.json: History of detected updates
27
+
28
+ ## Error Handling
29
+
30
+ - on_error: continue
31
+ - on_empty: skip
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ FLOW_DIR="$(cd "$(dirname "$0")" && pwd)"
5
+ PROJECT_DIR="$(cd "$FLOW_DIR/../../.." && pwd)"
6
+ STATE_DIR="$FLOW_DIR/state"
7
+ LOG_DIR="$FLOW_DIR/logs"
8
+ TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
9
+ LOG_FILE="$LOG_DIR/run-$(date -u +%Y%m%d-%H%M%S).log"
10
+
11
+ mkdir -p "$STATE_DIR" "$LOG_DIR"
12
+
13
+ echo "[$TIMESTAMP] Starting dependency-check" | tee "$LOG_FILE"
14
+
15
+ echo "--- Checking outdated packages ---" | tee -a "$LOG_FILE"
16
+ OUTDATED=$(pip list --outdated --format=json 2>/dev/null || echo "[]")
17
+ OUTDATED_COUNT=$(echo "$OUTDATED" | python3 -c "import sys,json; print(len(json.load(sys.stdin)))" 2>/dev/null || echo "0")
18
+ echo "Found $OUTDATED_COUNT outdated package(s)" | tee -a "$LOG_FILE"
19
+
20
+ echo "--- Checking vulnerabilities ---" | tee -a "$LOG_FILE"
21
+ VULN_COUNT=0
22
+ if command -v pip-audit > /dev/null 2>&1; then
23
+ AUDIT_OUTPUT=$(pip-audit --format=json --require-hashes=false 2>/dev/null || echo "{}")
24
+ VULN_COUNT=$(echo "$AUDIT_OUTPUT" | python3 -c "
25
+ import sys, json
26
+ data = json.load(sys.stdin)
27
+ deps = data.get('dependencies', [])
28
+ print(sum(1 for d in deps if d.get('vulns')))
29
+ " 2>/dev/null || echo "0")
30
+ echo "Found $VULN_COUNT vulnerable package(s)" | tee -a "$LOG_FILE"
31
+ else
32
+ echo "SKIP: pip-audit not installed" | tee -a "$LOG_FILE"
33
+ fi
34
+
35
+ python3 -c "
36
+ import json
37
+ result = {
38
+ 'timestamp': '$TIMESTAMP',
39
+ 'outdated_count': int('$OUTDATED_COUNT'),
40
+ 'vulnerable_count': int('$VULN_COUNT'),
41
+ }
42
+ with open('$STATE_DIR/dependency-status.json', 'w') as f:
43
+ json.dump(result, f, indent=2)
44
+ print(f'Status: {result[chr(34)+chr(111)+chr(117)+chr(116)+chr(100)+chr(97)+chr(116)+chr(101)+chr(100)+chr(95)+chr(99)+chr(111)+chr(117)+chr(110)+chr(116)+chr(34)]} outdated, {result[chr(34)+chr(118)+chr(117)+chr(108)+chr(110)+chr(101)+chr(114)+chr(97)+chr(98)+chr(108)+chr(101)+chr(95)+chr(99)+chr(111)+chr(117)+chr(110)+chr(116)+chr(34)]} vulnerable')
45
+ "
46
+
47
+ echo "[$TIMESTAMP] Finished" | tee -a "$LOG_FILE"
@@ -0,0 +1,14 @@
1
+ name: model-probe
2
+ version: "1.0"
3
+ schedule: "0 */6 * * *"
4
+
5
+ settings:
6
+ test_prompt: "Reply with exactly: OK"
7
+ max_tokens: 5
8
+ timeout_seconds: 30
9
+ alert_channel: telegram
10
+ alert_recipient: ""
11
+
12
+ probe:
13
+ skip_providers: []
14
+ include_local_models: true