dao-ai 0.1.0__tar.gz → 0.1.2__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 (293) hide show
  1. {dao_ai-0.1.0 → dao_ai-0.1.2}/.gitignore +2 -0
  2. {dao_ai-0.1.0 → dao_ai-0.1.2}/CHANGELOG.md +1 -1
  3. {dao_ai-0.1.0 → dao_ai-0.1.2}/Makefile +11 -3
  4. dao_ai-0.1.2/PKG-INFO +455 -0
  5. dao_ai-0.1.2/README.md +376 -0
  6. dao_ai-0.1.2/config/examples/01_getting_started/README.md +74 -0
  7. dao_ai-0.1.2/config/examples/01_getting_started/minimal.yaml +68 -0
  8. dao_ai-0.1.2/config/examples/02_mcp/README.md +132 -0
  9. dao_ai-0.1.0/config/examples/jira.yaml → dao_ai-0.1.2/config/examples/02_mcp/custom_mcp.yaml +3 -4
  10. dao_ai-0.1.2/config/examples/02_mcp/external_mcp.yaml +59 -0
  11. dao_ai-0.1.0/config/examples/mcp.yaml → dao_ai-0.1.2/config/examples/02_mcp/managed_mcp.yaml +4 -18
  12. dao_ai-0.1.0/config/examples/slack.yaml → dao_ai-0.1.2/config/examples/02_mcp/slack_integration.yaml +3 -3
  13. dao_ai-0.1.2/config/examples/03_reranking/README.md +322 -0
  14. {dao_ai-0.1.0/config/examples → dao_ai-0.1.2/config/examples/03_reranking}/vector_search_with_reranking.yaml +7 -7
  15. dao_ai-0.1.2/config/examples/04_genie/README.md +106 -0
  16. dao_ai-0.1.2/config/examples/04_genie/genie_basic.yaml +63 -0
  17. dao_ai-0.1.0/config/examples/genie_with_lru_cache.yaml → dao_ai-0.1.2/config/examples/04_genie/genie_lru_cache.yaml +4 -45
  18. dao_ai-0.1.0/config/examples/genie_with_semantic_cache.yaml → dao_ai-0.1.2/config/examples/04_genie/genie_semantic_cache.yaml +4 -43
  19. dao_ai-0.1.0/config/examples/genie_with_conversion_id.yaml → dao_ai-0.1.2/config/examples/04_genie/genie_with_conversation_id.yaml +5 -20
  20. dao_ai-0.1.2/config/examples/05_memory/README.md +127 -0
  21. {dao_ai-0.1.0/config/examples → dao_ai-0.1.2/config/examples/05_memory}/conversation_summarization.yaml +5 -43
  22. dao_ai-0.1.2/config/examples/05_memory/in_memory_basic.yaml +73 -0
  23. dao_ai-0.1.2/config/examples/05_memory/lakebase_persistence.yaml +133 -0
  24. dao_ai-0.1.2/config/examples/05_memory/postgres_persistence.yaml +176 -0
  25. dao_ai-0.1.2/config/examples/06_on_behalf_of_user/README.md +172 -0
  26. dao_ai-0.1.2/config/examples/06_on_behalf_of_user/obo_basic.yaml +194 -0
  27. dao_ai-0.1.2/config/examples/07_human_in_the_loop/README.md +151 -0
  28. {dao_ai-0.1.0/config/examples → dao_ai-0.1.2/config/examples/07_human_in_the_loop}/human_in_the_loop.yaml +9 -23
  29. dao_ai-0.1.2/config/examples/08_guardrails/README.md +201 -0
  30. dao_ai-0.1.0/config/examples/guardrails.yaml → dao_ai-0.1.2/config/examples/08_guardrails/guardrails_basic.yaml +4 -4
  31. dao_ai-0.1.2/config/examples/09_structured_output/README.md +96 -0
  32. {dao_ai-0.1.0/config/examples → dao_ai-0.1.2/config/examples/09_structured_output}/structured_output.yaml +3 -3
  33. dao_ai-0.1.2/config/examples/10_agent_integrations/README.md +450 -0
  34. dao_ai-0.1.2/config/examples/10_agent_integrations/agent_bricks.yaml +112 -0
  35. dao_ai-0.1.2/config/examples/10_agent_integrations/kasal.yaml +159 -0
  36. dao_ai-0.1.2/config/examples/11_prompt_engineering/README.md +172 -0
  37. {dao_ai-0.1.0/config/examples → dao_ai-0.1.2/config/examples/11_prompt_engineering}/prompt_optimization.yaml +5 -55
  38. {dao_ai-0.1.0/config/examples → dao_ai-0.1.2/config/examples/11_prompt_engineering}/prompt_registry.yaml +31 -77
  39. dao_ai-0.1.2/config/examples/12_middleware/README.md +467 -0
  40. dao_ai-0.1.2/config/examples/12_middleware/combined_middleware.yaml +231 -0
  41. dao_ai-0.1.2/config/examples/12_middleware/custom_field_validation.yaml +262 -0
  42. dao_ai-0.1.2/config/examples/12_middleware/logging_middleware.yaml +180 -0
  43. dao_ai-0.1.2/config/examples/13_orchestration/README.md +168 -0
  44. dao_ai-0.1.2/config/examples/13_orchestration/supervisor_pattern.yaml +146 -0
  45. dao_ai-0.1.2/config/examples/13_orchestration/swarm_pattern.yaml +188 -0
  46. dao_ai-0.1.2/config/examples/14_basic_tools/README.md +123 -0
  47. dao_ai-0.1.2/config/examples/14_basic_tools/sql_tool_example.yaml +141 -0
  48. dao_ai-0.1.2/config/examples/15_complete_applications/README.md +308 -0
  49. dao_ai-0.1.0/config/dais2025/model_config_dais.yaml → dao_ai-0.1.2/config/examples/15_complete_applications/brick_store.yaml +12 -85
  50. {dao_ai-0.1.0/config/examples → dao_ai-0.1.2/config/examples/15_complete_applications}/deep_research.yaml +5 -5
  51. {dao_ai-0.1.0/config/examples → dao_ai-0.1.2/config/examples/15_complete_applications}/executive_assistant.yaml +5 -97
  52. {dao_ai-0.1.0/config/examples → dao_ai-0.1.2/config/examples/15_complete_applications}/genie_and_genie_mcp.yaml +4 -23
  53. dao_ai-0.1.0/config/examples/genie_and_vector_search.yaml → dao_ai-0.1.2/config/examples/15_complete_applications/genie_vector_search_hybrid.yaml +4 -8
  54. dao_ai-0.1.0/config/hardware_store/supervisor.yaml → dao_ai-0.1.2/config/examples/15_complete_applications/hardware_store.yaml +20 -148
  55. dao_ai-0.1.0/config/hardware_store/supervisor_postgres.yaml → dao_ai-0.1.2/config/examples/15_complete_applications/hardware_store_lakebase.yaml +52 -307
  56. dao_ai-0.1.0/config/hardware_store/swarm.yaml → dao_ai-0.1.2/config/examples/15_complete_applications/hardware_store_swarm.yaml +52 -264
  57. dao_ai-0.1.0/config/quick_serve_restaurant/quick-serve-restaurant.yaml → dao_ai-0.1.2/config/examples/15_complete_applications/quick_serve_restaurant.yaml +15 -58
  58. dao_ai-0.1.0/config/examples/reservations.yaml → dao_ai-0.1.2/config/examples/15_complete_applications/reservations_system.yaml +5 -17
  59. dao_ai-0.1.2/config/examples/README.md +403 -0
  60. dao_ai-0.1.2/docs/architecture.md +276 -0
  61. dao_ai-0.1.2/docs/cli-reference.md +98 -0
  62. dao_ai-0.1.2/docs/configuration-reference.md +170 -0
  63. dao_ai-0.1.2/docs/contributing.md +343 -0
  64. dao_ai-0.1.2/docs/examples.md +440 -0
  65. dao_ai-0.1.2/docs/faq.md +213 -0
  66. dao_ai-0.1.2/docs/key-capabilities.md +1078 -0
  67. dao_ai-0.1.2/docs/python-api.md +164 -0
  68. dao_ai-0.1.2/docs/why-dao.md +202 -0
  69. {dao_ai-0.1.0 → dao_ai-0.1.2}/notebooks/07_run_evaluation.py +9 -1
  70. {dao_ai-0.1.0 → dao_ai-0.1.2}/notebooks/10_optimize_prompts.py +3 -2
  71. {dao_ai-0.1.0 → dao_ai-0.1.2}/pyproject.toml +27 -1
  72. {dao_ai-0.1.0 → dao_ai-0.1.2}/schemas/model_config_schema.json +42 -84
  73. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/agent_as_code.py +2 -5
  74. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/cli.py +52 -12
  75. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/config.py +591 -206
  76. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/genie/cache/core.py +6 -2
  77. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/genie/cache/lru.py +29 -11
  78. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/genie/cache/semantic.py +95 -44
  79. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/hooks/core.py +5 -5
  80. dao_ai-0.1.2/src/dao_ai/logging.py +56 -0
  81. dao_ai-0.1.2/src/dao_ai/memory/core.py +156 -0
  82. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/memory/databricks.py +54 -41
  83. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/memory/postgres.py +77 -36
  84. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/middleware/assertions.py +45 -17
  85. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/middleware/core.py +13 -7
  86. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/middleware/guardrails.py +30 -25
  87. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/middleware/human_in_the_loop.py +9 -5
  88. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/middleware/message_validation.py +61 -29
  89. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/middleware/summarization.py +16 -11
  90. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/models.py +172 -69
  91. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/nodes.py +148 -19
  92. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/optimization.py +26 -16
  93. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/orchestration/core.py +15 -8
  94. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/orchestration/supervisor.py +22 -8
  95. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/orchestration/swarm.py +57 -12
  96. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/prompts.py +17 -17
  97. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/providers/databricks.py +349 -155
  98. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/state.py +24 -6
  99. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/tools/__init__.py +2 -0
  100. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/tools/agent.py +1 -3
  101. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/tools/core.py +7 -7
  102. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/tools/email.py +29 -77
  103. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/tools/genie.py +18 -13
  104. dao_ai-0.1.2/src/dao_ai/tools/mcp.py +263 -0
  105. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/tools/python.py +5 -2
  106. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/tools/search.py +1 -1
  107. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/tools/slack.py +21 -9
  108. dao_ai-0.1.2/src/dao_ai/tools/sql.py +202 -0
  109. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/tools/time.py +30 -7
  110. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/tools/unity_catalog.py +129 -86
  111. dao_ai-0.1.2/src/dao_ai/tools/vector_search.py +392 -0
  112. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/utils.py +15 -10
  113. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/config/test_model_config.yaml +28 -63
  114. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/conftest.py +4 -2
  115. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_chat_history.py +5 -4
  116. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_config.py +0 -16
  117. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_function_parsing.py +16 -14
  118. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_genie.py +8 -4
  119. dao_ai-0.1.2/tests/dao_ai/test_genie_room_model.py +939 -0
  120. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_human_in_the_loop.py +2 -2
  121. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_inference_integration.py +17 -6
  122. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_input_output_structure.py +7 -7
  123. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_mcp.py +4 -11
  124. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_mcp_function_model.py +4 -29
  125. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_message_validation_middleware.py +4 -4
  126. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_prompt_optimizations.py +8 -4
  127. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_prompts.py +4 -3
  128. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_reranking.py +73 -9
  129. dao_ai-0.1.2/tests/dao_ai/test_resources_model_genie_integration.py +620 -0
  130. dao_ai-0.1.2/tests/dao_ai/test_sql_tool.py +162 -0
  131. dao_ai-0.1.2/tests/dao_ai/test_sql_tool_integration.py +327 -0
  132. dao_ai-0.1.2/tests/dao_ai/test_swarm_middleware.py +418 -0
  133. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_tools.py +1 -0
  134. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_unity_catalog.py +15 -4
  135. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/hardware_store/test_graph.py +2 -5
  136. dao_ai-0.1.0/PKG-INFO +0 -1878
  137. dao_ai-0.1.0/README.md +0 -1801
  138. dao_ai-0.1.0/config/examples/genie.yaml +0 -146
  139. dao_ai-0.1.0/config/examples/mcp_with_uc_connection.yaml +0 -159
  140. dao_ai-0.1.0/config/examples/minimal.yaml +0 -81
  141. dao_ai-0.1.0/config/hardware_store/supervisor_postgres_dao_ai_native.yaml +0 -1064
  142. dao_ai-0.1.0/notebooks/INVESTech.py +0 -90
  143. dao_ai-0.1.0/src/dao_ai/memory/core.py +0 -139
  144. dao_ai-0.1.0/src/dao_ai/tools/mcp.py +0 -196
  145. dao_ai-0.1.0/src/dao_ai/tools/vector_search.py +0 -318
  146. dao_ai-0.1.0/src/hardware_store/hooks.py +0 -68
  147. dao_ai-0.1.0/src/hardware_store/tools.py +0 -460
  148. dao_ai-0.1.0/src/quick_serve_restaurant/__init__.py +0 -0
  149. dao_ai-0.1.0/src/quick_serve_restaurant/tools.py +0 -82
  150. dao_ai-0.1.0/tests/quick_serve_restaurant/.gitkeep +0 -0
  151. {dao_ai-0.1.0 → dao_ai-0.1.2}/.python-version +0 -0
  152. {dao_ai-0.1.0 → dao_ai-0.1.2}/CONTRIBUTING.md +0 -0
  153. {dao_ai-0.1.0 → dao_ai-0.1.2}/LICENSE +0 -0
  154. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/appointments.sql +0 -0
  155. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/appointments_data.sql +0 -0
  156. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/brand_rep_demo_data.sql +0 -0
  157. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/brand_rep_demo_queries.sql +0 -0
  158. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/brand_rep_demo_tables.sql +0 -0
  159. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/brand_rep_demo_validation.sql +0 -0
  160. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/customers.sql +0 -0
  161. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/customers_data.sql +0 -0
  162. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/dim_stores.sql +0 -0
  163. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/dim_stores_data.sql +0 -0
  164. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/employee_performance.sql +0 -0
  165. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/employee_performance_data.sql +0 -0
  166. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/employee_tasks.sql +0 -0
  167. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/employee_tasks_data.sql +0 -0
  168. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/inventory.sql +0 -0
  169. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/inventory_data.sql +0 -0
  170. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/managers.sql +0 -0
  171. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/managers_data.sql +0 -0
  172. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/product_data.sql +0 -0
  173. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/products.sql +0 -0
  174. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/dais2025/task_assignments.sql +0 -0
  175. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/hardware_store/inventory.snappy.parquet +0 -0
  176. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/hardware_store/inventory.sql +0 -0
  177. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/hardware_store/products.snappy.parquet +0 -0
  178. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/hardware_store/products.sql +0 -0
  179. {dao_ai-0.1.0/config → dao_ai-0.1.2/data}/quick_serve_restaurant/.gitkeep +0 -0
  180. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/quick_serve_restaurant/fulfil_item_orders.sql +0 -0
  181. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/quick_serve_restaurant/items_description.csv +0 -0
  182. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/quick_serve_restaurant/items_description.sql +0 -0
  183. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/quick_serve_restaurant/items_raw.csv +0 -0
  184. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/quick_serve_restaurant/items_raw.sql +0 -0
  185. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/quick_serve_restaurant/orders_raw.csv +0 -0
  186. {dao_ai-0.1.0 → dao_ai-0.1.2}/data/quick_serve_restaurant/orders_raw.sql +0 -0
  187. {dao_ai-0.1.0 → dao_ai-0.1.2}/databricks.yaml.template +0 -0
  188. {dao_ai-0.1.0 → dao_ai-0.1.2}/docs/hardware_store/README.md +0 -0
  189. {dao_ai-0.1.0 → dao_ai-0.1.2}/docs/hardware_store/retail_supervisor.png +0 -0
  190. {dao_ai-0.1.0 → dao_ai-0.1.2}/docs/hardware_store/retail_swarm.png +0 -0
  191. {dao_ai-0.1.0/docs → dao_ai-0.1.2/docs/images}/genie.png +0 -0
  192. {dao_ai-0.1.0/data → dao_ai-0.1.2/docs}/quick_serve_restaurant/.gitkeep +0 -0
  193. {dao_ai-0.1.0 → dao_ai-0.1.2}/docs/quick_serve_restaurant/quick-serve-restaurant.png +0 -0
  194. {dao_ai-0.1.0 → dao_ai-0.1.2}/environment.yaml +0 -0
  195. {dao_ai-0.1.0 → dao_ai-0.1.2}/examples/dais2025/examples.yaml +0 -0
  196. {dao_ai-0.1.0 → dao_ai-0.1.2}/examples/deep_research/examples.yaml +0 -0
  197. {dao_ai-0.1.0 → dao_ai-0.1.2}/examples/executive_assistant/examples.yaml +0 -0
  198. {dao_ai-0.1.0 → dao_ai-0.1.2}/examples/hardware_store/examples.yaml +0 -0
  199. {dao_ai-0.1.0/docs → dao_ai-0.1.2/examples}/quick_serve_restaurant/.gitkeep +0 -0
  200. {dao_ai-0.1.0 → dao_ai-0.1.2}/examples/quick_serve_restaurant/examples.yaml +0 -0
  201. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/dais2025/extract_store_numbers.sql +0 -0
  202. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/dais2025/find_inventory_by_sku.sql +0 -0
  203. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/dais2025/find_inventory_by_upc.sql +0 -0
  204. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/dais2025/find_product_by_sku.sql +0 -0
  205. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/dais2025/find_product_by_upc.sql +0 -0
  206. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/dais2025/find_store_by_number.sql +0 -0
  207. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/dais2025/find_store_inventory_by_sku.sql +0 -0
  208. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/dais2025/find_store_inventory_by_upc.sql +0 -0
  209. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/hardware_store/find_inventory_by_sku.sql +0 -0
  210. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/hardware_store/find_inventory_by_upc.sql +0 -0
  211. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/hardware_store/find_product_by_sku.sql +0 -0
  212. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/hardware_store/find_product_by_upc.sql +0 -0
  213. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/hardware_store/find_store_inventory_by_sku.sql +0 -0
  214. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/hardware_store/find_store_inventory_by_upc.sql +0 -0
  215. {dao_ai-0.1.0/examples → dao_ai-0.1.2/functions}/quick_serve_restaurant/.gitkeep +0 -0
  216. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/quick_serve_restaurant/insert_coffee_order.sql +0 -0
  217. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/quick_serve_restaurant/lookup_items_by_descriptions.sql +0 -0
  218. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/quick_serve_restaurant/match_historical_item_order_by_date.sql +0 -0
  219. {dao_ai-0.1.0 → dao_ai-0.1.2}/functions/quick_serve_restaurant/match_item_by_description_and_price.sql +0 -0
  220. {dao_ai-0.1.0 → dao_ai-0.1.2}/notebooks/01_ingest_and_transform.py +0 -0
  221. {dao_ai-0.1.0 → dao_ai-0.1.2}/notebooks/02_provision_vector_search.py +0 -0
  222. {dao_ai-0.1.0 → dao_ai-0.1.2}/notebooks/03_provision_lakebase.py +0 -0
  223. {dao_ai-0.1.0 → dao_ai-0.1.2}/notebooks/04_unity_catalog_tools.py +0 -0
  224. {dao_ai-0.1.0 → dao_ai-0.1.2}/notebooks/05_deploy_agent.py +0 -0
  225. {dao_ai-0.1.0 → dao_ai-0.1.2}/notebooks/06_generate_evaluation_data.py +0 -0
  226. {dao_ai-0.1.0 → dao_ai-0.1.2}/notebooks/08_run_examples.py +0 -0
  227. {dao_ai-0.1.0 → dao_ai-0.1.2}/notebooks/09_evaluate_inferences.py +0 -0
  228. {dao_ai-0.1.0 → dao_ai-0.1.2}/notebooks/99_scratchpad.py +0 -0
  229. {dao_ai-0.1.0 → dao_ai-0.1.2}/requirements.txt +0 -0
  230. {dao_ai-0.1.0 → dao_ai-0.1.2}/schemas/bundle_config_schema.json +0 -0
  231. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dais2025/__init__.py +0 -0
  232. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dais2025/models.py +0 -0
  233. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dais2025/tools/__init__.py +0 -0
  234. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dais2025/tools/customer.py +0 -0
  235. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dais2025/tools/employee.py +0 -0
  236. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dais2025/tools/executive.py +0 -0
  237. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dais2025/tools/genie.py +0 -0
  238. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dais2025/tools/inventory.py +0 -0
  239. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dais2025/tools/models.py +0 -0
  240. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dais2025/tools/store.py +0 -0
  241. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/__init__.py +0 -0
  242. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/catalog.py +0 -0
  243. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/genie/__init__.py +0 -0
  244. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/genie/cache/__init__.py +0 -0
  245. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/genie/cache/base.py +0 -0
  246. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/genie/core.py +0 -0
  247. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/graph.py +0 -0
  248. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/hooks/__init__.py +0 -0
  249. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/memory/__init__.py +0 -0
  250. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/memory/base.py +0 -0
  251. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/messages.py +0 -0
  252. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/middleware/__init__.py +0 -0
  253. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/middleware/base.py +0 -0
  254. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/orchestration/__init__.py +0 -0
  255. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/providers/__init__.py +0 -0
  256. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/providers/base.py +0 -0
  257. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/tools/memory.py +0 -0
  258. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/types.py +0 -0
  259. {dao_ai-0.1.0 → dao_ai-0.1.2}/src/dao_ai/vector_search.py +0 -0
  260. {dao_ai-0.1.0/functions → dao_ai-0.1.2/src}/quick_serve_restaurant/.gitkeep +0 -0
  261. {dao_ai-0.1.0/src/hardware_store → dao_ai-0.1.2/src/quick_serve_restaurant}/__init__.py +0 -0
  262. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_agent_response_format.py +0 -0
  263. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_assertions_middleware.py +0 -0
  264. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_catalog.py +0 -0
  265. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_databricks.py +0 -0
  266. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_genie_conversation_ids_in_outputs.py +0 -0
  267. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_genie_databricks_integration.py +0 -0
  268. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_guardrail_retry.py +0 -0
  269. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_hitl_config_model.py +0 -0
  270. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_hitl_responses_agent.py +0 -0
  271. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_hooks.py +0 -0
  272. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_inference.py +0 -0
  273. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_interrupt_type.py +0 -0
  274. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_llm_interrupt_handling.py +0 -0
  275. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_messages.py +0 -0
  276. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_models.py +0 -0
  277. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_optimization.py +0 -0
  278. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_postgres_integration.py +0 -0
  279. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_reranking_integration.py +0 -0
  280. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_response_format.py +0 -0
  281. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_responses_agent_structured_output_unit.py +0 -0
  282. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_semantic_cache_context.py +0 -0
  283. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_state.py +0 -0
  284. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_summarization_inference.py +0 -0
  285. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_types.py +0 -0
  286. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_utils.py +0 -0
  287. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_utils_type_from_fqn.py +0 -0
  288. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/test_vector_search.py +0 -0
  289. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/dao_ai/weather_server_mcp.py +0 -0
  290. {dao_ai-0.1.0/src/quick_serve_restaurant → dao_ai-0.1.2/tests/hardware_store}/.gitkeep +0 -0
  291. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/images/doritos_upc.png +0 -0
  292. {dao_ai-0.1.0 → dao_ai-0.1.2}/tests/images/lays_upc.png +0 -0
  293. {dao_ai-0.1.0/tests/hardware_store → dao_ai-0.1.2/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/
@@ -21,7 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
21
21
  - `LoggingSummarizationMiddleware`: Extends LangChain's `SummarizationMiddleware` with detailed logging
22
22
  - Configurable via `chat_history` in YAML with `max_tokens`, `max_tokens_before_summary`, `max_messages_before_summary`
23
23
  - Logs original and summarized message/token counts for observability
24
- - New example config: `config/examples/conversation_summarization.yaml`
24
+ - New example config: `config/examples/04_memory/conversation_summarization.yaml`
25
25
 
26
26
  - **GEPA-Based Prompt Optimization**: Replaced MLflow optimizer with GEPA (Generative Evolution of Prompts and Agents)
27
27
  - `optimize_prompt()` function using DSPy's evolutionary optimization
@@ -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.2/PKG-INFO ADDED
@@ -0,0 +1,455 @@
1
+ Metadata-Version: 2.4
2
+ Name: dao-ai
3
+ Version: 0.1.2
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.0-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
+ **Step 5: Interact with your agent**
297
+
298
+ Once deployed, you can chat with your agent using Python:
299
+
300
+ ```python
301
+ from mlflow.deployments import get_deploy_client
302
+
303
+ # Connect to your Databricks workspace
304
+ client = get_deploy_client("databricks")
305
+
306
+ # Send a message to your agent
307
+ response = client.predict(
308
+ endpoint="my_first_agent",
309
+ inputs={
310
+ "messages": [{"role": "user", "content": "Hello! What can you help me with?"}],
311
+ "configurable": {
312
+ "thread_id": "1", # Conversation ID
313
+ "user_id": "demo_user" # User identifier
314
+ }
315
+ }
316
+ )
317
+
318
+ # Print the agent's response
319
+ print(response["message"]["content"])
320
+ ```
321
+
322
+ **🎉 Congratulations!** You've built and deployed your first AI agent with DAO.
323
+
324
+ **Next steps:**
325
+ - Explore the [`config/examples/`](config/examples/) folder for more advanced configurations
326
+ - Try the [DAO AI Builder](https://github.com/natefleming/dao-ai-builder) visual interface
327
+ - Learn about [Key Capabilities](docs/key-capabilities.md) to add advanced features
328
+ - Read the [Architecture](docs/architecture.md) documentation to understand how it works
329
+
330
+ ---
331
+
332
+ ## Key Features at a Glance
333
+
334
+ DAO provides powerful capabilities for building production-ready AI agents:
335
+
336
+ | Feature | Description |
337
+ |---------|-------------|
338
+ | **Multi-Tool Support** | Python functions, Unity Catalog, MCP, Agent Endpoints |
339
+ | **On-Behalf-Of User** | Per-user permissions and governance |
340
+ | **Advanced Caching** | Two-tier (LRU + Semantic) caching for cost optimization |
341
+ | **Vector Search Reranking** | Improve RAG quality with FlashRank |
342
+ | **Human-in-the-Loop** | Approval workflows for sensitive operations |
343
+ | **Memory & Persistence** | PostgreSQL, Lakebase, or in-memory state |
344
+ | **Prompt Registry** | Version and manage prompts in MLflow |
345
+ | **Prompt Optimization** | Automated tuning with GEPA (Generative Evolution of Prompts and Agents) |
346
+ | **Guardrails** | Content filters, safety checks, validation |
347
+ | **Middleware** | Input validation, logging, performance monitoring, audit trails |
348
+ | **Conversation Summarization** | Handle long conversations automatically |
349
+ | **Structured Output** | JSON schema for predictable responses |
350
+ | **Custom I/O** | Flexible input/output with runtime state |
351
+ | **Hook System** | Lifecycle hooks for initialization and cleanup |
352
+
353
+ 👉 **Learn more:** [Key Capabilities Documentation](docs/key-capabilities.md)
354
+
355
+ ---
356
+
357
+ ## Architecture Overview
358
+
359
+ ```mermaid
360
+ graph TB
361
+ subgraph yaml["YAML Configuration"]
362
+ direction LR
363
+ schemas[Schemas] ~~~ resources[Resources] ~~~ tools[Tools] ~~~ agents[Agents] ~~~ orchestration[Orchestration]
364
+ end
365
+
366
+ subgraph dao["DAO Framework (Python)"]
367
+ direction LR
368
+ config[Config<br/>Loader] ~~~ graph_builder[Graph<br/>Builder] ~~~ nodes[Nodes<br/>Factory] ~~~ tool_factory[Tool<br/>Factory]
369
+ end
370
+
371
+ subgraph langgraph["LangGraph Runtime"]
372
+ direction LR
373
+ msg_hook[Message<br/>Hook] --> supervisor[Supervisor/<br/>Swarm] --> specialized[Specialized<br/>Agents]
374
+ end
375
+
376
+ subgraph databricks["Databricks Platform"]
377
+ direction LR
378
+ model_serving[Model<br/>Serving] ~~~ unity_catalog[Unity<br/>Catalog] ~~~ vector_search[Vector<br/>Search] ~~~ genie_spaces[Genie<br/>Spaces] ~~~ mlflow[MLflow]
379
+ end
380
+
381
+ yaml ==> dao
382
+ dao ==> langgraph
383
+ langgraph ==> databricks
384
+
385
+ style yaml fill:#1B5162,stroke:#618794,stroke-width:3px,color:#fff
386
+ style dao fill:#FFAB00,stroke:#7D5319,stroke-width:3px,color:#1B3139
387
+ style langgraph fill:#618794,stroke:#143D4A,stroke-width:3px,color:#fff
388
+ style databricks fill:#00875C,stroke:#095A35,stroke-width:3px,color:#fff
389
+ ```
390
+
391
+ 👉 **Learn more:** [Architecture Documentation](docs/architecture.md)
392
+
393
+ ---
394
+
395
+ ## Example Configurations
396
+
397
+ The `config/examples/` directory contains ready-to-use configurations organized in a **progressive learning path**:
398
+
399
+ - `01_getting_started/minimal.yaml` - Simplest possible agent
400
+ - `02_tools/vector_search_with_reranking.yaml` - RAG with improved accuracy
401
+ - `04_genie/genie_semantic_cache.yaml` - NL-to-SQL with two-tier caching
402
+ - `05_memory/conversation_summarization.yaml` - Long conversation handling
403
+ - `06_on_behalf_of_user/obo_basic.yaml` - User-level access control
404
+ - `07_human_in_the_loop/human_in_the_loop.yaml` - Approval workflows
405
+
406
+ And many more! Follow the numbered path or jump to what you need. See the full guide in [Examples Documentation](docs/examples.md).
407
+
408
+ ---
409
+
410
+ ## CLI Quick Reference
411
+
412
+ ```bash
413
+ # Validate configuration
414
+ dao-ai validate -c config/my_config.yaml
415
+
416
+ # Generate JSON schema for IDE support
417
+ dao-ai schema > schemas/model_config_schema.json
418
+
419
+ # Visualize agent workflow
420
+ dao-ai graph -c config/my_config.yaml -o workflow.png
421
+
422
+ # Deploy with Databricks Asset Bundles
423
+ dao-ai bundle --deploy --run -c config/my_config.yaml
424
+
425
+ # Interactive chat with agent
426
+ dao-ai chat -c config/my_config.yaml
427
+ ```
428
+
429
+ 👉 **Learn more:** [CLI Reference Documentation](docs/cli-reference.md)
430
+
431
+ ---
432
+
433
+ ## Community & Support
434
+
435
+ - **Documentation**: [docs/](docs/)
436
+ - **Examples**: [config/examples/](config/examples/)
437
+ - **Issues**: [GitHub Issues](https://github.com/your-org/dao-ai/issues)
438
+ - **Discussions**: [GitHub Discussions](https://github.com/your-org/dao-ai/discussions)
439
+
440
+ ---
441
+
442
+ ## Contributing
443
+
444
+ We welcome contributions! See the [Contributing Guide](docs/contributing.md) for details on:
445
+
446
+ - Setting up your development environment
447
+ - Code style and testing guidelines
448
+ - How to submit pull requests
449
+ - Project structure overview
450
+
451
+ ---
452
+
453
+ ## License
454
+
455
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.