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.
Files changed (745) hide show
  1. agents/README.md +453 -0
  2. agents/__init__.py +164 -0
  3. agents/base_agent.py +743 -0
  4. agents/personality/character.py +119 -0
  5. agents/personality/character_manager.py +309 -0
  6. agents/personality/characters/rob.character.json +56 -0
  7. agents/personality/characters/trump.character.json +63 -0
  8. agents/personality/persona_render.py +78 -0
  9. agents/personality/persona_resolver.py +115 -0
  10. agents/prompt/__init__.py +58 -0
  11. agents/prompt/base_prompt.py +92 -0
  12. agents/prompt/system.py +417 -0
  13. agents/task/README_PATH_MANAGEMENT.md +141 -0
  14. agents/task/__init__.py +162 -0
  15. agents/task/agent/__init__.py +70 -0
  16. agents/task/agent/agent_state.py +408 -0
  17. agents/task/agent/async_delegation.py +274 -0
  18. agents/task/agent/autonomy_state.py +275 -0
  19. agents/task/agent/conversation.py +75 -0
  20. agents/task/agent/core/__init__.py +6 -0
  21. agents/task/agent/core/aux_metering.py +61 -0
  22. agents/task/agent/core/background_review.py +157 -0
  23. agents/task/agent/core/construction.py +1179 -0
  24. agents/task/agent/core/conversational_exit.py +49 -0
  25. agents/task/agent/core/correspondent_gate.py +227 -0
  26. agents/task/agent/core/curator.py +246 -0
  27. agents/task/agent/core/episodic_digest.py +103 -0
  28. agents/task/agent/core/error_recovery.py +480 -0
  29. agents/task/agent/core/history_io.py +257 -0
  30. agents/task/agent/core/llm_provisioning.py +287 -0
  31. agents/task/agent/core/llm_runner.py +547 -0
  32. agents/task/agent/core/logging_io.py +276 -0
  33. agents/task/agent/core/loop_detection.py +262 -0
  34. agents/task/agent/core/memory_prefetch.py +325 -0
  35. agents/task/agent/core/memory_writer.py +667 -0
  36. agents/task/agent/core/model_introspection.py +82 -0
  37. agents/task/agent/core/model_swap.py +177 -0
  38. agents/task/agent/core/next_action_internal.py +1331 -0
  39. agents/task/agent/core/output_validation.py +303 -0
  40. agents/task/agent/core/project_context.py +272 -0
  41. agents/task/agent/core/resources.py +93 -0
  42. agents/task/agent/core/result_processing.py +389 -0
  43. agents/task/agent/core/run_loop.py +661 -0
  44. agents/task/agent/core/safety_lifecycle.py +228 -0
  45. agents/task/agent/core/secret_guard.py +293 -0
  46. agents/task/agent/core/self_wake.py +280 -0
  47. agents/task/agent/core/session_metadata.py +104 -0
  48. agents/task/agent/core/step.py +781 -0
  49. agents/task/agent/core/step_execution.py +398 -0
  50. agents/task/agent/core/step_telemetry.py +222 -0
  51. agents/task/agent/core/test_aux_metering.py +50 -0
  52. agents/task/agent/core/test_billing_failover.py +68 -0
  53. agents/task/agent/core/test_fatal_error_classifier.py +38 -0
  54. agents/task/agent/core/test_judge_validation.py +275 -0
  55. agents/task/agent/core/test_model_swap.py +190 -0
  56. agents/task/agent/core/test_reflection_offload.py +54 -0
  57. agents/task/agent/core/turn_input.py +8 -0
  58. agents/task/agent/core/untrusted_wrap.py +103 -0
  59. agents/task/agent/core/user_ingress.py +228 -0
  60. agents/task/agent/hitl_manager.py +396 -0
  61. agents/task/agent/log_sanitize.py +36 -0
  62. agents/task/agent/message_manager/config.py +97 -0
  63. agents/task/agent/message_manager/service.py +758 -0
  64. agents/task/agent/message_manager/tests.py +305 -0
  65. agents/task/agent/message_manager/tool_call_builder.py +539 -0
  66. agents/task/agent/message_manager/tool_message_repair.py +364 -0
  67. agents/task/agent/message_manager/views.py +143 -0
  68. agents/task/agent/messages/__init__.py +8 -0
  69. agents/task/agent/messages/builders.py +309 -0
  70. agents/task/agent/messages/compactor.py +611 -0
  71. agents/task/agent/messages/context_references.py +271 -0
  72. agents/task/agent/messages/filters.py +333 -0
  73. agents/task/agent/messages/guidance.py +328 -0
  74. agents/task/agent/messages/persistence.py +448 -0
  75. agents/task/agent/messages/retrieval.py +506 -0
  76. agents/task/agent/messages/sqlite_persistence.py +85 -0
  77. agents/task/agent/messages/test_compaction_upgrade.py +349 -0
  78. agents/task/agent/messages/test_persistence_subdir_fix.py +28 -0
  79. agents/task/agent/messages/test_sqlite_persistence.py +54 -0
  80. agents/task/agent/messages/token_counter.py +532 -0
  81. agents/task/agent/orchestrator.py +776 -0
  82. agents/task/agent/profile_manager.py +105 -0
  83. agents/task/agent/profile_registry.py +173 -0
  84. agents/task/agent/prompts.py +1090 -0
  85. agents/task/agent/scenario_registry.py +226 -0
  86. agents/task/agent/service.py +509 -0
  87. agents/task/agent/session.py +984 -0
  88. agents/task/agent/skill_discovery.py +110 -0
  89. agents/task/agent/skill_frontmatter.py +94 -0
  90. agents/task/agent/skill_manager.py +1201 -0
  91. agents/task/agent/skill_store.py +627 -0
  92. agents/task/agent/skill_validation.py +56 -0
  93. agents/task/agent/skill_writer.py +492 -0
  94. agents/task/agent/sub_agent_manager.py +1137 -0
  95. agents/task/agent/test_session_disk_recovery.py +34 -0
  96. agents/task/agent/tests.py +513 -0
  97. agents/task/agent/tool_call_tracker.py +511 -0
  98. agents/task/agent/views.py +469 -0
  99. agents/task/config.py +432 -0
  100. agents/task/constants.py +1384 -0
  101. agents/task/flag_defaults.py +63 -0
  102. agents/task/goals/__init__.py +1 -0
  103. agents/task/goals/autonomy_marker.py +28 -0
  104. agents/task/goals/board.py +690 -0
  105. agents/task/goals/completion_judge.py +247 -0
  106. agents/task/goals/context.py +62 -0
  107. agents/task/goals/dispatcher.py +848 -0
  108. agents/task/goals/escalation.py +102 -0
  109. agents/task/goals/planner.py +114 -0
  110. agents/task/logging_config.py +155 -0
  111. agents/task/path.py +991 -0
  112. agents/task/robust_parse_config.py +400 -0
  113. agents/task/runtime/__init__.py +0 -0
  114. agents/task/runtime/run_as_session.py +130 -0
  115. agents/task/runtime_safety.py +308 -0
  116. agents/task/session/__init__.py +5 -0
  117. agents/task/session/browser_pool.py +130 -0
  118. agents/task/session/cleanup.py +612 -0
  119. agents/task/session/execution.py +397 -0
  120. agents/task/session/feed.py +200 -0
  121. agents/task/session/hitl_ingress.py +201 -0
  122. agents/task/session/hooks.py +83 -0
  123. agents/task/session/multi_agent.py +243 -0
  124. agents/task/session/workspace.py +91 -0
  125. agents/task/session_registry.py +91 -0
  126. agents/task/session_route.py +35 -0
  127. agents/task/sqlite_session_registry.py +261 -0
  128. agents/task/surface_config.py +185 -0
  129. agents/task/telemetry/__init__.py +58 -0
  130. agents/task/telemetry/event_log.py +180 -0
  131. agents/task/telemetry/formatters.py +642 -0
  132. agents/task/telemetry/manager.py +571 -0
  133. agents/task/telemetry/memory_events.py +66 -0
  134. agents/task/telemetry/self_events.py +53 -0
  135. agents/task/telemetry/sequence.py +160 -0
  136. agents/task/telemetry/service.py +1265 -0
  137. agents/task/telemetry/views.py +882 -0
  138. agents/task/templates.py +98 -0
  139. agents/task/test_aux_chain.py +151 -0
  140. agents/task/test_aux_router.py +41 -0
  141. agents/task/tests/test_parse_robustness.py +170 -0
  142. agents/task/tool_defaults.py +110 -0
  143. agents/task/utils.py +762 -0
  144. agents/task/utils_json.py +768 -0
  145. agents/task/utils_webview.py +86 -0
  146. agents/task/workspace_context.py +229 -0
  147. agents/task_agent_lite.py +2398 -0
  148. api/README.md +683 -0
  149. api/TASK_API_DOCS.md +151 -0
  150. api/__init__.py +0 -0
  151. api/a2a/__init__.py +37 -0
  152. api/a2a/agent_card.py +337 -0
  153. api/a2a/client.py +657 -0
  154. api/a2a/endpoints.py +375 -0
  155. api/a2a/models.py +268 -0
  156. api/a2a/streaming.py +419 -0
  157. api/a2a/task_handler.py +929 -0
  158. api/admin_endpoints.py +1584 -0
  159. api/app.py +923 -0
  160. api/auth_constants.py +28 -0
  161. api/auth_endpoints.py +402 -0
  162. api/auth_state.py +36 -0
  163. api/chat_via_task.py +42 -0
  164. api/conversation_manager.py +231 -0
  165. api/dependencies.py +186 -0
  166. api/eip8004_endpoints.py +452 -0
  167. api/hyperliquid_models.py +174 -0
  168. api/hyperliquid_routes.py +450 -0
  169. api/interfaces.py +207 -0
  170. api/jwt_middleware.py +83 -0
  171. api/kb/__init__.py +1 -0
  172. api/kb/endpoints.py +314 -0
  173. api/mcp_models.py +279 -0
  174. api/mcp_routes.py +438 -0
  175. api/middleware.py +526 -0
  176. api/models.py +176 -0
  177. api/openai_compat/__init__.py +0 -0
  178. api/openai_compat/model_map.py +25 -0
  179. api/openai_compat/models.py +59 -0
  180. api/openai_compat/router.py +140 -0
  181. api/payment_endpoints.py +444 -0
  182. api/payment_verification.py +138 -0
  183. api/polymarket_models.py +155 -0
  184. api/polymarket_routes.py +501 -0
  185. api/pricing_endpoints.py +89 -0
  186. api/session_routing.py +54 -0
  187. api/skill_endpoints.py +453 -0
  188. api/task_http_api.py +1856 -0
  189. api/webhooks.py +52 -0
  190. api/x402_endpoints.py +280 -0
  191. avatar/README.md +44 -0
  192. avatar/__init__.py +1 -0
  193. avatar/config/rob.json +7 -0
  194. avatar/mindprint.js +395 -0
  195. avatar/renders/rob.meta.json +20 -0
  196. avatar/renders/rob.png +0 -0
  197. avatar/studio.html +373 -0
  198. avatar/webview/avatar-live.js +44 -0
  199. cli/README.md +89 -0
  200. cli/__init__.py +0 -0
  201. cli/cli_surface.py +67 -0
  202. cli/commands/__init__.py +0 -0
  203. cli/commands/_bootstrap.py +49 -0
  204. cli/commands/_errors.py +53 -0
  205. cli/commands/chat.py +973 -0
  206. cli/commands/config.py +100 -0
  207. cli/commands/dashboard.py +103 -0
  208. cli/commands/doctor.py +222 -0
  209. cli/commands/email.py +174 -0
  210. cli/commands/gateway.py +346 -0
  211. cli/commands/goals.py +509 -0
  212. cli/commands/init.py +276 -0
  213. cli/commands/journey.py +30 -0
  214. cli/commands/kb.py +280 -0
  215. cli/commands/model.py +107 -0
  216. cli/commands/owner.py +431 -0
  217. cli/commands/pfp.py +232 -0
  218. cli/commands/run.py +414 -0
  219. cli/commands/serve.py +41 -0
  220. cli/commands/session.py +684 -0
  221. cli/commands/skill_install.py +786 -0
  222. cli/commands/skills.py +128 -0
  223. cli/commands/subagents.py +100 -0
  224. cli/commands/surface.py +81 -0
  225. cli/commands/telegram.py +185 -0
  226. cli/commands/todos.py +209 -0
  227. cli/commands/tools.py +102 -0
  228. cli/commands/update.py +316 -0
  229. cli/commands/whatsapp.py +175 -0
  230. cli/config_store.py +276 -0
  231. cli/gitignore.py +43 -0
  232. cli/inventory.py +46 -0
  233. cli/keys.py +101 -0
  234. cli/persona.py +17 -0
  235. cli/polyrob.py +137 -0
  236. cli/ui/__init__.py +64 -0
  237. cli/ui/activity.py +141 -0
  238. cli/ui/app.py +538 -0
  239. cli/ui/banner.py +233 -0
  240. cli/ui/blocks.py +534 -0
  241. cli/ui/bootstrap_notice.py +47 -0
  242. cli/ui/commands/__init__.py +41 -0
  243. cli/ui/commands/h_cron.py +64 -0
  244. cli/ui/commands/h_journey.py +164 -0
  245. cli/ui/commands/h_kb.py +121 -0
  246. cli/ui/commands/h_learn.py +100 -0
  247. cli/ui/commands/h_mcp.py +215 -0
  248. cli/ui/commands/h_self.py +113 -0
  249. cli/ui/commands/h_skills.py +314 -0
  250. cli/ui/commands/handlers.py +1672 -0
  251. cli/ui/commands/registry.py +426 -0
  252. cli/ui/dialog.py +425 -0
  253. cli/ui/event_registry.py +110 -0
  254. cli/ui/event_specs.py +45 -0
  255. cli/ui/events.py +433 -0
  256. cli/ui/identity.py +15 -0
  257. cli/ui/lifecycle.py +159 -0
  258. cli/ui/live_hooks.py +43 -0
  259. cli/ui/model_selector.py +532 -0
  260. cli/ui/persistent_loop.py +181 -0
  261. cli/ui/pick.py +113 -0
  262. cli/ui/plain_renderer.py +351 -0
  263. cli/ui/renderer.py +384 -0
  264. cli/ui/rich_renderer.py +533 -0
  265. cli/ui/secrets.py +115 -0
  266. cli/ui/state.py +376 -0
  267. cli/ui/statusbar.py +231 -0
  268. cli/ui/streaming.py +254 -0
  269. cli/ui/terminal_render.py +105 -0
  270. cli/ui/theme.py +132 -0
  271. cli/update/__init__.py +6 -0
  272. cli/update/context.py +121 -0
  273. cli/update/detect.py +176 -0
  274. cli/update/engine.py +95 -0
  275. cli/update/migrate_guarded.py +55 -0
  276. cli/update/process_guard.py +215 -0
  277. cli/update/runners.py +78 -0
  278. cli/update/snapshot.py +270 -0
  279. cli/update/versions.py +205 -0
  280. core/README.md +377 -0
  281. core/__init__.py +174 -0
  282. core/assets.py +87 -0
  283. core/async_bridge.py +76 -0
  284. core/autonomy_runtime.py +259 -0
  285. core/base_component.py +302 -0
  286. core/bootstrap.py +681 -0
  287. core/bot.py +310 -0
  288. core/config.py +833 -0
  289. core/constants.py +126 -0
  290. core/container.py +462 -0
  291. core/db_manifest.py +101 -0
  292. core/embedding.py +57 -0
  293. core/env.py +39 -0
  294. core/exceptions.py +287 -0
  295. core/flags.py +144 -0
  296. core/flags_catalog.py +345 -0
  297. core/home_migration.py +62 -0
  298. core/identity.py +118 -0
  299. core/initialization.py +1004 -0
  300. core/instance.py +537 -0
  301. core/interactive_gate.py +96 -0
  302. core/logging.py +436 -0
  303. core/owner_doc_writer.py +176 -0
  304. core/pairing.py +193 -0
  305. core/path_safety.py +20 -0
  306. core/paths.py +27 -0
  307. core/payment_config.py +21 -0
  308. core/permissions.py +322 -0
  309. core/runtime_config.py +96 -0
  310. core/runtime_paths.py +135 -0
  311. core/seams.py +35 -0
  312. core/secret_scan.py +25 -0
  313. core/secret_scrub.py +71 -0
  314. core/secrets.py +35 -0
  315. core/security_logging_filter.py +148 -0
  316. core/self_context_writer.py +333 -0
  317. core/self_evolution.py +294 -0
  318. core/session_context.py +47 -0
  319. core/sqlite_util.py +59 -0
  320. core/surfaces/__init__.py +16 -0
  321. core/surfaces/access.py +118 -0
  322. core/surfaces/binding.py +88 -0
  323. core/surfaces/bootstrap.py +78 -0
  324. core/surfaces/circuit.py +168 -0
  325. core/surfaces/continuity.py +77 -0
  326. core/surfaces/correspondents.py +228 -0
  327. core/surfaces/dispatcher.py +216 -0
  328. core/surfaces/envelopes.py +75 -0
  329. core/surfaces/gc.py +30 -0
  330. core/surfaces/idempotency.py +57 -0
  331. core/surfaces/inbound_webhook.py +124 -0
  332. core/surfaces/media.py +32 -0
  333. core/surfaces/message_router.py +91 -0
  334. core/surfaces/outbound_allowlist.py +80 -0
  335. core/surfaces/outbound_dispatcher.py +110 -0
  336. core/surfaces/outbound_mirror.py +37 -0
  337. core/surfaces/outbound_queue.py +107 -0
  338. core/surfaces/outbound_target.py +12 -0
  339. core/surfaces/owner_admin.py +29 -0
  340. core/surfaces/proactive.py +78 -0
  341. core/surfaces/progress.py +108 -0
  342. core/surfaces/rate_bucket.py +21 -0
  343. core/surfaces/registry.py +51 -0
  344. core/surfaces/rendering.py +53 -0
  345. core/surfaces/send_policy.py +14 -0
  346. core/surfaces/serialize.py +24 -0
  347. core/surfaces/session_chat_registry.py +112 -0
  348. core/surfaces/session_policy.py +60 -0
  349. core/surfaces/surface.py +288 -0
  350. core/surfaces/transcription.py +88 -0
  351. core/surfaces/voice_echo.py +26 -0
  352. core/surfaces/voice_guard.py +23 -0
  353. core/tickers.py +174 -0
  354. core/tool_catalog.py +192 -0
  355. core/version.py +75 -0
  356. core/wallet/__init__.py +5 -0
  357. core/wallet/agent_wallet.py +59 -0
  358. core/wallet/audit_sink.py +61 -0
  359. core/wallet/config.py +70 -0
  360. core/wallet/factory.py +87 -0
  361. core/wallet/policy.py +104 -0
  362. core/wallet/signer.py +51 -0
  363. cron/README.md +65 -0
  364. cron/__init__.py +0 -0
  365. cron/delivery.py +277 -0
  366. cron/digest.py +124 -0
  367. cron/jobs.py +207 -0
  368. cron/runner.py +297 -0
  369. cron/schedule.py +194 -0
  370. cron/scheduler.py +201 -0
  371. cron/service.py +57 -0
  372. cron/wake_gate.py +223 -0
  373. data/__init__.py +1 -0
  374. data/prompts/autov2_prompts.json +87 -0
  375. data/prompts/skills/browser-automation/SKILL.md +43 -0
  376. data/prompts/skills/coding-workflow/SKILL.md +36 -0
  377. data/prompts/skills/crypto-trading-safety/SKILL.md +53 -0
  378. data/prompts/skills/document-writing/SKILL.md +33 -0
  379. data/prompts/skills/email-comms/SKILL.md +33 -0
  380. data/prompts/skills/file-data-ops/SKILL.md +35 -0
  381. data/prompts/skills/hyperliquid-account-review/SKILL.md +48 -0
  382. data/prompts/skills/hyperliquid-market-data/SKILL.md +52 -0
  383. data/prompts/skills/hyperliquid-trading/SKILL.md +59 -0
  384. data/prompts/skills/lead-research/SKILL.md +86 -0
  385. data/prompts/skills/market-research-brief/SKILL.md +104 -0
  386. data/prompts/skills/person-analyzer/SKILL.md +124 -0
  387. data/prompts/skills/polymarket-market-research/SKILL.md +54 -0
  388. data/prompts/skills/polymarket-portfolio-review/SKILL.md +50 -0
  389. data/prompts/skills/polymarket-trading/SKILL.md +55 -0
  390. data/prompts/skills/presentation-creator/SKILL.md +36 -0
  391. data/prompts/skills/project-analyzer/SKILL.md +169 -0
  392. data/prompts/skills/rules.json +268 -0
  393. data/prompts/skills/secret-handling/SKILL.md +20 -0
  394. data/prompts/skills/skill-authoring/SKILL.md +31 -0
  395. data/prompts/skills/skill-security-review/SKILL.md +27 -0
  396. data/prompts/skills/social-discovery/SKILL.md +57 -0
  397. data/prompts/skills/task-planning/SKILL.md +33 -0
  398. data/prompts/skills/web-research/SKILL.md +39 -0
  399. data/prompts/skills/web-scraping/SKILL.md +73 -0
  400. data/prompts/skills/x-engagement/SKILL.md +69 -0
  401. data/prompts/system_prompts.json +4 -0
  402. data/subscription_channels.json +5 -0
  403. modules/README.md +503 -0
  404. modules/__init__.py +124 -0
  405. modules/auth/__init__.py +13 -0
  406. modules/auth/api_key_manager.py +157 -0
  407. modules/auth/identity_mapper.py +380 -0
  408. modules/auth/siwe_auth.py +273 -0
  409. modules/auth/tier_manager.py +173 -0
  410. modules/base_module.py +190 -0
  411. modules/credits/__init__.py +29 -0
  412. modules/credits/balance_manager.py +237 -0
  413. modules/credits/cost_utils.py +129 -0
  414. modules/credits/pricing.py +139 -0
  415. modules/credits/unified_ledger.py +148 -0
  416. modules/credits/usage_meter.py +310 -0
  417. modules/credits/usage_tracker.py +674 -0
  418. modules/database/__init__.py +33 -0
  419. modules/database/audit_log.py +322 -0
  420. modules/database/auth_tables.py +276 -0
  421. modules/database/connection.py +644 -0
  422. modules/database/connection_pool.py +305 -0
  423. modules/database/conversation_contexts.py +446 -0
  424. modules/database/database_manager.py +237 -0
  425. modules/database/hyperliquid.py +375 -0
  426. modules/database/polymarket.py +574 -0
  427. modules/database/user_mcp_servers.py +728 -0
  428. modules/database/user_profiles.py +562 -0
  429. modules/database/utils.py +107 -0
  430. modules/database/x402_tables.py +92 -0
  431. modules/eip8004/README.md +1069 -0
  432. modules/eip8004/__init__.py +65 -0
  433. modules/eip8004/contracts.py +498 -0
  434. modules/eip8004/models.py +271 -0
  435. modules/eip8004/registration.py +148 -0
  436. modules/eip8004/reputation.py +367 -0
  437. modules/eip8004/validation.py +277 -0
  438. modules/llm/__init__.py +97 -0
  439. modules/llm/adapters.py +963 -0
  440. modules/llm/anthropic_client.py +831 -0
  441. modules/llm/available_models.py +106 -0
  442. modules/llm/brain_scrubber.py +137 -0
  443. modules/llm/cache_hints.py +162 -0
  444. modules/llm/deepseek_client.py +562 -0
  445. modules/llm/gemini_client.py +1367 -0
  446. modules/llm/llm_client.py +1139 -0
  447. modules/llm/llm_client_registry.py +188 -0
  448. modules/llm/llm_factory.py +237 -0
  449. modules/llm/llm_manager.py +1036 -0
  450. modules/llm/messages.py +374 -0
  451. modules/llm/model_registry.py +1935 -0
  452. modules/llm/nvidia_client.py +125 -0
  453. modules/llm/openai_client.py +800 -0
  454. modules/llm/openrouter_client.py +969 -0
  455. modules/llm/profiles.py +178 -0
  456. modules/llm/test_anthropic_cache_capture.py +35 -0
  457. modules/llm/test_cached_pricing_derivation.py +24 -0
  458. modules/llm/think_scrubber.py +444 -0
  459. modules/llm/token_counter.py +268 -0
  460. modules/memory/__init__.py +35 -0
  461. modules/memory/backend_factory.py +83 -0
  462. modules/memory/cache_manager.py +186 -0
  463. modules/memory/episodic.py +108 -0
  464. modules/memory/local_vector_memory_provider.py +552 -0
  465. modules/memory/memory_manager.py +225 -0
  466. modules/memory/models.py +312 -0
  467. modules/memory/provider.py +210 -0
  468. modules/memory/registry.py +205 -0
  469. modules/memory/sqlite_memory_provider.py +767 -0
  470. modules/memory/task/__init__.py +52 -0
  471. modules/memory/task/compaction_manager.py +157 -0
  472. modules/memory/task/context_retriever.py +809 -0
  473. modules/memory/task/hierarchical_memory.py +1002 -0
  474. modules/memory/task/lexical_retriever.py +71 -0
  475. modules/memory/task/null_context_manager.py +213 -0
  476. modules/memory/task/phase_manager.py +625 -0
  477. modules/memory/task/reflection_service.py +157 -0
  478. modules/memory/task/semantic_retriever.py +218 -0
  479. modules/memory/task/task_context_manager.py +1165 -0
  480. modules/memory/task/test_forgetting_engages.py +24 -0
  481. modules/memory/task/test_reflection_llm.py +39 -0
  482. modules/memory/task/test_threat_scan.py +53 -0
  483. modules/memory/task/threat_scan.py +90 -0
  484. modules/memory/test_sqlite_memory_provider.py +106 -0
  485. modules/memory/user_profile_manager.py +527 -0
  486. modules/payments/__init__.py +11 -0
  487. modules/payments/deposit_monitor.py +478 -0
  488. modules/payments/price_oracle.py +70 -0
  489. modules/payments/treasury_sweeper.py +401 -0
  490. modules/payments/wallet_generator.py +145 -0
  491. modules/pfp/__init__.py +1 -0
  492. modules/pfp/config.py +92 -0
  493. modules/pfp/mesh.py +565 -0
  494. modules/pfp/push.py +69 -0
  495. modules/pfp/renderer.py +85 -0
  496. modules/pfp/store.py +82 -0
  497. modules/skills/__init__.py +1 -0
  498. modules/skills/skill_usage.py +248 -0
  499. modules/transcription/__init__.py +24 -0
  500. modules/transcription/base.py +20 -0
  501. modules/transcription/faster_whisper_transcriber.py +55 -0
  502. modules/x402/README.md +249 -0
  503. modules/x402/__init__.py +22 -0
  504. modules/x402/invoicing.py +416 -0
  505. modules/x402/middleware.py +364 -0
  506. modules/x402/settlement_watcher.py +145 -0
  507. modules/x402/x402_integration.py +344 -0
  508. polyrob-0.5.0.dist-info/METADATA +482 -0
  509. polyrob-0.5.0.dist-info/RECORD +745 -0
  510. polyrob-0.5.0.dist-info/WHEEL +5 -0
  511. polyrob-0.5.0.dist-info/entry_points.txt +2 -0
  512. polyrob-0.5.0.dist-info/licenses/LICENSE +21 -0
  513. polyrob-0.5.0.dist-info/top_level.txt +12 -0
  514. surfaces/README.md +70 -0
  515. surfaces/__init__.py +0 -0
  516. surfaces/email/__init__.py +0 -0
  517. surfaces/email/dedup.py +44 -0
  518. surfaces/email/harness.py +187 -0
  519. surfaces/email/inbound.py +159 -0
  520. surfaces/email/seed.py +60 -0
  521. surfaces/email/surface.py +105 -0
  522. surfaces/telegram/__init__.py +0 -0
  523. surfaces/telegram/dedup.py +83 -0
  524. surfaces/telegram/harness.py +886 -0
  525. surfaces/telegram/inbound.py +145 -0
  526. surfaces/telegram/interactive_tools.py +49 -0
  527. surfaces/telegram/markdown.py +347 -0
  528. surfaces/telegram/rate_limit.py +167 -0
  529. surfaces/telegram/surface.py +187 -0
  530. surfaces/telegram/voice.py +52 -0
  531. surfaces/whatsapp/__init__.py +0 -0
  532. surfaces/whatsapp/client.py +51 -0
  533. surfaces/whatsapp/harness.py +62 -0
  534. surfaces/whatsapp/inbound.py +132 -0
  535. surfaces/whatsapp/surface.py +64 -0
  536. surfaces/whatsapp/window.py +34 -0
  537. tools/README.md +578 -0
  538. tools/__init__.py +424 -0
  539. tools/alchemy/__init__.py +5 -0
  540. tools/alchemy/alchemy_tool.py +389 -0
  541. tools/anysite/__init__.py +17 -0
  542. tools/anysite/client.py +88 -0
  543. tools/anysite/tool.py +89 -0
  544. tools/base_tool.py +468 -0
  545. tools/browser/__init__.py +22 -0
  546. tools/browser/actions.py +118 -0
  547. tools/browser/browser.py +1457 -0
  548. tools/browser/browser_manager.py +690 -0
  549. tools/browser/context.py +1748 -0
  550. tools/browser/playwright_utils.py +137 -0
  551. tools/browser/views.py +56 -0
  552. tools/code_exec/SANDBOX_SECURITY.md +144 -0
  553. tools/code_exec/__init__.py +178 -0
  554. tools/code_exec/backend.py +73 -0
  555. tools/code_exec/backends/__init__.py +1 -0
  556. tools/code_exec/backends/docker.py +779 -0
  557. tools/code_exec/backends/local_subprocess.py +154 -0
  558. tools/code_exec/env_policy.py +45 -0
  559. tools/code_exec/result.py +42 -0
  560. tools/code_exec/sandbox_guard.py +59 -0
  561. tools/code_exec/tool.py +227 -0
  562. tools/coding/__init__.py +50 -0
  563. tools/coding/edit.py +107 -0
  564. tools/coding/search.py +113 -0
  565. tools/coding/tool.py +353 -0
  566. tools/collabland/__init__.py +5 -0
  567. tools/collabland/collabland_tool.py +471 -0
  568. tools/controller/__init__.py +0 -0
  569. tools/controller/_helpers.py +165 -0
  570. tools/controller/action_registration.py +1765 -0
  571. tools/controller/approval.py +244 -0
  572. tools/controller/approval_interactive.py +90 -0
  573. tools/controller/delegation.py +195 -0
  574. tools/controller/execution.py +797 -0
  575. tools/controller/execution_context.py +141 -0
  576. tools/controller/hooks.py +135 -0
  577. tools/controller/introspection.py +344 -0
  578. tools/controller/mcp_registrar.py +190 -0
  579. tools/controller/message_send.py +31 -0
  580. tools/controller/registry/__init__.py +4 -0
  581. tools/controller/registry/schema_generators.py +395 -0
  582. tools/controller/registry/schema_sanitizer.py +406 -0
  583. tools/controller/registry/service.py +1266 -0
  584. tools/controller/registry/views.py +151 -0
  585. tools/controller/service.py +409 -0
  586. tools/controller/tool_management.py +334 -0
  587. tools/controller/types.py +28 -0
  588. tools/controller/views.py +450 -0
  589. tools/cronjob_tools.py +166 -0
  590. tools/crypto_trade_gate.py +59 -0
  591. tools/descriptors.py +452 -0
  592. tools/dom/__init__.py +0 -0
  593. tools/dom/history_tree_processor/service.py +244 -0
  594. tools/dom/history_tree_processor/view.py +99 -0
  595. tools/dom/service.py +471 -0
  596. tools/dom/views.py +346 -0
  597. tools/email_tool.py +403 -0
  598. tools/exceptions.py +169 -0
  599. tools/filesystem.py +1038 -0
  600. tools/filesystem_docproc.py +331 -0
  601. tools/filesystem_pdf.py +755 -0
  602. tools/git/__init__.py +42 -0
  603. tools/git/tool.py +258 -0
  604. tools/github/__init__.py +33 -0
  605. tools/github/client.py +94 -0
  606. tools/github/tool.py +237 -0
  607. tools/goal_tools.py +309 -0
  608. tools/hyperliquid/__init__.py +56 -0
  609. tools/hyperliquid/models.py +233 -0
  610. tools/hyperliquid/service.py +1680 -0
  611. tools/knowledge_ingest.py +950 -0
  612. tools/mcp/README.md +535 -0
  613. tools/mcp/__init__.py +52 -0
  614. tools/mcp/catalog.py +115 -0
  615. tools/mcp/config.py +337 -0
  616. tools/mcp/mcp_tool.py +1415 -0
  617. tools/mcp/param_coercion.py +289 -0
  618. tools/mcp/protocol.py +1520 -0
  619. tools/mcp/rate_limit.py +50 -0
  620. tools/mcp/security.py +424 -0
  621. tools/mcp/self_install.py +111 -0
  622. tools/mcp/server_manager.py +829 -0
  623. tools/mcp/subscriptions.py +72 -0
  624. tools/mcp/user_mcp_service.py +899 -0
  625. tools/mcp/validation_tracker.py +89 -0
  626. tools/mcp/views.py +346 -0
  627. tools/oauth/__init__.py +17 -0
  628. tools/oauth/manager.py +75 -0
  629. tools/oauth/provider.py +69 -0
  630. tools/oauth/providers/__init__.py +1 -0
  631. tools/oauth/providers/generic_oauth2.py +96 -0
  632. tools/perplexity_tool.py +280 -0
  633. tools/polymarket/__init__.py +41 -0
  634. tools/polymarket/clob_adapter.py +76 -0
  635. tools/polymarket/models.py +182 -0
  636. tools/polymarket/service.py +2082 -0
  637. tools/self_env/__init__.py +61 -0
  638. tools/self_env/tool.py +274 -0
  639. tools/shell/__init__.py +80 -0
  640. tools/shell/backend_pool.py +118 -0
  641. tools/shell/discipline.py +62 -0
  642. tools/shell/executor.py +157 -0
  643. tools/shell/loopback_allow.py +87 -0
  644. tools/shell/process_registry.py +113 -0
  645. tools/shell/process_tool.py +131 -0
  646. tools/shell/state.py +129 -0
  647. tools/shell/tool.py +151 -0
  648. tools/task_tool.py +637 -0
  649. tools/twitter_tool.py +2086 -0
  650. tools/user_directory.py +179 -0
  651. tools/web_fetch/__init__.py +3 -0
  652. tools/web_fetch/fetcher.py +144 -0
  653. tools/web_fetch/render.py +44 -0
  654. tools/web_fetch/tool.py +60 -0
  655. tools/x402/__init__.py +60 -0
  656. tools/x402/client.py +47 -0
  657. tools/x402/invoice_tool.py +143 -0
  658. tools/x402/real_client.py +250 -0
  659. tools/x402/service.py +131 -0
  660. utils/README.md +498 -0
  661. utils/__init__.py +46 -0
  662. utils/auth_utils.py +114 -0
  663. utils/bounded_collections.py +162 -0
  664. utils/circuit_breaker.py +389 -0
  665. utils/gif_utils.py +435 -0
  666. utils/markdown_utils.py +291 -0
  667. utils/message_utils.py +147 -0
  668. utils/metrics.py +36 -0
  669. utils/path_validator.py +227 -0
  670. utils/rate_limit_manager.py +399 -0
  671. utils/result_size.py +296 -0
  672. utils/time_utils.py +206 -0
  673. utils/user_utils.py +188 -0
  674. webview/README.md +111 -0
  675. webview/RENAME_AND_ALIGN_HANDOFF.md +200 -0
  676. webview/__init__.py +8 -0
  677. webview/activity.py +636 -0
  678. webview/owner_auth.py +108 -0
  679. webview/pages.py +448 -0
  680. webview/repair_sessions.py +399 -0
  681. webview/server.py +4323 -0
  682. webview/server_launcher.py +112 -0
  683. webview/static/css/activity.css +89 -0
  684. webview/static/css/chat.css +1772 -0
  685. webview/static/css/components.css +1190 -0
  686. webview/static/css/config-panel.css +651 -0
  687. webview/static/css/pages/admin.css +766 -0
  688. webview/static/css/pages/profile.css +231 -0
  689. webview/static/css/pages/settings.css +297 -0
  690. webview/static/css/pages/signin.css +316 -0
  691. webview/static/css/style.css +4250 -0
  692. webview/static/css/variables.css +147 -0
  693. webview/static/css/workspace-fullwidth-fix.css +109 -0
  694. webview/static/img/favicon.ico +0 -0
  695. webview/static/js/activity.js +394 -0
  696. webview/static/js/admin/activity.js +186 -0
  697. webview/static/js/admin/dashboard.js +163 -0
  698. webview/static/js/admin/user_detail.js +400 -0
  699. webview/static/js/admin/users.js +174 -0
  700. webview/static/js/admin/utils.js +214 -0
  701. webview/static/js/chat.js +3178 -0
  702. webview/static/js/config-panel.js +522 -0
  703. webview/static/js/constants.js +20 -0
  704. webview/static/js/error-handler.js +226 -0
  705. webview/static/js/ethers.min.js +1 -0
  706. webview/static/js/event-filter.js +137 -0
  707. webview/static/js/event-store.js +351 -0
  708. webview/static/js/file-attachments.js +374 -0
  709. webview/static/js/file-loader.js +163 -0
  710. webview/static/js/index.js +103 -0
  711. webview/static/js/performance-utils.js +196 -0
  712. webview/static/js/profile.js +396 -0
  713. webview/static/js/screenshot.js +386 -0
  714. webview/static/js/session.js +1527 -0
  715. webview/static/js/settings.js +1288 -0
  716. webview/static/js/sidebar-data.js +766 -0
  717. webview/static/js/sidebar-toggle.js +296 -0
  718. webview/static/js/socket.io.min.js +7 -0
  719. webview/static/js/stats.js +355 -0
  720. webview/static/js/ui-utils.js +420 -0
  721. webview/static/js/workspace.js +966 -0
  722. webview/stats_service.py +613 -0
  723. webview/templates/__init__.py +1 -0
  724. webview/templates/__pycache__/__init__.cpython-311.pyc +0 -0
  725. webview/templates/activity.html +36 -0
  726. webview/templates/admin/activity.html +122 -0
  727. webview/templates/admin/dashboard.html +112 -0
  728. webview/templates/admin/user_detail.html +228 -0
  729. webview/templates/admin/users.html +105 -0
  730. webview/templates/autonomy.html +60 -0
  731. webview/templates/error.html +133 -0
  732. webview/templates/finance.html +90 -0
  733. webview/templates/identity.html +73 -0
  734. webview/templates/index.html +42 -0
  735. webview/templates/layout.html +125 -0
  736. webview/templates/memory.html +59 -0
  737. webview/templates/owner_login.html +15 -0
  738. webview/templates/profile.html +121 -0
  739. webview/templates/session.html +312 -0
  740. webview/templates/settings.html +534 -0
  741. webview/templates/sidebar.html +112 -0
  742. webview/templates/signin.html +213 -0
  743. webview/templates/status.html +14 -0
  744. webview/templates/system.html +45 -0
  745. webview/webgate.py +196 -0
