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.
Files changed (30) hide show
  1. agently/base.py +3 -5
  2. agently/builtins/agent_extensions/ConfigurePromptExtension.py +40 -9
  3. agently/builtins/hookers/SystemMessageHooker.py +51 -7
  4. agently/builtins/plugins/ModelRequester/OpenAICompatible.py +32 -0
  5. agently/builtins/plugins/PromptGenerator/AgentlyPromptGenerator.py +64 -1
  6. agently/builtins/plugins/ResponseParser/AgentlyResponseParser.py +22 -14
  7. agently/core/Agent.py +67 -27
  8. agently/core/ModelRequest.py +216 -26
  9. agently/core/PluginManager.py +2 -0
  10. agently/core/Prompt.py +15 -45
  11. agently/core/TriggerFlow/BluePrint.py +2 -0
  12. agently/core/TriggerFlow/Chunk.py +5 -4
  13. agently/core/TriggerFlow/Execution.py +29 -12
  14. agently/core/TriggerFlow/TriggerFlow.py +24 -10
  15. agently/core/TriggerFlow/process/BaseProcess.py +63 -21
  16. agently/core/TriggerFlow/process/ForEachProcess.py +30 -24
  17. agently/core/TriggerFlow/process/MatchCaseProcess.py +6 -6
  18. agently/integrations/chromadb.py +15 -0
  19. agently/types/data/response.py +10 -1
  20. agently/types/plugins/PromptGenerator.py +5 -1
  21. agently/types/plugins/ResponseParser.py +26 -6
  22. agently/types/trigger_flow/trigger_flow.py +6 -6
  23. agently/utils/DataFormatter.py +77 -0
  24. agently/utils/PythonSandbox.py +101 -0
  25. agently/utils/Settings.py +19 -2
  26. agently/utils/__init__.py +1 -0
  27. {agently-4.0.6.7.dist-info → agently-4.0.7.dist-info}/METADATA +1 -1
  28. {agently-4.0.6.7.dist-info → agently-4.0.7.dist-info}/RECORD +30 -29
  29. {agently-4.0.6.7.dist-info → agently-4.0.7.dist-info}/WHEEL +0 -0
  30. {agently-4.0.6.7.dist-info → agently-4.0.7.dist-info}/licenses/LICENSE +0 -0
@@ -24,7 +24,16 @@ if TYPE_CHECKING:
24
24
  from agently.types.data.serializable import SerializableValue
25
25
 
26
26
  AgentlyModelResponseEvent = Literal[
27
- "error", "original_delta", "delta", "tool_calls", "original_done", "done", "meta", "extra"
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", "typed_delta", "original"],
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", "typed_delta", "instant", "streaming_parse"] | None = "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", "typed_delta", "instant", "streaming_parse"] | None = "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", "typed_delta", "original"],
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", "typed_delta", "instant", "streaming_parse"] | None = "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", "typed_delta", "instant", "streaming_parse"] | None = "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
- layer_marks: list[str] | None = None,
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.layer_marks = layer_marks if layer_marks is not None else []
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.layer_marks[-2] if len(self.layer_marks) > 1 else None
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.layer_marks[-1] if len(self.layer_marks) > 0 else None
91
+ return self._layer_marks[-1] if len(self._layer_marks) > 0 else None
92
92
 
93
93
  def layer_in(self):
94
- self.layer_marks.append(uuid.uuid4().hex)
94
+ self._layer_marks.append(uuid.uuid4().hex)
95
95
 
96
96
  def layer_out(self):
97
- self.layer_marks = self.layer_marks[:-1] if len(self.layer_marks) > 0 else []
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]
@@ -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 agently.utils import SerializableRuntimeData, SerializableRuntimeDataNamespace
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
@@ -27,3 +27,4 @@ from .DataLocator import DataLocator
27
27
  from .GeneratorConsumer import GeneratorConsumer
28
28
  from .StreamingJSONCompleter import StreamingJSONCompleter
29
29
  from .StreamingJSONParser import StreamingJSONParser
