agent-framework-lib 0.8.1__tar.gz → 0.8.1.post3__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.
- {agent_framework_lib-0.8.1/agent_framework_lib.egg-info → agent_framework_lib-0.8.1.post3}/PKG-INFO +8 -1
- {agent_framework_lib-0.8.1/agent_framework/web/docs → agent_framework_lib-0.8.1.post3}/README.md +7 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3/agent_framework/web/docs}/README.md +7 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/helper_agent.py +390 -10
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/server.py +1 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/client.py +12 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/router.py +159 -13
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3/agent_framework_lib.egg-info}/PKG-INFO +8 -1
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework_lib.egg-info/SOURCES.txt +1 -0
- agent_framework_lib-0.8.1.post3/docs/index.md +222 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/pyproject.toml +1 -1
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/ARCHITECTURE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/LICENSE +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/MANIFEST.in +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/base.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/endpoints/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/endpoints/a2a_router.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/endpoints/agent_card_builder.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/endpoints/agent_card_skill_builder.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/endpoints/jsonrpc_dispatcher.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/endpoints/models_jsonrpc.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/endpoints/sse_wrapper.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/endpoints/translation_layer.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/models.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/providers/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/providers/elasticsearch_provider.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/a2a/providers/postgres_provider.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/capabilities/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/capabilities/resolver.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/chart_generation/llm_refinement_loop.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/activity_formatter.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/agent_interface.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/agent_provider.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/base_agent.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/context_budget.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/context_summarizer.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/elasticsearch_config_provider.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/implementation_validator.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/knowledge_state.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/loop_detector.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/model_clients.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/model_config.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/model_router.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/models.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/provider_calibration.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/scratchpad_compressor.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/state_manager.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/step_display_config.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/core/streaming_parts_accumulator.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/implementations/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/implementations/budget_aware_agent.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/implementations/llamaindex_agent.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/implementations/llamaindex_memory_adapter.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/implementations/microsoft_agent.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/memory/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/memory/agent_mixin.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/memory/base.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/memory/config.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/memory/manager.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/memory/personalization.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/memory/providers/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/memory/providers/graphiti_provider.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/memory/providers/memori_provider.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/memory/tools.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/api_timing_tracker.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/elasticsearch_circuit_breaker.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/elasticsearch_logging.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/error_handling.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/error_logging.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/llm_auto_instrumentor.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/llm_metrics.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/llm_metrics_collector.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/llm_metrics_extractor.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/metrics_aggregator.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/metrics_config.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/observability_manager.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/otel_instrumentor.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/otel_logging_handler.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/otel_metrics_recorder.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/otel_setup.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/performance_monitor.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/progress_tracker.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/resource_manager.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/resource_metrics_collector.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/streaming_latency_tracer.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/timing_tracker.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/token_counter.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/monitoring/tracing_context.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/notifications/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/notifications/hub.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/processing/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/processing/ai_content_management.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/processing/markdown_converter.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/processing/multimodal_integration.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/processing/rich_content_validation.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/py.typed +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/session/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/session/elasticsearch_session_storage.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/session/session_storage.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/agent_mixin.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/base.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/scripts/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/scripts/create_and_register.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/scripts/register_to_storage.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/chart/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/chart/chart_to_image.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/code_format/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/code_format/format_python.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/csv/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/csv/create_csv.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/csv/read_csv.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/csv/transform_csv.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/data_format/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/data_format/json_to_yaml.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/data_format/yaml_to_json.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/drawio/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/drawio/create_drawio.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/email_template/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/excel/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/excel/create_excel.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/file/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/file/create_file.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/file/list_files.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/file/read_file.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/file_access/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/file_access/get_file_path.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/form/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/image_display/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/image_gen/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/image_gen/create_image.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/image_gen/generate_image.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/mermaid/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/mermaid/mermaid_to_image.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/multimodal/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/optionsblock/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/powerpoint/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/powerpoint/create_powerpoint.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/skill_creator/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/table/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/table/table_to_image.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/unified_pdf/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/unified_pdf/create_pdf.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/web_search/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/web_search/web_news_search.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/web_search/web_search.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/word/SKILL.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/builtin/skills/word/create_word.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/custom_skill_manager.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/discovery_prompt.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/markdown_loader.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/skills/tools.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/storage/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/storage/file_storages.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/storage/file_system_management.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/storage/storage_optimizer.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/subagents/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/subagents/executor.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/subagents/message_injector.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/subagents/message_queue.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/subagents/retrigger.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/subagents/spawn_tool.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/tools/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/tools/activity_callback.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/tools/adaptive_pdf_css.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/tools/base.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/tools/html_content_analyzer.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/tools/multimodal_tools.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/tools/pdf_image_scaler.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/tools/shell_tool.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/tools/sizing_config.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/tools/web_fetch_tool.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/utils/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/utils/path_utils.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/utils/post_install.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/utils/session_title_generator.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/utils/source_detector.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/utils/special_blocks.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/admin_auth.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/admin_models.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/admin_router.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/admin_services.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/api_timing_middleware.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/A2A_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/BUILTIN_SKILLS_REFERENCE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/CREATING_AGENTS.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/CUSTOM_SKILLS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/DOCKER_SETUP.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/Dockerfile +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/GETTING_STARTED.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/MEMORY_INSTALLATION.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/TOOLS_AND_MCP_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/WORKSPACE_INTEGRATION.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/api-reference.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/configuration.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/docker-compose.yml +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/examples/agent_example_multi_skills.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/examples/agent_with_file_storage.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/examples/agent_with_mcp.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/examples/agent_with_memory.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/examples/agent_with_memory_graphiti.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/examples/agent_with_memory_hybrid.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/examples/agent_with_memory_simple.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/examples/custom_framework_agent.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/examples/simple_agent.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/examples/skills_demo_agent.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/docs/installation-guide.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/documentation_generator.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/helper_ui.html +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/modern_ui.html +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/observability/kibana-llm-dashboard-setup.json +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/observability/kibana-resource-metrics-dashboard.json +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/otel_tracing_middleware.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/skills_router.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/test_app.html +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/__init__.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/artefacts.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/config.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/context.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/cursor.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/memory.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/models.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/poller.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/preferences.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/session.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/subscription.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework_lib.egg-info/dependency_links.txt +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework_lib.egg-info/entry_points.txt +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework_lib.egg-info/requires.txt +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework_lib.egg-info/top_level.txt +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/A2A_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/ACTIVITY_OUTPUT_PART.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/ARCHITECTURE_DIAGRAM.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/BUILTIN_SKILLS_REFERENCE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/CONCURRENCE_VS_PARALLELISME_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/CREATING_AGENTS.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/CUSTOM_SKILLS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/DOCKER_SETUP.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/ELASTICSEARCH_DATA_STRUCTURES.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/FILE_DOWNLOAD_LINKS.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/FILE_STORAGE_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/GETTING_STARTED.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/HISTORY_MESSAGE_FORMAT.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/IMPLEMENTATION_GUIDE_NEW_AGENT.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/MEMORY_INSTALLATION.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/MODIFICATIONS_CONCURRENCE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/MULTIMODAL_TOOLS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/OBSERVABILITY_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/PYPI_PUBLISHING.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/QA_STREAMING_LATENCY.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/SCREENSHOTS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/SPEC_CROSS_MODEL_HISTORY_CONVERSION.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/SSE_NOTIFICATIONS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/STREAMING_EVENTS_FRONTEND.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/TOOLS_AND_MCP_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/WORKSPACE_INTEGRATION.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/api-reference.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/configuration.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/framework_audit_remarques.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/docs/installation-guide.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/README.md +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/agent_context_budget_test.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/agent_example_multi_skills.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/agent_exemple_test.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/agent_training_with_apo.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/agent_with_custom_tools_file_storage.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/agent_with_file_storage.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/agent_with_mcp.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/agent_with_memory_graphiti.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/agent_with_memory_hybrid.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/agent_with_memory_simple.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/agent_with_personalization.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/biagenttest.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/custom_framework_agent.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/dependencies/docker-compose.yaml +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/pyproject.toml +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/simple_agent.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/skills_demo_agent.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/examples/workspace_test_agent.py +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/setup.cfg +0 -0
- {agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/setup.py +0 -0
{agent_framework_lib-0.8.1/agent_framework_lib.egg-info → agent_framework_lib-0.8.1.post3}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-framework-lib
|
|
3
|
-
Version: 0.8.1
|
|
3
|
+
Version: 0.8.1.post3
|
|
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>
|
|
@@ -149,6 +149,13 @@ Dynamic: license-file
|
|
|
149
149
|
|
|
150
150
|
# Agent Framework Library
|
|
151
151
|
|
|
152
|
+
[](https://pypi.org/project/agent-framework-lib/)
|
|
153
|
+
[](https://github.com/Cinco-AI/AgentFramework/actions)
|
|
154
|
+
[](https://codecov.io/gh/Cinco-AI/AgentFramework)
|
|
155
|
+
[](https://www.python.org/downloads/)
|
|
156
|
+
[](https://opensource.org/licenses/MIT)
|
|
157
|
+
[](https://cinco-ai.github.io/AgentFramework/)
|
|
158
|
+
|
|
152
159
|
A comprehensive Python framework for building and serving conversational AI agents with FastAPI. Create production-ready AI agents in minutes with automatic session management, streaming responses, file storage, and easy MCP integration.
|
|
153
160
|
|
|
154
161
|
**Key Features:**
|
{agent_framework_lib-0.8.1/agent_framework/web/docs → agent_framework_lib-0.8.1.post3}/README.md
RENAMED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Agent Framework Library
|
|
2
2
|
|
|
3
|
+
[](https://pypi.org/project/agent-framework-lib/)
|
|
4
|
+
[](https://github.com/Cinco-AI/AgentFramework/actions)
|
|
5
|
+
[](https://codecov.io/gh/Cinco-AI/AgentFramework)
|
|
6
|
+
[](https://www.python.org/downloads/)
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
[](https://cinco-ai.github.io/AgentFramework/)
|
|
9
|
+
|
|
3
10
|
A comprehensive Python framework for building and serving conversational AI agents with FastAPI. Create production-ready AI agents in minutes with automatic session management, streaming responses, file storage, and easy MCP integration.
|
|
4
11
|
|
|
5
12
|
**Key Features:**
|
{agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3/agent_framework/web/docs}/README.md
RENAMED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Agent Framework Library
|
|
2
2
|
|
|
3
|
+
[](https://pypi.org/project/agent-framework-lib/)
|
|
4
|
+
[](https://github.com/Cinco-AI/AgentFramework/actions)
|
|
5
|
+
[](https://codecov.io/gh/Cinco-AI/AgentFramework)
|
|
6
|
+
[](https://www.python.org/downloads/)
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
[](https://cinco-ai.github.io/AgentFramework/)
|
|
9
|
+
|
|
3
10
|
A comprehensive Python framework for building and serving conversational AI agents with FastAPI. Create production-ready AI agents in minutes with automatic session management, streaming responses, file storage, and easy MCP integration.
|
|
4
11
|
|
|
5
12
|
**Key Features:**
|
{agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/web/helper_agent.py
RENAMED
|
@@ -91,6 +91,7 @@ class FrameworkHelperAgent(LlamaIndexAgent):
|
|
|
91
91
|
_indexed_docs: list[str] = []
|
|
92
92
|
_indexed_examples: list[str] = []
|
|
93
93
|
_indexed_source: list[str] = []
|
|
94
|
+
_indexed_skills: list[str] = [] # SKILL.md files from builtin skills
|
|
94
95
|
_graphiti_episode_count: int = 0 # Count from FalkorDB when reusing existing graph
|
|
95
96
|
|
|
96
97
|
AGENT_ID = "framework_helper_v2"
|
|
@@ -212,6 +213,75 @@ class FrameworkHelperAgent(LlamaIndexAgent):
|
|
|
212
213
|
logger.warning(f"[FrameworkHelperAgent] Failed to read tools guide: {e}")
|
|
213
214
|
return ""
|
|
214
215
|
|
|
216
|
+
def _load_custom_skills_guide(self) -> str:
|
|
217
|
+
"""
|
|
218
|
+
Load the CUSTOM_SKILLS_GUIDE.md documentation.
|
|
219
|
+
|
|
220
|
+
Returns:
|
|
221
|
+
Content of the custom skills guide, or empty string if not available.
|
|
222
|
+
"""
|
|
223
|
+
docs_path = self._get_docs_path()
|
|
224
|
+
guide_path = docs_path / "CUSTOM_SKILLS_GUIDE.md"
|
|
225
|
+
|
|
226
|
+
if not guide_path.exists():
|
|
227
|
+
logger.debug(f"[FrameworkHelperAgent] Custom skills guide not found: {guide_path}")
|
|
228
|
+
return ""
|
|
229
|
+
|
|
230
|
+
try:
|
|
231
|
+
content = guide_path.read_text(encoding="utf-8", errors="ignore")
|
|
232
|
+
# Truncate if too long (keep first ~15000 chars to stay within context limits)
|
|
233
|
+
if len(content) > 15000:
|
|
234
|
+
content = content[:15000] + "\n\n... (truncated for brevity)"
|
|
235
|
+
return content
|
|
236
|
+
except Exception as e:
|
|
237
|
+
logger.warning(f"[FrameworkHelperAgent] Failed to read custom skills guide: {e}")
|
|
238
|
+
return ""
|
|
239
|
+
|
|
240
|
+
def _load_skill_examples(self) -> str:
|
|
241
|
+
"""
|
|
242
|
+
Load representative SKILL.md examples from builtin skills.
|
|
243
|
+
|
|
244
|
+
Loads 3 representative skills to show the SKILL.md format:
|
|
245
|
+
- chart (Skill_Script with visualization)
|
|
246
|
+
- form (Skill_Markdown with UI)
|
|
247
|
+
- powerpoint (Skill_Script with document generation)
|
|
248
|
+
|
|
249
|
+
Returns:
|
|
250
|
+
Formatted markdown string with skill definition examples.
|
|
251
|
+
"""
|
|
252
|
+
source_path = self._get_source_path()
|
|
253
|
+
skills_path = source_path / "skills" / "builtin" / "skills"
|
|
254
|
+
|
|
255
|
+
if not skills_path.exists():
|
|
256
|
+
logger.debug(f"[FrameworkHelperAgent] Skills path not found: {skills_path}")
|
|
257
|
+
return "# No skill examples available"
|
|
258
|
+
|
|
259
|
+
# Representative skills showing different types
|
|
260
|
+
example_skills = [
|
|
261
|
+
("chart", "Skill_Script for visualization (Chart.js)"),
|
|
262
|
+
("form", "Skill_Markdown for UI (interactive forms)"),
|
|
263
|
+
("powerpoint", "Skill_Script for document generation"),
|
|
264
|
+
]
|
|
265
|
+
|
|
266
|
+
examples: list[str] = []
|
|
267
|
+
|
|
268
|
+
for skill_name, description in example_skills:
|
|
269
|
+
skill_md = skills_path / skill_name / "SKILL.md"
|
|
270
|
+
if skill_md.exists():
|
|
271
|
+
try:
|
|
272
|
+
content = skill_md.read_text(encoding="utf-8", errors="ignore")
|
|
273
|
+
# Truncate very long skills (keep first 3000 chars)
|
|
274
|
+
if len(content) > 3000:
|
|
275
|
+
content = content[:3000] + "\n\n... (truncated for brevity)"
|
|
276
|
+
examples.append(f"### {skill_name} — {description}\n```markdown\n{content}\n```")
|
|
277
|
+
except Exception as e:
|
|
278
|
+
logger.warning(f"[FrameworkHelperAgent] Failed to read skill {skill_name}: {e}")
|
|
279
|
+
|
|
280
|
+
if not examples:
|
|
281
|
+
return "# No skill examples available"
|
|
282
|
+
|
|
283
|
+
return "\n\n".join(examples)
|
|
284
|
+
|
|
215
285
|
def _get_base_prompt(self) -> str:
|
|
216
286
|
"""
|
|
217
287
|
Return the base system prompt for framework assistance.
|
|
@@ -241,19 +311,75 @@ def get_agent_prompt(self) -> str:
|
|
|
241
311
|
return \"\"\"You are a helpful assistant that...\"\"\"
|
|
242
312
|
```
|
|
243
313
|
|
|
244
|
-
### 2.
|
|
314
|
+
### 2. Skills System - Add Capabilities (RECOMMENDED)
|
|
315
|
+
|
|
316
|
+
**AgentFramework provides 21 builtin skills that agents can use on-demand:**
|
|
317
|
+
|
|
318
|
+
#### How Skills Work
|
|
319
|
+
- **Auto-loading**: Skills auto-load when user queries match trigger patterns (e.g., "create a chart" loads the `chart` skill)
|
|
320
|
+
- **On-demand**: Only loaded when needed, reducing token usage by ~80%
|
|
321
|
+
- **Two types**:
|
|
322
|
+
- **Skill_Markdown** (10 skills): Instructions-only, no executable code
|
|
323
|
+
- **Skill_Script** (11 skills): With executable Python scripts for file generation
|
|
324
|
+
|
|
325
|
+
#### Skills by Category
|
|
326
|
+
|
|
327
|
+
**Visualization (3 skills)**
|
|
328
|
+
- `chart` — Chart.js charts (bar, line, pie, etc.) or PNG export
|
|
329
|
+
- `mermaid` — Mermaid diagrams (flowcharts, sequence, UML, etc.)
|
|
330
|
+
- `table` — Formatted tables or PNG export
|
|
331
|
+
|
|
332
|
+
**Document (7 skills)**
|
|
333
|
+
- `file` — File operations (create, read, list)
|
|
334
|
+
- `unified_pdf` — PDF generation from HTML with embedded images
|
|
335
|
+
- `file_access` — Download URLs for stored files
|
|
336
|
+
- `excel` — Excel (.xlsx) generation with multi-sheet support
|
|
337
|
+
- `drawio` — Draw.io diagrams (.drawio)
|
|
338
|
+
- `powerpoint` — PowerPoint presentations (.pptx)
|
|
339
|
+
- `word` — Word documents (.docx)
|
|
340
|
+
|
|
341
|
+
**Data (2 skills)**
|
|
342
|
+
- `csv` — CSV manipulation (create, read, transform)
|
|
343
|
+
- `data_format` — JSON ↔ YAML conversion, schema validation
|
|
344
|
+
|
|
345
|
+
**Code (1 skill)**
|
|
346
|
+
- `code_format` — Code formatting (Python, JS, JSON, YAML)
|
|
347
|
+
|
|
348
|
+
**Web (1 skill)**
|
|
349
|
+
- `web_search` — DuckDuckGo web search and news
|
|
350
|
+
|
|
351
|
+
**Multimodal (2 skills)**
|
|
352
|
+
- `multimodal` — Multimodal processing instructions (images, audio)
|
|
353
|
+
- `image_gen` — AI image generation (DALL-E 3 and DALL-E 2)
|
|
354
|
+
|
|
355
|
+
**UI (5 skills)**
|
|
356
|
+
- `form` — Interactive forms (JSON formDefinition)
|
|
357
|
+
- `optionsblock` — Clickable option buttons
|
|
358
|
+
- `image_display` — Display images in chat
|
|
359
|
+
- `email_template` — Responsive HTML email templates
|
|
360
|
+
- `skill_creator` — Guide for creating custom skills
|
|
361
|
+
|
|
362
|
+
**Skills auto-load by default** — agents don't need to do anything special to use them!
|
|
363
|
+
|
|
364
|
+
### 3. `get_agent_tools()` - Add Custom Tools (Optional)
|
|
365
|
+
For capabilities beyond the 21 builtin skills, you can define custom tools:
|
|
245
366
|
```python
|
|
246
367
|
def get_agent_tools(self) -> List[callable]:
|
|
247
|
-
def
|
|
368
|
+
def my_custom_tool(param: str) -> str:
|
|
248
369
|
\"\"\"Tool description for the LLM.\"\"\"
|
|
249
370
|
return f"Result: {param}"
|
|
250
|
-
return [
|
|
371
|
+
return [my_custom_tool]
|
|
251
372
|
```
|
|
252
373
|
|
|
253
|
-
|
|
374
|
+
**When to use custom tools vs skills:**
|
|
375
|
+
- Use **builtin skills** for common tasks (charts, PDFs, Excel, search, etc.)
|
|
376
|
+
- Use **custom tools** for domain-specific logic unique to your agent
|
|
377
|
+
- Both can coexist: skills + custom tools work together seamlessly
|
|
378
|
+
|
|
379
|
+
### 4. `initialize_agent()` - (Optional) Customize agent initialization
|
|
254
380
|
The default implementation uses FunctionAgent. Override only if you need custom behavior.
|
|
255
381
|
|
|
256
|
-
###
|
|
382
|
+
### 5. `get_memory_config()` - (Optional) Enable memory
|
|
257
383
|
```python
|
|
258
384
|
def get_memory_config(self) -> Optional[MemoryConfig]:
|
|
259
385
|
return MemoryConfig.memori_simple(database_url="sqlite:///memory.db")
|
|
@@ -283,6 +409,8 @@ Be helpful, provide working code examples, and explain framework concepts clearl
|
|
|
283
409
|
- LlamaIndexAgent source code (for accurate reference)
|
|
284
410
|
- Example agent implementations from the docs
|
|
285
411
|
- Tools and MCP integration guide
|
|
412
|
+
- Custom skills guide (how to create new skills)
|
|
413
|
+
- Skill definition examples (SKILL.md format reference)
|
|
286
414
|
|
|
287
415
|
This ensures the agent has accurate, up-to-date information about
|
|
288
416
|
the framework regardless of whether it's running from source or PyPI.
|
|
@@ -291,6 +419,8 @@ Be helpful, provide working code examples, and explain framework concepts clearl
|
|
|
291
419
|
source_code = self._load_llamaindex_agent_source()
|
|
292
420
|
examples = self._load_doc_examples()
|
|
293
421
|
tools_guide = self._load_tools_and_mcp_guide()
|
|
422
|
+
skills_guide = self._load_custom_skills_guide()
|
|
423
|
+
skill_examples = self._load_skill_examples()
|
|
294
424
|
|
|
295
425
|
prompt = f"""{base_prompt}
|
|
296
426
|
|
|
@@ -315,6 +445,24 @@ These are complete, runnable examples showing different agent patterns:
|
|
|
315
445
|
Complete reference for creating tools and integrating MCP servers:
|
|
316
446
|
|
|
317
447
|
{tools_guide}
|
|
448
|
+
"""
|
|
449
|
+
|
|
450
|
+
if skills_guide:
|
|
451
|
+
prompt += f"""
|
|
452
|
+
|
|
453
|
+
## Custom Skills Creation Guide
|
|
454
|
+
Complete guide for creating custom skills (both Skill_Markdown and Skill_Script):
|
|
455
|
+
|
|
456
|
+
{skills_guide}
|
|
457
|
+
"""
|
|
458
|
+
|
|
459
|
+
if skill_examples:
|
|
460
|
+
prompt += f"""
|
|
461
|
+
|
|
462
|
+
## Builtin Skill Examples (SKILL.md Format Reference)
|
|
463
|
+
These examples show the SKILL.md format used by builtin skills:
|
|
464
|
+
|
|
465
|
+
{skill_examples}
|
|
318
466
|
"""
|
|
319
467
|
|
|
320
468
|
return prompt
|
|
@@ -357,7 +505,7 @@ Complete reference for creating tools and integrating MCP servers:
|
|
|
357
505
|
are available for searching.
|
|
358
506
|
|
|
359
507
|
Args:
|
|
360
|
-
file_type: Filter by type - "docs", "examples", "source", or "all"
|
|
508
|
+
file_type: Filter by type - "docs", "examples", "skills", "source", or "all"
|
|
361
509
|
|
|
362
510
|
Returns:
|
|
363
511
|
List of indexed files by category
|
|
@@ -366,7 +514,7 @@ Complete reference for creating tools and integrating MCP servers:
|
|
|
366
514
|
cls = FrameworkHelperAgent
|
|
367
515
|
|
|
368
516
|
# Check if we're using a reused FalkorDB graph (lists are empty but episodes exist)
|
|
369
|
-
has_local_lists = any([cls._indexed_docs, cls._indexed_examples, cls._indexed_source])
|
|
517
|
+
has_local_lists = any([cls._indexed_docs, cls._indexed_examples, cls._indexed_skills, cls._indexed_source])
|
|
370
518
|
|
|
371
519
|
if not has_local_lists:
|
|
372
520
|
# Try to get episode names from FalkorDB
|
|
@@ -385,6 +533,7 @@ Complete reference for creating tools and integrating MCP servers:
|
|
|
385
533
|
"**Indexed content includes:**\n"
|
|
386
534
|
"- Documentation files (docs/*.md)\n"
|
|
387
535
|
"- Example agents (examples/*.py)\n"
|
|
536
|
+
"- Skill definitions (21 builtin skills)\n"
|
|
388
537
|
"- Core source files (agent_framework/core/, implementations/, etc.)\n\n"
|
|
389
538
|
"Use `search_knowledge(query)` to search across all indexed content."
|
|
390
539
|
)
|
|
@@ -408,6 +557,13 @@ Complete reference for creating tools and integrating MCP servers:
|
|
|
408
557
|
for f in examples:
|
|
409
558
|
result.append(f" - {f}")
|
|
410
559
|
|
|
560
|
+
if file_type in ("all", "skills"):
|
|
561
|
+
skills = cls._indexed_skills or []
|
|
562
|
+
if skills:
|
|
563
|
+
result.append(f"\n**Skills ({len(skills)} builtin):**")
|
|
564
|
+
for f in skills:
|
|
565
|
+
result.append(f" - {f}")
|
|
566
|
+
|
|
411
567
|
if file_type in ("all", "source"):
|
|
412
568
|
source = cls._indexed_source or []
|
|
413
569
|
if source:
|
|
@@ -478,6 +634,150 @@ Complete reference for creating tools and integrating MCP servers:
|
|
|
478
634
|
logger.error(f"Web search error: {e}")
|
|
479
635
|
return f"Search failed: {e}"
|
|
480
636
|
|
|
637
|
+
async def search_skills(query: str) -> str:
|
|
638
|
+
"""
|
|
639
|
+
Search builtin skills by semantic query or trigger patterns.
|
|
640
|
+
|
|
641
|
+
Use this to find which skills are available for specific tasks.
|
|
642
|
+
Examples: "chart creation", "PDF generation", "image processing"
|
|
643
|
+
|
|
644
|
+
Args:
|
|
645
|
+
query: What capability you're looking for
|
|
646
|
+
|
|
647
|
+
Returns:
|
|
648
|
+
List of relevant skills with their descriptions and trigger patterns
|
|
649
|
+
"""
|
|
650
|
+
try:
|
|
651
|
+
# Search Graphiti for skill episodes
|
|
652
|
+
if self._shared_graphiti_client is not None:
|
|
653
|
+
results = await self._search_graphiti(f"skill:{query}", num_results=5)
|
|
654
|
+
if results and "No relevant information found" not in results:
|
|
655
|
+
return f"Skills matching '{query}':\n\n{results}"
|
|
656
|
+
|
|
657
|
+
# Fallback: return list of all skills by category
|
|
658
|
+
cls = FrameworkHelperAgent
|
|
659
|
+
if cls._indexed_skills:
|
|
660
|
+
skills_list = ", ".join(sorted(cls._indexed_skills))
|
|
661
|
+
return (
|
|
662
|
+
f"Semantic search not available. All 21 builtin skills: {skills_list}\n\n"
|
|
663
|
+
f"Use `get_skill_details(skill_name)` to see full documentation for a specific skill.\n"
|
|
664
|
+
f"Or use `search_knowledge(\"{query}\")` for general search across all content."
|
|
665
|
+
)
|
|
666
|
+
|
|
667
|
+
return (
|
|
668
|
+
"Skills are indexed in the knowledge base. "
|
|
669
|
+
f"Use `search_knowledge(\"{query}\")` to find relevant skills."
|
|
670
|
+
)
|
|
671
|
+
|
|
672
|
+
except Exception as e:
|
|
673
|
+
logger.warning(f"Skill search failed: {e}")
|
|
674
|
+
return f"Skill search failed: {e}. Try `list_indexed_files('skills')` to see all skills."
|
|
675
|
+
|
|
676
|
+
async def get_skill_details(skill_name: str) -> str:
|
|
677
|
+
"""
|
|
678
|
+
Get the complete SKILL.md content for a specific builtin skill.
|
|
679
|
+
|
|
680
|
+
Use this to see the full documentation, trigger patterns, usage examples,
|
|
681
|
+
and script entrypoints for a skill.
|
|
682
|
+
|
|
683
|
+
Args:
|
|
684
|
+
skill_name: Name of the skill (e.g., "chart", "pdf", "excel", "powerpoint")
|
|
685
|
+
|
|
686
|
+
Returns:
|
|
687
|
+
Full SKILL.md content with all usage instructions
|
|
688
|
+
"""
|
|
689
|
+
source_path = self._get_source_path()
|
|
690
|
+
skill_md = source_path / "skills" / "builtin" / "skills" / skill_name / "SKILL.md"
|
|
691
|
+
|
|
692
|
+
if not skill_md.exists():
|
|
693
|
+
cls = FrameworkHelperAgent
|
|
694
|
+
available_skills = ", ".join(sorted(cls._indexed_skills)) if cls._indexed_skills else "unknown"
|
|
695
|
+
return (
|
|
696
|
+
f"Skill '{skill_name}' not found.\n\n"
|
|
697
|
+
f"Available skills: {available_skills}\n\n"
|
|
698
|
+
"Use `list_indexed_files('skills')` to see all indexed skills."
|
|
699
|
+
)
|
|
700
|
+
|
|
701
|
+
try:
|
|
702
|
+
content = skill_md.read_text(encoding="utf-8", errors="ignore")
|
|
703
|
+
return f"# {skill_name} Skill Documentation\n\n{content}"
|
|
704
|
+
except Exception as e:
|
|
705
|
+
logger.warning(f"Failed to read skill {skill_name}: {e}")
|
|
706
|
+
return f"Failed to read skill '{skill_name}': {e}"
|
|
707
|
+
|
|
708
|
+
async def recommend_skills_for_task(task_description: str) -> str:
|
|
709
|
+
"""
|
|
710
|
+
Recommend the best builtin skills for a given agent task.
|
|
711
|
+
|
|
712
|
+
Use this when creating an agent to determine which skills it should have access to.
|
|
713
|
+
|
|
714
|
+
Args:
|
|
715
|
+
task_description: Description of what the agent needs to do
|
|
716
|
+
(e.g., "analyze sales data and create reports")
|
|
717
|
+
|
|
718
|
+
Returns:
|
|
719
|
+
List of recommended skills with justifications
|
|
720
|
+
"""
|
|
721
|
+
# Keywords mapping to skills
|
|
722
|
+
skill_keywords = {
|
|
723
|
+
"chart": ["chart", "graph", "plot", "visualization", "bar", "line", "pie"],
|
|
724
|
+
"mermaid": ["diagram", "flowchart", "sequence", "uml", "architecture", "workflow"],
|
|
725
|
+
"table": ["table", "tabular", "grid", "data table"],
|
|
726
|
+
"file": ["file", "read file", "write file", "create file"],
|
|
727
|
+
"unified_pdf": ["pdf", "report", "document pdf", "generate pdf"],
|
|
728
|
+
"file_access": ["download", "file access", "get file"],
|
|
729
|
+
"excel": ["excel", "spreadsheet", "xlsx", "workbook"],
|
|
730
|
+
"drawio": ["drawio", "architecture diagram", "technical diagram"],
|
|
731
|
+
"powerpoint": ["powerpoint", "presentation", "slides", "pptx"],
|
|
732
|
+
"word": ["word", "document", "docx", "text document"],
|
|
733
|
+
"web_search": ["search", "web search", "internet", "lookup", "news"],
|
|
734
|
+
"multimodal": ["image", "audio", "multimodal", "vision", "picture"],
|
|
735
|
+
"image_gen": ["generate image", "create image", "dall-e", "ai image"],
|
|
736
|
+
"form": ["form", "input", "interactive form"],
|
|
737
|
+
"optionsblock": ["options", "buttons", "choices", "select"],
|
|
738
|
+
"image_display": ["show image", "display image"],
|
|
739
|
+
"email_template": ["email", "email template", "html email"],
|
|
740
|
+
"skill_creator": ["create skill", "custom skill", "new skill"],
|
|
741
|
+
"csv": ["csv", "comma separated", "data file"],
|
|
742
|
+
"data_format": ["json", "yaml", "convert", "schema", "validation"],
|
|
743
|
+
"code_format": ["format code", "code formatting", "prettier", "black"],
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
# Find matching skills
|
|
747
|
+
task_lower = task_description.lower()
|
|
748
|
+
recommendations = []
|
|
749
|
+
|
|
750
|
+
for skill_name, keywords in skill_keywords.items():
|
|
751
|
+
if any(keyword in task_lower for keyword in keywords):
|
|
752
|
+
recommendations.append(skill_name)
|
|
753
|
+
|
|
754
|
+
if not recommendations:
|
|
755
|
+
return (
|
|
756
|
+
f"No specific skills identified for: '{task_description}'\n\n"
|
|
757
|
+
"**General recommendation:** Most agents work well with auto-loaded skills.\n"
|
|
758
|
+
"Skills will automatically load when users mention trigger words (e.g., 'chart', 'pdf', 'excel').\n\n"
|
|
759
|
+
"Use `search_skills(query)` or `list_indexed_files('skills')` to explore all 21 builtin skills."
|
|
760
|
+
)
|
|
761
|
+
|
|
762
|
+
# Build detailed recommendations
|
|
763
|
+
result = [f"Recommended skills for '{task_description}':\n"]
|
|
764
|
+
|
|
765
|
+
for skill in recommendations[:5]: # Limit to top 5
|
|
766
|
+
# Get basic info about the skill
|
|
767
|
+
skill_info = await get_skill_details(skill)
|
|
768
|
+
# Extract just the first few lines for summary
|
|
769
|
+
lines = skill_info.split("\n")[:10]
|
|
770
|
+
summary = "\n".join(lines)
|
|
771
|
+
result.append(f"\n**{skill}**")
|
|
772
|
+
result.append(f"{summary}\n")
|
|
773
|
+
|
|
774
|
+
result.append(
|
|
775
|
+
"\n**Note:** Skills auto-load when needed. You don't need to explicitly configure them "
|
|
776
|
+
"unless you want to restrict which skills are available."
|
|
777
|
+
)
|
|
778
|
+
|
|
779
|
+
return "\n".join(result)
|
|
780
|
+
|
|
481
781
|
# Create FunctionTool instances with async_fn (same pattern as memory tools)
|
|
482
782
|
return [
|
|
483
783
|
FunctionTool.from_defaults(
|
|
@@ -493,7 +793,7 @@ Complete reference for creating tools and integrating MCP servers:
|
|
|
493
793
|
name="list_indexed_files",
|
|
494
794
|
description=(
|
|
495
795
|
"List all files indexed in the knowledge base. "
|
|
496
|
-
"Filter by type: 'docs', 'examples', 'source', or 'all'."
|
|
796
|
+
"Filter by type: 'docs', 'examples', 'skills', 'source', or 'all'."
|
|
497
797
|
)
|
|
498
798
|
),
|
|
499
799
|
FunctionTool.from_defaults(
|
|
@@ -512,6 +812,30 @@ Complete reference for creating tools and integrating MCP servers:
|
|
|
512
812
|
"Use for Python libraries, best practices, or topics not in framework docs."
|
|
513
813
|
)
|
|
514
814
|
),
|
|
815
|
+
FunctionTool.from_defaults(
|
|
816
|
+
async_fn=search_skills,
|
|
817
|
+
name="search_skills",
|
|
818
|
+
description=(
|
|
819
|
+
"Search builtin skills by semantic query or trigger patterns. "
|
|
820
|
+
"Use to find which skills are available for specific tasks."
|
|
821
|
+
)
|
|
822
|
+
),
|
|
823
|
+
FunctionTool.from_defaults(
|
|
824
|
+
async_fn=get_skill_details,
|
|
825
|
+
name="get_skill_details",
|
|
826
|
+
description=(
|
|
827
|
+
"Get complete SKILL.md documentation for a specific builtin skill. "
|
|
828
|
+
"Shows trigger patterns, usage examples, and script entrypoints."
|
|
829
|
+
)
|
|
830
|
+
),
|
|
831
|
+
FunctionTool.from_defaults(
|
|
832
|
+
async_fn=recommend_skills_for_task,
|
|
833
|
+
name="recommend_skills_for_task",
|
|
834
|
+
description=(
|
|
835
|
+
"Recommend the best builtin skills for a given agent task. "
|
|
836
|
+
"Use when creating an agent to determine which skills it should have."
|
|
837
|
+
)
|
|
838
|
+
),
|
|
515
839
|
]
|
|
516
840
|
|
|
517
841
|
async def initialize_agent(
|
|
@@ -992,12 +1316,16 @@ Complete reference for creating tools and integrating MCP servers:
|
|
|
992
1316
|
example_errors = await cls._index_examples_async()
|
|
993
1317
|
indexing_errors.extend(example_errors)
|
|
994
1318
|
|
|
1319
|
+
# Index skill definitions (SKILL.md files)
|
|
1320
|
+
skill_errors = await cls._index_skill_definitions_async()
|
|
1321
|
+
indexing_errors.extend(skill_errors)
|
|
1322
|
+
|
|
995
1323
|
# Index source files with relationship extraction
|
|
996
1324
|
source_errors = await cls._index_source_files_async()
|
|
997
1325
|
indexing_errors.extend(source_errors)
|
|
998
1326
|
|
|
999
1327
|
cls._shared_knowledge_indexed = True
|
|
1000
|
-
total = len(cls._indexed_docs) + len(cls._indexed_examples) + len(cls._indexed_source)
|
|
1328
|
+
total = len(cls._indexed_docs) + len(cls._indexed_examples) + len(cls._indexed_skills) + len(cls._indexed_source)
|
|
1001
1329
|
logger.info(f"[FrameworkHelperAgent] Indexed {total} files successfully")
|
|
1002
1330
|
|
|
1003
1331
|
if indexing_errors:
|
|
@@ -1089,6 +1417,58 @@ Complete reference for creating tools and integrating MCP servers:
|
|
|
1089
1417
|
logger.info(f"[FrameworkHelperAgent] Indexed {len(cls._indexed_examples)} example files")
|
|
1090
1418
|
return errors
|
|
1091
1419
|
|
|
1420
|
+
@classmethod
|
|
1421
|
+
async def _index_skill_definitions_async(cls) -> list[str]:
|
|
1422
|
+
"""
|
|
1423
|
+
Index SKILL.md files from builtin skills directory into Graphiti.
|
|
1424
|
+
|
|
1425
|
+
This indexes all 21 builtin skill definitions with their:
|
|
1426
|
+
- Trigger patterns for discovery
|
|
1427
|
+
- Capabilities and usage instructions
|
|
1428
|
+
- Entrypoint commands (for Skill_Script types)
|
|
1429
|
+
- Examples and metadata
|
|
1430
|
+
|
|
1431
|
+
Returns:
|
|
1432
|
+
List of error messages for files that failed to index
|
|
1433
|
+
"""
|
|
1434
|
+
errors: list[str] = []
|
|
1435
|
+
source_path = cls._get_source_path()
|
|
1436
|
+
skills_path = source_path / "skills" / "builtin" / "skills"
|
|
1437
|
+
|
|
1438
|
+
if not skills_path.exists():
|
|
1439
|
+
logger.warning(f"[FrameworkHelperAgent] Skills path not found: {skills_path}")
|
|
1440
|
+
return errors
|
|
1441
|
+
|
|
1442
|
+
# Find all SKILL.md files in subdirectories
|
|
1443
|
+
skill_md_files = list(skills_path.glob("*/SKILL.md"))
|
|
1444
|
+
|
|
1445
|
+
for skill_md in skill_md_files:
|
|
1446
|
+
try:
|
|
1447
|
+
content = skill_md.read_text(encoding="utf-8", errors="ignore")
|
|
1448
|
+
skill_name = skill_md.parent.name
|
|
1449
|
+
cls._indexed_skills.append(skill_name)
|
|
1450
|
+
|
|
1451
|
+
# Index into Graphiti if client is available
|
|
1452
|
+
if cls._shared_graphiti_client is not None:
|
|
1453
|
+
await cls._add_episode_to_graphiti(
|
|
1454
|
+
name=f"skill:{skill_name}",
|
|
1455
|
+
content=content,
|
|
1456
|
+
source_description=f"Skill definition: {skill_name}",
|
|
1457
|
+
chunk_type="skill_definition",
|
|
1458
|
+
)
|
|
1459
|
+
# Rate limit protection: wait between indexing operations
|
|
1460
|
+
await asyncio.sleep(2.0)
|
|
1461
|
+
|
|
1462
|
+
logger.debug(f"[FrameworkHelperAgent] Indexed skill: {skill_name}")
|
|
1463
|
+
|
|
1464
|
+
except Exception as e:
|
|
1465
|
+
error_msg = f"Error indexing skill {skill_md.parent.name}: {e}"
|
|
1466
|
+
logger.error(f"[FrameworkHelperAgent] {error_msg}")
|
|
1467
|
+
errors.append(error_msg)
|
|
1468
|
+
|
|
1469
|
+
logger.info(f"[FrameworkHelperAgent] Indexed {len(cls._indexed_skills)} skill definitions")
|
|
1470
|
+
return errors
|
|
1471
|
+
|
|
1092
1472
|
@classmethod
|
|
1093
1473
|
async def _index_source_files_async(cls) -> list[str]:
|
|
1094
1474
|
"""
|
|
@@ -1447,7 +1827,7 @@ Complete reference for creating tools and integrating MCP servers:
|
|
|
1447
1827
|
@classmethod
|
|
1448
1828
|
def get_indexed_files_count(cls) -> int:
|
|
1449
1829
|
"""Get total count of indexed files."""
|
|
1450
|
-
local_count = len(cls._indexed_docs) + len(cls._indexed_examples) + len(cls._indexed_source)
|
|
1830
|
+
local_count = len(cls._indexed_docs) + len(cls._indexed_examples) + len(cls._indexed_skills) + len(cls._indexed_source)
|
|
1451
1831
|
# If we have a count from FalkorDB (reused graph), use that if local is empty
|
|
1452
1832
|
if local_count == 0 and cls._graphiti_episode_count > 0:
|
|
1453
1833
|
return cls._graphiti_episode_count
|
{agent_framework_lib-0.8.1 → agent_framework_lib-0.8.1.post3}/agent_framework/workspace/client.py
RENAMED
|
@@ -382,6 +382,18 @@ class WorkspaceClient:
|
|
|
382
382
|
"""Remove a member from a workspace."""
|
|
383
383
|
await self._request("DELETE", f"/workspaces/{workspace_id}/members/{member_id}")
|
|
384
384
|
|
|
385
|
+
# ------------------------------------------------------------------
|
|
386
|
+
# Typing indicator
|
|
387
|
+
# ------------------------------------------------------------------
|
|
388
|
+
|
|
389
|
+
async def start_writing(self, workspace_id: str) -> None:
|
|
390
|
+
"""Signal that the agent started composing a response."""
|
|
391
|
+
await self._request("POST", f"/workspaces/{workspace_id}/writing/start")
|
|
392
|
+
|
|
393
|
+
async def stop_writing(self, workspace_id: str) -> None:
|
|
394
|
+
"""Signal that the agent finished composing a response."""
|
|
395
|
+
await self._request("POST", f"/workspaces/{workspace_id}/writing/stop")
|
|
396
|
+
|
|
385
397
|
# ------------------------------------------------------------------
|
|
386
398
|
# Lifecycle
|
|
387
399
|
# ------------------------------------------------------------------
|