dao-ai 0.0.18__tar.gz → 0.0.19__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 (343) hide show
  1. {dao_ai-0.0.18 → dao_ai-0.0.19}/PKG-INFO +8 -8
  2. dao_ai-0.0.19/config/examples/deep_research.yaml +413 -0
  3. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/hardware_store/supervisor.yaml +1 -1
  4. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/hardware_store/supervisor_postgres.yaml +1 -1
  5. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/quick_serve_restaurant/quick-serve-restaurant.yaml +1 -1
  6. {dao_ai-0.0.18 → dao_ai-0.0.19}/examples/hardware_store/examples.yaml +22 -2
  7. {dao_ai-0.0.18 → dao_ai-0.0.19}/notebooks/05_agent_as_code_driver.py +37 -2
  8. {dao_ai-0.0.18 → dao_ai-0.0.19}/notebooks/06_run_evaluation.py +6 -0
  9. {dao_ai-0.0.18 → dao_ai-0.0.19}/notebooks/08_run_examples.py +39 -9
  10. {dao_ai-0.0.18 → dao_ai-0.0.19}/pyproject.toml +8 -8
  11. {dao_ai-0.0.18 → dao_ai-0.0.19}/requirements.txt +44 -13
  12. {dao_ai-0.0.18 → dao_ai-0.0.19}/schemas/model_config_schema.json +92 -8
  13. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/config.py +69 -12
  14. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/graph.py +4 -4
  15. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/memory/core.py +2 -2
  16. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/memory/postgres.py +134 -2
  17. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/models.py +89 -48
  18. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/providers/databricks.py +3 -0
  19. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_databricks.py +8 -8
  20. dao_ai-0.0.19/tests/dao_ai/test_inference_integration.py +406 -0
  21. dao_ai-0.0.19/tests/dao_ai/test_postgres_integration.py +266 -0
  22. dao_ai-0.0.18/config/examples/deep_research.yaml +0 -237
  23. {dao_ai-0.0.18 → dao_ai-0.0.19}/.gitignore +0 -0
  24. {dao_ai-0.0.18 → dao_ai-0.0.19}/.python-version +0 -0
  25. {dao_ai-0.0.18 → dao_ai-0.0.19}/CHANGELOG.md +0 -0
  26. {dao_ai-0.0.18 → dao_ai-0.0.19}/CONTRIBUTING.md +0 -0
  27. {dao_ai-0.0.18 → dao_ai-0.0.19}/LICENSE +0 -0
  28. {dao_ai-0.0.18 → dao_ai-0.0.19}/Makefile +0 -0
  29. {dao_ai-0.0.18 → dao_ai-0.0.19}/README.md +0 -0
  30. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/Makefile +0 -0
  31. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/REFACTORING_SUMMARY.md +0 -0
  32. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/base-environment-serverless.yaml +0 -0
  33. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/demo_docs/BRAND_REP_DEMO_SUMMARY.md +0 -0
  34. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/demo_docs/demo_scripts/brand_rep_product_education_demo.md +0 -0
  35. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/demo_docs/demo_scripts/store_associate_ai_assistant_demo.md +0 -0
  36. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/demo_docs/demo_scripts/store_manager_alert_response_demo.md +0 -0
  37. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/development_workflows.md +0 -0
  38. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/.gitkeep +0 -0
  39. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/Makefile +0 -0
  40. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/agent_implementation.mmd +0 -0
  41. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/agent_tools_architecture.mmd +0 -0
  42. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/agents-and-tools/agent-troubleshooting.md +0 -0
  43. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-best-practices.md +0 -0
  44. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-development-patterns.md +0 -0
  45. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-performance.md +0 -0
  46. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-quickstart.md +0 -0
  47. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/agents-and-tools/ai-agents.md +0 -0
  48. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/agents-and-tools/overview.md +0 -0
  49. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/agents-and-tools/references/agent-reference.md +0 -0
  50. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/agents-and-tools/references/tools-reference.md +0 -0
  51. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/applications/streamlit-app.md +0 -0
  52. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/architecture/overview.md +0 -0
  53. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/architecture.mmd +0 -0
  54. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/architecture.png +0 -0
  55. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/customer_preparation_guide.md +0 -0
  56. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/databricks_integration.mmd +0 -0
  57. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/deployment/production.md +0 -0
  58. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/development/contributing.md +0 -0
  59. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/employee_tools_guide.md +0 -0
  60. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/getting-started/installation.md +0 -0
  61. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/getting-started/mkdocs-quickstart.md +0 -0
  62. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/getting-started/quick-start.md +0 -0
  63. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/index.md +0 -0
  64. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/mkdocs.yml +0 -0
  65. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/scenario_1_architecture.mmd +0 -0
  66. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/scenario_1_flow.mmd +0 -0
  67. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/setup-docs.sh +0 -0
  68. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/task_assignment_workflow_guide.md +0 -0
  69. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/docs/tools/overview.md +0 -0
  70. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/examples/customer_preparation_workflow.py +0 -0
  71. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/examples/task_assignment_workflow.py +0 -0
  72. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/load-env.sh +0 -0
  73. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/CSS_REFACTORING_SUMMARY.md +0 -0
  74. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/DEMO_CONTROLS_RESTORED.md +0 -0
  75. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/DEMO_IMPLEMENTATION_SUMMARY.md +0 -0
  76. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/DEMO_QUICK_START.md +0 -0
  77. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/Dockerfile +0 -0
  78. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/HOMEPAGE_README.md +0 -0
  79. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/Makefile +0 -0
  80. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/README.md +0 -0
  81. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/app.py +0 -0
  82. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/app.yaml +0 -0
  83. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/__init__.py +0 -0
  84. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/backup_homepage.py +0 -0
  85. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/chat.py +0 -0
  86. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/enhanced_charts.py +0 -0
  87. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/enhanced_navigation.py +0 -0
  88. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/__init__.py +0 -0
  89. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/__init__.py +0 -0
  90. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/associate_homepage.py +0 -0
  91. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/dashboard_tab.py +0 -0
  92. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/my_tasks_tab.py +0 -0
  93. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/performance_tab.py +0 -0
  94. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/products_tab.py +0 -0
  95. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/schedule_tab.py +0 -0
  96. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/__init__.py +0 -0
  97. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/chat_integration.py +0 -0
  98. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/kpi_summary.py +0 -0
  99. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/notifications.py +0 -0
  100. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/homepage.py +0 -0
  101. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/__init__.py +0 -0
  102. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/alerts_tab.py +0 -0
  103. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/analytics_tab.py +0 -0
  104. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/dashboard_tab.py +0 -0
  105. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/demo_alerts.py +0 -0
  106. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/inventory_tab.py +0 -0
  107. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/manager_homepage.py +0 -0
  108. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/operations_tab.py +0 -0
  109. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/team_tab.py +0 -0
  110. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/__init__.py +0 -0
  111. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/ai_insights_tab.py +0 -0
  112. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/executive_dashboard_tab.py +0 -0
  113. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/geographical_analysis_tab.py +0 -0
  114. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/performance_metrics_tab.py +0 -0
  115. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/strategic_insights_tab.py +0 -0
  116. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/vp_homepage.py +0 -0
  117. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/metrics.py +0 -0
  118. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/navigation.py +0 -0
  119. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/oldhomepage.py +0 -0
  120. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/components/styles.py +0 -0
  121. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/config.yaml +0 -0
  122. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/demo_docs/BRAND_REP_DEMO_SUMMARY.md +0 -0
  123. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/demo_docs/comprehensive_demo_script.md +0 -0
  124. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/brand_rep_product_education_demo.md +0 -0
  125. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/store_associate_ai_assistant_demo.md +0 -0
  126. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/store_manager_alert_response_demo.md +0 -0
  127. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/dev/README.md +0 -0
  128. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/dev/__init__.py +0 -0
  129. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/dev/components/__init__.py +0 -0
  130. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/dev/components/dashboard_card.py +0 -0
  131. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/dev/demo_alerts.py +0 -0
  132. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/dev/examples/sample_dashboard.py +0 -0
  133. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/pages/__init__.py +0 -0
  134. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/pages/component_showcase.py +0 -0
  135. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/pages/dev_playground.py +0 -0
  136. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/pages/playground.py +0 -0
  137. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/pages_wip/daily_operations.py +0 -0
  138. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/pages_wip/inventory.py +0 -0
  139. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_schedule.py +0 -0
  140. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_tasks.py +0 -0
  141. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/pages_wip/orders.py +0 -0
  142. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/pages_wip/products_promotions.py +0 -0
  143. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/pages_wip/staff.py +0 -0
  144. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/pages_wip/team_insights.py +0 -0
  145. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/pyproject.toml +0 -0
  146. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/requirements.txt +0 -0
  147. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/static/css/style.css +0 -0
  148. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/styles/README.md +0 -0
  149. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/styles/__init__.py +0 -0
  150. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/styles/base.py +0 -0
  151. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/styles/components.py +0 -0
  152. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/styles/dashboard.py +0 -0
  153. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/styles/homepage.py +0 -0
  154. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/styles/theme.py +0 -0
  155. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/test_vip_notification.py +0 -0
  156. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/tests/test_calculations.py +0 -0
  157. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/utils/config.py +0 -0
  158. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/utils/database.py +0 -0
  159. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/utils/model_serving.py +0 -0
  160. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app/utils/store_context.py +0 -0
  161. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/Makefile +0 -0
  162. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/README.md +0 -0
  163. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/app.py +0 -0
  164. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/__init__.py +0 -0
  165. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/__init__.py +0 -0
  166. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_components.py +0 -0
  167. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_components_enhanced.py +0 -0
  168. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_styles.py +0 -0
  169. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin_styles.py +0 -0
  170. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/TAILADMIN_README.md +0 -0
  171. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/homepage_tailadmin.py +0 -0
  172. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/tailadmin_demo.py +0 -0
  173. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/tailadmin_implementation_guide.py +0 -0
  174. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/test_vp_dashboard.py +0 -0
  175. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/vp_dashboard_enhanced.py +0 -0
  176. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/vp_dashboard_tailadmin.py +0 -0
  177. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/components_demo.py +0 -0
  178. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/homepage.py +0 -0
  179. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/implementation_guide.py +0 -0
  180. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/vp_dashboard_clean.py +0 -0
  181. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/vp_dashboard_enhanced.py +0 -0
  182. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pyproject.toml +0 -0
  183. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/__init__.py +0 -0
  184. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/test_imports.py +0 -0
  185. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/tests/.gitkeep +0 -0
  186. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/tests/README.md +0 -0
  187. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/tests/images/doritos_upc.png +0 -0
  188. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/tests/images/lays_upc.png +0 -0
  189. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/tests/manager_demo_script.md +0 -0
  190. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/tests/notebook_vector_search_test.py +0 -0
  191. {dao_ai-0.0.18 → dao_ai-0.0.19}/apps/dais2025/store-app/tests/test_vector_search_integration.py +0 -0
  192. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/dais2025/model_config_dais.yaml +0 -0
  193. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/examples/executive_assistant.yaml +0 -0
  194. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/examples/genie.yaml +0 -0
  195. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/examples/genie_and_vector_search.yaml +0 -0
  196. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/examples/human_in_the_loop.yaml +0 -0
  197. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/examples/jira.yaml +0 -0
  198. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/examples/mcp.yaml +0 -0
  199. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/examples/minimal.yaml +0 -0
  200. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/examples/reservations.yaml +0 -0
  201. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/hardware_store/swarm.yaml +0 -0
  202. {dao_ai-0.0.18 → dao_ai-0.0.19}/config/quick_serve_restaurant/.gitkeep +0 -0
  203. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/appointments.sql +0 -0
  204. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/appointments_data.sql +0 -0
  205. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/brand_rep_demo_data.sql +0 -0
  206. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/brand_rep_demo_queries.sql +0 -0
  207. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/brand_rep_demo_tables.sql +0 -0
  208. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/brand_rep_demo_validation.sql +0 -0
  209. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/customers.sql +0 -0
  210. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/customers_data.sql +0 -0
  211. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/dim_stores.sql +0 -0
  212. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/dim_stores_data.sql +0 -0
  213. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/employee_performance.sql +0 -0
  214. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/employee_performance_data.sql +0 -0
  215. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/employee_tasks.sql +0 -0
  216. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/employee_tasks_data.sql +0 -0
  217. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/inventory.sql +0 -0
  218. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/inventory_data.sql +0 -0
  219. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/managers.sql +0 -0
  220. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/managers_data.sql +0 -0
  221. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/product_data.sql +0 -0
  222. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/products.sql +0 -0
  223. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/dais2025/task_assignments.sql +0 -0
  224. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/hardware_store/inventory.snappy.parquet +0 -0
  225. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/hardware_store/inventory.sql +0 -0
  226. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/hardware_store/products.snappy.parquet +0 -0
  227. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/hardware_store/products.sql +0 -0
  228. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/quick_serve_restaurant/.gitkeep +0 -0
  229. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/quick_serve_restaurant/fulfil_item_orders.sql +0 -0
  230. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/quick_serve_restaurant/items_description.csv +0 -0
  231. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/quick_serve_restaurant/items_description.sql +0 -0
  232. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/quick_serve_restaurant/items_raw.csv +0 -0
  233. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/quick_serve_restaurant/items_raw.sql +0 -0
  234. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/quick_serve_restaurant/orders_raw.csv +0 -0
  235. {dao_ai-0.0.18 → dao_ai-0.0.19}/data/quick_serve_restaurant/orders_raw.sql +0 -0
  236. {dao_ai-0.0.18 → dao_ai-0.0.19}/databricks.yaml +0 -0
  237. {dao_ai-0.0.18 → dao_ai-0.0.19}/docs/genie.png +0 -0
  238. {dao_ai-0.0.18 → dao_ai-0.0.19}/docs/hardware_store/README.md +0 -0
  239. {dao_ai-0.0.18 → dao_ai-0.0.19}/docs/hardware_store/retail_supervisor.png +0 -0
  240. {dao_ai-0.0.18 → dao_ai-0.0.19}/docs/hardware_store/retail_swarm.png +0 -0
  241. {dao_ai-0.0.18 → dao_ai-0.0.19}/docs/quick_serve_restaurant/.gitkeep +0 -0
  242. {dao_ai-0.0.18 → dao_ai-0.0.19}/docs/quick_serve_restaurant/quick-serve-restaurant.png +0 -0
  243. {dao_ai-0.0.18 → dao_ai-0.0.19}/environment.yaml +0 -0
  244. {dao_ai-0.0.18 → dao_ai-0.0.19}/examples/dais2025/examples.yaml +0 -0
  245. {dao_ai-0.0.18 → dao_ai-0.0.19}/examples/deep_research/examples.yaml +0 -0
  246. {dao_ai-0.0.18 → dao_ai-0.0.19}/examples/executive_assistant/examples.yaml +0 -0
  247. {dao_ai-0.0.18 → dao_ai-0.0.19}/examples/quick_serve_restaurant/.gitkeep +0 -0
  248. {dao_ai-0.0.18 → dao_ai-0.0.19}/examples/quick_serve_restaurant/examples.yaml +0 -0
  249. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/dais2025/extract_store_numbers.sql +0 -0
  250. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/dais2025/find_inventory_by_sku.sql +0 -0
  251. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/dais2025/find_inventory_by_upc.sql +0 -0
  252. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/dais2025/find_product_by_sku.sql +0 -0
  253. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/dais2025/find_product_by_upc.sql +0 -0
  254. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/dais2025/find_store_by_number.sql +0 -0
  255. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/dais2025/find_store_inventory_by_sku.sql +0 -0
  256. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/dais2025/find_store_inventory_by_upc.sql +0 -0
  257. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/hardware_store/find_inventory_by_sku.sql +0 -0
  258. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/hardware_store/find_inventory_by_upc.sql +0 -0
  259. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/hardware_store/find_product_by_sku.sql +0 -0
  260. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/hardware_store/find_product_by_upc.sql +0 -0
  261. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/hardware_store/find_store_inventory_by_sku.sql +0 -0
  262. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/hardware_store/find_store_inventory_by_upc.sql +0 -0
  263. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/quick_serve_restaurant/.gitkeep +0 -0
  264. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/quick_serve_restaurant/insert_coffee_order.sql +0 -0
  265. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/quick_serve_restaurant/lookup_items_by_descriptions.sql +0 -0
  266. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/quick_serve_restaurant/match_historical_item_order_by_date.sql +0 -0
  267. {dao_ai-0.0.18 → dao_ai-0.0.19}/functions/quick_serve_restaurant/match_item_by_description_and_price.sql +0 -0
  268. {dao_ai-0.0.18 → dao_ai-0.0.19}/notebooks/01_ingest_and_transform.py +0 -0
  269. {dao_ai-0.0.18 → dao_ai-0.0.19}/notebooks/02_provision_vector_search.py +0 -0
  270. {dao_ai-0.0.18 → dao_ai-0.0.19}/notebooks/03_generate_evaluation_data.py +0 -0
  271. {dao_ai-0.0.18 → dao_ai-0.0.19}/notebooks/04_unity_catalog_tools.py +0 -0
  272. {dao_ai-0.0.18 → dao_ai-0.0.19}/notebooks/09_evaluate_inferences.py +0 -0
  273. {dao_ai-0.0.18 → dao_ai-0.0.19}/notebooks/99_scratchpad.py +0 -0
  274. {dao_ai-0.0.18 → dao_ai-0.0.19}/notebooks/INVESTech.py +0 -0
  275. {dao_ai-0.0.18 → dao_ai-0.0.19}/schemas/bundle_config_schema.json +0 -0
  276. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dais2025/__init__.py +0 -0
  277. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dais2025/models.py +0 -0
  278. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dais2025/tools/__init__.py +0 -0
  279. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dais2025/tools/customer.py +0 -0
  280. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dais2025/tools/employee.py +0 -0
  281. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dais2025/tools/executive.py +0 -0
  282. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dais2025/tools/genie.py +0 -0
  283. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dais2025/tools/inventory.py +0 -0
  284. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dais2025/tools/models.py +0 -0
  285. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dais2025/tools/store.py +0 -0
  286. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/__init__.py +0 -0
  287. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/agent_as_code.py +0 -0
  288. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/catalog.py +0 -0
  289. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/chat_models.py +0 -0
  290. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/cli.py +0 -0
  291. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/guardrails.py +0 -0
  292. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/hooks/__init__.py +0 -0
  293. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/hooks/core.py +0 -0
  294. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/memory/__init__.py +0 -0
  295. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/memory/base.py +0 -0
  296. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/messages.py +0 -0
  297. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/nodes.py +0 -0
  298. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/prompts.py +0 -0
  299. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/providers/__init__.py +0 -0
  300. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/providers/base.py +0 -0
  301. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/state.py +0 -0
  302. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/tools/__init__.py +0 -0
  303. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/tools/agent.py +0 -0
  304. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/tools/core.py +0 -0
  305. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/tools/genie.py +0 -0
  306. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/tools/human_in_the_loop.py +0 -0
  307. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/tools/mcp.py +0 -0
  308. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/tools/python.py +0 -0
  309. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/tools/time.py +0 -0
  310. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/tools/unity_catalog.py +0 -0
  311. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/tools/vector_search.py +0 -0
  312. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/types.py +0 -0
  313. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/utils.py +0 -0
  314. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/dao_ai/vector_search.py +0 -0
  315. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/hardware_store/__init__.py +0 -0
  316. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/hardware_store/hooks.py +0 -0
  317. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/hardware_store/tools.py +0 -0
  318. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/quick_serve_restaurant/.gitkeep +0 -0
  319. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/quick_serve_restaurant/__init__.py +0 -0
  320. {dao_ai-0.0.18 → dao_ai-0.0.19}/src/quick_serve_restaurant/tools.py +0 -0
  321. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/config/test_model_config.yaml +0 -0
  322. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/conftest.py +0 -0
  323. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_catalog.py +0 -0
  324. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_chat_history.py +0 -0
  325. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_config.py +0 -0
  326. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_function_parsing.py +0 -0
  327. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_hooks.py +0 -0
  328. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_inference.py +0 -0
  329. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_mcp.py +0 -0
  330. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_messages.py +0 -0
  331. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_models.py +0 -0
  332. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_state.py +0 -0
  333. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_summarization_inference.py +0 -0
  334. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_tools.py +0 -0
  335. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_types.py +0 -0
  336. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_utils.py +0 -0
  337. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/test_vector_search.py +0 -0
  338. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/dao_ai/weather_server_mcp.py +0 -0
  339. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/hardware_store/.gitkeep +0 -0
  340. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/hardware_store/test_graph.py +0 -0
  341. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/images/doritos_upc.png +0 -0
  342. {dao_ai-0.0.18 → dao_ai-0.0.19}/tests/images/lays_upc.png +0 -0
  343. {dao_ai-0.0.18 → dao_ai-0.0.19}/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.18
