agent-framework-lib 0.8.7.post7__tar.gz → 0.8.8.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 (341) hide show
  1. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/ARCHITECTURE.md +2 -2
  2. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/LICENSE +1 -1
  3. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/MANIFEST.in +10 -2
  4. {agent_framework_lib-0.8.7.post7/agent_framework_lib.egg-info → agent_framework_lib-0.8.8.post2}/PKG-INFO +34 -31
  5. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/README.md +30 -30
  6. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/__init__.py +44 -4
  7. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/base.py +2 -0
  8. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/endpoints/a2a_router.py +19 -7
  9. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/endpoints/jsonrpc_dispatcher.py +18 -6
  10. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/endpoints/translation_layer.py +29 -4
  11. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/models.py +8 -0
  12. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/providers/elasticsearch_provider.py +3 -0
  13. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/providers/postgres_provider.py +8 -2
  14. agent_framework_lib-0.8.8.post2/agent_framework/capabilities/resolver.py +319 -0
  15. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/code_delivery/config.py +27 -25
  16. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/code_delivery/crypto.py +3 -2
  17. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/code_delivery/git_provider.py +4 -7
  18. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/code_delivery/herdr_client.py +81 -44
  19. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/code_delivery/orchestrator.py +23 -47
  20. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/code_delivery/store.py +7 -13
  21. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/code_delivery/tools.py +1 -1
  22. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/base_agent.py +97 -4
  23. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/prompt_builder.py +2 -0
  24. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/providers/graphiti_provider.py +60 -6
  25. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/notifications/webhook_notifier.py +81 -0
  26. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/processing/markdown_converter.py +39 -2
  27. agent_framework_lib-0.8.8.post2/agent_framework/py.typed +2 -0
  28. agent_framework_lib-0.8.8.post2/agent_framework/security/__init__.py +51 -0
  29. agent_framework_lib-0.8.8.post2/agent_framework/security/authz.py +191 -0
  30. agent_framework_lib-0.8.8.post2/agent_framework/security/file_view_token.py +199 -0
  31. agent_framework_lib-0.8.8.post2/agent_framework/security/input_guard.py +316 -0
  32. agent_framework_lib-0.8.8.post2/agent_framework/security/openshell_policy.yaml +60 -0
  33. agent_framework_lib-0.8.8.post2/agent_framework/security/pii_redactor.py +125 -0
  34. agent_framework_lib-0.8.8.post2/agent_framework/security/sandbox.py +223 -0
  35. agent_framework_lib-0.8.8.post2/agent_framework/security/sandbox_provider.py +662 -0
  36. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/security/secret_redactor.py +70 -1
  37. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/security/shell_env.py +21 -7
  38. agent_framework_lib-0.8.8.post2/agent_framework/security/upload_token.py +175 -0
  39. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/session/elasticsearch_session_storage.py +18 -6
  40. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/session/session_storage.py +132 -21
  41. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/base.py +28 -3
  42. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/scripts/create_and_register.py +8 -1
  43. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/scripts/register_to_storage.py +24 -2
  44. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/chart/chart_to_image.py +6 -1
  45. agent_framework_lib-0.8.8.post2/agent_framework/skills/builtin/skills/csv/create_csv.py +105 -0
  46. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/file_access/download_to_local.py +7 -1
  47. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/image_gen/create_image.py +4 -2
  48. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/mermaid/mermaid_to_image.py +33 -5
  49. agent_framework_lib-0.8.8.post2/agent_framework/skills/builtin/skills/mermaid/vendor_mermaid.umd.min.js +2024 -0
  50. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/multimodal/SKILL.md +10 -3
  51. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/optionsblock/SKILL.md +5 -5
  52. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/powerpoint/create_powerpoint.py +8 -4
  53. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/skill_creator/skill_api.py +5 -0
  54. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/unified_pdf/create_pdf.py +14 -2
  55. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/custom_skill_manager.py +98 -9
  56. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/markdown_loader.py +1 -1
  57. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/storage/file_storages.py +44 -2
  58. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/storage/storage_optimizer.py +9 -1
  59. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/tools/multimodal_tools.py +19 -5
  60. agent_framework_lib-0.8.8.post2/agent_framework/tools/shell_tool.py +986 -0
  61. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/tools/web_fetch_tool.py +7 -3
  62. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/tools/web_search_tool.py +11 -4
  63. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/utils/post_install.py +357 -0
  64. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/admin_auth.py +16 -3
  65. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2/agent_framework/web}/docs/DOCKER_SETUP.md +108 -0
  66. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/Dockerfile +8 -0
  67. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2/agent_framework/web}/docs/MEMORY_INSTALLATION.md +11 -11
  68. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/README.md +30 -30
  69. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/helper_ui.html +121 -121
  70. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/modern_ui.html +71 -41
  71. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/server.py +1034 -69
  72. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/skills_router.py +177 -73
  73. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/test_app.html +504 -504
  74. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2/agent_framework_lib.egg-info}/PKG-INFO +34 -31
  75. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework_lib.egg-info/SOURCES.txt +12 -0
  76. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework_lib.egg-info/requires.txt +4 -0
  77. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/ACTIVITY_OUTPUT_PART.md +10 -10
  78. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/ARCHITECTURE_DIAGRAM.md +9 -9
  79. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/CONCURRENCE_VS_PARALLELISME_GUIDE.md +35 -35
  80. agent_framework_lib-0.8.8.post2/docs/DIAGNOSTIC_SANDBOX_SKILLS.md +298 -0
  81. {agent_framework_lib-0.8.7.post7/agent_framework/web → agent_framework_lib-0.8.8.post2}/docs/DOCKER_SETUP.md +108 -0
  82. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/ELASTICSEARCH_DATA_STRUCTURES.md +16 -17
  83. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/FILE_DOWNLOAD_LINKS.md +1 -1
  84. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/FILE_STORAGE_GUIDE.md +13 -13
  85. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/HISTORY_MESSAGE_FORMAT.md +7 -7
  86. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/IMPLEMENTATION_GUIDE_NEW_AGENT.md +58 -58
  87. {agent_framework_lib-0.8.7.post7/agent_framework/web → agent_framework_lib-0.8.8.post2}/docs/MEMORY_INSTALLATION.md +11 -11
  88. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/MODIFICATIONS_CONCURRENCE.md +9 -9
  89. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/MULTIMODAL_TOOLS_GUIDE.md +27 -0
  90. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/OBSERVABILITY_GUIDE.md +73 -10
  91. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/PYPI_PUBLISHING.md +3 -3
  92. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/QA_STREAMING_LATENCY.md +6 -6
  93. agent_framework_lib-0.8.8.post2/docs/SECRETS_MANAGEMENT.md +189 -0
  94. agent_framework_lib-0.8.8.post2/docs/SECURITY_HARDENING.md +176 -0
  95. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/SPEC_CROSS_MODEL_HISTORY_CONVERSION.md +48 -48
  96. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/SSE_NOTIFICATIONS_GUIDE.md +2 -2
  97. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/framework_audit_remarques.md +1 -1
  98. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/README.md +5 -5
  99. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/dependencies/docker-compose.yaml +1 -1
  100. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/pyproject.toml +1 -1
  101. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/pyproject.toml +9 -1
  102. agent_framework_lib-0.8.7.post7/agent_framework/capabilities/resolver.py +0 -174
  103. agent_framework_lib-0.8.7.post7/agent_framework/py.typed +0 -2
  104. agent_framework_lib-0.8.7.post7/agent_framework/security/__init__.py +0 -17
  105. agent_framework_lib-0.8.7.post7/agent_framework/skills/builtin/skills/csv/create_csv.py +0 -57
  106. agent_framework_lib-0.8.7.post7/agent_framework/tools/shell_tool.py +0 -559
  107. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/__init__.py +0 -0
  108. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/endpoints/__init__.py +0 -0
  109. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/endpoints/agent_card_builder.py +0 -0
  110. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/endpoints/agent_card_skill_builder.py +0 -0
  111. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/endpoints/models_jsonrpc.py +0 -0
  112. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/endpoints/sse_wrapper.py +0 -0
  113. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/a2a/providers/__init__.py +0 -0
  114. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/capabilities/__init__.py +0 -0
  115. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/code_delivery/__init__.py +0 -0
  116. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/code_delivery/audit.py +0 -0
  117. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/code_delivery/models.py +0 -0
  118. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/__init__.py +0 -0
  119. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/activity_formatter.py +0 -0
  120. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/agent_interface.py +0 -0
  121. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/agent_provider.py +0 -0
  122. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/context_budget.py +0 -0
  123. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/context_summarizer.py +0 -0
  124. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/elasticsearch_config_provider.py +0 -0
  125. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/execution_controller.py +0 -0
  126. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/implementation_validator.py +0 -0
  127. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/interruption_message.py +0 -0
  128. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/knowledge_state.py +0 -0
  129. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/loop_detector.py +0 -0
  130. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/model_clients.py +0 -0
  131. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/model_config.py +0 -0
  132. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/model_router.py +0 -0
  133. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/models.py +0 -0
  134. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/provider_calibration.py +0 -0
  135. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/scratchpad_compressor.py +0 -0
  136. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/scratchpad_serializer.py +0 -0
  137. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/state_manager.py +0 -0
  138. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/step_display_config.py +0 -0
  139. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/core/streaming_parts_accumulator.py +0 -0
  140. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/implementations/__init__.py +0 -0
  141. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/implementations/budget_aware_agent.py +0 -0
  142. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/implementations/llamaindex_agent.py +0 -0
  143. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/implementations/llamaindex_memory_adapter.py +0 -0
  144. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/implementations/microsoft_agent.py +0 -0
  145. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/__init__.py +0 -0
  146. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/agent_mixin.py +0 -0
  147. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/base.py +0 -0
  148. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/config.py +0 -0
  149. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/hypothesis_engine.py +0 -0
  150. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/implicit_feedback.py +0 -0
  151. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/manager.py +0 -0
  152. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/personalization.py +0 -0
  153. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/providers/__init__.py +0 -0
  154. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/providers/memori_provider.py +0 -0
  155. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/response_lessons.py +0 -0
  156. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/tools.py +0 -0
  157. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/memory/work_patterns.py +0 -0
  158. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/__init__.py +0 -0
  159. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/api_timing_tracker.py +0 -0
  160. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/elasticsearch_circuit_breaker.py +0 -0
  161. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/elasticsearch_logging.py +0 -0
  162. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/error_handling.py +0 -0
  163. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/error_logging.py +0 -0
  164. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/llm_auto_instrumentor.py +0 -0
  165. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/llm_metrics.py +0 -0
  166. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/llm_metrics_collector.py +0 -0
  167. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/llm_metrics_extractor.py +0 -0
  168. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/metrics_aggregator.py +0 -0
  169. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/metrics_config.py +0 -0
  170. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/observability_manager.py +0 -0
  171. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/otel_instrumentor.py +0 -0
  172. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/otel_logging_handler.py +0 -0
  173. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/otel_metrics_recorder.py +0 -0
  174. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/otel_setup.py +0 -0
  175. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/performance_monitor.py +0 -0
  176. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/progress_tracker.py +0 -0
  177. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/resource_manager.py +0 -0
  178. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/resource_metrics_collector.py +0 -0
  179. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/streaming_latency_tracer.py +0 -0
  180. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/timing_tracker.py +0 -0
  181. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/token_counter.py +0 -0
  182. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/monitoring/tracing_context.py +0 -0
  183. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/notifications/__init__.py +0 -0
  184. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/notifications/hub.py +0 -0
  185. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/processing/__init__.py +0 -0
  186. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/processing/ai_content_management.py +0 -0
  187. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/processing/multimodal_integration.py +0 -0
  188. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/processing/rich_content_validation.py +0 -0
  189. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/session/__init__.py +0 -0
  190. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/__init__.py +0 -0
  191. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/agent_mixin.py +0 -0
  192. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/__init__.py +0 -0
  193. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/scripts/__init__.py +0 -0
  194. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/chart/SKILL.md +0 -0
  195. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/chart/vendor_chart.umd.min.js +0 -0
  196. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/code_delivery/SKILL.md +0 -0
  197. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/code_format/SKILL.md +0 -0
  198. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/code_format/format_python.py +0 -0
  199. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/csv/SKILL.md +0 -0
  200. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/csv/read_csv.py +0 -0
  201. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/csv/transform_csv.py +0 -0
  202. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/data_format/SKILL.md +0 -0
  203. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/data_format/json_to_yaml.py +0 -0
  204. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/data_format/yaml_to_json.py +0 -0
  205. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/drawio/SKILL.md +0 -0
  206. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/drawio/create_drawio.py +0 -0
  207. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/email_template/SKILL.md +0 -0
  208. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/excel/SKILL.md +0 -0
  209. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/excel/create_excel.py +0 -0
  210. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/file/SKILL.md +0 -0
  211. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/file/create_file.py +0 -0
  212. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/file/list_files.py +0 -0
  213. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/file/read_file.py +0 -0
  214. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/file_access/SKILL.md +0 -0
  215. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/file_access/get_file_path.py +0 -0
  216. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/form/SKILL.md +0 -0
  217. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/image_display/SKILL.md +0 -0
  218. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/image_gen/SKILL.md +0 -0
  219. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/image_gen/generate_image.py +0 -0
  220. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/mermaid/SKILL.md +0 -0
  221. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/powerpoint/SKILL.md +0 -0
  222. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/powerpoint/templates/Big Data Infographics.pptx +0 -0
  223. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/powerpoint/templates/Executive Design Pitch Deck.pptx +0 -0
  224. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/powerpoint/templates/Management Consulting Toolkit.pptx +0 -0
  225. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/powerpoint/templates/__init__.py +0 -0
  226. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/powerpoint/templates/generate_templates.py +0 -0
  227. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/skill_creator/SKILL.md +0 -0
  228. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/table/SKILL.md +0 -0
  229. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/table/table_to_image.py +0 -0
  230. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/unified_pdf/SKILL.md +0 -0
  231. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/web_news_search/SKILL.md +0 -0
  232. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/web_news_search/web_news_search.py +0 -0
  233. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/word/SKILL.md +0 -0
  234. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/builtin/skills/word/create_word.py +0 -0
  235. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/discovery_prompt.py +0 -0
  236. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/skills/tools.py +0 -0
  237. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/storage/__init__.py +0 -0
  238. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/storage/file_system_management.py +0 -0
  239. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/subagents/__init__.py +0 -0
  240. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/subagents/executor.py +0 -0
  241. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/subagents/message_injector.py +0 -0
  242. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/subagents/message_queue.py +0 -0
  243. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/subagents/retrigger.py +0 -0
  244. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/subagents/spawn_tool.py +0 -0
  245. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/tools/__init__.py +0 -0
  246. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/tools/activity_callback.py +0 -0
  247. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/tools/adaptive_pdf_css.py +0 -0
  248. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/tools/base.py +0 -0
  249. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/tools/html_content_analyzer.py +0 -0
  250. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/tools/pdf_image_scaler.py +0 -0
  251. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/tools/sizing_config.py +0 -0
  252. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/utils/__init__.py +0 -0
  253. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/utils/path_utils.py +0 -0
  254. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/utils/session_title_generator.py +0 -0
  255. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/utils/source_detector.py +0 -0
  256. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/utils/special_blocks.py +0 -0
  257. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/__init__.py +0 -0
  258. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/admin_models.py +0 -0
  259. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/admin_router.py +0 -0
  260. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/admin_services.py +0 -0
  261. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/api_timing_middleware.py +0 -0
  262. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/A2A_GUIDE.md +0 -0
  263. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/BUILTIN_SKILLS_REFERENCE.md +0 -0
  264. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/CREATING_AGENTS.md +0 -0
  265. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/CUSTOM_SKILLS_GUIDE.md +0 -0
  266. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/GETTING_STARTED.md +0 -0
  267. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/GITNEXUS_USER_GUIDE.md +0 -0
  268. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/TOOLS_AND_MCP_GUIDE.md +0 -0
  269. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/WORKSPACE_INTEGRATION.md +0 -0
  270. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/api-reference.md +0 -0
  271. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/configuration.md +0 -0
  272. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/docker-compose.yml +0 -0
  273. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/examples/agent_example_multi_skills.py +0 -0
  274. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/examples/agent_with_file_storage.py +0 -0
  275. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/examples/agent_with_mcp.py +0 -0
  276. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/examples/agent_with_memory.py +0 -0
  277. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/examples/agent_with_memory_graphiti.py +0 -0
  278. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/examples/agent_with_memory_hybrid.py +0 -0
  279. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/examples/agent_with_memory_simple.py +0 -0
  280. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/examples/custom_framework_agent.py +0 -0
  281. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/examples/simple_agent.py +0 -0
  282. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/examples/skills_demo_agent.py +0 -0
  283. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/docs/installation-guide.md +0 -0
  284. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/documentation_generator.py +0 -0
  285. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/gitnexus_client.py +0 -0
  286. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/helper_agent.py +0 -0
  287. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/observability/kibana-llm-dashboard-setup.json +0 -0
  288. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/observability/kibana-resource-metrics-dashboard.json +0 -0
  289. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/web/otel_tracing_middleware.py +0 -0
  290. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/workspace/__init__.py +0 -0
  291. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/workspace/artefacts.py +0 -0
  292. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/workspace/client.py +0 -0
  293. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/workspace/config.py +0 -0
  294. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/workspace/context.py +0 -0
  295. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/workspace/cursor.py +0 -0
  296. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/workspace/memory.py +0 -0
  297. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/workspace/models.py +0 -0
  298. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/workspace/poller.py +0 -0
  299. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/workspace/preferences.py +0 -0
  300. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/workspace/router.py +0 -0
  301. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/workspace/session.py +0 -0
  302. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework/workspace/subscription.py +0 -0
  303. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework_lib.egg-info/dependency_links.txt +0 -0
  304. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework_lib.egg-info/entry_points.txt +0 -0
  305. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/agent_framework_lib.egg-info/top_level.txt +0 -0
  306. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/A2A_GUIDE.md +0 -0
  307. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/BUILTIN_SKILLS_REFERENCE.md +0 -0
  308. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/CANCEL_AND_INTERRUPT_FRONTEND.md +0 -0
  309. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/CREATING_AGENTS.md +0 -0
  310. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/CUSTOM_SKILLS_GUIDE.md +0 -0
  311. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/DEEPEVAL_TEST_REPORT.md +0 -0
  312. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/GETTING_STARTED.md +0 -0
  313. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/GITNEXUS_USER_GUIDE.md +0 -0
  314. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/SCREENSHOTS_GUIDE.md +0 -0
  315. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/STREAMING_EVENTS_FRONTEND.md +0 -0
  316. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/TOOLS_AND_MCP_GUIDE.md +0 -0
  317. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/WORKSPACE_INTEGRATION.md +0 -0
  318. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/api-reference.md +0 -0
  319. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/configuration.md +0 -0
  320. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/helper_agent.md +0 -0
  321. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/index.md +0 -0
  322. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/docs/installation-guide.md +0 -0
  323. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/agent_context_budget_test.py +0 -0
  324. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/agent_example_multi_skills.py +0 -0
  325. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/agent_exemple_test.py +0 -0
  326. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/agent_training_with_apo.py +0 -0
  327. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/agent_with_custom_tools_file_storage.py +0 -0
  328. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/agent_with_file_storage.py +0 -0
  329. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/agent_with_mcp.py +0 -0
  330. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/agent_with_memory_graphiti.py +0 -0
  331. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/agent_with_memory_hybrid.py +0 -0
  332. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/agent_with_memory_simple.py +0 -0
  333. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/agent_with_personalization.py +0 -0
  334. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/biagenttest.py +0 -0
  335. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/custom_framework_agent.py +0 -0
  336. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/simple_agent.py +0 -0
  337. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/skills_demo_agent.py +0 -0
  338. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/test_work_patterns_live.py +0 -0
  339. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/examples/workspace_test_agent.py +0 -0
  340. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/setup.cfg +0 -0
  341. {agent_framework_lib-0.8.7.post7 → agent_framework_lib-0.8.8.post2}/setup.py +0 -0