@@ -0,0 +1,766 @@
1
+ /**
2
+ * POLYROB Admin Pages - Shared Styles
3
+ *
4
+ * Created: 2024-12-05
5
+ * Version: 1.0.0
6
+ *
7
+ * This file contains styles specific to admin pages:
8
+ * - Dashboard
9
+ * - Users list
10
+ * - User detail
11
+ * - Activity log
12
+ */
13
+
14
+ /* =============================================================================
15
+ DASHBOARD PAGE
16
+ ============================================================================= */
17
+
18
+ /* Stats Grid */
19
+ .stats-grid {
20
+ display: grid;
21
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
22
+ gap: var(--spacing-lg);
23
+ margin-bottom: var(--spacing-2xl);
24
+ }
25
+
26
+ .stat-card {
27
+ background: var(--color-bg-primary);
28
+ border: 1px solid var(--color-border);
29
+ padding: var(--spacing-xl);
30
+ text-align: center;
31
+ transition: border-color var(--transition-fast);
32
+ }
33
+
34
+ .stat-card:hover {
35
+ border-color: var(--color-accent-blue);
36
+ }
37
+
38
+ .stat-value {
39
+ font-size: 2.5rem;
40
+ font-weight: bold;
41
+ color: var(--color-accent-green);
42
+ font-family: var(--font-family-mono);
43
+ }
44
+
45
+ .stat-label {
46
+ font-size: var(--font-size-sm);
47
+ color: var(--color-text-muted);
48
+ text-transform: uppercase;
49
+ letter-spacing: 1px;
50
+ margin-top: var(--spacing-sm);
51
+ }
52
+
53
+ .stat-sublabel {
54
+ font-size: var(--font-size-xs);
55
+ color: var(--color-text-secondary);
56
+ margin-top: var(--spacing-xs);
57
+ }
58
+
59
+ /* Breakdown bars */
60
+ .breakdown-list {
61
+ display: flex;
62
+ flex-direction: column;
63
+ gap: var(--spacing-md);
64
+ }
65
+
66
+ .breakdown-item {
67
+ display: grid;
68
+ grid-template-columns: 100px 1fr 60px;
69
+ gap: var(--spacing-md);
70
+ align-items: center;
71
+ }
72
+
73
+ .breakdown-label {
74
+ font-size: var(--font-size-sm);
75
+ color: var(--color-text-secondary);
76
+ text-transform: uppercase;
77
+ }
78
+
79
+ .breakdown-bar {
80
+ height: 20px;
81
+ background: var(--color-bg-primary);
82
+ position: relative;
83
+ }
84
+
85
+ .breakdown-bar-fill {
86
+ height: 100%;
87
+ background: var(--color-accent-blue);
88
+ transition: width var(--transition-slow);
89
+ }
90
+
91
+ .breakdown-count {
92
+ font-size: var(--font-size-sm);
93
+ color: var(--color-accent-green);
94
+ font-family: var(--font-family-mono);
95
+ text-align: right;
96
+ }
97
+
98
+ /* Activity feed (dashboard) */
99
+ .activity-feed {
100
+ display: flex;
101
+ flex-direction: column;
102
+ gap: var(--spacing-sm);
103
+ }
104
+
105
+ .activity-item {
106
+ display: grid;
107
+ grid-template-columns: 70px 120px 1fr;
108
+ gap: var(--spacing-md);
109
+ padding: var(--spacing-md);
110
+ background: var(--color-bg-primary);
111
+ border: 1px solid var(--color-border);
112
+ font-size: var(--font-size-sm);
113
+ transition: border-color var(--transition-fast);
114
+ }
115
+
116
+ .activity-item:hover {
117
+ border-color: var(--color-accent-blue);
118
+ }
119
+
120
+ .activity-time {
121
+ color: var(--color-text-muted);
122
+ font-family: var(--font-family-mono);
123
+ }
124
+
125
+ .activity-type {
126
+ text-transform: uppercase;
127
+ font-size: var(--font-size-xs);
128
+ }
129
+
130
+ .activity-action {
131
+ color: var(--color-text-secondary);
132
+ }
133
+
134
+ /* Alerts section */
135
+ .alerts-list {
136
+ display: flex;
137
+ flex-direction: column;
138
+ gap: var(--spacing-sm);
139
+ }
140
+
141
+ .alert-item {
142
+ padding: var(--spacing-md) var(--spacing-lg);
143
+ border-left: var(--border-width-accent) solid;
144
+ background: var(--color-bg-primary);
145
+ font-size: var(--font-size-sm);
146
+ display: flex;
147
+ align-items: center;
148
+ gap: 10px;
149
+ }
150
+
151
+ .alert-item.severity-high {
152
+ border-left-color: var(--color-accent-red);
153
+ }
154
+
155
+ .alert-item.severity-warning {
156
+ border-left-color: var(--color-accent-yellow);
157
+ }
158
+
159
+ .alert-item.severity-low {
160
+ border-left-color: var(--color-accent-blue);
161
+ }
162
+
163
+ .alert-icon {
164
+ font-size: 16px;
165
+ }
166
+
167
+ .alert-message {
168
+ color: var(--color-text-secondary);
169
+ flex: 1;
170
+ }
171
+
172
+ .alert-count {
173
+ color: var(--color-accent-green);
174
+ font-family: var(--font-family-mono);
175
+ }
176
+
177
+ /* No alerts state */
178
+ .no-alerts {
179
+ padding: var(--spacing-xl);
180
+ text-align: center;
181
+ color: var(--color-accent-green);
182
+ background: var(--color-bg-primary);
183
+ border: 1px solid var(--color-border);
184
+ }
185
+
186
+ /* Quick search layout */
187
+ .quick-search {
188
+ display: flex;
189
+ gap: var(--spacing-md);
190
+ margin-bottom: var(--spacing-2xl);
191
+ }
192
+
193
+ .quick-search .form-input {
194
+ flex: 1;
195
+ }
196
+
197
+ /* Two column dashboard layout */
198
+ .dashboard-grid {
199
+ display: grid;
200
+ grid-template-columns: 1fr 1fr;
201
+ gap: var(--spacing-2xl);
202
+ }
203
+
204
+ /* =============================================================================
205
+ USERS LIST PAGE
206
+ ============================================================================= */
207
+
208
+ /* Search layout */
209
+ .search-section {
210
+ margin-bottom: var(--spacing-xl);
211
+ }
212
+
213
+ .search-row {
214
+ display: flex;
215
+ gap: var(--spacing-md);
216
+ margin-bottom: var(--spacing-md);
217
+ }
218
+
219
+ .search-row .search-input {
220
+ flex: 1;
221
+ }
222
+
223
+ .search-row .filter-select {
224
+ min-width: 120px;
225
+ }
226
+
227
+ /* User table */
228
+ .user-table {
229
+ width: 100%;
230
+ border-collapse: collapse;
231
+ }
232
+
233
+ .user-table th,
234
+ .user-table td {
235
+ padding: var(--spacing-md);
236
+ text-align: left;
237
+ border-bottom: 1px solid var(--color-border);
238
+ }
239
+
240
+ .user-table th {
241
+ background: var(--color-bg-primary);
242
+ color: var(--color-text-muted);
243
+ font-size: var(--font-size-xs);
244
+ text-transform: uppercase;
245
+ letter-spacing: 1px;
246
+ }
247
+
248
+ .user-table tr:hover td {
249
+ background: var(--color-bg-primary);
250
+ }
251
+
252
+ .user-table .wallet {
253
+ font-family: var(--font-family-mono);
254
+ color: var(--color-accent-blue);
255
+ font-size: var(--font-size-sm);
256
+ }
257
+
258
+ .user-table .tier,
259
+ .user-table .role {
260
+ padding: var(--spacing-xs) var(--spacing-sm);
261
+ font-size: var(--font-size-xs);
262
+ text-transform: uppercase;
263
+ display: inline-block;
264
+ }
265
+
266
+ .user-table .credits {
267
+ font-family: var(--font-family-mono);
268
+ color: var(--color-accent-green);
269
+ }
270
+
271
+ .user-table .token-count {
272
+ display: flex;
273
+ align-items: center;
274
+ gap: var(--spacing-xs);
275
+ }
276
+
277
+ .token-icon {
278
+ width: 16px;
279
+ height: 16px;
280
+ }
281
+
282
+ .user-table .actions {
283
+ text-align: right;
284
+ }
285
+
286
+ /* Blocked indicator */
287
+ .blocked-indicator {
288
+ color: var(--color-accent-red);
289
+ font-weight: bold;
290
+ }
291
+
292
+ /* =============================================================================
293
+ USER DETAIL PAGE
294
+ ============================================================================= */
295
+
296
+ /* User header */
297
+ .user-header {
298
+ display: flex;
299
+ justify-content: space-between;
300
+ align-items: flex-start;
301
+ margin-bottom: var(--spacing-2xl);
302
+ padding-bottom: var(--spacing-xl);
303
+ border-bottom: 1px solid var(--color-border);
304
+ }
305
+
306
+ .user-identity h2 {
307
+ font-family: var(--font-family-mono);
308
+ color: var(--color-accent-blue);
309
+ font-size: var(--font-size-lg);
310
+ margin-bottom: var(--spacing-sm);
311
+ }
312
+
313
+ .user-identity .user-id {
314
+ font-size: var(--font-size-sm);
315
+ color: var(--color-text-muted);
316
+ font-family: var(--font-family-mono);
317
+ }
318
+
319
+ .user-badges {
320
+ display: flex;
321
+ gap: var(--spacing-sm);
322
+ margin-top: var(--spacing-md);
323
+ }
324
+
325
+ /* User detail specific badges */
326
+ .badge-tier { background: var(--color-accent-green); color: var(--color-bg-primary); }
327
+ .badge-role { background: var(--color-accent-blue); color: var(--color-bg-primary); }
328
+ .badge-blocked { background: var(--color-accent-red); color: var(--color-bg-primary); }
329
+
330
+ .user-actions {
331
+ display: flex;
332
+ gap: var(--spacing-sm);
333
+ }
334
+
335
+ /* Detail section */
336
+ .detail-section {
337
+ margin-bottom: 32px;
338
+ }
339
+
340
+ /* Info grid */
341
+ .info-grid {
342
+ display: grid;
343
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
344
+ gap: var(--spacing-lg);
345
+ }
346
+
347
+ .info-item {
348
+ padding: var(--spacing-md);
349
+ background: var(--color-bg-primary);
350
+ border: 1px solid var(--color-border);
351
+ }
352
+
353
+ .info-label {
354
+ font-size: var(--font-size-xs);
355
+ color: var(--color-text-muted);
356
+ text-transform: uppercase;
357
+ letter-spacing: 1px;
358
+ margin-bottom: var(--spacing-xs);
359
+ }
360
+
361
+ .info-value {
362
+ font-family: var(--font-family-mono);
363
+ color: var(--color-text-primary);
364
+ }
365
+
366
+ /* Control select */
367
+ .control-select {
368
+ padding: var(--spacing-sm) var(--spacing-md);
369
+ padding-right: 30px;
370
+ background: var(--color-bg-primary);
371
+ border: 1px solid var(--color-border);
372
+ color: var(--color-text-primary);
373
+ font-family: var(--font-family-mono);
374
+ font-size: var(--font-size-sm);
375
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23909090' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
376
+ background-repeat: no-repeat;
377
+ background-position: right 10px center;
378
+ cursor: pointer;
379
+ -webkit-appearance: none;
380
+ -moz-appearance: none;
381
+ appearance: none;
382
+ }
383
+
384
+ .control-select:focus {
385
+ outline: none;
386
+ border-color: var(--color-accent-blue);
387
+ }
388
+
389
+ /* Token status */
390
+ .token-status {
391
+ background: var(--color-bg-primary);
392
+ padding: var(--spacing-xl);
393
+ border: 1px solid var(--color-border);
394
+ }
395
+
396
+ .token-status.has-token {
397
+ border-color: var(--color-accent-green);
398
+ }
399
+
400
+ .token-status.no-token {
401
+ border-color: var(--color-accent-yellow);
402
+ }
403
+
404
+ .token-status .status-icon {
405
+ font-size: 24px;
406
+ margin-right: var(--spacing-md);
407
+ }
408
+
409
+ .token-status .status-text {
410
+ flex: 1;
411
+ }
412
+
413
+ .token-status h4 {
414
+ color: var(--color-text-primary);
415
+ margin-bottom: var(--spacing-sm);
416
+ }
417
+
418
+ .token-status p {
419
+ color: var(--color-text-secondary);
420
+ font-size: var(--font-size-sm);
421
+ }
422
+
423
+ .token-ids {
424
+ margin-top: var(--spacing-md);
425
+ font-family: var(--font-family-mono);
426
+ font-size: var(--font-size-sm);
427
+ color: var(--color-accent-purple);
428
+ }
429
+
430
+ /* Credits form */
431
+ .credits-actions {
432
+ display: flex;
433
+ gap: var(--spacing-md);
434
+ margin-top: var(--spacing-lg);
435
+ }
436
+
437
+ .credits-form {
438
+ display: flex;
439
+ gap: var(--spacing-sm);
440
+ align-items: center;
441
+ flex-wrap: wrap;
442
+ }
443
+
444
+ .credits-form input[type="number"] {
445
+ width: 100px;
446
+ }
447
+
448
+ .credits-form input[type="text"] {
449
+ width: 200px;
450
+ }
451
+
452
+ /* Transactions table */
453
+ .transactions-table {
454
+ width: 100%;
455
+ border-collapse: collapse;
456
+ }
457
+
458
+ .transactions-table th,
459
+ .transactions-table td {
460
+ padding: 10px;
461
+ text-align: left;
462
+ border-bottom: 1px solid var(--color-border);
463
+ font-size: var(--font-size-sm);
464
+ }
465
+
466
+ .transactions-table th {
467
+ background: var(--color-bg-primary);
468
+ color: var(--color-text-muted);
469
+ font-size: var(--font-size-xs);
470
+ text-transform: uppercase;
471
+ }
472
+
473
+ .transactions-table .amount-positive {
474
+ color: var(--color-accent-green);
475
+ }
476
+
477
+ .transactions-table .amount-negative {
478
+ color: var(--color-accent-red);
479
+ }
480
+
481
+ /* Audit events */
482
+ .audit-list {
483
+ display: flex;
484
+ flex-direction: column;
485
+ gap: var(--spacing-sm);
486
+ }
487
+
488
+ .audit-item {
489
+ display: grid;
490
+ grid-template-columns: 120px 100px 1fr;
491
+ gap: var(--spacing-md);
492
+ padding: var(--spacing-md);
493
+ background: var(--color-bg-primary);
494
+ border: 1px solid var(--color-border);
495
+ font-size: var(--font-size-sm);
496
+ }
497
+
498
+ .audit-time {
499
+ color: var(--color-text-muted);
500
+ font-family: var(--font-family-mono);
501
+ }
502
+
503
+ .audit-type {
504
+ text-transform: uppercase;
505
+ font-size: var(--font-size-xs);
506
+ }
507
+
508
+ .audit-action {
509
+ color: var(--color-text-secondary);
510
+ }
511
+
512
+ /* Block status */
513
+ .block-status {
514
+ padding: var(--spacing-lg);
515
+ background: var(--color-bg-primary);
516
+ border: 1px solid var(--color-border);
517
+ }
518
+
519
+ .block-status.blocked {
520
+ border-color: var(--color-accent-red);
521
+ }
522
+
523
+ .block-reason {
524
+ margin-top: var(--spacing-sm);
525
+ font-size: var(--font-size-sm);
526
+ color: var(--color-text-secondary);
527
+ }
528
+
529
+ /* Sessions summary */
530
+ .sessions-summary {
531
+ display: flex;
532
+ gap: var(--spacing-2xl);
533
+ padding: var(--spacing-lg);
534
+ background: var(--color-bg-primary);
535
+ border: 1px solid var(--color-border);
536
+ }
537
+
538
+ .sessions-stat {
539
+ text-align: center;
540
+ }
541
+
542
+ .sessions-stat .value {
543
+ font-size: var(--font-size-xl);
544
+ color: var(--color-accent-green);
545
+ font-family: var(--font-family-mono);
546
+ }
547
+
548
+ .sessions-stat .label {
549
+ font-size: var(--font-size-xs);
550
+ color: var(--color-text-muted);
551
+ text-transform: uppercase;
552
+ }
553
+
554
+ /* =============================================================================
555
+ ACTIVITY LOG PAGE
556
+ ============================================================================= */
557
+
558
+ /* Filters section */
559
+ .filters-section {
560
+ margin-bottom: var(--spacing-xl);
561
+ }
562
+
563
+ .filters-row {
564
+ display: flex;
565
+ gap: var(--spacing-md);
566
+ flex-wrap: wrap;
567
+ }
568
+
569
+ .filters-row .filter-select {
570
+ min-width: 150px;
571
+ }
572
+
573
+ .filters-row .filter-input {
574
+ min-width: 200px;
575
+ }
576
+
577
+ /* Activity table */
578
+ .activity-table {
579
+ width: 100%;
580
+ border-collapse: collapse;
581
+ }
582
+
583
+ .activity-table th,
584
+ .activity-table td {
585
+ padding: var(--spacing-md);
586
+ text-align: left;
587
+ border-bottom: 1px solid var(--color-border);
588
+ }
589
+
590
+ .activity-table th {
591
+ background: var(--color-bg-primary);
592
+ color: var(--color-text-muted);
593
+ font-size: var(--font-size-xs);
594
+ text-transform: uppercase;
595
+ letter-spacing: 1px;
596
+ position: sticky;
597
+ top: 0;
598
+ }
599
+
600
+ .activity-table tr:hover td {
601
+ background: var(--color-bg-primary);
602
+ }
603
+
604
+ .activity-table .timestamp {
605
+ font-family: var(--font-family-mono);
606
+ font-size: var(--font-size-sm);
607
+ color: var(--color-text-muted);
608
+ white-space: nowrap;
609
+ }
610
+
611
+ .activity-table .event-type {
612
+ text-transform: uppercase;
613
+ font-size: var(--font-size-xs);
614
+ padding: var(--spacing-xs) var(--spacing-sm);
615
+ display: inline-block;
616
+ }
617
+
618
+ .activity-table .actor {
619
+ font-family: var(--font-family-mono);
620
+ font-size: var(--font-size-sm);
621
+ color: var(--color-accent-blue);
622
+ }
623
+
624
+ .activity-table .target {
625
+ font-family: var(--font-family-mono);
626
+ font-size: var(--font-size-sm);
627
+ color: var(--color-accent-purple);
628
+ }
629
+
630
+ .activity-table .action {
631
+ color: var(--color-text-secondary);
632
+ font-size: var(--font-size-sm);
633
+ }
634
+
635
+ .activity-table .ip {
636
+ font-family: var(--font-family-mono);
637
+ font-size: var(--font-size-xs);
638
+ color: var(--color-text-muted);
639
+ }
640
+
641
+ .activity-table .success-indicator {
642
+ width: 8px;
643
+ height: 8px;
644
+ border-radius: 50%;
645
+ display: inline-block;
646
+ }
647
+
648
+ .activity-table .success-indicator.success {
649
+ background: var(--color-accent-green);
650
+ }
651
+
652
+ .activity-table .success-indicator.failure {
653
+ background: var(--color-accent-red);
654
+ }
655
+
656
+ /* Stats bar */
657
+ .stats-bar {
658
+ display: flex;
659
+ gap: var(--spacing-2xl);
660
+ padding: var(--spacing-lg);
661
+ background: var(--color-bg-primary);
662
+ border: 1px solid var(--color-border);
663
+ margin-bottom: var(--spacing-xl);
664
+ }
665
+
666
+ .stat-item {
667
+ text-align: center;
668
+ }
669
+
670
+ .stat-item .value {
671
+ font-size: var(--font-size-lg);
672
+ color: var(--color-accent-green);
673
+ font-family: var(--font-family-mono);
674
+ }
675
+
676
+ .stat-item .label {
677
+ font-size: var(--font-size-xs);
678
+ color: var(--color-text-muted);
679
+ text-transform: uppercase;
680
+ }
681
+
682
+ /* =============================================================================
683
+ RESPONSIVE STYLES
684
+ ============================================================================= */
685
+
686
+ /* Responsive styles merged into single 768px breakpoint below */
687
+
688
+ @media (max-width: 768px) {
689
+ /* Dashboard responsive */
690
+ .dashboard-grid {
691
+ grid-template-columns: 1fr;
692
+ }
693
+
694
+ .activity-item {
695
+ grid-template-columns: 1fr;
696
+ gap: var(--spacing-xs);
697
+ }
698
+
699
+ .breakdown-item {
700
+ grid-template-columns: 80px 1fr 50px;
701
+ }
702
+
703
+ /* Users page responsive */
704
+ .search-row {
705
+ flex-direction: column;
706
+ }
707
+
708
+ .user-table {
709
+ font-size: var(--font-size-xs);
710
+ }
711
+
712
+ .user-table th:nth-child(3),
713
+ .user-table td:nth-child(3),
714
+ .user-table th:nth-child(5),
715
+ .user-table td:nth-child(5) {
716
+ display: none;
717
+ }
718
+
719
+ /* Activity page responsive */
720
+ .filters-row {
721
+ flex-direction: column;
722
+ }
723
+
724
+ .filters-row .filter-select,
725
+ .filters-row .filter-input {
726
+ width: 100%;
727
+ }
728
+
729
+ .activity-table th:nth-child(4),
730
+ .activity-table td:nth-child(4),
731
+ .activity-table th:nth-child(6),
732
+ .activity-table td:nth-child(6) {
733
+ display: none;
734
+ }
735
+
736
+ .stats-bar {
737
+ flex-wrap: wrap;
738
+ gap: var(--spacing-lg);
739
+ }
740
+
741
+ /* User detail responsive */
742
+ .user-header {
743
+ flex-direction: column;
744
+ gap: var(--spacing-lg);
745
+ }
746
+
747
+ .audit-item {
748
+ grid-template-columns: 1fr;
749
+ gap: var(--spacing-xs);
750
+ }
751
+
752
+ .sessions-summary {
753
+ flex-direction: column;
754
+ gap: var(--spacing-md);
755
+ }
756
+
757
+ .credits-form {
758
+ flex-direction: column;
759
+ align-items: stretch;
760
+ }
761
+
762
+ .credits-form input[type="number"],
763
+ .credits-form input[type="text"] {
764
+ width: 100%;
765
+ }
766
+ }