dao-ai 0.0.19__tar.gz → 0.0.20__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.
- {dao_ai-0.0.19 → dao_ai-0.0.20}/PKG-INFO +1 -1
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/quick_serve_restaurant/quick-serve-restaurant.yaml +5 -11
- {dao_ai-0.0.19 → dao_ai-0.0.20}/pyproject.toml +1 -1
- {dao_ai-0.0.19 → dao_ai-0.0.20}/schemas/model_config_schema.json +79 -1
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/config.py +2 -1
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/guardrails.py +2 -2
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/memory/postgres.py +1 -132
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/tools/human_in_the_loop.py +5 -1
- dao_ai-0.0.20/src/dao_ai/tools/unity_catalog.py +365 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/conftest.py +1 -4
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_mcp.py +19 -3
- dao_ai-0.0.20/tests/dao_ai/test_unity_catalog.py +246 -0
- dao_ai-0.0.19/src/dao_ai/tools/unity_catalog.py +0 -50
- {dao_ai-0.0.19 → dao_ai-0.0.20}/.gitignore +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/.python-version +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/CHANGELOG.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/CONTRIBUTING.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/LICENSE +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/Makefile +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/README.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/Makefile +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/REFACTORING_SUMMARY.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/base-environment-serverless.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/demo_docs/BRAND_REP_DEMO_SUMMARY.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/demo_docs/demo_scripts/brand_rep_product_education_demo.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/demo_docs/demo_scripts/store_associate_ai_assistant_demo.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/demo_docs/demo_scripts/store_manager_alert_response_demo.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/development_workflows.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/.gitkeep +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/Makefile +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/agent_implementation.mmd +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/agent_tools_architecture.mmd +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/agents-and-tools/agent-troubleshooting.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-best-practices.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-development-patterns.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-performance.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-quickstart.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/agents-and-tools/ai-agents.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/agents-and-tools/overview.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/agents-and-tools/references/agent-reference.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/agents-and-tools/references/tools-reference.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/applications/streamlit-app.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/architecture/overview.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/architecture.mmd +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/architecture.png +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/customer_preparation_guide.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/databricks_integration.mmd +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/deployment/production.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/development/contributing.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/employee_tools_guide.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/getting-started/installation.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/getting-started/mkdocs-quickstart.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/getting-started/quick-start.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/index.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/mkdocs.yml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/scenario_1_architecture.mmd +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/scenario_1_flow.mmd +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/setup-docs.sh +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/task_assignment_workflow_guide.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/docs/tools/overview.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/examples/customer_preparation_workflow.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/examples/task_assignment_workflow.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/load-env.sh +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/CSS_REFACTORING_SUMMARY.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/DEMO_CONTROLS_RESTORED.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/DEMO_IMPLEMENTATION_SUMMARY.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/DEMO_QUICK_START.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/Dockerfile +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/HOMEPAGE_README.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/Makefile +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/README.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/app.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/app.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/backup_homepage.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/chat.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/enhanced_charts.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/enhanced_navigation.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/associate_homepage.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/dashboard_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/my_tasks_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/performance_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/products_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/schedule_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/chat_integration.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/kpi_summary.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/notifications.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/homepage.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/alerts_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/analytics_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/dashboard_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/demo_alerts.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/inventory_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/manager_homepage.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/operations_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/team_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/ai_insights_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/executive_dashboard_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/geographical_analysis_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/performance_metrics_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/strategic_insights_tab.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/vp_homepage.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/metrics.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/navigation.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/oldhomepage.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/components/styles.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/config.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/demo_docs/BRAND_REP_DEMO_SUMMARY.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/demo_docs/comprehensive_demo_script.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/brand_rep_product_education_demo.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/store_associate_ai_assistant_demo.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/store_manager_alert_response_demo.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/dev/README.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/dev/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/dev/components/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/dev/components/dashboard_card.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/dev/demo_alerts.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/dev/examples/sample_dashboard.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/pages/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/pages/component_showcase.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/pages/dev_playground.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/pages/playground.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/pages_wip/daily_operations.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/pages_wip/inventory.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_schedule.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_tasks.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/pages_wip/orders.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/pages_wip/products_promotions.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/pages_wip/staff.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/pages_wip/team_insights.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/pyproject.toml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/requirements.txt +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/static/css/style.css +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/styles/README.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/styles/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/styles/base.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/styles/components.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/styles/dashboard.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/styles/homepage.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/styles/theme.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/test_vip_notification.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/tests/test_calculations.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/utils/config.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/utils/database.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/utils/model_serving.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app/utils/store_context.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/Makefile +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/README.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/app.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_components.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_components_enhanced.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_styles.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin_styles.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/TAILADMIN_README.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/homepage_tailadmin.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/tailadmin_demo.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/tailadmin_implementation_guide.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/test_vp_dashboard.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/vp_dashboard_enhanced.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/vp_dashboard_tailadmin.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/components_demo.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/homepage.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/implementation_guide.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/vp_dashboard_clean.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/vp_dashboard_enhanced.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pyproject.toml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/test_imports.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/tests/.gitkeep +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/tests/README.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/tests/images/doritos_upc.png +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/tests/images/lays_upc.png +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/tests/manager_demo_script.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/tests/notebook_vector_search_test.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/apps/dais2025/store-app/tests/test_vector_search_integration.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/dais2025/model_config_dais.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/examples/deep_research.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/examples/executive_assistant.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/examples/genie.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/examples/genie_and_vector_search.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/examples/human_in_the_loop.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/examples/jira.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/examples/mcp.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/examples/minimal.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/examples/reservations.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/hardware_store/supervisor.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/hardware_store/supervisor_postgres.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/hardware_store/swarm.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/config/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/appointments.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/appointments_data.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/brand_rep_demo_data.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/brand_rep_demo_queries.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/brand_rep_demo_tables.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/brand_rep_demo_validation.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/customers.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/customers_data.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/dim_stores.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/dim_stores_data.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/employee_performance.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/employee_performance_data.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/employee_tasks.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/employee_tasks_data.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/inventory.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/inventory_data.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/managers.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/managers_data.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/product_data.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/products.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/dais2025/task_assignments.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/hardware_store/inventory.snappy.parquet +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/hardware_store/inventory.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/hardware_store/products.snappy.parquet +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/hardware_store/products.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/quick_serve_restaurant/fulfil_item_orders.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/quick_serve_restaurant/items_description.csv +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/quick_serve_restaurant/items_description.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/quick_serve_restaurant/items_raw.csv +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/quick_serve_restaurant/items_raw.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/quick_serve_restaurant/orders_raw.csv +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/data/quick_serve_restaurant/orders_raw.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/databricks.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/docs/genie.png +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/docs/hardware_store/README.md +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/docs/hardware_store/retail_supervisor.png +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/docs/hardware_store/retail_swarm.png +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/docs/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/docs/quick_serve_restaurant/quick-serve-restaurant.png +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/environment.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/examples/dais2025/examples.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/examples/deep_research/examples.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/examples/executive_assistant/examples.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/examples/hardware_store/examples.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/examples/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/examples/quick_serve_restaurant/examples.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/dais2025/extract_store_numbers.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/dais2025/find_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/dais2025/find_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/dais2025/find_product_by_sku.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/dais2025/find_product_by_upc.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/dais2025/find_store_by_number.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/dais2025/find_store_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/dais2025/find_store_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/hardware_store/find_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/hardware_store/find_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/hardware_store/find_product_by_sku.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/hardware_store/find_product_by_upc.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/hardware_store/find_store_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/hardware_store/find_store_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/quick_serve_restaurant/insert_coffee_order.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/quick_serve_restaurant/lookup_items_by_descriptions.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/quick_serve_restaurant/match_historical_item_order_by_date.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/functions/quick_serve_restaurant/match_item_by_description_and_price.sql +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/notebooks/01_ingest_and_transform.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/notebooks/02_provision_vector_search.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/notebooks/03_generate_evaluation_data.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/notebooks/04_unity_catalog_tools.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/notebooks/05_agent_as_code_driver.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/notebooks/06_run_evaluation.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/notebooks/08_run_examples.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/notebooks/09_evaluate_inferences.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/notebooks/99_scratchpad.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/notebooks/INVESTech.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/requirements.txt +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/schemas/bundle_config_schema.json +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dais2025/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dais2025/models.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dais2025/tools/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dais2025/tools/customer.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dais2025/tools/employee.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dais2025/tools/executive.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dais2025/tools/genie.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dais2025/tools/inventory.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dais2025/tools/models.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dais2025/tools/store.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/agent_as_code.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/catalog.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/chat_models.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/cli.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/graph.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/hooks/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/hooks/core.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/memory/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/memory/base.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/memory/core.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/messages.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/models.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/nodes.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/prompts.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/providers/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/providers/base.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/providers/databricks.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/state.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/tools/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/tools/agent.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/tools/core.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/tools/genie.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/tools/mcp.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/tools/python.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/tools/time.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/tools/vector_search.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/types.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/utils.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/dao_ai/vector_search.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/hardware_store/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/hardware_store/hooks.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/hardware_store/tools.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/quick_serve_restaurant/__init__.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/src/quick_serve_restaurant/tools.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/config/test_model_config.yaml +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_catalog.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_chat_history.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_config.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_databricks.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_function_parsing.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_hooks.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_inference.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_inference_integration.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_messages.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_models.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_postgres_integration.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_state.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_summarization_inference.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_tools.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_types.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_utils.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/test_vector_search.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/dao_ai/weather_server_mcp.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/hardware_store/.gitkeep +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/hardware_store/test_graph.py +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/images/doritos_upc.png +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/images/lays_upc.png +0 -0
- {dao_ai-0.0.19 → dao_ai-0.0.20}/tests/quick_serve_restaurant/.gitkeep +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dao-ai
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.20
|
|
4
4
|
Summary: DAO AI: A modular, multi-agent orchestration framework for complex AI workflows. Supports agent handoff, tool integration, and dynamic configuration via YAML.
|
|
5
5
|
Project-URL: Homepage, https://github.com/natefleming/dao-ai
|
|
6
6
|
Project-URL: Documentation, https://natefleming.github.io/dao-ai
|
|
@@ -225,11 +225,15 @@ retrievers:
|
|
|
225
225
|
|
|
226
226
|
tools:
|
|
227
227
|
|
|
228
|
-
insert_coffee_order_uc_tool: &
|
|
228
|
+
insert_coffee_order_uc_tool: &insert_coffee_order_tool
|
|
229
229
|
name: insert_coffee_order_tool_uc
|
|
230
230
|
function:
|
|
231
231
|
type: unity_catalog
|
|
232
232
|
<<: *insert_coffee_order
|
|
233
|
+
partial_args:
|
|
234
|
+
host: *workspace_host_var
|
|
235
|
+
client_id: *client_id_var
|
|
236
|
+
client_secret: *client_secret_var
|
|
233
237
|
|
|
234
238
|
match_item_by_description_and_price_tool: &match_item_by_description_and_price_tool
|
|
235
239
|
name: match_item_by_description_and_price_uc
|
|
@@ -249,16 +253,6 @@ tools:
|
|
|
249
253
|
type: unity_catalog
|
|
250
254
|
<<: *lookup_items_by_descriptions
|
|
251
255
|
|
|
252
|
-
insert_coffee_order_tool: &insert_coffee_order_tool
|
|
253
|
-
name: insert_coffee_order
|
|
254
|
-
function:
|
|
255
|
-
type: factory
|
|
256
|
-
name: quick_serve_restaurant.tools.insert_coffee_order_tool
|
|
257
|
-
args:
|
|
258
|
-
tool: *insert_coffee_order_uc_tool
|
|
259
|
-
host: *workspace_host_var
|
|
260
|
-
client_id: *client_id_var
|
|
261
|
-
client_secret: *client_secret_var
|
|
262
256
|
|
|
263
257
|
current_time_tool: ¤t_time_tool
|
|
264
258
|
name: current_time
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dao-ai"
|
|
7
|
-
version = "0.0.
|
|
7
|
+
version = "0.0.20"
|
|
8
8
|
description = "DAO AI: A modular, multi-agent orchestration framework for complex AI workflows. Supports agent handoff, tool integration, and dynamic configuration via YAML."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
@@ -664,6 +664,18 @@
|
|
|
664
664
|
},
|
|
665
665
|
"DatabaseModel": {
|
|
666
666
|
"properties": {
|
|
667
|
+
"on_behalf_of_user": {
|
|
668
|
+
"anyOf": [
|
|
669
|
+
{
|
|
670
|
+
"type": "boolean"
|
|
671
|
+
},
|
|
672
|
+
{
|
|
673
|
+
"type": "null"
|
|
674
|
+
}
|
|
675
|
+
],
|
|
676
|
+
"default": false,
|
|
677
|
+
"title": "On Behalf Of User"
|
|
678
|
+
},
|
|
667
679
|
"name": {
|
|
668
680
|
"title": "Name",
|
|
669
681
|
"type": "string"
|
|
@@ -1214,7 +1226,34 @@
|
|
|
1214
1226
|
"args": {
|
|
1215
1227
|
"anyOf": [
|
|
1216
1228
|
{
|
|
1217
|
-
"additionalProperties":
|
|
1229
|
+
"additionalProperties": {
|
|
1230
|
+
"anyOf": [
|
|
1231
|
+
{
|
|
1232
|
+
"$ref": "#/$defs/CompositeVariableModel"
|
|
1233
|
+
},
|
|
1234
|
+
{
|
|
1235
|
+
"$ref": "#/$defs/EnvironmentVariableModel"
|
|
1236
|
+
},
|
|
1237
|
+
{
|
|
1238
|
+
"$ref": "#/$defs/SecretVariableModel"
|
|
1239
|
+
},
|
|
1240
|
+
{
|
|
1241
|
+
"$ref": "#/$defs/PrimitiveVariableModel"
|
|
1242
|
+
},
|
|
1243
|
+
{
|
|
1244
|
+
"type": "string"
|
|
1245
|
+
},
|
|
1246
|
+
{
|
|
1247
|
+
"type": "integer"
|
|
1248
|
+
},
|
|
1249
|
+
{
|
|
1250
|
+
"type": "number"
|
|
1251
|
+
},
|
|
1252
|
+
{
|
|
1253
|
+
"type": "boolean"
|
|
1254
|
+
}
|
|
1255
|
+
]
|
|
1256
|
+
},
|
|
1218
1257
|
"type": "object"
|
|
1219
1258
|
},
|
|
1220
1259
|
{
|
|
@@ -2517,6 +2556,45 @@
|
|
|
2517
2556
|
}
|
|
2518
2557
|
],
|
|
2519
2558
|
"default": null
|
|
2559
|
+
},
|
|
2560
|
+
"partial_args": {
|
|
2561
|
+
"anyOf": [
|
|
2562
|
+
{
|
|
2563
|
+
"additionalProperties": {
|
|
2564
|
+
"anyOf": [
|
|
2565
|
+
{
|
|
2566
|
+
"$ref": "#/$defs/CompositeVariableModel"
|
|
2567
|
+
},
|
|
2568
|
+
{
|
|
2569
|
+
"$ref": "#/$defs/EnvironmentVariableModel"
|
|
2570
|
+
},
|
|
2571
|
+
{
|
|
2572
|
+
"$ref": "#/$defs/SecretVariableModel"
|
|
2573
|
+
},
|
|
2574
|
+
{
|
|
2575
|
+
"$ref": "#/$defs/PrimitiveVariableModel"
|
|
2576
|
+
},
|
|
2577
|
+
{
|
|
2578
|
+
"type": "string"
|
|
2579
|
+
},
|
|
2580
|
+
{
|
|
2581
|
+
"type": "integer"
|
|
2582
|
+
},
|
|
2583
|
+
{
|
|
2584
|
+
"type": "number"
|
|
2585
|
+
},
|
|
2586
|
+
{
|
|
2587
|
+
"type": "boolean"
|
|
2588
|
+
}
|
|
2589
|
+
]
|
|
2590
|
+
},
|
|
2591
|
+
"type": "object"
|
|
2592
|
+
},
|
|
2593
|
+
{
|
|
2594
|
+
"type": "null"
|
|
2595
|
+
}
|
|
2596
|
+
],
|
|
2597
|
+
"title": "Partial Args"
|
|
2520
2598
|
}
|
|
2521
2599
|
},
|
|
2522
2600
|
"required": [
|
|
@@ -867,7 +867,7 @@ class PythonFunctionModel(BaseFunctionModel, HasFullName):
|
|
|
867
867
|
|
|
868
868
|
class FactoryFunctionModel(BaseFunctionModel, HasFullName):
|
|
869
869
|
model_config = ConfigDict(use_enum_values=True, extra="forbid")
|
|
870
|
-
args: Optional[dict[str,
|
|
870
|
+
args: Optional[dict[str, AnyVariable]] = Field(default_factory=dict)
|
|
871
871
|
type: Literal[FunctionType.FACTORY] = FunctionType.FACTORY
|
|
872
872
|
|
|
873
873
|
@property
|
|
@@ -963,6 +963,7 @@ class McpFunctionModel(BaseFunctionModel, HasFullName):
|
|
|
963
963
|
class UnityCatalogFunctionModel(BaseFunctionModel, HasFullName):
|
|
964
964
|
model_config = ConfigDict(use_enum_values=True, extra="forbid")
|
|
965
965
|
schema_model: Optional[SchemaModel] = Field(default=None, alias="schema")
|
|
966
|
+
partial_args: Optional[dict[str, AnyVariable]] = Field(default_factory=dict)
|
|
966
967
|
type: Literal[FunctionType.UNITY_CATALOG] = FunctionType.UNITY_CATALOG
|
|
967
968
|
|
|
968
969
|
@property
|
|
@@ -87,12 +87,12 @@ def judge_node(guardrails: GuardrailModel) -> RunnableLike:
|
|
|
87
87
|
)
|
|
88
88
|
|
|
89
89
|
if eval_result["score"]:
|
|
90
|
-
logger.debug("
|
|
90
|
+
logger.debug("Response approved by judge")
|
|
91
91
|
logger.debug(f"Judge's comment: {eval_result['comment']}")
|
|
92
92
|
return
|
|
93
93
|
else:
|
|
94
94
|
# Otherwise, return the judge's critique as a new user message
|
|
95
|
-
logger.warning("
|
|
95
|
+
logger.warning("Judge requested improvements")
|
|
96
96
|
comment: str = eval_result["comment"]
|
|
97
97
|
logger.warning(f"Judge's critique: {comment}")
|
|
98
98
|
content: str = "\n".join([human_message.content, comment])
|
|
@@ -20,137 +20,6 @@ from dao_ai.memory.base import (
|
|
|
20
20
|
)
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
class PatchedAsyncPostgresStore(AsyncPostgresStore):
|
|
24
|
-
"""
|
|
25
|
-
Patched version of AsyncPostgresStore that properly handles event loop initialization
|
|
26
|
-
and task lifecycle management.
|
|
27
|
-
|
|
28
|
-
The issues occur because:
|
|
29
|
-
1. AsyncBatchedBaseStore.__init__ calls asyncio.get_running_loop() and fails if no event loop is running
|
|
30
|
-
2. The background _task can complete/fail, causing assertions in asearch/other methods to fail
|
|
31
|
-
3. Destructor tries to access _task even when it doesn't exist
|
|
32
|
-
|
|
33
|
-
This patch ensures proper initialization and handles task lifecycle robustly.
|
|
34
|
-
"""
|
|
35
|
-
|
|
36
|
-
def __init__(self, *args, **kwargs):
|
|
37
|
-
# Ensure we have a running event loop before calling super().__init__()
|
|
38
|
-
loop = None
|
|
39
|
-
try:
|
|
40
|
-
loop = asyncio.get_running_loop()
|
|
41
|
-
except RuntimeError:
|
|
42
|
-
# No running loop - create one temporarily for initialization
|
|
43
|
-
loop = asyncio.new_event_loop()
|
|
44
|
-
asyncio.set_event_loop(loop)
|
|
45
|
-
|
|
46
|
-
try:
|
|
47
|
-
super().__init__(*args, **kwargs)
|
|
48
|
-
except Exception as e:
|
|
49
|
-
# If parent initialization fails, ensure _task is at least defined
|
|
50
|
-
if not hasattr(self, "_task"):
|
|
51
|
-
self._task = None
|
|
52
|
-
logger.warning(f"AsyncPostgresStore initialization failed: {e}")
|
|
53
|
-
raise
|
|
54
|
-
|
|
55
|
-
def _ensure_task_running(self):
|
|
56
|
-
"""
|
|
57
|
-
Ensure the background task is running. Recreate it if necessary.
|
|
58
|
-
"""
|
|
59
|
-
if not hasattr(self, "_task") or self._task is None:
|
|
60
|
-
logger.error("AsyncPostgresStore task not initialized")
|
|
61
|
-
raise RuntimeError("Store task not properly initialized")
|
|
62
|
-
|
|
63
|
-
if self._task.done():
|
|
64
|
-
logger.warning(
|
|
65
|
-
"AsyncPostgresStore background task completed, attempting to restart"
|
|
66
|
-
)
|
|
67
|
-
# Try to get the task exception for debugging
|
|
68
|
-
try:
|
|
69
|
-
exception = self._task.exception()
|
|
70
|
-
if exception:
|
|
71
|
-
logger.error(f"Background task failed with: {exception}")
|
|
72
|
-
else:
|
|
73
|
-
logger.info("Background task completed normally")
|
|
74
|
-
except Exception as e:
|
|
75
|
-
logger.warning(f"Could not determine task completion reason: {e}")
|
|
76
|
-
|
|
77
|
-
# Try to restart the task
|
|
78
|
-
try:
|
|
79
|
-
import weakref
|
|
80
|
-
|
|
81
|
-
from langgraph.store.base.batch import _run
|
|
82
|
-
|
|
83
|
-
self._task = self._loop.create_task(
|
|
84
|
-
_run(self._aqueue, weakref.ref(self))
|
|
85
|
-
)
|
|
86
|
-
logger.info("Successfully restarted AsyncPostgresStore background task")
|
|
87
|
-
except Exception as e:
|
|
88
|
-
logger.error(f"Failed to restart background task: {e}")
|
|
89
|
-
raise RuntimeError(
|
|
90
|
-
f"Store background task failed and could not be restarted: {e}"
|
|
91
|
-
)
|
|
92
|
-
|
|
93
|
-
async def asearch(
|
|
94
|
-
self,
|
|
95
|
-
namespace_prefix,
|
|
96
|
-
/,
|
|
97
|
-
*,
|
|
98
|
-
query=None,
|
|
99
|
-
filter=None,
|
|
100
|
-
limit=10,
|
|
101
|
-
offset=0,
|
|
102
|
-
refresh_ttl=None,
|
|
103
|
-
):
|
|
104
|
-
"""
|
|
105
|
-
Override asearch to handle task lifecycle issues gracefully.
|
|
106
|
-
"""
|
|
107
|
-
self._ensure_task_running()
|
|
108
|
-
|
|
109
|
-
# Call parent implementation if task is healthy
|
|
110
|
-
return await super().asearch(
|
|
111
|
-
namespace_prefix,
|
|
112
|
-
query=query,
|
|
113
|
-
filter=filter,
|
|
114
|
-
limit=limit,
|
|
115
|
-
offset=offset,
|
|
116
|
-
refresh_ttl=refresh_ttl,
|
|
117
|
-
)
|
|
118
|
-
|
|
119
|
-
async def aget(self, namespace, key, /, *, refresh_ttl=None):
|
|
120
|
-
"""Override aget with task lifecycle management."""
|
|
121
|
-
self._ensure_task_running()
|
|
122
|
-
return await super().aget(namespace, key, refresh_ttl=refresh_ttl)
|
|
123
|
-
|
|
124
|
-
async def aput(self, namespace, key, value, /, *, refresh_ttl=None):
|
|
125
|
-
"""Override aput with task lifecycle management."""
|
|
126
|
-
self._ensure_task_running()
|
|
127
|
-
return await super().aput(namespace, key, value, refresh_ttl=refresh_ttl)
|
|
128
|
-
|
|
129
|
-
async def adelete(self, namespace, key):
|
|
130
|
-
"""Override adelete with task lifecycle management."""
|
|
131
|
-
self._ensure_task_running()
|
|
132
|
-
return await super().adelete(namespace, key)
|
|
133
|
-
|
|
134
|
-
async def alist_namespaces(self, *, prefix=None):
|
|
135
|
-
"""Override alist_namespaces with task lifecycle management."""
|
|
136
|
-
self._ensure_task_running()
|
|
137
|
-
return await super().alist_namespaces(prefix=prefix)
|
|
138
|
-
|
|
139
|
-
def __del__(self):
|
|
140
|
-
"""
|
|
141
|
-
Override destructor to handle missing _task attribute gracefully.
|
|
142
|
-
"""
|
|
143
|
-
try:
|
|
144
|
-
# Only try to cancel if _task exists and is not None
|
|
145
|
-
if hasattr(self, "_task") and self._task is not None:
|
|
146
|
-
if not self._task.done():
|
|
147
|
-
self._task.cancel()
|
|
148
|
-
except Exception as e:
|
|
149
|
-
# Log but don't raise - destructors should not raise exceptions
|
|
150
|
-
logger.debug(f"AsyncPostgresStore destructor cleanup: {e}")
|
|
151
|
-
pass
|
|
152
|
-
|
|
153
|
-
|
|
154
23
|
class AsyncPostgresPoolManager:
|
|
155
24
|
_pools: dict[str, AsyncConnectionPool] = {}
|
|
156
25
|
_lock: asyncio.Lock = asyncio.Lock()
|
|
@@ -251,7 +120,7 @@ class AsyncPostgresStoreManager(StoreManagerBase):
|
|
|
251
120
|
)
|
|
252
121
|
|
|
253
122
|
# Create store with the shared pool (using patched version)
|
|
254
|
-
self._store =
|
|
123
|
+
self._store = AsyncPostgresStore(conn=self.pool)
|
|
255
124
|
|
|
256
125
|
await self._store.setup()
|
|
257
126
|
|
|
@@ -87,7 +87,11 @@ def as_human_in_the_loop(
|
|
|
87
87
|
if isinstance(function, BaseFunctionModel):
|
|
88
88
|
human_in_the_loop: HumanInTheLoopModel | None = function.human_in_the_loop
|
|
89
89
|
if human_in_the_loop:
|
|
90
|
-
|
|
90
|
+
# Get tool name safely - handle RunnableBinding objects
|
|
91
|
+
tool_name = getattr(tool, "name", None) or getattr(
|
|
92
|
+
getattr(tool, "bound", None), "name", "unknown_tool"
|
|
93
|
+
)
|
|
94
|
+
logger.debug(f"Adding human-in-the-loop to tool: {tool_name}")
|
|
91
95
|
tool = add_human_in_the_loop(
|
|
92
96
|
tool=tool,
|
|
93
97
|
interrupt_config=human_in_the_loop.interupt_config,
|