lionagi 0.13.1__tar.gz → 0.13.2__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 (267) hide show
  1. {lionagi-0.13.1 → lionagi-0.13.2}/PKG-INFO +4 -1
  2. lionagi-0.13.2/lionagi/libs/schema/as_readable.py +396 -0
  3. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/connections/providers/claude_code_.py +194 -20
  4. lionagi-0.13.2/lionagi/version.py +1 -0
  5. {lionagi-0.13.1 → lionagi-0.13.2}/pyproject.toml +5 -1
  6. {lionagi-0.13.1 → lionagi-0.13.2}/uv.lock +8 -2
  7. lionagi-0.13.1/lionagi/libs/schema/as_readable.py +0 -174
  8. lionagi-0.13.1/lionagi/version.py +0 -1
  9. {lionagi-0.13.1 → lionagi-0.13.2}/.coveragerc +0 -0
  10. {lionagi-0.13.1 → lionagi-0.13.2}/.env.example +0 -0
  11. {lionagi-0.13.1 → lionagi-0.13.2}/.github/FUNDING.yml +0 -0
  12. {lionagi-0.13.1 → lionagi-0.13.2}/.github/dependabot.yml +0 -0
  13. {lionagi-0.13.1 → lionagi-0.13.2}/.github/workflows/ci.yml +0 -0
  14. {lionagi-0.13.1 → lionagi-0.13.2}/.github/workflows/codeql.yml +0 -0
  15. {lionagi-0.13.1 → lionagi-0.13.2}/.github/workflows/docs.yml +0 -0
  16. {lionagi-0.13.1 → lionagi-0.13.2}/.github/workflows/release.yml +0 -0
  17. {lionagi-0.13.1 → lionagi-0.13.2}/.gitignore +0 -0
  18. {lionagi-0.13.1 → lionagi-0.13.2}/.pre-commit-config.yaml +0 -0
  19. {lionagi-0.13.1 → lionagi-0.13.2}/.python-version +0 -0
  20. {lionagi-0.13.1 → lionagi-0.13.2}/CODE_OF_CONDUCT.md +0 -0
  21. {lionagi-0.13.1 → lionagi-0.13.2}/CONTRIBUTING.md +0 -0
  22. {lionagi-0.13.1 → lionagi-0.13.2}/LICENSE +0 -0
  23. {lionagi-0.13.1 → lionagi-0.13.2}/README.md +0 -0
  24. {lionagi-0.13.1 → lionagi-0.13.2}/cookbooks/ch01_get_started.md +0 -0
  25. {lionagi-0.13.1 → lionagi-0.13.2}/cookbooks/ch02_concepts.md +0 -0
  26. {lionagi-0.13.1 → lionagi-0.13.2}/docs/Makefile +0 -0
  27. {lionagi-0.13.1 → lionagi-0.13.2}/docs/_static/custom.css +0 -0
  28. {lionagi-0.13.1 → lionagi-0.13.2}/docs/_templates/layout.html +0 -0
  29. {lionagi-0.13.1 → lionagi-0.13.2}/docs/conf.py +0 -0
  30. {lionagi-0.13.1 → lionagi-0.13.2}/docs/index.rst +0 -0
  31. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/action.rst +0 -0
  32. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/adapter.rst +0 -0
  33. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/branch.rst +0 -0
  34. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/branch_operations.rst +0 -0
  35. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/concepts.rst +0 -0
  36. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/element_id.rst +0 -0
  37. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/event.rst +0 -0
  38. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/form.rst +0 -0
  39. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/graph.rst +0 -0
  40. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/index.rst +0 -0
  41. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/instruct.rst +0 -0
  42. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/lib_file.rst +0 -0
  43. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/lib_nested.rst +0 -0
  44. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/lib_package.rst +0 -0
  45. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/lib_schema.rst +0 -0
  46. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/lib_validate.rst +0 -0
  47. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/log.rst +0 -0
  48. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/mail.rst +0 -0
  49. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/message.rst +0 -0
  50. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/models.rst +0 -0
  51. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/operative_step.rst +0 -0
  52. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/pile.rst +0 -0
  53. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/processor.rst +0 -0
  54. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/progression.rst +0 -0
  55. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/service.rst +0 -0
  56. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/session.rst +0 -0
  57. {lionagi-0.13.1 → lionagi-0.13.2}/docs/modules/utils.rst +0 -0
  58. {lionagi-0.13.1 → lionagi-0.13.2}/docs/tutorials/get_started.rst +0 -0
  59. {lionagi-0.13.1 → lionagi-0.13.2}/docs/tutorials/get_started_pt2.rst +0 -0
  60. {lionagi-0.13.1 → lionagi-0.13.2}/docs/tutorials/get_started_pt3.rst +0 -0
  61. {lionagi-0.13.1 → lionagi-0.13.2}/docs/tutorials/index.rst +0 -0
  62. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/__init__.py +0 -0
  63. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/_class_registry.py +0 -0
  64. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/_errors.py +0 -0
  65. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/_types.py +0 -0
  66. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/config.py +0 -0
  67. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/fields/__init__.py +0 -0
  68. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/fields/action.py +0 -0
  69. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/fields/base.py +0 -0
  70. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/fields/code.py +0 -0
  71. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/fields/file.py +0 -0
  72. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/fields/instruct.py +0 -0
  73. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/fields/reason.py +0 -0
  74. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/fields/research.py +0 -0
  75. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/__init__.py +0 -0
  76. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/file/__init__.py +0 -0
  77. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/file/chunk.py +0 -0
  78. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/file/concat.py +0 -0
  79. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/file/concat_files.py +0 -0
  80. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/file/file_ops.py +0 -0
  81. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/file/params.py +0 -0
  82. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/file/process.py +0 -0
  83. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/file/save.py +0 -0
  84. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/nested/__init__.py +0 -0
  85. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/nested/flatten.py +0 -0
  86. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/nested/nfilter.py +0 -0
  87. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/nested/nget.py +0 -0
  88. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/nested/ninsert.py +0 -0
  89. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/nested/nmerge.py +0 -0
  90. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/nested/npop.py +0 -0
  91. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/nested/nset.py +0 -0
  92. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/nested/unflatten.py +0 -0
  93. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/nested/utils.py +0 -0
  94. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/package/__init__.py +0 -0
  95. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/package/imports.py +0 -0
  96. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/package/management.py +0 -0
  97. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/package/params.py +0 -0
  98. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/package/system.py +0 -0
  99. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/parse.py +0 -0
  100. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/schema/__init__.py +0 -0
  101. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/schema/extract_code_block.py +0 -0
  102. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/schema/extract_docstring.py +0 -0
  103. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/schema/function_to_schema.py +0 -0
  104. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/schema/json_schema.py +0 -0
  105. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/schema/load_pydantic_model_from_schema.py +0 -0
  106. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/__init__.py +0 -0
  107. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/base.py +0 -0
  108. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/llmlingua.py +0 -0
  109. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/perplexity.py +0 -0
  110. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/symbolic_compress_context.py +0 -0
  111. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang.py +0 -0
  112. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/base.py +0 -0
  113. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/resources/frameworks/abstract_algebra.toml +0 -0
  114. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/resources/frameworks/category_theory.toml +0 -0
  115. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/resources/frameworks/complex_analysis.toml +0 -0
  116. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/resources/frameworks/framework_options.json +0 -0
  117. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/resources/frameworks/group_theory.toml +0 -0
  118. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/resources/frameworks/math_logic.toml +0 -0
  119. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/resources/frameworks/reflective_patterns.toml +0 -0
  120. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/resources/frameworks/set_theory.toml +0 -0
  121. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/resources/frameworks/topology_fundamentals.toml +0 -0
  122. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/resources/mapping/lion_emoji_mapping.toml +0 -0
  123. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/resources/mapping/python_math_mapping.toml +0 -0
  124. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/resources/mapping/rust_chinese_mapping.toml +0 -0
  125. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/resources/utility/base_synthlang_system_prompt.toml +0 -0
  126. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/synthlang_/translate_to_synthlang.py +0 -0
  127. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/token_transform/types.py +0 -0
  128. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/validate/__init__.py +0 -0
  129. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/validate/common_field_validators.py +0 -0
  130. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/validate/fuzzy_match_keys.py +0 -0
  131. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/validate/fuzzy_validate_mapping.py +0 -0
  132. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/validate/string_similarity.py +0 -0
  133. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/libs/validate/validate_boolean.py +0 -0
  134. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/models/__init__.py +0 -0
  135. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/models/field_model.py +0 -0
  136. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/models/hashable_model.py +0 -0
  137. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/models/model_params.py +0 -0
  138. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/models/note.py +0 -0
  139. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/models/operable_model.py +0 -0
  140. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/models/schema_model.py +0 -0
  141. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/ReAct/ReAct.py +0 -0
  142. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/ReAct/__init__.py +0 -0
  143. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/ReAct/utils.py +0 -0
  144. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/__init__.py +0 -0
  145. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/_act/__init__.py +0 -0
  146. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/_act/act.py +0 -0
  147. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/brainstorm/__init__.py +0 -0
  148. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/brainstorm/brainstorm.py +0 -0
  149. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/brainstorm/prompt.py +0 -0
  150. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/chat/__init__.py +0 -0
  151. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/chat/chat.py +0 -0
  152. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/communicate/__init__.py +0 -0
  153. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/communicate/communicate.py +0 -0
  154. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/instruct/__init__.py +0 -0
  155. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/instruct/instruct.py +0 -0
  156. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/interpret/__init__.py +0 -0
  157. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/interpret/interpret.py +0 -0
  158. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/manager.py +0 -0
  159. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/operate/__init__.py +0 -0
  160. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/operate/operate.py +0 -0
  161. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/parse/__init__.py +0 -0
  162. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/parse/parse.py +0 -0
  163. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/plan/__init__.py +0 -0
  164. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/plan/plan.py +0 -0
  165. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/plan/prompt.py +0 -0
  166. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/select/__init__.py +0 -0
  167. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/select/select.py +0 -0
  168. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/select/utils.py +0 -0
  169. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/translate/__init__.py +0 -0
  170. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/translate/translate.py +0 -0
  171. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/types.py +0 -0
  172. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/operations/utils.py +0 -0
  173. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/__init__.py +0 -0
  174. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/_concepts.py +0 -0
  175. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/action/__init__.py +0 -0
  176. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/action/function_calling.py +0 -0
  177. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/action/manager.py +0 -0
  178. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/action/tool.py +0 -0
  179. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/forms/__init__.py +0 -0
  180. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/forms/base.py +0 -0
  181. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/forms/flow.py +0 -0
  182. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/forms/form.py +0 -0
  183. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/forms/report.py +0 -0
  184. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/generic/__init__.py +0 -0
  185. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/generic/element.py +0 -0
  186. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/generic/event.py +0 -0
  187. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/generic/log.py +0 -0
  188. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/generic/pile.py +0 -0
  189. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/generic/processor.py +0 -0
  190. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/generic/progression.py +0 -0
  191. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/graph/__init__.py +0 -0
  192. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/graph/edge.py +0 -0
  193. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/graph/graph.py +0 -0
  194. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/graph/node.py +0 -0
  195. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/mail/__init__.py +0 -0
  196. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/mail/exchange.py +0 -0
  197. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/mail/mail.py +0 -0
  198. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/mail/mailbox.py +0 -0
  199. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/mail/manager.py +0 -0
  200. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/mail/package.py +0 -0
  201. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/__init__.py +0 -0
  202. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/action_request.py +0 -0
  203. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/action_response.py +0 -0
  204. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/assistant_response.py +0 -0
  205. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/base.py +0 -0
  206. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/instruction.py +0 -0
  207. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/manager.py +0 -0
  208. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/message.py +0 -0
  209. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/system.py +0 -0
  210. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/templates/README.md +0 -0
  211. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
  212. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
  213. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
  214. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
  215. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
  216. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
  217. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/operatives/__init__.py +0 -0
  218. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/operatives/operative.py +0 -0
  219. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/operatives/step.py +0 -0
  220. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/protocols/types.py +0 -0
  221. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/py.typed +0 -0
  222. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/__init__.py +0 -0
  223. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/connections/__init__.py +0 -0
  224. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/connections/api_calling.py +0 -0
  225. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/connections/endpoint.py +0 -0
  226. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/connections/endpoint_config.py +0 -0
  227. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/connections/header_factory.py +0 -0
  228. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/connections/match_endpoint.py +0 -0
  229. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/connections/providers/__init__.py +0 -0
  230. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/connections/providers/anthropic_.py +0 -0
  231. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/connections/providers/exa_.py +0 -0
  232. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/connections/providers/oai_.py +0 -0
  233. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/connections/providers/ollama_.py +0 -0
  234. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/connections/providers/perplexity_.py +0 -0
  235. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/imodel.py +0 -0
  236. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/manager.py +0 -0
  237. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/rate_limited_processor.py +0 -0
  238. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/resilience.py +0 -0
  239. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/third_party/README.md +0 -0
  240. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/third_party/__init__.py +0 -0
  241. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/third_party/anthropic_models.py +0 -0
  242. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/third_party/exa_models.py +0 -0
  243. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/third_party/openai_models.py +0 -0
  244. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/third_party/pplx_models.py +0 -0
  245. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/token_calculator.py +0 -0
  246. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/service/types.py +0 -0
  247. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/session/__init__.py +0 -0
  248. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/session/branch.py +0 -0
  249. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/session/prompts.py +0 -0
  250. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/session/session.py +0 -0
  251. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/settings.py +0 -0
  252. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/tools/__init__.py +0 -0
  253. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/tools/base.py +0 -0
  254. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/tools/file/__init__.py +0 -0
  255. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/tools/file/reader.py +0 -0
  256. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/tools/memory/tools.py +0 -0
  257. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/tools/types.py +0 -0
  258. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/traits/__init__.py +0 -0
  259. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/traits/base.py +0 -0
  260. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/traits/composer.py +0 -0
  261. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/traits/protocols.py +0 -0
  262. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/traits/registry.py +0 -0
  263. {lionagi-0.13.1 → lionagi-0.13.2}/lionagi/utils.py +0 -0
  264. {lionagi-0.13.1 → lionagi-0.13.2}/main.py +0 -0
  265. {lionagi-0.13.1 → lionagi-0.13.2}/scripts/README.md +0 -0
  266. {lionagi-0.13.1 → lionagi-0.13.2}/scripts/concat.py +0 -0
  267. {lionagi-0.13.1 → lionagi-0.13.2}/scripts/config.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.13.1