3
+ Version: 0.0.19
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,22 +24,22 @@ 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.2.0
28
- Requires-Dist: databricks-langchain>=0.4.2
29
- Requires-Dist: databricks-sdk[openai]>=0.55.0
27
+ Requires-Dist: databricks-agents>=1.6.0
28
+ Requires-Dist: databricks-langchain>=0.8.0
29
+ Requires-Dist: databricks-sdk[openai]>=0.66.0
30
30
  Requires-Dist: duckduckgo-search>=8.0.2
31
31
  Requires-Dist: grandalf>=0.8
32
- Requires-Dist: langchain-mcp-adapters>=0.1.9
32
+ Requires-Dist: langchain-mcp-adapters>=0.1.10
33
33
  Requires-Dist: langchain-tavily>=0.2.11
34
34
  Requires-Dist: langchain>=0.3.27
35
35
  Requires-Dist: langgraph-checkpoint-postgres>=2.0.23
36
36
  Requires-Dist: langgraph-supervisor>=0.0.29
37
37
  Requires-Dist: langgraph-swarm>=0.0.14
38
- Requires-Dist: langgraph>=0.6.5
38
+ Requires-Dist: langgraph>=0.6.7
39
39
  Requires-Dist: langmem>=0.0.29
40
40
  Requires-Dist: loguru>=0.7.3
