@drico2008/fincli 0.3.0 → 0.4.0

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 (37) hide show
  1. package/README.md +217 -217
  2. package/fincli/__init__.py +1 -1
  3. package/fincli/app/analysis/ai_prompts.py +29 -27
  4. package/fincli/app/analysis/analyzer.py +34 -34
  5. package/fincli/app/analysis/assistant_context.py +3 -3
  6. package/fincli/app/cli/commands.py +33 -27
  7. package/fincli/app/cli/router.py +1633 -1105
  8. package/fincli/app/diagnostics/__init__.py +2 -0
  9. package/fincli/app/diagnostics/capabilities.py +44 -0
  10. package/fincli/app/diagnostics/runtime.py +106 -0
  11. package/fincli/app/main.py +6 -1
  12. package/fincli/app/modules/economic_calendar.py +512 -512
  13. package/fincli/app/modules/portfolio_risk.py +305 -305
  14. package/fincli/app/modules/trading.py +142 -0
  15. package/fincli/app/plugins/loader.py +72 -72
  16. package/fincli/app/providers/market/finnhub_provider.py +51 -2
  17. package/fincli/app/providers/market/symbols.py +95 -2
  18. package/fincli/app/providers/reliability.py +82 -65
  19. package/fincli/app/research/__init__.py +8 -8
  20. package/fincli/app/research/engine.py +119 -112
  21. package/fincli/app/research/exporter.py +91 -91
  22. package/fincli/app/research/formatter.py +25 -24
  23. package/fincli/app/research/models.py +22 -21
  24. package/fincli/app/research/prompt_builder.py +53 -51
  25. package/fincli/app/services/data_quality.py +27 -0
  26. package/fincli/app/services/data_trust.py +117 -0
  27. package/fincli/app/services/macro_data.py +158 -50
  28. package/fincli/app/services/market_data.py +183 -79
  29. package/fincli/app/services/market_overview.py +131 -142
  30. package/fincli/app/services/news_aggregator.py +95 -95
  31. package/fincli/app/storage/config.py +6 -3
  32. package/fincli/app/storage/database.py +130 -117
  33. package/fincli/app/storage/provider_metrics.py +61 -61
  34. package/fincli/app/storage/secrets.py +128 -128
  35. package/npm/bin/fincli.js +65 -42
  36. package/package.json +7 -7
  37. package/pyproject.toml +1 -1