@@ -286,9 +286,9 @@ sequenceDiagram
286
286
  Server->>Proxy: handle_message(input)
287
287
  Proxy->>Agent: handle_message(input)
288
288
  Agent-->>Proxy: returns response
289
-
289
+
290
290
  Note over Proxy, StateManager: Automatic State Persistence
291
-
291
+
292
292
  Proxy->>Agent: get_state()
293
293
  Agent->>StateManager: compress_state(...)
294
294
  Agent-->>Proxy: returns new_state
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
@@ -11,9 +11,17 @@ include docs/*.md
11
11
  # Include type information
12
12
  include agent_framework/py.typed
13
13
 
14
+ # Include the strict OpenShell sandbox policy (egress-deny + FS lockdown)
15
+ recursive-include agent_framework/security *.yaml
16
+
14
17
  # Include PowerPoint templates embedded with the powerpoint skill
15
18
  recursive-include agent_framework/skills/builtin/skills/powerpoint/templates *.pptx
16
19
 
20
+ # Include vendored JS libraries inlined by skills for OFFLINE rendering
21
+ # (chart: vendor_chart.umd.min.js, mermaid: vendor_mermaid.umd.min.js). These
22
+ # ship in the wheel via package-data; this keeps source distributions in parity.
23
+ recursive-include agent_framework/skills/builtin/skills *.js
24
+
17
25
  # Include HTML templates and static files from the main package
18
26
  include agent_framework/test_app.html
19
27
  include agent_framework/*.html
@@ -72,10 +80,10 @@ recursive-exclude */node_modules *
72
80
 
