dao-ai 0.1.2__tar.gz → 0.1.4__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 (279) hide show
  1. {dao_ai-0.1.2 → dao_ai-0.1.4}/PKG-INFO +36 -2
  2. {dao_ai-0.1.2 → dao_ai-0.1.4}/README.md +35 -1
  3. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/03_reranking/vector_search_with_reranking.yaml +9 -7
  4. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/15_complete_applications/hardware_store_lakebase.yaml +1 -1
  5. {dao_ai-0.1.2 → dao_ai-0.1.4}/databricks.yaml.template +21 -9
  6. dao_ai-0.1.4/docs/cli-reference.md +237 -0
  7. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/key-capabilities.md +12 -8
  8. {dao_ai-0.1.2 → dao_ai-0.1.4}/pyproject.toml +1 -1
  9. {dao_ai-0.1.2 → dao_ai-0.1.4}/schemas/model_config_schema.json +29 -16
  10. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/cli.py +104 -18
  11. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/config.py +149 -40
  12. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/providers/databricks.py +11 -0
  13. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/vector_search.py +37 -0
  14. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_databricks.py +484 -0
  15. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_reranking.py +4 -0
  16. dao_ai-0.1.2/docs/cli-reference.md +0 -98
  17. dao_ai-0.1.2/src/quick_serve_restaurant/__init__.py +0 -0
  18. dao_ai-0.1.2/tests/quick_serve_restaurant/.gitkeep +0 -0
  19. {dao_ai-0.1.2 → dao_ai-0.1.4}/.gitignore +0 -0
  20. {dao_ai-0.1.2 → dao_ai-0.1.4}/.python-version +0 -0
  21. {dao_ai-0.1.2 → dao_ai-0.1.4}/CHANGELOG.md +0 -0
  22. {dao_ai-0.1.2 → dao_ai-0.1.4}/CONTRIBUTING.md +0 -0
  23. {dao_ai-0.1.2 → dao_ai-0.1.4}/LICENSE +0 -0
  24. {dao_ai-0.1.2 → dao_ai-0.1.4}/Makefile +0 -0
  25. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/01_getting_started/README.md +0 -0
  26. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/01_getting_started/minimal.yaml +0 -0
  27. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/02_mcp/README.md +0 -0
  28. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/02_mcp/custom_mcp.yaml +0 -0
  29. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/02_mcp/external_mcp.yaml +0 -0
  30. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/02_mcp/managed_mcp.yaml +0 -0
  31. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/02_mcp/slack_integration.yaml +0 -0
  32. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/03_reranking/README.md +0 -0
  33. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/04_genie/README.md +0 -0
  34. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/04_genie/genie_basic.yaml +0 -0
  35. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/04_genie/genie_lru_cache.yaml +0 -0
  36. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/04_genie/genie_semantic_cache.yaml +0 -0
  37. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/04_genie/genie_with_conversation_id.yaml +0 -0
  38. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/05_memory/README.md +0 -0
  39. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/05_memory/conversation_summarization.yaml +0 -0
  40. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/05_memory/in_memory_basic.yaml +0 -0
  41. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/05_memory/lakebase_persistence.yaml +0 -0
  42. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/05_memory/postgres_persistence.yaml +0 -0
  43. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/06_on_behalf_of_user/README.md +0 -0
  44. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/06_on_behalf_of_user/obo_basic.yaml +0 -0
  45. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/07_human_in_the_loop/README.md +0 -0
  46. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/07_human_in_the_loop/human_in_the_loop.yaml +0 -0
  47. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/08_guardrails/README.md +0 -0
  48. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/08_guardrails/guardrails_basic.yaml +0 -0
  49. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/09_structured_output/README.md +0 -0
  50. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/09_structured_output/structured_output.yaml +0 -0
  51. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/10_agent_integrations/README.md +0 -0
  52. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/10_agent_integrations/agent_bricks.yaml +0 -0
  53. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/10_agent_integrations/kasal.yaml +0 -0
  54. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/11_prompt_engineering/README.md +0 -0
  55. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/11_prompt_engineering/prompt_optimization.yaml +0 -0
  56. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/11_prompt_engineering/prompt_registry.yaml +0 -0
  57. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/12_middleware/README.md +0 -0
  58. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/12_middleware/combined_middleware.yaml +0 -0
  59. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/12_middleware/custom_field_validation.yaml +0 -0
  60. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/12_middleware/logging_middleware.yaml +0 -0
  61. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/13_orchestration/README.md +0 -0
  62. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/13_orchestration/supervisor_pattern.yaml +0 -0
  63. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/13_orchestration/swarm_pattern.yaml +0 -0
  64. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/14_basic_tools/README.md +0 -0
  65. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/14_basic_tools/sql_tool_example.yaml +0 -0
  66. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/15_complete_applications/README.md +0 -0
  67. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/15_complete_applications/brick_store.yaml +0 -0
  68. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/15_complete_applications/deep_research.yaml +0 -0
  69. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/15_complete_applications/executive_assistant.yaml +0 -0
  70. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/15_complete_applications/genie_and_genie_mcp.yaml +0 -0
  71. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/15_complete_applications/genie_vector_search_hybrid.yaml +0 -0
  72. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/15_complete_applications/hardware_store.yaml +0 -0
  73. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/15_complete_applications/hardware_store_swarm.yaml +0 -0
  74. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/15_complete_applications/quick_serve_restaurant.yaml +0 -0
  75. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/15_complete_applications/reservations_system.yaml +0 -0
  76. {dao_ai-0.1.2 → dao_ai-0.1.4}/config/examples/README.md +0 -0
  77. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/appointments.sql +0 -0
  78. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/appointments_data.sql +0 -0
  79. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/brand_rep_demo_data.sql +0 -0
  80. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/brand_rep_demo_queries.sql +0 -0
  81. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/brand_rep_demo_tables.sql +0 -0
  82. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/brand_rep_demo_validation.sql +0 -0
  83. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/customers.sql +0 -0
  84. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/customers_data.sql +0 -0
  85. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/dim_stores.sql +0 -0
  86. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/dim_stores_data.sql +0 -0
  87. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/employee_performance.sql +0 -0
  88. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/employee_performance_data.sql +0 -0
  89. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/employee_tasks.sql +0 -0
  90. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/employee_tasks_data.sql +0 -0
  91. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/inventory.sql +0 -0
  92. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/inventory_data.sql +0 -0
  93. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/managers.sql +0 -0
  94. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/managers_data.sql +0 -0
  95. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/product_data.sql +0 -0
  96. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/products.sql +0 -0
  97. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/dais2025/task_assignments.sql +0 -0
  98. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/hardware_store/inventory.snappy.parquet +0 -0
  99. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/hardware_store/inventory.sql +0 -0
  100. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/hardware_store/products.snappy.parquet +0 -0
  101. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/hardware_store/products.sql +0 -0
  102. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/quick_serve_restaurant/.gitkeep +0 -0
  103. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/quick_serve_restaurant/fulfil_item_orders.sql +0 -0
  104. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/quick_serve_restaurant/items_description.csv +0 -0
  105. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/quick_serve_restaurant/items_description.sql +0 -0
  106. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/quick_serve_restaurant/items_raw.csv +0 -0
  107. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/quick_serve_restaurant/items_raw.sql +0 -0
  108. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/quick_serve_restaurant/orders_raw.csv +0 -0
  109. {dao_ai-0.1.2 → dao_ai-0.1.4}/data/quick_serve_restaurant/orders_raw.sql +0 -0
  110. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/architecture.md +0 -0
  111. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/configuration-reference.md +0 -0
  112. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/contributing.md +0 -0
  113. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/examples.md +0 -0
  114. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/faq.md +0 -0
  115. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/hardware_store/README.md +0 -0
  116. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/hardware_store/retail_supervisor.png +0 -0
  117. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/hardware_store/retail_swarm.png +0 -0
  118. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/images/genie.png +0 -0
  119. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/python-api.md +0 -0
  120. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/quick_serve_restaurant/.gitkeep +0 -0
  121. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/quick_serve_restaurant/quick-serve-restaurant.png +0 -0
  122. {dao_ai-0.1.2 → dao_ai-0.1.4}/docs/why-dao.md +0 -0
  123. {dao_ai-0.1.2 → dao_ai-0.1.4}/environment.yaml +0 -0
  124. {dao_ai-0.1.2 → dao_ai-0.1.4}/examples/dais2025/examples.yaml +0 -0
  125. {dao_ai-0.1.2 → dao_ai-0.1.4}/examples/deep_research/examples.yaml +0 -0
  126. {dao_ai-0.1.2 → dao_ai-0.1.4}/examples/executive_assistant/examples.yaml +0 -0
  127. {dao_ai-0.1.2 → dao_ai-0.1.4}/examples/hardware_store/examples.yaml +0 -0
  128. {dao_ai-0.1.2 → dao_ai-0.1.4}/examples/quick_serve_restaurant/.gitkeep +0 -0
  129. {dao_ai-0.1.2 → dao_ai-0.1.4}/examples/quick_serve_restaurant/examples.yaml +0 -0
  130. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/dais2025/extract_store_numbers.sql +0 -0
  131. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/dais2025/find_inventory_by_sku.sql +0 -0
  132. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/dais2025/find_inventory_by_upc.sql +0 -0
  133. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/dais2025/find_product_by_sku.sql +0 -0
  134. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/dais2025/find_product_by_upc.sql +0 -0
  135. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/dais2025/find_store_by_number.sql +0 -0
  136. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/dais2025/find_store_inventory_by_sku.sql +0 -0
  137. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/dais2025/find_store_inventory_by_upc.sql +0 -0
  138. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/hardware_store/find_inventory_by_sku.sql +0 -0
  139. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/hardware_store/find_inventory_by_upc.sql +0 -0
  140. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/hardware_store/find_product_by_sku.sql +0 -0
  141. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/hardware_store/find_product_by_upc.sql +0 -0
  142. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/hardware_store/find_store_inventory_by_sku.sql +0 -0
  143. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/hardware_store/find_store_inventory_by_upc.sql +0 -0
  144. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/quick_serve_restaurant/.gitkeep +0 -0
  145. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/quick_serve_restaurant/insert_coffee_order.sql +0 -0
  146. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/quick_serve_restaurant/lookup_items_by_descriptions.sql +0 -0
  147. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/quick_serve_restaurant/match_historical_item_order_by_date.sql +0 -0
  148. {dao_ai-0.1.2 → dao_ai-0.1.4}/functions/quick_serve_restaurant/match_item_by_description_and_price.sql +0 -0
  149. {dao_ai-0.1.2 → dao_ai-0.1.4}/notebooks/01_ingest_and_transform.py +0 -0
  150. {dao_ai-0.1.2 → dao_ai-0.1.4}/notebooks/02_provision_vector_search.py +0 -0
  151. {dao_ai-0.1.2 → dao_ai-0.1.4}/notebooks/03_provision_lakebase.py +0 -0
  152. {dao_ai-0.1.2 → dao_ai-0.1.4}/notebooks/04_unity_catalog_tools.py +0 -0
  153. {dao_ai-0.1.2 → dao_ai-0.1.4}/notebooks/05_deploy_agent.py +0 -0
  154. {dao_ai-0.1.2 → dao_ai-0.1.4}/notebooks/06_generate_evaluation_data.py +0 -0
  155. {dao_ai-0.1.2 → dao_ai-0.1.4}/notebooks/07_run_evaluation.py +0 -0
  156. {dao_ai-0.1.2 → dao_ai-0.1.4}/notebooks/08_run_examples.py +0 -0
  157. {dao_ai-0.1.2 → dao_ai-0.1.4}/notebooks/09_evaluate_inferences.py +0 -0
  158. {dao_ai-0.1.2 → dao_ai-0.1.4}/notebooks/10_optimize_prompts.py +0 -0
  159. {dao_ai-0.1.2 → dao_ai-0.1.4}/notebooks/99_scratchpad.py +0 -0
  160. {dao_ai-0.1.2 → dao_ai-0.1.4}/requirements.txt +0 -0
  161. {dao_ai-0.1.2 → dao_ai-0.1.4}/schemas/bundle_config_schema.json +0 -0
  162. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dais2025/__init__.py +0 -0
  163. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dais2025/models.py +0 -0
  164. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dais2025/tools/__init__.py +0 -0
  165. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dais2025/tools/customer.py +0 -0
  166. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dais2025/tools/employee.py +0 -0
  167. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dais2025/tools/executive.py +0 -0
  168. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dais2025/tools/genie.py +0 -0
  169. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dais2025/tools/inventory.py +0 -0
  170. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dais2025/tools/models.py +0 -0
  171. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dais2025/tools/store.py +0 -0
  172. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/__init__.py +0 -0
  173. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/agent_as_code.py +0 -0
  174. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/catalog.py +0 -0
  175. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/genie/__init__.py +0 -0
  176. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/genie/cache/__init__.py +0 -0
  177. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/genie/cache/base.py +0 -0
  178. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/genie/cache/core.py +0 -0
  179. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/genie/cache/lru.py +0 -0
  180. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/genie/cache/semantic.py +0 -0
  181. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/genie/core.py +0 -0
  182. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/graph.py +0 -0
  183. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/hooks/__init__.py +0 -0
  184. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/hooks/core.py +0 -0
  185. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/logging.py +0 -0
  186. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/memory/__init__.py +0 -0
  187. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/memory/base.py +0 -0
  188. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/memory/core.py +0 -0
  189. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/memory/databricks.py +0 -0
  190. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/memory/postgres.py +0 -0
  191. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/messages.py +0 -0
  192. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/middleware/__init__.py +0 -0
  193. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/middleware/assertions.py +0 -0
  194. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/middleware/base.py +0 -0
  195. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/middleware/core.py +0 -0
  196. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/middleware/guardrails.py +0 -0
  197. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/middleware/human_in_the_loop.py +0 -0
  198. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/middleware/message_validation.py +0 -0
  199. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/middleware/summarization.py +0 -0
  200. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/models.py +0 -0
  201. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/nodes.py +0 -0
  202. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/optimization.py +0 -0
  203. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/orchestration/__init__.py +0 -0
  204. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/orchestration/core.py +0 -0
  205. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/orchestration/supervisor.py +0 -0
  206. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/orchestration/swarm.py +0 -0
  207. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/prompts.py +0 -0
  208. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/providers/__init__.py +0 -0
  209. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/providers/base.py +0 -0
  210. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/state.py +0 -0
  211. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/__init__.py +0 -0
  212. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/agent.py +0 -0
  213. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/core.py +0 -0
  214. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/email.py +0 -0
  215. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/genie.py +0 -0
  216. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/mcp.py +0 -0
  217. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/memory.py +0 -0
  218. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/python.py +0 -0
  219. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/search.py +0 -0
  220. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/slack.py +0 -0
  221. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/sql.py +0 -0
  222. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/time.py +0 -0
  223. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/unity_catalog.py +0 -0
  224. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/tools/vector_search.py +0 -0
  225. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/types.py +0 -0
  226. {dao_ai-0.1.2 → dao_ai-0.1.4}/src/dao_ai/utils.py +0 -0
  227. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/config/test_model_config.yaml +0 -0
  228. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/conftest.py +0 -0
  229. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_agent_response_format.py +0 -0
  230. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_assertions_middleware.py +0 -0
  231. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_catalog.py +0 -0
  232. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_chat_history.py +0 -0
  233. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_config.py +0 -0
  234. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_function_parsing.py +0 -0
  235. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_genie.py +0 -0
  236. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_genie_conversation_ids_in_outputs.py +0 -0
  237. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_genie_databricks_integration.py +0 -0
  238. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_genie_room_model.py +0 -0
  239. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_guardrail_retry.py +0 -0
  240. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_hitl_config_model.py +0 -0
  241. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_hitl_responses_agent.py +0 -0
  242. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_hooks.py +0 -0
  243. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_human_in_the_loop.py +0 -0
  244. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_inference.py +0 -0
  245. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_inference_integration.py +0 -0
  246. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_input_output_structure.py +0 -0
  247. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_interrupt_type.py +0 -0
  248. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_llm_interrupt_handling.py +0 -0
  249. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_mcp.py +0 -0
  250. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_mcp_function_model.py +0 -0
  251. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_message_validation_middleware.py +0 -0
  252. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_messages.py +0 -0
  253. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_models.py +0 -0
  254. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_optimization.py +0 -0
  255. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_postgres_integration.py +0 -0
  256. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_prompt_optimizations.py +0 -0
  257. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_prompts.py +0 -0
  258. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_reranking_integration.py +0 -0
  259. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_resources_model_genie_integration.py +0 -0
  260. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_response_format.py +0 -0
  261. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_responses_agent_structured_output_unit.py +0 -0
  262. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_semantic_cache_context.py +0 -0
  263. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_sql_tool.py +0 -0
  264. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_sql_tool_integration.py +0 -0
  265. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_state.py +0 -0
  266. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_summarization_inference.py +0 -0
  267. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_swarm_middleware.py +0 -0
  268. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_tools.py +0 -0
  269. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_types.py +0 -0
  270. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_unity_catalog.py +0 -0
  271. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_utils.py +0 -0
  272. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_utils_type_from_fqn.py +0 -0
  273. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/test_vector_search.py +0 -0
  274. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/dao_ai/weather_server_mcp.py +0 -0
  275. {dao_ai-0.1.2/src/quick_serve_restaurant → dao_ai-0.1.4/tests/hardware_store}/.gitkeep +0 -0
  276. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/hardware_store/test_graph.py +0 -0
  277. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/images/doritos_upc.png +0 -0
  278. {dao_ai-0.1.2 → dao_ai-0.1.4}/tests/images/lays_upc.png +0 -0
  279. {dao_ai-0.1.2/tests/hardware_store → dao_ai-0.1.4/tests/quick_serve_restaurant}/.gitkeep +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dao-ai