@@ -18,35 +18,41 @@ COMMANDS: tuple[CommandSpec, ...] = (
18
18
  CommandSpec("/dashboard", "Tampilkan dashboard compact FinCLI.", "/dashboard", "General"),
19
19
  CommandSpec("/ai_model", "Lihat atau ganti AI provider/model.", "/ai_model openrouter openai/gpt-4o-mini", "AI"),
20
20
  CommandSpec("/ai_model key", "Simpan API key AI lokal.", "/ai_model key groq <api_key>", "AI"),
21
- CommandSpec("/news_model", "Buka selector provider market/news dan fallback.", "/news_model", "Provider"),
22
- CommandSpec("/news_model list", "Tampilkan 100+ news connector dan status akses.", "/news_model list", "Provider"),
23
- CommandSpec("/news_model search", "Cari connector news.", "/news_model search rss", "Provider"),
24
- CommandSpec("/news_model use", "Pilih primary news provider.", "/news_model use google_news_rss", "Provider"),
25
- CommandSpec("/news_model priority", "Atur fallback news provider.", "/news_model priority google_news_rss,yfinance,marketaux", "Provider"),
26
- CommandSpec("/news_model key", "Simpan API key news connector lokal.", "/news_model key marketaux <api_key>", "Provider"),
27
- CommandSpec("/symbol", "Search symbol dan tampilkan normalisasi per provider.", "/symbol XAUUSD", "Market"),
28
- CommandSpec("/research", "Pusat riset ringkas: market, technical, news, fundamental, dan AI deep mode.", "/research AAPL --quick", "Research"),
29
- CommandSpec("/macro", "Dashboard macro fallback dan connector-ready context.", "/macro Indonesia", "Research"),
30
- CommandSpec("/profile", "Tampilkan profil dan gameplay risk lokal.", "/profile", "Profile"),
31
- CommandSpec("/profile set", "Simpan profil gameplay lokal.", '/profile set "Budi" 350 USD 1:100 1.5', "Profile"),
32
- CommandSpec("/doctor", "Cek kesehatan konfigurasi, provider, database, dan command inti.", "/doctor", "System"),
33
- CommandSpec("/setup", "Panduan setup lokal untuk API key, provider, dan profile.", "/setup", "System"),
34
- CommandSpec("/secrets status", "Audit status secret lokal tanpa menampilkan nilai.", "/secrets status", "Security"),
35
- CommandSpec("/secrets clear", "Hapus semua API key lokal dari secret store.", "/secrets clear", "Security"),
36
- CommandSpec("/privacy status", "Tampilkan ringkasan state lokal sensitif.", "/privacy status", "Security"),
37
- CommandSpec("/privacy purge", "Bersihkan secrets, history session, dan cache lokal.", "/privacy purge", "Security"),
38
- CommandSpec("/agent", "Lihat agent framework FinCLI.", "/agent list", "AI"),
39
- CommandSpec("/agent show", "Tampilkan detail agent framework.", "/agent show buffett", "AI"),
40
- CommandSpec("/connector", "Lihat catalog data connector.", "/connector list macro", "Provider"),
41
- CommandSpec("/connector search", "Cari connector data.", "/connector search yahoo", "Provider"),
21
+ CommandSpec("/news_model", "Buka selector provider market/news dan fallback.", "/news_model", "Provider"),
22
+ CommandSpec("/news_model list", "Tampilkan 100+ news connector dan status akses.", "/news_model list", "Provider"),
23
+ CommandSpec("/news_model search", "Cari connector news.", "/news_model search rss", "Provider"),
24
+ CommandSpec("/news_model use", "Pilih primary news provider.", "/news_model use google_news_rss", "Provider"),
25
+ CommandSpec("/news_model priority", "Atur fallback news provider.", "/news_model priority google_news_rss,yfinance,marketaux", "Provider"),
26
+ CommandSpec("/news_model key", "Simpan API key news connector lokal.", "/news_model key marketaux <api_key>", "Provider"),
27
+ CommandSpec("/symbol", "Search dan resolve symbol lintas provider.", "/symbol search BBRI", "Market"),
28
+ CommandSpec("/symbol resolve", "Normalisasi symbol per provider.", "/symbol resolve XAUUSD --asset commodity", "Market"),
29
+ CommandSpec("/research", "Pusat riset ringkas: market, technical, news, fundamental, dan AI deep mode.", "/research AAPL --quick", "Research"),
30
+ CommandSpec("/macro", "Dashboard macro fallback dan connector-ready context.", "/macro Indonesia", "Research"),
31
+ CommandSpec("/profile", "Tampilkan profil dan gameplay risk lokal.", "/profile", "Profile"),
32
+ CommandSpec("/profile set", "Simpan profil gameplay lokal.", '/profile set "Budi" 350 USD 1:100 1.5', "Profile"),
33
+ CommandSpec("/doctor", "Cek kesehatan konfigurasi, provider, database, dan command inti.", "/doctor", "System"),
34
+ CommandSpec("/setup", "Panduan setup lokal untuk API key, provider, dan profile.", "/setup", "System"),
35
+ CommandSpec("/secrets status", "Audit status secret lokal tanpa menampilkan nilai.", "/secrets status", "Security"),
36
+ CommandSpec("/secrets clear", "Hapus semua API key lokal dari secret store.", "/secrets clear", "Security"),
37
+ CommandSpec("/privacy status", "Tampilkan ringkasan state lokal sensitif.", "/privacy status", "Security"),
38
+ CommandSpec("/privacy purge", "Bersihkan secrets, history session, dan cache lokal.", "/privacy purge", "Security"),
39
+ CommandSpec("/agent", "Lihat agent framework FinCLI.", "/agent list", "AI"),
40
+ CommandSpec("/agent show", "Tampilkan detail agent framework.", "/agent show buffett", "AI"),
41
+ CommandSpec("/connector", "Lihat catalog data connector.", "/connector list macro", "Provider"),
42
+ CommandSpec("/connector search", "Cari connector data.", "/connector search yahoo", "Provider"),
42
43
  CommandSpec("/plugin", "Tampilkan plugin lokal FinCLI.", "/plugin list", "System"),
43
44
  CommandSpec("/plugin status", "Cek status manifest plugin lokal.", "/plugin status", "System"),
44
45
  CommandSpec("/market", "Ringkasan market profesional untuk instrumen.", "/market AAPL 1d", "Market"),
46
+ CommandSpec("/quote", "Alias cepat untuk harga/quote instrumen.", "/quote AAPL", "Advanced"),
45
47
  CommandSpec("/news", "Tampilkan news/fundamental terbaru untuk instrumen.", "/news AAPL", "Market"),
46
48
  CommandSpec("/technical", "Analisis teknikal instrumen.", "/technical BTC-USD 1d", "Analysis"),
49
+ CommandSpec("/structure", "Alias struktur pasar tanpa panel teknikal penuh.", "/structure AAPL 1d", "Advanced"),
47
50
  CommandSpec("/mtf", "Multi-timeframe technical alignment.", "/mtf AAPL 1d,1h,15m", "Analysis"),
48
51
  CommandSpec("/backtest", "Lightweight rule-based strategy backtest.", "/backtest AAPL sma_cross 1d", "Analysis"),
52
+ CommandSpec("/trading", "Trading layer: realtime catalog, broker catalog, dan paper trading lokal.", "/trading", "Trading"),
49
53
  CommandSpec("/yahoo", "Tampilkan tabel Yahoo Finance untuk history/statistics/profile/financials/analysis/holders.", "/yahoo BBRI statistics", "Market"),
54
+ CommandSpec("/funda", "Alias compact untuk fundamental snapshot.", "/funda AAPL", "Advanced"),
55
+ CommandSpec("/web", "Web research helper untuk pertanyaan berbasis sumber publik.", "/web penyebab rupiah melemah", "Advanced"),
50
56
  CommandSpec("/ai", "Free chat dengan AI assistant.", "/ai ringkas risiko AAPL", "AI"),
51
57
  CommandSpec("/analyze", "AI menganalisis struktur pasar instrumen.", "/analyze ETH-USD 4h", "Analysis"),
52
58
  CommandSpec("/watchlist", "Tampilkan watchlist.", "/watchlist", "Watchlist"),
@@ -54,9 +60,9 @@ COMMANDS: tuple[CommandSpec, ...] = (
54
60
  CommandSpec("/watchlist remove", "Hapus instrumen dari watchlist.", "/watchlist remove AAPL", "Watchlist"),
55
61
  CommandSpec("/portfolio", "Tampilkan portfolio lokal.", "/portfolio", "Portfolio"),
56
62
  CommandSpec("/portfolio add", "Tambahkan posisi/aset.", "/portfolio add BTC-USD 0.05 65000", "Portfolio"),
57
- CommandSpec("/portfolio remove", "Hapus posisi/aset.", "/portfolio remove BTC-USD", "Portfolio"),
58
- CommandSpec("/portfolio performance", "Tampilkan performa portfolio.", "/portfolio performance", "Portfolio"),
59
- CommandSpec("/portfolio risk", "Portfolio Risk v2: exposure, concentration, PnL, dan health score.", "/portfolio risk", "Portfolio"),
63
+ CommandSpec("/portfolio remove", "Hapus posisi/aset.", "/portfolio remove BTC-USD", "Portfolio"),
64
+ CommandSpec("/portfolio performance", "Tampilkan performa portfolio.", "/portfolio performance", "Portfolio"),
65
+ CommandSpec("/portfolio risk", "Portfolio Risk v2: exposure, concentration, PnL, dan health score.", "/portfolio risk", "Portfolio"),
60
66
  CommandSpec("/tx", "Tampilkan transaction ledger.", "/tx list", "Portfolio"),
61
67
  CommandSpec("/tx add", "Tambahkan transaksi buy/sell.", "/tx add buy AAPL 10 185", "Portfolio"),
62
68
  CommandSpec("/journal", "Tampilkan journal trading/investasi.", "/journal", "Journal"),
@@ -72,13 +78,13 @@ COMMANDS: tuple[CommandSpec, ...] = (
72
78
  CommandSpec("/history save", "Beri nama current session.", '/history save "Riset IHSG pagi"', "History"),
73
79
  CommandSpec("/history delete", "Hapus session tertentu.", "/history delete <session_id>", "History"),
74
80
  CommandSpec("/config", "Tampilkan konfigurasi aktif tanpa membocorkan API key.", "/config"),
75
- CommandSpec("/scan", "Scanner watchlist dengan filter indikator.", "/scan watchlist rsi<30", "Market"),
81
+ CommandSpec("/scan", "Scanner watchlist dengan filter indikator.", "/scan watchlist rsi<30", "Market"),
76
82
  CommandSpec("/scan export", "Export hasil scanner watchlist ke CSV/JSON.", "/scan export csv scan.csv rsi<30 1d", "Market"),
77
83
  CommandSpec("/report market", "Export market report ke Markdown/JSON.", "/report market AAPL md report.md", "Export"),
78
84
  CommandSpec("/calendar", "Economic calendar provider/fallback.", "/calendar week US high", "Market"),
79
85
  CommandSpec("/calendar export", "Export economic calendar ke CSV/JSON.", "/calendar export csv calendar.csv week US high", "Market"),
80
- CommandSpec("/provider status", "Tampilkan status provider aktif.", "/provider status", "Provider"),
81
- CommandSpec("/provider metrics", "Tampilkan metric runtime provider aktif.", "/provider metrics", "Provider"),
86
+ CommandSpec("/provider status", "Tampilkan status provider aktif.", "/provider status", "Provider"),
87
+ CommandSpec("/provider metrics", "Tampilkan metric runtime provider aktif.", "/provider metrics", "Provider"),
82
88
  CommandSpec("/provider list", "Tampilkan semua provider market yang tersedia.", "/provider list", "Provider"),
83
89
  CommandSpec("/provider entitlement", "Tampilkan capability dan realtime/delayed label provider.", "/provider entitlement", "Provider"),
84
90
  CommandSpec("/provider test", "Test quote provider aktif untuk symbol.", "/provider test AAPL", "Provider"),