cnhkmcp 2.0__py3-none-any.whl → 2.0.2__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.
@@ -63,3 +63,5 @@ Incorrect email or password
63
63
 
64
64
  2025-12-18 02:51:54,799 - ace - WARNING - No fields found: region=CHN, delay=1, universe=TOP2000U, type=MATRIX, dataset.id=analyst45
65
65
  2025-12-18 02:52:11,310 - ace - WARNING - No fields found: region=CHN, delay=1, universe=TOP2000U, type=MATRIX, dataset.id=analyst45
66
+ 2025-12-18 13:17:02,856 - ace - WARNING - No fields found: region=USA, delay=1, universe=TOP3000, type=MATRIX, dataset.id=shortinterest3
67
+ 2025-12-18 13:24:08,699 - ace - WARNING - No fields found: region=USA, delay=1, universe=TOP3000, type=MATRIX, dataset.id=shortinterest3
@@ -207,6 +207,7 @@ def main():
207
207
  region=region,
208
208
  delay=delay,
209
209
  universe=universe,
210
+ data_type="ALL",
210
211
  dataset_id=dataset_id
211
212
  )
212
213
  print(f"Retrieved {len(datafields_df)} datafields.")
@@ -40,6 +40,14 @@ document.addEventListener('DOMContentLoaded', function() {
40
40
  genBtn.title = "Please test LLM connection first";
41
41
  }
42
42
 
43
+ // Initially disable new task button
44
+ const newTaskBtn = document.getElementById('inspire-new-task');
45
+ if (newTaskBtn) {
46
+ newTaskBtn.disabled = true;
47
+ newTaskBtn.style.opacity = '0.5';
48
+ newTaskBtn.style.cursor = 'not-allowed';
49
+ }
50
+
43
51
  // Check login status periodically or on load to update button state
44
52
  checkLoginAndUpdateButton();
45
53
  });
@@ -329,6 +337,13 @@ function generateAlphaTemplates() {
329
337
  inspirationState.lastResult = data.result;
330
338
  const dlBtn = document.getElementById('inspire-download');
331
339
  if (dlBtn) dlBtn.style.display = 'inline-block';
340
+
341
+ const newTaskBtn = document.getElementById('inspire-new-task');
342
+ if (newTaskBtn) {
343
+ newTaskBtn.disabled = false;
344
+ newTaskBtn.style.opacity = '1';
345
+ newTaskBtn.style.cursor = 'pointer';
346
+ }
332
347
  }
333
348
  })
