lionagi 0.15.0__tar.gz → 0.15.1__tar.gz

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 (313) hide show
  1. {lionagi-0.15.0 → lionagi-0.15.1}/PKG-INFO +1 -1
  2. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/_async_call.py +2 -1
  3. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/_list_call.py +2 -1
  4. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/_to_list.py +2 -1
  5. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/_types.py +1 -1
  6. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/concurrency/utils.py +2 -1
  7. lionagi-0.15.1/lionagi/operations/manager.py +23 -0
  8. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/node.py +2 -3
  9. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/generic/event.py +47 -6
  10. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/session/branch.py +11 -2
  11. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/session/session.py +55 -25
  12. lionagi-0.15.1/lionagi/version.py +1 -0
  13. {lionagi-0.15.0 → lionagi-0.15.1}/pyproject.toml +1 -1
  14. {lionagi-0.15.0 → lionagi-0.15.1}/uv.lock +1 -1
  15. lionagi-0.15.0/lionagi/operations/manager.py +0 -21
  16. lionagi-0.15.0/lionagi/version.py +0 -1
  17. {lionagi-0.15.0 → lionagi-0.15.1}/.coveragerc +0 -0
  18. {lionagi-0.15.0 → lionagi-0.15.1}/.env.example +0 -0
  19. {lionagi-0.15.0 → lionagi-0.15.1}/.github/FUNDING.yml +0 -0
  20. {lionagi-0.15.0 → lionagi-0.15.1}/.github/dependabot.yml +0 -0
  21. {lionagi-0.15.0 → lionagi-0.15.1}/.github/workflows/ci.yml +0 -0
  22. {lionagi-0.15.0 → lionagi-0.15.1}/.github/workflows/codeql.yml +0 -0
  23. {lionagi-0.15.0 → lionagi-0.15.1}/.github/workflows/docs.yml +0 -0
  24. {lionagi-0.15.0 → lionagi-0.15.1}/.github/workflows/release.yml +0 -0
  25. {lionagi-0.15.0 → lionagi-0.15.1}/.gitignore +0 -0
  26. {lionagi-0.15.0 → lionagi-0.15.1}/.pre-commit-config.yaml +0 -0
  27. {lionagi-0.15.0 → lionagi-0.15.1}/.python-version +0 -0
  28. {lionagi-0.15.0 → lionagi-0.15.1}/CODE_OF_CONDUCT.md +0 -0
  29. {lionagi-0.15.0 → lionagi-0.15.1}/CONTRIBUTING.md +0 -0
  30. {lionagi-0.15.0 → lionagi-0.15.1}/LICENSE +0 -0
  31. {lionagi-0.15.0 → lionagi-0.15.1}/README.md +0 -0
  32. {lionagi-0.15.0 → lionagi-0.15.1}/assets/operation_builder.gif +0 -0
  33. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/001_branch_converse.ipynb +0 -0
  34. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/002_branch_interact.ipynb +0 -0
  35. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/003_branch_info.ipynb +0 -0
  36. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/004_conversation_patterns.ipynb +0 -0
  37. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/005_react_basics.ipynb +0 -0
  38. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/006_operation_graphs_claim_extraction.ipynb +0 -0
  39. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/007_fan_out_in.py +0 -0
  40. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/claude_proxy/README.md +0 -0
  41. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/claude_proxy/claude_code_proxy.py +0 -0
  42. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/claude_proxy/run_w_claude_code_proxy.ipynb +0 -0
  43. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/data/002_comedian.json +0 -0
  44. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/data/002_critic.json +0 -0
  45. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/data/006_lion_proof_ch2.md +0 -0
  46. {lionagi-0.15.0 → lionagi-0.15.1}/cookbooks/using_claude_code.py +0 -0
  47. {lionagi-0.15.0 → lionagi-0.15.1}/docs/Makefile +0 -0
  48. {lionagi-0.15.0 → lionagi-0.15.1}/docs/_static/custom.css +0 -0
  49. {lionagi-0.15.0 → lionagi-0.15.1}/docs/_templates/layout.html +0 -0
  50. {lionagi-0.15.0 → lionagi-0.15.1}/docs/conf.py +0 -0
  51. {lionagi-0.15.0 → lionagi-0.15.1}/docs/discussions/anyio-migration.md +0 -0
  52. {lionagi-0.15.0 → lionagi-0.15.1}/docs/index.rst +0 -0
  53. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/action.rst +0 -0
  54. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/adapter.rst +0 -0
  55. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/branch.rst +0 -0
  56. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/branch_operations.rst +0 -0
  57. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/concepts.rst +0 -0
  58. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/element_id.rst +0 -0
  59. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/event.rst +0 -0
  60. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/form.rst +0 -0
  61. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/graph.rst +0 -0
  62. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/index.rst +0 -0
  63. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/instruct.rst +0 -0
  64. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/lib_file.rst +0 -0
  65. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/lib_nested.rst +0 -0
  66. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/lib_package.rst +0 -0
  67. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/lib_schema.rst +0 -0
  68. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/lib_validate.rst +0 -0
  69. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/log.rst +0 -0
  70. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/mail.rst +0 -0
  71. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/message.rst +0 -0
  72. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/models.rst +0 -0
  73. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/operative_step.rst +0 -0
  74. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/pile.rst +0 -0
  75. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/processor.rst +0 -0
  76. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/progression.rst +0 -0
  77. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/service.rst +0 -0
  78. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/session.rst +0 -0
  79. {lionagi-0.15.0 → lionagi-0.15.1}/docs/modules/utils.rst +0 -0
  80. {lionagi-0.15.0 → lionagi-0.15.1}/docs/tutorials/get_started.rst +0 -0
  81. {lionagi-0.15.0 → lionagi-0.15.1}/docs/tutorials/get_started_pt2.rst +0 -0
  82. {lionagi-0.15.0 → lionagi-0.15.1}/docs/tutorials/get_started_pt3.rst +0 -0
  83. {lionagi-0.15.0 → lionagi-0.15.1}/docs/tutorials/index.rst +0 -0
  84. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/__init__.py +0 -0
  85. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/_class_registry.py +0 -0
  86. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/_errors.py +0 -0
  87. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/_types.py +0 -0
  88. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/adapters/__init__.py +0 -0
  89. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/adapters/async_postgres_adapter.py +0 -0
  90. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/adapters/postgres_model_adapter.py +0 -0
  91. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/config.py +0 -0
  92. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/fields/__init__.py +0 -0
  93. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/fields/action.py +0 -0
  94. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/fields/base.py +0 -0
  95. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/fields/code.py +0 -0
  96. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/fields/file.py +0 -0
  97. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/fields/instruct.py +0 -0
  98. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/fields/reason.py +0 -0
  99. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/fields/research.py +0 -0
  100. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/__init__.py +0 -0
  101. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/concurrency.py +0 -0
  102. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/file/__init__.py +0 -0
  103. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/file/chunk.py +0 -0
  104. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/file/concat.py +0 -0
  105. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/file/concat_files.py +0 -0
  106. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/file/file_ops.py +0 -0
  107. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/file/params.py +0 -0
  108. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/file/process.py +0 -0
  109. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/file/save.py +0 -0
  110. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/nested/__init__.py +0 -0
  111. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/nested/flatten.py +0 -0
  112. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/nested/nfilter.py +0 -0
  113. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/nested/nget.py +0 -0
  114. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/nested/ninsert.py +0 -0
  115. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/nested/nmerge.py +0 -0
  116. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/nested/npop.py +0 -0
  117. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/nested/nset.py +0 -0
  118. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/nested/unflatten.py +0 -0
  119. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/nested/utils.py +0 -0
  120. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/package/__init__.py +0 -0
  121. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/package/imports.py +0 -0
  122. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/package/management.py +0 -0
  123. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/package/params.py +0 -0
  124. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/package/system.py +0 -0
  125. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/parse.py +0 -0
  126. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/schema/__init__.py +0 -0
  127. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/schema/as_readable.py +0 -0
  128. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/schema/extract_code_block.py +0 -0
  129. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/schema/extract_docstring.py +0 -0
  130. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/schema/function_to_schema.py +0 -0
  131. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/schema/json_schema.py +0 -0
  132. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/schema/load_pydantic_model_from_schema.py +0 -0
  133. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/__init__.py +0 -0
  134. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/base.py +0 -0
  135. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/llmlingua.py +0 -0
  136. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/perplexity.py +0 -0
  137. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/symbolic_compress_context.py +0 -0
  138. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang.py +0 -0
  139. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/base.py +0 -0
  140. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/resources/frameworks/abstract_algebra.toml +0 -0
  141. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/resources/frameworks/category_theory.toml +0 -0
  142. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/resources/frameworks/complex_analysis.toml +0 -0
  143. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/resources/frameworks/framework_options.json +0 -0
  144. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/resources/frameworks/group_theory.toml +0 -0
  145. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/resources/frameworks/math_logic.toml +0 -0
  146. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/resources/frameworks/reflective_patterns.toml +0 -0
  147. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/resources/frameworks/set_theory.toml +0 -0
  148. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/resources/frameworks/topology_fundamentals.toml +0 -0
  149. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/resources/mapping/lion_emoji_mapping.toml +0 -0
  150. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/resources/mapping/python_math_mapping.toml +0 -0
  151. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/resources/mapping/rust_chinese_mapping.toml +0 -0
  152. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/resources/utility/base_synthlang_system_prompt.toml +0 -0
  153. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/synthlang_/translate_to_synthlang.py +0 -0
  154. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/token_transform/types.py +0 -0
  155. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/unstructured/__init__.py +0 -0
  156. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/unstructured/pdf_to_image.py +0 -0
  157. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/unstructured/read_image_to_base64.py +0 -0
  158. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/validate/__init__.py +0 -0
  159. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/validate/common_field_validators.py +0 -0
  160. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/validate/fuzzy_match_keys.py +0 -0
  161. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/validate/fuzzy_validate_mapping.py +0 -0
  162. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/validate/string_similarity.py +0 -0
  163. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/validate/to_num.py +0 -0
  164. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/validate/validate_boolean.py +0 -0
  165. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/libs/validate/xml_parser.py +0 -0
  166. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/__init__.py +0 -0
  167. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/_hash.py +0 -0
  168. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/_models.py +0 -0
  169. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/concurrency/__init__.py +0 -0
  170. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/concurrency/cancel.py +0 -0
  171. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/concurrency/errors.py +0 -0
  172. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/concurrency/patterns.py +0 -0
  173. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/concurrency/primitives.py +0 -0
  174. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/concurrency/resource_tracker.py +0 -0
  175. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/concurrency/task.py +0 -0
  176. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/ln/concurrency/throttle.py +0 -0
  177. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/models/__init__.py +0 -0
  178. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/models/field_model.py +0 -0
  179. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/models/hashable_model.py +0 -0
  180. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/models/model_params.py +0 -0
  181. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/models/note.py +0 -0
  182. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/models/operable_model.py +0 -0
  183. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/models/schema_model.py +0 -0
  184. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/ReAct/ReAct.py +0 -0
  185. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/ReAct/__init__.py +0 -0
  186. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/ReAct/utils.py +0 -0
  187. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/__init__.py +0 -0
  188. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/_act/__init__.py +0 -0
  189. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/_act/act.py +0 -0
  190. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/brainstorm/__init__.py +0 -0
  191. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/brainstorm/brainstorm.py +0 -0
  192. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/brainstorm/prompt.py +0 -0
  193. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/builder.py +0 -0
  194. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/chat/__init__.py +0 -0
  195. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/chat/chat.py +0 -0
  196. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/communicate/__init__.py +0 -0
  197. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/communicate/communicate.py +0 -0
  198. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/flow.py +0 -0
  199. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/instruct/__init__.py +0 -0
  200. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/instruct/instruct.py +0 -0
  201. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/interpret/__init__.py +0 -0
  202. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/interpret/interpret.py +0 -0
  203. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/operate/__init__.py +0 -0
  204. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/operate/operate.py +0 -0
  205. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/parse/__init__.py +0 -0
  206. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/parse/parse.py +0 -0
  207. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/plan/__init__.py +0 -0
  208. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/plan/plan.py +0 -0
  209. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/plan/prompt.py +0 -0
  210. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/select/__init__.py +0 -0
  211. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/select/select.py +0 -0
  212. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/select/utils.py +0 -0
  213. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/translate/__init__.py +0 -0
  214. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/translate/translate.py +0 -0
  215. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/types.py +0 -0
  216. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/operations/utils.py +0 -0
  217. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/__init__.py +0 -0
  218. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/_concepts.py +0 -0
  219. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/action/__init__.py +0 -0
  220. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/action/function_calling.py +0 -0
  221. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/action/manager.py +0 -0
  222. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/action/tool.py +0 -0
  223. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/forms/__init__.py +0 -0
  224. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/forms/base.py +0 -0
  225. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/forms/flow.py +0 -0
  226. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/forms/form.py +0 -0
  227. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/forms/report.py +0 -0
  228. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/generic/__init__.py +0 -0
  229. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/generic/element.py +0 -0
  230. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/generic/log.py +0 -0
  231. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/generic/pile.py +0 -0
  232. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/generic/processor.py +0 -0
  233. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/generic/progression.py +0 -0
  234. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/graph/__init__.py +0 -0
  235. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/graph/edge.py +0 -0
  236. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/graph/graph.py +0 -0
  237. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/graph/node.py +0 -0
  238. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/mail/__init__.py +0 -0
  239. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/mail/exchange.py +0 -0
  240. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/mail/mail.py +0 -0
  241. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/mail/mailbox.py +0 -0
  242. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/mail/manager.py +0 -0
  243. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/mail/package.py +0 -0
  244. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/__init__.py +0 -0
  245. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/action_request.py +0 -0
  246. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/action_response.py +0 -0
  247. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/assistant_response.py +0 -0
  248. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/base.py +0 -0
  249. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/instruction.py +0 -0
  250. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/manager.py +0 -0
  251. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/message.py +0 -0
  252. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/system.py +0 -0
  253. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/templates/README.md +0 -0
  254. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
  255. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
  256. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
  257. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
  258. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
  259. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
  260. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/operatives/__init__.py +0 -0
  261. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/operatives/operative.py +0 -0
  262. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/operatives/step.py +0 -0
  263. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/protocols/types.py +0 -0
  264. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/py.typed +0 -0
  265. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/__init__.py +0 -0
  266. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/__init__.py +0 -0
  267. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/api_calling.py +0 -0
  268. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/endpoint.py +0 -0
  269. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/endpoint_config.py +0 -0
  270. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/header_factory.py +0 -0
  271. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/match_endpoint.py +0 -0
  272. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/providers/__init__.py +0 -0
  273. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/providers/anthropic_.py +0 -0
  274. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/providers/claude_code_.py +0 -0
  275. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/providers/claude_code_cli.py +0 -0
  276. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/providers/exa_.py +0 -0
  277. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/providers/oai_.py +0 -0
  278. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/providers/ollama_.py +0 -0
  279. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/providers/perplexity_.py +0 -0
  280. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/connections/providers/types.py +0 -0
  281. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/hooks/__init__.py +0 -0
  282. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/hooks/_types.py +0 -0
  283. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/hooks/_utils.py +0 -0
  284. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/hooks/hook_event.py +0 -0
  285. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/hooks/hook_registry.py +0 -0
  286. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/imodel.py +0 -0
  287. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/manager.py +0 -0
  288. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/rate_limited_processor.py +0 -0
  289. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/resilience.py +0 -0
  290. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/third_party/README.md +0 -0
  291. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/third_party/__init__.py +0 -0
  292. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/third_party/anthropic_models.py +0 -0
  293. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/third_party/claude_code.py +0 -0
  294. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/third_party/exa_models.py +0 -0
  295. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/third_party/openai_model_names.py +0 -0
  296. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/third_party/pplx_models.py +0 -0
  297. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/token_calculator.py +0 -0
  298. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/service/types.py +0 -0
  299. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/session/__init__.py +0 -0
  300. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/session/prompts.py +0 -0
  301. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/settings.py +0 -0
  302. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/tools/__init__.py +0 -0
  303. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/tools/base.py +0 -0
  304. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/tools/file/__init__.py +0 -0
  305. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/tools/file/reader.py +0 -0
  306. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/tools/memory/tools.py +0 -0
  307. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/tools/types.py +0 -0
  308. {lionagi-0.15.0 → lionagi-0.15.1}/lionagi/utils.py +0 -0
  309. {lionagi-0.15.0 → lionagi-0.15.1}/main.py +0 -0
  310. {lionagi-0.15.0 → lionagi-0.15.1}/scripts/README.md +0 -0
  311. {lionagi-0.15.0 → lionagi-0.15.1}/scripts/concat.py +0 -0
  312. {lionagi-0.15.0 → lionagi-0.15.1}/scripts/config.py +0 -0
  313. {lionagi-0.15.0 → lionagi-0.15.1}/scripts/update_openai_models.py +0 -0
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
 