73
81
  # Exclude other development directories
74
82
  prune .git
75
- prune .vscode
83
+ prune .vscode
76
84
  prune .cursor
77
85
  prune specs
78
86
  prune .venv
79
87
  prune node_modules
80
88
  prune mcp-server
81
- prune examples/node_modules
89
+ prune examples/node_modules
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-framework-lib
3
- Version: 0.8.7.post7
3
+ Version: 0.8.8.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>
@@ -74,6 +74,9 @@ Requires-Dist: python-pptx>=1.0.0
74
74
  Requires-Dist: python-docx>=1.1.0
75
75
  Requires-Dist: jsonschema>=4.20.0
76
76
  Requires-Dist: pymupdf>=1.27.2.2
77
+ Requires-Dist: sqlglot>=30.9.0
78
+ Provides-Extra: security
79
+ Requires-Dist: llm-guard>=0.3.0; extra == "security"
77
80
  Provides-Extra: llamaindex
78
81
  Requires-Dist: llama-index>=0.14.16; extra == "llamaindex"
79
82
  Requires-Dist: llama-index-core>=0.14.16; extra == "llamaindex"
@@ -361,25 +364,25 @@ class MyAgent(LlamaIndexAgent):
361
364
  name="Calculator Agent",
362
365
  description="A helpful calculator assistant that can perform basic math operations."
