controlmesh 0.17.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 (451) hide show
  1. controlmesh-0.17.0/.gitignore +87 -0
  2. controlmesh-0.17.0/Dockerfile.sandbox +48 -0
  3. controlmesh-0.17.0/LICENSE +21 -0
  4. controlmesh-0.17.0/PKG-INFO +354 -0
  5. controlmesh-0.17.0/README.md +288 -0
  6. controlmesh-0.17.0/config.example.json +238 -0
  7. controlmesh-0.17.0/controlmesh/__init__.py +3 -0
  8. controlmesh-0.17.0/controlmesh/__main__.py +474 -0
  9. controlmesh-0.17.0/controlmesh/_banner.txt +14 -0
  10. controlmesh-0.17.0/controlmesh/_home_defaults/RULES.md +74 -0
  11. controlmesh-0.17.0/controlmesh/_home_defaults/config/RULES-all-clis.md +185 -0
  12. controlmesh-0.17.0/controlmesh/_home_defaults/config/RULES-claude-only.md +133 -0
  13. controlmesh-0.17.0/controlmesh/_home_defaults/config/RULES-codex-only.md +141 -0
  14. controlmesh-0.17.0/controlmesh/_home_defaults/config/RULES-gemini-only.md +139 -0
  15. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/JOIN_NOTIFICATION.md +9 -0
  16. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/RULES.md +91 -0
  17. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/cron_tasks/RULES-all-clis.md +153 -0
  18. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/cron_tasks/RULES-claude-only.md +88 -0
  19. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/cron_tasks/RULES-codex-only.md +111 -0
  20. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/cron_tasks/RULES-gemini-only.md +100 -0
  21. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/memory_system/MAINMEMORY.md +13 -0
  22. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/memory_system/RULES.md +51 -0
  23. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/output_to_user/RULES.md +20 -0
  24. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/RULES.md +44 -0
  25. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/LICENSE.txt +202 -0
  26. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/SKILL.md +357 -0
  27. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/references/output-patterns.md +82 -0
  28. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/references/workflows.md +28 -0
  29. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/scripts/init_skill.py +304 -0
  30. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/scripts/package_skill.py +111 -0
  31. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/scripts/quick_validate.py +107 -0
  32. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tasks/RULES.md +21 -0
  33. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/telegram_files/RULES.md +43 -0
  34. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/RULES.md +48 -0
  35. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/_tool_shared.py +71 -0
  36. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/RULES.md +249 -0
  37. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/ask_agent.py +83 -0
  38. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/ask_agent_async.py +114 -0
  39. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/create_agent.py +391 -0
  40. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/edit_shared_knowledge.py +84 -0
  41. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/list_agents.py +72 -0
  42. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/remove_agent.py +70 -0
  43. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/RULES-all-clis.md +156 -0
  44. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/RULES-claude-only.md +106 -0
  45. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/RULES-codex-only.md +118 -0
  46. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/RULES-gemini-only.md +109 -0
  47. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/_shared.py +233 -0
  48. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/cron_add.py +455 -0
  49. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/cron_edit.py +500 -0
  50. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/cron_list.py +83 -0
  51. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/cron_remove.py +153 -0
  52. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/cron_time.py +103 -0
  53. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/media_tools/RULES.md +35 -0
  54. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/media_tools/file_info.py +99 -0
  55. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/media_tools/list_files.py +93 -0
  56. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/media_tools/process_video.py +278 -0
  57. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/media_tools/read_document.py +115 -0
  58. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/media_tools/transcribe_audio.py +156 -0
  59. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/RULES.md +93 -0
  60. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/_shared.py +72 -0
  61. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/ask_parent.py +66 -0
  62. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/cancel_task.py +53 -0
  63. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/create_task.py +114 -0
  64. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/delete_task.py +54 -0
  65. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/list_tasks.py +63 -0
  66. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/resume_task.py +67 -0
  67. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/user_tools/RULES.md +31 -0
  68. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/RULES-all-clis.md +318 -0
  69. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/RULES-claude-only.md +236 -0
  70. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/RULES-codex-only.md +258 -0
  71. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/RULES-gemini-only.md +244 -0
  72. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/_shared.py +61 -0
  73. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/webhook_add.py +442 -0
  74. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/webhook_edit.py +282 -0
  75. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/webhook_list.py +73 -0
  76. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/webhook_remove.py +83 -0
  77. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/webhook_rotate_token.py +124 -0
  78. controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/webhook_test.py +195 -0
  79. controlmesh-0.17.0/controlmesh/_plugins/__init__.py +1 -0
  80. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/VENDORED_FROM.md +13 -0
  81. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/__init__.py +4 -0
  82. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/__init__.py +161 -0
  83. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/agent_runtime.py +397 -0
  84. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/app_registration.py +220 -0
  85. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/cardkit.py +127 -0
  86. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/claude_adapter.py +57 -0
  87. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/cli.py +1289 -0
  88. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/client.py +155 -0
  89. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/device_flow.py +127 -0
  90. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/domains.py +83 -0
  91. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/message_context.py +162 -0
  92. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/models.py +48 -0
  93. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/native_agent_tools.py +166 -0
  94. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/native_contract.py +259 -0
  95. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/orchestration.py +447 -0
  96. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/owner_policy.py +111 -0
  97. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/probe.py +52 -0
  98. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/runtime_cards.py +219 -0
  99. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/scopes.py +127 -0
  100. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/token_store.py +147 -0
  101. controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/runner.py +10 -0
  102. controlmesh-0.17.0/controlmesh/agents_runtime/__init__.py +12 -0
  103. controlmesh-0.17.0/controlmesh/agents_runtime/context.py +32 -0
  104. controlmesh-0.17.0/controlmesh/agents_runtime/manager.py +116 -0
  105. controlmesh-0.17.0/controlmesh/agents_runtime/progress.py +166 -0
  106. controlmesh-0.17.0/controlmesh/agents_runtime/results.py +59 -0
  107. controlmesh-0.17.0/controlmesh/agents_runtime/tools.py +166 -0
  108. controlmesh-0.17.0/controlmesh/api/__init__.py +24 -0
  109. controlmesh-0.17.0/controlmesh/api/admin_read.py +214 -0
  110. controlmesh-0.17.0/controlmesh/api/catalog_http.py +63 -0
  111. controlmesh-0.17.0/controlmesh/api/crypto.py +50 -0
  112. controlmesh-0.17.0/controlmesh/api/server.py +665 -0
  113. controlmesh-0.17.0/controlmesh/background/__init__.py +8 -0
  114. controlmesh-0.17.0/controlmesh/background/models.py +55 -0
  115. controlmesh-0.17.0/controlmesh/background/observer.py +279 -0
  116. controlmesh-0.17.0/controlmesh/bus/__init__.py +16 -0
  117. controlmesh-0.17.0/controlmesh/bus/adapters.py +303 -0
  118. controlmesh-0.17.0/controlmesh/bus/bus.py +221 -0
  119. controlmesh-0.17.0/controlmesh/bus/cron_sanitize.py +27 -0
  120. controlmesh-0.17.0/controlmesh/bus/envelope.py +90 -0
  121. controlmesh-0.17.0/controlmesh/bus/lock_pool.py +59 -0
  122. controlmesh-0.17.0/controlmesh/case_pack/__init__.py +15 -0
  123. controlmesh-0.17.0/controlmesh/case_pack/__main__.py +58 -0
  124. controlmesh-0.17.0/controlmesh/case_pack/io.py +14 -0
  125. controlmesh-0.17.0/controlmesh/case_pack/lint.py +192 -0
  126. controlmesh-0.17.0/controlmesh/case_pack/models.py +93 -0
  127. controlmesh-0.17.0/controlmesh/case_pack/render.py +93 -0
  128. controlmesh-0.17.0/controlmesh/cleanup/__init__.py +5 -0
  129. controlmesh-0.17.0/controlmesh/cleanup/observer.py +149 -0
  130. controlmesh-0.17.0/controlmesh/cli/__init__.py +33 -0
  131. controlmesh-0.17.0/controlmesh/cli/auth.py +432 -0
  132. controlmesh-0.17.0/controlmesh/cli/base.py +228 -0
  133. controlmesh-0.17.0/controlmesh/cli/claude_provider.py +219 -0
  134. controlmesh-0.17.0/controlmesh/cli/coalescer.py +149 -0
  135. controlmesh-0.17.0/controlmesh/cli/codex_cache.py +126 -0
  136. controlmesh-0.17.0/controlmesh/cli/codex_cache_observer.py +36 -0
  137. controlmesh-0.17.0/controlmesh/cli/codex_discovery.py +149 -0
  138. controlmesh-0.17.0/controlmesh/cli/codex_events.py +315 -0
  139. controlmesh-0.17.0/controlmesh/cli/codex_hooks.py +230 -0
  140. controlmesh-0.17.0/controlmesh/cli/codex_provider.py +293 -0
  141. controlmesh-0.17.0/controlmesh/cli/executor.py +336 -0
  142. controlmesh-0.17.0/controlmesh/cli/factory.py +32 -0
  143. controlmesh-0.17.0/controlmesh/cli/gemini_cache.py +61 -0
  144. controlmesh-0.17.0/controlmesh/cli/gemini_cache_observer.py +54 -0
  145. controlmesh-0.17.0/controlmesh/cli/gemini_events.py +215 -0
  146. controlmesh-0.17.0/controlmesh/cli/gemini_provider.py +659 -0
  147. controlmesh-0.17.0/controlmesh/cli/gemini_utils.py +455 -0
  148. controlmesh-0.17.0/controlmesh/cli/init_wizard.py +810 -0
  149. controlmesh-0.17.0/controlmesh/cli/model_cache.py +259 -0
  150. controlmesh-0.17.0/controlmesh/cli/openai_agents_provider.py +349 -0
  151. controlmesh-0.17.0/controlmesh/cli/param_resolver.py +137 -0
  152. controlmesh-0.17.0/controlmesh/cli/process_registry.py +257 -0
  153. controlmesh-0.17.0/controlmesh/cli/service.py +406 -0
  154. controlmesh-0.17.0/controlmesh/cli/stream_events.py +196 -0
  155. controlmesh-0.17.0/controlmesh/cli/timeout_controller.py +223 -0
  156. controlmesh-0.17.0/controlmesh/cli/types.py +78 -0
  157. controlmesh-0.17.0/controlmesh/cli_commands/__init__.py +1 -0
  158. controlmesh-0.17.0/controlmesh/cli_commands/agents.py +318 -0
  159. controlmesh-0.17.0/controlmesh/cli_commands/api_cmd.py +170 -0
  160. controlmesh-0.17.0/controlmesh/cli_commands/auth.py +1357 -0
  161. controlmesh-0.17.0/controlmesh/cli_commands/docker.py +515 -0
  162. controlmesh-0.17.0/controlmesh/cli_commands/feishu.py +93 -0
  163. controlmesh-0.17.0/controlmesh/cli_commands/install.py +91 -0
  164. controlmesh-0.17.0/controlmesh/cli_commands/lifecycle.py +288 -0
  165. controlmesh-0.17.0/controlmesh/cli_commands/runtime.py +212 -0
  166. controlmesh-0.17.0/controlmesh/cli_commands/service.py +92 -0
  167. controlmesh-0.17.0/controlmesh/cli_commands/status.py +214 -0
  168. controlmesh-0.17.0/controlmesh/cli_commands/tasks.py +137 -0
  169. controlmesh-0.17.0/controlmesh/commands.py +52 -0
  170. controlmesh-0.17.0/controlmesh/config.py +605 -0
  171. controlmesh-0.17.0/controlmesh/config_reload.py +226 -0
  172. controlmesh-0.17.0/controlmesh/cron/__init__.py +6 -0
  173. controlmesh-0.17.0/controlmesh/cron/dependency_queue.py +163 -0
  174. controlmesh-0.17.0/controlmesh/cron/execution.py +298 -0
  175. controlmesh-0.17.0/controlmesh/cron/manager.py +207 -0
  176. controlmesh-0.17.0/controlmesh/cron/observer.py +412 -0
  177. controlmesh-0.17.0/controlmesh/cron/policy.py +119 -0
  178. controlmesh-0.17.0/controlmesh/errors.py +37 -0
  179. controlmesh-0.17.0/controlmesh/files/__init__.py +1 -0
  180. controlmesh-0.17.0/controlmesh/files/allowed_roots.py +27 -0
  181. controlmesh-0.17.0/controlmesh/files/browser.py +28 -0
  182. controlmesh-0.17.0/controlmesh/files/image_processor.py +76 -0
  183. controlmesh-0.17.0/controlmesh/files/prompt.py +64 -0
  184. controlmesh-0.17.0/controlmesh/files/storage.py +86 -0
  185. controlmesh-0.17.0/controlmesh/files/tags.py +157 -0
  186. controlmesh-0.17.0/controlmesh/gateways/__init__.py +9 -0
  187. controlmesh-0.17.0/controlmesh/gateways/config.py +95 -0
  188. controlmesh-0.17.0/controlmesh/gateways/types.py +8 -0
  189. controlmesh-0.17.0/controlmesh/heartbeat/__init__.py +5 -0
  190. controlmesh-0.17.0/controlmesh/heartbeat/observer.py +346 -0
  191. controlmesh-0.17.0/controlmesh/history/__init__.py +6 -0
  192. controlmesh-0.17.0/controlmesh/history/catalog.py +325 -0
  193. controlmesh-0.17.0/controlmesh/history/index.py +1341 -0
  194. controlmesh-0.17.0/controlmesh/history/models.py +39 -0
  195. controlmesh-0.17.0/controlmesh/history/store.py +52 -0
  196. controlmesh-0.17.0/controlmesh/i18n/__init__.py +82 -0
  197. controlmesh-0.17.0/controlmesh/i18n/de/chat.toml +459 -0
  198. controlmesh-0.17.0/controlmesh/i18n/de/cli.toml +286 -0
  199. controlmesh-0.17.0/controlmesh/i18n/de/commands.toml +29 -0
  200. controlmesh-0.17.0/controlmesh/i18n/de/wizard.toml +182 -0
  201. controlmesh-0.17.0/controlmesh/i18n/en/chat.toml +458 -0
  202. controlmesh-0.17.0/controlmesh/i18n/en/cli.toml +286 -0
  203. controlmesh-0.17.0/controlmesh/i18n/en/commands.toml +29 -0
  204. controlmesh-0.17.0/controlmesh/i18n/en/wizard.toml +182 -0
  205. controlmesh-0.17.0/controlmesh/i18n/es/chat.toml +459 -0
  206. controlmesh-0.17.0/controlmesh/i18n/es/cli.toml +286 -0
  207. controlmesh-0.17.0/controlmesh/i18n/es/commands.toml +29 -0
  208. controlmesh-0.17.0/controlmesh/i18n/es/wizard.toml +182 -0
  209. controlmesh-0.17.0/controlmesh/i18n/fr/chat.toml +459 -0
  210. controlmesh-0.17.0/controlmesh/i18n/fr/cli.toml +286 -0
  211. controlmesh-0.17.0/controlmesh/i18n/fr/commands.toml +29 -0
  212. controlmesh-0.17.0/controlmesh/i18n/fr/wizard.toml +182 -0
  213. controlmesh-0.17.0/controlmesh/i18n/loader.py +131 -0
  214. controlmesh-0.17.0/controlmesh/i18n/nl/chat.toml +459 -0
  215. controlmesh-0.17.0/controlmesh/i18n/nl/cli.toml +286 -0
  216. controlmesh-0.17.0/controlmesh/i18n/nl/commands.toml +29 -0
  217. controlmesh-0.17.0/controlmesh/i18n/nl/wizard.toml +182 -0
  218. controlmesh-0.17.0/controlmesh/i18n/pt/chat.toml +459 -0
  219. controlmesh-0.17.0/controlmesh/i18n/pt/cli.toml +286 -0
  220. controlmesh-0.17.0/controlmesh/i18n/pt/commands.toml +29 -0
  221. controlmesh-0.17.0/controlmesh/i18n/pt/wizard.toml +182 -0
  222. controlmesh-0.17.0/controlmesh/i18n/ru/chat.toml +459 -0
  223. controlmesh-0.17.0/controlmesh/i18n/ru/cli.toml +286 -0
  224. controlmesh-0.17.0/controlmesh/i18n/ru/commands.toml +29 -0
  225. controlmesh-0.17.0/controlmesh/i18n/ru/wizard.toml +182 -0
  226. controlmesh-0.17.0/controlmesh/infra/__init__.py +22 -0
  227. controlmesh-0.17.0/controlmesh/infra/atomic_io.py +51 -0
  228. controlmesh-0.17.0/controlmesh/infra/base_observer.py +55 -0
  229. controlmesh-0.17.0/controlmesh/infra/base_task_observer.py +68 -0
  230. controlmesh-0.17.0/controlmesh/infra/boot_id.py +83 -0
  231. controlmesh-0.17.0/controlmesh/infra/docker.py +460 -0
  232. controlmesh-0.17.0/controlmesh/infra/docker_extras.py +292 -0
  233. controlmesh-0.17.0/controlmesh/infra/env_secrets.py +109 -0
  234. controlmesh-0.17.0/controlmesh/infra/file_watcher.py +73 -0
  235. controlmesh-0.17.0/controlmesh/infra/fs.py +57 -0
  236. controlmesh-0.17.0/controlmesh/infra/inflight.py +113 -0
  237. controlmesh-0.17.0/controlmesh/infra/install.py +99 -0
  238. controlmesh-0.17.0/controlmesh/infra/json_store.py +33 -0
  239. controlmesh-0.17.0/controlmesh/infra/pidlock.py +145 -0
  240. controlmesh-0.17.0/controlmesh/infra/platform.py +17 -0
  241. controlmesh-0.17.0/controlmesh/infra/process_tree.py +231 -0
  242. controlmesh-0.17.0/controlmesh/infra/recovery.py +104 -0
  243. controlmesh-0.17.0/controlmesh/infra/restart.py +63 -0
  244. controlmesh-0.17.0/controlmesh/infra/service.py +65 -0
  245. controlmesh-0.17.0/controlmesh/infra/service_base.py +122 -0
  246. controlmesh-0.17.0/controlmesh/infra/service_linux.py +258 -0
  247. controlmesh-0.17.0/controlmesh/infra/service_logs.py +101 -0
  248. controlmesh-0.17.0/controlmesh/infra/service_macos.py +238 -0
  249. controlmesh-0.17.0/controlmesh/infra/service_windows.py +309 -0
  250. controlmesh-0.17.0/controlmesh/infra/startup_state.py +89 -0
  251. controlmesh-0.17.0/controlmesh/infra/task_runner.py +132 -0
  252. controlmesh-0.17.0/controlmesh/infra/updater.py +450 -0
  253. controlmesh-0.17.0/controlmesh/infra/version.py +186 -0
  254. controlmesh-0.17.0/controlmesh/integrations/__init__.py +2 -0
  255. controlmesh-0.17.0/controlmesh/integrations/feishu_auth_kit.py +139 -0
  256. controlmesh-0.17.0/controlmesh/log_context.py +69 -0
  257. controlmesh-0.17.0/controlmesh/logging_config.py +137 -0
  258. controlmesh-0.17.0/controlmesh/memory/__init__.py +80 -0
  259. controlmesh-0.17.0/controlmesh/memory/commands.py +94 -0
  260. controlmesh-0.17.0/controlmesh/memory/dreaming.py +435 -0
  261. controlmesh-0.17.0/controlmesh/memory/models.py +167 -0
  262. controlmesh-0.17.0/controlmesh/memory/promotion.py +195 -0
  263. controlmesh-0.17.0/controlmesh/memory/search.py +245 -0
  264. controlmesh-0.17.0/controlmesh/memory/store.py +97 -0
  265. controlmesh-0.17.0/controlmesh/messenger/__init__.py +28 -0
  266. controlmesh-0.17.0/controlmesh/messenger/callback_router.py +98 -0
  267. controlmesh-0.17.0/controlmesh/messenger/capabilities.py +48 -0
  268. controlmesh-0.17.0/controlmesh/messenger/commands.py +67 -0
  269. controlmesh-0.17.0/controlmesh/messenger/feishu/__init__.py +6 -0
  270. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/__init__.py +84 -0
  271. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/app_info.py +173 -0
  272. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/auth_cards.py +107 -0
  273. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/brand.py +93 -0
  274. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/card_auth.py +148 -0
  275. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/card_auth_context.py +38 -0
  276. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/card_auth_runner.py +266 -0
  277. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/device_flow.py +168 -0
  278. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/errors.py +92 -0
  279. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/feishu_card_sender.py +62 -0
  280. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/native_auth_all_runner.py +239 -0
  281. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/orchestration_runner.py +458 -0
  282. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/runtime_auth.py +148 -0
  283. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/runtime_continuation.py +80 -0
  284. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/token_store.py +86 -0
  285. controlmesh-0.17.0/controlmesh/messenger/feishu/auth/uat_client.py +164 -0
  286. controlmesh-0.17.0/controlmesh/messenger/feishu/bot.py +1834 -0
  287. controlmesh-0.17.0/controlmesh/messenger/feishu/bundled_runtime.py +84 -0
  288. controlmesh-0.17.0/controlmesh/messenger/feishu/card_stream.py +440 -0
  289. controlmesh-0.17.0/controlmesh/messenger/feishu/id_map.py +100 -0
  290. controlmesh-0.17.0/controlmesh/messenger/feishu/inbound.py +105 -0
  291. controlmesh-0.17.0/controlmesh/messenger/feishu/long_connection.py +317 -0
  292. controlmesh-0.17.0/controlmesh/messenger/feishu/media.py +311 -0
  293. controlmesh-0.17.0/controlmesh/messenger/feishu/media_meta.py +143 -0
  294. controlmesh-0.17.0/controlmesh/messenger/feishu/message_context.py +304 -0
  295. controlmesh-0.17.0/controlmesh/messenger/feishu/native_tools/__init__.py +29 -0
  296. controlmesh-0.17.0/controlmesh/messenger/feishu/native_tools/agent_runtime.py +23 -0
  297. controlmesh-0.17.0/controlmesh/messenger/feishu/native_tools/client.py +67 -0
  298. controlmesh-0.17.0/controlmesh/messenger/feishu/native_tools/executor.py +518 -0
  299. controlmesh-0.17.0/controlmesh/messenger/feishu/progress_preview.py +171 -0
  300. controlmesh-0.17.0/controlmesh/messenger/feishu/sender.py +111 -0
  301. controlmesh-0.17.0/controlmesh/messenger/feishu/settings_card.py +492 -0
  302. controlmesh-0.17.0/controlmesh/messenger/feishu/startup.py +53 -0
  303. controlmesh-0.17.0/controlmesh/messenger/feishu/tool_auth.py +147 -0
  304. controlmesh-0.17.0/controlmesh/messenger/feishu/transport.py +177 -0
  305. controlmesh-0.17.0/controlmesh/messenger/matrix/__init__.py +1 -0
  306. controlmesh-0.17.0/controlmesh/messenger/matrix/bot.py +1174 -0
  307. controlmesh-0.17.0/controlmesh/messenger/matrix/buttons.py +142 -0
  308. controlmesh-0.17.0/controlmesh/messenger/matrix/credentials.py +103 -0
  309. controlmesh-0.17.0/controlmesh/messenger/matrix/file_browser.py +113 -0
  310. controlmesh-0.17.0/controlmesh/messenger/matrix/formatting.py +126 -0
  311. controlmesh-0.17.0/controlmesh/messenger/matrix/id_map.py +69 -0
  312. controlmesh-0.17.0/controlmesh/messenger/matrix/media.py +189 -0
  313. controlmesh-0.17.0/controlmesh/messenger/matrix/sender.py +230 -0
  314. controlmesh-0.17.0/controlmesh/messenger/matrix/startup.py +83 -0
  315. controlmesh-0.17.0/controlmesh/messenger/matrix/streaming.py +109 -0
  316. controlmesh-0.17.0/controlmesh/messenger/matrix/transport.py +256 -0
  317. controlmesh-0.17.0/controlmesh/messenger/matrix/typing.py +64 -0
  318. controlmesh-0.17.0/controlmesh/messenger/multi.py +163 -0
  319. controlmesh-0.17.0/controlmesh/messenger/notifications.py +41 -0
  320. controlmesh-0.17.0/controlmesh/messenger/protocol.py +72 -0
  321. controlmesh-0.17.0/controlmesh/messenger/registry.py +127 -0
  322. controlmesh-0.17.0/controlmesh/messenger/send_opts.py +14 -0
  323. controlmesh-0.17.0/controlmesh/messenger/telegram/__init__.py +1 -0
  324. controlmesh-0.17.0/controlmesh/messenger/telegram/abort.py +92 -0
  325. controlmesh-0.17.0/controlmesh/messenger/telegram/app.py +1600 -0
  326. controlmesh-0.17.0/controlmesh/messenger/telegram/buttons.py +140 -0
  327. controlmesh-0.17.0/controlmesh/messenger/telegram/callbacks.py +120 -0
  328. controlmesh-0.17.0/controlmesh/messenger/telegram/chat_tracker.py +135 -0
  329. controlmesh-0.17.0/controlmesh/messenger/telegram/controlmesh_images/logo_text.png +0 -0
  330. controlmesh-0.17.0/controlmesh/messenger/telegram/controlmesh_images/welcome.png +0 -0
  331. controlmesh-0.17.0/controlmesh/messenger/telegram/dedup.py +78 -0
  332. controlmesh-0.17.0/controlmesh/messenger/telegram/edit_streaming.py +422 -0
  333. controlmesh-0.17.0/controlmesh/messenger/telegram/file_browser.py +123 -0
  334. controlmesh-0.17.0/controlmesh/messenger/telegram/formatting.py +209 -0
  335. controlmesh-0.17.0/controlmesh/messenger/telegram/handlers.py +205 -0
  336. controlmesh-0.17.0/controlmesh/messenger/telegram/media.py +265 -0
  337. controlmesh-0.17.0/controlmesh/messenger/telegram/message_dispatch.py +241 -0
  338. controlmesh-0.17.0/controlmesh/messenger/telegram/middleware.py +416 -0
  339. controlmesh-0.17.0/controlmesh/messenger/telegram/sender.py +294 -0
  340. controlmesh-0.17.0/controlmesh/messenger/telegram/startup.py +149 -0
  341. controlmesh-0.17.0/controlmesh/messenger/telegram/streaming.py +170 -0
  342. controlmesh-0.17.0/controlmesh/messenger/telegram/topic.py +101 -0
  343. controlmesh-0.17.0/controlmesh/messenger/telegram/transport.py +328 -0
  344. controlmesh-0.17.0/controlmesh/messenger/telegram/typing.py +56 -0
  345. controlmesh-0.17.0/controlmesh/messenger/telegram/upgrade_handler.py +212 -0
  346. controlmesh-0.17.0/controlmesh/messenger/telegram/welcome.py +142 -0
  347. controlmesh-0.17.0/controlmesh/messenger/weixin/__init__.py +25 -0
  348. controlmesh-0.17.0/controlmesh/messenger/weixin/api.py +191 -0
  349. controlmesh-0.17.0/controlmesh/messenger/weixin/auth_state.py +41 -0
  350. controlmesh-0.17.0/controlmesh/messenger/weixin/auth_store.py +239 -0
  351. controlmesh-0.17.0/controlmesh/messenger/weixin/bot.py +300 -0
  352. controlmesh-0.17.0/controlmesh/messenger/weixin/id_map.py +61 -0
  353. controlmesh-0.17.0/controlmesh/messenger/weixin/runtime.py +227 -0
  354. controlmesh-0.17.0/controlmesh/messenger/weixin/runtime_state.py +99 -0
  355. controlmesh-0.17.0/controlmesh/messenger/weixin/transport.py +31 -0
  356. controlmesh-0.17.0/controlmesh/multiagent/__init__.py +8 -0
  357. controlmesh-0.17.0/controlmesh/multiagent/bus.py +446 -0
  358. controlmesh-0.17.0/controlmesh/multiagent/commands.py +111 -0
  359. controlmesh-0.17.0/controlmesh/multiagent/health.py +55 -0
  360. controlmesh-0.17.0/controlmesh/multiagent/internal_api.py +540 -0
  361. controlmesh-0.17.0/controlmesh/multiagent/models.py +101 -0
  362. controlmesh-0.17.0/controlmesh/multiagent/registry.py +109 -0
  363. controlmesh-0.17.0/controlmesh/multiagent/shared_knowledge.py +129 -0
  364. controlmesh-0.17.0/controlmesh/multiagent/stack.py +74 -0
  365. controlmesh-0.17.0/controlmesh/multiagent/supervisor.py +676 -0
  366. controlmesh-0.17.0/controlmesh/orchestrator/__init__.py +6 -0
  367. controlmesh-0.17.0/controlmesh/orchestrator/commands.py +816 -0
  368. controlmesh-0.17.0/controlmesh/orchestrator/core.py +1021 -0
  369. controlmesh-0.17.0/controlmesh/orchestrator/directives.py +65 -0
  370. controlmesh-0.17.0/controlmesh/orchestrator/flows.py +896 -0
  371. controlmesh-0.17.0/controlmesh/orchestrator/hooks.py +115 -0
  372. controlmesh-0.17.0/controlmesh/orchestrator/injection.py +273 -0
  373. controlmesh-0.17.0/controlmesh/orchestrator/lifecycle.py +207 -0
  374. controlmesh-0.17.0/controlmesh/orchestrator/observers.py +230 -0
  375. controlmesh-0.17.0/controlmesh/orchestrator/providers.py +221 -0
  376. controlmesh-0.17.0/controlmesh/orchestrator/registry.py +82 -0
  377. controlmesh-0.17.0/controlmesh/orchestrator/selectors/__init__.py +1 -0
  378. controlmesh-0.17.0/controlmesh/orchestrator/selectors/agent_router.py +50 -0
  379. controlmesh-0.17.0/controlmesh/orchestrator/selectors/capability_registry.py +232 -0
  380. controlmesh-0.17.0/controlmesh/orchestrator/selectors/cron_selector.py +222 -0
  381. controlmesh-0.17.0/controlmesh/orchestrator/selectors/model_selector.py +431 -0
  382. controlmesh-0.17.0/controlmesh/orchestrator/selectors/models.py +28 -0
  383. controlmesh-0.17.0/controlmesh/orchestrator/selectors/session_selector.py +157 -0
  384. controlmesh-0.17.0/controlmesh/orchestrator/selectors/settings_selector.py +438 -0
  385. controlmesh-0.17.0/controlmesh/orchestrator/selectors/task_selector.py +253 -0
  386. controlmesh-0.17.0/controlmesh/orchestrator/selectors/utils.py +14 -0
  387. controlmesh-0.17.0/controlmesh/run.py +86 -0
  388. controlmesh-0.17.0/controlmesh/runtime/__init__.py +6 -0
  389. controlmesh-0.17.0/controlmesh/runtime/models.py +27 -0
  390. controlmesh-0.17.0/controlmesh/runtime/store.py +52 -0
  391. controlmesh-0.17.0/controlmesh/security/__init__.py +11 -0
  392. controlmesh-0.17.0/controlmesh/security/content.py +98 -0
  393. controlmesh-0.17.0/controlmesh/security/paths.py +52 -0
  394. controlmesh-0.17.0/controlmesh/session/__init__.py +8 -0
  395. controlmesh-0.17.0/controlmesh/session/key.py +81 -0
  396. controlmesh-0.17.0/controlmesh/session/manager.py +735 -0
  397. controlmesh-0.17.0/controlmesh/session/named.py +391 -0
  398. controlmesh-0.17.0/controlmesh/tasks/__init__.py +1 -0
  399. controlmesh-0.17.0/controlmesh/tasks/hub.py +645 -0
  400. controlmesh-0.17.0/controlmesh/tasks/models.py +135 -0
  401. controlmesh-0.17.0/controlmesh/tasks/registry.py +269 -0
  402. controlmesh-0.17.0/controlmesh/tasks/task_policy.py +169 -0
  403. controlmesh-0.17.0/controlmesh/team/__init__.py +45 -0
  404. controlmesh-0.17.0/controlmesh/team/api.py +279 -0
  405. controlmesh-0.17.0/controlmesh/team/contracts.py +399 -0
  406. controlmesh-0.17.0/controlmesh/team/execution.py +2054 -0
  407. controlmesh-0.17.0/controlmesh/team/live.py +479 -0
  408. controlmesh-0.17.0/controlmesh/team/models.py +1428 -0
  409. controlmesh-0.17.0/controlmesh/team/orchestrator.py +31 -0
  410. controlmesh-0.17.0/controlmesh/team/phases.py +88 -0
  411. controlmesh-0.17.0/controlmesh/team/presentation.py +61 -0
  412. controlmesh-0.17.0/controlmesh/team/runtime_attachment.py +408 -0
  413. controlmesh-0.17.0/controlmesh/team/runtime_control.py +502 -0
  414. controlmesh-0.17.0/controlmesh/team/state/__init__.py +5 -0
  415. controlmesh-0.17.0/controlmesh/team/state/base.py +52 -0
  416. controlmesh-0.17.0/controlmesh/team/state/dispatch.py +123 -0
  417. controlmesh-0.17.0/controlmesh/team/state/events.py +65 -0
  418. controlmesh-0.17.0/controlmesh/team/state/mailbox.py +92 -0
  419. controlmesh-0.17.0/controlmesh/team/state/manifest.py +29 -0
  420. controlmesh-0.17.0/controlmesh/team/state/phase.py +29 -0
  421. controlmesh-0.17.0/controlmesh/team/state/recovery.py +111 -0
  422. controlmesh-0.17.0/controlmesh/team/state/runtime.py +307 -0
  423. controlmesh-0.17.0/controlmesh/team/state/snapshot.py +224 -0
  424. controlmesh-0.17.0/controlmesh/team/state/store.py +318 -0
  425. controlmesh-0.17.0/controlmesh/team/state/tasks.py +180 -0
  426. controlmesh-0.17.0/controlmesh/text/__init__.py +0 -0
  427. controlmesh-0.17.0/controlmesh/text/response_format.py +168 -0
  428. controlmesh-0.17.0/controlmesh/text/tool_event_format.py +54 -0
  429. controlmesh-0.17.0/controlmesh/utils/__init__.py +0 -0
  430. controlmesh-0.17.0/controlmesh/utils/quiet_hours.py +42 -0
  431. controlmesh-0.17.0/controlmesh/webhook/__init__.py +6 -0
  432. controlmesh-0.17.0/controlmesh/webhook/auth.py +172 -0
  433. controlmesh-0.17.0/controlmesh/webhook/manager.py +100 -0
  434. controlmesh-0.17.0/controlmesh/webhook/models.py +143 -0
  435. controlmesh-0.17.0/controlmesh/webhook/observer.py +308 -0
  436. controlmesh-0.17.0/controlmesh/webhook/server.py +171 -0
  437. controlmesh-0.17.0/controlmesh/workspace/__init__.py +43 -0
  438. controlmesh-0.17.0/controlmesh/workspace/cron_tasks.py +234 -0
  439. controlmesh-0.17.0/controlmesh/workspace/init.py +577 -0
  440. controlmesh-0.17.0/controlmesh/workspace/loader.py +26 -0
  441. controlmesh-0.17.0/controlmesh/workspace/paths.py +270 -0
  442. controlmesh-0.17.0/controlmesh/workspace/rules_selector.py +279 -0
  443. controlmesh-0.17.0/controlmesh/workspace/skill_sync.py +430 -0
  444. controlmesh-0.17.0/docs/README.md +112 -0
  445. controlmesh-0.17.0/docs/case-pack/README.md +29 -0
  446. controlmesh-0.17.0/examples/case-pack/README.md +17 -0
  447. controlmesh-0.17.0/plans/README.md +79 -0
  448. controlmesh-0.17.0/plans/tasks/README.md +31 -0
  449. controlmesh-0.17.0/plans/tasks/_template/artifacts/README.md +9 -0
  450. controlmesh-0.17.0/plans/tasks/_template/logs/README.md +8 -0
  451. controlmesh-0.17.0/pyproject.toml +217 -0
