kweaver-dolphin 0.1.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 (199) hide show
  1. DolphinLanguageSDK/__init__.py +58 -0
  2. dolphin/__init__.py +62 -0
  3. dolphin/cli/__init__.py +20 -0
  4. dolphin/cli/args/__init__.py +9 -0
  5. dolphin/cli/args/parser.py +567 -0
  6. dolphin/cli/builtin_agents/__init__.py +22 -0
  7. dolphin/cli/commands/__init__.py +4 -0
  8. dolphin/cli/interrupt/__init__.py +8 -0
  9. dolphin/cli/interrupt/handler.py +205 -0
  10. dolphin/cli/interrupt/keyboard.py +82 -0
  11. dolphin/cli/main.py +49 -0
  12. dolphin/cli/multimodal/__init__.py +34 -0
  13. dolphin/cli/multimodal/clipboard.py +327 -0
  14. dolphin/cli/multimodal/handler.py +249 -0
  15. dolphin/cli/multimodal/image_processor.py +214 -0
  16. dolphin/cli/multimodal/input_parser.py +149 -0
  17. dolphin/cli/runner/__init__.py +8 -0
  18. dolphin/cli/runner/runner.py +989 -0
  19. dolphin/cli/ui/__init__.py +10 -0
  20. dolphin/cli/ui/console.py +2795 -0
  21. dolphin/cli/ui/input.py +340 -0
  22. dolphin/cli/ui/layout.py +425 -0
  23. dolphin/cli/ui/stream_renderer.py +302 -0
  24. dolphin/cli/utils/__init__.py +8 -0
  25. dolphin/cli/utils/helpers.py +135 -0
  26. dolphin/cli/utils/version.py +49 -0
  27. dolphin/core/__init__.py +107 -0
  28. dolphin/core/agent/__init__.py +10 -0
  29. dolphin/core/agent/agent_state.py +69 -0
  30. dolphin/core/agent/base_agent.py +970 -0
  31. dolphin/core/code_block/__init__.py +0 -0
  32. dolphin/core/code_block/agent_init_block.py +0 -0
  33. dolphin/core/code_block/assign_block.py +98 -0
  34. dolphin/core/code_block/basic_code_block.py +1865 -0
  35. dolphin/core/code_block/explore_block.py +1327 -0
  36. dolphin/core/code_block/explore_block_v2.py +712 -0
  37. dolphin/core/code_block/explore_strategy.py +672 -0
  38. dolphin/core/code_block/judge_block.py +220 -0
  39. dolphin/core/code_block/prompt_block.py +32 -0
  40. dolphin/core/code_block/skill_call_deduplicator.py +291 -0
  41. dolphin/core/code_block/tool_block.py +129 -0
  42. dolphin/core/common/__init__.py +17 -0
  43. dolphin/core/common/constants.py +176 -0
  44. dolphin/core/common/enums.py +1173 -0
  45. dolphin/core/common/exceptions.py +133 -0
  46. dolphin/core/common/multimodal.py +539 -0
  47. dolphin/core/common/object_type.py +165 -0
  48. dolphin/core/common/output_format.py +432 -0
  49. dolphin/core/common/types.py +36 -0
  50. dolphin/core/config/__init__.py +16 -0
  51. dolphin/core/config/global_config.py +1289 -0
  52. dolphin/core/config/ontology_config.py +133 -0
  53. dolphin/core/context/__init__.py +12 -0
  54. dolphin/core/context/context.py +1580 -0
  55. dolphin/core/context/context_manager.py +161 -0
  56. dolphin/core/context/var_output.py +82 -0
  57. dolphin/core/context/variable_pool.py +356 -0
  58. dolphin/core/context_engineer/__init__.py +41 -0
  59. dolphin/core/context_engineer/config/__init__.py +5 -0
  60. dolphin/core/context_engineer/config/settings.py +402 -0
  61. dolphin/core/context_engineer/core/__init__.py +7 -0
  62. dolphin/core/context_engineer/core/budget_manager.py +327 -0
  63. dolphin/core/context_engineer/core/context_assembler.py +583 -0
  64. dolphin/core/context_engineer/core/context_manager.py +637 -0
  65. dolphin/core/context_engineer/core/tokenizer_service.py +260 -0
  66. dolphin/core/context_engineer/example/incremental_example.py +267 -0
  67. dolphin/core/context_engineer/example/traditional_example.py +334 -0
  68. dolphin/core/context_engineer/services/__init__.py +5 -0
  69. dolphin/core/context_engineer/services/compressor.py +399 -0
  70. dolphin/core/context_engineer/utils/__init__.py +6 -0
  71. dolphin/core/context_engineer/utils/context_utils.py +441 -0
  72. dolphin/core/context_engineer/utils/message_formatter.py +270 -0
  73. dolphin/core/context_engineer/utils/token_utils.py +139 -0
  74. dolphin/core/coroutine/__init__.py +15 -0
  75. dolphin/core/coroutine/context_snapshot.py +154 -0
  76. dolphin/core/coroutine/context_snapshot_profile.py +922 -0
  77. dolphin/core/coroutine/context_snapshot_store.py +268 -0
  78. dolphin/core/coroutine/execution_frame.py +145 -0
  79. dolphin/core/coroutine/execution_state_registry.py +161 -0
  80. dolphin/core/coroutine/resume_handle.py +101 -0
  81. dolphin/core/coroutine/step_result.py +101 -0
  82. dolphin/core/executor/__init__.py +18 -0
  83. dolphin/core/executor/debug_controller.py +630 -0
  84. dolphin/core/executor/dolphin_executor.py +1063 -0
  85. dolphin/core/executor/executor.py +624 -0
  86. dolphin/core/flags/__init__.py +27 -0
  87. dolphin/core/flags/definitions.py +49 -0
  88. dolphin/core/flags/manager.py +113 -0
  89. dolphin/core/hook/__init__.py +95 -0
  90. dolphin/core/hook/expression_evaluator.py +499 -0
  91. dolphin/core/hook/hook_dispatcher.py +380 -0
  92. dolphin/core/hook/hook_types.py +248 -0
  93. dolphin/core/hook/isolated_variable_pool.py +284 -0
  94. dolphin/core/interfaces.py +53 -0
  95. dolphin/core/llm/__init__.py +0 -0
  96. dolphin/core/llm/llm.py +495 -0
  97. dolphin/core/llm/llm_call.py +100 -0
  98. dolphin/core/llm/llm_client.py +1285 -0
  99. dolphin/core/llm/message_sanitizer.py +120 -0
  100. dolphin/core/logging/__init__.py +20 -0
  101. dolphin/core/logging/logger.py +526 -0
  102. dolphin/core/message/__init__.py +8 -0
  103. dolphin/core/message/compressor.py +749 -0
  104. dolphin/core/parser/__init__.py +8 -0
  105. dolphin/core/parser/parser.py +405 -0
  106. dolphin/core/runtime/__init__.py +10 -0
  107. dolphin/core/runtime/runtime_graph.py +926 -0
  108. dolphin/core/runtime/runtime_instance.py +446 -0
  109. dolphin/core/skill/__init__.py +14 -0
  110. dolphin/core/skill/context_retention.py +157 -0
  111. dolphin/core/skill/skill_function.py +686 -0
  112. dolphin/core/skill/skill_matcher.py +282 -0
  113. dolphin/core/skill/skillkit.py +700 -0
  114. dolphin/core/skill/skillset.py +72 -0
  115. dolphin/core/trajectory/__init__.py +10 -0
  116. dolphin/core/trajectory/recorder.py +189 -0
  117. dolphin/core/trajectory/trajectory.py +522 -0
  118. dolphin/core/utils/__init__.py +9 -0
  119. dolphin/core/utils/cache_kv.py +212 -0
  120. dolphin/core/utils/tools.py +340 -0
  121. dolphin/lib/__init__.py +93 -0
  122. dolphin/lib/debug/__init__.py +8 -0
  123. dolphin/lib/debug/visualizer.py +409 -0
  124. dolphin/lib/memory/__init__.py +28 -0
  125. dolphin/lib/memory/async_processor.py +220 -0
  126. dolphin/lib/memory/llm_calls.py +195 -0
  127. dolphin/lib/memory/manager.py +78 -0
  128. dolphin/lib/memory/sandbox.py +46 -0
  129. dolphin/lib/memory/storage.py +245 -0
  130. dolphin/lib/memory/utils.py +51 -0
  131. dolphin/lib/ontology/__init__.py +12 -0
  132. dolphin/lib/ontology/basic/__init__.py +0 -0
  133. dolphin/lib/ontology/basic/base.py +102 -0
  134. dolphin/lib/ontology/basic/concept.py +130 -0
  135. dolphin/lib/ontology/basic/object.py +11 -0
  136. dolphin/lib/ontology/basic/relation.py +63 -0
  137. dolphin/lib/ontology/datasource/__init__.py +27 -0
  138. dolphin/lib/ontology/datasource/datasource.py +66 -0
  139. dolphin/lib/ontology/datasource/oracle_datasource.py +338 -0
  140. dolphin/lib/ontology/datasource/sql.py +845 -0
  141. dolphin/lib/ontology/mapping.py +177 -0
  142. dolphin/lib/ontology/ontology.py +733 -0
  143. dolphin/lib/ontology/ontology_context.py +16 -0
  144. dolphin/lib/ontology/ontology_manager.py +107 -0
  145. dolphin/lib/skill_results/__init__.py +31 -0
  146. dolphin/lib/skill_results/cache_backend.py +559 -0
  147. dolphin/lib/skill_results/result_processor.py +181 -0
  148. dolphin/lib/skill_results/result_reference.py +179 -0
  149. dolphin/lib/skill_results/skillkit_hook.py +324 -0
  150. dolphin/lib/skill_results/strategies.py +328 -0
  151. dolphin/lib/skill_results/strategy_registry.py +150 -0
  152. dolphin/lib/skillkits/__init__.py +44 -0
  153. dolphin/lib/skillkits/agent_skillkit.py +155 -0
  154. dolphin/lib/skillkits/cognitive_skillkit.py +82 -0
  155. dolphin/lib/skillkits/env_skillkit.py +250 -0
  156. dolphin/lib/skillkits/mcp_adapter.py +616 -0
  157. dolphin/lib/skillkits/mcp_skillkit.py +771 -0
  158. dolphin/lib/skillkits/memory_skillkit.py +650 -0
  159. dolphin/lib/skillkits/noop_skillkit.py +31 -0
  160. dolphin/lib/skillkits/ontology_skillkit.py +89 -0
  161. dolphin/lib/skillkits/plan_act_skillkit.py +452 -0
  162. dolphin/lib/skillkits/resource/__init__.py +52 -0
  163. dolphin/lib/skillkits/resource/models/__init__.py +6 -0
  164. dolphin/lib/skillkits/resource/models/skill_config.py +109 -0
  165. dolphin/lib/skillkits/resource/models/skill_meta.py +127 -0
  166. dolphin/lib/skillkits/resource/resource_skillkit.py +393 -0
  167. dolphin/lib/skillkits/resource/skill_cache.py +215 -0
  168. dolphin/lib/skillkits/resource/skill_loader.py +395 -0
  169. dolphin/lib/skillkits/resource/skill_validator.py +406 -0
  170. dolphin/lib/skillkits/resource_skillkit.py +11 -0
  171. dolphin/lib/skillkits/search_skillkit.py +163 -0
  172. dolphin/lib/skillkits/sql_skillkit.py +274 -0
  173. dolphin/lib/skillkits/system_skillkit.py +509 -0
  174. dolphin/lib/skillkits/vm_skillkit.py +65 -0
  175. dolphin/lib/utils/__init__.py +9 -0
  176. dolphin/lib/utils/data_process.py +207 -0
  177. dolphin/lib/utils/handle_progress.py +178 -0
  178. dolphin/lib/utils/security.py +139 -0
  179. dolphin/lib/utils/text_retrieval.py +462 -0
  180. dolphin/lib/vm/__init__.py +11 -0
  181. dolphin/lib/vm/env_executor.py +895 -0
  182. dolphin/lib/vm/python_session_manager.py +453 -0
  183. dolphin/lib/vm/vm.py +610 -0
  184. dolphin/sdk/__init__.py +60 -0
  185. dolphin/sdk/agent/__init__.py +12 -0
  186. dolphin/sdk/agent/agent_factory.py +236 -0
  187. dolphin/sdk/agent/dolphin_agent.py +1106 -0
  188. dolphin/sdk/api/__init__.py +4 -0
  189. dolphin/sdk/runtime/__init__.py +8 -0
  190. dolphin/sdk/runtime/env.py +363 -0
  191. dolphin/sdk/skill/__init__.py +10 -0
  192. dolphin/sdk/skill/global_skills.py +706 -0
  193. dolphin/sdk/skill/traditional_toolkit.py +260 -0
  194. kweaver_dolphin-0.1.0.dist-info/METADATA +521 -0
  195. kweaver_dolphin-0.1.0.dist-info/RECORD +199 -0
  196. kweaver_dolphin-0.1.0.dist-info/WHEEL +5 -0
  197. kweaver_dolphin-0.1.0.dist-info/entry_points.txt +27 -0
  198. kweaver_dolphin-0.1.0.dist-info/licenses/LICENSE.txt +201 -0
  199. kweaver_dolphin-0.1.0.dist-info/top_level.txt +2 -0
