signalwire-agents 0.1.9__py3-none-any.whl → 0.1.11__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 (37) hide show
  1. signalwire_agents/__init__.py +39 -4
  2. signalwire_agents/agent_server.py +46 -2
  3. signalwire_agents/cli/__init__.py +9 -0
  4. signalwire_agents/cli/test_swaig.py +2545 -0
  5. signalwire_agents/core/agent_base.py +691 -82
  6. signalwire_agents/core/contexts.py +289 -0
  7. signalwire_agents/core/data_map.py +499 -0
  8. signalwire_agents/core/function_result.py +57 -10
  9. signalwire_agents/core/skill_base.py +31 -1
  10. signalwire_agents/core/skill_manager.py +89 -23
  11. signalwire_agents/core/swaig_function.py +13 -1
  12. signalwire_agents/core/swml_handler.py +37 -13
  13. signalwire_agents/core/swml_service.py +37 -28
  14. signalwire_agents/skills/datasphere/__init__.py +12 -0
  15. signalwire_agents/skills/datasphere/skill.py +229 -0
  16. signalwire_agents/skills/datasphere_serverless/__init__.py +1 -0
  17. signalwire_agents/skills/datasphere_serverless/skill.py +156 -0
  18. signalwire_agents/skills/datetime/skill.py +7 -3
  19. signalwire_agents/skills/joke/__init__.py +1 -0
  20. signalwire_agents/skills/joke/skill.py +88 -0
  21. signalwire_agents/skills/math/skill.py +8 -5
  22. signalwire_agents/skills/registry.py +23 -4
  23. signalwire_agents/skills/web_search/skill.py +58 -33
  24. signalwire_agents/skills/wikipedia/__init__.py +9 -0
  25. signalwire_agents/skills/wikipedia/skill.py +180 -0
  26. signalwire_agents/utils/__init__.py +2 -0
  27. signalwire_agents/utils/schema_utils.py +111 -44
  28. signalwire_agents/utils/serverless.py +38 -0
  29. signalwire_agents-0.1.11.dist-info/METADATA +756 -0
  30. signalwire_agents-0.1.11.dist-info/RECORD +58 -0
  31. {signalwire_agents-0.1.9.dist-info → signalwire_agents-0.1.11.dist-info}/WHEEL +1 -1
  32. signalwire_agents-0.1.11.dist-info/entry_points.txt +2 -0
  33. signalwire_agents-0.1.9.dist-info/METADATA +0 -311
  34. signalwire_agents-0.1.9.dist-info/RECORD +0 -44
  35. {signalwire_agents-0.1.9.data → signalwire_agents-0.1.11.data}/data/schema.json +0 -0
  36. {signalwire_agents-0.1.9.dist-info → signalwire_agents-0.1.11.dist-info}/licenses/LICENSE +0 -0
  37. {signalwire_agents-0.1.9.dist-info → signalwire_agents-0.1.11.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,58 @@
1
+ signalwire_agents/__init__.py,sha256=mEPuH4ErsZlh9JLfubfSeGV0I4KuoQpWSJRRP2Sn3-8,1945
2
+ signalwire_agents/agent_server.py,sha256=izHQGIGnThVhBNtcDKEakS54uew4rn82bnwKIZL8M34,15519
3
+ signalwire_agents/schema.json,sha256=M8Mn6pQda2P9jhbmkALrLr1wt-fRuhYRqdmEi9Rbhqk,178075
4
+ signalwire_agents/cli/__init__.py,sha256=Iy2BfWDWBEZoA1cyHTDsooBSVMx4vH5Ddhr3sEuFe8c,197
5
+ signalwire_agents/cli/test_swaig.py,sha256=PZYb87-lzdi_Q9qIfEjUG989tRxme9B-6kWSKfFujLw,96208
6
+ signalwire_agents/core/__init__.py,sha256=mVDLbpq1pg_WwiqsQR28NNZwJ6-VUXFIfg-vN7pk0ew,806
7
+ signalwire_agents/core/agent_base.py,sha256=aFrF2oZOwWogLbJwF3Ezit_auliurW5U5pPqDYxNtdE,141709
8
+ signalwire_agents/core/contexts.py,sha256=h7hra4xoiKAUdVyJhcKggl8X9EoqwTVWBmNMp-sEsuc,9598
9
+ signalwire_agents/core/data_map.py,sha256=U-HLEZQomWf-UI0-nLAE8g1oyRdE5bU_WxQpboI2YI4,17695
10
+ signalwire_agents/core/function_result.py,sha256=SP46vPAliEzwh3JeeSxmLD_f7_ixRxMBtpSl3t7jieU,45370
11
+ signalwire_agents/core/pom_builder.py,sha256=ywuiIfP8BeLBPo_G4X1teZlG6zTCMkW71CZnmyoDTAQ,6636
12
+ signalwire_agents/core/skill_base.py,sha256=lOpVTLhD9NjStF7Lxh6bAQUGa3DpNYV4agXJRakRuX0,4258
13
+ signalwire_agents/core/skill_manager.py,sha256=6vAzkWYeycilX-5T1B039sf8s11BfRh6ASstt70wWsw,8074
14
+ signalwire_agents/core/swaig_function.py,sha256=OG76Hrtbc8H1mPR5opTmNUEOo0yOMbpbMfZMZjG69Ek,6874
15
+ signalwire_agents/core/swml_builder.py,sha256=Q1ikU9pedgjW888mjbqDFv-jMDvDZ-tZgfyMfu4qQN0,6719
16
+ signalwire_agents/core/swml_handler.py,sha256=C8NvMpNdFg9UiEzPwMmMXMn8X6w10IShKjBJ8VSITBk,8189
17
+ signalwire_agents/core/swml_renderer.py,sha256=iobMWWoBR7dkHndI3Qlwf4C0fg2p7DmAU2Rb7ZmmLhA,13891
18
+ signalwire_agents/core/swml_service.py,sha256=3yhYfowgdKphjf2OLJYuaPsE6Paewe6rAO3e7F7NPic,49797
19
+ signalwire_agents/core/security/__init__.py,sha256=4Mr7baQ_xR_hfJ72YxQRAT_GFa663YjFX_PumJ35Xds,191
20
+ signalwire_agents/core/security/session_manager.py,sha256=s5hXYcFnrsYFoyo-zcN7EJy-wInZQI_cWTBHX9MxHR4,9164
21
+ signalwire_agents/core/state/__init__.py,sha256=qpYIfQBApet6VQsy6diS3yu0lMxCBC6REOUk5l1McUw,379
22
+ signalwire_agents/core/state/file_state_manager.py,sha256=52I_KVlmhHCbKIaHj74Q-ksP_-AF6ewYmOXCf4n5DTQ,7307
23
+ signalwire_agents/core/state/state_manager.py,sha256=76B4mDutMb826dK4c_IJhOXH09BW1bJu6EZa6Mh_LB4,2511
24
+ signalwire_agents/prefabs/__init__.py,sha256=MW11J63XH7KxF2MWguRsMFM9iqMWexaEO9ynDPL_PDM,715
25
+ signalwire_agents/prefabs/concierge.py,sha256=FQxSUBAVH2ECtNs4GGa3f0EPiOrAKaz14h7byNFy5K8,10106
26
+ signalwire_agents/prefabs/faq_bot.py,sha256=NrUn5AGmtdzYTyxTHPt8BZ14ZN1sh4xKA2SVQUlfPPQ,10834
27
+ signalwire_agents/prefabs/info_gatherer.py,sha256=dr9UUgNGX7MIKdCMth3jDVLf6OrHov5G6_zIuNvnrOY,15468
28
+ signalwire_agents/prefabs/receptionist.py,sha256=8EyQ6M0Egs3g7KKWukHFiO9UPoVUxT4MLkvyT3V8o64,10585
29
+ signalwire_agents/prefabs/survey.py,sha256=IIIQfgvMlfVNjEEEdWUn4lAJqVsCDlBsIAkOJ1ckyAE,14796
30
+ signalwire_agents/skills/__init__.py,sha256=xfxrQ0i-aTRomHiCsqelU4RlNlHPJFPgPu-UBDaBOqA,340
31
+ signalwire_agents/skills/registry.py,sha256=BBYEh-9j6FCy5RMegsat7wyMnB-Upj3e1HiqU6e4H4k,4109
32
+ signalwire_agents/skills/datasphere/__init__.py,sha256=SJJlmeMSeezjINPgkuWN1XzDPN_Z3GzZ_StzO1BtxQs,257
33
+ signalwire_agents/skills/datasphere/skill.py,sha256=L6GrGwej3sKPcHljKBNf4it5g4DaGzR18KlQx65_XKg,9598
34
+ signalwire_agents/skills/datasphere_serverless/__init__.py,sha256=65hu8_0eqiczLSZ-aJgASpMQqTUjzTQUI1fC8GI7qTI,70
35
+ signalwire_agents/skills/datasphere_serverless/skill.py,sha256=C3wynBZT2qCezPwb1_F8d37die98bMTNWX8mz5ugiE4,6826
36
+ signalwire_agents/skills/datetime/__init__.py,sha256=coPaY-k2EyZWuYckGunhSJ65Y1Jwz66h-iOo0QWb5WY,43
37
+ signalwire_agents/skills/datetime/skill.py,sha256=aBBdcPV5xWX6uWi9W0VqZ0kKOqC3JHrAhG1bZn58ro8,3900
38
+ signalwire_agents/skills/joke/__init__.py,sha256=R-iS9UMMvOdpkxL9aooVik16eCddJw14Rz4PmFqCdsM,53
39
+ signalwire_agents/skills/joke/skill.py,sha256=AFaf6fMy0sxUPJHvcnf3CWMuPqpJP4ODscUexMadEcU,3381
40
+ signalwire_agents/skills/math/__init__.py,sha256=lGAFWEmJH2fuwkuZUdDTY5dmucrIwtjfNT8bE2hOSP8,39
41
+ signalwire_agents/skills/math/skill.py,sha256=5sErd5x1rFHJg2GlmdJB3LvrmvTNOrZsA2jRnG67Zw8,3342
42
+ signalwire_agents/skills/web_search/__init__.py,sha256=wJlptYDExYw-nxZJVzlTLOgkKkDOLUUt1ZdoLt44ixs,45
43
+ signalwire_agents/skills/web_search/skill.py,sha256=GkfhG3Vz2HxOv91TvVuA4e_4b5cuswUpnJDLdaZW37k,10304
44
+ signalwire_agents/skills/wikipedia/__init__.py,sha256=8Db_aE0ly7QoXg7n2RDvCqKupkyR-UYlK9uFUnGNCE8,184
45
+ signalwire_agents/skills/wikipedia/skill.py,sha256=Q_HWJoG2RkQuZMgWxD9czuzEor79Gy1tjo6ywVzec84,6877
46
+ signalwire_agents/utils/__init__.py,sha256=7KO-y334QOjvKFOur3HIi6ruqJJbQdHpLygTMIuRkNk,255
47
+ signalwire_agents/utils/pom_utils.py,sha256=4Mr7baQ_xR_hfJ72YxQRAT_GFa663YjFX_PumJ35Xds,191
48
+ signalwire_agents/utils/schema_utils.py,sha256=i4okv_O9bUApwT_jJf4Yoij3bLCrGrW3DC-vzSy2RuY,16392
49
+ signalwire_agents/utils/serverless.py,sha256=5kEdoN8Sngv-x4pyk4wRrn8SafJEm6LWqkM2wfO7v2k,979
50
+ signalwire_agents/utils/token_generators.py,sha256=4Mr7baQ_xR_hfJ72YxQRAT_GFa663YjFX_PumJ35Xds,191
51
+ signalwire_agents/utils/validators.py,sha256=4Mr7baQ_xR_hfJ72YxQRAT_GFa663YjFX_PumJ35Xds,191
52
+ signalwire_agents-0.1.11.data/data/schema.json,sha256=M8Mn6pQda2P9jhbmkALrLr1wt-fRuhYRqdmEi9Rbhqk,178075
53
+ signalwire_agents-0.1.11.dist-info/licenses/LICENSE,sha256=NYvAsB-rTcSvG9cqHt9EUHAWLiA9YzM4Qfz-mPdvDR0,1067
54
+ signalwire_agents-0.1.11.dist-info/METADATA,sha256=KULCAfQ9MtDQXG_GhR0gGksIbjaRU5il26oBLduL-Hk,30205
55
+ signalwire_agents-0.1.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
56
+ signalwire_agents-0.1.11.dist-info/entry_points.txt,sha256=pPs-ulmQRldQzQh-uscgrXyUOSn9-9ceplwg5awBa5o,84
57
+ signalwire_agents-0.1.11.dist-info/top_level.txt,sha256=kDGS6ZYv84K9P5Kyg9_S8P_pbUXoHkso0On_DB5bbWc,18
58
+ signalwire_agents-0.1.11.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.8.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ swaig-test = signalwire_agents.cli.test_swaig:console_entry_point
@@ -1,311 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: signalwire_agents
3
- Version: 0.1.9
4
- Summary: SignalWire AI Agents SDK
5
- Author-email: SignalWire Team <info@signalwire.com>
6
- Project-URL: Homepage, https://github.com/signalwire/signalwire-ai-agents
7
- Classifier: Development Status :: 3 - Alpha
8
- Classifier: Intended Audience :: Developers
9
- Classifier: License :: OSI Approved :: MIT License
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.7
12
- Classifier: Programming Language :: Python :: 3.8
13
- Classifier: Programming Language :: Python :: 3.9
14
- Classifier: Programming Language :: Python :: 3.10
15
- Classifier: Programming Language :: Python :: 3.11
16
- Requires-Python: >=3.7
17
- Description-Content-Type: text/markdown
18
- License-File: LICENSE
19
- Requires-Dist: fastapi==0.115.12
20
- Requires-Dist: pydantic==2.11.4
21
- Requires-Dist: PyYAML==6.0.2
22
- Requires-Dist: Requests==2.32.3
23
- Requires-Dist: setuptools==66.1.1
24
- Requires-Dist: signalwire_pom==2.7.1
25
- Requires-Dist: structlog==25.3.0
26
- Requires-Dist: uvicorn==0.34.2
27
- Requires-Dist: beautifulsoup4==4.12.3
28
- Requires-Dist: pytz==2023.3
29
- Dynamic: license-file
30
-
31
- # SignalWire AI Agent SDK
32
-
33
- A Python SDK for creating, hosting, and securing SignalWire AI agents as microservices with minimal boilerplate.
34
-
35
- ## Features
36
-
37
- - **Self-Contained Agents**: Each agent is both a web app and an AI persona
38
- - **Prompt Object Model**: Structured prompt composition using POM
39
- - **SWAIG Integration**: Easily define and handle AI tools/functions
40
- - **Dynamic Configuration**: Configure agents per-request for multi-tenant apps and personalization
41
- - **Custom Routing**: Dynamic request handling for different paths and content
42
- - **SIP Integration**: Route SIP calls to agents based on SIP usernames
43
- - **Security Built-In**: Session management, function-specific security tokens, and basic auth
44
- - **State Management**: Persistent conversation state with automatic tracking
45
- - **Prefab Archetypes**: Ready-to-use agent types for common scenarios
46
- - **Multi-Agent Support**: Host multiple agents on a single server
47
- - **Modular Skills System**: Add capabilities to agents with simple one-liner calls
48
-
49
- ## Skills System
50
-
51
- The SignalWire Agents SDK includes a powerful modular skills system that allows you to add complex capabilities to your agents with simple one-liner calls:
52
-
53
- ```python
54
- from signalwire_agents import AgentBase
55
-
56
- # Create an agent
57
- agent = AgentBase("My Assistant", route="/assistant")
58
-
59
- # Add skills with one-liners
60
- agent.add_skill("web_search") # Web search capability
61
- agent.add_skill("datetime") # Current date/time info
62
- agent.add_skill("math") # Mathematical calculations
63
-
64
- # Configure skills with parameters
65
- agent.add_skill("web_search", {
66
- "num_results": 3, # Get 3 search results
67
- "delay": 0.5 # Small delay between requests
68
- })
69
-
70
- agent.serve()
71
- ```
72
-
73
- ### Available Built-in Skills
74
-
75
- - **web_search**: Google Custom Search API integration with web scraping
76
- - **datetime**: Current date and time with timezone support
77
- - **math**: Safe mathematical expression evaluation
78
-
79
- ### Benefits
80
-
81
- - **One-liner integration**: `agent.add_skill("skill_name")`
82
- - **Configurable parameters**: `agent.add_skill("skill_name", {"param": "value"})`
83
- - **Automatic discovery**: Skills are automatically found from the skills directory
84
- - **Dependency validation**: Clear error messages for missing requirements
85
- - **Modular architecture**: Skills are self-contained and reusable
86
-
87
- For detailed documentation, see [Skills System README](docs/SKILLS_SYSTEM_README.md).
88
-
89
- ## Installation
90
-
91
- ```bash
92
- pip install signalwire-agents
93
- ```
94
-
95
- ## Quick Start
96
-
97
- ```python
98
- from signalwire_agents import AgentBase
99
- from signalwire_agents.core.function_result import SwaigFunctionResult
100
-
101
- class SimpleAgent(AgentBase):
102
- def __init__(self):
103
- super().__init__(name="simple", route="/simple")
104
-
105
- # Configure the agent's personality
106
- self.prompt_add_section("Personality", body="You are a helpful assistant.")
107
- self.prompt_add_section("Goal", body="Help users with basic questions.")
108
- self.prompt_add_section("Instructions", bullets=["Be concise and clear."])
109
-
110
- # Alternative using convenience methods:
111
- # self.setPersonality("You are a helpful assistant.")
112
- # self.setGoal("Help users with basic questions.")
113
- # self.setInstructions(["Be concise and clear."])
114
-
115
- @AgentBase.tool(
116
- name="get_time",
117
- description="Get the current time",
118
- parameters={}
119
- )
120
- def get_time(self, args, raw_data):
121
- from datetime import datetime
122
- now = datetime.now().strftime("%H:%M:%S")
123
- return SwaigFunctionResult(f"The current time is {now}")
124
-
125
- # Run the agent
126
- if __name__ == "__main__":
127
- agent = SimpleAgent()
128
- agent.serve(host="0.0.0.0", port=8000)
129
- ```
130
-
131
- ## Using State Management
132
-
133
- ```python
134
- from signalwire_agents import AgentBase
135
- from signalwire_agents.core.function_result import SwaigFunctionResult
136
- from signalwire_agents.core.state import FileStateManager
137
-
138
- class StatefulAgent(AgentBase):
139
- def __init__(self):
140
- # Configure state management
141
- state_manager = FileStateManager(storage_dir="./state_data")
142
-
143
- super().__init__(
144
- name="stateful",
145
- route="/stateful",
146
- enable_state_tracking=True, # Enable state tracking
147
- state_manager=state_manager # Use custom state manager
148
- )
149
-
150
- # When enable_state_tracking=True, startup_hook and hangup_hook
151
- # are automatically registered to track session lifecycle
152
-
153
- # Custom tool for accessing and updating state
154
- @AgentBase.tool(
155
- name="save_preference",
156
- description="Save a user preference",
157
- parameters={
158
- "preference_name": {
159
- "type": "string",
160
- "description": "Name of the preference to save"
161
- },
162
- "preference_value": {
163
- "type": "string",
164
- "description": "Value of the preference"
165
- }
166
- }
167
- )
168
- def save_preference(self, args, raw_data):
169
- # Get the call ID from the raw data
170
- call_id = raw_data.get("call_id")
171
-
172
- if call_id:
173
- # Get current state or empty dict if none exists
174
- state = self.get_state(call_id) or {}
175
-
176
- # Update the state
177
- preferences = state.get("preferences", {})
178
- preferences[args.get("preference_name")] = args.get("preference_value")
179
- state["preferences"] = preferences
180
-
181
- # Save the updated state
182
- self.update_state(call_id, state)
183
-
184
- return SwaigFunctionResult("Preference saved successfully")
185
- else:
186
- return SwaigFunctionResult("Could not save preference: No call ID")
187
- ```
188
-
189
- ## Using Prefab Agents
190
-
191
- ```python
192
- from signalwire_agents.prefabs import InfoGathererAgent
193
-
194
- agent = InfoGathererAgent(
195
- fields=[
196
- {"name": "full_name", "prompt": "What is your full name?"},
197
- {"name": "reason", "prompt": "How can I help you today?"}
198
- ],
199
- confirmation_template="Thanks {full_name}, I'll help you with {reason}.",
200
- name="info-gatherer",
201
- route="/info-gatherer"
202
- )
203
-
204
- agent.serve(host="0.0.0.0", port=8000)
205
- ```
206
-
207
- Available prefabs include:
208
- - `InfoGathererAgent`: Collects structured information from users
209
- - `FAQBotAgent`: Answers questions based on a knowledge base
210
- - `ConciergeAgent`: Routes users to specialized agents
211
- - `SurveyAgent`: Conducts structured surveys with questions and rating scales
212
- - `ReceptionistAgent`: Greets callers and transfers them to appropriate departments
213
-
214
- ## Dynamic Agent Configuration
215
-
216
- Configure agents dynamically based on request parameters for multi-tenant applications, A/B testing, and personalization.
217
-
218
- ### Static vs Dynamic Configuration
219
-
220
- - **Static**: Agent configured once at startup (traditional approach)
221
- - **Dynamic**: Agent configured fresh for each request based on parameters
222
-
223
- ### Basic Example
224
-
225
- ```python
226
- from signalwire_agents import AgentBase
227
-
228
- class DynamicAgent(AgentBase):
229
- def __init__(self):
230
- super().__init__(name="dynamic-agent", route="/dynamic")
231
-
232
- # Set up dynamic configuration callback
233
- self.set_dynamic_config_callback(self.configure_per_request)
234
-
235
- def configure_per_request(self, query_params, body_params, headers, agent):
236
- """Configure agent based on request parameters"""
237
-
238
- # Extract parameters from request
239
- tier = query_params.get('tier', 'standard')
240
- language = query_params.get('language', 'en')
241
- customer_id = query_params.get('customer_id')
242
-
243
- # Configure voice and language
244
- if language == 'es':
245
- agent.add_language("Spanish", "es-ES", "rime.spore:mistv2")
246
- else:
247
- agent.add_language("English", "en-US", "rime.spore:mistv2")
248
-
249
- # Configure based on service tier
250
- if tier == 'premium':
251
- agent.set_params({"end_of_speech_timeout": 300}) # Faster response
252
- agent.prompt_add_section("Service Level", "You provide premium support.")
253
- else:
254
- agent.set_params({"end_of_speech_timeout": 500}) # Standard response
255
- agent.prompt_add_section("Service Level", "You provide standard support.")
256
-
257
- # Personalize with customer data
258
- global_data = {"tier": tier, "language": language}
259
- if customer_id:
260
- global_data["customer_id"] = customer_id
261
- agent.set_global_data(global_data)
262
-
263
- # Usage examples:
264
- # curl "http://localhost:3000/dynamic?tier=premium&language=es&customer_id=123"
265
- # curl "http://localhost:3000/dynamic?tier=standard&language=en"
266
- ```
267
-
268
- ### Use Cases
269
-
270
- - **Multi-tenant SaaS**: Different configurations per customer/organization
271
- - **A/B Testing**: Test different agent behaviors with different user groups
272
- - **Personalization**: Customize voice, prompts, and behavior per user
273
- - **Localization**: Language and cultural adaptation based on user location
274
- - **Dynamic Pricing**: Adjust features and capabilities based on subscription tiers
275
-
276
- The `EphemeralAgentConfig` object provides all the same familiar methods as `AgentBase` (like `add_language()`, `prompt_add_section()`, `set_global_data()`) but applies them per-request instead of at startup.
277
-
278
- For detailed documentation and advanced examples, see the [Agent Guide](docs/agent_guide.md#dynamic-agent-configuration).
279
-
280
- ## Configuration
281
-
282
- ### Environment Variables
283
-
284
- The SDK supports the following environment variables:
285
-
286
- - `SWML_BASIC_AUTH_USER`: Username for basic auth (default: auto-generated)
287
- - `SWML_BASIC_AUTH_PASSWORD`: Password for basic auth (default: auto-generated)
288
- - `SWML_PROXY_URL_BASE`: Base URL to use when behind a reverse proxy, used for constructing webhook URLs
289
- - `SWML_SSL_ENABLED`: Enable HTTPS/SSL support (values: "true", "1", "yes")
290
- - `SWML_SSL_CERT_PATH`: Path to SSL certificate file
291
- - `SWML_SSL_KEY_PATH`: Path to SSL private key file
292
- - `SWML_DOMAIN`: Domain name for SSL certificate and external URLs
293
- - `SWML_SCHEMA_PATH`: Optional path to override the location of the schema.json file
294
-
295
- When the auth environment variables are set, they will be used for all agents instead of generating random credentials. The proxy URL base is useful when your service is behind a reverse proxy or when you need external services to access your webhooks.
296
-
297
- To enable HTTPS directly (without a reverse proxy), set `SWML_SSL_ENABLED` to "true", provide valid paths to your certificate and key files, and specify your domain name.
298
-
299
- ## Documentation
300
-
301
- The package includes comprehensive documentation in the `docs/` directory:
302
-
303
- - [Agent Guide](docs/agent_guide.md) - Detailed guide to creating and customizing agents, including dynamic configuration
304
- - [Architecture](docs/architecture.md) - Overview of the SDK architecture and core concepts
305
- - [SWML Service Guide](docs/swml_service_guide.md) - Guide to the underlying SWML service
306
-
307
- These documents provide in-depth explanations of the features, APIs, and usage patterns.
308
-
309
- ## License
310
-
311
- MIT
@@ -1,44 +0,0 @@
1
- signalwire_agents/__init__.py,sha256=aEEMPduIWEbHA41lbgxI6lOVAOmYI1C0nFc8_35bLj8,870
2
- signalwire_agents/agent_server.py,sha256=se_YzOQE5UUoRUKCbTnOg9qr4G3qN7iVuQLutwXEwFU,12850
3
- signalwire_agents/schema.json,sha256=M8Mn6pQda2P9jhbmkALrLr1wt-fRuhYRqdmEi9Rbhqk,178075
4
- signalwire_agents/core/__init__.py,sha256=mVDLbpq1pg_WwiqsQR28NNZwJ6-VUXFIfg-vN7pk0ew,806
5
- signalwire_agents/core/agent_base.py,sha256=sQHFKzOHtQrmMn9TGSda-BzfLsqNV9JgG9npUPUrovE,114016
6
- signalwire_agents/core/function_result.py,sha256=OXzm4GOvA6TKbzZFsdz3iBU5vQs9LXxsmQue7zWVolE,43538
7
- signalwire_agents/core/pom_builder.py,sha256=ywuiIfP8BeLBPo_G4X1teZlG6zTCMkW71CZnmyoDTAQ,6636
8
- signalwire_agents/core/skill_base.py,sha256=4IPSP422iKricMRcKWx0rIjy3XS5qaRUf5OSM_x_0QU,3015
9
- signalwire_agents/core/skill_manager.py,sha256=kW17EOUR4u9mePo_90qKoCP6rusXDWzqZvJA0_FB-q4,5486
10
- signalwire_agents/core/swaig_function.py,sha256=WoHGQuCmU9L9k39pttRunmfRtIa_PnNRn9W0Xq3MfIk,6316
11
- signalwire_agents/core/swml_builder.py,sha256=Q1ikU9pedgjW888mjbqDFv-jMDvDZ-tZgfyMfu4qQN0,6719
12
- signalwire_agents/core/swml_handler.py,sha256=KvphI_YY47VWGVXaix_N3SuQSyygHEUr9We6xESQK44,7002
13
- signalwire_agents/core/swml_renderer.py,sha256=iobMWWoBR7dkHndI3Qlwf4C0fg2p7DmAU2Rb7ZmmLhA,13891
14
- signalwire_agents/core/swml_service.py,sha256=4zTtpIKDtL59MzKgkBdpPmBCT6s1wVIikWEzZ1hqnyc,49309
15
- signalwire_agents/core/security/__init__.py,sha256=4Mr7baQ_xR_hfJ72YxQRAT_GFa663YjFX_PumJ35Xds,191
16
- signalwire_agents/core/security/session_manager.py,sha256=s5hXYcFnrsYFoyo-zcN7EJy-wInZQI_cWTBHX9MxHR4,9164
17
- signalwire_agents/core/state/__init__.py,sha256=qpYIfQBApet6VQsy6diS3yu0lMxCBC6REOUk5l1McUw,379
18
- signalwire_agents/core/state/file_state_manager.py,sha256=52I_KVlmhHCbKIaHj74Q-ksP_-AF6ewYmOXCf4n5DTQ,7307
19
- signalwire_agents/core/state/state_manager.py,sha256=76B4mDutMb826dK4c_IJhOXH09BW1bJu6EZa6Mh_LB4,2511
20
- signalwire_agents/prefabs/__init__.py,sha256=MW11J63XH7KxF2MWguRsMFM9iqMWexaEO9ynDPL_PDM,715
21
- signalwire_agents/prefabs/concierge.py,sha256=FQxSUBAVH2ECtNs4GGa3f0EPiOrAKaz14h7byNFy5K8,10106
22
- signalwire_agents/prefabs/faq_bot.py,sha256=NrUn5AGmtdzYTyxTHPt8BZ14ZN1sh4xKA2SVQUlfPPQ,10834
23
- signalwire_agents/prefabs/info_gatherer.py,sha256=dr9UUgNGX7MIKdCMth3jDVLf6OrHov5G6_zIuNvnrOY,15468
24
- signalwire_agents/prefabs/receptionist.py,sha256=8EyQ6M0Egs3g7KKWukHFiO9UPoVUxT4MLkvyT3V8o64,10585
25
- signalwire_agents/prefabs/survey.py,sha256=IIIQfgvMlfVNjEEEdWUn4lAJqVsCDlBsIAkOJ1ckyAE,14796
26
- signalwire_agents/skills/__init__.py,sha256=xfxrQ0i-aTRomHiCsqelU4RlNlHPJFPgPu-UBDaBOqA,340
27
- signalwire_agents/skills/registry.py,sha256=XffqhZQ4ZbAMRssMW8vnK5-Qk8oJBmiEoPwFCMcz1Gc,3515
28
- signalwire_agents/skills/datetime/__init__.py,sha256=coPaY-k2EyZWuYckGunhSJ65Y1Jwz66h-iOo0QWb5WY,43
29
- signalwire_agents/skills/datetime/skill.py,sha256=XtT-tvr-X07q15B96X1bmVCjFvWdXm3J0ZfJ1kxSJe4,3746
30
- signalwire_agents/skills/math/__init__.py,sha256=lGAFWEmJH2fuwkuZUdDTY5dmucrIwtjfNT8bE2hOSP8,39
31
- signalwire_agents/skills/math/skill.py,sha256=Li0oN_pSL3jlC36FGILeZO_P0txf1TVOMoKu1Hrnp_Q,3215
32
- signalwire_agents/skills/web_search/__init__.py,sha256=wJlptYDExYw-nxZJVzlTLOgkKkDOLUUt1ZdoLt44ixs,45
33
- signalwire_agents/skills/web_search/skill.py,sha256=whjY2v3k8hsHxn1KSyTibYl_rtkdVbi0kWAPZuegR5w,9018
34
- signalwire_agents/utils/__init__.py,sha256=4Mr7baQ_xR_hfJ72YxQRAT_GFa663YjFX_PumJ35Xds,191
35
- signalwire_agents/utils/pom_utils.py,sha256=4Mr7baQ_xR_hfJ72YxQRAT_GFa663YjFX_PumJ35Xds,191
36
- signalwire_agents/utils/schema_utils.py,sha256=LvFCFvJTQk_xYK0B-NXbkXKEF7Zmv-LqpV_vfpPnOb4,13473
37
- signalwire_agents/utils/token_generators.py,sha256=4Mr7baQ_xR_hfJ72YxQRAT_GFa663YjFX_PumJ35Xds,191
38
- signalwire_agents/utils/validators.py,sha256=4Mr7baQ_xR_hfJ72YxQRAT_GFa663YjFX_PumJ35Xds,191
39
- signalwire_agents-0.1.9.data/data/schema.json,sha256=M8Mn6pQda2P9jhbmkALrLr1wt-fRuhYRqdmEi9Rbhqk,178075
40
- signalwire_agents-0.1.9.dist-info/licenses/LICENSE,sha256=NYvAsB-rTcSvG9cqHt9EUHAWLiA9YzM4Qfz-mPdvDR0,1067
41
- signalwire_agents-0.1.9.dist-info/METADATA,sha256=APX6OmsEYOL3iOdR6jwc5spU7pxy9lC8G1rSolR4SHU,12040
42
- signalwire_agents-0.1.9.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
43
- signalwire_agents-0.1.9.dist-info/top_level.txt,sha256=kDGS6ZYv84K9P5Kyg9_S8P_pbUXoHkso0On_DB5bbWc,18
44
- signalwire_agents-0.1.9.dist-info/RECORD,,