363
366
  )
364
-
367
+
365
368
  def get_agent_prompt(self) -> str:
366
369
  """Define your agent's behavior and personality."""
367
370
  return "You are a helpful calculator assistant."
368
-
371
+
369
372
  def get_agent_tools(self) -> List[callable]:
370
373
  """Define the tools your agent can use.
371
-
374
+
372
375
  Tools are automatically converted to LlamaIndex FunctionTool instances.
373
376
  The function name becomes the tool name, and the docstring becomes the description.
374
377
  """
375
378
  def add(a: float, b: float) -> float:
376
379
  """Add two numbers together."""
377
380
  return a + b
378
-
381
+
379
382
  def multiply(a: float, b: float) -> float:
380
383
  """Multiply two numbers together."""
381
384
  return a * b
382
-
385
+
383
386
  # Just return the functions - automatic conversion to FunctionTool
384
387
  return [add, multiply]
385
388
 
@@ -461,16 +464,16 @@ class OpsMangedAgent(LlamaIndexAgent):
461
464
  name="Ops Managed Agent",
462
465
  description="An agent configured via Elasticsearch."
463
466
  )
464
-
467
+
465
468
  @classmethod
466
469
  def get_use_remote_config(cls) -> bool:
467
470
  """Enable Elasticsearch-only configuration."""
