cnhkmcp 1.8.10__py3-none-any.whl → 2.0__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 (23) hide show
  1. cnhkmcp/untracked/APP/MODULAR_STRUCTURE.md +38 -49
  2. cnhkmcp/untracked/APP/Tranformer/Transformer.py +131 -1
  3. cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json +951 -2055
  4. cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json +261 -1
  5. cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_success.json +168 -1362
  6. cnhkmcp/untracked/APP/Tranformer/template_summary.txt +57 -1
  7. cnhkmcp/untracked/APP/ace.log +26 -0
  8. cnhkmcp/untracked/APP/give_me_idea/BRAIN_Alpha_Template_Expert_SystemPrompt.md +400 -0
  9. cnhkmcp/untracked/APP/give_me_idea/ace_lib.py +1489 -0
  10. cnhkmcp/untracked/APP/give_me_idea/alpha_data_specific_template_master.py +247 -0
  11. cnhkmcp/untracked/APP/give_me_idea/helpful_functions.py +180 -0
  12. cnhkmcp/untracked/APP/give_me_idea/what_is_Alpha_template.md +11 -0
  13. cnhkmcp/untracked/APP/static/brain.js +13 -3
  14. cnhkmcp/untracked/APP/static/inspiration.js +434 -0
  15. cnhkmcp/untracked/APP/templates/index.html +126 -0
  16. cnhkmcp/untracked/APP/usage.md +29 -3
  17. 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 +233 -1
  18. {cnhkmcp-1.8.10.dist-info → cnhkmcp-2.0.dist-info}/METADATA +1 -1
  19. {cnhkmcp-1.8.10.dist-info → cnhkmcp-2.0.dist-info}/RECORD +23 -17
  20. {cnhkmcp-1.8.10.dist-info → cnhkmcp-2.0.dist-info}/WHEEL +0 -0
  21. {cnhkmcp-1.8.10.dist-info → cnhkmcp-2.0.dist-info}/entry_points.txt +0 -0
  22. {cnhkmcp-1.8.10.dist-info → cnhkmcp-2.0.dist-info}/licenses/LICENSE +0 -0
  23. {cnhkmcp-1.8.10.dist-info → cnhkmcp-2.0.dist-info}/top_level.txt +0 -0
@@ -2146,6 +2146,238 @@ def get_valid_simulation_options(session):
2146
2146
  print(f"Error fetching options: {e}")
2147
2147
  return {}
2148
2148
 
