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.
- controlmesh-0.17.0/.gitignore +87 -0
- controlmesh-0.17.0/Dockerfile.sandbox +48 -0
- controlmesh-0.17.0/LICENSE +21 -0
- controlmesh-0.17.0/PKG-INFO +354 -0
- controlmesh-0.17.0/README.md +288 -0
- controlmesh-0.17.0/config.example.json +238 -0
- controlmesh-0.17.0/controlmesh/__init__.py +3 -0
- controlmesh-0.17.0/controlmesh/__main__.py +474 -0
- controlmesh-0.17.0/controlmesh/_banner.txt +14 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/RULES.md +74 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/config/RULES-all-clis.md +185 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/config/RULES-claude-only.md +133 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/config/RULES-codex-only.md +141 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/config/RULES-gemini-only.md +139 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/JOIN_NOTIFICATION.md +9 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/RULES.md +91 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/cron_tasks/RULES-all-clis.md +153 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/cron_tasks/RULES-claude-only.md +88 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/cron_tasks/RULES-codex-only.md +111 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/cron_tasks/RULES-gemini-only.md +100 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/memory_system/MAINMEMORY.md +13 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/memory_system/RULES.md +51 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/output_to_user/RULES.md +20 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/RULES.md +44 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/LICENSE.txt +202 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/SKILL.md +357 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/references/output-patterns.md +82 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/references/workflows.md +28 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/scripts/init_skill.py +304 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/scripts/package_skill.py +111 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/skills/skill-creator/scripts/quick_validate.py +107 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tasks/RULES.md +21 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/telegram_files/RULES.md +43 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/RULES.md +48 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/_tool_shared.py +71 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/RULES.md +249 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/ask_agent.py +83 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/ask_agent_async.py +114 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/create_agent.py +391 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/edit_shared_knowledge.py +84 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/list_agents.py +72 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/agent_tools/remove_agent.py +70 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/RULES-all-clis.md +156 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/RULES-claude-only.md +106 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/RULES-codex-only.md +118 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/RULES-gemini-only.md +109 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/_shared.py +233 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/cron_add.py +455 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/cron_edit.py +500 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/cron_list.py +83 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/cron_remove.py +153 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/cron_tools/cron_time.py +103 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/media_tools/RULES.md +35 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/media_tools/file_info.py +99 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/media_tools/list_files.py +93 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/media_tools/process_video.py +278 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/media_tools/read_document.py +115 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/media_tools/transcribe_audio.py +156 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/RULES.md +93 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/_shared.py +72 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/ask_parent.py +66 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/cancel_task.py +53 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/create_task.py +114 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/delete_task.py +54 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/list_tasks.py +63 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/task_tools/resume_task.py +67 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/user_tools/RULES.md +31 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/RULES-all-clis.md +318 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/RULES-claude-only.md +236 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/RULES-codex-only.md +258 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/RULES-gemini-only.md +244 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/_shared.py +61 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/webhook_add.py +442 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/webhook_edit.py +282 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/webhook_list.py +73 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/webhook_remove.py +83 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/webhook_rotate_token.py +124 -0
- controlmesh-0.17.0/controlmesh/_home_defaults/workspace/tools/webhook_tools/webhook_test.py +195 -0
- controlmesh-0.17.0/controlmesh/_plugins/__init__.py +1 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/VENDORED_FROM.md +13 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/__init__.py +4 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/__init__.py +161 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/agent_runtime.py +397 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/app_registration.py +220 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/cardkit.py +127 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/claude_adapter.py +57 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/cli.py +1289 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/client.py +155 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/device_flow.py +127 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/domains.py +83 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/message_context.py +162 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/models.py +48 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/native_agent_tools.py +166 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/native_contract.py +259 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/orchestration.py +447 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/owner_policy.py +111 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/probe.py +52 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/runtime_cards.py +219 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/scopes.py +127 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/feishu_auth_kit/token_store.py +147 -0
- controlmesh-0.17.0/controlmesh/_plugins/feishu_auth_kit/runner.py +10 -0
- controlmesh-0.17.0/controlmesh/agents_runtime/__init__.py +12 -0
- controlmesh-0.17.0/controlmesh/agents_runtime/context.py +32 -0
- controlmesh-0.17.0/controlmesh/agents_runtime/manager.py +116 -0
- controlmesh-0.17.0/controlmesh/agents_runtime/progress.py +166 -0
- controlmesh-0.17.0/controlmesh/agents_runtime/results.py +59 -0
- controlmesh-0.17.0/controlmesh/agents_runtime/tools.py +166 -0
- controlmesh-0.17.0/controlmesh/api/__init__.py +24 -0
- controlmesh-0.17.0/controlmesh/api/admin_read.py +214 -0
- controlmesh-0.17.0/controlmesh/api/catalog_http.py +63 -0
- controlmesh-0.17.0/controlmesh/api/crypto.py +50 -0
- controlmesh-0.17.0/controlmesh/api/server.py +665 -0
- controlmesh-0.17.0/controlmesh/background/__init__.py +8 -0
- controlmesh-0.17.0/controlmesh/background/models.py +55 -0
- controlmesh-0.17.0/controlmesh/background/observer.py +279 -0
- controlmesh-0.17.0/controlmesh/bus/__init__.py +16 -0
- controlmesh-0.17.0/controlmesh/bus/adapters.py +303 -0
- controlmesh-0.17.0/controlmesh/bus/bus.py +221 -0
- controlmesh-0.17.0/controlmesh/bus/cron_sanitize.py +27 -0
- controlmesh-0.17.0/controlmesh/bus/envelope.py +90 -0
- controlmesh-0.17.0/controlmesh/bus/lock_pool.py +59 -0
- controlmesh-0.17.0/controlmesh/case_pack/__init__.py +15 -0
- controlmesh-0.17.0/controlmesh/case_pack/__main__.py +58 -0
- controlmesh-0.17.0/controlmesh/case_pack/io.py +14 -0
- controlmesh-0.17.0/controlmesh/case_pack/lint.py +192 -0
- controlmesh-0.17.0/controlmesh/case_pack/models.py +93 -0
- controlmesh-0.17.0/controlmesh/case_pack/render.py +93 -0
- controlmesh-0.17.0/controlmesh/cleanup/__init__.py +5 -0
- controlmesh-0.17.0/controlmesh/cleanup/observer.py +149 -0
- controlmesh-0.17.0/controlmesh/cli/__init__.py +33 -0
- controlmesh-0.17.0/controlmesh/cli/auth.py +432 -0
- controlmesh-0.17.0/controlmesh/cli/base.py +228 -0
- controlmesh-0.17.0/controlmesh/cli/claude_provider.py +219 -0
- controlmesh-0.17.0/controlmesh/cli/coalescer.py +149 -0
- controlmesh-0.17.0/controlmesh/cli/codex_cache.py +126 -0
- controlmesh-0.17.0/controlmesh/cli/codex_cache_observer.py +36 -0
- controlmesh-0.17.0/controlmesh/cli/codex_discovery.py +149 -0
- controlmesh-0.17.0/controlmesh/cli/codex_events.py +315 -0
- controlmesh-0.17.0/controlmesh/cli/codex_hooks.py +230 -0
- controlmesh-0.17.0/controlmesh/cli/codex_provider.py +293 -0
- controlmesh-0.17.0/controlmesh/cli/executor.py +336 -0
- controlmesh-0.17.0/controlmesh/cli/factory.py +32 -0
- controlmesh-0.17.0/controlmesh/cli/gemini_cache.py +61 -0
- controlmesh-0.17.0/controlmesh/cli/gemini_cache_observer.py +54 -0
- controlmesh-0.17.0/controlmesh/cli/gemini_events.py +215 -0
- controlmesh-0.17.0/controlmesh/cli/gemini_provider.py +659 -0
- controlmesh-0.17.0/controlmesh/cli/gemini_utils.py +455 -0
- controlmesh-0.17.0/controlmesh/cli/init_wizard.py +810 -0
- controlmesh-0.17.0/controlmesh/cli/model_cache.py +259 -0
- controlmesh-0.17.0/controlmesh/cli/openai_agents_provider.py +349 -0
- controlmesh-0.17.0/controlmesh/cli/param_resolver.py +137 -0
- controlmesh-0.17.0/controlmesh/cli/process_registry.py +257 -0
- controlmesh-0.17.0/controlmesh/cli/service.py +406 -0
- controlmesh-0.17.0/controlmesh/cli/stream_events.py +196 -0
- controlmesh-0.17.0/controlmesh/cli/timeout_controller.py +223 -0
- controlmesh-0.17.0/controlmesh/cli/types.py +78 -0
- controlmesh-0.17.0/controlmesh/cli_commands/__init__.py +1 -0
- controlmesh-0.17.0/controlmesh/cli_commands/agents.py +318 -0
- controlmesh-0.17.0/controlmesh/cli_commands/api_cmd.py +170 -0
- controlmesh-0.17.0/controlmesh/cli_commands/auth.py +1357 -0
- controlmesh-0.17.0/controlmesh/cli_commands/docker.py +515 -0
- controlmesh-0.17.0/controlmesh/cli_commands/feishu.py +93 -0
- controlmesh-0.17.0/controlmesh/cli_commands/install.py +91 -0
- controlmesh-0.17.0/controlmesh/cli_commands/lifecycle.py +288 -0
- controlmesh-0.17.0/controlmesh/cli_commands/runtime.py +212 -0
- controlmesh-0.17.0/controlmesh/cli_commands/service.py +92 -0
- controlmesh-0.17.0/controlmesh/cli_commands/status.py +214 -0
- controlmesh-0.17.0/controlmesh/cli_commands/tasks.py +137 -0
- controlmesh-0.17.0/controlmesh/commands.py +52 -0
- controlmesh-0.17.0/controlmesh/config.py +605 -0
- controlmesh-0.17.0/controlmesh/config_reload.py +226 -0
- controlmesh-0.17.0/controlmesh/cron/__init__.py +6 -0
- controlmesh-0.17.0/controlmesh/cron/dependency_queue.py +163 -0
- controlmesh-0.17.0/controlmesh/cron/execution.py +298 -0
- controlmesh-0.17.0/controlmesh/cron/manager.py +207 -0
- controlmesh-0.17.0/controlmesh/cron/observer.py +412 -0
- controlmesh-0.17.0/controlmesh/cron/policy.py +119 -0
- controlmesh-0.17.0/controlmesh/errors.py +37 -0
- controlmesh-0.17.0/controlmesh/files/__init__.py +1 -0
- controlmesh-0.17.0/controlmesh/files/allowed_roots.py +27 -0
- controlmesh-0.17.0/controlmesh/files/browser.py +28 -0
- controlmesh-0.17.0/controlmesh/files/image_processor.py +76 -0
- controlmesh-0.17.0/controlmesh/files/prompt.py +64 -0
- controlmesh-0.17.0/controlmesh/files/storage.py +86 -0
- controlmesh-0.17.0/controlmesh/files/tags.py +157 -0
- controlmesh-0.17.0/controlmesh/gateways/__init__.py +9 -0
- controlmesh-0.17.0/controlmesh/gateways/config.py +95 -0
- controlmesh-0.17.0/controlmesh/gateways/types.py +8 -0
- controlmesh-0.17.0/controlmesh/heartbeat/__init__.py +5 -0
- controlmesh-0.17.0/controlmesh/heartbeat/observer.py +346 -0
- controlmesh-0.17.0/controlmesh/history/__init__.py +6 -0
- controlmesh-0.17.0/controlmesh/history/catalog.py +325 -0
- controlmesh-0.17.0/controlmesh/history/index.py +1341 -0
- controlmesh-0.17.0/controlmesh/history/models.py +39 -0
- controlmesh-0.17.0/controlmesh/history/store.py +52 -0
- controlmesh-0.17.0/controlmesh/i18n/__init__.py +82 -0
- controlmesh-0.17.0/controlmesh/i18n/de/chat.toml +459 -0
- controlmesh-0.17.0/controlmesh/i18n/de/cli.toml +286 -0
- controlmesh-0.17.0/controlmesh/i18n/de/commands.toml +29 -0
- controlmesh-0.17.0/controlmesh/i18n/de/wizard.toml +182 -0
- controlmesh-0.17.0/controlmesh/i18n/en/chat.toml +458 -0
- controlmesh-0.17.0/controlmesh/i18n/en/cli.toml +286 -0
- controlmesh-0.17.0/controlmesh/i18n/en/commands.toml +29 -0
- controlmesh-0.17.0/controlmesh/i18n/en/wizard.toml +182 -0
- controlmesh-0.17.0/controlmesh/i18n/es/chat.toml +459 -0
- controlmesh-0.17.0/controlmesh/i18n/es/cli.toml +286 -0
- controlmesh-0.17.0/controlmesh/i18n/es/commands.toml +29 -0
- controlmesh-0.17.0/controlmesh/i18n/es/wizard.toml +182 -0
- controlmesh-0.17.0/controlmesh/i18n/fr/chat.toml +459 -0
- controlmesh-0.17.0/controlmesh/i18n/fr/cli.toml +286 -0
- controlmesh-0.17.0/controlmesh/i18n/fr/commands.toml +29 -0
- controlmesh-0.17.0/controlmesh/i18n/fr/wizard.toml +182 -0
- controlmesh-0.17.0/controlmesh/i18n/loader.py +131 -0
- controlmesh-0.17.0/controlmesh/i18n/nl/chat.toml +459 -0
- controlmesh-0.17.0/controlmesh/i18n/nl/cli.toml +286 -0
- controlmesh-0.17.0/controlmesh/i18n/nl/commands.toml +29 -0
- controlmesh-0.17.0/controlmesh/i18n/nl/wizard.toml +182 -0
- controlmesh-0.17.0/controlmesh/i18n/pt/chat.toml +459 -0
- controlmesh-0.17.0/controlmesh/i18n/pt/cli.toml +286 -0
- controlmesh-0.17.0/controlmesh/i18n/pt/commands.toml +29 -0
- controlmesh-0.17.0/controlmesh/i18n/pt/wizard.toml +182 -0
- controlmesh-0.17.0/controlmesh/i18n/ru/chat.toml +459 -0
- controlmesh-0.17.0/controlmesh/i18n/ru/cli.toml +286 -0
- controlmesh-0.17.0/controlmesh/i18n/ru/commands.toml +29 -0
- controlmesh-0.17.0/controlmesh/i18n/ru/wizard.toml +182 -0
- controlmesh-0.17.0/controlmesh/infra/__init__.py +22 -0
- controlmesh-0.17.0/controlmesh/infra/atomic_io.py +51 -0
- controlmesh-0.17.0/controlmesh/infra/base_observer.py +55 -0
- controlmesh-0.17.0/controlmesh/infra/base_task_observer.py +68 -0
- controlmesh-0.17.0/controlmesh/infra/boot_id.py +83 -0
- controlmesh-0.17.0/controlmesh/infra/docker.py +460 -0
- controlmesh-0.17.0/controlmesh/infra/docker_extras.py +292 -0
- controlmesh-0.17.0/controlmesh/infra/env_secrets.py +109 -0
- controlmesh-0.17.0/controlmesh/infra/file_watcher.py +73 -0
- controlmesh-0.17.0/controlmesh/infra/fs.py +57 -0
- controlmesh-0.17.0/controlmesh/infra/inflight.py +113 -0
- controlmesh-0.17.0/controlmesh/infra/install.py +99 -0
- controlmesh-0.17.0/controlmesh/infra/json_store.py +33 -0
- controlmesh-0.17.0/controlmesh/infra/pidlock.py +145 -0
- controlmesh-0.17.0/controlmesh/infra/platform.py +17 -0
- controlmesh-0.17.0/controlmesh/infra/process_tree.py +231 -0
- controlmesh-0.17.0/controlmesh/infra/recovery.py +104 -0
- controlmesh-0.17.0/controlmesh/infra/restart.py +63 -0
- controlmesh-0.17.0/controlmesh/infra/service.py +65 -0
- controlmesh-0.17.0/controlmesh/infra/service_base.py +122 -0
- controlmesh-0.17.0/controlmesh/infra/service_linux.py +258 -0
- controlmesh-0.17.0/controlmesh/infra/service_logs.py +101 -0
- controlmesh-0.17.0/controlmesh/infra/service_macos.py +238 -0
- controlmesh-0.17.0/controlmesh/infra/service_windows.py +309 -0
- controlmesh-0.17.0/controlmesh/infra/startup_state.py +89 -0
- controlmesh-0.17.0/controlmesh/infra/task_runner.py +132 -0
- controlmesh-0.17.0/controlmesh/infra/updater.py +450 -0
- controlmesh-0.17.0/controlmesh/infra/version.py +186 -0
- controlmesh-0.17.0/controlmesh/integrations/__init__.py +2 -0
- controlmesh-0.17.0/controlmesh/integrations/feishu_auth_kit.py +139 -0
- controlmesh-0.17.0/controlmesh/log_context.py +69 -0
- controlmesh-0.17.0/controlmesh/logging_config.py +137 -0
- controlmesh-0.17.0/controlmesh/memory/__init__.py +80 -0
- controlmesh-0.17.0/controlmesh/memory/commands.py +94 -0
- controlmesh-0.17.0/controlmesh/memory/dreaming.py +435 -0
- controlmesh-0.17.0/controlmesh/memory/models.py +167 -0
- controlmesh-0.17.0/controlmesh/memory/promotion.py +195 -0
- controlmesh-0.17.0/controlmesh/memory/search.py +245 -0
- controlmesh-0.17.0/controlmesh/memory/store.py +97 -0
- controlmesh-0.17.0/controlmesh/messenger/__init__.py +28 -0
- controlmesh-0.17.0/controlmesh/messenger/callback_router.py +98 -0
- controlmesh-0.17.0/controlmesh/messenger/capabilities.py +48 -0
- controlmesh-0.17.0/controlmesh/messenger/commands.py +67 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/__init__.py +6 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/__init__.py +84 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/app_info.py +173 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/auth_cards.py +107 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/brand.py +93 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/card_auth.py +148 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/card_auth_context.py +38 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/card_auth_runner.py +266 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/device_flow.py +168 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/errors.py +92 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/feishu_card_sender.py +62 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/native_auth_all_runner.py +239 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/orchestration_runner.py +458 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/runtime_auth.py +148 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/runtime_continuation.py +80 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/token_store.py +86 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/auth/uat_client.py +164 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/bot.py +1834 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/bundled_runtime.py +84 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/card_stream.py +440 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/id_map.py +100 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/inbound.py +105 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/long_connection.py +317 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/media.py +311 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/media_meta.py +143 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/message_context.py +304 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/native_tools/__init__.py +29 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/native_tools/agent_runtime.py +23 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/native_tools/client.py +67 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/native_tools/executor.py +518 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/progress_preview.py +171 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/sender.py +111 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/settings_card.py +492 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/startup.py +53 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/tool_auth.py +147 -0
- controlmesh-0.17.0/controlmesh/messenger/feishu/transport.py +177 -0
- controlmesh-0.17.0/controlmesh/messenger/matrix/__init__.py +1 -0
- controlmesh-0.17.0/controlmesh/messenger/matrix/bot.py +1174 -0
- controlmesh-0.17.0/controlmesh/messenger/matrix/buttons.py +142 -0
- controlmesh-0.17.0/controlmesh/messenger/matrix/credentials.py +103 -0
- controlmesh-0.17.0/controlmesh/messenger/matrix/file_browser.py +113 -0
- controlmesh-0.17.0/controlmesh/messenger/matrix/formatting.py +126 -0
- controlmesh-0.17.0/controlmesh/messenger/matrix/id_map.py +69 -0
- controlmesh-0.17.0/controlmesh/messenger/matrix/media.py +189 -0
- controlmesh-0.17.0/controlmesh/messenger/matrix/sender.py +230 -0
- controlmesh-0.17.0/controlmesh/messenger/matrix/startup.py +83 -0
- controlmesh-0.17.0/controlmesh/messenger/matrix/streaming.py +109 -0
- controlmesh-0.17.0/controlmesh/messenger/matrix/transport.py +256 -0
- controlmesh-0.17.0/controlmesh/messenger/matrix/typing.py +64 -0
- controlmesh-0.17.0/controlmesh/messenger/multi.py +163 -0
- controlmesh-0.17.0/controlmesh/messenger/notifications.py +41 -0
- controlmesh-0.17.0/controlmesh/messenger/protocol.py +72 -0
- controlmesh-0.17.0/controlmesh/messenger/registry.py +127 -0
- controlmesh-0.17.0/controlmesh/messenger/send_opts.py +14 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/__init__.py +1 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/abort.py +92 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/app.py +1600 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/buttons.py +140 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/callbacks.py +120 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/chat_tracker.py +135 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/controlmesh_images/logo_text.png +0 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/controlmesh_images/welcome.png +0 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/dedup.py +78 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/edit_streaming.py +422 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/file_browser.py +123 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/formatting.py +209 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/handlers.py +205 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/media.py +265 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/message_dispatch.py +241 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/middleware.py +416 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/sender.py +294 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/startup.py +149 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/streaming.py +170 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/topic.py +101 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/transport.py +328 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/typing.py +56 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/upgrade_handler.py +212 -0
- controlmesh-0.17.0/controlmesh/messenger/telegram/welcome.py +142 -0
- controlmesh-0.17.0/controlmesh/messenger/weixin/__init__.py +25 -0
- controlmesh-0.17.0/controlmesh/messenger/weixin/api.py +191 -0
- controlmesh-0.17.0/controlmesh/messenger/weixin/auth_state.py +41 -0
- controlmesh-0.17.0/controlmesh/messenger/weixin/auth_store.py +239 -0
- controlmesh-0.17.0/controlmesh/messenger/weixin/bot.py +300 -0
- controlmesh-0.17.0/controlmesh/messenger/weixin/id_map.py +61 -0
- controlmesh-0.17.0/controlmesh/messenger/weixin/runtime.py +227 -0
- controlmesh-0.17.0/controlmesh/messenger/weixin/runtime_state.py +99 -0
- controlmesh-0.17.0/controlmesh/messenger/weixin/transport.py +31 -0
- controlmesh-0.17.0/controlmesh/multiagent/__init__.py +8 -0
- controlmesh-0.17.0/controlmesh/multiagent/bus.py +446 -0
- controlmesh-0.17.0/controlmesh/multiagent/commands.py +111 -0
- controlmesh-0.17.0/controlmesh/multiagent/health.py +55 -0
- controlmesh-0.17.0/controlmesh/multiagent/internal_api.py +540 -0
- controlmesh-0.17.0/controlmesh/multiagent/models.py +101 -0
- controlmesh-0.17.0/controlmesh/multiagent/registry.py +109 -0
- controlmesh-0.17.0/controlmesh/multiagent/shared_knowledge.py +129 -0
- controlmesh-0.17.0/controlmesh/multiagent/stack.py +74 -0
- controlmesh-0.17.0/controlmesh/multiagent/supervisor.py +676 -0
- controlmesh-0.17.0/controlmesh/orchestrator/__init__.py +6 -0
- controlmesh-0.17.0/controlmesh/orchestrator/commands.py +816 -0
- controlmesh-0.17.0/controlmesh/orchestrator/core.py +1021 -0
- controlmesh-0.17.0/controlmesh/orchestrator/directives.py +65 -0
- controlmesh-0.17.0/controlmesh/orchestrator/flows.py +896 -0
- controlmesh-0.17.0/controlmesh/orchestrator/hooks.py +115 -0
- controlmesh-0.17.0/controlmesh/orchestrator/injection.py +273 -0
- controlmesh-0.17.0/controlmesh/orchestrator/lifecycle.py +207 -0
- controlmesh-0.17.0/controlmesh/orchestrator/observers.py +230 -0
- controlmesh-0.17.0/controlmesh/orchestrator/providers.py +221 -0
- controlmesh-0.17.0/controlmesh/orchestrator/registry.py +82 -0
- controlmesh-0.17.0/controlmesh/orchestrator/selectors/__init__.py +1 -0
- controlmesh-0.17.0/controlmesh/orchestrator/selectors/agent_router.py +50 -0
- controlmesh-0.17.0/controlmesh/orchestrator/selectors/capability_registry.py +232 -0
- controlmesh-0.17.0/controlmesh/orchestrator/selectors/cron_selector.py +222 -0
- controlmesh-0.17.0/controlmesh/orchestrator/selectors/model_selector.py +431 -0
- controlmesh-0.17.0/controlmesh/orchestrator/selectors/models.py +28 -0
- controlmesh-0.17.0/controlmesh/orchestrator/selectors/session_selector.py +157 -0
- controlmesh-0.17.0/controlmesh/orchestrator/selectors/settings_selector.py +438 -0
- controlmesh-0.17.0/controlmesh/orchestrator/selectors/task_selector.py +253 -0
- controlmesh-0.17.0/controlmesh/orchestrator/selectors/utils.py +14 -0
- controlmesh-0.17.0/controlmesh/run.py +86 -0
- controlmesh-0.17.0/controlmesh/runtime/__init__.py +6 -0
- controlmesh-0.17.0/controlmesh/runtime/models.py +27 -0
- controlmesh-0.17.0/controlmesh/runtime/store.py +52 -0
- controlmesh-0.17.0/controlmesh/security/__init__.py +11 -0
- controlmesh-0.17.0/controlmesh/security/content.py +98 -0
- controlmesh-0.17.0/controlmesh/security/paths.py +52 -0
- controlmesh-0.17.0/controlmesh/session/__init__.py +8 -0
- controlmesh-0.17.0/controlmesh/session/key.py +81 -0
- controlmesh-0.17.0/controlmesh/session/manager.py +735 -0
- controlmesh-0.17.0/controlmesh/session/named.py +391 -0
- controlmesh-0.17.0/controlmesh/tasks/__init__.py +1 -0
- controlmesh-0.17.0/controlmesh/tasks/hub.py +645 -0
- controlmesh-0.17.0/controlmesh/tasks/models.py +135 -0
- controlmesh-0.17.0/controlmesh/tasks/registry.py +269 -0
- controlmesh-0.17.0/controlmesh/tasks/task_policy.py +169 -0
- controlmesh-0.17.0/controlmesh/team/__init__.py +45 -0
- controlmesh-0.17.0/controlmesh/team/api.py +279 -0
- controlmesh-0.17.0/controlmesh/team/contracts.py +399 -0
- controlmesh-0.17.0/controlmesh/team/execution.py +2054 -0
- controlmesh-0.17.0/controlmesh/team/live.py +479 -0
- controlmesh-0.17.0/controlmesh/team/models.py +1428 -0
- controlmesh-0.17.0/controlmesh/team/orchestrator.py +31 -0
- controlmesh-0.17.0/controlmesh/team/phases.py +88 -0
- controlmesh-0.17.0/controlmesh/team/presentation.py +61 -0
- controlmesh-0.17.0/controlmesh/team/runtime_attachment.py +408 -0
- controlmesh-0.17.0/controlmesh/team/runtime_control.py +502 -0
- controlmesh-0.17.0/controlmesh/team/state/__init__.py +5 -0
- controlmesh-0.17.0/controlmesh/team/state/base.py +52 -0
- controlmesh-0.17.0/controlmesh/team/state/dispatch.py +123 -0
- controlmesh-0.17.0/controlmesh/team/state/events.py +65 -0
- controlmesh-0.17.0/controlmesh/team/state/mailbox.py +92 -0
- controlmesh-0.17.0/controlmesh/team/state/manifest.py +29 -0
- controlmesh-0.17.0/controlmesh/team/state/phase.py +29 -0
- controlmesh-0.17.0/controlmesh/team/state/recovery.py +111 -0
- controlmesh-0.17.0/controlmesh/team/state/runtime.py +307 -0
- controlmesh-0.17.0/controlmesh/team/state/snapshot.py +224 -0
- controlmesh-0.17.0/controlmesh/team/state/store.py +318 -0
- controlmesh-0.17.0/controlmesh/team/state/tasks.py +180 -0
- controlmesh-0.17.0/controlmesh/text/__init__.py +0 -0
- controlmesh-0.17.0/controlmesh/text/response_format.py +168 -0
- controlmesh-0.17.0/controlmesh/text/tool_event_format.py +54 -0
- controlmesh-0.17.0/controlmesh/utils/__init__.py +0 -0
- controlmesh-0.17.0/controlmesh/utils/quiet_hours.py +42 -0
- controlmesh-0.17.0/controlmesh/webhook/__init__.py +6 -0
- controlmesh-0.17.0/controlmesh/webhook/auth.py +172 -0
- controlmesh-0.17.0/controlmesh/webhook/manager.py +100 -0
- controlmesh-0.17.0/controlmesh/webhook/models.py +143 -0
- controlmesh-0.17.0/controlmesh/webhook/observer.py +308 -0
- controlmesh-0.17.0/controlmesh/webhook/server.py +171 -0
- controlmesh-0.17.0/controlmesh/workspace/__init__.py +43 -0
- controlmesh-0.17.0/controlmesh/workspace/cron_tasks.py +234 -0
- controlmesh-0.17.0/controlmesh/workspace/init.py +577 -0
- controlmesh-0.17.0/controlmesh/workspace/loader.py +26 -0
- controlmesh-0.17.0/controlmesh/workspace/paths.py +270 -0
- controlmesh-0.17.0/controlmesh/workspace/rules_selector.py +279 -0
- controlmesh-0.17.0/controlmesh/workspace/skill_sync.py +430 -0
- controlmesh-0.17.0/docs/README.md +112 -0
- controlmesh-0.17.0/docs/case-pack/README.md +29 -0
- controlmesh-0.17.0/examples/case-pack/README.md +17 -0
- controlmesh-0.17.0/plans/README.md +79 -0
- controlmesh-0.17.0/plans/tasks/README.md +31 -0
- controlmesh-0.17.0/plans/tasks/_template/artifacts/README.md +9 -0
- controlmesh-0.17.0/plans/tasks/_template/logs/README.md +8 -0
- 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
|
+

|
|
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).
|