468
471
  return True
469
-
472
+
470
473
  def get_agent_prompt(self) -> str:
471
474
  # Fallback prompt if ES config not available
472
475
  return "You are a helpful assistant."
473
-
476
+
474
477
  def get_agent_tools(self) -> list:
475
478
  return []
476
479
  ```
@@ -592,10 +595,10 @@ Custom tools extend your agent's capabilities. The tool name and docstring are c
592
595
  ```python
593
596
  def get_weather(city: str) -> str:
594
597
  """Get the current weather for a specific city.
595
-
598
+
596
599
  Args:
597
600
  city: The name of the city to get weather for
598
-
601
+
599
602
  Returns:
600
603
  A description of the current weather
601
604
  """
@@ -632,29 +635,29 @@ class MyAgent(LlamaIndexAgent):
632
635
  description="A helpful assistant with custom tools."
633
636
  )
634
637
  self.file_storage = None
635
-
638
+
636
639
  async def _ensure_file_storage(self):
637
640
  if self.file_storage is None:
638
641
  self.file_storage = await FileStorageFactory.create_storage_manager()
639
-
642
+
640
643
  async def configure_session(self, session_configuration):
641
644
  await self._ensure_file_storage()
642
645
  self._user_id = session_configuration.get('user_id', 'default_user')
643
646
  self._session_id = session_configuration.get('session_id')
644
647
  await super().configure_session(session_configuration)
645
-
648
+
646
649
  def get_agent_tools(self):
647
650
  storage = self.file_storage
648
651
  user_id = self._user_id
649
652
  session_id = self._session_id
650
-
653
+
651
654
  async def store_result(param1: str, param2: int) -> str:
652
655
  """Process data and store results.
653
-
656
+
654
657
  Args:
655
658
  param1: Description of first parameter
656
659
  param2: Description of second parameter
657
-
660
+
658
661
  Returns:
659
662
  Result description
660
663
  """
@@ -666,7 +669,7 @@ class MyAgent(LlamaIndexAgent):
666
669
  content=result.encode()
667
670
  )
668
671
  return f"Result stored with ID: {file_id}"
669
-
672
+
670
673
  return [store_result]
