agent-framework-lib 0.8.3__tar.gz → 0.8.4.post2__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 (308) hide show
  1. {agent_framework_lib-0.8.3/agent_framework_lib.egg-info → agent_framework_lib-0.8.4.post2}/PKG-INFO +1 -1
  2. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/__init__.py +48 -45
  3. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/__init__.py +5 -3
  4. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/endpoints/a2a_router.py +8 -3
  5. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/endpoints/jsonrpc_dispatcher.py +1 -0
  6. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/endpoints/models_jsonrpc.py +1 -0
  7. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/endpoints/sse_wrapper.py +1 -0
  8. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/endpoints/translation_layer.py +4 -5
  9. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/providers/elasticsearch_provider.py +1 -1
  10. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/providers/postgres_provider.py +2 -1
  11. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/capabilities/__init__.py +1 -1
  12. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/capabilities/resolver.py +6 -3
  13. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/__init__.py +1 -0
  14. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/agent_interface.py +4 -6
  15. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/agent_provider.py +25 -27
  16. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/base_agent.py +26 -18
  17. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/context_budget.py +1 -0
  18. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/context_summarizer.py +4 -1
  19. agent_framework_lib-0.8.4.post2/agent_framework/core/execution_controller.py +406 -0
  20. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/implementation_validator.py +10 -9
  21. agent_framework_lib-0.8.4.post2/agent_framework/core/interruption_message.py +52 -0
  22. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/knowledge_state.py +1 -0
  23. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/loop_detector.py +1 -0
  24. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/model_clients.py +26 -21
  25. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/model_config.py +35 -34
  26. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/provider_calibration.py +1 -0
  27. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/scratchpad_compressor.py +2 -4
  28. agent_framework_lib-0.8.4.post2/agent_framework/core/scratchpad_serializer.py +292 -0
  29. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/state_manager.py +21 -22
  30. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/streaming_parts_accumulator.py +1 -4
  31. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/implementations/__init__.py +1 -0
  32. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/implementations/budget_aware_agent.py +14 -13
  33. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/implementations/llamaindex_agent.py +64 -10
  34. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/implementations/llamaindex_memory_adapter.py +112 -32
  35. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/implementations/microsoft_agent.py +21 -19
  36. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/memory/__init__.py +14 -16
  37. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/memory/agent_mixin.py +14 -7
  38. agent_framework_lib-0.8.4.post2/agent_framework/memory/hypothesis_engine.py +2671 -0
  39. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/memory/implicit_feedback.py +25 -16
  40. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/memory/personalization.py +2 -1
  41. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/memory/providers/memori_provider.py +2 -2
  42. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/memory/response_lessons.py +36 -19
  43. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/memory/work_patterns.py +46 -36
  44. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/elasticsearch_circuit_breaker.py +14 -16
  45. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/elasticsearch_logging.py +17 -17
  46. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/error_handling.py +25 -24
  47. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/error_logging.py +22 -26
  48. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/llm_auto_instrumentor.py +6 -4
  49. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/otel_logging_handler.py +3 -2
  50. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/performance_monitor.py +30 -31
  51. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/progress_tracker.py +27 -28
  52. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/resource_manager.py +35 -42
  53. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/token_counter.py +5 -5
  54. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/notifications/__init__.py +1 -0
  55. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/notifications/hub.py +1 -0
  56. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/notifications/webhook_notifier.py +1 -0
  57. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/processing/ai_content_management.py +22 -26
  58. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/processing/markdown_converter.py +25 -36
  59. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/processing/multimodal_integration.py +12 -22
  60. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/processing/rich_content_validation.py +1 -1
  61. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/session/elasticsearch_session_storage.py +20 -2
  62. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/session/session_storage.py +162 -221
  63. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/__init__.py +3 -1
  64. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/scripts/create_and_register.py +1 -0
  65. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/chart/chart_to_image.py +14 -6
  66. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/csv/create_csv.py +1 -3
  67. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/csv/read_csv.py +1 -1
  68. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/csv/transform_csv.py +4 -5
  69. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/data_format/json_to_yaml.py +1 -0
  70. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/data_format/yaml_to_json.py +1 -0
  71. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/drawio/create_drawio.py +1 -4
  72. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/file/create_file.py +1 -4
  73. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/file/read_file.py +1 -1
  74. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/image_gen/create_image.py +1 -0
  75. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/image_gen/generate_image.py +1 -0
  76. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/mermaid/mermaid_to_image.py +17 -6
  77. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/powerpoint/create_powerpoint.py +454 -205
  78. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/powerpoint/templates/__init__.py +2 -0
  79. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/powerpoint/templates/generate_templates.py +1 -0
  80. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/skill_creator/skill_api.py +2 -6
  81. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/table/table_to_image.py +1 -0
  82. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/unified_pdf/create_pdf.py +1 -0
  83. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/word/create_word.py +7 -9
  84. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/custom_skill_manager.py +8 -5
  85. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/markdown_loader.py +6 -3
  86. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/tools.py +2 -1
  87. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/storage/__init__.py +8 -7
  88. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/storage/file_storages.py +3 -9
  89. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/storage/file_system_management.py +85 -134
  90. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/storage/storage_optimizer.py +27 -29
  91. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/subagents/executor.py +7 -8
  92. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/subagents/message_injector.py +1 -0
  93. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/subagents/retrigger.py +3 -3
  94. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/subagents/spawn_tool.py +5 -4
  95. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/tools/__init__.py +5 -4
  96. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/tools/html_content_analyzer.py +4 -4
  97. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/tools/multimodal_tools.py +34 -35
  98. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/tools/shell_tool.py +51 -28
  99. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/tools/web_fetch_tool.py +5 -2
  100. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/tools/web_search_tool.py +6 -2
  101. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/utils/__init__.py +9 -8
  102. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/utils/path_utils.py +3 -4
  103. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/utils/post_install.py +2 -4
  104. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/utils/session_title_generator.py +1 -1
  105. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/utils/special_blocks.py +7 -8
  106. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/__init__.py +1 -0
  107. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/admin_services.py +81 -81
  108. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2/agent_framework/web}/docs/BUILTIN_SKILLS_REFERENCE.md +1 -1
  109. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2/agent_framework/web}/docs/CREATING_AGENTS.md +14 -14
  110. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/GETTING_STARTED.md +54 -54
  111. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2/agent_framework/web}/docs/TOOLS_AND_MCP_GUIDE.md +33 -33
  112. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/examples/agent_with_file_storage.py +6 -7
  113. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/examples/agent_with_mcp.py +8 -9
  114. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/examples/agent_with_memory.py +3 -1
  115. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/examples/agent_with_memory_graphiti.py +2 -1
  116. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2/agent_framework/web/docs}/examples/agent_with_memory_hybrid.py +3 -2
  117. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2/agent_framework/web/docs}/examples/agent_with_memory_simple.py +2 -1
  118. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/examples/custom_framework_agent.py +18 -20
  119. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2/agent_framework/web/docs}/examples/simple_agent.py +2 -2
  120. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2/agent_framework/web/docs}/examples/skills_demo_agent.py +1 -1
  121. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/installation-guide.md +7 -7
  122. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/documentation_generator.py +40 -40
  123. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/gitnexus_client.py +7 -15
  124. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/helper_agent.py +9 -8
  125. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/modern_ui.html +1904 -1592
  126. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/otel_tracing_middleware.py +8 -10
  127. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/server.py +616 -103
  128. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/skills_router.py +1 -1
  129. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/workspace/__init__.py +9 -8
  130. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/workspace/artefacts.py +6 -2
  131. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/workspace/client.py +8 -2
  132. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/workspace/context.py +4 -1
  133. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/workspace/cursor.py +2 -1
  134. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/workspace/memory.py +3 -2
  135. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/workspace/poller.py +20 -7
  136. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/workspace/preferences.py +1 -0
  137. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/workspace/router.py +38 -15
  138. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/workspace/session.py +23 -11
  139. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/workspace/subscription.py +2 -1
  140. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2/agent_framework_lib.egg-info}/PKG-INFO +1 -1
  141. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework_lib.egg-info/SOURCES.txt +7 -0
  142. {agent_framework_lib-0.8.3/agent_framework/web → agent_framework_lib-0.8.4.post2}/docs/BUILTIN_SKILLS_REFERENCE.md +1 -1
  143. agent_framework_lib-0.8.4.post2/docs/CANCEL_AND_INTERRUPT_FRONTEND.md +309 -0
  144. {agent_framework_lib-0.8.3/agent_framework/web → agent_framework_lib-0.8.4.post2}/docs/CREATING_AGENTS.md +14 -14
  145. agent_framework_lib-0.8.4.post2/docs/DEEPEVAL_TEST_REPORT.md +116 -0
  146. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/GETTING_STARTED.md +54 -54
  147. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/MULTIMODAL_TOOLS_GUIDE.md +19 -19
  148. {agent_framework_lib-0.8.3/agent_framework/web → agent_framework_lib-0.8.4.post2}/docs/TOOLS_AND_MCP_GUIDE.md +33 -33
  149. agent_framework_lib-0.8.4.post2/docs/helper_agent.md +66 -0
  150. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/index.md +1 -1
  151. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/installation-guide.md +7 -7
  152. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/agent_context_budget_test.py +1 -1
  153. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/agent_exemple_test.py +3 -2
  154. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/agent_training_with_apo.py +7 -4
  155. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/agent_with_custom_tools_file_storage.py +8 -9
  156. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/agent_with_file_storage.py +6 -7
  157. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/agent_with_mcp.py +8 -9
  158. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/agent_with_memory_graphiti.py +2 -1
  159. {agent_framework_lib-0.8.3/agent_framework/web/docs → agent_framework_lib-0.8.4.post2}/examples/agent_with_memory_hybrid.py +3 -2
  160. {agent_framework_lib-0.8.3/agent_framework/web/docs → agent_framework_lib-0.8.4.post2}/examples/agent_with_memory_simple.py +2 -1
  161. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/agent_with_personalization.py +1 -2
  162. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/biagenttest.py +11 -11
  163. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/custom_framework_agent.py +18 -20
  164. {agent_framework_lib-0.8.3/agent_framework/web/docs → agent_framework_lib-0.8.4.post2}/examples/simple_agent.py +2 -2
  165. {agent_framework_lib-0.8.3/agent_framework/web/docs → agent_framework_lib-0.8.4.post2}/examples/skills_demo_agent.py +1 -1
  166. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/test_work_patterns_live.py +6 -3
  167. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/workspace_test_agent.py +8 -8
  168. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/pyproject.toml +63 -36
  169. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/setup.py +8 -9
  170. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/ARCHITECTURE.md +0 -0
  171. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/LICENSE +0 -0
  172. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/MANIFEST.in +0 -0
  173. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/README.md +0 -0
  174. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/base.py +0 -0
  175. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/endpoints/__init__.py +0 -0
  176. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/endpoints/agent_card_builder.py +0 -0
  177. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/endpoints/agent_card_skill_builder.py +0 -0
  178. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/models.py +0 -0
  179. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/a2a/providers/__init__.py +0 -0
  180. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/activity_formatter.py +0 -0
  181. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/elasticsearch_config_provider.py +0 -0
  182. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/model_router.py +0 -0
  183. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/models.py +0 -0
  184. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/core/step_display_config.py +0 -0
  185. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/memory/base.py +0 -0
  186. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/memory/config.py +0 -0
  187. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/memory/manager.py +0 -0
  188. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/memory/providers/__init__.py +0 -0
  189. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/memory/providers/graphiti_provider.py +0 -0
  190. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/memory/tools.py +0 -0
  191. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/__init__.py +0 -0
  192. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/api_timing_tracker.py +0 -0
  193. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/llm_metrics.py +0 -0
  194. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/llm_metrics_collector.py +0 -0
  195. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/llm_metrics_extractor.py +0 -0
  196. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/metrics_aggregator.py +0 -0
  197. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/metrics_config.py +0 -0
  198. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/observability_manager.py +0 -0
  199. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/otel_instrumentor.py +0 -0
  200. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/otel_metrics_recorder.py +0 -0
  201. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/otel_setup.py +0 -0
  202. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/resource_metrics_collector.py +0 -0
  203. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/streaming_latency_tracer.py +0 -0
  204. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/timing_tracker.py +0 -0
  205. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/monitoring/tracing_context.py +0 -0
  206. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/processing/__init__.py +0 -0
  207. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/py.typed +0 -0
  208. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/session/__init__.py +0 -0
  209. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/__init__.py +0 -0
  210. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/agent_mixin.py +1 -1
  211. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/base.py +0 -0
  212. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/scripts/__init__.py +0 -0
  213. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/scripts/register_to_storage.py +0 -0
  214. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/chart/SKILL.md +0 -0
  215. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/code_format/SKILL.md +0 -0
  216. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/code_format/format_python.py +1 -1
  217. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/csv/SKILL.md +0 -0
  218. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/data_format/SKILL.md +0 -0
  219. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/drawio/SKILL.md +0 -0
  220. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/email_template/SKILL.md +0 -0
  221. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/excel/SKILL.md +0 -0
  222. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/excel/create_excel.py +0 -0
  223. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/file/SKILL.md +0 -0
  224. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/file/list_files.py +0 -0
  225. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/file_access/SKILL.md +0 -0
  226. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/file_access/download_to_local.py +0 -0
  227. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/file_access/get_file_path.py +0 -0
  228. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/form/SKILL.md +0 -0
  229. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/image_display/SKILL.md +0 -0
  230. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/image_gen/SKILL.md +0 -0
  231. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/mermaid/SKILL.md +0 -0
  232. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/multimodal/SKILL.md +0 -0
  233. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/optionsblock/SKILL.md +0 -0
  234. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/powerpoint/SKILL.md +0 -0
  235. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/powerpoint/templates/Big Data Infographics.pptx +0 -0
  236. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/powerpoint/templates/Executive Design Pitch Deck.pptx +0 -0
  237. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/powerpoint/templates/Management Consulting Toolkit.pptx +0 -0
  238. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/skill_creator/SKILL.md +0 -0
  239. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/table/SKILL.md +0 -0
  240. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/unified_pdf/SKILL.md +0 -0
  241. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/web_news_search/SKILL.md +0 -0
  242. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/web_news_search/web_news_search.py +0 -0
  243. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/builtin/skills/word/SKILL.md +0 -0
  244. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/skills/discovery_prompt.py +0 -0
  245. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/subagents/__init__.py +0 -0
  246. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/subagents/message_queue.py +0 -0
  247. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/tools/activity_callback.py +0 -0
  248. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/tools/adaptive_pdf_css.py +0 -0
  249. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/tools/base.py +0 -0
  250. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/tools/pdf_image_scaler.py +0 -0
  251. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/tools/sizing_config.py +0 -0
  252. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/utils/source_detector.py +0 -0
  253. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/admin_auth.py +0 -0
  254. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/admin_models.py +0 -0
  255. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/admin_router.py +0 -0
  256. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/api_timing_middleware.py +0 -0
  257. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/A2A_GUIDE.md +0 -0
  258. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/CUSTOM_SKILLS_GUIDE.md +0 -0
  259. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/DOCKER_SETUP.md +0 -0
  260. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/Dockerfile +0 -0
  261. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/GITNEXUS_USER_GUIDE.md +0 -0
  262. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/MEMORY_INSTALLATION.md +0 -0
  263. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/README.md +0 -0
  264. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/WORKSPACE_INTEGRATION.md +0 -0
  265. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/api-reference.md +0 -0
  266. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/configuration.md +0 -0
  267. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/docker-compose.yml +0 -0
  268. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/docs/examples/agent_example_multi_skills.py +1 -1
  269. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/helper_ui.html +0 -0
  270. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/observability/kibana-llm-dashboard-setup.json +0 -0
  271. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/observability/kibana-resource-metrics-dashboard.json +0 -0
  272. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/web/test_app.html +0 -0
  273. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/workspace/config.py +0 -0
  274. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework/workspace/models.py +0 -0
  275. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework_lib.egg-info/dependency_links.txt +0 -0
  276. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework_lib.egg-info/entry_points.txt +0 -0
  277. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework_lib.egg-info/requires.txt +0 -0
  278. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/agent_framework_lib.egg-info/top_level.txt +0 -0
  279. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/A2A_GUIDE.md +0 -0
  280. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/ACTIVITY_OUTPUT_PART.md +0 -0
  281. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/ARCHITECTURE_DIAGRAM.md +0 -0
  282. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/CONCURRENCE_VS_PARALLELISME_GUIDE.md +0 -0
  283. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/CUSTOM_SKILLS_GUIDE.md +0 -0
  284. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/DOCKER_SETUP.md +0 -0
  285. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/ELASTICSEARCH_DATA_STRUCTURES.md +0 -0
  286. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/FILE_DOWNLOAD_LINKS.md +0 -0
  287. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/FILE_STORAGE_GUIDE.md +0 -0
  288. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/GITNEXUS_USER_GUIDE.md +0 -0
  289. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/HISTORY_MESSAGE_FORMAT.md +0 -0
  290. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/IMPLEMENTATION_GUIDE_NEW_AGENT.md +0 -0
  291. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/MEMORY_INSTALLATION.md +0 -0
  292. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/MODIFICATIONS_CONCURRENCE.md +0 -0
  293. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/OBSERVABILITY_GUIDE.md +0 -0
  294. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/PYPI_PUBLISHING.md +0 -0
  295. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/QA_STREAMING_LATENCY.md +0 -0
  296. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/SCREENSHOTS_GUIDE.md +0 -0
  297. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/SPEC_CROSS_MODEL_HISTORY_CONVERSION.md +0 -0
  298. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/SSE_NOTIFICATIONS_GUIDE.md +0 -0
  299. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/STREAMING_EVENTS_FRONTEND.md +0 -0
  300. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/WORKSPACE_INTEGRATION.md +0 -0
  301. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/api-reference.md +0 -0
  302. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/configuration.md +0 -0
  303. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/docs/framework_audit_remarques.md +0 -0
  304. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/README.md +0 -0
  305. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/agent_example_multi_skills.py +1 -1
  306. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/dependencies/docker-compose.yaml +0 -0
  307. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/examples/pyproject.toml +0 -0
  308. {agent_framework_lib-0.8.3 → agent_framework_lib-0.8.4.post2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-framework-lib
3
- Version: 0.8.3
3
+ Version: 0.8.4.post2
4
4
  Summary: A comprehensive Python framework for building and serving conversational AI agents with FastAPI
5
5
  Author-email: Sebastian Pavel <sebastian@cinco.ai>, Elliott Girard <elliott.girard@icloud.com>
6
6
  Maintainer-email: Sebastian Pavel <sebastian@cinco.ai>
@@ -32,7 +32,7 @@ Example Usage:
32
32
  create_basic_agent_server(MyAgent, port=8000)
33
33
  ```
34
34
 
35
- Version: 0.8.3
35
+ Version: 0.8.4
36
36
  Author: Cinco AI Team
37
37
  License: MIT
38
38
  """
@@ -41,6 +41,7 @@ import logging
41
41
  import os
42
42
  from typing import TYPE_CHECKING
43
43
 
44
+
44
45
  # Create logger for this module
45
46
  logger = logging.getLogger(__name__)
46
47
 
@@ -64,7 +65,7 @@ def _auto_setup_dependencies() -> None:
64
65
  _AUTO_SETUP_DONE = True
65
66
 
66
67
  try:
67
- from .utils.post_install import ensure_playwright_browsers, ensure_deno
68
+ from .utils.post_install import ensure_deno, ensure_playwright_browsers
68
69
 
69
70
  # Check/install Playwright (silent if already installed)
70
71
  success, error = ensure_playwright_browsers()
@@ -88,99 +89,100 @@ def _auto_setup_dependencies() -> None:
88
89
  # Track if auto-setup has been done
89
90
  _AUTO_SETUP_DONE = False
90
91
 
91
- __version__ = "0.8.3"
92
+ __version__ = "0.8.4"
92
93
  __author__ = "Cinco AI Team"
93
94
  __license__ = "MIT"
94
95
  __email__ = "sebastian@cinco.ai"
95
96
 
96
97
  # Core interfaces and base classes
97
98
  from .core.agent_interface import (
99
+ AgentConfig,
100
+ AgentInputPartUnion,
98
101
  AgentInterface,
102
+ AgentOutputPartUnion,
103
+ ChartJsOutputPart,
104
+ FileContentOutputPart,
105
+ FileDataInputPart,
106
+ FileDownloadLinkOutputPart,
107
+ FileReferenceInputPart,
108
+ FileReferenceOutputPart,
109
+ FormDefinitionOutputPart,
110
+ ImageOutputPart,
111
+ ImageUrlInputPart,
112
+ JsonOutputPart,
113
+ MermaidOutputPart,
114
+ OptionsBlockOutputPart,
99
115
  StructuredAgentInput,
100
116
  StructuredAgentOutput,
101
- AgentConfig,
117
+ TableDataOutputPart,
102
118
  # Input part types
103
119
  TextInputPart,
104
- ImageUrlInputPart,
105
- FileDataInputPart,
106
- AgentInputPartUnion,
107
120
  # Output part types
108
121
  TextOutputPart,
109
122
  TextOutputStreamPart,
110
- JsonOutputPart,
111
123
  YamlOutputPart,
112
- FileContentOutputPart,
113
- FileReferenceInputPart,
114
- FileReferenceOutputPart,
115
- MermaidOutputPart,
116
- ChartJsOutputPart,
117
- TableDataOutputPart,
118
- FormDefinitionOutputPart,
119
- OptionsBlockOutputPart,
120
- FileDownloadLinkOutputPart,
121
- ImageOutputPart,
122
- AgentOutputPartUnion,
123
124
  # Utility functions
124
125
  consolidate_text_parts,
125
126
  strip_technical_details,
126
127
  )
127
128
 
128
- # Framework-agnostic base agent and implementations
129
- from .core.base_agent import BaseAgent
130
- from .implementations.llamaindex_agent import LlamaIndexAgent
131
- from .implementations.microsoft_agent import MicrosoftAgent
132
-
133
- # State management
134
- from .core.state_manager import StateManager, AgentIdentity
135
-
136
129
  # Agent provider
137
130
  from .core.agent_provider import AgentManager
138
131
 
132
+ # Framework-agnostic base agent and implementations
133
+ from .core.base_agent import BaseAgent
134
+ from .core.model_clients import ModelClientFactory, client_factory
135
+
139
136
  # Model configuration and clients
140
137
  from .core.model_config import ModelConfigManager, ModelProvider, model_config
141
- from .core.model_clients import ModelClientFactory, client_factory
138
+
139
+ # State management
140
+ from .core.state_manager import AgentIdentity, StateManager
141
+ from .implementations.llamaindex_agent import LlamaIndexAgent
142
+ from .implementations.microsoft_agent import MicrosoftAgent
142
143
 
143
144
  # Session storage
144
145
  from .session.session_storage import (
145
- SessionStorageInterface,
146
- SessionStorageFactory,
147
- SessionData,
146
+ AgentLifecycleData,
147
+ MemorySessionStorage,
148
148
  MessageData,
149
149
  MessageInsight,
150
150
  MessageMetadata,
151
- AgentLifecycleData,
152
- MemorySessionStorage,
153
151
  MongoDBSessionStorage,
152
+ SessionData,
153
+ SessionStorageFactory,
154
+ SessionStorageInterface,
154
155
  history_message_to_message_data,
155
156
  message_data_to_history_message,
156
157
  )
158
+ from .storage.file_storages import (
159
+ FileMetadata,
160
+ FileStorageInterface,
161
+ LocalFileStorage,
162
+ MetadataStorageInterface,
163
+ )
157
164
 
158
165
  # File system management (consolidated)
159
166
  from .storage.file_system_management import (
160
- FileStorageManager,
167
+ FileInputMixin,
161
168
  FileStorageFactory,
162
- process_file_inputs,
163
- process_response_file_links,
169
+ FileStorageManager,
164
170
  get_download_url,
165
171
  get_file_processing_summary,
166
- FileInputMixin,
167
- )
168
- from .storage.file_storages import (
169
- FileStorageInterface,
170
- MetadataStorageInterface,
171
- FileMetadata,
172
- LocalFileStorage,
172
+ process_file_inputs,
173
+ process_response_file_links,
173
174
  )
174
175
 
176
+
175
177
  # Optional file storage backends (only available if dependencies are installed)
176
178
  try:
177
- from .storage.file_storages import S3FileStorage, S3_AVAILABLE
179
+ from .storage.file_storages import S3_AVAILABLE, S3FileStorage
178
180
  except ImportError:
179
181
  S3FileStorage = None
180
182
  S3_AVAILABLE = False
181
183
 
182
184
  try:
183
- from .storage.file_storages import MinIOFileStorage, MINIO_AVAILABLE
185
+ from .storage.file_storages import MINIO_AVAILABLE, MinIOFileStorage
184
186
  except ImportError:
185
187
  MinIOFileStorage = None
186
188
  MINIO_AVAILABLE = False
@@ -191,6 +193,7 @@ from .utils import get_deno_command
191
193
  # Server application
192
194
  from .web.server import app, start_server
193
195
 
196
+
194
197
  # Convenience imports for common use cases
195
198
  __all__ = [
196
199
  # Version info
@@ -9,15 +9,16 @@ The Task Store is a lightweight mapping layer: it links A2A task IDs
9
9
  to existing framework sessions, without duplicating conversational content.
10
10
  """
11
11
 
12
- from .models import A2ATask, TaskStatus
13
12
  from .base import A2ATaskProvider
13
+ from .models import A2ATask, TaskStatus
14
14
  from .providers import (
15
- ElasticsearchTaskProvider,
16
- PostgresTaskProvider,
17
15
  ELASTICSEARCH_PROVIDER_AVAILABLE,
18
16
  POSTGRES_PROVIDER_AVAILABLE,
17
+ ElasticsearchTaskProvider,
18
+ PostgresTaskProvider,
19
19
  )
20
20
 
21
+
21
22
  __all__ = [
22
23
  "A2ATask",
23
24
  "TaskStatus",
@@ -31,4 +32,5 @@ __all__ = [
31
32
 
32
33
  from . import endpoints
33
34
 
35
+
34
36
  __version__ = "0.1.0"
@@ -4,17 +4,22 @@ from __future__ import annotations
4
4
 
5
5
  import logging
6
6
  import os
7
- from typing import Any
7
+ from typing import TYPE_CHECKING, Any
8
8
 
9
9
  from fastapi import APIRouter, Depends, HTTPException, Request
10
- from fastapi.responses import JSONResponse
11
10
 
12
11
  from .agent_card_builder import AgentCardBuilder
13
12
  from .jsonrpc_dispatcher import JSONRPCDispatcher
14
- from .models_jsonrpc import A2AConfigRequest
15
13
  from .sse_wrapper import SSEWrapperA2A
16
14
  from .translation_layer import A2ATranslationLayer
17
15
 
16
+
17
+ if TYPE_CHECKING:
18
+ from fastapi.responses import JSONResponse
19
+
20
+ from .models_jsonrpc import A2AConfigRequest
21
+
22
+
18
23
  logger = logging.getLogger(__name__)
19
24
 
20
25
 
@@ -21,6 +21,7 @@ from .models_jsonrpc import (
21
21
  TaskGetParams,
22
22
  )
23
23
 
24
+
24
25
  logger = logging.getLogger(__name__)
25
26
 
26
27
 
@@ -6,6 +6,7 @@ from typing import Any, Literal
6
6
 
7
7
  from pydantic import BaseModel
8
8
 
9
+
9
10
  # JSON-RPC 2.0 standard error codes
10
11
  PARSE_ERROR = -32700
11
12
  INVALID_REQUEST = -32600
@@ -16,6 +16,7 @@ from .models_jsonrpc import (
16
16
  TaskStatusUpdateEvent,
17
17
  )
18
18
 
19
+
19
20
  logger = logging.getLogger(__name__)
20
21
 
21
22
 
@@ -4,16 +4,12 @@ from __future__ import annotations
4
4
 
5
5
  import logging
6
6
  import uuid
7
- from collections.abc import AsyncGenerator
8
7
  from datetime import datetime, timezone
9
8
  from typing import TYPE_CHECKING, Any
10
9
 
11
- from ..base import TaskNotCancelableError, TaskNotFoundError
10
+ from ..base import TaskNotFoundError
12
11
  from ..models import A2ATask, TaskStatus
13
12
  from .models_jsonrpc import (
14
- INTERNAL_ERROR,
15
- TASK_NOT_CANCELABLE,
16
- TASK_NOT_FOUND,
17
13
  A2AArtifact,
18
14
  A2AMessage,
19
15
  A2APart,
@@ -24,7 +20,10 @@ from .models_jsonrpc import (
24
20
  TaskGetParams,
25
21
  )
26
22
 
23
+
27
24
  if TYPE_CHECKING:
25
+ from collections.abc import AsyncGenerator
26
+
28
27
  from ..base import A2ATaskProvider
29
28
  from .sse_wrapper import SSEWrapperA2A
30
29
 
@@ -1,7 +1,7 @@
1
1
  """Elasticsearch implementation of A2ATaskProvider."""
2
2
 
3
3
  import logging
4
- from datetime import datetime, timezone, timedelta
4
+ from datetime import datetime, timedelta, timezone
5
5
 
6
6
  from ..base import (
7
7
  A2ATaskProvider,
@@ -2,7 +2,8 @@
2
2
 
3
3
  import json
4
4
  import logging
5
- from datetime import datetime, timezone, timedelta
5
+ from datetime import datetime, timedelta, timezone
6
+
6
7
 
7
8
  try:
8
9
  import asyncpg # noqa: F401 — availability check
@@ -1,6 +1,6 @@
1
1
  """Capability resolution for token-based access control."""
2
2
 
3
- from .resolver import CapabilityResolverError, CapabilityResolver, CapabilitySet
3
+ from .resolver import CapabilityResolver, CapabilityResolverError, CapabilitySet
4
4
 
5
5
 
6
6
  __all__ = [
@@ -8,10 +8,13 @@ import contextlib
8
8
  import json
9
9
  import logging
10
10
  import os
11
- from collections.abc import Iterator
12
11
  from dataclasses import dataclass, field
13
12
  from pathlib import Path
14
- from typing import Any
13
+ from typing import TYPE_CHECKING, Any
14
+
15
+
16
+ if TYPE_CHECKING:
17
+ from collections.abc import Iterator
15
18
 
16
19
 
17
20
  logger = logging.getLogger(__name__)
@@ -27,7 +30,7 @@ class CapabilitySet:
27
30
  env_overrides: dict[str, str] = field(default_factory=dict)
28
31
 
29
32
  @classmethod
30
- def empty(cls) -> "CapabilitySet":
33
+ def empty(cls) -> CapabilitySet:
31
34
  """Return an empty CapabilitySet (no capabilities authorized)."""
32
35
  return cls()
33
36
 
@@ -3,4 +3,5 @@
3
3
  from agent_framework.core.elasticsearch_config_provider import ElasticsearchConfigProvider
4
4
  from agent_framework.core.models import Tag
5
5
 
6
+
6
7
  __all__ = ["ElasticsearchConfigProvider", "Tag"]
@@ -95,9 +95,8 @@ class FileDataInputPart(BaseModel):
95
95
  @classmethod
96
96
  def validate_at_least_one_source(cls, data: Any) -> Any:
97
97
  """Ensure content_base64 is present."""
98
- if isinstance(data, dict):
99
- if "content_base64" not in data:
100
- raise ValueError("content_base64 must be present")
98
+ if isinstance(data, dict) and "content_base64" not in data:
99
+ raise ValueError("content_base64 must be present")
101
100
  return data
102
101
 
103
102
  def set_binary_content(self, binary_data: bytes):
@@ -201,9 +200,8 @@ class MediaPartType(BaseModel):
201
200
  @classmethod
202
201
  def validate_at_least_one_source(cls, data: Any) -> Any:
203
202
  """Ensure either content or url is present."""
204
- if isinstance(data, dict):
205
- if not ("content" in data or "url" in data):
206
- raise ValueError("Either content or url must be present")
203
+ if isinstance(data, dict) and not ("content" in data or "url" in data):
204
+ raise ValueError("Either content or url must be present")
207
205
  return data
208
206
 
209
207
  def set_binary_content(self, binary_data: bytes):
@@ -12,22 +12,23 @@ Observability Integration:
12
12
  - Uses StreamingLatencyTracer for granular preprocessing instrumentation
13
13
  """
14
14
 
15
- import logging
16
15
  import asyncio
16
+ import logging
17
17
  import uuid
18
+ from collections.abc import AsyncGenerator
18
19
  from datetime import datetime, timezone
19
- from typing import TYPE_CHECKING, Any, AsyncGenerator, Dict, Optional, Type
20
+ from typing import TYPE_CHECKING, Any
20
21
 
21
- from .agent_interface import AgentInterface, StructuredAgentInput, StructuredAgentOutput
22
22
  from agent_framework.core.model_config import model_config
23
- from .state_manager import AgentIdentity, StateManager
24
- from ..session.session_storage import AgentLifecycleData, SessionStorageInterface
23
+
25
24
  from ..monitoring.streaming_latency_tracer import get_streaming_latency_tracer
25
+ from ..session.session_storage import AgentLifecycleData, SessionStorageInterface
26
+ from .agent_interface import AgentInterface, StructuredAgentInput, StructuredAgentOutput
27
+ from .state_manager import AgentIdentity, StateManager
26
28
 
27
29
 
28
30
  if TYPE_CHECKING:
29
31
  from ..monitoring.observability_manager import ObservabilityManager
30
- from ..monitoring.tracing_context import APISpanContext
31
32
 
32
33
  logger = logging.getLogger(__name__)
33
34
 
@@ -60,15 +61,15 @@ class _ManagedAgentProxy(AgentInterface):
60
61
  """
61
62
  return getattr(self._real_agent, name)
62
63
 
63
- async def get_metadata(self) -> Dict[str, Any]:
64
+ async def get_metadata(self) -> dict[str, Any]:
64
65
  """Passes the call to the real agent."""
65
66
  return await self._real_agent.get_metadata()
66
67
 
67
- async def get_system_prompt(self) -> Optional[str]:
68
+ async def get_system_prompt(self) -> str | None:
68
69
  """Passes the call to the real agent."""
69
70
  return await self._real_agent.get_system_prompt()
70
71
 
71
- async def get_current_model(self, session_id: str) -> Optional[str]:
72
+ async def get_current_model(self, session_id: str) -> str | None:
72
73
  """Passes the call to the real agent."""
73
74
  return await self._real_agent.get_current_model(session_id)
74
75
 
@@ -82,17 +83,17 @@ class _ManagedAgentProxy(AgentInterface):
82
83
  if hasattr(self._real_agent, "set_display_config_manager"):
83
84
  self._real_agent.set_display_config_manager(manager)
84
85
 
85
- def get_custom_tool_display_info(self) -> Dict[str, Any]:
86
+ def get_custom_tool_display_info(self) -> dict[str, Any]:
86
87
  """Passes the call to the real agent to get custom tool display info."""
87
88
  if hasattr(self._real_agent, "get_custom_tool_display_info"):
88
89
  return self._real_agent.get_custom_tool_display_info()
89
90
  return {}
90
91
 
91
- async def get_state(self) -> Dict[str, Any]:
92
+ async def get_state(self) -> dict[str, Any]:
92
93
  """Passes the call to the real agent."""
93
94
  return await self._real_agent.get_state()
94
95
 
95
- async def load_state(self, state: Dict[str, Any]):
96
+ async def load_state(self, state: dict[str, Any]):
96
97
  """Passes the call to the real agent."""
97
98
  await self._real_agent.load_state(state)
98
99
 
@@ -182,8 +183,8 @@ class AgentManager:
182
183
 
183
184
  def __init__(self, storage: SessionStorageInterface):
184
185
  self._storage = storage
185
- self._active_agents: Dict[str, AgentInterface] = {} # A cache for active agent instances
186
- self._observability_manager: Optional["ObservabilityManager"] = None
186
+ self._active_agents: dict[str, AgentInterface] = {} # A cache for active agent instances
187
+ self._observability_manager: ObservabilityManager | None = None
187
188
 
188
189
  def _get_observability_manager(self) -> "ObservabilityManager":
189
190
  """Get or create the ObservabilityManager instance.
@@ -198,7 +199,7 @@ class AgentManager:
198
199
  return self._observability_manager
199
200
 
200
201
  async def get_agent(
201
- self, session_id: str, agent_class: Type[AgentInterface], user_id: str = ""
202
+ self, session_id: str, agent_class: type[AgentInterface], user_id: str = ""
202
203
  ) -> AgentInterface:
203
204
  """
204
205
  Gets a fully initialized agent instance for a given session, wrapped in a
@@ -225,9 +226,7 @@ class AgentManager:
225
226
  async with tracer.agent_span("inject_storage"):
226
227
  if hasattr(real_agent, "set_session_storage"):
227
228
  real_agent.set_session_storage(self._storage)
228
- logger.debug(
229
- f"AgentManager: Injected session storage into agent for memory support"
230
- )
229
+ logger.debug("AgentManager: Injected session storage into agent for memory support")
231
230
 
232
231
  # 2. Create agent identity before any other operations
233
232
  agent_identity = StateManager.create_agent_identity(real_agent)
@@ -236,7 +235,6 @@ class AgentManager:
236
235
  )
237
236
 
238
237
  # Import model_config before using it
239
- from agent_framework.core.model_config import model_config
240
238
 
241
239
  # Check if agent uses remote config
242
240
  use_remote_config = agent_class.get_use_remote_config()
@@ -329,7 +327,7 @@ class AgentManager:
329
327
  else:
330
328
  # Session has stored config but not from ES, merge it
331
329
  logger.debug(
332
- f"AgentManager: Found existing session configuration, merging with dynamic config"
330
+ "AgentManager: Found existing session configuration, merging with dynamic config"
333
331
  )
334
332
  effective_config = dynamic_config.copy()
335
333
  effective_config = self._merge_session_configs(effective_config, stored_config)
@@ -454,7 +452,7 @@ class AgentManager:
454
452
  # Fallback: store full config if we can't get version info
455
453
  session_data.session_configuration = effective_config
456
454
  logger.warning(
457
- f"AgentManager: Could not get ES config version, storing full config"
455
+ "AgentManager: Could not get ES config version, storing full config"
458
456
  )
459
457
  except Exception as e:
460
458
  logger.warning(
@@ -514,8 +512,8 @@ class AgentManager:
514
512
  return proxy
515
513
 
516
514
  def _merge_session_configs(
517
- self, base_config: Dict[str, Any], session_config: Dict[str, Any]
518
- ) -> Dict[str, Any]:
515
+ self, base_config: dict[str, Any], session_config: dict[str, Any]
516
+ ) -> dict[str, Any]:
519
517
  """
520
518
  Merge session configuration with base configuration.
521
519
 
@@ -594,7 +592,7 @@ class AgentManager:
594
592
  logger.error(f"AgentManager: Error updating session with agent identity: {e}")
595
593
 
596
594
  async def _validate_agent_state_compatibility(
597
- self, agent_identity: AgentIdentity, agent_state: Dict[str, Any]
595
+ self, agent_identity: AgentIdentity, agent_state: dict[str, Any]
598
596
  ) -> bool:
599
597
  """
600
598
  Validate that agent state is compatible with current agent identity.
@@ -608,9 +606,9 @@ class AgentManager:
608
606
  self,
609
607
  agent_identity: AgentIdentity,
610
608
  event_type: str,
611
- session_id: Optional[str] = None,
612
- user_id: Optional[str] = None,
613
- metadata: Optional[Dict[str, Any]] = None,
609
+ session_id: str | None = None,
610
+ user_id: str | None = None,
611
+ metadata: dict[str, Any] | None = None,
614
612
  ) -> None:
615
613
  """Record an agent lifecycle event"""
616
614
  try:
@@ -20,11 +20,13 @@ import logging
20
20
  import os
21
21
  import time
22
22
  from abc import abstractmethod
23
- from collections.abc import AsyncGenerator
24
23
  from datetime import datetime, timezone
25
24
  from typing import TYPE_CHECKING, Any
26
25
 
26
+
27
27
  if TYPE_CHECKING:
28
+ from collections.abc import AsyncGenerator
29
+
28
30
  from ..capabilities.resolver import CapabilitySet
29
31
  from ..subagents.executor import SubagentExecutor
30
32
  from ..subagents.message_queue import SessionMessageQueue
@@ -349,7 +351,7 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
349
351
  """
350
352
  return None
351
353
 
352
- def set_subagent_executor(self, executor: "SubagentExecutor | None") -> None:
354
+ def set_subagent_executor(self, executor: SubagentExecutor | None) -> None:
353
355
  """Inject or remove the shared SubagentExecutor.
354
356
 
355
357
  Automatically extracts the SessionMessageQueue from the executor's
@@ -361,7 +363,7 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
361
363
  else:
362
364
  self._message_queue = None
363
365
 
364
- def _create_subagent_spawn_tool(self) -> "SubagentSpawnTool | None":
366
+ def _create_subagent_spawn_tool(self) -> SubagentSpawnTool | None:
365
367
  """Create the SubagentSpawnTool if all conditions are met.
366
368
 
367
369
  Returns None when the executor, capability_set, or the
@@ -683,7 +685,9 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
683
685
  if meta and hasattr(meta, "name"):
684
686
  name = meta.name
685
687
  else:
686
- name = getattr(tool, "__name__", None) or getattr(tool, "name", None) or str(id(tool))
688
+ name = (
689
+ getattr(tool, "__name__", None) or getattr(tool, "name", None) or str(id(tool))
690
+ )
687
691
  if name not in seen_names:
688
692
  seen_names.add(name)
689
693
  unique_tools.append(tool)
@@ -763,10 +767,7 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
763
767
  self._current_spawn_depth = session_configuration["spawn_depth"]
764
768
 
765
769
  # Use parent's session_id for file storage if configured (subagent file sharing)
766
- if "file_storage_session_id" in session_configuration:
767
- self._file_storage_session_id = session_configuration["file_storage_session_id"]
768
- else:
769
- self._file_storage_session_id = None
770
+ self._file_storage_session_id = session_configuration.get("file_storage_session_id")
770
771
 
771
772
  # --- Automatic personalization injection ---
772
773
  # Activated when PERSONALIZATION_ENABLED=true (default) AND memory is available.
@@ -828,6 +829,7 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
828
829
  work_profile_block = ""
829
830
  try:
830
831
  from ..memory.work_patterns import WorkPatternAnalyzer
832
+
831
833
  wp_analyzer = WorkPatternAnalyzer(provider)
832
834
  work_profile = await wp_analyzer.build_profile(
833
835
  user_id=user_id,
@@ -837,13 +839,11 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
837
839
  if work_profile.total_interactions >= 3:
838
840
  directives = wp_analyzer.build_agent_directives(work_profile)
839
841
  if directives:
840
- work_profile_block = (
841
- "\n\n[Directives de travail]\n"
842
- f"{directives}"
843
- )
842
+ work_profile_block = "\n\n[Directives de travail]\n" f"{directives}"
844
843
  logger.info(
845
844
  "Work pattern directives injected for user=%s: %d interactions",
846
- user_id, work_profile.total_interactions,
845
+ user_id,
846
+ work_profile.total_interactions,
847
847
  )
848
848
  except Exception as e:
849
849
  logger.debug("Work pattern injection skipped: %s", e)
@@ -851,7 +851,8 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
851
851
  # --- Response Lessons (the key part) ---
852
852
  lessons_block = ""
853
853
  try:
854
- from ..memory.response_lessons import recall_lessons, format_lessons_for_prompt
854
+ from ..memory.response_lessons import format_lessons_for_prompt, recall_lessons
855
+
855
856
  lessons = await recall_lessons(provider, user_id, self.agent_id, limit=10)
856
857
  if lessons:
857
858
  formatted = format_lessons_for_prompt(lessons)
@@ -859,12 +860,15 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
859
860
  lessons_block = f"\n\n[Leçons apprises — compléments à inclure automatiquement]\n{formatted}"
860
861
  logger.info(
861
862
  "Response lessons injected for user=%s: %d lessons",
862
- user_id, len(lessons),
863
+ user_id,
864
+ len(lessons),
863
865
  )
864
866
  except Exception as e:
865
867
  logger.debug("Response lessons injection skipped: %s", e)
866
868
 
867
- preference_block = f"[User Preferences]\n{fact_lines}{work_profile_block}{lessons_block}"
869
+ preference_block = (
870
+ f"[User Preferences]\n{fact_lines}{work_profile_block}{lessons_block}"
871
+ )
868
872
 
869
873
  prompt = self._session_system_prompt or ""
870
874
  if "{{native_user_preferences}}" in prompt:
@@ -1112,7 +1116,9 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
1112
1116
  if success:
1113
1117
  logger.info(
1114
1118
  "[MEMORY_STORE] Auto-stored interaction for user=%s "
1115
- "(response_len=%d)", user_id, len(response_text)
1119
+ "(response_len=%d)",
1120
+ user_id,
1121
+ len(response_text),
1116
1122
  )
1117
1123
  else:
1118
1124
  logger.warning(f"Failed to auto-store interaction for user {user_id}")
@@ -1507,7 +1513,9 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
1507
1513
  if success:
1508
1514
  logger.info(
1509
1515
  "[MEMORY_STORE] Auto-stored streaming interaction for user=%s "
1510
- "(response_len=%d)", user_id, len(final_text)
1516
+ "(response_len=%d)",
1517
+ user_id,
1518
+ len(final_text),
1511
1519
  )
1512
1520
  else:
1513
1521
  logger.warning(