signalwire-agents 0.1.0

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 (245) hide show
  1. package/CLAUDE.md +112 -0
  2. package/README.md +417 -0
  3. package/dist/AgentBase.d.ts +481 -0
  4. package/dist/AgentBase.js +1155 -0
  5. package/dist/AgentBase.js.map +1 -0
  6. package/dist/AgentServer.d.ts +60 -0
  7. package/dist/AgentServer.js +128 -0
  8. package/dist/AgentServer.js.map +1 -0
  9. package/dist/AuthHandler.d.ts +56 -0
  10. package/dist/AuthHandler.js +119 -0
  11. package/dist/AuthHandler.js.map +1 -0
  12. package/dist/ConfigLoader.d.ts +68 -0
  13. package/dist/ConfigLoader.js +150 -0
  14. package/dist/ConfigLoader.js.map +1 -0
  15. package/dist/ContextBuilder.d.ts +431 -0
  16. package/dist/ContextBuilder.js +751 -0
  17. package/dist/ContextBuilder.js.map +1 -0
  18. package/dist/DataMap.d.ts +179 -0
  19. package/dist/DataMap.js +321 -0
  20. package/dist/DataMap.js.map +1 -0
  21. package/dist/Logger.d.ts +91 -0
  22. package/dist/Logger.js +191 -0
  23. package/dist/Logger.js.map +1 -0
  24. package/dist/PomBuilder.d.ts +144 -0
  25. package/dist/PomBuilder.js +249 -0
  26. package/dist/PomBuilder.js.map +1 -0
  27. package/dist/PromptManager.d.ts +85 -0
  28. package/dist/PromptManager.js +108 -0
  29. package/dist/PromptManager.js.map +1 -0
  30. package/dist/SchemaUtils.d.ts +42 -0
  31. package/dist/SchemaUtils.js +148 -0
  32. package/dist/SchemaUtils.js.map +1 -0
  33. package/dist/ServerlessAdapter.d.ts +100 -0
  34. package/dist/ServerlessAdapter.js +166 -0
  35. package/dist/ServerlessAdapter.js.map +1 -0
  36. package/dist/SessionManager.d.ts +86 -0
  37. package/dist/SessionManager.js +155 -0
  38. package/dist/SessionManager.js.map +1 -0
  39. package/dist/SslConfig.d.ts +77 -0
  40. package/dist/SslConfig.js +100 -0
  41. package/dist/SslConfig.js.map +1 -0
  42. package/dist/SwaigFunction.d.ts +88 -0
  43. package/dist/SwaigFunction.js +125 -0
  44. package/dist/SwaigFunction.js.map +1 -0
  45. package/dist/SwaigFunctionResult.d.ts +442 -0
  46. package/dist/SwaigFunctionResult.js +735 -0
  47. package/dist/SwaigFunctionResult.js.map +1 -0
  48. package/dist/SwmlBuilder.d.ts +37 -0
  49. package/dist/SwmlBuilder.js +55 -0
  50. package/dist/SwmlBuilder.js.map +1 -0
  51. package/dist/cli/agent-loader.d.ts +22 -0
  52. package/dist/cli/agent-loader.js +106 -0
  53. package/dist/cli/agent-loader.js.map +1 -0
  54. package/dist/cli/mock-data.d.ts +37 -0
  55. package/dist/cli/mock-data.js +79 -0
  56. package/dist/cli/mock-data.js.map +1 -0
  57. package/dist/cli/swaig-test.d.ts +32 -0
  58. package/dist/cli/swaig-test.js +405 -0
  59. package/dist/cli/swaig-test.js.map +1 -0
  60. package/dist/index.d.ts +36 -0
  61. package/dist/index.js +44 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/prefabs/ConciergeAgent.d.ts +64 -0
  64. package/dist/prefabs/ConciergeAgent.js +188 -0
  65. package/dist/prefabs/ConciergeAgent.js.map +1 -0
  66. package/dist/prefabs/FAQBotAgent.d.ts +68 -0
  67. package/dist/prefabs/FAQBotAgent.js +206 -0
  68. package/dist/prefabs/FAQBotAgent.js.map +1 -0
  69. package/dist/prefabs/InfoGathererAgent.d.ts +73 -0
  70. package/dist/prefabs/InfoGathererAgent.js +202 -0
  71. package/dist/prefabs/InfoGathererAgent.js.map +1 -0
  72. package/dist/prefabs/ReceptionistAgent.d.ts +65 -0
  73. package/dist/prefabs/ReceptionistAgent.js +205 -0
  74. package/dist/prefabs/ReceptionistAgent.js.map +1 -0
  75. package/dist/prefabs/SurveyAgent.d.ts +84 -0
  76. package/dist/prefabs/SurveyAgent.js +324 -0
  77. package/dist/prefabs/SurveyAgent.js.map +1 -0
  78. package/dist/prefabs/index.d.ts +13 -0
  79. package/dist/prefabs/index.js +14 -0
  80. package/dist/prefabs/index.js.map +1 -0
  81. package/dist/skills/SkillBase.d.ts +134 -0
  82. package/dist/skills/SkillBase.js +105 -0
  83. package/dist/skills/SkillBase.js.map +1 -0
  84. package/dist/skills/SkillManager.d.ts +83 -0
  85. package/dist/skills/SkillManager.js +159 -0
  86. package/dist/skills/SkillManager.js.map +1 -0
  87. package/dist/skills/SkillRegistry.d.ts +105 -0
  88. package/dist/skills/SkillRegistry.js +195 -0
  89. package/dist/skills/SkillRegistry.js.map +1 -0
  90. package/dist/skills/builtin/api_ninjas_trivia.d.ts +35 -0
  91. package/dist/skills/builtin/api_ninjas_trivia.js +161 -0
  92. package/dist/skills/builtin/api_ninjas_trivia.js.map +1 -0
  93. package/dist/skills/builtin/claude_skills.d.ts +34 -0
  94. package/dist/skills/builtin/claude_skills.js +156 -0
  95. package/dist/skills/builtin/claude_skills.js.map +1 -0
  96. package/dist/skills/builtin/custom_skills.d.ts +59 -0
  97. package/dist/skills/builtin/custom_skills.js +231 -0
  98. package/dist/skills/builtin/custom_skills.js.map +1 -0
  99. package/dist/skills/builtin/datasphere.d.ts +34 -0
  100. package/dist/skills/builtin/datasphere.js +163 -0
  101. package/dist/skills/builtin/datasphere.js.map +1 -0
  102. package/dist/skills/builtin/datasphere_serverless.d.ts +54 -0
  103. package/dist/skills/builtin/datasphere_serverless.js +155 -0
  104. package/dist/skills/builtin/datasphere_serverless.js.map +1 -0
  105. package/dist/skills/builtin/datetime.d.ts +31 -0
  106. package/dist/skills/builtin/datetime.js +95 -0
  107. package/dist/skills/builtin/datetime.js.map +1 -0
  108. package/dist/skills/builtin/google_maps.d.ts +33 -0
  109. package/dist/skills/builtin/google_maps.js +233 -0
  110. package/dist/skills/builtin/google_maps.js.map +1 -0
  111. package/dist/skills/builtin/index.d.ts +28 -0
  112. package/dist/skills/builtin/index.js +75 -0
  113. package/dist/skills/builtin/index.js.map +1 -0
  114. package/dist/skills/builtin/info_gatherer.d.ts +52 -0
  115. package/dist/skills/builtin/info_gatherer.js +237 -0
  116. package/dist/skills/builtin/info_gatherer.js.map +1 -0
  117. package/dist/skills/builtin/joke.d.ts +32 -0
  118. package/dist/skills/builtin/joke.js +142 -0
  119. package/dist/skills/builtin/joke.js.map +1 -0
  120. package/dist/skills/builtin/math.d.ts +33 -0
  121. package/dist/skills/builtin/math.js +120 -0
  122. package/dist/skills/builtin/math.js.map +1 -0
  123. package/dist/skills/builtin/mcp_gateway.d.ts +35 -0
  124. package/dist/skills/builtin/mcp_gateway.js +85 -0
  125. package/dist/skills/builtin/mcp_gateway.js.map +1 -0
  126. package/dist/skills/builtin/native_vector_search.d.ts +44 -0
  127. package/dist/skills/builtin/native_vector_search.js +248 -0
  128. package/dist/skills/builtin/native_vector_search.js.map +1 -0
  129. package/dist/skills/builtin/play_background_file.d.ts +34 -0
  130. package/dist/skills/builtin/play_background_file.js +135 -0
  131. package/dist/skills/builtin/play_background_file.js.map +1 -0
  132. package/dist/skills/builtin/spider.d.ts +34 -0
  133. package/dist/skills/builtin/spider.js +164 -0
  134. package/dist/skills/builtin/spider.js.map +1 -0
  135. package/dist/skills/builtin/swml_transfer.d.ts +44 -0
  136. package/dist/skills/builtin/swml_transfer.js +204 -0
  137. package/dist/skills/builtin/swml_transfer.js.map +1 -0
  138. package/dist/skills/builtin/weather_api.d.ts +34 -0
  139. package/dist/skills/builtin/weather_api.js +136 -0
  140. package/dist/skills/builtin/weather_api.js.map +1 -0
  141. package/dist/skills/builtin/web_search.d.ts +34 -0
  142. package/dist/skills/builtin/web_search.js +141 -0
  143. package/dist/skills/builtin/web_search.js.map +1 -0
  144. package/dist/skills/builtin/wikipedia_search.d.ts +34 -0
  145. package/dist/skills/builtin/wikipedia_search.js +166 -0
  146. package/dist/skills/builtin/wikipedia_search.js.map +1 -0
  147. package/dist/skills/index.d.ts +11 -0
  148. package/dist/skills/index.js +10 -0
  149. package/dist/skills/index.js.map +1 -0
  150. package/dist/types.d.ts +85 -0
  151. package/dist/types.js +5 -0
  152. package/dist/types.js.map +1 -0
  153. package/docs/agent-guide.md +869 -0
  154. package/docs/api-reference.md +2419 -0
  155. package/docs/architecture.md +843 -0
  156. package/docs/cli-guide.md +579 -0
  157. package/docs/configuration.md +422 -0
  158. package/docs/contexts-guide.md +787 -0
  159. package/docs/datamap-guide.md +1141 -0
  160. package/docs/prefabs-guide.md +830 -0
  161. package/docs/security.md +436 -0
  162. package/docs/serverless-guide.md +513 -0
  163. package/docs/skills-guide.md +845 -0
  164. package/docs/swaig-reference.md +1627 -0
  165. package/examples/call-flow.ts +60 -0
  166. package/examples/contexts-steps.ts +62 -0
  167. package/examples/datamap-tools.ts +52 -0
  168. package/examples/dynamic-config.ts +51 -0
  169. package/examples/multi-agent.ts +67 -0
  170. package/examples/pom-prompt.ts +68 -0
  171. package/examples/simple-agent.ts +33 -0
  172. package/package.json +35 -0
  173. package/src/AgentBase.ts +1279 -0
  174. package/src/AgentServer.ts +149 -0
  175. package/src/AuthHandler.ts +141 -0
  176. package/src/ConfigLoader.ts +165 -0
  177. package/src/ContextBuilder.ts +796 -0
  178. package/src/DataMap.ts +365 -0
  179. package/src/Logger.ts +197 -0
  180. package/src/PomBuilder.ts +298 -0
  181. package/src/PromptManager.ts +133 -0
  182. package/src/SchemaUtils.ts +170 -0
  183. package/src/ServerlessAdapter.ts +218 -0
  184. package/src/SessionManager.ts +161 -0
  185. package/src/SslConfig.ts +118 -0
  186. package/src/SwaigFunction.ts +168 -0
  187. package/src/SwaigFunctionResult.ts +864 -0
  188. package/src/SwmlBuilder.ts +62 -0
  189. package/src/cli/agent-loader.ts +122 -0
  190. package/src/cli/mock-data.ts +110 -0
  191. package/src/cli/swaig-test.ts +440 -0
  192. package/src/index.ts +99 -0
  193. package/src/prefabs/ConciergeAgent.ts +251 -0
  194. package/src/prefabs/FAQBotAgent.ts +263 -0
  195. package/src/prefabs/InfoGathererAgent.ts +276 -0
  196. package/src/prefabs/ReceptionistAgent.ts +277 -0
  197. package/src/prefabs/SurveyAgent.ts +413 -0
  198. package/src/prefabs/index.ts +23 -0
  199. package/src/skills/SkillBase.ts +184 -0
  200. package/src/skills/SkillManager.ts +177 -0
  201. package/src/skills/SkillRegistry.ts +231 -0
  202. package/src/skills/builtin/api_ninjas_trivia.ts +230 -0
  203. package/src/skills/builtin/claude_skills.ts +239 -0
  204. package/src/skills/builtin/custom_skills.ts +326 -0
  205. package/src/skills/builtin/datasphere.ts +225 -0
  206. package/src/skills/builtin/datasphere_serverless.ts +194 -0
  207. package/src/skills/builtin/datetime.ts +115 -0
  208. package/src/skills/builtin/google_maps.ts +347 -0
  209. package/src/skills/builtin/index.ts +79 -0
  210. package/src/skills/builtin/info_gatherer.ts +331 -0
  211. package/src/skills/builtin/joke.ts +180 -0
  212. package/src/skills/builtin/math.ts +150 -0
  213. package/src/skills/builtin/mcp_gateway.ts +99 -0
  214. package/src/skills/builtin/native_vector_search.ts +327 -0
  215. package/src/skills/builtin/play_background_file.ts +189 -0
  216. package/src/skills/builtin/spider.ts +232 -0
  217. package/src/skills/builtin/swml_transfer.ts +285 -0
  218. package/src/skills/builtin/weather_api.ts +193 -0
  219. package/src/skills/builtin/web_search.ts +212 -0
  220. package/src/skills/builtin/wikipedia_search.ts +248 -0
  221. package/src/skills/index.ts +12 -0
  222. package/src/types.ts +99 -0
  223. package/tests/AgentBase.test.ts +693 -0
  224. package/tests/AgentServer.test.ts +102 -0
  225. package/tests/AuthHandler.test.ts +121 -0
  226. package/tests/ConfigLoader.test.ts +121 -0
  227. package/tests/DataMap.test.ts +286 -0
  228. package/tests/Logger.test.ts +218 -0
  229. package/tests/PomBuilder.test.ts +164 -0
  230. package/tests/ProxyDetection.test.ts +185 -0
  231. package/tests/SchemaUtils.test.ts +106 -0
  232. package/tests/ServerlessAdapter.test.ts +200 -0
  233. package/tests/SessionManager.test.ts +139 -0
  234. package/tests/SslConfig.test.ts +97 -0
  235. package/tests/SwaigFunctionResult.test.ts +298 -0
  236. package/tests/cli/mock-data.test.ts +94 -0
  237. package/tests/cli/swaig-test.test.ts +96 -0
  238. package/tests/prefabs/prefabs.test.ts +854 -0
  239. package/tests/setup.ts +6 -0
  240. package/tests/skills/SkillBase.test.ts +118 -0
  241. package/tests/skills/SkillManager.test.ts +164 -0
  242. package/tests/skills/SkillRegistry.test.ts +124 -0
  243. package/tests/skills/builtin.test.ts +924 -0
  244. package/tsconfig.json +18 -0
  245. package/vitest.config.ts +9 -0