671
674
  ```
672
675
 
@@ -710,12 +713,12 @@ class MyAgent(LlamaIndexAgent):
710
713
  )
711
714
  self.mcp_tools = []
712
715
  self._mcp_initialized = False
713
-
716
+
714
717
  async def _initialize_mcp_tools(self):
715
718
  """Load tools from MCP servers."""
716
719
  if self._mcp_initialized:
717
720
  return
718
-
721
+
719
722
  # Configure your MCP server
720
723
  mcp_configs = [
721
724
  {
@@ -724,29 +727,29 @@ class MyAgent(LlamaIndexAgent):
724
727
  "env": {"FILESYSTEM_ROOT": "/path/to/workspace"}
725
728
  }
726
729
  ]
727
-
730
+
728
731
  for config in mcp_configs:
729
732
  client = BasicMCPClient(
730
733
  config["command"],
731
734
  args=config["args"],
732
735
  env=config.get("env", {})
733
736
  )
734
-
737
+
735
738
  # Load tools from the MCP server
736
739
  mcp_tool_spec = McpToolSpec(client=client)
737
740
  tools = await mcp_tool_spec.to_tool_list_async()
738
741
  self.mcp_tools.extend(tools)
739
-
742
+
740
743
  self._mcp_initialized = True
741
-
744
+
742
745
  async def initialize_agent(self, model_name, system_prompt, tools, **kwargs):
743
746
  # Load MCP tools before initializing agent
744
747
  await self._initialize_mcp_tools()
745
-
748
+
746
749
  # Combine with other tools
747
750
  all_tools = self.get_agent_tools()
748
751
  await super().initialize_agent(model_name, system_prompt, all_tools, **kwargs)
749
-
752
+
750
753
  def get_agent_tools(self):
751
754
  # Return built-in tools + MCP tools
752
755
  return self.mcp_tools
@@ -844,13 +847,13 @@ class MyMemoryAgent(LlamaIndexAgent):
844
847
  name="Memory Agent",
845
848
  description="An agent with long-term memory."
846
849
  )
847
-
850
+
848
851
  def get_agent_prompt(self) -> str:
849
852
  return "You are a helpful assistant that remembers user preferences."
850
-
853
+
851
854
  def get_agent_tools(self) -> list:
852
855
  return []
853
-
856
+
854
857
  def get_memory_config(self):
855
858
  """Enable memory - just override this method!"""
856
859
  return MemoryConfig.memori_simple(
@@ -929,11 +932,11 @@ class MySkillsAgent(LlamaIndexAgent):
929
932
  description="An agent with on-demand capabilities."
930
933
  )
931
934
  # Built-in markdown skills are automatically registered by BaseAgent.__init__
932
-
935
+
933
936
  def get_agent_prompt(self) -> str:
934
937
  # Skills discovery prompt is automatically appended by BaseAgent
935
938
  return "You are a helpful assistant."
936
-
939
+
937
940
  def get_agent_tools(self) -> list:
938
941
  # Skill tools are auto-loaded - no need to add them manually!
939
942
  return [] # Only return custom tools specific to your agent
@@ -208,25 +208,25 @@ class MyAgent(LlamaIndexAgent):
208
208
  name="Calculator Agent",
209
209
  description="A helpful calculator assistant that can perform basic math operations."
210
210
  )
211
-
211
+
212
212
  def get_agent_prompt(self) -> str:
213
213
  """Define your agent's behavior and personality."""
214
214
  return "You are a helpful calculator assistant."
215
-
215
+
216
216
  def get_agent_tools(self) -> List[callable]:
217
217
  """Define the tools your agent can use.
218
-
218
+
219
219
  Tools are automatically converted to LlamaIndex FunctionTool instances.
220
220
  The function name becomes the tool name, and the docstring becomes the description.
221
221
  """
222
222
  def add(a: float, b: float) -> float:
223
223
  """Add two numbers together."""
224
224
  return a + b
225
-
225
+
226
226
  def multiply(a: float, b: float) -> float:
227
227
  """Multiply two numbers together."""
228
228
  return a * b
229
-
229
+
230
230
  # Just return the functions - automatic conversion to FunctionTool
231
231
  return [add, multiply]
232
232
 
@@ -308,16 +308,16 @@ class OpsMangedAgent(LlamaIndexAgent):
308
308
  name="Ops Managed Agent",
309
309
  description="An agent configured via Elasticsearch."
310
310
  )
311
-
311
+
312
312
  @classmethod
313
313
  def get_use_remote_config(cls) -> bool:
314
314
  """Enable Elasticsearch-only configuration."""
315
315
  return True
316
-
316
+
317
317
  def get_agent_prompt(self) -> str:
318
318
  # Fallback prompt if ES config not available
319
319
  return "You are a helpful assistant."
320
-
320
+
321
321
  def get_agent_tools(self) -> list:
322
322
  return []
323
323
  ```
@@ -439,10 +439,10 @@ Custom tools extend your agent's capabilities. The tool name and docstring are c
439
439
  ```python
440
440
  def get_weather(city: str) -> str:
441
441
  """Get the current weather for a specific city.
442
-
442
+
443
443
  Args:
444
444
  city: The name of the city to get weather for
445
-
445
+
446
446
  Returns:
447
447
  A description of the current weather
448
448
  """
@@ -479,29 +479,29 @@ class MyAgent(LlamaIndexAgent):
479
479
  description="A helpful assistant with custom tools."
480
480
  )
481
481
  self.file_storage = None
482
-
482
+
483
483
  async def _ensure_file_storage(self):
484
484
  if self.file_storage is None:
485
485
  self.file_storage = await FileStorageFactory.create_storage_manager()
486
-
486
+
487
487
  async def configure_session(self, session_configuration):
488
488
  await self._ensure_file_storage()
489
489
  self._user_id = session_configuration.get('user_id', 'default_user')
490
490
  self._session_id = session_configuration.get('session_id')
491
491
  await super().configure_session(session_configuration)
492
-
492
+
493
493
  def get_agent_tools(self):
494
494
  storage = self.file_storage
495
495
  user_id = self._user_id
496
496
  session_id = self._session_id
497
-
497
+
498
498
  async def store_result(param1: str, param2: int) -> str:
499
499
  """Process data and store results.
500
-
500
+
501
501
  Args:
502
502
  param1: Description of first parameter
503
503
  param2: Description of second parameter
504
-
504
+
505
505
  Returns:
506
506
  Result description
507
507
  """
@@ -513,7 +513,7 @@ class MyAgent(LlamaIndexAgent):
513
513
  content=result.encode()
514
514
  )
515
515
  return f"Result stored with ID: {file_id}"
516
-
516
+
517
517
  return [store_result]
518
518
  ```
519
519
 
@@ -557,12 +557,12 @@ class MyAgent(LlamaIndexAgent):
557
557
  )
558
558
  self.mcp_tools = []
559
559
  self._mcp_initialized = False
560
-
560
+
561
561
  async def _initialize_mcp_tools(self):
562
562
  """Load tools from MCP servers."""
563
563
  if self._mcp_initialized:
564
564
  return
565
-
565
+
566
566
  # Configure your MCP server
567
567
  mcp_configs = [
568
568
  {
@@ -571,29 +571,29 @@ class MyAgent(LlamaIndexAgent):
571
571
  "env": {"FILESYSTEM_ROOT": "/path/to/workspace"}
572
572
  }
573
573
  ]
574
-
574
+
575
575
  for config in mcp_configs:
576
576
  client = BasicMCPClient(
577
577
  config["command"],
578
578
  args=config["args"],
579
579
  env=config.get("env", {})
580
580
  )
581
-
581
+
582
582
  # Load tools from the MCP server
583
583
  mcp_tool_spec = McpToolSpec(client=client)
584
584
  tools = await mcp_tool_spec.to_tool_list_async()
