dao-ai 0.1.14__tar.gz → 0.1.16__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 (304) hide show
  1. {dao_ai-0.1.14 → dao_ai-0.1.16}/PKG-INFO +1 -1
  2. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/02_mcp/managed_mcp.yaml +10 -6
  3. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/15_complete_applications/quick_serve_restaurant.yaml +1 -32
  4. {dao_ai-0.1.14 → dao_ai-0.1.16}/databricks.yaml.template +5 -5
  5. {dao_ai-0.1.14 → dao_ai-0.1.16}/pyproject.toml +1 -1
  6. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/cli.py +16 -4
  7. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/config.py +6 -3
  8. {dao_ai-0.1.14 → dao_ai-0.1.16}/.gitignore +0 -0
  9. {dao_ai-0.1.14 → dao_ai-0.1.16}/.python-version +0 -0
  10. {dao_ai-0.1.14 → dao_ai-0.1.16}/CHANGELOG.md +0 -0
  11. {dao_ai-0.1.14 → dao_ai-0.1.16}/CONTRIBUTING.md +0 -0
  12. {dao_ai-0.1.14 → dao_ai-0.1.16}/LICENSE +0 -0
  13. {dao_ai-0.1.14 → dao_ai-0.1.16}/Makefile +0 -0
  14. {dao_ai-0.1.14 → dao_ai-0.1.16}/README.md +0 -0
  15. {dao_ai-0.1.14 → dao_ai-0.1.16}/app.yaml +0 -0
  16. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/01_getting_started/README.md +0 -0
  17. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/01_getting_started/minimal.yaml +0 -0
  18. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/02_mcp/README.md +0 -0
  19. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/02_mcp/custom_mcp.yaml +0 -0
  20. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/02_mcp/external_mcp.yaml +0 -0
  21. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/02_mcp/filtered_mcp.yaml +0 -0
  22. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/02_mcp/slack_integration.yaml +0 -0
  23. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/03_reranking/README.md +0 -0
  24. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/03_reranking/vector_search_with_reranking.yaml +0 -0
  25. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/04_genie/README.md +0 -0
  26. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/04_genie/genie_basic.yaml +0 -0
  27. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/04_genie/genie_lru_cache.yaml +0 -0
  28. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/04_genie/genie_semantic_cache.yaml +0 -0
  29. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/04_genie/genie_with_conversation_id.yaml +0 -0
  30. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/05_memory/README.md +0 -0
  31. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/05_memory/conversation_summarization.yaml +0 -0
  32. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/05_memory/in_memory_basic.yaml +0 -0
  33. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/05_memory/lakebase_persistence.yaml +0 -0
  34. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/05_memory/postgres_persistence.yaml +0 -0
  35. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/06_on_behalf_of_user/README.md +0 -0
  36. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/06_on_behalf_of_user/obo_basic.yaml +0 -0
  37. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/07_human_in_the_loop/README.md +0 -0
  38. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/07_human_in_the_loop/human_in_the_loop.yaml +0 -0
  39. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/08_guardrails/README.md +0 -0
  40. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/08_guardrails/guardrails_basic.yaml +0 -0
  41. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/09_structured_output/README.md +0 -0
  42. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/09_structured_output/structured_output.yaml +0 -0
  43. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/10_agent_integrations/README.md +0 -0
  44. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/10_agent_integrations/agent_bricks.yaml +0 -0
  45. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/10_agent_integrations/kasal.yaml +0 -0
  46. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/11_prompt_engineering/README.md +0 -0
  47. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/11_prompt_engineering/prompt_optimization.yaml +0 -0
  48. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/11_prompt_engineering/prompt_registry.yaml +0 -0
  49. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/12_middleware/README.md +0 -0
  50. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/12_middleware/combined_middleware.yaml +0 -0
  51. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/12_middleware/context_management.yaml +0 -0
  52. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/12_middleware/custom_field_validation.yaml +0 -0
  53. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/12_middleware/limit_middleware.yaml +0 -0
  54. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/12_middleware/logging_middleware.yaml +0 -0
  55. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/12_middleware/pii_middleware.yaml +0 -0
  56. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/12_middleware/retry_middleware.yaml +0 -0
  57. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/12_middleware/tool_selector_middleware.yaml +0 -0
  58. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/13_orchestration/README.md +0 -0
  59. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/13_orchestration/supervisor_pattern.yaml +0 -0
  60. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/13_orchestration/swarm_pattern.yaml +0 -0
  61. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/14_basic_tools/README.md +0 -0
  62. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/14_basic_tools/sql_tool_example.yaml +0 -0
  63. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/15_complete_applications/README.md +0 -0
  64. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/15_complete_applications/brick_store.yaml +0 -0
  65. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/15_complete_applications/deep_research.yaml +0 -0
  66. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/15_complete_applications/executive_assistant.yaml +0 -0
  67. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/15_complete_applications/genie_and_genie_mcp.yaml +0 -0
  68. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/15_complete_applications/genie_vector_search_hybrid.yaml +0 -0
  69. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/15_complete_applications/hardware_store.yaml +0 -0
  70. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/15_complete_applications/hardware_store_lakebase.yaml +0 -0
  71. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/15_complete_applications/hardware_store_swarm.yaml +0 -0
  72. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/15_complete_applications/reservations_system.yaml +0 -0
  73. {dao_ai-0.1.14 → dao_ai-0.1.16}/config/examples/README.md +0 -0
  74. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/appointments.sql +0 -0
  75. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/appointments_data.sql +0 -0
  76. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/brand_rep_demo_data.sql +0 -0
  77. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/brand_rep_demo_queries.sql +0 -0
  78. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/brand_rep_demo_tables.sql +0 -0
  79. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/brand_rep_demo_validation.sql +0 -0
  80. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/customers.sql +0 -0
  81. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/customers_data.sql +0 -0
  82. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/dim_stores.sql +0 -0
  83. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/dim_stores_data.sql +0 -0
  84. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/employee_performance.sql +0 -0
  85. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/employee_performance_data.sql +0 -0
  86. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/employee_tasks.sql +0 -0
  87. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/employee_tasks_data.sql +0 -0
  88. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/inventory.sql +0 -0
  89. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/inventory_data.sql +0 -0
  90. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/managers.sql +0 -0
  91. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/managers_data.sql +0 -0
  92. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/product_data.sql +0 -0
  93. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/products.sql +0 -0
  94. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/dais2025/task_assignments.sql +0 -0
  95. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/hardware_store/inventory.snappy.parquet +0 -0
  96. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/hardware_store/inventory.sql +0 -0
  97. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/hardware_store/products.snappy.parquet +0 -0
  98. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/hardware_store/products.sql +0 -0
  99. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/quick_serve_restaurant/.gitkeep +0 -0
  100. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/quick_serve_restaurant/fulfil_item_orders.sql +0 -0
  101. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/quick_serve_restaurant/items_description.csv +0 -0
  102. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/quick_serve_restaurant/items_description.sql +0 -0
  103. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/quick_serve_restaurant/items_raw.csv +0 -0
  104. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/quick_serve_restaurant/items_raw.sql +0 -0
  105. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/quick_serve_restaurant/orders_raw.csv +0 -0
  106. {dao_ai-0.1.14 → dao_ai-0.1.16}/data/quick_serve_restaurant/orders_raw.sql +0 -0
  107. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/architecture.md +0 -0
  108. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/cli-reference.md +0 -0
  109. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/configuration-reference.md +0 -0
  110. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/contributing.md +0 -0
  111. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/examples.md +0 -0
  112. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/faq.md +0 -0
  113. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/hardware_store/README.md +0 -0
  114. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/hardware_store/retail_supervisor.png +0 -0
  115. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/hardware_store/retail_swarm.png +0 -0
  116. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/images/genie.png +0 -0
  117. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/key-capabilities.md +0 -0
  118. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/python-api.md +0 -0
  119. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/quick_serve_restaurant/.gitkeep +0 -0
  120. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/quick_serve_restaurant/quick-serve-restaurant.png +0 -0
  121. {dao_ai-0.1.14 → dao_ai-0.1.16}/docs/why-dao.md +0 -0
  122. {dao_ai-0.1.14 → dao_ai-0.1.16}/environment.yaml +0 -0
  123. {dao_ai-0.1.14 → dao_ai-0.1.16}/examples/dais2025/examples.yaml +0 -0
  124. {dao_ai-0.1.14 → dao_ai-0.1.16}/examples/deep_research/examples.yaml +0 -0
  125. {dao_ai-0.1.14 → dao_ai-0.1.16}/examples/executive_assistant/examples.yaml +0 -0
  126. {dao_ai-0.1.14 → dao_ai-0.1.16}/examples/hardware_store/examples.yaml +0 -0
  127. {dao_ai-0.1.14 → dao_ai-0.1.16}/examples/quick_serve_restaurant/.gitkeep +0 -0
  128. {dao_ai-0.1.14 → dao_ai-0.1.16}/examples/quick_serve_restaurant/examples.yaml +0 -0
  129. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/dais2025/extract_store_numbers.sql +0 -0
  130. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/dais2025/find_inventory_by_sku.sql +0 -0
  131. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/dais2025/find_inventory_by_upc.sql +0 -0
  132. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/dais2025/find_product_by_sku.sql +0 -0
  133. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/dais2025/find_product_by_upc.sql +0 -0
  134. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/dais2025/find_store_by_number.sql +0 -0
  135. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/dais2025/find_store_inventory_by_sku.sql +0 -0
  136. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/dais2025/find_store_inventory_by_upc.sql +0 -0
  137. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/hardware_store/find_inventory_by_sku.sql +0 -0
  138. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/hardware_store/find_inventory_by_upc.sql +0 -0
  139. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/hardware_store/find_product_by_sku.sql +0 -0
  140. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/hardware_store/find_product_by_upc.sql +0 -0
  141. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/hardware_store/find_store_inventory_by_sku.sql +0 -0
  142. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/hardware_store/find_store_inventory_by_upc.sql +0 -0
  143. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/quick_serve_restaurant/.gitkeep +0 -0
  144. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/quick_serve_restaurant/insert_coffee_order.sql +0 -0
  145. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/quick_serve_restaurant/lookup_items_by_descriptions.sql +0 -0
  146. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/quick_serve_restaurant/match_historical_item_order_by_date.sql +0 -0
  147. {dao_ai-0.1.14 → dao_ai-0.1.16}/functions/quick_serve_restaurant/match_item_by_description_and_price.sql +0 -0
  148. {dao_ai-0.1.14 → dao_ai-0.1.16}/notebooks/01_ingest_and_transform.py +0 -0
  149. {dao_ai-0.1.14 → dao_ai-0.1.16}/notebooks/02_provision_vector_search.py +0 -0
  150. {dao_ai-0.1.14 → dao_ai-0.1.16}/notebooks/03_provision_lakebase.py +0 -0
  151. {dao_ai-0.1.14 → dao_ai-0.1.16}/notebooks/04_unity_catalog_tools.py +0 -0
  152. {dao_ai-0.1.14 → dao_ai-0.1.16}/notebooks/05_deploy_agent.py +0 -0
  153. {dao_ai-0.1.14 → dao_ai-0.1.16}/notebooks/06_generate_evaluation_data.py +0 -0
  154. {dao_ai-0.1.14 → dao_ai-0.1.16}/notebooks/07_run_evaluation.py +0 -0
  155. {dao_ai-0.1.14 → dao_ai-0.1.16}/notebooks/08_run_examples.py +0 -0
  156. {dao_ai-0.1.14 → dao_ai-0.1.16}/notebooks/09_evaluate_inferences.py +0 -0
  157. {dao_ai-0.1.14 → dao_ai-0.1.16}/notebooks/10_optimize_prompts.py +0 -0
  158. {dao_ai-0.1.14 → dao_ai-0.1.16}/notebooks/99_scratchpad.py +0 -0
  159. {dao_ai-0.1.14 → dao_ai-0.1.16}/requirements.txt +0 -0
  160. {dao_ai-0.1.14 → dao_ai-0.1.16}/schemas/bundle_config_schema.json +0 -0
  161. {dao_ai-0.1.14 → dao_ai-0.1.16}/schemas/model_config_schema.json +0 -0
  162. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dais2025/__init__.py +0 -0
  163. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dais2025/models.py +0 -0
  164. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dais2025/tools/__init__.py +0 -0
  165. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dais2025/tools/customer.py +0 -0
  166. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dais2025/tools/employee.py +0 -0
  167. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dais2025/tools/executive.py +0 -0
  168. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dais2025/tools/genie.py +0 -0
  169. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dais2025/tools/inventory.py +0 -0
  170. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dais2025/tools/models.py +0 -0
  171. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dais2025/tools/store.py +0 -0
  172. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/__init__.py +0 -0
  173. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/apps/__init__.py +0 -0
  174. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/apps/handlers.py +0 -0
  175. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/apps/model_serving.py +0 -0
  176. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/apps/resources.py +0 -0
  177. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/apps/server.py +0 -0
  178. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/catalog.py +0 -0
  179. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/genie/__init__.py +0 -0
  180. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/genie/cache/__init__.py +0 -0
  181. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/genie/cache/base.py +0 -0
  182. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/genie/cache/core.py +0 -0
  183. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/genie/cache/lru.py +0 -0
  184. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/genie/cache/semantic.py +0 -0
  185. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/genie/core.py +0 -0
  186. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/graph.py +0 -0
  187. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/hooks/__init__.py +0 -0
  188. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/hooks/core.py +0 -0
  189. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/logging.py +0 -0
  190. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/memory/__init__.py +0 -0
  191. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/memory/base.py +0 -0
  192. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/memory/core.py +0 -0
  193. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/memory/databricks.py +0 -0
  194. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/memory/postgres.py +0 -0
  195. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/messages.py +0 -0
  196. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/__init__.py +0 -0
  197. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/assertions.py +0 -0
  198. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/base.py +0 -0
  199. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/context_editing.py +0 -0
  200. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/core.py +0 -0
  201. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/guardrails.py +0 -0
  202. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/human_in_the_loop.py +0 -0
  203. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/message_validation.py +0 -0
  204. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/model_call_limit.py +0 -0
  205. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/model_retry.py +0 -0
  206. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/pii.py +0 -0
  207. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/summarization.py +0 -0
  208. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/tool_call_limit.py +0 -0
  209. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/tool_retry.py +0 -0
  210. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/middleware/tool_selector.py +0 -0
  211. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/models.py +0 -0
  212. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/nodes.py +0 -0
  213. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/optimization.py +0 -0
  214. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/orchestration/__init__.py +0 -0
  215. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/orchestration/core.py +0 -0
  216. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/orchestration/supervisor.py +0 -0
  217. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/orchestration/swarm.py +0 -0
  218. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/prompts.py +0 -0
  219. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/providers/__init__.py +0 -0
  220. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/providers/base.py +0 -0
  221. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/providers/databricks.py +0 -0
  222. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/state.py +0 -0
  223. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/__init__.py +0 -0
  224. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/agent.py +0 -0
  225. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/core.py +0 -0
  226. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/email.py +0 -0
  227. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/genie.py +0 -0
  228. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/mcp.py +0 -0
  229. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/memory.py +0 -0
  230. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/python.py +0 -0
  231. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/search.py +0 -0
  232. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/slack.py +0 -0
  233. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/sql.py +0 -0
  234. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/time.py +0 -0
  235. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/unity_catalog.py +0 -0
  236. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/tools/vector_search.py +0 -0
  237. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/types.py +0 -0
  238. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/utils.py +0 -0
  239. {dao_ai-0.1.14 → dao_ai-0.1.16}/src/dao_ai/vector_search.py +0 -0
  240. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/config/test_model_config.yaml +0 -0
  241. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/conftest.py +0 -0
  242. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/middleware/test_context_editing.py +0 -0
  243. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/middleware/test_model_call_limit.py +0 -0
  244. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/middleware/test_model_retry.py +0 -0
  245. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/middleware/test_pii.py +0 -0
  246. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/middleware/test_tool_call_limit.py +0 -0
  247. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/middleware/test_tool_retry.py +0 -0
  248. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/middleware/test_tool_selector.py +0 -0
  249. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_agent_response_format.py +0 -0
  250. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_assertions_middleware.py +0 -0
  251. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_catalog.py +0 -0
  252. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_chat_history.py +0 -0
  253. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_config.py +0 -0
  254. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_databricks.py +0 -0
  255. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_function_parsing.py +0 -0
  256. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_genie.py +0 -0
  257. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_genie_conversation_ids_in_outputs.py +0 -0
  258. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_genie_databricks_integration.py +0 -0
  259. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_genie_room_model.py +0 -0
  260. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_guardrail_retry.py +0 -0
  261. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_hitl_config_model.py +0 -0
  262. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_hitl_responses_agent.py +0 -0
  263. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_hooks.py +0 -0
  264. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_human_in_the_loop.py +0 -0
  265. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_inference.py +0 -0
  266. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_inference_integration.py +0 -0
  267. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_input_output_structure.py +0 -0
  268. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_interrupt_type.py +0 -0
  269. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_llm_interrupt_handling.py +0 -0
  270. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_mcp.py +0 -0
  271. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_mcp_filtering.py +0 -0
  272. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_mcp_filtering_integration.py +0 -0
  273. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_mcp_function_model.py +0 -0
  274. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_message_validation_middleware.py +0 -0
  275. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_messages.py +0 -0
  276. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_models.py +0 -0
  277. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_optimization.py +0 -0
  278. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_postgres_integration.py +0 -0
  279. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_prompt_optimizations.py +0 -0
  280. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_prompts.py +0 -0
  281. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_reranking.py +0 -0
  282. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_reranking_integration.py +0 -0
  283. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_resources_model_genie_integration.py +0 -0
  284. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_response_format.py +0 -0
  285. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_responses_agent_structured_output_unit.py +0 -0
  286. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_semantic_cache_context.py +0 -0
  287. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_sql_tool.py +0 -0
  288. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_sql_tool_integration.py +0 -0
  289. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_state.py +0 -0
  290. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_summarization_inference.py +0 -0
  291. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_swarm_middleware.py +0 -0
  292. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_tools.py +0 -0
  293. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_types.py +0 -0
  294. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_unity_catalog.py +0 -0
  295. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_utils.py +0 -0
  296. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_utils_type_from_fqn.py +0 -0
  297. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_vector_search.py +0 -0
  298. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/test_warehouse_model.py +0 -0
  299. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/dao_ai/weather_server_mcp.py +0 -0
  300. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/hardware_store/.gitkeep +0 -0
  301. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/hardware_store/test_graph.py +0 -0
  302. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/images/doritos_upc.png +0 -0
  303. {dao_ai-0.1.14 → dao_ai-0.1.16}/tests/images/lays_upc.png +0 -0
  304. {dao_ai-0.1.14 → dao_ai-0.1.16}/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.14
