aria-code 4.1.3__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 (284) hide show
  1. agents/__init__.py +32 -0
  2. agents/base.py +190 -0
  3. agents/deep/__init__.py +37 -0
  4. agents/deep/calibration_loop.py +144 -0
  5. agents/deep/critic.py +125 -0
  6. agents/deep/deepen.py +193 -0
  7. agents/deep/models.py +149 -0
  8. agents/deep/pipeline.py +164 -0
  9. agents/deep/quant_fusion.py +192 -0
  10. agents/deep/themes.py +95 -0
  11. agents/deep/tiers.py +106 -0
  12. agents/financial/__init__.py +10 -0
  13. agents/financial/catalyst.py +279 -0
  14. agents/financial/debate.py +145 -0
  15. agents/financial/earnings.py +303 -0
  16. agents/financial/fundamental.py +159 -0
  17. agents/financial/macro.py +99 -0
  18. agents/financial/news.py +207 -0
  19. agents/financial/risk.py +132 -0
  20. agents/financial/sector.py +279 -0
  21. agents/financial/synthesis.py +274 -0
  22. agents/financial/technical.py +258 -0
  23. agents/portfolio_agent.py +333 -0
  24. agents/realty/__init__.py +62 -0
  25. agents/realty/asset_diagnosis.py +150 -0
  26. agents/realty/business_match.py +165 -0
  27. agents/realty/cashflow_verify.py +208 -0
  28. agents/realty/contract_rules.py +209 -0
  29. agents/realty/energy_anomaly.py +188 -0
  30. agents/realty/exit_settlement.py +207 -0
  31. agents/realty/fulfillment_risk.py +205 -0
  32. agents/realty/ops_optimize.py +159 -0
  33. agents/realty/revenue_share.py +214 -0
  34. agents/registry.py +144 -0
  35. agents/sports/__init__.py +0 -0
  36. agents/sports/football_agent.py +169 -0
  37. agents/team.py +289 -0
  38. aliyun_data_client.py +660 -0
  39. apps/README.md +12 -0
  40. apps/__init__.py +2 -0
  41. apps/channels/README.md +15 -0
  42. apps/cli/README.md +13 -0
  43. apps/cli/__init__.py +2 -0
  44. apps/cli/bootstrap.py +99 -0
  45. apps/cli/codegen_paths.py +29 -0
  46. apps/cli/commands/__init__.py +16 -0
  47. apps/cli/commands/analysis_cmds.py +288 -0
  48. apps/cli/commands/backtest_cmds.py +1887 -0
  49. apps/cli/commands/broker_cmds.py +1154 -0
  50. apps/cli/commands/business_workflow_cmds.py +289 -0
  51. apps/cli/commands/catalog.py +84 -0
  52. apps/cli/commands/data_cmds.py +405 -0
  53. apps/cli/commands/diagnostic_cmds.py +179 -0
  54. apps/cli/commands/diagnostic_ops_cmds.py +696 -0
  55. apps/cli/commands/finance_render.py +12 -0
  56. apps/cli/commands/market.py +399 -0
  57. apps/cli/commands/market_cmds.py +1276 -0
  58. apps/cli/commands/market_context.py +425 -0
  59. apps/cli/commands/market_render.py +7 -0
  60. apps/cli/commands/model_cmds.py +1579 -0
  61. apps/cli/commands/ops_cmds.py +668 -0
  62. apps/cli/commands/portfolio_cmds.py +962 -0
  63. apps/cli/commands/report.py +377 -0
  64. apps/cli/commands/scaffold_templates.py +617 -0
  65. apps/cli/commands/session_cmds.py +179 -0
  66. apps/cli/commands/session_ux_cmds.py +280 -0
  67. apps/cli/commands/team.py +588 -0
  68. apps/cli/commands/team_render.py +8 -0
  69. apps/cli/commands/ui_cmds.py +358 -0
  70. apps/cli/commands/workflow_cmds.py +279 -0
  71. apps/cli/commands/workspace_cmds.py +1414 -0
  72. apps/cli/config_paths.py +70 -0
  73. apps/cli/config_store.py +61 -0
  74. apps/cli/deterministic.py +122 -0
  75. apps/cli/direct.py +48 -0
  76. apps/cli/github_app_auth.py +135 -0
  77. apps/cli/handlers/__init__.py +11 -0
  78. apps/cli/handlers/broker_handlers.py +122 -0
  79. apps/cli/handlers/chart_handlers.py +1309 -0
  80. apps/cli/handlers/market_handlers.py +2509 -0
  81. apps/cli/handlers/realty_handlers.py +114 -0
  82. apps/cli/handlers/strategy_advice.py +82 -0
  83. apps/cli/hooks.py +180 -0
  84. apps/cli/i18n.py +284 -0
  85. apps/cli/intent.py +136 -0
  86. apps/cli/intent_router.py +217 -0
  87. apps/cli/lifecycle_hooks.py +48 -0
  88. apps/cli/main.py +29 -0
  89. apps/cli/market_metadata.py +135 -0
  90. apps/cli/market_universe.py +265 -0
  91. apps/cli/message_processing.py +257 -0
  92. apps/cli/plan_mode.py +139 -0
  93. apps/cli/plotly_html.py +15 -0
  94. apps/cli/prediction_feedback.py +202 -0
  95. apps/cli/preflight.py +497 -0
  96. apps/cli/project_aria.py +60 -0
  97. apps/cli/prompts/__init__.py +0 -0
  98. apps/cli/prompts/coding.py +658 -0
  99. apps/cli/prompts/system_prompts.py +531 -0
  100. apps/cli/prompts/ui.py +434 -0
  101. apps/cli/providers/__init__.py +1 -0
  102. apps/cli/providers/base.py +271 -0
  103. apps/cli/providers/chat_routing.py +80 -0
  104. apps/cli/providers/llm/__init__.py +1 -0
  105. apps/cli/providers/llm/ollama_stream.py +1170 -0
  106. apps/cli/providers/llm/sse_stream.py +216 -0
  107. apps/cli/providers/runtime_bridge.py +185 -0
  108. apps/cli/runtime_consumer.py +489 -0
  109. apps/cli/session_export.py +87 -0
  110. apps/cli/session_jsonl.py +207 -0
  111. apps/cli/session_store.py +112 -0
  112. apps/cli/todo_tracker.py +190 -0
  113. apps/cli/tools/__init__.py +40 -0
  114. apps/cli/tools/context.py +46 -0
  115. apps/cli/tools/file_tools.py +112 -0
  116. apps/cli/tools/market_tools.py +549 -0
  117. apps/cli/tools/notebook_tools.py +111 -0
  118. apps/cli/tools/system_tools.py +669 -0
  119. apps/cli/tools/write_tools.py +715 -0
  120. apps/cli/tradingview_bridge.py +434 -0
  121. apps/cli/update_check.py +152 -0
  122. apps/cli/utils/__init__.py +0 -0
  123. apps/cli/utils/market_detect.py +1578 -0
  124. apps/daemon/README.md +14 -0
  125. apps/vscode/README.md +115 -0
  126. apps/vscode/package.json +70 -0
  127. aria_cli.py +11636 -0
  128. aria_code-4.1.3.dist-info/METADATA +952 -0
  129. aria_code-4.1.3.dist-info/RECORD +284 -0
  130. aria_code-4.1.3.dist-info/WHEEL +5 -0
  131. aria_code-4.1.3.dist-info/entry_points.txt +2 -0
  132. aria_code-4.1.3.dist-info/licenses/LICENSE +121 -0
  133. aria_code-4.1.3.dist-info/top_level.txt +50 -0
  134. aria_daemon.py +1295 -0
  135. aria_feishu_bot.py +1359 -0
  136. aria_relay_client.py +182 -0
  137. aria_relay_server.py +405 -0
  138. aria_telegram_bot.py +202 -0
  139. ariarc.py +328 -0
  140. artifacts.py +491 -0
  141. backtest_report.py +472 -0
  142. brokers/__init__.py +72 -0
  143. brokers/base.py +207 -0
  144. brokers/capabilities.py +264 -0
  145. brokers/cn/__init__.py +10 -0
  146. brokers/cn/easytrader_broker.py +193 -0
  147. brokers/cn/futu_broker.py +194 -0
  148. brokers/cn/longbridge_broker.py +190 -0
  149. brokers/cn/tiger_broker.py +196 -0
  150. brokers/cn/xtquant_broker.py +175 -0
  151. brokers/config.py +364 -0
  152. brokers/intl/__init__.py +5 -0
  153. brokers/intl/alpaca_broker.py +183 -0
  154. brokers/intl/ibkr_broker.py +215 -0
  155. brokers/intl/webull_broker.py +156 -0
  156. brokers/paper_broker.py +259 -0
  157. brokers/planning.py +296 -0
  158. brokers/registry.py +181 -0
  159. brokers/trading.py +237 -0
  160. change_store.py +127 -0
  161. command_safety.py +19 -0
  162. computer_use_tools.py +504 -0
  163. dashboard_generator.py +578 -0
  164. data_analysis_tools.py +808 -0
  165. data_cleaner.py +483 -0
  166. data_service.py +481 -0
  167. datasources/__init__.py +23 -0
  168. datasources/base.py +166 -0
  169. datasources/router.py +221 -0
  170. datasources/sources/__init__.py +15 -0
  171. datasources/sources/akshare_source.py +269 -0
  172. datasources/sources/alpha_vantage_source.py +202 -0
  173. datasources/sources/edgar_source.py +218 -0
  174. datasources/sources/finnhub_source.py +197 -0
  175. datasources/sources/fred_source.py +219 -0
  176. datasources/sources/tushare_source.py +141 -0
  177. datasources/sources/web_scraper_source.py +278 -0
  178. datasources/sources/world_bank_source.py +205 -0
  179. datasources/sources/yfinance_source.py +152 -0
  180. demo_player.py +204 -0
  181. doctor.py +508 -0
  182. file_analysis_tools.py +734 -0
  183. finance_formulas.py +389 -0
  184. football_data_client.py +1670 -0
  185. intent_classifier.py +358 -0
  186. local_finance_tools.py +3221 -0
  187. local_llm_provider.py +552 -0
  188. macro_tools.py +368 -0
  189. market_data_client.py +1899 -0
  190. mcp_client.py +506 -0
  191. memory_manager.py +245 -0
  192. model_capability.py +416 -0
  193. notification_tools.py +248 -0
  194. packages/__init__.py +23 -0
  195. packages/aria_agents/__init__.py +5 -0
  196. packages/aria_agents/manifest.py +69 -0
  197. packages/aria_core/__init__.py +34 -0
  198. packages/aria_core/architecture.py +192 -0
  199. packages/aria_core/export.py +124 -0
  200. packages/aria_core/manifest.py +65 -0
  201. packages/aria_infra/__init__.py +15 -0
  202. packages/aria_infra/arthera.py +52 -0
  203. packages/aria_infra/doctor.py +246 -0
  204. packages/aria_infra/product.py +37 -0
  205. packages/aria_mcp/__init__.py +25 -0
  206. packages/aria_mcp/bridge.py +38 -0
  207. packages/aria_mcp/config.py +97 -0
  208. packages/aria_mcp/tools.py +61 -0
  209. packages/aria_sdk/__init__.py +19 -0
  210. packages/aria_sdk/client.py +396 -0
  211. packages/aria_sdk/providers.py +70 -0
  212. packages/aria_sdk/streaming.py +73 -0
  213. packages/aria_sdk/types.py +86 -0
  214. packages/aria_services/__init__.py +55 -0
  215. packages/aria_services/context.py +258 -0
  216. packages/aria_services/data.py +11 -0
  217. packages/aria_services/provider_health.py +189 -0
  218. packages/aria_services/registry.py +213 -0
  219. packages/aria_services/usage.py +138 -0
  220. packages/aria_skills/__init__.py +5 -0
  221. packages/aria_skills/registry.py +59 -0
  222. packages/aria_tools/__init__.py +5 -0
  223. packages/aria_tools/registry.py +128 -0
  224. packages/quant_engine/__init__.py +6 -0
  225. packages/quant_engine/sports/__init__.py +72 -0
  226. packages/quant_engine/sports/calibrator.py +353 -0
  227. packages/quant_engine/sports/dixon_coles.py +234 -0
  228. packages/quant_engine/sports/elo.py +299 -0
  229. packages/quant_engine/sports/form.py +188 -0
  230. packages/quant_engine/sports/h2h.py +195 -0
  231. packages/quant_engine/sports/ml_model.py +354 -0
  232. packages/quant_engine/sports/predictor.py +311 -0
  233. packages/quant_engine/sports/tracker.py +664 -0
  234. packages/quant_engine/stochastic/__init__.py +27 -0
  235. packages/quant_engine/stochastic/gbm_enhanced.py +195 -0
  236. packages/quant_engine/stochastic/ito_calculus.py +477 -0
  237. packages/quant_engine/stochastic/kelly_criterion.py +181 -0
  238. packages/quant_engine/stochastic/monte_carlo_advanced.py +95 -0
  239. packages/quant_engine/stochastic/options_pricing.py +573 -0
  240. packages/quant_engine/stochastic/stochastic_processes.py +90 -0
  241. plan_utils.py +194 -0
  242. plugin_loader.py +328 -0
  243. portfolio_ledger.py +262 -0
  244. privacy/__init__.py +5 -0
  245. privacy/feedback.py +123 -0
  246. project_tools.py +525 -0
  247. providers/__init__.py +30 -0
  248. providers/llm/__init__.py +19 -0
  249. providers/llm/anthropic.py +184 -0
  250. providers/llm/base.py +139 -0
  251. providers/llm/ollama.py +128 -0
  252. providers/llm/openai_compat.py +282 -0
  253. providers/llm/registry.py +358 -0
  254. realty_data_tools.py +659 -0
  255. report_generator.py +1314 -0
  256. runtime/__init__.py +103 -0
  257. runtime/agent_loop.py +1183 -0
  258. runtime/approval.py +51 -0
  259. runtime/events.py +102 -0
  260. runtime/gateway.py +128 -0
  261. runtime/lsp.py +346 -0
  262. runtime/subagent.py +258 -0
  263. runtime/tool_executor.py +104 -0
  264. runtime/tool_policy.py +106 -0
  265. safety/__init__.py +21 -0
  266. safety/permissions.py +275 -0
  267. setup_wizard.py +653 -0
  268. strategy_vault.py +420 -0
  269. ui/__init__.py +100 -0
  270. ui/banner.py +310 -0
  271. ui/completer.py +391 -0
  272. ui/console.py +271 -0
  273. ui/image_render.py +243 -0
  274. ui/input_box.py +376 -0
  275. ui/picker.py +195 -0
  276. ui/render/__init__.py +11 -0
  277. ui/render/finance.py +1480 -0
  278. ui/render/market.py +225 -0
  279. ui/render/output.py +681 -0
  280. ui/render/team.py +346 -0
  281. ui/robot.py +235 -0
  282. workspace/__init__.py +6 -0
  283. workspace/files.py +170 -0
  284. workspace/verify.py +113 -0