585
585
  self.mcp_tools.extend(tools)
586
-
586
+
587
587
  self._mcp_initialized = True
588
-
588
+
589
589
  async def initialize_agent(self, model_name, system_prompt, tools, **kwargs):
590
590
  # Load MCP tools before initializing agent
591
591
  await self._initialize_mcp_tools()
592
-
592
+
593
593
  # Combine with other tools
594
594
  all_tools = self.get_agent_tools()
595
595
  await super().initialize_agent(model_name, system_prompt, all_tools, **kwargs)
596
-
596
+
597
597
  def get_agent_tools(self):
598
598
  # Return built-in tools + MCP tools
599
599
  return self.mcp_tools
@@ -691,13 +691,13 @@ class MyMemoryAgent(LlamaIndexAgent):
691
691
  name="Memory Agent",
692
692
  description="An agent with long-term memory."
693
693
  )
694
-
694
+
695
695
  def get_agent_prompt(self) -> str:
696
696
  return "You are a helpful assistant that remembers user preferences."
697
-
697
+
698
698
  def get_agent_tools(self) -> list:
699
699
  return []
700
-
700
+
701
701
  def get_memory_config(self):
702
702
  """Enable memory - just override this method!"""
703
703
  return MemoryConfig.memori_simple(
@@ -776,11 +776,11 @@ class MySkillsAgent(LlamaIndexAgent):
776
776
  description="An agent with on-demand capabilities."
777
777
  )
778
778
  # Built-in markdown skills are automatically registered by BaseAgent.__init__
779
-
779
+
780
780
  def get_agent_prompt(self) -> str:
781
781
  # Skills discovery prompt is automatically appended by BaseAgent
782
782
  return "You are a helpful assistant."
783
-
783
+
784
784
  def get_agent_tools(self) -> list:
785
785
  # Skill tools are auto-loaded - no need to add them manually!
786
786
  return [] # Only return custom tools specific to your agent
@@ -32,7 +32,7 @@ Example Usage:
32
32
  create_basic_agent_server(MyAgent, port=8000)
