dao-ai 0.0.34__tar.gz → 0.1.7__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 (498) hide show
  1. {dao_ai-0.0.34 → dao_ai-0.1.7}/.gitignore +2 -0
  2. dao_ai-0.1.7/CHANGELOG.md +136 -0
  3. {dao_ai-0.0.34 → dao_ai-0.1.7}/Makefile +11 -3
  4. dao_ai-0.1.7/PKG-INFO +489 -0
  5. dao_ai-0.1.7/README.md +410 -0
  6. dao_ai-0.1.7/config/examples/01_getting_started/README.md +74 -0
  7. dao_ai-0.1.7/config/examples/01_getting_started/minimal.yaml +68 -0
  8. dao_ai-0.1.7/config/examples/02_mcp/README.md +281 -0
  9. dao_ai-0.0.34/config/examples/jira.yaml → dao_ai-0.1.7/config/examples/02_mcp/custom_mcp.yaml +3 -4
  10. dao_ai-0.1.7/config/examples/02_mcp/external_mcp.yaml +59 -0
  11. dao_ai-0.1.7/config/examples/02_mcp/filtered_mcp.yaml +327 -0
  12. dao_ai-0.0.34/config/examples/mcp.yaml → dao_ai-0.1.7/config/examples/02_mcp/managed_mcp.yaml +7 -19
  13. dao_ai-0.0.34/config/examples/slack.yaml → dao_ai-0.1.7/config/examples/02_mcp/slack_integration.yaml +3 -3
  14. dao_ai-0.1.7/config/examples/03_reranking/README.md +322 -0
  15. {dao_ai-0.0.34/config/examples → dao_ai-0.1.7/config/examples/03_reranking}/vector_search_with_reranking.yaml +16 -14
  16. dao_ai-0.1.7/config/examples/04_genie/README.md +106 -0
  17. dao_ai-0.1.7/config/examples/04_genie/genie_basic.yaml +63 -0
  18. dao_ai-0.0.34/config/examples/genie.yaml → dao_ai-0.1.7/config/examples/04_genie/genie_lru_cache.yaml +26 -47
  19. dao_ai-0.1.7/config/examples/04_genie/genie_semantic_cache.yaml +135 -0
  20. dao_ai-0.0.34/config/examples/genie_with_conversion_id.yaml → dao_ai-0.1.7/config/examples/04_genie/genie_with_conversation_id.yaml +8 -21
  21. dao_ai-0.1.7/config/examples/05_memory/README.md +127 -0
  22. dao_ai-0.1.7/config/examples/05_memory/conversation_summarization.yaml +158 -0
  23. dao_ai-0.1.7/config/examples/05_memory/in_memory_basic.yaml +73 -0
  24. dao_ai-0.1.7/config/examples/05_memory/lakebase_persistence.yaml +133 -0
  25. dao_ai-0.1.7/config/examples/05_memory/postgres_persistence.yaml +176 -0
  26. dao_ai-0.1.7/config/examples/06_on_behalf_of_user/README.md +172 -0
  27. dao_ai-0.1.7/config/examples/06_on_behalf_of_user/obo_basic.yaml +194 -0
  28. dao_ai-0.1.7/config/examples/07_human_in_the_loop/README.md +151 -0
  29. dao_ai-0.1.7/config/examples/07_human_in_the_loop/human_in_the_loop.yaml +217 -0
  30. dao_ai-0.1.7/config/examples/08_guardrails/README.md +201 -0
  31. dao_ai-0.1.7/config/examples/08_guardrails/guardrails_basic.yaml +324 -0
  32. dao_ai-0.1.7/config/examples/09_structured_output/README.md +96 -0
  33. dao_ai-0.1.7/config/examples/09_structured_output/structured_output.yaml +48 -0
  34. dao_ai-0.1.7/config/examples/10_agent_integrations/README.md +450 -0
  35. dao_ai-0.1.7/config/examples/10_agent_integrations/agent_bricks.yaml +112 -0
  36. dao_ai-0.1.7/config/examples/10_agent_integrations/kasal.yaml +159 -0
  37. dao_ai-0.1.7/config/examples/11_prompt_engineering/README.md +172 -0
  38. {dao_ai-0.0.34/config/examples → dao_ai-0.1.7/config/examples/11_prompt_engineering}/prompt_optimization.yaml +13 -81
  39. {dao_ai-0.0.34/config/examples → dao_ai-0.1.7/config/examples/11_prompt_engineering}/prompt_registry.yaml +41 -91
  40. dao_ai-0.1.7/config/examples/12_middleware/README.md +1253 -0
  41. dao_ai-0.1.7/config/examples/12_middleware/combined_middleware.yaml +231 -0
  42. dao_ai-0.1.7/config/examples/12_middleware/context_management.yaml +327 -0
  43. dao_ai-0.1.7/config/examples/12_middleware/custom_field_validation.yaml +262 -0
  44. dao_ai-0.1.7/config/examples/12_middleware/limit_middleware.yaml +299 -0
  45. dao_ai-0.1.7/config/examples/12_middleware/logging_middleware.yaml +180 -0
  46. dao_ai-0.1.7/config/examples/12_middleware/pii_middleware.yaml +384 -0
  47. dao_ai-0.1.7/config/examples/12_middleware/retry_middleware.yaml +313 -0
  48. dao_ai-0.1.7/config/examples/12_middleware/tool_selector_middleware.yaml +321 -0
  49. dao_ai-0.1.7/config/examples/13_orchestration/README.md +168 -0
  50. dao_ai-0.1.7/config/examples/13_orchestration/supervisor_pattern.yaml +146 -0
  51. dao_ai-0.1.7/config/examples/13_orchestration/swarm_pattern.yaml +188 -0
  52. dao_ai-0.1.7/config/examples/14_basic_tools/README.md +123 -0
  53. dao_ai-0.1.7/config/examples/14_basic_tools/sql_tool_example.yaml +141 -0
  54. dao_ai-0.1.7/config/examples/15_complete_applications/README.md +308 -0
  55. dao_ai-0.0.34/config/dais2025/model_config_dais.yaml → dao_ai-0.1.7/config/examples/15_complete_applications/brick_store.yaml +21 -92
  56. {dao_ai-0.0.34/config/examples → dao_ai-0.1.7/config/examples/15_complete_applications}/deep_research.yaml +5 -5
  57. {dao_ai-0.0.34/config/examples → dao_ai-0.1.7/config/examples/15_complete_applications}/executive_assistant.yaml +5 -97
  58. {dao_ai-0.0.34/config/examples → dao_ai-0.1.7/config/examples/15_complete_applications}/genie_and_genie_mcp.yaml +4 -23
  59. dao_ai-0.0.34/config/examples/genie_and_vector_search.yaml → dao_ai-0.1.7/config/examples/15_complete_applications/genie_vector_search_hybrid.yaml +7 -9
  60. dao_ai-0.0.34/config/hardware_store/supervisor.yaml → dao_ai-0.1.7/config/examples/15_complete_applications/hardware_store.yaml +63 -153
  61. dao_ai-0.0.34/config/hardware_store/supervisor_postgres.yaml → dao_ai-0.1.7/config/examples/15_complete_applications/hardware_store_lakebase.yaml +62 -313
  62. dao_ai-0.0.34/config/hardware_store/swarm.yaml → dao_ai-0.1.7/config/examples/15_complete_applications/hardware_store_swarm.yaml +60 -309
  63. dao_ai-0.0.34/config/quick_serve_restaurant/quick-serve-restaurant.yaml → dao_ai-0.1.7/config/examples/15_complete_applications/quick_serve_restaurant.yaml +19 -63
  64. dao_ai-0.0.34/config/examples/reservations.yaml → dao_ai-0.1.7/config/examples/15_complete_applications/reservations_system.yaml +7 -20
  65. dao_ai-0.1.7/config/examples/README.md +403 -0
  66. {dao_ai-0.0.34 → dao_ai-0.1.7}/databricks.yaml.template +21 -9
  67. dao_ai-0.1.7/docs/architecture.md +276 -0
  68. dao_ai-0.1.7/docs/cli-reference.md +353 -0
  69. dao_ai-0.1.7/docs/configuration-reference.md +345 -0
  70. dao_ai-0.1.7/docs/contributing.md +343 -0
  71. dao_ai-0.1.7/docs/examples.md +449 -0
  72. dao_ai-0.1.7/docs/faq.md +213 -0
  73. dao_ai-0.1.7/docs/key-capabilities.md +1092 -0
  74. dao_ai-0.1.7/docs/python-api.md +182 -0
  75. dao_ai-0.1.7/docs/why-dao.md +202 -0
  76. dao_ai-0.1.7/environment.yaml +79 -0
  77. {dao_ai-0.0.34 → dao_ai-0.1.7}/notebooks/05_deploy_agent.py +0 -2
  78. {dao_ai-0.0.34 → dao_ai-0.1.7}/notebooks/07_run_evaluation.py +9 -1
  79. {dao_ai-0.0.34 → dao_ai-0.1.7}/notebooks/10_optimize_prompts.py +3 -2
  80. {dao_ai-0.0.34 → dao_ai-0.1.7}/notebooks/99_scratchpad.py +9 -7
  81. {dao_ai-0.0.34 → dao_ai-0.1.7}/pyproject.toml +70 -44
  82. dao_ai-0.1.7/requirements.txt +224 -0
  83. {dao_ai-0.0.34 → dao_ai-0.1.7}/schemas/model_config_schema.json +3164 -1523
  84. dao_ai-0.1.7/src/dao_ai/__init__.py +29 -0
  85. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/agent_as_code.py +2 -5
  86. dao_ai-0.1.7/src/dao_ai/cli.py +1253 -0
  87. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/config.py +1561 -407
  88. dao_ai-0.1.7/src/dao_ai/genie/__init__.py +38 -0
  89. dao_ai-0.1.7/src/dao_ai/genie/cache/__init__.py +43 -0
  90. dao_ai-0.1.7/src/dao_ai/genie/cache/base.py +72 -0
  91. dao_ai-0.1.7/src/dao_ai/genie/cache/core.py +79 -0
  92. dao_ai-0.1.7/src/dao_ai/genie/cache/lru.py +347 -0
  93. dao_ai-0.1.7/src/dao_ai/genie/cache/semantic.py +970 -0
  94. dao_ai-0.1.7/src/dao_ai/genie/core.py +35 -0
  95. dao_ai-0.1.7/src/dao_ai/graph.py +37 -0
  96. dao_ai-0.1.7/src/dao_ai/hooks/__init__.py +22 -0
  97. dao_ai-0.1.7/src/dao_ai/hooks/core.py +55 -0
  98. dao_ai-0.1.7/src/dao_ai/logging.py +56 -0
  99. dao_ai-0.1.7/src/dao_ai/memory/__init__.py +22 -0
  100. dao_ai-0.1.7/src/dao_ai/memory/core.py +156 -0
  101. dao_ai-0.1.7/src/dao_ai/memory/databricks.py +402 -0
  102. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/memory/postgres.py +79 -38
  103. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/messages.py +6 -4
  104. dao_ai-0.1.7/src/dao_ai/middleware/__init__.py +163 -0
  105. dao_ai-0.1.7/src/dao_ai/middleware/assertions.py +806 -0
  106. dao_ai-0.1.7/src/dao_ai/middleware/base.py +50 -0
  107. dao_ai-0.1.7/src/dao_ai/middleware/context_editing.py +230 -0
  108. dao_ai-0.1.7/src/dao_ai/middleware/core.py +67 -0
  109. dao_ai-0.1.7/src/dao_ai/middleware/guardrails.py +420 -0
  110. dao_ai-0.1.7/src/dao_ai/middleware/human_in_the_loop.py +233 -0
  111. dao_ai-0.1.7/src/dao_ai/middleware/message_validation.py +586 -0
  112. dao_ai-0.1.7/src/dao_ai/middleware/model_call_limit.py +77 -0
  113. dao_ai-0.1.7/src/dao_ai/middleware/model_retry.py +121 -0
  114. dao_ai-0.1.7/src/dao_ai/middleware/pii.py +157 -0
  115. dao_ai-0.1.7/src/dao_ai/middleware/summarization.py +197 -0
  116. dao_ai-0.1.7/src/dao_ai/middleware/tool_call_limit.py +210 -0
  117. dao_ai-0.1.7/src/dao_ai/middleware/tool_retry.py +174 -0
  118. dao_ai-0.1.7/src/dao_ai/middleware/tool_selector.py +129 -0
  119. dao_ai-0.1.7/src/dao_ai/models.py +2083 -0
  120. dao_ai-0.1.7/src/dao_ai/nodes.py +317 -0
  121. dao_ai-0.1.7/src/dao_ai/optimization.py +674 -0
  122. dao_ai-0.1.7/src/dao_ai/orchestration/__init__.py +52 -0
  123. dao_ai-0.1.7/src/dao_ai/orchestration/core.py +294 -0
  124. dao_ai-0.1.7/src/dao_ai/orchestration/supervisor.py +279 -0
  125. dao_ai-0.1.7/src/dao_ai/orchestration/swarm.py +271 -0
  126. dao_ai-0.1.7/src/dao_ai/prompts.py +86 -0
  127. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/providers/databricks.py +473 -516
  128. dao_ai-0.1.7/src/dao_ai/state.py +177 -0
  129. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/tools/__init__.py +16 -6
  130. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/tools/agent.py +1 -3
  131. dao_ai-0.1.7/src/dao_ai/tools/core.py +112 -0
  132. dao_ai-0.1.7/src/dao_ai/tools/email.py +232 -0
  133. dao_ai-0.1.7/src/dao_ai/tools/genie.py +238 -0
  134. dao_ai-0.1.7/src/dao_ai/tools/mcp.py +554 -0
  135. dao_ai-0.1.7/src/dao_ai/tools/memory.py +50 -0
  136. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/tools/python.py +9 -14
  137. dao_ai-0.1.7/src/dao_ai/tools/search.py +14 -0
  138. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/tools/slack.py +22 -10
  139. dao_ai-0.1.7/src/dao_ai/tools/sql.py +202 -0
  140. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/tools/time.py +30 -7
  141. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/tools/unity_catalog.py +142 -94
  142. dao_ai-0.1.7/src/dao_ai/tools/vector_search.py +392 -0
  143. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/utils.py +113 -20
  144. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/vector_search.py +37 -0
  145. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/config/test_model_config.yaml +38 -86
  146. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/conftest.py +78 -4
  147. dao_ai-0.1.7/tests/dao_ai/middleware/test_context_editing.py +187 -0
  148. dao_ai-0.1.7/tests/dao_ai/middleware/test_model_call_limit.py +102 -0
  149. dao_ai-0.1.7/tests/dao_ai/middleware/test_model_retry.py +127 -0
  150. dao_ai-0.1.7/tests/dao_ai/middleware/test_pii.py +205 -0
  151. dao_ai-0.1.7/tests/dao_ai/middleware/test_tool_call_limit.py +228 -0
  152. dao_ai-0.1.7/tests/dao_ai/middleware/test_tool_retry.py +152 -0
  153. dao_ai-0.1.7/tests/dao_ai/middleware/test_tool_selector.py +193 -0
  154. dao_ai-0.1.7/tests/dao_ai/test_agent_response_format.py +244 -0
  155. dao_ai-0.1.7/tests/dao_ai/test_assertions_middleware.py +542 -0
  156. dao_ai-0.1.7/tests/dao_ai/test_chat_history.py +278 -0
  157. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_config.py +0 -16
  158. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_databricks.py +551 -13
  159. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_function_parsing.py +43 -26
  160. dao_ai-0.1.7/tests/dao_ai/test_genie.py +2988 -0
  161. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_genie_conversation_ids_in_outputs.py +62 -26
  162. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_genie_databricks_integration.py +44 -38
  163. dao_ai-0.1.7/tests/dao_ai/test_genie_room_model.py +939 -0
  164. dao_ai-0.1.7/tests/dao_ai/test_guardrail_retry.py +237 -0
  165. dao_ai-0.1.7/tests/dao_ai/test_hitl_config_model.py +112 -0
  166. dao_ai-0.1.7/tests/dao_ai/test_hitl_responses_agent.py +464 -0
  167. dao_ai-0.1.7/tests/dao_ai/test_human_in_the_loop.py +349 -0
  168. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_inference_integration.py +17 -6
  169. dao_ai-0.1.7/tests/dao_ai/test_input_output_structure.py +466 -0
  170. dao_ai-0.1.7/tests/dao_ai/test_interrupt_type.py +163 -0
  171. dao_ai-0.1.7/tests/dao_ai/test_llm_interrupt_handling.py +359 -0
  172. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_mcp.py +50 -13
  173. dao_ai-0.1.7/tests/dao_ai/test_mcp_filtering.py +256 -0
  174. dao_ai-0.1.7/tests/dao_ai/test_mcp_filtering_integration.py +513 -0
  175. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_mcp_function_model.py +140 -30
  176. dao_ai-0.1.7/tests/dao_ai/test_message_validation_middleware.py +276 -0
  177. dao_ai-0.1.7/tests/dao_ai/test_optimization.py +1006 -0
  178. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_prompt_optimizations.py +130 -159
  179. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_prompts.py +59 -46
  180. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_reranking.py +95 -35
  181. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_reranking_integration.py +20 -1
  182. dao_ai-0.1.7/tests/dao_ai/test_resources_model_genie_integration.py +620 -0
  183. dao_ai-0.1.7/tests/dao_ai/test_response_format.py +212 -0
  184. dao_ai-0.1.7/tests/dao_ai/test_responses_agent_structured_output_unit.py +368 -0
  185. dao_ai-0.1.7/tests/dao_ai/test_semantic_cache_context.py +674 -0
  186. dao_ai-0.1.7/tests/dao_ai/test_sql_tool.py +162 -0
  187. dao_ai-0.1.7/tests/dao_ai/test_sql_tool_integration.py +327 -0
  188. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_state.py +5 -5
  189. dao_ai-0.1.7/tests/dao_ai/test_summarization_inference.py +311 -0
  190. dao_ai-0.1.7/tests/dao_ai/test_swarm_middleware.py +418 -0
  191. dao_ai-0.1.7/tests/dao_ai/test_tools.py +33 -0
  192. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_types.py +6 -6
  193. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_unity_catalog.py +16 -11
  194. dao_ai-0.1.7/tests/dao_ai/test_utils_type_from_fqn.py +73 -0
  195. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/hardware_store/test_graph.py +2 -5
  196. dao_ai-0.0.34/CHANGELOG.md +0 -34
  197. dao_ai-0.0.34/PKG-INFO +0 -1169
  198. dao_ai-0.0.34/README.md +0 -1092
  199. dao_ai-0.0.34/apps/dais2025/store-app/Makefile +0 -120
  200. dao_ai-0.0.34/apps/dais2025/store-app/REFACTORING_SUMMARY.md +0 -169
  201. dao_ai-0.0.34/apps/dais2025/store-app/base-environment-serverless.yaml +0 -3
  202. dao_ai-0.0.34/apps/dais2025/store-app/demo_docs/BRAND_REP_DEMO_SUMMARY.md +0 -141
  203. dao_ai-0.0.34/apps/dais2025/store-app/demo_docs/demo_scripts/brand_rep_product_education_demo.md +0 -101
  204. dao_ai-0.0.34/apps/dais2025/store-app/demo_docs/demo_scripts/store_associate_ai_assistant_demo.md +0 -79
  205. dao_ai-0.0.34/apps/dais2025/store-app/demo_docs/demo_scripts/store_manager_alert_response_demo.md +0 -217
  206. dao_ai-0.0.34/apps/dais2025/store-app/development_workflows.md +0 -114
  207. dao_ai-0.0.34/apps/dais2025/store-app/docs/Makefile +0 -61
  208. dao_ai-0.0.34/apps/dais2025/store-app/docs/agent_implementation.mmd +0 -77
  209. dao_ai-0.0.34/apps/dais2025/store-app/docs/agent_tools_architecture.mmd +0 -104
  210. dao_ai-0.0.34/apps/dais2025/store-app/docs/agents-and-tools/agent-troubleshooting.md +0 -877
  211. dao_ai-0.0.34/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-best-practices.md +0 -672
  212. dao_ai-0.0.34/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-development-patterns.md +0 -516
  213. dao_ai-0.0.34/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-performance.md +0 -596
  214. dao_ai-0.0.34/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-quickstart.md +0 -428
  215. dao_ai-0.0.34/apps/dais2025/store-app/docs/agents-and-tools/ai-agents.md +0 -881
  216. dao_ai-0.0.34/apps/dais2025/store-app/docs/agents-and-tools/overview.md +0 -230
  217. dao_ai-0.0.34/apps/dais2025/store-app/docs/agents-and-tools/references/agent-reference.md +0 -262
  218. dao_ai-0.0.34/apps/dais2025/store-app/docs/agents-and-tools/references/tools-reference.md +0 -622
  219. dao_ai-0.0.34/apps/dais2025/store-app/docs/applications/streamlit-app.md +0 -417
  220. dao_ai-0.0.34/apps/dais2025/store-app/docs/architecture/overview.md +0 -163
  221. dao_ai-0.0.34/apps/dais2025/store-app/docs/architecture.mmd +0 -122
  222. dao_ai-0.0.34/apps/dais2025/store-app/docs/architecture.png +0 -0
  223. dao_ai-0.0.34/apps/dais2025/store-app/docs/customer_preparation_guide.md +0 -343
  224. dao_ai-0.0.34/apps/dais2025/store-app/docs/databricks_integration.mmd +0 -122
  225. dao_ai-0.0.34/apps/dais2025/store-app/docs/deployment/production.md +0 -323
  226. dao_ai-0.0.34/apps/dais2025/store-app/docs/development/contributing.md +0 -361
  227. dao_ai-0.0.34/apps/dais2025/store-app/docs/employee_tools_guide.md +0 -228
  228. dao_ai-0.0.34/apps/dais2025/store-app/docs/getting-started/installation.md +0 -288
  229. dao_ai-0.0.34/apps/dais2025/store-app/docs/getting-started/mkdocs-quickstart.md +0 -363
  230. dao_ai-0.0.34/apps/dais2025/store-app/docs/getting-started/quick-start.md +0 -227
  231. dao_ai-0.0.34/apps/dais2025/store-app/docs/index.md +0 -97
  232. dao_ai-0.0.34/apps/dais2025/store-app/docs/mkdocs.yml +0 -112
  233. dao_ai-0.0.34/apps/dais2025/store-app/docs/scenario_1_architecture.mmd +0 -102
  234. dao_ai-0.0.34/apps/dais2025/store-app/docs/scenario_1_flow.mmd +0 -62
  235. dao_ai-0.0.34/apps/dais2025/store-app/docs/setup-docs.sh +0 -61
  236. dao_ai-0.0.34/apps/dais2025/store-app/docs/task_assignment_workflow_guide.md +0 -383
  237. dao_ai-0.0.34/apps/dais2025/store-app/docs/tools/overview.md +0 -690
  238. dao_ai-0.0.34/apps/dais2025/store-app/examples/customer_preparation_workflow.py +0 -213
  239. dao_ai-0.0.34/apps/dais2025/store-app/examples/task_assignment_workflow.py +0 -217
  240. dao_ai-0.0.34/apps/dais2025/store-app/load-env.sh +0 -29
  241. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/CSS_REFACTORING_SUMMARY.md +0 -208
  242. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/DEMO_CONTROLS_RESTORED.md +0 -122
  243. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/DEMO_IMPLEMENTATION_SUMMARY.md +0 -137
  244. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/DEMO_QUICK_START.md +0 -102
  245. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/Dockerfile +0 -26
  246. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/HOMEPAGE_README.md +0 -192
  247. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/Makefile +0 -273
  248. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/README.md +0 -151
  249. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/app.py +0 -61
  250. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/app.yaml +0 -11
  251. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/__init__.py +0 -16
  252. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/backup_homepage.py +0 -4041
  253. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/chat.py +0 -453
  254. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/enhanced_charts.py +0 -449
  255. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/enhanced_navigation.py +0 -685
  256. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/__init__.py +0 -5
  257. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/__init__.py +0 -17
  258. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/associate_homepage.py +0 -254
  259. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/dashboard_tab.py +0 -452
  260. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/my_tasks_tab.py +0 -1009
  261. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/performance_tab.py +0 -440
  262. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/products_tab.py +0 -316
  263. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/schedule_tab.py +0 -431
  264. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/__init__.py +0 -18
  265. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/chat_integration.py +0 -158
  266. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/kpi_summary.py +0 -219
  267. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/notifications.py +0 -74
  268. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/homepage.py +0 -588
  269. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/__init__.py +0 -19
  270. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/alerts_tab.py +0 -1335
  271. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/analytics_tab.py +0 -178
  272. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/dashboard_tab.py +0 -476
  273. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/demo_alerts.py +0 -308
  274. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/inventory_tab.py +0 -155
  275. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/manager_homepage.py +0 -35
  276. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/operations_tab.py +0 -129
  277. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/team_tab.py +0 -158
  278. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/__init__.py +0 -5
  279. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/ai_insights_tab.py +0 -790
  280. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/executive_dashboard_tab.py +0 -1018
  281. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/geographical_analysis_tab.py +0 -675
  282. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/performance_metrics_tab.py +0 -852
  283. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/strategic_insights_tab.py +0 -893
  284. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/vp_homepage.py +0 -28
  285. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/metrics.py +0 -56
  286. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/navigation.py +0 -52
  287. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/oldhomepage.py +0 -4031
  288. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/components/styles.py +0 -64
  289. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/config.yaml +0 -73
  290. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/demo_docs/BRAND_REP_DEMO_SUMMARY.md +0 -141
  291. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/demo_docs/comprehensive_demo_script.md +0 -273
  292. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/brand_rep_product_education_demo.md +0 -101
  293. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/store_associate_ai_assistant_demo.md +0 -79
  294. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/store_manager_alert_response_demo.md +0 -217
  295. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/dev/README.md +0 -79
  296. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/dev/__init__.py +0 -6
  297. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/dev/components/__init__.py +0 -1
  298. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/dev/components/dashboard_card.py +0 -53
  299. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/dev/demo_alerts.py +0 -308
  300. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/dev/examples/sample_dashboard.py +0 -175
  301. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/pages/__init__.py +0 -3
  302. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/pages/component_showcase.py +0 -807
  303. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/pages/dev_playground.py +0 -370
  304. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/pages/playground.py +0 -458
  305. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/pages_wip/daily_operations.py +0 -959
  306. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/pages_wip/inventory.py +0 -625
  307. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_schedule.py +0 -664
  308. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_tasks.py +0 -505
  309. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/pages_wip/orders.py +0 -560
  310. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/pages_wip/products_promotions.py +0 -720
  311. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/pages_wip/staff.py +0 -548
  312. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/pages_wip/team_insights.py +0 -1079
  313. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/pyproject.toml +0 -92
  314. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/requirements.txt +0 -571
  315. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/static/css/style.css +0 -150
  316. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/styles/README.md +0 -239
  317. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/styles/__init__.py +0 -75
  318. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/styles/base.py +0 -362
  319. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/styles/components.py +0 -616
  320. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/styles/dashboard.py +0 -625
  321. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/styles/homepage.py +0 -506
  322. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/styles/theme.py +0 -129
  323. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/test_vip_notification.py +0 -51
  324. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/tests/test_calculations.py +0 -74
  325. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/utils/config.py +0 -17
  326. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/utils/database.py +0 -346
  327. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/utils/model_serving.py +0 -243
  328. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app/utils/store_context.py +0 -240
  329. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/Makefile +0 -258
  330. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/README.md +0 -225
  331. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/app.py +0 -136
  332. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/__init__.py +0 -31
  333. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/__init__.py +0 -85
  334. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_components.py +0 -491
  335. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_components_enhanced.py +0 -1335
  336. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_styles.py +0 -774
  337. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin_styles.py +0 -749
  338. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/TAILADMIN_README.md +0 -500
  339. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/homepage_tailadmin.py +0 -279
  340. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/tailadmin_demo.py +0 -257
  341. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/tailadmin_implementation_guide.py +0 -698
  342. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/test_vp_dashboard.py +0 -126
  343. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/vp_dashboard_enhanced.py +0 -802
  344. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/vp_dashboard_tailadmin.py +0 -880
  345. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/components_demo.py +0 -574
  346. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/homepage.py +0 -300
  347. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/implementation_guide.py +0 -615
  348. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/vp_dashboard_clean.py +0 -745
  349. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/vp_dashboard_enhanced.py +0 -679
  350. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/pyproject.toml +0 -71
  351. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/__init__.py +0 -1
  352. dao_ai-0.0.34/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/test_imports.py +0 -61
  353. dao_ai-0.0.34/apps/dais2025/store-app/tests/README.md +0 -142
  354. dao_ai-0.0.34/apps/dais2025/store-app/tests/manager_demo_script.md +0 -157
  355. dao_ai-0.0.34/apps/dais2025/store-app/tests/notebook_vector_search_test.py +0 -215
  356. dao_ai-0.0.34/apps/dais2025/store-app/tests/test_vector_search_integration.py +0 -296
  357. dao_ai-0.0.34/config/examples/human_in_the_loop.yaml +0 -42
  358. dao_ai-0.0.34/config/examples/mcp_with_uc_connection.yaml +0 -157
  359. dao_ai-0.0.34/config/examples/minimal.yaml +0 -79
  360. dao_ai-0.0.34/environment.yaml +0 -82
  361. dao_ai-0.0.34/functions/quick_serve_restaurant/.gitkeep +0 -0
  362. dao_ai-0.0.34/notebooks/INVESTech.py +0 -90
  363. dao_ai-0.0.34/requirements.txt +0 -210
  364. dao_ai-0.0.34/src/dao_ai/chat_models.py +0 -204
  365. dao_ai-0.0.34/src/dao_ai/cli.py +0 -650
  366. dao_ai-0.0.34/src/dao_ai/graph.py +0 -263
  367. dao_ai-0.0.34/src/dao_ai/guardrails.py +0 -112
  368. dao_ai-0.0.34/src/dao_ai/hooks/__init__.py +0 -19
  369. dao_ai-0.0.34/src/dao_ai/hooks/core.py +0 -223
  370. dao_ai-0.0.34/src/dao_ai/memory/__init__.py +0 -12
  371. dao_ai-0.0.34/src/dao_ai/memory/core.py +0 -121
  372. dao_ai-0.0.34/src/dao_ai/models.py +0 -911
  373. dao_ai-0.0.34/src/dao_ai/nodes.py +0 -238
  374. dao_ai-0.0.34/src/dao_ai/prompts.py +0 -47
  375. dao_ai-0.0.34/src/dao_ai/providers/__init__.py +0 -0
  376. dao_ai-0.0.34/src/dao_ai/state.py +0 -41
  377. dao_ai-0.0.34/src/dao_ai/tools/core.py +0 -59
  378. dao_ai-0.0.34/src/dao_ai/tools/genie.py +0 -160
  379. dao_ai-0.0.34/src/dao_ai/tools/human_in_the_loop.py +0 -100
  380. dao_ai-0.0.34/src/dao_ai/tools/mcp.py +0 -195
  381. dao_ai-0.0.34/src/dao_ai/tools/vector_search.py +0 -309
  382. dao_ai-0.0.34/src/hardware_store/__init__.py +0 -0
  383. dao_ai-0.0.34/src/hardware_store/hooks.py +0 -68
  384. dao_ai-0.0.34/src/hardware_store/tools.py +0 -532
  385. dao_ai-0.0.34/src/quick_serve_restaurant/.gitkeep +0 -0
  386. dao_ai-0.0.34/src/quick_serve_restaurant/__init__.py +0 -0
  387. dao_ai-0.0.34/src/quick_serve_restaurant/tools.py +0 -82
  388. dao_ai-0.0.34/tests/dao_ai/test_chat_history.py +0 -465
  389. dao_ai-0.0.34/tests/dao_ai/test_genie.py +0 -982
  390. dao_ai-0.0.34/tests/dao_ai/test_summarization_inference.py +0 -394
  391. dao_ai-0.0.34/tests/dao_ai/test_tools.py +0 -228
  392. dao_ai-0.0.34/tests/hardware_store/.gitkeep +0 -0
  393. dao_ai-0.0.34/tests/images/doritos_upc.png +0 -0
  394. dao_ai-0.0.34/tests/images/lays_upc.png +0 -0
  395. dao_ai-0.0.34/tests/quick_serve_restaurant/.gitkeep +0 -0
  396. {dao_ai-0.0.34 → dao_ai-0.1.7}/.python-version +0 -0
  397. {dao_ai-0.0.34 → dao_ai-0.1.7}/CONTRIBUTING.md +0 -0
  398. {dao_ai-0.0.34 → dao_ai-0.1.7}/LICENSE +0 -0
  399. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/appointments.sql +0 -0
  400. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/appointments_data.sql +0 -0
  401. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/brand_rep_demo_data.sql +0 -0
  402. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/brand_rep_demo_queries.sql +0 -0
  403. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/brand_rep_demo_tables.sql +0 -0
  404. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/brand_rep_demo_validation.sql +0 -0
  405. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/customers.sql +0 -0
  406. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/customers_data.sql +0 -0
  407. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/dim_stores.sql +0 -0
  408. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/dim_stores_data.sql +0 -0
  409. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/employee_performance.sql +0 -0
  410. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/employee_performance_data.sql +0 -0
  411. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/employee_tasks.sql +0 -0
  412. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/employee_tasks_data.sql +0 -0
  413. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/inventory.sql +0 -0
  414. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/inventory_data.sql +0 -0
  415. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/managers.sql +0 -0
  416. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/managers_data.sql +0 -0
  417. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/product_data.sql +0 -0
  418. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/products.sql +0 -0
  419. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/dais2025/task_assignments.sql +0 -0
  420. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/hardware_store/inventory.snappy.parquet +0 -0
  421. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/hardware_store/inventory.sql +0 -0
  422. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/hardware_store/products.snappy.parquet +0 -0
  423. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/hardware_store/products.sql +0 -0
  424. {dao_ai-0.0.34/apps/dais2025/store-app/docs → dao_ai-0.1.7/data/quick_serve_restaurant}/.gitkeep +0 -0
  425. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/quick_serve_restaurant/fulfil_item_orders.sql +0 -0
  426. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/quick_serve_restaurant/items_description.csv +0 -0
  427. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/quick_serve_restaurant/items_description.sql +0 -0
  428. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/quick_serve_restaurant/items_raw.csv +0 -0
  429. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/quick_serve_restaurant/items_raw.sql +0 -0
  430. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/quick_serve_restaurant/orders_raw.csv +0 -0
  431. {dao_ai-0.0.34 → dao_ai-0.1.7}/data/quick_serve_restaurant/orders_raw.sql +0 -0
  432. {dao_ai-0.0.34 → dao_ai-0.1.7}/docs/hardware_store/README.md +0 -0
  433. {dao_ai-0.0.34 → dao_ai-0.1.7}/docs/hardware_store/retail_supervisor.png +0 -0
  434. {dao_ai-0.0.34 → dao_ai-0.1.7}/docs/hardware_store/retail_swarm.png +0 -0
  435. {dao_ai-0.0.34/docs → dao_ai-0.1.7/docs/images}/genie.png +0 -0
  436. {dao_ai-0.0.34/apps/dais2025/store-app/tests → dao_ai-0.1.7/docs/quick_serve_restaurant}/.gitkeep +0 -0
  437. {dao_ai-0.0.34 → dao_ai-0.1.7}/docs/quick_serve_restaurant/quick-serve-restaurant.png +0 -0
  438. {dao_ai-0.0.34 → dao_ai-0.1.7}/examples/dais2025/examples.yaml +0 -0
  439. {dao_ai-0.0.34 → dao_ai-0.1.7}/examples/deep_research/examples.yaml +0 -0
  440. {dao_ai-0.0.34 → dao_ai-0.1.7}/examples/executive_assistant/examples.yaml +0 -0
  441. {dao_ai-0.0.34 → dao_ai-0.1.7}/examples/hardware_store/examples.yaml +0 -0
  442. {dao_ai-0.0.34/config → dao_ai-0.1.7/examples}/quick_serve_restaurant/.gitkeep +0 -0
  443. {dao_ai-0.0.34 → dao_ai-0.1.7}/examples/quick_serve_restaurant/examples.yaml +0 -0
  444. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/dais2025/extract_store_numbers.sql +0 -0
  445. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/dais2025/find_inventory_by_sku.sql +0 -0
  446. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/dais2025/find_inventory_by_upc.sql +0 -0
  447. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/dais2025/find_product_by_sku.sql +0 -0
  448. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/dais2025/find_product_by_upc.sql +0 -0
  449. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/dais2025/find_store_by_number.sql +0 -0
  450. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/dais2025/find_store_inventory_by_sku.sql +0 -0
  451. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/dais2025/find_store_inventory_by_upc.sql +0 -0
  452. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/hardware_store/find_inventory_by_sku.sql +0 -0
  453. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/hardware_store/find_inventory_by_upc.sql +0 -0
  454. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/hardware_store/find_product_by_sku.sql +0 -0
  455. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/hardware_store/find_product_by_upc.sql +0 -0
  456. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/hardware_store/find_store_inventory_by_sku.sql +0 -0
  457. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/hardware_store/find_store_inventory_by_upc.sql +0 -0
  458. {dao_ai-0.0.34/data → dao_ai-0.1.7/functions}/quick_serve_restaurant/.gitkeep +0 -0
  459. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/quick_serve_restaurant/insert_coffee_order.sql +0 -0
  460. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/quick_serve_restaurant/lookup_items_by_descriptions.sql +0 -0
  461. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/quick_serve_restaurant/match_historical_item_order_by_date.sql +0 -0
  462. {dao_ai-0.0.34 → dao_ai-0.1.7}/functions/quick_serve_restaurant/match_item_by_description_and_price.sql +0 -0
  463. {dao_ai-0.0.34 → dao_ai-0.1.7}/notebooks/01_ingest_and_transform.py +0 -0
  464. {dao_ai-0.0.34 → dao_ai-0.1.7}/notebooks/02_provision_vector_search.py +0 -0
  465. {dao_ai-0.0.34 → dao_ai-0.1.7}/notebooks/03_provision_lakebase.py +0 -0
  466. {dao_ai-0.0.34 → dao_ai-0.1.7}/notebooks/04_unity_catalog_tools.py +0 -0
  467. {dao_ai-0.0.34 → dao_ai-0.1.7}/notebooks/06_generate_evaluation_data.py +0 -0
  468. {dao_ai-0.0.34 → dao_ai-0.1.7}/notebooks/08_run_examples.py +0 -0
  469. {dao_ai-0.0.34 → dao_ai-0.1.7}/notebooks/09_evaluate_inferences.py +0 -0
  470. {dao_ai-0.0.34 → dao_ai-0.1.7}/schemas/bundle_config_schema.json +0 -0
  471. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dais2025/__init__.py +0 -0
  472. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dais2025/models.py +0 -0
  473. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dais2025/tools/__init__.py +0 -0
  474. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dais2025/tools/customer.py +0 -0
  475. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dais2025/tools/employee.py +0 -0
  476. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dais2025/tools/executive.py +0 -0
  477. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dais2025/tools/genie.py +0 -0
  478. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dais2025/tools/inventory.py +0 -0
  479. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dais2025/tools/models.py +0 -0
  480. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dais2025/tools/store.py +0 -0
  481. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/catalog.py +0 -0
  482. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/memory/base.py +0 -0
  483. {dao_ai-0.0.34/src/dao_ai → dao_ai-0.1.7/src/dao_ai/providers}/__init__.py +0 -0
  484. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/providers/base.py +0 -0
  485. {dao_ai-0.0.34 → dao_ai-0.1.7}/src/dao_ai/types.py +0 -0
  486. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_catalog.py +0 -0
  487. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_hooks.py +0 -0
  488. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_inference.py +0 -0
  489. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_messages.py +0 -0
  490. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_models.py +0 -0
  491. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_postgres_integration.py +0 -0
  492. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_utils.py +0 -0
  493. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/test_vector_search.py +0 -0
  494. {dao_ai-0.0.34 → dao_ai-0.1.7}/tests/dao_ai/weather_server_mcp.py +0 -0
  495. {dao_ai-0.0.34/docs/quick_serve_restaurant → dao_ai-0.1.7/tests/hardware_store}/.gitkeep +0 -0
  496. {dao_ai-0.0.34/apps/dais2025/store-app → dao_ai-0.1.7}/tests/images/doritos_upc.png +0 -0
  497. {dao_ai-0.0.34/apps/dais2025/store-app → dao_ai-0.1.7}/tests/images/lays_upc.png +0 -0
  498. {dao_ai-0.0.34/examples → dao_ai-0.1.7/tests}/quick_serve_restaurant/.gitkeep +0 -0
