cnhkmcp 2.1.1__py3-none-any.whl → 2.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 (117) hide show
  1. {cnhkmcp-2.1.1.dist-info → cnhkmcp-2.1.3.dist-info}/METADATA +1 -1
  2. cnhkmcp-2.1.3.dist-info/RECORD +6 -0
  3. cnhkmcp-2.1.3.dist-info/top_level.txt +1 -0
  4. cnhkmcp/__init__.py +0 -125
  5. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/README.md +0 -38
  6. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/ace.log +0 -0
  7. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/config.json +0 -6
  8. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/ace_lib.py +0 -1510
  9. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/fetch_all_datasets.py +0 -157
  10. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/fetch_all_documentation.py +0 -132
  11. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/fetch_all_operators.py +0 -99
  12. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/helpful_functions.py +0 -180
  13. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/icon.ico +0 -0
  14. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/icon.png +0 -0
  15. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/test.txt +0 -1
  16. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/main.py +0 -576
  17. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/process_knowledge_base.py +0 -280
  18. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/rag_engine.py +0 -356
  19. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/requirements.txt +0 -7
  20. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/run.bat +0 -3
  21. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/vector_db/_manifest.json +0 -326
  22. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/vector_db/_meta.json +0 -1
  23. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/vector_db/be5d957c-b724-46e3-91d1-999e9f5f7d28/index_metadata.pickle +0 -0
  24. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/vector_db/chroma.sqlite3 +0 -0
  25. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242//321/211/320/266/320/246/321/206/320/274/320/261/321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/231/320/243/321/205/342/225/235/320/220/321/206/320/230/320/241.py +0 -265
  26. cnhkmcp/untracked/APP/.gitignore +0 -32
  27. cnhkmcp/untracked/APP/MODULAR_STRUCTURE.md +0 -112
  28. cnhkmcp/untracked/APP/README.md +0 -309
  29. cnhkmcp/untracked/APP/Tranformer/Transformer.py +0 -4985
  30. cnhkmcp/untracked/APP/Tranformer/ace.log +0 -0
  31. cnhkmcp/untracked/APP/Tranformer/ace_lib.py +0 -1510
  32. cnhkmcp/untracked/APP/Tranformer/helpful_functions.py +0 -180
  33. cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json +0 -2421
  34. cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates_/321/207/320/264/342/225/221/321/204/342/225/233/320/233.json +0 -654
  35. cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json +0 -1034
  36. cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_success.json +0 -444
  37. cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_/321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/320/237/320/277/321/207/320/253/342/224/244/321/206/320/236/320/265/321/210/342/225/234/342/225/234/321/205/320/225/320/265Machine_lib.json +0 -22
  38. cnhkmcp/untracked/APP/Tranformer/parsetab.py +0 -60
  39. cnhkmcp/untracked/APP/Tranformer/template_summary.txt +0 -3182
  40. cnhkmcp/untracked/APP/Tranformer/transformer_config.json +0 -7
  41. cnhkmcp/untracked/APP/Tranformer/validator.py +0 -889
  42. cnhkmcp/untracked/APP/ace.log +0 -69
  43. cnhkmcp/untracked/APP/ace_lib.py +0 -1510
  44. cnhkmcp/untracked/APP/blueprints/__init__.py +0 -6
  45. cnhkmcp/untracked/APP/blueprints/feature_engineering.py +0 -347
  46. cnhkmcp/untracked/APP/blueprints/idea_house.py +0 -221
  47. cnhkmcp/untracked/APP/blueprints/inspiration_house.py +0 -432
  48. cnhkmcp/untracked/APP/blueprints/paper_analysis.py +0 -570
  49. cnhkmcp/untracked/APP/custom_templates/templates.json +0 -1257
  50. cnhkmcp/untracked/APP/give_me_idea/BRAIN_Alpha_Template_Expert_SystemPrompt.md +0 -400
  51. cnhkmcp/untracked/APP/give_me_idea/ace_lib.py +0 -1510
  52. cnhkmcp/untracked/APP/give_me_idea/alpha_data_specific_template_master.py +0 -252
  53. cnhkmcp/untracked/APP/give_me_idea/fetch_all_datasets.py +0 -157
  54. cnhkmcp/untracked/APP/give_me_idea/fetch_all_operators.py +0 -99
  55. cnhkmcp/untracked/APP/give_me_idea/helpful_functions.py +0 -180
  56. cnhkmcp/untracked/APP/give_me_idea/what_is_Alpha_template.md +0 -11
  57. cnhkmcp/untracked/APP/helpful_functions.py +0 -180
  58. cnhkmcp/untracked/APP/hkSimulator/ace_lib.py +0 -1497
  59. cnhkmcp/untracked/APP/hkSimulator/autosimulator.py +0 -447
  60. cnhkmcp/untracked/APP/hkSimulator/helpful_functions.py +0 -180
  61. cnhkmcp/untracked/APP/mirror_config.txt +0 -20
  62. cnhkmcp/untracked/APP/operaters.csv +0 -129
  63. cnhkmcp/untracked/APP/requirements.txt +0 -53
  64. cnhkmcp/untracked/APP/run_app.bat +0 -28
  65. cnhkmcp/untracked/APP/run_app.sh +0 -34
  66. cnhkmcp/untracked/APP/setup_tsinghua.bat +0 -39
  67. cnhkmcp/untracked/APP/setup_tsinghua.sh +0 -43
  68. cnhkmcp/untracked/APP/simulator/alpha_submitter.py +0 -404
  69. cnhkmcp/untracked/APP/simulator/simulator_wqb.py +0 -618
  70. cnhkmcp/untracked/APP/ssrn-3332513.pdf +6 -109201
  71. cnhkmcp/untracked/APP/static/brain.js +0 -589
  72. cnhkmcp/untracked/APP/static/decoder.js +0 -1540
  73. cnhkmcp/untracked/APP/static/feature_engineering.js +0 -1729
  74. cnhkmcp/untracked/APP/static/idea_house.js +0 -937
  75. cnhkmcp/untracked/APP/static/inspiration.js +0 -465
  76. cnhkmcp/untracked/APP/static/inspiration_house.js +0 -868
  77. cnhkmcp/untracked/APP/static/paper_analysis.js +0 -390
  78. cnhkmcp/untracked/APP/static/script.js +0 -3082
  79. cnhkmcp/untracked/APP/static/simulator.js +0 -597
  80. cnhkmcp/untracked/APP/static/styles.css +0 -3127
  81. cnhkmcp/untracked/APP/static/usage_widget.js +0 -508
  82. cnhkmcp/untracked/APP/templates/alpha_inspector.html +0 -511
  83. cnhkmcp/untracked/APP/templates/feature_engineering.html +0 -960
  84. cnhkmcp/untracked/APP/templates/idea_house.html +0 -564
  85. cnhkmcp/untracked/APP/templates/index.html +0 -932
  86. cnhkmcp/untracked/APP/templates/inspiration_house.html +0 -861
  87. cnhkmcp/untracked/APP/templates/paper_analysis.html +0 -91
  88. cnhkmcp/untracked/APP/templates/simulator.html +0 -343
  89. cnhkmcp/untracked/APP/templates/transformer_web.html +0 -580
  90. cnhkmcp/untracked/APP/usage.md +0 -351
  91. cnhkmcp/untracked/APP//321/207/342/225/235/320/250/321/205/320/230/320/226/321/204/342/225/225/320/220/321/211/320/221/320/243/321/206/320/261/320/265/ace_lib.py +0 -1510
  92. cnhkmcp/untracked/APP//321/207/342/225/235/320/250/321/205/320/230/320/226/321/204/342/225/225/320/220/321/211/320/221/320/243/321/206/320/261/320/265/brain_alpha_inspector.py +0 -712
  93. cnhkmcp/untracked/APP//321/207/342/225/235/320/250/321/205/320/230/320/226/321/204/342/225/225/320/220/321/211/320/221/320/243/321/206/320/261/320/265/helpful_functions.py +0 -180
  94. cnhkmcp/untracked/APP//321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/231/320/243/321/205/342/225/235/320/220/321/206/320/230/320/241.py +0 -2456
  95. cnhkmcp/untracked/arXiv_API_Tool_Manual.md +0 -490
  96. cnhkmcp/untracked/arxiv_api.py +0 -229
  97. cnhkmcp/untracked/forum_functions.py +0 -998
  98. cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272/forum_functions.py +0 -407
  99. cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272/platform_functions.py +0 -2415
  100. cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272/user_config.json +0 -31
  101. cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272//321/210/320/276/320/271AI/321/210/320/277/342/225/227/321/210/342/224/220/320/251/321/204/342/225/225/320/272/321/206/320/246/320/227/321/206/320/261/320/263/321/206/320/255/320/265/321/205/320/275/320/266/321/204/342/225/235/320/252/321/204/342/225/225/320/233/321/210/342/225/234/342/225/234/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270.md +0 -101
  102. cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272//321/211/320/225/320/235/321/207/342/225/234/320/276/321/205/320/231/320/235/321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/230/320/241_/321/205/320/276/320/231/321/210/320/263/320/225/321/205/342/224/220/320/225/321/210/320/266/320/221/321/204/342/225/233/320/255/321/210/342/225/241/320/246/321/205/320/234/320/225.py +0 -190
  103. cnhkmcp/untracked/platform_functions.py +0 -2886
  104. cnhkmcp/untracked/sample_mcp_config.json +0 -11
  105. cnhkmcp/untracked/user_config.json +0 -31
  106. cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/320/237/320/222/321/210/320/220/320/223/321/206/320/246/320/227/321/206/320/261/320/263_BRAIN_Alpha_Test_Requirements_and_Tips.md +0 -202
  107. cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_Alpha_explaination_workflow.md +0 -56
  108. cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_BRAIN_6_Tips_Datafield_Exploration_Guide.md +0 -194
  109. cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_BRAIN_Alpha_Improvement_Workflow.md +0 -101
  110. cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_Dataset_Exploration_Expert_Manual.md +0 -436
  111. cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_daily_report_workflow.md +0 -128
  112. cnhkmcp/untracked//321/211/320/225/320/235/321/207/342/225/234/320/276/321/205/320/231/320/235/321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/230/320/241_/321/205/320/276/320/231/321/210/320/263/320/225/321/205/342/224/220/320/225/321/210/320/266/320/221/321/204/342/225/233/320/255/321/210/342/225/241/320/246/321/205/320/234/320/225.py +0 -190
  113. cnhkmcp-2.1.1.dist-info/RECORD +0 -115
  114. cnhkmcp-2.1.1.dist-info/top_level.txt +0 -1
  115. {cnhkmcp-2.1.1.dist-info → cnhkmcp-2.1.3.dist-info}/WHEEL +0 -0
  116. {cnhkmcp-2.1.1.dist-info → cnhkmcp-2.1.3.dist-info}/entry_points.txt +0 -0
  117. {cnhkmcp-2.1.1.dist-info → cnhkmcp-2.1.3.dist-info}/licenses/LICENSE +0 -0
