lionagi 0.15.0__py3-none-any.whl → 0.15.1__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.
lionagi/ln/_async_call.py CHANGED
@@ -1,6 +1,7 @@
1
1
  import asyncio
2
+ from collections.abc import AsyncGenerator, Callable
2
3
  from dataclasses import dataclass
3
- from typing import Any, AsyncGenerator, Callable, ClassVar
4
+ from typing import Any, ClassVar
4
5
 
5
6
  import anyio
6
7
  from pydantic import BaseModel
lionagi/ln/_list_call.py CHANGED
@@ -1,5 +1,6 @@
1
+ from collections.abc import Callable, Iterable
1
2
  from dataclasses import dataclass
2
- from typing import Any, Callable, ClassVar, Iterable, TypeVar
3
+ from typing import Any, ClassVar, TypeVar
3
4
 
4
5
  from ._models import Params
5
6
  from ._to_list import to_list
lionagi/ln/_to_list.py CHANGED
@@ -1,6 +1,7 @@
1
+ from collections.abc import Iterable, Mapping
1
2
  from dataclasses import dataclass
2
3
  from enum import Enum as _Enum
3
- from typing import Any, ClassVar, Iterable, Mapping
4
+ from typing import Any, ClassVar
4
5
 
5
6
  from pydantic import BaseModel
6
7
  from pydantic_core import PydanticUndefinedType
lionagi/ln/_types.py CHANGED
@@ -31,7 +31,7 @@ class _SingletonMeta(type):
31
31
  allowing safe identity checks with 'is' operator.
32
32
  """
33
33
 
34
- _cache: dict[type, "SingletonType"] = {}
34
+ _cache: dict[type, SingletonType] = {}
35
35
 
36
36
  def __call__(cls, *a, **kw):
37
37
  if cls not in cls._cache:
@@ -1,6 +1,7 @@
1
1
  import asyncio
2
+ from collections.abc import Callable
2
3
  from functools import lru_cache
3
- from typing import Any, Callable
4
+ from typing import Any
4
5
 
5
6
  __all__ = ("is_coro_func",)
6
7
 
@@ -1,6 +1,7 @@
1
1
  from collections.abc import Callable
2
2
 
3
3
  from lionagi.protocols._concepts import Manager
4
+ from lionagi.utils import is_coro_func
4
5
 
5
6
  """
6
7
  experimental
@@ -8,14 +9,15 @@ experimental
8
9
 
9
10
 
10
11
  class OperationManager(Manager):
11
- def __init__(self, *args, **kwargs):
12
+ def __init__(self):
12
13
  super().__init__()
13
14
  self.registry: dict[str, Callable] = {}
14
- self.register_operations(*args, **kwargs)
15
15
 
16
- def register_operations(self, *args, **kwargs) -> None:
17
- operations = {}
18
- if args:
19
- operations = {i.__name__ for i in args if hasattr(i, "__name__")}
20
- operations.update(kwargs)
21
- self.registry.update(operations)
16
+ def register(self, operation: str, func: Callable, update: bool = False):
17
+ if operation in self.registry and not update:
18
+ raise ValueError(f"Operation '{operation}' is already registered.")
19
+ if not is_coro_func(func):
20
+ raise ValueError(
21
+ f"Operation '{operation}' must be an async function."
22
+ )
23
+ self.registry[operation] = func
@@ -26,7 +26,7 @@ logger = logging.getLogger("operation")
26
26
 
27
27
 
28
28
  class Operation(Node, Event):