@@ -0,0 +1,87 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.egg-info/
6
+ *.egg
7
+ .eggs/
8
+ dist/
9
+ build/
10
+ *.whl
11
+
12
+ # Virtual environments
13
+ .venv/
14
+ venv/
15
+ env/
16
+
17
+ # Type checking & linting
18
+ .mypy_cache/
19
+ .ruff_cache/
20
+ .dmypy.json
21
+ dmypy.json
22
+
23
+ # Testing
24
+ .pytest_cache/
25
+ .coverage
26
+ .coverage.*
27
+ coverage.xml
28
+ htmlcov/
29
+ .hypothesis/
30
+
31
+ # IDE & editors
32
+ .idea/
33
+ .vscode/
34
+ .claude/
35
+ *.swp
36
+ *.swo
37
+ *.swn
38
+ *~
39
+ .project
40
+ .settings/
41
+
42
+ # OS
43
+ .DS_Store
44
+ Thumbs.db
45
+ desktop.ini
46
+
47
+ # Environment & secrets
48
+ .env
49
+ .env.*
50
+
51
+ # Runtime
52
+ *.pid
53
+ *.log
54
+ *.sock
55
+
56
+ # Local harness/controller scratch
57
+ /evidence.yaml
58
+ /proposed_*.md
59
+ /plans/tasks/*
60
+ !/plans/tasks/README.md
61
+ !/plans/tasks/_template/
62
+ !/plans/tasks/_template/**
63
+
64
+ # Local agent/development artifacts (keep out of public releases)
65
+ AGENTS.md
66
+ CLAUDE.md
67
+ GEMINI.md
68
+ TASKMEMORY.md
69
+ **/TASKMEMORY.md
70
+ **/findings.md
71
+ **/progress.md
72
+ **/result.md
73
+ **/task_plan.md
74
+
75
+ # Local release/certification runtime outputs
76
+ /task_artifacts/**/api_runtime_home/
77
+ /task_artifacts/**/fresh_home*/
78
+ /task_artifacts/**/live_drill/config.before.json
79
+ /task_artifacts/**/live_drill/state.env
80
+
81
+ # Local uv workspace lock generated during ad-hoc verification
82
+ /uv.lock
83
+
84
+ # Personal / dev-only (not part of the project)
85
+ start_bot.sh
86
+ python_best_practice.md
87
+ /run.py
@@ -0,0 +1,48 @@
1
+ # Dockerfile.sandbox -- lightweight sandbox for controlmesh CLI execution.
2
+ # Based on Node 22 (Debian bookworm) with Python 3, Claude Code CLI,
3
+ # and Codex CLI pre-installed. The container runs "sleep infinity" so
4
+ # controlmesh can `docker exec` into it on demand.
5
+
6
+ FROM node:22-bookworm-slim
7
+
8
+ ENV DEBIAN_FRONTEND=noninteractive \
9
+ LANG=en_US.UTF-8 \
10
+ LC_ALL=en_US.UTF-8 \
11
+ PIP_BREAK_SYSTEM_PACKAGES=1
12
+
13
+ # System packages: Python, build tools, Git, locale support
14
+ RUN apt-get update \
15
+ && apt-get install -y --no-install-recommends \
16
+ python3 python3-pip python3-venv python3-dev \
17
+ build-essential git curl ca-certificates sudo locales \
18
+ && sed -i '/en_US.UTF-8/s/^# //' /etc/locale.gen && locale-gen \
19
+ && rm -rf /var/lib/apt/lists/*
20
+
21
+ # Chrome/Chromium runtime dependencies for browser-based skills
22
+ # (e.g. patchright, playwright). Only shared libraries -- no browser binary.
23
+ RUN apt-get update \
24
+ && apt-get install -y --no-install-recommends \
25
+ libasound2 libatk-bridge2.0-0 libatk1.0-0 libcairo2 libcups2 \
26
+ libdbus-1-3 libdrm2 libexpat1 libgbm1 libglib2.0-0 libnspr4 \
27
+ libnss3 libpango-1.0-0 libx11-6 libx11-xcb1 libxcb1 \
28
+ libxcomposite1 libxdamage1 libxext6 libxfixes3 libxkbcommon0 \
29
+ libxrandr2 libxshmfence1 \
30
+ fonts-liberation fonts-noto-color-emoji \
31
+ && rm -rf /var/lib/apt/lists/*
32
+
33
+ # Allow pip installs without the "externally managed" guard
34
+ RUN rm -f /usr/lib/python*/EXTERNALLY-MANAGED
35
+
36
+ # Install Claude Code CLI and Codex CLI
37
+ RUN npm install -g @anthropic-ai/claude-code @openai/codex @google/gemini-cli
38
+
39
+ # Prepare a writable data directory
40
+ RUN mkdir -p /data && chown node:node /data
41
+
42
+ # Let the `node` user run sudo without a password (useful for apt inside sandbox)
43
+ RUN echo "node ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/node
44
+
45
+ USER node
46
+ WORKDIR /workspace
47
+
48
+ CMD ["sleep", "infinity"]
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-2026 PleasePrompto
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,354 @@
1
+ Metadata-Version: 2.4
2
+ Name: controlmesh
3
+ Version: 0.17.0
4
+ Summary: ControlMesh brings official coding CLIs into Telegram, Matrix, and Feishu with persistent workspaces, long-running jobs, and production-friendly bot operations.
5
+ Project-URL: Homepage, https://github.com/muqiao215/ControlMesh
6
+ Project-URL: Repository, https://github.com/muqiao215/ControlMesh
7
+ Project-URL: Documentation, https://github.com/muqiao215/ControlMesh
8
+ Project-URL: Issues, https://github.com/muqiao215/ControlMesh/issues
9
+ Project-URL: Changelog, https://github.com/muqiao215/ControlMesh/releases
10
+ Author: muqiao215
11
+ License-Expression: MIT
12
+ License-File: LICENSE
13
+ Keywords: agent,ai,automation,bot,claude,cli,codex,controlmesh,streaming,telegram
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Environment :: Console
16
+ Classifier: Framework :: AsyncIO
17
+ Classifier: Intended Audience :: Developers
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Classifier: Topic :: Communications :: Chat
26
+ Classifier: Topic :: Software Development
27
+ Classifier: Typing :: Typed
28
+ Requires-Python: >=3.11
29
+ Requires-Dist: aiogram<4.0.0,>=3.24.0
30
+ Requires-Dist: aiohttp<4.0.0,>=3.9.0
31
+ Requires-Dist: cronsim>=2.7
32
+ Requires-Dist: filetype>=1.2.0
33
+ Requires-Dist: pillow>=10.0.0
34
+ Requires-Dist: pydantic>=2.12.5
35
+ Requires-Dist: pyyaml>=6.0.3
36
+ Requires-Dist: questionary>=2.1.1
37
+ Requires-Dist: requests>=2.32.0
38
+ Requires-Dist: rich>=14.3.2
39
+ Requires-Dist: tzdata>=2024.1
40
+ Provides-Extra: api
41
+ Requires-Dist: pynacl>=1.6.2; extra == 'api'
42
+ Provides-Extra: dev
43
+ Requires-Dist: matrix-nio>=0.25.0; extra == 'dev'
44
+ Requires-Dist: mypy>=1.19.1; extra == 'dev'
45
+ Requires-Dist: pynacl>=1.6.2; extra == 'dev'
46
+ Requires-Dist: pytest-aiohttp>=1.1.0; extra == 'dev'
47
+ Requires-Dist: pytest-asyncio>=1.3.0; extra == 'dev'
48
+ Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
49
+ Requires-Dist: pytest>=9.0.2; extra == 'dev'
50
+ Requires-Dist: ruff>=0.15.0; extra == 'dev'
51
+ Requires-Dist: time-machine>=3.2.0; extra == 'dev'
52
+ Provides-Extra: lint
53
+ Requires-Dist: mypy>=1.19.1; extra == 'lint'
54
+ Requires-Dist: ruff>=0.15.0; extra == 'lint'
55
+ Provides-Extra: matrix
56
+ Requires-Dist: matrix-nio>=0.25.0; extra == 'matrix'
57
+ Provides-Extra: openai-agents
58
+ Requires-Dist: openai-agents; extra == 'openai-agents'
59
+ Provides-Extra: test
60
+ Requires-Dist: pytest-aiohttp>=1.1.0; extra == 'test'
61
+ Requires-Dist: pytest-asyncio>=1.3.0; extra == 'test'
62
+ Requires-Dist: pytest-cov>=7.0.0; extra == 'test'
63
+ Requires-Dist: pytest>=9.0.2; extra == 'test'
64
+ Requires-Dist: time-machine>=3.2.0; extra == 'test'
65
+ Description-Content-Type: text/markdown
66
+
67
+ # ControlMesh
68
+
69
+ 中文 | [English](#english)
70
+
71
+ ControlMesh is a chat-native task runtime for official coding CLIs, with a
72
+ Feishu-native product path and first-class Telegram and WeChat entrypoints.
73
+
74
+ It turns Claude, Codex, Gemini, and other local command-line agents into a
75
+ long-running work bot that can run background tasks, ask the parent chat for
76
+ missing input, resume the worker, and return results through the same chat.
77
+ Feishu native is the runtime-first product path; Telegram and WeChat/Weixin are
78
+ also existing important entrypoints. Matrix, sub-agents, cron, webhooks, and API
79
+ remain secondary compatibility lanes.
80
+
81
+ ![ControlMesh chat agent overview](docs/assets/controlmesh-feishu-runtime.svg)
82
+
83
+ ## 中文
84
+
85
+ ### 一句话
86
+
87
+ ControlMesh 是一个开源的 chat-native task runtime:把 Claude、Codex、
88
+ Gemini 等官方编码 CLI 接进飞书、Telegram 和微信,让它们像长期在线的任务
89
+ 机器人一样执行工作。
90
+
91
+ 它不是一次性的聊天壳。主线是飞书里的后台任务闭环:创建任务、任务后台执行、
92
+ 任务缺信息时通过 `ask_parent` 回问飞书、父会话恢复任务、结果回到同一聊天上下文。
93
+ Telegram 和微信/WeChat 是项目已有的重要入口;Matrix 保留为次级兼容 transport。
94
+
95
+ ### 适合谁
96
+
97
+ - 想把 Claude、Codex、Gemini 变成飞书、Telegram 或微信里的长期任务机器人。
98
+ - 需要任务超过 30 秒时自动转后台,不阻塞聊天的人。
99
+ - 需要 worker 缺信息时能在聊天里优雅回问并 resume 的团队。
100
+ - 想把机器人部署到 VPS、NAS 或树莓派,做 24/7 工作入口的开发者。
101
+
102
+ ### 产品能力
103
+
104
+ | 能力 | 说明 |
105
+ |---|---|
106
+ | Feishu Native Runtime | 内置 `feishu-auth-kit` 插件,提供扫码创建机器人、CardKit 单卡、权限引导、原生 OAPI 工具 |
107
+ | 后台任务闭环 | `/tasks/create`、`ask_parent`、`resume`、`list` 构成可演示任务 runtime |
108
+ | 官方 CLI worker | 复用 Claude、Codex、Gemini 等官方命令行工具执行任务 |
109
+ | 持久工作区 | 会话、任务记忆、文件、输出和运行状态保存在本机 |
110
+ | 文件交付 | 文本、图片、音频、文档等输出可发回聊天入口 |
111
+ | 多入口触达 | Feishu 是 native/runtime-first 主线;Telegram 和微信/WeChat 是已有重要入口 |
112
+ | 运维友好 | `tasks doctor`、Feishu doctor、systemd、restart、配置校验 |
113
+ | 兼容入口 | Matrix、API、sub-agent、cron、webhook 仍可用,但不是首页主线 |
114
+
115
+ ### Feishu 体验
116
+
117
+ ControlMesh 当前公开主线是 Feishu Native 模式。
118
+
119
+ 最小闭环:
120
+
121
+ - `controlmesh feishu native bootstrap` 进入友好的飞书原生启动入口。
122
+ - 内置 [`feishu-auth-kit`](https://github.com/muqiao215/feishu-auth-kit) 作为 Feishu native plugin,完成扫码创建、凭证写回、权限引导、消息上下文、CardKit 和 retry contract。
123
+ - `feishu-auth-kit` 的公开仓库是上游元能力仓库;ControlMesh 发布包必须包含这套插件,外部 CLI 只作为开发覆盖或故障 fallback。
124
+ - 当 Feishu native 使用 Codex provider 时,agent turn 主路径直接消费内置 plugin 的 `CodexCliRunner`、`AgentEvent` 和 `SingleCardRun`,再由 ControlMesh 负责飞书发送与卡片更新。
125
+ - Feishu 卡片展示任务状态、工具步骤和最终结果。
126
+ - 长任务通过 task runtime 后台执行,缺信息时走 `/tasks/ask_parent`,父会话再 `/tasks/resume`。
127
+ - `/feishu_auth_all` 进行当前 MVP 工具所需权限的批量引导。
128
+ - 已接入第一批只读原生工具:联系人搜索、用户读取、群消息读取、Drive 文件列表。
129
+
130
+ ### Telegram 与微信入口
131
+
132
+ Feishu 是当前 native/runtime-first 主线,但 ControlMesh 不是只服务飞书:
133
+
134
+ - Telegram:成熟的 token-based 入口,适合个人 DM、群组、长期在线任务机器人和文件交付。
135
+ - 微信/WeChat:已有 Weixin iLink 入口,支持扫码登录、长轮询收消息,并在首条微信消息后建立回复上下文。
136
+ - Matrix:保留为 secondary/compatibility transport,适合已经使用 Matrix/Element 的团队。
137
+
138
+ Bridge 模式、Matrix、sub-agent、cron、webhook 和 API 仍是兼容能力;公开产品叙事以
139
+ Feishu native + Telegram + 微信入口为主。
140
+
141
+ ### Runtime primitives
142
+
143
+ 任务闭环的稳定 runtime primitives:
144
+
145
+ - `/tasks/create`
146
+ - `/tasks/resume`
147
+ - `/tasks/ask_parent`
148
+ - `/tasks/list`
149
+ - `/interagent/send`
150
+
151
+ ### 快速开始
152
+
153
+ ```bash
154
+ pipx install controlmesh
155
+ controlmesh
156
+ ```
157
+
158
+ 如果你想直接跟踪 GitHub 最新 `main`,不用等下一次 PyPI 发布:
159
+
160
+ ```bash
161
+ pipx install "git+https://github.com/muqiao215/ControlMesh.git@main"
162
+ controlmesh
163
+ ```
164
+
165
+ 从源码运行:
166
+
167
+ ```bash
168
+ git clone https://github.com/muqiao215/ControlMesh.git
169
+ cd ControlMesh
170
+ python -m venv .venv
171
+ . .venv/bin/activate
172
+ pip install -e ".[matrix,api]"
173
+ controlmesh
174
+ ```
175
+
176
+ 首次启动会引导你完成 CLI 检查、聊天入口配置、时区设置和可选服务安装。
177
+
178
+ ### Feishu 从零配置
179
+
180
+ Native 模式:
181
+
182
+ ```bash
183
+ controlmesh feishu native bootstrap
184
+ controlmesh auth feishu setup
185
+ controlmesh auth feishu register-begin
186
+ controlmesh auth feishu register-poll --device-code "<device_code>" --interval 5 --expires-in 600
187
+ controlmesh auth feishu doctor
188
+ controlmesh auth feishu probe
189
+ ```
190
+
191
+ 任务 runtime:
192
+
193
+ ```bash
194
+ controlmesh tasks doctor
195
+ controlmesh tasks list
196
+ ```
197
+
198
+ ### 常用命令
199
+
200
+ ```bash
201
+ controlmesh status
202
+ controlmesh restart
203
+ controlmesh service install
204
+ controlmesh api enable
205
+ ```
206
+
207
+ ### 文档
208
+
209
+ - 安装:[`docs/installation.md`](docs/installation.md)
210
+ - Feishu 设置:[`docs/feishu-setup.md`](docs/feishu-setup.md)
211
+ - Telegram 设置:[`docs/telegram-setup.md`](docs/telegram-setup.md)
212
+ - 微信/WeChat 设置:[`docs/weixin-setup.md`](docs/weixin-setup.md)
213
+ - Case-pack contract:[`docs/case-pack/README.md`](docs/case-pack/README.md)
214
+ - 文档总览:[`docs/README.md`](docs/README.md)
215
+ - 配置示例:[`config.example.json`](config.example.json)
216
+
217
+ ### 许可证
218
+
219
+ MIT License. See [`LICENSE`](LICENSE).
220
+
221
+ ---
222
+
223
+ ## English
224
+
225
+ ControlMesh is an open-source chat-native task runtime for command-line coding
226
+ agents.
227
+
228
+ It turns official CLIs such as Claude, Codex, and Gemini into long-running chat
229
+ bots that can spawn background tasks, ask the parent chat for missing context,
230
+ resume the worker, and return results through the same conversation. Feishu
231
+ native is the runtime-first product path; Telegram and WeChat/Weixin are also
232
+ existing important entrypoints. Matrix remains a secondary compatibility
233
+ transport.
234
+
235
+ ### Who It Is For
236
+
237
+ - Developers who want Claude, Codex, or Gemini as long-running Feishu,
238
+ Telegram, or WeChat workers.
239
+ - Teams that need a task loop: create, ask-parent, resume, return.
240
+ - Builders who need agents to work with files and commands, not just produce chat text.
241
+ - Operators who want an always-on chat task entrypoint on a VPS, NAS, or Raspberry Pi.
242
+
243
+ ### Features
244
+
245
+ | Feature | Description |
246
+ |---|---|
247
+ | Feishu Native Runtime | Bundled `feishu-auth-kit` plugin for scan-created bots, CardKit cards, permission onboarding, and native OAPI tools |
248
+ | Background task loop | `/tasks/create`, `ask_parent`, `resume`, and `list` form the runtime loop |
249
+ | Official CLI workers | Run Claude, Codex, Gemini, and other local CLI agents |
250
+ | Persistent workspace | Keep sessions, task memory, files, outputs, and runtime state on your machine |
251
+ | File delivery | Return text, images, audio, documents, and generated artifacts to the chat entrypoint |
252
+ | Multi-entrypoint access | Feishu is native/runtime-first; Telegram and WeChat/Weixin are existing important entrypoints |
253
+ | Operations | `tasks doctor`, Feishu doctor, systemd service, restart, config validation |
254
+ | Compatibility lanes | Matrix, API, sub-agents, cron, and webhooks remain available as secondary lanes |
255
+
256
+ ### Feishu Modes
257
+
258
+ **Native mode** is the primary product path.
259
+
260
+ - `controlmesh feishu native bootstrap` is the product-friendly entrypoint.
261
+ - Bundles [`feishu-auth-kit`](https://github.com/muqiao215/feishu-auth-kit)
262
+ as the Feishu native plugin for scan-to-create onboarding, credential
263
+ write-back, permission flows, message context, CardKit, and retry contracts.
264
+ - The standalone `feishu-auth-kit` repo is the upstream reusable capability
265
+ source. ControlMesh includes a vendored plugin copy; external CLI resolution
266
+ is a development override or fallback, not the product dependency.
267
+ - Shows status, tool steps, and final output in a single Feishu card.
268
+ - Provides `/feishu_auth_all` for guided authorization of the current MVP tools.
269
+ - Includes first read-only native tools for contacts, users, group messages, and Drive files.
270
+ - Pairs with the background task runtime so long work can ask the parent chat
271
+ for missing input and then resume cleanly.
272
+
273
+ ### Telegram And WeChat Entrypoints
274
+
275
+ Feishu is the current native/runtime-first path, but ControlMesh is not a
276
+ Feishu-only product:
277
+
278
+ - Telegram: mature token-based entrypoint for personal DMs, groups, always-on
279
+ task bots, and file delivery.
280
+ - WeChat/Weixin: existing Weixin iLink entrypoint with QR login, long-poll
281
+ inbound messages, and reply context after the first WeChat message.
282
+ - Matrix: secondary compatibility transport for teams already using
283
+ Matrix/Element.
284
+
285
+ Bridge mode, Matrix, sub-agents, cron, webhooks, and API remain available. The
286
+ public product story now centers on Feishu native plus Telegram and WeChat
287
+ entrypoints.
288
+
289
+ ### Runtime primitives
290
+
291
+ - `/tasks/create`
292
+ - `/tasks/resume`
293
+ - `/tasks/ask_parent`
294
+ - `/tasks/list`
295
+ - `/interagent/send`
296
+
297
+ ### Quick Start
298
+
299
+ ```bash
300
+ pipx install controlmesh
301
+ controlmesh
302
+ ```
303
+
304
+ To track the latest GitHub `main` directly instead of waiting for the next PyPI release:
305
+
306
+ ```bash
307
+ pipx install "git+https://github.com/muqiao215/ControlMesh.git@main"
308
+ controlmesh
309
+ ```
310
+
311
+ Run from source:
312
+
313
+ ```bash
314
+ git clone https://github.com/muqiao215/ControlMesh.git
315
+ cd ControlMesh
316
+ python -m venv .venv
317
+ . .venv/bin/activate
318
+ pip install -e ".[matrix,api]"
319
+ controlmesh
320
+ ```
321
+
322
+ ### Feishu Setup
323
+
324
+ Native mode:
325
+
326
+ ```bash
327
+ controlmesh feishu native bootstrap
328
+ controlmesh auth feishu setup
329
+ controlmesh auth feishu register-begin
330
+ controlmesh auth feishu register-poll --device-code "<device_code>" --interval 5 --expires-in 600
331
+ controlmesh auth feishu doctor
332
+ controlmesh auth feishu probe
333
+ ```
334
+
335
+ Task runtime:
336
+
337
+ ```bash
338
+ controlmesh tasks doctor
339
+ controlmesh tasks list
340
+ ```
341
+
342
+ ### Documentation
343
+
344
+ - Installation: [`docs/installation.md`](docs/installation.md)
345
+ - Feishu setup: [`docs/feishu-setup.md`](docs/feishu-setup.md)
346
+ - Telegram setup: [`docs/telegram-setup.md`](docs/telegram-setup.md)
347
+ - WeChat/Weixin setup: [`docs/weixin-setup.md`](docs/weixin-setup.md)
348
+ - Case-pack contract: [`docs/case-pack/README.md`](docs/case-pack/README.md)
349
+ - Documentation index: [`docs/README.md`](docs/README.md)
350
+ - Example config: [`config.example.json`](config.example.json)
351
+
352
+ ### License
353
+
354
+ MIT License. See [`LICENSE`](LICENSE).