3
+ Version: 0.1.16
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
@@ -3,19 +3,19 @@
3
3
  variables:
4
4
  client_id: &client_id # Service principal client ID
5
5
  options:
6
- - env: RETAIL_AI_DATABRICKS_CLIENT_ID
7
- - scope: retail_ai
6
+ - scope: retail_consumer_goods
8
7
  secret: RETAIL_AI_DATABRICKS_CLIENT_ID
8
+ - env: RETAIL_AI_DATABRICKS_CLIENT_ID
9
9
  client_secret: &client_secret # Service principal secret
10
10
  options:
11
- - env: RETAIL_AI_DATABRICKS_CLIENT_SECRET
12
- - scope: retail_ai
11
+ - scope: retail_consumer_goods
13
12
  secret: RETAIL_AI_DATABRICKS_CLIENT_SECRET
13
+ - env: RETAIL_AI_DATABRICKS_CLIENT_SECRET
14
14
  workspace_host: &workspace_host # Databricks workspace URL
15
15
  options:
16
- - env: RETAIL_AI_DATABRICKS_HOST
17
- - scope: retail_ai
16
+ - scope: retail_consumer_goods
18
17
  secret: RETAIL_AI_DATABRICKS_HOST
18
+ - env: RETAIL_AI_DATABRICKS_HOST
19
19
 
