agent-framework-lib 0.8.2.post2__tar.gz → 0.8.3__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 (304) hide show
  1. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/MANIFEST.in +3 -0
  2. {agent_framework_lib-0.8.2.post2/agent_framework_lib.egg-info → agent_framework_lib-0.8.3}/PKG-INFO +1 -1
  3. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/__init__.py +2 -2
  4. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/base_agent.py +84 -6
  5. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/memory/__init__.py +42 -0
  6. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/memory/agent_mixin.py +56 -5
  7. agent_framework_lib-0.8.3/agent_framework/memory/implicit_feedback.py +491 -0
  8. agent_framework_lib-0.8.3/agent_framework/memory/response_lessons.py +224 -0
  9. agent_framework_lib-0.8.3/agent_framework/memory/work_patterns.py +776 -0
  10. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/notifications/__init__.py +2 -0
  11. agent_framework_lib-0.8.3/agent_framework/notifications/webhook_notifier.py +116 -0
  12. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/scripts/create_and_register.py +9 -0
  13. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/chart/chart_to_image.py +105 -7
  14. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/mermaid/mermaid_to_image.py +121 -6
  15. agent_framework_lib-0.8.3/agent_framework/skills/builtin/skills/powerpoint/SKILL.md +1112 -0
  16. agent_framework_lib-0.8.3/agent_framework/skills/builtin/skills/powerpoint/create_powerpoint.py +2583 -0
  17. agent_framework_lib-0.8.3/agent_framework/skills/builtin/skills/powerpoint/templates/Big Data Infographics.pptx +0 -0
  18. agent_framework_lib-0.8.3/agent_framework/skills/builtin/skills/powerpoint/templates/Executive Design Pitch Deck.pptx +0 -0
  19. agent_framework_lib-0.8.3/agent_framework/skills/builtin/skills/powerpoint/templates/Management Consulting Toolkit.pptx +0 -0
  20. agent_framework_lib-0.8.3/agent_framework/skills/builtin/skills/powerpoint/templates/__init__.py +24 -0
  21. agent_framework_lib-0.8.3/agent_framework/skills/builtin/skills/powerpoint/templates/generate_templates.py +26 -0
  22. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/skill_creator/SKILL.md +197 -82
  23. agent_framework_lib-0.8.3/agent_framework/skills/builtin/skills/skill_creator/skill_api.py +316 -0
  24. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/table/table_to_image.py +12 -1
  25. agent_framework_lib-0.8.3/agent_framework/tools/shell_tool.py +368 -0
  26. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3/agent_framework/web}/docs/CUSTOM_SKILLS_GUIDE.md +121 -3
  27. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/helper_agent.py +454 -23
  28. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/server.py +94 -237
  29. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/workspace/router.py +5 -0
  30. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/workspace/session.py +18 -0
  31. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3/agent_framework_lib.egg-info}/PKG-INFO +1 -1
  32. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework_lib.egg-info/SOURCES.txt +11 -0
  33. {agent_framework_lib-0.8.2.post2/agent_framework/web → agent_framework_lib-0.8.3}/docs/CUSTOM_SKILLS_GUIDE.md +121 -3
  34. agent_framework_lib-0.8.3/examples/test_work_patterns_live.py +145 -0
  35. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/pyproject.toml +1 -1
  36. agent_framework_lib-0.8.2.post2/agent_framework/skills/builtin/skills/powerpoint/SKILL.md +0 -426
  37. agent_framework_lib-0.8.2.post2/agent_framework/skills/builtin/skills/powerpoint/create_powerpoint.py +0 -396
  38. agent_framework_lib-0.8.2.post2/agent_framework/tools/shell_tool.py +0 -183
  39. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/ARCHITECTURE.md +0 -0
  40. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/LICENSE +0 -0
  41. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/README.md +0 -0
  42. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/__init__.py +0 -0
  43. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/base.py +0 -0
  44. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/endpoints/__init__.py +0 -0
  45. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/endpoints/a2a_router.py +0 -0
  46. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/endpoints/agent_card_builder.py +0 -0
  47. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/endpoints/agent_card_skill_builder.py +0 -0
  48. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/endpoints/jsonrpc_dispatcher.py +0 -0
  49. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/endpoints/models_jsonrpc.py +0 -0
  50. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/endpoints/sse_wrapper.py +0 -0
  51. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/endpoints/translation_layer.py +0 -0
  52. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/models.py +0 -0
  53. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/providers/__init__.py +0 -0
  54. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/providers/elasticsearch_provider.py +0 -0
  55. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/a2a/providers/postgres_provider.py +0 -0
  56. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/capabilities/__init__.py +0 -0
  57. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/capabilities/resolver.py +0 -0
  58. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/__init__.py +0 -0
  59. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/activity_formatter.py +0 -0
  60. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/agent_interface.py +0 -0
  61. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/agent_provider.py +0 -0
  62. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/context_budget.py +0 -0
  63. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/context_summarizer.py +0 -0
  64. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/elasticsearch_config_provider.py +0 -0
  65. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/implementation_validator.py +0 -0
  66. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/knowledge_state.py +0 -0
  67. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/loop_detector.py +0 -0
  68. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/model_clients.py +0 -0
  69. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/model_config.py +0 -0
  70. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/model_router.py +0 -0
  71. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/models.py +0 -0
  72. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/provider_calibration.py +0 -0
  73. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/scratchpad_compressor.py +0 -0
  74. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/state_manager.py +0 -0
  75. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/step_display_config.py +0 -0
  76. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/core/streaming_parts_accumulator.py +0 -0
  77. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/implementations/__init__.py +0 -0
  78. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/implementations/budget_aware_agent.py +0 -0
  79. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/implementations/llamaindex_agent.py +0 -0
  80. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/implementations/llamaindex_memory_adapter.py +0 -0
  81. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/implementations/microsoft_agent.py +0 -0
  82. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/memory/base.py +0 -0
  83. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/memory/config.py +0 -0
  84. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/memory/manager.py +0 -0
  85. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/memory/personalization.py +0 -0
  86. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/memory/providers/__init__.py +0 -0
  87. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/memory/providers/graphiti_provider.py +0 -0
  88. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/memory/providers/memori_provider.py +0 -0
  89. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/memory/tools.py +0 -0
  90. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/__init__.py +0 -0
  91. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/api_timing_tracker.py +0 -0
  92. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/elasticsearch_circuit_breaker.py +0 -0
  93. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/elasticsearch_logging.py +0 -0
  94. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/error_handling.py +0 -0
  95. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/error_logging.py +0 -0
  96. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/llm_auto_instrumentor.py +0 -0
  97. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/llm_metrics.py +0 -0
  98. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/llm_metrics_collector.py +0 -0
  99. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/llm_metrics_extractor.py +0 -0
  100. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/metrics_aggregator.py +0 -0
  101. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/metrics_config.py +0 -0
  102. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/observability_manager.py +0 -0
  103. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/otel_instrumentor.py +0 -0
  104. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/otel_logging_handler.py +0 -0
  105. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/otel_metrics_recorder.py +0 -0
  106. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/otel_setup.py +0 -0
  107. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/performance_monitor.py +0 -0
  108. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/progress_tracker.py +0 -0
  109. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/resource_manager.py +0 -0
  110. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/resource_metrics_collector.py +0 -0
  111. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/streaming_latency_tracer.py +0 -0
  112. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/timing_tracker.py +0 -0
  113. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/token_counter.py +0 -0
  114. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/monitoring/tracing_context.py +0 -0
  115. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/notifications/hub.py +0 -0
  116. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/processing/__init__.py +0 -0
  117. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/processing/ai_content_management.py +0 -0
  118. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/processing/markdown_converter.py +0 -0
  119. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/processing/multimodal_integration.py +0 -0
  120. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/processing/rich_content_validation.py +0 -0
  121. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/py.typed +0 -0
  122. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/session/__init__.py +0 -0
  123. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/session/elasticsearch_session_storage.py +0 -0
  124. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/session/session_storage.py +0 -0
  125. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/__init__.py +0 -0
  126. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/agent_mixin.py +0 -0
  127. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/base.py +0 -0
  128. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/__init__.py +0 -0
  129. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/scripts/__init__.py +0 -0
  130. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/scripts/register_to_storage.py +0 -0
  131. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/chart/SKILL.md +0 -0
  132. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/code_format/SKILL.md +0 -0
  133. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/code_format/format_python.py +0 -0
  134. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/csv/SKILL.md +0 -0
  135. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/csv/create_csv.py +0 -0
  136. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/csv/read_csv.py +0 -0
  137. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/csv/transform_csv.py +0 -0
  138. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/data_format/SKILL.md +0 -0
  139. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/data_format/json_to_yaml.py +0 -0
  140. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/data_format/yaml_to_json.py +0 -0
  141. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/drawio/SKILL.md +0 -0
  142. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/drawio/create_drawio.py +0 -0
  143. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/email_template/SKILL.md +0 -0
  144. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/excel/SKILL.md +0 -0
  145. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/excel/create_excel.py +0 -0
  146. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/file/SKILL.md +0 -0
  147. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/file/create_file.py +0 -0
  148. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/file/list_files.py +0 -0
  149. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/file/read_file.py +0 -0
  150. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/file_access/SKILL.md +0 -0
  151. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/file_access/download_to_local.py +0 -0
  152. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/file_access/get_file_path.py +0 -0
  153. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/form/SKILL.md +0 -0
  154. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/image_display/SKILL.md +0 -0
  155. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/image_gen/SKILL.md +0 -0
  156. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/image_gen/create_image.py +0 -0
  157. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/image_gen/generate_image.py +0 -0
  158. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/mermaid/SKILL.md +0 -0
  159. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/multimodal/SKILL.md +0 -0
  160. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/optionsblock/SKILL.md +0 -0
  161. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/table/SKILL.md +0 -0
  162. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/unified_pdf/SKILL.md +0 -0
  163. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/unified_pdf/create_pdf.py +0 -0
  164. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/web_news_search/SKILL.md +0 -0
  165. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/web_news_search/web_news_search.py +0 -0
  166. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/word/SKILL.md +0 -0
  167. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/builtin/skills/word/create_word.py +0 -0
  168. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/custom_skill_manager.py +0 -0
  169. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/discovery_prompt.py +0 -0
  170. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/markdown_loader.py +0 -0
  171. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/skills/tools.py +0 -0
  172. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/storage/__init__.py +0 -0
  173. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/storage/file_storages.py +0 -0
  174. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/storage/file_system_management.py +0 -0
  175. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/storage/storage_optimizer.py +0 -0
  176. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/subagents/__init__.py +0 -0
  177. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/subagents/executor.py +0 -0
  178. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/subagents/message_injector.py +0 -0
  179. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/subagents/message_queue.py +0 -0
  180. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/subagents/retrigger.py +0 -0
  181. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/subagents/spawn_tool.py +0 -0
  182. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/tools/__init__.py +0 -0
  183. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/tools/activity_callback.py +0 -0
  184. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/tools/adaptive_pdf_css.py +0 -0
  185. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/tools/base.py +0 -0
  186. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/tools/html_content_analyzer.py +0 -0
  187. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/tools/multimodal_tools.py +0 -0
  188. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/tools/pdf_image_scaler.py +0 -0
  189. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/tools/sizing_config.py +0 -0
  190. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/tools/web_fetch_tool.py +0 -0
  191. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/tools/web_search_tool.py +0 -0
  192. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/utils/__init__.py +0 -0
  193. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/utils/path_utils.py +0 -0
  194. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/utils/post_install.py +0 -0
  195. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/utils/session_title_generator.py +0 -0
  196. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/utils/source_detector.py +0 -0
  197. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/utils/special_blocks.py +0 -0
  198. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/__init__.py +0 -0
  199. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/admin_auth.py +0 -0
  200. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/admin_models.py +0 -0
  201. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/admin_router.py +0 -0
  202. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/admin_services.py +0 -0
  203. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/api_timing_middleware.py +0 -0
  204. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/A2A_GUIDE.md +0 -0
  205. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/BUILTIN_SKILLS_REFERENCE.md +0 -0
  206. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/CREATING_AGENTS.md +0 -0
  207. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/DOCKER_SETUP.md +0 -0
  208. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/Dockerfile +0 -0
  209. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/GETTING_STARTED.md +0 -0
  210. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/GITNEXUS_USER_GUIDE.md +0 -0
  211. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/MEMORY_INSTALLATION.md +0 -0
  212. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/README.md +0 -0
  213. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/TOOLS_AND_MCP_GUIDE.md +0 -0
  214. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/WORKSPACE_INTEGRATION.md +0 -0
  215. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/api-reference.md +0 -0
  216. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/configuration.md +0 -0
  217. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/docker-compose.yml +0 -0
  218. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/examples/agent_example_multi_skills.py +0 -0
  219. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/examples/agent_with_file_storage.py +0 -0
  220. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/examples/agent_with_mcp.py +0 -0
  221. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/examples/agent_with_memory.py +0 -0
  222. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/examples/agent_with_memory_graphiti.py +0 -0
  223. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/examples/agent_with_memory_hybrid.py +0 -0
  224. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/examples/agent_with_memory_simple.py +0 -0
  225. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/examples/custom_framework_agent.py +0 -0
  226. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/examples/simple_agent.py +0 -0
  227. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/examples/skills_demo_agent.py +0 -0
  228. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/docs/installation-guide.md +0 -0
  229. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/documentation_generator.py +0 -0
  230. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/gitnexus_client.py +0 -0
  231. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/helper_ui.html +0 -0
  232. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/modern_ui.html +0 -0
  233. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/observability/kibana-llm-dashboard-setup.json +0 -0
  234. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/observability/kibana-resource-metrics-dashboard.json +0 -0
  235. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/otel_tracing_middleware.py +0 -0
  236. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/skills_router.py +0 -0
  237. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/web/test_app.html +0 -0
  238. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/workspace/__init__.py +0 -0
  239. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/workspace/artefacts.py +0 -0
  240. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/workspace/client.py +0 -0
  241. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/workspace/config.py +0 -0
  242. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/workspace/context.py +0 -0
  243. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/workspace/cursor.py +0 -0
  244. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/workspace/memory.py +0 -0
  245. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/workspace/models.py +0 -0
  246. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/workspace/poller.py +0 -0
  247. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/workspace/preferences.py +0 -0
  248. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework/workspace/subscription.py +0 -0
  249. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework_lib.egg-info/dependency_links.txt +0 -0
  250. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework_lib.egg-info/entry_points.txt +0 -0
  251. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework_lib.egg-info/requires.txt +0 -0
  252. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/agent_framework_lib.egg-info/top_level.txt +0 -0
  253. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/A2A_GUIDE.md +0 -0
  254. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/ACTIVITY_OUTPUT_PART.md +0 -0
  255. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/ARCHITECTURE_DIAGRAM.md +0 -0
  256. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/BUILTIN_SKILLS_REFERENCE.md +0 -0
  257. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/CONCURRENCE_VS_PARALLELISME_GUIDE.md +0 -0
  258. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/CREATING_AGENTS.md +0 -0
  259. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/DOCKER_SETUP.md +0 -0
  260. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/ELASTICSEARCH_DATA_STRUCTURES.md +0 -0
  261. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/FILE_DOWNLOAD_LINKS.md +0 -0
  262. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/FILE_STORAGE_GUIDE.md +0 -0
  263. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/GETTING_STARTED.md +0 -0
  264. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/GITNEXUS_USER_GUIDE.md +0 -0
  265. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/HISTORY_MESSAGE_FORMAT.md +0 -0
  266. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/IMPLEMENTATION_GUIDE_NEW_AGENT.md +0 -0
  267. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/MEMORY_INSTALLATION.md +0 -0
  268. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/MODIFICATIONS_CONCURRENCE.md +0 -0
  269. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/MULTIMODAL_TOOLS_GUIDE.md +0 -0
  270. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/OBSERVABILITY_GUIDE.md +0 -0
  271. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/PYPI_PUBLISHING.md +0 -0
  272. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/QA_STREAMING_LATENCY.md +0 -0
  273. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/SCREENSHOTS_GUIDE.md +0 -0
  274. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/SPEC_CROSS_MODEL_HISTORY_CONVERSION.md +0 -0
  275. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/SSE_NOTIFICATIONS_GUIDE.md +0 -0
  276. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/STREAMING_EVENTS_FRONTEND.md +0 -0
  277. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/TOOLS_AND_MCP_GUIDE.md +0 -0
  278. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/WORKSPACE_INTEGRATION.md +0 -0
  279. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/api-reference.md +0 -0
  280. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/configuration.md +0 -0
  281. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/framework_audit_remarques.md +0 -0
  282. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/index.md +0 -0
  283. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/docs/installation-guide.md +0 -0
  284. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/README.md +0 -0
  285. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/agent_context_budget_test.py +0 -0
  286. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/agent_example_multi_skills.py +0 -0
  287. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/agent_exemple_test.py +0 -0
  288. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/agent_training_with_apo.py +0 -0
  289. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/agent_with_custom_tools_file_storage.py +0 -0
  290. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/agent_with_file_storage.py +0 -0
  291. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/agent_with_mcp.py +0 -0
  292. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/agent_with_memory_graphiti.py +0 -0
  293. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/agent_with_memory_hybrid.py +0 -0
  294. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/agent_with_memory_simple.py +0 -0
  295. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/agent_with_personalization.py +0 -0
  296. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/biagenttest.py +0 -0
  297. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/custom_framework_agent.py +0 -0
  298. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/dependencies/docker-compose.yaml +0 -0
  299. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/pyproject.toml +0 -0
  300. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/simple_agent.py +0 -0
  301. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/skills_demo_agent.py +0 -0
  302. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/examples/workspace_test_agent.py +0 -0
  303. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/setup.cfg +0 -0
  304. {agent_framework_lib-0.8.2.post2 → agent_framework_lib-0.8.3}/setup.py +0 -0