41
- Requires-Dist: mcp>=1.9.1
42
- Requires-Dist: mlflow>=3.3.2
41
+ Requires-Dist: mcp>=1.14.1
42
+ Requires-Dist: mlflow>=3.4.0
43
43
  Requires-Dist: nest-asyncio>=1.6.0
44
44
  Requires-Dist: openevals>=0.0.19
45
45
  Requires-Dist: openpyxl>=3.1.5
@@ -0,0 +1,413 @@
1
+ # yaml-language-server: $schema=../../schemas/model_config_schema.json
2
+
3
+ variables:
4
+ tavily_search_key: &tavily_search_key
5
+ options:
6
+ - env: TAVILY_API_KEY
7
+ - scope: retail_consumer_goods
8
+ secret: TAVILY_API_KEY
9
+
10
+ schemas:
11
+ executive_research_schema: &executive_research_schema
12
+ catalog_name: retail_consumer_goods
13
+ schema_name: store_ops
14
+
15
+ resources:
16
+ llms:
17
+ default_llm: &default_llm
18
+ name: databricks-claude-3-7-sonnet
19
+ temperature: 0.1
20
+ max_tokens: 16384
21
+
22
+ fast_llm: &fast_llm
23
+ name: databricks-meta-llama-3-1-8b-instruct
24
+ temperature: 0.1
25
+ max_tokens: 8192
26
+
27
+ tool_calling_llm: &tool_calling_llm
28
+ name: databricks-claude-3-7-sonnet
29
+ temperature: 0.1
30
+ max_tokens: 16384
31
+ fallbacks:
32
+ - databricks-meta-llama-3-3-70b-instruct
33
+
34
+ reasoning_llm: &reasoning_llm
35
+ name: databricks-claude-3-7-sonnet
36
+ temperature: 0.2
37
+ max_tokens: 16384
38
+
39
+ deep_reasoning_llm: &deep_reasoning_llm
40
+ name: databricks-claude-sonnet-4
41
+ temperature: 0.1
42
+ max_tokens: 32768
43
+ fallbacks:
44
+ - databricks-claude-3-7-sonnet
45
+
46
+ tables:
47
+ employee_performance:
48
+ schema: *executive_research_schema
49
+ name: employee_performance
50
+
51
+ products:
52
+ schema: *executive_research_schema
53
+ name: products
54
+
55
+ inventory:
56
+ schema: *executive_research_schema
57
+ name: inventory
58
+
59
+ customers:
60
+ schema: *executive_research_schema
61
+ name: customers
62
+
63
+ managers:
64
+ schema: *executive_research_schema
65
+ name: managers
66
+
67
+ employee_tasks:
68
+ schema: *executive_research_schema
69
+ name: employee_tasks
70
+
71
+ appointments:
72
+ schema: *executive_research_schema
73
+ name: appointments
74
+
75
+ evaluation:
76
+ schema: *executive_research_schema
77
+ name: evaluation
78
+
79
+ functions:
80
+ find_inventory_by_sku: &find_inventory_by_sku
81
+ schema: *executive_research_schema
82
+ name: find_inventory_by_sku
83
+
84
+ find_inventory_by_upc: &find_inventory_by_upc
85
+ schema: *executive_research_schema
86
+ name: find_inventory_by_upc
87
+
88
+ find_product_by_sku: &find_product_by_sku
89
+ schema: *executive_research_schema
90
+ name: find_product_by_sku
91
+
92
+ find_product_by_upc: &find_product_by_upc
93
+ schema: *executive_research_schema
94
+ name: find_product_by_upc
95
+
96
+ find_store_by_number: &find_store_by_number
97
+ schema: *executive_research_schema
98
+ name: find_store_by_number
99
+
100
+ find_store_inventory_by_sku: &find_store_inventory_by_sku
101
+ schema: *executive_research_schema
102
+ name: find_store_inventory_by_sku
103
+
104
+ find_store_inventory_by_upc: &find_store_inventory_by_upc
105
+ schema: *executive_research_schema
106
+ name: find_store_inventory_by_upc
107
+
108
+ genie_rooms:
109
+ executive_research_genie_room: &executive_research_genie_room
110
+ name: "Executive Research Genie Room"
111
+ description: "A specialized room for deep executive research and analysis"
112
+ space_id: 01f05dd06c421ad6b522bf7a517cf6d2
113
+
114
+ tools:
115
+ executive_research_genie_tool: &executive_research_genie_tool
116
+ name: executive_research_genie_tool
117
+ function:
118
+ type: factory
119
+ name: dao_ai.tools.create_genie_tool
120
+ args:
121
+ name: executive_research_genie_tool
122
+ description: Query the data warehouse for comprehensive business metrics including customer KPIs, financial performance, operational data, employee metrics, inventory levels, and sales data. Optimized for deep analytical research and multi-dimensional analysis.
123
+ genie_room: *executive_research_genie_room
124
+
125
+
126
+ agents:
127
+ research_lead: &research_lead
128
+ name: research_lead
129
+ description: "Research Coordinator and Executive Interface Specialist"
130
+ model: *default_llm
131
+ tools:
132
+ - *executive_research_genie_tool
133
+ prompt: |
134
+ You are the Research Coordinator serving as the primary interface between executives and the deep research team. Your role is to understand executive inquiries, develop comprehensive research strategies, and orchestrate the team of specialists to deliver thorough analysis and strategic recommendations.
135
+
136
+ ## Your Responsibilities:
137
+ - **Inquiry Assessment**: Understand the executive's specific research needs and context
138
+ - **Research Planning**: Develop comprehensive research strategies across all domains
139
+ - **Team Coordination**: Direct specialists based on research requirements
140
+ - **Quality Assurance**: Ensure comprehensive coverage of all relevant aspects
141
+ - **Executive Communication**: Provide status updates and manage expectations
142
+
143
+ ## Research Strategy Framework:
144
+ 1. **Scope Definition**: Clarify research objectives and success criteria
145
+ 2. **Domain Mapping**: Identify which specialist teams are needed (KPI, market, financial, operations)
146
+ 3. **Sequencing**: Determine optimal research workflow and dependencies
147
+ 4. **Timeline Planning**: Establish research milestones and deadlines
148
+ 5. **Quality Standards**: Set expectations for depth and comprehensiveness
149
+
150
+ ## When to Handoff:
151
+ - **Always start** with **kpi_analyst** for foundational data analysis
152
+ - Hand off to **market_intelligence** when external market context is critical
153
+ - Hand off to **financial_strategy** when financial modeling or ROI analysis is needed
154
+ - Hand off to **operations_expert** when operational improvements are in scope
155
+ - Coordinate with **strategy_synthesizer** to ensure all findings are integrated
156
+
157
+ ## Communication Style:
158
+ - **Executive-Level**: Professional, strategic, and focused on business impact
159
+ - **Action-Oriented**: Clear next steps and deliverables
160
+ - **Comprehensive**: Consider all relevant business dimensions
161
+ - **Time-Conscious**: Respect executive time constraints while ensuring thoroughness
162
+
163
+ ## Important Guidelines
164
+ - Limit Graph Recursion to 5 iterations.
165
+ - Run as many tools as you can concurrently
166
+
167
+ You serve as the intelligent orchestrator ensuring that complex executive research questions receive comprehensive, coordinated analysis from all relevant specialist teams.
168
+ handoff_prompt: |
169
+ Hand off to me when starting any new executive research inquiry, when research scope needs to be defined, when multiple specialist teams need coordination, or when ensuring comprehensive coverage across all business dimensions.
170
+
171
+ kpi_analyst: &kpi_analyst
172
+ name: kpi_analyst
173
+ description: "KPI Research and Data Analysis Specialist"
174
+ model: *reasoning_llm
175
+ tools:
176
+ - *executive_research_genie_tool
177
+ prompt: |
178
+ You are a KPI Research Specialist focused on comprehensive data analysis and performance metrics research. Your role is to conduct deep dives into business performance indicators and provide thorough analytical foundations for executive decision-making.
179
+
180
+ ## Your Expertise:
181
+ - Customer metrics analysis (CAC, LTV, churn, retention, satisfaction, NPS)
182
+ - Financial KPIs (revenue, margins, profitability, cash flow, ROI)
183
+ - Operational metrics (inventory turnover, productivity, efficiency ratios)
184
+ - Market performance indicators and competitive benchmarks
185
+ - Statistical analysis and trend identification
186
+
187
+ ## Research Methodology:
188
+ 1. **Data Collection**: Query multiple data sources using genie tool
189
+ 2. **Historical Analysis**: Examine 12+ month trends and seasonality
190
+ 3. **Benchmarking**: Research industry standards and competitor performance
191
+ 4. **Cross-Validation**: Verify findings across multiple data points
192
+ 5. **Statistical Analysis**: Identify correlations and significance
193
+
194
+ ## When to Handoff:
195
+ - Hand off to **market_intelligence** when you need industry context and competitive intelligence
196
+ - Hand off to **financial_strategy** when you discover financial anomalies requiring strategic analysis
197
+ - Hand off to **operations_expert** when operational inefficiencies are identified
198
+ - Hand off to **strategy_synthesizer** when your research is complete for final strategic synthesis
199
+
200
+ ## Important Guidelines
201
+ - Limit Graph Recursion to 5 iterations.
202
+ - Run as many tools as you can concurrently
203
+
204
+ Always provide comprehensive data foundation with specific metrics, trends, and preliminary insights.
205
+ handoff_prompt: |
206
+ Hand off to me when foundational data analysis is needed, when KPI research is required, when historical trends need analysis, when performance metrics need benchmarking, or when starting comprehensive business analysis.
207
+
208
+ market_intelligence: &market_intelligence
209
+ name: market_intelligence
210
+ description: "Market Intelligence and Competitive Analysis Specialist"
211
+ model: *reasoning_llm
212
+ tools:
213
+ - *executive_research_genie_tool
214
+ prompt: |
215
+ You are a Market Intelligence Analyst specializing in external market research, competitive analysis, and industry benchmarking. You provide crucial context for internal performance by analyzing market conditions, competitor strategies, and industry trends.
216
+
217
+ ## Your Expertise:
218
+ - Industry trend analysis and market dynamics
219
+ - Competitive intelligence and benchmarking
220
+ - Regulatory and compliance landscape analysis
221
+ - Market opportunity identification and sizing
222
+ - Customer behavior and preference trends
223
+
224
+ ## Research Approach:
225
+ 1. **Market Landscape**: Comprehensive industry analysis and trends
226
+ 2. **Competitive Analysis**: Direct and indirect competitor performance
227
+ 3. **Regulatory Environment**: Compliance requirements and regulatory changes
228
+ 4. **Customer Insights**: Market research on customer preferences and behavior
229
+ 5. **Opportunity Assessment**: Market gaps and growth opportunities
230
+
231
+ ## When to Handoff:
232
+ - Hand off to **financial_strategy** when market insights need financial modeling
233
+ - Hand off to **operations_expert** when market trends impact operational strategy
234
+ - Hand off to **kpi_analyst** when you need internal data to validate market assumptions
235
+ - Hand off to **strategy_synthesizer** when market analysis is complete
236
+
237
+ ## Important Guidelines
238
+ - Limit Graph Recursion to 5 iterations.
239
+ - Run as many tools as you can concurrently
240
+
241
+ Focus on external market dynamics and how they impact internal performance metrics.
242
+ handoff_prompt: |
243
+ Hand off to me when external market context is needed, when competitive intelligence is required, when industry benchmarking is necessary, when market trends analysis is needed, or when understanding market dynamics that impact business performance.
244
+
245
+ financial_strategy: &financial_strategy
246
+ name: financial_strategy
247
+ description: "Financial Strategy and ROI Analysis Specialist"
248
+ model: *deep_reasoning_llm
249
+ tools:
250
+ - *executive_research_genie_tool
251
+ prompt: |
252
+ You are a Financial Strategy Analyst specializing in financial modeling, ROI analysis, and strategic investment recommendations. You translate business insights into financial impact and provide comprehensive financial analysis for executive decision-making.
253
+
254
+ ## Your Expertise:
255
+ - Financial modeling and forecasting
256
+ - ROI and cost-benefit analysis
257
+ - Investment prioritization and portfolio optimization
258
+ - Cash flow analysis and working capital management
259
+ - Financial risk assessment and mitigation
260
+
261
+ ## Analysis Framework:
262
+ 1. **Financial Impact Modeling**: Quantify the financial implications of strategic initiatives
263
+ 2. **ROI Analysis**: Comprehensive return on investment calculations
264
+ 3. **Cost-Benefit Assessment**: Detailed analysis of costs vs. expected benefits
265
+ 4. **Risk-Adjusted Returns**: Financial projections incorporating risk factors
266
+ 5. **Investment Prioritization**: Ranking initiatives by financial attractiveness
267
+
268
+ ## When to Handoff:
269
+ - Hand off to **operations_expert** when financial analysis reveals operational improvement opportunities
270
+ - Hand off to **market_intelligence** when you need additional market context for financial projections
271
+ - Hand off to **kpi_analyst** when you need more granular performance data
272
+ - Hand off to **strategy_synthesizer** when financial analysis and recommendations are complete
273
+
274
+ ## Important Guidelines
275
+ - Limit Graph Recursion to 5 iterations.
276
+ - Run as many tools as you can concurrently
277
+
278
+ Focus on translating insights into financial impact and strategic investment recommendations.
279
+ handoff_prompt: |
280
+ Hand off to me when financial analysis is required, when ROI modeling is needed, when cost-benefit analysis is necessary, when financial implications of strategies need evaluation, or when investment recommendations are required.
281
+
282
+ operations_expert: &operations_expert
283
+ name: operations_expert
284
+ description: "Operations Optimization and Efficiency Specialist"
285
+ model: *reasoning_llm
286
+ tools:
287
+ - *executive_research_genie_tool
288
+ prompt: |
289
+ You are an Operations Optimization Specialist focused on operational efficiency, process improvement, and tactical implementation strategies. You analyze operational data to identify improvement opportunities and develop actionable implementation plans.
290
+
291
+ ## Your Expertise:
292
+ - Process optimization and efficiency analysis
293
+ - Supply chain and inventory management
294
+ - Employee productivity and performance optimization
295
+ - Operational cost reduction strategies
296
+ - Implementation planning and change management
297
+
298
+ ## Optimization Areas:
299
+ 1. **Process Efficiency**: Identify bottlenecks and improvement opportunities
300
+ 2. **Resource Utilization**: Optimize staff, inventory, and asset utilization
301
+ 3. **Cost Reduction**: Operational cost optimization strategies
302
+ 4. **Quality Improvement**: Process improvements for better outcomes
303
+ 5. **Implementation Planning**: Tactical execution strategies for recommendations
304
+
305
+ ## When to Handoff:
306
+ - Hand off to **financial_strategy** when operational improvements need financial modeling
307
+ - Hand off to **market_intelligence** when you need market context for operational strategies
308
+ - Hand off to **kpi_analyst** when you need detailed performance metrics
309
+ - Hand off to **strategy_synthesizer** when operational analysis and recommendations are complete
310
+
311
+ ## Important Guidelines
312
+ - Limit Graph Recursion to 5 iterations.
313
+ - Run as many tools as you can concurrently
314
+
315
+ Focus on practical, implementable operational improvements with clear success metrics.
316
+ handoff_prompt: |
317
+ Hand off to me when operational efficiency analysis is needed, when process optimization is required, when implementation planning is necessary, when operational cost reduction strategies are needed, or when tactical execution plans are required.
318
+
319
+ strategy_synthesizer: &strategy_synthesizer
320
+ name: strategy_synthesizer
321
+ description: "Executive Strategy Synthesizer and Decision Support Specialist"
322
+ model: *deep_reasoning_llm
323
+ tools:
324
+ - *executive_research_genie_tool
325
+ prompt: |
326
+ You are the Executive Strategy Synthesizer responsible for consolidating research from all specialist agents and creating comprehensive strategic recommendations for C-suite decision-making. You synthesize complex analysis into actionable executive insights.
327
+
328
+ ## Your Role:
329
+ - Synthesize findings from KPI, market, financial, and operational analysis
330
+ - Create executive-level strategic recommendations
331
+ - Prioritize initiatives based on impact and feasibility
332
+ - Develop comprehensive implementation roadmaps
333
+ - Present cohesive strategic narrative for leadership
334
+
335
+ ## Synthesis Framework:
336
+ 1. **Strategic Integration**: Combine insights from all research domains
337
+ 2. **Priority Matrix**: Rank recommendations by impact and feasibility
338
+ 3. **Risk Assessment**: Comprehensive risk analysis across all domains
339
+ 4. **Implementation Roadmap**: Phased execution plan with timelines
340
+ 5. **Success Metrics**: KPIs for measuring strategic initiative success
341
+
342
+ ## Executive Deliverable Structure:
343
+ 1. **Executive Summary** (3-4 key strategic insights)
344
+ 2. **Integrated Analysis** (synthesis of all research findings)
345
+ 3. **Strategic Recommendations** (prioritized action plan)
346
+ 4. **Implementation Roadmap** (phased execution strategy)
347
+ 5. **Risk Management** (comprehensive risk mitigation plan)
348
+ 6. **Success Metrics** (KPIs for tracking progress)
349
+
350
+ ## When to Handoff:
351
+ - Hand off to **kpi_analyst** if critical data gaps are identified
352
+ - Hand off to **market_intelligence** if additional market context is needed
353
+ - Hand off to **financial_strategy** if financial modeling requires refinement
354
+ - Hand off to **operations_expert** if implementation details need optimization
355
+
356
+ ## Important Guidelines
357
+ - Limit Graph Recursion to 5 iterations.
358
+ - Run as many tools as you can concurrently
359
+
360
+ You are the final authority on strategic synthesis and executive communication.
361
+ handoff_prompt: |
362
+ Hand off to me when strategic synthesis is needed, when executive-level recommendations are required, when integrating findings from multiple specialists, when creating comprehensive strategic narratives, or when final executive deliverables are needed.
363
+
364
+ app:
365
+ name: deep_research_executive_assistant
366
+ description: "Deep Research Multi-Agent Executive Assistant for KPI Analysis and Strategic Recommendations"
367
+ log_level: DEBUG
368
+ registered_model:
369
+ schema: *executive_research_schema
370
+ name: deep_research_executive_assistant
371
+ endpoint_name: deep_research_executive_assistant
372
+ environment_vars:
373
+ TAVILY_API_KEY: "{{secrets/retail_consumer_goods/TAVILY_API_KEY}}"
374
+ tags:
375
+ business: rcg
376
+ research: deep
377
+ orchestration: swarm
378
+ permissions:
379
+ - principals: [users]
380
+ entitlements:
381
+ - CAN_QUERY
382
+ agents:
383
+ - *research_lead
384
+ - *kpi_analyst
385
+ - *market_intelligence
386
+ - *financial_strategy
387
+ - *operations_expert
388
+ - *strategy_synthesizer
389
+ orchestration:
390
+ swarm:
391
+ model: *default_llm
392
+ default_agent: research_lead
393
+ handoffs:
394
+ research_lead:
395
+ - kpi_analyst
396
+ - market_intelligence
397
+ - financial_strategy
398
+ - operations_expert
399
+ - strategy_synthesizer
400
+ kpi_analyst:
401
+ - market_intelligence
402
+ - financial_strategy
403
+ - operations_expert
404
+ - strategy_synthesizer
405
+ market_intelligence:
406
+ - financial_strategy
407
+ - strategy_synthesizer
408
+ financial_strategy:
409
+ - operations_expert
410
+ - strategy_synthesizer
411
+ operations_expert:
412
+ - strategy_synthesizer
413
+ strategy_synthesizer: []
@@ -174,7 +174,7 @@ resources:
174
174
  databases:
175
175
  # PostgreSQL database for agent memory and checkpoints
176
176
  retail_database: &retail_database
177
- name: "Retail Database"
177
+ name: "retail-consumer-goods"
178
178
  description: "Database for agent memory and checkpoints"
179
179
 
180
180
  # Database connection parameters
@@ -194,7 +194,7 @@ resources:
194
194
  databases:
195
195
  # PostgreSQL database for agent memory and checkpoints
196
196
  retail_database: &retail_database
197
- name: "Retail Database"
197
+ name: "retail-consumer-goods"
198
198
  description: "Database for agent memory and checkpoints"
199
199
 
200
200
  # Database connection parameters
@@ -175,7 +175,7 @@ resources:
175
175
  databases:
176
176
  # PostgreSQL database for agent memory and checkpoints
177
177
  qsr_database: &qsr_database
178
- name: "Retail Database"
178
+ name: "retail-consumer-goods"
179
179
  description: "Database for agent memory and checkpoints"
180
180
 
181
181
  # Database connection parameters
@@ -2,7 +2,7 @@
2
2
  recommendation_example:
3
3
  messages:
4
4
  - role: user
5
- content: Can you recommend a lamp to match my oak side tables?
5
+ content: Can you a stain color to go with my beige lawn furniture?
6
6
  custom_inputs:
7
7
  configurable:
8
8
  thread_id: "1"
@@ -12,7 +12,7 @@
12
12
  inventory_example:
13
13
  messages:
14
14
  - role: user
15
- content: How many oak tables do we have in stock?
15
+ content: How many big green egg grills do you have in stock?
16
16
  custom_inputs:
17
17
  configurable:
18
18
  thread_id: "1"
@@ -88,6 +88,26 @@
88
88
  content: Can you give me information about this item?
89
89
  image_paths:
90
90
  - tests/images/doritos_upc.png
91
+ custom_inputs:
92
+ configurable:
93
+ thread_id: "1"
94
+ user_id: john_smith
95
+ store_num: 87887
96
+
97
+ favorite_color_is:
98
+ messages:
99
+ - role: user
100
+ content: My favorite color is red?
101
+ custom_inputs:
102
+ configurable:
103
+ thread_id: "1"
104
+ user_id: john_smith
105
+ store_num: 87887
106
+
107
+ what_is_my_favorite_color:
108
+ messages:
109
+ - role: user
110
+ content: What is my favorite color?
91
111
  custom_inputs:
92
112
  configurable:
93
113
  thread_id: "1"
@@ -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 ----------
@@ -44,6 +73,12 @@ print("\n".join(pip_requirements))
44
73
 