20
20
  schemas:
21
21
  retail_schema: &retail_schema # Unity Catalog schema configuration
@@ -112,6 +112,10 @@ app:
112
112
  registered_model: # MLflow registered model configuration
113
113
  schema: *retail_schema # Schema where model will be registered
114
114
  name: mcp_agent # Model name in MLflow registry
115
+ environment_vars:
116
+ RETAIL_AI_DATABRICKS_CLIENT_ID: *client_id
117
+ RETAIL_AI_DATABRICKS_CLIENT_SECRET: *client_secret
118
+ RETAIL_AI_DATABRICKS_HOST: *workspace_host
115
119
  agents: # List of agents included in the system
116
120
  - *mcp_agent # MCP agent
117
121
  orchestration: # Agent orchestration configuration
@@ -144,38 +144,7 @@ resources:
144
144
  description: "A warehouse for shared endpoints" # Description
145
145
  warehouse_id: 148ccb90800933a1 # Databricks warehouse ID
146
146
 
147
- # ---------------------------------------------------------------------------
148
- # DATABASES
149
- # ---------------------------------------------------------------------------
150
- # Configure external databases (e.g., PostgreSQL for checkpoints and memory)
151
- # Supports both traditional user/password auth and OAuth2 client credentials
152
- databases:
153
- # PostgreSQL database for agent memory and checkpoints
154
- qsr_database: &qsr_database
155
- name: "retail-consumer-goods"
156
- description: "Database for agent memory and checkpoints"
157
-
158
- # Database connection parameters
159
- # These can be set via environment variables or Databricks secrets
160
- host: *database_host_var
161
- port: *port_var
162
- database: *database_var
163
- client_id: *client_id_var
164
- client_secret: *client_secret_var
165
- workspace_host: *workspace_host_var
166
-
167
-
168
- # Optional: Additional PostgreSQL connection parameters
169
- # Uncomment and modify as needed for your specific setup
170
- # connection_kwargs: # Additional connection parameters
171
- # autocommit: True # Enable autocommit mode
172
- # prepare_threshold: 0 # Disable prepared statements
173
- # sslmode: require # Require SSL connection
174
- # connect_timeout: 10 # Connection timeout in seconds
175
-
176
- # Optional: Connection pool configuration
177
- # max_pool_size: 20 # Maximum connections in pool
178
- # timeout: 5 # Connection timeout in seconds
147
+
179
148
 