33
33
  ```
34
34
 
35
- Version: 0.8.7
35
+ Version: 0.8.8
36
36
  Author: Cinco AI Team
37
37
  License: MIT
38
38
  """
@@ -95,7 +95,11 @@ def _auto_setup_dependencies() -> None:
95
95
  def _run_auto_setup() -> None:
96
96
  """Perform the actual dependency checks/installs (idempotent, cached)."""
97
97
  try:
98
- from .utils.post_install import ensure_deno, ensure_playwright_browsers
98
+ from .utils.post_install import (
99
+ ensure_deno,
100
+ ensure_openshell,
101
+ ensure_playwright_browsers,
102
+ )
99
103
 
100
104
  # Check/install Playwright (silent if already installed)
101
105
  success, error = ensure_playwright_browsers()
@@ -111,6 +115,20 @@ def _run_auto_setup() -> None:
111
115
  logger.info(f"Deno: {message}")
112
116
  logger.info(f"Deno will be available via: {deno_path}")
113
117
 
118
+ # Bootstrap the OpenShell per-session shell sandbox (CLI + gateway +
119
+ # image). Best-effort: on failure the shell degrades to the local path
120
+ # with a runtime warning. This is what makes the strong sandbox work
121
+ # from just `pip install` + launching an agent (no manual steps).
122
+ ok, msg = ensure_openshell()
123
+ if ok:
124
+ logger.info("OpenShell per-session sandbox ready")
125
+ elif msg:
126
+ logger.warning(
127
+ "OpenShell sandbox unavailable (%s) — shell_exec will use the "
128
+ "degraded local path until fixed.",
129
+ msg,
130
+ )
131
+
114
132
  except Exception as e:
115
133
  # Don't fail the import if setup fails - tools will show errors when used
116
134
  logger.debug(f"Auto-setup skipped: {e}")
@@ -220,8 +238,14 @@ except ImportError:
220
238
  # Utilities
221
239
  from .utils import get_deno_command
222
240
 
223
- # Server application
224
- from .web.server import app, start_server
241
+
242
+ # Server application exposed lazily via module __getattr__ (see below).
243
+ # Importing ``.web.server`` eagerly constructs the FastAPI ``app`` at package
244
+ # import time, which boots the whole server and emits ``[SERVER]`` logs to
245
+ # stdout. Skills run ``python -m agent_framework...`` INSIDE the sandbox, where
246
+ # that stdout pollution corrupts the JSON the skill prints (JSONDecodeError →
247
+ # flaky skills). Deferring the import keeps ``import agent_framework`` cheap and
248
+ # stdout clean; ``app``/``start_server`` still resolve on first access.
225
249
 
226
250
 
227
251
  # Convenience imports for common use cases
@@ -307,6 +331,22 @@ __all__ = [
307
331
  ]
308
332
 
309
333
 
334
+ _LAZY_SERVER_ATTRS = frozenset({"app", "start_server"})
335
+
336
+
337
+ def __getattr__(name: str):
338
+ """Resolve ``app``/``start_server`` lazily from ``.web.server``.
339
+
340
+ Deferred so that ``import agent_framework`` does not boot the FastAPI app
341
+ (and pollute stdout) — critical for skills running inside the sandbox.
342
+ """
343
+ if name in _LAZY_SERVER_ATTRS:
344
+ from .web import server as _server
345
+
346
+ return getattr(_server, name)
347
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
348
+
349
+
310
350
  # Quick start function for convenience
311
351
  def create_basic_agent_server(
312
352
  agent_class: type[AgentInterface], host: str = "0.0.0.0", port: int = 8000, reload: bool = False
@@ -74,6 +74,7 @@ class A2ATaskProvider(ABC):
74
74
  message_id: str,
75
75
  agent_id: str,
76
76
  metadata: dict | None = None,
77
+ owner: str | None = None,
77
78
  ) -> A2ATask:
78
79
  """Create a new task entry.
79
80
 
@@ -84,6 +85,7 @@ class A2ATaskProvider(ABC):
84
85
  message_id: Framework message ID that triggered this task.
85
86
  agent_id: Agent identifier.
86
87
  metadata: Optional extra metadata.
88
+ owner: Optional authenticated principal that owns the task.
87
89
 
88
90
  Returns:
89
91
  The created A2ATask.
@@ -57,9 +57,17 @@ def create_a2a_router(app_state: Any, task_provider: Any) -> APIRouter:
57
57
  # Mutable container for the injected URL from /a2a/config
58
58
  injected_url_store: dict[str, str | None] = {"url": None}
59
59
 
60
+ # Lazy import of auth dependency to avoid circular imports with server.py.
61
+ # Done inside the factory (called at server startup, after server.py is fully
62
+ # imported) so there is no import cycle.
63
+ from agent_framework.web.server import get_current_user
64
+
60
65
  @router.get("/.well-known/agent.json")
61
66
  async def get_agent_card() -> dict:
62
- """Return the A2A Agent Card."""
67
+ """Return the A2A Agent Card.
68
+
69
+ Public discovery endpoint per the A2A protocol: no authentication.
70
+ """
63
71
  env_url = os.getenv("A2A_PUBLIC_URL")
64
72
  return agent_card_builder.build(
65
73
  agent_instance,
@@ -68,13 +76,17 @@ def create_a2a_router(app_state: Any, task_provider: Any) -> APIRouter:
68
76
  )
69
77
 
70
78
  @router.post("/a2a")
71
- async def handle_jsonrpc(request: Request) -> JSONResponse:
72
- """Dispatch incoming JSON-RPC 2.0 requests."""
73
- raw_body = await request.body()
74
- return await dispatcher.dispatch(raw_body, app_state)
79
+ async def handle_jsonrpc(
80
+ request: Request,
81
+ _user: str = Depends(get_current_user),
82
+ ) -> JSONResponse:
83
+ """Dispatch incoming JSON-RPC 2.0 requests.
75
84
 
76
- # Lazy import of auth dependency to avoid circular imports with server.py
77
- from agent_framework.web.server import get_current_user
85
+ Requires authentication before any JSON-RPC processing when auth is
86
+ active; in dev-mode the principal resolves to "anonymous".
87
+ """
88
+ raw_body = await request.body()
89
+ return await dispatcher.dispatch(raw_body, app_state, principal=_user)
78
90
 
79
91
  @router.post("/a2a/config")
80
92
  async def update_config(
@@ -35,12 +35,17 @@ class JSONRPCDispatcher:
35
35
  """
36
36
  self._translation_layer = translation_layer
37
37
 
38
- async def dispatch(self, raw_body: bytes, app_state: Any) -> JSONResponse | StreamingResponse:
38
+ async def dispatch(
39
+ self, raw_body: bytes, app_state: Any, principal: str | None = None
40
+ ) -> JSONResponse | StreamingResponse:
39
41
  """Parse and dispatch a JSON-RPC request.
40
42
 
41
43
  Args:
42
44
  raw_body: Raw HTTP body bytes.
43
45
  app_state: FastAPI app.state for context.
46
+ principal: Authenticated principal that issued the request, used to
47
+ record task ownership at creation. None when unauthenticated
48
+ (e.g. dev-mode).
44
49
 
45
50
  Returns:
46
51
  JSONResponse for sync methods, StreamingResponse for message/stream.
@@ -60,13 +65,16 @@ class JSONRPCDispatcher:
60
65
 
61
66
  request_id = request.id
62
67
 
63
- return await self._route_method(request)
68
+ return await self._route_method(request, principal)
64
69
 
65
- async def _route_method(self, request: JSONRPCRequest) -> JSONResponse | StreamingResponse:
70
+ async def _route_method(
71
+ self, request: JSONRPCRequest, principal: str | None = None
72
+ ) -> JSONResponse | StreamingResponse:
66
73
  """Route to the appropriate translation layer method.
67
74
 
68
75
  Args:
69
76
  request: Validated JSON-RPC request.
77
+ principal: Authenticated principal that issued the request.
70
78
 
71
79
  Returns:
72
80
  Response from the handler.
@@ -83,7 +91,9 @@ class JSONRPCDispatcher:
83
91
  return self._error_response(
84
92
  request_id, INVALID_PARAMS, "Invalid params", {"details": str(e)}
85
93
  )
86
- result = await self._translation_layer.handle_message_send(send_params, request_id)
94
+ result = await self._translation_layer.handle_message_send(
95
+ send_params, request_id, principal=principal
96
+ )
87
97
  return self._success_response(request_id, result)
88
98
 
89
99
  elif method == "message/stream":
@@ -94,7 +104,7 @@ class JSONRPCDispatcher:
94
104
  request_id, INVALID_PARAMS, "Invalid params", {"details": str(e)}
95
105
  )
96
106
  generator = await self._translation_layer.handle_message_stream(
97
- stream_params, request_id
107
+ stream_params, request_id, principal=principal
98
108
  )
99
109
  return StreamingResponse(generator, media_type="text/event-stream")
100
110
 
@@ -105,7 +115,9 @@ class JSONRPCDispatcher:
105
115
  return self._error_response(
106
116
  request_id, INVALID_PARAMS, "Invalid params", {"details": str(e)}
107
117
  )
108
- result = await self._translation_layer.handle_tasks_get(get_params, request_id)
118
+ result = await self._translation_layer.handle_tasks_get(
119
+ get_params, request_id, principal=principal
120
+ )
109
121
  return self._success_response(request_id, result)
110
122
 
111
123
  elif method == "tasks/cancel":