45
74
  # COMMAND ----------
46
75
 
76
+ import dao_ai.providers
77
+ import dao_ai.providers.base
78
+ import dao_ai.providers.databricks
79
+
80
+ # COMMAND ----------
81
+
47
82
  # MAGIC %load_ext autoreload
48
83
  # MAGIC %autoreload 2
49
84
 
@@ -27,6 +27,12 @@ sys.path.insert(0, "../src")
27
27
 
28
28
  # COMMAND ----------
29
29
 
30
+ import dao_ai.providers
31
+ import dao_ai.providers.base
32
+ import dao_ai.providers.databricks
33
+
34
+ # COMMAND ----------
35
+
30
36
  # DBTITLE 1,Enable Nest Asyncio for Compatibility
31
37
  import nest_asyncio
32
38
  nest_asyncio.apply()
@@ -23,16 +23,49 @@ sys.path.insert(0, "../src")
23
23
 
24
24
  # COMMAND ----------
25
25
 
26
+ import dao_ai.providers
27
+ import dao_ai.providers.base
28
+ import dao_ai.providers.databricks
29
+
30
+ # COMMAND ----------
31
+
26
32
  import nest_asyncio
27
33
  nest_asyncio.apply()
28
34
 
29
35
  # COMMAND ----------
30
36
 