@@ -0,0 +1,177 @@
1
+ from typing import Dict, Any, Set, Optional, Iterator, Tuple
2
+
3
+
4
+ class Mapping:
5
+ """Define the mapping relationship from data source fields to Concept members
6
+
7
+ This class maintains a bidirectional mapping relationship between data source fields and concept members,
8
+ and provides functions for validation, querying, and conversion.
9
+ """
10
+
11
+ def __init__(
12
+ self,
13
+ dataSource: "DataSource",
14
+ space: str,
15
+ concept: "Concept",
16
+ fieldToMemberMap: Dict[str, str],
17
+ ):
18
+ """Initialize Mapping
19
+
20
+ Args:
21
+ dataSource (DataSource): The associated data source instance
22
+ space (str): The associated data source space
23
+ concept (Concept): The associated Concept instance
24
+ fieldToMemberMap (Dict[str, str]): Mapping from data source field names to Concept member names
25
+ For example: {'column_name': 'memberName', 'another_col': 'otherMember'}
26
+
27
+ Raises:
28
+ TypeError: If parameter types are incorrect
29
+ ValueError: If the mapping relationship is invalid
30
+ """
31
+ # Imports go here to ensure type checking works, but avoid top-level circular imports.
32
+ from dolphin.lib.ontology.basic.concept import Concept
33
+ from dolphin.lib.ontology.datasource.datasource import DataSource
34
+
35
+ if not isinstance(dataSource, DataSource):
36
+ raise TypeError("dataSource 必须是 DataSource 的实例")
37
+ if not isinstance(concept, Concept):
38
+ raise TypeError("concept 必须是 Concept 的实例")
39
+ if not isinstance(fieldToMemberMap, dict):
40
+ raise TypeError("fieldToMemberMap 必须是一个字典")
41
+ if not fieldToMemberMap:
42
+ raise ValueError("fieldToMemberMap 不能为空")
43
+
44
+ # Verify whether the members of the mapping exist in Concept
45
+ mappedMembers = set(fieldToMemberMap.values())
46
+ conceptMembers = set(concept.members.keys())
47
+ if not mappedMembers.issubset(conceptMembers):
48
+ unknownMembers = mappedMembers - conceptMembers
49
+ raise ValueError(
50
+ f"映射包含未在 Concept '{concept.name}' 中定义的成员: {unknownMembers}"
51
+ )
52
+
53
+ # Verify the uniqueness of field names
54
+ if len(set(fieldToMemberMap.keys())) != len(fieldToMemberMap):
55
+ raise ValueError("字段名映射存在重复")
56
+
57
+ # Verify the uniqueness of member names (optional, depending on whether multiple fields are allowed to map to the same member)
58
+ if len(set(fieldToMemberMap.values())) != len(fieldToMemberMap):
59
+ raise ValueError("成员名映射存在重复,每个字段必须映射到唯一的成员")
60
+
61
+ self.dataSource = dataSource
62
+ self.space = space
63
+ self.concept = concept
64
+ concept.addMapping(self)
65
+
66
+ self.fieldToMemberMap = fieldToMemberMap
67
+
68
+ self.dataSourceSchema = None
69
+
70
+ # Build a reverse mapping for fast lookup
71
+ self._memberToFieldMap = {
72
+ member: field for field, member in fieldToMemberMap.items()
73
+ }
74
+
75
+ def __repr__(self) -> str:
76
+ return (
77
+ f"Mapping(dataSource='{self.dataSource.name}', "
78
+ f"space='{self.space}', "
79
+ f"concept='{self.concept.name}', "
80
+ f"map={self.fieldToMemberMap})"
81
+ )
82
+
83
+ def getMemberForField(self, fieldName: str) -> Optional[str]:
84
+ """Get the corresponding Concept member name from the data source field name
85
+
86
+ Args:
87
+ fieldName (str): The field name of the data source
88
+
89
+ Returns:
90
+ Optional[str]: The corresponding member name, or None if it does not exist
91
+ """
92
+ return self.fieldToMemberMap.get(fieldName)
93
+
94
+ def getFieldForMember(self, memberName: str) -> Optional[str]:
95
+ """Get the corresponding data source field name based on the Concept member name
96
+
97
+ Args:
98
+ memberName (str): The concept member name
99
+
100
+ Returns:
101
+ Optional[str]: The corresponding field name, or None if it does not exist
102
+ """
103
+ return self._memberToFieldMap.get(memberName)
104
+
105
+ def getAllMappings(self) -> Iterator[Tuple[str, str]]:
106
+ """Get the mapping relationship from all fields to members.
107
+
108
+ Returns:
109
+ Iterator[Tuple[str, str]]: An iterator of (field_name, member_name) tuples
110
+ """
111
+ return iter(self.fieldToMemberMap.items())
112
+
113
+ def getUnmappedMembers(self) -> Set[str]:
114
+ """Get unmapped concept members
115
+
116
+ Returns:
117
+ Set[str]: Set of unmapped concept member names
118
+ """
119
+ return set(self.concept.members.keys()) - set(self.fieldToMemberMap.values())
120
+
121
+ def getDataSourceSchema(self) -> Dict[str, Any]:
122
+ """Get the schema of the data source"""
123
+ if self.dataSourceSchema:
124
+ return self.dataSourceSchema
125
+
126
+ schema = {}
127
+ dataSourceSchema = self.dataSource.get_schema()
128
+ for field, member in self.fieldToMemberMap.items():
129
+ schemaPerSpace = dataSourceSchema[self.space]
130
+ for singleSchema in schemaPerSpace:
131
+ if singleSchema["name"] == field:
132
+ schema[field] = singleSchema["type"]
133
+ break
134
+ self.dataSourceSchema = schema
135
+ return schema
136
+
137
+ def validateFieldValue(self, fieldName: str, value: Any) -> bool:
138
+ """Validate whether the field value meets the type requirements of the corresponding member
139
+
140
+ Args:
141
+ fieldName (str): Name of the data source field
142
+ value (Any): The value to be validated
143
+
144
+ Returns:
145
+ bool: Returns True if the value meets the type requirements
146
+
147
+ Raises:
148
+ KeyError: If the field name does not exist
149
+ """
150
+ memberName = self.getMemberForField(fieldName)
151
+ if memberName is None:
152
+ raise KeyError(f"字段 '{fieldName}' 未在映射中定义")
153
+ return self.concept.validateMemberValue(memberName, value)
154
+
155
+ def transformFieldValues(self, fieldValues: Dict[str, Any]) -> Dict[str, Any]:
156
+ """Convert data source field values to concept member values
157
+
158
+ Args:
159
+ fieldValues (Dict[str, Any]): Mapping from field names to values
160
+
161
+ Returns:
162
+ Dict[str, Any]: Mapping from member names to values
163
+
164
+ Raises:
165
+ ValueError: If invalid field values exist
166
+ """
167
+ memberValues = {}
168
+ for fieldName, value in fieldValues.items():
169
+ memberName = self.getMemberForField(fieldName)
170
+ if memberName is None:
171
+ continue # Skip unmapped fields
172
+ if not self.validateFieldValue(fieldName, value):
173
+ raise ValueError(
174
+ f"字段 '{fieldName}' 的值类型不符合成员 '{memberName}' 的要求"
175
+ )
176
+ memberValues[memberName] = value
177
+ return memberValues