webagents 0.1.13__py3-none-any.whl → 0.2.2__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 (77) hide show
  1. webagents/__init__.py +1 -1
  2. webagents/__main__.py +55 -0
  3. webagents/agents/__init__.py +1 -1
  4. webagents/agents/core/__init__.py +1 -1
  5. webagents/agents/core/base_agent.py +15 -15
  6. webagents/agents/core/handoffs.py +1 -1
  7. webagents/agents/skills/__init__.py +11 -11
  8. webagents/agents/skills/base.py +1 -1
  9. webagents/agents/skills/core/llm/litellm/__init__.py +1 -1
  10. webagents/agents/skills/core/llm/litellm/skill.py +1 -1
  11. webagents/agents/skills/core/mcp/README.md +2 -2
  12. webagents/agents/skills/core/mcp/skill.py +2 -2
  13. webagents/agents/skills/core/memory/long_term_memory/memory_skill.py +14 -14
  14. webagents/agents/skills/core/memory/short_term_memory/__init__.py +1 -1
  15. webagents/agents/skills/core/memory/short_term_memory/skill.py +1 -1
  16. webagents/agents/skills/core/memory/vector_memory/skill.py +6 -6
  17. webagents/agents/skills/core/planning/__init__.py +1 -1
  18. webagents/agents/skills/ecosystem/crewai/__init__.py +3 -1
  19. webagents/agents/skills/ecosystem/crewai/skill.py +158 -0
  20. webagents/agents/skills/ecosystem/database/__init__.py +3 -1
  21. webagents/agents/skills/ecosystem/database/skill.py +522 -0
  22. webagents/agents/skills/ecosystem/google/calendar/skill.py +1 -1
  23. webagents/agents/skills/ecosystem/mongodb/__init__.py +3 -0
  24. webagents/agents/skills/ecosystem/mongodb/skill.py +428 -0
  25. webagents/agents/skills/ecosystem/n8n/README.md +287 -0
  26. webagents/agents/skills/ecosystem/n8n/__init__.py +3 -0
  27. webagents/agents/skills/ecosystem/n8n/skill.py +341 -0
  28. webagents/agents/skills/ecosystem/x_com/README.md +401 -0
  29. webagents/agents/skills/ecosystem/x_com/__init__.py +3 -0
  30. webagents/agents/skills/ecosystem/x_com/skill.py +1048 -0
  31. webagents/agents/skills/ecosystem/zapier/README.md +363 -0
  32. webagents/agents/skills/ecosystem/zapier/__init__.py +3 -0
  33. webagents/agents/skills/ecosystem/zapier/skill.py +337 -0
  34. webagents/agents/skills/robutler/__init__.py +2 -2
  35. webagents/agents/skills/robutler/auth/__init__.py +3 -3
  36. webagents/agents/skills/robutler/auth/skill.py +16 -16
  37. webagents/agents/skills/robutler/crm/__init__.py +2 -2
  38. webagents/agents/skills/robutler/crm/skill.py +5 -5
  39. webagents/agents/skills/robutler/discovery/README.md +5 -5
  40. webagents/agents/skills/robutler/discovery/__init__.py +2 -2
  41. webagents/agents/skills/robutler/discovery/skill.py +21 -21
  42. webagents/agents/skills/robutler/message_history/__init__.py +2 -2
  43. webagents/agents/skills/robutler/message_history/skill.py +5 -5
  44. webagents/agents/skills/robutler/nli/__init__.py +1 -1
  45. webagents/agents/skills/robutler/nli/skill.py +9 -9
  46. webagents/agents/skills/robutler/payments/__init__.py +3 -3
  47. webagents/agents/skills/robutler/payments/exceptions.py +1 -1
  48. webagents/agents/skills/robutler/payments/skill.py +23 -23
  49. webagents/agents/skills/robutler/storage/__init__.py +2 -2
  50. webagents/agents/skills/robutler/storage/files/__init__.py +2 -2
  51. webagents/agents/skills/robutler/storage/files/skill.py +4 -4
  52. webagents/agents/skills/robutler/storage/json/__init__.py +1 -1
  53. webagents/agents/skills/robutler/storage/json/skill.py +3 -3
  54. webagents/agents/skills/robutler/storage/kv/skill.py +3 -3
  55. webagents/agents/skills/robutler/storage.py +6 -6
  56. webagents/agents/tools/decorators.py +12 -12
  57. webagents/server/__init__.py +3 -3
  58. webagents/server/context/context_vars.py +2 -2
  59. webagents/server/core/app.py +13 -13
  60. webagents/server/core/middleware.py +3 -3
  61. webagents/server/core/models.py +1 -1
  62. webagents/server/core/monitoring.py +2 -2
  63. webagents/server/middleware.py +1 -1
  64. webagents/server/models.py +2 -2
  65. webagents/server/monitoring.py +15 -15
  66. webagents/utils/logging.py +20 -20
  67. webagents-0.2.2.dist-info/METADATA +266 -0
  68. webagents-0.2.2.dist-info/RECORD +105 -0
  69. webagents-0.2.2.dist-info/licenses/LICENSE +20 -0
  70. webagents/api/__init__.py +0 -17
  71. webagents/api/client.py +0 -1207
  72. webagents/api/types.py +0 -253
  73. webagents-0.1.13.dist-info/METADATA +0 -32
  74. webagents-0.1.13.dist-info/RECORD +0 -96
  75. webagents-0.1.13.dist-info/licenses/LICENSE +0 -1
  76. {webagents-0.1.13.dist-info → webagents-0.2.2.dist-info}/WHEEL +0 -0
  77. {webagents-0.1.13.dist-info → webagents-0.2.2.dist-info}/entry_points.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  """
2
- Robutler V2.0 Logging System
2
+ WebAgents V2.0 Logging System
3
3
 
4
4
  Comprehensive logging with color-coded agent names, structured output,
5
5
  and context-aware logging for agents, skills, and server components.
@@ -42,7 +42,7 @@ def get_agent_color(agent_name: str) -> str:
42
42
  color_index = hash(agent_name) % len(colors)
43
43
  return colors[color_index]
44
44
 
45
- class RobutlerFormatter(logging.Formatter):
45
+ class WebAgentsFormatter(logging.Formatter):
46
46
  """Custom formatter with color-coded agent names and structured output"""
47
47
 
48
48
  def format(self, record):
@@ -131,13 +131,13 @@ class AgentContextAdapter(logging.LoggerAdapter):
131
131
  return msg, kwargs
132
132
 
133
133
  def setup_logging(level: str = "INFO", log_file: Optional[str] = None) -> None:
134
- """Setup the Robutler logging system"""
134
+ """Setup the WebAgents logging system"""
135
135
 
136
136
  # Convert string level to logging constant
137
137
  numeric_level = getattr(logging, level.upper(), logging.INFO)
138
138
 
139
139
  # Create root logger
140
- root_logger = logging.getLogger('robutler')
140
+ root_logger = logging.getLogger('webagents')
141
141
  root_logger.setLevel(numeric_level)
142
142
 
143
143
  # Clear any existing handlers
@@ -146,7 +146,7 @@ def setup_logging(level: str = "INFO", log_file: Optional[str] = None) -> None:
146
146
  # Console handler with color formatter
147
147
  console_handler = logging.StreamHandler(sys.stdout)
148
148
  console_handler.setLevel(numeric_level)
149
- console_handler.setFormatter(RobutlerFormatter())
149
+ console_handler.setFormatter(WebAgentsFormatter())
150
150
  root_logger.addHandler(console_handler)
151
151
 
152
152
  # File handler if specified (without colors)
@@ -175,7 +175,7 @@ def setup_logging(level: str = "INFO", log_file: Optional[str] = None) -> None:
175
175
  litellm_logger.handlers.clear()
176
176
  # Add our console handler with formatter
177
177
  litellm_handler = logging.StreamHandler(sys.stdout)
178
- litellm_handler.setFormatter(RobutlerFormatter())
178
+ litellm_handler.setFormatter(WebAgentsFormatter())
179
179
  litellm_logger.addHandler(litellm_handler)
180
180
  litellm_logger.propagate = False
181
181
 
@@ -185,20 +185,20 @@ def setup_logging(level: str = "INFO", log_file: Optional[str] = None) -> None:
185
185
  if not root.handlers:
186
186
  # Only add handler if root doesn't have one already
187
187
  root_handler = logging.StreamHandler(sys.stdout)
188
- root_handler.setFormatter(RobutlerFormatter())
188
+ root_handler.setFormatter(WebAgentsFormatter())
189
189
  root_handler.setLevel(numeric_level)
190
190
  root.addHandler(root_handler)
191
191
  else:
192
192
  # Update existing root handlers to use our formatter
193
193
  for handler in root.handlers:
194
194
  if isinstance(handler, logging.StreamHandler):
195
- handler.setFormatter(RobutlerFormatter())
195
+ handler.setFormatter(WebAgentsFormatter())
196
196
  handler.setLevel(numeric_level)
197
197
 
198
198
  def get_logger(name: str, agent_name: Optional[str] = None) -> logging.Logger:
199
199
  """Get a logger for a specific component, optionally with agent context"""
200
200
 
201
- logger_name = f"robutler.{name}" if not name.startswith('robutler') else name
201
+ logger_name = f"webagents.{name}" if not name.startswith('webagents') else name
202
202
  logger = logging.getLogger(logger_name)
203
203
 
204
204
  if agent_name:
@@ -291,14 +291,14 @@ def configure_external_logger(logger_name: str, level: Optional[str] = None) ->
291
291
 
292
292
  # Get the current root level if not specified
293
293
  if level is None:
294
- root_logger = logging.getLogger('robutler')
294
+ root_logger = logging.getLogger('webagents')
295
295
  numeric_level = root_logger.level
296
296
  else:
297
297
  numeric_level = getattr(logging, level.upper(), logging.INFO)
298
298
 
299
299
  # Add our formatted handler
300
300
  handler = logging.StreamHandler(sys.stdout)
301
- handler.setFormatter(RobutlerFormatter())
301
+ handler.setFormatter(WebAgentsFormatter())
302
302
  handler.setLevel(numeric_level)
303
303
  logger.addHandler(handler)
304
304
  logger.setLevel(numeric_level)
@@ -310,15 +310,15 @@ def capture_all_loggers() -> None:
310
310
  This function should be called after all modules are imported
311
311
  to ensure any dynamically created loggers are properly configured.
312
312
  """
