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.
Files changed (350) hide show
  1. {dao_ai-0.0.20 → dao_ai-0.0.22}/PKG-INFO +3 -3
  2. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/executive_assistant.yaml +1 -5
  3. dao_ai-0.0.22/config/examples/genie_with_conversion_id.yaml +151 -0
  4. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/hardware_store/supervisor_postgres.yaml +21 -20
  5. {dao_ai-0.0.20 → dao_ai-0.0.22}/databricks.yaml +11 -4
  6. {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/01_ingest_and_transform.py +33 -2
  7. {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/02_provision_vector_search.py +31 -3
  8. dao_ai-0.0.22/notebooks/03_provision_lakebase.py +85 -0
  9. {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/04_unity_catalog_tools.py +31 -2
  10. dao_ai-0.0.20/notebooks/03_generate_evaluation_data.py → dao_ai-0.0.22/notebooks/06_generate_evaluation_data.py +31 -2
  11. dao_ai-0.0.20/notebooks/06_run_evaluation.py → dao_ai-0.0.22/notebooks/07_run_evaluation.py +31 -5
  12. {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/09_evaluate_inferences.py +34 -3
  13. {dao_ai-0.0.20 → dao_ai-0.0.22}/pyproject.toml +3 -3
  14. {dao_ai-0.0.20 → dao_ai-0.0.22}/requirements.txt +2 -2
  15. {dao_ai-0.0.20 → dao_ai-0.0.22}/schemas/bundle_config_schema.json +2130 -290
  16. {dao_ai-0.0.20 → dao_ai-0.0.22}/schemas/model_config_schema.json +64 -31
  17. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/config.py +114 -17
  18. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/graph.py +3 -0
  19. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/memory/core.py +10 -6
  20. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/memory/postgres.py +102 -33
  21. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/models.py +137 -2
  22. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/providers/databricks.py +282 -0
  23. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/state.py +3 -0
  24. dao_ai-0.0.22/src/dao_ai/tools/genie.py +389 -0
  25. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/utils.py +4 -0
  26. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/conftest.py +1 -0
  27. dao_ai-0.0.22/tests/dao_ai/test_databricks.py +1004 -0
  28. dao_ai-0.0.22/tests/dao_ai/test_genie.py +982 -0
  29. dao_ai-0.0.22/tests/dao_ai/test_genie_conversation_ids_in_outputs.py +327 -0
  30. dao_ai-0.0.22/tests/dao_ai/test_genie_databricks_integration.py +274 -0
  31. dao_ai-0.0.20/src/dao_ai/tools/genie.py +0 -77
  32. dao_ai-0.0.20/tests/dao_ai/test_databricks.py +0 -308
  33. {dao_ai-0.0.20 → dao_ai-0.0.22}/.gitignore +0 -0
  34. {dao_ai-0.0.20 → dao_ai-0.0.22}/.python-version +0 -0
  35. {dao_ai-0.0.20 → dao_ai-0.0.22}/CHANGELOG.md +0 -0
  36. {dao_ai-0.0.20 → dao_ai-0.0.22}/CONTRIBUTING.md +0 -0
  37. {dao_ai-0.0.20 → dao_ai-0.0.22}/LICENSE +0 -0
  38. {dao_ai-0.0.20 → dao_ai-0.0.22}/Makefile +0 -0
  39. {dao_ai-0.0.20 → dao_ai-0.0.22}/README.md +0 -0
  40. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/Makefile +0 -0
  41. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/REFACTORING_SUMMARY.md +0 -0
  42. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/base-environment-serverless.yaml +0 -0
  43. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/demo_docs/BRAND_REP_DEMO_SUMMARY.md +0 -0
  44. {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
  45. {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
  46. {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
  47. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/development_workflows.md +0 -0
  48. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/.gitkeep +0 -0
  49. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/Makefile +0 -0
  50. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agent_implementation.mmd +0 -0
  51. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agent_tools_architecture.mmd +0 -0
  52. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/agent-troubleshooting.md +0 -0
  53. {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
  54. {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
  55. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-performance.md +0 -0
  56. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-quickstart.md +0 -0
  57. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/ai-agents.md +0 -0
  58. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/overview.md +0 -0
  59. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/references/agent-reference.md +0 -0
  60. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/agents-and-tools/references/tools-reference.md +0 -0
  61. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/applications/streamlit-app.md +0 -0
  62. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/architecture/overview.md +0 -0
  63. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/architecture.mmd +0 -0
  64. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/architecture.png +0 -0
  65. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/customer_preparation_guide.md +0 -0
  66. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/databricks_integration.mmd +0 -0
  67. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/deployment/production.md +0 -0
  68. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/development/contributing.md +0 -0
  69. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/employee_tools_guide.md +0 -0
  70. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/getting-started/installation.md +0 -0
  71. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/getting-started/mkdocs-quickstart.md +0 -0
  72. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/getting-started/quick-start.md +0 -0
  73. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/index.md +0 -0
  74. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/mkdocs.yml +0 -0
  75. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/scenario_1_architecture.mmd +0 -0
  76. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/scenario_1_flow.mmd +0 -0
  77. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/setup-docs.sh +0 -0
  78. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/task_assignment_workflow_guide.md +0 -0
  79. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/docs/tools/overview.md +0 -0
  80. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/examples/customer_preparation_workflow.py +0 -0
  81. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/examples/task_assignment_workflow.py +0 -0
  82. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/load-env.sh +0 -0
  83. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/CSS_REFACTORING_SUMMARY.md +0 -0
  84. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/DEMO_CONTROLS_RESTORED.md +0 -0
  85. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/DEMO_IMPLEMENTATION_SUMMARY.md +0 -0
  86. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/DEMO_QUICK_START.md +0 -0
  87. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/Dockerfile +0 -0
  88. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/HOMEPAGE_README.md +0 -0
  89. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/Makefile +0 -0
  90. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/README.md +0 -0
  91. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/app.py +0 -0
  92. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/app.yaml +0 -0
  93. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/__init__.py +0 -0
  94. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/backup_homepage.py +0 -0
  95. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/chat.py +0 -0
  96. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/enhanced_charts.py +0 -0
  97. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/enhanced_navigation.py +0 -0
  98. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/__init__.py +0 -0
  99. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/__init__.py +0 -0
  100. {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
  101. {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
  102. {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
  103. {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
  104. {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
  105. {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
  106. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/__init__.py +0 -0
  107. {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
  108. {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
  109. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/notifications.py +0 -0
  110. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/homepage/homepage.py +0 -0
  111. {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
  112. {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
  113. {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
  114. {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
  115. {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
  116. {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
  117. {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
  118. {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
  119. {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
  120. {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
  121. {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
  122. {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
  123. {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
  124. {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
  125. {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
  126. {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
  127. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/metrics.py +0 -0
  128. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/navigation.py +0 -0
  129. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/oldhomepage.py +0 -0
  130. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/components/styles.py +0 -0
  131. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/config.yaml +0 -0
  132. {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
  133. {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
  134. {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
  135. {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
  136. {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
  137. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/dev/README.md +0 -0
  138. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/dev/__init__.py +0 -0
  139. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/dev/components/__init__.py +0 -0
  140. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/dev/components/dashboard_card.py +0 -0
  141. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/dev/demo_alerts.py +0 -0
  142. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/dev/examples/sample_dashboard.py +0 -0
  143. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages/__init__.py +0 -0
  144. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages/component_showcase.py +0 -0
  145. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages/dev_playground.py +0 -0
  146. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages/playground.py +0 -0
  147. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/daily_operations.py +0 -0
  148. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/inventory.py +0 -0
  149. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_schedule.py +0 -0
  150. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_tasks.py +0 -0
  151. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/orders.py +0 -0
  152. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/products_promotions.py +0 -0
  153. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/staff.py +0 -0
  154. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pages_wip/team_insights.py +0 -0
  155. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/pyproject.toml +0 -0
  156. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/requirements.txt +0 -0
  157. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/static/css/style.css +0 -0
  158. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/README.md +0 -0
  159. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/__init__.py +0 -0
  160. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/base.py +0 -0
  161. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/components.py +0 -0
  162. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/dashboard.py +0 -0
  163. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/homepage.py +0 -0
  164. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/styles/theme.py +0 -0
  165. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/test_vip_notification.py +0 -0
  166. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/tests/test_calculations.py +0 -0
  167. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/utils/config.py +0 -0
  168. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/utils/database.py +0 -0
  169. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/utils/model_serving.py +0 -0
  170. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app/utils/store_context.py +0 -0
  171. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/Makefile +0 -0
  172. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/README.md +0 -0
  173. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/app.py +0 -0
  174. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/__init__.py +0 -0
  175. {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
  176. {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
  177. {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
  178. {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
  179. {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
  180. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/TAILADMIN_README.md +0 -0
  181. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/homepage_tailadmin.py +0 -0
  182. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/tailadmin_demo.py +0 -0
  183. {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
  184. {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
  185. {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
  186. {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
  187. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/components_demo.py +0 -0
  188. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/homepage.py +0 -0
  189. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/implementation_guide.py +0 -0
  190. {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
  191. {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
  192. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pyproject.toml +0 -0
  193. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/__init__.py +0 -0
  194. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/test_imports.py +0 -0
  195. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/.gitkeep +0 -0
  196. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/README.md +0 -0
  197. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/images/doritos_upc.png +0 -0
  198. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/images/lays_upc.png +0 -0
  199. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/manager_demo_script.md +0 -0
  200. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/notebook_vector_search_test.py +0 -0
  201. {dao_ai-0.0.20 → dao_ai-0.0.22}/apps/dais2025/store-app/tests/test_vector_search_integration.py +0 -0
  202. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/dais2025/model_config_dais.yaml +0 -0
  203. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/deep_research.yaml +0 -0
  204. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/genie.yaml +0 -0
  205. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/genie_and_vector_search.yaml +0 -0
  206. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/human_in_the_loop.yaml +0 -0
  207. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/jira.yaml +0 -0
  208. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/mcp.yaml +0 -0
  209. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/minimal.yaml +0 -0
  210. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/examples/reservations.yaml +0 -0
  211. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/hardware_store/supervisor.yaml +0 -0
  212. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/hardware_store/swarm.yaml +0 -0
  213. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/quick_serve_restaurant/.gitkeep +0 -0
  214. {dao_ai-0.0.20 → dao_ai-0.0.22}/config/quick_serve_restaurant/quick-serve-restaurant.yaml +0 -0
  215. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/appointments.sql +0 -0
  216. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/appointments_data.sql +0 -0
  217. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/brand_rep_demo_data.sql +0 -0
  218. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/brand_rep_demo_queries.sql +0 -0
  219. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/brand_rep_demo_tables.sql +0 -0
  220. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/brand_rep_demo_validation.sql +0 -0
  221. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/customers.sql +0 -0
  222. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/customers_data.sql +0 -0
  223. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/dim_stores.sql +0 -0
  224. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/dim_stores_data.sql +0 -0
  225. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/employee_performance.sql +0 -0
  226. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/employee_performance_data.sql +0 -0
  227. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/employee_tasks.sql +0 -0
  228. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/employee_tasks_data.sql +0 -0
  229. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/inventory.sql +0 -0
  230. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/inventory_data.sql +0 -0
  231. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/managers.sql +0 -0
  232. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/managers_data.sql +0 -0
  233. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/product_data.sql +0 -0
  234. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/products.sql +0 -0
  235. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/dais2025/task_assignments.sql +0 -0
  236. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/hardware_store/inventory.snappy.parquet +0 -0
  237. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/hardware_store/inventory.sql +0 -0
  238. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/hardware_store/products.snappy.parquet +0 -0
  239. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/hardware_store/products.sql +0 -0
  240. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/.gitkeep +0 -0
  241. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/fulfil_item_orders.sql +0 -0
  242. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/items_description.csv +0 -0
  243. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/items_description.sql +0 -0
  244. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/items_raw.csv +0 -0
  245. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/items_raw.sql +0 -0
  246. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/orders_raw.csv +0 -0
  247. {dao_ai-0.0.20 → dao_ai-0.0.22}/data/quick_serve_restaurant/orders_raw.sql +0 -0
  248. {dao_ai-0.0.20 → dao_ai-0.0.22}/docs/genie.png +0 -0
  249. {dao_ai-0.0.20 → dao_ai-0.0.22}/docs/hardware_store/README.md +0 -0
  250. {dao_ai-0.0.20 → dao_ai-0.0.22}/docs/hardware_store/retail_supervisor.png +0 -0
  251. {dao_ai-0.0.20 → dao_ai-0.0.22}/docs/hardware_store/retail_swarm.png +0 -0
  252. {dao_ai-0.0.20 → dao_ai-0.0.22}/docs/quick_serve_restaurant/.gitkeep +0 -0
  253. {dao_ai-0.0.20 → dao_ai-0.0.22}/docs/quick_serve_restaurant/quick-serve-restaurant.png +0 -0
  254. {dao_ai-0.0.20 → dao_ai-0.0.22}/environment.yaml +0 -0
  255. {dao_ai-0.0.20 → dao_ai-0.0.22}/examples/dais2025/examples.yaml +0 -0
  256. {dao_ai-0.0.20 → dao_ai-0.0.22}/examples/deep_research/examples.yaml +0 -0
  257. {dao_ai-0.0.20 → dao_ai-0.0.22}/examples/executive_assistant/examples.yaml +0 -0
  258. {dao_ai-0.0.20 → dao_ai-0.0.22}/examples/hardware_store/examples.yaml +0 -0
  259. {dao_ai-0.0.20 → dao_ai-0.0.22}/examples/quick_serve_restaurant/.gitkeep +0 -0
  260. {dao_ai-0.0.20 → dao_ai-0.0.22}/examples/quick_serve_restaurant/examples.yaml +0 -0
  261. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/extract_store_numbers.sql +0 -0
  262. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_inventory_by_sku.sql +0 -0
  263. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_inventory_by_upc.sql +0 -0
  264. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_product_by_sku.sql +0 -0
  265. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_product_by_upc.sql +0 -0
  266. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_store_by_number.sql +0 -0
  267. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_store_inventory_by_sku.sql +0 -0
  268. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/dais2025/find_store_inventory_by_upc.sql +0 -0
  269. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/hardware_store/find_inventory_by_sku.sql +0 -0
  270. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/hardware_store/find_inventory_by_upc.sql +0 -0
  271. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/hardware_store/find_product_by_sku.sql +0 -0
  272. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/hardware_store/find_product_by_upc.sql +0 -0
  273. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/hardware_store/find_store_inventory_by_sku.sql +0 -0
  274. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/hardware_store/find_store_inventory_by_upc.sql +0 -0
  275. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/quick_serve_restaurant/.gitkeep +0 -0
  276. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/quick_serve_restaurant/insert_coffee_order.sql +0 -0
  277. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/quick_serve_restaurant/lookup_items_by_descriptions.sql +0 -0
  278. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/quick_serve_restaurant/match_historical_item_order_by_date.sql +0 -0
  279. {dao_ai-0.0.20 → dao_ai-0.0.22}/functions/quick_serve_restaurant/match_item_by_description_and_price.sql +0 -0
  280. /dao_ai-0.0.20/notebooks/05_agent_as_code_driver.py → /dao_ai-0.0.22/notebooks/05_deploy_agent.py +0 -0
  281. {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/08_run_examples.py +0 -0
  282. {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/99_scratchpad.py +0 -0
  283. {dao_ai-0.0.20 → dao_ai-0.0.22}/notebooks/INVESTech.py +0 -0
  284. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/__init__.py +0 -0
  285. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/models.py +0 -0
  286. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/__init__.py +0 -0
  287. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/customer.py +0 -0
  288. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/employee.py +0 -0
  289. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/executive.py +0 -0
  290. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/genie.py +0 -0
  291. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/inventory.py +0 -0
  292. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/models.py +0 -0
  293. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dais2025/tools/store.py +0 -0
  294. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/__init__.py +0 -0
  295. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/agent_as_code.py +0 -0
  296. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/catalog.py +0 -0
  297. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/chat_models.py +0 -0
  298. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/cli.py +0 -0
  299. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/guardrails.py +0 -0
  300. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/hooks/__init__.py +0 -0
  301. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/hooks/core.py +0 -0
  302. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/memory/__init__.py +0 -0
  303. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/memory/base.py +0 -0
  304. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/messages.py +0 -0
  305. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/nodes.py +0 -0
  306. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/prompts.py +0 -0
  307. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/providers/__init__.py +0 -0
  308. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/providers/base.py +0 -0
  309. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/__init__.py +0 -0
  310. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/agent.py +0 -0
  311. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/core.py +0 -0
  312. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/human_in_the_loop.py +0 -0
  313. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/mcp.py +0 -0
  314. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/python.py +0 -0
  315. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/time.py +0 -0
  316. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/unity_catalog.py +0 -0
  317. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/tools/vector_search.py +0 -0
  318. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/types.py +0 -0
  319. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/dao_ai/vector_search.py +0 -0
  320. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/hardware_store/__init__.py +0 -0
  321. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/hardware_store/hooks.py +0 -0
  322. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/hardware_store/tools.py +0 -0
  323. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/quick_serve_restaurant/.gitkeep +0 -0
  324. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/quick_serve_restaurant/__init__.py +0 -0
  325. {dao_ai-0.0.20 → dao_ai-0.0.22}/src/quick_serve_restaurant/tools.py +0 -0
  326. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/config/test_model_config.yaml +0 -0
  327. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_catalog.py +0 -0
  328. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_chat_history.py +0 -0
  329. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_config.py +0 -0
  330. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_function_parsing.py +0 -0
  331. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_hooks.py +0 -0
  332. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_inference.py +0 -0
  333. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_inference_integration.py +0 -0
  334. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_mcp.py +0 -0
  335. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_messages.py +0 -0
  336. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_models.py +0 -0
  337. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_postgres_integration.py +0 -0
  338. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_state.py +0 -0
  339. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_summarization_inference.py +0 -0
  340. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_tools.py +0 -0
  341. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_types.py +0 -0
  342. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_unity_catalog.py +0 -0
  343. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_utils.py +0 -0
  344. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/test_vector_search.py +0 -0
  345. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/dao_ai/weather_server_mcp.py +0 -0
  346. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/hardware_store/.gitkeep +0 -0
  347. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/hardware_store/test_graph.py +0 -0
  348. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/images/doritos_upc.png +0 -0
  349. {dao_ai-0.0.20 → dao_ai-0.0.22}/tests/images/lays_upc.png +0 -0
  350. {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.20
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.0
27
+ Requires-Dist: databricks-agents>=1.6.1
28
28
  Requires-Dist: databricks-langchain>=0.8.0
29
- Requires-Dist: databricks-sdk[openai]>=0.66.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
@@ -232,8 +232,4 @@ app:
232
232
  - CAN_QUERY
233
233
  agents:
234
234
  - *executive_assistant_genie
235
- orchestration:
236
- swarm:
237
- model: *fast_llm
238
-
239
-
235
+
@@ -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: "retail-consumer-goods"
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
- client: "4"
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/03_generate_evaluation_data.py
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/05_agent_as_code_driver.py
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/06_run_evaluation.py
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
- dbutils.widgets.text(name="config-path", defaultValue="../config/model_config.yaml")
8
- config_path: str = dbutils.widgets.get("config-path")
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
- dbutils.widgets.text(name="config-path", defaultValue="../config/model_config.yaml")
10
- config_path: str = dbutils.widgets.get("config-path")
11
- print(config_path)
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
- dbutils.widgets.text(name="config-path", defaultValue="../config/model_config.yaml")
10
- config_path: str = dbutils.widgets.get("config-path")
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
- dbutils.widgets.text(name="config-path", defaultValue="../config/model_config.yaml")
10
- config_path: str = dbutils.widgets.get("config-path")
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
- # DBTITLE 1,Set and Retrieve Configuration Path
11
- dbutils.widgets.text(name="config-path", defaultValue="../config/model_config.yaml")
12
- config_path: str = dbutils.widgets.get("config-path")
13
- print(config_path)
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
- dbutils.widgets.text(name="config-path", defaultValue="../config/model_config.yaml")
8
- config_path: str = dbutils.widgets.get("config-path")
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.20"
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.0",
45
+ "databricks-agents>=1.6.1",
46
46
  "databricks-langchain>=0.8.0",
47
- "databricks-sdk[openai]>=0.66.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.0
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.66.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