3
+ Version: 0.13.2
4
4
  Summary: An Intelligence Operating System.
5
5
  Author-email: HaiyangLi <quantocean.li@gmail.com>, Liangbingyan Luo <llby_luo@outlook.com>
6
6
  License: Apache License
@@ -235,6 +235,7 @@ Requires-Dist: claude-code-sdk>=0.0.14; extra == 'all'
235
235
  Requires-Dist: docling>=2.15.1; extra == 'all'
236
236
  Requires-Dist: fastmcp>=2.10.5; extra == 'all'
237
237
  Requires-Dist: ollama>=0.5.0; extra == 'all'
238
+ Requires-Dist: rich>=13.0.0; extra == 'all'
238
239
  Provides-Extra: claude-code
239
240
  Requires-Dist: claude-code-sdk>=0.0.14; extra == 'claude-code'
240
241
  Provides-Extra: docs
@@ -251,6 +252,8 @@ Provides-Extra: ollama
251
252
  Requires-Dist: ollama>=0.5.0; extra == 'ollama'
252
253
  Provides-Extra: reader
253
254
  Requires-Dist: docling>=2.15.1; extra == 'reader'
255
+ Provides-Extra: rich
256
+ Requires-Dist: rich>=13.0.0; extra == 'rich'
254
257
  Provides-Extra: test
