webagents 0.2.0__py3-none-any.whl → 0.2.3__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.
- webagents/__init__.py +9 -0
- webagents/agents/core/base_agent.py +865 -69
- webagents/agents/core/handoffs.py +14 -6
- webagents/agents/skills/base.py +33 -2
- webagents/agents/skills/core/llm/litellm/skill.py +906 -27
- webagents/agents/skills/core/memory/vector_memory/skill.py +8 -16
- webagents/agents/skills/ecosystem/crewai/__init__.py +3 -1
- webagents/agents/skills/ecosystem/crewai/skill.py +158 -0
- webagents/agents/skills/ecosystem/database/__init__.py +3 -1
- webagents/agents/skills/ecosystem/database/skill.py +522 -0
- webagents/agents/skills/ecosystem/mongodb/__init__.py +3 -0
- webagents/agents/skills/ecosystem/mongodb/skill.py +428 -0
- webagents/agents/skills/ecosystem/n8n/README.md +287 -0
- webagents/agents/skills/ecosystem/n8n/__init__.py +3 -0
- webagents/agents/skills/ecosystem/n8n/skill.py +341 -0
- webagents/agents/skills/ecosystem/openai/__init__.py +6 -0
- webagents/agents/skills/ecosystem/openai/skill.py +867 -0
- webagents/agents/skills/ecosystem/replicate/README.md +440 -0
- webagents/agents/skills/ecosystem/replicate/__init__.py +10 -0
- webagents/agents/skills/ecosystem/replicate/skill.py +517 -0
- webagents/agents/skills/ecosystem/x_com/README.md +401 -0
- webagents/agents/skills/ecosystem/x_com/__init__.py +3 -0
- webagents/agents/skills/ecosystem/x_com/skill.py +1048 -0
- webagents/agents/skills/ecosystem/zapier/README.md +363 -0
- webagents/agents/skills/ecosystem/zapier/__init__.py +3 -0
- webagents/agents/skills/ecosystem/zapier/skill.py +337 -0
- webagents/agents/skills/examples/__init__.py +6 -0
- webagents/agents/skills/examples/music_player.py +329 -0
- webagents/agents/skills/robutler/handoff/__init__.py +6 -0
- webagents/agents/skills/robutler/handoff/skill.py +191 -0
- webagents/agents/skills/robutler/nli/skill.py +180 -24
- webagents/agents/skills/robutler/payments/exceptions.py +27 -7
- webagents/agents/skills/robutler/payments/skill.py +64 -14
- webagents/agents/skills/robutler/storage/files/skill.py +2 -2
- webagents/agents/tools/decorators.py +243 -47
- webagents/agents/widgets/__init__.py +6 -0
- webagents/agents/widgets/renderer.py +150 -0
- webagents/server/core/app.py +130 -15
- webagents/server/core/models.py +1 -1
- webagents/utils/logging.py +13 -1
- {webagents-0.2.0.dist-info → webagents-0.2.3.dist-info}/METADATA +16 -9
- {webagents-0.2.0.dist-info → webagents-0.2.3.dist-info}/RECORD +45 -24
- webagents/agents/skills/ecosystem/openai_agents/__init__.py +0 -0
- {webagents-0.2.0.dist-info → webagents-0.2.3.dist-info}/WHEEL +0 -0
- {webagents-0.2.0.dist-info → webagents-0.2.3.dist-info}/entry_points.txt +0 -0
- {webagents-0.2.0.dist-info → webagents-0.2.3.dist-info}/licenses/LICENSE +0 -0
webagents/server/core/app.py
CHANGED
@@ -23,7 +23,7 @@ from .models import (
|
|
23
23
|
)
|
24
24
|
from .middleware import RequestLoggingMiddleware, RateLimitMiddleware, RateLimitRule
|
25
25
|
from .monitoring import initialize_monitoring
|
26
|
-
from ..context.context_vars import Context, set_context, create_context
|
26
|
+
from ..context.context_vars import Context, set_context, create_context, get_context
|
27
27
|
from ...agents.core.base_agent import BaseAgent
|
28
28
|
from ...utils.logging import get_logger
|
29
29
|
|
@@ -385,6 +385,7 @@ class WebAgentsServer:
|
|
385
385
|
subpath = handler_config.get('subpath') or ''
|
386
386
|
method = (handler_config.get('method') or 'get').lower()
|
387
387
|
handler_func = handler_config.get('function')
|
388
|
+
handler_scope = handler_config.get('scope', 'all')
|
388
389
|
|
389
390
|
if method != request_method:
|
390
391
|
continue
|
@@ -401,16 +402,26 @@ class WebAgentsServer:
|
|
401
402
|
# Extract query params
|
402
403
|
query_params = dict(request.query_params)
|
403
404
|
|
404
|
-
# Extract JSON
|
405
|
+
# Extract body data (JSON or form-encoded) for methods that commonly have a body
|
405
406
|
body_data = {}
|
406
407
|
if request.method in ["POST", "PUT", "PATCH"]:
|
407
408
|
try:
|
409
|
+
# Try JSON first
|
408
410
|
body_data = await request.json()
|
409
411
|
except Exception:
|
410
|
-
|
412
|
+
# Fallback to form data (application/x-www-form-urlencoded)
|
413
|
+
try:
|
414
|
+
form_data = await request.form()
|
415
|
+
body_data = dict(form_data)
|
416
|
+
except Exception:
|
417
|
+
body_data = {}
|
411
418
|
|
412
419
|
# Combine and filter parameters by handler signature
|
413
420
|
combined_params = {**path_params, **query_params, **body_data}
|
421
|
+
|
422
|
+
# Remove 'token' from params (used for auth, not a handler param)
|
423
|
+
combined_params.pop('token', None)
|
424
|
+
|
414
425
|
sig = _inspect.signature(handler_func)
|
415
426
|
filtered_params = {}
|
416
427
|
for param_name in sig.parameters:
|
@@ -421,10 +432,64 @@ class WebAgentsServer:
|
|
421
432
|
|
422
433
|
# Set minimal request context for handlers that depend on it (e.g., owner scope/User ID)
|
423
434
|
try:
|
424
|
-
|
435
|
+
# Support token-based auth for localhost (cross-port authentication)
|
436
|
+
# In production, same origin means normal cookie/header auth works
|
437
|
+
token_from_url = query_params.get('token')
|
438
|
+
if token_from_url and ('localhost' in str(request.base_url) or '127.0.0.1' in str(request.base_url)):
|
439
|
+
# Inject token directly into request headers for authentication
|
440
|
+
# This modifies the headers in-place for this request only
|
441
|
+
from starlette.datastructures import MutableHeaders
|
442
|
+
# Access the internal _headers attribute and update it
|
443
|
+
if hasattr(request, '_headers'):
|
444
|
+
if not isinstance(request._headers, MutableHeaders):
|
445
|
+
request._headers = MutableHeaders(request._headers)
|
446
|
+
request._headers['authorization'] = f'Bearer {token_from_url}'
|
447
|
+
ctx = create_context(messages=[], stream=False, agent=agent, request=request)
|
448
|
+
else:
|
449
|
+
ctx = create_context(messages=[], stream=False, agent=agent, request=request)
|
425
450
|
set_context(ctx)
|
426
|
-
except Exception:
|
427
|
-
|
451
|
+
except Exception as e:
|
452
|
+
# Log auth errors but don't fail the request
|
453
|
+
import logging
|
454
|
+
logging.getLogger('webagents.server').debug(f"Context creation error: {e}")
|
455
|
+
|
456
|
+
# Check authentication/authorization if handler has restricted scope
|
457
|
+
if handler_scope != 'all':
|
458
|
+
# Check if handler requires owner/admin scope
|
459
|
+
required_scopes = [handler_scope] if isinstance(handler_scope, str) else handler_scope
|
460
|
+
|
461
|
+
# Get user's auth context
|
462
|
+
user_scopes = []
|
463
|
+
try:
|
464
|
+
ctx = get_context()
|
465
|
+
if ctx and ctx.auth and hasattr(ctx.auth, 'scope'):
|
466
|
+
from ...agents.skills.robutler.auth.types import AuthScope
|
467
|
+
auth_scope = ctx.auth.scope
|
468
|
+
if auth_scope == AuthScope.ADMIN:
|
469
|
+
user_scopes = ['admin', 'owner', 'all']
|
470
|
+
elif auth_scope == AuthScope.OWNER:
|
471
|
+
user_scopes = ['owner', 'all']
|
472
|
+
elif auth_scope == AuthScope.USER:
|
473
|
+
user_scopes = ['all']
|
474
|
+
except Exception:
|
475
|
+
# If we can't get auth context, user is unauthenticated
|
476
|
+
user_scopes = []
|
477
|
+
|
478
|
+
# Fallback: For localhost, check if token in URL matches agent's API key (cross-port auth)
|
479
|
+
token_from_url = query_params.get('token')
|
480
|
+
if not user_scopes and token_from_url and ('localhost' in str(request.base_url) or '127.0.0.1' in str(request.base_url)):
|
481
|
+
# Validate token matches agent's API key
|
482
|
+
if hasattr(agent, 'api_key') and agent.api_key == token_from_url:
|
483
|
+
# Grant owner scope for valid agent API key on localhost
|
484
|
+
user_scopes = ['owner', 'all']
|
485
|
+
|
486
|
+
# Check if user has required scope
|
487
|
+
has_access = any(scope in required_scopes or scope == 'all' for scope in user_scopes)
|
488
|
+
if not has_access:
|
489
|
+
raise HTTPException(
|
490
|
+
status_code=403,
|
491
|
+
detail=f"Access denied. This endpoint requires one of: {', '.join(required_scopes)}"
|
492
|
+
)
|
428
493
|
|
429
494
|
# Call the handler function (async or sync)
|
430
495
|
if _inspect.iscoroutinefunction(handler_func):
|
@@ -736,12 +801,38 @@ class WebAgentsServer:
|
|
736
801
|
from fastapi.responses import StreamingResponse
|
737
802
|
import json
|
738
803
|
|
804
|
+
# Start the generator to catch early errors (on_connection, etc.)
|
805
|
+
generator = agent.run_streaming(messages=messages_dict, tools=tools_dict)
|
806
|
+
|
807
|
+
# Try to get the first chunk - this triggers on_connection hooks
|
808
|
+
try:
|
809
|
+
first_chunk = await generator.__anext__()
|
810
|
+
except StopAsyncIteration:
|
811
|
+
# Empty stream - should not happen but handle gracefully
|
812
|
+
first_chunk = None
|
813
|
+
except Exception as e:
|
814
|
+
# Error before streaming started (e.g., on_connection payment error)
|
815
|
+
# Return as HTTP error instead of SSE chunk for better frontend handling
|
816
|
+
if hasattr(e, 'status_code') and hasattr(e, 'detail'):
|
817
|
+
self.logger.error(f"💳 Early error before streaming: {e}")
|
818
|
+
raise HTTPException(
|
819
|
+
status_code=getattr(e, 'status_code', 500),
|
820
|
+
detail=getattr(e, 'detail')
|
821
|
+
)
|
822
|
+
raise
|
823
|
+
|
739
824
|
async def generate():
|
740
825
|
try:
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
826
|
+
# Yield the first chunk we already fetched
|
827
|
+
if first_chunk is not None:
|
828
|
+
try:
|
829
|
+
chunk_json = json.dumps(first_chunk)
|
830
|
+
yield f"data: {chunk_json}\n\n"
|
831
|
+
except Exception as json_error:
|
832
|
+
self.logger.error(f"Failed to serialize first chunk: {json_error}")
|
833
|
+
|
834
|
+
# Continue with remaining chunks
|
835
|
+
async for chunk in generator:
|
745
836
|
# Properly serialize chunk to JSON for SSE format
|
746
837
|
try:
|
747
838
|
chunk_json = json.dumps(chunk)
|
@@ -753,14 +844,38 @@ class WebAgentsServer:
|
|
753
844
|
yield "data: [DONE]\n\n"
|
754
845
|
except Exception as e:
|
755
846
|
self.logger.error(f"Streaming error: {e}")
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
847
|
+
|
848
|
+
# Check if this is a payment error with status_code and detail
|
849
|
+
if hasattr(e, 'status_code') and hasattr(e, 'detail'):
|
850
|
+
status_code = getattr(e, 'status_code', 500)
|
851
|
+
detail = getattr(e, 'detail')
|
852
|
+
self.logger.error(f" - Payment/custom error: status={status_code}, detail={detail}")
|
853
|
+
|
854
|
+
# Format error in OpenAI-compatible format for AI SDK
|
855
|
+
# Also include payment-specific fields for frontend handling
|
856
|
+
error_code = detail.get("error") if isinstance(detail, dict) else "PAYMENT_ERROR"
|
857
|
+
error_chunk = {
|
858
|
+
"error": {
|
859
|
+
"message": str(e),
|
860
|
+
"type": "insufficient_balance" if status_code == 402 else "server_error",
|
861
|
+
"code": error_code,
|
862
|
+
"status_code": status_code,
|
863
|
+
"detail": detail,
|
864
|
+
"error_code": error_code, # For payment token manager compatibility
|
865
|
+
"statusCode": status_code # For payment token manager compatibility
|
866
|
+
}
|
867
|
+
}
|
868
|
+
else:
|
869
|
+
error_chunk = {
|
870
|
+
"error": {
|
871
|
+
"message": str(e),
|
872
|
+
"type": "server_error",
|
873
|
+
"code": "internal_error"
|
874
|
+
}
|
760
875
|
}
|
761
|
-
}
|
762
876
|
error_json = json.dumps(error_chunk)
|
763
877
|
yield f"data: {error_json}\n\n"
|
878
|
+
yield "data: [DONE]\n\n"
|
764
879
|
|
765
880
|
return StreamingResponse(
|
766
881
|
generate(),
|
webagents/server/core/models.py
CHANGED
@@ -11,7 +11,7 @@ from pydantic import BaseModel, Field
|
|
11
11
|
class ChatMessage(BaseModel):
|
12
12
|
"""OpenAI-compatible chat message"""
|
13
13
|
role: str = Field(..., description="Message role: 'system', 'user', 'assistant', or 'tool'")
|
14
|
-
content: Optional[str] = Field(None, description="Message content")
|
14
|
+
content: Optional[Union[str, List[Dict[str, Any]]]] = Field(None, description="Message content (string or array of content parts for multimodal)")
|
15
15
|
tool_calls: Optional[List[Dict[str, Any]]] = Field(None, description="Tool calls in the message")
|
16
16
|
tool_call_id: Optional[str] = Field(None, description="Tool call ID for tool responses")
|
17
17
|
|
webagents/utils/logging.py
CHANGED
@@ -38,7 +38,19 @@ def get_agent_color(agent_name: str) -> str:
|
|
38
38
|
return AGENT_COLORS[agent_name]
|
39
39
|
|
40
40
|
# Generate consistent color based on agent name hash
|
41
|
-
|
41
|
+
# Using a variety of colors for better visual distinction
|
42
|
+
colors = [
|
43
|
+
Fore.GREEN,
|
44
|
+
Fore.CYAN,
|
45
|
+
Fore.YELLOW,
|
46
|
+
Fore.BLUE,
|
47
|
+
Fore.MAGENTA,
|
48
|
+
Fore.LIGHTGREEN_EX,
|
49
|
+
Fore.LIGHTCYAN_EX,
|
50
|
+
Fore.LIGHTYELLOW_EX,
|
51
|
+
Fore.LIGHTBLUE_EX,
|
52
|
+
Fore.LIGHTMAGENTA_EX,
|
53
|
+
]
|
42
54
|
color_index = hash(agent_name) % len(colors)
|
43
55
|
return colors[color_index]
|
44
56
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: webagents
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.3
|
4
4
|
Summary: Foundation framework for the Web of Agents - build, serve and monetize AI agents
|
5
5
|
Author: Awesome Opensource Contributors and Robutler Team
|
6
6
|
License: MIT License
|
@@ -26,15 +26,20 @@ License: MIT License
|
|
26
26
|
License-File: LICENSE
|
27
27
|
Requires-Python: >=3.10
|
28
28
|
Requires-Dist: colorama>=0.4.6
|
29
|
+
Requires-Dist: crewai>=0.1.0
|
29
30
|
Requires-Dist: fastapi>=0.100.0
|
30
31
|
Requires-Dist: fastmcp>=2.3.0
|
31
32
|
Requires-Dist: httpx>=0.24.0
|
32
33
|
Requires-Dist: litellm>=1.0.0
|
33
34
|
Requires-Dist: pillow>=10.0.0
|
35
|
+
Requires-Dist: psycopg2-binary>=2.9.0
|
34
36
|
Requires-Dist: pydantic-settings>=2.0.0
|
35
37
|
Requires-Dist: pydantic>=2.7.0
|
38
|
+
Requires-Dist: pymongo>=4.0.0
|
36
39
|
Requires-Dist: python-dotenv>=1.0.0
|
40
|
+
Requires-Dist: supabase>=2.0.0
|
37
41
|
Requires-Dist: tiktoken>=0.5.0
|
42
|
+
Requires-Dist: tweepy>=4.14.0
|
38
43
|
Requires-Dist: uvicorn>=0.23.0
|
39
44
|
Provides-Extra: dev
|
40
45
|
Requires-Dist: black>=23.0.0; extra == 'dev'
|
@@ -74,6 +79,8 @@ With WebAgents delegation, your agent is as powerful as the whole ecosystem, and
|
|
74
79
|
pip install webagents
|
75
80
|
```
|
76
81
|
|
82
|
+
WebAgents includes everything you need: core framework, LLM integration, and ecosystem skills (MongoDB, Supabase, PostgreSQL, CrewAI, X.com, etc.)
|
83
|
+
|
77
84
|
## 🏃♂️ Quick Start
|
78
85
|
|
79
86
|
### Create Your First Agent
|
@@ -203,7 +210,7 @@ export OPENAI_API_KEY="your-openai-key"
|
|
203
210
|
export WEBAGENTS_API_KEY="your-webagents-key"
|
204
211
|
```
|
205
212
|
|
206
|
-
Get your WEBAGENTS_API_KEY at https://robutler.ai
|
213
|
+
Get your WEBAGENTS_API_KEY at https://robutler.ai/developer
|
207
214
|
|
208
215
|
|
209
216
|
## 🌐 Web of Agents
|
@@ -216,23 +223,23 @@ WebAgents enables dynamic real-time orchestration where each AI agent acts as a
|
|
216
223
|
|
217
224
|
## 📚 Documentation
|
218
225
|
|
219
|
-
- **[Full Documentation](https://
|
220
|
-
- **[Skills Framework](https://
|
221
|
-
- **[Agent Architecture](https://
|
222
|
-
- **[Custom Skills](https://
|
226
|
+
- **[Full Documentation](https://robutler.ai/webagents)** - Complete guides and API reference
|
227
|
+
- **[Skills Framework](https://robutler.ai/webagents/skills/overview/)** - Deep dive into modular capabilities
|
228
|
+
- **[Agent Architecture](https://robutler.ai/webagents/agent/overview/)** - Understand agent communication
|
229
|
+
- **[Custom Skills](https://robutler.ai/webagents/skills/custom/)** - Build your own capabilities
|
223
230
|
|
224
231
|
## 🤝 Contributing
|
225
232
|
|
226
|
-
We welcome contributions! Please see our [Contributing Guide](https://
|
233
|
+
We welcome contributions! Please see our [Contributing Guide](https://robutler.ai/webagents/developers/contributing/) for details.
|
227
234
|
|
228
235
|
## 📄 License
|
229
236
|
|
230
|
-
This project is licensed under the MIT License - see the [LICENSE](https://
|
237
|
+
This project is licensed under the MIT License - see the [LICENSE](https://robutler.ai/webagents/license/) file for details.
|
231
238
|
|
232
239
|
## 🆘 Support
|
233
240
|
|
234
241
|
- **GitHub Issues**: [Report bugs and request features](https://github.com/robutlerai/webagents/issues)
|
235
|
-
- **Documentation**: [
|
242
|
+
- **Documentation**: [robutler.ai/webagents](https://robutler.ai/webagents)
|
236
243
|
- **Community**: Join our Discord server for discussions and support
|
237
244
|
|
238
245
|
---
|
@@ -1,20 +1,20 @@
|
|
1
|
-
webagents/__init__.py,sha256=
|
1
|
+
webagents/__init__.py,sha256=mBjRKLOfZeu-gk-YsqriXwiSqP1FQE6RT3NQJdpPG4U,613
|
2
2
|
webagents/__main__.py,sha256=5e1gYVYHzbADPIMYsoZRyBg-gRtdvFi8ykBsZYXFrqU,1346
|
3
3
|
webagents/agents/__init__.py,sha256=xh0Q3JyTN71ByorxVz_o_4lSrmVicA6LxNsuA7aF7W8,245
|
4
4
|
webagents/agents/core/__init__.py,sha256=WL5kMK1NuAWfKLTJQ0le68k4tRTOrOcf485bKRHBPiw,542
|
5
|
-
webagents/agents/core/base_agent.py,sha256=
|
6
|
-
webagents/agents/core/handoffs.py,sha256=
|
5
|
+
webagents/agents/core/base_agent.py,sha256=48e0Nu5f46RXHfVEeIWn3ad9OWpcjHndJWpvkadFgKc,138052
|
6
|
+
webagents/agents/core/handoffs.py,sha256=WBdLlS1YiWz66xlRlUstPGzsCbsqejt3XGe1ttNw0Co,11232
|
7
7
|
webagents/agents/handoffs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
8
|
webagents/agents/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
9
|
webagents/agents/lifecycle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
10
|
webagents/agents/skills/__init__.py,sha256=qGawdVNp1AtF09-vAVR2s77SwQCTnZIaIGskDv5e81g,3211
|
11
|
-
webagents/agents/skills/base.py,sha256=
|
11
|
+
webagents/agents/skills/base.py,sha256=P_f4WyFkRjwOmac-fwwvjAbXQBYkcIFTYpqQyXH_cuM,6358
|
12
12
|
webagents/agents/skills/core/__init__.py,sha256=xT_-sPnLbxTUqjvg0toVCqQyB6OP-An_vBprdv_t0xA,258
|
13
13
|
webagents/agents/skills/core/guardrails/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
14
14
|
webagents/agents/skills/core/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
15
|
webagents/agents/skills/core/llm/anthropic/__init__.py,sha256=NkitGyW7aAdDPKsIeZaU979us3yg84Hej1L_Ogtw-f8,68
|
16
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=
|
17
|
+
webagents/agents/skills/core/llm/litellm/skill.py,sha256=N8QO8lGb156B-LYjyFW48_8BnsyrRiSAjC21RI0p528,68192
|
18
18
|
webagents/agents/skills/core/llm/openai/__init__.py,sha256=eHvy20Z-geoVAZu8MstRiPXsEXZLJcBq3GtSZSLeOXo,65
|
19
19
|
webagents/agents/skills/core/llm/xai/__init__.py,sha256=HPcn0Ki-Di0kIzV5bvb-Vt-8vGW-ufBmHI9ZBeIdlA8,62
|
20
20
|
webagents/agents/skills/core/mcp/README.md,sha256=niQJlntyF6WbaxsUuJVYHFYJ93nV6u4F_QQ_TJZIAP8,14950
|
@@ -25,20 +25,37 @@ webagents/agents/skills/core/memory/long_term_memory/__init__.py,sha256=Bk4DChm7
|
|
25
25
|
webagents/agents/skills/core/memory/long_term_memory/memory_skill.py,sha256=Swc2eQUKRheH88J-AVoP7zj8pqMxYrXtSsAbILBHVdM,24069
|
26
26
|
webagents/agents/skills/core/memory/short_term_memory/__init__.py,sha256=TH5ijPbZau6oUTjgj5R1YqSw5x_kqWJhzJlaoGVeymc,217
|
27
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=
|
28
|
+
webagents/agents/skills/core/memory/vector_memory/skill.py,sha256=ng604Gv8actDbp6EhbszUpRqZgKnqlINO3GAEt1sVZI,19368
|
29
29
|
webagents/agents/skills/core/planning/__init__.py,sha256=VjFRykXTRe9F0oHukmCFcbDuXg_bQU8XIcI8VEA69Y4,223
|
30
30
|
webagents/agents/skills/core/planning/planner.py,sha256=EFBH9vrYcYaWgXSlC0c8nUP9eGj6b_RyZ4dHbNjFVXU,13900
|
31
31
|
webagents/agents/skills/ecosystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
32
|
-
webagents/agents/skills/ecosystem/crewai/__init__.py,sha256=
|
33
|
-
webagents/agents/skills/ecosystem/
|
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
|
34
36
|
webagents/agents/skills/ecosystem/filesystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
35
37
|
webagents/agents/skills/ecosystem/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
38
|
webagents/agents/skills/ecosystem/google/calendar/__init__.py,sha256=s_e6EPc07c-iO06BUYaVyat1arGkNBLt29BKHubL6-0,77
|
37
39
|
webagents/agents/skills/ecosystem/google/calendar/skill.py,sha256=hWFICppmWbHvecRLNz8NJJyT1GiQj_oR-ioxDDzQ_ig,15623
|
38
|
-
webagents/agents/skills/ecosystem/
|
39
|
-
webagents/agents/skills/ecosystem/
|
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/__init__.py,sha256=KzYWLUku8K7uVLslKjfN2tKlP69I5DKvtb5Eb_smctc,154
|
46
|
+
webagents/agents/skills/ecosystem/openai/skill.py,sha256=Q15jqjYmem96HkUCWsOSlvWkivwBKFW76UtXZHw7hCc,43691
|
47
|
+
webagents/agents/skills/ecosystem/replicate/README.md,sha256=oJWrl9XOSZasdEb5VrMqZIF4yqpQ_JM-Cr0XWcMrXkU,13033
|
48
|
+
webagents/agents/skills/ecosystem/replicate/__init__.py,sha256=mvs-7C_0OurN-TXSJcKsipkqEHpCWDw02r0Twbrx6yk,159
|
49
|
+
webagents/agents/skills/ecosystem/replicate/skill.py,sha256=RGXpAPHiEi4X-f2JXhP0fD8-ztgUM5MGrRZ6Y4BbP-I,22108
|
40
50
|
webagents/agents/skills/ecosystem/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
41
|
-
webagents/agents/skills/ecosystem/
|
51
|
+
webagents/agents/skills/ecosystem/x_com/README.md,sha256=XmM_c5A_L6Qj32DnQiKSYAy1QXXBjaSNmfkoyZ31mck,12601
|
52
|
+
webagents/agents/skills/ecosystem/x_com/__init__.py,sha256=dlSgfpSKryGldqcMg0H_RvsNnPCrBTVexIZtOPUiIw4,54
|
53
|
+
webagents/agents/skills/ecosystem/x_com/skill.py,sha256=ZxPfMP4CaCBql5B5W27qyTDSeB3dITvQ1aGgwQ3Libg,45427
|
54
|
+
webagents/agents/skills/ecosystem/zapier/README.md,sha256=9DDA79BIHm0qq2V3H1JbHmS_tZT6nLkuLY7Ta3FhMr0,8985
|
55
|
+
webagents/agents/skills/ecosystem/zapier/__init__.py,sha256=MSDixYLlCB8pNCCi56lw0SKz0M6H0k9kgscM8luo7nk,58
|
56
|
+
webagents/agents/skills/ecosystem/zapier/skill.py,sha256=Sh1L5rnFO3XZrISEj5-k-YDpCjo_Rvi2LozrqZLpPYc,13544
|
57
|
+
webagents/agents/skills/examples/__init__.py,sha256=mowb0X96d0zRllry8ZhuYUO5DVQAm7WF3FzX0FcT8xk,139
|
58
|
+
webagents/agents/skills/examples/music_player.py,sha256=QW3S5XfI7vZ8WK1Cpc9Y-TCh8Z147c4b3KwigXRonlI,14720
|
42
59
|
webagents/agents/skills/robutler/__init__.py,sha256=r3pYQje2t1T6ooLa45JXPgVOnTJPDvtrFV3i1i-fDTA,166
|
43
60
|
webagents/agents/skills/robutler/storage.py,sha256=qUTeGUYoW46TshYlLKTORoUIRT3fmzoatNE4gCGB6hU,14690
|
44
61
|
webagents/agents/skills/robutler/auth/README.md,sha256=mRcuGF3ty3WyoMCwR0pxYnOWNOKyM7h5MW67-9Y3V4M,2556
|
@@ -49,27 +66,31 @@ webagents/agents/skills/robutler/crm/skill.py,sha256=bT1WjpY-vj1KO0zVhi7QbHMfhnh
|
|
49
66
|
webagents/agents/skills/robutler/discovery/README.md,sha256=3pvo2sJY-Rm29SWuIsHSpDwptaPPDXqjcb6HDGjxaSM,9193
|
50
67
|
webagents/agents/skills/robutler/discovery/__init__.py,sha256=VJYay8yjA1d42HVJDD1GjoZBZD5bEkQovy0jz3GZHbM,319
|
51
68
|
webagents/agents/skills/robutler/discovery/skill.py,sha256=g0tvFiVOSjJtZnPcZZHoWXdTxEESkx0EnSlq6eZbmJ4,9325
|
69
|
+
webagents/agents/skills/robutler/handoff/__init__.py,sha256=PLeP4Mm99fqwmDgcXRCBSzxxrdfwLj6bw1nhE1UGP8g,129
|
70
|
+
webagents/agents/skills/robutler/handoff/skill.py,sha256=YxhcoZs-XFkwTIfws68JNMPqTP6ogUYWkAopNtqFvAQ,6760
|
52
71
|
webagents/agents/skills/robutler/kv/__init__.py,sha256=sbaE6gr_OksCWIhJE0kFMpFErAHUnW_7coW8HiKePM8,53
|
53
72
|
webagents/agents/skills/robutler/kv/skill.py,sha256=ftZulx4gQD9lQVstCTj7ZjsWML2XcZ6PU-2lSGpePHU,3364
|
54
73
|
webagents/agents/skills/robutler/message_history/__init__.py,sha256=15EdlGC6jbcj5ba_kr9U93B1x4U_wG4VeWkY5WW36ZI,215
|
55
74
|
webagents/agents/skills/robutler/message_history/skill.py,sha256=Zq7xATjU-Rx2WbDg812d2S0xPLYlMeM_E9dwn7_NuJU,11179
|
56
75
|
webagents/agents/skills/robutler/messages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
76
|
webagents/agents/skills/robutler/nli/__init__.py,sha256=MrwX21Q5sRlaShckZ56Xt4Xi655wPOdBnJEPZ9ZLm3Q,310
|
58
|
-
webagents/agents/skills/robutler/nli/skill.py,sha256=
|
77
|
+
webagents/agents/skills/robutler/nli/skill.py,sha256=lBr9DElCYEUFmxmgNnmKwHfpuHZAYYIbSaXSVeAovRI,37868
|
59
78
|
webagents/agents/skills/robutler/notifications/__init__.py,sha256=N5ZWC0YkDRpKsIlazlVdYLBDMvhFg3s1ZIOzpi75EJg,74
|
60
79
|
webagents/agents/skills/robutler/notifications/skill.py,sha256=uJpAoCWh0XR475tPhETEePhu0RzvDSxz9cDH2SC7-qQ,5576
|
61
80
|
webagents/agents/skills/robutler/payments/__init__.py,sha256=cPe_qLG0nHRxfd5-stleNIFpGktH9_nvpIbjdDJTRCk,1112
|
62
|
-
webagents/agents/skills/robutler/payments/exceptions.py,sha256=
|
63
|
-
webagents/agents/skills/robutler/payments/skill.py,sha256=
|
81
|
+
webagents/agents/skills/robutler/payments/exceptions.py,sha256=tjSGJ6nWBOkmFefFxRteEKPTd_ufr8F3fJCPq0RfmkA,10690
|
82
|
+
webagents/agents/skills/robutler/payments/skill.py,sha256=E1-3xXoK88gVEIpR6X3L7vkhV6c-6Ri36qereezlrzY,30933
|
64
83
|
webagents/agents/skills/robutler/storage/__init__.py,sha256=A3FW8rqu5cMJatys-58Y9qyGFllN1t-XkBDOs_pzCHg,227
|
65
84
|
webagents/agents/skills/robutler/storage/files/__init__.py,sha256=fUM9VH98PQFgA9d32ok_cIGP4QnszLDm2cqWzXJkqGk,202
|
66
|
-
webagents/agents/skills/robutler/storage/files/skill.py,sha256=
|
85
|
+
webagents/agents/skills/robutler/storage/files/skill.py,sha256=40Rj6MVGgMfLIc2CTmi0quwZmr5YDYald99AIJmgazw,20028
|
67
86
|
webagents/agents/skills/robutler/storage/json/__init__.py,sha256=Sg6k7ZY032a5SnWUPsW9t2TnK4WFtWsU8TjI3VDLNQo,189
|
68
87
|
webagents/agents/skills/robutler/storage/json/skill.py,sha256=2Z-pQn8n9UMO-l4vojPY9DsNyEAA3PwMA0SBQfFdfps,12425
|
69
88
|
webagents/agents/skills/robutler/storage/kv/skill.py,sha256=iBNnRdsGQpCxFjMiA7sMwMynm9vYk6_2tZGsZnIuUcE,3348
|
70
89
|
webagents/agents/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
71
|
-
webagents/agents/tools/decorators.py,sha256=
|
90
|
+
webagents/agents/tools/decorators.py,sha256=k92axXcV8rzy3RSGD6WpjMqUK7EFMOqA88Xsx6aEApM,25820
|
72
91
|
webagents/agents/tracing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
92
|
+
webagents/agents/widgets/__init__.py,sha256=9Ux9Iu3UdueVMZn2r_DSS4RLjqE1MCPAwzCjf16aHZM,222
|
93
|
+
webagents/agents/widgets/renderer.py,sha256=Fftxfh_c0Gy_yqLROLGjNDH5F8I9YojATpJ24dsUQfY,5171
|
73
94
|
webagents/agents/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
74
95
|
webagents/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
75
96
|
webagents/server/__init__.py,sha256=GGDg1QqMjG0vLElBS1GggsWIyVe-wtMNyUi5FnNXTUI,609
|
@@ -79,16 +100,16 @@ webagents/server/monitoring.py,sha256=IA98D_mFellWSA94ytgnMKOUEUSEOoXmSHD9mUB87z
|
|
79
100
|
webagents/server/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
80
101
|
webagents/server/context/context_vars.py,sha256=grtkAFK_rI9rWcxIpFoLwhOKfIgisfMr29_cGK7Zowo,3615
|
81
102
|
webagents/server/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
82
|
-
webagents/server/core/app.py,sha256=
|
103
|
+
webagents/server/core/app.py,sha256=CWqfjRUiExCG4FLPr-hfcxQYfzeqgkyvMzn8Ydvx15k,45933
|
83
104
|
webagents/server/core/middleware.py,sha256=t3sBbLdjhtLx-MJiNRfmCS0Os63ghCpBsgeVH70KfnA,2228
|
84
|
-
webagents/server/core/models.py,sha256=
|
105
|
+
webagents/server/core/models.py,sha256=UyAV2XxPsaTanddWTVkUDoYmUCTBv25bt5mSgs2hC0I,4754
|
85
106
|
webagents/server/core/monitoring.py,sha256=aYIj-Pv_5-KWlSOMfQR3nnaROGE04W9tZ1osQhf9sAA,1525
|
86
107
|
webagents/server/endpoints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
108
|
webagents/server/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
88
109
|
webagents/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
89
|
-
webagents/utils/logging.py,sha256=
|
90
|
-
webagents-0.2.
|
91
|
-
webagents-0.2.
|
92
|
-
webagents-0.2.
|
93
|
-
webagents-0.2.
|
94
|
-
webagents-0.2.
|
110
|
+
webagents/utils/logging.py,sha256=c4WV_-gTFk4GauCEpAFJ9LtqHRCSkXNzC5RCm9EW230,14319
|
111
|
+
webagents-0.2.3.dist-info/METADATA,sha256=brfgccMsDQqV6IdZ2Ks52iPyPE27d34CwgrNVRDf-pg,9879
|
112
|
+
webagents-0.2.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
113
|
+
webagents-0.2.3.dist-info/entry_points.txt,sha256=bITAYBK8-H8EQUrDctEeEKuer4jAp3lfxKfvH5TT1eM,54
|
114
|
+
webagents-0.2.3.dist-info/licenses/LICENSE,sha256=q_-MstZzVvShVsmUTYc9G-PWmUM2j28kHhPrRCxu92w,1064
|
115
|
+
webagents-0.2.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|