31
- from rich import print as pprint
37
+ from typing import Sequence
38
+ import os
39
+
40
+ def find_yaml_files_os_walk(base_path: str) -> Sequence[str]:
41
+ if not os.path.exists(base_path):
42
+ raise FileNotFoundError(f"Base path does not exist: {base_path}")
43
+
44
+ if not os.path.isdir(base_path):
45
+ raise NotADirectoryError(f"Base path is not a directory: {base_path}")
46
+
47
+ yaml_files = []
48
+
49
+ for root, dirs, files in os.walk(base_path):
50
+ for file in files:
51
+ if file.lower().endswith(('.yaml', '.yml')):
52
+ yaml_files.append(os.path.join(root, file))
53
+
54
+ return sorted(yaml_files)
55
+
56
+ # COMMAND ----------
57
+
58
+ dbutils.widgets.text(name="config-path", defaultValue="")
59
+
60
+ config_files: Sequence[str] = find_yaml_files_os_walk("../config")
61
+ dbutils.widgets.dropdown(name="config-paths", choices=config_files, defaultValue=next(iter(config_files), ""))
62
+
63
+ config_path: str | None = dbutils.widgets.get("config-path") or None
64
+ project_path: str = dbutils.widgets.get("config-paths") or None
65
+
66
+ config_path: str = config_path or project_path
32
67
 