180
149
  # =============================================================================
181
150
  # RETRIEVERS CONFIGURATION
@@ -98,22 +98,22 @@ resources:
98
98
  config-path: ${var.config_path}
99
99
  environment_key: dao-ai-env
100
100
 
101
- # Cloud-specific targets with appropriate node types
102
- # The CLI auto-selects the target based on workspace cloud detection
101
+ # App-specific cloud targets - ensures each app has its own deployment identity per cloud
102
+ # The CLI auto-detects cloud provider and selects the appropriate target (e.g., app_name-azure)
103
103
  targets:
104
- azure:
104
+ __APP_NAME__-azure:
105
105
  mode: development
106
106
  variables:
107
107
  cloud: azure
108
108
  node_type: Standard_D4ads_v5
109
109
 
110
- aws:
110
+ __APP_NAME__-aws:
111
111
  mode: development
112
112
  variables:
113
113
  cloud: aws
114
114
  node_type: i3.xlarge
115
115
 
116
- gcp:
116
+ __APP_NAME__-gcp:
117
117
  mode: development
118
118
  variables:
119
119
  cloud: gcp
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "dao-ai"
7
- version = "0.1.14"
7
+ version = "0.1.16"
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" }
@@ -63,16 +63,26 @@ def detect_cloud_provider(profile: Optional[str] = None) -> Optional[str]:
63
63
  Cloud provider string ('azure', 'aws', 'gcp') or None if detection fails
64
64
  """
65
65
  try:
66
+ import os
66
67
  from databricks.sdk import WorkspaceClient
67
68
 
69
+ # Check for environment variables that might override profile
70
+ if profile and os.environ.get("DATABRICKS_HOST"):
71
+ logger.warning(
72
+ f"DATABRICKS_HOST environment variable is set, which may override --profile {profile}"
73
+ )
74
+
68
75
  # Create workspace client with optional profile
69
76
  if profile:
77
+ logger.debug(f"Creating WorkspaceClient with profile: {profile}")
70
78
  w = WorkspaceClient(profile=profile)
71
79
  else:
80
+ logger.debug("Creating WorkspaceClient with default/ambient credentials")
72
81
  w = WorkspaceClient()
73
82
 
74
83
  # Get the workspace URL from config
75
84
  host = w.config.host
85
+ logger.debug(f"WorkspaceClient host: {host}, profile used: {profile}")
76
86
  if not host:
77
87
  logger.warning("Could not determine workspace URL for cloud detection")
78
88
  return None
@@ -1143,7 +1153,7 @@ def run_databricks_command(
1143
1153
  app_config: AppConfig = AppConfig.from_file(config_path) if config_path else None
1144
1154
  normalized_name: str = normalize_name(app_config.app.name) if app_config else None
1145
1155
 
1146
- # Auto-detect cloud provider if not specified
1156
+ # Auto-detect cloud provider if not specified (used for node_type selection)
1147
1157
  if not cloud:
1148
1158
  cloud = detect_cloud_provider(profile)
1149
1159
  if cloud:
@@ -1156,10 +1166,12 @@ def run_databricks_command(
1156
1166
  if config_path and app_config:
1157
1167
  generate_bundle_from_template(config_path, normalized_name)
1158
1168
 
1159
- # Use cloud as target (azure, aws, gcp) - can be overridden with explicit --target
1169
+ # Use app-specific cloud target: {app_name}-{cloud}
1170
+ # This ensures each app has unique deployment identity while supporting cloud-specific settings
1171
+ # Can be overridden with explicit --target
1160
1172
  if not target:
1161
- target = cloud
1162
- logger.debug(f"Using cloud-based target: {target}")
1173
+ target = f"{normalized_name}-{cloud}"
1174
+ logger.info(f"Using app-specific cloud target: {target}")
1163
1175
 
1164
1176
  # Build databricks command
1165
1177
  # --profile is a global flag, --target is a subcommand flag for 'bundle'
@@ -373,11 +373,13 @@ class IsDatabricksResource(ABC, BaseModel):
373
373
  """
374
374
  from dao_ai.utils import normalize_host
375
375
 
376
+ logger.trace(f"workspace_client_from called", context=context, on_behalf_of_user=self.on_behalf_of_user)
377
+
376
378
  # Check if we have headers in context for OBO
377
379
  if context and context.headers and self.on_behalf_of_user:
378
380
  headers = context.headers
379
381
  # Try both lowercase and title-case header names (HTTP headers are case-insensitive)
380
- forwarded_token = headers.get("x-forwarded-access-token") or headers.get(
382
+ forwarded_token: str = headers.get("x-forwarded-access-token") or headers.get(
381
383
  "X-Forwarded-Access-Token"
382
384
  )
383
385
 
@@ -2088,9 +2090,10 @@ class McpFunctionModel(BaseFunctionModel, IsDatabricksResource):
2088
2090
  if self.sql:
2089
2091
  return f"{workspace_host}/api/2.0/mcp/sql"
2090
2092
 
2091
- # Databricks App
2093
+ # Databricks App - MCP endpoint is at {app_url}/mcp
2092
2094
  if self.app:
2093
- return self.app.url
2095
+ app_url = self.app.url.rstrip("/")
2096
+ return f"{app_url}/mcp"
2094
2097
 
2095
2098
  # Vector Search
2096
2099
  if self.vector_search:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes