nexus-ai-pro 1.2.1 → 1.3.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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,16 @@ Notable changes to this project are recorded here. The format follows [Keep a Ch
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ### Added
8
+
9
+ - SMS routing on `updatePhoneNumber`. `UpdatePhoneNumberRequest` now carries `smsUrl`, `smsMethod`,
10
+ `smsFallbackUrl`, and `smsFallbackMethod`, and the Twilio provider maps them to `SmsUrl`,
11
+ `SmsMethod`, `SmsFallbackUrl`, and `SmsFallbackMethod`. Only the voice leg could be repointed
12
+ before, so an application holding SMS-enabled numbers had to drop to the provider SDK to say where
13
+ inbound messages should be delivered.
14
+ - `TelephonyPhoneNumber` reports the number's current `smsUrl`, `smsMethod`, `smsFallbackUrl`, and
15
+ `smsFallbackMethod`, so message routing can be verified the same way voice routing already is.
16
+
7
17
  ## [1.2.1] - 2026-08-10
8
18
 
9
19
  ### Fixed
@@ -158,6 +158,14 @@ export class TwilioTelephonyProvider {
158
158
  body.set('StatusCallback', request.statusCallbackUrl);
159
159
  if (request.statusCallbackMethod !== undefined)
160
160
  body.set('StatusCallbackMethod', request.statusCallbackMethod);
161
+ if (request.smsUrl !== undefined)
162
+ body.set('SmsUrl', request.smsUrl);
163
+ if (request.smsMethod !== undefined)
164
+ body.set('SmsMethod', request.smsMethod);
165
+ if (request.smsFallbackUrl !== undefined)
166
+ body.set('SmsFallbackUrl', request.smsFallbackUrl);
167
+ if (request.smsFallbackMethod !== undefined)
168
+ body.set('SmsFallbackMethod', request.smsFallbackMethod);
161
169
  if (!body.size) {
162
170
  throw new TelephonyProviderError('Twilio phone number update requires at least one field to change', 'twilio');
163
171
  }
@@ -296,6 +304,10 @@ export class TwilioTelephonyProvider {
296
304
  voiceMethod: normalizeHttpMethod(stringValue(raw.voice_method)),
297
305
  statusCallbackUrl: stringValue(raw.status_callback),
298
306
  statusCallbackMethod: normalizeHttpMethod(stringValue(raw.status_callback_method)),
307
+ smsUrl: stringValue(raw.sms_url),
308
+ smsMethod: normalizeHttpMethod(stringValue(raw.sms_method)),
309
+ smsFallbackUrl: stringValue(raw.sms_fallback_url),
310
+ smsFallbackMethod: normalizeHttpMethod(stringValue(raw.sms_fallback_method)),
299
311
  capabilities: {
300
312
  voice: capabilities.voice === true,
301
313
  sms: capabilities.sms === true,
@@ -139,6 +139,11 @@ export interface TelephonyPhoneNumber {
139
139
  voiceMethod?: TelephonyHttpMethod;
140
140
  statusCallbackUrl?: string;
141
141
  statusCallbackMethod?: TelephonyHttpMethod;
142
+ /** Where the provider currently posts inbound SMS for this number. */
143
+ smsUrl?: string;
144
+ smsMethod?: TelephonyHttpMethod;
145
+ smsFallbackUrl?: string;
146
+ smsFallbackMethod?: TelephonyHttpMethod;
142
147
  capabilities?: {
143
148
  voice?: boolean;
144
149
  sms?: boolean;
@@ -160,8 +165,20 @@ export interface UpdatePhoneNumberRequest {
160
165
  friendlyName?: string;
161
166
  voiceUrl?: string;
162
167
  voiceMethod?: TelephonyHttpMethod;
168
+ /**
169
+ * Where the provider posts call status events.
170
+ *
171
+ * This covers the voice leg only. Message delivery receipts are requested per message when
172
+ * sending, rather than being configured on the number.
173
+ */
163
174
  statusCallbackUrl?: string;
164
175
  statusCallbackMethod?: TelephonyHttpMethod;
176
+ /** Where the provider posts inbound SMS sent to this number. */
177
+ smsUrl?: string;
178
+ smsMethod?: TelephonyHttpMethod;
179
+ /** Used by the provider when {@link smsUrl} errors or times out. */
180
+ smsFallbackUrl?: string;
181
+ smsFallbackMethod?: TelephonyHttpMethod;
165
182
  signal?: AbortSignal;
166
183
  }
167
184
  export interface TelephonyWebhookValidationRequest {
@@ -161,6 +161,14 @@ class TwilioTelephonyProvider {
161
161
  body.set('StatusCallback', request.statusCallbackUrl);
162
162
  if (request.statusCallbackMethod !== undefined)
163
163
  body.set('StatusCallbackMethod', request.statusCallbackMethod);
164
+ if (request.smsUrl !== undefined)
165
+ body.set('SmsUrl', request.smsUrl);
166
+ if (request.smsMethod !== undefined)
167
+ body.set('SmsMethod', request.smsMethod);
168
+ if (request.smsFallbackUrl !== undefined)
169
+ body.set('SmsFallbackUrl', request.smsFallbackUrl);
170
+ if (request.smsFallbackMethod !== undefined)
171
+ body.set('SmsFallbackMethod', request.smsFallbackMethod);
164
172
  if (!body.size) {
165
173
  throw new errors_js_1.TelephonyProviderError('Twilio phone number update requires at least one field to change', 'twilio');
166
174
  }
@@ -299,6 +307,10 @@ class TwilioTelephonyProvider {
299
307
  voiceMethod: normalizeHttpMethod(stringValue(raw.voice_method)),
300
308
  statusCallbackUrl: stringValue(raw.status_callback),
301
309
  statusCallbackMethod: normalizeHttpMethod(stringValue(raw.status_callback_method)),
310
+ smsUrl: stringValue(raw.sms_url),
311
+ smsMethod: normalizeHttpMethod(stringValue(raw.sms_method)),
312
+ smsFallbackUrl: stringValue(raw.sms_fallback_url),
313
+ smsFallbackMethod: normalizeHttpMethod(stringValue(raw.sms_fallback_method)),
302
314
  capabilities: {
303
315
  voice: capabilities.voice === true,
304
316
  sms: capabilities.sms === true,
@@ -139,6 +139,11 @@ export interface TelephonyPhoneNumber {
139
139
  voiceMethod?: TelephonyHttpMethod;
140
140
  statusCallbackUrl?: string;
141
141
  statusCallbackMethod?: TelephonyHttpMethod;
142
+ /** Where the provider currently posts inbound SMS for this number. */
143
+ smsUrl?: string;
144
+ smsMethod?: TelephonyHttpMethod;
145
+ smsFallbackUrl?: string;
146
+ smsFallbackMethod?: TelephonyHttpMethod;
142
147
  capabilities?: {
143
148
  voice?: boolean;
144
149
  sms?: boolean;
@@ -160,8 +165,20 @@ export interface UpdatePhoneNumberRequest {
160
165
  friendlyName?: string;
161
166
  voiceUrl?: string;
162
167
  voiceMethod?: TelephonyHttpMethod;
168
+ /**
169
+ * Where the provider posts call status events.
170
+ *
171
+ * This covers the voice leg only. Message delivery receipts are requested per message when
172
+ * sending, rather than being configured on the number.
173
+ */
163
174
  statusCallbackUrl?: string;
164
175
  statusCallbackMethod?: TelephonyHttpMethod;
176
+ /** Where the provider posts inbound SMS sent to this number. */
177
+ smsUrl?: string;
178
+ smsMethod?: TelephonyHttpMethod;
179
+ /** Used by the provider when {@link smsUrl} errors or times out. */
180
+ smsFallbackUrl?: string;
181
+ smsFallbackMethod?: TelephonyHttpMethod;
165
182
  signal?: AbortSignal;
166
183
  }
167
184
  export interface TelephonyWebhookValidationRequest {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexus-ai-pro",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
4
4
  "description": "A typed multi-provider AI pipeline for Node.js with routing, streaming, tools, and guardrails",
5
5
  "type": "module",
6
6
  "main": "dist-cjs/index.js",