33
- dbutils.widgets.text(name="config-path", defaultValue="../config/model_config.yaml")
34
- config_path: str = dbutils.widgets.get("config-path")
35
- pprint(config_path)
68
+ print(config_path)
36
69
 
37
70
  # COMMAND ----------
38
71
 
@@ -60,15 +93,12 @@ import yaml
60
93
  from pathlib import Path
61
94
  from rich import print as pprint
62
95
 
63
- dbutils.widgets.text(name="config-path", defaultValue="../config/model_config.yaml")
64
- config_path: str = dbutils.widgets.get("config-path")
65
- pprint(config_path)
66
96
 
67
97
  examples_path: Path = Path.cwd().parent / "examples"
68
98
  projects: Sequence[str] = [item.name for item in examples_path.iterdir() if item.is_dir()]
69
99
 
70
- dbutils.widgets.dropdown(name="project", defaultValue=projects[0], choices=projects)
71
- project: str = dbutils.widgets.get("project")
100
+ dbutils.widgets.dropdown(name="example-project", defaultValue=projects[0], choices=projects)
101
+ project: str = dbutils.widgets.get("example-project")
72
102
 
73
103
  project_examples: Path = Path.cwd().parent / "examples" / project
74
104
  examples_files: Sequence[str] = [item.name for item in project_examples.iterdir() if item.is_file()]