aria-code 0.167.0__py3-none-win_amd64.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 (601) hide show
  1. aria_bots/__init__.py +7 -0
  2. aria_bots/channels/README.md +97 -0
  3. aria_bots/channels/__init__.py +1 -0
  4. aria_bots/channels/approvals.py +263 -0
  5. aria_bots/channels/conversation.py +280 -0
  6. aria_bots/channels/digest.py +186 -0
  7. aria_bots/channels/registry.py +95 -0
  8. aria_bots/engine.py +144 -0
  9. aria_bots/feishu_bot.py +1385 -0
  10. aria_bots/logistics/__init__.py +1 -0
  11. aria_bots/logistics/carriers.py +253 -0
  12. aria_bots/logistics/freight.py +154 -0
  13. aria_bots/logistics/inventory.py +242 -0
  14. aria_bots/logistics/mcp_server.py +156 -0
  15. aria_bots/logistics/records.py +119 -0
  16. aria_bots/logistics/tenancy.py +152 -0
  17. aria_bots/market.py +91 -0
  18. aria_bots/relay_client.py +326 -0
  19. aria_bots/telegram_bot.py +299 -0
  20. aria_code/__init__.py +111 -0
  21. aria_code/_bin/aria-native.exe +0 -0
  22. aria_code/_bin/aria-runtime.exe +0 -0
  23. aria_code/_version.py +20 -0
  24. aria_code/account_memory.py +296 -0
  25. aria_code/account_session.py +166 -0
  26. aria_code/adk_apps/__init__.py +1 -0
  27. aria_code/adk_apps/aria_code_review/__init__.py +1 -0
  28. aria_code/adk_apps/aria_code_review/agent.py +32 -0
  29. aria_code/adk_apps/aria_research/__init__.py +1 -0
  30. aria_code/adk_apps/aria_research/agent.py +31 -0
  31. aria_code/agents/__init__.py +49 -0
  32. aria_code/agents/base.py +329 -0
  33. aria_code/agents/code_review.py +200 -0
  34. aria_code/agents/deep/__init__.py +37 -0
  35. aria_code/agents/deep/calibration_loop.py +144 -0
  36. aria_code/agents/deep/critic.py +125 -0
  37. aria_code/agents/deep/deepen.py +193 -0
  38. aria_code/agents/deep/models.py +149 -0
  39. aria_code/agents/deep/pipeline.py +164 -0
  40. aria_code/agents/deep/quant_fusion.py +192 -0
  41. aria_code/agents/deep/themes.py +95 -0
  42. aria_code/agents/deep/tiers.py +106 -0
  43. aria_code/agents/engineering/__init__.py +14 -0
  44. aria_code/agents/engineering/coder.py +222 -0
  45. aria_code/agents/engineering/tester.py +145 -0
  46. aria_code/agents/financial/__init__.py +21 -0
  47. aria_code/agents/financial/cashflow_burn.py +119 -0
  48. aria_code/agents/financial/catalyst.py +279 -0
  49. aria_code/agents/financial/corporate_finance.py +175 -0
  50. aria_code/agents/financial/debate.py +224 -0
  51. aria_code/agents/financial/earnings.py +315 -0
  52. aria_code/agents/financial/fundamental.py +178 -0
  53. aria_code/agents/financial/macro.py +111 -0
  54. aria_code/agents/financial/news.py +231 -0
  55. aria_code/agents/financial/risk.py +146 -0
  56. aria_code/agents/financial/sector.py +279 -0
  57. aria_code/agents/financial/strategist.py +121 -0
  58. aria_code/agents/financial/stripe_revenue.py +127 -0
  59. aria_code/agents/financial/synthesis.py +274 -0
  60. aria_code/agents/financial/technical.py +277 -0
  61. aria_code/agents/orchestrator.py +44 -0
  62. aria_code/agents/portfolio_agent.py +392 -0
  63. aria_code/agents/realty/__init__.py +62 -0
  64. aria_code/agents/realty/asset_diagnosis.py +152 -0
  65. aria_code/agents/realty/business_match.py +166 -0
  66. aria_code/agents/realty/cashflow_verify.py +209 -0
  67. aria_code/agents/realty/contract_rules.py +210 -0
  68. aria_code/agents/realty/energy_anomaly.py +189 -0
  69. aria_code/agents/realty/exit_settlement.py +208 -0
  70. aria_code/agents/realty/fulfillment_risk.py +206 -0
  71. aria_code/agents/realty/ops_optimize.py +160 -0
  72. aria_code/agents/realty/revenue_share.py +215 -0
  73. aria_code/agents/registry.py +168 -0
  74. aria_code/agents/signal_scheme.py +111 -0
  75. aria_code/agents/sports/__init__.py +0 -0
  76. aria_code/agents/sports/football_agent.py +197 -0
  77. aria_code/agents/supervisor.py +113 -0
  78. aria_code/agents/team.py +500 -0
  79. aria_code/agents/video/__init__.py +16 -0
  80. aria_code/agents/video/director.py +376 -0
  81. aria_code/agents/video/qa_agent.py +143 -0
  82. aria_code/agents/video/script_doctor.py +112 -0
  83. aria_code/agents/warehouse/__init__.py +25 -0
  84. aria_code/agents/warehouse/contracts.py +26 -0
  85. aria_code/agents/warehouse/dashboard.py +155 -0
  86. aria_code/agents/warehouse/fulfillment_leadtime.py +95 -0
  87. aria_code/agents/warehouse/inbound_exceptions.py +25 -0
  88. aria_code/agents/warehouse/inventory_health.py +24 -0
  89. aria_code/agents/warehouse/local_run.py +71 -0
  90. aria_code/agents/warehouse/local_snapshot.py +132 -0
  91. aria_code/agents/warehouse/logistics_cost.py +84 -0
  92. aria_code/agents/warehouse/logistics_sync.py +21 -0
  93. aria_code/agents/warehouse/navigation.schema.json +110 -0
  94. aria_code/agents/warehouse/task_agent.py +172 -0
  95. aria_code/agents/warehouse/workflow.py +31 -0
  96. aria_code/aliyun_data_client.py +4 -0
  97. aria_code/apps/README.md +12 -0
  98. aria_code/apps/__init__.py +2 -0
  99. aria_code/apps/channels/README.md +9 -0
  100. aria_code/apps/channels/__init__.py +17 -0
  101. aria_code/apps/channels/approvals.py +11 -0
  102. aria_code/apps/channels/conversation.py +11 -0
  103. aria_code/apps/channels/digest.py +11 -0
  104. aria_code/apps/channels/intake.py +92 -0
  105. aria_code/apps/channels/registry.py +11 -0
  106. aria_code/apps/channels/tradingview.py +94 -0
  107. aria_code/apps/cli/README.md +13 -0
  108. aria_code/apps/cli/__init__.py +2 -0
  109. aria_code/apps/cli/_optional.py +120 -0
  110. aria_code/apps/cli/app_server.py +656 -0
  111. aria_code/apps/cli/auto_update.py +125 -0
  112. aria_code/apps/cli/bootstrap.py +206 -0
  113. aria_code/apps/cli/broker_render.py +206 -0
  114. aria_code/apps/cli/chat_turn.py +1327 -0
  115. aria_code/apps/cli/cloud_models.py +231 -0
  116. aria_code/apps/cli/codegen_paths.py +29 -0
  117. aria_code/apps/cli/commands/__init__.py +34 -0
  118. aria_code/apps/cli/commands/_business_render.py +78 -0
  119. aria_code/apps/cli/commands/_ui.py +71 -0
  120. aria_code/apps/cli/commands/analysis_cmds.py +378 -0
  121. aria_code/apps/cli/commands/ashare_prediction_cmds.py +327 -0
  122. aria_code/apps/cli/commands/auth_cmds.py +215 -0
  123. aria_code/apps/cli/commands/backtest_cmds.py +2518 -0
  124. aria_code/apps/cli/commands/broker_cmds.py +1236 -0
  125. aria_code/apps/cli/commands/business_workflow_cmds.py +379 -0
  126. aria_code/apps/cli/commands/canvas_cmds.py +77 -0
  127. aria_code/apps/cli/commands/catalog.py +189 -0
  128. aria_code/apps/cli/commands/core_cmds.py +2748 -0
  129. aria_code/apps/cli/commands/data_cmds.py +521 -0
  130. aria_code/apps/cli/commands/diagnostic_cmds.py +285 -0
  131. aria_code/apps/cli/commands/diagnostic_ops_cmds.py +813 -0
  132. aria_code/apps/cli/commands/engineering_cmds.py +399 -0
  133. aria_code/apps/cli/commands/file_cmds.py +312 -0
  134. aria_code/apps/cli/commands/finance_service_cmds.py +60 -0
  135. aria_code/apps/cli/commands/fx_commodity_cmds.py +123 -0
  136. aria_code/apps/cli/commands/market.py +544 -0
  137. aria_code/apps/cli/commands/market_cmds.py +1419 -0
  138. aria_code/apps/cli/commands/market_context.py +432 -0
  139. aria_code/apps/cli/commands/market_render.py +7 -0
  140. aria_code/apps/cli/commands/model_cmds.py +2374 -0
  141. aria_code/apps/cli/commands/ops_cmds.py +721 -0
  142. aria_code/apps/cli/commands/orchestrator_cmds.py +181 -0
  143. aria_code/apps/cli/commands/pdf_export_cmds.py +125 -0
  144. aria_code/apps/cli/commands/portfolio_cmds.py +1316 -0
  145. aria_code/apps/cli/commands/report.py +476 -0
  146. aria_code/apps/cli/commands/scaffold_templates.py +617 -0
  147. aria_code/apps/cli/commands/session_cmds.py +236 -0
  148. aria_code/apps/cli/commands/session_ux_cmds.py +359 -0
  149. aria_code/apps/cli/commands/team.py +723 -0
  150. aria_code/apps/cli/commands/team_render.py +8 -0
  151. aria_code/apps/cli/commands/ui_cmds.py +401 -0
  152. aria_code/apps/cli/commands/warehouse_cmds.py +297 -0
  153. aria_code/apps/cli/commands/workflow_cmds.py +629 -0
  154. aria_code/apps/cli/commands/workspace_cmds.py +1543 -0
  155. aria_code/apps/cli/config_paths.py +73 -0
  156. aria_code/apps/cli/config_store.py +158 -0
  157. aria_code/apps/cli/constants.py +88 -0
  158. aria_code/apps/cli/context.py +34 -0
  159. aria_code/apps/cli/conversation_policy.py +53 -0
  160. aria_code/apps/cli/deterministic.py +200 -0
  161. aria_code/apps/cli/direct.py +48 -0
  162. aria_code/apps/cli/earnings_view.py +172 -0
  163. aria_code/apps/cli/endpoint_migration.py +64 -0
  164. aria_code/apps/cli/exec_events.py +255 -0
  165. aria_code/apps/cli/file_references.py +155 -0
  166. aria_code/apps/cli/finance_service_catalog.py +111 -0
  167. aria_code/apps/cli/football_reports.py +231 -0
  168. aria_code/apps/cli/github_app_auth.py +135 -0
  169. aria_code/apps/cli/google_login.py +239 -0
  170. aria_code/apps/cli/handlers/__init__.py +11 -0
  171. aria_code/apps/cli/handlers/broker_handlers.py +122 -0
  172. aria_code/apps/cli/handlers/chart_handlers.py +1314 -0
  173. aria_code/apps/cli/handlers/market_handlers.py +2570 -0
  174. aria_code/apps/cli/handlers/realty_handlers.py +114 -0
  175. aria_code/apps/cli/handlers/sports_handlers.py +22 -0
  176. aria_code/apps/cli/handlers/strategy_advice.py +82 -0
  177. aria_code/apps/cli/headless.py +352 -0
  178. aria_code/apps/cli/helpers.py +326 -0
  179. aria_code/apps/cli/hooks.py +180 -0
  180. aria_code/apps/cli/i18n.py +310 -0
  181. aria_code/apps/cli/intent.py +136 -0
  182. aria_code/apps/cli/intent_router.py +305 -0
  183. aria_code/apps/cli/intent_shadow.py +72 -0
  184. aria_code/apps/cli/intent_signals.py +347 -0
  185. aria_code/apps/cli/lifecycle_hooks.py +48 -0
  186. aria_code/apps/cli/local_tool_schemas.py +550 -0
  187. aria_code/apps/cli/main.py +39 -0
  188. aria_code/apps/cli/market_hours.py +100 -0
  189. aria_code/apps/cli/market_metadata.py +135 -0
  190. aria_code/apps/cli/market_universe.py +487 -0
  191. aria_code/apps/cli/message_processing.py +310 -0
  192. aria_code/apps/cli/mixin_binding.py +32 -0
  193. aria_code/apps/cli/model_catalog.py +652 -0
  194. aria_code/apps/cli/model_probe.py +169 -0
  195. aria_code/apps/cli/model_retirement.py +65 -0
  196. aria_code/apps/cli/native_branding.py +12 -0
  197. aria_code/apps/cli/native_bridge.py +118 -0
  198. aria_code/apps/cli/native_entry.py +58 -0
  199. aria_code/apps/cli/pdf_report.py +977 -0
  200. aria_code/apps/cli/plan_mode.py +139 -0
  201. aria_code/apps/cli/plotly_html.py +15 -0
  202. aria_code/apps/cli/prediction_feedback.py +202 -0
  203. aria_code/apps/cli/preflight.py +502 -0
  204. aria_code/apps/cli/project_aria.py +60 -0
  205. aria_code/apps/cli/prompt_assembly.py +78 -0
  206. aria_code/apps/cli/prompts/__init__.py +0 -0
  207. aria_code/apps/cli/prompts/coding.py +71 -0
  208. aria_code/apps/cli/prompts/select.py +193 -0
  209. aria_code/apps/cli/prompts/system_prompts.py +562 -0
  210. aria_code/apps/cli/prompts/ui.py +436 -0
  211. aria_code/apps/cli/provider_endpoints.py +237 -0
  212. aria_code/apps/cli/provider_keys.py +73 -0
  213. aria_code/apps/cli/providers/__init__.py +1 -0
  214. aria_code/apps/cli/providers/base.py +775 -0
  215. aria_code/apps/cli/providers/chat_routing.py +139 -0
  216. aria_code/apps/cli/providers/collaboration.py +98 -0
  217. aria_code/apps/cli/providers/llm/__init__.py +1 -0
  218. aria_code/apps/cli/providers/llm/offline_responses.py +68 -0
  219. aria_code/apps/cli/providers/llm/ollama_stream.py +1574 -0
  220. aria_code/apps/cli/providers/llm/response_cache.py +60 -0
  221. aria_code/apps/cli/providers/llm/sse_stream.py +298 -0
  222. aria_code/apps/cli/providers/runtime_bridge.py +586 -0
  223. aria_code/apps/cli/providers/vertexai_stream.py +592 -0
  224. aria_code/apps/cli/release_download.py +159 -0
  225. aria_code/apps/cli/review_runner.py +111 -0
  226. aria_code/apps/cli/runtime_consumer.py +769 -0
  227. aria_code/apps/cli/sandbox.py +32 -0
  228. aria_code/apps/cli/session_export.py +120 -0
  229. aria_code/apps/cli/session_jsonl.py +208 -0
  230. aria_code/apps/cli/session_refresh.py +123 -0
  231. aria_code/apps/cli/session_store.py +125 -0
  232. aria_code/apps/cli/skills_catalog.py +273 -0
  233. aria_code/apps/cli/task_isolation.py +211 -0
  234. aria_code/apps/cli/terminal_chrome.py +412 -0
  235. aria_code/apps/cli/todo_tracker.py +190 -0
  236. aria_code/apps/cli/tool_executor.py +932 -0
  237. aria_code/apps/cli/tool_registry.py +34 -0
  238. aria_code/apps/cli/tool_scope.py +113 -0
  239. aria_code/apps/cli/tools/__init__.py +40 -0
  240. aria_code/apps/cli/tools/context.py +46 -0
  241. aria_code/apps/cli/tools/file_tools.py +181 -0
  242. aria_code/apps/cli/tools/market_tools.py +626 -0
  243. aria_code/apps/cli/tools/notebook_tools.py +111 -0
  244. aria_code/apps/cli/tools/system_tools.py +656 -0
  245. aria_code/apps/cli/tools/write_tools.py +961 -0
  246. aria_code/apps/cli/tradingview_bridge.py +529 -0
  247. aria_code/apps/cli/transactions.py +269 -0
  248. aria_code/apps/cli/turn_planning.py +137 -0
  249. aria_code/apps/cli/update_check.py +257 -0
  250. aria_code/apps/cli/updater.py +373 -0
  251. aria_code/apps/cli/utils/__init__.py +0 -0
  252. aria_code/apps/cli/utils/market_detect.py +1663 -0
  253. aria_code/apps/cli/web_login.py +136 -0
  254. aria_code/apps/cli/workflow_runner.py +127 -0
  255. aria_code/apps/cli/workspace_route.py +121 -0
  256. aria_code/apps/daemon/README.md +14 -0
  257. aria_code/apps/vscode/README.md +115 -0
  258. aria_code/apps/vscode/package.json +70 -0
  259. aria_code/aria_cli.py +5244 -0
  260. aria_code/aria_daemon.py +1372 -0
  261. aria_code/aria_feishu_bot.py +16 -0
  262. aria_code/aria_mcp_server.py +61 -0
  263. aria_code/aria_relay_client.py +4 -0
  264. aria_code/aria_telegram_bot.py +11 -0
  265. aria_code/ariarc.py +385 -0
  266. aria_code/artifacts.py +581 -0
  267. aria_code/backtest_engine.py +4 -0
  268. aria_code/backtest_report.py +4 -0
  269. aria_code/brokers/__init__.py +78 -0
  270. aria_code/brokers/automation.py +193 -0
  271. aria_code/brokers/base.py +231 -0
  272. aria_code/brokers/capabilities.py +264 -0
  273. aria_code/brokers/cn/__init__.py +10 -0
  274. aria_code/brokers/cn/easytrader_broker.py +193 -0
  275. aria_code/brokers/cn/futu_broker.py +194 -0
  276. aria_code/brokers/cn/longbridge_broker.py +190 -0
  277. aria_code/brokers/cn/tiger_broker.py +196 -0
  278. aria_code/brokers/cn/xtquant_broker.py +225 -0
  279. aria_code/brokers/config.py +414 -0
  280. aria_code/brokers/intl/__init__.py +5 -0
  281. aria_code/brokers/intl/alpaca_broker.py +183 -0
  282. aria_code/brokers/intl/ibkr_broker.py +215 -0
  283. aria_code/brokers/intl/trading212_broker.py +183 -0
  284. aria_code/brokers/intl/webull_broker.py +156 -0
  285. aria_code/brokers/paper_broker.py +266 -0
  286. aria_code/brokers/planning.py +296 -0
  287. aria_code/brokers/registry.py +213 -0
  288. aria_code/brokers/trading.py +267 -0
  289. aria_code/canva_client.py +4 -0
  290. aria_code/change_store.py +127 -0
  291. aria_code/clients/__init__.py +0 -0
  292. aria_code/clients/aliyun_data_client.py +660 -0
  293. aria_code/clients/aria_relay_client.py +16 -0
  294. aria_code/clients/canva_client.py +284 -0
  295. aria_code/clients/figma_client.py +100 -0
  296. aria_code/clients/football_data_client.py +1671 -0
  297. aria_code/clients/kling_video_client.py +182 -0
  298. aria_code/clients/market_data_client.py +1985 -0
  299. aria_code/clients/openai_image_client.py +242 -0
  300. aria_code/clients/runway_video_client.py +157 -0
  301. aria_code/clients/warehouse_erp_client.py +105 -0
  302. aria_code/cloud_memory.py +190 -0
  303. aria_code/command_safety.py +19 -0
  304. aria_code/computer_use_server.py +276 -0
  305. aria_code/computer_use_tools.py +4 -0
  306. aria_code/dashboard_generator.py +579 -0
  307. aria_code/data_analysis_tools.py +4 -0
  308. aria_code/data_cleaner.py +483 -0
  309. aria_code/data_service.py +513 -0
  310. aria_code/datasources/__init__.py +23 -0
  311. aria_code/datasources/base.py +166 -0
  312. aria_code/datasources/router.py +253 -0
  313. aria_code/datasources/sec_statements.py +217 -0
  314. aria_code/datasources/sources/__init__.py +15 -0
  315. aria_code/datasources/sources/akshare_source.py +269 -0
  316. aria_code/datasources/sources/alpha_vantage_source.py +203 -0
  317. aria_code/datasources/sources/edgar_source.py +219 -0
  318. aria_code/datasources/sources/finnhub_source.py +198 -0
  319. aria_code/datasources/sources/fred_source.py +223 -0
  320. aria_code/datasources/sources/tushare_source.py +143 -0
  321. aria_code/datasources/sources/web_scraper_source.py +278 -0
  322. aria_code/datasources/sources/world_bank_source.py +206 -0
  323. aria_code/datasources/sources/yfinance_source.py +152 -0
  324. aria_code/doctor.py +860 -0
  325. aria_code/domain/__init__.py +0 -0
  326. aria_code/domain/_finance_core/__init__.py +5 -0
  327. aria_code/domain/_finance_core/backtest_engine.py +325 -0
  328. aria_code/domain/_finance_core/performance_stats.py +101 -0
  329. aria_code/domain/backtest_engine.py +75 -0
  330. aria_code/domain/backtest_report.py +488 -0
  331. aria_code/domain/finance_formulas.py +389 -0
  332. aria_code/domain/performance_stats.py +6 -0
  333. aria_code/domain/portfolio_ledger.py +307 -0
  334. aria_code/domain/strategy_vault.py +421 -0
  335. aria_code/evals/__init__.py +37 -0
  336. aria_code/evals/behavior.py +113 -0
  337. aria_code/evals/gap.py +93 -0
  338. aria_code/evals/harness.py +949 -0
  339. aria_code/evals/review_probe.py +132 -0
  340. aria_code/evals/runner.py +425 -0
  341. aria_code/evals/scorecard.py +322 -0
  342. aria_code/evals/summary.py +125 -0
  343. aria_code/external_agent_runner.py +115 -0
  344. aria_code/figma_client.py +4 -0
  345. aria_code/file_analysis_tools.py +4 -0
  346. aria_code/finance_formulas.py +4 -0
  347. aria_code/football_data_client.py +4 -0
  348. aria_code/image_gen_tools.py +4 -0
  349. aria_code/intent_classifier.py +459 -0
  350. aria_code/kling_video_client.py +4 -0
  351. aria_code/licensing.py +151 -0
  352. aria_code/local_finance_tools.py +4 -0
  353. aria_code/local_image_provider.py +4 -0
  354. aria_code/local_llm_provider.py +4 -0
  355. aria_code/macro_tools.py +4 -0
  356. aria_code/markdown_pdf.py +289 -0
  357. aria_code/market_data_client.py +4 -0
  358. aria_code/mcp_client.py +744 -0
  359. aria_code/memory_manager.py +273 -0
  360. aria_code/model_capability.py +512 -0
  361. aria_code/notification_tools.py +4 -0
  362. aria_code/openai_image_client.py +4 -0
  363. aria_code/packages/__init__.py +26 -0
  364. aria_code/packages/adk_bridge/__init__.py +11 -0
  365. aria_code/packages/adk_bridge/code_review_tools.py +49 -0
  366. aria_code/packages/adk_bridge/market_tools.py +125 -0
  367. aria_code/packages/aria_agents/__init__.py +5 -0
  368. aria_code/packages/aria_agents/manifest.py +78 -0
  369. aria_code/packages/aria_core/__init__.py +34 -0
  370. aria_code/packages/aria_core/architecture.py +269 -0
  371. aria_code/packages/aria_core/export.py +147 -0
  372. aria_code/packages/aria_core/manifest.py +65 -0
  373. aria_code/packages/aria_core/paths.py +57 -0
  374. aria_code/packages/aria_core/secure_file.py +68 -0
  375. aria_code/packages/aria_infra/__init__.py +15 -0
  376. aria_code/packages/aria_infra/arthera.py +58 -0
  377. aria_code/packages/aria_infra/doctor.py +246 -0
  378. aria_code/packages/aria_infra/product.py +40 -0
  379. aria_code/packages/aria_mcp/__init__.py +25 -0
  380. aria_code/packages/aria_mcp/bridge.py +232 -0
  381. aria_code/packages/aria_mcp/circuit.py +82 -0
  382. aria_code/packages/aria_mcp/config.py +162 -0
  383. aria_code/packages/aria_mcp/installer.py +95 -0
  384. aria_code/packages/aria_mcp/server.py +1705 -0
  385. aria_code/packages/aria_mcp/tools.py +81 -0
  386. aria_code/packages/aria_sdk/__init__.py +19 -0
  387. aria_code/packages/aria_sdk/client.py +393 -0
  388. aria_code/packages/aria_sdk/providers.py +70 -0
  389. aria_code/packages/aria_sdk/streaming.py +75 -0
  390. aria_code/packages/aria_sdk/types.py +86 -0
  391. aria_code/packages/aria_services/__init__.py +92 -0
  392. aria_code/packages/aria_services/cache.py +60 -0
  393. aria_code/packages/aria_services/context.py +356 -0
  394. aria_code/packages/aria_services/context_checkpoints.py +157 -0
  395. aria_code/packages/aria_services/data.py +11 -0
  396. aria_code/packages/aria_services/provider_health.py +304 -0
  397. aria_code/packages/aria_services/references.py +247 -0
  398. aria_code/packages/aria_services/registry.py +249 -0
  399. aria_code/packages/aria_services/research_protocol.py +137 -0
  400. aria_code/packages/aria_services/research_quality.py +186 -0
  401. aria_code/packages/aria_services/settings.py +160 -0
  402. aria_code/packages/aria_services/usage.py +151 -0
  403. aria_code/packages/aria_skills/__init__.py +46 -0
  404. aria_code/packages/aria_skills/catalog.py +149 -0
  405. aria_code/packages/aria_skills/loader.py +455 -0
  406. aria_code/packages/aria_skills/registry.py +84 -0
  407. aria_code/packages/aria_tools/__init__.py +5 -0
  408. aria_code/packages/aria_tools/financial/__init__.py +5 -0
  409. aria_code/packages/aria_tools/financial/_paths.py +92 -0
  410. aria_code/packages/aria_tools/registry.py +129 -0
  411. aria_code/packages/quant_engine/__init__.py +33 -0
  412. aria_code/packages/quant_engine/_namespace.py +24 -0
  413. aria_code/packages/quant_engine/backtest/__init__.py +10 -0
  414. aria_code/packages/quant_engine/backtest/core.py +53 -0
  415. aria_code/packages/quant_engine/backtest/engine.py +102 -0
  416. aria_code/packages/quant_engine/portfolio/__init__.py +9 -0
  417. aria_code/packages/quant_engine/portfolio/optimizer.py +85 -0
  418. aria_code/packages/quant_engine/sports/__init__.py +76 -0
  419. aria_code/packages/quant_engine/sports/calibrator.py +354 -0
  420. aria_code/packages/quant_engine/sports/dixon_coles.py +234 -0
  421. aria_code/packages/quant_engine/sports/elo.py +300 -0
  422. aria_code/packages/quant_engine/sports/form.py +188 -0
  423. aria_code/packages/quant_engine/sports/h2h.py +195 -0
  424. aria_code/packages/quant_engine/sports/predictor.py +312 -0
  425. aria_code/packages/quant_engine/sports/tracker.py +665 -0
  426. aria_code/packages/quant_engine/stochastic/__init__.py +31 -0
  427. aria_code/packages/quant_engine/stochastic/gbm_enhanced.py +195 -0
  428. aria_code/packages/quant_engine/stochastic/ito_calculus.py +477 -0
  429. aria_code/packages/quant_engine/stochastic/kelly_criterion.py +181 -0
  430. aria_code/packages/quant_engine/stochastic/monte_carlo_advanced.py +95 -0
  431. aria_code/packages/quant_engine/stochastic/options_pricing.py +576 -0
  432. aria_code/packages/quant_engine/stochastic/stochastic_processes.py +90 -0
  433. aria_code/packs/__init__.py +85 -0
  434. aria_code/packs/base.py +168 -0
  435. aria_code/packs/finance/__init__.py +250 -0
  436. aria_code/packs/healthcare/__init__.py +40 -0
  437. aria_code/packs/logistics/__init__.py +171 -0
  438. aria_code/packs/payments/__init__.py +139 -0
  439. aria_code/packs/realty/__init__.py +190 -0
  440. aria_code/packs/registry.py +202 -0
  441. aria_code/packs/rules.py +90 -0
  442. aria_code/plan_utils.py +194 -0
  443. aria_code/plugin_loader.py +328 -0
  444. aria_code/portfolio_ledger.py +4 -0
  445. aria_code/preview_server.py +449 -0
  446. aria_code/privacy/__init__.py +5 -0
  447. aria_code/privacy/feedback.py +123 -0
  448. aria_code/project_review.py +278 -0
  449. aria_code/project_review_api.py +235 -0
  450. aria_code/project_review_server.py +18 -0
  451. aria_code/project_tools.py +4 -0
  452. aria_code/providers/__init__.py +30 -0
  453. aria_code/providers/google_video_provider.py +256 -0
  454. aria_code/providers/llm/__init__.py +19 -0
  455. aria_code/providers/llm/anthropic.py +184 -0
  456. aria_code/providers/llm/arthera_gateway.py +90 -0
  457. aria_code/providers/llm/autoconfig.py +213 -0
  458. aria_code/providers/llm/base.py +139 -0
  459. aria_code/providers/llm/custom.py +158 -0
  460. aria_code/providers/llm/ollama.py +137 -0
  461. aria_code/providers/llm/openai_compat.py +350 -0
  462. aria_code/providers/llm/registry.py +457 -0
  463. aria_code/providers/local_image_provider.py +202 -0
  464. aria_code/providers/local_llm_provider.py +549 -0
  465. aria_code/providers/ollama_models.py +79 -0
  466. aria_code/providers/openai_params.py +32 -0
  467. aria_code/providers/tool_messages.py +100 -0
  468. aria_code/realty_data_tools.py +4 -0
  469. aria_code/report_exporters.py +150 -0
  470. aria_code/report_generator.py +1764 -0
  471. aria_code/review_service.py +497 -0
  472. aria_code/runtime/__init__.py +176 -0
  473. aria_code/runtime/acceptance.py +632 -0
  474. aria_code/runtime/agent_loop.py +1851 -0
  475. aria_code/runtime/agent_profiles.py +75 -0
  476. aria_code/runtime/approval.py +71 -0
  477. aria_code/runtime/baseline.py +219 -0
  478. aria_code/runtime/budget.py +232 -0
  479. aria_code/runtime/checkpoints.py +481 -0
  480. aria_code/runtime/consult.py +65 -0
  481. aria_code/runtime/contract.py +282 -0
  482. aria_code/runtime/delivery.py +432 -0
  483. aria_code/runtime/events.py +113 -0
  484. aria_code/runtime/gateway.py +167 -0
  485. aria_code/runtime/lsp.py +484 -0
  486. aria_code/runtime/native_index.py +153 -0
  487. aria_code/runtime/orchestrator.py +55 -0
  488. aria_code/runtime/processes.py +343 -0
  489. aria_code/runtime/project_graph.py +614 -0
  490. aria_code/runtime/repo_map.py +712 -0
  491. aria_code/runtime/research_bundle.py +105 -0
  492. aria_code/runtime/review.py +269 -0
  493. aria_code/runtime/run_state.py +127 -0
  494. aria_code/runtime/run_store.py +522 -0
  495. aria_code/runtime/scoped_runs.py +113 -0
  496. aria_code/runtime/self_healing.py +422 -0
  497. aria_code/runtime/semantic_diff.py +171 -0
  498. aria_code/runtime/subagent.py +721 -0
  499. aria_code/runtime/symbol_edit.py +117 -0
  500. aria_code/runtime/task_brief.py +46 -0
  501. aria_code/runtime/task_context.py +145 -0
  502. aria_code/runtime/task_ledger.py +108 -0
  503. aria_code/runtime/task_orchestrator.py +90 -0
  504. aria_code/runtime/task_outcome.py +33 -0
  505. aria_code/runtime/task_verification.py +266 -0
  506. aria_code/runtime/task_worktree.py +448 -0
  507. aria_code/runtime/tool_executor.py +329 -0
  508. aria_code/runtime/tool_policy.py +107 -0
  509. aria_code/runtime/transactions.py +216 -0
  510. aria_code/runtime/windows_job.py +115 -0
  511. aria_code/runtime/workflows.py +222 -0
  512. aria_code/runtime/worktrees.py +215 -0
  513. aria_code/runway_video_client.py +4 -0
  514. aria_code/safety/__init__.py +27 -0
  515. aria_code/safety/client_isolation.py +178 -0
  516. aria_code/safety/permissions.py +339 -0
  517. aria_code/safety/risk.py +699 -0
  518. aria_code/safety/sandbox.py +148 -0
  519. aria_code/safety/service.py +102 -0
  520. aria_code/service_endpoints.py +14 -0
  521. aria_code/setup_wizard.py +684 -0
  522. aria_code/spreadsheet_tools.py +4 -0
  523. aria_code/strategy_vault.py +4 -0
  524. aria_code/tools/__init__.py +0 -0
  525. aria_code/tools/artifact_tools.py +252 -0
  526. aria_code/tools/broker_tools.py +92 -0
  527. aria_code/tools/build_quant_engine.py +97 -0
  528. aria_code/tools/code_audit_tools.py +192 -0
  529. aria_code/tools/computer_use_tools.py +509 -0
  530. aria_code/tools/data_analysis_tools.py +831 -0
  531. aria_code/tools/enterprise_finance_tools.py +202 -0
  532. aria_code/tools/extended_tools.py +240 -0
  533. aria_code/tools/file_analysis_tools.py +880 -0
  534. aria_code/tools/image_gen_tools.py +114 -0
  535. aria_code/tools/local_finance_tools.py +3488 -0
  536. aria_code/tools/logistics_carriers.py +11 -0
  537. aria_code/tools/logistics_inventory.py +11 -0
  538. aria_code/tools/logistics_io.py +11 -0
  539. aria_code/tools/logistics_tenancy.py +11 -0
  540. aria_code/tools/logistics_tools.py +11 -0
  541. aria_code/tools/macro_tools.py +412 -0
  542. aria_code/tools/notification_tools.py +249 -0
  543. aria_code/tools/project_tools.py +525 -0
  544. aria_code/tools/realty_data_tools.py +662 -0
  545. aria_code/tools/spreadsheet_tools.py +399 -0
  546. aria_code/tools/stripe_tools.py +115 -0
  547. aria_code/tools/video_tools.py +500 -0
  548. aria_code/training/__init__.py +1 -0
  549. aria_code/training/compare.py +117 -0
  550. aria_code/training/prelude_commands.py +111 -0
  551. aria_code/training/prelude_eval.py +390 -0
  552. aria_code/training/prelude_real.py +183 -0
  553. aria_code/training/prelude_train.py +248 -0
  554. aria_code/training/sft_dataset.py +230 -0
  555. aria_code/training/trajectory_dataset.py +263 -0
  556. aria_code/ui/__init__.py +105 -0
  557. aria_code/ui/banner.py +404 -0
  558. aria_code/ui/completer.py +571 -0
  559. aria_code/ui/console.py +285 -0
  560. aria_code/ui/input_box.py +505 -0
  561. aria_code/ui/mentions.py +206 -0
  562. aria_code/ui/picker.py +248 -0
  563. aria_code/ui/render/__init__.py +11 -0
  564. aria_code/ui/render/actions.py +297 -0
  565. aria_code/ui/render/finance.py +1732 -0
  566. aria_code/ui/render/market.py +253 -0
  567. aria_code/ui/render/output.py +954 -0
  568. aria_code/ui/render/responsive.py +75 -0
  569. aria_code/ui/render/team.py +367 -0
  570. aria_code/ui/robot.py +239 -0
  571. aria_code/ui/startup_dashboard.py +110 -0
  572. aria_code/video_analysis.py +147 -0
  573. aria_code/video_editor.py +518 -0
  574. aria_code/video_workflow/__init__.py +8 -0
  575. aria_code/video_workflow/__main__.py +61 -0
  576. aria_code/video_workflow/engines/__init__.py +18 -0
  577. aria_code/video_workflow/engines/base.py +69 -0
  578. aria_code/video_workflow/engines/custom_model.py +204 -0
  579. aria_code/video_workflow/engines/google_veo.py +94 -0
  580. aria_code/video_workflow/engines/local_engine.py +71 -0
  581. aria_code/video_workflow/engines/registry.py +98 -0
  582. aria_code/video_workflow/google_models.py +278 -0
  583. aria_code/video_workflow/music/__init__.py +5 -0
  584. aria_code/video_workflow/music/foley_service.py +132 -0
  585. aria_code/video_workflow/music/service.py +212 -0
  586. aria_code/video_workflow/pipeline.py +620 -0
  587. aria_code/video_workflow/plan.py +202 -0
  588. aria_code/video_workflow/session.py +297 -0
  589. aria_code/workspace/__init__.py +6 -0
  590. aria_code/workspace/files.py +219 -0
  591. aria_code/workspace/verify.py +167 -0
  592. aria_code/workspace_changes.py +199 -0
  593. aria_code/workspace_service.py +196 -0
  594. aria_code/workspace_tools.py +150 -0
  595. aria_code-0.167.0.dist-info/METADATA +330 -0
  596. aria_code-0.167.0.dist-info/RECORD +601 -0
  597. aria_code-0.167.0.dist-info/WHEEL +5 -0
  598. aria_code-0.167.0.dist-info/entry_points.txt +5 -0
  599. aria_code-0.167.0.dist-info/licenses/LICENSE +201 -0
  600. aria_code-0.167.0.dist-info/licenses/NOTICE +49 -0
  601. aria_code-0.167.0.dist-info/top_level.txt +2 -0