@@ -276,3 +276,5 @@ mlruns/
276
276
 
277
277
  # Generated bundle configurations (created from databricks.yaml.template at deployment time)
278
278
  databricks.yaml
279
+
280
+ .cursor/
@@ -0,0 +1,136 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - **MCP Tool Filtering**: Control which tools are loaded from MCP servers
12
+ - `include_tools`: Optional allowlist with glob pattern support (e.g., `["query_*", "list_*"]`)
13
+ - `exclude_tools`: Optional denylist with glob pattern support (e.g., `["drop_*", "delete_*"]`)
14
+ - Precedence: exclude always overrides include for maximum security
15
+ - Pattern syntax: `*` (any chars), `?` (single char), `[abc]` (char set), `[!abc]` (negation)
16
+ - Use cases: Security (block dangerous operations), performance (reduce context), access control
17
+ - New example config: `config/examples/02_mcp/filtered_mcp.yaml` with 6 filtering strategies
18
+ - Comprehensive documentation in configuration reference and MCP README
19
+
20
+ - **CLI: list-mcp-tools Command**: Discover and inspect MCP tools from configuration
21
+ - Lists all available tools from configured MCP servers with full details
22
+ - Shows tool descriptions (no truncation), parameters, types, and requirements
23
+ - Pretty-printed schemas in readable format (53% more compact than JSON)
24
+ - Filter statistics: total available, included, and excluded tool counts
25
+ - `--apply-filters` flag: Show only tools that will be loaded (respects include/exclude)
26
+ - Aggregated output: Collects all data before display (no logging interference)
27
+ - Detailed exclusion reasons: Shows why tools are filtered out
28
+ - Use cases: Discovery, debugging, validation, planning, documentation
29
+
30
+ - **AnyVariable Support for Additional Fields**: More configuration flexibility
31
+ - `SchemaModel.catalog_name` and `SchemaModel.schema_name` now support AnyVariable
32
+ - `DatabricksAppModel.url` now supports AnyVariable
33
+ - Allows environment variables, Databricks secrets, and fallback chains
34
+ - Benefits: Environment flexibility, security, portability, backwards compatible
35
+ - Examples: `{env: CATALOG_NAME}`, `{scope: secrets, secret: url}`, composite fallbacks
36
+
37
+ ### Changed
38
+ - **Refactored Dynamic Prompt Creation**: Simplified and improved `prompts.py`
39
+ - Consolidated redundant prompt creation logic into single `make_prompt()` function
40
+ - Removed unused `create_prompt_middleware()` function (dead code)
41
+ - Cleaner context field handling with generic loop over all context attributes
42
+ - More maintainable codebase with reduced duplication
43
+
44
+ ## [0.1.0] - 2025-12-19
45
+
46
+ ### Added
47
+ - **DSPy-Style Assertion Middleware**: New middleware for output validation and refinement
48
+ - `AssertMiddleware`: Hard constraints with retry - enforces requirements or fails after max attempts
49
+ - `SuggestMiddleware`: Soft constraints with optional single retry - provides feedback without blocking
50
+ - `RefineMiddleware`: Iterative improvement - runs multiple iterations to optimize output quality
51
+ - Multiple constraint types: `FunctionConstraint`, `LLMConstraint`, `KeywordConstraint`, `LengthConstraint`
52
+ - Factory functions: `create_assert_middleware()`, `create_suggest_middleware()`, `create_refine_middleware()`
53
+
54
+ - **Conversation Summarization**: Automatic summarization of long chat histories
55
+ - `LoggingSummarizationMiddleware`: Extends LangChain's `SummarizationMiddleware` with detailed logging
56
+ - Configurable via `chat_history` in YAML with `max_tokens`, `max_tokens_before_summary`, `max_messages_before_summary`
57
+ - Logs original and summarized message/token counts for observability
58
+ - New example config: `config/examples/04_memory/conversation_summarization.yaml`
59
+
60
+ - **GEPA-Based Prompt Optimization**: Replaced MLflow optimizer with GEPA (Generative Evolution of Prompts and Agents)
61
+ - `optimize_prompt()` function using DSPy's evolutionary optimization
62
+ - `DAOAgentAdapter` bridges DAO ResponsesAgent with GEPA optimizer
63
+ - Automatic prompt registration with comprehensive tags
64
+ - Reflective dataset generation for self-improvement
65
+
66
+ - **Structured Input/Output Format**: New `configurable` and `session` structure
67
+ - `configurable`: Static configuration (thread_id, conversation_id, user_id, store_num)
68
+ - `session`: Accumulated runtime state (Genie conversation IDs, cache hits, follow-up questions)
69
+ - Backward compatible with legacy flat `custom_inputs` format
70
+
71
+ - **conversation_id/thread_id Interchangeability**: Databricks-friendly naming
72
+ - Input accepts either `thread_id` or `conversation_id` (conversation_id takes precedence)
73
+ - Output includes both in `configurable` section with synchronized values
74
+ - Auto-generation of UUID if neither is provided
75
+
76
+ - **In-Memory Memory Configuration**: Added to Genie example config
77
+ - Simplified setup for development and testing
78
+
79
+ ### Changed
80
+ - **ChatHistoryModel Refinements**:
81
+ - Removed unused `max_summary_tokens` attribute
82
+ - Updated `max_tokens` default from 256 to 2048
83
+ - Added `gt=0` validation for numeric fields
84
+ - Improved docstrings
85
+
86
+ - **CLI Thread ID Handling**:
87
+ - `--thread-id` now defaults to auto-generated UUID instead of "1"
88
+ - YAML configs no longer require hardcoded thread_id values
89
+
90
+ - **Orchestration Package Refactoring**:
91
+ - Created `orchestration` package with `supervisor` and `swarm` submodules
92
+ - Shared code consolidated in `orchestration/__init__.py`
93
+ - Improved code organization and maintainability
94
+
95
+ ### Removed
96
+ - MLflow `GepaPromptOptimizer` wrapper (replaced with direct GEPA integration)
97
+ - `backend` and `scorer_model` fields from `PromptOptimizationModel`
98
+ - Hardcoded `thread_id: "1"` from all example configurations
99
+
100
+ ### Fixed
101
+ - Handoff issues in supervisor pattern with `Command.PARENT` graph reference
102
+ - Pydantic serialization warnings suppressed for Context serialization
103
+ - StopIteration error in Genie tests (upgraded databricks-ai-bridge to 0.11.0)
104
+ - Message validation middleware now properly terminates with `@hook_config(can_jump_to=["end"])`
105
+
106
+ ### Dependencies
107
+ - Added `dspy>=2.6.27` for assertion middleware patterns
108
+ - Added `gepa` for prompt optimization
109
+ - Updated `databricks-ai-bridge` to 0.11.0
110
+
111
+ ## [0.0.1] - 2025-06-19
112
+
113
+ ### Added
114
+ - Initial release of DAO AI multi-agent orchestration framework
115
+ - Support for Databricks Vector Search integration
116
+ - LangGraph-based workflow orchestration
117
+ - YAML-based configuration system
118
+ - Multi-agent supervisor and swarm patterns
119
+ - Unity Catalog integration
120
+ - MLflow model packaging and deployment
121
+ - Command-line interface (CLI)
122
+ - Python API for programmatic access
123
+ - Built-in guardrails and evaluation capabilities
124
+ - Retail reference implementation
125
+
126
+ ### Features
127
+ - **Multi-Modal Interface**: CLI commands and Python API
128
+ - **Agent Lifecycle Management**: Create, deploy, and monitor agents
129
+ - **Vector Search Integration**: Built-in Databricks Vector Search support
130
+ - **Configuration-Driven**: YAML-based configuration with validation
131
+ - **MLflow Integration**: Automatic model packaging and deployment
132
+ - **Monitoring & Evaluation**: Built-in assessment capabilities
133
+
134
+ [Unreleased]: https://github.com/natefleming/dao-ai/compare/v0.1.0...HEAD
135
+ [0.1.0]: https://github.com/natefleming/dao-ai/compare/v0.0.1...v0.1.0
136
+ [0.0.1]: https://github.com/natefleming/dao-ai/releases/tag/v0.0.1
@@ -27,7 +27,7 @@ FIND := $(shell which find)
27
27
  RM := rm -rf
