cnhkmcp 2.3.6__py3-none-any.whl → 2.3.7__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.
cnhkmcp/__init__.py CHANGED
@@ -50,7 +50,7 @@ from .untracked.forum_functions import (
50
50
  read_full_forum_post
51
51
  )
52
52
 
53
- __version__ = "2.3.6"
53
+ __version__ = "2.3.7"
54
54
  __author__ = "CNHK"
55
55
  __email__ = "cnhk@example.com"
56
56
 
@@ -25,7 +25,8 @@ except ImportError:
25
25
  supported_functions = {
26
26
  # Group 类别函数
27
27
  'group_min': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
28
- 'group_mean': {'min_args': 3, 'max_args': 3, 'arg_types': ['expression', 'expression', 'expression']},
28
+ # group_mean(x, w, group)
29
+ 'group_mean': {'min_args': 3, 'max_args': 3, 'arg_types': ['expression', 'expression', 'category']},
29
30
  'group_median': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
30
31
  'group_max': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
31
32
  'group_rank': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
@@ -715,19 +716,53 @@ class ExpressionValidator:
715
716
  return cached
716
717
 
717
718
  derived = False
718
- if node.node_type == 'function' and node.value in {'bucket', 'group_cartesian_product'}:
719
- derived = True
719
+ if node.node_type == 'function':
720
+ if node.value in {'bucket', 'group_cartesian_product'}:
721
+ derived = True
722
+ else:
723
+ function_info = supported_functions.get(node.value, {})
724
+ arg_types = function_info.get('arg_types', [])
725
+ param_names = function_info.get('param_names', [])
726
+
727
+ positional_index = 0
728
+ for child in node.children:
729
+ if isinstance(child, dict):
730
+ if child.get('type') == 'named':
731
+ name = child.get('name')
732
+ value = child.get('value')
733
+
734
+ expected_type = None
735
+ if name in param_names:
736
+ param_index = param_names.index(name)
737
+ if param_index < len(arg_types):
738
+ expected_type = arg_types[param_index]
739
+
740
+ if expected_type == 'category':
741
+ continue
742
+
743
+ if self._is_derived_category(value):
744
+ derived = True
745
+ break
746
+ elif child.get('type') == 'positional':
747
+ value = child.get('value')
748
+ expected_type = arg_types[positional_index] if positional_index < len(arg_types) else None
749
+
750
+ if expected_type != 'category' and self._is_derived_category(value):
751
+ derived = True
752
+ break
753
+ positional_index += 1
754
+ else:
755
+ expected_type = arg_types[positional_index] if positional_index < len(arg_types) else None
756
+ if expected_type != 'category' and self._is_derived_category(child):
757
+ derived = True
758
+ break
759
+ positional_index += 1
720
760
  elif node.node_type in {'unop', 'binop'}:
721
761
  derived = any(
722
762
  self._is_derived_category(child)
723
763
  for child in node.children
724
764
  if hasattr(child, 'node_type')
725
765
  )
726
- elif node.node_type == 'function':
727
- derived = any(
728
- self._is_derived_category(child.get('value')) if isinstance(child, dict) else self._is_derived_category(child)
729
- for child in node.children
730
- )
731
766
 
732
767
  self._derived_category_cache[cache_key] = derived
733
768
  return derived
@@ -25,7 +25,8 @@ except ImportError:
25
25
  supported_functions = {
26
26
  # Group 类别函数
27
27
  'group_min': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
28
- 'group_mean': {'min_args': 3, 'max_args': 3, 'arg_types': ['expression', 'expression', 'expression']},
28
+ # group_mean(x, w, group)
29
+ 'group_mean': {'min_args': 3, 'max_args': 3, 'arg_types': ['expression', 'expression', 'category']},
29
30
  'group_median': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
30
31
  'group_max': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
31
32
  'group_rank': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
@@ -715,19 +716,53 @@ class ExpressionValidator:
715
716
  return cached
716
717
 
717
718
  derived = False
718
- if node.node_type == 'function' and node.value in {'bucket', 'group_cartesian_product'}:
719
- derived = True
719
+ if node.node_type == 'function':
720
+ if node.value in {'bucket', 'group_cartesian_product'}:
721
+ derived = True
722
+ else:
723
+ function_info = supported_functions.get(node.value, {})
724
+ arg_types = function_info.get('arg_types', [])
725
+ param_names = function_info.get('param_names', [])
726
+
727
+ positional_index = 0
728
+ for child in node.children:
729
+ if isinstance(child, dict):
730
+ if child.get('type') == 'named':
731
+ name = child.get('name')
732
+ value = child.get('value')
733
+
734
+ expected_type = None
735
+ if name in param_names:
736
+ param_index = param_names.index(name)
737
+ if param_index < len(arg_types):
738
+ expected_type = arg_types[param_index]
739
+
740
+ if expected_type == 'category':
741
+ continue
742
+
743
+ if self._is_derived_category(value):
744
+ derived = True
745
+ break
746
+ elif child.get('type') == 'positional':
747
+ value = child.get('value')
748
+ expected_type = arg_types[positional_index] if positional_index < len(arg_types) else None
749
+
750
+ if expected_type != 'category' and self._is_derived_category(value):
751
+ derived = True
752
+ break
753
+ positional_index += 1
754
+ else:
755
+ expected_type = arg_types[positional_index] if positional_index < len(arg_types) else None
756
+ if expected_type != 'category' and self._is_derived_category(child):
757
+ derived = True
758
+ break
759
+ positional_index += 1
720
760
  elif node.node_type in {'unop', 'binop'}:
721
761
  derived = any(
722
762
  self._is_derived_category(child)
723
763
  for child in node.children
724
764
  if hasattr(child, 'node_type')
725
765
  )
726
- elif node.node_type == 'function':
727
- derived = any(
728
- self._is_derived_category(child.get('value')) if isinstance(child, dict) else self._is_derived_category(child)
729
- for child in node.children
730
- )
731
766
 
732
767
  self._derived_category_cache[cache_key] = derived
733
768
  return derived
@@ -25,7 +25,8 @@ except ImportError:
25
25
  supported_functions = {
26
26
  # Group 类别函数
27
27
  'group_min': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
28
- 'group_mean': {'min_args': 3, 'max_args': 3, 'arg_types': ['expression', 'expression', 'expression']},
28
+ # group_mean(x, w, group)
29
+ 'group_mean': {'min_args': 3, 'max_args': 3, 'arg_types': ['expression', 'expression', 'category']},
29
30
  'group_median': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
30
31
  'group_max': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
31
32
  'group_rank': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
@@ -719,19 +720,54 @@ class ExpressionValidator:
719
720
  return cached
720
721
 
721
722
  derived = False
722
- if node.node_type == 'function' and node.value in {'bucket', 'group_cartesian_product'}:
723
- derived = True
723
+ if node.node_type == 'function':
724
+ if node.value in {'bucket', 'group_cartesian_product'}:
725
+ derived = True
726
+ else:
727
+ function_info = supported_functions.get(node.value, {})
728
+ arg_types = function_info.get('arg_types', [])
729
+ param_names = function_info.get('param_names', [])
730
+
731
+ positional_index = 0
732
+ for child in node.children:
733
+ if isinstance(child, dict):
734
+ if child.get('type') == 'named':
735
+ name = child.get('name')
736
+ value = child.get('value')
737
+
738
+ expected_type = None
739
+ if name in param_names:
740
+ param_index = param_names.index(name)
741
+ if param_index < len(arg_types):
742
+ expected_type = arg_types[param_index]
743
+
744
+ # Do not propagate "derived" through allowed category/grouping-key inputs.
745
+ if expected_type == 'category':
746
+ continue
747
+
748
+ if self._is_derived_category(value):
749
+ derived = True
750
+ break
751
+ elif child.get('type') == 'positional':
752
+ value = child.get('value')
753
+ expected_type = arg_types[positional_index] if positional_index < len(arg_types) else None
754
+
755
+ if expected_type != 'category' and self._is_derived_category(value):
756
+ derived = True
757
+ break
758
+ positional_index += 1
759
+ else:
760
+ expected_type = arg_types[positional_index] if positional_index < len(arg_types) else None
761
+ if expected_type != 'category' and self._is_derived_category(child):
762
+ derived = True
763
+ break
764
+ positional_index += 1
724
765
  elif node.node_type in {'unop', 'binop'}:
725
766
  derived = any(
726
767
  self._is_derived_category(child)
727
768
  for child in node.children
728
769
  if hasattr(child, 'node_type')
729
770
  )
730
- elif node.node_type == 'function':
731
- derived = any(
732
- self._is_derived_category(child.get('value')) if isinstance(child, dict) else self._is_derived_category(child)
733
- for child in node.children
734
- )
735
771
 
736
772
  self._derived_category_cache[cache_key] = derived
737
773
  return derived
@@ -25,7 +25,8 @@ except ImportError:
25
25
  supported_functions = {
26
26
  # Group 类别函数
27
27
  'group_min': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
28
- 'group_mean': {'min_args': 3, 'max_args': 3, 'arg_types': ['expression', 'expression', 'expression']},
28
+ # group_mean(x, w, group)
29
+ 'group_mean': {'min_args': 3, 'max_args': 3, 'arg_types': ['expression', 'expression', 'category']},
29
30
  'group_median': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
30
31
  'group_max': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
31
32
  'group_rank': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
@@ -715,19 +716,53 @@ class ExpressionValidator:
715
716
  return cached
716
717
 
717
718
  derived = False
718
- if node.node_type == 'function' and node.value in {'bucket', 'group_cartesian_product'}:
719
- derived = True
719
+ if node.node_type == 'function':
720
+ if node.value in {'bucket', 'group_cartesian_product'}:
721
+ derived = True
722
+ else:
723
+ function_info = supported_functions.get(node.value, {})
724
+ arg_types = function_info.get('arg_types', [])
725
+ param_names = function_info.get('param_names', [])
726
+
727
+ positional_index = 0
728
+ for child in node.children:
729
+ if isinstance(child, dict):
730
+ if child.get('type') == 'named':
731
+ name = child.get('name')
732
+ value = child.get('value')
733
+
734
+ expected_type = None
735
+ if name in param_names:
736
+ param_index = param_names.index(name)
737
+ if param_index < len(arg_types):
738
+ expected_type = arg_types[param_index]
739
+
740
+ if expected_type == 'category':
741
+ continue
742
+
743
+ if self._is_derived_category(value):
744
+ derived = True
745
+ break
746
+ elif child.get('type') == 'positional':
747
+ value = child.get('value')
748
+ expected_type = arg_types[positional_index] if positional_index < len(arg_types) else None
749
+
750
+ if expected_type != 'category' and self._is_derived_category(value):
751
+ derived = True
752
+ break
753
+ positional_index += 1
754
+ else:
755
+ expected_type = arg_types[positional_index] if positional_index < len(arg_types) else None
756
+ if expected_type != 'category' and self._is_derived_category(child):
757
+ derived = True
758
+ break
759
+ positional_index += 1
720
760
  elif node.node_type in {'unop', 'binop'}:
721
761
  derived = any(
722
762
  self._is_derived_category(child)
723
763
  for child in node.children
724
764
  if hasattr(child, 'node_type')
725
765
  )
726
- elif node.node_type == 'function':
727
- derived = any(
728
- self._is_derived_category(child.get('value')) if isinstance(child, dict) else self._is_derived_category(child)
729
- for child in node.children
730
- )
731
766
 
732
767
  self._derived_category_cache[cache_key] = derived
733
768
  return derived
@@ -25,7 +25,8 @@ except ImportError:
25
25
  supported_functions = {
26
26
  # Group 类别函数
27
27
  'group_min': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
28
- 'group_mean': {'min_args': 3, 'max_args': 3, 'arg_types': ['expression', 'expression', 'expression']},
28
+ # group_mean(x, w, group)
29
+ 'group_mean': {'min_args': 3, 'max_args': 3, 'arg_types': ['expression', 'expression', 'category']},
29
30
  'group_median': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
30
31
  'group_max': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
31
32
  'group_rank': {'min_args': 2, 'max_args': 2, 'arg_types': ['expression', 'category']},
@@ -719,19 +720,53 @@ class ExpressionValidator:
719
720
  return cached
720
721
 
721
722
  derived = False
722
- if node.node_type == 'function' and node.value in {'bucket', 'group_cartesian_product'}:
723
- derived = True
723
+ if node.node_type == 'function':
724
+ if node.value in {'bucket', 'group_cartesian_product'}:
725
+ derived = True
726
+ else:
727
+ function_info = supported_functions.get(node.value, {})
728
+ arg_types = function_info.get('arg_types', [])
729
+ param_names = function_info.get('param_names', [])
730
+
731
+ positional_index = 0
732
+ for child in node.children:
733
+ if isinstance(child, dict):
734
+ if child.get('type') == 'named':
735
+ name = child.get('name')
736
+ value = child.get('value')
737
+
738
+ expected_type = None
739
+ if name in param_names:
740
+ param_index = param_names.index(name)
741
+ if param_index < len(arg_types):
742
+ expected_type = arg_types[param_index]
743
+
744
+ if expected_type == 'category':
745
+ continue
746
+
747
+ if self._is_derived_category(value):
748
+ derived = True
749
+ break
750
+ elif child.get('type') == 'positional':
751
+ value = child.get('value')
752
+ expected_type = arg_types[positional_index] if positional_index < len(arg_types) else None
753
+
754
+ if expected_type != 'category' and self._is_derived_category(value):
755
+ derived = True
756
+ break
757
+ positional_index += 1
758
+ else:
759
+ expected_type = arg_types[positional_index] if positional_index < len(arg_types) else None
760
+ if expected_type != 'category' and self._is_derived_category(child):
761
+ derived = True
762
+ break
763
+ positional_index += 1
724
764
  elif node.node_type in {'unop', 'binop'}:
725
765
  derived = any(
726
766
  self._is_derived_category(child)
727
767
  for child in node.children
728
768
  if hasattr(child, 'node_type')
729
769
  )
730
- elif node.node_type == 'function':
731
- derived = any(
732
- self._is_derived_category(child.get('value')) if isinstance(child, dict) else self._is_derived_category(child)
733
- for child in node.children
734
- )
735
770
 
736
771
  self._derived_category_cache[cache_key] = derived
737
772
  return derived
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cnhkmcp
3
- Version: 2.3.6
3
+ Version: 2.3.7
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
@@ -1,4 +1,4 @@
1
- cnhkmcp/__init__.py,sha256=3YBWs3EiathoM6CRZs6QtLOmtiaY0hg33gTKG3_Sodg,2759
1
+ cnhkmcp/__init__.py,sha256=13ULgeeyONpZWNtJMNnbw8quqeWiTEvC7Jx3rxgy4Gk,2759
2
2
  cnhkmcp/untracked/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  cnhkmcp/untracked/arXiv_API_Tool_Manual.md,sha256=I3hvI5mpmIjBuWptufoVSWFnuhyUc67oCGHEuR0p_xs,13552
4
4
  cnhkmcp/untracked/arxiv_api.py,sha256=ka2TCUMNdPFSsqgsDxZyLoIXCKaiX9OKuAx6IMEjCdI,9300
@@ -15,7 +15,6 @@ cnhkmcp/untracked/示例工作流_Dataset_Exploration_Expert_Manual.md,sha256=-C
15
15
  cnhkmcp/untracked/示例工作流_daily_report_workflow.md,sha256=6aNmPqWRn09XdQMRxoVTka9IYVOUv5LcWparHu16EfQ,9460
16
16
  cnhkmcp/untracked/配置前运行我_安装必要依赖包.py,sha256=UPR3gt5H2kBiM6_Ez4KTcvn2yfukNCGfO1riVB9oK18,7298
17
17
  cnhkmcp/untracked/AI打工人/BRAIN_AI打工人Mac_Linux版本.zip,sha256=0IDtotaSZG62BWNsHSGfC5XCYuCPbGlEdKZiNvrZ0hY,36723
18
- cnhkmcp/untracked/AI打工人/双击安装AI打工人_Windows版本.exe,sha256=waPCNNXrp9lTmohRhuKFBWsvTiYfTAVxqzTJfVAdsck,11243157
19
18
  cnhkmcp/untracked/AI桌面插件/README.md,sha256=9Iu_XFpK0MyAtnGOxo3BxEo9ibEOSBkPvW9IuTrDPmw,1234
20
19
  cnhkmcp/untracked/AI桌面插件/ace.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
20
  cnhkmcp/untracked/AI桌面插件/config.json,sha256=tMF0TRyfQah749dIGkpY9dVfGygQ3YU384Vw-Kv5EDk,1984
@@ -132,7 +131,7 @@ cnhkmcp/untracked/APP/Tranformer/helpful_functions.py,sha256=Jc8gclRkvGx7el0XgTm
132
131
  cnhkmcp/untracked/APP/Tranformer/parsetab.py,sha256=L_XJWx4AmYWASQ-krdrcyu7cEFbRdKS5MWppZ0Qfjlo,7650
133
132
  cnhkmcp/untracked/APP/Tranformer/template_summary.txt,sha256=gWz5LFlPtOmw0JnLj68hgWsoSFNyA18uCJWIYWHLbe8,111054
134
133
  cnhkmcp/untracked/APP/Tranformer/transformer_config.json,sha256=ene-WntIVbcoN3_H1ztlwtZK6eadSXCfqs1SSgrGAIg,179
135
- cnhkmcp/untracked/APP/Tranformer/validator.py,sha256=QLqu-VUkoiaFQLcy3JsvpDoQaaLRq33-0un-7HknmQs,60344
134
+ cnhkmcp/untracked/APP/Tranformer/validator.py,sha256=lDFLTDWzSnW4h1QJnYjWq12jPjFYxUDGMYrjQL9dVyM,62077
136
135
  cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json,sha256=vMw3zhzcwARGm92ykdGTeYTsrCje_RHt0sWv17R0qUs,368947
137
136
  cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates_示例.json,sha256=K40tcWPiUKaPnrtMdfsN2BOBG5IzqSz04XT6gRz7FVE,23139
138
137
  cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json,sha256=T1PNoYwrqgwDVLtfmj7L5e0Sq02OEbqHPC8RFhICuUU,2
@@ -144,7 +143,7 @@ cnhkmcp/untracked/APP/blueprints/idea_house.py,sha256=P_Pq_kmw2N3YluBOH9e0SwsCsw
144
143
  cnhkmcp/untracked/APP/blueprints/inspiration_house.py,sha256=Zras66ksS3WRUnRcxKNaon2sHFeoZwdlY3K54sgcCyQ,18994
145
144
  cnhkmcp/untracked/APP/blueprints/paper_analysis.py,sha256=tYGh-A1pzvSw6ZzoMKyIJBysbX8xsdBZncWw8ZGKyVQ,22241
146
145
  cnhkmcp/untracked/APP/blueprints/parsetab.py,sha256=qJJR3QDtcqoBafLaIvvTiILY0REfP5VevvesWveEg1A,7650
147
- cnhkmcp/untracked/APP/blueprints/validator.py,sha256=QLqu-VUkoiaFQLcy3JsvpDoQaaLRq33-0un-7HknmQs,60344
146
+ cnhkmcp/untracked/APP/blueprints/validator.py,sha256=lDFLTDWzSnW4h1QJnYjWq12jPjFYxUDGMYrjQL9dVyM,62077
148
147
  cnhkmcp/untracked/APP/custom_templates/templates.json,sha256=ARrpRsxGcUpC2iepS6j6A_0tdu_xUJTIyvLDb8uzL_E,48776
149
148
  cnhkmcp/untracked/APP/give_me_idea/BRAIN_Alpha_Template_Expert_SystemPrompt.md,sha256=vZZFH7_h1PXQIYRA5eFPqJDJflsfVFFFzDjm8bNjZPc,15401
150
149
  cnhkmcp/untracked/APP/give_me_idea/ace_lib.py,sha256=nSnmM5zfI6lxIln1vctz7TCwjAWcljVXITy7R4gS3Q0,53947
@@ -292,7 +291,7 @@ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/script
292
291
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/implement_idea.py,sha256=8nAyiFE0X6pcGQwZ4m-S9ph7lPSAGzzX7VLKBucBfZ8,8181
293
292
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/merge_expression_list.py,sha256=4NzMqgwdLUx0baVm3CNRBlr17mtdnUzUdi3Depui8pc,3362
294
293
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/parsetab.py,sha256=29clH5xFEmKpqzRvrLN89QE8JFJNYFhH-gEFR4y7448,7650
295
- cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/validator.py,sha256=O0vXoCxkjYEZQ8KDcoorizk_mxO5m9W_yO4jQDGptcc,60812
294
+ cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/validator.py,sha256=q6zpapSaZwRosCo5D0bumsqkr5dj0nKveNdjekLFJkY,62649
296
295
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/template_final_enhance/op总结.md,sha256=HDc8lhGdMst2QgFCqD5fJWvDZ3w1S2DEk0bMsHziflA,20562
297
296
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/template_final_enhance/sample_prompt.md,sha256=vf6Ps-hzIH-MRf-cv0Dyro7StdTJ-v6RAjHCXkpRwLE,6217
298
297
  cnhkmcp/untracked/APP/trailSomeAlphas/skills/template_final_enhance/单因子思考逻辑链.md,sha256=2IfV6lOKYwoZIlN1tjXjOezJn9pQxX4K3iPmnZh01gA,13232
@@ -309,7 +308,7 @@ cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这
309
308
  cnhkmcp/untracked/skills/Claude_Skill_Creation_Guide.md,sha256=Wx4w8deBkuw0UcSwzNNQdRIuCqDXGk3-fRQBWcPQivw,5025
310
309
  cnhkmcp/untracked/skills/alpha-expression-verifier/SKILL.md,sha256=7oGzMIXUJzDCtbxND6QWmh6azkLqoFJNURIh-F-aPUQ,2213
311
310
  cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/parsetab.py,sha256=L_XJWx4AmYWASQ-krdrcyu7cEFbRdKS5MWppZ0Qfjlo,7650
312
- cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/validator.py,sha256=QLqu-VUkoiaFQLcy3JsvpDoQaaLRq33-0un-7HknmQs,60344
311
+ cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/validator.py,sha256=lDFLTDWzSnW4h1QJnYjWq12jPjFYxUDGMYrjQL9dVyM,62077
313
312
  cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/verify_expr.py,sha256=zDSlYf0XlkyML-fcL4wld445RMbztt4pDSP5b6W6JKQ,1659
314
313
  cnhkmcp/untracked/skills/brain-calculate-alpha-selfcorrQuick/SKILL.md,sha256=UKQhfHPOH8_YXnRotzXuG8BrgFeXhQoxAZIEeaQxGds,1183
315
314
  cnhkmcp/untracked/skills/brain-calculate-alpha-selfcorrQuick/reference.md,sha256=ws9oUgtEdK7aVjw6sNoVzFQ3gyoX5UIlyz3wItI0fxI,3115
@@ -381,7 +380,7 @@ cnhkmcp/untracked/skills/brain-inspectRawTemplate-create-Setting/scripts/parse_i
381
380
  cnhkmcp/untracked/skills/brain-inspectRawTemplate-create-Setting/scripts/parsetab.py,sha256=JvZ5WdYXoDafh4tSl2nw0rzhCCIdA4T_UXabMl9gkYg,7650
382
381
  cnhkmcp/untracked/skills/brain-inspectRawTemplate-create-Setting/scripts/process_template.py,sha256=AbNB9IniG4JuZK8V9xJkOlvvafs8FNkGjMqVKLCL0RM,3627
383
382
  cnhkmcp/untracked/skills/brain-inspectRawTemplate-create-Setting/scripts/resolve_settings.py,sha256=wdhmkHEvIX4OaLTwLbERXUU8RFmL7ezW4YTJXbEs4Fs,2928
384
- cnhkmcp/untracked/skills/brain-inspectRawTemplate-create-Setting/scripts/validator.py,sha256=O0vXoCxkjYEZQ8KDcoorizk_mxO5m9W_yO4jQDGptcc,60812
383
+ cnhkmcp/untracked/skills/brain-inspectRawTemplate-create-Setting/scripts/validator.py,sha256=_OJTcDyO7XVgO0_icUEdUzMHTXkh9V7OWqJVWGYwtqs,62545
385
384
  cnhkmcp/untracked/skills/brain-nextMove-analysis/SKILL.md,sha256=MGmM3HHYTdzxLE6uOxs9mB4i3At4JGjJYzsbzQKTjgc,1685
386
385
  cnhkmcp/untracked/skills/brain-nextMove-analysis/reference.md,sha256=6aNmPqWRn09XdQMRxoVTka9IYVOUv5LcWparHu16EfQ,9460
387
386
  cnhkmcp/untracked/skills/planning-with-files/SKILL.md,sha256=WORMds3daIxA7qRTamVcTSiySAzXvkHlzONC1Kv6ato,6686
@@ -396,9 +395,9 @@ cnhkmcp/untracked/skills/pull_BRAINSkill/SKILL.md,sha256=QyXQ0wr9LeZyKqkvSTto72b
396
395
  cnhkmcp/untracked/skills/pull_BRAINSkill/scripts/pull_skills.py,sha256=6v3Z3cc9_qKvBj7C6y2jWY1pAd76SA3JmiVj_KkZkmw,6341
397
396
  cnhkmcp/vector_db/_manifest.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
398
397
  cnhkmcp/vector_db/_meta.json,sha256=xQwhRA0prLtwFAMAGR1ZgCR76jVEFIEfF-1SNPpTMgI,91
399
- cnhkmcp-2.3.6.dist-info/licenses/LICENSE,sha256=QLxO2eNMnJQEdI_R1UV2AOD-IvuA8zVrkHWA4D9gtoc,1081
400
- cnhkmcp-2.3.6.dist-info/METADATA,sha256=tQ0xPS0gtu2uUlcG8Mug_s9aPv7OslGUidG_f-mfh78,5171
401
- cnhkmcp-2.3.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
402
- cnhkmcp-2.3.6.dist-info/entry_points.txt,sha256=lTQieVyIvjhSMK4fT-XwnccY-JBC1H4vVQ3V9dDM-Pc,70
403
- cnhkmcp-2.3.6.dist-info/top_level.txt,sha256=x--ibUcSgOS9Z_RWK2Qc-vfs7DaXQN-WMaaxEETJ1Bw,8
404
- cnhkmcp-2.3.6.dist-info/RECORD,,
398
+ cnhkmcp-2.3.7.dist-info/licenses/LICENSE,sha256=QLxO2eNMnJQEdI_R1UV2AOD-IvuA8zVrkHWA4D9gtoc,1081
399
+ cnhkmcp-2.3.7.dist-info/METADATA,sha256=QJtvYs51Cvz14j2Bro0cgzmT6LerISsgNTDPeOQbrcw,5171
400
+ cnhkmcp-2.3.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
401
+ cnhkmcp-2.3.7.dist-info/entry_points.txt,sha256=lTQieVyIvjhSMK4fT-XwnccY-JBC1H4vVQ3V9dDM-Pc,70
402
+ cnhkmcp-2.3.7.dist-info/top_level.txt,sha256=x--ibUcSgOS9Z_RWK2Qc-vfs7DaXQN-WMaaxEETJ1Bw,8
403
+ cnhkmcp-2.3.7.dist-info/RECORD,,