@@ -11,6 +11,9 @@ include docs/*.md
11
11
  # Include type information
12
12
  include agent_framework/py.typed
13
13
 
14
+ # Include PowerPoint templates embedded with the powerpoint skill
15
+ recursive-include agent_framework/skills/builtin/skills/powerpoint/templates *.pptx
16
+
14
17
  # Include HTML templates and static files from the main package
15
18
  include agent_framework/test_app.html
16
19
  include agent_framework/*.html
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-framework-lib
3
- Version: 0.8.2.post2
3
+ Version: 0.8.3
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.2
35
+ Version: 0.8.3
36
36
  Author: Cinco AI Team
37
37
  License: MIT
38
38
  """
@@ -88,7 +88,7 @@ def _auto_setup_dependencies() -> None:
88
88
  # Track if auto-setup has been done
89
89
  _AUTO_SETUP_DONE = False
90
90
 
91
- __version__ = "0.8.2"
91
+ __version__ = "0.8.3"
92
92
  __author__ = "Cinco AI Team"
93
93
  __license__ = "MIT"
94
94
  __email__ = "sebastian@cinco.ai"
@@ -596,7 +596,16 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
596
596
  try:
597
597
  from ..tools.shell_tool import ShellTool
598
598
 
599
- tools.append(ShellTool(default_timeout=120).get_tool_function())
599
+ shell_tool = ShellTool(default_timeout=120)
600
+ # Inject session context so that AGENT_USER_ID / AGENT_SESSION_ID are
601
+ # propagated to subprocesses (register_to_storage / create_and_register).
602
+ # Without this, generated files are uploaded without session_id and
603
+ # never appear in the session's file list.
604
+ shell_tool.set_context(
605
+ user_id=getattr(self, "_current_user_id", None),
606
+ session_id=getattr(self, "_current_session_id", None),
607
+ )
608
+ tools.append(shell_tool.get_tool_function())
600
609
  except Exception as e:
601
610
  logger.warning(f"Could not create ShellTool: {e}")
602
611
 
@@ -666,17 +675,38 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
666
675
  except Exception as e:
667
676
  logger.warning(f"Failed to add memory tools: {e}")
668
677
 
678
+ # Deduplicate tools by name (Anthropic rejects duplicate tool names)
679
+ seen_names: set[str] = set()
680
+ unique_tools: list = []
681
+ for tool in tools:
682
+ meta = getattr(tool, "metadata", None)
683
+ if meta and hasattr(meta, "name"):
684
+ name = meta.name
685
+ else:
686
+ name = getattr(tool, "__name__", None) or getattr(tool, "name", None) or str(id(tool))
687
+ if name not in seen_names:
688
+ seen_names.add(name)
689
+ unique_tools.append(tool)
690
+ else:
691
+ logger.debug(f"⚠️ Skipping duplicate tool '{name}' for agent {self.agent_id}")
692
+
693
+ if len(unique_tools) < len(tools):
694
+ logger.info(
695
+ f"🔄 Deduplicated tools for agent {self.agent_id}: "
696
+ f"{len(tools)} → {len(unique_tools)}"
697
+ )
698
+
669
699
  # 5. Add subagent spawn tool if configured
670
700
  try:
671
701
  spawn_tool = self._create_subagent_spawn_tool()
672
702
  if spawn_tool is not None:
673
- tools = tools + [spawn_tool.get_tool_function()]
703
+ unique_tools = unique_tools + [spawn_tool.get_tool_function()]
674
704
  logger.info(f"🤖 Added SubagentSpawnTool to agent {self.agent_id}")
675
705
  except Exception as e:
676
706
  logger.warning(f"Failed to create SubagentSpawnTool: {e}")
677
707
 
678
- logger.debug(f"📊 Total tools for agent {self.agent_id}: {len(tools)}")
679
- return tools
708
+ logger.debug(f"📊 Total tools for agent {self.agent_id}: {len(unique_tools)}")
709
+ return unique_tools
680
710
 
681
711
  async def _async_ensure_agent_built(self):
682
712
  """Ensure agent is built (asynchronous)."""
@@ -794,6 +824,48 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
794
824
  fact_lines = "\n".join(f"- {f.content}" for f in facts if f.content)
795
825
  preference_block = f"[User Preferences]\n{fact_lines}"
796
826
 
827
+ # --- Work Pattern directives ---
828
+ work_profile_block = ""
829
+ try:
830
+ from ..memory.work_patterns import WorkPatternAnalyzer
831
+ wp_analyzer = WorkPatternAnalyzer(provider)
832
+ work_profile = await wp_analyzer.build_profile(
833
+ user_id=user_id,
834
+ agent_id=self.agent_id,
835
+ min_entries=3,
836
+ )
837
+ if work_profile.total_interactions >= 3:
838
+ directives = wp_analyzer.build_agent_directives(work_profile)
839
+ if directives:
840
+ work_profile_block = (
841
+ "\n\n[Directives de travail]\n"
842
+ f"{directives}"
843
+ )
844
+ logger.info(
845
+ "Work pattern directives injected for user=%s: %d interactions",
846
+ user_id, work_profile.total_interactions,
847
+ )
848
+ except Exception as e:
849
+ logger.debug("Work pattern injection skipped: %s", e)
850
+
851
+ # --- Response Lessons (the key part) ---
852
+ lessons_block = ""
853
+ try:
854
+ from ..memory.response_lessons import recall_lessons, format_lessons_for_prompt
855
+ lessons = await recall_lessons(provider, user_id, self.agent_id, limit=10)
856
+ if lessons:
857
+ formatted = format_lessons_for_prompt(lessons)
858
+ if formatted:
859
+ lessons_block = f"\n\n[Leçons apprises — compléments à inclure automatiquement]\n{formatted}"
860
+ logger.info(
861
+ "Response lessons injected for user=%s: %d lessons",
862
+ user_id, len(lessons),
863
+ )
864
+ except Exception as e:
865
+ logger.debug("Response lessons injection skipped: %s", e)
866
+
867
+ preference_block = f"[User Preferences]\n{fact_lines}{work_profile_block}{lessons_block}"
868
+
797
869
  prompt = self._session_system_prompt or ""
798
870
  if "{{native_user_preferences}}" in prompt:
799
871
  self._session_system_prompt = prompt.replace(
@@ -1038,7 +1110,10 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
1038
1110
  )
1039
1111
 
1040
1112
  if success:
1041
- logger.debug(f"Auto-stored interaction for user {user_id}")
1113
+ logger.info(
1114
+ "[MEMORY_STORE] Auto-stored interaction for user=%s "
1115
+ "(response_len=%d)", user_id, len(response_text)
1116
+ )
1042
1117
  else:
1043
1118
  logger.warning(f"Failed to auto-store interaction for user {user_id}")
1044
1119
  except Exception as e:
@@ -1430,7 +1505,10 @@ class BaseAgent(SkillsMixin, MemoryMixin, AgentInterface):
1430
1505
  )
1431
1506
 
1432
1507
  if success:
1433
- logger.debug(f"Auto-stored streaming interaction for user {user_id}")
1508
+ logger.info(
1509
+ "[MEMORY_STORE] Auto-stored streaming interaction for user=%s "
1510
+ "(response_len=%d)", user_id, len(final_text)
1511
+ )
1434
1512
  else:
1435
1513
  logger.warning(
1436
1514
  f"Failed to auto-store streaming interaction for user {user_id}"
@@ -88,6 +88,29 @@ from .tools import (
88
88
  get_memory_tools_descriptions,
89
89
  )
90
90
 
91
+ # Work Pattern Intelligence
92
+ from .work_patterns import (
93
+ RequestIntent,
94
+ RequestComplexity,
95
+ WorkPatternEntry,
96
+ WorkProfile,
97
+ WorkPatternTracker,
98
+ WorkPatternAnalyzer,
99
+ classify_intent,
100
+ classify_complexity,
101
+ detect_domains,
102
+ )
103
+
104
+ # Implicit Feedback
105
+ from .implicit_feedback import (
106
+ FeedbackSignal,
107
+ FeedbackEntry,
108
+ ImplicitFeedbackTracker,
109
+ FeedbackProfile,
110
+ FeedbackProfileBuilder,
111
+ analyze_feedback,
112
+ )
113
+
91
114
 
92
115
  __all__ = [
93
116
  # Configuration
@@ -114,6 +137,25 @@ __all__ = [
114
137
  # Providers
115
138
  "MemoriProvider",
116
139
  "GraphitiProvider",
140
+
141
+ # Work Pattern Intelligence
142
+ "RequestIntent",
143
+ "RequestComplexity",
144
+ "WorkPatternEntry",
145
+ "WorkProfile",
146
+ "WorkPatternTracker",
147
+ "WorkPatternAnalyzer",
148
+ "classify_intent",
149
+ "classify_complexity",
150
+ "detect_domains",
151
+
152
+ # Implicit Feedback
153
+ "FeedbackSignal",
154
+ "FeedbackEntry",
155
+ "ImplicitFeedbackTracker",
156
+ "FeedbackProfile",
157
+ "FeedbackProfileBuilder",
158
+ "analyze_feedback",
117
159
  ]
118
160
 
119
161
  __version__ = "0.3.5.1"
@@ -239,9 +239,9 @@ class MemoryMixin:
239
239
  ) -> bool:
240
240
  """
241
241
  Store an interaction for memory extraction.
242
-
243
- Call this after generating a response to store the interaction.
244
-
242
+
243
+ Also tracks work patterns and implicit feedback automatically.
244
+
245
245
  Args:
246
246
  user_id: User identifier
247
247
  session_id: Session identifier
@@ -258,11 +258,13 @@ class MemoryMixin:
258
258
  if not self._memory_manager:
259
259
  return False
260
260
 
261
+ agent_id = getattr(self, 'agent_id', 'agent')
262
+
261
263
  try:
262
- return await self._memory_manager.store_interaction(
264
+ result = await self._memory_manager.store_interaction(
263
265
  user_id=user_id,
264
266
  session_id=session_id,
265
- agent_id=getattr(self, "agent_id", "agent"),
267
+ agent_id=agent_id,
266
268
  user_message=user_message,
267
269
  agent_response=agent_response,
268
270
  metadata=metadata,
@@ -271,6 +273,55 @@ class MemoryMixin:
271
273
  logger.error(f"Error storing memory interaction: {e}")
272
274
  return False
273
275
 
276
+ # Track work pattern + implicit feedback in background (never blocks)
277
+ provider = self._memory_manager.primary
278
+ if provider:
279
+ # Work pattern tracking
280
+ try:
281
+ from .work_patterns import WorkPatternTracker
282
+ tracker = WorkPatternTracker(provider)
283
+ entry = await tracker.track(
284
+ user_id=user_id,
285
+ message=user_message,
286
+ agent_id=agent_id,
287
+ session_id=session_id,
288
+ )
289
+ logger.info(
290
+ "[WORK_PATTERN] user=%s intent=%s complexity=%s domains=%s",
291
+ user_id, entry.intent.value, entry.complexity.value,
292
+ ",".join(entry.domains) or "none",
293
+ )
294
+ except Exception as e:
295
+ logger.debug(f"Work pattern tracking skipped: {e}")
296
+
297
+ # Implicit feedback: analyze user message against previous response
298
+ try:
299
+ from .implicit_feedback import ImplicitFeedbackTracker
300
+ if not hasattr(self, '_feedback_tracker'):
301
+ self._feedback_tracker = ImplicitFeedbackTracker(provider)
302
+
303
+ # Analyze current user message against last agent response
304
+ fb_entry = await self._feedback_tracker.analyze_and_store(
305
+ user_id=user_id,
306
+ user_message=user_message,
307
+ agent_id=agent_id,
308
+ session_id=session_id,
309
+ )
310
+ if fb_entry:
311
+ logger.info(
312
+ "[IMPLICIT_FEEDBACK] user=%s signal=%s confidence=%.2f "
313
+ "correction_type=%s topic_changed=%s",
314
+ user_id, fb_entry.signal.value, fb_entry.confidence,
315
+ fb_entry.correction_type or "n/a", fb_entry.topic_changed,
316
+ )
317
+
318
+ # Record this agent response for next iteration
319
+ self._feedback_tracker.record_agent_response(user_id, agent_response)
320
+ except Exception as e:
321
+ logger.debug(f"Implicit feedback tracking skipped: {e}")
322
+
323
+ return result
324
+
274
325
  async def clear_user_memory(self, user_id: str) -> bool:
275
326
  """
276
327
  Clear all memories for a user.