dao-ai 0.0.28__py3-none-any.whl → 0.1.5__py3-none-any.whl

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 (70) hide show
  1. dao_ai/__init__.py +29 -0
  2. dao_ai/agent_as_code.py +2 -5
  3. dao_ai/cli.py +342 -58
  4. dao_ai/config.py +1610 -380
  5. dao_ai/genie/__init__.py +38 -0
  6. dao_ai/genie/cache/__init__.py +43 -0
  7. dao_ai/genie/cache/base.py +72 -0
  8. dao_ai/genie/cache/core.py +79 -0
  9. dao_ai/genie/cache/lru.py +347 -0
  10. dao_ai/genie/cache/semantic.py +970 -0
  11. dao_ai/genie/core.py +35 -0
  12. dao_ai/graph.py +27 -253
  13. dao_ai/hooks/__init__.py +9 -6
  14. dao_ai/hooks/core.py +27 -195
  15. dao_ai/logging.py +56 -0
  16. dao_ai/memory/__init__.py +10 -0
  17. dao_ai/memory/core.py +65 -30
  18. dao_ai/memory/databricks.py +402 -0
  19. dao_ai/memory/postgres.py +79 -38
  20. dao_ai/messages.py +6 -4
  21. dao_ai/middleware/__init__.py +158 -0
  22. dao_ai/middleware/assertions.py +806 -0
  23. dao_ai/middleware/base.py +50 -0
  24. dao_ai/middleware/context_editing.py +230 -0
  25. dao_ai/middleware/core.py +67 -0
  26. dao_ai/middleware/guardrails.py +420 -0
  27. dao_ai/middleware/human_in_the_loop.py +233 -0
  28. dao_ai/middleware/message_validation.py +586 -0
  29. dao_ai/middleware/model_call_limit.py +77 -0
  30. dao_ai/middleware/model_retry.py +121 -0
  31. dao_ai/middleware/pii.py +157 -0
  32. dao_ai/middleware/summarization.py +197 -0
  33. dao_ai/middleware/tool_call_limit.py +210 -0
  34. dao_ai/middleware/tool_retry.py +174 -0
  35. dao_ai/models.py +1306 -114
  36. dao_ai/nodes.py +240 -161
  37. dao_ai/optimization.py +674 -0
  38. dao_ai/orchestration/__init__.py +52 -0
  39. dao_ai/orchestration/core.py +294 -0
  40. dao_ai/orchestration/supervisor.py +279 -0
  41. dao_ai/orchestration/swarm.py +271 -0
  42. dao_ai/prompts.py +128 -31
  43. dao_ai/providers/databricks.py +584 -601
  44. dao_ai/state.py +157 -21
  45. dao_ai/tools/__init__.py +13 -5
  46. dao_ai/tools/agent.py +1 -3
  47. dao_ai/tools/core.py +64 -11
  48. dao_ai/tools/email.py +232 -0
  49. dao_ai/tools/genie.py +144 -294
  50. dao_ai/tools/mcp.py +223 -155
  51. dao_ai/tools/memory.py +50 -0
  52. dao_ai/tools/python.py +9 -14
  53. dao_ai/tools/search.py +14 -0
  54. dao_ai/tools/slack.py +22 -10
  55. dao_ai/tools/sql.py +202 -0
  56. dao_ai/tools/time.py +30 -7
  57. dao_ai/tools/unity_catalog.py +165 -88
  58. dao_ai/tools/vector_search.py +331 -221
  59. dao_ai/utils.py +166 -20
  60. dao_ai/vector_search.py +37 -0
  61. dao_ai-0.1.5.dist-info/METADATA +489 -0
  62. dao_ai-0.1.5.dist-info/RECORD +70 -0
  63. dao_ai/chat_models.py +0 -204
  64. dao_ai/guardrails.py +0 -112
  65. dao_ai/tools/human_in_the_loop.py +0 -100
  66. dao_ai-0.0.28.dist-info/METADATA +0 -1168
  67. dao_ai-0.0.28.dist-info/RECORD +0 -41
  68. {dao_ai-0.0.28.dist-info → dao_ai-0.1.5.dist-info}/WHEEL +0 -0
  69. {dao_ai-0.0.28.dist-info → dao_ai-0.1.5.dist-info}/entry_points.txt +0 -0
  70. {dao_ai-0.0.28.dist-info → dao_ai-0.1.5.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,489 @@
1
+ Metadata-Version: 2.4
2
+ Name: dao-ai
3
+ Version: 0.1.5
4
+ Summary: DAO AI: A modular, multi-agent orchestration framework for complex AI workflows. Supports agent handoff, tool integration, and dynamic configuration via YAML.
5
+ Project-URL: Homepage, https://github.com/natefleming/dao-ai
6
+ Project-URL: Documentation, https://natefleming.github.io/dao-ai
7
+ Project-URL: Repository, https://github.com/natefleming/dao-ai
8
+ Project-URL: Issues, https://github.com/natefleming/dao-ai/issues
9
+ Project-URL: Changelog, https://github.com/natefleming/dao-ai/blob/main/CHANGELOG.md
10
+ Author-email: Nate Fleming <nate.fleming@databricks.com>, Nate Fleming <nate.fleming@gmail.com>
11
+ Maintainer-email: Nate Fleming <nate.fleming@databricks.com>
12
+ License: MIT
13
+ License-File: LICENSE
14
+ Keywords: agents,ai,databricks,langchain,langgraph,llm,multi-agent,orchestration,vector-search,workflow
15
+ Classifier: Development Status :: 3 - Alpha
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Intended Audience :: Science/Research
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Classifier: Topic :: System :: Distributed Computing
27
+ Requires-Python: >=3.11
28
+ Requires-Dist: databricks-agents>=1.9.0
29
+ Requires-Dist: databricks-langchain[memory]>=0.12.1
30
+ Requires-Dist: databricks-mcp>=0.5.0
31
+ Requires-Dist: databricks-sdk[openai]>=0.76.0
32
+ Requires-Dist: ddgs>=9.10.0
33
+ Requires-Dist: dspy>=2.6.27
34
+ Requires-Dist: flashrank>=0.2.10
35
+ Requires-Dist: gepa>=0.0.22
36
+ Requires-Dist: grandalf>=0.8
37
+ Requires-Dist: langchain-community>=0.3.26
38
+ Requires-Dist: langchain-mcp-adapters>=0.2.1
39
+ Requires-Dist: langchain-tavily>=0.2.15
40
+ Requires-Dist: langchain>=1.2.0
41
+ Requires-Dist: langgraph-checkpoint-postgres>=3.0.2
42
+ Requires-Dist: langgraph>=1.0.5
43
+ Requires-Dist: langmem>=0.0.30
44
+ Requires-Dist: loguru>=0.7.3
45
+ Requires-Dist: mcp>=1.24.0
46
+ Requires-Dist: mlflow>=3.8.1
47
+ Requires-Dist: nest-asyncio>=1.6.0
48
+ Requires-Dist: openevals>=0.1.3
49
+ Requires-Dist: openpyxl>=3.1.5
50
+ Requires-Dist: psycopg[binary,pool]>=3.3.2
51
+ Requires-Dist: pydantic>=2.12.5
52
+ Requires-Dist: python-dotenv>=1.2.1
53
+ Requires-Dist: pyyaml>=6.0.2
54
+ Requires-Dist: rich>=14.2.0
55
+ Requires-Dist: scipy>=1.14.0
56
+ Requires-Dist: sqlparse>=0.5.4
57
+ Requires-Dist: tomli>=2.3.0
58
+ Requires-Dist: unitycatalog-ai[databricks]>=0.3.2
59
+ Provides-Extra: databricks
60
+ Requires-Dist: databricks-connect>=16.0.0; extra == 'databricks'
61
+ Requires-Dist: databricks-vectorsearch>=0.63; extra == 'databricks'
62
+ Requires-Dist: pyspark>=3.5.0; extra == 'databricks'
63
+ Provides-Extra: dev
64
+ Requires-Dist: mypy>=1.19.1; extra == 'dev'
65
+ Requires-Dist: pre-commit>=4.5.1; extra == 'dev'
66
+ Requires-Dist: pytest>=9.0.2; extra == 'dev'
67
+ Requires-Dist: ruff>=0.14.9; extra == 'dev'
68
+ Provides-Extra: docs
69
+ Requires-Dist: mkdocs-material>=9.7.1; extra == 'docs'
70
+ Requires-Dist: mkdocs>=1.6.1; extra == 'docs'
71
+ Requires-Dist: mkdocstrings[python]>=1.0.0; extra == 'docs'
72
+ Provides-Extra: test
73
+ Requires-Dist: pytest-cov>=7.0.0; extra == 'test'
74
+ Requires-Dist: pytest-mock>=3.15.1; extra == 'test'
75
+ Requires-Dist: pytest-rerunfailures>=15.0; extra == 'test'
76
+ Requires-Dist: pytest-xdist>=3.6.1; extra == 'test'
77
+ Requires-Dist: pytest>=9.0.2; extra == 'test'
78
+ Description-Content-Type: text/markdown
79
+
80
+ # DAO: Declarative Agent Orchestration
81
+
82
+ [![Version](https://img.shields.io/badge/version-0.1.2-blue.svg)](CHANGELOG.md)
83
+ [![Python](https://img.shields.io/badge/python-3.11+-green.svg)](https://www.python.org/)
84
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
85
+
86
+ **Production-grade AI agents defined in YAML, powered by LangGraph, deployed on Databricks.**
87
+
88
+ DAO is an **infrastructure-as-code framework** for building, deploying, and managing multi-agent AI systems. Instead of writing boilerplate Python code to wire up agents, tools, and orchestration, you define everything declaratively in YAML configuration files.
89
+
90
+ ```yaml
91
+ # Define an agent in 10 lines of YAML
92
+ agents:
93
+ product_expert:
94
+ name: product_expert
95
+ model: *claude_sonnet
96
+ tools:
97
+ - *vector_search_tool
98
+ - *genie_tool
99
+ prompt: |
100
+ You are a product expert. Answer questions about inventory and pricing.
101
+ ```
102
+
103
+ ### 🎨 Visual Configuration Studio
104
+
105
+ Prefer a visual interface? Check out **[DAO AI Builder](https://github.com/natefleming/dao-ai-builder)** — a React-based web application that provides a graphical interface for creating and editing DAO configurations. Perfect for:
106
+
107
+ - **Exploring** DAO's capabilities through an intuitive UI
108
+ - **Learning** the configuration structure with guided forms
109
+ - **Building** agents visually without writing YAML manually
110
+ - **Importing** and editing existing configurations
111
+
112
+ DAO AI Builder generates valid YAML configurations that work seamlessly with this framework. Use whichever workflow suits you best — visual builder or direct YAML editing.
113
+
114
+ <p align="center">
115
+ <img src="https://raw.githubusercontent.com/natefleming/dao-ai-builder/6ca07d2b977d9509b75edfb2e0f45681c840a931/docs/images/dao-ai-builder-screenshot.png" width="700" alt="DAO AI Builder Screenshot">
116
+ </p>
117
+
118
+ ---
119
+
120
+ ## 📚 Documentation
121
+
122
+ ### Getting Started
123
+ - **[Why DAO?](docs/why-dao.md)** - Learn what DAO is and how it compares to other platforms
124
+ - **[Quick Start](#quick-start)** - Build and deploy your first agent in minutes
125
+ - **[Architecture](docs/architecture.md)** - Understand how DAO works under the hood
126
+
127
+ ### Core Concepts
128
+ - **[Key Capabilities](docs/key-capabilities.md)** - Explore 14 powerful features for production agents
129
+ - **[Configuration Reference](docs/configuration-reference.md)** - Complete YAML configuration guide
130
+ - **[Examples](docs/examples.md)** - Ready-to-use example configurations
131
+
132
+ ### Reference
133
+ - **[CLI Reference](docs/cli-reference.md)** - Command-line interface documentation
134
+ - **[Python API](docs/python-api.md)** - Programmatic usage and customization
135
+ - **[FAQ](docs/faq.md)** - Frequently asked questions
136
+
137
+ ### Contributing
138
+ - **[Contributing Guide](docs/contributing.md)** - How to contribute to DAO
139
+
140
+ ---
141
+
142
+ ## Quick Start
143
+
144
+ ### Prerequisites
145
+
146
+ Before you begin, you'll need:
147
+
148
+ - **Python 3.11 or newer** installed on your computer ([download here](https://www.python.org/downloads/))
149
+ - **A Databricks workspace** (ask your IT team or see [Databricks docs](https://docs.databricks.com/))
150
+ - Access to **Unity Catalog** (your organization's data catalog)
151
+ - **Model Serving** enabled (for deploying AI agents)
152
+ - *Optional*: Vector Search, Genie (for advanced features)
153
+
154
+ **Not sure if you have access?** Your Databricks administrator can grant you permissions.
155
+
156
+ ### Installation
157
+
158
+ **Option 1: Install from PyPI (Recommended)**
159
+
160
+ The simplest way to get started:
161
+
162
+ ```bash
163
+ # Install directly from PyPI
164
+ pip install dao-ai
165
+ ```
166
+
167
+ **Option 2: For developers familiar with Git**
168
+
169
+ ```bash
170
+ # Clone this repository
171
+ git clone <repo-url>
172
+ cd dao-ai
173
+
174
+ # Create an isolated Python environment
175
+ uv venv
176
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
177
+
178
+ # Install DAO and its dependencies
179
+ make install
180
+ ```
181
+
182
+ **Option 3: For those new to development**
183
+
184
+ 1. Download this project as a ZIP file (click the green "Code" button on GitHub → Download ZIP)
185
+ 2. Extract the ZIP file to a folder on your computer
186
+ 3. Open a terminal/command prompt and navigate to that folder
187
+ 4. Run these commands:
188
+
189
+ ```bash
190
+ # On Mac/Linux:
191
+ python3 -m venv .venv
192
+ source .venv/bin/activate
193
+ pip install -e .
194
+
195
+ # On Windows:
196
+ python -m venv .venv
197
+ .venv\Scripts\activate
198
+ pip install -e .
199
+ ```
200
+
201
+ **Verification:** Run `dao-ai --version` to confirm the installation succeeded.
202
+
203
+ ### Your First Agent
204
+
205
+ Let's build a simple AI assistant in 4 steps. This agent will use a language model from Databricks to answer questions.
206
+
207
+ **Step 1: Create a configuration file**
208
+
209
+ Create a new file called `config/my_agent.yaml` and paste this content:
210
+
211
+ ```yaml
212
+ schemas:
213
+ my_schema: &my_schema
214
+ catalog_name: my_catalog # Replace with your Unity Catalog name
215
+ schema_name: my_schema # Replace with your schema name
216
+
217
+ resources:
218
+ llms:
219
+ default_llm: &default_llm
220
+ name: databricks-meta-llama-3-3-70b-instruct # The AI model to use
221
+
222
+ agents:
223
+ assistant: &assistant
224
+ name: assistant
225
+ model: *default_llm
226
+ prompt: |
227
+ You are a helpful assistant.
228
+
229
+ app:
230
+ name: my_first_agent
231
+ registered_model:
232
+ schema: *my_schema
233
+ name: my_first_agent
234
+ agents:
235
+ - *assistant
236
+ orchestration:
237
+ swarm:
238
+ model: *default_llm
239
+ ```
240
+
241
+ **💡 What's happening here?**
242
+ - `schemas`: Points to your Unity Catalog location (where the agent will be registered)
243
+ - `resources`: Defines the AI model (Llama 3.3 70B in this case)
244
+ - `agents`: Describes your assistant agent and its behavior
245
+ - `app`: Configures how the agent is deployed and orchestrated
246
+
247
+ **Step 2: Validate your configuration**
248
+
249
+ This checks for errors in your YAML file:
250
+
251
+ ```bash
252
+ dao-ai validate -c config/my_agent.yaml
253
+ ```
254
+
255
+ You should see: ✅ `Configuration is valid!`
256
+
257
+ **Step 3: Visualize the agent workflow** (optional)
258
+
259
+ Generate a diagram showing how your agent works:
260
+
261
+ ```bash
262
+ dao-ai graph -c config/my_agent.yaml -o my_agent.png
263
+ ```
264
+
265
+ This creates `my_agent.png` — open it to see a visual representation of your agent.
266
+
267
+ **Step 4: Deploy to Databricks**
268
+
269
+ **Option A: Using Python** (programmatic deployment)
270
+
271
+ ```python
272
+ from dao_ai.config import AppConfig
273
+
274
+ # Load your configuration
275
+ config = AppConfig.from_file("config/my_agent.yaml")
276
+
277
+ # Package the agent as an MLflow model
278
+ config.create_agent()
279
+
280
+ # Deploy to Databricks Model Serving
281
+ config.deploy_agent()
282
+ ```
283
+
284
+ **Option B: Using the CLI** (one command)
285
+
286
+ ```bash
287
+ dao-ai bundle --deploy --run -c config/my_agent.yaml
288
+ ```
289
+
290
+ This single command:
291
+ 1. Validates your configuration
292
+ 2. Packages the agent
293
+ 3. Deploys it to Databricks
294
+ 4. Creates a serving endpoint
295
+
296
+ **Deploying to a specific workspace:**
297
+
298
+ ```bash
299
+ # Deploy to AWS workspace
300
+ dao-ai bundle --deploy --run -c config/my_agent.yaml --profile aws-field-eng
301
+
302
+ # Deploy to Azure workspace
303
+ dao-ai bundle --deploy --run -c config/my_agent.yaml --profile azure-retail
304
+ ```
305
+
306
+ **Step 5: Interact with your agent**
307
+
308
+ Once deployed, you can chat with your agent using Python:
309
+
310
+ ```python
311
+ from mlflow.deployments import get_deploy_client
312
+
313
+ # Connect to your Databricks workspace
314
+ client = get_deploy_client("databricks")
315
+
316
+ # Send a message to your agent
317
+ response = client.predict(
318
+ endpoint="my_first_agent",
319
+ inputs={
320
+ "messages": [{"role": "user", "content": "Hello! What can you help me with?"}],
321
+ "configurable": {
322
+ "thread_id": "1", # Conversation ID
323
+ "user_id": "demo_user" # User identifier
324
+ }
325
+ }
326
+ )
327
+
328
+ # Print the agent's response
329
+ print(response["message"]["content"])
330
+ ```
331
+
332
+ **🎉 Congratulations!** You've built and deployed your first AI agent with DAO.
333
+
334
+ **Next steps:**
335
+ - Explore the [`config/examples/`](config/examples/) folder for more advanced configurations
336
+ - Try the [DAO AI Builder](https://github.com/natefleming/dao-ai-builder) visual interface
337
+ - Learn about [Key Capabilities](docs/key-capabilities.md) to add advanced features
338
+ - Read the [Architecture](docs/architecture.md) documentation to understand how it works
339
+
340
+ ---
341
+
342
+ ## Key Features at a Glance
343
+
344
+ DAO provides powerful capabilities for building production-ready AI agents:
345
+
346
+ | Feature | Description |
347
+ |---------|-------------|
348
+ | **Multi-Tool Support** | Python functions, Unity Catalog, MCP, Agent Endpoints |
349
+ | **On-Behalf-Of User** | Per-user permissions and governance |
350
+ | **Advanced Caching** | Two-tier (LRU + Semantic) caching for cost optimization |
351
+ | **Vector Search Reranking** | Improve RAG quality with FlashRank |
352
+ | **Human-in-the-Loop** | Approval workflows for sensitive operations |
353
+ | **Memory & Persistence** | PostgreSQL, Lakebase, or in-memory state |
354
+ | **Prompt Registry** | Version and manage prompts in MLflow |
355
+ | **Prompt Optimization** | Automated tuning with GEPA (Generative Evolution of Prompts and Agents) |
356
+ | **Guardrails** | Content filters, safety checks, validation |
357
+ | **Middleware** | Input validation, logging, performance monitoring, audit trails |
358
+ | **Conversation Summarization** | Handle long conversations automatically |
359
+ | **Structured Output** | JSON schema for predictable responses |
360
+ | **Custom I/O** | Flexible input/output with runtime state |
361
+ | **Hook System** | Lifecycle hooks for initialization and cleanup |
362
+
363
+ 👉 **Learn more:** [Key Capabilities Documentation](docs/key-capabilities.md)
364
+
365
+ ---
366
+
367
+ ## Architecture Overview
368
+
369
+ ```mermaid
370
+ graph TB
371
+ subgraph yaml["YAML Configuration"]
372
+ direction LR
373
+ schemas[Schemas] ~~~ resources[Resources] ~~~ tools[Tools] ~~~ agents[Agents] ~~~ orchestration[Orchestration]
374
+ end
375
+
376
+ subgraph dao["DAO Framework (Python)"]
377
+ direction LR
378
+ config[Config<br/>Loader] ~~~ graph_builder[Graph<br/>Builder] ~~~ nodes[Nodes<br/>Factory] ~~~ tool_factory[Tool<br/>Factory]
379
+ end
380
+
381
+ subgraph langgraph["LangGraph Runtime"]
382
+ direction LR
383
+ msg_hook[Message<br/>Hook] --> supervisor[Supervisor/<br/>Swarm] --> specialized[Specialized<br/>Agents]
384
+ end
385
+
386
+ subgraph databricks["Databricks Platform"]
387
+ direction LR
388
+ model_serving[Model<br/>Serving] ~~~ unity_catalog[Unity<br/>Catalog] ~~~ vector_search[Vector<br/>Search] ~~~ genie_spaces[Genie<br/>Spaces] ~~~ mlflow[MLflow]
389
+ end
390
+
391
+ yaml ==> dao
392
+ dao ==> langgraph
393
+ langgraph ==> databricks
394
+
395
+ style yaml fill:#1B5162,stroke:#618794,stroke-width:3px,color:#fff
396
+ style dao fill:#FFAB00,stroke:#7D5319,stroke-width:3px,color:#1B3139
397
+ style langgraph fill:#618794,stroke:#143D4A,stroke-width:3px,color:#fff
398
+ style databricks fill:#00875C,stroke:#095A35,stroke-width:3px,color:#fff
399
+ ```
400
+
401
+ 👉 **Learn more:** [Architecture Documentation](docs/architecture.md)
402
+
403
+ ---
404
+
405
+ ## Example Configurations
406
+
407
+ The `config/examples/` directory contains ready-to-use configurations organized in a **progressive learning path**:
408
+
409
+ - `01_getting_started/minimal.yaml` - Simplest possible agent
410
+ - `02_tools/vector_search_with_reranking.yaml` - RAG with improved accuracy
411
+ - `04_genie/genie_semantic_cache.yaml` - NL-to-SQL with two-tier caching
412
+ - `05_memory/conversation_summarization.yaml` - Long conversation handling
413
+ - `06_on_behalf_of_user/obo_basic.yaml` - User-level access control
414
+ - `07_human_in_the_loop/human_in_the_loop.yaml` - Approval workflows
415
+
416
+ And many more! Follow the numbered path or jump to what you need. See the full guide in [Examples Documentation](docs/examples.md).
417
+
418
+ ---
419
+
420
+ ## CLI Quick Reference
421
+
422
+ ```bash
423
+ # Validate configuration
424
+ dao-ai validate -c config/my_config.yaml
425
+
426
+ # Generate JSON schema for IDE support
427
+ dao-ai schema > schemas/model_config_schema.json
428
+
429
+ # Visualize agent workflow
430
+ dao-ai graph -c config/my_config.yaml -o workflow.png
431
+
432
+ # Deploy with Databricks Asset Bundles
433
+ dao-ai bundle --deploy --run -c config/my_config.yaml
434
+
435
+ # Deploy to a specific workspace (multi-cloud support)
436
+ dao-ai bundle --deploy -c config/my_config.yaml --profile aws-field-eng
437
+ dao-ai bundle --deploy -c config/my_config.yaml --profile azure-retail
438
+
439
+ # Interactive chat with agent
440
+ dao-ai chat -c config/my_config.yaml
441
+ ```
442
+
443
+ ### Multi-Cloud Deployment
444
+
445
+ DAO AI supports deploying to Azure, AWS, and GCP workspaces with automatic cloud detection:
446
+
447
+ ```bash
448
+ # Deploy to AWS workspace
449
+ dao-ai bundle --deploy -c config/my_config.yaml --profile aws-prod
450
+
451
+ # Deploy to Azure workspace
452
+ dao-ai bundle --deploy -c config/my_config.yaml --profile azure-prod
453
+
454
+ # Deploy to GCP workspace
455
+ dao-ai bundle --deploy -c config/my_config.yaml --profile gcp-prod
456
+ ```
457
+
458
+ The CLI automatically:
459
+ - Detects the cloud provider from your profile's workspace URL
460
+ - Selects appropriate compute node types for each cloud
461
+ - Creates isolated deployment state per profile
462
+
463
+ 👉 **Learn more:** [CLI Reference Documentation](docs/cli-reference.md)
464
+
465
+ ---
466
+
467
+ ## Community & Support
468
+
469
+ - **Documentation**: [docs/](docs/)
470
+ - **Examples**: [config/examples/](config/examples/)
471
+ - **Issues**: [GitHub Issues](https://github.com/your-org/dao-ai/issues)
472
+ - **Discussions**: [GitHub Discussions](https://github.com/your-org/dao-ai/discussions)
473
+
474
+ ---
475
+
476
+ ## Contributing
477
+
478
+ We welcome contributions! See the [Contributing Guide](docs/contributing.md) for details on:
479
+
480
+ - Setting up your development environment
481
+ - Code style and testing guidelines
482
+ - How to submit pull requests
483
+ - Project structure overview
484
+
485
+ ---
486
+
487
+ ## License
488
+
489
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
@@ -0,0 +1,70 @@
1
+ dao_ai/__init__.py,sha256=18P98ExEgUaJ1Byw440Ct1ty59v6nxyWtc5S6Uq2m9Q,1062
2
+ dao_ai/agent_as_code.py,sha256=xIlLDpPVfmDVzLvbdY_V_CrC4Jvj2ItCWJ-NzdrszTo,538
3
+ dao_ai/catalog.py,sha256=sPZpHTD3lPx4EZUtIWeQV7VQM89WJ6YH__wluk1v2lE,4947
4
+ dao_ai/cli.py,sha256=FWzddUceOoER2EIMwBx_mIMhCWFFZHoAL3KHy7f0Euc,35377
5
+ dao_ai/config.py,sha256=GWBmrbiixMG0ZszLk_XTRKRIS0QqOk_TIQhauK--MIY,120863
6
+ dao_ai/graph.py,sha256=1-uQlo7iXZQTT3uU8aYu0N5rnhw5_g_2YLwVsAs6M-U,1119
7
+ dao_ai/logging.py,sha256=lYy4BmucCHvwW7aI3YQkQXKJtMvtTnPDu9Hnd7_O4oc,1556
8
+ dao_ai/messages.py,sha256=4ZBzO4iFdktGSLrmhHzFjzMIt2tpaL-aQLHOQJysGnY,6959
9
+ dao_ai/models.py,sha256=AwzwTRTNZF-UOh59HsuXEgFk_YH6q6M-mERNDe64Z8k,81783
10
+ dao_ai/nodes.py,sha256=7W6Ek6Uk9-pKa-H06nVCwuDllCrgX02IYy3rHtuL0aM,10777
11
+ dao_ai/optimization.py,sha256=phK6t4wYmWPObCjGUBHdZzsaFXGhQOjhAek2bAEfwXo,22971
12
+ dao_ai/prompts.py,sha256=G0ng5f2PkzfgdKrSl03Rnd6riZn5APedof0GAzsWQI8,4792
13
+ dao_ai/state.py,sha256=0wbbzfQmldkCu26gdTE5j0Rl-_pfilza-YIHPbSWlvI,6394
14
+ dao_ai/types.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ dao_ai/utils.py,sha256=_Urd7Nj2VzrgPKf3NS4E6vt0lWRhEUddBqWN9BksqeE,11543
16
+ dao_ai/vector_search.py,sha256=8d3xROg9zSIYNXjRRl6rSexsJTlufjRl5Fy1ZA8daKA,4019
17
+ dao_ai/genie/__init__.py,sha256=vdEyGhrt6L8GlK75SyYvTnl8QpHKDCJC5hJKLg4DesQ,1063
18
+ dao_ai/genie/core.py,sha256=HPKbocvhnnw_PkQwfoq5bpgQmL9lZyyS6_goTJL8yiY,1073
19
+ dao_ai/genie/cache/__init__.py,sha256=JfgCJl1NYQ1aZvZ4kly4T6uQK6ZCJ6PX_htuq7nJF50,1203
20
+ dao_ai/genie/cache/base.py,sha256=_MhHqYrHejVGrJjSLX26TdHwvQZb-HgiantRYSB8fJY,1961
21
+ dao_ai/genie/cache/core.py,sha256=1hvV72kMJ5md78Am4cdAi6wpTC6vV7mn6Srpb8Pti_M,2544
22
+ dao_ai/genie/cache/lru.py,sha256=E7zBqdLvuFj_hzZhjcoMyfacbtfTgkVRNuFqVYi2Ic4,11835
23
+ dao_ai/genie/cache/semantic.py,sha256=P1TrlFLMmSgLPFeZYbQTSbsjNpgXmovgqxBO92zINFM,38075
24
+ dao_ai/hooks/__init__.py,sha256=uA4DQdP9gDf4SyNjNx9mWPoI8UZOcTyFsCXV0NraFvQ,463
25
+ dao_ai/hooks/core.py,sha256=yZAfRfB0MyMo--uwGr4STtVxxen5s4ZUrNTnR3a3qkA,1721
26
+ dao_ai/memory/__init__.py,sha256=Us3wFehvug_h83m-UJ7OXdq2qZ0e9nHBQE7m5RwoAd8,559
27
+ dao_ai/memory/base.py,sha256=99nfr2UZJ4jmfTL_KrqUlRSCoRxzkZyWyx5WqeUoMdQ,338
28
+ dao_ai/memory/core.py,sha256=38H-JLIyUrRDIECLvpXK3iJlWG35X97E-DTo_4c3Jzc,6317
29
+ dao_ai/memory/databricks.py,sha256=SM6nwLjhSRJO4hLc3GUuht5YydYtTi3BAOae6jPwTm4,14377
30
+ dao_ai/memory/postgres.py,sha256=q9IIAGs0wuaV-3rUIn4dtzOxbkCCoB-yv1Rtod7ohjI,16467
31
+ dao_ai/middleware/__init__.py,sha256=scEk9Mt9POJe-j9e9t5sf3FNMNPBsu15_oxrlV9IkVE,4871
32
+ dao_ai/middleware/assertions.py,sha256=C1K-TnNZfBEwWouioHCt6c48i1ux9QKfQaX6AzghhgE,27408
33
+ dao_ai/middleware/base.py,sha256=uG2tpdnjL5xY5jCKvb_m3UTBtl4ZC6fJQUkDsQvV8S4,1279
34
+ dao_ai/middleware/context_editing.py,sha256=5rNKqH1phFFQTVW-4nzlVH5cbqomD-HFEIy2Z841D4I,7687
35
+ dao_ai/middleware/core.py,sha256=XFzL-A1_jS_pUCw7Q-z1WD0gutmpWZhfCMqHI6ifbhA,2096
36
+ dao_ai/middleware/guardrails.py,sha256=wjH4OwDRagkrKpcGNf7_bf3eJhtMpIWK_RIrrvMeqDs,14023
37
+ dao_ai/middleware/human_in_the_loop.py,sha256=YS11oQcRVzHVuZi309tuXfB4ItGuOz-PRT0fXwupdsY,7537
38
+ dao_ai/middleware/message_validation.py,sha256=SGvXow76BB1eW8zDSSuLJgRkIvLU-WOwA1Cd5_DatmQ,19818
39
+ dao_ai/middleware/model_call_limit.py,sha256=sxv15iNOUMjVLTEXwMBR5zAkxkWbnysbSIsBcuJbNUI,2216
40
+ dao_ai/middleware/model_retry.py,sha256=SlWjAcaEmvj6KBOkjUicChYjhlg7bAJM7-e6KLpHS9Q,3908
41
+ dao_ai/middleware/pii.py,sha256=zetfoz1WlJ-V0vjJp37v8NGimXB27EkZfetUHpGCXno,5137
42
+ dao_ai/middleware/summarization.py,sha256=gp2s9uc4DEJat-mWjWEzMaR-zAAeUOXYvu5EEYtqae4,7143
43
+ dao_ai/middleware/tool_call_limit.py,sha256=WQ3NmA3pLo-pNPBmwM7KwkYpT1segEnWqkhgW1xNkCE,6321
44
+ dao_ai/middleware/tool_retry.py,sha256=QfJ7yTHneME8VtnA88QcmnjXIegSFeJztyngy49wTgM,5568
45
+ dao_ai/orchestration/__init__.py,sha256=i85CLfRR335NcCFhaXABcMkn6WZfXnJ8cHH4YZsZN0s,1622
46
+ dao_ai/orchestration/core.py,sha256=qoU7uMXBJCth-sqfu0jRE1L0GOn5H4LoZdRUY1Ib3DI,9585
47
+ dao_ai/orchestration/supervisor.py,sha256=alKMEEo9G5LhdpMvTVdAMel234cZj5_MguWl4wFB7XQ,9873
48
+ dao_ai/orchestration/swarm.py,sha256=8tp1eGmsQqqWpaDcjPoJckddPWohZdmmN0RGRJ_xzOA,9198
49
+ dao_ai/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ dao_ai/providers/base.py,sha256=-fjKypCOk28h6vioPfMj9YZSw_3Kcbi2nMuAyY7vX9k,1383
51
+ dao_ai/providers/databricks.py,sha256=XxYkyoDYkwGV_Xg1IJBpGOl4d7U5HiFP4RtjjSLgenI,61437
52
+ dao_ai/tools/__init__.py,sha256=SRd7W2DOCXKbWWy8lclRtJiCskz7SDAm94qaFF47urQ,1664
53
+ dao_ai/tools/agent.py,sha256=plIWALywRjaDSnot13nYehBsrHRpBUpsVZakoGeajOE,1858
54
+ dao_ai/tools/core.py,sha256=bRIN3BZhRQX8-Kpu3HPomliodyskCqjxynQmYbk6Vjs,3783
55
+ dao_ai/tools/email.py,sha256=A3TsCoQgJR7UUWR0g45OPRGDpVoYwctFs1MOZMTt_d4,7389
56
+ dao_ai/tools/genie.py,sha256=4e_5MeAe7kDzHbYeXuNPFbY5z8ci3ouj8l5254CZ2lA,8874
57
+ dao_ai/tools/mcp.py,sha256=EFcKo_f-kPMnyR5w6oh0g4Hy4jyuVJEcUGzSiI9dXlg,8505
58
+ dao_ai/tools/memory.py,sha256=lwObKimAand22Nq3Y63tsv-AXQ5SXUigN9PqRjoWKes,1836
59
+ dao_ai/tools/python.py,sha256=jWFnZPni2sCdtd8D1CqXnZIPHnWkdK27bCJnBXpzhvo,1879
60
+ dao_ai/tools/search.py,sha256=cJ3D9FKr1GAR6xz55dLtRkjtQsI0WRueGt9TPDFpOxc,433
61
+ dao_ai/tools/slack.py,sha256=QpLMXDApjPKyRpEanLp0tOhCp9WXaEBa615p4t0pucs,5040
62
+ dao_ai/tools/sql.py,sha256=tKd1gjpLuKdQDyfmyYYtMiNRHDW6MGRbdEVaeqyB8Ok,7632
63
+ dao_ai/tools/time.py,sha256=tufJniwivq29y0LIffbgeBTIDE6VgrLpmVf8Qr90qjw,9224
64
+ dao_ai/tools/unity_catalog.py,sha256=AjQfW7bvV8NurqDLIyntYRv2eJuTwNdbvex1L5CRjOk,15534
65
+ dao_ai/tools/vector_search.py,sha256=oe2uBwl2TfeJIXPpwiS6Rmz7wcHczSxNyqS9P3hE6co,14542
66
+ dao_ai-0.1.5.dist-info/METADATA,sha256=Iz_x_25jQut9i8yghsPmQV08iyLBJdrXTAjFmYOjx1Q,16685
67
+ dao_ai-0.1.5.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
68
+ dao_ai-0.1.5.dist-info/entry_points.txt,sha256=Xa-UFyc6gWGwMqMJOt06ZOog2vAfygV_DSwg1AiP46g,43
69
+ dao_ai-0.1.5.dist-info/licenses/LICENSE,sha256=YZt3W32LtPYruuvHE9lGk2bw6ZPMMJD8yLrjgHybyz4,1069
70
+ dao_ai-0.1.5.dist-info/RECORD,,