3
- Version: 0.1.2
3
+ Version: 0.1.4
4
4
  Summary: DAO AI: A modular, multi-agent orchestration framework for complex AI workflows. Supports agent handoff, tool integration, and dynamic configuration via YAML.
5
5
  Project-URL: Homepage, https://github.com/natefleming/dao-ai
6
6
  Project-URL: Documentation, https://natefleming.github.io/dao-ai
@@ -79,7 +79,7 @@ Description-Content-Type: text/markdown
79
79
 
80
80
  # DAO: Declarative Agent Orchestration
81
81
 
82
- [![Version](https://img.shields.io/badge/version-0.1.0-blue.svg)](CHANGELOG.md)
82
+ [![Version](https://img.shields.io/badge/version-0.1.2-blue.svg)](CHANGELOG.md)
83
83
  [![Python](https://img.shields.io/badge/python-3.11+-green.svg)](https://www.python.org/)
84
84
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
85
85
 
@@ -293,6 +293,16 @@ This single command:
293
293
  3. Deploys it to Databricks
294
294
  4. Creates a serving endpoint
295
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
+
296
306
  **Step 5: Interact with your agent**
297
307
 
298
308
  Once deployed, you can chat with your agent using Python:
@@ -422,10 +432,34 @@ dao-ai graph -c config/my_config.yaml -o workflow.png
422
432
  # Deploy with Databricks Asset Bundles
423
433
  dao-ai bundle --deploy --run -c config/my_config.yaml
424
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
+
425
439
  # Interactive chat with agent
426
440
  dao-ai chat -c config/my_config.yaml
427
441
  ```
428
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
+
429
463
  👉 **Learn more:** [CLI Reference Documentation](docs/cli-reference.md)
430
464
 
431
465
  ---
@@ -1,6 +1,6 @@
1
1
  # DAO: Declarative Agent Orchestration
2
2
 
3
- [![Version](https://img.shields.io/badge/version-0.1.0-blue.svg)](CHANGELOG.md)
3
+ [![Version](https://img.shields.io/badge/version-0.1.2-blue.svg)](CHANGELOG.md)
4
4
  [![Python](https://img.shields.io/badge/python-3.11+-green.svg)](https://www.python.org/)
5
5
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
6
6
 
@@ -214,6 +214,16 @@ This single command:
214
214
  3. Deploys it to Databricks
215
215
  4. Creates a serving endpoint
216
216
 
217
+ **Deploying to a specific workspace:**
218
+
219
+ ```bash
220
+ # Deploy to AWS workspace
221
+ dao-ai bundle --deploy --run -c config/my_agent.yaml --profile aws-field-eng
222
+
223
+ # Deploy to Azure workspace
224
+ dao-ai bundle --deploy --run -c config/my_agent.yaml --profile azure-retail
225
+ ```
226
+
217
227
  **Step 5: Interact with your agent**
218
228
 
219
229
  Once deployed, you can chat with your agent using Python:
@@ -343,10 +353,34 @@ dao-ai graph -c config/my_config.yaml -o workflow.png
343
353
  # Deploy with Databricks Asset Bundles
344
354
  dao-ai bundle --deploy --run -c config/my_config.yaml
345
355
 
356
+ # Deploy to a specific workspace (multi-cloud support)
357
+ dao-ai bundle --deploy -c config/my_config.yaml --profile aws-field-eng
358
+ dao-ai bundle --deploy -c config/my_config.yaml --profile azure-retail
359
+
346
360
  # Interactive chat with agent
347
361
  dao-ai chat -c config/my_config.yaml
348
362
  ```
349
363
 
364
+ ### Multi-Cloud Deployment
365
+
366
+ DAO AI supports deploying to Azure, AWS, and GCP workspaces with automatic cloud detection:
367
+
368
+ ```bash
369
+ # Deploy to AWS workspace
370
+ dao-ai bundle --deploy -c config/my_config.yaml --profile aws-prod
371
+
372
+ # Deploy to Azure workspace
373
+ dao-ai bundle --deploy -c config/my_config.yaml --profile azure-prod
374
+
375
+ # Deploy to GCP workspace
376
+ dao-ai bundle --deploy -c config/my_config.yaml --profile gcp-prod
377
+ ```
378
+
379
+ The CLI automatically:
380
+ - Detects the cloud provider from your profile's workspace URL
381
+ - Selects appropriate compute node types for each cloud
382
+ - Creates isolated deployment state per profile
383
+
350
384
  👉 **Learn more:** [CLI Reference Documentation](docs/cli-reference.md)
351
385
 
352
386
  ---
@@ -83,7 +83,7 @@ retrievers:
83
83
  filters: {}
84
84
  query_type: ANN
85
85
  rerank: # Custom reranking configuration
86
- model: ms-marco-MiniLM-L-6-v2 # Faster, lighter model
86
+ model: ms-marco-TinyBERT-L-2-v2 # Fastest, smallest model (~4MB)
87
87
  top_n: 5 # Return top 5 after reranking
88
88
  # cache_dir: ~/.dao_ai/cache/flashrank # Cache directory (default shown)
89
89
 
@@ -258,7 +258,7 @@ app:
258
258
  # - Use when: Need better results than standard search
259
259
  #
260
260
  # 3. Fast Reranking - fast_search_agent
261
- # - Uses lighter model (ms-marco-MiniLM-L-6-v2)
261
+ # - Uses lighter model (ms-marco-TinyBERT-L-2-v2)
262
262
  # - Retrieves 100 candidates, returns top 5
263
263
  # - Faster than default but still improves results
264
264
  # - Use when: High volume, need speed with some accuracy boost
@@ -286,8 +286,10 @@ app:
286
286
  # - More candidates = better reranking but slower
287
287
  # - Cache directory should be on fast storage
288
288
  #
289
- # Model Selection:
290
- # - ms-marco-TinyBERT-L-2-v2: Fastest, basic accuracy
291
- # - ms-marco-MiniLM-L-6-v2: Fast, good accuracy
292
- # - ms-marco-MiniLM-L-12-v2: Balanced (default)
293
- # - rank-T5-flan: Most accurate, slowest
289
+ # Model Selection (see https://github.com/PrithivirajDamodaran/FlashRank):
290
+ # - ms-marco-TinyBERT-L-2-v2: ~4MB, fastest
291
+ # - ms-marco-MiniLM-L-12-v2: ~34MB, best cross-encoder (default)
292
+ # - rank-T5-flan: ~110MB, best non cross-encoder
293
+ # - ms-marco-MultiBERT-L-12: ~150MB, multilingual (100+ languages)
294
+ # - ce-esci-MiniLM-L12-v2: e-commerce optimized (Amazon ESCI)
295
+ # - miniReranker_arabic_v1: Arabic language
@@ -689,7 +689,7 @@ app:
689
689
  registered_model: # MLflow registered model configuration
690
690
  schema: *retail_schema # Schema where model will be registered
691
691
  name: hardware_store_lakebase_dao
692
- endpoint_name: hardware_store_postgres_beta # Model serving endpoint name
692
+ endpoint_name: hardware_store_lakebase_dao # Model serving endpoint name
693
693
  environment_vars:
694
694
  PGHOST: "{{secrets/retail_ai/PGHOST}}" # Databricks host URL
695
695
  RETAIL_AI_DATABRICKS_CLIENT_ID: "{{secrets/retail_ai/RETAIL_AI_DATABRICKS_CLIENT_ID}}"
@@ -13,8 +13,9 @@ variables:
13
13
  config_path:
14
14
  description: Path to the configuration file for the job.
15
15
  node_type:
16
- description: The job compute node type
17
- default: Standard_D4ads_v5
16
+ description: The job compute node type (cloud-specific, set per target)
17
+ cloud:
18
+ description: Cloud provider (azure, aws, gcp) - auto-detected or set per target
18
19
 
19
20
  resources:
20
21
  jobs:
@@ -93,12 +94,23 @@ resources:
93
94
  config-path: ${var.config_path}
94
95
  environment_key: dao-ai-env
95
96
 
97
+ # Cloud-specific targets with appropriate node types
98
+ # The CLI auto-selects the target based on workspace cloud detection
96
99
  targets:
97
- __APP_NAME__:
100
+ azure:
98
101
  mode: development
99
- default: true
100
-
101
-
102
-
103
-
104
-
102
+ variables:
103
+ cloud: azure
104
+ node_type: Standard_D4ads_v5
105
+
106
+ aws:
107
+ mode: development
108
+ variables:
109
+ cloud: aws
110
+ node_type: i3.xlarge
111
+
112
+ gcp:
113
+ mode: development
114
+ variables:
115
+ cloud: gcp
116
+ node_type: n1-standard-4
@@ -0,0 +1,237 @@
1
+ # CLI Reference
2
+
3
+ ## Validate Configuration
4
+
5
+ Check your configuration for errors:
6
+
7
+ ```bash
8
+ dao-ai validate -c config/my_config.yaml
9
+ ```
10
+
11
+ ## Generate JSON Schema
12
+
13
+ Generate JSON schema for IDE support and validation:
14
+
15
+ ```bash
16
+ dao-ai schema > schemas/model_config_schema.json
17
+ ```
18
+
19
+ ## Visualize Agent Workflow
20
+
21
+ Generate a diagram showing how your agent works:
22
+
23
+ ```bash
24
+ dao-ai graph -c config/my_config.yaml -o workflow.png
25
+ ```
26
+
27
+ ## Deploy with Databricks Asset Bundles
28
+
29
+ Deploy your agent to Databricks. The CLI supports multi-cloud deployments with automatic cloud detection.
30
+
31
+ ### Basic Deployment
32
+
33
+ ```bash
34
+ # Deploy using default profile or environment
35
+ dao-ai bundle --deploy -c config/my_config.yaml
36
+ ```
37
+
38
+ ### Multi-Cloud Deployment
39
+
40
+ The CLI automatically detects the cloud provider from your Databricks workspace and selects the appropriate configuration (node types, etc.):
41
+
42
+ ```bash
43
+ # Deploy to AWS workspace
44
+ dao-ai bundle --deploy -c config/my_config.yaml --profile aws-field-eng
45
+
46
+ # Deploy to Azure workspace
47
+ dao-ai bundle --deploy -c config/my_config.yaml --profile azure-retail
48
+
49
+ # Deploy to GCP workspace
50
+ dao-ai bundle --deploy -c config/my_config.yaml --profile gcp-analytics
51
+ ```
52
+
53
+ ### Deploy and Run
54
+
55
+ ```bash
56
+ # Deploy and immediately run the job
57
+ dao-ai bundle --deploy --run -c config/my_config.yaml --profile aws-field-eng
58
+ ```
59
+
60
+ ### Explicit Cloud Override
61
+
62
+ If cloud auto-detection doesn't work, you can specify the cloud explicitly:
63
+
64
+ ```bash
65
+ dao-ai bundle --deploy -c config/my_config.yaml --cloud aws
66
+ ```
67
+
68
+ ### Dry Run
69
+
70
+ Preview commands without executing:
71
+
72
+ ```bash
73
+ dao-ai bundle --deploy -c config/my_config.yaml --profile aws-field-eng --dry-run
74
+ ```
75
+
76
+ ## Interactive Chat
77
+
78
+ Start an interactive chat session with your agent:
79
+
80
+ ```bash
81
+ dao-ai chat -c config/my_config.yaml
82
+ ```
83
+
84
+ ## Verbose Output
85
+
86
+ Increase verbosity for debugging (use `-v` through `-vvvv`):
87
+
88
+ ```bash
89
+ dao-ai -vvvv validate -c config/my_config.yaml
90
+ ```
91
+
92
+ ---
93
+
94
+ ## Command Options
95
+
96
+ ### Common Options
97
+
98
+ | Option | Description |
99
+ |--------|-------------|
100
+ | `-c, --config FILE` | Path to configuration file (required) |
101
+ | `-p, --profile NAME` | Databricks CLI profile to use |
102
+ | `-v, --verbose` | Increase verbosity (can be repeated up to 4 times) |
103
+ | `--help` | Show help message |
104
+
105
+ ### Validate Options
106
+
107
+ ```bash
108
+ dao-ai validate -c config/my_config.yaml [OPTIONS]
109
+ ```
110
+
111
+ ### Graph Options
112
+
113
+ ```bash
114
+ dao-ai graph -c config/my_config.yaml -o output.png [OPTIONS]
115
+ ```
116
+
117
+ | Option | Description |
118
+ |--------|-------------|
119
+ | `-o, --output FILE` | Output file path (supports .png, .pdf, .svg) |
120
+
121
+ ### Bundle Options
122
+
123
+ ```bash
124
+ dao-ai bundle -c config/my_config.yaml [OPTIONS]
125
+ ```
126
+
127
+ | Option | Description |
128
+ |--------|-------------|
129
+ | `-d, --deploy` | Deploy the bundle to Databricks |
130
+ | `-r, --run` | Run the deployment job after deploying |
131
+ | `--destroy` | Destroy the deployed bundle |
132
+ | `-p, --profile NAME` | Databricks CLI profile to use |
133
+ | `--cloud {azure,aws,gcp}` | Cloud provider (auto-detected if not specified) |
134
+ | `-t, --target NAME` | Bundle target name (auto-generated if not specified) |
135
+ | `--dry-run` | Preview commands without executing |
136
+
137
+ ### Chat Options
138
+
139
+ ```bash
140
+ dao-ai chat -c config/my_config.yaml [OPTIONS]
141
+ ```
142
+
143
+ Starts an interactive REPL session where you can chat with your agent locally.
144
+
145
+ ---
146
+
147
+ ## Multi-Cloud Support
148
+
149
+ DAO AI supports deploying to Azure, AWS, and GCP Databricks workspaces. The CLI handles cloud-specific configurations automatically.
150
+
151
+ ### How It Works
152
+
153
+ 1. **Cloud Detection**: When you specify a `--profile`, the CLI detects the cloud provider from the workspace URL
154
+ 2. **Target Selection**: The CLI uses the profile name as the deployment target for per-profile isolation
155
+ 3. **Node Types**: Cloud-appropriate compute node types are automatically selected:
156
+ - Azure: `Standard_D4ads_v5`
157
+ - AWS: `i3.xlarge`
158
+ - GCP: `n1-standard-4`
159
+
160
+ ### Profile Configuration
161
+
162
+ Profiles are configured in `~/.databrickscfg`:
163
+
164
+ ```ini
165
+ [aws-field-eng]
166
+ host = https://my-workspace.cloud.databricks.com
167
+ token = dapi...
168
+
169
+ [azure-retail]
170
+ host = https://adb-123456789.azuredatabricks.net
171
+ token = dapi...
172
+
173
+ [gcp-analytics]
174
+ host = https://my-workspace.gcp.databricks.com
175
+ token = dapi...
176
+ ```
177
+
178
+ ### Deployment Isolation
179
+
180
+ Each profile gets its own isolated deployment state:
181
+
182
+ ```
183
+ /.bundle/my_app/aws-field-eng/files # AWS deployment
184
+ /.bundle/my_app/azure-retail/files # Azure deployment
185
+ /.bundle/my_app/gcp-analytics/files # GCP deployment
186
+ ```
187
+
188
+ This allows you to deploy the same application to multiple workspaces without conflicts.
189
+
190
+ ---
191
+
192
+ ## Examples
193
+
194
+ ### Deploy to Multiple Clouds
195
+
196
+ ```bash
197
+ # Deploy to AWS
198
+ dao-ai bundle --deploy -c config/hardware_store.yaml --profile aws-prod
199
+
200
+ # Deploy same app to Azure
201
+ dao-ai bundle --deploy -c config/hardware_store.yaml --profile azure-prod
202
+
203
+ # Deploy same app to GCP
204
+ dao-ai bundle --deploy -c config/hardware_store.yaml --profile gcp-prod
205
+ ```
206
+
207
+ ### Development vs Production
208
+
209
+ ```bash
210
+ # Deploy to development workspace
211
+ dao-ai bundle --deploy -c config/my_app.yaml --profile aws-dev
212
+
213
+ # Deploy to production workspace
214
+ dao-ai bundle --deploy -c config/my_app.yaml --profile aws-prod
215
+ ```
216
+
217
+ ### Full Deployment Pipeline
218
+
219
+ ```bash
220
+ # Validate configuration
221
+ dao-ai validate -c config/my_app.yaml
222
+
223
+ # Generate workflow diagram
224
+ dao-ai graph -c config/my_app.yaml -o workflow.png
225
+
226
+ # Deploy and run
227
+ dao-ai bundle --deploy --run -c config/my_app.yaml --profile aws-field-eng
228
+ ```
229
+
230
+ ---
231
+
232
+ ## Navigation
233
+
234
+ - [← Previous: Examples](examples.md)
235
+ - [↑ Back to Documentation Index](../README.md#-documentation)
236
+ - [Next: Python API →](python-api.md)
237
+
@@ -298,12 +298,16 @@ Vector embeddings capture semantic similarity but may rank loosely related docum
298
298
 
299
299
  ### Available Models
300
300
 
301
- | Model | Speed | Quality | Use Case |
302
- |-------|-------|---------|----------|
303
- | `ms-marco-TinyBERT-L-2-v2` | ⚡⚡⚡ Fastest | Good | High-throughput, latency-sensitive |
304
- | `ms-marco-MiniLM-L-6-v2` | ⚡⚡ Fast | Better | Balanced performance |
305
- | `ms-marco-MiniLM-L-12-v2` | Moderate | Best | Default, recommended |
306
- | `rank-T5-flan` | Slower | Excellent | Maximum accuracy |
301
+ See [FlashRank](https://github.com/PrithivirajDamodaran/FlashRank) for the full list of supported models.
302
+
303
+ | Model | Size | Speed | Use Case |
304
+ |-------|------|-------|----------|
305
+ | `ms-marco-TinyBERT-L-2-v2` | ~4MB | ⚡⚡⚡ Fastest | High-throughput, latency-sensitive |
306
+ | `ms-marco-MiniLM-L-12-v2` | ~34MB | ⚡⚡ Fast | Default, best cross-encoder |
307
+ | `rank-T5-flan` | ~110MB | ⚡ Moderate | Best non cross-encoder |
308
+ | `ms-marco-MultiBERT-L-12` | ~150MB | Slower | Multilingual (100+ languages) |
309
+ | `ce-esci-MiniLM-L12-v2` | - | ⚡⚡ Fast | E-commerce optimized |
310
+ | `miniReranker_arabic_v1` | - | ⚡⚡ Fast | Arabic language |
307
311
 
308
312
  ### Configuration Options
309
313
 
@@ -311,11 +315,11 @@ Vector embeddings capture semantic similarity but may rank loosely related docum
311
315
  rerank:
312
316
  model: ms-marco-MiniLM-L-12-v2 # FlashRank model name
313
317
  top_n: 10 # Documents to return (default: all)
314
- cache_dir: /tmp/flashrank_cache # Model weights cache location
318
+ cache_dir: ~/.dao_ai/cache/flashrank # Model weights cache location
315
319
  columns: [description, name] # Columns for Databricks Reranker (optional)
316
320
  ```
317
321
 
318
- **Note:** Model weights are downloaded automatically on first use (~20MB for MiniLM-L-12-v2).
322
+ **Note:** Model weights are downloaded automatically on first use (~34MB for MiniLM-L-12-v2).
319
323
 
320
324
  ## 5. Human-in-the-Loop Approvals
321
325
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "dao-ai"
7
- version = "0.1.2"
7
+ version = "0.1.4"
8
8
  description = "DAO AI: A modular, multi-agent orchestration framework for complex AI workflows. Supports agent handoff, tool integration, and dynamic configuration via YAML."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -3402,7 +3402,7 @@
3402
3402
  },
3403
3403
  "RerankParametersModel": {
3404
3404
  "additionalProperties": false,
3405
- "description": "Configuration for reranking retrieved documents using FlashRank.\n\nFlashRank provides fast, local reranking without API calls using lightweight\ncross-encoder models. Reranking improves retrieval quality by reordering results\nbased on semantic relevance to the query.\n\nTypical workflow:\n1. Retrieve more documents than needed (e.g., 50 via num_results)\n2. Rerank all retrieved documents\n3. Return top_n best matches (e.g., 5)\n\nExample:\n ```yaml\n retriever:\n search_parameters:\n num_results: 50 # Retrieve more candidates\n rerank:\n model: ms-marco-MiniLM-L-12-v2\n top_n: 5 # Return top 5 after reranking\n ```\n\nAvailable models (from fastest to most accurate):\n- \"ms-marco-TinyBERT-L-2-v2\" (fastest, smallest)\n- \"ms-marco-MiniLM-L-6-v2\"\n- \"ms-marco-MiniLM-L-12-v2\" (default, good balance)\n- \"rank-T5-flan\" (most accurate, slower)",
3405
+ "description": "Configuration for reranking retrieved documents using FlashRank.\n\nFlashRank provides fast, local reranking without API calls using lightweight\ncross-encoder models. Reranking improves retrieval quality by reordering results\nbased on semantic relevance to the query.\n\nTypical workflow:\n1. Retrieve more documents than needed (e.g., 50 via num_results)\n2. Rerank all retrieved documents\n3. Return top_n best matches (e.g., 5)\n\nExample:\n ```yaml\n retriever:\n search_parameters:\n num_results: 50 # Retrieve more candidates\n rerank:\n model: ms-marco-MiniLM-L-12-v2\n top_n: 5 # Return top 5 after reranking\n ```\n\nAvailable models (see https://github.com/PrithivirajDamodaran/FlashRank):\n- \"ms-marco-TinyBERT-L-2-v2\" (~4MB, fastest)\n- \"ms-marco-MiniLM-L-12-v2\" (~34MB, best cross-encoder, default)\n- \"rank-T5-flan\" (~110MB, best non cross-encoder)\n- \"ms-marco-MultiBERT-L-12\" (~150MB, multilingual 100+ languages)\n- \"ce-esci-MiniLM-L12-v2\" (e-commerce optimized, Amazon ESCI)\n- \"miniReranker_arabic_v1\" (Arabic language)",
3406
3406
  "properties": {
3407
3407
  "model": {
3408
3408
  "default": "ms-marco-MiniLM-L-12-v2",
@@ -4336,6 +4336,7 @@
4336
4336
  },
4337
4337
  "VectorStoreModel": {
4338
4338
  "additionalProperties": false,
4339
+ "description": "Configuration model for a Databricks Vector Search store.\n\nSupports two modes:\n1. **Use Existing Index**: Provide only `index` (fully qualified name).\n Used for querying an existing vector search index at runtime.\n2. **Provisioning Mode**: Provide `source_table` + `embedding_source_column`.\n Used for creating a new vector search index.\n\nExamples:\n Minimal configuration (use existing index):\n ```yaml\n vector_stores:\n products_search:\n index:\n name: catalog.schema.my_index\n ```\n\n Full provisioning configuration:\n ```yaml\n vector_stores:\n products_search:\n source_table:\n schema: *my_schema\n name: products\n embedding_source_column: description\n endpoint:\n name: my_endpoint\n ```",
4339
4340
  "properties": {
4340
4341
  "on_behalf_of_user": {
4341
4342
  "anyOf": [
@@ -4492,10 +4493,10 @@
4492
4493
  "default": null,
4493
4494
  "title": "Pat"
4494
4495
  },
4495
- "embedding_model": {
4496
+ "index": {
4496
4497
  "anyOf": [
4497
4498
  {
4498
- "$ref": "#/$defs/LLMModel"
4499
+ "$ref": "#/$defs/IndexModel"
4499
4500
  },
4500
4501
  {
4501
4502
  "type": "null"
@@ -4503,10 +4504,33 @@
4503
4504
  ],
4504
4505
  "default": null
4505
4506
  },
4506
- "index": {
4507
+ "source_table": {
4507
4508
  "anyOf": [
4508
4509
  {
4509
- "$ref": "#/$defs/IndexModel"
4510
+ "$ref": "#/$defs/TableModel"
4511
+ },
4512
+ {
4513
+ "type": "null"
4514
+ }
4515
+ ],
4516
+ "default": null
4517
+ },
4518
+ "embedding_source_column": {
4519
+ "anyOf": [
4520
+ {
4521
+ "type": "string"
4522
+ },
4523
+ {
4524
+ "type": "null"
4525
+ }
4526
+ ],
4527
+ "default": null,
4528
+ "title": "Embedding Source Column"
4529
+ },
4530
+ "embedding_model": {
4531
+ "anyOf": [
4532
+ {
4533
+ "$ref": "#/$defs/LLMModel"
4510
4534
  },
4511
4535
  {
4512
4536
  "type": "null"
@@ -4525,9 +4549,6 @@
4525
4549
  ],
4526
4550
  "default": null
4527
4551
  },
4528
- "source_table": {
4529
- "$ref": "#/$defs/TableModel"
4530
- },
4531
4552
  "source_path": {
4532
4553
  "anyOf": [
4533
4554
  {
@@ -4587,16 +4608,8 @@
4587
4608
  ],
4588
4609
  "default": null,
4589
4610
  "title": "Doc Uri"
4590
- },
4591
- "embedding_source_column": {
4592
- "title": "Embedding Source Column",
4593
- "type": "string"
4594
4611
  }
4595
4612
  },
4596
- "required": [
4597
- "source_table",
4598
- "embedding_source_column"
4599
- ],
4600
4613
  "title": "VectorStoreModel",
4601
4614
  "type": "object"
4602
4615
  },