signalwire-agents 1.0.6__tar.gz → 1.0.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {signalwire_agents-1.0.6/signalwire_agents.egg-info → signalwire_agents-1.0.8}/PKG-INFO +1 -1
- signalwire_agents-1.0.8/man/sw-agent-init.1 +307 -0
- signalwire_agents-1.0.8/man/sw-search.1 +483 -0
- signalwire_agents-1.0.8/man/swaig-test.1 +308 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/pyproject.toml +9 -1
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/__init__.py +1 -1
- signalwire_agents-1.0.8/signalwire_agents/cli/init_project.py +1225 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8/signalwire_agents.egg-info}/PKG-INFO +1 -1
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents.egg-info/SOURCES.txt +4 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents.egg-info/entry_points.txt +1 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/LICENSE +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/setup.cfg +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/setup.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/agent_server.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/agents/bedrock.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/build_search.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/config.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/core/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/core/agent_loader.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/core/argparse_helpers.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/core/dynamic_config.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/core/service_loader.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/execution/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/execution/datamap_exec.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/execution/webhook_exec.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/output/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/output/output_formatter.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/output/swml_dump.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/simulation/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/simulation/data_generation.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/simulation/data_overrides.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/simulation/mock_env.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/swaig_test_wrapper.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/test_swaig.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/cli/types.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/agent/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/agent/config/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/agent/deployment/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/agent/deployment/handlers/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/agent/prompt/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/agent/prompt/manager.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/agent/routing/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/agent/security/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/agent/swml/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/agent/tools/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/agent/tools/decorator.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/agent/tools/registry.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/agent_base.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/auth_handler.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/config_loader.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/contexts.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/data_map.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/function_result.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/logging_config.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/mixins/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/mixins/ai_config_mixin.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/mixins/auth_mixin.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/mixins/prompt_mixin.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/mixins/serverless_mixin.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/mixins/skill_mixin.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/mixins/state_mixin.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/mixins/tool_mixin.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/mixins/web_mixin.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/pom_builder.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/security/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/security/session_manager.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/security_config.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/skill_base.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/skill_manager.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/swaig_function.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/swml_builder.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/swml_handler.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/swml_renderer.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/core/swml_service.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/prefabs/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/prefabs/concierge.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/prefabs/faq_bot.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/prefabs/info_gatherer.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/prefabs/receptionist.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/prefabs/survey.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/schema.json +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/search/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/search/document_processor.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/search/index_builder.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/search/migration.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/search/models.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/search/pgvector_backend.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/search/query_processor.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/search/search_engine.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/search/search_service.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/api_ninjas_trivia/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/api_ninjas_trivia/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/api_ninjas_trivia/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/datasphere/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/datasphere/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/datasphere/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/datasphere_serverless/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/datasphere_serverless/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/datasphere_serverless/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/datetime/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/datetime/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/datetime/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/joke/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/joke/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/joke/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/math/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/math/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/math/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/mcp_gateway/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/mcp_gateway/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/mcp_gateway/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/native_vector_search/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/native_vector_search/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/native_vector_search/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/play_background_file/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/play_background_file/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/play_background_file/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/registry.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/spider/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/spider/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/spider/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/swml_transfer/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/swml_transfer/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/swml_transfer/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/weather_api/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/weather_api/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/weather_api/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/web_search/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/web_search/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/web_search/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/wikipedia_search/README.md +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/wikipedia_search/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/skills/wikipedia_search/skill.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/utils/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/utils/pom_utils.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/utils/schema_utils.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/utils/token_generators.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/utils/validators.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/web/__init__.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents/web/web_service.py +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents.egg-info/dependency_links.txt +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents.egg-info/requires.txt +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/signalwire_agents.egg-info/top_level.txt +0 -0
- {signalwire_agents-1.0.6 → signalwire_agents-1.0.8}/tests/test_examples.py +0 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
.\" Man page for sw-agent-init
|
|
2
|
+
.\" Copyright (c) 2025 SignalWire
|
|
3
|
+
.\" Licensed under the MIT License
|
|
4
|
+
.TH SW-AGENT-INIT 1 "November 2025" "SignalWire Agents SDK 1.0.6" "SignalWire Commands"
|
|
5
|
+
.SH NAME
|
|
6
|
+
sw-agent-init \- create a new SignalWire AI agent project
|
|
7
|
+
.SH SYNOPSIS
|
|
8
|
+
.B sw-agent-init
|
|
9
|
+
.RI [ options ]
|
|
10
|
+
.br
|
|
11
|
+
.B sw-agent-init
|
|
12
|
+
.I project_name
|
|
13
|
+
.RI [ options ]
|
|
14
|
+
.SH DESCRIPTION
|
|
15
|
+
.B sw-agent-init
|
|
16
|
+
is an interactive command-line tool for creating new SignalWire AI agent
|
|
17
|
+
projects. It generates a complete project structure with all the necessary
|
|
18
|
+
files to get started building voice AI agents.
|
|
19
|
+
.PP
|
|
20
|
+
When run without arguments, the tool enters interactive mode and prompts
|
|
21
|
+
for project configuration. When given a project name, it runs in quick
|
|
22
|
+
mode with sensible defaults.
|
|
23
|
+
.PP
|
|
24
|
+
The generated project includes:
|
|
25
|
+
.IP \(bu 2
|
|
26
|
+
Agent module with sample SWAIG function
|
|
27
|
+
.IP \(bu 2
|
|
28
|
+
Main application entry point
|
|
29
|
+
.IP \(bu 2
|
|
30
|
+
Environment configuration (.env)
|
|
31
|
+
.IP \(bu 2
|
|
32
|
+
Test scaffolding with pytest
|
|
33
|
+
.IP \(bu 2
|
|
34
|
+
Optional web UI for browser-based testing
|
|
35
|
+
.IP \(bu 2
|
|
36
|
+
Debug webhook handlers
|
|
37
|
+
.IP \(bu 2
|
|
38
|
+
README documentation
|
|
39
|
+
.SH ARGUMENTS
|
|
40
|
+
.TP
|
|
41
|
+
.I project_name
|
|
42
|
+
Name of the project to create. If not provided, the tool enters
|
|
43
|
+
interactive mode and prompts for a name.
|
|
44
|
+
.SH OPTIONS
|
|
45
|
+
.TP
|
|
46
|
+
.BR \-h ", " \-\-help
|
|
47
|
+
Display help message and exit.
|
|
48
|
+
.TP
|
|
49
|
+
.BI \-\-type " TYPE"
|
|
50
|
+
Agent type to create. Valid values:
|
|
51
|
+
.RS
|
|
52
|
+
.IP \(bu 2
|
|
53
|
+
.B basic
|
|
54
|
+
\- Minimal agent with example tool (default)
|
|
55
|
+
.IP \(bu 2
|
|
56
|
+
.B full
|
|
57
|
+
\- Complete setup with debug webhooks, web UI, and all features
|
|
58
|
+
.RE
|
|
59
|
+
.TP
|
|
60
|
+
.B \-\-no\-venv
|
|
61
|
+
Skip virtual environment creation. By default, a Python virtual
|
|
62
|
+
environment is created in the project directory.
|
|
63
|
+
.TP
|
|
64
|
+
.BI \-\-dir " DIRECTORY"
|
|
65
|
+
Parent directory for the project. The project will be created as
|
|
66
|
+
a subdirectory. Default is the current directory.
|
|
67
|
+
.SH INTERACTIVE MODE
|
|
68
|
+
When run without a project name, the tool prompts for:
|
|
69
|
+
.SS Project Configuration
|
|
70
|
+
.IP \(bu 2
|
|
71
|
+
.B Project name
|
|
72
|
+
\- Name of the project directory
|
|
73
|
+
.IP \(bu 2
|
|
74
|
+
.B Project directory
|
|
75
|
+
\- Where to create the project
|
|
76
|
+
.IP \(bu 2
|
|
77
|
+
.B Agent type
|
|
78
|
+
\- Basic or full setup
|
|
79
|
+
.SS Feature Selection
|
|
80
|
+
The following features can be enabled or disabled:
|
|
81
|
+
.IP \(bu 2
|
|
82
|
+
.B Debug webhooks
|
|
83
|
+
\- Console output for real-time call data
|
|
84
|
+
.IP \(bu 2
|
|
85
|
+
.B Post-prompt summary
|
|
86
|
+
\- Call summary handling
|
|
87
|
+
.IP \(bu 2
|
|
88
|
+
.B Web UI
|
|
89
|
+
\- Browser-based agent testing interface
|
|
90
|
+
.IP \(bu 2
|
|
91
|
+
.B Example SWAIG tool
|
|
92
|
+
\- Sample get_info function
|
|
93
|
+
.IP \(bu 2
|
|
94
|
+
.B Test scaffolding
|
|
95
|
+
\- pytest-based tests
|
|
96
|
+
.IP \(bu 2
|
|
97
|
+
.B Basic authentication
|
|
98
|
+
\- Secure webhook endpoints
|
|
99
|
+
.SS Credentials
|
|
100
|
+
The tool checks for existing SignalWire credentials in environment
|
|
101
|
+
variables:
|
|
102
|
+
.IP \(bu 2
|
|
103
|
+
.B SIGNALWIRE_SPACE_NAME
|
|
104
|
+
.IP \(bu 2
|
|
105
|
+
.B SIGNALWIRE_PROJECT_ID
|
|
106
|
+
.IP \(bu 2
|
|
107
|
+
.B SIGNALWIRE_TOKEN
|
|
108
|
+
.PP
|
|
109
|
+
If found, they are offered as defaults. Otherwise, you can enter them
|
|
110
|
+
manually or skip and configure later.
|
|
111
|
+
.SH PROJECT STRUCTURE
|
|
112
|
+
A generated project has the following structure:
|
|
113
|
+
.PP
|
|
114
|
+
.RS
|
|
115
|
+
.nf
|
|
116
|
+
project_name/
|
|
117
|
+
\(lm\(em\(em agents/
|
|
118
|
+
\(bv \(lm\(em\(em __init__.py
|
|
119
|
+
\(bv \(gra\(em\(em main_agent.py # Agent implementation
|
|
120
|
+
\(lm\(em\(em skills/
|
|
121
|
+
\(bv \(gra\(em\(em __init__.py # Custom skills
|
|
122
|
+
\(lm\(em\(em tests/
|
|
123
|
+
\(bv \(lm\(em\(em __init__.py
|
|
124
|
+
\(bv \(gra\(em\(em test_agent.py # Unit tests
|
|
125
|
+
\(lm\(em\(em web/
|
|
126
|
+
\(bv \(gra\(em\(em index.html # Web UI (if enabled)
|
|
127
|
+
\(lm\(em\(em .env # Environment config
|
|
128
|
+
\(lm\(em\(em .env.example # Example config
|
|
129
|
+
\(lm\(em\(em .gitignore
|
|
130
|
+
\(lm\(em\(em .venv/ # Virtual environment
|
|
131
|
+
\(lm\(em\(em app.py # Entry point
|
|
132
|
+
\(lm\(em\(em README.md
|
|
133
|
+
\(gra\(em\(em requirements.txt
|
|
134
|
+
.fi
|
|
135
|
+
.RE
|
|
136
|
+
.SH GENERATED FILES
|
|
137
|
+
.SS agents/main_agent.py
|
|
138
|
+
The main agent class with:
|
|
139
|
+
.IP \(bu 2
|
|
140
|
+
Voice and language configuration
|
|
141
|
+
.IP \(bu 2
|
|
142
|
+
Prompt sections (role, guidelines)
|
|
143
|
+
.IP \(bu 2
|
|
144
|
+
Example SWAIG tool using the @tool decorator
|
|
145
|
+
.IP \(bu 2
|
|
146
|
+
Debug webhook configuration (if enabled)
|
|
147
|
+
.IP \(bu 2
|
|
148
|
+
Basic authentication support (if enabled)
|
|
149
|
+
.SS app.py
|
|
150
|
+
Application entry point that:
|
|
151
|
+
.IP \(bu 2
|
|
152
|
+
Loads environment variables from .env
|
|
153
|
+
.IP \(bu 2
|
|
154
|
+
Creates and configures the AgentServer
|
|
155
|
+
.IP \(bu 2
|
|
156
|
+
Registers webhook endpoints
|
|
157
|
+
.IP \(bu 2
|
|
158
|
+
Serves static files from web/ directory
|
|
159
|
+
.IP \(bu 2
|
|
160
|
+
Pretty-prints debug data to console
|
|
161
|
+
.SS .env
|
|
162
|
+
Environment configuration with:
|
|
163
|
+
.IP \(bu 2
|
|
164
|
+
SignalWire credentials
|
|
165
|
+
.IP \(bu 2
|
|
166
|
+
Server host and port
|
|
167
|
+
.IP \(bu 2
|
|
168
|
+
Basic auth credentials (auto-generated secure password)
|
|
169
|
+
.IP \(bu 2
|
|
170
|
+
Debug level settings
|
|
171
|
+
.IP \(bu 2
|
|
172
|
+
Public URL configuration
|
|
173
|
+
.SS tests/test_agent.py
|
|
174
|
+
Test suite that verifies:
|
|
175
|
+
.IP \(bu 2
|
|
176
|
+
Agent loads without errors
|
|
177
|
+
.IP \(bu 2
|
|
178
|
+
SWML structure is valid
|
|
179
|
+
.IP \(bu 2
|
|
180
|
+
SWAIG functions are defined correctly
|
|
181
|
+
.IP \(bu 2
|
|
182
|
+
Functions execute and return expected results
|
|
183
|
+
.SH EXAMPLES
|
|
184
|
+
.SS Interactive Mode
|
|
185
|
+
Run without arguments for guided setup:
|
|
186
|
+
.PP
|
|
187
|
+
.RS
|
|
188
|
+
.nf
|
|
189
|
+
sw-agent-init
|
|
190
|
+
.fi
|
|
191
|
+
.RE
|
|
192
|
+
.SS Quick Mode
|
|
193
|
+
Create a basic agent project:
|
|
194
|
+
.PP
|
|
195
|
+
.RS
|
|
196
|
+
.nf
|
|
197
|
+
sw-agent-init myagent
|
|
198
|
+
.fi
|
|
199
|
+
.RE
|
|
200
|
+
.PP
|
|
201
|
+
Create a full-featured project:
|
|
202
|
+
.PP
|
|
203
|
+
.RS
|
|
204
|
+
.nf
|
|
205
|
+
sw-agent-init myagent --type full
|
|
206
|
+
.fi
|
|
207
|
+
.RE
|
|
208
|
+
.PP
|
|
209
|
+
Create without virtual environment:
|
|
210
|
+
.PP
|
|
211
|
+
.RS
|
|
212
|
+
.nf
|
|
213
|
+
sw-agent-init myagent --no-venv
|
|
214
|
+
.fi
|
|
215
|
+
.RE
|
|
216
|
+
.PP
|
|
217
|
+
Create in a specific directory:
|
|
218
|
+
.PP
|
|
219
|
+
.RS
|
|
220
|
+
.nf
|
|
221
|
+
sw-agent-init myagent --dir /opt/projects
|
|
222
|
+
.fi
|
|
223
|
+
.RE
|
|
224
|
+
.SS After Creation
|
|
225
|
+
Start the agent:
|
|
226
|
+
.PP
|
|
227
|
+
.RS
|
|
228
|
+
.nf
|
|
229
|
+
cd myagent
|
|
230
|
+
source .venv/bin/activate
|
|
231
|
+
python app.py
|
|
232
|
+
.fi
|
|
233
|
+
.RE
|
|
234
|
+
.PP
|
|
235
|
+
Run tests:
|
|
236
|
+
.PP
|
|
237
|
+
.RS
|
|
238
|
+
.nf
|
|
239
|
+
cd myagent
|
|
240
|
+
source .venv/bin/activate
|
|
241
|
+
pytest tests/ -v
|
|
242
|
+
.fi
|
|
243
|
+
.RE
|
|
244
|
+
.PP
|
|
245
|
+
Test with swaig-test:
|
|
246
|
+
.PP
|
|
247
|
+
.RS
|
|
248
|
+
.nf
|
|
249
|
+
swaig-test agents/main_agent.py --list-tools
|
|
250
|
+
swaig-test agents/main_agent.py --exec get_info --topic "test"
|
|
251
|
+
swaig-test agents/main_agent.py --dump-swml
|
|
252
|
+
.fi
|
|
253
|
+
.RE
|
|
254
|
+
.SH AGENT TYPES
|
|
255
|
+
.SS Basic Agent
|
|
256
|
+
The basic agent type includes:
|
|
257
|
+
.IP \(bu 2
|
|
258
|
+
Minimal agent with single example tool
|
|
259
|
+
.IP \(bu 2
|
|
260
|
+
Basic prompt configuration
|
|
261
|
+
.IP \(bu 2
|
|
262
|
+
Test scaffolding
|
|
263
|
+
.IP \(bu 2
|
|
264
|
+
Simple app.py without extra features
|
|
265
|
+
.SS Full Agent
|
|
266
|
+
The full agent type includes everything in basic, plus:
|
|
267
|
+
.IP \(bu 2
|
|
268
|
+
Debug webhook endpoints (/debug, /post_prompt)
|
|
269
|
+
.IP \(bu 2
|
|
270
|
+
Pretty-printed console output for call events
|
|
271
|
+
.IP \(bu 2
|
|
272
|
+
Web UI for browser-based testing
|
|
273
|
+
.IP \(bu 2
|
|
274
|
+
Basic authentication for endpoints
|
|
275
|
+
.IP \(bu 2
|
|
276
|
+
Post-prompt summary configuration
|
|
277
|
+
.IP \(bu 2
|
|
278
|
+
Static file serving
|
|
279
|
+
.SH ENVIRONMENT
|
|
280
|
+
The following environment variables affect credential defaults:
|
|
281
|
+
.TP
|
|
282
|
+
.B SIGNALWIRE_SPACE_NAME
|
|
283
|
+
SignalWire space name. If set, used as default in interactive mode.
|
|
284
|
+
.TP
|
|
285
|
+
.B SIGNALWIRE_PROJECT_ID
|
|
286
|
+
SignalWire project ID. If set, used as default in interactive mode.
|
|
287
|
+
.TP
|
|
288
|
+
.B SIGNALWIRE_TOKEN
|
|
289
|
+
SignalWire API token. If set, used as default in interactive mode.
|
|
290
|
+
.SH EXIT STATUS
|
|
291
|
+
.TP
|
|
292
|
+
.B 0
|
|
293
|
+
Project created successfully.
|
|
294
|
+
.TP
|
|
295
|
+
.B 1
|
|
296
|
+
An error occurred. Check stderr for details.
|
|
297
|
+
.SH SEE ALSO
|
|
298
|
+
.BR swaig-test (1),
|
|
299
|
+
.BR sw-search (1),
|
|
300
|
+
.BR pytest (1)
|
|
301
|
+
.PP
|
|
302
|
+
SignalWire AI Agents SDK documentation:
|
|
303
|
+
.I https://github.com/signalwire/signalwire-agents
|
|
304
|
+
.SH AUTHORS
|
|
305
|
+
SignalWire Team <info@signalwire.com>
|
|
306
|
+
.SH COPYRIGHT
|
|
307
|
+
Copyright (c) 2025 SignalWire. Licensed under the MIT License.
|