ui/picker.py ADDED
@@ -0,0 +1,195 @@
1
+ """Arrow-key selector and async wrapper used by model/skill picker dialogs.
2
+
3
+ from ui.picker import arrow_select, run_picker_in_thread
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ import asyncio
9
+ import os
10
+ import sys
11
+
12
+ from ui.console import _HAS_TERMIOS, _esc_watcher
13
+
14
+ if _HAS_TERMIOS:
15
+ import termios
16
+ import tty
17
+ import select as _select
18
+
19
+
20
+ def arrow_select(options: list, selected: int = 0, title: str = "",
21
+ max_visible: int = 10) -> int:
22
+ """Interactive arrow-key selector with scrolling.
23
+
24
+ Args:
25
+ options: list of ``(label, description)`` tuples or plain strings
26
+ selected: initially highlighted index
27
+ title: optional header line
28
+ max_visible: max rows shown at once; scrolls when list is larger
29
+ Returns:
30
+ index of chosen option, or -1 if cancelled
31
+ """
32
+ if not options:
33
+ return -1
34
+
35
+ if not _HAS_TERMIOS or not sys.stdin.isatty():
36
+ if title:
37
+ print(f"\n {title}\n")
38
+ for i, opt in enumerate(options):
39
+ label = opt[0] if isinstance(opt, tuple) else opt
40
+ marker = "❯" if i == selected else " "
41
+ print(f" {marker} {i + 1:2d}. {label}")
42
+ try:
43
+ c = input("\n Enter number (or Enter to keep current): ").strip()
44
+ if not c:
45
+ return selected
46
+ idx = int(c) - 1
47
+ return idx if 0 <= idx < len(options) else -1
48
+ except (ValueError, EOFError, KeyboardInterrupt):
49
+ return -1
50
+
51
+ n = len(options)
52
+ visible = min(max_visible, n)
53
+ scroll = max(0, selected - visible + 1)
54
+
55
+ fd = sys.stdin.fileno()
56
+ old_settings = termios.tcgetattr(fd)
57
+
58
+ try:
59
+ _tcols = os.get_terminal_size(fd).columns
60
+ except Exception:
61
+ _tcols = 80
62
+
63
+ _rule = "─" * min(_tcols, 72)
64
+
65
+ def _display_width(s: str) -> int:
66
+ import re as _re
67
+ clean = _re.sub(r'\x1b\[[0-9;]*[mJKHABCDfGrs]', '', s)
68
+ w = 0
69
+ for ch in clean:
70
+ cp = ord(ch)
71
+ if (0x1100 <= cp <= 0x115F or 0x2E80 <= cp <= 0xA4CF or
72
+ 0xAC00 <= cp <= 0xD7AF or 0xF900 <= cp <= 0xFAFF or
73
+ 0xFE10 <= cp <= 0xFE1F or 0xFE30 <= cp <= 0xFE4F or
74
+ 0xFF01 <= cp <= 0xFF60 or 0xFFE0 <= cp <= 0xFFE6 or
75
+ 0x3000 <= cp <= 0x303F):
76
+ w += 2
77
+ else:
78
+ w += 1
79
+ return w
80
+
81
+ def _physical_lines(text: str) -> int:
82
+ dw = _display_width(text)
83
+ return max(1, (dw + _tcols - 1) // _tcols)
84
+
85
+ def _raw(s: str):
86
+ os.write(1, s.encode())
87
+
88
+ def _render():
89
+ nonlocal scroll
90
+ if selected < scroll:
91
+ scroll = selected
92
+ elif selected >= scroll + visible:
93
+ scroll = selected - visible + 1
94
+
95
+ buf = ""
96
+ if _render.drawn:
97
+ buf += f"\033[{_render.last_phys_height}A"
98
+
99
+ phys_height = 0
100
+ for row in range(visible):
101
+ idx = scroll + row
102
+ opt = options[idx]
103
+ label = opt[0] if isinstance(opt, tuple) else opt
104
+ desc = opt[1] if isinstance(opt, tuple) and len(opt) > 1 else ""
105
+ if idx == selected:
106
+ _accent = os.getenv("ARIA_ACCENT_COLOR", "192;128;80")
107
+ line = f" \033[1m\033[38;2;{_accent}m❯\033[0m \033[1m{label}\033[0m"
108
+ if desc:
109
+ line += f" \033[2m{desc}\033[0m"
110
+ else:
111
+ line = f" {label}"
112
+ if desc:
113
+ line += f" \033[2m{desc}\033[0m"
114
+ buf += f"\033[2K{line}\n"
115
+ phys_height += _physical_lines(line)
116
+
117
+ if n > visible:
118
+ hint = f" \033[2m{selected + 1}/{n}\033[0m"
119
+ buf += f"\033[2K{hint}\n"
120
+ else:
121
+ buf += f"\033[2K\n"
122
+ phys_height += 1
123
+
124
+ _render.last_phys_height = phys_height
125
+ _raw(buf)
126
+ _render.drawn = True
127
+
128
+ _render.drawn = False
129
+ _render.last_phys_height = visible + 1
130
+
131
+ try:
132
+ _esc_watcher.pause()
133
+ tty.setcbreak(fd)
134
+ sys.stdout.flush()
135
+
136
+ # Top boundary
137
+ _raw(f"\n \033[2m{_rule}\033[0m\n")
138
+ if title:
139
+ _raw(f" \033[1m{title}\033[0m \033[2m↑↓ Enter q=取消\033[0m\n\n")
140
+ else:
141
+ _raw(f" \033[2m↑↓ Enter q=取消\033[0m\n\n")
142
+
143
+ _render()
144
+
145
+ while True:
146
+ ch = os.read(fd, 1)
147
+ if ch == b'\x1b':
148
+ seq = b''
149
+ if _select.select([fd], [], [], 0.05)[0]:
150
+ seq = os.read(fd, 2)
151
+ if seq == b'[A':
152
+ selected = (selected - 1) % n; _render()
153
+ elif seq == b'[B':
154
+ selected = (selected + 1) % n; _render()
155
+ elif seq == b'[5~':
156
+ selected = max(0, selected - visible); _render()
157
+ elif seq == b'[6~':
158
+ selected = min(n - 1, selected + visible); _render()
159
+ elif not seq:
160
+ return -1
161
+ elif ch in (b'\r', b'\n'):
162
+ return selected
163
+ elif ch == b'q':
164
+ return -1
165
+ elif ch == b'k':
166
+ selected = (selected - 1) % n; _render()
167
+ elif ch == b'j':
168
+ selected = (selected + 1) % n; _render()
169
+ elif ch == b'g':
170
+ selected = 0; _render()
171
+ elif ch == b'G':
172
+ selected = n - 1; _render()
173
+ elif ch in (b'\x03', b'\x04'):
174
+ return -1
175
+ except (EOFError, KeyboardInterrupt, OSError):
176
+ return -1
177
+ finally:
178
+ termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
179
+ _esc_watcher.resume()
180
+ _raw(f" \033[2m{_rule}\033[0m\n\n")
181
+
182
+
183
+ async def run_picker_in_thread(options: list, current_idx: int,
184
+ title: str, max_visible: int = 14) -> int:
185
+ """Run arrow_select in an executor thread to avoid kqueue conflicts on macOS."""
186
+ loop = asyncio.get_running_loop()
187
+ return await loop.run_in_executor(
188
+ None,
189
+ lambda: arrow_select(options, current_idx, title, max_visible),
190
+ )
191
+
192
+
193
+ # Back-compat aliases used by aria_cli.py
194
+ _arrow_select = arrow_select
195
+ _run_picker_in_thread = run_picker_in_thread
ui/render/__init__.py ADDED
@@ -0,0 +1,11 @@
1
+ """UI rendering helpers — team, finance, market output formatters."""
2
+
3
+ from .team import render_verdict_banner, render_team_table
4
+ from .finance import render_macro_result, render_cb_rates, render_econ_calendar
5
+ from .market import print_quote_result, print_ta_result
6
+
7
+ __all__ = [
8
+ "render_verdict_banner", "render_team_table",
9
+ "render_macro_result", "render_cb_rates", "render_econ_calendar",
10
+ "print_quote_result", "print_ta_result",
11
+ ]