polyrob 0.5.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.
- polyrob-0.5.0/LICENSE +21 -0
- polyrob-0.5.0/MANIFEST.in +7 -0
- polyrob-0.5.0/PKG-INFO +482 -0
- polyrob-0.5.0/README.md +399 -0
- polyrob-0.5.0/agents/README.md +453 -0
- polyrob-0.5.0/agents/__init__.py +164 -0
- polyrob-0.5.0/agents/base_agent.py +743 -0
- polyrob-0.5.0/agents/personality/character.py +119 -0
- polyrob-0.5.0/agents/personality/character_manager.py +309 -0
- polyrob-0.5.0/agents/personality/characters/rob.character.json +56 -0
- polyrob-0.5.0/agents/personality/characters/trump.character.json +63 -0
- polyrob-0.5.0/agents/personality/persona_render.py +78 -0
- polyrob-0.5.0/agents/personality/persona_resolver.py +115 -0
- polyrob-0.5.0/agents/prompt/__init__.py +58 -0
- polyrob-0.5.0/agents/prompt/base_prompt.py +92 -0
- polyrob-0.5.0/agents/prompt/system.py +417 -0
- polyrob-0.5.0/agents/task/README_PATH_MANAGEMENT.md +141 -0
- polyrob-0.5.0/agents/task/__init__.py +162 -0
- polyrob-0.5.0/agents/task/agent/__init__.py +70 -0
- polyrob-0.5.0/agents/task/agent/agent_state.py +408 -0
- polyrob-0.5.0/agents/task/agent/async_delegation.py +274 -0
- polyrob-0.5.0/agents/task/agent/autonomy_state.py +275 -0
- polyrob-0.5.0/agents/task/agent/conversation.py +75 -0
- polyrob-0.5.0/agents/task/agent/core/__init__.py +6 -0
- polyrob-0.5.0/agents/task/agent/core/aux_metering.py +61 -0
- polyrob-0.5.0/agents/task/agent/core/background_review.py +157 -0
- polyrob-0.5.0/agents/task/agent/core/construction.py +1179 -0
- polyrob-0.5.0/agents/task/agent/core/conversational_exit.py +49 -0
- polyrob-0.5.0/agents/task/agent/core/correspondent_gate.py +227 -0
- polyrob-0.5.0/agents/task/agent/core/curator.py +246 -0
- polyrob-0.5.0/agents/task/agent/core/episodic_digest.py +103 -0
- polyrob-0.5.0/agents/task/agent/core/error_recovery.py +480 -0
- polyrob-0.5.0/agents/task/agent/core/history_io.py +257 -0
- polyrob-0.5.0/agents/task/agent/core/llm_provisioning.py +287 -0
- polyrob-0.5.0/agents/task/agent/core/llm_runner.py +547 -0
- polyrob-0.5.0/agents/task/agent/core/logging_io.py +276 -0
- polyrob-0.5.0/agents/task/agent/core/loop_detection.py +262 -0
- polyrob-0.5.0/agents/task/agent/core/memory_prefetch.py +325 -0
- polyrob-0.5.0/agents/task/agent/core/memory_writer.py +667 -0
- polyrob-0.5.0/agents/task/agent/core/model_introspection.py +82 -0
- polyrob-0.5.0/agents/task/agent/core/model_swap.py +177 -0
- polyrob-0.5.0/agents/task/agent/core/next_action_internal.py +1331 -0
- polyrob-0.5.0/agents/task/agent/core/output_validation.py +303 -0
- polyrob-0.5.0/agents/task/agent/core/project_context.py +272 -0
- polyrob-0.5.0/agents/task/agent/core/resources.py +93 -0
- polyrob-0.5.0/agents/task/agent/core/result_processing.py +389 -0
- polyrob-0.5.0/agents/task/agent/core/run_loop.py +661 -0
- polyrob-0.5.0/agents/task/agent/core/safety_lifecycle.py +228 -0
- polyrob-0.5.0/agents/task/agent/core/secret_guard.py +293 -0
- polyrob-0.5.0/agents/task/agent/core/self_wake.py +280 -0
- polyrob-0.5.0/agents/task/agent/core/session_metadata.py +104 -0
- polyrob-0.5.0/agents/task/agent/core/step.py +781 -0
- polyrob-0.5.0/agents/task/agent/core/step_execution.py +398 -0
- polyrob-0.5.0/agents/task/agent/core/step_telemetry.py +222 -0
- polyrob-0.5.0/agents/task/agent/core/test_aux_metering.py +50 -0
- polyrob-0.5.0/agents/task/agent/core/test_billing_failover.py +68 -0
- polyrob-0.5.0/agents/task/agent/core/test_fatal_error_classifier.py +38 -0
- polyrob-0.5.0/agents/task/agent/core/test_judge_validation.py +275 -0
- polyrob-0.5.0/agents/task/agent/core/test_model_swap.py +190 -0
- polyrob-0.5.0/agents/task/agent/core/test_reflection_offload.py +54 -0
- polyrob-0.5.0/agents/task/agent/core/turn_input.py +8 -0
- polyrob-0.5.0/agents/task/agent/core/untrusted_wrap.py +103 -0
- polyrob-0.5.0/agents/task/agent/core/user_ingress.py +228 -0
- polyrob-0.5.0/agents/task/agent/hitl_manager.py +396 -0
- polyrob-0.5.0/agents/task/agent/log_sanitize.py +36 -0
- polyrob-0.5.0/agents/task/agent/message_manager/config.py +97 -0
- polyrob-0.5.0/agents/task/agent/message_manager/service.py +758 -0
- polyrob-0.5.0/agents/task/agent/message_manager/tests.py +305 -0
- polyrob-0.5.0/agents/task/agent/message_manager/tool_call_builder.py +539 -0
- polyrob-0.5.0/agents/task/agent/message_manager/tool_message_repair.py +364 -0
- polyrob-0.5.0/agents/task/agent/message_manager/views.py +143 -0
- polyrob-0.5.0/agents/task/agent/messages/__init__.py +8 -0
- polyrob-0.5.0/agents/task/agent/messages/builders.py +309 -0
- polyrob-0.5.0/agents/task/agent/messages/compactor.py +611 -0
- polyrob-0.5.0/agents/task/agent/messages/context_references.py +271 -0
- polyrob-0.5.0/agents/task/agent/messages/filters.py +333 -0
- polyrob-0.5.0/agents/task/agent/messages/guidance.py +328 -0
- polyrob-0.5.0/agents/task/agent/messages/persistence.py +448 -0
- polyrob-0.5.0/agents/task/agent/messages/retrieval.py +506 -0
- polyrob-0.5.0/agents/task/agent/messages/sqlite_persistence.py +85 -0
- polyrob-0.5.0/agents/task/agent/messages/test_compaction_upgrade.py +349 -0
- polyrob-0.5.0/agents/task/agent/messages/test_persistence_subdir_fix.py +28 -0
- polyrob-0.5.0/agents/task/agent/messages/test_sqlite_persistence.py +54 -0
- polyrob-0.5.0/agents/task/agent/messages/token_counter.py +532 -0
- polyrob-0.5.0/agents/task/agent/orchestrator.py +776 -0
- polyrob-0.5.0/agents/task/agent/profile_manager.py +105 -0
- polyrob-0.5.0/agents/task/agent/profile_registry.py +173 -0
- polyrob-0.5.0/agents/task/agent/prompts.py +1090 -0
- polyrob-0.5.0/agents/task/agent/scenario_registry.py +226 -0
- polyrob-0.5.0/agents/task/agent/service.py +509 -0
- polyrob-0.5.0/agents/task/agent/session.py +984 -0
- polyrob-0.5.0/agents/task/agent/skill_discovery.py +110 -0
- polyrob-0.5.0/agents/task/agent/skill_frontmatter.py +94 -0
- polyrob-0.5.0/agents/task/agent/skill_manager.py +1201 -0
- polyrob-0.5.0/agents/task/agent/skill_store.py +627 -0
- polyrob-0.5.0/agents/task/agent/skill_validation.py +56 -0
- polyrob-0.5.0/agents/task/agent/skill_writer.py +492 -0
- polyrob-0.5.0/agents/task/agent/sub_agent_manager.py +1137 -0
- polyrob-0.5.0/agents/task/agent/test_session_disk_recovery.py +34 -0
- polyrob-0.5.0/agents/task/agent/tests.py +513 -0
- polyrob-0.5.0/agents/task/agent/tool_call_tracker.py +511 -0
- polyrob-0.5.0/agents/task/agent/views.py +469 -0
- polyrob-0.5.0/agents/task/config.py +432 -0
- polyrob-0.5.0/agents/task/constants.py +1384 -0
- polyrob-0.5.0/agents/task/flag_defaults.py +63 -0
- polyrob-0.5.0/agents/task/goals/__init__.py +1 -0
- polyrob-0.5.0/agents/task/goals/autonomy_marker.py +28 -0
- polyrob-0.5.0/agents/task/goals/board.py +690 -0
- polyrob-0.5.0/agents/task/goals/completion_judge.py +247 -0
- polyrob-0.5.0/agents/task/goals/context.py +62 -0
- polyrob-0.5.0/agents/task/goals/dispatcher.py +848 -0
- polyrob-0.5.0/agents/task/goals/escalation.py +102 -0
- polyrob-0.5.0/agents/task/goals/planner.py +114 -0
- polyrob-0.5.0/agents/task/logging_config.py +155 -0
- polyrob-0.5.0/agents/task/path.py +991 -0
- polyrob-0.5.0/agents/task/robust_parse_config.py +400 -0
- polyrob-0.5.0/agents/task/runtime/__init__.py +0 -0
- polyrob-0.5.0/agents/task/runtime/run_as_session.py +130 -0
- polyrob-0.5.0/agents/task/runtime_safety.py +308 -0
- polyrob-0.5.0/agents/task/session/__init__.py +5 -0
- polyrob-0.5.0/agents/task/session/browser_pool.py +130 -0
- polyrob-0.5.0/agents/task/session/cleanup.py +612 -0
- polyrob-0.5.0/agents/task/session/execution.py +397 -0
- polyrob-0.5.0/agents/task/session/feed.py +200 -0
- polyrob-0.5.0/agents/task/session/hitl_ingress.py +201 -0
- polyrob-0.5.0/agents/task/session/hooks.py +83 -0
- polyrob-0.5.0/agents/task/session/multi_agent.py +243 -0
- polyrob-0.5.0/agents/task/session/workspace.py +91 -0
- polyrob-0.5.0/agents/task/session_registry.py +91 -0
- polyrob-0.5.0/agents/task/session_route.py +35 -0
- polyrob-0.5.0/agents/task/sqlite_session_registry.py +261 -0
- polyrob-0.5.0/agents/task/surface_config.py +185 -0
- polyrob-0.5.0/agents/task/telemetry/__init__.py +58 -0
- polyrob-0.5.0/agents/task/telemetry/event_log.py +180 -0
- polyrob-0.5.0/agents/task/telemetry/formatters.py +642 -0
- polyrob-0.5.0/agents/task/telemetry/manager.py +571 -0
- polyrob-0.5.0/agents/task/telemetry/memory_events.py +66 -0
- polyrob-0.5.0/agents/task/telemetry/self_events.py +53 -0
- polyrob-0.5.0/agents/task/telemetry/sequence.py +160 -0
- polyrob-0.5.0/agents/task/telemetry/service.py +1265 -0
- polyrob-0.5.0/agents/task/telemetry/views.py +882 -0
- polyrob-0.5.0/agents/task/templates.py +98 -0
- polyrob-0.5.0/agents/task/test_aux_chain.py +151 -0
- polyrob-0.5.0/agents/task/test_aux_router.py +41 -0
- polyrob-0.5.0/agents/task/tests/test_parse_robustness.py +170 -0
- polyrob-0.5.0/agents/task/tool_defaults.py +110 -0
- polyrob-0.5.0/agents/task/utils.py +762 -0
- polyrob-0.5.0/agents/task/utils_json.py +768 -0
- polyrob-0.5.0/agents/task/utils_webview.py +86 -0
- polyrob-0.5.0/agents/task/workspace_context.py +229 -0
- polyrob-0.5.0/agents/task_agent_lite.py +2398 -0
- polyrob-0.5.0/api/README.md +683 -0
- polyrob-0.5.0/api/TASK_API_DOCS.md +151 -0
- polyrob-0.5.0/api/__init__.py +0 -0
- polyrob-0.5.0/api/a2a/__init__.py +37 -0
- polyrob-0.5.0/api/a2a/agent_card.py +337 -0
- polyrob-0.5.0/api/a2a/client.py +657 -0
- polyrob-0.5.0/api/a2a/endpoints.py +375 -0
- polyrob-0.5.0/api/a2a/models.py +268 -0
- polyrob-0.5.0/api/a2a/streaming.py +419 -0
- polyrob-0.5.0/api/a2a/task_handler.py +929 -0
- polyrob-0.5.0/api/admin_endpoints.py +1584 -0
- polyrob-0.5.0/api/app.py +923 -0
- polyrob-0.5.0/api/auth_constants.py +28 -0
- polyrob-0.5.0/api/auth_endpoints.py +402 -0
- polyrob-0.5.0/api/auth_state.py +36 -0
- polyrob-0.5.0/api/chat_via_task.py +42 -0
- polyrob-0.5.0/api/conversation_manager.py +231 -0
- polyrob-0.5.0/api/dependencies.py +186 -0
- polyrob-0.5.0/api/eip8004_endpoints.py +452 -0
- polyrob-0.5.0/api/hyperliquid_models.py +174 -0
- polyrob-0.5.0/api/hyperliquid_routes.py +450 -0
- polyrob-0.5.0/api/interfaces.py +207 -0
- polyrob-0.5.0/api/jwt_middleware.py +83 -0
- polyrob-0.5.0/api/kb/__init__.py +1 -0
- polyrob-0.5.0/api/kb/endpoints.py +314 -0
- polyrob-0.5.0/api/mcp_models.py +279 -0
- polyrob-0.5.0/api/mcp_routes.py +438 -0
- polyrob-0.5.0/api/middleware.py +526 -0
- polyrob-0.5.0/api/models.py +176 -0
- polyrob-0.5.0/api/openai_compat/__init__.py +0 -0
- polyrob-0.5.0/api/openai_compat/model_map.py +25 -0
- polyrob-0.5.0/api/openai_compat/models.py +59 -0
- polyrob-0.5.0/api/openai_compat/router.py +140 -0
- polyrob-0.5.0/api/payment_endpoints.py +444 -0
- polyrob-0.5.0/api/payment_verification.py +138 -0
- polyrob-0.5.0/api/polymarket_models.py +155 -0
- polyrob-0.5.0/api/polymarket_routes.py +501 -0
- polyrob-0.5.0/api/pricing_endpoints.py +89 -0
- polyrob-0.5.0/api/session_routing.py +54 -0
- polyrob-0.5.0/api/skill_endpoints.py +453 -0
- polyrob-0.5.0/api/task_http_api.py +1856 -0
- polyrob-0.5.0/api/webhooks.py +52 -0
- polyrob-0.5.0/api/x402_endpoints.py +280 -0
- polyrob-0.5.0/avatar/README.md +44 -0
- polyrob-0.5.0/avatar/__init__.py +1 -0
- polyrob-0.5.0/avatar/config/rob.json +7 -0
- polyrob-0.5.0/avatar/mindprint.js +395 -0
- polyrob-0.5.0/avatar/renders/rob.meta.json +20 -0
- polyrob-0.5.0/avatar/renders/rob.png +0 -0
- polyrob-0.5.0/avatar/studio.html +373 -0
- polyrob-0.5.0/avatar/webview/avatar-live.js +44 -0
- polyrob-0.5.0/cli/README.md +89 -0
- polyrob-0.5.0/cli/__init__.py +0 -0
- polyrob-0.5.0/cli/cli_surface.py +67 -0
- polyrob-0.5.0/cli/commands/__init__.py +0 -0
- polyrob-0.5.0/cli/commands/_bootstrap.py +49 -0
- polyrob-0.5.0/cli/commands/_errors.py +53 -0
- polyrob-0.5.0/cli/commands/chat.py +973 -0
- polyrob-0.5.0/cli/commands/config.py +100 -0
- polyrob-0.5.0/cli/commands/dashboard.py +103 -0
- polyrob-0.5.0/cli/commands/doctor.py +222 -0
- polyrob-0.5.0/cli/commands/email.py +174 -0
- polyrob-0.5.0/cli/commands/gateway.py +346 -0
- polyrob-0.5.0/cli/commands/goals.py +509 -0
- polyrob-0.5.0/cli/commands/init.py +276 -0
- polyrob-0.5.0/cli/commands/journey.py +30 -0
- polyrob-0.5.0/cli/commands/kb.py +280 -0
- polyrob-0.5.0/cli/commands/model.py +107 -0
- polyrob-0.5.0/cli/commands/owner.py +431 -0
- polyrob-0.5.0/cli/commands/pfp.py +232 -0
- polyrob-0.5.0/cli/commands/run.py +414 -0
- polyrob-0.5.0/cli/commands/serve.py +41 -0
- polyrob-0.5.0/cli/commands/session.py +684 -0
- polyrob-0.5.0/cli/commands/skill_install.py +786 -0
- polyrob-0.5.0/cli/commands/skills.py +128 -0
- polyrob-0.5.0/cli/commands/subagents.py +100 -0
- polyrob-0.5.0/cli/commands/surface.py +81 -0
- polyrob-0.5.0/cli/commands/telegram.py +185 -0
- polyrob-0.5.0/cli/commands/todos.py +209 -0
- polyrob-0.5.0/cli/commands/tools.py +102 -0
- polyrob-0.5.0/cli/commands/update.py +316 -0
- polyrob-0.5.0/cli/commands/whatsapp.py +175 -0
- polyrob-0.5.0/cli/config_store.py +276 -0
- polyrob-0.5.0/cli/gitignore.py +43 -0
- polyrob-0.5.0/cli/inventory.py +46 -0
- polyrob-0.5.0/cli/keys.py +101 -0
- polyrob-0.5.0/cli/persona.py +17 -0
- polyrob-0.5.0/cli/polyrob.py +137 -0
- polyrob-0.5.0/cli/ui/__init__.py +64 -0
- polyrob-0.5.0/cli/ui/activity.py +141 -0
- polyrob-0.5.0/cli/ui/app.py +538 -0
- polyrob-0.5.0/cli/ui/banner.py +233 -0
- polyrob-0.5.0/cli/ui/blocks.py +534 -0
- polyrob-0.5.0/cli/ui/bootstrap_notice.py +47 -0
- polyrob-0.5.0/cli/ui/commands/__init__.py +41 -0
- polyrob-0.5.0/cli/ui/commands/h_cron.py +64 -0
- polyrob-0.5.0/cli/ui/commands/h_journey.py +164 -0
- polyrob-0.5.0/cli/ui/commands/h_kb.py +121 -0
- polyrob-0.5.0/cli/ui/commands/h_learn.py +100 -0
- polyrob-0.5.0/cli/ui/commands/h_mcp.py +215 -0
- polyrob-0.5.0/cli/ui/commands/h_self.py +113 -0
- polyrob-0.5.0/cli/ui/commands/h_skills.py +314 -0
- polyrob-0.5.0/cli/ui/commands/handlers.py +1672 -0
- polyrob-0.5.0/cli/ui/commands/registry.py +426 -0
- polyrob-0.5.0/cli/ui/dialog.py +425 -0
- polyrob-0.5.0/cli/ui/event_registry.py +110 -0
- polyrob-0.5.0/cli/ui/event_specs.py +45 -0
- polyrob-0.5.0/cli/ui/events.py +433 -0
- polyrob-0.5.0/cli/ui/identity.py +15 -0
- polyrob-0.5.0/cli/ui/lifecycle.py +159 -0
- polyrob-0.5.0/cli/ui/live_hooks.py +43 -0
- polyrob-0.5.0/cli/ui/model_selector.py +532 -0
- polyrob-0.5.0/cli/ui/persistent_loop.py +181 -0
- polyrob-0.5.0/cli/ui/pick.py +113 -0
- polyrob-0.5.0/cli/ui/plain_renderer.py +351 -0
- polyrob-0.5.0/cli/ui/renderer.py +384 -0
- polyrob-0.5.0/cli/ui/rich_renderer.py +533 -0
- polyrob-0.5.0/cli/ui/secrets.py +115 -0
- polyrob-0.5.0/cli/ui/state.py +376 -0
- polyrob-0.5.0/cli/ui/statusbar.py +231 -0
- polyrob-0.5.0/cli/ui/streaming.py +254 -0
- polyrob-0.5.0/cli/ui/terminal_render.py +105 -0
- polyrob-0.5.0/cli/ui/theme.py +132 -0
- polyrob-0.5.0/cli/update/__init__.py +6 -0
- polyrob-0.5.0/cli/update/context.py +121 -0
- polyrob-0.5.0/cli/update/detect.py +176 -0
- polyrob-0.5.0/cli/update/engine.py +95 -0
- polyrob-0.5.0/cli/update/migrate_guarded.py +55 -0
- polyrob-0.5.0/cli/update/process_guard.py +215 -0
- polyrob-0.5.0/cli/update/runners.py +78 -0
- polyrob-0.5.0/cli/update/snapshot.py +270 -0
- polyrob-0.5.0/cli/update/versions.py +205 -0
- polyrob-0.5.0/config/.env.development.template +260 -0
- polyrob-0.5.0/core/README.md +377 -0
- polyrob-0.5.0/core/__init__.py +174 -0
- polyrob-0.5.0/core/assets.py +87 -0
- polyrob-0.5.0/core/async_bridge.py +76 -0
- polyrob-0.5.0/core/autonomy_runtime.py +259 -0
- polyrob-0.5.0/core/base_component.py +302 -0
- polyrob-0.5.0/core/bootstrap.py +681 -0
- polyrob-0.5.0/core/bot.py +310 -0
- polyrob-0.5.0/core/config.py +833 -0
- polyrob-0.5.0/core/constants.py +126 -0
- polyrob-0.5.0/core/container.py +462 -0
- polyrob-0.5.0/core/db_manifest.py +101 -0
- polyrob-0.5.0/core/embedding.py +57 -0
- polyrob-0.5.0/core/env.py +39 -0
- polyrob-0.5.0/core/exceptions.py +287 -0
- polyrob-0.5.0/core/flags.py +144 -0
- polyrob-0.5.0/core/flags_catalog.py +345 -0
- polyrob-0.5.0/core/home_migration.py +62 -0
- polyrob-0.5.0/core/identity.py +118 -0
- polyrob-0.5.0/core/initialization.py +1004 -0
- polyrob-0.5.0/core/instance.py +537 -0
- polyrob-0.5.0/core/interactive_gate.py +96 -0
- polyrob-0.5.0/core/logging.py +436 -0
- polyrob-0.5.0/core/owner_doc_writer.py +176 -0
- polyrob-0.5.0/core/pairing.py +193 -0
- polyrob-0.5.0/core/path_safety.py +20 -0
- polyrob-0.5.0/core/paths.py +27 -0
- polyrob-0.5.0/core/payment_config.py +21 -0
- polyrob-0.5.0/core/permissions.py +322 -0
- polyrob-0.5.0/core/runtime_config.py +96 -0
- polyrob-0.5.0/core/runtime_paths.py +135 -0
- polyrob-0.5.0/core/seams.py +35 -0
- polyrob-0.5.0/core/secret_scan.py +25 -0
- polyrob-0.5.0/core/secret_scrub.py +71 -0
- polyrob-0.5.0/core/secrets.py +35 -0
- polyrob-0.5.0/core/security_logging_filter.py +148 -0
- polyrob-0.5.0/core/self_context_writer.py +333 -0
- polyrob-0.5.0/core/self_evolution.py +294 -0
- polyrob-0.5.0/core/session_context.py +47 -0
- polyrob-0.5.0/core/sqlite_util.py +59 -0
- polyrob-0.5.0/core/surfaces/__init__.py +16 -0
- polyrob-0.5.0/core/surfaces/access.py +118 -0
- polyrob-0.5.0/core/surfaces/binding.py +88 -0
- polyrob-0.5.0/core/surfaces/bootstrap.py +78 -0
- polyrob-0.5.0/core/surfaces/circuit.py +168 -0
- polyrob-0.5.0/core/surfaces/continuity.py +77 -0
- polyrob-0.5.0/core/surfaces/correspondents.py +228 -0
- polyrob-0.5.0/core/surfaces/dispatcher.py +216 -0
- polyrob-0.5.0/core/surfaces/envelopes.py +75 -0
- polyrob-0.5.0/core/surfaces/gc.py +30 -0
- polyrob-0.5.0/core/surfaces/idempotency.py +57 -0
- polyrob-0.5.0/core/surfaces/inbound_webhook.py +124 -0
- polyrob-0.5.0/core/surfaces/media.py +32 -0
- polyrob-0.5.0/core/surfaces/message_router.py +91 -0
- polyrob-0.5.0/core/surfaces/outbound_allowlist.py +80 -0
- polyrob-0.5.0/core/surfaces/outbound_dispatcher.py +110 -0
- polyrob-0.5.0/core/surfaces/outbound_mirror.py +37 -0
- polyrob-0.5.0/core/surfaces/outbound_queue.py +107 -0
- polyrob-0.5.0/core/surfaces/outbound_target.py +12 -0
- polyrob-0.5.0/core/surfaces/owner_admin.py +29 -0
- polyrob-0.5.0/core/surfaces/proactive.py +78 -0
- polyrob-0.5.0/core/surfaces/progress.py +108 -0
- polyrob-0.5.0/core/surfaces/rate_bucket.py +21 -0
- polyrob-0.5.0/core/surfaces/registry.py +51 -0
- polyrob-0.5.0/core/surfaces/rendering.py +53 -0
- polyrob-0.5.0/core/surfaces/send_policy.py +14 -0
- polyrob-0.5.0/core/surfaces/serialize.py +24 -0
- polyrob-0.5.0/core/surfaces/session_chat_registry.py +112 -0
- polyrob-0.5.0/core/surfaces/session_policy.py +60 -0
- polyrob-0.5.0/core/surfaces/surface.py +288 -0
- polyrob-0.5.0/core/surfaces/transcription.py +88 -0
- polyrob-0.5.0/core/surfaces/voice_echo.py +26 -0
- polyrob-0.5.0/core/surfaces/voice_guard.py +23 -0
- polyrob-0.5.0/core/tickers.py +174 -0
- polyrob-0.5.0/core/tool_catalog.py +192 -0
- polyrob-0.5.0/core/version.py +75 -0
- polyrob-0.5.0/core/wallet/__init__.py +5 -0
- polyrob-0.5.0/core/wallet/agent_wallet.py +59 -0
- polyrob-0.5.0/core/wallet/audit_sink.py +61 -0
- polyrob-0.5.0/core/wallet/config.py +70 -0
- polyrob-0.5.0/core/wallet/factory.py +87 -0
- polyrob-0.5.0/core/wallet/policy.py +104 -0
- polyrob-0.5.0/core/wallet/signer.py +51 -0
- polyrob-0.5.0/cron/README.md +65 -0
- polyrob-0.5.0/cron/__init__.py +0 -0
- polyrob-0.5.0/cron/delivery.py +277 -0
- polyrob-0.5.0/cron/digest.py +124 -0
- polyrob-0.5.0/cron/jobs.py +207 -0
- polyrob-0.5.0/cron/runner.py +297 -0
- polyrob-0.5.0/cron/schedule.py +194 -0
- polyrob-0.5.0/cron/scheduler.py +201 -0
- polyrob-0.5.0/cron/service.py +57 -0
- polyrob-0.5.0/cron/wake_gate.py +223 -0
- polyrob-0.5.0/data/__init__.py +1 -0
- polyrob-0.5.0/data/prompts/autov2_prompts.json +87 -0
- polyrob-0.5.0/data/prompts/skills/browser-automation/SKILL.md +43 -0
- polyrob-0.5.0/data/prompts/skills/coding-workflow/SKILL.md +36 -0
- polyrob-0.5.0/data/prompts/skills/crypto-trading-safety/SKILL.md +53 -0
- polyrob-0.5.0/data/prompts/skills/document-writing/SKILL.md +33 -0
- polyrob-0.5.0/data/prompts/skills/email-comms/SKILL.md +33 -0
- polyrob-0.5.0/data/prompts/skills/file-data-ops/SKILL.md +35 -0
- polyrob-0.5.0/data/prompts/skills/hyperliquid-account-review/SKILL.md +48 -0
- polyrob-0.5.0/data/prompts/skills/hyperliquid-market-data/SKILL.md +52 -0
- polyrob-0.5.0/data/prompts/skills/hyperliquid-trading/SKILL.md +59 -0
- polyrob-0.5.0/data/prompts/skills/lead-research/SKILL.md +86 -0
- polyrob-0.5.0/data/prompts/skills/market-research-brief/SKILL.md +104 -0
- polyrob-0.5.0/data/prompts/skills/person-analyzer/SKILL.md +124 -0
- polyrob-0.5.0/data/prompts/skills/polymarket-market-research/SKILL.md +54 -0
- polyrob-0.5.0/data/prompts/skills/polymarket-portfolio-review/SKILL.md +50 -0
- polyrob-0.5.0/data/prompts/skills/polymarket-trading/SKILL.md +55 -0
- polyrob-0.5.0/data/prompts/skills/presentation-creator/SKILL.md +36 -0
- polyrob-0.5.0/data/prompts/skills/project-analyzer/SKILL.md +169 -0
- polyrob-0.5.0/data/prompts/skills/rules.json +268 -0
- polyrob-0.5.0/data/prompts/skills/secret-handling/SKILL.md +20 -0
- polyrob-0.5.0/data/prompts/skills/skill-authoring/SKILL.md +31 -0
- polyrob-0.5.0/data/prompts/skills/skill-security-review/SKILL.md +27 -0
- polyrob-0.5.0/data/prompts/skills/social-discovery/SKILL.md +57 -0
- polyrob-0.5.0/data/prompts/skills/task-planning/SKILL.md +33 -0
- polyrob-0.5.0/data/prompts/skills/web-research/SKILL.md +39 -0
- polyrob-0.5.0/data/prompts/skills/web-scraping/SKILL.md +73 -0
- polyrob-0.5.0/data/prompts/skills/x-engagement/SKILL.md +69 -0
- polyrob-0.5.0/data/prompts/system_prompts.json +4 -0
- polyrob-0.5.0/data/subscription_channels.json +5 -0
- polyrob-0.5.0/modules/README.md +503 -0
- polyrob-0.5.0/modules/__init__.py +124 -0
- polyrob-0.5.0/modules/auth/__init__.py +13 -0
- polyrob-0.5.0/modules/auth/api_key_manager.py +157 -0
- polyrob-0.5.0/modules/auth/identity_mapper.py +380 -0
- polyrob-0.5.0/modules/auth/siwe_auth.py +273 -0
- polyrob-0.5.0/modules/auth/tier_manager.py +173 -0
- polyrob-0.5.0/modules/base_module.py +190 -0
- polyrob-0.5.0/modules/credits/__init__.py +29 -0
- polyrob-0.5.0/modules/credits/balance_manager.py +237 -0
- polyrob-0.5.0/modules/credits/cost_utils.py +129 -0
- polyrob-0.5.0/modules/credits/pricing.py +139 -0
- polyrob-0.5.0/modules/credits/unified_ledger.py +148 -0
- polyrob-0.5.0/modules/credits/usage_meter.py +310 -0
- polyrob-0.5.0/modules/credits/usage_tracker.py +674 -0
- polyrob-0.5.0/modules/database/__init__.py +33 -0
- polyrob-0.5.0/modules/database/audit_log.py +322 -0
- polyrob-0.5.0/modules/database/auth_tables.py +276 -0
- polyrob-0.5.0/modules/database/connection.py +644 -0
- polyrob-0.5.0/modules/database/connection_pool.py +305 -0
- polyrob-0.5.0/modules/database/conversation_contexts.py +446 -0
- polyrob-0.5.0/modules/database/database_manager.py +237 -0
- polyrob-0.5.0/modules/database/hyperliquid.py +375 -0
- polyrob-0.5.0/modules/database/polymarket.py +574 -0
- polyrob-0.5.0/modules/database/user_mcp_servers.py +728 -0
- polyrob-0.5.0/modules/database/user_profiles.py +562 -0
- polyrob-0.5.0/modules/database/utils.py +107 -0
- polyrob-0.5.0/modules/database/x402_tables.py +92 -0
- polyrob-0.5.0/modules/eip8004/README.md +1069 -0
- polyrob-0.5.0/modules/eip8004/__init__.py +65 -0
- polyrob-0.5.0/modules/eip8004/contracts.py +498 -0
- polyrob-0.5.0/modules/eip8004/models.py +271 -0
- polyrob-0.5.0/modules/eip8004/registration.py +148 -0
- polyrob-0.5.0/modules/eip8004/reputation.py +367 -0
- polyrob-0.5.0/modules/eip8004/validation.py +277 -0
- polyrob-0.5.0/modules/llm/__init__.py +97 -0
- polyrob-0.5.0/modules/llm/adapters.py +963 -0
- polyrob-0.5.0/modules/llm/anthropic_client.py +831 -0
- polyrob-0.5.0/modules/llm/available_models.py +106 -0
- polyrob-0.5.0/modules/llm/brain_scrubber.py +137 -0
- polyrob-0.5.0/modules/llm/cache_hints.py +162 -0
- polyrob-0.5.0/modules/llm/deepseek_client.py +562 -0
- polyrob-0.5.0/modules/llm/gemini_client.py +1367 -0
- polyrob-0.5.0/modules/llm/llm_client.py +1139 -0
- polyrob-0.5.0/modules/llm/llm_client_registry.py +188 -0
- polyrob-0.5.0/modules/llm/llm_factory.py +237 -0
- polyrob-0.5.0/modules/llm/llm_manager.py +1036 -0
- polyrob-0.5.0/modules/llm/messages.py +374 -0
- polyrob-0.5.0/modules/llm/model_registry.py +1935 -0
- polyrob-0.5.0/modules/llm/nvidia_client.py +125 -0
- polyrob-0.5.0/modules/llm/openai_client.py +800 -0
- polyrob-0.5.0/modules/llm/openrouter_client.py +969 -0
- polyrob-0.5.0/modules/llm/profiles.py +178 -0
- polyrob-0.5.0/modules/llm/test_anthropic_cache_capture.py +35 -0
- polyrob-0.5.0/modules/llm/test_cached_pricing_derivation.py +24 -0
- polyrob-0.5.0/modules/llm/think_scrubber.py +444 -0
- polyrob-0.5.0/modules/llm/token_counter.py +268 -0
- polyrob-0.5.0/modules/memory/__init__.py +35 -0
- polyrob-0.5.0/modules/memory/backend_factory.py +83 -0
- polyrob-0.5.0/modules/memory/cache_manager.py +186 -0
- polyrob-0.5.0/modules/memory/episodic.py +108 -0
- polyrob-0.5.0/modules/memory/local_vector_memory_provider.py +552 -0
- polyrob-0.5.0/modules/memory/memory_manager.py +225 -0
- polyrob-0.5.0/modules/memory/models.py +312 -0
- polyrob-0.5.0/modules/memory/provider.py +210 -0
- polyrob-0.5.0/modules/memory/registry.py +205 -0
- polyrob-0.5.0/modules/memory/sqlite_memory_provider.py +767 -0
- polyrob-0.5.0/modules/memory/task/__init__.py +52 -0
- polyrob-0.5.0/modules/memory/task/compaction_manager.py +157 -0
- polyrob-0.5.0/modules/memory/task/context_retriever.py +809 -0
- polyrob-0.5.0/modules/memory/task/hierarchical_memory.py +1002 -0
- polyrob-0.5.0/modules/memory/task/lexical_retriever.py +71 -0
- polyrob-0.5.0/modules/memory/task/null_context_manager.py +213 -0
- polyrob-0.5.0/modules/memory/task/phase_manager.py +625 -0
- polyrob-0.5.0/modules/memory/task/reflection_service.py +157 -0
- polyrob-0.5.0/modules/memory/task/semantic_retriever.py +218 -0
- polyrob-0.5.0/modules/memory/task/task_context_manager.py +1165 -0
- polyrob-0.5.0/modules/memory/task/test_forgetting_engages.py +24 -0
- polyrob-0.5.0/modules/memory/task/test_reflection_llm.py +39 -0
- polyrob-0.5.0/modules/memory/task/test_threat_scan.py +53 -0
- polyrob-0.5.0/modules/memory/task/threat_scan.py +90 -0
- polyrob-0.5.0/modules/memory/test_sqlite_memory_provider.py +106 -0
- polyrob-0.5.0/modules/memory/user_profile_manager.py +527 -0
- polyrob-0.5.0/modules/payments/__init__.py +11 -0
- polyrob-0.5.0/modules/payments/deposit_monitor.py +478 -0
- polyrob-0.5.0/modules/payments/price_oracle.py +70 -0
- polyrob-0.5.0/modules/payments/treasury_sweeper.py +401 -0
- polyrob-0.5.0/modules/payments/wallet_generator.py +145 -0
- polyrob-0.5.0/modules/pfp/__init__.py +1 -0
- polyrob-0.5.0/modules/pfp/config.py +92 -0
- polyrob-0.5.0/modules/pfp/mesh.py +565 -0
- polyrob-0.5.0/modules/pfp/push.py +69 -0
- polyrob-0.5.0/modules/pfp/renderer.py +85 -0
- polyrob-0.5.0/modules/pfp/store.py +82 -0
- polyrob-0.5.0/modules/skills/__init__.py +1 -0
- polyrob-0.5.0/modules/skills/skill_usage.py +248 -0
- polyrob-0.5.0/modules/transcription/__init__.py +24 -0
- polyrob-0.5.0/modules/transcription/base.py +20 -0
- polyrob-0.5.0/modules/transcription/faster_whisper_transcriber.py +55 -0
- polyrob-0.5.0/modules/x402/README.md +249 -0
- polyrob-0.5.0/modules/x402/__init__.py +22 -0
- polyrob-0.5.0/modules/x402/invoicing.py +416 -0
- polyrob-0.5.0/modules/x402/middleware.py +364 -0
- polyrob-0.5.0/modules/x402/settlement_watcher.py +145 -0
- polyrob-0.5.0/modules/x402/x402_integration.py +344 -0
- polyrob-0.5.0/polyrob.egg-info/PKG-INFO +482 -0
- polyrob-0.5.0/polyrob.egg-info/SOURCES.txt +767 -0
- polyrob-0.5.0/polyrob.egg-info/dependency_links.txt +1 -0
- polyrob-0.5.0/polyrob.egg-info/entry_points.txt +2 -0
- polyrob-0.5.0/polyrob.egg-info/requires.txt +75 -0
- polyrob-0.5.0/polyrob.egg-info/top_level.txt +12 -0
- polyrob-0.5.0/pyproject.toml +69 -0
- polyrob-0.5.0/setup.cfg +4 -0
- polyrob-0.5.0/surfaces/README.md +70 -0
- polyrob-0.5.0/surfaces/__init__.py +0 -0
- polyrob-0.5.0/surfaces/email/__init__.py +0 -0
- polyrob-0.5.0/surfaces/email/dedup.py +44 -0
- polyrob-0.5.0/surfaces/email/harness.py +187 -0
- polyrob-0.5.0/surfaces/email/inbound.py +159 -0
- polyrob-0.5.0/surfaces/email/seed.py +60 -0
- polyrob-0.5.0/surfaces/email/surface.py +105 -0
- polyrob-0.5.0/surfaces/telegram/__init__.py +0 -0
- polyrob-0.5.0/surfaces/telegram/dedup.py +83 -0
- polyrob-0.5.0/surfaces/telegram/harness.py +886 -0
- polyrob-0.5.0/surfaces/telegram/inbound.py +145 -0
- polyrob-0.5.0/surfaces/telegram/interactive_tools.py +49 -0
- polyrob-0.5.0/surfaces/telegram/markdown.py +347 -0
- polyrob-0.5.0/surfaces/telegram/rate_limit.py +167 -0
- polyrob-0.5.0/surfaces/telegram/surface.py +187 -0
- polyrob-0.5.0/surfaces/telegram/voice.py +52 -0
- polyrob-0.5.0/surfaces/whatsapp/__init__.py +0 -0
- polyrob-0.5.0/surfaces/whatsapp/client.py +51 -0
- polyrob-0.5.0/surfaces/whatsapp/harness.py +62 -0
- polyrob-0.5.0/surfaces/whatsapp/inbound.py +132 -0
- polyrob-0.5.0/surfaces/whatsapp/surface.py +64 -0
- polyrob-0.5.0/surfaces/whatsapp/window.py +34 -0
- polyrob-0.5.0/tests/test_a2a_live.py +399 -0
- polyrob-0.5.0/tests/test_a2a_protocol.py +553 -0
- polyrob-0.5.0/tests/test_accessibility_snapshot.py +153 -0
- polyrob-0.5.0/tests/test_changelog_release.py +29 -0
- polyrob-0.5.0/tests/test_core_platform_boundary.py +276 -0
- polyrob-0.5.0/tests/test_core_server_boundary.py +106 -0
- polyrob-0.5.0/tests/test_dynamic_pricing.py +118 -0
- polyrob-0.5.0/tests/test_embedder_needed.py +41 -0
- polyrob-0.5.0/tests/test_gemini_fixes.py +484 -0
- polyrob-0.5.0/tests/test_import_layering.py +94 -0
- polyrob-0.5.0/tests/test_lazy_embedder.py +39 -0
- polyrob-0.5.0/tests/test_llm_timeout_ssot.py +16 -0
- polyrob-0.5.0/tests/test_mcp_tool_fix.py +101 -0
- polyrob-0.5.0/tests/test_public_files_present.py +18 -0
- polyrob-0.5.0/tests/test_rename_tail.py +14 -0
- polyrob-0.5.0/tests/test_schema_version.py +35 -0
- polyrob-0.5.0/tests/test_version_consistency.py +105 -0
- polyrob-0.5.0/tools/README.md +578 -0
- polyrob-0.5.0/tools/__init__.py +424 -0
- polyrob-0.5.0/tools/alchemy/__init__.py +5 -0
- polyrob-0.5.0/tools/alchemy/alchemy_tool.py +389 -0
- polyrob-0.5.0/tools/anysite/__init__.py +17 -0
- polyrob-0.5.0/tools/anysite/client.py +88 -0
- polyrob-0.5.0/tools/anysite/tool.py +89 -0
- polyrob-0.5.0/tools/base_tool.py +468 -0
- polyrob-0.5.0/tools/browser/__init__.py +22 -0
- polyrob-0.5.0/tools/browser/actions.py +118 -0
- polyrob-0.5.0/tools/browser/browser.py +1457 -0
- polyrob-0.5.0/tools/browser/browser_manager.py +690 -0
- polyrob-0.5.0/tools/browser/context.py +1748 -0
- polyrob-0.5.0/tools/browser/playwright_utils.py +137 -0
- polyrob-0.5.0/tools/browser/views.py +56 -0
- polyrob-0.5.0/tools/code_exec/SANDBOX_SECURITY.md +144 -0
- polyrob-0.5.0/tools/code_exec/__init__.py +178 -0
- polyrob-0.5.0/tools/code_exec/backend.py +73 -0
- polyrob-0.5.0/tools/code_exec/backends/__init__.py +1 -0
- polyrob-0.5.0/tools/code_exec/backends/docker.py +779 -0
- polyrob-0.5.0/tools/code_exec/backends/local_subprocess.py +154 -0
- polyrob-0.5.0/tools/code_exec/env_policy.py +45 -0
- polyrob-0.5.0/tools/code_exec/result.py +42 -0
- polyrob-0.5.0/tools/code_exec/sandbox_guard.py +59 -0
- polyrob-0.5.0/tools/code_exec/tool.py +227 -0
- polyrob-0.5.0/tools/coding/__init__.py +50 -0
- polyrob-0.5.0/tools/coding/edit.py +107 -0
- polyrob-0.5.0/tools/coding/search.py +113 -0
- polyrob-0.5.0/tools/coding/tool.py +353 -0
- polyrob-0.5.0/tools/collabland/__init__.py +5 -0
- polyrob-0.5.0/tools/collabland/collabland_tool.py +471 -0
- polyrob-0.5.0/tools/controller/__init__.py +0 -0
- polyrob-0.5.0/tools/controller/_helpers.py +165 -0
- polyrob-0.5.0/tools/controller/action_registration.py +1765 -0
- polyrob-0.5.0/tools/controller/approval.py +244 -0
- polyrob-0.5.0/tools/controller/approval_interactive.py +90 -0
- polyrob-0.5.0/tools/controller/delegation.py +195 -0
- polyrob-0.5.0/tools/controller/execution.py +797 -0
- polyrob-0.5.0/tools/controller/execution_context.py +141 -0
- polyrob-0.5.0/tools/controller/hooks.py +135 -0
- polyrob-0.5.0/tools/controller/introspection.py +344 -0
- polyrob-0.5.0/tools/controller/mcp_registrar.py +190 -0
- polyrob-0.5.0/tools/controller/message_send.py +31 -0
- polyrob-0.5.0/tools/controller/registry/__init__.py +4 -0
- polyrob-0.5.0/tools/controller/registry/schema_generators.py +395 -0
- polyrob-0.5.0/tools/controller/registry/schema_sanitizer.py +406 -0
- polyrob-0.5.0/tools/controller/registry/service.py +1266 -0
- polyrob-0.5.0/tools/controller/registry/views.py +151 -0
- polyrob-0.5.0/tools/controller/service.py +409 -0
- polyrob-0.5.0/tools/controller/tool_management.py +334 -0
- polyrob-0.5.0/tools/controller/types.py +28 -0
- polyrob-0.5.0/tools/controller/views.py +450 -0
- polyrob-0.5.0/tools/cronjob_tools.py +166 -0
- polyrob-0.5.0/tools/crypto_trade_gate.py +59 -0
- polyrob-0.5.0/tools/descriptors.py +452 -0
- polyrob-0.5.0/tools/dom/__init__.py +0 -0
- polyrob-0.5.0/tools/dom/history_tree_processor/service.py +244 -0
- polyrob-0.5.0/tools/dom/history_tree_processor/view.py +99 -0
- polyrob-0.5.0/tools/dom/service.py +471 -0
- polyrob-0.5.0/tools/dom/views.py +346 -0
- polyrob-0.5.0/tools/email_tool.py +403 -0
- polyrob-0.5.0/tools/exceptions.py +169 -0
- polyrob-0.5.0/tools/filesystem.py +1038 -0
- polyrob-0.5.0/tools/filesystem_docproc.py +331 -0
- polyrob-0.5.0/tools/filesystem_pdf.py +755 -0
- polyrob-0.5.0/tools/git/__init__.py +42 -0
- polyrob-0.5.0/tools/git/tool.py +258 -0
- polyrob-0.5.0/tools/github/__init__.py +33 -0
- polyrob-0.5.0/tools/github/client.py +94 -0
- polyrob-0.5.0/tools/github/tool.py +237 -0
- polyrob-0.5.0/tools/goal_tools.py +309 -0
- polyrob-0.5.0/tools/hyperliquid/__init__.py +56 -0
- polyrob-0.5.0/tools/hyperliquid/models.py +233 -0
- polyrob-0.5.0/tools/hyperliquid/service.py +1680 -0
- polyrob-0.5.0/tools/knowledge_ingest.py +950 -0
- polyrob-0.5.0/tools/mcp/README.md +535 -0
- polyrob-0.5.0/tools/mcp/__init__.py +52 -0
- polyrob-0.5.0/tools/mcp/catalog.py +115 -0
- polyrob-0.5.0/tools/mcp/config.py +337 -0
- polyrob-0.5.0/tools/mcp/mcp_tool.py +1415 -0
- polyrob-0.5.0/tools/mcp/param_coercion.py +289 -0
- polyrob-0.5.0/tools/mcp/protocol.py +1520 -0
- polyrob-0.5.0/tools/mcp/rate_limit.py +50 -0
- polyrob-0.5.0/tools/mcp/security.py +424 -0
- polyrob-0.5.0/tools/mcp/self_install.py +111 -0
- polyrob-0.5.0/tools/mcp/server_manager.py +829 -0
- polyrob-0.5.0/tools/mcp/subscriptions.py +72 -0
- polyrob-0.5.0/tools/mcp/user_mcp_service.py +899 -0
- polyrob-0.5.0/tools/mcp/validation_tracker.py +89 -0
- polyrob-0.5.0/tools/mcp/views.py +346 -0
- polyrob-0.5.0/tools/oauth/__init__.py +17 -0
- polyrob-0.5.0/tools/oauth/manager.py +75 -0
- polyrob-0.5.0/tools/oauth/provider.py +69 -0
- polyrob-0.5.0/tools/oauth/providers/__init__.py +1 -0
- polyrob-0.5.0/tools/oauth/providers/generic_oauth2.py +96 -0
- polyrob-0.5.0/tools/perplexity_tool.py +280 -0
- polyrob-0.5.0/tools/polymarket/__init__.py +41 -0
- polyrob-0.5.0/tools/polymarket/clob_adapter.py +76 -0
- polyrob-0.5.0/tools/polymarket/models.py +182 -0
- polyrob-0.5.0/tools/polymarket/service.py +2082 -0
- polyrob-0.5.0/tools/self_env/__init__.py +61 -0
- polyrob-0.5.0/tools/self_env/tool.py +274 -0
- polyrob-0.5.0/tools/shell/__init__.py +80 -0
- polyrob-0.5.0/tools/shell/backend_pool.py +118 -0
- polyrob-0.5.0/tools/shell/discipline.py +62 -0
- polyrob-0.5.0/tools/shell/executor.py +157 -0
- polyrob-0.5.0/tools/shell/loopback_allow.py +87 -0
- polyrob-0.5.0/tools/shell/process_registry.py +113 -0
- polyrob-0.5.0/tools/shell/process_tool.py +131 -0
- polyrob-0.5.0/tools/shell/state.py +129 -0
- polyrob-0.5.0/tools/shell/tool.py +151 -0
- polyrob-0.5.0/tools/task_tool.py +637 -0
- polyrob-0.5.0/tools/twitter_tool.py +2086 -0
- polyrob-0.5.0/tools/user_directory.py +179 -0
- polyrob-0.5.0/tools/web_fetch/__init__.py +3 -0
- polyrob-0.5.0/tools/web_fetch/fetcher.py +144 -0
- polyrob-0.5.0/tools/web_fetch/render.py +44 -0
- polyrob-0.5.0/tools/web_fetch/tool.py +60 -0
- polyrob-0.5.0/tools/x402/__init__.py +60 -0
- polyrob-0.5.0/tools/x402/client.py +47 -0
- polyrob-0.5.0/tools/x402/invoice_tool.py +143 -0
- polyrob-0.5.0/tools/x402/real_client.py +250 -0
- polyrob-0.5.0/tools/x402/service.py +131 -0
- polyrob-0.5.0/utils/README.md +498 -0
- polyrob-0.5.0/utils/__init__.py +46 -0
- polyrob-0.5.0/utils/auth_utils.py +114 -0
- polyrob-0.5.0/utils/bounded_collections.py +162 -0
- polyrob-0.5.0/utils/circuit_breaker.py +389 -0
- polyrob-0.5.0/utils/gif_utils.py +435 -0
- polyrob-0.5.0/utils/markdown_utils.py +291 -0
- polyrob-0.5.0/utils/message_utils.py +147 -0
- polyrob-0.5.0/utils/metrics.py +36 -0
- polyrob-0.5.0/utils/path_validator.py +227 -0
- polyrob-0.5.0/utils/rate_limit_manager.py +399 -0
- polyrob-0.5.0/utils/result_size.py +296 -0
- polyrob-0.5.0/utils/time_utils.py +206 -0
- polyrob-0.5.0/utils/user_utils.py +188 -0
- polyrob-0.5.0/webview/README.md +111 -0
- polyrob-0.5.0/webview/RENAME_AND_ALIGN_HANDOFF.md +200 -0
- polyrob-0.5.0/webview/__init__.py +8 -0
- polyrob-0.5.0/webview/activity.py +636 -0
- polyrob-0.5.0/webview/owner_auth.py +108 -0
- polyrob-0.5.0/webview/pages.py +448 -0
- polyrob-0.5.0/webview/repair_sessions.py +399 -0
- polyrob-0.5.0/webview/server.py +4323 -0
- polyrob-0.5.0/webview/server_launcher.py +112 -0
- polyrob-0.5.0/webview/static/css/activity.css +89 -0
- polyrob-0.5.0/webview/static/css/chat.css +1772 -0
- polyrob-0.5.0/webview/static/css/components.css +1190 -0
- polyrob-0.5.0/webview/static/css/config-panel.css +651 -0
- polyrob-0.5.0/webview/static/css/pages/admin.css +766 -0
- polyrob-0.5.0/webview/static/css/pages/profile.css +231 -0
- polyrob-0.5.0/webview/static/css/pages/settings.css +297 -0
- polyrob-0.5.0/webview/static/css/pages/signin.css +316 -0
- polyrob-0.5.0/webview/static/css/style.css +4250 -0
- polyrob-0.5.0/webview/static/css/variables.css +147 -0
- polyrob-0.5.0/webview/static/css/workspace-fullwidth-fix.css +109 -0
- polyrob-0.5.0/webview/static/img/favicon.ico +0 -0
- polyrob-0.5.0/webview/static/js/activity.js +394 -0
- polyrob-0.5.0/webview/static/js/admin/activity.js +186 -0
- polyrob-0.5.0/webview/static/js/admin/dashboard.js +163 -0
- polyrob-0.5.0/webview/static/js/admin/user_detail.js +400 -0
- polyrob-0.5.0/webview/static/js/admin/users.js +174 -0
- polyrob-0.5.0/webview/static/js/admin/utils.js +214 -0
- polyrob-0.5.0/webview/static/js/chat.js +3178 -0
- polyrob-0.5.0/webview/static/js/config-panel.js +522 -0
- polyrob-0.5.0/webview/static/js/constants.js +20 -0
- polyrob-0.5.0/webview/static/js/error-handler.js +226 -0
- polyrob-0.5.0/webview/static/js/ethers.min.js +1 -0
- polyrob-0.5.0/webview/static/js/event-filter.js +137 -0
- polyrob-0.5.0/webview/static/js/event-store.js +351 -0
- polyrob-0.5.0/webview/static/js/file-attachments.js +374 -0
- polyrob-0.5.0/webview/static/js/file-loader.js +163 -0
- polyrob-0.5.0/webview/static/js/index.js +103 -0
- polyrob-0.5.0/webview/static/js/performance-utils.js +196 -0
- polyrob-0.5.0/webview/static/js/profile.js +396 -0
- polyrob-0.5.0/webview/static/js/screenshot.js +386 -0
- polyrob-0.5.0/webview/static/js/session.js +1527 -0
- polyrob-0.5.0/webview/static/js/settings.js +1288 -0
- polyrob-0.5.0/webview/static/js/sidebar-data.js +766 -0
- polyrob-0.5.0/webview/static/js/sidebar-toggle.js +296 -0
- polyrob-0.5.0/webview/static/js/socket.io.min.js +7 -0
- polyrob-0.5.0/webview/static/js/stats.js +355 -0
- polyrob-0.5.0/webview/static/js/ui-utils.js +420 -0
- polyrob-0.5.0/webview/static/js/workspace.js +966 -0
- polyrob-0.5.0/webview/stats_service.py +613 -0
- polyrob-0.5.0/webview/templates/__init__.py +1 -0
- polyrob-0.5.0/webview/templates/__pycache__/__init__.cpython-311.pyc +0 -0
- polyrob-0.5.0/webview/templates/activity.html +36 -0
- polyrob-0.5.0/webview/templates/admin/activity.html +122 -0
- polyrob-0.5.0/webview/templates/admin/dashboard.html +112 -0
- polyrob-0.5.0/webview/templates/admin/user_detail.html +228 -0
- polyrob-0.5.0/webview/templates/admin/users.html +105 -0
- polyrob-0.5.0/webview/templates/autonomy.html +60 -0
- polyrob-0.5.0/webview/templates/error.html +133 -0
- polyrob-0.5.0/webview/templates/finance.html +90 -0
- polyrob-0.5.0/webview/templates/identity.html +73 -0
- polyrob-0.5.0/webview/templates/index.html +42 -0
- polyrob-0.5.0/webview/templates/layout.html +125 -0
- polyrob-0.5.0/webview/templates/memory.html +59 -0
- polyrob-0.5.0/webview/templates/owner_login.html +15 -0
- polyrob-0.5.0/webview/templates/profile.html +121 -0
- polyrob-0.5.0/webview/templates/session.html +312 -0
- polyrob-0.5.0/webview/templates/settings.html +534 -0
- polyrob-0.5.0/webview/templates/sidebar.html +112 -0
- polyrob-0.5.0/webview/templates/signin.html +213 -0
- polyrob-0.5.0/webview/templates/status.html +14 -0
- polyrob-0.5.0/webview/templates/system.html +45 -0
- polyrob-0.5.0/webview/webgate.py +196 -0
polyrob-0.5.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 The POLYROB Authors
|
|
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.
|
polyrob-0.5.0/PKG-INFO
ADDED
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: polyrob
|
|
3
|
+
Version: 0.5.0
|
|
4
|
+
Summary: POLYROB — autonomous AI agent framework
|
|
5
|
+
Author: The POLYROB Authors
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/theselfruleorg/polyrob
|
|
8
|
+
Project-URL: Repository, https://github.com/theselfruleorg/polyrob
|
|
9
|
+
Project-URL: Issues, https://github.com/theselfruleorg/polyrob/issues
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Requires-Python: >=3.11
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: pydantic>=2.0.0
|
|
17
|
+
Requires-Dist: pydantic-settings>=2.0.0
|
|
18
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
19
|
+
Requires-Dist: openai>=1.0.0
|
|
20
|
+
Requires-Dist: anthropic>=0.20.0
|
|
21
|
+
Requires-Dist: google-generativeai>=0.8.0
|
|
22
|
+
Requires-Dist: tiktoken>=0.7.0
|
|
23
|
+
Requires-Dist: aiohttp>=3.8.0
|
|
24
|
+
Requires-Dist: aiofiles>=23.0.0
|
|
25
|
+
Requires-Dist: aiosqlite>=0.19.0
|
|
26
|
+
Requires-Dist: requests>=2.30.0
|
|
27
|
+
Requires-Dist: certifi>=2024.0.0
|
|
28
|
+
Requires-Dist: cryptography>=40.0.0
|
|
29
|
+
Requires-Dist: pyjwt>=2.8.0
|
|
30
|
+
Requires-Dist: numpy>=1.24.0
|
|
31
|
+
Requires-Dist: pandas>=2.0.0
|
|
32
|
+
Requires-Dist: apsw>=3.46
|
|
33
|
+
Requires-Dist: sqlite-vec>=0.1.6
|
|
34
|
+
Requires-Dist: rich>=13.0.0
|
|
35
|
+
Requires-Dist: prompt_toolkit>=3.0.43
|
|
36
|
+
Requires-Dist: click>=8.0
|
|
37
|
+
Requires-Dist: colorama>=0.4.6
|
|
38
|
+
Requires-Dist: python-docx>=0.8.0
|
|
39
|
+
Requires-Dist: pypdf>=4.0.0
|
|
40
|
+
Requires-Dist: markdown>=3.5.0
|
|
41
|
+
Requires-Dist: markdownify>=0.11.0
|
|
42
|
+
Requires-Dist: pillow>=11.0.0
|
|
43
|
+
Requires-Dist: imageio>=2.37.0
|
|
44
|
+
Requires-Dist: python-magic>=0.4.27
|
|
45
|
+
Requires-Dist: nltk>=3.9.0
|
|
46
|
+
Requires-Dist: anysite-cli>=0.3
|
|
47
|
+
Requires-Dist: pyyaml>=6
|
|
48
|
+
Provides-Extra: server
|
|
49
|
+
Requires-Dist: fastapi==0.123.9; extra == "server"
|
|
50
|
+
Requires-Dist: starlette==0.50.0; extra == "server"
|
|
51
|
+
Requires-Dist: uvicorn[standard]==0.38.0; extra == "server"
|
|
52
|
+
Requires-Dist: Jinja2==3.1.6; extra == "server"
|
|
53
|
+
Requires-Dist: python-socketio>=5.11.0; extra == "server"
|
|
54
|
+
Requires-Dist: python-multipart>=0.0.6; extra == "server"
|
|
55
|
+
Requires-Dist: watchfiles>=1.0.0; extra == "server"
|
|
56
|
+
Requires-Dist: argon2-cffi>=23.1.0; extra == "server"
|
|
57
|
+
Provides-Extra: browser
|
|
58
|
+
Requires-Dist: playwright>=1.40.0; extra == "browser"
|
|
59
|
+
Provides-Extra: memory-vector
|
|
60
|
+
Requires-Dist: sentence-transformers>=3.0.0; extra == "memory-vector"
|
|
61
|
+
Provides-Extra: crypto
|
|
62
|
+
Requires-Dist: web3>=6.0.0; extra == "crypto"
|
|
63
|
+
Requires-Dist: eth-account>=0.10.0; extra == "crypto"
|
|
64
|
+
Requires-Dist: x402>=2.13.0; extra == "crypto"
|
|
65
|
+
Requires-Dist: fastapi-x402>=0.1.8; extra == "crypto"
|
|
66
|
+
Requires-Dist: hyperliquid-python-sdk>=0.21.0; extra == "crypto"
|
|
67
|
+
Requires-Dist: py-clob-client-v2>=0.1.0; extra == "crypto"
|
|
68
|
+
Provides-Extra: telegram
|
|
69
|
+
Requires-Dist: aiogram>=3.17.0; extra == "telegram"
|
|
70
|
+
Provides-Extra: twitter
|
|
71
|
+
Requires-Dist: tweepy>=4.14.0; extra == "twitter"
|
|
72
|
+
Provides-Extra: voice
|
|
73
|
+
Requires-Dist: faster-whisper>=1.0.0; extra == "voice"
|
|
74
|
+
Provides-Extra: dev
|
|
75
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
76
|
+
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
|
|
77
|
+
Requires-Dist: ruff>=0.6; extra == "dev"
|
|
78
|
+
Requires-Dist: build; extra == "dev"
|
|
79
|
+
Requires-Dist: twine; extra == "dev"
|
|
80
|
+
Provides-Extra: all
|
|
81
|
+
Requires-Dist: polyrob[browser,crypto,memory-vector,server,telegram,twitter,voice]; extra == "all"
|
|
82
|
+
Dynamic: license-file
|
|
83
|
+
|
|
84
|
+
<div align="center">
|
|
85
|
+
|
|
86
|
+
<img src="https://raw.githubusercontent.com/theselfruleorg/polyrob/main/docs/assets/polyrob-logo.png" alt="POLYROB" width="440">
|
|
87
|
+
|
|
88
|
+
### A self-hosted autonomous AI agent that pursues goals, learns from experience, and runs entirely on your own machine.
|
|
89
|
+
|
|
90
|
+
[](LICENSE)
|
|
91
|
+
[](https://www.python.org/downloads/)
|
|
92
|
+
[](https://pypi.org/project/polyrob/)
|
|
93
|
+
[](https://github.com/theselfruleorg/polyrob/actions)
|
|
94
|
+
[](https://github.com/theselfruleorg/polyrob)
|
|
95
|
+
|
|
96
|
+
**[Quick Start](#quick-start) · [Docs](#documentation) · [Examples](docs/examples.md) · [Comparison](docs/comparison.md)**
|
|
97
|
+
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
POLYROB is a self-hosted autonomous AI agent that runs on your own machine. You give it a goal in
|
|
101
|
+
plain language and it does the rest — planning the work into steps, browsing the web, reading and
|
|
102
|
+
writing files, running code and shell commands, calling external tools and APIs, and recovering
|
|
103
|
+
from its own errors until the goal is done. It works with every major LLM provider (OpenAI,
|
|
104
|
+
Anthropic, Google, DeepSeek, OpenRouter, NVIDIA NIM) and fails over between them automatically,
|
|
105
|
+
remembers what it learns across sessions, and reaches you wherever you are — your terminal, a web
|
|
106
|
+
dashboard, a REST API, or chat surfaces like Telegram and email. Switch it into personal-agent mode
|
|
107
|
+
and it becomes durably autonomous: it keeps a backlog of goals that survives restarts, writes and
|
|
108
|
+
curates its own skills from experience, wakes itself to follow up on unfinished work, and refines
|
|
109
|
+
an evolving model of how you work.
|
|
110
|
+
|
|
111
|
+
> **Self-hosted, not a SaaS.** POLYROB runs on your own machine or server. There is no hosted
|
|
112
|
+
> version — your keys, your data, your control. The core install is ~50 MB with zero cloud
|
|
113
|
+
> dependencies; everything beyond LLM calls stays on your box unless you opt in.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 🎯 Give it a goal and walk away
|
|
118
|
+
|
|
119
|
+
POLYROB doesn't just answer — it *works*, and it keeps working when you're not watching.
|
|
120
|
+
|
|
121
|
+
- **Durable goal board** — a cross-session backlog in SQLite with atomic claims and a circuit breaker that survives process restarts, so long-running or unattended work isn't lost to a reboot.
|
|
122
|
+
- **Cron in natural language** — the agent schedules its own recurring runs (`"every monday 09:00"`, `"30m"`, cron syntax), and can deliver results out-of-band to Telegram, email, or X.
|
|
123
|
+
- **Self-wake** — re-enters idle sessions to continue or follow up, with depth and backoff guards so it never loops.
|
|
124
|
+
- **Background review + curator** — a cheap aux model reviews what worked every few turns and can distill a new skill; unused skills are retired automatically and revived when relevant again.
|
|
125
|
+
- **Parallel delegation** — `delegate_task` spawns least-privilege sub-agents for concurrent workstreams (no money/comms/code-exec, can't re-delegate), sync or detached in the background.
|
|
126
|
+
|
|
127
|
+
## 🧬 It learns and gets better with use
|
|
128
|
+
|
|
129
|
+
Run POLYROB as your personal agent (`POLYROB_LOCAL=true`) and it turns experience into durable
|
|
130
|
+
capability instead of forgetting it when the task ends.
|
|
131
|
+
|
|
132
|
+
- **Reflective, hierarchical memory** — findings are organized into phases, consolidated by an LLM, and forgotten by *importance* (`recency + relevance + frequency`), not just age.
|
|
133
|
+
- **Cross-session recall** — SQLite FTS5 keyword search out of the box (zero extra deps), or optional hybrid keyword+vector recall (`sqlite-vec`) that transparently degrades to keyword search if the extension can't load — the agent keeps working either way.
|
|
134
|
+
- **Episodic activity log** — a durable "what happened last time" ledger bridges each new session so it never starts cold.
|
|
135
|
+
- **Writes its own skills** — authored through a scanned, quarantined pipeline; every self-modification is reviewed before it takes effect, so a background turn can never silently rewrite a skill or the agent's identity.
|
|
136
|
+
- **Evolving identity** — a per-user self-doc the agent updates (owner-gated) as it learns how you work.
|
|
137
|
+
|
|
138
|
+
Skills use the open [agentskills.io](https://agentskills.io) `SKILL.md` format — the same format as
|
|
139
|
+
Claude Code, read straight from `~/.claude/skills/`. Install from a local folder, a GitHub repo, or
|
|
140
|
+
a `SKILL.md` URL: `polyrob skill install <spec>` threat-scans, quarantines, and waits for your
|
|
141
|
+
explicit approval. See **[docs/guide/skills.md](docs/guide/skills.md)**.
|
|
142
|
+
|
|
143
|
+
## 🛠️ A real toolbox
|
|
144
|
+
|
|
145
|
+
- **Web, two ways** — a lightweight `web_fetch` returns any URL as clean markdown with **no browser install needed**, or full **Playwright** automation (navigate/click/type/screenshot/DOM extract, anti-detection) when you need it.
|
|
146
|
+
- **MCP client** — connect any Model Context Protocol server over **STDIO, SSE, HTTP, or Streamable HTTP**, with auto tool-discovery, per-server circuit breakers, encrypted secrets, and live resource subscriptions.
|
|
147
|
+
- **Structured web data** — the AnySite tool pulls structured data from **200+ sites and platforms**; Perplexity-backed search; Twitter/X and Gmail tools.
|
|
148
|
+
- **Code & files** — file/CSV/JSON handling, built-in coding tools (`str_replace` / `apply_patch` / `run_tests` / grep), git & GitHub tools, and opt-in sandboxed code execution.
|
|
149
|
+
- **Vision** — reasons over screenshots and images.
|
|
150
|
+
|
|
151
|
+
## 🔌 Use it from anywhere
|
|
152
|
+
|
|
153
|
+
One agent core, many front doors:
|
|
154
|
+
|
|
155
|
+
- **Terminal** — run `polyrob` to talk to the agent: live tool transcripts, secret-scrubbed output, resumable sessions, and 20+ slash commands (`/compact`, `/usage`, `/memory`, `/model`, `/self`, `/replay`, `/autonomy`).
|
|
156
|
+
- **Web dashboard** — a real-time Socket.IO console: watch the agent work, browse its workspace, preview files and browser screenshots, inspect memory and the goal board.
|
|
157
|
+
- **REST API + SSE streaming**, plus a drop-in **OpenAI-compatible `/v1`** endpoint — point any OpenAI SDK at `localhost:9000/v1`.
|
|
158
|
+
- **A2A protocol** — Google's Agent-to-Agent standard (Agent Card discovery, JSON-RPC, SSE) so other agents can discover and delegate to yours.
|
|
159
|
+
- **Chat surfaces** — Telegram (live incremental streaming + voice-note transcription), email (IMAP/SMTP), and WhatsApp.
|
|
160
|
+
|
|
161
|
+
## 🧠 Multi-provider intelligence
|
|
162
|
+
|
|
163
|
+
- **Six providers, one agent** — OpenAI, Anthropic, Google Gemini, DeepSeek, OpenRouter (Grok/Kimi/Qwen/GLM), NVIDIA NIM — behind a native LLM layer with **no third-party agent framework**.
|
|
164
|
+
- **Automatic failover** — a rate-limited or failing provider silently retries on a fallback.
|
|
165
|
+
- **Live model switching** — `/model <provider> <model>` mid-session, or per-request override on the `/v1` surface.
|
|
166
|
+
- **Cross-provider prompt caching** — cuts token cost on long sessions, with cached-token metrics surfaced per provider.
|
|
167
|
+
- **Optional extended thinking** — per-provider reasoning budgets (Anthropic thinking blocks, DeepSeek CoT, OpenAI reasoning effort), plus a scrubber that keeps leaked reasoning prose out of your history and output.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Quick Start
|
|
172
|
+
|
|
173
|
+
POLYROB targets **Python 3.11+**.
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# 1. Install (with all optional features)
|
|
177
|
+
pipx install "polyrob[all]"
|
|
178
|
+
|
|
179
|
+
# 2. Install the browser engine (for web automation)
|
|
180
|
+
python -m playwright install chromium
|
|
181
|
+
|
|
182
|
+
# 3. Configure (writes ~/.polyrob/.env)
|
|
183
|
+
polyrob init
|
|
184
|
+
|
|
185
|
+
# 4. Sanity-check your setup
|
|
186
|
+
polyrob doctor
|
|
187
|
+
|
|
188
|
+
# 5. Start it
|
|
189
|
+
polyrob
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Run `polyrob` and you're talking to the agent. Give it a task in plain language and it plans, works,
|
|
193
|
+
and reports back; ask a follow-up and it keeps going. `polyrob doctor` is a real preflight — it
|
|
194
|
+
reports which provider keys resolve, the exact model it will pick, your active memory backend, and
|
|
195
|
+
workspace isolation.
|
|
196
|
+
|
|
197
|
+
**Turn on personal-agent mode** to unlock the self-evolving and goal-seeking loops (skills, curator,
|
|
198
|
+
goal board, self-wake, episodic memory):
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# ~/.polyrob/.env — single-user, on your own machine
|
|
202
|
+
POLYROB_LOCAL=true
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
<details>
|
|
206
|
+
<summary>Optional: web dashboard & REST API</summary>
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
polyrob dashboard # single-user web UI → http://localhost:5050
|
|
210
|
+
polyrob serve # local REST API → http://localhost:9000
|
|
211
|
+
polyrob gateway # run all enabled chat surfaces (Telegram/email/…) in one process
|
|
212
|
+
```
|
|
213
|
+
</details>
|
|
214
|
+
|
|
215
|
+
For a full walkthrough see **[docs/guide/getting-started.md](docs/guide/getting-started.md)**.
|
|
216
|
+
Want to contribute? See **[CONTRIBUTING.md](CONTRIBUTING.md)**.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## A taste of what it can do
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
"Research competitors in the AI automation space and write a report
|
|
224
|
+
with pricing, features, and positioning."
|
|
225
|
+
|
|
226
|
+
"Monitor this webpage daily and alert me when the price drops below $500."
|
|
227
|
+
|
|
228
|
+
"Log into my dashboard, export the monthly report, and email it to my team."
|
|
229
|
+
|
|
230
|
+
"Scrape these 50 product pages, extract pricing, and build a CSV."
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
More real-world examples → **[docs/examples.md](docs/examples.md)**
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## The terminal, done right
|
|
238
|
+
|
|
239
|
+
Run `polyrob` and you're in the agent. From inside the session, slash commands give you full control:
|
|
240
|
+
|
|
241
|
+
| In-session command | What it does |
|
|
242
|
+
|---|---|
|
|
243
|
+
| `/compact` | LLM-compresses the context window (e.g. 8,432 → 3,210 tokens) mid-session |
|
|
244
|
+
| `/usage` | Authoritative token + cost accounting from the local DB |
|
|
245
|
+
| `/model <provider> <model>` | Hot-swap the model without losing the conversation |
|
|
246
|
+
| `/memory search <q>` | Search cross-session memory inline |
|
|
247
|
+
| `/self` | View the agent's SOUL (identity) and evolving SELF doc |
|
|
248
|
+
| `/replay` | Visually replay a past session |
|
|
249
|
+
| `/autonomy` | Inspect goals, cron, and the autonomy loops |
|
|
250
|
+
|
|
251
|
+
Named toolsets (`minimal · research · coding · browser · full · safe`) let you scope exactly what
|
|
252
|
+
the agent can touch. A handful of management subcommands round it out — `polyrob doctor` (preflight),
|
|
253
|
+
`polyrob kb add/search` (local knowledge base), and `polyrob update --apply` (self-update with
|
|
254
|
+
snapshot → guarded migrate → verify → **auto-rollback** on failure).
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Full capabilities
|
|
259
|
+
|
|
260
|
+
**Core automation**
|
|
261
|
+
|
|
262
|
+
| Capability | Detail |
|
|
263
|
+
|---|---|
|
|
264
|
+
| Web reading | `web_fetch` URL→markdown, no browser needed |
|
|
265
|
+
| Browser automation | Playwright with anti-detection, vision over screenshots |
|
|
266
|
+
| Files & data | text / JSON / CSV / markdown read + write |
|
|
267
|
+
| Code | built-in coding tools + git/GitHub + opt-in sandboxed execution |
|
|
268
|
+
| Planning | multi-step decomposition with automatic error recovery |
|
|
269
|
+
|
|
270
|
+
**Intelligence & memory**
|
|
271
|
+
|
|
272
|
+
| Capability | Detail |
|
|
273
|
+
|---|---|
|
|
274
|
+
| Cross-session recall | SQLite FTS5 (default) or hybrid vector (`sqlite-vec`), tenant-scoped |
|
|
275
|
+
| Reflective memory | phase-organized, LLM-consolidated, importance-based forgetting |
|
|
276
|
+
| Adaptive context | LLM-synthesis compaction in the 85–95% band, with anti-thrash cooldown |
|
|
277
|
+
| Prompt caching | per-provider, with cached-token cost metrics |
|
|
278
|
+
| Extended thinking | optional per-provider reasoning budgets + reasoning-prose scrubber |
|
|
279
|
+
|
|
280
|
+
**Autonomy** *(personal-agent mode)*
|
|
281
|
+
|
|
282
|
+
| Capability | Detail |
|
|
283
|
+
|---|---|
|
|
284
|
+
| Durable goal board | SQLite, atomic claims, circuit breaker, daily quota — survives restarts |
|
|
285
|
+
| Cron | natural-language schedules + out-of-band delivery (Telegram/email/X) |
|
|
286
|
+
| Self-wake | re-enters idle sessions with depth/backoff guards |
|
|
287
|
+
| Self-authored skills | background review → scan → quarantine → owner approval |
|
|
288
|
+
| Skill curator | retires unused skills, revives on reuse |
|
|
289
|
+
| Delegation | least-privilege sub-agents, sync or detached background |
|
|
290
|
+
|
|
291
|
+
**Interfaces & interop**
|
|
292
|
+
|
|
293
|
+
| Capability | Detail |
|
|
294
|
+
|---|---|
|
|
295
|
+
| Terminal | `polyrob` opens the agent — live tool transcripts, 20+ slash commands, resumable sessions |
|
|
296
|
+
| Web dashboard | real-time Socket.IO feed, file browser, live screenshots |
|
|
297
|
+
| REST API | session lifecycle + mid-run guidance injection + SSE streaming |
|
|
298
|
+
| OpenAI-compatible | drop-in `/v1/chat/completions` + `/v1/models` |
|
|
299
|
+
| A2A protocol | Agent Card discovery, JSON-RPC, SSE — agent-to-agent delegation |
|
|
300
|
+
| MCP client | STDIO / SSE / HTTP / Streamable HTTP, live resource subscriptions |
|
|
301
|
+
| Chat surfaces | Telegram, email, WhatsApp — one agent core, many channels |
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Integrations
|
|
306
|
+
|
|
307
|
+
Multi-provider LLM (**OpenAI · Anthropic · Google Gemini · DeepSeek · OpenRouter · NVIDIA NIM**) ·
|
|
308
|
+
**Playwright** browser · **MCP** (STDIO/SSE/HTTP/Streamable) · **AnySite** (200+ sites) ·
|
|
309
|
+
**Perplexity** search · **Twitter/X** · **Gmail / IMAP-SMTP** · **Telegram** · **WhatsApp** ·
|
|
310
|
+
voice transcription (**faster-whisper**) · **A2A** · OpenAI-compatible `/v1` · **agentskills.io**
|
|
311
|
+
skills · **sqlite-vec** + **sentence-transformers** local RAG.
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## Safe autonomy by design
|
|
316
|
+
|
|
317
|
+
An autonomous agent that touches the web, your files, and other people needs guardrails. POLYROB
|
|
318
|
+
treats untrusted input as data — never as commands — with the core protections **on by default**:
|
|
319
|
+
|
|
320
|
+
| Layer | Protection | Default |
|
|
321
|
+
|-------|------------|---------|
|
|
322
|
+
| **Untrusted-input wrapping** | Web pages, emails, and tool results framed as data, not instructions | **On** |
|
|
323
|
+
| **Least-privilege delegation** | Sub-agents get narrowed toolsets (no money/comms/code-exec), no re-delegation | **On** |
|
|
324
|
+
| **Schema sanitization** | Hostile tool-schema constructs fixed before they reach a provider | **On** |
|
|
325
|
+
| **SSRF confinement** | `web_fetch` re-validates every redirect hop; blocks loopback/metadata/private targets | **On** |
|
|
326
|
+
| **Self-modification review** | New skills / identity edits are quarantined and reviewed before taking effect | **On** |
|
|
327
|
+
| **Code-exec isolation** | Subprocess (or hardened Docker) isolation, no inherited API keys | On when code-exec enabled |
|
|
328
|
+
| **3-tier access** | OWNER / CORRESPONDENT / DENIED routing for chat surfaces | Opt-in (`CORRESPONDENT_ACCESS_ENABLED`) |
|
|
329
|
+
| **Memory threat-scan** | Rejects injected jailbreak/persona-rewrite patterns on write | Opt-in (`MEMORY_THREAT_SCAN`) |
|
|
330
|
+
|
|
331
|
+
When you expose the agent to other people, the **3-tier access model** keeps a stranger's message as
|
|
332
|
+
*data*: **OWNER** steers the agent · **CORRESPONDENT** (a third party the agent contacted) can only
|
|
333
|
+
return data, never command · **DENIED** is blocked. A correspondent-tainted session has high-impact
|
|
334
|
+
tools (money, comms, code-exec) gated off until a genuine owner turn.
|
|
335
|
+
|
|
336
|
+
> **Chat surfaces are off by default for a reason.** When you enable them, treat inbound DMs as
|
|
337
|
+
> untrusted input — use pairing/approval, and never expose public group chats without understanding
|
|
338
|
+
> the risks.
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## Crypto & web3 *(optional, off by default)*
|
|
343
|
+
|
|
344
|
+
POLYROB can act as an economic agent when you want it to — all of it gated behind flags and off by
|
|
345
|
+
default:
|
|
346
|
+
|
|
347
|
+
- **x402 pay-per-request** — anonymous USDC micropayments (Base, Avalanche, IoTeX) via the Coinbase facilitator; the agent can both charge for its API and pay for external resources.
|
|
348
|
+
- **Native agent wallet** — an EOA wallet with per-transaction and rolling 24h spend caps; testnet by default.
|
|
349
|
+
- **ERC-8004 trustless agents** — optional on-chain agent identity + portable reputation.
|
|
350
|
+
- **SIWE** wallet auth for the multi-tenant posture.
|
|
351
|
+
|
|
352
|
+
> ⚠️ **Crypto features are unaudited.** The wallet, signing, and payment code (`crypto` extra) has
|
|
353
|
+
> **not** had any independent security audit. It ships **as-is with no warranty** and can lose
|
|
354
|
+
> funds. Enable it only at your own risk, and prefer testnets. See
|
|
355
|
+
> [SECURITY.md](SECURITY.md#crypto--wallet--payment-features).
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## Configuration essentials
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
# ~/.polyrob/.env — set any providers you have keys for
|
|
363
|
+
OPENROUTER_API_KEY=sk-or-... # recommended: one key reaches every model
|
|
364
|
+
ANTHROPIC_API_KEY=sk-ant-...
|
|
365
|
+
OPENAI_API_KEY=sk-...
|
|
366
|
+
GEMINI_API_KEY=...
|
|
367
|
+
|
|
368
|
+
# Memory backend
|
|
369
|
+
MEMORY_BACKEND=sqlite # keyword FTS5 (default, no extra deps)
|
|
370
|
+
# MEMORY_BACKEND=local_vector # semantic vector recall (pip install "polyrob[memory-vector]")
|
|
371
|
+
|
|
372
|
+
# Personal-agent mode — turns on skills/curator/goal-board/self-wake as a group
|
|
373
|
+
POLYROB_LOCAL=true
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
POLYROB falls back across providers automatically on billing or rate-limit errors; switch
|
|
377
|
+
mid-session with `/model <provider> <model>` (or `<provider>/<model>`). Configuration guide →
|
|
378
|
+
**[docs/guide/configuration.md](docs/guide/configuration.md)** · full environment-flag reference
|
|
379
|
+
(SSOT) → **[docs/CONFIGURATION.md](docs/CONFIGURATION.md)**.
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## Installation options
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
pipx install "polyrob[all]" # recommended — everything
|
|
387
|
+
pip install polyrob # core agent + keyword memory + CLI (~50 MB, zero cloud deps)
|
|
388
|
+
pip install "polyrob[browser]" # add Playwright browser automation
|
|
389
|
+
pip install "polyrob[server]" # add FastAPI REST API + WebView
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
| Extra | What it adds |
|
|
393
|
+
|-------|--------------|
|
|
394
|
+
| *(none)* | Core agent, keyword memory, CLI |
|
|
395
|
+
| `server` | FastAPI REST API + WebView (Socket.IO) |
|
|
396
|
+
| `browser` | Playwright browser automation |
|
|
397
|
+
| `memory-vector` | Semantic vector recall (sentence-transformers + sqlite-vec) |
|
|
398
|
+
| `crypto` | Web3, x402 pay-per-request, Hyperliquid |
|
|
399
|
+
| `telegram` | Telegram surface (aiogram) |
|
|
400
|
+
| `twitter` | Twitter/X integration (tweepy) |
|
|
401
|
+
| `voice` | Voice transcription (faster-whisper) |
|
|
402
|
+
| `dev` | Testing, linting, type-checking |
|
|
403
|
+
| `all` | Everything above |
|
|
404
|
+
|
|
405
|
+
### Self-hosting & deployment
|
|
406
|
+
|
|
407
|
+
Run it three ways, and the posture auto-derives from how you bind it: **`local`** (loopback, no
|
|
408
|
+
auth — the default), **`own_ops`** (public host with owner login; `--host 0.0.0.0` auto-upgrades to
|
|
409
|
+
this so you can't accidentally expose a no-auth dashboard), or **`multitenant`** (wallet/SIWE +
|
|
410
|
+
billing). One `docker compose up` builds the server + browser + vector memory and persists
|
|
411
|
+
memory/sessions/skills across restarts. See
|
|
412
|
+
**[docs/guide/self-hosting.md](docs/guide/self-hosting.md)**.
|
|
413
|
+
|
|
414
|
+
---
|
|
415
|
+
|
|
416
|
+
## For developers
|
|
417
|
+
|
|
418
|
+
```
|
|
419
|
+
polyrob/
|
|
420
|
+
├── agents/ # Task automation framework (agent loop, memory, skills, goals)
|
|
421
|
+
├── api/ # FastAPI HTTP + A2A + OpenAI /v1
|
|
422
|
+
├── cli/ # Terminal-native `polyrob` agent
|
|
423
|
+
├── core/ # DI, config, permissions, instance/identity, autonomy runtime
|
|
424
|
+
├── modules/ # LLM, Memory, Database, Auth, Credits
|
|
425
|
+
├── tools/ # Browser, MCP, Email, Twitter, code-exec
|
|
426
|
+
├── surfaces/ # Chat-surface adapters (Telegram, Email)
|
|
427
|
+
├── cron/ # Durable scheduled runs + goal board
|
|
428
|
+
└── webview/ # Optional single-user web dashboard
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
```bash
|
|
432
|
+
git clone https://github.com/theselfruleorg/polyrob
|
|
433
|
+
cd polyrob
|
|
434
|
+
python -m venv venv && source venv/bin/activate
|
|
435
|
+
pip install -e ".[dev,all]"
|
|
436
|
+
python -m playwright install chromium
|
|
437
|
+
|
|
438
|
+
pytest tests/unit -q # fast unit suite
|
|
439
|
+
ruff check . # lint
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
Architecture overview → **[docs/guide/architecture.md](docs/guide/architecture.md)** · API reference
|
|
443
|
+
→ **[docs/guide/api.md](docs/guide/api.md)** · deep architecture & contributor guide →
|
|
444
|
+
**[AGENTS.md](AGENTS.md)** (every layer also has its own `README.md`)
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
## Documentation
|
|
449
|
+
|
|
450
|
+
| Document | Description |
|
|
451
|
+
|----------|-------------|
|
|
452
|
+
| [docs/guide/getting-started.md](docs/guide/getting-started.md) | Install & first run |
|
|
453
|
+
| [docs/guide/cli.md](docs/guide/cli.md) | Terminal agent commands |
|
|
454
|
+
| [docs/guide/skills.md](docs/guide/skills.md) | Skills — install, author, and manage |
|
|
455
|
+
| [docs/guide/api.md](docs/guide/api.md) | REST + A2A + OpenAI-compatible API |
|
|
456
|
+
| [docs/guide/configuration.md](docs/guide/configuration.md) | Configuration guide |
|
|
457
|
+
| [docs/guide/architecture.md](docs/guide/architecture.md) | Architecture overview |
|
|
458
|
+
| [docs/guide/self-hosting.md](docs/guide/self-hosting.md) | Self-hosting / deployment |
|
|
459
|
+
| [docs/guide/deployment-postures.md](docs/guide/deployment-postures.md) | Deployment postures (local / own_ops / multitenant) |
|
|
460
|
+
| [docs/guide/console.md](docs/guide/console.md) | Web dashboard — capabilities & payments |
|
|
461
|
+
| [docs/comparison.md](docs/comparison.md) | Comparison with other frameworks |
|
|
462
|
+
| [docs/examples.md](docs/examples.md) | Real-world usage examples |
|
|
463
|
+
| [docs/CONFIGURATION.md](docs/CONFIGURATION.md) | Environment-flag reference (SSOT) |
|
|
464
|
+
| [AGENTS.md](AGENTS.md) | Deep architecture, invariants & contributor guide |
|
|
465
|
+
| [CHANGELOG.md](CHANGELOG.md) | Notable changes |
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
## Contributing & security
|
|
470
|
+
|
|
471
|
+
- **Contributions welcome** — see [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
472
|
+
- **Report vulnerabilities** — see [SECURITY.md](SECURITY.md)
|
|
473
|
+
- **License** — MIT ([LICENSE](LICENSE)) · brand/name use in [TRADEMARK.md](TRADEMARK.md) · third-party attributions in [THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md)
|
|
474
|
+
|
|
475
|
+
---
|
|
476
|
+
|
|
477
|
+
<div align="center">
|
|
478
|
+
|
|
479
|
+
**POLYROB** — by [The Selfrule Organization](https://theselfrule.org)
|
|
480
|
+
|
|
481
|
+
</div>
|
|
482
|
+
</content>
|