28
28
  CD := cd
29
29
 
30
- .PHONY: all clean distclean dist check format publish help
30
+ .PHONY: all clean distclean dist check format publish help test unit integration
31
31
 
32
32
  all: dist
33
33
 
@@ -66,13 +66,19 @@ schema: depends
66
66
  test:
67
67
  $(PYTEST) -ra --tb=short $(TEST_DIR)
68
68
 
69
+ unit:
70
+ $(PYTEST) -ra --tb=short -m unit $(TEST_DIR)
71
+
72
+ integration:
73
+ $(PYTEST) -ra --tb=short -m integration $(TEST_DIR)
74
+
69
75
  help:
70
76
  $(info TOP_DIR: $(TOP_DIR))
71
77
  $(info SRC_DIR: $(SRC_DIR))
72
78
  $(info TEST_DIR: $(TEST_DIR))
73
79
  $(info DIST_DIR: $(DIST_DIR))
74
80
  $(info )
75
- $(info $$> make [all|dist|install|clean|distclean|format|depends|publish|schema|test|help])
81
+ $(info $$> make [all|dist|install|clean|distclean|format|depends|publish|schema|test|unit|integration|help])
76
82
  $(info )
77
83
  $(info all - build library: [$(LIB)]. This is the default)
78
84
  $(info dist - build library: [$(LIB)])
