lionagi 0.15.13__tar.gz → 0.16.0__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 (373) hide show
  1. lionagi-0.16.0/.github/workflows/benchmarks.yml +95 -0
  2. lionagi-0.16.0/.github/workflows/refresh-bench-baselines.yml +98 -0
  3. {lionagi-0.15.13 → lionagi-0.16.0}/PKG-INFO +4 -2
  4. lionagi-0.16.0/benchmarks/README.md +45 -0
  5. lionagi-0.16.0/benchmarks/baselines/concurrency-asyncio.json +59 -0
  6. lionagi-0.16.0/benchmarks/baselines/concurrency-trio.json +59 -0
  7. lionagi-0.16.0/benchmarks/baselines/fuzzy.json +74 -0
  8. lionagi-0.16.0/benchmarks/baselines/ln-asyncio.json +67 -0
  9. lionagi-0.16.0/benchmarks/baselines/ln-trio.json +67 -0
  10. lionagi-0.16.0/benchmarks/ci_compare.py +126 -0
  11. lionagi-0.16.0/benchmarks/concurrency_bench.py +281 -0
  12. lionagi-0.16.0/benchmarks/fuzzy_bench.py +302 -0
  13. lionagi-0.16.0/benchmarks/ln_bench.py +304 -0
  14. {lionagi-0.15.13 → lionagi-0.16.0}/docs/cookbook/brainstorming.md +5 -5
  15. {lionagi-0.15.13 → lionagi-0.16.0}/docs/cookbook/code-review-crew.md +6 -6
  16. {lionagi-0.15.13 → lionagi-0.16.0}/docs/core-concepts/sessions-and-branches.md +3 -3
  17. lionagi-0.16.0/docs/index.md +176 -0
  18. lionagi-0.16.0/docs/problem-statement.md +85 -0
  19. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/config.py +1 -0
  20. lionagi-0.16.0/lionagi/libs/validate/fuzzy_match_keys.py +7 -0
  21. lionagi-0.16.0/lionagi/libs/validate/string_similarity.py +7 -0
  22. lionagi-0.16.0/lionagi/ln/__init__.py +77 -0
  23. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/ln/_async_call.py +13 -10
  24. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/ln/_hash.py +33 -8
  25. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/ln/_list_call.py +2 -35
  26. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/ln/_to_list.py +51 -28
  27. lionagi-0.16.0/lionagi/ln/_utils.py +156 -0
  28. lionagi-0.16.0/lionagi/ln/concurrency/__init__.py +61 -0
  29. lionagi-0.16.0/lionagi/ln/concurrency/_compat.py +65 -0
  30. lionagi-0.16.0/lionagi/ln/concurrency/cancel.py +117 -0
  31. lionagi-0.16.0/lionagi/ln/concurrency/errors.py +35 -0
  32. lionagi-0.16.0/lionagi/ln/concurrency/patterns.py +302 -0
  33. lionagi-0.16.0/lionagi/ln/concurrency/primitives.py +331 -0
  34. lionagi-0.16.0/lionagi/ln/concurrency/resource_tracker.py +69 -0
  35. lionagi-0.16.0/lionagi/ln/concurrency/task.py +93 -0
  36. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/ln/concurrency/throttle.py +3 -0
  37. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/ln/concurrency/utils.py +1 -0
  38. lionagi-0.16.0/lionagi/ln/fuzzy/__init__.py +15 -0
  39. {lionagi-0.15.13/lionagi/ln → lionagi-0.16.0/lionagi/ln/fuzzy}/_extract_json.py +22 -9
  40. {lionagi-0.15.13/lionagi/ln → lionagi-0.16.0/lionagi/ln/fuzzy}/_fuzzy_json.py +14 -8
  41. lionagi-0.15.13/lionagi/libs/validate/fuzzy_match_keys.py → lionagi-0.16.0/lionagi/ln/fuzzy/_fuzzy_match.py +30 -42
  42. lionagi-0.16.0/lionagi/ln/fuzzy/_fuzzy_validate.py +46 -0
  43. lionagi-0.15.13/lionagi/ln/_models.py → lionagi-0.16.0/lionagi/ln/types.py +153 -4
  44. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/flow.py +2 -1
  45. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/operate/operate.py +26 -16
  46. lionagi-0.16.0/lionagi/protocols/contracts.py +46 -0
  47. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/generic/event.py +6 -6
  48. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/generic/processor.py +9 -5
  49. lionagi-0.16.0/lionagi/protocols/ids.py +82 -0
  50. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/types.py +10 -12
  51. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/match_endpoint.py +9 -0
  52. lionagi-0.16.0/lionagi/service/connections/providers/nvidia_nim_.py +100 -0
  53. lionagi-0.16.0/lionagi/service/third_party/__init__.py +0 -0
  54. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/utils.py +34 -64
  55. lionagi-0.16.0/lionagi/version.py +1 -0
  56. {lionagi-0.15.13 → lionagi-0.16.0}/pyproject.toml +5 -2
  57. {lionagi-0.15.13 → lionagi-0.16.0}/uv.lock +86 -5
  58. lionagi-0.15.13/docs/index.md +0 -151
  59. lionagi-0.15.13/lionagi/ln/__init__.py +0 -87
  60. lionagi-0.15.13/lionagi/ln/_types.py +0 -146
  61. lionagi-0.15.13/lionagi/ln/concurrency/__init__.py +0 -53
  62. lionagi-0.15.13/lionagi/ln/concurrency/cancel.py +0 -134
  63. lionagi-0.15.13/lionagi/ln/concurrency/errors.py +0 -35
  64. lionagi-0.15.13/lionagi/ln/concurrency/patterns.py +0 -259
  65. lionagi-0.15.13/lionagi/ln/concurrency/primitives.py +0 -290
  66. lionagi-0.15.13/lionagi/ln/concurrency/resource_tracker.py +0 -182
  67. lionagi-0.15.13/lionagi/ln/concurrency/task.py +0 -111
  68. lionagi-0.15.13/lionagi/version.py +0 -1
  69. {lionagi-0.15.13 → lionagi-0.16.0}/.coveragerc +0 -0
  70. {lionagi-0.15.13 → lionagi-0.16.0}/.env.example +0 -0
  71. {lionagi-0.15.13 → lionagi-0.16.0}/.github/FUNDING.yml +0 -0
  72. {lionagi-0.15.13 → lionagi-0.16.0}/.github/dependabot.yml +0 -0
  73. {lionagi-0.15.13 → lionagi-0.16.0}/.github/workflows/ci.yml +0 -0
  74. {lionagi-0.15.13 → lionagi-0.16.0}/.github/workflows/codeql.yml +0 -0
  75. {lionagi-0.15.13 → lionagi-0.16.0}/.github/workflows/docs-deploy.yml +0 -0
  76. {lionagi-0.15.13 → lionagi-0.16.0}/.github/workflows/release.yml +0 -0
  77. {lionagi-0.15.13 → lionagi-0.16.0}/.gitignore +0 -0
  78. {lionagi-0.15.13 → lionagi-0.16.0}/.pre-commit-config.yaml +0 -0
  79. {lionagi-0.15.13 → lionagi-0.16.0}/.python-version +0 -0
  80. {lionagi-0.15.13 → lionagi-0.16.0}/CODE_OF_CONDUCT.md +0 -0
  81. {lionagi-0.15.13 → lionagi-0.16.0}/CONTRIBUTING.md +0 -0
  82. {lionagi-0.15.13 → lionagi-0.16.0}/LICENSE +0 -0
  83. {lionagi-0.15.13 → lionagi-0.16.0}/README.md +0 -0
  84. {lionagi-0.15.13 → lionagi-0.16.0}/assets/operation_builder.gif +0 -0
  85. /lionagi-0.15.13/lionagi/adapters/__init__.py → /lionagi-0.16.0/benchmarks/baselines/.gitkeep +0 -0
  86. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/001_branch_converse.ipynb +0 -0
  87. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/002_branch_interact.ipynb +0 -0
  88. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/003_branch_info.ipynb +0 -0
  89. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/004_conversation_patterns.ipynb +0 -0
  90. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/005_react_basics.ipynb +0 -0
  91. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/006_operation_graphs_claim_extraction.ipynb +0 -0
  92. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/007_fan_out_in.py +0 -0
  93. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/claude_proxy/README.md +0 -0
  94. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/claude_proxy/claude_code_proxy.py +0 -0
  95. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/claude_proxy/run_w_claude_code_proxy.ipynb +0 -0
  96. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/data/002_comedian.json +0 -0
  97. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/data/002_critic.json +0 -0
  98. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/data/006_lion_proof_ch2.md +0 -0
  99. {lionagi-0.15.13 → lionagi-0.16.0}/cookbooks/using_claude_code.py +0 -0
  100. {lionagi-0.15.13 → lionagi-0.16.0}/docs/DOCUMENTATION_STANDARDS.md +0 -0
  101. {lionagi-0.15.13 → lionagi-0.16.0}/docs/advanced/custom-operations.md +0 -0
  102. {lionagi-0.15.13 → lionagi-0.16.0}/docs/advanced/error-handling.md +0 -0
  103. {lionagi-0.15.13 → lionagi-0.16.0}/docs/advanced/flow-composition.md +0 -0
  104. {lionagi-0.15.13 → lionagi-0.16.0}/docs/advanced/index.md +0 -0
  105. {lionagi-0.15.13 → lionagi-0.16.0}/docs/advanced/observability.md +0 -0
  106. {lionagi-0.15.13 → lionagi-0.16.0}/docs/advanced/performance.md +0 -0
  107. {lionagi-0.15.13 → lionagi-0.16.0}/docs/code-of-conduct.md +0 -0
  108. {lionagi-0.15.13 → lionagi-0.16.0}/docs/comparisons/langgraph.md +0 -0
  109. {lionagi-0.15.13 → lionagi-0.16.0}/docs/contributing.md +0 -0
  110. {lionagi-0.15.13 → lionagi-0.16.0}/docs/cookbook/claim-extraction.md +0 -0
  111. {lionagi-0.15.13 → lionagi-0.16.0}/docs/cookbook/data-persistence.md +0 -0
  112. {lionagi-0.15.13 → lionagi-0.16.0}/docs/cookbook/hr-automation.md +0 -0
  113. {lionagi-0.15.13 → lionagi-0.16.0}/docs/cookbook/index.md +0 -0
  114. {lionagi-0.15.13 → lionagi-0.16.0}/docs/cookbook/research-synthesis.md +0 -0
  115. {lionagi-0.15.13 → lionagi-0.16.0}/docs/core-concepts/index.md +0 -0
  116. {lionagi-0.15.13 → lionagi-0.16.0}/docs/core-concepts/lionagi-philosophy.md +0 -0
  117. {lionagi-0.15.13 → lionagi-0.16.0}/docs/core-concepts/messages-and-memory.md +0 -0
  118. {lionagi-0.15.13 → lionagi-0.16.0}/docs/core-concepts/models-and-providers.md +0 -0
  119. {lionagi-0.15.13 → lionagi-0.16.0}/docs/core-concepts/operations.md +0 -0
  120. {lionagi-0.15.13 → lionagi-0.16.0}/docs/core-concepts/tools-and-functions.md +0 -0
  121. {lionagi-0.15.13 → lionagi-0.16.0}/docs/for-ai-agents/claude-code-usage.md +0 -0
  122. {lionagi-0.15.13 → lionagi-0.16.0}/docs/for-ai-agents/index.md +0 -0
  123. {lionagi-0.15.13 → lionagi-0.16.0}/docs/for-ai-agents/orchestration-guide.md +0 -0
  124. {lionagi-0.15.13 → lionagi-0.16.0}/docs/for-ai-agents/pattern-selection.md +0 -0
  125. {lionagi-0.15.13 → lionagi-0.16.0}/docs/for-ai-agents/self-improvement.md +0 -0
  126. {lionagi-0.15.13 → lionagi-0.16.0}/docs/includes/abbreviations.md +0 -0
  127. {lionagi-0.15.13 → lionagi-0.16.0}/docs/integrations/databases.md +0 -0
  128. {lionagi-0.15.13 → lionagi-0.16.0}/docs/integrations/dspy-optimization.md +0 -0
  129. {lionagi-0.15.13 → lionagi-0.16.0}/docs/integrations/index.md +0 -0
  130. {lionagi-0.15.13 → lionagi-0.16.0}/docs/integrations/llamaindex-rag.md +0 -0
  131. {lionagi-0.15.13 → lionagi-0.16.0}/docs/integrations/llm-providers.md +0 -0
  132. {lionagi-0.15.13 → lionagi-0.16.0}/docs/integrations/mcp-servers.md +0 -0
  133. {lionagi-0.15.13 → lionagi-0.16.0}/docs/integrations/tools.md +0 -0
  134. {lionagi-0.15.13 → lionagi-0.16.0}/docs/integrations/vector-stores.md +0 -0
  135. {lionagi-0.15.13 → lionagi-0.16.0}/docs/marketing/language-interoperability-manifesto.md +0 -0
  136. {lionagi-0.15.13 → lionagi-0.16.0}/docs/migration/from-autogen.md +0 -0
  137. {lionagi-0.15.13 → lionagi-0.16.0}/docs/migration/from-crewai.md +0 -0
  138. {lionagi-0.15.13 → lionagi-0.16.0}/docs/migration/from-langchain.md +0 -0
  139. {lionagi-0.15.13 → lionagi-0.16.0}/docs/migration/index.md +0 -0
  140. {lionagi-0.15.13 → lionagi-0.16.0}/docs/patterns/conditional-flows.md +0 -0
  141. {lionagi-0.15.13 → lionagi-0.16.0}/docs/patterns/fan-out-in.md +0 -0
  142. {lionagi-0.15.13 → lionagi-0.16.0}/docs/patterns/index.md +0 -0
  143. {lionagi-0.15.13 → lionagi-0.16.0}/docs/patterns/react-with-rag.md +0 -0
  144. {lionagi-0.15.13 → lionagi-0.16.0}/docs/patterns/sequential-analysis.md +0 -0
  145. {lionagi-0.15.13 → lionagi-0.16.0}/docs/patterns/tournament-validation.md +0 -0
  146. {lionagi-0.15.13 → lionagi-0.16.0}/docs/quickstart/claude-code-integration.md +0 -0
  147. {lionagi-0.15.13 → lionagi-0.16.0}/docs/quickstart/index.md +0 -0
  148. {lionagi-0.15.13 → lionagi-0.16.0}/docs/quickstart/installation.md +0 -0
  149. {lionagi-0.15.13 → lionagi-0.16.0}/docs/quickstart/orchestration-first.md +0 -0
  150. {lionagi-0.15.13 → lionagi-0.16.0}/docs/quickstart/your-first-flow.md +0 -0
  151. {lionagi-0.15.13 → lionagi-0.16.0}/docs/reference/api/index.md +0 -0
  152. {lionagi-0.15.13 → lionagi-0.16.0}/docs/reference/changelog.md +0 -0
  153. {lionagi-0.15.13 → lionagi-0.16.0}/docs/reference/troubleshooting.md +0 -0
  154. {lionagi-0.15.13 → lionagi-0.16.0}/docs/stylesheets/extra.css +0 -0
  155. {lionagi-0.15.13 → lionagi-0.16.0}/docs/thinking-in-lionagi/branches-as-agents.md +0 -0
  156. {lionagi-0.15.13 → lionagi-0.16.0}/docs/thinking-in-lionagi/builder-pattern.md +0 -0
  157. {lionagi-0.15.13 → lionagi-0.16.0}/docs/thinking-in-lionagi/graphs-over-chains.md +0 -0
  158. {lionagi-0.15.13 → lionagi-0.16.0}/docs/thinking-in-lionagi/index.md +0 -0
  159. {lionagi-0.15.13 → lionagi-0.16.0}/docs/thinking-in-lionagi/why-lionagi.md +0 -0
  160. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/__init__.py +0 -0
  161. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/_class_registry.py +0 -0
  162. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/_errors.py +0 -0
  163. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/_types.py +0 -0
  164. {lionagi-0.15.13/lionagi/libs/token_transform → lionagi-0.16.0/lionagi/adapters}/__init__.py +0 -0
  165. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/adapters/_utils.py +0 -0
  166. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/adapters/async_postgres_adapter.py +0 -0
  167. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/adapters/postgres_model_adapter.py +0 -0
  168. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/fields/__init__.py +0 -0
  169. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/fields/action.py +0 -0
  170. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/fields/base.py +0 -0
  171. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/fields/code.py +0 -0
  172. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/fields/file.py +0 -0
  173. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/fields/instruct.py +0 -0
  174. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/fields/reason.py +0 -0
  175. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/fields/research.py +0 -0
  176. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/__init__.py +0 -0
  177. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/concurrency.py +0 -0
  178. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/file/__init__.py +0 -0
  179. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/file/_utils.py +0 -0
  180. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/file/chunk.py +0 -0
  181. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/file/concat.py +0 -0
  182. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/file/concat_files.py +0 -0
  183. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/file/file_ops.py +0 -0
  184. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/file/params.py +0 -0
  185. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/file/process.py +0 -0
  186. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/file/save.py +0 -0
  187. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/nested/__init__.py +0 -0
  188. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/nested/flatten.py +0 -0
  189. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/nested/nfilter.py +0 -0
  190. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/nested/nget.py +0 -0
  191. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/nested/ninsert.py +0 -0
  192. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/nested/nmerge.py +0 -0
  193. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/nested/npop.py +0 -0
  194. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/nested/nset.py +0 -0
  195. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/nested/unflatten.py +0 -0
  196. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/nested/utils.py +0 -0
  197. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/parse.py +0 -0
  198. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/schema/__init__.py +0 -0
  199. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/schema/as_readable.py +0 -0
  200. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/schema/extract_code_block.py +0 -0
  201. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/schema/extract_docstring.py +0 -0
  202. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/schema/function_to_schema.py +0 -0
  203. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/schema/json_schema.py +0 -0
  204. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/schema/load_pydantic_model_from_schema.py +0 -0
  205. {lionagi-0.15.13/lionagi/libs/unstructured → lionagi-0.16.0/lionagi/libs/token_transform}/__init__.py +0 -0
  206. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/base.py +0 -0
  207. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/llmlingua.py +0 -0
  208. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/perplexity.py +0 -0
  209. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/symbolic_compress_context.py +0 -0
  210. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang.py +0 -0
  211. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/base.py +0 -0
  212. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/abstract_algebra.toml +0 -0
  213. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/category_theory.toml +0 -0
  214. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/complex_analysis.toml +0 -0
  215. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/framework_options.json +0 -0
  216. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/group_theory.toml +0 -0
  217. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/math_logic.toml +0 -0
  218. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/reflective_patterns.toml +0 -0
  219. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/set_theory.toml +0 -0
  220. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/frameworks/topology_fundamentals.toml +0 -0
  221. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/mapping/lion_emoji_mapping.toml +0 -0
  222. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/mapping/python_math_mapping.toml +0 -0
  223. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/mapping/rust_chinese_mapping.toml +0 -0
  224. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/resources/utility/base_synthlang_system_prompt.toml +0 -0
  225. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/synthlang_/translate_to_synthlang.py +0 -0
  226. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/token_transform/types.py +0 -0
  227. {lionagi-0.15.13/lionagi/operations/communicate → lionagi-0.16.0/lionagi/libs/unstructured}/__init__.py +0 -0
  228. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/unstructured/pdf_to_image.py +0 -0
  229. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/unstructured/read_image_to_base64.py +0 -0
  230. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/validate/__init__.py +0 -0
  231. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/validate/common_field_validators.py +0 -0
  232. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/validate/fuzzy_validate_mapping.py +0 -0
  233. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/validate/to_num.py +0 -0
  234. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/validate/validate_boolean.py +0 -0
  235. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/libs/validate/xml_parser.py +0 -0
  236. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/ln/_json_dump.py +0 -0
  237. /lionagi-0.15.13/lionagi/libs/validate/string_similarity.py → /lionagi-0.16.0/lionagi/ln/fuzzy/_string_similarity.py +0 -0
  238. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/models/__init__.py +0 -0
  239. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/models/field_model.py +0 -0
  240. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/models/hashable_model.py +0 -0
  241. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/models/model_params.py +0 -0
  242. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/models/note.py +0 -0
  243. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/models/operable_model.py +0 -0
  244. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/models/schema_model.py +0 -0
  245. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/ReAct/ReAct.py +0 -0
  246. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/ReAct/__init__.py +0 -0
  247. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/ReAct/utils.py +0 -0
  248. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/__init__.py +0 -0
  249. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/_act/__init__.py +0 -0
  250. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/_act/act.py +0 -0
  251. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/brainstorm/__init__.py +0 -0
  252. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/brainstorm/brainstorm.py +0 -0
  253. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/brainstorm/prompt.py +0 -0
  254. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/builder.py +0 -0
  255. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/chat/__init__.py +0 -0
  256. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/chat/chat.py +0 -0
  257. {lionagi-0.15.13/lionagi/operations/translate → lionagi-0.16.0/lionagi/operations/communicate}/__init__.py +0 -0
  258. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/communicate/communicate.py +0 -0
  259. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/instruct/__init__.py +0 -0
  260. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/instruct/instruct.py +0 -0
  261. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/interpret/__init__.py +0 -0
  262. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/interpret/interpret.py +0 -0
  263. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/manager.py +0 -0
  264. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/node.py +0 -0
  265. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/operate/__init__.py +0 -0
  266. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/parse/__init__.py +0 -0
  267. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/parse/parse.py +0 -0
  268. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/plan/__init__.py +0 -0
  269. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/plan/plan.py +0 -0
  270. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/plan/prompt.py +0 -0
  271. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/select/__init__.py +0 -0
  272. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/select/select.py +0 -0
  273. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/select/utils.py +0 -0
  274. {lionagi-0.15.13/lionagi/service/third_party → lionagi-0.16.0/lionagi/operations/translate}/__init__.py +0 -0
  275. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/translate/translate.py +0 -0
  276. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/types.py +0 -0
  277. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/operations/utils.py +0 -0
  278. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/__init__.py +0 -0
  279. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/_concepts.py +0 -0
  280. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/action/__init__.py +0 -0
  281. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/action/function_calling.py +0 -0
  282. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/action/manager.py +0 -0
  283. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/action/tool.py +0 -0
  284. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/forms/__init__.py +0 -0
  285. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/forms/base.py +0 -0
  286. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/forms/flow.py +0 -0
  287. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/forms/form.py +0 -0
  288. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/forms/report.py +0 -0
  289. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/generic/__init__.py +0 -0
  290. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/generic/element.py +0 -0
  291. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/generic/log.py +0 -0
  292. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/generic/pile.py +0 -0
  293. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/generic/progression.py +0 -0
  294. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/graph/__init__.py +0 -0
  295. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/graph/_utils.py +0 -0
  296. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/graph/edge.py +0 -0
  297. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/graph/graph.py +0 -0
  298. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/graph/node.py +0 -0
  299. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/mail/__init__.py +0 -0
  300. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/mail/exchange.py +0 -0
  301. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/mail/mail.py +0 -0
  302. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/mail/mailbox.py +0 -0
  303. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/mail/manager.py +0 -0
  304. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/mail/package.py +0 -0
  305. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/__init__.py +0 -0
  306. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/action_request.py +0 -0
  307. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/action_response.py +0 -0
  308. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/assistant_response.py +0 -0
  309. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/base.py +0 -0
  310. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/instruction.py +0 -0
  311. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/manager.py +0 -0
  312. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/message.py +0 -0
  313. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/system.py +0 -0
  314. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/templates/README.md +0 -0
  315. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/templates/action_request.jinja2 +0 -0
  316. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/templates/action_response.jinja2 +0 -0
  317. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/templates/assistant_response.jinja2 +0 -0
  318. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/templates/instruction_message.jinja2 +0 -0
  319. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/templates/system_message.jinja2 +0 -0
  320. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/messages/templates/tool_schemas.jinja2 +0 -0
  321. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/operatives/__init__.py +0 -0
  322. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/operatives/operative.py +0 -0
  323. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/protocols/operatives/step.py +0 -0
  324. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/py.typed +0 -0
  325. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/__init__.py +0 -0
  326. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/__init__.py +0 -0
  327. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/api_calling.py +0 -0
  328. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/endpoint.py +0 -0
  329. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/endpoint_config.py +0 -0
  330. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/header_factory.py +0 -0
  331. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/providers/__init__.py +0 -0
  332. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/providers/anthropic_.py +0 -0
  333. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/providers/claude_code_.py +0 -0
  334. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/providers/claude_code_cli.py +0 -0
  335. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/providers/exa_.py +0 -0
  336. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/providers/oai_.py +0 -0
  337. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/providers/ollama_.py +0 -0
  338. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/providers/perplexity_.py +0 -0
  339. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/connections/providers/types.py +0 -0
  340. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/hooks/__init__.py +0 -0
  341. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/hooks/_types.py +0 -0
  342. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/hooks/_utils.py +0 -0
  343. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/hooks/hook_event.py +0 -0
  344. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/hooks/hook_registry.py +0 -0
  345. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/imodel.py +0 -0
  346. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/manager.py +0 -0
  347. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/rate_limited_processor.py +0 -0
  348. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/resilience.py +0 -0
  349. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/third_party/README.md +0 -0
  350. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/third_party/anthropic_models.py +0 -0
  351. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/third_party/claude_code.py +0 -0
  352. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/third_party/exa_models.py +0 -0
  353. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/third_party/openai_model_names.py +0 -0
  354. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/third_party/pplx_models.py +0 -0
  355. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/token_calculator.py +0 -0
  356. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/service/types.py +0 -0
  357. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/session/__init__.py +0 -0
  358. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/session/branch.py +0 -0
  359. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/session/prompts.py +0 -0
  360. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/session/session.py +0 -0
  361. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/settings.py +0 -0
  362. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/tools/__init__.py +0 -0
  363. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/tools/base.py +0 -0
  364. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/tools/file/__init__.py +0 -0
  365. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/tools/file/reader.py +0 -0
  366. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/tools/memory/tools.py +0 -0
  367. {lionagi-0.15.13 → lionagi-0.16.0}/lionagi/tools/types.py +0 -0
  368. {lionagi-0.15.13 → lionagi-0.16.0}/main.py +0 -0
  369. {lionagi-0.15.13 → lionagi-0.16.0}/mkdocs.yml +0 -0
  370. {lionagi-0.15.13 → lionagi-0.16.0}/scripts/README.md +0 -0
  371. {lionagi-0.15.13 → lionagi-0.16.0}/scripts/concat.py +0 -0
  372. {lionagi-0.15.13 → lionagi-0.16.0}/scripts/config.py +0 -0
  373. {lionagi-0.15.13 → lionagi-0.16.0}/scripts/update_openai_models.py +0 -0
