polyrob 0.5.0__py3-none-any.whl
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.
- agents/README.md +453 -0
- agents/__init__.py +164 -0
- agents/base_agent.py +743 -0
- agents/personality/character.py +119 -0
- agents/personality/character_manager.py +309 -0
- agents/personality/characters/rob.character.json +56 -0
- agents/personality/characters/trump.character.json +63 -0
- agents/personality/persona_render.py +78 -0
- agents/personality/persona_resolver.py +115 -0
- agents/prompt/__init__.py +58 -0
- agents/prompt/base_prompt.py +92 -0
- agents/prompt/system.py +417 -0
- agents/task/README_PATH_MANAGEMENT.md +141 -0
- agents/task/__init__.py +162 -0
- agents/task/agent/__init__.py +70 -0
- agents/task/agent/agent_state.py +408 -0
- agents/task/agent/async_delegation.py +274 -0
- agents/task/agent/autonomy_state.py +275 -0
- agents/task/agent/conversation.py +75 -0
- agents/task/agent/core/__init__.py +6 -0
- agents/task/agent/core/aux_metering.py +61 -0
- agents/task/agent/core/background_review.py +157 -0
- agents/task/agent/core/construction.py +1179 -0
- agents/task/agent/core/conversational_exit.py +49 -0
- agents/task/agent/core/correspondent_gate.py +227 -0
- agents/task/agent/core/curator.py +246 -0
- agents/task/agent/core/episodic_digest.py +103 -0
- agents/task/agent/core/error_recovery.py +480 -0
- agents/task/agent/core/history_io.py +257 -0
- agents/task/agent/core/llm_provisioning.py +287 -0
- agents/task/agent/core/llm_runner.py +547 -0
- agents/task/agent/core/logging_io.py +276 -0
- agents/task/agent/core/loop_detection.py +262 -0
- agents/task/agent/core/memory_prefetch.py +325 -0
- agents/task/agent/core/memory_writer.py +667 -0
- agents/task/agent/core/model_introspection.py +82 -0
- agents/task/agent/core/model_swap.py +177 -0
- agents/task/agent/core/next_action_internal.py +1331 -0
- agents/task/agent/core/output_validation.py +303 -0
- agents/task/agent/core/project_context.py +272 -0
- agents/task/agent/core/resources.py +93 -0
- agents/task/agent/core/result_processing.py +389 -0
- agents/task/agent/core/run_loop.py +661 -0
- agents/task/agent/core/safety_lifecycle.py +228 -0
- agents/task/agent/core/secret_guard.py +293 -0
- agents/task/agent/core/self_wake.py +280 -0
- agents/task/agent/core/session_metadata.py +104 -0
- agents/task/agent/core/step.py +781 -0
- agents/task/agent/core/step_execution.py +398 -0
- agents/task/agent/core/step_telemetry.py +222 -0
- agents/task/agent/core/test_aux_metering.py +50 -0
- agents/task/agent/core/test_billing_failover.py +68 -0
- agents/task/agent/core/test_fatal_error_classifier.py +38 -0
- agents/task/agent/core/test_judge_validation.py +275 -0
- agents/task/agent/core/test_model_swap.py +190 -0
- agents/task/agent/core/test_reflection_offload.py +54 -0
- agents/task/agent/core/turn_input.py +8 -0
- agents/task/agent/core/untrusted_wrap.py +103 -0
- agents/task/agent/core/user_ingress.py +228 -0
- agents/task/agent/hitl_manager.py +396 -0
- agents/task/agent/log_sanitize.py +36 -0
- agents/task/agent/message_manager/config.py +97 -0
- agents/task/agent/message_manager/service.py +758 -0
- agents/task/agent/message_manager/tests.py +305 -0
- agents/task/agent/message_manager/tool_call_builder.py +539 -0
- agents/task/agent/message_manager/tool_message_repair.py +364 -0
- agents/task/agent/message_manager/views.py +143 -0
- agents/task/agent/messages/__init__.py +8 -0
- agents/task/agent/messages/builders.py +309 -0
- agents/task/agent/messages/compactor.py +611 -0
- agents/task/agent/messages/context_references.py +271 -0
- agents/task/agent/messages/filters.py +333 -0
- agents/task/agent/messages/guidance.py +328 -0
- agents/task/agent/messages/persistence.py +448 -0
- agents/task/agent/messages/retrieval.py +506 -0
- agents/task/agent/messages/sqlite_persistence.py +85 -0
- agents/task/agent/messages/test_compaction_upgrade.py +349 -0
- agents/task/agent/messages/test_persistence_subdir_fix.py +28 -0
- agents/task/agent/messages/test_sqlite_persistence.py +54 -0
- agents/task/agent/messages/token_counter.py +532 -0
- agents/task/agent/orchestrator.py +776 -0
- agents/task/agent/profile_manager.py +105 -0
- agents/task/agent/profile_registry.py +173 -0
- agents/task/agent/prompts.py +1090 -0
- agents/task/agent/scenario_registry.py +226 -0
- agents/task/agent/service.py +509 -0
- agents/task/agent/session.py +984 -0
- agents/task/agent/skill_discovery.py +110 -0
- agents/task/agent/skill_frontmatter.py +94 -0
- agents/task/agent/skill_manager.py +1201 -0
- agents/task/agent/skill_store.py +627 -0
- agents/task/agent/skill_validation.py +56 -0
- agents/task/agent/skill_writer.py +492 -0
- agents/task/agent/sub_agent_manager.py +1137 -0
- agents/task/agent/test_session_disk_recovery.py +34 -0
- agents/task/agent/tests.py +513 -0
- agents/task/agent/tool_call_tracker.py +511 -0
- agents/task/agent/views.py +469 -0
- agents/task/config.py +432 -0
- agents/task/constants.py +1384 -0
- agents/task/flag_defaults.py +63 -0
- agents/task/goals/__init__.py +1 -0
- agents/task/goals/autonomy_marker.py +28 -0
- agents/task/goals/board.py +690 -0
- agents/task/goals/completion_judge.py +247 -0
- agents/task/goals/context.py +62 -0
- agents/task/goals/dispatcher.py +848 -0
- agents/task/goals/escalation.py +102 -0
- agents/task/goals/planner.py +114 -0
- agents/task/logging_config.py +155 -0
- agents/task/path.py +991 -0
- agents/task/robust_parse_config.py +400 -0
- agents/task/runtime/__init__.py +0 -0
- agents/task/runtime/run_as_session.py +130 -0
- agents/task/runtime_safety.py +308 -0
- agents/task/session/__init__.py +5 -0
- agents/task/session/browser_pool.py +130 -0
- agents/task/session/cleanup.py +612 -0
- agents/task/session/execution.py +397 -0
- agents/task/session/feed.py +200 -0
- agents/task/session/hitl_ingress.py +201 -0
- agents/task/session/hooks.py +83 -0
- agents/task/session/multi_agent.py +243 -0
- agents/task/session/workspace.py +91 -0
- agents/task/session_registry.py +91 -0
- agents/task/session_route.py +35 -0
- agents/task/sqlite_session_registry.py +261 -0
- agents/task/surface_config.py +185 -0
- agents/task/telemetry/__init__.py +58 -0
- agents/task/telemetry/event_log.py +180 -0
- agents/task/telemetry/formatters.py +642 -0
- agents/task/telemetry/manager.py +571 -0
- agents/task/telemetry/memory_events.py +66 -0
- agents/task/telemetry/self_events.py +53 -0
- agents/task/telemetry/sequence.py +160 -0
- agents/task/telemetry/service.py +1265 -0
- agents/task/telemetry/views.py +882 -0
- agents/task/templates.py +98 -0
- agents/task/test_aux_chain.py +151 -0
- agents/task/test_aux_router.py +41 -0
- agents/task/tests/test_parse_robustness.py +170 -0
- agents/task/tool_defaults.py +110 -0
- agents/task/utils.py +762 -0
- agents/task/utils_json.py +768 -0
- agents/task/utils_webview.py +86 -0
- agents/task/workspace_context.py +229 -0
- agents/task_agent_lite.py +2398 -0
- api/README.md +683 -0
- api/TASK_API_DOCS.md +151 -0
- api/__init__.py +0 -0
- api/a2a/__init__.py +37 -0
- api/a2a/agent_card.py +337 -0
- api/a2a/client.py +657 -0
- api/a2a/endpoints.py +375 -0
- api/a2a/models.py +268 -0
- api/a2a/streaming.py +419 -0
- api/a2a/task_handler.py +929 -0
- api/admin_endpoints.py +1584 -0
- api/app.py +923 -0
- api/auth_constants.py +28 -0
- api/auth_endpoints.py +402 -0
- api/auth_state.py +36 -0
- api/chat_via_task.py +42 -0
- api/conversation_manager.py +231 -0
- api/dependencies.py +186 -0
- api/eip8004_endpoints.py +452 -0
- api/hyperliquid_models.py +174 -0
- api/hyperliquid_routes.py +450 -0
- api/interfaces.py +207 -0
- api/jwt_middleware.py +83 -0
- api/kb/__init__.py +1 -0
- api/kb/endpoints.py +314 -0
- api/mcp_models.py +279 -0
- api/mcp_routes.py +438 -0
- api/middleware.py +526 -0
- api/models.py +176 -0
- api/openai_compat/__init__.py +0 -0
- api/openai_compat/model_map.py +25 -0
- api/openai_compat/models.py +59 -0
- api/openai_compat/router.py +140 -0
- api/payment_endpoints.py +444 -0
- api/payment_verification.py +138 -0
- api/polymarket_models.py +155 -0
- api/polymarket_routes.py +501 -0
- api/pricing_endpoints.py +89 -0
- api/session_routing.py +54 -0
- api/skill_endpoints.py +453 -0
- api/task_http_api.py +1856 -0
- api/webhooks.py +52 -0
- api/x402_endpoints.py +280 -0
- avatar/README.md +44 -0
- avatar/__init__.py +1 -0
- avatar/config/rob.json +7 -0
- avatar/mindprint.js +395 -0
- avatar/renders/rob.meta.json +20 -0
- avatar/renders/rob.png +0 -0
- avatar/studio.html +373 -0
- avatar/webview/avatar-live.js +44 -0
- cli/README.md +89 -0
- cli/__init__.py +0 -0
- cli/cli_surface.py +67 -0
- cli/commands/__init__.py +0 -0
- cli/commands/_bootstrap.py +49 -0
- cli/commands/_errors.py +53 -0
- cli/commands/chat.py +973 -0
- cli/commands/config.py +100 -0
- cli/commands/dashboard.py +103 -0
- cli/commands/doctor.py +222 -0
- cli/commands/email.py +174 -0
- cli/commands/gateway.py +346 -0
- cli/commands/goals.py +509 -0
- cli/commands/init.py +276 -0
- cli/commands/journey.py +30 -0
- cli/commands/kb.py +280 -0
- cli/commands/model.py +107 -0
- cli/commands/owner.py +431 -0
- cli/commands/pfp.py +232 -0
- cli/commands/run.py +414 -0
- cli/commands/serve.py +41 -0
- cli/commands/session.py +684 -0
- cli/commands/skill_install.py +786 -0
- cli/commands/skills.py +128 -0
- cli/commands/subagents.py +100 -0
- cli/commands/surface.py +81 -0
- cli/commands/telegram.py +185 -0
- cli/commands/todos.py +209 -0
- cli/commands/tools.py +102 -0
- cli/commands/update.py +316 -0
- cli/commands/whatsapp.py +175 -0
- cli/config_store.py +276 -0
- cli/gitignore.py +43 -0
- cli/inventory.py +46 -0
- cli/keys.py +101 -0
- cli/persona.py +17 -0
- cli/polyrob.py +137 -0
- cli/ui/__init__.py +64 -0
- cli/ui/activity.py +141 -0
- cli/ui/app.py +538 -0
- cli/ui/banner.py +233 -0
- cli/ui/blocks.py +534 -0
- cli/ui/bootstrap_notice.py +47 -0
- cli/ui/commands/__init__.py +41 -0
- cli/ui/commands/h_cron.py +64 -0
- cli/ui/commands/h_journey.py +164 -0
- cli/ui/commands/h_kb.py +121 -0
- cli/ui/commands/h_learn.py +100 -0
- cli/ui/commands/h_mcp.py +215 -0
- cli/ui/commands/h_self.py +113 -0
- cli/ui/commands/h_skills.py +314 -0
- cli/ui/commands/handlers.py +1672 -0
- cli/ui/commands/registry.py +426 -0
- cli/ui/dialog.py +425 -0
- cli/ui/event_registry.py +110 -0
- cli/ui/event_specs.py +45 -0
- cli/ui/events.py +433 -0
- cli/ui/identity.py +15 -0
- cli/ui/lifecycle.py +159 -0
- cli/ui/live_hooks.py +43 -0
- cli/ui/model_selector.py +532 -0
- cli/ui/persistent_loop.py +181 -0
- cli/ui/pick.py +113 -0
- cli/ui/plain_renderer.py +351 -0
- cli/ui/renderer.py +384 -0
- cli/ui/rich_renderer.py +533 -0
- cli/ui/secrets.py +115 -0
- cli/ui/state.py +376 -0
- cli/ui/statusbar.py +231 -0
- cli/ui/streaming.py +254 -0
- cli/ui/terminal_render.py +105 -0
- cli/ui/theme.py +132 -0
- cli/update/__init__.py +6 -0
- cli/update/context.py +121 -0
- cli/update/detect.py +176 -0
- cli/update/engine.py +95 -0
- cli/update/migrate_guarded.py +55 -0
- cli/update/process_guard.py +215 -0
- cli/update/runners.py +78 -0
- cli/update/snapshot.py +270 -0
- cli/update/versions.py +205 -0
- core/README.md +377 -0
- core/__init__.py +174 -0
- core/assets.py +87 -0
- core/async_bridge.py +76 -0
- core/autonomy_runtime.py +259 -0
- core/base_component.py +302 -0
- core/bootstrap.py +681 -0
- core/bot.py +310 -0
- core/config.py +833 -0
- core/constants.py +126 -0
- core/container.py +462 -0
- core/db_manifest.py +101 -0
- core/embedding.py +57 -0
- core/env.py +39 -0
- core/exceptions.py +287 -0
- core/flags.py +144 -0
- core/flags_catalog.py +345 -0
- core/home_migration.py +62 -0
- core/identity.py +118 -0
- core/initialization.py +1004 -0
- core/instance.py +537 -0
- core/interactive_gate.py +96 -0
- core/logging.py +436 -0
- core/owner_doc_writer.py +176 -0
- core/pairing.py +193 -0
- core/path_safety.py +20 -0
- core/paths.py +27 -0
- core/payment_config.py +21 -0
- core/permissions.py +322 -0
- core/runtime_config.py +96 -0
- core/runtime_paths.py +135 -0
- core/seams.py +35 -0
- core/secret_scan.py +25 -0
- core/secret_scrub.py +71 -0
- core/secrets.py +35 -0
- core/security_logging_filter.py +148 -0
- core/self_context_writer.py +333 -0
- core/self_evolution.py +294 -0
- core/session_context.py +47 -0
- core/sqlite_util.py +59 -0
- core/surfaces/__init__.py +16 -0
- core/surfaces/access.py +118 -0
- core/surfaces/binding.py +88 -0
- core/surfaces/bootstrap.py +78 -0
- core/surfaces/circuit.py +168 -0
- core/surfaces/continuity.py +77 -0
- core/surfaces/correspondents.py +228 -0
- core/surfaces/dispatcher.py +216 -0
- core/surfaces/envelopes.py +75 -0
- core/surfaces/gc.py +30 -0
- core/surfaces/idempotency.py +57 -0
- core/surfaces/inbound_webhook.py +124 -0
- core/surfaces/media.py +32 -0
- core/surfaces/message_router.py +91 -0
- core/surfaces/outbound_allowlist.py +80 -0
- core/surfaces/outbound_dispatcher.py +110 -0
- core/surfaces/outbound_mirror.py +37 -0
- core/surfaces/outbound_queue.py +107 -0
- core/surfaces/outbound_target.py +12 -0
- core/surfaces/owner_admin.py +29 -0
- core/surfaces/proactive.py +78 -0
- core/surfaces/progress.py +108 -0
- core/surfaces/rate_bucket.py +21 -0
- core/surfaces/registry.py +51 -0
- core/surfaces/rendering.py +53 -0
- core/surfaces/send_policy.py +14 -0
- core/surfaces/serialize.py +24 -0
- core/surfaces/session_chat_registry.py +112 -0
- core/surfaces/session_policy.py +60 -0
- core/surfaces/surface.py +288 -0
- core/surfaces/transcription.py +88 -0
- core/surfaces/voice_echo.py +26 -0
- core/surfaces/voice_guard.py +23 -0
- core/tickers.py +174 -0
- core/tool_catalog.py +192 -0
- core/version.py +75 -0
- core/wallet/__init__.py +5 -0
- core/wallet/agent_wallet.py +59 -0
- core/wallet/audit_sink.py +61 -0
- core/wallet/config.py +70 -0
- core/wallet/factory.py +87 -0
- core/wallet/policy.py +104 -0
- core/wallet/signer.py +51 -0
- cron/README.md +65 -0
- cron/__init__.py +0 -0
- cron/delivery.py +277 -0
- cron/digest.py +124 -0
- cron/jobs.py +207 -0
- cron/runner.py +297 -0
- cron/schedule.py +194 -0
- cron/scheduler.py +201 -0
- cron/service.py +57 -0
- cron/wake_gate.py +223 -0
- data/__init__.py +1 -0
- data/prompts/autov2_prompts.json +87 -0
- data/prompts/skills/browser-automation/SKILL.md +43 -0
- data/prompts/skills/coding-workflow/SKILL.md +36 -0
- data/prompts/skills/crypto-trading-safety/SKILL.md +53 -0
- data/prompts/skills/document-writing/SKILL.md +33 -0
- data/prompts/skills/email-comms/SKILL.md +33 -0
- data/prompts/skills/file-data-ops/SKILL.md +35 -0
- data/prompts/skills/hyperliquid-account-review/SKILL.md +48 -0
- data/prompts/skills/hyperliquid-market-data/SKILL.md +52 -0
- data/prompts/skills/hyperliquid-trading/SKILL.md +59 -0
- data/prompts/skills/lead-research/SKILL.md +86 -0
- data/prompts/skills/market-research-brief/SKILL.md +104 -0
- data/prompts/skills/person-analyzer/SKILL.md +124 -0
- data/prompts/skills/polymarket-market-research/SKILL.md +54 -0
- data/prompts/skills/polymarket-portfolio-review/SKILL.md +50 -0
- data/prompts/skills/polymarket-trading/SKILL.md +55 -0
- data/prompts/skills/presentation-creator/SKILL.md +36 -0
- data/prompts/skills/project-analyzer/SKILL.md +169 -0
- data/prompts/skills/rules.json +268 -0
- data/prompts/skills/secret-handling/SKILL.md +20 -0
- data/prompts/skills/skill-authoring/SKILL.md +31 -0
- data/prompts/skills/skill-security-review/SKILL.md +27 -0
- data/prompts/skills/social-discovery/SKILL.md +57 -0
- data/prompts/skills/task-planning/SKILL.md +33 -0
- data/prompts/skills/web-research/SKILL.md +39 -0
- data/prompts/skills/web-scraping/SKILL.md +73 -0
- data/prompts/skills/x-engagement/SKILL.md +69 -0
- data/prompts/system_prompts.json +4 -0
- data/subscription_channels.json +5 -0
- modules/README.md +503 -0
- modules/__init__.py +124 -0
- modules/auth/__init__.py +13 -0
- modules/auth/api_key_manager.py +157 -0
- modules/auth/identity_mapper.py +380 -0
- modules/auth/siwe_auth.py +273 -0
- modules/auth/tier_manager.py +173 -0
- modules/base_module.py +190 -0
- modules/credits/__init__.py +29 -0
- modules/credits/balance_manager.py +237 -0
- modules/credits/cost_utils.py +129 -0
- modules/credits/pricing.py +139 -0
- modules/credits/unified_ledger.py +148 -0
- modules/credits/usage_meter.py +310 -0
- modules/credits/usage_tracker.py +674 -0
- modules/database/__init__.py +33 -0
- modules/database/audit_log.py +322 -0
- modules/database/auth_tables.py +276 -0
- modules/database/connection.py +644 -0
- modules/database/connection_pool.py +305 -0
- modules/database/conversation_contexts.py +446 -0
- modules/database/database_manager.py +237 -0
- modules/database/hyperliquid.py +375 -0
- modules/database/polymarket.py +574 -0
- modules/database/user_mcp_servers.py +728 -0
- modules/database/user_profiles.py +562 -0
- modules/database/utils.py +107 -0
- modules/database/x402_tables.py +92 -0
- modules/eip8004/README.md +1069 -0
- modules/eip8004/__init__.py +65 -0
- modules/eip8004/contracts.py +498 -0
- modules/eip8004/models.py +271 -0
- modules/eip8004/registration.py +148 -0
- modules/eip8004/reputation.py +367 -0
- modules/eip8004/validation.py +277 -0
- modules/llm/__init__.py +97 -0
- modules/llm/adapters.py +963 -0
- modules/llm/anthropic_client.py +831 -0
- modules/llm/available_models.py +106 -0
- modules/llm/brain_scrubber.py +137 -0
- modules/llm/cache_hints.py +162 -0
- modules/llm/deepseek_client.py +562 -0
- modules/llm/gemini_client.py +1367 -0
- modules/llm/llm_client.py +1139 -0
- modules/llm/llm_client_registry.py +188 -0
- modules/llm/llm_factory.py +237 -0
- modules/llm/llm_manager.py +1036 -0
- modules/llm/messages.py +374 -0
- modules/llm/model_registry.py +1935 -0
- modules/llm/nvidia_client.py +125 -0
- modules/llm/openai_client.py +800 -0
- modules/llm/openrouter_client.py +969 -0
- modules/llm/profiles.py +178 -0
- modules/llm/test_anthropic_cache_capture.py +35 -0
- modules/llm/test_cached_pricing_derivation.py +24 -0
- modules/llm/think_scrubber.py +444 -0
- modules/llm/token_counter.py +268 -0
- modules/memory/__init__.py +35 -0
- modules/memory/backend_factory.py +83 -0
- modules/memory/cache_manager.py +186 -0
- modules/memory/episodic.py +108 -0
- modules/memory/local_vector_memory_provider.py +552 -0
- modules/memory/memory_manager.py +225 -0
- modules/memory/models.py +312 -0
- modules/memory/provider.py +210 -0
- modules/memory/registry.py +205 -0
- modules/memory/sqlite_memory_provider.py +767 -0
- modules/memory/task/__init__.py +52 -0
- modules/memory/task/compaction_manager.py +157 -0
- modules/memory/task/context_retriever.py +809 -0
- modules/memory/task/hierarchical_memory.py +1002 -0
- modules/memory/task/lexical_retriever.py +71 -0
- modules/memory/task/null_context_manager.py +213 -0
- modules/memory/task/phase_manager.py +625 -0
- modules/memory/task/reflection_service.py +157 -0
- modules/memory/task/semantic_retriever.py +218 -0
- modules/memory/task/task_context_manager.py +1165 -0
- modules/memory/task/test_forgetting_engages.py +24 -0
- modules/memory/task/test_reflection_llm.py +39 -0
- modules/memory/task/test_threat_scan.py +53 -0
- modules/memory/task/threat_scan.py +90 -0
- modules/memory/test_sqlite_memory_provider.py +106 -0
- modules/memory/user_profile_manager.py +527 -0
- modules/payments/__init__.py +11 -0
- modules/payments/deposit_monitor.py +478 -0
- modules/payments/price_oracle.py +70 -0
- modules/payments/treasury_sweeper.py +401 -0
- modules/payments/wallet_generator.py +145 -0
- modules/pfp/__init__.py +1 -0
- modules/pfp/config.py +92 -0
- modules/pfp/mesh.py +565 -0
- modules/pfp/push.py +69 -0
- modules/pfp/renderer.py +85 -0
- modules/pfp/store.py +82 -0
- modules/skills/__init__.py +1 -0
- modules/skills/skill_usage.py +248 -0
- modules/transcription/__init__.py +24 -0
- modules/transcription/base.py +20 -0
- modules/transcription/faster_whisper_transcriber.py +55 -0
- modules/x402/README.md +249 -0
- modules/x402/__init__.py +22 -0
- modules/x402/invoicing.py +416 -0
- modules/x402/middleware.py +364 -0
- modules/x402/settlement_watcher.py +145 -0
- modules/x402/x402_integration.py +344 -0
- polyrob-0.5.0.dist-info/METADATA +482 -0
- polyrob-0.5.0.dist-info/RECORD +745 -0
- polyrob-0.5.0.dist-info/WHEEL +5 -0
- polyrob-0.5.0.dist-info/entry_points.txt +2 -0
- polyrob-0.5.0.dist-info/licenses/LICENSE +21 -0
- polyrob-0.5.0.dist-info/top_level.txt +12 -0
- surfaces/README.md +70 -0
- surfaces/__init__.py +0 -0
- surfaces/email/__init__.py +0 -0
- surfaces/email/dedup.py +44 -0
- surfaces/email/harness.py +187 -0
- surfaces/email/inbound.py +159 -0
- surfaces/email/seed.py +60 -0
- surfaces/email/surface.py +105 -0
- surfaces/telegram/__init__.py +0 -0
- surfaces/telegram/dedup.py +83 -0
- surfaces/telegram/harness.py +886 -0
- surfaces/telegram/inbound.py +145 -0
- surfaces/telegram/interactive_tools.py +49 -0
- surfaces/telegram/markdown.py +347 -0
- surfaces/telegram/rate_limit.py +167 -0
- surfaces/telegram/surface.py +187 -0
- surfaces/telegram/voice.py +52 -0
- surfaces/whatsapp/__init__.py +0 -0
- surfaces/whatsapp/client.py +51 -0
- surfaces/whatsapp/harness.py +62 -0
- surfaces/whatsapp/inbound.py +132 -0
- surfaces/whatsapp/surface.py +64 -0
- surfaces/whatsapp/window.py +34 -0
- tools/README.md +578 -0
- tools/__init__.py +424 -0
- tools/alchemy/__init__.py +5 -0
- tools/alchemy/alchemy_tool.py +389 -0
- tools/anysite/__init__.py +17 -0
- tools/anysite/client.py +88 -0
- tools/anysite/tool.py +89 -0
- tools/base_tool.py +468 -0
- tools/browser/__init__.py +22 -0
- tools/browser/actions.py +118 -0
- tools/browser/browser.py +1457 -0
- tools/browser/browser_manager.py +690 -0
- tools/browser/context.py +1748 -0
- tools/browser/playwright_utils.py +137 -0
- tools/browser/views.py +56 -0
- tools/code_exec/SANDBOX_SECURITY.md +144 -0
- tools/code_exec/__init__.py +178 -0
- tools/code_exec/backend.py +73 -0
- tools/code_exec/backends/__init__.py +1 -0
- tools/code_exec/backends/docker.py +779 -0
- tools/code_exec/backends/local_subprocess.py +154 -0
- tools/code_exec/env_policy.py +45 -0
- tools/code_exec/result.py +42 -0
- tools/code_exec/sandbox_guard.py +59 -0
- tools/code_exec/tool.py +227 -0
- tools/coding/__init__.py +50 -0
- tools/coding/edit.py +107 -0
- tools/coding/search.py +113 -0
- tools/coding/tool.py +353 -0
- tools/collabland/__init__.py +5 -0
- tools/collabland/collabland_tool.py +471 -0
- tools/controller/__init__.py +0 -0
- tools/controller/_helpers.py +165 -0
- tools/controller/action_registration.py +1765 -0
- tools/controller/approval.py +244 -0
- tools/controller/approval_interactive.py +90 -0
- tools/controller/delegation.py +195 -0
- tools/controller/execution.py +797 -0
- tools/controller/execution_context.py +141 -0
- tools/controller/hooks.py +135 -0
- tools/controller/introspection.py +344 -0
- tools/controller/mcp_registrar.py +190 -0
- tools/controller/message_send.py +31 -0
- tools/controller/registry/__init__.py +4 -0
- tools/controller/registry/schema_generators.py +395 -0
- tools/controller/registry/schema_sanitizer.py +406 -0
- tools/controller/registry/service.py +1266 -0
- tools/controller/registry/views.py +151 -0
- tools/controller/service.py +409 -0
- tools/controller/tool_management.py +334 -0
- tools/controller/types.py +28 -0
- tools/controller/views.py +450 -0
- tools/cronjob_tools.py +166 -0
- tools/crypto_trade_gate.py +59 -0
- tools/descriptors.py +452 -0
- tools/dom/__init__.py +0 -0
- tools/dom/history_tree_processor/service.py +244 -0
- tools/dom/history_tree_processor/view.py +99 -0
- tools/dom/service.py +471 -0
- tools/dom/views.py +346 -0
- tools/email_tool.py +403 -0
- tools/exceptions.py +169 -0
- tools/filesystem.py +1038 -0
- tools/filesystem_docproc.py +331 -0
- tools/filesystem_pdf.py +755 -0
- tools/git/__init__.py +42 -0
- tools/git/tool.py +258 -0
- tools/github/__init__.py +33 -0
- tools/github/client.py +94 -0
- tools/github/tool.py +237 -0
- tools/goal_tools.py +309 -0
- tools/hyperliquid/__init__.py +56 -0
- tools/hyperliquid/models.py +233 -0
- tools/hyperliquid/service.py +1680 -0
- tools/knowledge_ingest.py +950 -0
- tools/mcp/README.md +535 -0
- tools/mcp/__init__.py +52 -0
- tools/mcp/catalog.py +115 -0
- tools/mcp/config.py +337 -0
- tools/mcp/mcp_tool.py +1415 -0
- tools/mcp/param_coercion.py +289 -0
- tools/mcp/protocol.py +1520 -0
- tools/mcp/rate_limit.py +50 -0
- tools/mcp/security.py +424 -0
- tools/mcp/self_install.py +111 -0
- tools/mcp/server_manager.py +829 -0
- tools/mcp/subscriptions.py +72 -0
- tools/mcp/user_mcp_service.py +899 -0
- tools/mcp/validation_tracker.py +89 -0
- tools/mcp/views.py +346 -0
- tools/oauth/__init__.py +17 -0
- tools/oauth/manager.py +75 -0
- tools/oauth/provider.py +69 -0
- tools/oauth/providers/__init__.py +1 -0
- tools/oauth/providers/generic_oauth2.py +96 -0
- tools/perplexity_tool.py +280 -0
- tools/polymarket/__init__.py +41 -0
- tools/polymarket/clob_adapter.py +76 -0
- tools/polymarket/models.py +182 -0
- tools/polymarket/service.py +2082 -0
- tools/self_env/__init__.py +61 -0
- tools/self_env/tool.py +274 -0
- tools/shell/__init__.py +80 -0
- tools/shell/backend_pool.py +118 -0
- tools/shell/discipline.py +62 -0
- tools/shell/executor.py +157 -0
- tools/shell/loopback_allow.py +87 -0
- tools/shell/process_registry.py +113 -0
- tools/shell/process_tool.py +131 -0
- tools/shell/state.py +129 -0
- tools/shell/tool.py +151 -0
- tools/task_tool.py +637 -0
- tools/twitter_tool.py +2086 -0
- tools/user_directory.py +179 -0
- tools/web_fetch/__init__.py +3 -0
- tools/web_fetch/fetcher.py +144 -0
- tools/web_fetch/render.py +44 -0
- tools/web_fetch/tool.py +60 -0
- tools/x402/__init__.py +60 -0
- tools/x402/client.py +47 -0
- tools/x402/invoice_tool.py +143 -0
- tools/x402/real_client.py +250 -0
- tools/x402/service.py +131 -0
- utils/README.md +498 -0
- utils/__init__.py +46 -0
- utils/auth_utils.py +114 -0
- utils/bounded_collections.py +162 -0
- utils/circuit_breaker.py +389 -0
- utils/gif_utils.py +435 -0
- utils/markdown_utils.py +291 -0
- utils/message_utils.py +147 -0
- utils/metrics.py +36 -0
- utils/path_validator.py +227 -0
- utils/rate_limit_manager.py +399 -0
- utils/result_size.py +296 -0
- utils/time_utils.py +206 -0
- utils/user_utils.py +188 -0
- webview/README.md +111 -0
- webview/RENAME_AND_ALIGN_HANDOFF.md +200 -0
- webview/__init__.py +8 -0
- webview/activity.py +636 -0
- webview/owner_auth.py +108 -0
- webview/pages.py +448 -0
- webview/repair_sessions.py +399 -0
- webview/server.py +4323 -0
- webview/server_launcher.py +112 -0
- webview/static/css/activity.css +89 -0
- webview/static/css/chat.css +1772 -0
- webview/static/css/components.css +1190 -0
- webview/static/css/config-panel.css +651 -0
- webview/static/css/pages/admin.css +766 -0
- webview/static/css/pages/profile.css +231 -0
- webview/static/css/pages/settings.css +297 -0
- webview/static/css/pages/signin.css +316 -0
- webview/static/css/style.css +4250 -0
- webview/static/css/variables.css +147 -0
- webview/static/css/workspace-fullwidth-fix.css +109 -0
- webview/static/img/favicon.ico +0 -0
- webview/static/js/activity.js +394 -0
- webview/static/js/admin/activity.js +186 -0
- webview/static/js/admin/dashboard.js +163 -0
- webview/static/js/admin/user_detail.js +400 -0
- webview/static/js/admin/users.js +174 -0
- webview/static/js/admin/utils.js +214 -0
- webview/static/js/chat.js +3178 -0
- webview/static/js/config-panel.js +522 -0
- webview/static/js/constants.js +20 -0
- webview/static/js/error-handler.js +226 -0
- webview/static/js/ethers.min.js +1 -0
- webview/static/js/event-filter.js +137 -0
- webview/static/js/event-store.js +351 -0
- webview/static/js/file-attachments.js +374 -0
- webview/static/js/file-loader.js +163 -0
- webview/static/js/index.js +103 -0
- webview/static/js/performance-utils.js +196 -0
- webview/static/js/profile.js +396 -0
- webview/static/js/screenshot.js +386 -0
- webview/static/js/session.js +1527 -0
- webview/static/js/settings.js +1288 -0
- webview/static/js/sidebar-data.js +766 -0
- webview/static/js/sidebar-toggle.js +296 -0
- webview/static/js/socket.io.min.js +7 -0
- webview/static/js/stats.js +355 -0
- webview/static/js/ui-utils.js +420 -0
- webview/static/js/workspace.js +966 -0
- webview/stats_service.py +613 -0
- webview/templates/__init__.py +1 -0
- webview/templates/__pycache__/__init__.cpython-311.pyc +0 -0
- webview/templates/activity.html +36 -0
- webview/templates/admin/activity.html +122 -0
- webview/templates/admin/dashboard.html +112 -0
- webview/templates/admin/user_detail.html +228 -0
- webview/templates/admin/users.html +105 -0
- webview/templates/autonomy.html +60 -0
- webview/templates/error.html +133 -0
- webview/templates/finance.html +90 -0
- webview/templates/identity.html +73 -0
- webview/templates/index.html +42 -0
- webview/templates/layout.html +125 -0
- webview/templates/memory.html +59 -0
- webview/templates/owner_login.html +15 -0
- webview/templates/profile.html +121 -0
- webview/templates/session.html +312 -0
- webview/templates/settings.html +534 -0
- webview/templates/sidebar.html +112 -0
- webview/templates/signin.html +213 -0
- webview/templates/status.html +14 -0
- webview/templates/system.html +45 -0
- webview/webgate.py +196 -0
core/bot.py
ADDED
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
"""Location: core/bot.py"""
|
|
2
|
+
|
|
3
|
+
"""Main application initialization and management - Platform agnostic version."""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import time
|
|
7
|
+
import asyncio
|
|
8
|
+
import os
|
|
9
|
+
from typing import Optional, Dict, Any
|
|
10
|
+
|
|
11
|
+
from core.config import BotConfig
|
|
12
|
+
from core.exceptions import (
|
|
13
|
+
BotError,
|
|
14
|
+
ConfigurationError,
|
|
15
|
+
ComponentInitializationError
|
|
16
|
+
)
|
|
17
|
+
from core.logging import setup_logging, get_component_logger
|
|
18
|
+
from core.initialization import (
|
|
19
|
+
initialize_core,
|
|
20
|
+
cleanup_core,
|
|
21
|
+
initialize_tools,
|
|
22
|
+
cleanup_tools,
|
|
23
|
+
initialize_managers,
|
|
24
|
+
initialize_agents,
|
|
25
|
+
initialize_modules,
|
|
26
|
+
initialize_auth_services
|
|
27
|
+
)
|
|
28
|
+
from core.base_component import BaseComponent
|
|
29
|
+
from core.container import DependencyContainer
|
|
30
|
+
|
|
31
|
+
logger = logging.getLogger('Bot.bot')
|
|
32
|
+
|
|
33
|
+
class Bot(BaseComponent):
|
|
34
|
+
"""Main application class managing initialization and lifecycle.
|
|
35
|
+
|
|
36
|
+
In this architecture, this class handles:
|
|
37
|
+
- Component initialization
|
|
38
|
+
- Service registration with DependencyContainer
|
|
39
|
+
- Application lifecycle management
|
|
40
|
+
|
|
41
|
+
The HTTP server and API endpoints are handled by FastAPI.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
# Tech symbols for logging
|
|
45
|
+
TECH_SYMBOLS = {
|
|
46
|
+
'start': '»',
|
|
47
|
+
'success': '✓',
|
|
48
|
+
'arrow': '→',
|
|
49
|
+
'bullet': '∙',
|
|
50
|
+
'separator': '┊',
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
def __init__(self, config: BotConfig, *args, **kwargs):
|
|
54
|
+
"""Initialize bot with required parameters"""
|
|
55
|
+
super().__init__(name="MainBot", config=config, *args, **kwargs)
|
|
56
|
+
self.container = DependencyContainer.get_instance(config)
|
|
57
|
+
self.logger = get_component_logger("Bot")
|
|
58
|
+
|
|
59
|
+
try:
|
|
60
|
+
self._lock = asyncio.Lock()
|
|
61
|
+
self.is_running = False
|
|
62
|
+
|
|
63
|
+
except Exception as e:
|
|
64
|
+
self.logger.error(f"Bot initialization failed: {e}")
|
|
65
|
+
raise BotError(f"Failed to initialize bot: {e}")
|
|
66
|
+
|
|
67
|
+
async def _initialize(self) -> None:
|
|
68
|
+
"""Implementation-specific initialization."""
|
|
69
|
+
try:
|
|
70
|
+
# Add a single clear marker for initialization start
|
|
71
|
+
self.logger.info("")
|
|
72
|
+
self.logger.info("="*50)
|
|
73
|
+
self.logger.info("🚀 APPLICATION INITIALIZATION SEQUENCE STARTED")
|
|
74
|
+
self.logger.info("="*50)
|
|
75
|
+
|
|
76
|
+
# Initialize core first
|
|
77
|
+
self.logger.info("🔍 [STEP 1/6] Initializing core components...")
|
|
78
|
+
await initialize_core(self.container)
|
|
79
|
+
|
|
80
|
+
# Initialize modules (database, memory, LLM, etc.)
|
|
81
|
+
self.logger.info("🔍 [STEP 2/6] Initializing modules...")
|
|
82
|
+
await initialize_modules(self.container)
|
|
83
|
+
|
|
84
|
+
# Initialize tools (browser, filesystem, MCP, etc.)
|
|
85
|
+
self.logger.info("🔍 [STEP 3/6] Initializing tools...")
|
|
86
|
+
await initialize_tools(self.container)
|
|
87
|
+
|
|
88
|
+
# Initialize managers
|
|
89
|
+
self.logger.info("🔍 [STEP 4/6] Initializing managers...")
|
|
90
|
+
await initialize_managers(self.container)
|
|
91
|
+
|
|
92
|
+
# Initialize agents
|
|
93
|
+
self.logger.info("🔍 [STEP 5/5] Initializing agents...")
|
|
94
|
+
await initialize_agents(self.container)
|
|
95
|
+
|
|
96
|
+
# Auth/billing/payment services (phase 6) are SERVER-SCOPE and no
|
|
97
|
+
# longer initialized by CoreBot.initialize(). Callers that need
|
|
98
|
+
# the full server stack must invoke initialize_server_services()
|
|
99
|
+
# explicitly (api/app.py does this via core.bootstrap.build_server_bot).
|
|
100
|
+
# Core/CLI mode runs phases 1-5 only.
|
|
101
|
+
|
|
102
|
+
self.logger.info("")
|
|
103
|
+
self.logger.info("="*50)
|
|
104
|
+
self.logger.info(f"{self.TECH_SYMBOLS['success']} CORE INITIALIZATION COMPLETE (phases 1-5)")
|
|
105
|
+
self.logger.info("="*50)
|
|
106
|
+
self.logger.info("")
|
|
107
|
+
|
|
108
|
+
self.is_running = True
|
|
109
|
+
|
|
110
|
+
except Exception as e:
|
|
111
|
+
self.logger.error(f"Bot initialization failed: {e}", exc_info=True)
|
|
112
|
+
await self.cleanup()
|
|
113
|
+
raise BotError(f"Failed to initialize bot: {e}")
|
|
114
|
+
|
|
115
|
+
async def initialize_server_services(self) -> None:
|
|
116
|
+
"""Register server-only services (auth, billing, payments) — phase 6.
|
|
117
|
+
|
|
118
|
+
Idempotent: safe to call once after initialize(). Internally checks
|
|
119
|
+
config.enable_auth and gracefully no-ops in core mode. The server
|
|
120
|
+
entry point (api/app.py via core.bootstrap.build_server_bot) invokes
|
|
121
|
+
this; the CLI bootstrap does not.
|
|
122
|
+
"""
|
|
123
|
+
try:
|
|
124
|
+
self.logger.info("🔍 [PHASE 6] Initializing auth & payment services...")
|
|
125
|
+
await initialize_auth_services(self.container)
|
|
126
|
+
self.logger.info(f"{self.TECH_SYMBOLS['success']} Server services initialized")
|
|
127
|
+
except ImportError as e:
|
|
128
|
+
# modules.auth / modules.payments / etc. unavailable in this install.
|
|
129
|
+
self.logger.info(f" ⏩ Server services unavailable in this install: {e}")
|
|
130
|
+
except Exception as e:
|
|
131
|
+
self.logger.error(f"❌ Server service initialization failed: {e}", exc_info=True)
|
|
132
|
+
raise
|
|
133
|
+
|
|
134
|
+
async def _cleanup(self) -> None:
|
|
135
|
+
"""Clean up implementation-specific resources."""
|
|
136
|
+
try:
|
|
137
|
+
self.logger.info("Starting application cleanup...")
|
|
138
|
+
|
|
139
|
+
# Set a total cleanup timeout to prevent hanging
|
|
140
|
+
cleanup_timeout = 60.0 # 60 seconds total cleanup time
|
|
141
|
+
start_time = asyncio.get_event_loop().time()
|
|
142
|
+
|
|
143
|
+
async def cleanup_with_timeout(cleanup_func, name: str, timeout: float = 10.0):
|
|
144
|
+
"""Helper to run cleanup with timeout."""
|
|
145
|
+
try:
|
|
146
|
+
await asyncio.wait_for(cleanup_func(self.container), timeout=timeout)
|
|
147
|
+
self.logger.info(f"✓ {name} cleanup completed")
|
|
148
|
+
except asyncio.TimeoutError:
|
|
149
|
+
self.logger.warning(f"⚠ {name} cleanup timed out after {timeout}s")
|
|
150
|
+
except Exception as e:
|
|
151
|
+
self.logger.error(f"✗ Error during {name} cleanup: {e}")
|
|
152
|
+
|
|
153
|
+
# Stop payment services first (they have background tasks)
|
|
154
|
+
self.logger.info("Stopping payment services...")
|
|
155
|
+
deposit_monitor = self.container.get_service('deposit_monitor')
|
|
156
|
+
if deposit_monitor:
|
|
157
|
+
try:
|
|
158
|
+
await asyncio.wait_for(deposit_monitor.stop(), timeout=5.0)
|
|
159
|
+
self.logger.info(" ✓ Deposit monitor stopped")
|
|
160
|
+
except Exception as e:
|
|
161
|
+
self.logger.warning(f" ⚠ Error stopping deposit monitor: {e}")
|
|
162
|
+
|
|
163
|
+
treasury_sweeper = self.container.get_service('treasury_sweeper')
|
|
164
|
+
if treasury_sweeper:
|
|
165
|
+
try:
|
|
166
|
+
await asyncio.wait_for(treasury_sweeper.stop(), timeout=5.0)
|
|
167
|
+
self.logger.info(" ✓ Treasury sweeper stopped")
|
|
168
|
+
except Exception as e:
|
|
169
|
+
self.logger.warning(f" ⚠ Error stopping treasury sweeper: {e}")
|
|
170
|
+
|
|
171
|
+
# Cleanup agents with timeout
|
|
172
|
+
self.logger.info("Cleaning up agents...")
|
|
173
|
+
from core.initialization import cleanup_agents
|
|
174
|
+
await cleanup_with_timeout(cleanup_agents, "agents", 15.0)
|
|
175
|
+
|
|
176
|
+
# Check if we're running out of time
|
|
177
|
+
elapsed = asyncio.get_event_loop().time() - start_time
|
|
178
|
+
if elapsed > cleanup_timeout * 0.8: # 80% of timeout used
|
|
179
|
+
self.logger.warning("Cleanup taking too long, forcing remaining cleanup")
|
|
180
|
+
self.is_running = False
|
|
181
|
+
return
|
|
182
|
+
|
|
183
|
+
# Cleanup managers with timeout
|
|
184
|
+
self.logger.info("Cleaning up managers...")
|
|
185
|
+
from core.initialization import cleanup_managers
|
|
186
|
+
await cleanup_with_timeout(cleanup_managers, "managers", 10.0)
|
|
187
|
+
|
|
188
|
+
# Cleanup tools with timeout
|
|
189
|
+
self.logger.info("Cleaning up tools...")
|
|
190
|
+
from core.initialization import cleanup_tools
|
|
191
|
+
await cleanup_with_timeout(cleanup_tools, "tools", 15.0)
|
|
192
|
+
|
|
193
|
+
# Check timeout again
|
|
194
|
+
elapsed = asyncio.get_event_loop().time() - start_time
|
|
195
|
+
if elapsed > cleanup_timeout * 0.9: # 90% of timeout used
|
|
196
|
+
self.logger.warning("Cleanup timeout approaching, skipping remaining cleanup")
|
|
197
|
+
self.is_running = False
|
|
198
|
+
return
|
|
199
|
+
|
|
200
|
+
# Cleanup modules with timeout
|
|
201
|
+
self.logger.info("Cleaning up modules...")
|
|
202
|
+
from core.initialization import cleanup_modules
|
|
203
|
+
await cleanup_with_timeout(cleanup_modules, "modules", 10.0)
|
|
204
|
+
|
|
205
|
+
# Cleanup core with timeout
|
|
206
|
+
self.logger.info("Cleaning up core components...")
|
|
207
|
+
from core.initialization import cleanup_core
|
|
208
|
+
await cleanup_with_timeout(cleanup_core, "core", 5.0)
|
|
209
|
+
|
|
210
|
+
self.is_running = False
|
|
211
|
+
self.logger.info("Application cleanup completed")
|
|
212
|
+
|
|
213
|
+
except Exception as e:
|
|
214
|
+
self.logger.error(f"Error during cleanup: {e}", exc_info=True)
|
|
215
|
+
self.is_running = False
|
|
216
|
+
|
|
217
|
+
async def start(self) -> None:
|
|
218
|
+
"""Start the application."""
|
|
219
|
+
async with self._lock:
|
|
220
|
+
if self.is_running:
|
|
221
|
+
self.logger.warning("Application is already running")
|
|
222
|
+
return
|
|
223
|
+
|
|
224
|
+
try:
|
|
225
|
+
await self.initialize()
|
|
226
|
+
self.logger.info("Application started successfully")
|
|
227
|
+
except Exception as e:
|
|
228
|
+
self.logger.error(f"Failed to start application: {e}")
|
|
229
|
+
raise
|
|
230
|
+
|
|
231
|
+
async def stop(self) -> None:
|
|
232
|
+
"""Stop the application."""
|
|
233
|
+
async with self._lock:
|
|
234
|
+
if not self.is_running:
|
|
235
|
+
self.logger.warning("Application is not running")
|
|
236
|
+
return
|
|
237
|
+
|
|
238
|
+
try:
|
|
239
|
+
await self.cleanup()
|
|
240
|
+
self.logger.info("Application stopped successfully")
|
|
241
|
+
except Exception as e:
|
|
242
|
+
self.logger.error(f"Error stopping application: {e}")
|
|
243
|
+
raise
|
|
244
|
+
|
|
245
|
+
def get_status(self) -> Dict[str, Any]:
|
|
246
|
+
"""Get application status information."""
|
|
247
|
+
return {
|
|
248
|
+
"running": self.is_running,
|
|
249
|
+
"components": {
|
|
250
|
+
"services": len(self.container.services),
|
|
251
|
+
"managers": len(self.container.managers),
|
|
252
|
+
"agents": len(self.container.agents)
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
async def handle_request(self, request_type: str, data: Dict[str, Any]) -> Dict[str, Any]:
|
|
257
|
+
"""Handle a generic request - can be HTTP, WebSocket, etc.
|
|
258
|
+
|
|
259
|
+
Args:
|
|
260
|
+
request_type: Type of request (message, command, etc.)
|
|
261
|
+
data: Request data including user info, message, etc.
|
|
262
|
+
|
|
263
|
+
Returns:
|
|
264
|
+
Response dict
|
|
265
|
+
"""
|
|
266
|
+
try:
|
|
267
|
+
if request_type == "message":
|
|
268
|
+
# Chat is served by the unified task agent via the HTTP
|
|
269
|
+
# /api/chat/message endpoint (legacy ChatAgent retired, HANDOFF-C).
|
|
270
|
+
return {
|
|
271
|
+
"text": "Send chat messages to the /api/chat/message endpoint.",
|
|
272
|
+
"parse_mode": "markdown"
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
elif request_type == "command":
|
|
276
|
+
command = data.get("command")
|
|
277
|
+
# Handle basic commands directly
|
|
278
|
+
if command == "health":
|
|
279
|
+
return {
|
|
280
|
+
"text": "✅ System is operational",
|
|
281
|
+
"parse_mode": "markdown"
|
|
282
|
+
}
|
|
283
|
+
elif command == "status":
|
|
284
|
+
status = self.get_status()
|
|
285
|
+
return {
|
|
286
|
+
"text": f"📊 System Status:\n" +
|
|
287
|
+
f"Running: {status['running']}\n" +
|
|
288
|
+
f"Services: {status['components']['services']}\n" +
|
|
289
|
+
f"Managers: {status['components']['managers']}\n" +
|
|
290
|
+
f"Agents: {status['components']['agents']}",
|
|
291
|
+
"parse_mode": "markdown"
|
|
292
|
+
}
|
|
293
|
+
else:
|
|
294
|
+
return {
|
|
295
|
+
"text": "Command not recognized",
|
|
296
|
+
"parse_mode": "markdown"
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
return {
|
|
300
|
+
"text": f"Request type '{request_type}' not supported yet",
|
|
301
|
+
"parse_mode": "markdown"
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
except Exception as e:
|
|
305
|
+
self.logger.error(f"Error handling request: {e}", exc_info=True)
|
|
306
|
+
return {
|
|
307
|
+
"text": f"❌ Error: {str(e)}",
|
|
308
|
+
"parse_mode": "markdown"
|
|
309
|
+
}
|
|
310
|
+
|