313
- root_formatter = RobutlerFormatter()
314
- root_level = logging.getLogger('robutler').level
313
+ root_formatter = WebAgentsFormatter()
314
+ root_level = logging.getLogger('webagents').level
315
315
 
316
316
  # Get all existing loggers
317
317
  for name in logging.Logger.manager.loggerDict:
318
318
  logger = logging.getLogger(name)
319
319
 
320
- # Skip if it's already a robutler logger
321
- if name.startswith('robutler'):
320
+ # Skip if it's already a webagents logger
321
+ if name.startswith('webagents'):
322
322
  continue
323
323
 
324
324
  # Skip if it has handlers (already configured)
@@ -336,24 +336,24 @@ def capture_all_loggers() -> None:
336
336
  logger.propagate = False
337
337
 
338
338
  # Custom logger class that automatically uses our formatter
339
- class RobutlerLogger(logging.Logger):
339
+ class WebAgentsLogger(logging.Logger):
340
340
  """Custom logger that automatically gets our formatter"""
341
341
 
342
342
  def __init__(self, name):
343
343
  super().__init__(name)
344
344
  # Automatically add our handler if this is a new logger
345
- if not self.handlers and not name.startswith('robutler'):
345
+ if not self.handlers and not name.startswith('webagents'):
346
346
  handler = logging.StreamHandler(sys.stdout)