29
- operation: BranchOperations
29
+ operation: BranchOperations | str
30
30
  parameters: dict[str, Any] | BaseModel = Field(
31
31
  default_factory=dict,
32
32
  description="Parameters for the operation",
@@ -74,12 +74,11 @@ class Operation(Node, Event):
74
74
  return self.execution.response if self.execution else None
75
75
 
76
76
  async def invoke(self, branch: Branch):
77
- meth = getattr(branch, self.operation, None)
77
+ meth = branch.get_operation(self.operation)
78
78
  if meth is None:
79
79
  raise ValueError(f"Unsupported operation type: {self.operation}")
80
80
 
81
81
  start = asyncio.get_event_loop().time()
82
-
83
82
  try:
84
83
  self.execution.status = EventStatus.PROCESSING
85
84
  self.branch_id = branch.id
@@ -2,11 +2,16 @@
2
2
  #
3
3
  # SPDX-License-Identifier: Apache-2.0
4
4
 
5
+ import contextlib
6
+ import json
5
7
  from enum import Enum
6
8
  from typing import Any
7
9
 
8
10
  from pydantic import Field, field_serializer
9
11
 
12
+ from lionagi.ln import Unset
13
+ from lionagi.utils import to_dict
14
+
10
15
  from .element import Element
11
16
 
12
17
  __all__ = (
@@ -16,6 +21,9 @@ __all__ = (
16
21
  )
17
22
 
18
23
 
24
+ _SIMPLE_TYPE = (str, bytes, bytearray, int, float, type(None), Enum)
25
+
26
+
19
27
  class EventStatus(str, Enum):
20
28
  """Status states for tracking action execution progress.
21
29
 
@@ -79,6 +87,44 @@ class Execution:
79
87
  f"response={self.response}, error={self.error})"
80
88
  )
81
89
 
90
+ def to_dict(self) -> dict:
91
+ """Converts the execution state to a dictionary.
92
+
93
+ Returns:
94
+ dict: A dictionary representation of the execution state.
95
+ """
96
+ res_ = Unset
97
+ json_serializable = True
98
+
99
+ if not isinstance(self.response, _SIMPLE_TYPE):
100
+ json_serializable = False
101
+ try:
102
+ # check whether response is JSON serializable
103
+ json.dumps(self.response)
104
+ res_ = self.response
105
+ json_serializable = True
106
+ except Exception:
107
+ with contextlib.suppress(Exception):
108
+ # attempt to convert to dict
109
+ d_ = to_dict(
110
+ self.response,
111
+ recursive=True,
112
+ recursive_python_only=False,
113
+ )
114
+ json.dumps(d_)
115
+ res_ = d_
116
+ json_serializable = True
117
+
118
+ if res_ is Unset and not json_serializable:
119
+ res_ = "<unserializable>"
120
+
121
+ return {
122
+ "status": self.status.value,
123
+ "duration": self.duration,
124
+ "response": res_ or self.response,
125
+ "error": self.error,
126
+ }
127
+
82
128
 
83
129
  class Event(Element):
84
130
  """Extends Element with an execution state.
@@ -101,12 +147,7 @@ class Event(Element):
101
147
  dict: The serialized data containing status, duration, response,
102
148
  and error fields.
103
149
  """
104
- return {
105
- "status": val.status.value,
106
- "duration": val.duration,
107
- "response": val.response,
108
- "error": val.error,
109
- }
150
+ return val.to_dict()
110
151
 
111
152
  @property
112
153
  def response(self) -> Any:
lionagi/session/branch.py CHANGED
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # SPDX-License-Identifier: Apache-2.0
4
4
 
5
- from collections.abc import AsyncGenerator
5
+ from collections.abc import AsyncGenerator, Callable
6
6
  from enum import Enum
7
7
  from typing import Any, Literal
8
8
 
@@ -14,6 +14,7 @@ from lionagi.config import settings
14
14
  from lionagi.fields import Instruct
15
15
  from lionagi.libs.schema.as_readable import as_readable
16
16
  from lionagi.models.field_model import FieldModel
17
+ from lionagi.operations.manager import OperationManager
17
18
  from lionagi.protocols.action.tool import FuncTool, Tool, ToolRef
18
19
  from lionagi.protocols.types import (
19
20
  ID,
@@ -49,7 +50,7 @@ from lionagi.settings import Settings
49
50
  from lionagi.tools.base import LionTool
50
51
  from lionagi.utils import UNDEFINED
51
52
  from lionagi.utils import alcall as alcall_legacy
52
- from lionagi.utils import copy
53
+ from lionagi.utils import copy, is_coro_func
53
54
 
54
55
  from .prompts import LION_SYSTEM_MESSAGE
55
56
 
@@ -111,6 +112,7 @@ class Branch(Element, Communicatable, Relational):
111
112
  _action_manager: ActionManager | None = PrivateAttr(None)
112
113
  _imodel_manager: iModelManager | None = PrivateAttr(None)
113
114
  _log_manager: LogManager | None = PrivateAttr(None)
115
+ _operation_manager: OperationManager | None = PrivateAttr(None)
114
116
 
115
117
  def __init__(
116
118
  self,
@@ -231,6 +233,8 @@ class Branch(Element, Communicatable, Relational):
231
233
  else:
232
234
  self._log_manager = LogManager(**Settings.Config.LOG, logs=logs)
233
235
 
236
+ self._operation_manager = OperationManager()
237
+
234
238
  # -------------------------------------------------------------------------
235
239
  # Properties to expose managers and core data
236
240
  # -------------------------------------------------------------------------
@@ -304,6 +308,11 @@ class Branch(Element, Communicatable, Relational):
304
308
  """
305
309
  return self._action_manager.registry
306
310
 
311
+ def get_operation(self, operation: str) -> Callable | None:
312
+ if hasattr(self, operation):
313
+ return getattr(self, operation)
314
+ return self._operation_manager.registry.get(operation)
315
+
307
316
  # -------------------------------------------------------------------------
308
317
  # Cloning
309
318
  # -------------------------------------------------------------------------
@@ -7,7 +7,7 @@ from collections.abc import Callable
7
7
  from typing import Any
8
8
 
9
9
  import pandas as pd
10
- from pydantic import Field, JsonValue, model_validator
10
+ from pydantic import Field, JsonValue, PrivateAttr, model_validator
11
11
  from typing_extensions import Self
12
12
 
13
13
  from lionagi.protocols.types import (
@@ -31,9 +31,9 @@ from lionagi.protocols.types import (
31
31
  )
32
32
 
33
33
  from .._errors import ItemNotFoundError
34
+ from ..ln import lcall
34
35
  from ..service.imodel import iModel
35
- from ..utils import lcall
36
- from .branch import Branch
36
+ from .branch import Branch, OperationManager
37
37
 
38
38
 
39
39
  class Session(Node, Communicatable, Relational):
@@ -56,6 +56,35 @@ class Session(Node, Communicatable, Relational):
56
56
  default_factory=MailManager, exclude=True
57
57
  )
58
58
  name: str = Field(default="Session")
59
+ user: SenderRecipient | None = None
60
+ _operation_manager: OperationManager = PrivateAttr(
61
+ default_factory=OperationManager
62
+ )
63
+
64
+ async def ainclude_branches(self, branches: ID[Branch].ItemSeq):
65
+ async with self.branches:
66
+ self.include_branches(branches)
67
+
68
+ def include_branches(self, branches: ID[Branch].ItemSeq):
69
+ def _take_in_branch(branch: Branch):
70
+ if not branch in self.branches:
71
+ self.branches.include(branch)
72
+ self.mail_manager.add_sources(branch)
73
+
74
+ branch.user = self.id
75
+ branch._operation_manager = self._operation_manager
76
+ if self.default_branch is None:
77
+ self.default_branch = branch
78
+
79
+ branches = [branches] if isinstance(branches, Branch) else branches
80
+
81
+ for i in branches:
82
+ _take_in_branch(i)
83
+
84
+ def register_operation(
85
+ self, operation: str, func: Callable, *, update: bool = False
86
+ ):
87
+ self._operation_manager.register(operation, func, update=update)
59
88
 
60
89
  @model_validator(mode="after")
61
90
  def _add_mail_sources(self) -> Self:
@@ -64,7 +93,7 @@ class Session(Node, Communicatable, Relational):
64
93
  if self.default_branch not in self.branches:
65
94
  self.branches.include(self.default_branch)
66
95
  if self.branches:
67
- self.mail_manager.add_sources(self.branches)
96
+ self.include_branches(self.branches)
68
97
  return self
69
98
 
70
99
  def _lookup_branch_by_name(self, name: str) -> Branch | None:
@@ -102,7 +131,8 @@ class Session(Node, Communicatable, Relational):
102
131
  progress: Progression = None,
103
132
  tool_manager: ActionManager = None,
104
133
  tools: Tool | Callable | list = None,
105
- **kwargs, # additional branch parameters
134
+ as_default_branch: bool = False,
135
+ **kwargs,
106
136
  ) -> Branch:
107
137
  kwargs["system"] = system
108
138
  kwargs["system_sender"] = system_sender
@@ -116,13 +146,9 @@ class Session(Node, Communicatable, Relational):
116
146
  kwargs["tools"] = tools
117
147
  kwargs = {k: v for k, v in kwargs.items() if v is not None}
118
148
 
119
- from .branch import Branch
120
-
121
149
  branch = Branch(**kwargs) # type: ignore
122
-
123
- self.branches.include(branch)
124
- self.mail_manager.add_sources(branch)
125
- if self.default_branch is None:
150
+ self.include_branches(branch)
151
+ if as_default_branch:
126
152
  self.default_branch = branch
127
153
  return branch
128
154
 
@@ -179,7 +205,7 @@ class Session(Node, Communicatable, Relational):
179
205
  """
180
206
  branch: Branch = self.branches[branch]
181
207
  branch_clone = branch.clone(sender=self.id)
182
- self.branches.append(branch_clone)
208
+ self.include_branches(branch_clone)
183
209
  return branch_clone
184
210
 
185
211
  def change_default_branch(self, branch: ID.Ref):
@@ -230,10 +256,11 @@ class Session(Node, Communicatable, Relational):
230
256
  lambda x: [
231
257
  i for i in self.branches[x].messages if i not in exclude_flag
232
258
  ],
233
- sanitize_input=True,
234
- flatten=True,
235
- unique_input=True,
236
- unique_output=True,
259
+ input_unique=True,
260
+ input_flatten=True,
261
+ input_dropna=True,
262
+ output_flatten=True,
263
+ output_unique=True,
237
264
  )
238
265
  return Pile(
239
266
  collections=messages, item_type={RoledMessage}, strict_type=False
@@ -269,14 +296,15 @@ class Session(Node, Communicatable, Relational):
269
296
  lcall(
270
297
  to_,
271
298
  lambda x: self.mail_manager.send(ID.get_id(x)),
272
- sanitize_input=True,
273
- unique_input=True,
274
- use_input_values=True,
299
+ input_unique=True,
300
+ input_flatten=True,
301
+ input_dropna=True,
302
+ input_use_values=True,
275
303
  )
276
304
  except Exception as e:
277
305
  raise ValueError(f"Failed to send mail. Error: {e}")
278
306
 
279
- async def acollect_send_all(self, receive_all: bool = False):
307
+ async def acollect_send_all(self, receive_all: bool = True):
280
308
  """
281
309
  Collect and send mail for all branches, optionally receiving all mail.
282
310
 
@@ -286,7 +314,7 @@ class Session(Node, Communicatable, Relational):
286
314
  async with self.mail_manager.sources:
287
315
  self.collect_send_all(receive_all)
288
316
 
289
- def collect_send_all(self, receive_all: bool = False):
317
+ def collect_send_all(self, receive_all: bool = True):
290
318
  """
291
319
  Collect and send mail for all branches, optionally receiving all mail.
292
320
 
@@ -296,7 +324,8 @@ class Session(Node, Communicatable, Relational):
296
324
  self.collect()
297
325
  self.send()
298
326
  if receive_all:
299
- lcall(self.branches, lambda x: x.receive_all())
327
+ for i in self.branches:
328
+ i.receive_all()
300
329
 
301
330
  def collect(self, from_: ID.RefSeq = None):
302
331
  """
@@ -316,9 +345,10 @@ class Session(Node, Communicatable, Relational):
316
345
  lcall(
317
346
  from_,
318
347
  lambda x: self.mail_manager.collect(ID.get_id(x)),
319
- sanitize_input=True,
320
- unique_input=True,
321
- use_input_values=True,
348
+ input_flatten=True,
349
+ input_dropna=True,
350
+ input_unique=True,
351
+ input_use_values=True,
322
352
  )
323
353
  except Exception as e:
324
354
  raise ValueError(f"Failed to collect mail. Error: {e}")
lionagi/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.15.0"
1
+ __version__ = "0.15.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.15.0
3
+ Version: 0.15.1
4
4
  Summary: An Intelligence Operating System.
5
5
  Author-email: HaiyangLi <quantocean.li@gmail.com>
6
6
  License: Apache License
@@ -6,7 +6,7 @@ lionagi/config.py,sha256=W3JOC_TFad8hFkpTG8yv0-GNupa7x3wX4NAUfWpB59U,3763
6
6
  lionagi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  lionagi/settings.py,sha256=HDuKCEJCpc4HudKodBnhoQUGuTGhRHdlIFhbtf3VBtY,1633
8
8
  lionagi/utils.py,sha256=Adtr1wyrU9Ra-HfHDoHLWasD6V88Z8sqkg2CQ8i8nzI,38686
9
- lionagi/version.py,sha256=wGIgxINRfcIKyk0LjIbc9UF9UwuclyCQZv_axTUzwNw,23
9
+ lionagi/version.py,sha256=PQVflpJdJDETGf2g1BB5OHCS_5KtgteERschfoSBtss,23
10
10
  lionagi/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  lionagi/adapters/async_postgres_adapter.py,sha256=Kf2YCzwRqKpEHY3GQCXEiMl201CCIkDvXcvddwZNkkE,12723
12
12
  lionagi/adapters/postgres_model_adapter.py,sha256=e_wfJNyihbpLCXuAs_W9tbLoMXAXbAXtkQDaHfqWz3o,4555
@@ -85,12 +85,12 @@ lionagi/libs/validate/to_num.py,sha256=ZRHDjpTCykPfDIZZa4rZKNaR_8ZHbPDFlw9rc02Dr
85
85
  lionagi/libs/validate/validate_boolean.py,sha256=bjiX_WZ3Bg8XcqoWLzE1G9BpO0AisrlZUxrpye_mlGk,3614
86
86
  lionagi/libs/validate/xml_parser.py,sha256=PHBYAre4hhthPpDP9Yrp3UYSWdANPx60F1qhxe0m4uw,7004
87
87
  lionagi/ln/__init__.py,sha256=N2wBLrZWUTfLAXFU2b0VbbByAmbW5Xwl42eIu0RaYWg,906
88
- lionagi/ln/_async_call.py,sha256=9Uxuwy0J2wrCAy5TCSDcrTdbJNTWP1W2sxe3TAF8BrM,9264
88
+ lionagi/ln/_async_call.py,sha256=O4eY4UehsaamueWVCl6asfs8QAx3FXeVWTB4Nbwnpqk,9291
89
89
  lionagi/ln/_hash.py,sha256=g20yJfuVhAsfsBOWlkO889DHte6cbUCl6vV5QMT8nUo,3499
90
- lionagi/ln/_list_call.py,sha256=7sPPh4Ei7T_eeJxLHSmckZNrRbA8BadOk1IIF9NU5qQ,3908
90
+ lionagi/ln/_list_call.py,sha256=oDCyTzz7F7KVAMjekKftJp7qgIZ9Yo8BUNMHasKoJhU,3935
91
91
  lionagi/ln/_models.py,sha256=23RD2PPMfGNN0JqeHy0s1haRF2H3iF8Vb-_xz9Idvmc,3985
92
- lionagi/ln/_to_list.py,sha256=VngZPuqLV4sRhp5TsnZVTrhHi8iO5cxcsQGNk0-3yig,5573
93
- lionagi/ln/_types.py,sha256=nDit5mM2sKPRMjRCR5LG_h-68jJlzZtDn5EvJreXYAQ,3609
92
+ lionagi/ln/_to_list.py,sha256=DKjZAah6pm6frHls773yTMVK1I3OY7qxwLemOjRPr5A,5600
93
+ lionagi/ln/_types.py,sha256=usVaL2tGnYVQ2W12eUhJYiXY-m55b_5e0tUOFcuDtkc,3607
94
94
  lionagi/ln/concurrency/__init__.py,sha256=cW3Hw5DvV6AVUdC7N6QI0iTF2cIJMjH8Hp5jCBggBbU,1237
95
95
  lionagi/ln/concurrency/cancel.py,sha256=TYLxQ1D7mqhs8J4qJ_yTqP0j01zBe-Qed8-YnJlgKi0,4018
96
96
  lionagi/ln/concurrency/errors.py,sha256=FhLgXGFSbKZYPNfXjdnkV-0ShPF_S34RBLyTO_Pk5C8,938
@@ -99,7 +99,7 @@ lionagi/ln/concurrency/primitives.py,sha256=fgml37nggaEGuvAJHQY6-rpSuAuei56YVSjT
99
99
  lionagi/ln/concurrency/resource_tracker.py,sha256=52Rq7yMWK7DlebBW90imSjYeEAp8Gp9nL0dG2PD8Ivs,5464
100
100
  lionagi/ln/concurrency/task.py,sha256=nVts_yPylkZVSk3l3I4MkUdC7rhoN2qQeFfrsvekVgE,3146
101
101
  lionagi/ln/concurrency/throttle.py,sha256=Ho5zh_3beSXi9cMDDj70xz447BLzBJVopnUlQ18k9Lc,2198
102
- lionagi/ln/concurrency/utils.py,sha256=uQ7JFpdPNDTD2IUY0GnFzVYPPiQuFWWxdyq9moFdCzQ,319
102
+ lionagi/ln/concurrency/utils.py,sha256=4TvDnPKhtbesb6YWZ9QlhskiOb07ai_eJ-PrmqY14IE,346
103
103
  lionagi/models/__init__.py,sha256=R7DEGWuhH-izP7eN6SOw24-I4Mr2IVPXF4gNysmF2zQ,457
104
104
  lionagi/models/field_model.py,sha256=pRFUYs72BRB6jo4NkgeqslCp0xwqzvh00ibh8uaMAws,23674
105
105
  lionagi/models/hashable_model.py,sha256=oOqR3OJCU9cJfWHiG0WaEw0GMqfE2WTt4cy7WsAsiRg,829
@@ -110,8 +110,8 @@ lionagi/models/schema_model.py,sha256=ghRIM8aBNaToAknwNlhQKpuKXcwzyCw5pDE31bVKxs
110
110
  lionagi/operations/__init__.py,sha256=L22n8rRls9oVdzHoDlznHFGiKJMNw3ZhbwVQbm1Fn6M,584
111
111
  lionagi/operations/builder.py,sha256=_fIW5OqPTTond1VUapMMtEwsWmIuTAKy34K24uuK6EQ,22790
112
112
  lionagi/operations/flow.py,sha256=PNEIGVVTKoXVPbtNcoNNO72-NgtGCx1xMsL7JATeH0M,17561
113
- lionagi/operations/manager.py,sha256=7KD6NMWqYJHCPI2LumDRwGinF8WYKFjrr3bsNUi9xzI,564
114
- lionagi/operations/node.py,sha256=_PAN7qdGGdzyh97wRYEoTcZzD3giN7f5yuyKNP_snyk,3131
113
+ lionagi/operations/manager.py,sha256=YZr3VjPAZVVFd_bIjF1aoQqzzKZHNA1kcqefNi5QFFM,683
114
+ lionagi/operations/node.py,sha256=1cKcuAWwbuR5VJqF9oh9o898wO31ky0ev69m3UmnBAI,3135
115
115
  lionagi/operations/types.py,sha256=fM8HphnbBifMzhoKKvdl3JxGCBHlEGPJEYkLWj9b7vE,704
116
116
  lionagi/operations/utils.py,sha256=b8HmpF5vRgmf6PTzg3_fZCIKMnhoGa0HCyOlX6JCz7g,1263
117
117
  lionagi/operations/ReAct/ReAct.py,sha256=UzW3MClv9_w1AqrZIuATOZ9ASTb8HPD0Rlotlp0mYOg,13388
@@ -156,7 +156,7 @@ lionagi/protocols/forms/form.py,sha256=B4903km_Ljz-OxYkb1ZT_cpHZSaAYYJpZMsffWloo
156
156
  lionagi/protocols/forms/report.py,sha256=SvJJjOSCTfVuqK7AKaY8ldQIGJeSK2zoyPWUV41ge2c,1609
157
157
  lionagi/protocols/generic/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
158
158
  lionagi/protocols/generic/element.py,sha256=Eaij2YpTWsGk28Tqjazmjmc_tOnalH7_iGFZrL6QJb4,14420
159
- lionagi/protocols/generic/event.py,sha256=lA-NkpK87Rj7usi22cNqEZee8aRjPwaWKy_aXxdLQ54,5252
159
+ lionagi/protocols/generic/event.py,sha256=hoMWMnis2Ih6xbkBGVydP_TzfDurcJUDovkdZjEseN0,6517
160
160
  lionagi/protocols/generic/log.py,sha256=Y06zAQewkNlaIWjut_c6c45KY_LJfLHwzUaDGLULaas,8212
161
161
  lionagi/protocols/generic/pile.py,sha256=rzhKytyizb5xoyBOeAtDwvLZQhGR04NkgLyr3O_XzS8,30418
162
162
  lionagi/protocols/generic/processor.py,sha256=c_a7HB9WAaCY-HoI19YyStef8WOXcDj9UeiQb5bz_TM,11759
@@ -225,16 +225,16 @@ lionagi/service/third_party/exa_models.py,sha256=G_hnekcy-DillPLzMoDQ8ZisVAL8Mp7
225
225
  lionagi/service/third_party/openai_model_names.py,sha256=C44tnqexgc4ZU2-3I_sn5d688hf3WWx-25xBd50bvas,5121
226
226
  lionagi/service/third_party/pplx_models.py,sha256=-EhyJgOWR6rzSv3zczUtk80X6c19p18Dg9KC6l8BFRQ,6473
227
227
  lionagi/session/__init__.py,sha256=kDypY6L3kGPnatAw7YNQAykgg-9MlIBnlhHExaXvt-c,202
228
- lionagi/session/branch.py,sha256=y-zcauql7z5sgGpeWY1ZBgXOwHNCJ2_snB2haYbWls8,67918
228
+ lionagi/session/branch.py,sha256=yfOtMITbtKzGAcxwZ5JjkXrKtb2PBGRPt53xqbR0lAs,68329
229
229
  lionagi/session/prompts.py,sha256=GPr0jibyAAqS3awDzGC8SoCL6aWJLLCCbXY0JUuxOC0,3170
230
- lionagi/session/session.py,sha256=Gc31wPLFdBOMRs3zEs11KVShvDtLUAqqhbhMoySptqo,11379
230
+ lionagi/session/session.py,sha256=C66yzISZh7r6reAIOOCg3JxQuSKYDHos7b_skNRpO2s,12481
231
231
  lionagi/tools/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
232
232
  lionagi/tools/base.py,sha256=hEGnE4MD0CM4UqnF0xsDRKB0aM-pyrTFHl8utHhyJLU,1897
233
233
  lionagi/tools/types.py,sha256=XtJLY0m-Yi_ZLWhm0KycayvqMCZd--HxfQ0x9vFUYDE,230
234
234
  lionagi/tools/file/__init__.py,sha256=5y5joOZzfFWERl75auAcNcKC3lImVJ5ZZGvvHZUFCJM,112
235
235
  lionagi/tools/file/reader.py,sha256=jnSHVSQ66AHZXQrgRuGmlbwKT5JHYoo-1zv1hKgTEfc,9544
236
236
  lionagi/tools/memory/tools.py,sha256=earYkKxSOz_iXkqVZYTEDfE3dwZYIWPXZrqQ1DYGz4I,15941
237
- lionagi-0.15.0.dist-info/METADATA,sha256=FWxuYuHT-118nRA9A2DEup_2Sx1kIleHZYYCYn27w4I,22913
238
- lionagi-0.15.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
239
- lionagi-0.15.0.dist-info/licenses/LICENSE,sha256=VXFWsdoN5AAknBCgFqQNgPWYx7OPp-PFEP961zGdOjc,11288
240
- lionagi-0.15.0.dist-info/RECORD,,
237
+ lionagi-0.15.1.dist-info/METADATA,sha256=f7nShb1IWGDEwY_PmbpvJWfLnmKCClalfhKy4fSYljw,22913
238
+ lionagi-0.15.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
239
+ lionagi-0.15.1.dist-info/licenses/LICENSE,sha256=VXFWsdoN5AAknBCgFqQNgPWYx7OPp-PFEP961zGdOjc,11288
240
+ lionagi-0.15.1.dist-info/RECORD,,