@@ -0,0 +1,405 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * swaig-test - CLI tool for testing SignalWire AI agents locally.
4
+ *
5
+ * Usage:
6
+ * swaig-test <agent-path> [options]
7
+ *
8
+ * Actions:
9
+ * --list-tools List all SWAIG functions with parameters
10
+ * --list-agents List all exported agents in a file
11
+ * --dump-swml Generate and output SWML document
12
+ * --exec <name> Execute a function (use --arg key=value for args)
13
+ *
14
+ * Options:
15
+ * --raw Raw JSON output (suppresses logs)
16
+ * --verbose Verbose output
17
+ * --format-json Format output as indented JSON
18
+ * --call-type sip|webrtc (default: webrtc)
19
+ * --call-direction inbound|outbound (default: inbound)
20
+ * --call-state active|ringing|hold (default: active)
21
+ * --call-id Override call ID
22
+ * --from-number Override from number
23
+ * --to-extension Override to extension
24
+ * --arg key=value Function argument (repeatable)
25
+ * --override k=v Override call data field (repeatable)
26
+ * --agent-class Name of specific agent class to use
27
+ * --route Route for agent (default: /)
28
+ * --env KEY=VALUE Set env var (repeatable)
29
+ * --env-file Load env vars from file
30
+ * --simulate-serverless <platform> Simulate serverless platform
31
+ */
32
+ import { loadAgent, listAgents } from './agent-loader.js';
33
+ import { generateFakePostData, generateMinimalPostData } from './mock-data.js';
34
+ import { suppressAllLogs, setGlobalLogLevel } from '../Logger.js';
35
+ import { ServerlessAdapter } from '../ServerlessAdapter.js';
36
+ function printUsage() {
37
+ console.log(`
38
+ swaig-test - CLI tool for testing SignalWire AI agents locally
39
+
40
+ Usage:
41
+ swaig-test <agent-path> [options]
42
+
43
+ Actions:
44
+ --list-tools List all SWAIG functions with parameters
45
+ --list-agents List all exported agents in a file
46
+ --dump-swml Generate and output SWML document
47
+ --exec <name> Execute a function (use --arg key=value for args)
48
+
49
+ Options:
50
+ --raw Raw JSON output (suppresses logs)
51
+ --verbose Verbose output
52
+ --format-json Format output as indented JSON
53
+ --call-type sip|webrtc (default: webrtc)
54
+ --call-direction inbound|outbound (default: inbound)
55
+ --call-state active|ringing|hold (default: active)
56
+ --call-id Override call ID
57
+ --from-number Override from number
58
+ --to-extension Override to extension
59
+ --arg key=value Function argument (repeatable)
60
+ --override k=v Override call data field (repeatable)
61
+ --agent-class Name of specific agent class to use
62
+ --route Route for the agent
63
+ --env KEY=VALUE Set env var (repeatable)
64
+ --env-file Load env vars from file
65
+ --simulate-serverless <platform> Simulate serverless (lambda|gcf|azure|cgi)
66
+ --help Show this help message
67
+ `);
68
+ }
69
+ function parseArgs(argv) {
70
+ const args = argv.slice(2); // skip node + script
71
+ if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
72
+ printUsage();
73
+ process.exit(0);
74
+ }
75
+ const opts = {
76
+ agentPath: '',
77
+ action: 'dump-swml',
78
+ raw: false,
79
+ verbose: false,
80
+ formatJson: false,
81
+ callType: 'webrtc',
82
+ callDirection: 'inbound',
83
+ callState: 'active',
84
+ args: {},
85
+ overrides: {},
86
+ envVars: {},
87
+ };
88
+ let i = 0;
89
+ // First positional arg is the agent path
90
+ if (!args[0].startsWith('--')) {
91
+ opts.agentPath = args[0];
92
+ i = 1;
93
+ }
94
+ for (; i < args.length; i++) {
95
+ const arg = args[i];
96
+ switch (arg) {
97
+ case '--list-tools':
98
+ opts.action = 'list-tools';
99
+ break;
100
+ case '--list-agents':
101
+ opts.action = 'list-agents';
102
+ break;
103
+ case '--dump-swml':
104
+ opts.action = 'dump-swml';
105
+ break;
106
+ case '--exec':
107
+ opts.action = 'exec';
108
+ opts.execName = args[++i];
109
+ if (!opts.execName) {
110
+ console.error('Error: --exec requires a function name');
111
+ process.exit(1);
112
+ }
113
+ break;
114
+ case '--raw':
115
+ opts.raw = true;
116
+ break;
117
+ case '--verbose':
118
+ opts.verbose = true;
119
+ break;
120
+ case '--format-json':
121
+ opts.formatJson = true;
122
+ break;
123
+ case '--call-type':
124
+ opts.callType = args[++i];
125
+ break;
126
+ case '--call-direction':
127
+ opts.callDirection = args[++i];
128
+ break;
129
+ case '--call-state':
130
+ opts.callState = args[++i];
131
+ break;
132
+ case '--call-id':
133
+ opts.callId = args[++i];
134
+ break;
135
+ case '--from-number':
136
+ opts.fromNumber = args[++i];
137
+ break;
138
+ case '--to-extension':
139
+ opts.toExtension = args[++i];
140
+ break;
141
+ case '--agent-class':
142
+ opts.agentClass = args[++i];
143
+ break;
144
+ case '--route':
145
+ opts.route = args[++i];
146
+ break;
147
+ case '--simulate-serverless':
148
+ opts.simulateServerless = args[++i];
149
+ break;
150
+ case '--env-file':
151
+ opts.envFile = args[++i];
152
+ break;
153
+ case '--arg': {
154
+ const kv = args[++i];
155
+ if (!kv || !kv.includes('=')) {
156
+ console.error('Error: --arg requires key=value format');
157
+ process.exit(1);
158
+ }
159
+ const eqIdx = kv.indexOf('=');
160
+ const key = kv.slice(0, eqIdx);
161
+ const val = kv.slice(eqIdx + 1);
162
+ // Try to parse as JSON, fall back to string
163
+ try {
164
+ opts.args[key] = JSON.parse(val);
165
+ }
166
+ catch {
167
+ opts.args[key] = val;
168
+ }
169
+ break;
170
+ }
171
+ case '--override': {
172
+ const kv = args[++i];
173
+ if (!kv || !kv.includes('=')) {
174
+ console.error('Error: --override requires key=value format');
175
+ process.exit(1);
176
+ }
177
+ const eqIdx = kv.indexOf('=');
178
+ const key = kv.slice(0, eqIdx);
179
+ const val = kv.slice(eqIdx + 1);
180
+ try {
181
+ opts.overrides[key] = JSON.parse(val);
182
+ }
183
+ catch {
184
+ opts.overrides[key] = val;
185
+ }
186
+ break;
187
+ }
188
+ case '--env': {
189
+ const kv = args[++i];
190
+ if (!kv || !kv.includes('=')) {
191
+ console.error('Error: --env requires KEY=VALUE format');
192
+ process.exit(1);
193
+ }
194
+ const eqIdx = kv.indexOf('=');
195
+ opts.envVars[kv.slice(0, eqIdx)] = kv.slice(eqIdx + 1);
196
+ break;
197
+ }
198
+ default:
199
+ if (!opts.agentPath && !arg.startsWith('--')) {
200
+ opts.agentPath = arg;
201
+ }
202
+ else {
203
+ console.error(`Unknown option: ${arg}`);
204
+ process.exit(1);
205
+ }
206
+ }
207
+ }
208
+ if (!opts.agentPath) {
209
+ console.error('Error: agent path is required');
210
+ printUsage();
211
+ process.exit(1);
212
+ }
213
+ return opts;
214
+ }
215
+ function loadEnvFile(filePath) {
216
+ const { readFileSync } = require('node:fs');
217
+ const { resolve } = require('node:path');
218
+ const content = readFileSync(resolve(filePath), 'utf-8');
219
+ for (const line of content.split('\n')) {
220
+ const trimmed = line.trim();
221
+ if (!trimmed || trimmed.startsWith('#'))
222
+ continue;
223
+ const eqIdx = trimmed.indexOf('=');
224
+ if (eqIdx > 0) {
225
+ const key = trimmed.slice(0, eqIdx).trim();
226
+ let val = trimmed.slice(eqIdx + 1).trim();
227
+ // Strip quotes
228
+ if ((val.startsWith('"') && val.endsWith('"')) || (val.startsWith("'") && val.endsWith("'"))) {
229
+ val = val.slice(1, -1);
230
+ }
231
+ process.env[key] = val;
232
+ }
233
+ }
234
+ }
235
+ async function main() {
236
+ const opts = parseArgs(process.argv);
237
+ if (opts.raw) {
238
+ suppressAllLogs(true);
239
+ }
240
+ else if (opts.verbose) {
241
+ setGlobalLogLevel('debug');
242
+ }
243
+ // Apply env vars
244
+ if (opts.envFile) {
245
+ loadEnvFile(opts.envFile);
246
+ }
247
+ for (const [k, v] of Object.entries(opts.envVars)) {
248
+ process.env[k] = v;
249
+ }
250
+ // List agents action (doesn't need a loaded agent)
251
+ if (opts.action === 'list-agents') {
252
+ const agents = await listAgents(opts.agentPath);
253
+ if (opts.raw || opts.formatJson) {
254
+ console.log(JSON.stringify(agents, null, 2));
255
+ }
256
+ else {
257
+ console.log(`\nExported agents in ${opts.agentPath}:\n`);
258
+ for (const name of agents) {
259
+ console.log(` ${name}`);
260
+ }
261
+ console.log();
262
+ }
263
+ return;
264
+ }
265
+ // Load agent
266
+ const agent = await loadAgent(opts.agentPath, opts.agentClass);
267
+ // Apply --route override
268
+ if (opts.route && typeof agent.route !== 'undefined') {
269
+ agent.route = opts.route;
270
+ }
271
+ // Handle --simulate-serverless
272
+ if (opts.simulateServerless) {
273
+ const platform = opts.simulateServerless;
274
+ const adapter = new ServerlessAdapter(platform);
275
+ const app = agent.getApp();
276
+ const postData = generateFakePostData({
277
+ callType: opts.callType,
278
+ callDirection: opts.callDirection,
279
+ callState: opts.callState,
280
+ callId: opts.callId,
281
+ fromNumber: opts.fromNumber,
282
+ toExtension: opts.toExtension,
283
+ overrides: opts.overrides,
284
+ });
285
+ const event = {
286
+ httpMethod: 'POST',
287
+ path: agent.route ?? '/',
288
+ headers: {
289
+ 'content-type': 'application/json',
290
+ 'authorization': 'Basic ' + Buffer.from(`${agent.basicAuthCreds?.[0] ?? 'user'}:${agent.basicAuthCreds?.[1] ?? 'pass'}`).toString('base64'),
291
+ },
292
+ body: postData,
293
+ };
294
+ const response = await adapter.handleRequest(app, event);
295
+ if (opts.raw || opts.formatJson) {
296
+ try {
297
+ console.log(JSON.stringify(JSON.parse(response.body), null, 2));
298
+ }
299
+ catch {
300
+ console.log(response.body);
301
+ }
302
+ }
303
+ else {
304
+ console.log(`\n--- Serverless Simulation (${platform}) ---`);
305
+ console.log(`Status: ${response.statusCode}`);
306
+ console.log(`Headers: ${JSON.stringify(response.headers, null, 2)}`);
307
+ console.log('Body:');
308
+ try {
309
+ console.log(JSON.stringify(JSON.parse(response.body), null, 2));
310
+ }
311
+ catch {
312
+ console.log(response.body);
313
+ }
314
+ console.log();
315
+ }
316
+ return;
317
+ }
318
+ switch (opts.action) {
319
+ case 'list-tools': {
320
+ const tools = agent.getRegisteredTools();
321
+ if (opts.raw || opts.formatJson) {
322
+ console.log(JSON.stringify(tools, null, 2));
323
+ }
324
+ else {
325
+ if (tools.length === 0) {
326
+ console.log('No tools registered.');
327
+ }
328
+ else {
329
+ console.log(`\nRegistered tools (${tools.length}):\n`);
330
+ for (const tool of tools) {
331
+ console.log(` ${tool.name}`);
332
+ console.log(` Description: ${tool.description}`);
333
+ if (tool.parameters && Object.keys(tool.parameters).length) {
334
+ console.log(` Parameters: ${JSON.stringify(tool.parameters, null, 6).replace(/\n/g, '\n ')}`);
335
+ }
336
+ console.log();
337
+ }
338
+ }
339
+ }
340
+ break;
341
+ }
342
+ case 'dump-swml': {
343
+ const postData = generateFakePostData({
344
+ callType: opts.callType,
345
+ callDirection: opts.callDirection,
346
+ callState: opts.callState,
347
+ callId: opts.callId,
348
+ fromNumber: opts.fromNumber,
349
+ toExtension: opts.toExtension,
350
+ overrides: opts.overrides,
351
+ });
352
+ const swml = agent.renderSwml(postData['call_id']);
353
+ if (opts.raw || opts.formatJson) {
354
+ console.log(JSON.stringify(JSON.parse(swml), null, 2));
355
+ }
356
+ else {
357
+ console.log('\n--- SWML Document ---\n');
358
+ console.log(JSON.stringify(JSON.parse(swml), null, 2));
359
+ console.log();
360
+ }
361
+ break;
362
+ }
363
+ case 'exec': {
364
+ if (!opts.execName) {
365
+ console.error('Error: --exec requires a function name');
366
+ process.exit(1);
367
+ }
368
+ const tool = agent.getTool(opts.execName);
369
+ if (!tool) {
370
+ console.error(`Error: function '${opts.execName}' not found`);
371
+ const available = agent.getRegisteredTools().map((t) => t.name);
372
+ if (available.length) {
373
+ console.error(`Available functions: ${available.join(', ')}`);
374
+ }
375
+ process.exit(1);
376
+ }
377
+ const postData = generateMinimalPostData(opts.execName, opts.args, {
378
+ callId: opts.callId,
379
+ overrides: opts.overrides,
380
+ });
381
+ if (!opts.raw) {
382
+ console.log(`\nExecuting: ${opts.execName}`);
383
+ if (Object.keys(opts.args).length) {
384
+ console.log(`Arguments: ${JSON.stringify(opts.args)}`);
385
+ }
386
+ console.log();
387
+ }
388
+ const result = await tool.execute(opts.args, postData);
389
+ if (opts.raw || opts.formatJson) {
390
+ console.log(JSON.stringify(result, null, 2));
391
+ }
392
+ else {
393
+ console.log('--- Result ---\n');
394
+ console.log(JSON.stringify(result, null, 2));
395
+ console.log();
396
+ }
397
+ break;
398
+ }
399
+ }
400
+ }
401
+ main().catch((err) => {
402
+ console.error(err.message ?? err);
403
+ process.exit(1);
404
+ });
405
+ //# sourceMappingURL=swaig-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swaig-test.js","sourceRoot":"","sources":["../../src/cli/swaig-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * SignalWire AI Agents SDK for TypeScript
3
+ *
4
+ * Build AI voice agents as HTTP microservices that serve SWML documents
5
+ * and handle SWAIG function callbacks.
6
+ */
7
+ export { AgentBase } from './AgentBase.js';
8
+ export { AgentServer } from './AgentServer.js';
9
+ export { SwaigFunctionResult } from './SwaigFunctionResult.js';
10
+ export type { PaymentPrompt, PaymentAction, PaymentParameter } from './SwaigFunctionResult.js';
11
+ export { SwaigFunction } from './SwaigFunction.js';
12
+ export type { SwaigHandler, SwaigFunctionOptions } from './SwaigFunction.js';
13
+ export { DataMap, createSimpleApiTool, createExpressionTool } from './DataMap.js';
14
+ export { PomBuilder, PomSection } from './PomBuilder.js';
15
+ export type { PomSectionData } from './PomBuilder.js';
16
+ export { SwmlBuilder } from './SwmlBuilder.js';
17
+ export { PromptManager } from './PromptManager.js';
18
+ export { ContextBuilder, Context, Step, GatherInfo, GatherQuestion, createSimpleContext, } from './ContextBuilder.js';
19
+ export { SessionManager } from './SessionManager.js';
20
+ export { SslConfig } from './SslConfig.js';
21
+ export type { SslOptions } from './SslConfig.js';
22
+ export { SchemaUtils } from './SchemaUtils.js';
23
+ export type { ValidationResult } from './SchemaUtils.js';
24
+ export { AuthHandler } from './AuthHandler.js';
25
+ export type { AuthConfig } from './AuthHandler.js';
26
+ export { ConfigLoader } from './ConfigLoader.js';
27
+ export { Logger, getLogger, setGlobalLogLevel, suppressAllLogs, setGlobalLogFormat, setGlobalLogColor, resetLoggingConfiguration } from './Logger.js';
28
+ export { ServerlessAdapter } from './ServerlessAdapter.js';
29
+ export type { ServerlessPlatform, ServerlessEvent, ServerlessResponse } from './ServerlessAdapter.js';
30
+ export { SkillBase, SkillManager, SkillRegistry } from './skills/index.js';
31
+ export type { SkillConfig, SkillToolDefinition, SkillPromptSection, SkillManifest, SkillFactory } from './skills/index.js';
32
+ export { registerBuiltinSkills } from './skills/builtin/index.js';
33
+ export { DateTimeSkill, MathSkill, JokeSkill, WeatherApiSkill, PlayBackgroundFileSkill, SwmlTransferSkill, ApiNinjasTriviaSkill, InfoGathererSkill, CustomSkillsSkill, WebSearchSkill, WikipediaSearchSkill, GoogleMapsSkill, DataSphereSkill, DataSphereServerlessSkill, NativeVectorSearchSkill, SpiderSkill, ClaudeSkill, McpGatewaySkill, } from './skills/builtin/index.js';
34
+ export { InfoGathererAgent, SurveyAgent, FAQBotAgent, ConciergeAgent, ReceptionistAgent, } from './prefabs/index.js';
35
+ export type { InfoGathererConfig, SurveyConfig, FAQBotConfig, ConciergeConfig, ReceptionistConfig, } from './prefabs/index.js';
36
+ export type { AgentOptions, LanguageConfig, PronunciationRule, FunctionInclude, DynamicConfigCallback, SummaryCallback, } from './types.js';
package/dist/index.js ADDED
@@ -0,0 +1,44 @@
1
+ /**
2
+ * SignalWire AI Agents SDK for TypeScript
3
+ *
4
+ * Build AI voice agents as HTTP microservices that serve SWML documents
5
+ * and handle SWAIG function callbacks.
6
+ */
7
+ // Core agent
8
+ export { AgentBase } from './AgentBase.js';
9
+ export { AgentServer } from './AgentServer.js';
10
+ // Tool results & functions
11
+ export { SwaigFunctionResult } from './SwaigFunctionResult.js';
12
+ export { SwaigFunction } from './SwaigFunction.js';
13
+ // DataMap (server-side tools)
14
+ export { DataMap, createSimpleApiTool, createExpressionTool } from './DataMap.js';
15
+ // Prompt Object Model
16
+ export { PomBuilder, PomSection } from './PomBuilder.js';
17
+ // SWML builder
18
+ export { SwmlBuilder } from './SwmlBuilder.js';
19
+ // Prompt management
20
+ export { PromptManager } from './PromptManager.js';
21
+ // Contexts & Steps
22
+ export { ContextBuilder, Context, Step, GatherInfo, GatherQuestion, createSimpleContext, } from './ContextBuilder.js';
23
+ // Security
24
+ export { SessionManager } from './SessionManager.js';
25
+ // SSL
26
+ export { SslConfig } from './SslConfig.js';
27
+ // Schema Validation
28
+ export { SchemaUtils } from './SchemaUtils.js';
29
+ // Auth
30
+ export { AuthHandler } from './AuthHandler.js';
31
+ // Config
32
+ export { ConfigLoader } from './ConfigLoader.js';
33
+ // Logging
34
+ export { Logger, getLogger, setGlobalLogLevel, suppressAllLogs, setGlobalLogFormat, setGlobalLogColor, resetLoggingConfiguration } from './Logger.js';
35
+ // Serverless
36
+ export { ServerlessAdapter } from './ServerlessAdapter.js';
37
+ // Skills
38
+ export { SkillBase, SkillManager, SkillRegistry } from './skills/index.js';
39
+ // Built-in Skills
40
+ export { registerBuiltinSkills } from './skills/builtin/index.js';
41
+ export { DateTimeSkill, MathSkill, JokeSkill, WeatherApiSkill, PlayBackgroundFileSkill, SwmlTransferSkill, ApiNinjasTriviaSkill, InfoGathererSkill, CustomSkillsSkill, WebSearchSkill, WikipediaSearchSkill, GoogleMapsSkill, DataSphereSkill, DataSphereServerlessSkill, NativeVectorSearchSkill, SpiderSkill, ClaudeSkill, McpGatewaySkill, } from './skills/builtin/index.js';
42
+ // Prefab Agents
43
+ export { InfoGathererAgent, SurveyAgent, FAQBotAgent, ConciergeAgent, ReceptionistAgent, } from './prefabs/index.js';
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,2BAA2B;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,8BAA8B;AAC9B,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAElF,sBAAsB;AACtB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGzD,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,oBAAoB;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,OAAO,EACP,IAAI,EACJ,UAAU,EACV,cAAc,EACd,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM;AACN,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,oBAAoB;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO;AACP,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,UAAU;AACV,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAEtJ,aAAa;AACb,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,SAAS;AACT,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG3E,kBAAkB;AAClB,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EACL,aAAa,EAAE,SAAS,EAAE,SAAS,EACnC,eAAe,EAAE,uBAAuB,EAAE,iBAAiB,EAC3D,oBAAoB,EAAE,iBAAiB,EAAE,iBAAiB,EAC1D,cAAc,EAAE,oBAAoB,EAAE,eAAe,EACrD,eAAe,EAAE,yBAAyB,EAAE,uBAAuB,EACnE,WAAW,EAAE,WAAW,EAAE,eAAe,GAC1C,MAAM,2BAA2B,CAAC;AAEnC,gBAAgB;AAChB,OAAO,EACL,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAC3C,cAAc,EAAE,iBAAiB,GAClC,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * ConciergeAgent - A prefab agent that provides multi-department routing
3
+ * with a knowledge base of department info, hours, and transfer capabilities.
4
+ */
5
+ import { AgentBase } from '../AgentBase.js';
6
+ import type { AgentOptions } from '../types.js';
7
+ export interface Department {
8
+ /** Department name (e.g. "Sales", "Support"). */
9
+ name: string;
10
+ /** Description of what this department handles. */
11
+ description: string;
12
+ /** Phone number or SIP address for transfers. */
13
+ transferNumber?: string;
14
+ /** Keywords that help route callers to this department. */
15
+ keywords?: string[];
16
+ /** Human-readable hours of operation (e.g. "Mon-Fri 9am-5pm EST"). */
17
+ hoursOfOperation?: string;
18
+ }
19
+ export interface ConciergeConfig {
20
+ /** Agent display name. */
21
+ name?: string;
22
+ /** List of departments available for routing. */
23
+ departments: Department[];
24
+ /** Company name used in greetings and prompts. */
25
+ companyName?: string;
26
+ /** General company information the agent can share. */
27
+ generalInfo?: string;
28
+ /** Message spoken when a department is closed or unavailable. */
29
+ afterHoursMessage?: string;
30
+ /** Additional AgentBase options forwarded to super(). */
31
+ agentOptions?: Partial<AgentOptions>;
32
+ }
33
+ /** Prefab agent that provides multi-department routing with a knowledge base of department info, hours, and transfer capabilities. */
34
+ export declare class ConciergeAgent extends AgentBase {
35
+ private departments;
36
+ private companyName;
37
+ private generalInfo;
38
+ private afterHoursMessage;
39
+ /** Declarative prompt sections merged by AgentBase constructor. */
40
+ static PROMPT_SECTIONS: ({
41
+ title: string;
42
+ body: string;
43
+ bullets?: undefined;
44
+ } | {
45
+ title: string;
46
+ bullets: string[];
47
+ body?: undefined;
48
+ })[];
49
+ /**
50
+ * Create a ConciergeAgent with the specified departments and company info.
51
+ * @param config - Configuration including departments, company name, and after-hours message.
52
+ */
53
+ constructor(config: ConciergeConfig);
54
+ private findDepartment;
55
+ /** Register the list_departments, get_department_info, and transfer_to_department SWAIG tools. */
56
+ protected defineTools(): void;
57
+ }
58
+ /**
59
+ * Factory function that creates and returns a new ConciergeAgent.
60
+ * @param config - Configuration for the concierge agent.
61
+ * @returns A configured ConciergeAgent instance.
62
+ */
63
+ export declare function createConciergeAgent(config: ConciergeConfig): ConciergeAgent;
64
+ export default ConciergeAgent;