agently 4.0.6.7__py3-none-any.whl → 4.0.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.
- agently/base.py +3 -5
- agently/builtins/agent_extensions/ConfigurePromptExtension.py +40 -9
- agently/builtins/hookers/SystemMessageHooker.py +51 -7
- agently/builtins/plugins/ModelRequester/OpenAICompatible.py +32 -0
- agently/builtins/plugins/PromptGenerator/AgentlyPromptGenerator.py +64 -1
- agently/builtins/plugins/ResponseParser/AgentlyResponseParser.py +22 -14
- agently/core/Agent.py +67 -27
- agently/core/ModelRequest.py +216 -26
- agently/core/PluginManager.py +2 -0
- agently/core/Prompt.py +15 -45
- agently/core/TriggerFlow/BluePrint.py +2 -0
- agently/core/TriggerFlow/Chunk.py +5 -4
- agently/core/TriggerFlow/Execution.py +29 -12
- agently/core/TriggerFlow/TriggerFlow.py +24 -10
- agently/core/TriggerFlow/process/BaseProcess.py +63 -21
- agently/core/TriggerFlow/process/ForEachProcess.py +30 -24
- agently/core/TriggerFlow/process/MatchCaseProcess.py +6 -6
- agently/integrations/chromadb.py +15 -0
- agently/types/data/response.py +10 -1
- agently/types/plugins/PromptGenerator.py +5 -1
- agently/types/plugins/ResponseParser.py +26 -6
- agently/types/trigger_flow/trigger_flow.py +6 -6
- agently/utils/DataFormatter.py +77 -0
- agently/utils/PythonSandbox.py +101 -0
- agently/utils/Settings.py +19 -2
- agently/utils/__init__.py +1 -0
- {agently-4.0.6.7.dist-info → agently-4.0.7.dist-info}/METADATA +1 -1
- {agently-4.0.6.7.dist-info → agently-4.0.7.dist-info}/RECORD +30 -29
- {agently-4.0.6.7.dist-info → agently-4.0.7.dist-info}/WHEEL +0 -0
- {agently-4.0.6.7.dist-info → agently-4.0.7.dist-info}/licenses/LICENSE +0 -0
agently/types/data/response.py
CHANGED
|
@@ -24,7 +24,16 @@ if TYPE_CHECKING:
|
|
|
24
24
|
from agently.types.data.serializable import SerializableValue
|
|
25
25
|
|
|
26
26
|
AgentlyModelResponseEvent = Literal[
|
|
27
|
-
"error",
|
|
27
|
+
"error",
|
|
28
|
+
"original_delta",
|
|
29
|
+
"reasoning_delta",
|
|
30
|
+
"delta",
|
|
31
|
+
"tool_calls",
|
|
32
|
+
"original_done",
|
|
33
|
+
"reasoning_done",
|
|
34
|
+
"done",
|
|
35
|
+
"meta",
|
|
36
|
+
"extra",
|
|
28
37
|
]
|
|
29
38
|
|
|
30
39
|
AgentlyModelResponseMessage: TypeAlias = tuple[AgentlyModelResponseEvent, Any]
|
|
@@ -16,7 +16,7 @@ from typing import Any, Protocol, TYPE_CHECKING
|
|
|
16
16
|
from .base import AgentlyPlugin
|
|
17
17
|
|
|
18
18
|
if TYPE_CHECKING:
|
|
19
|
-
from agently.types.data import PromptModel
|
|
19
|
+
from agently.types.data import PromptModel, SerializableData
|
|
20
20
|
from agently.core import Prompt
|
|
21
21
|
from agently.utils import Settings
|
|
22
22
|
from pydantic import BaseModel
|
|
@@ -130,3 +130,7 @@ class PromptGenerator(AgentlyPlugin, Protocol):
|
|
|
130
130
|
- For list outputs: use `BaseModel(list=output_result)` to validate.
|
|
131
131
|
"""
|
|
132
132
|
...
|
|
133
|
+
|
|
134
|
+
def to_serializable_prompt_data(self, *args, **kwargs) -> "SerializableData": ...
|
|
135
|
+
def to_json_prompt(self, *args, **kwargs) -> str: ...
|
|
136
|
+
def to_yaml_prompt(self, *args, **kwargs) -> str: ...
|
|
@@ -77,29 +77,39 @@ class ResponseParser(AgentlyPlugin, Protocol):
|
|
|
77
77
|
def get_async_generator(
|
|
78
78
|
self,
|
|
79
79
|
type: Literal["instant", "streaming_parse"],
|
|
80
|
+
*,
|
|
81
|
+
specific: list[str] | str | None = None,
|
|
80
82
|
) -> AsyncGenerator["StreamingData", None]: ...
|
|
81
83
|
|
|
82
84
|
@overload
|
|
83
85
|
def get_async_generator(
|
|
84
86
|
self,
|
|
85
87
|
type: Literal["all"],
|
|
88
|
+
*,
|
|
89
|
+
specific: list[str] | str | None = None,
|
|
86
90
|
) -> AsyncGenerator[tuple[str, Any], None]: ...
|
|
87
91
|
|
|
88
92
|
@overload
|
|
89
93
|
def get_async_generator(
|
|
90
94
|
self,
|
|
91
|
-
type: Literal["delta", "
|
|
95
|
+
type: Literal["delta", "specific", "original"],
|
|
96
|
+
*,
|
|
97
|
+
specific: list[str] | str | None = None,
|
|
92
98
|
) -> AsyncGenerator[str, None]: ...
|
|
93
99
|
|
|
94
100
|
@overload
|
|
95
101
|
def get_async_generator(
|
|
96
102
|
self,
|
|
97
|
-
type: Literal["all", "original", "delta", "
|
|
103
|
+
type: Literal["all", "original", "delta", "specific", "instant", "streaming_parse"] | None = "delta",
|
|
104
|
+
*,
|
|
105
|
+
specific: list[str] | str | None = None,
|
|
98
106
|
) -> AsyncGenerator: ...
|
|
99
107
|
|
|
100
108
|
def get_async_generator(
|
|
101
109
|
self,
|
|
102
|
-
type: Literal["all", "original", "delta", "
|
|
110
|
+
type: Literal["all", "original", "delta", "specific", "instant", "streaming_parse"] | None = "delta",
|
|
111
|
+
*,
|
|
112
|
+
specific: list[str] | str | None = None,
|
|
103
113
|
) -> AsyncGenerator:
|
|
104
114
|
"""
|
|
105
115
|
'instant' is Agently v3 compatible for 'streaming_parse'
|
|
@@ -110,29 +120,39 @@ class ResponseParser(AgentlyPlugin, Protocol):
|
|
|
110
120
|
def get_generator(
|
|
111
121
|
self,
|
|
112
122
|
type: Literal["instant", "streaming_parse"],
|
|
123
|
+
*,
|
|
124
|
+
specific: list[str] | str | None = None,
|
|
113
125
|
) -> Generator["StreamingData", None, None]: ...
|
|
114
126
|
|
|
115
127
|
@overload
|
|
116
128
|
def get_generator(
|
|
117
129
|
self,
|
|
118
130
|
type: Literal["all"],
|
|
131
|
+
*,
|
|
132
|
+
specific: list[str] | str | None = None,
|
|
119
133
|
) -> Generator[tuple[str, Any], None, None]: ...
|
|
120
134
|
|
|
121
135
|
@overload
|
|
122
136
|
def get_generator(
|
|
123
137
|
self,
|
|
124
|
-
type: Literal["delta", "
|
|
138
|
+
type: Literal["delta", "specific", "original"],
|
|
139
|
+
*,
|
|
140
|
+
specific: list[str] | str | None = None,
|
|
125
141
|
) -> Generator[str, None, None]: ...
|
|
126
142
|
|
|
127
143
|
@overload
|
|
128
144
|
def get_generator(
|
|
129
145
|
self,
|
|
130
|
-
type: Literal["all", "original", "delta", "
|
|
146
|
+
type: Literal["all", "original", "delta", "specific", "instant", "streaming_parse"] | None = "delta",
|
|
147
|
+
*,
|
|
148
|
+
specific: list[str] | str | None = None,
|
|
131
149
|
) -> Generator: ...
|
|
132
150
|
|
|
133
151
|
def get_generator(
|
|
134
152
|
self,
|
|
135
|
-
type: Literal["all", "original", "delta", "
|
|
153
|
+
type: Literal["all", "original", "delta", "specific", "instant", "streaming_parse"] | None = "delta",
|
|
154
|
+
*,
|
|
155
|
+
specific: list[str] | str | None = None,
|
|
136
156
|
) -> Generator:
|
|
137
157
|
"""
|
|
138
158
|
'instant' is Agently v3 compatible for 'streaming_parse'
|
|
@@ -43,7 +43,7 @@ class TriggerFlowEventData:
|
|
|
43
43
|
trigger_type: Literal["event", "runtime_data", "flow_data"],
|
|
44
44
|
value: Any,
|
|
45
45
|
execution: "TriggerFlowExecution",
|
|
46
|
-
|
|
46
|
+
_layer_marks: list[str] | None = None,
|
|
47
47
|
):
|
|
48
48
|
self.trigger_event = trigger_event
|
|
49
49
|
self.trigger_type = trigger_type
|
|
@@ -51,7 +51,7 @@ class TriggerFlowEventData:
|
|
|
51
51
|
self.type = trigger_type
|
|
52
52
|
self.value = value
|
|
53
53
|
self.execution_id = execution.id
|
|
54
|
-
self.
|
|
54
|
+
self._layer_marks = _layer_marks if _layer_marks is not None else []
|
|
55
55
|
self.settings = execution.settings
|
|
56
56
|
|
|
57
57
|
self.get_flow_data = execution.get_flow_data
|
|
@@ -84,17 +84,17 @@ class TriggerFlowEventData:
|
|
|
84
84
|
|
|
85
85
|
@property
|
|
86
86
|
def upper_layer_mark(self):
|
|
87
|
-
return self.
|
|
87
|
+
return self._layer_marks[-2] if len(self._layer_marks) > 1 else None
|
|
88
88
|
|
|
89
89
|
@property
|
|
90
90
|
def layer_mark(self):
|
|
91
|
-
return self.
|
|
91
|
+
return self._layer_marks[-1] if len(self._layer_marks) > 0 else None
|
|
92
92
|
|
|
93
93
|
def layer_in(self):
|
|
94
|
-
self.
|
|
94
|
+
self._layer_marks.append(uuid.uuid4().hex)
|
|
95
95
|
|
|
96
96
|
def layer_out(self):
|
|
97
|
-
self.
|
|
97
|
+
self._layer_marks = self._layer_marks[:-1] if len(self._layer_marks) > 0 else []
|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
TriggerFlowHandler = Callable[[TriggerFlowEventData], Any]
|
agently/utils/DataFormatter.py
CHANGED
|
@@ -12,12 +12,14 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
import re
|
|
15
16
|
import datetime
|
|
16
17
|
import warnings
|
|
17
18
|
from typing import (
|
|
18
19
|
Any,
|
|
19
20
|
Literal,
|
|
20
21
|
Mapping,
|
|
22
|
+
Sequence,
|
|
21
23
|
Union,
|
|
22
24
|
get_origin,
|
|
23
25
|
get_args,
|
|
@@ -29,9 +31,12 @@ from pydantic import BaseModel
|
|
|
29
31
|
|
|
30
32
|
if TYPE_CHECKING:
|
|
31
33
|
from agently.types.data import SerializableValue, KwargsType
|
|
34
|
+
from re import Pattern
|
|
32
35
|
|
|
33
36
|
T = TypeVar("T")
|
|
34
37
|
|
|
38
|
+
DEFAULT_PLACEHOLDER_PATTERN = re.compile(r"\$\{\s*([^}]+?)\s*\}")
|
|
39
|
+
|
|
35
40
|
|
|
36
41
|
class DataFormatter:
|
|
37
42
|
@staticmethod
|
|
@@ -246,3 +251,75 @@ class DataFormatter:
|
|
|
246
251
|
return kwargs_format or None
|
|
247
252
|
|
|
248
253
|
return None
|
|
254
|
+
|
|
255
|
+
@staticmethod
|
|
256
|
+
def substitute_placeholder(
|
|
257
|
+
obj: T,
|
|
258
|
+
variable_mappings: dict[str, Any],
|
|
259
|
+
*,
|
|
260
|
+
placeholder_pattern: "Pattern | None" = None,
|
|
261
|
+
) -> T | Any:
|
|
262
|
+
if placeholder_pattern is None:
|
|
263
|
+
placeholder_pattern = DEFAULT_PLACEHOLDER_PATTERN
|
|
264
|
+
|
|
265
|
+
if not isinstance(variable_mappings, dict):
|
|
266
|
+
raise TypeError(f"Variable mappings require a dictionary but got: { variable_mappings }")
|
|
267
|
+
|
|
268
|
+
if isinstance(obj, str):
|
|
269
|
+
full_match = placeholder_pattern.fullmatch(obj)
|
|
270
|
+
if full_match:
|
|
271
|
+
key = full_match.group(1).strip()
|
|
272
|
+
return variable_mappings.get(key, obj)
|
|
273
|
+
else:
|
|
274
|
+
|
|
275
|
+
def replacer(match):
|
|
276
|
+
key = match.group(1).strip()
|
|
277
|
+
return str(variable_mappings.get(key, match.group(0)))
|
|
278
|
+
|
|
279
|
+
return placeholder_pattern.sub(replacer, obj)
|
|
280
|
+
|
|
281
|
+
if isinstance(obj, Mapping):
|
|
282
|
+
return {
|
|
283
|
+
DataFormatter.substitute_placeholder(
|
|
284
|
+
key,
|
|
285
|
+
variable_mappings,
|
|
286
|
+
placeholder_pattern=placeholder_pattern,
|
|
287
|
+
): DataFormatter.substitute_placeholder(
|
|
288
|
+
value,
|
|
289
|
+
variable_mappings,
|
|
290
|
+
placeholder_pattern=placeholder_pattern,
|
|
291
|
+
)
|
|
292
|
+
for key, value in obj.items()
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
if isinstance(obj, Sequence) and not isinstance(obj, (str, bytes, bytearray)):
|
|
296
|
+
if isinstance(obj, tuple):
|
|
297
|
+
return tuple(
|
|
298
|
+
DataFormatter.substitute_placeholder(
|
|
299
|
+
value,
|
|
300
|
+
variable_mappings,
|
|
301
|
+
placeholder_pattern=placeholder_pattern,
|
|
302
|
+
)
|
|
303
|
+
for value in obj
|
|
304
|
+
)
|
|
305
|
+
else:
|
|
306
|
+
return [
|
|
307
|
+
DataFormatter.substitute_placeholder(
|
|
308
|
+
value,
|
|
309
|
+
variable_mappings,
|
|
310
|
+
placeholder_pattern=placeholder_pattern,
|
|
311
|
+
)
|
|
312
|
+
for value in obj
|
|
313
|
+
]
|
|
314
|
+
|
|
315
|
+
if isinstance(obj, set):
|
|
316
|
+
return {
|
|
317
|
+
DataFormatter.substitute_placeholder(
|
|
318
|
+
value,
|
|
319
|
+
variable_mappings,
|
|
320
|
+
placeholder_pattern=placeholder_pattern,
|
|
321
|
+
)
|
|
322
|
+
for value in obj
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
return obj
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Copyright 2023-2025 AgentEra(Agently.Tech)
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
from types import MappingProxyType
|
|
17
|
+
from typing import Any
|
|
18
|
+
|
|
19
|
+
SAFE_BUILTINS = {
|
|
20
|
+
"abs": abs,
|
|
21
|
+
"min": min,
|
|
22
|
+
"max": max,
|
|
23
|
+
"sum": sum,
|
|
24
|
+
"len": len,
|
|
25
|
+
"range": range,
|
|
26
|
+
"enumerate": enumerate,
|
|
27
|
+
"list": list,
|
|
28
|
+
"dict": dict,
|
|
29
|
+
"set": set,
|
|
30
|
+
"tuple": tuple,
|
|
31
|
+
"print": print,
|
|
32
|
+
"sorted": sorted,
|
|
33
|
+
"str": str,
|
|
34
|
+
"int": int,
|
|
35
|
+
"float": float,
|
|
36
|
+
"list": list,
|
|
37
|
+
"dict": dict,
|
|
38
|
+
"bool": bool,
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
SAFE_TYPES = [int, float, str, list, dict, set, tuple, bool, type(None)]
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class PythonSandbox:
|
|
45
|
+
def __init__(
|
|
46
|
+
self,
|
|
47
|
+
preset_objects: dict[str, object] | None = None,
|
|
48
|
+
base_vars: dict[str, Any] | None = None,
|
|
49
|
+
allowed_return_types: list[type] = SAFE_TYPES,
|
|
50
|
+
):
|
|
51
|
+
self.preset_objects = preset_objects or {}
|
|
52
|
+
self.base_vars = base_vars or {}
|
|
53
|
+
self.allowed_return_types = allowed_return_types
|
|
54
|
+
|
|
55
|
+
self.safe_globals = MappingProxyType(
|
|
56
|
+
{
|
|
57
|
+
"__builtins__": SAFE_BUILTINS,
|
|
58
|
+
**self.preset_objects,
|
|
59
|
+
**self.base_vars,
|
|
60
|
+
}
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
def _check_safe_value(self, value):
|
|
64
|
+
if isinstance(value, tuple(self.allowed_return_types)):
|
|
65
|
+
return value
|
|
66
|
+
raise ValueError(f"Type of return '{ type(value) }' can not be used in Python Sandbox.")
|
|
67
|
+
|
|
68
|
+
def _wrap_obj(self, obj):
|
|
69
|
+
sandbox = self
|
|
70
|
+
|
|
71
|
+
class ObjectWrapper:
|
|
72
|
+
def __init__(self, obj):
|
|
73
|
+
self._obj = obj
|
|
74
|
+
|
|
75
|
+
def __getattr__(self, name):
|
|
76
|
+
if name.startswith("_"):
|
|
77
|
+
raise AttributeError(f"Can not access private attribute '{name}'.")
|
|
78
|
+
attr = getattr(self._obj, name)
|
|
79
|
+
if callable(attr):
|
|
80
|
+
|
|
81
|
+
def method(*args, **kwargs):
|
|
82
|
+
result = attr(*args, **kwargs)
|
|
83
|
+
return sandbox._check_safe_value(result)
|
|
84
|
+
|
|
85
|
+
return method
|
|
86
|
+
return sandbox._check_safe_value(attr)
|
|
87
|
+
|
|
88
|
+
self.allowed_return_types.append(ObjectWrapper)
|
|
89
|
+
|
|
90
|
+
return ObjectWrapper(obj)
|
|
91
|
+
|
|
92
|
+
def run(self, code: str):
|
|
93
|
+
safe_objects = {k: self._wrap_obj(v) for k, v in self.preset_objects.items()}
|
|
94
|
+
globals_dict = dict(self.safe_globals)
|
|
95
|
+
globals_dict.update(safe_objects)
|
|
96
|
+
|
|
97
|
+
local_vars = {}
|
|
98
|
+
exec(code, globals_dict, local_vars)
|
|
99
|
+
for k, v in local_vars.items():
|
|
100
|
+
self._check_safe_value(v)
|
|
101
|
+
return local_vars
|
agently/utils/Settings.py
CHANGED
|
@@ -12,11 +12,14 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
import re
|
|
15
16
|
import json
|
|
16
17
|
import yaml
|
|
17
18
|
import toml
|
|
18
19
|
from typing import TYPE_CHECKING, Literal, cast
|
|
19
|
-
from
|
|
20
|
+
from .SerializableRuntimeData import SerializableRuntimeData, SerializableRuntimeDataNamespace
|
|
21
|
+
from .LazyImport import LazyImport
|
|
22
|
+
from .DataFormatter import DataFormatter
|
|
20
23
|
|
|
21
24
|
if TYPE_CHECKING:
|
|
22
25
|
from agently.types.data import SerializableData, SerializableValue
|
|
@@ -114,7 +117,21 @@ class Settings(SerializableRuntimeData):
|
|
|
114
117
|
else:
|
|
115
118
|
raise TypeError(f"[Agently Settings] Cannot load parsed data, expect dictionary type, got: { type(data) }")
|
|
116
119
|
|
|
117
|
-
def set_settings(self, key: str, value: "SerializableValue"):
|
|
120
|
+
def set_settings(self, key: str, value: "SerializableValue", *, auto_load_env: bool = False):
|
|
121
|
+
if auto_load_env:
|
|
122
|
+
import os
|
|
123
|
+
|
|
124
|
+
LazyImport.import_package("dotenv")
|
|
125
|
+
from dotenv import load_dotenv, find_dotenv
|
|
126
|
+
|
|
127
|
+
load_dotenv(find_dotenv())
|
|
128
|
+
|
|
129
|
+
environ = dict(os.environ)
|
|
130
|
+
value = DataFormatter.substitute_placeholder(
|
|
131
|
+
value,
|
|
132
|
+
environ,
|
|
133
|
+
placeholder_pattern=re.compile(r"\$\{\s*ENV\.([^}]+?)\s*\}"),
|
|
134
|
+
)
|
|
118
135
|
if key in self._path_mappings:
|
|
119
136
|
self.update({str(self._path_mappings[key]): value})
|
|
120
137
|
return self
|
agently/utils/__init__.py
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
1
1
|
agently/__init__.py,sha256=Gf0LL7Czqeuf6hfvHfEGlACLg0d0osQupyMATB0EBlc,884
|
|
2
2
|
agently/_default_init.py,sha256=AhYwzZYOxqDeIoVb8cvPjJ2BjE5V7wxeuH7R-MNZWyg,2057
|
|
3
3
|
agently/_default_settings.yaml,sha256=6woqJ2tjg_jl6kwSOwmTMETfVraHidort2smf0Is_qQ,1357
|
|
4
|
-
agently/base.py,sha256=
|
|
4
|
+
agently/base.py,sha256=U92SWzoU7h7Gl92r8bEv-7wsGUPrUlxXyDohLX-2qCo,4629
|
|
5
5
|
agently/builtins/agent_extensions/AutoFuncExtension.py,sha256=TmwMazwPzb5WXfDqfedY5yZOOMTFIHqaB9Bte29adUc,2433
|
|
6
6
|
agently/builtins/agent_extensions/ChatSessionExtension.py,sha256=Y6mvnsfAY0rykKtfp-tApwJy5O4SS-YEt2-jaWr83uc,12034
|
|
7
|
-
agently/builtins/agent_extensions/ConfigurePromptExtension.py,sha256=
|
|
7
|
+
agently/builtins/agent_extensions/ConfigurePromptExtension.py,sha256=9wy2zHIDVHbUlj5sI0A03SscUWSzZNc9hNJSEdXFXd0,11390
|
|
8
8
|
agently/builtins/agent_extensions/KeyWaiterExtension.py,sha256=Rf8dB8Yt3_9IJifpiE-Rn6lLIXqZjaNp94lnX6Betgw,5555
|
|
9
9
|
agently/builtins/agent_extensions/ToolExtension.py,sha256=S3jjumHiauEQ-m46Zkh-1I9ih02kKoj8sBEU82woz1E,6886
|
|
10
10
|
agently/builtins/agent_extensions/__init__.py,sha256=IxWRQogF8PCVNXeY7D4qhGukEx3JFvfLlUW2x0FbyfA,852
|
|
11
11
|
agently/builtins/hookers/ConsoleHooker.py,sha256=aJdDj_nG8CiwyelA505zvtpzBSwD52nFIkBRDJGgq3Y,8099
|
|
12
12
|
agently/builtins/hookers/PureLoggerHooker.py,sha256=fzN0OfhQzgns4KeCNH-qcdm-BdQT0W2kqEmt3Zp2pYI,1906
|
|
13
|
-
agently/builtins/hookers/SystemMessageHooker.py,sha256=
|
|
14
|
-
agently/builtins/plugins/ModelRequester/OpenAICompatible.py,sha256=
|
|
15
|
-
agently/builtins/plugins/PromptGenerator/AgentlyPromptGenerator.py,sha256=
|
|
16
|
-
agently/builtins/plugins/ResponseParser/AgentlyResponseParser.py,sha256=
|
|
13
|
+
agently/builtins/hookers/SystemMessageHooker.py,sha256=1nh1FY70PYyZOAQGfQiGnwIvo4ZF3NSAjeghI3sInn4,7207
|
|
14
|
+
agently/builtins/plugins/ModelRequester/OpenAICompatible.py,sha256=CFTMZHENOi6qsrUfWtgq19P6Ec7H-8vRybVVr4RZfJQ,26773
|
|
15
|
+
agently/builtins/plugins/PromptGenerator/AgentlyPromptGenerator.py,sha256=GRRR9uxgyCXHKgt_r2BinWnhKy8rYUN8CG9ld2P8n4E,30841
|
|
16
|
+
agently/builtins/plugins/ResponseParser/AgentlyResponseParser.py,sha256=5iF6NLoMjTtEC3hc-DmatFmSWZK2nKkoiyqHK7Q3Yj4,17847
|
|
17
17
|
agently/builtins/plugins/ToolManager/AgentlyToolManager.py,sha256=oaqte5LAryZQMD6vuEbKhe6kOLUyZTRZswC1MDFiYxw,9138
|
|
18
18
|
agently/builtins/plugins/__init__.py,sha256=wj4_U9TTekc2CmjppbXKUREDFRXFX1y0ySOW-CxQuok,801
|
|
19
19
|
agently/builtins/tools/Browse.py,sha256=gIePs-gtsqOI_ZTReGqEcoKvhs4FkBzTxow--QS5_ek,3469
|
|
20
20
|
agently/builtins/tools/Search.py,sha256=tUynNiW_ZMAGaB2ua3HRcY_trIbLEoASFE-p2QMQ0Zg,7362
|
|
21
21
|
agently/builtins/tools/__init__.py,sha256=pFOWgH2C3xRvgQo3UVdkj4yHjF9nNtmoVHmOZfoGsyU,647
|
|
22
|
-
agently/core/Agent.py,sha256=
|
|
22
|
+
agently/core/Agent.py,sha256=LWkzWG_XXrC4oVkWg4ebnAqAJ81O9UEo1n-qJj7IIrc,10251
|
|
23
23
|
agently/core/EventCenter.py,sha256=sknU5w9MpGDQgMOF9c5k4PfM4SNT5X_LrpYte2HaFNM,10861
|
|
24
24
|
agently/core/ExtensionHandlers.py,sha256=88iSAW50bgMshB56cTgKg30eOjZQyXiJY1en4w7afWY,2076
|
|
25
|
-
agently/core/ModelRequest.py,sha256=
|
|
26
|
-
agently/core/PluginManager.py,sha256=
|
|
27
|
-
agently/core/Prompt.py,sha256=
|
|
25
|
+
agently/core/ModelRequest.py,sha256=t9tnC0uON89MkuuRHPPOgk3xOLz6G953sInvKDMD00o,24526
|
|
26
|
+
agently/core/PluginManager.py,sha256=fwRxvqPMgXYIrclhRHtkaPsyvn6SaeBFqvL7tTzYwck,4410
|
|
27
|
+
agently/core/Prompt.py,sha256=uvGGvbND08b0OhkD-UXY0J65yLedllBt4lMqk4NYl1U,6893
|
|
28
28
|
agently/core/Tool.py,sha256=PNYf_BwVefr8IOqf5asLaVq2fU7hQaFJwJVj3S4fq84,1871
|
|
29
|
-
agently/core/TriggerFlow/BluePrint.py,sha256=
|
|
30
|
-
agently/core/TriggerFlow/Chunk.py,sha256=
|
|
31
|
-
agently/core/TriggerFlow/Execution.py,sha256=
|
|
29
|
+
agently/core/TriggerFlow/BluePrint.py,sha256=H_TYymWOci-ZvQzqyRxpkHjO77zlzXLukLUUctX4ftM,4887
|
|
30
|
+
agently/core/TriggerFlow/Chunk.py,sha256=xPWr_ofpl-iG4jHIJfB5mPanmn70pq7x8GCcz3G8NPc,1583
|
|
31
|
+
agently/core/TriggerFlow/Execution.py,sha256=EsiZOIeoflyQceRenK5uUL_maML3w7DKgamqlKBQCOE,12500
|
|
32
32
|
agently/core/TriggerFlow/Process.py,sha256=doIDUa7x0j1TVuOhp-hraC0hHLwpistF-Dksf76NJvQ,837
|
|
33
|
-
agently/core/TriggerFlow/TriggerFlow.py,sha256=
|
|
33
|
+
agently/core/TriggerFlow/TriggerFlow.py,sha256=1y2RmrCE5Ga7iMr67xGUBsTaXykKXIFHR3390deqo-k,8029
|
|
34
34
|
agently/core/TriggerFlow/__init__.py,sha256=eHc6ldUIS0kka_1fZXkdaHFnSDoXaGSvXggwVszMAJQ,911
|
|
35
|
-
agently/core/TriggerFlow/process/BaseProcess.py,sha256=
|
|
36
|
-
agently/core/TriggerFlow/process/ForEachProcess.py,sha256=
|
|
37
|
-
agently/core/TriggerFlow/process/MatchCaseProcess.py,sha256
|
|
35
|
+
agently/core/TriggerFlow/process/BaseProcess.py,sha256=lIr1kCgxwHxlReZp0-C3kS0wMkPtDbZ1UExI2fKbtOQ,15256
|
|
36
|
+
agently/core/TriggerFlow/process/ForEachProcess.py,sha256=DD4frz9mTsKgnPXnHJD53hL6uiiU6h338p7ipud8zMU,4897
|
|
37
|
+
agently/core/TriggerFlow/process/MatchCaseProcess.py,sha256=MKY5Yh66JiMABhCzamRl8UZOBjbD75TFp84Jw6o_t68,7900
|
|
38
38
|
agently/core/TriggerFlow/process/__init__.py,sha256=BP5bAr9LRVVD83KFqXeprgTmXA1iCSOSsD509BtoX_E,753
|
|
39
39
|
agently/core/__init__.py,sha256=CPglSpW5oEEmWpCpdvv9wK4myXmVipjuZm5HtMq6Vxo,1214
|
|
40
|
-
agently/integrations/chromadb.py,sha256=
|
|
40
|
+
agently/integrations/chromadb.py,sha256=iULT9sK2MIZe5pyqMdL9M1yBkWqQhShwEyLmGnKUuew,10390
|
|
41
41
|
agently/types/__init__.py,sha256=xb8GMY-ULncO_PY9rfRUsyi12wAQQJx8gAAnoM30uZA,592
|
|
42
42
|
agently/types/data/__init__.py,sha256=qladqSEqcAUW_XzdTDl4cvaraq_DpANy3aZbIPxoygk,1627
|
|
43
43
|
agently/types/data/event.py,sha256=LFQW7MN_QGOis3XV-8K6jNXWsLvT7tYxo4BZbUBCpfI,1790
|
|
44
44
|
agently/types/data/prompt.py,sha256=DiszVM_3OHe66waf-99mBH7bzRr0cpbCHSpDI-2EjPs,5163
|
|
45
45
|
agently/types/data/request.py,sha256=Do-9g5QxZRMYjaoHCZYwHbj28r-t4noAAtOebw764P4,1924
|
|
46
|
-
agently/types/data/response.py,sha256=
|
|
46
|
+
agently/types/data/response.py,sha256=QYrrZXh_fXsHRltKtd6FKIfmJlgV-stsg6B0AIXueto,3774
|
|
47
47
|
agently/types/data/serializable.py,sha256=v2KlyKNOKp4L6J_Ueupb-gCyrnngvBskFUwNPSJQgnA,844
|
|
48
48
|
agently/types/data/tool.py,sha256=wE8Dda2JtY5cojpHUuQrw7PNeVZ6Zma968bn-pUmS7I,1529
|
|
49
49
|
agently/types/plugins/EventHooker.py,sha256=kb80-baVc3fVlrddW5syv9uSD8a2Mcw8Fd3I2HQhY_Y,1030
|
|
50
50
|
agently/types/plugins/ModelRequester.py,sha256=urG1zFX0b4U6ZKSO50IbW5IHK3ydmRgUom7O7Niqk8s,3875
|
|
51
|
-
agently/types/plugins/PromptGenerator.py,sha256=
|
|
52
|
-
agently/types/plugins/ResponseParser.py,sha256=
|
|
51
|
+
agently/types/plugins/PromptGenerator.py,sha256=V8kqT0Eeq09AQqfGA-SZ5mNKeit1UrmqlDQCquSMzUU,4752
|
|
52
|
+
agently/types/plugins/ResponseParser.py,sha256=6dCVWz61gaHOxsX9e5sYFqcWRZ5hBnNXAarT0-9uCUY,4566
|
|
53
53
|
agently/types/plugins/ToolManager.py,sha256=q1Y3G_tzh1AU3s13H-zTDZIkR4W1mjh9E6AKudFOvyg,2421
|
|
54
54
|
agently/types/plugins/__init__.py,sha256=gz_EpgBQGndIQHY5vJB2YRzAN5yIb3FZZG7pC8lB1lM,848
|
|
55
55
|
agently/types/plugins/base.py,sha256=AoNLwsH5IZBQt7_NZfxMWMhAk6PJSOFHR0IYOXp1imI,1167
|
|
56
56
|
agently/types/trigger_flow/__init__.py,sha256=Gj31SmWBC4qtrOqQedyGsnCfeSkUf3XvZNFrJ2QbMNw,777
|
|
57
|
-
agently/types/trigger_flow/trigger_flow.py,sha256=
|
|
58
|
-
agently/utils/DataFormatter.py,sha256=
|
|
57
|
+
agently/types/trigger_flow/trigger_flow.py,sha256=6lvhDwizIV5p3h61l1GsmJU_9Tw8v3u-SnHuygkSJdo,3799
|
|
58
|
+
agently/utils/DataFormatter.py,sha256=qdPtLPIQs9eCZ-hPBphan5CcPrR7Nz8h8cb7zF8F1j0,12050
|
|
59
59
|
agently/utils/DataLocator.py,sha256=ss8OLet9HN0U1PZb-OCHS6KL54kv7vFZph6G0-GBidk,6015
|
|
60
60
|
agently/utils/DataPathBuilder.py,sha256=sEzE1i2EWn7NMkCCXDT50gR6_qMzcZ0y0YGkYbXdB3s,10007
|
|
61
61
|
agently/utils/FunctionShifter.py,sha256=quwugTmf-vzHzRR_2wdv14AxLpr0lwxdUtVoX7Jeq48,5839
|
|
@@ -63,14 +63,15 @@ agently/utils/GeneratorConsumer.py,sha256=EXpz2XGnv6rPdz8bPetJu3LpWIVhMvIi8GLG1B
|
|
|
63
63
|
agently/utils/LazyImport.py,sha256=PfXc2iILXb7WVj6UD45_3qInow6z0cvhFlDqxTK-HfY,9120
|
|
64
64
|
agently/utils/Logger.py,sha256=reIj6a7mNtLYDx3brLKEf0I8LbNkhXmL8Yc-DXnnsCU,2967
|
|
65
65
|
agently/utils/Messenger.py,sha256=dLasJvDt1HxJttt6X9dutwGPvyAtL7yp6BZ3TDxuFDI,729
|
|
66
|
+
agently/utils/PythonSandbox.py,sha256=6HYbd64p8BnTysYQjUvumLf0YzEOq-7uhCuObAG3Q6U,3037
|
|
66
67
|
agently/utils/RuntimeData.py,sha256=SewZ8D1fljuDwfVZTAqZ0XTNEcU2cuAr7QlVqk0vzrE,21925
|
|
67
68
|
agently/utils/SerializableRuntimeData.py,sha256=bVVwin50VnOs30W881ClFepSXAK8GCOUZnVd-SiolRw,3314
|
|
68
|
-
agently/utils/Settings.py,sha256=
|
|
69
|
+
agently/utils/Settings.py,sha256=0vWNhVBKZLRKwuIKoXn-tYNZMajMQHLHdqrGhBA2S3Q,5854
|
|
69
70
|
agently/utils/Storage.py,sha256=E7QyNJ9T0yOUafPgdP90La698hgLMSGjhJ7qCEHzxxw,9438
|
|
70
71
|
agently/utils/StreamingJSONCompleter.py,sha256=aZ9zuGUTQlP-QKbXHUZCf6EtVuG49MKn8xdhw0VhDEA,4292
|
|
71
72
|
agently/utils/StreamingJSONParser.py,sha256=sPPJOtj5OYvsrukRErcoxRl4yuV1zDuf7pQ_pvw_Zow,21116
|
|
72
|
-
agently/utils/__init__.py,sha256=
|
|
73
|
-
agently-4.0.
|
|
74
|
-
agently-4.0.
|
|
75
|
-
agently-4.0.
|
|
76
|
-
agently-4.0.
|
|
73
|
+
agently/utils/__init__.py,sha256=Uq3uQdk2_OX_m6gF9wAvs4_scC-tsE4EjNTxN_oDagw,1321
|
|
74
|
+
agently-4.0.7.dist-info/METADATA,sha256=pBzUn8zbTtsZscLIDYNBaJ0IiCkEgzZ117Qzgh3TaLY,7110
|
|
75
|
+
agently-4.0.7.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
76
|
+
agently-4.0.7.dist-info/licenses/LICENSE,sha256=Y5ZgAdYgMFigPT8dhN18dTLRtBshOSfWhTDRO1t0Cq4,11360
|
|
77
|
+
agently-4.0.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|