@@ -0,0 +1,23 @@
1
+ from collections.abc import Callable
2
+
3
+ from lionagi.protocols._concepts import Manager
4
+ from lionagi.utils import is_coro_func
5
+
6
+ """
7
+ experimental
8
+ """
9
+
10
+
11
+ class OperationManager(Manager):
12
+ def __init__(self):
13
+ super().__init__()
14
+ self.registry: dict[str, Callable] = {}
15
+
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:
@@ -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}")
@@ -0,0 +1 @@
1
+ __version__ = "0.15.1"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lionagi"
3
- version = "0.15.0"
3
+ version = "0.15.1"
4
4
  description = "An Intelligence Operating System."
5
5
  authors = [
6
6
  { name = "HaiyangLi", email = "quantocean.li@gmail.com" },
@@ -1933,7 +1933,7 @@ wheels = [
1933
1933
 
1934
1934
  [[package]]
1935
1935
  name = "lionagi"
1936
- version = "0.15.0"
1936
+ version = "0.15.1"
1937
1937
  source = { editable = "." }
1938
1938
  dependencies = [
1939
1939
  { name = "aiocache" },
@@ -1,21 +0,0 @@
1
- from collections.abc import Callable
2
-
3
- from lionagi.protocols._concepts import Manager
4
-
5
- """
6
- experimental
7
- """
8
-
9
-
10
- class OperationManager(Manager):
11
- def __init__(self, *args, **kwargs):
12
- super().__init__()
13
- self.registry: dict[str, Callable] = {}
14
- self.register_operations(*args, **kwargs)
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)
@@ -1 +0,0 @@
1
- __version__ = "0.15.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes