dao-ai 0.0.20__tar.gz → 0.0.22__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.20 → dao_ai-0.0.22}/PKG-INFO +3 -3
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/executive_assistant.yaml +1 -5
- dao_ai-0.0.22/config/examples/genie_with_conversion_id.yaml +151 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/hardware_store/supervisor_postgres.yaml +21 -20
- {dao_ai-0.0.20 → dao_ai-0.0.22}/databricks.yaml +11 -4
- {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/01_ingest_and_transform.py +33 -2
- {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/02_provision_vector_search.py +31 -3
- dao_ai-0.0.22/notebooks/03_provision_lakebase.py +85 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/04_unity_catalog_tools.py +31 -2
- dao_ai-0.0.20/notebooks/03_generate_evaluation_data.py → dao_ai-0.0.22/notebooks/06_generate_evaluation_data.py +31 -2
- dao_ai-0.0.20/notebooks/06_run_evaluation.py → dao_ai-0.0.22/notebooks/07_run_evaluation.py +31 -5
- {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/09_evaluate_inferences.py +34 -3
- {dao_ai-0.0.20 → dao_ai-0.0.22}/pyproject.toml +3 -3
- {dao_ai-0.0.20 → dao_ai-0.0.22}/requirements.txt +2 -2
- {dao_ai-0.0.20 → dao_ai-0.0.22}/schemas/bundle_config_schema.json +2130 -290
- {dao_ai-0.0.20 → dao_ai-0.0.22}/schemas/model_config_schema.json +64 -31
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/config.py +114 -17
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/graph.py +3 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/memory/core.py +10 -6
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/memory/postgres.py +102 -33
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/models.py +137 -2
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/providers/databricks.py +282 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/state.py +3 -0
- dao_ai-0.0.22/src/dao_ai/tools/genie.py +389 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/utils.py +4 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/conftest.py +1 -0
- dao_ai-0.0.22/tests/dao_ai/test_databricks.py +1004 -0
- dao_ai-0.0.22/tests/dao_ai/test_genie.py +982 -0
- dao_ai-0.0.22/tests/dao_ai/test_genie_conversation_ids_in_outputs.py +327 -0
- dao_ai-0.0.22/tests/dao_ai/test_genie_databricks_integration.py +274 -0
- dao_ai-0.0.20/src/dao_ai/tools/genie.py +0 -77
- dao_ai-0.0.20/tests/dao_ai/test_databricks.py +0 -308
- {dao_ai-0.0.20 → dao_ai-0.0.22}/.gitignore +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/.python-version +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/CHANGELOG.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/CONTRIBUTING.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/LICENSE +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/Makefile +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/README.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/Makefile +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/REFACTORING_SUMMARY.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/base-environment-serverless.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/demo_docs/BRAND_REP_DEMO_SUMMARY.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/demo_docs/demo_scripts/brand_rep_product_education_demo.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/demo_docs/demo_scripts/store_associate_ai_assistant_demo.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/demo_docs/demo_scripts/store_manager_alert_response_demo.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/development_workflows.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/.gitkeep +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/Makefile +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agent_implementation.mmd +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agent_tools_architecture.mmd +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/agent-troubleshooting.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-best-practices.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-development-patterns.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-performance.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-quickstart.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/ai-agents.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/overview.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/references/agent-reference.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/references/tools-reference.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/applications/streamlit-app.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/architecture/overview.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/architecture.mmd +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/architecture.png +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/customer_preparation_guide.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/databricks_integration.mmd +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/deployment/production.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/development/contributing.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/employee_tools_guide.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/getting-started/installation.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/getting-started/mkdocs-quickstart.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/getting-started/quick-start.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/index.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/mkdocs.yml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/scenario_1_architecture.mmd +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/scenario_1_flow.mmd +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/setup-docs.sh +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/task_assignment_workflow_guide.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/tools/overview.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/examples/customer_preparation_workflow.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/examples/task_assignment_workflow.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/load-env.sh +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/CSS_REFACTORING_SUMMARY.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/DEMO_CONTROLS_RESTORED.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/DEMO_IMPLEMENTATION_SUMMARY.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/DEMO_QUICK_START.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/Dockerfile +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/HOMEPAGE_README.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/Makefile +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/README.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/app.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/app.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/backup_homepage.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/chat.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/enhanced_charts.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/enhanced_navigation.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/associate_homepage.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/dashboard_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/my_tasks_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/performance_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/products_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/schedule_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/chat_integration.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/kpi_summary.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/notifications.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/homepage.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/alerts_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/analytics_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/dashboard_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/demo_alerts.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/inventory_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/manager_homepage.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/operations_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/team_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/ai_insights_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/executive_dashboard_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/geographical_analysis_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/performance_metrics_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/strategic_insights_tab.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/vp_homepage.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/metrics.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/navigation.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/oldhomepage.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/styles.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/config.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/demo_docs/BRAND_REP_DEMO_SUMMARY.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/demo_docs/comprehensive_demo_script.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/brand_rep_product_education_demo.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/store_associate_ai_assistant_demo.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/store_manager_alert_response_demo.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/dev/README.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/dev/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/dev/components/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/dev/components/dashboard_card.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/dev/demo_alerts.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/dev/examples/sample_dashboard.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages/component_showcase.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages/dev_playground.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages/playground.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/daily_operations.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/inventory.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_schedule.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_tasks.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/orders.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/products_promotions.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/staff.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/team_insights.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pyproject.toml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/requirements.txt +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/static/css/style.css +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/README.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/base.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/components.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/dashboard.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/homepage.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/theme.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/test_vip_notification.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/tests/test_calculations.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/utils/config.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/utils/database.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/utils/model_serving.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/utils/store_context.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/Makefile +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/README.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/app.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_components.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_components_enhanced.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_styles.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin_styles.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/TAILADMIN_README.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/homepage_tailadmin.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/tailadmin_demo.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/tailadmin_implementation_guide.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/test_vp_dashboard.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/vp_dashboard_enhanced.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/vp_dashboard_tailadmin.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/components_demo.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/homepage.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/implementation_guide.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/vp_dashboard_clean.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/vp_dashboard_enhanced.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pyproject.toml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/test_imports.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/.gitkeep +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/README.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/images/doritos_upc.png +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/images/lays_upc.png +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/manager_demo_script.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/notebook_vector_search_test.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/test_vector_search_integration.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/dais2025/model_config_dais.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/deep_research.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/genie.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/genie_and_vector_search.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/human_in_the_loop.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/jira.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/mcp.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/minimal.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/reservations.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/hardware_store/supervisor.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/hardware_store/swarm.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/config/quick_serve_restaurant/quick-serve-restaurant.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/appointments.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/appointments_data.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/brand_rep_demo_data.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/brand_rep_demo_queries.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/brand_rep_demo_tables.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/brand_rep_demo_validation.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/customers.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/customers_data.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/dim_stores.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/dim_stores_data.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/employee_performance.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/employee_performance_data.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/employee_tasks.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/employee_tasks_data.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/inventory.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/inventory_data.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/managers.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/managers_data.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/product_data.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/products.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/task_assignments.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/hardware_store/inventory.snappy.parquet +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/hardware_store/inventory.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/hardware_store/products.snappy.parquet +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/hardware_store/products.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/fulfil_item_orders.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/items_description.csv +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/items_description.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/items_raw.csv +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/items_raw.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/orders_raw.csv +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/orders_raw.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/docs/genie.png +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/docs/hardware_store/README.md +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/docs/hardware_store/retail_supervisor.png +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/docs/hardware_store/retail_swarm.png +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/docs/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/docs/quick_serve_restaurant/quick-serve-restaurant.png +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/environment.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/examples/dais2025/examples.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/examples/deep_research/examples.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/examples/executive_assistant/examples.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/examples/hardware_store/examples.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/examples/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/examples/quick_serve_restaurant/examples.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/extract_store_numbers.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_product_by_sku.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_product_by_upc.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_store_by_number.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_store_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_store_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/hardware_store/find_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/hardware_store/find_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/hardware_store/find_product_by_sku.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/hardware_store/find_product_by_upc.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/hardware_store/find_store_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/hardware_store/find_store_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/quick_serve_restaurant/insert_coffee_order.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/quick_serve_restaurant/lookup_items_by_descriptions.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/quick_serve_restaurant/match_historical_item_order_by_date.sql +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/quick_serve_restaurant/match_item_by_description_and_price.sql +0 -0
- /dao_ai-0.0.20/notebooks/05_agent_as_code_driver.py → /dao_ai-0.0.22/notebooks/05_deploy_agent.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/08_run_examples.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/99_scratchpad.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/INVESTech.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/models.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/customer.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/employee.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/executive.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/genie.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/inventory.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/models.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/store.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/agent_as_code.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/catalog.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/chat_models.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/cli.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/guardrails.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/hooks/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/hooks/core.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/memory/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/memory/base.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/messages.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/nodes.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/prompts.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/providers/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/providers/base.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/agent.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/core.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/human_in_the_loop.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/mcp.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/python.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/time.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/unity_catalog.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/vector_search.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/types.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/vector_search.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/hardware_store/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/hardware_store/hooks.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/hardware_store/tools.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/quick_serve_restaurant/__init__.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/src/quick_serve_restaurant/tools.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/config/test_model_config.yaml +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_catalog.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_chat_history.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_config.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_function_parsing.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_hooks.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_inference.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_inference_integration.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_mcp.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_messages.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_models.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_postgres_integration.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_state.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_summarization_inference.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_tools.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_types.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_unity_catalog.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_utils.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_vector_search.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/weather_server_mcp.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/hardware_store/.gitkeep +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/hardware_store/test_graph.py +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/images/doritos_upc.png +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/images/lays_upc.png +0 -0
- {dao_ai-0.0.20 → dao_ai-0.0.22}/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.22
|
|
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
|
|
@@ -24,9 +24,9 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
|
24
24
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
25
|
Classifier: Topic :: System :: Distributed Computing
|
|
26
26
|
Requires-Python: >=3.12
|
|
27
|
-
Requires-Dist: databricks-agents>=1.6.
|
|
27
|
+
Requires-Dist: databricks-agents>=1.6.1
|
|
28
28
|
Requires-Dist: databricks-langchain>=0.8.0
|
|
29
|
-
Requires-Dist: databricks-sdk[openai]>=0.
|
|
29
|
+
Requires-Dist: databricks-sdk[openai]>=0.67.0
|
|
30
30
|
Requires-Dist: duckduckgo-search>=8.0.2
|
|
31
31
|
Requires-Dist: grandalf>=0.8
|
|
32
32
|
Requires-Dist: langchain-mcp-adapters>=0.1.10
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# yaml-language-server: $schema=../../schemas/model_config_schema.json
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
schemas:
|
|
5
|
+
retail_schema: &retail_schema
|
|
6
|
+
catalog_name: nfleming # Unity Catalog name
|
|
7
|
+
schema_name: retail_ai # Schema within the catalog
|
|
8
|
+
|
|
9
|
+
quick_serve_retaurant_schema: &quick_serve_retaurant_schema
|
|
10
|
+
catalog_name: retail_consumer_goods # Unity Catalog name
|
|
11
|
+
schema_name: quick_serve_restaurant # Schema within the catalog
|
|
12
|
+
|
|
13
|
+
resources:
|
|
14
|
+
llms:
|
|
15
|
+
# Primary LLM for general tasks
|
|
16
|
+
default_llm: &default_llm
|
|
17
|
+
name: databricks-claude-3-7-sonnet # Databricks serving endpoint name
|
|
18
|
+
temperature: 0.1 # Low temperature for consistent responses
|
|
19
|
+
max_tokens: 8192 # Maximum tokens per response
|
|
20
|
+
on_behalf_of_user: False
|
|
21
|
+
fallbacks: # Fallback LLMs in case of issues
|
|
22
|
+
- databricks-claude-sonnet-4
|
|
23
|
+
- databricks-meta-llama-3-3-70b-instruct
|
|
24
|
+
|
|
25
|
+
tables:
|
|
26
|
+
all:
|
|
27
|
+
schema: *quick_serve_retaurant_schema # Reference to schema defined above
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
functions:
|
|
31
|
+
all:
|
|
32
|
+
schema: *quick_serve_retaurant_schema
|
|
33
|
+
|
|
34
|
+
databases:
|
|
35
|
+
# PostgreSQL database for agent memory and checkpoints
|
|
36
|
+
retail_database: &retail_database
|
|
37
|
+
name: "retail-consumer-goods"
|
|
38
|
+
description: "Database for agent memory and checkpoints"
|
|
39
|
+
|
|
40
|
+
# Database connection parameters
|
|
41
|
+
# These can be set via environment variables or Databricks secrets
|
|
42
|
+
host:
|
|
43
|
+
default_value: localhost
|
|
44
|
+
options:
|
|
45
|
+
- env: PGHOST # Environment variable
|
|
46
|
+
- scope: retail_ai # Databricks secret scope
|
|
47
|
+
secret: PGHOST # Secret name
|
|
48
|
+
port:
|
|
49
|
+
default_value: 5432
|
|
50
|
+
options:
|
|
51
|
+
- env: PGPORT
|
|
52
|
+
- scope: retail_ai
|
|
53
|
+
secret: PGPORT
|
|
54
|
+
database:
|
|
55
|
+
default_value: databricks_postgres # Default database name
|
|
56
|
+
options:
|
|
57
|
+
- env: PGDATABASE
|
|
58
|
+
- scope: retail_ai
|
|
59
|
+
secret: PGDATABASE
|
|
60
|
+
|
|
61
|
+
client_id:
|
|
62
|
+
options:
|
|
63
|
+
- env: RETAIL_AI_DATABRICKS_CLIENT_ID # Service principal client ID
|
|
64
|
+
- scope: retail_ai
|
|
65
|
+
secret: RETAIL_AI_DATABRICKS_CLIENT_ID
|
|
66
|
+
client_secret:
|
|
67
|
+
options:
|
|
68
|
+
- env: RETAIL_AI_DATABRICKS_CLIENT_SECRET # Service principal secret
|
|
69
|
+
- scope: retail_ai
|
|
70
|
+
secret: RETAIL_AI_DATABRICKS_CLIENT_SECRET
|
|
71
|
+
workspace_host:
|
|
72
|
+
options:
|
|
73
|
+
- env: RETAIL_AI_DATABRICKS_HOST # Databricks workspace URL
|
|
74
|
+
- scope: retail_ai
|
|
75
|
+
secret: RETAIL_AI_DATABRICKS_HOST
|
|
76
|
+
|
|
77
|
+
genie_rooms:
|
|
78
|
+
# Genie space for retail data queries
|
|
79
|
+
retail_genie_room: &retail_genie_room
|
|
80
|
+
name: "Retail AI Genie Room" # Human-readable name
|
|
81
|
+
description: "Answer questions about quick serve restaurant, ingredients, inventory, processes and operations." # Description
|
|
82
|
+
space_id: 01f01c91f1f414d59daaefd2b7ec82ea # Databricks Genie space ID
|
|
83
|
+
on_behalf_of_user: false
|
|
84
|
+
|
|
85
|
+
memory: &memory
|
|
86
|
+
# Conversation checkpointing for state persistence
|
|
87
|
+
checkpointer:
|
|
88
|
+
name: default_checkpointer # Checkpointer identifier
|
|
89
|
+
type: postgres # Store type (memory or postgres)
|
|
90
|
+
#type: memory
|
|
91
|
+
database: *retail_database # Reference to database configuration
|
|
92
|
+
|
|
93
|
+
# Long-term memory store for agent context
|
|
94
|
+
store:
|
|
95
|
+
name: default_store # Store identifier
|
|
96
|
+
type: postgres # Store type (memory or postgres)
|
|
97
|
+
#type: memory
|
|
98
|
+
#embedding_model: *embedding_model # Model for semantic memory
|
|
99
|
+
#dims: 1536 # Embedding dimensions
|
|
100
|
+
database: *retail_database # Database for persistence (if needed)
|
|
101
|
+
namespace: "{user_id}"
|
|
102
|
+
|
|
103
|
+
tools:
|
|
104
|
+
genie_tool: &genie_tool
|
|
105
|
+
name: genie
|
|
106
|
+
function:
|
|
107
|
+
type: factory # Tool type: factory function
|
|
108
|
+
name: dao_ai.tools.create_genie_tool # Factory function path
|
|
109
|
+
args: # Arguments passed to factory
|
|
110
|
+
name: my_genie_tool
|
|
111
|
+
description: "Answer questions about quick serve restaurant, ingredients, inventory, processes and operations."
|
|
112
|
+
genie_room: *retail_genie_room # Reference to Genie room config
|
|
113
|
+
persist_conversation: true
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
agents:
|
|
117
|
+
genie: &genie
|
|
118
|
+
name: genie # Agent identifier
|
|
119
|
+
description: "Genie Agent"
|
|
120
|
+
model: *default_llm # Reference to LLM configuration
|
|
121
|
+
tools: # Tools available to this agent
|
|
122
|
+
- *genie_tool
|
|
123
|
+
prompt: | # System prompt defining agent behavior
|
|
124
|
+
Answer questions about quick serve restaurant, ingredients, inventory, processes and operations.
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
app:
|
|
128
|
+
name: genie_example # Application name
|
|
129
|
+
description: "Multi-agent system that talks to genie"
|
|
130
|
+
log_level: DEBUG # Logging level for the application
|
|
131
|
+
registered_model: # MLflow registered model configuration
|
|
132
|
+
schema: *retail_schema # Schema where model will be registered
|
|
133
|
+
name: retail_ai_agenie # Model name in MLflow registry
|
|
134
|
+
endpoint_name: retail_ai_genie # Model serving endpoint name
|
|
135
|
+
tags: # Tags for resource organization
|
|
136
|
+
business: rcg # Business unit identifier
|
|
137
|
+
streaming: true # Indicates streaming capabilities
|
|
138
|
+
permissions: # Model serving permissions
|
|
139
|
+
- principals: [users] # Grant access to all users
|
|
140
|
+
entitlements:
|
|
141
|
+
- CAN_QUERY # Full management permissions
|
|
142
|
+
agents: # List of agents included in the system
|
|
143
|
+
- *genie # Order management agent
|
|
144
|
+
|
|
145
|
+
orchestration: # Agent orchestration configuration
|
|
146
|
+
memory: *memory # Memory store for conversation context
|
|
147
|
+
swarm: # Supervisor orchestration pattern
|
|
148
|
+
model: *default_llm # LLM for routing decisions
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
@@ -194,29 +194,30 @@ resources:
|
|
|
194
194
|
databases:
|
|
195
195
|
# PostgreSQL database for agent memory and checkpoints
|
|
196
196
|
retail_database: &retail_database
|
|
197
|
-
name: "
|
|
197
|
+
name: "Retail and Consumer Goods Database"
|
|
198
|
+
instance_name: "retail-consumer-goods"
|
|
198
199
|
description: "Database for agent memory and checkpoints"
|
|
199
200
|
|
|
200
201
|
# Database connection parameters
|
|
201
202
|
# These can be set via environment variables or Databricks secrets
|
|
202
|
-
host:
|
|
203
|
-
default_value: localhost
|
|
204
|
-
options:
|
|
205
|
-
- env: PGHOST # Environment variable
|
|
206
|
-
- scope: retail_ai # Databricks secret scope
|
|
207
|
-
secret: PGHOST # Secret name
|
|
208
|
-
port:
|
|
209
|
-
default_value: 5432
|
|
210
|
-
options:
|
|
211
|
-
- env: PGPORT
|
|
212
|
-
- scope: retail_ai
|
|
213
|
-
secret: PGPORT
|
|
214
|
-
database:
|
|
215
|
-
default_value: databricks_postgres # Default database name
|
|
216
|
-
options:
|
|
217
|
-
- env: PGDATABASE
|
|
218
|
-
- scope: retail_ai
|
|
219
|
-
secret: PGDATABASE
|
|
203
|
+
# host:
|
|
204
|
+
# default_value: localhost
|
|
205
|
+
# options:
|
|
206
|
+
# - env: PGHOST # Environment variable
|
|
207
|
+
# - scope: retail_ai # Databricks secret scope
|
|
208
|
+
# secret: PGHOST # Secret name
|
|
209
|
+
# port:
|
|
210
|
+
# default_value: 5432
|
|
211
|
+
# options:
|
|
212
|
+
# - env: PGPORT
|
|
213
|
+
# - scope: retail_ai
|
|
214
|
+
# secret: PGPORT
|
|
215
|
+
# database:
|
|
216
|
+
# default_value: databricks_postgres # Default database name
|
|
217
|
+
# options:
|
|
218
|
+
# - env: PGDATABASE
|
|
219
|
+
# - scope: retail_ai
|
|
220
|
+
# secret: PGDATABASE
|
|
220
221
|
|
|
221
222
|
|
|
222
223
|
# Traditional PostgreSQL authentication (commented out)
|
|
@@ -959,7 +960,7 @@ app:
|
|
|
959
960
|
content: Can you recommend a lamp to match my oak side tables?
|
|
960
961
|
custom_inputs:
|
|
961
962
|
configurable:
|
|
962
|
-
thread_id: "1"
|
|
963
|
+
#thread_id: "1"
|
|
963
964
|
user_id: my_user_id
|
|
964
965
|
store_num: 87887
|
|
965
966
|
#chat_history:
|
|
@@ -32,7 +32,7 @@ resources:
|
|
|
32
32
|
environments:
|
|
33
33
|
- environment_key: dao-ai-env
|
|
34
34
|
spec:
|
|
35
|
-
|
|
35
|
+
environment_version: "4"
|
|
36
36
|
dependencies:
|
|
37
37
|
- -r ${workspace.file_path}/requirements.txt
|
|
38
38
|
tasks:
|
|
@@ -50,17 +50,24 @@ resources:
|
|
|
50
50
|
base_parameters:
|
|
51
51
|
config-path: ${var.config_path}
|
|
52
52
|
environment_key: dao-ai-env
|
|
53
|
+
- task_key: provision-lakebase
|
|
54
|
+
notebook_task:
|
|
55
|
+
notebook_path: ./notebooks/03_provision_lakebase.py
|
|
56
|
+
base_parameters:
|
|
57
|
+
config-path: ${var.config_path}
|
|
58
|
+
environment_key: dao-ai-env
|
|
53
59
|
- task_key: generate-evaluation-data
|
|
54
60
|
depends_on:
|
|
55
61
|
- task_key: provision-vector-search
|
|
56
62
|
notebook_task:
|
|
57
|
-
notebook_path: ./notebooks/
|
|
63
|
+
notebook_path: ./notebooks/06_generate_evaluation_data.py
|
|
58
64
|
base_parameters:
|
|
59
65
|
config-path: ${var.config_path}
|
|
60
66
|
environment_key: dao-ai-env
|
|
61
67
|
- task_key: unity-catalog-tools
|
|
62
68
|
depends_on:
|
|
63
69
|
- task_key: provision-vector-search
|
|
70
|
+
- task_key: provision-lakebase
|
|
64
71
|
notebook_task:
|
|
65
72
|
notebook_path: ./notebooks/04_unity_catalog_tools.py
|
|
66
73
|
base_parameters:
|
|
@@ -70,7 +77,7 @@ resources:
|
|
|
70
77
|
depends_on:
|
|
71
78
|
- task_key: unity-catalog-tools
|
|
72
79
|
notebook_task:
|
|
73
|
-
notebook_path: ./notebooks/
|
|
80
|
+
notebook_path: ./notebooks/05_deploy_agent.py
|
|
74
81
|
base_parameters:
|
|
75
82
|
config-path: ${var.config_path}
|
|
76
83
|
environment_key: dao-ai-env
|
|
@@ -79,7 +86,7 @@ resources:
|
|
|
79
86
|
- task_key: deploy-agents
|
|
80
87
|
- task_key: generate-evaluation-data
|
|
81
88
|
notebook_task:
|
|
82
|
-
notebook_path: ./notebooks/
|
|
89
|
+
notebook_path: ./notebooks/07_run_evaluation.py
|
|
83
90
|
base_parameters:
|
|
84
91
|
config-path: ${var.config_path}
|
|
85
92
|
environment_key: dao-ai-env
|
|
@@ -1,11 +1,42 @@
|
|
|
1
1
|
# Databricks notebook source
|
|
2
2
|
# MAGIC %pip install --quiet --upgrade -r ../requirements.txt
|
|
3
|
+
# MAGIC %pip uninstall --quiet -y databricks-connect pyspark pyspark-connect
|
|
4
|
+
# MAGIC %pip install --quiet databricks-connect
|
|
3
5
|
# MAGIC %restart_python
|
|
4
6
|
|
|
5
7
|
# COMMAND ----------
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
from typing import Sequence
|
|
10
|
+
import os
|
|
11
|
+
|
|
12
|
+
def find_yaml_files_os_walk(base_path: str) -> Sequence[str]:
|
|
13
|
+
if not os.path.exists(base_path):
|
|
14
|
+
raise FileNotFoundError(f"Base path does not exist: {base_path}")
|
|
15
|
+
|
|
16
|
+
if not os.path.isdir(base_path):
|
|
17
|
+
raise NotADirectoryError(f"Base path is not a directory: {base_path}")
|
|
18
|
+
|
|
19
|
+
yaml_files = []
|
|
20
|
+
|
|
21
|
+
for root, dirs, files in os.walk(base_path):
|
|
22
|
+
for file in files:
|
|
23
|
+
if file.lower().endswith(('.yaml', '.yml')):
|
|
24
|
+
yaml_files.append(os.path.join(root, file))
|
|
25
|
+
|
|
26
|
+
return sorted(yaml_files)
|
|
27
|
+
|
|
28
|
+
# COMMAND ----------
|
|
29
|
+
|
|
30
|
+
dbutils.widgets.text(name="config-path", defaultValue="")
|
|
31
|
+
|
|
32
|
+
config_files: Sequence[str] = find_yaml_files_os_walk("../config")
|
|
33
|
+
dbutils.widgets.dropdown(name="config-paths", choices=config_files, defaultValue=next(iter(config_files), ""))
|
|
34
|
+
|
|
35
|
+
config_path: str | None = dbutils.widgets.get("config-path") or None
|
|
36
|
+
project_path: str = dbutils.widgets.get("config-paths") or None
|
|
37
|
+
|
|
38
|
+
config_path: str = config_path or project_path
|
|
39
|
+
|
|
9
40
|
print(config_path)
|
|
10
41
|
|
|
11
42
|
# COMMAND ----------
|
|
@@ -6,10 +6,38 @@
|
|
|
6
6
|
|
|
7
7
|
# COMMAND ----------
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
from typing import Sequence
|
|
10
|
+
import os
|
|
11
|
+
|
|
12
|
+
def find_yaml_files_os_walk(base_path: str) -> Sequence[str]:
|
|
13
|
+
if not os.path.exists(base_path):
|
|
14
|
+
raise FileNotFoundError(f"Base path does not exist: {base_path}")
|
|
15
|
+
|
|
16
|
+
if not os.path.isdir(base_path):
|
|
17
|
+
raise NotADirectoryError(f"Base path is not a directory: {base_path}")
|
|
18
|
+
|
|
19
|
+
yaml_files = []
|
|
20
|
+
|
|
21
|
+
for root, dirs, files in os.walk(base_path):
|
|
22
|
+
for file in files:
|
|
23
|
+
if file.lower().endswith(('.yaml', '.yml')):
|
|
24
|
+
yaml_files.append(os.path.join(root, file))
|
|
25
|
+
|
|
26
|
+
return sorted(yaml_files)
|
|
27
|
+
|
|
28
|
+
# COMMAND ----------
|
|
29
|
+
|
|
30
|
+
dbutils.widgets.text(name="config-path", defaultValue="")
|
|
12
31
|
|
|
32
|
+
config_files: Sequence[str] = find_yaml_files_os_walk("../config")
|
|
33
|
+
dbutils.widgets.dropdown(name="config-paths", choices=config_files, defaultValue=next(iter(config_files), ""))
|
|
34
|
+
|
|
35
|
+
config_path: str | None = dbutils.widgets.get("config-path") or None
|
|
36
|
+
project_path: str = dbutils.widgets.get("config-paths") or None
|
|
37
|
+
|
|
38
|
+
config_path: str = config_path or project_path
|
|
39
|
+
|
|
40
|
+
print(config_path)
|
|
13
41
|
# COMMAND ----------
|
|
14
42
|
|
|
15
43
|
import sys
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Databricks notebook source
|
|
2
|
+
# MAGIC %pip install --quiet --upgrade -r ../requirements.txt
|
|
3
|
+
# MAGIC %pip uninstall --quiet -y databricks-connect pyspark pyspark-connect
|
|
4
|
+
# MAGIC %pip install --quiet databricks-connect
|
|
5
|
+
# MAGIC %restart_python
|
|
6
|
+
|
|
7
|
+
# COMMAND ----------
|
|
8
|
+
|
|
9
|
+
from typing import Sequence
|
|
10
|
+
import os
|
|
11
|
+
|
|
12
|
+
def find_yaml_files_os_walk(base_path: str) -> Sequence[str]:
|
|
13
|
+
if not os.path.exists(base_path):
|
|
14
|
+
raise FileNotFoundError(f"Base path does not exist: {base_path}")
|
|
15
|
+
|
|
16
|
+
if not os.path.isdir(base_path):
|
|
17
|
+
raise NotADirectoryError(f"Base path is not a directory: {base_path}")
|
|
18
|
+
|
|
19
|
+
yaml_files = []
|
|
20
|
+
|
|
21
|
+
for root, dirs, files in os.walk(base_path):
|
|
22
|
+
for file in files:
|
|
23
|
+
if file.lower().endswith(('.yaml', '.yml')):
|
|
24
|
+
yaml_files.append(os.path.join(root, file))
|
|
25
|
+
|
|
26
|
+
return sorted(yaml_files)
|
|
27
|
+
|
|
28
|
+
# COMMAND ----------
|
|
29
|
+
|
|
30
|
+
dbutils.widgets.text(name="config-path", defaultValue="")
|
|
31
|
+
|
|
32
|
+
config_files: Sequence[str] = find_yaml_files_os_walk("../config")
|
|
33
|
+
dbutils.widgets.dropdown(name="config-paths", choices=config_files, defaultValue=next(iter(config_files), ""))
|
|
34
|
+
|
|
35
|
+
config_path: str | None = dbutils.widgets.get("config-path") or None
|
|
36
|
+
project_path: str = dbutils.widgets.get("config-paths") or None
|
|
37
|
+
|
|
38
|
+
config_path: str = config_path or project_path
|
|
39
|
+
|
|
40
|
+
print(config_path)
|
|
41
|
+
|
|
42
|
+
# COMMAND ----------
|
|
43
|
+
|
|
44
|
+
import sys
|
|
45
|
+
from typing import Sequence
|
|
46
|
+
from importlib.metadata import version
|
|
47
|
+
|
|
48
|
+
sys.path.insert(0, "../src")
|
|
49
|
+
|
|
50
|
+
pip_requirements: Sequence[str] = (
|
|
51
|
+
f"databricks-sdk=={version('databricks-sdk')}",
|
|
52
|
+
f"mlflow=={version('mlflow')}",
|
|
53
|
+
)
|
|
54
|
+
print("\n".join(pip_requirements))
|
|
55
|
+
|
|
56
|
+
# COMMAND ----------
|
|
57
|
+
|
|
58
|
+
# MAGIC %load_ext autoreload
|
|
59
|
+
# MAGIC %autoreload 2
|
|
60
|
+
|
|
61
|
+
# COMMAND ----------
|
|
62
|
+
|
|
63
|
+
from dotenv import find_dotenv, load_dotenv
|
|
64
|
+
|
|
65
|
+
_ = load_dotenv(find_dotenv())
|
|
66
|
+
|
|
67
|
+
# COMMAND ----------
|
|
68
|
+
|
|
69
|
+
from dao_ai.config import AppConfig
|
|
70
|
+
|
|
71
|
+
config: AppConfig = AppConfig.from_file(path=config_path)
|
|
72
|
+
|
|
73
|
+
# COMMAND ----------
|
|
74
|
+
|
|
75
|
+
from dao_ai.config import DatabaseModel
|
|
76
|
+
|
|
77
|
+
databases: dict[str, DatabaseModel] = config.resources.databases
|
|
78
|
+
|
|
79
|
+
for _, database in databases.items():
|
|
80
|
+
database: DatabaseModel
|
|
81
|
+
|
|
82
|
+
print(f"database: {database}")
|
|
83
|
+
database.create()
|
|
84
|
+
|
|
85
|
+
|
|
@@ -6,8 +6,37 @@
|
|
|
6
6
|
|
|
7
7
|
# COMMAND ----------
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
from typing import Sequence
|
|
10
|
+
import os
|
|
11
|
+
|
|
12
|
+
def find_yaml_files_os_walk(base_path: str) -> Sequence[str]:
|
|
13
|
+
if not os.path.exists(base_path):
|
|
14
|
+
raise FileNotFoundError(f"Base path does not exist: {base_path}")
|
|
15
|
+
|
|
16
|
+
if not os.path.isdir(base_path):
|
|
17
|
+
raise NotADirectoryError(f"Base path is not a directory: {base_path}")
|
|
18
|
+
|
|
19
|
+
yaml_files = []
|
|
20
|
+
|
|
21
|
+
for root, dirs, files in os.walk(base_path):
|
|
22
|
+
for file in files:
|
|
23
|
+
if file.lower().endswith(('.yaml', '.yml')):
|
|
24
|
+
yaml_files.append(os.path.join(root, file))
|
|
25
|
+
|
|
26
|
+
return sorted(yaml_files)
|
|
27
|
+
|
|
28
|
+
# COMMAND ----------
|
|
29
|
+
|
|
30
|
+
dbutils.widgets.text(name="config-path", defaultValue="")
|
|
31
|
+
|
|
32
|
+
config_files: Sequence[str] = find_yaml_files_os_walk("../config")
|
|
33
|
+
dbutils.widgets.dropdown(name="config-paths", choices=config_files, defaultValue=next(iter(config_files), ""))
|
|
34
|
+
|
|
35
|
+
config_path: str | None = dbutils.widgets.get("config-path") or None
|
|
36
|
+
project_path: str = dbutils.widgets.get("config-paths") or None
|
|
37
|
+
|
|
38
|
+
config_path: str = config_path or project_path
|
|
39
|
+
|
|
11
40
|
print(config_path)
|
|
12
41
|
|
|
13
42
|
# COMMAND ----------
|
|
@@ -6,8 +6,37 @@
|
|
|
6
6
|
|
|
7
7
|
# COMMAND ----------
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
from typing import Sequence
|
|
10
|
+
import os
|
|
11
|
+
|
|
12
|
+
def find_yaml_files_os_walk(base_path: str) -> Sequence[str]:
|
|
13
|
+
if not os.path.exists(base_path):
|
|
14
|
+
raise FileNotFoundError(f"Base path does not exist: {base_path}")
|
|
15
|
+
|
|
16
|
+
if not os.path.isdir(base_path):
|
|
17
|
+
raise NotADirectoryError(f"Base path is not a directory: {base_path}")
|
|
18
|
+
|
|
19
|
+
yaml_files = []
|
|
20
|
+
|
|
21
|
+
for root, dirs, files in os.walk(base_path):
|
|
22
|
+
for file in files:
|
|
23
|
+
if file.lower().endswith(('.yaml', '.yml')):
|
|
24
|
+
yaml_files.append(os.path.join(root, file))
|
|
25
|
+
|
|
26
|
+
return sorted(yaml_files)
|
|
27
|
+
|
|
28
|
+
# COMMAND ----------
|
|
29
|
+
|
|
30
|
+
dbutils.widgets.text(name="config-path", defaultValue="")
|
|
31
|
+
|
|
32
|
+
config_files: Sequence[str] = find_yaml_files_os_walk("../config")
|
|
33
|
+
dbutils.widgets.dropdown(name="config-paths", choices=config_files, defaultValue=next(iter(config_files), ""))
|
|
34
|
+
|
|
35
|
+
config_path: str | None = dbutils.widgets.get("config-path") or None
|
|
36
|
+
project_path: str = dbutils.widgets.get("config-paths") or None
|
|
37
|
+
|
|
38
|
+
config_path: str = config_path or project_path
|
|
39
|
+
|
|
11
40
|
print(config_path)
|
|
12
41
|
|
|
13
42
|
# COMMAND ----------
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# Databricks notebook source
|
|
2
|
-
# DBTITLE 1,Install Required Python Packages and Restart Kernel
|
|
3
2
|
# MAGIC %pip install --quiet --upgrade -r ../requirements.txt
|
|
4
3
|
# MAGIC %pip uninstall --quiet -y databricks-connect pyspark pyspark-connect
|
|
5
4
|
# MAGIC %pip install --quiet databricks-connect
|
|
@@ -7,11 +6,38 @@
|
|
|
7
6
|
|
|
8
7
|
# COMMAND ----------
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
from typing import Sequence
|
|
10
|
+
import os
|
|
11
|
+
|
|
12
|
+
def find_yaml_files_os_walk(base_path: str) -> Sequence[str]:
|
|
13
|
+
if not os.path.exists(base_path):
|
|
14
|
+
raise FileNotFoundError(f"Base path does not exist: {base_path}")
|
|
15
|
+
|
|
16
|
+
if not os.path.isdir(base_path):
|
|
17
|
+
raise NotADirectoryError(f"Base path is not a directory: {base_path}")
|
|
18
|
+
|
|
19
|
+
yaml_files = []
|
|
20
|
+
|
|
21
|
+
for root, dirs, files in os.walk(base_path):
|
|
22
|
+
for file in files:
|
|
23
|
+
if file.lower().endswith(('.yaml', '.yml')):
|
|
24
|
+
yaml_files.append(os.path.join(root, file))
|
|
25
|
+
|
|
26
|
+
return sorted(yaml_files)
|
|
27
|
+
|
|
28
|
+
# COMMAND ----------
|
|
29
|
+
|
|
30
|
+
dbutils.widgets.text(name="config-path", defaultValue="")
|
|
14
31
|
|
|
32
|
+
config_files: Sequence[str] = find_yaml_files_os_walk("../config")
|
|
33
|
+
dbutils.widgets.dropdown(name="config-paths", choices=config_files, defaultValue=next(iter(config_files), ""))
|
|
34
|
+
|
|
35
|
+
config_path: str | None = dbutils.widgets.get("config-path") or None
|
|
36
|
+
project_path: str = dbutils.widgets.get("config-paths") or None
|
|
37
|
+
|
|
38
|
+
config_path: str = config_path or project_path
|
|
39
|
+
|
|
40
|
+
print(config_path)
|
|
15
41
|
# COMMAND ----------
|
|
16
42
|
|
|
17
43
|
from dotenv import find_dotenv, load_dotenv
|
|
@@ -1,11 +1,42 @@
|
|
|
1
1
|
# Databricks notebook source
|
|
2
|
-
# MAGIC %pip install --quiet -r ../requirements.txt
|
|
2
|
+
# MAGIC %pip install --quiet --upgrade -r ../requirements.txt
|
|
3
|
+
# MAGIC %pip uninstall --quiet -y databricks-connect pyspark pyspark-connect
|
|
4
|
+
# MAGIC %pip install --quiet databricks-connect
|
|
3
5
|
# MAGIC %restart_python
|
|
4
6
|
|
|
5
7
|
# COMMAND ----------
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
from typing import Sequence
|
|
10
|
+
import os
|
|
11
|
+
|
|
12
|
+
def find_yaml_files_os_walk(base_path: str) -> Sequence[str]:
|
|
13
|
+
if not os.path.exists(base_path):
|
|
14
|
+
raise FileNotFoundError(f"Base path does not exist: {base_path}")
|
|
15
|
+
|
|
16
|
+
if not os.path.isdir(base_path):
|
|
17
|
+
raise NotADirectoryError(f"Base path is not a directory: {base_path}")
|
|
18
|
+
|
|
19
|
+
yaml_files = []
|
|
20
|
+
|
|
21
|
+
for root, dirs, files in os.walk(base_path):
|
|
22
|
+
for file in files:
|
|
23
|
+
if file.lower().endswith(('.yaml', '.yml')):
|
|
24
|
+
yaml_files.append(os.path.join(root, file))
|
|
25
|
+
|
|
26
|
+
return sorted(yaml_files)
|
|
27
|
+
|
|
28
|
+
# COMMAND ----------
|
|
29
|
+
|
|
30
|
+
dbutils.widgets.text(name="config-path", defaultValue="")
|
|
31
|
+
|
|
32
|
+
config_files: Sequence[str] = find_yaml_files_os_walk("../config")
|
|
33
|
+
dbutils.widgets.dropdown(name="config-paths", choices=config_files, defaultValue=next(iter(config_files), ""))
|
|
34
|
+
|
|
35
|
+
config_path: str | None = dbutils.widgets.get("config-path") or None
|
|
36
|
+
project_path: str = dbutils.widgets.get("config-paths") or None
|
|
37
|
+
|
|
38
|
+
config_path: str = config_path or project_path
|
|
39
|
+
|
|
9
40
|
print(config_path)
|
|
10
41
|
|
|
11
42
|
# COMMAND ----------
|
|
@@ -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.22"
|
|
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" }
|
|
@@ -42,9 +42,9 @@ classifiers = [
|
|
|
42
42
|
"Topic :: System :: Distributed Computing",
|
|
43
43
|
]
|
|
44
44
|
dependencies = [
|
|
45
|
-
"databricks-agents>=1.6.
|
|
45
|
+
"databricks-agents>=1.6.1",
|
|
46
46
|
"databricks-langchain>=0.8.0",
|
|
47
|
-
"databricks-sdk[openai]>=0.
|
|
47
|
+
"databricks-sdk[openai]>=0.67.0",
|
|
48
48
|
"duckduckgo-search>=8.0.2",
|
|
49
49
|
"grandalf>=0.8",
|
|
50
50
|
"langchain>=0.3.27",
|
|
@@ -22,10 +22,10 @@ contourpy==1.3.2
|
|
|
22
22
|
cryptography==45.0.7
|
|
23
23
|
cycler==0.12.1
|
|
24
24
|
cyclopts==3.24.0
|
|
25
|
-
databricks-agents==1.6.
|
|
25
|
+
databricks-agents==1.6.1
|
|
26
26
|
databricks-ai-bridge==0.8.0
|
|
27
27
|
databricks-langchain==0.8.0
|
|
28
|
-
databricks-sdk==0.
|
|
28
|
+
databricks-sdk==0.67.0
|
|
29
29
|
dataclasses-json==0.6.7
|
|
30
30
|
deprecation==2.1.0
|
|
31
31
|
distlib==0.3.9
|