@@ -84,7 +90,9 @@ help:
84
90
  $(info depends - installs library dependencies)
85
91
  $(info publish - publish library)
86
92
  $(info schema - print JSON schema for AppConfig)
87
- $(info test - run tests)
93
+ $(info test - run all tests)
94
+ $(info unit - run unit tests only)
95
+ $(info integration - run integration tests only)
88
96
  $(info help - show this help message)
89
97
  @true
90
98
 
dao_ai-0.1.7/PKG-INFO ADDED
@@ -0,0 +1,489 @@
1
+ Metadata-Version: 2.4
2
+ Name: dao-ai
3
+ Version: 0.1.7
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
+ Project-URL: Homepage, https://github.com/natefleming/dao-ai
6
+ Project-URL: Documentation, https://natefleming.github.io/dao-ai
7
+ Project-URL: Repository, https://github.com/natefleming/dao-ai
8
+ Project-URL: Issues, https://github.com/natefleming/dao-ai/issues
9
+ Project-URL: Changelog, https://github.com/natefleming/dao-ai/blob/main/CHANGELOG.md
10
+ Author-email: Nate Fleming <nate.fleming@databricks.com>, Nate Fleming <nate.fleming@gmail.com>
11
+ Maintainer-email: Nate Fleming <nate.fleming@databricks.com>
12
+ License: MIT
13
+ License-File: LICENSE
14
+ Keywords: agents,ai,databricks,langchain,langgraph,llm,multi-agent,orchestration,vector-search,workflow
15
+ Classifier: Development Status :: 3 - Alpha
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Intended Audience :: Science/Research
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Classifier: Topic :: System :: Distributed Computing
27
+ Requires-Python: >=3.11
28
+ Requires-Dist: databricks-agents>=1.9.0
29
+ Requires-Dist: databricks-langchain[memory]>=0.12.1
30
+ Requires-Dist: databricks-mcp>=0.5.0
31
+ Requires-Dist: databricks-sdk[openai]>=0.76.0
32
+ Requires-Dist: ddgs>=9.10.0
33
+ Requires-Dist: dspy>=2.6.27
34
+ Requires-Dist: flashrank>=0.2.10
35
+ Requires-Dist: gepa>=0.0.22
36
+ Requires-Dist: grandalf>=0.8
37
+ Requires-Dist: langchain-community>=0.3.26
38
+ Requires-Dist: langchain-mcp-adapters>=0.2.1
39
+ Requires-Dist: langchain-tavily>=0.2.15
40
+ Requires-Dist: langchain>=1.2.0
41
+ Requires-Dist: langgraph-checkpoint-postgres>=3.0.2
42
+ Requires-Dist: langgraph>=1.0.5
43
+ Requires-Dist: langmem>=0.0.30
44
+ Requires-Dist: loguru>=0.7.3
45
+ Requires-Dist: mcp>=1.24.0
46
+ Requires-Dist: mlflow>=3.8.1
47
+ Requires-Dist: nest-asyncio>=1.6.0
48
+ Requires-Dist: openevals>=0.1.3
49
+ Requires-Dist: openpyxl>=3.1.5
50
+ Requires-Dist: psycopg[binary,pool]>=3.3.2
51
+ Requires-Dist: pydantic>=2.12.5
52
+ Requires-Dist: python-dotenv>=1.2.1
53
+ Requires-Dist: pyyaml>=6.0.2
54
+ Requires-Dist: rich>=14.2.0
55
+ Requires-Dist: scipy>=1.14.0
56
+ Requires-Dist: sqlparse>=0.5.4
57
+ Requires-Dist: tomli>=2.3.0
58
+ Requires-Dist: unitycatalog-ai[databricks]>=0.3.2
59
+ Provides-Extra: databricks
60
+ Requires-Dist: databricks-connect>=16.0.0; extra == 'databricks'
61
+ Requires-Dist: databricks-vectorsearch>=0.63; extra == 'databricks'
62
+ Requires-Dist: pyspark>=3.5.0; extra == 'databricks'
63
+ Provides-Extra: dev
64
+ Requires-Dist: mypy>=1.19.1; extra == 'dev'
65
+ Requires-Dist: pre-commit>=4.5.1; extra == 'dev'
66
+ Requires-Dist: pytest>=9.0.2; extra == 'dev'
67
+ Requires-Dist: ruff>=0.14.9; extra == 'dev'
68
+ Provides-Extra: docs
69
+ Requires-Dist: mkdocs-material>=9.7.1; extra == 'docs'
70
+ Requires-Dist: mkdocs>=1.6.1; extra == 'docs'
71
+ Requires-Dist: mkdocstrings[python]>=1.0.0; extra == 'docs'
72
+ Provides-Extra: test
73
+ Requires-Dist: pytest-cov>=7.0.0; extra == 'test'
74
+ Requires-Dist: pytest-mock>=3.15.1; extra == 'test'
75
+ Requires-Dist: pytest-rerunfailures>=15.0; extra == 'test'
76
+ Requires-Dist: pytest-xdist>=3.6.1; extra == 'test'
77
+ Requires-Dist: pytest>=9.0.2; extra == 'test'
78
+ Description-Content-Type: text/markdown
79
+
80
+ # DAO: Declarative Agent Orchestration
81
+
82
+ [![Version](https://img.shields.io/badge/version-0.1.2-blue.svg)](CHANGELOG.md)
83
+ [![Python](https://img.shields.io/badge/python-3.11+-green.svg)](https://www.python.org/)
84
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
85
+
86
+ **Production-grade AI agents defined in YAML, powered by LangGraph, deployed on Databricks.**
87
+
88
+ DAO is an **infrastructure-as-code framework** for building, deploying, and managing multi-agent AI systems. Instead of writing boilerplate Python code to wire up agents, tools, and orchestration, you define everything declaratively in YAML configuration files.
89
+
90
+ ```yaml
91
+ # Define an agent in 10 lines of YAML
92
+ agents:
93
+ product_expert:
94
+ name: product_expert
95
+ model: *claude_sonnet
96
+ tools:
97
+ - *vector_search_tool
98
+ - *genie_tool
99
+ prompt: |
100
+ You are a product expert. Answer questions about inventory and pricing.
101
+ ```
102
+
103
+ ### 🎨 Visual Configuration Studio
104
+
105
+ Prefer a visual interface? Check out **[DAO AI Builder](https://github.com/natefleming/dao-ai-builder)** — a React-based web application that provides a graphical interface for creating and editing DAO configurations. Perfect for:
106
+
107
+ - **Exploring** DAO's capabilities through an intuitive UI
108
+ - **Learning** the configuration structure with guided forms
109
+ - **Building** agents visually without writing YAML manually
110
+ - **Importing** and editing existing configurations
111
+
112
+ DAO AI Builder generates valid YAML configurations that work seamlessly with this framework. Use whichever workflow suits you best — visual builder or direct YAML editing.
113
+
114
+ <p align="center">
115
+ <img src="https://raw.githubusercontent.com/natefleming/dao-ai-builder/6ca07d2b977d9509b75edfb2e0f45681c840a931/docs/images/dao-ai-builder-screenshot.png" width="700" alt="DAO AI Builder Screenshot">
116
+ </p>
117
+
118
+ ---
119
+
120
+ ## 📚 Documentation
121
+
122
+ ### Getting Started
123
+ - **[Why DAO?](docs/why-dao.md)** - Learn what DAO is and how it compares to other platforms
124
+ - **[Quick Start](#quick-start)** - Build and deploy your first agent in minutes
125
+ - **[Architecture](docs/architecture.md)** - Understand how DAO works under the hood
126
+
127
+ ### Core Concepts
128
+ - **[Key Capabilities](docs/key-capabilities.md)** - Explore 14 powerful features for production agents
129
+ - **[Configuration Reference](docs/configuration-reference.md)** - Complete YAML configuration guide
130
+ - **[Examples](docs/examples.md)** - Ready-to-use example configurations
131
+
132
+ ### Reference
133
+ - **[CLI Reference](docs/cli-reference.md)** - Command-line interface documentation
134
+ - **[Python API](docs/python-api.md)** - Programmatic usage and customization
135
+ - **[FAQ](docs/faq.md)** - Frequently asked questions
136
+
137
+ ### Contributing
138
+ - **[Contributing Guide](docs/contributing.md)** - How to contribute to DAO
139
+
140
+ ---
141
+
142
+ ## Quick Start
143
+
144
+ ### Prerequisites
145
+
146
+ Before you begin, you'll need:
147
+
148
+ - **Python 3.11 or newer** installed on your computer ([download here](https://www.python.org/downloads/))
149
+ - **A Databricks workspace** (ask your IT team or see [Databricks docs](https://docs.databricks.com/))
150
+ - Access to **Unity Catalog** (your organization's data catalog)
151
+ - **Model Serving** enabled (for deploying AI agents)
152
+ - *Optional*: Vector Search, Genie (for advanced features)
153
+
154
+ **Not sure if you have access?** Your Databricks administrator can grant you permissions.
155
+
156
+ ### Installation
157
+
158
+ **Option 1: Install from PyPI (Recommended)**
159
+
160
+ The simplest way to get started:
161
+
162
+ ```bash
163
+ # Install directly from PyPI
164
+ pip install dao-ai
165
+ ```
166
+
167
+ **Option 2: For developers familiar with Git**
168
+
169
+ ```bash
170
+ # Clone this repository
171
+ git clone <repo-url>
172
+ cd dao-ai
173
+
174
+ # Create an isolated Python environment
175
+ uv venv
176
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
177
+
178
+ # Install DAO and its dependencies
179
+ make install
180
+ ```
181
+
182
+ **Option 3: For those new to development**
183
+
184
+ 1. Download this project as a ZIP file (click the green "Code" button on GitHub → Download ZIP)
185
+ 2. Extract the ZIP file to a folder on your computer
186
+ 3. Open a terminal/command prompt and navigate to that folder
187
+ 4. Run these commands:
188
+
189
+ ```bash
190
+ # On Mac/Linux:
191
+ python3 -m venv .venv
192
+ source .venv/bin/activate
193
+ pip install -e .
194
+
195
+ # On Windows:
196
+ python -m venv .venv
197
+ .venv\Scripts\activate
198
+ pip install -e .
199
+ ```
200
+
201
+ **Verification:** Run `dao-ai --version` to confirm the installation succeeded.
202
+
203
+ ### Your First Agent
204
+
205
+ Let's build a simple AI assistant in 4 steps. This agent will use a language model from Databricks to answer questions.
206
+
207
+ **Step 1: Create a configuration file**
208
+
209
+ Create a new file called `config/my_agent.yaml` and paste this content:
210
+
211
+ ```yaml
212
+ schemas:
213
+ my_schema: &my_schema
214
+ catalog_name: my_catalog # Replace with your Unity Catalog name
215
+ schema_name: my_schema # Replace with your schema name
216
+
217
+ resources:
218
+ llms:
219
+ default_llm: &default_llm
220
+ name: databricks-meta-llama-3-3-70b-instruct # The AI model to use
221
+
222
+ agents:
223
+ assistant: &assistant
224
+ name: assistant
225
+ model: *default_llm
226
+ prompt: |
227
+ You are a helpful assistant.
228
+
229
+ app:
230
+ name: my_first_agent
231
+ registered_model:
232
+ schema: *my_schema
233
+ name: my_first_agent
234
+ agents:
235
+ - *assistant
236
+ orchestration:
237
+ swarm:
238
+ model: *default_llm
239
+ ```
240
+
241
+ **💡 What's happening here?**
242
+ - `schemas`: Points to your Unity Catalog location (where the agent will be registered)
243
+ - `resources`: Defines the AI model (Llama 3.3 70B in this case)
244
+ - `agents`: Describes your assistant agent and its behavior
245
+ - `app`: Configures how the agent is deployed and orchestrated
246
+
247
+ **Step 2: Validate your configuration**
248
+
249
+ This checks for errors in your YAML file:
250
+
251
+ ```bash
252
+ dao-ai validate -c config/my_agent.yaml
253
+ ```
254
+
255
+ You should see: ✅ `Configuration is valid!`
256
+
257
+ **Step 3: Visualize the agent workflow** (optional)
258
+
259
+ Generate a diagram showing how your agent works:
260
+
261
+ ```bash
262
+ dao-ai graph -c config/my_agent.yaml -o my_agent.png
263
+ ```
264
+
265
+ This creates `my_agent.png` — open it to see a visual representation of your agent.
266
+
267
+ **Step 4: Deploy to Databricks**
268
+
269
+ **Option A: Using Python** (programmatic deployment)
270
+
271
+ ```python
272
+ from dao_ai.config import AppConfig
273
+
274
+ # Load your configuration
275
+ config = AppConfig.from_file("config/my_agent.yaml")
276
+
277
+ # Package the agent as an MLflow model
278
+ config.create_agent()
279
+
280
+ # Deploy to Databricks Model Serving
281
+ config.deploy_agent()
282
+ ```
283
+
284
+ **Option B: Using the CLI** (one command)
285
+
286
+ ```bash
287
+ dao-ai bundle --deploy --run -c config/my_agent.yaml
288
+ ```
289
+
290
+ This single command:
291
+ 1. Validates your configuration
292
+ 2. Packages the agent
293
+ 3. Deploys it to Databricks
294
+ 4. Creates a serving endpoint
295
+
296
+ **Deploying to a specific workspace:**
297
+
298
+ ```bash
299
+ # Deploy to AWS workspace
300
+ dao-ai bundle --deploy --run -c config/my_agent.yaml --profile aws-field-eng
301
+
302
+ # Deploy to Azure workspace
303
+ dao-ai bundle --deploy --run -c config/my_agent.yaml --profile azure-retail
304
+ ```
305
+
306
+ **Step 5: Interact with your agent**
307
+
308
+ Once deployed, you can chat with your agent using Python:
309
+
310
+ ```python
311
+ from mlflow.deployments import get_deploy_client
312
+
313
+ # Connect to your Databricks workspace
314
+ client = get_deploy_client("databricks")
315
+
316
+ # Send a message to your agent
317
+ response = client.predict(
318
+ endpoint="my_first_agent",
319
+ inputs={
320
+ "messages": [{"role": "user", "content": "Hello! What can you help me with?"}],
321
+ "configurable": {
322
+ "thread_id": "1", # Conversation ID
323
+ "user_id": "demo_user" # User identifier
324
+ }
325
+ }
326
+ )
327
+
328
+ # Print the agent's response
329
+ print(response["message"]["content"])
330
+ ```
331
+
332
+ **🎉 Congratulations!** You've built and deployed your first AI agent with DAO.
333
+
334
+ **Next steps:**
335
+ - Explore the [`config/examples/`](config/examples/) folder for more advanced configurations
336
+ - Try the [DAO AI Builder](https://github.com/natefleming/dao-ai-builder) visual interface
337
+ - Learn about [Key Capabilities](docs/key-capabilities.md) to add advanced features
338
+ - Read the [Architecture](docs/architecture.md) documentation to understand how it works
339
+
340
+ ---
341
+
342
+ ## Key Features at a Glance
343
+
344
+ DAO provides powerful capabilities for building production-ready AI agents:
345
+
346
+ | Feature | Description |
347
+ |---------|-------------|
348
+ | **Multi-Tool Support** | Python functions, Unity Catalog, MCP, Agent Endpoints |
349
+ | **On-Behalf-Of User** | Per-user permissions and governance |
350
+ | **Advanced Caching** | Two-tier (LRU + Semantic) caching for cost optimization |
351
+ | **Vector Search Reranking** | Improve RAG quality with FlashRank |
352
+ | **Human-in-the-Loop** | Approval workflows for sensitive operations |
353
+ | **Memory & Persistence** | PostgreSQL, Lakebase, or in-memory state |
354
+ | **Prompt Registry** | Version and manage prompts in MLflow |
355
+ | **Prompt Optimization** | Automated tuning with GEPA (Generative Evolution of Prompts and Agents) |
356
+ | **Guardrails** | Content filters, safety checks, validation |
357
+ | **Middleware** | Input validation, logging, performance monitoring, audit trails |
358
+ | **Conversation Summarization** | Handle long conversations automatically |
359
+ | **Structured Output** | JSON schema for predictable responses |
360
+ | **Custom I/O** | Flexible input/output with runtime state |
361
+ | **Hook System** | Lifecycle hooks for initialization and cleanup |
362
+
363
+ 👉 **Learn more:** [Key Capabilities Documentation](docs/key-capabilities.md)
364
+
365
+ ---
366
+
367
+ ## Architecture Overview
368
+
369
+ ```mermaid
370
+ graph TB
371
+ subgraph yaml["YAML Configuration"]
372
+ direction LR
373
+ schemas[Schemas] ~~~ resources[Resources] ~~~ tools[Tools] ~~~ agents[Agents] ~~~ orchestration[Orchestration]
374
+ end
375
+
376
+ subgraph dao["DAO Framework (Python)"]
377
+ direction LR
378
+ config[Config<br/>Loader] ~~~ graph_builder[Graph<br/>Builder] ~~~ nodes[Nodes<br/>Factory] ~~~ tool_factory[Tool<br/>Factory]
379
+ end
380
+
381
+ subgraph langgraph["LangGraph Runtime"]
382
+ direction LR
383
+ msg_hook[Message<br/>Hook] --> supervisor[Supervisor/<br/>Swarm] --> specialized[Specialized<br/>Agents]
384
+ end
385
+
386
+ subgraph databricks["Databricks Platform"]
387
+ direction LR
388
+ model_serving[Model<br/>Serving] ~~~ unity_catalog[Unity<br/>Catalog] ~~~ vector_search[Vector<br/>Search] ~~~ genie_spaces[Genie<br/>Spaces] ~~~ mlflow[MLflow]
389
+ end
390
+
391
+ yaml ==> dao
392
+ dao ==> langgraph
393
+ langgraph ==> databricks
394
+
395
+ style yaml fill:#1B5162,stroke:#618794,stroke-width:3px,color:#fff
396
+ style dao fill:#FFAB00,stroke:#7D5319,stroke-width:3px,color:#1B3139
397
+ style langgraph fill:#618794,stroke:#143D4A,stroke-width:3px,color:#fff
398
+ style databricks fill:#00875C,stroke:#095A35,stroke-width:3px,color:#fff
399
+ ```
400
+
401
+ 👉 **Learn more:** [Architecture Documentation](docs/architecture.md)
402
+
403
+ ---
404
+
405
+ ## Example Configurations
406
+
407
+ The `config/examples/` directory contains ready-to-use configurations organized in a **progressive learning path**:
408
+
409
+ - `01_getting_started/minimal.yaml` - Simplest possible agent
410
+ - `02_tools/vector_search_with_reranking.yaml` - RAG with improved accuracy
411
+ - `04_genie/genie_semantic_cache.yaml` - NL-to-SQL with two-tier caching
412
+ - `05_memory/conversation_summarization.yaml` - Long conversation handling
413
+ - `06_on_behalf_of_user/obo_basic.yaml` - User-level access control
414
+ - `07_human_in_the_loop/human_in_the_loop.yaml` - Approval workflows
415
+
416
+ And many more! Follow the numbered path or jump to what you need. See the full guide in [Examples Documentation](docs/examples.md).
417
+
418
+ ---
419
+
420
+ ## CLI Quick Reference
421
+
422
+ ```bash
423
+ # Validate configuration
424
+ dao-ai validate -c config/my_config.yaml
425
+
426
+ # Generate JSON schema for IDE support
427
+ dao-ai schema > schemas/model_config_schema.json
428
+
429
+ # Visualize agent workflow
430
+ dao-ai graph -c config/my_config.yaml -o workflow.png
431
+
432
+ # Deploy with Databricks Asset Bundles
433
+ dao-ai bundle --deploy --run -c config/my_config.yaml
434
+
435
+ # Deploy to a specific workspace (multi-cloud support)
436
+ dao-ai bundle --deploy -c config/my_config.yaml --profile aws-field-eng
437
+ dao-ai bundle --deploy -c config/my_config.yaml --profile azure-retail
438
+
439
+ # Interactive chat with agent
440
+ dao-ai chat -c config/my_config.yaml
441
+ ```
442
+
443
+ ### Multi-Cloud Deployment
444
+
445
+ DAO AI supports deploying to Azure, AWS, and GCP workspaces with automatic cloud detection:
446
+
447
+ ```bash
448
+ # Deploy to AWS workspace
449
+ dao-ai bundle --deploy -c config/my_config.yaml --profile aws-prod
450
+
451
+ # Deploy to Azure workspace
452
+ dao-ai bundle --deploy -c config/my_config.yaml --profile azure-prod
453
+
454
+ # Deploy to GCP workspace
455
+ dao-ai bundle --deploy -c config/my_config.yaml --profile gcp-prod
456
+ ```
457
+
458
+ The CLI automatically:
459
+ - Detects the cloud provider from your profile's workspace URL
460
+ - Selects appropriate compute node types for each cloud
461
+ - Creates isolated deployment state per profile
462
+
463
+ 👉 **Learn more:** [CLI Reference Documentation](docs/cli-reference.md)
464
+
465
+ ---
466
+
467
+ ## Community & Support
468
+
469
+ - **Documentation**: [docs/](docs/)
470
+ - **Examples**: [config/examples/](config/examples/)
471
+ - **Issues**: [GitHub Issues](https://github.com/your-org/dao-ai/issues)
472
+ - **Discussions**: [GitHub Discussions](https://github.com/your-org/dao-ai/discussions)
473
+
474
+ ---
475
+
476
+ ## Contributing
477
+
478
+ We welcome contributions! See the [Contributing Guide](docs/contributing.md) for details on:
479
+
480
+ - Setting up your development environment
481
+ - Code style and testing guidelines
482
+ - How to submit pull requests
483
+ - Project structure overview
484
+
485
+ ---
486
+
487
+ ## License
488
+
489
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.