347
- handler.setFormatter(RobutlerFormatter())
347
+ handler.setFormatter(WebAgentsFormatter())
348
348
  # Get the root level
349
- root_level = logging.getLogger('robutler').level if logging.getLogger('robutler').level else logging.INFO
349
+ root_level = logging.getLogger('webagents').level if logging.getLogger('webagents').level else logging.INFO
350
350
  handler.setLevel(root_level)
351
351
  self.addHandler(handler)
352
352
  self.setLevel(root_level)
353
353
  self.propagate = False
354
354
 
355
355
  # Set our custom logger class as the default
356
- logging.setLoggerClass(RobutlerLogger)
356
+ logging.setLoggerClass(WebAgentsLogger)
357
357
 
358
358
  # Initialize logging on import (can be reconfigured later)
359
359
  setup_logging()
@@ -0,0 +1,266 @@
1
+ Metadata-Version: 2.4
2
+ Name: webagents
3
+ Version: 0.2.2
4
+ Summary: Foundation framework for the Web of Agents - build, serve and monetize AI agents
5
+ Author: Awesome Opensource Contributors and Robutler Team
6
+ License: MIT License
7
+
8
+ Copyright (c) 2025 Robutler
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
+ SOFTWARE.
26
+ License-File: LICENSE
27
+ Requires-Python: >=3.10
28
+ Requires-Dist: colorama>=0.4.6
29
+ Requires-Dist: fastapi>=0.100.0
30
+ Requires-Dist: fastmcp>=2.3.0
31
+ Requires-Dist: httpx>=0.24.0
32
+ Requires-Dist: litellm>=1.0.0
33
+ Requires-Dist: pillow>=10.0.0
34
+ Requires-Dist: pydantic-settings>=2.0.0
35
+ Requires-Dist: pydantic>=2.7.0
36
+ Requires-Dist: python-dotenv>=1.0.0
37
+ Requires-Dist: tiktoken>=0.5.0
38
+ Requires-Dist: uvicorn>=0.23.0
39
+ Provides-Extra: crewai
40
+ Requires-Dist: crewai>=0.1.0; extra == 'crewai'
41
+ Provides-Extra: dev
42
+ Requires-Dist: black>=23.0.0; extra == 'dev'
43
+ Requires-Dist: mypy>=1.0.0; extra == 'dev'
44
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
45
+ Requires-Dist: pytest>=7.0.0; extra == 'dev'
46
+ Requires-Dist: ruff>=0.0.270; extra == 'dev'
47
+ Provides-Extra: ecosystem
48
+ Requires-Dist: crewai>=0.1.0; extra == 'ecosystem'
49
+ Requires-Dist: httpx>=0.24.0; extra == 'ecosystem'
50
+ Requires-Dist: psycopg2-binary>=2.9.0; extra == 'ecosystem'
51
+ Requires-Dist: pymongo>=4.0.0; extra == 'ecosystem'
52
+ Requires-Dist: supabase>=2.0.0; extra == 'ecosystem'
53
+ Requires-Dist: tweepy>=4.14.0; extra == 'ecosystem'
54
+ Provides-Extra: examples
55
+ Requires-Dist: openai-agents>=0.0.16; extra == 'examples'
56
+ Provides-Extra: mongodb
57
+ Requires-Dist: pymongo>=4.0.0; extra == 'mongodb'
58
+ Provides-Extra: postgresql
59
+ Requires-Dist: psycopg2-binary>=2.9.0; extra == 'postgresql'
60
+ Provides-Extra: supabase
61
+ Requires-Dist: supabase>=2.0.0; extra == 'supabase'
62
+ Provides-Extra: twitter
63
+ Requires-Dist: tweepy>=4.14.0; extra == 'twitter'
64
+ Description-Content-Type: text/markdown
65
+
66
+ # WebAgents - core framework for the Web of Agents
67
+
68
+ **Build, Serve and Monetize AI Agents**
69
+
70
+ WebAgents is a powerful opensource framework for building connected AI agents with a simple yet comprehensive API. Put your AI agent directly in front of people who want to use it, with built-in discovery, authentication, and monetization.
71
+
72
+ [![PyPI version](https://badge.fury.io/py/webagents.svg)](https://badge.fury.io/py/webagents)
73
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
74
+ [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
75
+
76
+ ## 🚀 Key Features
77
+
78
+ - **🧩 Modular Skills System** - Combine tools, prompts, hooks, and HTTP endpoints into reusable packages
79
+ - **🤝 Agent-to-Agent Delegation** - Delegate tasks to other agents via natural language. Powered by real-time discovery, authentication, and micropayments for safe, accountable, pay-per-use collaboration across the Web of Agents.
80
+ - **🔍 Real-Time Discovery** - Agents discover each other through intent matching - no manual integration
81
+ - **💰 Built-in Monetization** - Earn credits from priced tools with automatic billing
82
+ - **🔐 Trust & Security** - Secure authentication and scope-based access control
83
+ - **🌐 Protocol agnostic connectivity** - Deploy agents as standard chat completion endpoints with coming support for OpenAI Responses/Realtime, ACP, A2A and other common AI communication protocols and frameworks.
84
+ - **🔌 Build or Integrate** - Build from scratch with WebAgents, or integrate existing agents from popular SDKs and platforms into the Web of Agents (e.g., Azure AI Foundry, Google Vertex AI, CrewAI, n8n, Zapier).
85
+
86
+ With WebAgents delegation, your agent is as powerful as the whole ecosystem, and capabilities of your agent grow together with the whole ecosystem.
87
+
88
+ ## 📦 Installation
89
+
90
+ ```bash
91
+ # Core framework
92
+ pip install webagents
93
+
94
+ # With ecosystem skills (MongoDB, Supabase, CrewAI, X.com, etc.)
95
+ pip install webagents[ecosystem]
96
+
97
+ # Individual skills
98
+ pip install webagents[mongodb,crewai,twitter]
99
+ ```
100
+
101
+ ## 🏃‍♂️ Quick Start
102
+
103
+ ### Create Your First Agent
104
+
105
+ ```python
106
+ from webagents.agents.core.base_agent import BaseAgent
107
+
108
+ # Create a basic agent
109
+ agent = BaseAgent(
110
+ name="assistant",
111
+ instructions="You are a helpful AI assistant.",
112
+ model="openai/gpt-4o-mini" # Automatically creates LLM skill
113
+ )
114
+
115
+ # Run chat completion
116
+ messages = [{"role": "user", "content": "Hello! What can you help me with?"}]
117
+ response = await agent.run(messages=messages)
118
+ print(response.content)
119
+ ```
120
+
121
+ ### Serve Your Agent
122
+
123
+ Deploy your agent as an OpenAI-compatible API server:
124
+
125
+ ```python
126
+ from webagents.server.core.app import create_server
127
+ import uvicorn
128
+
129
+ # Create server with your agent
130
+ server = create_server(agents=[agent])
131
+
132
+ # Run the server
133
+ uvicorn.run(server.app, host="0.0.0.0", port=8000)
134
+ ```
135
+
136
+ Test your agent API:
137
+ ```bash
138
+ curl -X POST http://localhost:8000/assistant/chat/completions \
139
+ -H "Content-Type: application/json" \
140
+ -d '{"messages": [{"role": "user", "content": "Hello!"}]}'
141
+ ```
142
+
143
+ ## 🧩 Skills Framework
144
+
145
+ Skills combine tools, prompts, hooks, and HTTP endpoints into easy-to-integrate packages:
146
+
147
+ ```python
148
+ from webagents.agents.skills.base import Skill
149
+ from webagents.agents.tools.decorators import tool, prompt, hook, http
150
+ from webagents.agents.skills.robutler.payments.skill import pricing
151
+
152
+ class NotificationsSkill(Skill):
153
+ @prompt(scope=["owner"])
154
+ def get_prompt(self) -> str:
155
+ return "You can send notifications using send_notification()."
156
+
157
+ @tool(scope="owner")
158
+ @pricing(credits_per_call=0.01)
159
+ async def send_notification(self, title: str, body: str) -> str:
160
+ # Your API integration
161
+ return f"✅ Notification sent: {title}"
162
+
163
+ @hook("on_message")
164
+ async def log_messages(self, context):
165
+ # React to incoming messages
166
+ return context
167
+
168
+ @http("POST", "/webhook")
169
+ async def handle_webhook(self, request):
170
+ # Custom HTTP endpoint
171
+ return {"status": "received"}
172
+ ```
173
+
174
+ **Core Skills** - Essential functionality:
175
+ - **LLM Skills**: OpenAI, Anthropic, LiteLLM integration
176
+ - **Memory Skills**: Short-term, long-term, and vector memory
177
+ - **MCP Skill**: Model Context Protocol integration
178
+
179
+ **Platform Skills** - WebAgents ecosystem:
180
+ - **Discovery**: Real-time agent discovery and routing
181
+ - **Authentication**: Secure agent-to-agent communication
182
+ - **Payments**: Monetization and automatic billing
183
+ - **Storage**: Persistent data and messaging
184
+
185
+ **Ecosystem Skills** - External integrations:
186
+ - **Google**: Calendar, Drive, Gmail integration
187
+ - **Database**: SQL and NoSQL database access
188
+ - **Workflow**: CrewAI, N8N, Zapier automation
189
+
190
+ ## 💰 Monetization
191
+
192
+ Add payments to earn credits from your agent:
193
+
194
+ ```python
195
+ from webagents.agents.core.base_agent import BaseAgent
196
+ from webagents.agents.skills.robutler.payments.skill import PaymentSkill, pricing
197
+ from webagents.agents.tools.decorators import tool
198
+
199
+ # Define a priced tool (fixed pricing)
200
+ @tool
201
+ @pricing(credits_per_call=0.01, reason="Image generation")
202
+ def generate_thumbnail(url: str, size: int = 256) -> dict:
203
+ """Create a thumbnail for a public image URL."""
204
+ # ... your processing logic here ...
205
+ return {"url": url, "thumbnail_size": size, "status": "created"}
206
+
207
+
208
+ agent = BaseAgent(
209
+ name="thumbnail-generator",
210
+ model="openai/gpt-4o-mini",
211
+ skills={
212
+ "payments": PaymentSkill(),
213
+ },
214
+ # Auto-register priced tool as capability
215
+ capabilities=[generate_thumbnail],
216
+ )
217
+ ```
218
+
219
+ ## 🔧 Environment Setup
220
+
221
+ Set up your API keys for LLM providers:
222
+
223
+ ```bash
224
+ export OPENAI_API_KEY="your-openai-key"
225
+
226
+ # Robutler API key for payments
227
+ export WEBAGENTS_API_KEY="your-webagents-key"
228
+ ```
229
+
230
+ Get your WEBAGENTS_API_KEY at https://robutler.ai/developer
231
+
232
+
233
+ ## 🌐 Web of Agents
234
+
235
+ WebAgents enables dynamic real-time orchestration where each AI agent acts as a building block for other agents:
236
+
237
+ - **🚀 Real-Time Discovery**: Think DNS for agent intents - agents find each other through natural language
238
+ - **🔐 Trust & Security**: Secure authentication with audit trails for all transactions
239
+ - **💡 Delegation by Design**: Seamless delegation across agents, enabled by real-time discovery, scoped authentication, and micropayments. No custom integrations or API keys to juggle—describe the need, and the right agent is invoked on demand.
240
+
241
+ ## 📚 Documentation
242
+
243
+ - **[Full Documentation](https://robutler.ai/webagents)** - Complete guides and API reference
244
+ - **[Skills Framework](https://robutler.ai/webagents/skills/overview/)** - Deep dive into modular capabilities
245
+ - **[Agent Architecture](https://robutler.ai/webagents/agent/overview/)** - Understand agent communication
246
+ - **[Custom Skills](https://robutler.ai/webagents/skills/custom/)** - Build your own capabilities
247
+
248
+ ## 🤝 Contributing
249
+
250
+ We welcome contributions! Please see our [Contributing Guide](https://robutler.ai/webagents/developers/contributing/) for details.
251
+
252
+ ## 📄 License
253
+
254
+ This project is licensed under the MIT License - see the [LICENSE](https://robutler.ai/webagents/license/) file for details.
255
+
256
+ ## 🆘 Support
257
+
258
+ - **GitHub Issues**: [Report bugs and request features](https://github.com/robutlerai/webagents/issues)
259
+ - **Documentation**: [robutler.ai/webagents](https://robutler.ai/webagents)
260
+ - **Community**: Join our Discord server for discussions and support
261
+
262
+ ---
263
+
264
+ **Focus on what makes your agent unique instead of spending time on plumbing.**
265
+
266
+ Built with ❤️ by the [WebAgents team](https://robutler.ai) and community contributors.
@@ -0,0 +1,105 @@
1
+ webagents/__init__.py,sha256=N4dAwBpmq88YlPYFlBM2yQ0V_B7_uLxzhLzwGDb6Dew,374
2
+ webagents/__main__.py,sha256=5e1gYVYHzbADPIMYsoZRyBg-gRtdvFi8ykBsZYXFrqU,1346
3
+ webagents/agents/__init__.py,sha256=xh0Q3JyTN71ByorxVz_o_4lSrmVicA6LxNsuA7aF7W8,245
4
+ webagents/agents/core/__init__.py,sha256=WL5kMK1NuAWfKLTJQ0le68k4tRTOrOcf485bKRHBPiw,542
5
+ webagents/agents/core/base_agent.py,sha256=0DgHqdey-tqmv0JTHMzICBdzVuensUQkMSL23sx0Gog,93823
6
+ webagents/agents/core/handoffs.py,sha256=vfojIHoy_IKHU5sxs2PY8hZFyBLlYdlujQFXnqzvK9c,11076
7
+ webagents/agents/handoffs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ webagents/agents/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ webagents/agents/lifecycle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ webagents/agents/skills/__init__.py,sha256=qGawdVNp1AtF09-vAVR2s77SwQCTnZIaIGskDv5e81g,3211
11
+ webagents/agents/skills/base.py,sha256=s_wdhmqDGVCSXJiahwuUdKWeXIpdPfe_e8NL67oKbsc,5099
12
+ webagents/agents/skills/core/__init__.py,sha256=xT_-sPnLbxTUqjvg0toVCqQyB6OP-An_vBprdv_t0xA,258
13
+ webagents/agents/skills/core/guardrails/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ webagents/agents/skills/core/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ webagents/agents/skills/core/llm/anthropic/__init__.py,sha256=NkitGyW7aAdDPKsIeZaU979us3yg84Hej1L_Ogtw-f8,68
16
+ webagents/agents/skills/core/llm/litellm/__init__.py,sha256=DaUZozXF_x7LWfH_Blrn7rpF7Y7k91VRnRKoh_2JbqI,272
17
+ webagents/agents/skills/core/llm/litellm/skill.py,sha256=tNQ61DmvpmfwB6fU0cJlzb0OicV6jB1wPJHUdiU80zc,22267
18
+ webagents/agents/skills/core/llm/openai/__init__.py,sha256=eHvy20Z-geoVAZu8MstRiPXsEXZLJcBq3GtSZSLeOXo,65
19
+ webagents/agents/skills/core/llm/xai/__init__.py,sha256=HPcn0Ki-Di0kIzV5bvb-Vt-8vGW-ufBmHI9ZBeIdlA8,62
20
+ webagents/agents/skills/core/mcp/README.md,sha256=niQJlntyF6WbaxsUuJVYHFYJ93nV6u4F_QQ_TJZIAP8,14950
21
+ webagents/agents/skills/core/mcp/__init__.py,sha256=0dBqPqObN8kREXP28fX-ANxxyf6NFol_n95TgxTYkjU,366
22
+ webagents/agents/skills/core/mcp/skill.py,sha256=CrsamhExnEwDJRlHT57PItTWSajWqM-uGLhJxoE_zqU,30254
23
+ webagents/agents/skills/core/memory/__init__.py,sha256=EH3YM_WQ9GZcgJnbxfB5UaKZj6VU3a9k8pD-GcLnExI,328
24
+ webagents/agents/skills/core/memory/long_term_memory/__init__.py,sha256=Bk4DChm7NDLizK0yS-NBWTA7FWSc_SSVYI80F_BJ6MU,258
25
+ webagents/agents/skills/core/memory/long_term_memory/memory_skill.py,sha256=Swc2eQUKRheH88J-AVoP7zj8pqMxYrXtSsAbILBHVdM,24069
26
+ webagents/agents/skills/core/memory/short_term_memory/__init__.py,sha256=TH5ijPbZau6oUTjgj5R1YqSw5x_kqWJhzJlaoGVeymc,217
27
+ webagents/agents/skills/core/memory/short_term_memory/skill.py,sha256=rif35KGClq6tC_Tf5Y0GDND_jEyGZc9GVtm8Mhugyog,12791
28
+ webagents/agents/skills/core/memory/vector_memory/skill.py,sha256=69dHAzIUgDL87PXgsvmmF8Ijv_O5i_PzBwbLBzCoJNQ,20003
29
+ webagents/agents/skills/core/planning/__init__.py,sha256=VjFRykXTRe9F0oHukmCFcbDuXg_bQU8XIcI8VEA69Y4,223
30
+ webagents/agents/skills/core/planning/planner.py,sha256=EFBH9vrYcYaWgXSlC0c8nUP9eGj6b_RyZ4dHbNjFVXU,13900
31
+ webagents/agents/skills/ecosystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
+ webagents/agents/skills/ecosystem/crewai/__init__.py,sha256=VJlcA5YqWtNgoPxQ_sq1V3ihrhMm4zA98RztxJX6BQY,57
33
+ webagents/agents/skills/ecosystem/crewai/skill.py,sha256=_aHrONwvfQnr84CTSWP1LT-Q-k5PleJUPJuuMlJgwKI,5877
34
+ webagents/agents/skills/ecosystem/database/__init__.py,sha256=MR8AXRwW_aTbbCl6g9auy7BC-X7u2En8JTpxf2WIpcA,61
35
+ webagents/agents/skills/ecosystem/database/skill.py,sha256=I3r7qvlbTO5YMMR-i-bHN3UblRlIguPuULFMEdhAiLw,23050
36
+ webagents/agents/skills/ecosystem/filesystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ webagents/agents/skills/ecosystem/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
+ webagents/agents/skills/ecosystem/google/calendar/__init__.py,sha256=s_e6EPc07c-iO06BUYaVyat1arGkNBLt29BKHubL6-0,77
39
+ webagents/agents/skills/ecosystem/google/calendar/skill.py,sha256=hWFICppmWbHvecRLNz8NJJyT1GiQj_oR-ioxDDzQ_ig,15623
40
+ webagents/agents/skills/ecosystem/mongodb/__init__.py,sha256=96R9LPw6CWC9gwUXMeAK64wvZN1F4ws7VTX3VJ12rBw,60
41
+ webagents/agents/skills/ecosystem/mongodb/skill.py,sha256=WNTP2vKjIxOdUIbuXd_5NKseBM1iCTLS_6t6t6hV40s,18603
42
+ webagents/agents/skills/ecosystem/n8n/README.md,sha256=huUSJsBCuMdljqKkie7l_skO-xeoFdAisP9jEZqn8eM,7402
43
+ webagents/agents/skills/ecosystem/n8n/__init__.py,sha256=IZaYCxmJ3oS8yhOlv7kADHzfo26EEO6BjMLFEkw09Yo,52
44
+ webagents/agents/skills/ecosystem/n8n/skill.py,sha256=p-D0DN2fYy76YGA7TzzUarAnf3Tzhv5W887aHU5h2j0,13759
45
+ webagents/agents/skills/ecosystem/openai_agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
+ webagents/agents/skills/ecosystem/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ webagents/agents/skills/ecosystem/x_com/README.md,sha256=XmM_c5A_L6Qj32DnQiKSYAy1QXXBjaSNmfkoyZ31mck,12601
48
+ webagents/agents/skills/ecosystem/x_com/__init__.py,sha256=dlSgfpSKryGldqcMg0H_RvsNnPCrBTVexIZtOPUiIw4,54
49
+ webagents/agents/skills/ecosystem/x_com/skill.py,sha256=ZxPfMP4CaCBql5B5W27qyTDSeB3dITvQ1aGgwQ3Libg,45427
50
+ webagents/agents/skills/ecosystem/zapier/README.md,sha256=9DDA79BIHm0qq2V3H1JbHmS_tZT6nLkuLY7Ta3FhMr0,8985
51
+ webagents/agents/skills/ecosystem/zapier/__init__.py,sha256=MSDixYLlCB8pNCCi56lw0SKz0M6H0k9kgscM8luo7nk,58
52
+ webagents/agents/skills/ecosystem/zapier/skill.py,sha256=Sh1L5rnFO3XZrISEj5-k-YDpCjo_Rvi2LozrqZLpPYc,13544
53
+ webagents/agents/skills/robutler/__init__.py,sha256=r3pYQje2t1T6ooLa45JXPgVOnTJPDvtrFV3i1i-fDTA,166
54
+ webagents/agents/skills/robutler/storage.py,sha256=qUTeGUYoW46TshYlLKTORoUIRT3fmzoatNE4gCGB6hU,14690
55
+ webagents/agents/skills/robutler/auth/README.md,sha256=mRcuGF3ty3WyoMCwR0pxYnOWNOKyM7h5MW67-9Y3V4M,2556
56
+ webagents/agents/skills/robutler/auth/__init__.py,sha256=OFcHOoGHoPrfRw4xJfbBPIooZ9GAwTbdHFXzhMH8ams,452
57
+ webagents/agents/skills/robutler/auth/skill.py,sha256=_LsWWmpiqZKWQ3G_KORAl-kjsw4GR4oYvhQ-TBWccWQ,14831
58
+ webagents/agents/skills/robutler/crm/__init__.py,sha256=rd43zSRWB14p-oj-Apj83PiwhIwXip1jWTikFdhcf-Y,337
59
+ webagents/agents/skills/robutler/crm/skill.py,sha256=bT1WjpY-vj1KO0zVhi7QbHMfhnhToqp2nClexUZpsdY,12954
60
+ webagents/agents/skills/robutler/discovery/README.md,sha256=3pvo2sJY-Rm29SWuIsHSpDwptaPPDXqjcb6HDGjxaSM,9193
61
+ webagents/agents/skills/robutler/discovery/__init__.py,sha256=VJYay8yjA1d42HVJDD1GjoZBZD5bEkQovy0jz3GZHbM,319
62
+ webagents/agents/skills/robutler/discovery/skill.py,sha256=g0tvFiVOSjJtZnPcZZHoWXdTxEESkx0EnSlq6eZbmJ4,9325
63
+ webagents/agents/skills/robutler/kv/__init__.py,sha256=sbaE6gr_OksCWIhJE0kFMpFErAHUnW_7coW8HiKePM8,53
64
+ webagents/agents/skills/robutler/kv/skill.py,sha256=ftZulx4gQD9lQVstCTj7ZjsWML2XcZ6PU-2lSGpePHU,3364
65
+ webagents/agents/skills/robutler/message_history/__init__.py,sha256=15EdlGC6jbcj5ba_kr9U93B1x4U_wG4VeWkY5WW36ZI,215
66
+ webagents/agents/skills/robutler/message_history/skill.py,sha256=Zq7xATjU-Rx2WbDg812d2S0xPLYlMeM_E9dwn7_NuJU,11179
67
+ webagents/agents/skills/robutler/messages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
+ webagents/agents/skills/robutler/nli/__init__.py,sha256=MrwX21Q5sRlaShckZ56Xt4Xi655wPOdBnJEPZ9ZLm3Q,310
69
+ webagents/agents/skills/robutler/nli/skill.py,sha256=Kufv3qqtiC--KfqK9UiJtv9PTELK-vJ_Is9foev8VSg,30607
70
+ webagents/agents/skills/robutler/notifications/__init__.py,sha256=N5ZWC0YkDRpKsIlazlVdYLBDMvhFg3s1ZIOzpi75EJg,74
71
+ webagents/agents/skills/robutler/notifications/skill.py,sha256=uJpAoCWh0XR475tPhETEePhu0RzvDSxz9cDH2SC7-qQ,5576
72
+ webagents/agents/skills/robutler/payments/__init__.py,sha256=cPe_qLG0nHRxfd5-stleNIFpGktH9_nvpIbjdDJTRCk,1112
73
+ webagents/agents/skills/robutler/payments/exceptions.py,sha256=92mP-sWdU3bgiPpqGsGN8Z0pWif7coBT5ifDhuEtgM0,9697
74
+ webagents/agents/skills/robutler/payments/skill.py,sha256=t3m1pysHBxGauA5xh9oPOGDxW4t8n3XsE2Pj2rL_1r8,27880
75
+ webagents/agents/skills/robutler/storage/__init__.py,sha256=A3FW8rqu5cMJatys-58Y9qyGFllN1t-XkBDOs_pzCHg,227
76
+ webagents/agents/skills/robutler/storage/files/__init__.py,sha256=fUM9VH98PQFgA9d32ok_cIGP4QnszLDm2cqWzXJkqGk,202
77
+ webagents/agents/skills/robutler/storage/files/skill.py,sha256=uDzD_MFobbd0vEgAsz8XMXqIEocG943BznP288St_WM,19305
78
+ webagents/agents/skills/robutler/storage/json/__init__.py,sha256=Sg6k7ZY032a5SnWUPsW9t2TnK4WFtWsU8TjI3VDLNQo,189
79
+ webagents/agents/skills/robutler/storage/json/skill.py,sha256=2Z-pQn8n9UMO-l4vojPY9DsNyEAA3PwMA0SBQfFdfps,12425
80
+ webagents/agents/skills/robutler/storage/kv/skill.py,sha256=iBNnRdsGQpCxFjMiA7sMwMynm9vYk6_2tZGsZnIuUcE,3348
81
+ webagents/agents/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
+ webagents/agents/tools/decorators.py,sha256=CjVqPPQif7jrAm8MWvvcSYfNA4hSeb0BpzJXL-ush-c,17163
83
+ webagents/agents/tracing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
+ webagents/agents/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
+ webagents/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
+ webagents/server/__init__.py,sha256=GGDg1QqMjG0vLElBS1GggsWIyVe-wtMNyUi5FnNXTUI,609
87
+ webagents/server/middleware.py,sha256=kbneMSTKcdn9rlawMM0r3ngo6MAOG_iKXXRrpj7drbM,12068
88
+ webagents/server/models.py,sha256=Q7MsOa2aaZuwgrJZ2rXJ3p8Byv021DuKQ53AEw5twT4,4802
89
+ webagents/server/monitoring.py,sha256=IA98D_mFellWSA94ytgnMKOUEUSEOoXmSHD9mUB87z4,20461
90
+ webagents/server/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
+ webagents/server/context/context_vars.py,sha256=grtkAFK_rI9rWcxIpFoLwhOKfIgisfMr29_cGK7Zowo,3615
92
+ webagents/server/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
+ webagents/server/core/app.py,sha256=TuXAAYosbcTlTNUOA5wBo3dPCT02v9mHkFJJST5Qq9Q,38468
94
+ webagents/server/core/middleware.py,sha256=t3sBbLdjhtLx-MJiNRfmCS0Os63ghCpBsgeVH70KfnA,2228
95
+ webagents/server/core/models.py,sha256=kVIil3ocUvqmUOF-tH0P_GySrFciV2buFXQpprkQz8k,4675
96
+ webagents/server/core/monitoring.py,sha256=aYIj-Pv_5-KWlSOMfQR3nnaROGE04W9tZ1osQhf9sAA,1525
97
+ webagents/server/endpoints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
+ webagents/server/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
+ webagents/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
+ webagents/utils/logging.py,sha256=SOfNh9FDjrqFI8SoTBe-Hqp7nzagyQU9LDWGZt9GpQ8,14079
101
+ webagents-0.2.2.dist-info/METADATA,sha256=mfPtnwrYg6RfKkINvTGTp5PYkxSiPClKcAcqHQwgmA8,10485
102
+ webagents-0.2.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
103
+ webagents-0.2.2.dist-info/entry_points.txt,sha256=bITAYBK8-H8EQUrDctEeEKuer4jAp3lfxKfvH5TT1eM,54
104
+ webagents-0.2.2.dist-info/licenses/LICENSE,sha256=q_-MstZzVvShVsmUTYc9G-PWmUM2j28kHhPrRCxu92w,1064
105
+ webagents-0.2.2.dist-info/RECORD,,
@@ -0,0 +1,20 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Robutler
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ SOFTWARE.
webagents/api/__init__.py DELETED
@@ -1,17 +0,0 @@
1
- """
2
- Robutler API Client Package - Robutler V2.0
3
-
4
- Client library for integrating with Robutler Platform services.
5
- Provides authentication, user management, payment, and other platform APIs.
6
- """
7
-
8
- from .client import RobutlerClient
9
- from .types import User, ApiKey, Integration, CreditTransaction
10
-
11
- __all__ = [
12
- "RobutlerClient",
13
- "User",
14
- "ApiKey",
15
- "Integration",
16
- "CreditTransaction"
17
- ]