334
349
  .catch(err => {
@@ -337,17 +352,26 @@ function generateAlphaTemplates() {
337
352
  }
338
353
 
339
354
  function formatMarkdown(text) {
340
- // Escape HTML tags to prevent browser from hiding them or interpreting them
341
- // specifically for Brain expressions like <field_name>
342
- // We only escape < and > if they look like tags, but for simplicity and safety with this specific content,
343
- // escaping all is usually safer before markdown parsing, as markdown doesn't use < > for syntax
344
- // (except for raw HTML, which we don't need here).
345
- const escapedText = text.replace(/</g, '&lt;').replace(/>/g, '&gt;');
346
-
347
355
  if (typeof marked !== 'undefined') {
348
- return marked.parse(escapedText);
356
+ // Split text by code blocks (triple backticks or single backticks)
357
+ // We want to escape < and > in normal text, but NOT in code blocks
358
+ const parts = text.split(/(```[\s\S]*?```|`[^`]*`)/g);
359
+
360
+ const escapedParts = parts.map(part => {
361
+ // If it starts with backtick, it's a code block -> return as is
362
+ if (part.startsWith('`')) {
363
+ return part;
364
+ }
365
+ // Otherwise, escape < and >
366
+ return part.replace(/</g, '&lt;').replace(/>/g, '&gt;');
367
+ });
368
+
369
+ return marked.parse(escapedParts.join(''));
349
370
  }
371
+
350
372
  // Fallback simple formatter
373
+ // Here we DO need to escape because we are building HTML manually
374
+ const escapedText = text.replace(/</g, '&lt;').replace(/>/g, '&gt;');
351
375
  let html = escapedText
352
376
  .replace(/```([\s\S]*?)```/g, '<pre><code>$1</code></pre>')
353
377
  .replace(/\n/g, '<br>');
@@ -423,6 +447,13 @@ function resetInspirationTask() {
423
447
 
424
448
  const dlBtn = document.getElementById('inspire-download');
425
449
  if (dlBtn) dlBtn.style.display = 'none';
450
+
451
+ const newTaskBtn = document.getElementById('inspire-new-task');
452
+ if (newTaskBtn) {
453
+ newTaskBtn.disabled = true;
454
+ newTaskBtn.style.opacity = '0.5';
455
+ newTaskBtn.style.cursor = 'not-allowed';
456
+ }
426
457
  // Keep LLM config and Region/Universe selections
427
458
  }
428
459
 
@@ -2316,7 +2316,7 @@ def inspiration_generate():
2316
2316
  operators_df = get_operators(s)
2317
2317
  operators_df = operators_df[operators_df['scope'] == 'REGULAR']
2318
2318
 
2319
- datafields_df = get_datafields(s, region=region, delay=int(delay), universe=universe, dataset_id=dataset_id)
2319
+ datafields_df = get_datafields(s, region=region, delay=int(delay), universe=universe, dataset_id=dataset_id, data_type="ALL")
2320
2320
 
2321
2321
  script_dir = os.path.dirname(os.path.abspath(__file__))
2322
2322
  prompt_path = os.path.join(script_dir, "give_me_idea", "what_is_Alpha_template.md")
@@ -2390,4 +2390,4 @@ if __name__ == '__main__':
2390
2390
 
2391
2391
  print(f"Application will run on http://{bind_host}:5000")
2392
2392
  print("BRAIN API integration included - no separate proxy needed!")
2393
- app.run(debug=True, host=bind_host, port=5000)
2393
+ app.run(debug=False, host=bind_host, port=5000)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cnhkmcp
3
- Version: 2.0
3
+ Version: 2.0.2
4
4
  Summary: A comprehensive Model Context Protocol (MCP) server for quantitative trading platform integration
5
5
  Home-page: https://github.com/cnhk/cnhkmcp
6
6
  Author: CNHK
@@ -15,7 +15,7 @@ cnhkmcp/untracked/配置前运行我_安装必要依赖包.py,sha256=BnUyL5g6PaC
15
15
  cnhkmcp/untracked/APP/.gitignore,sha256=oPCoVTNo82bhkN0c671LdjCpOTVpVhZI5NR75ztcg48,317
16
16
  cnhkmcp/untracked/APP/MODULAR_STRUCTURE.md,sha256=b5xV74-_RtXq2K1EsYDwMukO6lxjJ4-lnOAEnTHpFS0,4706
17
17
  cnhkmcp/untracked/APP/README.md,sha256=vb7hmQX0sH5aFNBmDCN5szMSDHm1_h2VKY4UKCt0aMk,11676
18
- cnhkmcp/untracked/APP/ace.log,sha256=A2YNM5-LlQeROSkKFV7Xv20K2mfrn6CzwLNKyBGsvSY,10753
18
+ cnhkmcp/untracked/APP/ace.log,sha256=QGcTvXCEEfgl0hbnnbtDYB-pJbJwVREAXFnKD4OeSao,11029
19
19
  cnhkmcp/untracked/APP/ace_lib.py,sha256=2YbAhDldT5Jwdva-9LK-rqHVYQxtOLKLN0Z4jsfoazA,52937
20
20
  cnhkmcp/untracked/APP/helpful_functions.py,sha256=VS-rh4T2CMWLFK4clI7-DYsnqwO5dx5L-rgL8U8BmT8,6622
21
21
  cnhkmcp/untracked/APP/mirror_config.txt,sha256=RL1jFYwcvDPkLd6tc_lqVcwjTLORWt5Qu0Ym_BTPaao,504
@@ -27,7 +27,7 @@ cnhkmcp/untracked/APP/setup_tsinghua.bat,sha256=9dLWCaQTULf3d2LqiAlvQrA4wuM1dysG
27
27
  cnhkmcp/untracked/APP/setup_tsinghua.sh,sha256=mMDXTqCRIXtSHa_1pU0jCnNF-xajqfZDlUA72XpcAOk,1195
28
28
  cnhkmcp/untracked/APP/ssrn-3332513.pdf,sha256=GEwf1Srtk-fTvF03dhTEjXJstHBARIUg31k7s5kxS98,2082078
29
29
  cnhkmcp/untracked/APP/usage.md,sha256=lPpA6qqAMvVsm41ikbRR1ZWFcuPSgqhMXOUig52eZCI,16164
30
- cnhkmcp/untracked/APP/运行打开我.py,sha256=BOLKROMUJQPtvbS8kbfEdeLEIG7VX8JEV8WNqS20zL0,97151
30
+ cnhkmcp/untracked/APP/运行打开我.py,sha256=D3Jdme3MDlYjgQCefgS4YbufsMt6X_IZndj1s-fTVWg,97169
31
31
  cnhkmcp/untracked/APP/Tranformer/Transformer.py,sha256=nvkDLv_untR-M_lAsvhpyvoyrkb8732JblB8MGeGjIA,111571
32
32
  cnhkmcp/untracked/APP/Tranformer/ace.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  cnhkmcp/untracked/APP/Tranformer/ace_lib.py,sha256=2YbAhDldT5Jwdva-9LK-rqHVYQxtOLKLN0Z4jsfoazA,52937
@@ -49,7 +49,7 @@ cnhkmcp/untracked/APP/blueprints/paper_analysis.py,sha256=YVtQ22uiY8ZO-B2x4ckoyZ
49
49
  cnhkmcp/untracked/APP/custom_templates/templates.json,sha256=ARrpRsxGcUpC2iepS6j6A_0tdu_xUJTIyvLDb8uzL_E,48776
50
50
  cnhkmcp/untracked/APP/give_me_idea/BRAIN_Alpha_Template_Expert_SystemPrompt.md,sha256=y95Lr8AZ-CQ-axJBDJHixsqR2Ig6nWJhHItKJJU1ZCA,16376
51
51
  cnhkmcp/untracked/APP/give_me_idea/ace_lib.py,sha256=2YbAhDldT5Jwdva-9LK-rqHVYQxtOLKLN0Z4jsfoazA,52937
52
- cnhkmcp/untracked/APP/give_me_idea/alpha_data_specific_template_master.py,sha256=uqG2nK5x8BGvZWdK2S0zSym-3mevWYobcN4_k8xZzDA,8795
52
+ cnhkmcp/untracked/APP/give_me_idea/alpha_data_specific_template_master.py,sha256=rPOcxH3-JKa3T2AGo19nArSIhzMjQKEnf4LVRLZ84FI,8825
53
53
  cnhkmcp/untracked/APP/give_me_idea/helpful_functions.py,sha256=VS-rh4T2CMWLFK4clI7-DYsnqwO5dx5L-rgL8U8BmT8,6622
54
54
  cnhkmcp/untracked/APP/give_me_idea/what_is_Alpha_template.md,sha256=QjwX0_b0DhhiNlo3ZwkIfXXSsJnk_FyjkZftyVwnCZ8,2317
55
55
  cnhkmcp/untracked/APP/hkSimulator/ace.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -64,7 +64,7 @@ cnhkmcp/untracked/APP/static/brain.js,sha256=WSRMZvj1aQUwiI6yG6gfv7xa2SnIRCF0sHE
64
64
  cnhkmcp/untracked/APP/static/decoder.js,sha256=sKyfgsleHvokCMw6Zp-XfcjixkT8cyMvw6ASDhN6b9I,61987
65
65
  cnhkmcp/untracked/APP/static/feature_engineering.js,sha256=X6nis3FmytrNAE8mM-U6-VqmqZMAQ2X59Iy9RmOF5_8,73895
66
66
  cnhkmcp/untracked/APP/static/idea_house.js,sha256=dg6zt1mFr99gONdIDqNN_P3ChPEMzCmnWTF0OW09x9w,34225
67
- cnhkmcp/untracked/APP/static/inspiration.js,sha256=otAs0-2cJoJqNeql5QtjnbDeDtLOQHRgMwAfVTnZxKs,15969
67
+ cnhkmcp/untracked/APP/static/inspiration.js,sha256=uSmk8_a9MTYDmDwjZG9Z_Jl3nvC4Hxr3aYiqXZl-ZBk,17014
68
68
  cnhkmcp/untracked/APP/static/inspiration_house.js,sha256=U3L5vyguy10z7Ww-EFz59OlZUDw3KtIK_JyQzXYtdZ4,31795
69
69
  cnhkmcp/untracked/APP/static/paper_analysis.js,sha256=EWD6fTfC6hMLL6IeqDmstP9w6Cezq5607ucUpEpuHkg,16939
70
70
  cnhkmcp/untracked/APP/static/script.js,sha256=uyh3XHlRMC-VUe7mhWMvBlejGd-f_gMgH1kola7PlH8,108925
@@ -87,9 +87,9 @@ cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这
87
87
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/user_config.json,sha256=_INn1X1qIsITrmEno-BRlQOAGm9wnNCw-6B333DEvnk,695
88
88
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/让AI读这个文档来学会下载浏览器.md,sha256=v5QPSMjRDh52ZjgC4h8QjImnaqlVRLjTHGxmGjTo36g,3396
89
89
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/配置前运行我_安装必要依赖包.py,sha256=BnUyL5g6PaC62yEuS-8vcDSJ0oKu3k6jqQxi2jginuQ,6612
90
- cnhkmcp-2.0.dist-info/licenses/LICENSE,sha256=QLxO2eNMnJQEdI_R1UV2AOD-IvuA8zVrkHWA4D9gtoc,1081
91
- cnhkmcp-2.0.dist-info/METADATA,sha256=mg9Af9WjI65q81I6NdUzUcbLdO8kqWodlAQm51HCQkQ,5169
92
- cnhkmcp-2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
93
- cnhkmcp-2.0.dist-info/entry_points.txt,sha256=lTQieVyIvjhSMK4fT-XwnccY-JBC1H4vVQ3V9dDM-Pc,70
94
- cnhkmcp-2.0.dist-info/top_level.txt,sha256=x--ibUcSgOS9Z_RWK2Qc-vfs7DaXQN-WMaaxEETJ1Bw,8
95
- cnhkmcp-2.0.dist-info/RECORD,,
90
+ cnhkmcp-2.0.2.dist-info/licenses/LICENSE,sha256=QLxO2eNMnJQEdI_R1UV2AOD-IvuA8zVrkHWA4D9gtoc,1081
91
+ cnhkmcp-2.0.2.dist-info/METADATA,sha256=NeORB8hSSPmvhMVjk2QMXZ8mDefzbsvylV0duKMiIXo,5171
92
+ cnhkmcp-2.0.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
93
+ cnhkmcp-2.0.2.dist-info/entry_points.txt,sha256=lTQieVyIvjhSMK4fT-XwnccY-JBC1H4vVQ3V9dDM-Pc,70
94
+ cnhkmcp-2.0.2.dist-info/top_level.txt,sha256=x--ibUcSgOS9Z_RWK2Qc-vfs7DaXQN-WMaaxEETJ1Bw,8
95
+ cnhkmcp-2.0.2.dist-info/RECORD,,
File without changes