2149
+ # --- Inspiration Master Routes ---
2150
+
2151
+ def get_active_session():
2152
+ """Helper to get active session from header or SingleSession"""
2153
+ # Check header first
2154
+ session_id = request.headers.get('Session-ID')
2155
+ if session_id and session_id in brain_sessions:
2156
+ return brain_sessions[session_id]['session']
2157
+
2158
+ # Fallback to SingleSession
2159
+ script_dir = os.path.dirname(os.path.abspath(__file__))
2160
+ transformer_dir = os.path.join(script_dir, 'Tranformer')
2161
+ if transformer_dir not in sys.path:
2162
+ sys.path.append(transformer_dir)
2163
+ from ace_lib import SingleSession
2164
+ s = SingleSession()
2165
+ if hasattr(s, 'auth') and s.auth:
2166
+ return s
2167
+ return None
2168
+
2169
+ @app.route('/api/check_login', methods=['GET'])
2170
+ def check_login():
2171
+ try:
2172
+ s = get_active_session()
2173
+ if s:
2174
+ return jsonify({'logged_in': True})
2175
+ else:
2176
+ return jsonify({'logged_in': False})
2177
+ except Exception as e:
2178
+ print(f"Check login error: {e}")
2179
+ return jsonify({'logged_in': False})
2180
+
2181
+ @app.route('/api/inspiration/options', methods=['GET'])
2182
+ def inspiration_options():
2183
+ try:
2184
+ # Use the same path logic as the main login
2185
+ script_dir = os.path.dirname(os.path.abspath(__file__))
2186
+ transformer_dir = os.path.join(script_dir, 'Tranformer')
2187
+ if transformer_dir not in sys.path:
2188
+ sys.path.append(transformer_dir)
2189
+
2190
+ from ace_lib import get_instrument_type_region_delay
2191
+
2192
+ s = get_active_session()
2193
+ if not s:
2194
+ return jsonify({'error': 'Not logged in'}), 401
2195
+
2196
+ df = get_instrument_type_region_delay(s)
2197
+
2198
+ result = {}
2199
+ for _, row in df.iterrows():
2200
+ inst = row['InstrumentType']
2201
+ region = row['Region']
2202
+ delay = row['Delay']
2203
+ univs = row['Universe']
2204
+
2205
+ if inst not in result: result[inst] = {}
2206
+ if region not in result[inst]:
2207
+ result[inst][region] = {"delays": [], "universes": []}
2208
+
2209
+ if delay not in result[inst][region]['delays']:
2210
+ result[inst][region]['delays'].append(delay)
2211
+
2212
+ if isinstance(univs, list):
2213
+ for u in univs:
2214
+ if u not in result[inst][region]['universes']:
2215
+ result[inst][region]['universes'].append(u)
2216
+ else:
2217
+ if univs not in result[inst][region]['universes']:
2218
+ result[inst][region]['universes'].append(univs)
2219
+
2220
+ return jsonify(result)
2221
+ except Exception as e:
2222
+ return jsonify({'error': str(e)}), 500
2223
+
2224
+ @app.route('/api/inspiration/datasets', methods=['POST'])
2225
+ def inspiration_datasets():
2226
+ data = request.json
2227
+ region = data.get('region')
2228
+ delay = data.get('delay')
2229
+ universe = data.get('universe')
2230
+ search = data.get('search', '')
2231
+
2232
+ try:
2233
+ # Use the same path logic as the main login
2234
+ script_dir = os.path.dirname(os.path.abspath(__file__))
2235
+ transformer_dir = os.path.join(script_dir, 'Tranformer')
2236
+ if transformer_dir not in sys.path:
2237
+ sys.path.append(transformer_dir)
2238
+
2239
+ from ace_lib import get_datasets
2240
+
2241
+ s = get_active_session()
2242
+ if not s:
2243
+ return jsonify({'error': 'Not logged in'}), 401
2244
+
2245
+ df = get_datasets(s, region=region, delay=int(delay), universe=universe)
2246
+
2247
+ if search:
2248
+ search = search.lower()
2249
+ mask = (
2250
+ df['id'].str.lower().str.contains(search, na=False) |
2251
+ df['name'].str.lower().str.contains(search, na=False) |
2252
+ df['description'].str.lower().str.contains(search, na=False)
2253
+ )
2254
+ df = df[mask]
2255
+
2256
+ results = df.head(50).to_dict(orient='records')
2257
+ return jsonify(results)
2258
+ except Exception as e:
2259
+ return jsonify({'error': str(e)}), 500
2260
+
2261
+ @app.route('/api/inspiration/test_llm', methods=['POST'])
2262
+ def inspiration_test_llm():
2263
+ data = request.json
2264
+ api_key = data.get('apiKey')
2265
+ base_url = data.get('baseUrl')
2266
+ model = data.get('model')
2267
+
2268
+ try:
2269
+ import openai
2270
+ client = openai.OpenAI(api_key=api_key, base_url=base_url)
2271
+ # Simple call to list models or chat completion
2272
+ # Using a very cheap/fast call if possible, or just listing models
2273
+ try:
2274
+ client.models.list()
2275
+ return jsonify({'success': True})
2276
+ except Exception as e:
2277
+ # Fallback to a simple completion if models.list is restricted
2278
+ try:
2279
+ client.chat.completions.create(
2280
+ model=model,
2281
+ messages=[{"role": "user", "content": "hi"}],
2282
+ max_tokens=1
2283
+ )
2284
+ return jsonify({'success': True})
2285
+ except Exception as e2:
2286
+ return jsonify({'success': False, 'error': str(e2)})
2287
+
2288
+ except Exception as e:
2289
+ return jsonify({'success': False, 'error': str(e)})
2290
+
2291
+ @app.route('/api/inspiration/generate', methods=['POST'])
2292
+ def inspiration_generate():
2293
+ data = request.json
2294
+ api_key = data.get('apiKey')
2295
+ base_url = data.get('baseUrl')
2296
+ model = data.get('model')
2297
+ region = data.get('region')
2298
+ delay = data.get('delay')
2299
+ universe = data.get('universe')
2300
+ dataset_id = data.get('datasetId')
2301
+
2302
+ try:
2303
+ import openai
2304
+ # Use the same path logic as the main login
2305
+ script_dir = os.path.dirname(os.path.abspath(__file__))
2306
+ transformer_dir = os.path.join(script_dir, 'Tranformer')
2307
+ if transformer_dir not in sys.path:
2308
+ sys.path.append(transformer_dir)
2309
+
2310
+ from ace_lib import get_operators, get_datafields
2311
+
2312
+ s = get_active_session()
2313
+ if not s:
2314
+ return jsonify({'error': 'Not logged in'}), 401
2315
+
2316
+ operators_df = get_operators(s)
2317
+ operators_df = operators_df[operators_df['scope'] == 'REGULAR']
2318
+
2319
+ datafields_df = get_datafields(s, region=region, delay=int(delay), universe=universe, dataset_id=dataset_id)
2320
+
2321
+ script_dir = os.path.dirname(os.path.abspath(__file__))
2322
+ prompt_path = os.path.join(script_dir, "give_me_idea", "what_is_Alpha_template.md")
2323
+ try:
2324
+ with open(prompt_path, "r", encoding="utf-8") as f:
2325
+ system_prompt = f.read()
2326
+ except:
2327
+ system_prompt = "You are a helpful assistant for generating Alpha templates."
2328
+
2329
+ client = openai.OpenAI(api_key=api_key, base_url=base_url)
2330
+
2331
+ max_retries = 5
2332
+ n_ops = len(operators_df)
2333
+ n_fields = len(datafields_df)
2334
+
2335
+ last_error = None
2336
+
2337
+ for attempt in range(max_retries + 1):
2338
+ ops_subset = operators_df.head(n_ops)
2339
+ fields_subset = datafields_df.head(n_fields)
2340
+
2341
+ operators_info = ops_subset[['name', 'category', 'description']].to_string()
2342
+ datafields_info = fields_subset[['id', 'description', 'subcategory']].to_string()
2343
+
2344
+ user_prompt = f"""
2345
+ Here is the information about available operators (first {n_ops} rows):
2346
+ {operators_info}
2347
+
2348
+ Here is the information about the dataset '{dataset_id}' (first {n_fields} rows):
2349
+ {datafields_info}
2350
+
2351
+ Please come up with several Alpha templates based on this information.
2352
+ Specify the AI answer in Chinese.
2353
+ """
2354
+ try:
2355
+ completion = client.chat.completions.create(
2356
+ model=model,
2357
+ messages=[
2358
+ {"role": "system", "content": system_prompt},
2359
+ {"role": "user", "content": user_prompt}
2360
+ ],
2361
+ temperature=0.3,
2362
+ )
2363
+ return jsonify({'result': completion.choices[0].message.content})
2364
+
2365
+ except Exception as e:
2366
+ error_msg = str(e)
2367
+ last_error = error_msg
2368
+ if "token limit" in error_msg or "context_length_exceeded" in error_msg or "400" in error_msg:
2369
+ n_ops = max(1, n_ops // 2)
2370
+ n_fields = max(1, n_fields // 2)
2371
+ if n_ops == 1 and n_fields == 1:
2372
+ break
2373
+ else:
2374
+ break
2375
+
2376
+ return jsonify({'error': f"Failed after retries. Last error: {last_error}"})
2377
+
2378
+ except Exception as e:
2379
+ return jsonify({'error': str(e)}), 500
2380
+
2149
2381
  if __name__ == '__main__':
2150
2382
  print("Starting BRAIN Expression Template Decoder Web Application...")
2151
2383
  print("Starting in safe mode: binding only to localhost (127.0.0.1)")
@@ -2158,4 +2390,4 @@ if __name__ == '__main__':
2158
2390
 
2159
2391
  print(f"Application will run on http://{bind_host}:5000")
2160
2392
  print("BRAIN API integration included - no separate proxy needed!")
2161
- app.run(debug=False, host=bind_host, port=5000)
2393
+ app.run(debug=True, host=bind_host, port=5000)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cnhkmcp
3
- Version: 1.8.10
3
+ Version: 2.0
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
@@ -13,9 +13,9 @@ cnhkmcp/untracked/示例工作流_Dataset_Exploration_Expert_Manual.md,sha256=-C
13
13
  cnhkmcp/untracked/示例工作流_daily_report_workflow.md,sha256=6aNmPqWRn09XdQMRxoVTka9IYVOUv5LcWparHu16EfQ,9460
14
14
  cnhkmcp/untracked/配置前运行我_安装必要依赖包.py,sha256=BnUyL5g6PaC62yEuS-8vcDSJ0oKu3k6jqQxi2jginuQ,6612
15
15
  cnhkmcp/untracked/APP/.gitignore,sha256=oPCoVTNo82bhkN0c671LdjCpOTVpVhZI5NR75ztcg48,317
16
- cnhkmcp/untracked/APP/MODULAR_STRUCTURE.md,sha256=Ji4VeRZjeMWRX6cvEHxyR_gmoorIEEdqwsXTCVIr5_0,4331
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=XWKGH1QkMEMNUW9w-V-TlvzivMHG2NAdnp6DfO1gnug,9901
18
+ cnhkmcp/untracked/APP/ace.log,sha256=A2YNM5-LlQeROSkKFV7Xv20K2mfrn6CzwLNKyBGsvSY,10753
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
@@ -26,20 +26,20 @@ cnhkmcp/untracked/APP/run_app.sh,sha256=6uM4Yky-gE6rP-zJgLR36jpI03NFBqNAa-Vgg5cb
26
26
  cnhkmcp/untracked/APP/setup_tsinghua.bat,sha256=9dLWCaQTULf3d2LqiAlvQrA4wuM1dysGh-vIDMfpgvE,1050
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
- cnhkmcp/untracked/APP/usage.md,sha256=2xDoYN5_x2yfMGGDG6cBFuv5_JR_ACF9zlbV8Vx-SUM,15045
30
- cnhkmcp/untracked/APP/运行打开我.py,sha256=6n8LTeHg1nHmO5nOBkDJeSLumlggctCcE3Pm2J0r420,88562
31
- cnhkmcp/untracked/APP/Tranformer/Transformer.py,sha256=trsd7Sn6vnk96F8767SsZKZ5OF5Q3-s_LaKBOqtj4T0,104306
29
+ cnhkmcp/untracked/APP/usage.md,sha256=lPpA6qqAMvVsm41ikbRR1ZWFcuPSgqhMXOUig52eZCI,16164
30
+ cnhkmcp/untracked/APP/运行打开我.py,sha256=BOLKROMUJQPtvbS8kbfEdeLEIG7VX8JEV8WNqS20zL0,97151
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
34
34
  cnhkmcp/untracked/APP/Tranformer/helpful_functions.py,sha256=VS-rh4T2CMWLFK4clI7-DYsnqwO5dx5L-rgL8U8BmT8,6622
35
35
  cnhkmcp/untracked/APP/Tranformer/parsetab.py,sha256=29clH5xFEmKpqzRvrLN89QE8JFJNYFhH-gEFR4y7448,7650
36
- cnhkmcp/untracked/APP/Tranformer/template_summary.txt,sha256=ZQUEbYTx5aPZ5sfevyUVHBvWENZdWP8JMcQMH7HR3Js,27823
36
+ cnhkmcp/untracked/APP/Tranformer/template_summary.txt,sha256=vNuvOWGxLu_JCsR_MkasOQaxuamuOenRKKiiYcfS50s,32616
37
37
  cnhkmcp/untracked/APP/Tranformer/transformer_config.json,sha256=q3Io_1o_BAt-2GNAUKgCs_YR3exkiGFnUqykiPUC1jw,191
38
38
  cnhkmcp/untracked/APP/Tranformer/validator.py,sha256=bvQt55-n2FHkeBA6Ui7tc0oLk_cnriDxt5z-IgaeKZA,50789
39
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json,sha256=eeHKqQWGcH-9QffTf-bxlu4csrhtC0FmkPimyR1vB2I,152383
39
+ cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json,sha256=Xu1FHoLAAPVipNwBhCrEYIteLhV8woe9JBWCG9lENCc,83118
40
40
  cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates_示例.json,sha256=K40tcWPiUKaPnrtMdfsN2BOBG5IzqSz04XT6gRz7FVE,23139
41
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json,sha256=T1PNoYwrqgwDVLtfmj7L5e0Sq02OEbqHPC8RFhICuUU,2
42
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_success.json,sha256=_aPqDRYieeLv_sUSQWcbgFGQc0MozN5Q7On9_1xSO-g,149372
41
+ cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json,sha256=toxymnqyP-Viy9Kg05hNOW5LXqTPhcWNuWbQs3zQp5c,10324
42
+ cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_success.json,sha256=LnNJp3qM3WTCEJo4KKkCyk6VcdPgwcq7qVwimcu0lLs,17892
43
43
  cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_示例可直接载入Machine_lib.json,sha256=RToEIw0zov6csDwW6MfEJyxJEhaw9LvuRD9bz9QDCFY,3200
44
44
  cnhkmcp/untracked/APP/blueprints/__init__.py,sha256=akR6SdIFo637C4Ii7c2-c7asVesJQT_sJ5ICMSRBeOU,216
45
45
  cnhkmcp/untracked/APP/blueprints/feature_engineering.py,sha256=TyLaePibNUJtwEOTun8gVrB6j5QhXbwxwEixBhv15kk,13103
@@ -47,6 +47,11 @@ cnhkmcp/untracked/APP/blueprints/idea_house.py,sha256=P_Pq_kmw2N3YluBOH9e0SwsCsw
47
47
  cnhkmcp/untracked/APP/blueprints/inspiration_house.py,sha256=JsSoKyCfvxh8n0wpRqWxzajc83SwNQ_aVcoBauu9QfM,19002
48
48
  cnhkmcp/untracked/APP/blueprints/paper_analysis.py,sha256=YVtQ22uiY8ZO-B2x4ckoyZ4olDtcxqsJrV0gPDX56A8,22247
49
49
  cnhkmcp/untracked/APP/custom_templates/templates.json,sha256=ARrpRsxGcUpC2iepS6j6A_0tdu_xUJTIyvLDb8uzL_E,48776
50
+ cnhkmcp/untracked/APP/give_me_idea/BRAIN_Alpha_Template_Expert_SystemPrompt.md,sha256=y95Lr8AZ-CQ-axJBDJHixsqR2Ig6nWJhHItKJJU1ZCA,16376
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
53
+ cnhkmcp/untracked/APP/give_me_idea/helpful_functions.py,sha256=VS-rh4T2CMWLFK4clI7-DYsnqwO5dx5L-rgL8U8BmT8,6622
54
+ cnhkmcp/untracked/APP/give_me_idea/what_is_Alpha_template.md,sha256=QjwX0_b0DhhiNlo3ZwkIfXXSsJnk_FyjkZftyVwnCZ8,2317
50
55
  cnhkmcp/untracked/APP/hkSimulator/ace.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
56
  cnhkmcp/untracked/APP/hkSimulator/ace_lib.py,sha256=v5i16oVc7o2ndacm7GPnq_RBc4D1NHgc8fQA2F_Y1oA,52669
52
57
  cnhkmcp/untracked/APP/hkSimulator/autosim_20251205_145240.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -55,10 +60,11 @@ cnhkmcp/untracked/APP/hkSimulator/autosimulator.py,sha256=JmhmboakiDDQetWmn8t0-k
55
60
  cnhkmcp/untracked/APP/hkSimulator/helpful_functions.py,sha256=VS-rh4T2CMWLFK4clI7-DYsnqwO5dx5L-rgL8U8BmT8,6622
56
61
  cnhkmcp/untracked/APP/simulator/alpha_submitter.py,sha256=Wxx7DyFr0VwH709JhxXPj1Jiz8dShaVaYar3HTVMgv4,15652
57
62
  cnhkmcp/untracked/APP/simulator/simulator_wqb.py,sha256=dh3FGBUKZWxTpyJAline1Kh_UJp5we__qcBc8di8ilk,23724
58
- cnhkmcp/untracked/APP/static/brain.js,sha256=crjmY2YOUhd6mgiVzxluiDD0SAuJlGrokuX-TSU1l2c,18383
63
+ cnhkmcp/untracked/APP/static/brain.js,sha256=WSRMZvj1aQUwiI6yG6gfv7xa2SnIRCF0sHEPhwpzews,18819
59
64
  cnhkmcp/untracked/APP/static/decoder.js,sha256=sKyfgsleHvokCMw6Zp-XfcjixkT8cyMvw6ASDhN6b9I,61987
60
65
  cnhkmcp/untracked/APP/static/feature_engineering.js,sha256=X6nis3FmytrNAE8mM-U6-VqmqZMAQ2X59Iy9RmOF5_8,73895
61
66
  cnhkmcp/untracked/APP/static/idea_house.js,sha256=dg6zt1mFr99gONdIDqNN_P3ChPEMzCmnWTF0OW09x9w,34225
67
+ cnhkmcp/untracked/APP/static/inspiration.js,sha256=otAs0-2cJoJqNeql5QtjnbDeDtLOQHRgMwAfVTnZxKs,15969
62
68
  cnhkmcp/untracked/APP/static/inspiration_house.js,sha256=U3L5vyguy10z7Ww-EFz59OlZUDw3KtIK_JyQzXYtdZ4,31795
63
69
  cnhkmcp/untracked/APP/static/paper_analysis.js,sha256=EWD6fTfC6hMLL6IeqDmstP9w6Cezq5607ucUpEpuHkg,16939
64
70
  cnhkmcp/untracked/APP/static/script.js,sha256=uyh3XHlRMC-VUe7mhWMvBlejGd-f_gMgH1kola7PlH8,108925
@@ -68,7 +74,7 @@ cnhkmcp/untracked/APP/static/usage_widget.js,sha256=nbjNFiLSaX2SllDaLrXb6OlqZ2DC
68
74
  cnhkmcp/untracked/APP/templates/alpha_inspector.html,sha256=EY919KDTPw46FBQwQaxwfpx9_CYUet7fkpD03LBGlF8,22226
69
75
  cnhkmcp/untracked/APP/templates/feature_engineering.html,sha256=SA_N46-Q_Oo68clS0-QFvbNW5v40uZPQ8Cmmc44RCP8,38443
70
76
  cnhkmcp/untracked/APP/templates/idea_house.html,sha256=oQV-vdpAi-HPof1nUClYsJALrF0JX5jhgfM3LOecBdM,20553
71
- cnhkmcp/untracked/APP/templates/index.html,sha256=9XdsbRM-YWn9kd5SwonR-jmCUXa53gJ8O2DwcpcXmaE,47238
77
+ cnhkmcp/untracked/APP/templates/index.html,sha256=jNYOUci-IKWA9MyHXou-iUO3N0Sk9H86w7zFeYwqTjQ,57679
72
78
  cnhkmcp/untracked/APP/templates/inspiration_house.html,sha256=oWTEjmR0FEniFvr5NaM7_AThkRNmurKGvoTyINIVDl0,26469
73
79
  cnhkmcp/untracked/APP/templates/paper_analysis.html,sha256=vbDw4MAfmpFoXbef4roX6NKdto_a58RMIRi7Amr2P4M,4220
74
80
  cnhkmcp/untracked/APP/templates/simulator.html,sha256=dPAY-fT7oEDCW945ZLLPSUPoawF-TACnVKiqrGiaWkI,12589
@@ -81,9 +87,9 @@ cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这
81
87
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/user_config.json,sha256=_INn1X1qIsITrmEno-BRlQOAGm9wnNCw-6B333DEvnk,695
82
88
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/让AI读这个文档来学会下载浏览器.md,sha256=v5QPSMjRDh52ZjgC4h8QjImnaqlVRLjTHGxmGjTo36g,3396
83
89
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/配置前运行我_安装必要依赖包.py,sha256=BnUyL5g6PaC62yEuS-8vcDSJ0oKu3k6jqQxi2jginuQ,6612
84
- cnhkmcp-1.8.10.dist-info/licenses/LICENSE,sha256=QLxO2eNMnJQEdI_R1UV2AOD-IvuA8zVrkHWA4D9gtoc,1081
85
- cnhkmcp-1.8.10.dist-info/METADATA,sha256=R8kffKcSeBFyONUaL_z9ndUq8rS7DxPPSQIVd6NyQm8,5172
86
- cnhkmcp-1.8.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
87
- cnhkmcp-1.8.10.dist-info/entry_points.txt,sha256=lTQieVyIvjhSMK4fT-XwnccY-JBC1H4vVQ3V9dDM-Pc,70
88
- cnhkmcp-1.8.10.dist-info/top_level.txt,sha256=x--ibUcSgOS9Z_RWK2Qc-vfs7DaXQN-WMaaxEETJ1Bw,8
89
- cnhkmcp-1.8.10.dist-info/RECORD,,
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,,