255
258
  Requires-Dist: pytest-asyncio>=1.0.0; extra == 'test'
256
259
  Requires-Dist: pytest>=8.3.4; extra == 'test'
@@ -0,0 +1,396 @@
1
+ # Copyright (c) 2023 - 2025, HaiyangLi <quantocean.li at gmail dot com>
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+ import json
6
+ import sys
7
+ from typing import Any
8
+
9
+ from lionagi.utils import to_dict
10
+
11
+ # Try to import rich for enhanced console output
12
+ try:
13
+ from rich.align import Align
14
+ from rich.box import ROUNDED
15
+ from rich.console import Console
16
+ from rich.padding import Padding
17
+ from rich.panel import Panel
18
+ from rich.syntax import Syntax
19
+ from rich.theme import Theme
20
+
21
+ RICH_AVAILABLE = True
22
+ except ImportError:
23
+ RICH_AVAILABLE = False
24
+
25
+ # Custom themes for dark and light modes
26
+ DARK_THEME = Theme(
27
+ {
28
+ "info": "bright_cyan",
29
+ "warning": "bright_yellow",
30
+ "error": "bold bright_red",
31
+ "success": "bold bright_green",
32
+ "panel.border": "bright_blue",
33
+ "panel.title": "bold bright_cyan",
34
+ "markdown.h1": "bold bright_magenta",
35
+ "markdown.h2": "bold bright_blue",
36
+ "markdown.h3": "bold bright_cyan",
37
+ "markdown.h4": "bold bright_green",
38
+ "markdown.code": "bright_yellow on grey23",
39
+ "markdown.code_block": "bright_white on grey15",
40
+ "markdown.paragraph": "bright_white",
41
+ "markdown.text": "bright_white",
42
+ "markdown.emph": "italic bright_yellow",
43
+ "markdown.strong": "bold bright_white",
44
+ "markdown.item": "bright_cyan",
45
+ "markdown.item.bullet": "bright_blue",
46
+ "json.key": "bright_cyan",
47
+ "json.string": "bright_green",
48
+ "json.number": "bright_yellow",
49
+ "json.boolean": "bright_magenta",
50
+ "json.null": "bright_red",
51
+ "yaml.key": "bright_cyan",
52
+ "yaml.string": "bright_green",
53
+ "yaml.number": "bright_yellow",
54
+ "yaml.boolean": "bright_magenta",
55
+ }
56
+ )
57
+
58
+ LIGHT_THEME = Theme(
59
+ {
60
+ "info": "blue",
61
+ "warning": "dark_orange",
62
+ "error": "bold red",
63
+ "success": "bold green4",
64
+ "panel.border": "blue",
65
+ "panel.title": "bold blue",
66
+ "markdown.h1": "bold dark_magenta",
67
+ "markdown.h2": "bold dark_blue",
68
+ "markdown.h3": "bold dark_cyan",
69
+ "markdown.h4": "bold dark_green",
70
+ "markdown.code": "dark_orange on grey93",
71
+ "markdown.code_block": "black on grey82",
72
+ "markdown.paragraph": "black",
73
+ "markdown.text": "black",
74
+ "markdown.emph": "italic dark_orange",
75
+ "markdown.strong": "bold black",
76
+ "markdown.item": "dark_blue",
77
+ "markdown.item.bullet": "blue",
78
+ "json.key": "dark_blue",
79
+ "json.string": "dark_green",
80
+ "json.number": "dark_orange",
81
+ "json.boolean": "dark_magenta",
82
+ "json.null": "dark_red",
83
+ "yaml.key": "dark_blue",
84
+ "yaml.string": "dark_green",
85
+ "yaml.number": "dark_orange",
86
+ "yaml.boolean": "dark_magenta",
87
+ }
88
+ )
89
+
90
+
91
+ def in_notebook() -> bool:
92
+ """
93
+ Checks if we're running inside a Jupyter notebook.
94
+ Returns True if yes, False otherwise.
95
+ """
96
+ try:
97
+ from IPython import get_ipython
98
+
99
+ shell = get_ipython().__class__.__name__
100
+ return "ZMQInteractiveShell" in shell
101
+ except Exception:
102
+ return False
103
+
104
+
105
+ def in_console() -> bool:
106
+ """
107
+ Checks if we're running in a console/terminal environment.
108
+ Returns True if stdout is a TTY and not in a notebook.
109
+ """
110
+ return (
111
+ hasattr(sys.stdout, "isatty")
112
+ and sys.stdout.isatty()
113
+ and not in_notebook()
114
+ )
115
+
116
+
117
+ def format_dict(data: Any, indent: int = 0) -> str:
118
+ """
119
+ Recursively format Python data (dicts, lists, strings, etc.) into a
120
+ YAML-like readable string.
121
+
122
+ - Multi-line strings are displayed using a '|' block style, each line indented.
123
+ - Lists are shown with a '- ' prefix per item at the appropriate indentation.
124
+ - Dict keys are shown as "key:" lines, with values on subsequent lines if complex.
125
+ """
126
+ lines = []
127
+ prefix = " " * indent # 2 spaces per indent level
128
+
129
+ if isinstance(data, dict):
130
+ for key, value in data.items():
131
+ if isinstance(value, dict):
132
+ # Nested dict
133
+ lines.append(f"{prefix}{key}:")
134
+ lines.append(format_dict(value, indent + 1))
135
+ elif isinstance(value, list):
136
+ # List under a key
137
+ lines.append(f"{prefix}{key}:")
138
+ for item in value:
139
+ item_str = format_dict(item, indent + 2).lstrip()
140
+ lines.append(f"{prefix} - {item_str}")
141
+ elif isinstance(value, str) and "\n" in value:
142
+ # Multi-line string
143
+ lines.append(f"{prefix}{key}: |")
144
+ subprefix = " " * (indent + 1)
145
+ for line in value.splitlines():
146
+ lines.append(f"{subprefix}{line}")
147
+ else:
148
+ # Simple single-line scalar
149
+ item_str = format_dict(value, indent + 1).lstrip()
150
+ lines.append(f"{prefix}{key}: {item_str}")
151
+ return "\n".join(lines)
152
+
153
+ elif isinstance(data, list):
154
+ # For top-level or nested lists
155
+ for item in data:
156
+ item_str = format_dict(item, indent + 1).lstrip()
157
+ lines.append(f"{prefix}- {item_str}")
158
+ return "\n".join(lines)
159
+
160
+ # Base case: single-line scalar
161
+ return prefix + str(data)
162
+
163
+
164
+ def as_readable(
165
+ input_: Any,
166
+ /,
167
+ *,
168
+ md: bool = False,
169
+ format_curly: bool = False,
170
+ display_str: bool = False,
171
+ max_chars: int | None = None,
172
+ use_rich: bool = True,
173
+ theme: str = "dark",
174
+ max_panel_width: int = 140,
175
+ ) -> str:
176
+ """
177
+ Convert `input_` into a human-readable string. If `format_curly=True`, uses
178
+ a YAML-like style (`format_dict`). Otherwise, pretty-printed JSON.
179
+
180
+ - For Pydantic models or nested data, uses `to_dict` to get a dictionary.
181
+ - If the result is a list of items, each is processed and concatenated.
182
+ - When in console and rich is available, provides syntax highlighting.
183
+
184
+ Args:
185
+ input_: The data to convert (could be a single item or list).
186
+ md: If True, wraps the final output in code fences for Markdown display.
187
+ format_curly: If True, use `format_dict`. Otherwise, produce JSON text.
188
+ display_str: If True, prints the output instead of returning it.
189
+ max_chars: If set, truncates output to this many characters.
190
+ use_rich: If True and rich is available, uses rich for console output.
191
+ theme: Color theme - "dark" (default) or "light". Dark uses GitHub Dark Dimmed,
192
+ light uses Solarized Light inspired colors.
193
+ max_panel_width: Maximum width for panels and code blocks in characters.
194
+
195
+ Returns:
196
+ A formatted string representation of `input_` (unless display_str=True).
197
+ """
198
+
199
+ # 1) Convert the input to a Python dict/list structure
200
+ # (handles recursion, Pydantic models, etc.)
201
+ def to_dict_safe(obj: Any) -> Any:
202
+ # Attempt to call to_dict with typical recursion flags
203
+ to_dict_kwargs = {
204
+ "use_model_dump": True,
205
+ "fuzzy_parse": True,
206
+ "recursive": True,
207
+ "recursive_python_only": False,
208
+ "max_recursive_depth": 5,
209
+ }
210
+ return to_dict(obj, **to_dict_kwargs)
211
+
212
+ def _inner(i_: Any) -> Any:
213
+ items = []
214
+ try:
215
+ if isinstance(i_, list):
216
+ # Already a list. Convert each item
217
+ items = [to_dict_safe(x) for x in i_]
218
+ else:
219
+ # Single item
220
+ maybe_list = to_dict_safe(i_)
221
+ # If it's a list, store as items; else just single
222
+ items = (
223
+ maybe_list
224
+ if isinstance(maybe_list, list)
225
+ else [maybe_list]
226
+ )
227
+ except Exception:
228
+ # If conversion fails, fallback to str
229
+ return str(i_)
230
+
231
+ # 2) For each item in `items`, either format with YAML-like or JSON
232
+ rendered = []
233
+ for item in items:
234
+ if format_curly:
235
+ # YAML-like
236
+ rendered.append(format_dict(item))
237
+ else:
238
+ # JSON approach
239
+ try:
240
+ # Provide indentation, ensure ASCII not forced
241
+ rendered.append(
242
+ json.dumps(item, indent=2, ensure_ascii=False)
243
+ )
244
+ except Exception:
245
+ # fallback
246
+ rendered.append(str(item))
247
+
248
+ # 3) Combine
249
+ final_str = "\n\n".join(rendered).strip()
250
+
251
+ # 4) If Markdown requested, wrap with code fences
252
+ # - If we used format_curly, we might do "```yaml" instead. But user specifically asked for JSON code blocks previously
253
+ if md:
254
+ if format_curly:
255
+ return f"```yaml\n{final_str}\n```"
256
+ else:
257
+ return f"```json\n{final_str}\n```"
258
+
259
+ return final_str
260
+
261
+ str_ = _inner(input_).strip()
262
+ if max_chars is not None and len(str_) > max_chars:
263
+ str1 = str_[:max_chars] + "...\n\n[Truncated output]\n\n"
264
+ if str_.endswith("\n```"):
265
+ str1 += "```"
266
+ str_ = str1
267
+ if display_str:
268
+ if md and in_notebook():
269
+ # If in IPython environment, display Markdown
270
+ from IPython.display import Markdown, display
271
+
272
+ display(Markdown(str_))
273
+ elif RICH_AVAILABLE and in_console() and use_rich:
274
+ # Use rich for enhanced console output
275
+ # Select theme and syntax highlighting based on user preference
276
+ console_theme = DARK_THEME if theme == "dark" else LIGHT_THEME
277
+ syntax_theme = (
278
+ "github-dark" if theme == "dark" else "solarized-light"
279
+ )
280
+ panel_style = "bright_blue" if theme == "dark" else "blue"
281
+
282
+ console = Console(theme=console_theme)
283
+
284
+ # Check if content looks like markdown prose (not code)
285
+ is_markdown_prose = isinstance(str_, str) and (
286
+ str_.startswith("#")
287
+ or str_.startswith("**")
288
+ or str_.startswith("- ")
289
+ or str_.startswith("1.")
290
+ or "<multi_reasoning>" in str_
291
+ or "\n### " in str_
292
+ or "\n## " in str_
293
+ or "\n# " in str_
294
+ or "│" in str_ # Rich table content
295
+ )
296
+
297
+ if md and is_markdown_prose:
298
+ # Display as formatted markdown
299
+ # Create markdown with max width
300
+ from rich.markdown import Markdown as RichMarkdown
301
+
302
+ md_content = RichMarkdown(str_, code_theme=syntax_theme)
303
+
304
+ # Calculate appropriate width
305
+ console_width = console.width
306
+ panel_width = min(console_width - 4, max_panel_width)
307
+
308
+ # Add left margin padding for better alignment
309
+ panel = Panel(
310
+ Padding(md_content, (0, 2)),
311
+ border_style=panel_style,
312
+ box=ROUNDED,
313
+ width=panel_width,
314
+ expand=False,
315
+ )
316
+
317
+ # Left align with margin
318
+ aligned_panel = Align.left(panel, pad=True)
319
+ console.print(Padding(aligned_panel, (0, 0, 0, 4)))
320
+
321
+ elif md:
322
+ # Extract content from markdown code blocks if present
323
+ content = str_
324
+ if content.startswith("```") and content.endswith("```"):
325
+ # Remove code fences
326
+ lines = content.split("\n")
327
+ if len(lines) > 2:
328
+ lang = lines[0][3:].strip() or "json"
329
+ content = "\n".join(lines[1:-1])
330
+ else:
331
+ lang = "json"
332
+ else:
333
+ lang = "yaml" if format_curly else "json"
334
+
335
+ # Calculate appropriate width
336
+ console_width = console.width
337
+ panel_width = min(console_width - 4, max_panel_width)
338
+
339
+ # Create syntax highlighted output
340
+ syntax = Syntax(
341
+ content,
342
+ lang,
343
+ theme=syntax_theme,
344
+ line_numbers=True,
345
+ background_color="default",
346
+ word_wrap=True,
347
+ )
348
+
349
+ # Add left margin padding for better alignment
350
+ panel = Panel(
351
+ syntax,
352
+ border_style=panel_style,
353
+ box=ROUNDED,
354
+ width=panel_width,
355
+ expand=False,
356
+ )
357
+
358
+ # Left align with margin
359
+ aligned_panel = Align.left(panel, pad=True)
360
+ console.print(Padding(aligned_panel, (0, 0, 0, 4)))
361
+
362
+ else:
363
+ # Plain text output with rich formatting
364
+ if format_curly:
365
+ syntax = Syntax(
366
+ str_,
367
+ "yaml",
368
+ theme=syntax_theme,
369
+ background_color="default",
370
+ word_wrap=True,
371
+ )
372
+ else:
373
+ syntax = Syntax(
374
+ str_,
375
+ "json",
376
+ theme=syntax_theme,
377
+ background_color="default",
378
+ word_wrap=True,
379
+ )
380
+
381
+ # For plain syntax, add left margin
382
+ # Create a constrained width container if console is too wide
383
+ if console.width > max_panel_width:
384
+ content = Align.left(
385
+ syntax, width=max_panel_width, pad=False
386
+ )
387
+ # Add left margin
388
+ console.print(Padding(content, (0, 0, 0, 4)))
389
+ else:
390
+ # Just add left margin
391
+ console.print(Padding(syntax, (0, 0, 0, 4)))
392
+ else:
393
+ # Fallback to regular print
394
+ print(str_)
395
+ else:
396
+ return str_