@@ -0,0 +1,273 @@
1
+ """Skills 目录 —— 从 aria_cli.py 抽出的纯数据。
2
+
3
+ SKILLS 字面量原本在 aria_cli.py 的 1772-2035 行(264 行)。同 model_catalog:
4
+ 纯字面量、零耦合,用普通 import 即可,core_cmds / diagnostic_cmds 的裸名
5
+ 引用不受影响。
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ SKILLS = [
11
+ {
12
+ "command": "/morning-brief",
13
+ "name": "Morning Brief",
14
+ "category": "research",
15
+ "description": "Daily market briefing with key events and outlook",
16
+ "args": "[focus_area]",
17
+ "prompt": (
18
+ "Generate a comprehensive morning market briefing:\n"
19
+ "1. US market futures and overnight moves\n"
20
+ "2. Key economic events and earnings today\n"
21
+ "3. Global markets overview (Asia, Europe)\n"
22
+ "4. Top sector movers and themes\n"
23
+ "5. Trading outlook and key levels to watch\n"
24
+ "{extra}"
25
+ ),
26
+ "tools_hint": ["web_search", "get_market_indices", "get_sector_performance", "analyze_news"],
27
+ },
28
+ {
29
+ "command": "/deep-analysis",
30
+ "name": "Deep Analysis",
31
+ "category": "analysis",
32
+ "description": "Multi-factor stock deep dive (technical + fundamental + sentiment)",
33
+ "args": "<symbol>",
34
+ "prompt": (
35
+ "Perform a comprehensive multi-factor analysis of {symbol}:\n"
36
+ "1. Technical Analysis: trend, support/resistance, indicators (RSI, MACD, Bollinger)\n"
37
+ "2. Fundamental Analysis: PE, PB, revenue growth, margins, debt ratios\n"
38
+ "3. Sentiment Analysis: recent news sentiment, analyst ratings, social buzz\n"
39
+ "4. Risk Assessment: VaR, beta, max drawdown potential\n"
40
+ "5. Verdict: Bull/Bear/Neutral with confidence level and price targets"
41
+ ),
42
+ "tools_hint": ["web_search", "get_market_data", "calculate_factors", "analyze_news", "peer_comparison", "piotroski_fscore", "get_risk_metrics"],
43
+ },
44
+ {
45
+ "command": "/trade-idea",
46
+ "name": "Trade Idea",
47
+ "category": "strategy",
48
+ "description": "AI-generated trade ideas with entry/exit levels",
49
+ "args": "[market_or_sector]",
50
+ "prompt": (
51
+ "Generate 3 actionable trade ideas{context}:\n"
52
+ "For each idea provide:\n"
53
+ "1. Symbol and direction (Long/Short)\n"
54
+ "2. Entry zone, stop loss, and 2 take-profit levels\n"
55
+ "3. Risk-reward ratio\n"
56
+ "4. Catalyst: what's driving the trade\n"
57
+ "5. Timeframe (swing/position/day)\n"
58
+ "6. Confidence level (1-10)"
59
+ ),
60
+ "tools_hint": ["web_search", "get_market_data", "analyze_news", "recommend_strategy"],
61
+ },
62
+ {
63
+ "command": "/risk-report",
64
+ "name": "Risk Report",
65
+ "category": "risk",
66
+ "description": "Portfolio risk analysis with VaR, stress tests, and correlation",
67
+ "args": "[symbols...]",
68
+ "prompt": (
69
+ "Generate a comprehensive risk report for portfolio: {symbols}\n"
70
+ "1. Portfolio VaR (95%, 99%) — daily and monthly\n"
71
+ "2. Correlation matrix between holdings\n"
72
+ "3. Concentration risk by sector/geography\n"
73
+ "4. Stress test scenarios (2008 crisis, COVID crash, rate hike)\n"
74
+ "5. Tail risk analysis\n"
75
+ "6. Recommendations: rebalancing suggestions to reduce risk"
76
+ ),
77
+ "tools_hint": ["assess_portfolio_risk", "get_risk_metrics", "stress_test_strategy"],
78
+ },
79
+ {
80
+ "command": "/sector-rotation",
81
+ "name": "Sector Rotation",
82
+ "category": "strategy",
83
+ "description": "Sector rotation analysis with economic cycle positioning",
84
+ "args": "",
85
+ "prompt": (
86
+ "Analyze current sector rotation dynamics:\n"
87
+ "1. Current economic cycle phase (early/mid/late/recession)\n"
88
+ "2. All 11 GICS sectors: performance, momentum, relative strength\n"
89
+ "3. Leading vs lagging sectors and why\n"
90
+ "4. Sector rotation strategy: which sectors to overweight/underweight\n"
91
+ "5. Top stock picks from the strongest sectors\n"
92
+ "6. Historical analog: which past period is most similar"
93
+ ),
94
+ "tools_hint": ["get_sector_performance", "get_market_indices", "analyze_news"],
95
+ },
96
+ {
97
+ "command": "/macro-outlook",
98
+ "name": "Macro Outlook",
99
+ "category": "research",
100
+ "description": "Macroeconomic analysis: rates, inflation, growth & cycle",
101
+ "args": "[region]",
102
+ "prompt": (
103
+ "Provide a macroeconomic outlook{context}:\n"
104
+ "1. GDP growth forecast and trends\n"
105
+ "2. Inflation trajectory (CPI, PCE) and central bank response\n"
106
+ "3. Interest rate path: current level and expectations\n"
107
+ "4. Employment situation: jobs, wages, participation\n"
108
+ "5. Key risks: geopolitical, financial, systemic\n"
109
+ "6. Asset class implications: equities, bonds, commodities, crypto"
110
+ ),
111
+ "tools_hint": ["web_search", "get_world_bank_reports", "get_bonds_data", "analyze_news"],
112
+ },
113
+ {
114
+ "command": "/factor-screen",
115
+ "name": "Factor Screen",
116
+ "category": "quant",
117
+ "description": "Factor-based stock screening (value, momentum, quality, etc.)",
118
+ "args": "<factor_type>",
119
+ "prompt": (
120
+ "Screen US stocks using {factor} factor strategy:\n"
121
+ "1. Define the factor criteria and thresholds\n"
122
+ "2. Top 10 stocks ranking highest on {factor}\n"
123
+ "3. For each: symbol, score, key metrics, sector\n"
124
+ "4. Historical factor performance: how has {factor} performed\n"
125
+ "5. Current factor environment: is {factor} in favor?\n"
126
+ "6. Combined multi-factor overlay suggestion"
127
+ ),
128
+ "tools_hint": ["calculate_factors", "get_alpha158_factors", "get_market_data"],
129
+ },
130
+ {
131
+ "command": "/crypto-scan",
132
+ "name": "Crypto Scanner",
133
+ "category": "crypto",
134
+ "description": "Cryptocurrency market scan with top movers and DeFi trends",
135
+ "args": "[focus]",
136
+ "prompt": (
137
+ "Scan the cryptocurrency market:\n"
138
+ "1. BTC and ETH: price, trend, dominance, key levels\n"
139
+ "2. Top 5 gainers and top 5 losers (24h)\n"
140
+ "3. Market sentiment: Fear & Greed index, funding rates\n"
141
+ "4. DeFi and Layer-2 highlights\n"
142
+ "5. Upcoming catalysts: halvings, upgrades, token unlocks\n"
143
+ "6. Trading opportunities with risk levels\n"
144
+ "{extra}"
145
+ ),
146
+ "tools_hint": ["get_crypto_data", "analyze_news"],
147
+ },
148
+ {
149
+ "command": "/backtest-report",
150
+ "name": "Backtest Report",
151
+ "category": "quant",
152
+ "description": "Run and analyze a strategy backtest with detailed metrics",
153
+ "args": "<strategy> <symbol> [start] [end]",
154
+ "prompt": (
155
+ "Run a detailed backtest of '{strategy}' strategy on {symbol} from {start} to {end}:\n"
156
+ "1. Performance summary: total return, annualized, Sharpe, Sortino\n"
157
+ "2. Risk metrics: max drawdown, VaR, downside deviation\n"
158
+ "3. Trade analysis: win rate, avg win/loss, profit factor\n"
159
+ "4. Monthly returns breakdown\n"
160
+ "5. Comparison vs buy-and-hold and benchmark (SPY)\n"
161
+ "6. Optimization suggestions: parameter sensitivity"
162
+ ),
163
+ "tools_hint": ["backtest_strategy", "get_market_data", "get_risk_metrics"],
164
+ },
165
+ {
166
+ "command": "/watchlist-scan",
167
+ "name": "Watchlist Scan",
168
+ "category": "tools",
169
+ "description": "Scan all watchlist stocks for signals and alerts",
170
+ "args": "",
171
+ "prompt": (
172
+ "Scan my watchlist ({symbols}) and for each stock provide:\n"
173
+ "1. Current price and daily change\n"
174
+ "2. Technical signal: Buy/Sell/Hold based on key indicators\n"
175
+ "3. Any earnings or events upcoming\n"
176
+ "4. News sentiment (positive/neutral/negative)\n"
177
+ "5. Overall alert level: Green/Yellow/Red\n"
178
+ "Sort by urgency of action needed."
179
+ ),
180
+ "tools_hint": ["get_market_data", "analyze_news"],
181
+ },
182
+ {
183
+ "command": "/gen-strategy",
184
+ "name": "Generate Strategy Code",
185
+ "category": "code",
186
+ "description": "Generate complete Python trading strategy code",
187
+ "args": "<strategy_type> [symbol]",
188
+ "prompt": (
189
+ "Generate a complete, production-ready Python backtrader trading strategy.\n"
190
+ "Strategy type: {strategy}\n"
191
+ "Target symbol: {symbol}\n\n"
192
+ "Requirements:\n"
193
+ "1. Full backtrader Strategy class with __init__, next, notify_order\n"
194
+ "2. Proper indicator initialization (use bt.indicators)\n"
195
+ "3. Entry/exit logic with clear conditions\n"
196
+ "4. Position sizing (percent sizer or fixed)\n"
197
+ "5. Risk management: stop-loss and take-profit\n"
198
+ "6. Logging via self.log()\n"
199
+ "7. Complete cerebro setup code at the bottom\n\n"
200
+ "Return ONLY the Python code wrapped in ```python``` fences. "
201
+ "Include inline comments explaining the logic."
202
+ ),
203
+ "tools_hint": ["recommend_strategy", "backtest_strategy"],
204
+ },
205
+ {
206
+ "command": "/gen-analysis",
207
+ "name": "Generate Analysis Script",
208
+ "category": "code",
209
+ "description": "Generate a Python analysis/visualization script",
210
+ "args": "<topic> [symbols...]",
211
+ "prompt": (
212
+ "Generate a Python script for financial analysis and visualization.\n"
213
+ "Topic: {topic}\n"
214
+ "Symbols: {symbols}\n\n"
215
+ "Requirements:\n"
216
+ "1. Use pandas, numpy, matplotlib/plotly, yfinance\n"
217
+ "2. Fetch real market data with yfinance\n"
218
+ "3. Compute relevant metrics/indicators\n"
219
+ "4. Create informative charts/plots\n"
220
+ "5. Print a summary table of key findings\n"
221
+ "6. Include error handling for data fetching\n\n"
222
+ "Return ONLY the Python code wrapped in ```python``` fences. "
223
+ "Include inline comments."
224
+ ),
225
+ "tools_hint": ["get_market_data", "calculate_factors"],
226
+ },
227
+ {
228
+ "command": "/gen-bot",
229
+ "name": "Generate Trading Bot",
230
+ "category": "code",
231
+ "description": "Generate live trading bot with exchange API (ccxt)",
232
+ "args": "<exchange> <strategy>",
233
+ "prompt": (
234
+ "Generate a Python trading bot for live execution.\n"
235
+ "Exchange: {exchange}\n"
236
+ "Strategy: {strategy}\n\n"
237
+ "Requirements:\n"
238
+ "1. Use ccxt library for exchange connection\n"
239
+ "2. Market data fetching and order execution\n"
240
+ "3. Signal generation based on the strategy logic\n"
241
+ "4. Risk management: max position size, daily loss limit\n"
242
+ "5. Logging with timestamps\n"
243
+ "6. Graceful shutdown handling (SIGINT)\n"
244
+ "7. Configuration via environment variables (API keys)\n"
245
+ "8. Paper trading mode toggle\n\n"
246
+ "Return ONLY the Python code wrapped in ```python``` fences. "
247
+ "NEVER include actual API keys. Use env vars."
248
+ ),
249
+ "tools_hint": ["recommend_strategy"],
250
+ },
251
+ {
252
+ "command": "/train-status",
253
+ "name": "Training Status",
254
+ "category": "tools",
255
+ "description": "Check Aria model training and data pipeline status",
256
+ "args": "",
257
+ "prompt": (
258
+ "Check the current Aria model training status.\n"
259
+ "1. Locate the project root via the ARIA_PROJECT_ROOT environment variable, or "
260
+ "search upward from the current directory for a 'packages/ml/llm/training' folder.\n"
261
+ "2. List checkpoint directories inside 'packages/ml/llm/training/outputs/' "
262
+ "(any subdirectory containing 'trainer_state.json').\n"
263
+ "3. Read the latest checkpoint's trainer_state.json: report current step, "
264
+ "total steps, epoch, eval_loss, and best_model_checkpoint.\n"
265
+ "4. Check for model_versions.json in the training outputs and report the "
266
+ "currently deployed version if present.\n"
267
+ "5. List recent training data files under 'data/training/' (newest 5 files).\n"
268
+ "Summarize: training progress (step/total, %), eval_loss trend, "
269
+ "deployed version, and data pipeline status."
270
+ ),
271
+ "tools_hint": ["read_file", "list_files"],
272
+ },
273
+ ]
@@ -0,0 +1,211 @@
1
+ """The REPL's side of task worktrees: start one per task, offer to apply it.
2
+
3
+ ``runtime/task_worktree.py`` does the git work; this decides when a turn runs
4
+ in a worktree, tells the executor where it is, and asks after a turn that
5
+ changed files whether those changes should reach the user's own copy.
6
+
7
+ Only the interactive REPL isolates. Headless ``-p`` runs keep editing in
8
+ place: a script that asked for a change expects to find it on disk when the
9
+ command exits, and there is nobody to ask.
10
+
11
+ ``task_isolation: off`` in the config, or ``ARIA_TASK_ISOLATION=off`` in the
12
+ environment, turns it off.
13
+ """
14
+
15
+ from __future__ import annotations
16
+
17
+ import atexit
18
+ import logging
19
+ import os
20
+ from pathlib import Path
21
+ from typing import Any, Callable, Optional
22
+
23
+ from aria_code.runtime.task_worktree import (
24
+ TaskWorktree,
25
+ TaskWorktreeError,
26
+ TaskWorktrees,
27
+ default_task_worktrees,
28
+ )
29
+
30
+ logger = logging.getLogger(__name__)
31
+
32
+ _READ_ONLY_MODES = frozenset({"read-only", "readonly", "read_only", "plan"})
33
+
34
+ _MANAGER: list[Optional[TaskWorktrees]] = [None]
35
+ _CLEANUP_REGISTERED = [False]
36
+
37
+
38
+ def manager() -> TaskWorktrees:
39
+ if _MANAGER[0] is None:
40
+ _MANAGER[0] = default_task_worktrees()
41
+ return _MANAGER[0]
42
+
43
+
44
+ _OFF = {"off", "false", "none", "0"}
45
+
46
+
47
+ def isolation_enabled(config: dict) -> bool:
48
+ setting = os.environ.get("ARIA_TASK_ISOLATION") or config.get("task_isolation", "worktree")
49
+ if str(setting or "").strip().lower() in _OFF:
50
+ return False
51
+ return str(config.get("permission_mode", "workspace-write") or "") not in _READ_ONLY_MODES
52
+
53
+
54
+ def _workspace(config: dict) -> Path:
55
+ return Path(config.get("_session_workspace_root") or os.getcwd()).expanduser().resolve()
56
+
57
+
58
+ def prepare(config: dict, *, notify: Callable[[str], None] = print) -> Optional[TaskWorktree]:
59
+ """The worktree this turn runs in, or None to edit in place.
60
+
61
+ Never raises: a repository git cannot snapshot falls back to editing in
62
+ place with a one-line note, as before this existed.
63
+ """
64
+ if not isolation_enabled(config):
65
+ return None
66
+ tasks = manager()
67
+ workspace = _workspace(config)
68
+ try:
69
+ before = tasks.active(workspace)
70
+ task = tasks.ensure(workspace)
71
+ except TaskWorktreeError as exc:
72
+ logger.debug("task worktree unavailable: %s", exc)
73
+ notify(f"Task isolation unavailable, editing your files directly: {exc}")
74
+ return None
75
+ if task is None:
76
+ return None
77
+ if before is None or before.task_id != task.task_id:
78
+ _register_cleanup()
79
+ return task
80
+
81
+
82
+ def execution_context(task: Optional[TaskWorktree], config: dict) -> dict:
83
+ """What the executor needs to work in ``task`` instead of the workspace."""
84
+ if task is None:
85
+ return {}
86
+ workspace = _workspace(config)
87
+ origin = Path(task.repository)
88
+ try:
89
+ inside = workspace.relative_to(origin)
90
+ except ValueError:
91
+ inside = Path()
92
+ target = Path(task.path) / inside
93
+ # git does not carry empty or ignored directories; the session's own
94
+ # directory has to exist for commands to run in it.
95
+ target.mkdir(parents=True, exist_ok=True)
96
+ return {"_workspace": str(target), "_workspace_origin": str(origin), "_task_base": task.base}
97
+
98
+
99
+ def summary_lines(task: TaskWorktree, changes) -> list[str]:
100
+ lines = [f"Task {task.task_id} changed {len(changes)} file{'s' if len(changes) != 1 else ''} "
101
+ "in its worktree; your files are unchanged."]
102
+ for change in changes[:12]:
103
+ lines.append(f" {change.status} {change.path}")
104
+ if len(changes) > 12:
105
+ lines.append(f" … and {len(changes) - 12} more")
106
+ return lines
107
+
108
+
109
+ def apply(task: TaskWorktree, *, session_id: str = "") -> str:
110
+ applied = manager().apply(task, session_id=session_id)
111
+ return (f"Applied task {task.task_id}: {len(applied)} file{'s' if len(applied) != 1 else ''} "
112
+ "changed in your workspace; /rewind list shows how to undo it.")
113
+
114
+
115
+ def discard(task: TaskWorktree) -> str:
116
+ manager().discard(task)
117
+ return f"Discarded task {task.task_id}; your files were not changed."
118
+
119
+
120
+ APPLY, KEEP, DISCARD = 0, 1, 2
121
+
122
+
123
+ def offer(task: Optional[TaskWorktree], *, choose: Callable[[list, str], int],
124
+ say: Callable[[str], None], session_id: str = "") -> Optional[int]:
125
+ """After a turn: if the task changed files, ask what to do with them.
126
+
127
+ ``choose(options, title)`` returns an index, or -1 when cancelled, which
128
+ keeps the task — nothing is applied or thrown away without an answer.
129
+ """
130
+ if task is None:
131
+ return None
132
+ try:
133
+ changes = manager().changes(task)
134
+ except TaskWorktreeError as exc:
135
+ logger.debug("task changes unavailable: %s", exc)
136
+ return None
137
+ if not changes:
138
+ return None
139
+ for line in summary_lines(task, changes):
140
+ say(line)
141
+ options = [
142
+ ("Apply to my files", "copy the changes into your workspace"),
143
+ ("Keep working", "the next message continues in this task"),
144
+ ("Discard", "drop the task's changes"),
145
+ ]
146
+ choice = choose(options, "Apply this task?")
147
+ if choice == APPLY:
148
+ try:
149
+ say(apply(task, session_id=session_id))
150
+ except TaskWorktreeError as exc:
151
+ say(str(exc))
152
+ return KEEP
153
+ return APPLY
154
+ if choice == DISCARD:
155
+ say(discard(task))
156
+ return DISCARD
157
+ say(f"Kept task {task.task_id}. /task apply or /task discard when you are ready.")
158
+ return KEEP
159
+
160
+
161
+ def command(args: str, config: dict, *, session_id: str = "") -> str:
162
+ """``/task [status|diff|apply|discard]`` for the workspace's open task."""
163
+ sub = (args.strip().split() or ["status"])[0].lower()
164
+ tasks = manager()
165
+ try:
166
+ task = tasks.active(_workspace(config))
167
+ except TaskWorktreeError as exc:
168
+ return str(exc)
169
+ if task is None:
170
+ state = "on" if isolation_enabled(config) else "off (task_isolation: off)"
171
+ return f"No open task. Task isolation is {state}."
172
+ try:
173
+ if sub == "apply":
174
+ return apply(task, session_id=session_id)
175
+ if sub == "discard":
176
+ return discard(task)
177
+ if sub == "diff":
178
+ return tasks.diff(task) or "The task has no changes yet."
179
+ changes = tasks.changes(task)
180
+ except TaskWorktreeError as exc:
181
+ return str(exc)
182
+ if not changes:
183
+ return f"Task {task.task_id} has no changes yet.\n worktree {task.path}"
184
+ lines = summary_lines(task, changes)
185
+ lines += [f" worktree {task.path}", "/task diff · /task apply · /task discard"]
186
+ return "\n".join(lines)
187
+
188
+
189
+ def _register_cleanup() -> None:
190
+ if _CLEANUP_REGISTERED[0]:
191
+ return
192
+ _CLEANUP_REGISTERED[0] = True
193
+ atexit.register(_discard_unchanged)
194
+
195
+
196
+ def _discard_unchanged() -> None:
197
+ """At exit, drop open tasks with nothing in them; keep any with changes."""
198
+ tasks = _MANAGER[0]
199
+ if tasks is None:
200
+ return
201
+ for record in list(tasks._load().values()):
202
+ try:
203
+ task = TaskWorktree.from_dict(record)
204
+ if not Path(task.path).is_dir() or not tasks.changes(task):
205
+ tasks.discard(task)
206
+ except Exception:
207
+ continue
208
+
209
+
210
+ def reset_for_tests(replacement: Any = None) -> None:
211
+ _MANAGER[0] = replacement