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.
- DolphinLanguageSDK/__init__.py +58 -0
- dolphin/__init__.py +62 -0
- dolphin/cli/__init__.py +20 -0
- dolphin/cli/args/__init__.py +9 -0
- dolphin/cli/args/parser.py +567 -0
- dolphin/cli/builtin_agents/__init__.py +22 -0
- dolphin/cli/commands/__init__.py +4 -0
- dolphin/cli/interrupt/__init__.py +8 -0
- dolphin/cli/interrupt/handler.py +205 -0
- dolphin/cli/interrupt/keyboard.py +82 -0
- dolphin/cli/main.py +49 -0
- dolphin/cli/multimodal/__init__.py +34 -0
- dolphin/cli/multimodal/clipboard.py +327 -0
- dolphin/cli/multimodal/handler.py +249 -0
- dolphin/cli/multimodal/image_processor.py +214 -0
- dolphin/cli/multimodal/input_parser.py +149 -0
- dolphin/cli/runner/__init__.py +8 -0
- dolphin/cli/runner/runner.py +989 -0
- dolphin/cli/ui/__init__.py +10 -0
- dolphin/cli/ui/console.py +2795 -0
- dolphin/cli/ui/input.py +340 -0
- dolphin/cli/ui/layout.py +425 -0
- dolphin/cli/ui/stream_renderer.py +302 -0
- dolphin/cli/utils/__init__.py +8 -0
- dolphin/cli/utils/helpers.py +135 -0
- dolphin/cli/utils/version.py +49 -0
- dolphin/core/__init__.py +107 -0
- dolphin/core/agent/__init__.py +10 -0
- dolphin/core/agent/agent_state.py +69 -0
- dolphin/core/agent/base_agent.py +970 -0
- dolphin/core/code_block/__init__.py +0 -0
- dolphin/core/code_block/agent_init_block.py +0 -0
- dolphin/core/code_block/assign_block.py +98 -0
- dolphin/core/code_block/basic_code_block.py +1865 -0
- dolphin/core/code_block/explore_block.py +1327 -0
- dolphin/core/code_block/explore_block_v2.py +712 -0
- dolphin/core/code_block/explore_strategy.py +672 -0
- dolphin/core/code_block/judge_block.py +220 -0
- dolphin/core/code_block/prompt_block.py +32 -0
- dolphin/core/code_block/skill_call_deduplicator.py +291 -0
- dolphin/core/code_block/tool_block.py +129 -0
- dolphin/core/common/__init__.py +17 -0
- dolphin/core/common/constants.py +176 -0
- dolphin/core/common/enums.py +1173 -0
- dolphin/core/common/exceptions.py +133 -0
- dolphin/core/common/multimodal.py +539 -0
- dolphin/core/common/object_type.py +165 -0
- dolphin/core/common/output_format.py +432 -0
- dolphin/core/common/types.py +36 -0
- dolphin/core/config/__init__.py +16 -0
- dolphin/core/config/global_config.py +1289 -0
- dolphin/core/config/ontology_config.py +133 -0
- dolphin/core/context/__init__.py +12 -0
- dolphin/core/context/context.py +1580 -0
- dolphin/core/context/context_manager.py +161 -0
- dolphin/core/context/var_output.py +82 -0
- dolphin/core/context/variable_pool.py +356 -0
- dolphin/core/context_engineer/__init__.py +41 -0
- dolphin/core/context_engineer/config/__init__.py +5 -0
- dolphin/core/context_engineer/config/settings.py +402 -0
- dolphin/core/context_engineer/core/__init__.py +7 -0
- dolphin/core/context_engineer/core/budget_manager.py +327 -0
- dolphin/core/context_engineer/core/context_assembler.py +583 -0
- dolphin/core/context_engineer/core/context_manager.py +637 -0
- dolphin/core/context_engineer/core/tokenizer_service.py +260 -0
- dolphin/core/context_engineer/example/incremental_example.py +267 -0
- dolphin/core/context_engineer/example/traditional_example.py +334 -0
- dolphin/core/context_engineer/services/__init__.py +5 -0
- dolphin/core/context_engineer/services/compressor.py +399 -0
- dolphin/core/context_engineer/utils/__init__.py +6 -0
- dolphin/core/context_engineer/utils/context_utils.py +441 -0
- dolphin/core/context_engineer/utils/message_formatter.py +270 -0
- dolphin/core/context_engineer/utils/token_utils.py +139 -0
- dolphin/core/coroutine/__init__.py +15 -0
- dolphin/core/coroutine/context_snapshot.py +154 -0
- dolphin/core/coroutine/context_snapshot_profile.py +922 -0
- dolphin/core/coroutine/context_snapshot_store.py +268 -0
- dolphin/core/coroutine/execution_frame.py +145 -0
- dolphin/core/coroutine/execution_state_registry.py +161 -0
- dolphin/core/coroutine/resume_handle.py +101 -0
- dolphin/core/coroutine/step_result.py +101 -0
- dolphin/core/executor/__init__.py +18 -0
- dolphin/core/executor/debug_controller.py +630 -0
- dolphin/core/executor/dolphin_executor.py +1063 -0
- dolphin/core/executor/executor.py +624 -0
- dolphin/core/flags/__init__.py +27 -0
- dolphin/core/flags/definitions.py +49 -0
- dolphin/core/flags/manager.py +113 -0
- dolphin/core/hook/__init__.py +95 -0
- dolphin/core/hook/expression_evaluator.py +499 -0
- dolphin/core/hook/hook_dispatcher.py +380 -0
- dolphin/core/hook/hook_types.py +248 -0
- dolphin/core/hook/isolated_variable_pool.py +284 -0
- dolphin/core/interfaces.py +53 -0
- dolphin/core/llm/__init__.py +0 -0
- dolphin/core/llm/llm.py +495 -0
- dolphin/core/llm/llm_call.py +100 -0
- dolphin/core/llm/llm_client.py +1285 -0
- dolphin/core/llm/message_sanitizer.py +120 -0
- dolphin/core/logging/__init__.py +20 -0
- dolphin/core/logging/logger.py +526 -0
- dolphin/core/message/__init__.py +8 -0
- dolphin/core/message/compressor.py +749 -0
- dolphin/core/parser/__init__.py +8 -0
- dolphin/core/parser/parser.py +405 -0
- dolphin/core/runtime/__init__.py +10 -0
- dolphin/core/runtime/runtime_graph.py +926 -0
- dolphin/core/runtime/runtime_instance.py +446 -0
- dolphin/core/skill/__init__.py +14 -0
- dolphin/core/skill/context_retention.py +157 -0
- dolphin/core/skill/skill_function.py +686 -0
- dolphin/core/skill/skill_matcher.py +282 -0
- dolphin/core/skill/skillkit.py +700 -0
- dolphin/core/skill/skillset.py +72 -0
- dolphin/core/trajectory/__init__.py +10 -0
- dolphin/core/trajectory/recorder.py +189 -0
- dolphin/core/trajectory/trajectory.py +522 -0
- dolphin/core/utils/__init__.py +9 -0
- dolphin/core/utils/cache_kv.py +212 -0
- dolphin/core/utils/tools.py +340 -0
- dolphin/lib/__init__.py +93 -0
- dolphin/lib/debug/__init__.py +8 -0
- dolphin/lib/debug/visualizer.py +409 -0
- dolphin/lib/memory/__init__.py +28 -0
- dolphin/lib/memory/async_processor.py +220 -0
- dolphin/lib/memory/llm_calls.py +195 -0
- dolphin/lib/memory/manager.py +78 -0
- dolphin/lib/memory/sandbox.py +46 -0
- dolphin/lib/memory/storage.py +245 -0
- dolphin/lib/memory/utils.py +51 -0
- dolphin/lib/ontology/__init__.py +12 -0
- dolphin/lib/ontology/basic/__init__.py +0 -0
- dolphin/lib/ontology/basic/base.py +102 -0
- dolphin/lib/ontology/basic/concept.py +130 -0
- dolphin/lib/ontology/basic/object.py +11 -0
- dolphin/lib/ontology/basic/relation.py +63 -0
- dolphin/lib/ontology/datasource/__init__.py +27 -0
- dolphin/lib/ontology/datasource/datasource.py +66 -0
- dolphin/lib/ontology/datasource/oracle_datasource.py +338 -0
- dolphin/lib/ontology/datasource/sql.py +845 -0
- dolphin/lib/ontology/mapping.py +177 -0
- dolphin/lib/ontology/ontology.py +733 -0
- dolphin/lib/ontology/ontology_context.py +16 -0
- dolphin/lib/ontology/ontology_manager.py +107 -0
- dolphin/lib/skill_results/__init__.py +31 -0
- dolphin/lib/skill_results/cache_backend.py +559 -0
- dolphin/lib/skill_results/result_processor.py +181 -0
- dolphin/lib/skill_results/result_reference.py +179 -0
- dolphin/lib/skill_results/skillkit_hook.py +324 -0
- dolphin/lib/skill_results/strategies.py +328 -0
- dolphin/lib/skill_results/strategy_registry.py +150 -0
- dolphin/lib/skillkits/__init__.py +44 -0
- dolphin/lib/skillkits/agent_skillkit.py +155 -0
- dolphin/lib/skillkits/cognitive_skillkit.py +82 -0
- dolphin/lib/skillkits/env_skillkit.py +250 -0
- dolphin/lib/skillkits/mcp_adapter.py +616 -0
- dolphin/lib/skillkits/mcp_skillkit.py +771 -0
- dolphin/lib/skillkits/memory_skillkit.py +650 -0
- dolphin/lib/skillkits/noop_skillkit.py +31 -0
- dolphin/lib/skillkits/ontology_skillkit.py +89 -0
- dolphin/lib/skillkits/plan_act_skillkit.py +452 -0
- dolphin/lib/skillkits/resource/__init__.py +52 -0
- dolphin/lib/skillkits/resource/models/__init__.py +6 -0
- dolphin/lib/skillkits/resource/models/skill_config.py +109 -0
- dolphin/lib/skillkits/resource/models/skill_meta.py +127 -0
- dolphin/lib/skillkits/resource/resource_skillkit.py +393 -0
- dolphin/lib/skillkits/resource/skill_cache.py +215 -0
- dolphin/lib/skillkits/resource/skill_loader.py +395 -0
- dolphin/lib/skillkits/resource/skill_validator.py +406 -0
- dolphin/lib/skillkits/resource_skillkit.py +11 -0
- dolphin/lib/skillkits/search_skillkit.py +163 -0
- dolphin/lib/skillkits/sql_skillkit.py +274 -0
- dolphin/lib/skillkits/system_skillkit.py +509 -0
- dolphin/lib/skillkits/vm_skillkit.py +65 -0
- dolphin/lib/utils/__init__.py +9 -0
- dolphin/lib/utils/data_process.py +207 -0
- dolphin/lib/utils/handle_progress.py +178 -0
- dolphin/lib/utils/security.py +139 -0
- dolphin/lib/utils/text_retrieval.py +462 -0
- dolphin/lib/vm/__init__.py +11 -0
- dolphin/lib/vm/env_executor.py +895 -0
- dolphin/lib/vm/python_session_manager.py +453 -0
- dolphin/lib/vm/vm.py +610 -0
- dolphin/sdk/__init__.py +60 -0
- dolphin/sdk/agent/__init__.py +12 -0
- dolphin/sdk/agent/agent_factory.py +236 -0
- dolphin/sdk/agent/dolphin_agent.py +1106 -0
- dolphin/sdk/api/__init__.py +4 -0
- dolphin/sdk/runtime/__init__.py +8 -0
- dolphin/sdk/runtime/env.py +363 -0
- dolphin/sdk/skill/__init__.py +10 -0
- dolphin/sdk/skill/global_skills.py +706 -0
- dolphin/sdk/skill/traditional_toolkit.py +260 -0
- kweaver_dolphin-0.1.0.dist-info/METADATA +521 -0
- kweaver_dolphin-0.1.0.dist-info/RECORD +199 -0
- kweaver_dolphin-0.1.0.dist-info/WHEEL +5 -0
- kweaver_dolphin-0.1.0.dist-info/entry_points.txt +27 -0
- kweaver_dolphin-0.1.0.dist-info/licenses/LICENSE.txt +201 -0
- 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
|