@@ -1,861 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Inspiration House - BRAIN</title>
7
- <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
8
- <style>
9
- .inspiration-house-container {
10
- max-width: 1400px;
11
- margin: 0 auto;
12
- padding: 20px;
13
- }
14
-
15
- .header-section {
16
- text-align: center;
17
- margin-bottom: 30px;
18
- }
19
-
20
- .header-section h1 {
21
- color: #2c3e50;
22
- margin-bottom: 10px;
23
- }
24
-
25
- .header-section p {
26
- color: #7f8c8d;
27
- font-size: 16px;
28
- }
29
-
30
- .back-button {
31
- position: absolute;
32
- top: 20px;
33
- left: 20px;
34
- background: #3498db;
35
- color: white;
36
- padding: 10px 20px;
37
- border: none;
38
- border-radius: 5px;
39
- text-decoration: none;
40
- display: inline-block;
41
- transition: background-color 0.3s;
42
- }
43
-
44
- .back-button:hover {
45
- background: #2980b9;
46
- }
47
-
48
- .config-section {
49
- background: #f8f9fa;
50
- padding: 20px;
51
- border-radius: 8px;
52
- margin-bottom: 20px;
53
- }
54
-
55
- .config-section h3 {
56
- margin-top: 0;
57
- color: #2c3e50;
58
- }
59
-
60
- .form-group {
61
- margin-bottom: 15px;
62
- }
63
-
64
- .form-group label {
65
- display: block;
66
- margin-bottom: 5px;
67
- font-weight: bold;
68
- color: #2c3e50;
69
- }
70
-
71
- .form-input {
72
- width: 100%;
73
- padding: 10px;
74
- border: 1px solid #ddd;
75
- border-radius: 4px;
76
- font-size: 14px;
77
- }
78
-
79
- .form-input:focus {
80
- outline: none;
81
- border-color: #3498db;
82
- box-shadow: 0 0 5px rgba(52, 152, 219, 0.3);
83
- }
84
-
85
- .form-input[type="select"] {
86
- cursor: pointer;
87
- }
88
-
89
- .form-input option {
90
- padding: 8px;
91
- }
92
-
93
- .config-section .form-group {
94
- margin-bottom: 20px;
95
- }
96
-
97
- .config-section .form-group:last-child {
98
- margin-bottom: 0;
99
- }
100
-
101
- .config-section small {
102
- display: block;
103
- margin-top: 5px;
104
- line-height: 1.4;
105
- }
106
-
107
- .btn {
108
- background: #3498db;
109
- color: white;
110
- padding: 10px 20px;
111
- border: none;
112
- border-radius: 4px;
113
- cursor: pointer;
114
- font-size: 14px;
115
- transition: background-color 0.3s;
116
- }
117
-
118
- .btn:hover {
119
- background: #2980b9;
120
- }
121
-
122
- .btn-success {
123
- background: #27ae60;
124
- }
125
-
126
- .btn-success:hover {
127
- background: #229954;
128
- }
129
-
130
- .btn-secondary {
131
- background: #95a5a6;
132
- }
133
-
134
- .btn-secondary:hover {
135
- background: #7f8c8d;
136
- }
137
-
138
- .btn-warning {
139
- background: #f39c12;
140
- }
141
-
142
- .btn-warning:hover {
143
- background: #e67e22;
144
- }
145
-
146
- .target-section {
147
- background: white;
148
- border-radius: 8px;
149
- box-shadow: 0 2px 10px rgba(0,0,0,0.1);
150
- margin-bottom: 20px;
151
- overflow: hidden;
152
- }
153
-
154
- .target-header {
155
- background: #e74c3c;
156
- color: white;
157
- padding: 15px 20px;
158
- display: flex;
159
- justify-content: space-between;
160
- align-items: center;
161
- }
162
-
163
- .target-content {
164
- padding: 20px;
165
- }
166
-
167
- .target-display {
168
- background: #f8f9fa;
169
- border: 1px solid #e9ecef;
170
- border-radius: 4px;
171
- padding: 15px;
172
- margin-bottom: 15px;
173
- }
174
-
175
- .target-display h4 {
176
- margin: 0 0 10px 0;
177
- color: #2c3e50;
178
- }
179
-
180
- .target-text {
181
- color: #495057;
182
- font-style: italic;
183
- line-height: 1.5;
184
- }
185
-
186
- .expression-section {
187
- background: white;
188
- border-radius: 8px;
189
- box-shadow: 0 2px 10px rgba(0,0,0,0.1);
190
- margin-bottom: 20px;
191
- overflow: hidden;
192
- }
193
-
194
- .expression-header {
195
- background: #9b59b6;
196
- color: white;
197
- padding: 15px 20px;
198
- display: flex;
199
- justify-content: space-between;
200
- align-items: center;
201
- }
202
-
203
- .expression-content {
204
- padding: 20px;
205
- }
206
-
207
- .expression-editor {
208
- width: 100%;
209
- min-height: 120px;
210
- padding: 15px;
211
- border: 1px solid #ddd;
212
- border-radius: 4px;
213
- font-family: 'Courier New', monospace;
214
- font-size: 14px;
215
- resize: vertical;
216
- background: white;
217
- color: #333;
218
- }
219
-
220
- .expression-editor:focus {
221
- outline: none;
222
- border-color: #9b59b6;
223
- box-shadow: 0 0 5px rgba(155, 89, 182, 0.3);
224
- }
225
-
226
- .expression-editor::placeholder {
227
- color: #999;
228
- font-style: italic;
229
- }
230
-
231
- .evaluation-section {
232
- background: white;
233
- border-radius: 8px;
234
- box-shadow: 0 2px 10px rgba(0,0,0,0.1);
235
- margin-bottom: 20px;
236
- overflow: hidden;
237
- }
238
-
239
- .evaluation-header {
240
- background: #f39c12;
241
- color: white;
242
- padding: 15px 20px;
243
- display: flex;
244
- justify-content: space-between;
245
- align-items: center;
246
- }
247
-
248
- .evaluation-content {
249
- padding: 20px;
250
- }
251
-
252
- .evaluation-controls {
253
- display: flex;
254
- gap: 10px;
255
- margin-bottom: 20px;
256
- flex-wrap: wrap;
257
- }
258
-
259
- .filter-controls {
260
- display: flex;
261
- gap: 10px;
262
- margin-bottom: 20px;
263
- align-items: center;
264
- flex-wrap: wrap;
265
- }
266
-
267
- .filter-controls label {
268
- display: flex;
269
- align-items: center;
270
- gap: 5px;
271
- font-weight: normal;
272
- }
273
-
274
- .filter-controls input[type="range"] {
275
- width: 100px;
276
- }
277
-
278
- .filter-controls span {
279
- min-width: 30px;
280
- text-align: center;
281
- font-weight: bold;
282
- }
283
-
284
- .evaluation-table-container {
285
- overflow-x: auto;
286
- max-height: 600px;
287
- overflow-y: auto;
288
- }
289
-
290
- .evaluation-table {
291
- width: 100%;
292
- border-collapse: collapse;
293
- font-size: 14px;
294
- }
295
-
296
- .evaluation-table th {
297
- background: #f8f9fa;
298
- padding: 12px 8px;
299
- text-align: left;
300
- border-bottom: 2px solid #dee2e6;
301
- position: sticky;
302
- top: 0;
303
- z-index: 10;
304
- }
305
-
306
- .evaluation-table td {
307
- padding: 10px 8px;
308
- border-bottom: 1px solid #dee2e6;
309
- vertical-align: top;
310
- }
311
-
312
- .evaluation-table tr:hover {
313
- background-color: #f8f9fa;
314
- }
315
-
316
- .score-cell {
317
- text-align: center;
318
- font-weight: bold;
319
- }
320
-
321
- .score-high {
322
- color: #27ae60;
323
- }
324
-
325
- .score-medium {
326
- color: #f39c12;
327
- }
328
-
329
- .score-low {
330
- color: #e74c3c;
331
- }
332
-
333
- .operator-name {
334
- font-weight: bold;
335
- color: #2c3e50;
336
- }
337
-
338
- .operator-category {
339
- font-size: 12px;
340
- color: #7f8c8d;
341
- font-style: italic;
342
- }
343
-
344
- .operator-description {
345
- font-size: 13px;
346
- color: #495057;
347
- margin-top: 8px;
348
- line-height: 1.4;
349
- max-width: 300px;
350
- }
351
-
352
- .operator-definition {
353
- font-size: 12px;
354
- color: #6c757d;
355
- margin-top: 6px;
356
- line-height: 1.3;
357
- max-width: 300px;
358
- font-style: italic;
359
- }
360
-
361
- .reason-text {
362
- max-width: 300px;
363
- line-height: 1.4;
364
- font-size: 13px;
365
- }
366
-
367
- .progress-section {
368
- background: white;
369
- border-radius: 8px;
370
- box-shadow: 0 2px 10px rgba(0,0,0,0.1);
371
- margin-bottom: 20px;
372
- overflow: hidden;
373
- }
374
-
375
- .progress-header {
376
- background: #27ae60;
377
- color: white;
378
- padding: 15px 20px;
379
- }
380
-
381
- .progress-content {
382
- padding: 20px;
383
- }
384
-
385
- .progress-bar {
386
- width: 100%;
387
- height: 20px;
388
- background-color: #e9ecef;
389
- border-radius: 10px;
390
- overflow: hidden;
391
- margin-bottom: 10px;
392
- }
393
-
394
- .progress-fill {
395
- height: 100%;
396
- background: linear-gradient(90deg, #27ae60, #2ecc71);
397
- transition: width 0.3s ease;
398
- display: flex;
399
- align-items: center;
400
- justify-content: center;
401
- color: white;
402
- font-size: 12px;
403
- font-weight: bold;
404
- }
405
-
406
- .progress-stats {
407
- display: flex;
408
- justify-content: space-between;
409
- font-size: 14px;
410
- color: #6c757d;
411
- }
412
-
413
- .notification {
414
- position: fixed;
415
- top: 20px;
416
- right: 20px;
417
- padding: 15px 20px;
418
- border-radius: 4px;
419
- color: white;
420
- font-weight: bold;
421
- z-index: 1000;
422
- animation: slideIn 0.3s ease-out;
423
- }
424
-
425
- .notification.success {
426
- background: #27ae60;
427
- }
428
-
429
- .notification.error {
430
- background: #e74c3c;
431
- }
432
-
433
- .notification.warning {
434
- background: #f39c12;
435
- }
436
-
437
- @keyframes slideIn {
438
- from {
439
- transform: translateX(100%);
440
- opacity: 0;
441
- }
442
- to {
443
- transform: translateX(0);
444
- opacity: 1;
445
- }
446
- }
447
-
448
- .loading-overlay {
449
- position: fixed;
450
- top: 0;
451
- left: 0;
452
- width: 100%;
453
- height: 100%;
454
- background: rgba(0, 0, 0, 0.5);
455
- display: flex;
456
- flex-direction: column;
457
- justify-content: center;
458
- align-items: center;
459
- z-index: 1000;
460
- }
461
-
462
- .loading-spinner {
463
- width: 50px;
464
- height: 50px;
465
- border: 5px solid #f3f3f3;
466
- border-top: 5px solid #3498db;
467
- border-radius: 50%;
468
- animation: spin 1s linear infinite;
469
- }
470
-
471
- .loading-message {
472
- color: white;
473
- margin-top: 20px;
474
- font-size: 16px;
475
- }
476
-
477
- @keyframes spin {
478
- 0% { transform: rotate(0deg); }
479
- 100% { transform: rotate(360deg); }
480
- }
481
-
482
- .export-section {
483
- background: #f8f9fa;
484
- padding: 20px;
485
- border-radius: 8px;
486
- margin-top: 20px;
487
- }
488
-
489
- .export-section h3 {
490
- margin-top: 0;
491
- color: #2c3e50;
492
- }
493
-
494
- .export-actions {
495
- display: flex;
496
- gap: 10px;
497
- flex-wrap: wrap;
498
- }
499
-
500
- .summary-stats {
501
- display: grid;
502
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
503
- gap: 15px;
504
- margin-bottom: 20px;
505
- }
506
-
507
- .stat-card {
508
- background: white;
509
- padding: 15px;
510
- border-radius: 8px;
511
- box-shadow: 0 2px 5px rgba(0,0,0,0.1);
512
- text-align: center;
513
- }
514
-
515
- .stat-number {
516
- font-size: 24px;
517
- font-weight: bold;
518
- color: #2c3e50;
519
- }
520
-
521
- .stat-label {
522
- font-size: 14px;
523
- color: #7f8c8d;
524
- margin-top: 5px;
525
- }
526
-
527
- .stat-high .stat-number {
528
- color: #27ae60;
529
- }
530
-
531
- .stat-medium .stat-number {
532
- color: #f39c12;
533
- }
534
-
535
- .stat-low .stat-number {
536
- color: #e74c3c;
537
- }
538
-
539
- /* Modal styles */
540
- .modal {
541
- display: none;
542
- position: fixed;
543
- z-index: 1000;
544
- left: 0;
545
- top: 0;
546
- width: 100%;
547
- height: 100%;
548
- background-color: rgba(0,0,0,0.5);
549
- }
550
-
551
- .modal-content {
552
- background-color: white;
553
- margin: 5% auto;
554
- padding: 0;
555
- border-radius: 8px;
556
- width: 90%;
557
- max-width: 500px;
558
- box-shadow: 0 4px 20px rgba(0,0,0,0.3);
559
- }
560
-
561
- .modal-header {
562
- background: #3498db;
563
- color: white;
564
- padding: 15px 20px;
565
- border-radius: 8px 8px 0 0;
566
- display: flex;
567
- justify-content: space-between;
568
- align-items: center;
569
- }
570
-
571
- .modal-header h3 {
572
- margin: 0;
573
- }
574
-
575
- .close {
576
- color: white;
577
- font-size: 28px;
578
- font-weight: bold;
579
- cursor: pointer;
580
- }
581
-
582
- .close:hover {
583
- opacity: 0.7;
584
- }
585
-
586
- .modal-body {
587
- padding: 20px;
588
- }
589
-
590
- .modal-footer {
591
- padding: 15px 20px;
592
- border-top: 1px solid #eee;
593
- display: flex;
594
- justify-content: flex-end;
595
- gap: 10px;
596
- }
597
-
598
- .btn-outline {
599
- background: transparent;
600
- color: #3498db;
601
- border: 1px solid #3498db;
602
- }
603
-
604
- .btn-outline:hover {
605
- background: #3498db;
606
- color: white;
607
- }
608
-
609
- .btn-small {
610
- padding: 5px 10px;
611
- font-size: 12px;
612
- }
613
-
614
- .login-status {
615
- margin-top: 10px;
616
- padding: 10px;
617
- border-radius: 4px;
618
- }
619
-
620
- .login-spinner {
621
- text-align: center;
622
- margin-top: 10px;
623
- }
624
-
625
- .spinner {
626
- width: 20px;
627
- height: 20px;
628
- border: 2px solid #f3f3f3;
629
- border-top: 2px solid #3498db;
630
- border-radius: 50%;
631
- animation: spin 1s linear infinite;
632
- display: inline-block;
633
- }
634
- </style>
635
- </head>
636
- <body>
637
- <div class="inspiration-house-container">
638
- <a href="{{ url_for('index') }}" class="back-button">← Back to Main</a>
639
-
640
- <div class="header-section">
641
- <h1>🎯 Inspiration House</h1>
642
- <p>AI-powered operator suggestions to enhance your current expression</p>
643
- </div>
644
-
645
- <!-- API Configuration Section -->
646
- <div class="config-section" id="apiConfigSection">
647
- <h3>API Configuration</h3>
648
- <div class="form-group">
649
- <label for="modelProvider">AI Model Provider:</label>
650
- <select id="modelProvider" class="form-input">
651
- <option value="deepseek">Deepseek</option>
652
- <option value="kimi">Kimi</option>
653
- </select>
654
- </div>
655
- <div class="form-group">
656
- <label for="apiKey">API Key:</label>
657
- <input type="password" id="apiKey" class="form-input" placeholder="Enter your API key">
658
- </div>
659
- <div class="form-group">
660
- <label for="modelName">Model Name:</label>
661
- <input type="text" id="modelName" class="form-input" placeholder="e.g., deepseek-chat, kimi-k2-0711-preview">
662
- <small style="color: #7f8c8d; font-size: 12px;">Enter the specific model name for your chosen provider</small>
663
- </div>
664
- <div class="form-group">
665
- <label for="batchSize">Worker Configuration:</label>
666
- <input type="number" id="batchSize" class="form-input" min="1" max="500" value="100" placeholder="100">
667
- <small style="color: #7f8c8d; font-size: 12px;">Note: Workers will be set to match the number of operators for maximum parallelization</small>
668
- </div>
669
- <button id="saveApiKey" class="btn">Test & Save Configuration</button>
670
- </div>
671
-
672
- <!-- Show API Config Button (hidden by default) -->
673
- <div class="config-section" id="showApiConfigSection" style="display: none;">
674
- <h3>API Configuration</h3>
675
- <p style="color: #27ae60; margin-bottom: 15px;">✅ API configuration saved successfully</p>
676
- <button id="showApiConfig" class="btn btn-secondary">Show API Configuration</button>
677
- </div>
678
-
679
- <!-- Target Section -->
680
- <div class="target-section">
681
- <div class="target-header">
682
- <h3>🎯 Quant Research Target</h3>
683
- <button id="editTarget" class="btn btn-secondary">Edit Target</button>
684
- </div>
685
- <div class="target-content">
686
- <div class="target-display" id="targetDisplay">
687
- <h4>Current Target:</h4>
688
- <div class="target-text" id="targetText">No target set. Click "Edit Target" to set your research goal.</div>
689
- </div>
690
- <div class="form-group" id="targetInputGroup" style="display: none;">
691
- <label for="researchTarget">Describe your quant research target:</label>
692
- <textarea id="researchTarget" class="form-input" rows="4" placeholder="e.g., Lower the trading turnover, Improve Sharpe ratio, Reduce drawdown, etc."></textarea>
693
- <div style="margin-top: 10px;">
694
- <button id="saveTarget" class="btn btn-success">Save Target</button>
695
- <button id="cancelTarget" class="btn btn-secondary">Cancel</button>
696
- </div>
697
- </div>
698
- </div>
699
- </div>
700
-
701
- <!-- Expression Section -->
702
- <div class="expression-section">
703
- <div class="expression-header">
704
- <h3>📝 Current Expression</h3>
705
- <button id="loadFromBRAIN" class="btn btn-secondary">Load from BRAIN</button>
706
- </div>
707
- <div class="expression-content">
708
- <div class="form-group">
709
- <label for="currentExpression">Your current expression:</label>
710
- <textarea id="currentExpression" class="expression-editor" placeholder="Enter your current expression here... (e.g., ts_mean(close, 20) or rank(volume))"></textarea>
711
- </div>
712
- <div class="form-group">
713
- <label for="expressionContext">Expression context (optional):</label>
714
- <textarea id="expressionContext" class="form-input" rows="3" placeholder="Describe what this expression does, its purpose, or any specific context..."></textarea>
715
- </div>
716
- </div>
717
- </div>
718
-
719
- <!-- Evaluation Section -->
720
- <div class="evaluation-section">
721
- <div class="evaluation-header">
722
- <h3>🔍 Operator Addition Suggestions</h3>
723
- <div style="display: flex; align-items: center; gap: 10px;">
724
- <span style="font-size: 14px; color: rgba(255,255,255,0.8);">Operators: <span id="currentBatchSize">0</span></span>
725
- <button id="startEvaluation" class="btn btn-warning">Start AI Evaluation</button>
726
- </div>
727
- </div>
728
- <div class="evaluation-content">
729
- <div class="evaluation-controls">
730
- <button id="refreshEvaluation" class="btn btn-secondary">Refresh Results</button>
731
- <button id="exportResults" class="btn">Export Results</button>
732
- <button id="clearResults" class="btn btn-secondary">Clear Results</button>
733
- </div>
734
-
735
- <div class="filter-controls">
736
- <label>
737
- Min Score:
738
- <input type="range" id="minScoreFilter" min="0" max="10" value="0">
739
- <span id="minScoreValue">0</span>
740
- </label>
741
- <label>
742
- Max Score:
743
- <input type="range" id="maxScoreFilter" min="0" max="10" value="10">
744
- <span id="maxScoreValue">10</span>
745
- </label>
746
- <label>
747
- <input type="checkbox" id="showHighScores" checked> Show High Scores (8-10)
748
- </label>
749
- <label>
750
- <input type="checkbox" id="showMediumScores" checked> Show Medium Scores (4-7)
751
- </label>
752
- <label>
753
- <input type="checkbox" id="showLowScores" checked> Show Low Scores (0-3)
754
- </label>
755
- </div>
756
-
757
- <div class="summary-stats" id="summaryStats" style="display: none;">
758
- <div class="stat-card stat-high">
759
- <div class="stat-number" id="highScoreCount">0</div>
760
- <div class="stat-label">High Scores (8-10)</div>
761
- </div>
762
- <div class="stat-card stat-medium">
763
- <div class="stat-number" id="mediumScoreCount">0</div>
764
- <div class="stat-label">Medium Scores (4-7)</div>
765
- </div>
766
- <div class="stat-card stat-low">
767
- <div class="stat-number" id="lowScoreCount">0</div>
768
- <div class="stat-label">Low Scores (0-3)</div>
769
- </div>
770
- <div class="stat-card">
771
- <div class="stat-number" id="totalEvaluated">0</div>
772
- <div class="stat-label">Total Evaluated</div>
773
- </div>
774
- </div>
775
-
776
- <div class="evaluation-table-container">
777
- <table class="evaluation-table" id="evaluationTable">
778
- <thead>
779
- <tr>
780
- <th style="width: 300px;">Operator</th>
781
- <th style="width: 120px;">Category</th>
782
- <th style="width: 80px;">Score</th>
783
- <th style="width: 350px;">Reason</th>
784
- <th style="width: 100px;">Actions</th>
785
- </tr>
786
- </thead>
787
- <tbody id="evaluationTableBody">
788
- <tr>
789
- <td colspan="5" style="text-align: center; color: #7f8c8d; font-style: italic; padding: 40px;">
790
- No evaluations yet. Set your target and expression, then click "Start AI Evaluation".
791
- </td>
792
- </tr>
793
- </tbody>
794
- </table>
795
- </div>
796
- </div>
797
- </div>
798
-
799
- <!-- Progress Section -->
800
- <div class="progress-section" id="progressSection" style="display: none;">
801
- <div class="progress-header">
802
- <h3>🔄 Evaluation Progress</h3>
803
- </div>
804
- <div class="progress-content">
805
- <div class="progress-bar">
806
- <div class="progress-fill" id="progressFill" style="width: 0%;">0%</div>
807
- </div>
808
- <div class="progress-stats">
809
- <span id="progressText">Evaluating operators...</span>
810
- <span id="progressCount">0 / 0</span>
811
- </div>
812
- </div>
813
- </div>
814
-
815
- <!-- Export Section -->
816
- <div class="export-section">
817
- <h3>📊 About the Tool</h3>
818
- <p>This tool evaluates all available BRAIN operators as potential ADDITIONS to your current expression. Each operator receives a score from 0-10 based on how well it could be combined with your current expression to better achieve your research target.</p>
819
- <div class="export-actions">
820
- <button id="exportHighScores" class="btn btn-success">Export High Scores</button>
821
- <button id="exportAllResults" class="btn">Export All Results</button>
822
- <button id="exportCSV" class="btn btn-secondary">Export as CSV</button>
823
- </div>
824
- </div>
825
- </div>
826
-
827
- <!-- BRAIN Login Modal -->
828
- <div id="brainLoginModal" class="modal">
829
- <div class="modal-content">
830
- <div class="modal-header">
831
- <h3>Connect to WorldQuant BRAIN</h3>
832
- <span class="close" onclick="closeBrainLoginModal()">&times;</span>
833
- </div>
834
- <div class="modal-body">
835
- <form id="brainLoginForm" onsubmit="event.preventDefault(); authenticateBrain();">
836
- <div class="form-group">
837
- <label for="brainUsername">Username:</label>
838
- <input type="email" id="brainUsername" class="form-input" placeholder="your.email@domain.com" required>
839
- </div>
840
- <div class="form-group">
841
- <label for="brainPassword">Password:</label>
842
- <input type="password" id="brainPassword" class="form-input" placeholder="Your password" required>
843
- </div>
844
- <div id="brainLoginStatus" class="login-status"></div>
845
- <div id="loginSpinner" class="login-spinner" style="display: none;">
846
- <div class="spinner"></div>
847
- </div>
848
- </form>
849
- </div>
850
- <div class="modal-footer">
851
- <button onclick="closeBrainLoginModal()" class="btn btn-outline" id="cancelBtn">Cancel</button>
852
- <button onclick="authenticateBrain()" class="btn btn-primary" id="loginBtn">Connect</button>
853
- </div>
854
- </div>
855
- </div>
856
-
857
- <script src="{{ url_for('static', filename='brain.js') }}"></script>
858
- <script src="{{ url_for('static', filename='inspiration_house.js') }}"></script>
859
- <script src="{{ url_for('static', filename='usage_widget.js') }}"></script>
860
- </body>
861
- </html>