dao-ai 0.0.19__tar.gz → 0.0.20__tar.gz

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