@@ -0,0 +1,95 @@
1
+ name: Benchmarks
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, master ]
6
+ pull_request:
7
+ branches: [ main, master ]
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ run-benchmarks:
14
+ runs-on: ubuntu-latest
15
+ timeout-minutes: 20
16
+ strategy:
17
+ matrix:
18
+ python-version: ["3.12"]
19
+
20
+ steps:
21
+ - name: Checkout
22
+ uses: actions/checkout@v4
23
+
24
+ - name: Setup Python ${{ matrix.python-version }}
25
+ uses: actions/setup-python@v5
26
+ with:
27
+ python-version: ${{ matrix.python-version }}
28
+
29
+ - name: Install uv
30
+ run: |
31
+ curl -LsSf https://astral.sh/uv/install.sh | sh
32
+ echo "$HOME/.cargo/bin" >> $GITHUB_PATH
33
+
34
+ - name: Install dependencies
35
+ run: |
36
+ uv venv
37
+ source .venv/bin/activate
38
+ uv sync --all-extras
39
+
40
+ - name: Run concurrency benchmarks (asyncio)
41
+ run: |
42
+ source .venv/bin/activate
43
+ python -m benchmarks.concurrency_bench --repeat 100 --backend asyncio --output benchmarks/_ci_out/concurrency-asyncio.json
44
+
45
+ - name: Run concurrency benchmarks (trio)
46
+ run: |
47
+ source .venv/bin/activate
48
+ python -m benchmarks.concurrency_bench --repeat 100 --backend trio --output benchmarks/_ci_out/concurrency-trio.json
49
+
50
+ - name: Run ln benchmarks (asyncio)
51
+ run: |
52
+ source .venv/bin/activate
53
+ python -m benchmarks.ln_bench --repeat 10 --backend asyncio --output benchmarks/_ci_out/ln-asyncio.json
54
+
55
+ - name: Run ln benchmarks (trio)
56
+ run: |
57
+ source .venv/bin/activate
58
+ python -m benchmarks.ln_bench --repeat 10 --backend trio --output benchmarks/_ci_out/ln-trio.json
59
+
60
+ - name: Run fuzzy benchmarks
61
+ run: |
62
+ source .venv/bin/activate
63
+ python -m benchmarks.fuzzy_bench --repeat 10 --output benchmarks/_ci_out/fuzzy.json
64
+
65
+ - name: Compare concurrency asyncio vs baseline (if present)
66
+ run: |
67
+ source .venv/bin/activate
68
+ python benchmarks/ci_compare.py --baseline benchmarks/baselines/concurrency-asyncio.json --current benchmarks/_ci_out/concurrency-asyncio.json --threshold 0.2
69
+
70
+ - name: Compare concurrency trio vs baseline (if present)
71
+ run: |
72
+ source .venv/bin/activate
73
+ python benchmarks/ci_compare.py --baseline benchmarks/baselines/concurrency-trio.json --current benchmarks/_ci_out/concurrency-trio.json --threshold 0.2
74
+
75
+ - name: Compare ln asyncio vs baseline (if present)
76
+ run: |
77
+ source .venv/bin/activate
78
+ python benchmarks/ci_compare.py --baseline benchmarks/baselines/ln-asyncio.json --current benchmarks/_ci_out/ln-asyncio.json --threshold 0.2
79
+
80
+ - name: Compare ln trio vs baseline (if present)
81
+ run: |
82
+ source .venv/bin/activate
83
+ python benchmarks/ci_compare.py --baseline benchmarks/baselines/ln-trio.json --current benchmarks/_ci_out/ln-trio.json --threshold 0.2
84
+
85
+ - name: Compare fuzzy vs baseline (if present)
86
+ run: |
87
+ source .venv/bin/activate
88
+ python benchmarks/ci_compare.py --baseline benchmarks/baselines/fuzzy.json --current benchmarks/_ci_out/fuzzy.json --threshold 0.2
89
+
90
+ - name: Upload results artifact
91
+ uses: actions/upload-artifact@v4
92
+ if: always()
93
+ with:
94
+ name: benchmark-results-py${{ matrix.python-version }}
95
+ path: benchmarks/_ci_out/**/*.json
@@ -0,0 +1,98 @@
1
+ name: Refresh Bench Baselines
2
+
3
+ on:
4
+ workflow_dispatch: {}
5
+
6
+ permissions:
7
+ contents: write
8
+ pull-requests: write
9
+
10
+ jobs:
11
+ refresh:
12
+ runs-on: ubuntu-latest
13
+ timeout-minutes: 20
14
+ steps:
15
+ - name: Checkout
16
+ uses: actions/checkout@v4
17
+
18
+ - name: Setup Python 3.12
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: '3.12'
22
+
23
+ - name: Install uv
24
+ run: |
25
+ curl -LsSf https://astral.sh/uv/install.sh | sh
26
+ echo "$HOME/.cargo/bin" >> $GITHUB_PATH
27
+
28
+ - name: Install dependencies
29
+ run: |
30
+ uv venv
31
+ source .venv/bin/activate
32
+ uv sync --all-extras
33
+
34
+ - name: Run concurrency benchmarks (asyncio)
35
+ run: |
36
+ source .venv/bin/activate
37
+ python -m benchmarks.concurrency_bench --repeat 100 --backend asyncio --output benchmarks/_ci_out/concurrency-asyncio.json
38
+
39
+ - name: Run concurrency benchmarks (trio)
40
+ run: |
41
+ source .venv/bin/activate
42
+ python -m benchmarks.concurrency_bench --repeat 100 --backend trio --output benchmarks/_ci_out/concurrency-trio.json
43
+
44
+ - name: Run ln benchmarks (asyncio)
45
+ run: |
46
+ source .venv/bin/activate
47
+ python -m benchmarks.ln_bench --repeat 10 --backend asyncio --output benchmarks/_ci_out/ln-asyncio.json
48
+
49
+ - name: Run ln benchmarks (trio)
50
+ run: |
51
+ source .venv/bin/activate
52
+ python -m benchmarks.ln_bench --repeat 10 --backend trio --output benchmarks/_ci_out/ln-trio.json
53
+
54
+ - name: Run fuzzy benchmarks
55
+ run: |
56
+ source .venv/bin/activate
57
+ python -m benchmarks.fuzzy_bench --repeat 10 --output benchmarks/_ci_out/fuzzy.json
58
+
59
+ - name: Copy outputs to baselines
60
+ run: |
61
+ cp benchmarks/_ci_out/concurrency-asyncio.json benchmarks/baselines/concurrency-asyncio.json
62
+ cp benchmarks/_ci_out/concurrency-trio.json benchmarks/baselines/concurrency-trio.json
63
+ cp benchmarks/_ci_out/ln-asyncio.json benchmarks/baselines/ln-asyncio.json
64
+ cp benchmarks/_ci_out/ln-trio.json benchmarks/baselines/ln-trio.json
65
+ cp benchmarks/_ci_out/fuzzy.json benchmarks/baselines/fuzzy.json
66
+
67
+ - name: Commit and create PR for updated baselines
68
+ env:
69
+ GH_TOKEN: ${{ github.token }}
70
+ run: |
71
+ git config --local user.email "action@github.com"
72
+ git config --local user.name "GitHub Action"
73
+
74
+ # Create a unique branch name with timestamp
75
+ BRANCH_NAME="chore/refresh-baselines-$(date +%Y%m%d-%H%M%S)"
76
+ git checkout -b "$BRANCH_NAME"
77
+
78
+ # Add and commit changes
79
+ git add benchmarks/baselines/*.json
80
+ git commit -m "chore(benchmarks): refresh CI-native baselines [skip ci]"
81
+
82
+ # Push the branch
83
+ git push origin "$BRANCH_NAME"
84
+
85
+ # Create pull request using GitHub CLI
86
+ gh pr create \
87
+ --title "chore(benchmarks): refresh CI-native baselines" \
88
+ --body "Automated refresh of benchmark baselines from GitHub Actions workflow." \
89
+ --label "enhancement" \
90
+ --head "$BRANCH_NAME" \
91
+ --base main
92
+
93
+ - name: Upload baselines artifact (fallback)
94
+ if: ${{ failure() }}
95
+ uses: actions/upload-artifact@v4
96
+ with:
97
+ name: refreshed-bench-baselines
98
+ path: benchmarks/baselines/*.json
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.15.13
3
+ Version: 0.16.0
4
4
  Summary: An Intelligence Operating System.
5
5
  Author-email: HaiyangLi <quantocean.li@gmail.com>
6
6
  License: Apache License
@@ -223,12 +223,14 @@ Requires-Dist: aiocache>=0.12.0
223
223
  Requires-Dist: aiohttp>=3.11.0
224
224
  Requires-Dist: anyio>=4.7.0
225
225
  Requires-Dist: backoff>=2.0.0
226
+ Requires-Dist: exceptiongroup>=1.3.0
226
227
  Requires-Dist: jinja2>=3.0.0
227
228
  Requires-Dist: json-repair>=0.40.0
229
+ Requires-Dist: msgspec>=0.18.0
228
230
  Requires-Dist: pillow>=10.0.0
229
231
  Requires-Dist: psutil>=6.0.0
230
232
  Requires-Dist: pydantic-settings>=2.8.0
231
- Requires-Dist: pydapter[pandas]>=1.0.4
233
+ Requires-Dist: pydapter[pandas]>=1.0.5
232
234
  Requires-Dist: python-dotenv>=1.1.0
233
235
  Requires-Dist: tiktoken>=0.9.0
234
236
  Requires-Dist: toml>=0.8.0
@@ -0,0 +1,45 @@
1
+ Minimal concurrency benchmarks
2
+
3
+ This folder contains a lightweight benchmark runner for lionagi.ln.concurrency.
4
+ It establishes a baseline for core patterns to help catch regressions.
5
+
6
+ How to run (concurrency)
7
+ - Asyncio backend (default):
8
+ - `python -m benchmarks.concurrency_bench`
9
+ - Trio backend:
10
+ - `python -m benchmarks.concurrency_bench --backend trio`
11
+
12
+ Options
13
+ - `--backend {asyncio,trio}`: Select async backend (default: asyncio)
14
+ - `--repeat N`: Repeat each scenario N times and report aggregates (default: 3)
15
+ - `--json`: Also print JSON to stdout (besides saving to file)
16
+ - `--output PATH`: Save results JSON to a custom path
17
+ - `--compare BASELINE.json`: Compare against a previous run and show deltas
18
+
19
+ How to run (ln functions)
20
+ - Asyncio backend (default):
21
+ - `python -m benchmarks.ln_bench`
22
+ - Trio backend:
23
+ - `python -m benchmarks.ln_bench --backend trio`
24
+
25
+ Options are the same as the concurrency runner.
26
+
27
+ Results
28
+ - Results are saved under `benchmarks/results/<timestamp>-<backend>.json` (concurrency)
29
+ and `benchmarks/results/ln-<timestamp>-<backend>.json` (ln functions) by default.
30
+ - Each scenario reports min/mean/median/max (seconds) over the configured repeats.
31
+
32
+ Scenarios (initial set)
33
+ - gather_100_yield: 100 tasks, each yields once (sleep 0)
34
+ - bounded_map_2000_limit_100: 2000 items, async no-op mapper, limit=100
35
+ - completion_stream_1000_limit_100: 1000 awaitables streamed with limit=100
36
+ - race_first_completion_10: 10 tasks where one completes immediately
37
+ - cancel_propagation_500: 500 tasks; one fails quickly to trigger cancellation
38
+ - taskgroup_start_1000_noop: start 1000 short-lived tasks
39
+
40
+ Notes
41
+ - Fuzzy utilities benches are available:
42
+ - `python -m benchmarks.fuzzy_bench` (JSON parsing, extraction, key matching)
43
+ - Outputs to `benchmarks/results/fuzzy-<timestamp>.json`
44
+ - These are micro-benchmarks intended to detect relative changes, not absolute throughput.
45
+ - Run on a quiet machine for less noisy results. Prefer CI runners for consistency.
@@ -0,0 +1,59 @@
1
+ {
2
+ "meta": {
3
+ "backend": "asyncio",
4
+ "python": "3.10.18",
5
+ "platform": "Linux-6.11.0-1018-azure-x86_64-with-glibc2.39",
6
+ "anyio": "unknown",
7
+ "timestamp": "2025-09-02T13:35:48.146812+00:00"
8
+ },
9
+ "results": {
10
+ "gather_100_yield": {
11
+ "name": "gather_100_yield",
12
+ "runs": 100,
13
+ "min": 0.0013307739999959267,
14
+ "mean": 0.002037186759999088,
15
+ "median": 0.001366159999989236,
16
+ "max": 0.06699832600000377
17
+ },
18
+ "bounded_map_2000_limit_100": {
19
+ "name": "bounded_map_2000_limit_100",
20
+ "runs": 100,
21
+ "min": 0.051471915000007584,
22
+ "mean": 0.11217115943999971,
23
+ "median": 0.13023979999999824,
24
+ "max": 0.15564669899998762
25
+ },
26
+ "completion_stream_1000_limit_100": {
27
+ "name": "completion_stream_1000_limit_100",
28
+ "runs": 100,
29
+ "min": 0.0329682240000011,
30
+ "mean": 0.059458141469999365,
31
+ "median": 0.03493375699999035,
32
+ "max": 0.12365313499998365
33
+ },
34
+ "race_first_completion_10": {
35
+ "name": "race_first_completion_10",
36
+ "runs": 100,
37
+ "min": 0.00037635299997873517,
38
+ "mean": 0.0003924061999981632,
39
+ "median": 0.0003883794999950396,
40
+ "max": 0.0005232460000001993
41
+ },
42
+ "cancel_propagation_500": {
43
+ "name": "cancel_propagation_500",
44
+ "runs": 100,
45
+ "min": 0.01751969400001485,
46
+ "mean": 0.02870361817999765,
47
+ "median": 0.0186188854999898,
48
+ "max": 0.10571556099998247
49
+ },
50
+ "taskgroup_start_1000_noop": {
51
+ "name": "taskgroup_start_1000_noop",
52
+ "runs": 100,
53
+ "min": 0.012939626999980192,
54
+ "mean": 0.030543536530002482,
55
+ "median": 0.013727217000010228,
56
+ "max": 0.09765000000001578
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "meta": {
3
+ "backend": "trio",
4
+ "python": "3.10.18",
5
+ "platform": "Linux-6.11.0-1018-azure-x86_64-with-glibc2.39",
6
+ "anyio": "unknown",
7
+ "timestamp": "2025-09-02T13:36:12.244949+00:00"
8
+ },
9
+ "results": {
10
+ "gather_100_yield": {
11
+ "name": "gather_100_yield",
12
+ "runs": 100,
13
+ "min": 0.0014117040000201087,
14
+ "mean": 0.0014656342899996844,
15
+ "median": 0.0014346675000069808,
16
+ "max": 0.002635558999998011
17
+ },
18
+ "bounded_map_2000_limit_100": {
19
+ "name": "bounded_map_2000_limit_100",
20
+ "runs": 100,
21
+ "min": 0.052032400000001644,
22
+ "mean": 0.10031968010999832,
23
+ "median": 0.1200106145000035,
24
+ "max": 0.14297211099997753
25
+ },
26
+ "completion_stream_1000_limit_100": {
27
+ "name": "completion_stream_1000_limit_100",
28
+ "runs": 100,
29
+ "min": 0.035846581000015476,
30
+ "mean": 0.05587740749000119,
31
+ "median": 0.036930268499986596,
32
+ "max": 0.11426646800001095
33
+ },
34
+ "race_first_completion_10": {
35
+ "name": "race_first_completion_10",
36
+ "runs": 100,
37
+ "min": 0.0007386779999762894,
38
+ "mean": 0.0007710282699966342,
39
+ "median": 0.0007622674999936407,
40
+ "max": 0.0009878740000033304
41
+ },
42
+ "cancel_propagation_500": {
43
+ "name": "cancel_propagation_500",
44
+ "runs": 100,
45
+ "min": 0.02046249400001443,
46
+ "mean": 0.0379207331500001,
47
+ "median": 0.027372422999988544,
48
+ "max": 0.10746313000001351
49
+ },
50
+ "taskgroup_start_1000_noop": {
51
+ "name": "taskgroup_start_1000_noop",
52
+ "runs": 100,
53
+ "min": 0.013291812999995045,
54
+ "mean": 0.026810758450000947,
55
+ "median": 0.013807971500000349,
56
+ "max": 0.09094968200000153
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "meta": {
3
+ "python": "3.10.18",
4
+ "platform": "Linux-6.11.0-1018-azure-x86_64-with-glibc2.39",
5
+ "anyio": "unknown",
6
+ "timestamp": "2025-09-02T13:36:36.355579+00:00"
7
+ },
8
+ "results": {
9
+ "fuzzy_json_valid_1000": {
10
+ "name": "fuzzy_json_valid_1000",
11
+ "runs": 10,
12
+ "min": 0.0027464740000198162,
13
+ "mean": 0.0027687305000000605,
14
+ "median": 0.0027608015000026853,
15
+ "max": 0.002856620000017074
16
+ },
17
+ "fuzzy_json_dirty_single_quotes_500": {
18
+ "name": "fuzzy_json_dirty_single_quotes_500",
19
+ "runs": 10,
20
+ "min": 0.0052496760000053655,
21
+ "mean": 0.005336624200006667,
22
+ "median": 0.005300931500002548,
23
+ "max": 0.005598335999991377
24
+ },
25
+ "extract_json_direct_1000": {
26
+ "name": "extract_json_direct_1000",
27
+ "runs": 10,
28
+ "min": 0.0007120979999797328,
29
+ "mean": 0.0007235028999957649,
30
+ "median": 0.0007229384999902777,
31
+ "max": 0.0007527449999997771
32
+ },
33
+ "extract_json_markdown_blocks_200": {
34
+ "name": "extract_json_markdown_blocks_200",
35
+ "runs": 10,
36
+ "min": 0.0032754620000048362,
37
+ "mean": 0.0032953269999950407,
38
+ "median": 0.003279153999997675,
39
+ "max": 0.003359698999986449
40
+ },
41
+ "fuzzy_match_keys_2000": {
42
+ "name": "fuzzy_match_keys_2000",
43
+ "runs": 10,
44
+ "min": 0.3180015540000056,
45
+ "mean": 0.32003289620000147,
46
+ "median": 0.31981371050000007,
47
+ "max": 0.32366155500000104
48
+ },
49
+ "string_similarity_bulk_2000": {
50
+ "name": "string_similarity_bulk_2000",
51
+ "runs": 10,
52
+ "min": 0.15625453399999856,
53
+ "mean": 0.1588215744999985,
54
+ "median": 0.15791424849999203,
55
+ "max": 0.16330740000000787
56
+ },
57
+ "ref_std_json_valid_1000": {
58
+ "name": "ref_std_json_valid_1000",
59
+ "runs": 10,
60
+ "min": 0.006303881999997429,
61
+ "mean": 0.006335769899999377,
62
+ "median": 0.006317558000006329,
63
+ "max": 0.0064248369999972965
64
+ },
65
+ "ref_orjson_valid_1000": {
66
+ "name": "ref_orjson_valid_1000",
67
+ "runs": 10,
68
+ "min": 0.0012476400000025478,
69
+ "mean": 0.0012560897000042815,
70
+ "median": 0.0012546530000179246,
71
+ "max": 0.0012660250000067208
72
+ }
73
+ }
74
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "meta": {
3
+ "backend": "asyncio",
4
+ "python": "3.10.18",
5
+ "platform": "Linux-6.11.0-1018-azure-x86_64-with-glibc2.39",
6
+ "anyio": "unknown",
7
+ "timestamp": "2025-09-02T13:36:20.408039+00:00"
8
+ },
9
+ "results": {
10
+ "alcall_async_noop_1000_conc_100": {
11
+ "name": "alcall_async_noop_1000_conc_100",
12
+ "runs": 10,
13
+ "min": 0.027339697999991586,
14
+ "mean": 0.04231285889999583,
15
+ "median": 0.028904450999988285,
16
+ "max": 0.09554383200000416
17
+ },
18
+ "alcall_sync_noop_1000_conc_64": {
19
+ "name": "alcall_sync_noop_1000_conc_64",
20
+ "runs": 10,
21
+ "min": 0.1231813789999876,
22
+ "mean": 0.14566904129999897,
23
+ "median": 0.12549639949999403,
24
+ "max": 0.2023504040000148
25
+ },
26
+ "bcall_async_noop_1000_batch_50": {
27
+ "name": "bcall_async_noop_1000_batch_50",
28
+ "runs": 10,
29
+ "min": 0.03463674900001479,
30
+ "mean": 0.041982428599999365,
31
+ "median": 0.0348497119999962,
32
+ "max": 0.10610733600000799
33
+ },
34
+ "to_list_flatten_nested_10000": {
35
+ "name": "to_list_flatten_nested_10000",
36
+ "runs": 10,
37
+ "min": 0.03234598599999572,
38
+ "mean": 0.03946182770000632,
39
+ "median": 0.03328560400001379,
40
+ "max": 0.09648447600000054
41
+ },
42
+ "to_list_flatten_unique_2000_mixed": {
43
+ "name": "to_list_flatten_unique_2000_mixed",
44
+ "runs": 10,
45
+ "min": 0.006223709000011013,
46
+ "mean": 0.006309181899999317,
47
+ "median": 0.006298704499997143,
48
+ "max": 0.006478685000018913
49
+ },
50
+ "hash_dict_complex_1000": {
51
+ "name": "hash_dict_complex_1000",
52
+ "runs": 10,
53
+ "min": 0.320240278,
54
+ "mean": 0.3215539886000016,
55
+ "median": 0.32136970400000564,
56
+ "max": 0.3242211730000122
57
+ },
58
+ "json_dumps_medium_1000": {
59
+ "name": "json_dumps_medium_1000",
60
+ "runs": 10,
61
+ "min": 0.053597306000000344,
62
+ "mean": 0.053890407500000494,
63
+ "median": 0.05394290499999954,
64
+ "max": 0.0542278519999968
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "meta": {
3
+ "backend": "trio",
4
+ "python": "3.10.18",
5
+ "platform": "Linux-6.11.0-1018-azure-x86_64-with-glibc2.39",
6
+ "anyio": "unknown",
7
+ "timestamp": "2025-09-02T13:36:29.672202+00:00"
8
+ },
9
+ "results": {
10
+ "alcall_async_noop_1000_conc_100": {
11
+ "name": "alcall_async_noop_1000_conc_100",
12
+ "runs": 10,
13
+ "min": 0.039496262000000115,
14
+ "mean": 0.06164876089999893,
15
+ "median": 0.0449869785000061,
16
+ "max": 0.10796760300002006
17
+ },
18
+ "alcall_sync_noop_1000_conc_64": {
19
+ "name": "alcall_sync_noop_1000_conc_64",
20
+ "runs": 10,
21
+ "min": 0.20247881000000234,
22
+ "mean": 0.22778642419999925,
23
+ "median": 0.2086333964999909,
24
+ "max": 0.28522025600000234
25
+ },
26
+ "bcall_async_noop_1000_batch_50": {
27
+ "name": "bcall_async_noop_1000_batch_50",
28
+ "runs": 10,
29
+ "min": 0.0380686379999986,
30
+ "mean": 0.0461074301999929,
31
+ "median": 0.03830965849999757,
32
+ "max": 0.11178060099999243
33
+ },
34
+ "to_list_flatten_nested_10000": {
35
+ "name": "to_list_flatten_nested_10000",
36
+ "runs": 10,
37
+ "min": 0.03396243599999593,
38
+ "mean": 0.04107517129999962,
39
+ "median": 0.03474533150000525,
40
+ "max": 0.09925096700001745
41
+ },
42
+ "to_list_flatten_unique_2000_mixed": {
43
+ "name": "to_list_flatten_unique_2000_mixed",
44
+ "runs": 10,
45
+ "min": 0.006309203000000707,
46
+ "mean": 0.012771716699998593,
47
+ "median": 0.0065092619999944645,
48
+ "max": 0.06665278799999896
49
+ },
50
+ "hash_dict_complex_1000": {
51
+ "name": "hash_dict_complex_1000",
52
+ "runs": 10,
53
+ "min": 0.3123992969999847,
54
+ "mean": 0.3132378978000048,
55
+ "median": 0.3127961700000128,
56
+ "max": 0.31525472800001353
57
+ },
58
+ "json_dumps_medium_1000": {
59
+ "name": "json_dumps_medium_1000",
60
+ "runs": 10,
61
+ "min": 0.0535302880000188,
62
+ "mean": 0.05378593110000338,
63
+ "median": 0.053629779000019084,
64
+ "max": 0.05512452299998927
65
+ }
66
+ }
67
+ }