30
+ from .PythonSandbox import PythonSandbox
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agently
3
- Version: 4.0.6.7
3
+ Version: 4.0.7
4
4
  Summary:
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -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=PY-HgIQesv3_oBsU25Fwe96C35C4GgpaFdxLBUwh-AA,4692
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=A5rYGTa0oSh1N0CdtHQSypFJqcQJm5v5CcCWRnI7iP0,10190
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=nU5rOzcuXKdaTXWix3jhZ-4QoD4cMQJZo02wNTpZpjI,5396
14
- agently/builtins/plugins/ModelRequester/OpenAICompatible.py,sha256=xX-iy3qgToD8jIrPsL1NufMb6dlf0SVmX0rPjAkPSQ0,25261
15
- agently/builtins/plugins/PromptGenerator/AgentlyPromptGenerator.py,sha256=KMlXKH44MExTaGnu5cmLtvYT3aXOQiXOZN-F4JeVnJE,28514
16
- agently/builtins/plugins/ResponseParser/AgentlyResponseParser.py,sha256=FEhfsiHB4Bx7HfghnObklLj08j8IVwGh0WEVD6U-G3U,17445
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=HbUqlCWFgtziavN8r-2RFQyrbHMMxKA6y-io-0CY8TA,9022
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=rB8LQ2_7TJlOHZQ6jIKSfXDDQar7dv_bi8g7xpIoUN4,17355
26
- agently/core/PluginManager.py,sha256=oUnXbe1ilQTOWwnENxtGtV6wG-yZriCxniqfuxuTFO0,4354
27
- agently/core/Prompt.py,sha256=8SlqytnAIM_FIWbY2Jx-T7yOs_jqmkz9cux8-2iOCjA,8023
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=Lz-wbA0f79t7VjvX0knH-9AC_Qz9wts0QFemL97R3jo,4810
30
- agently/core/TriggerFlow/Chunk.py,sha256=i5oTT9-dI-mXI6vbWwnQZ5e1ryGgZDYsyE9ALqbS2tQ,1555
31
- agently/core/TriggerFlow/Execution.py,sha256=9up20Jim7KyHsRJUMckvPa8G68Q5ipMKn34wIxx5OKA,11637
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=03xC1EdWiNfnRbAocH-97JcxyzfCnChivI1KmvPt6-E,7671
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=FOYfpQGdWrCe0cd-qbWK_bpNCQCHOULnZvzH36C8Kls,13650
36
- agently/core/TriggerFlow/process/ForEachProcess.py,sha256=oBI7KIpnj2tbczt_cTJCNvS793Xjif9_31ytkrEzQlE,4546
37
- agently/core/TriggerFlow/process/MatchCaseProcess.py,sha256=-NpbAlXq054juNkFCsDdWsIBMoHHKV1-cEsgndcd9KY,7888
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=hLrjwsU_d4SOGRX0bf-55uiA73YarIzRa8ORFnwu3W8,9797
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=vjKIILaVyd5TVz5nvmytVRJPZg-RP0sRydhg_AzU6y0,3700
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=45jmVzAkyl1Yj2M8RVfQM_zFAJZP4zrPuQkHbWIQSRQ,4531
52
- agently/types/plugins/ResponseParser.py,sha256=_IRbQhT-G1ZNg2zkJgCYNF5qRaIzrDfbxLC7kO-tdK4,3984
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=uDUZiila_4Rr41zUlzR4QqaRaraC43XTFfj-jnnG2G0,3787
58
- agently/utils/DataFormatter.py,sha256=0P92t81vnp-rJSJvlbTF3yM-PRiteB19BNEQ8cmvmns,9444
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=_s300H2doCMKcvMAmFwW3cLQqmd0N8BVmb226tAfVec,5294
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=7MDln5OVkqFEdhhuG8VTdr2q02UWwCj-udndwzWV_iQ,1280
73
- agently-4.0.6.7.dist-info/METADATA,sha256=LZiqVCSE6wlDUhct8N33KtNf1M8Qs8aWFQHCCB3oAmo,7112
74
- agently-4.0.6.7.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
75
- agently-4.0.6.7.dist-info/licenses/LICENSE,sha256=Y5ZgAdYgMFigPT8dhN18dTLRtBshOSfWhTDRO1t0Cq4,11360
76
- agently-4.0.6.7.dist-info/RECORD,,
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,,