@spekoai/sdk 0.2.1 → 0.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 +13 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/client.d.ts +4 -0
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +6 -0
- package/dist/lib/http.d.ts +1 -0
- package/dist/lib/http.d.ts.map +1 -1
- package/dist/lib/http.js +3 -0
- package/dist/lib/resources/phone-numbers.d.ts +49 -0
- package/dist/lib/resources/phone-numbers.d.ts.map +1 -0
- package/dist/lib/resources/phone-numbers.js +66 -0
- package/dist/lib/resources/voice.d.ts +29 -0
- package/dist/lib/resources/voice.d.ts.map +1 -0
- package/dist/lib/resources/voice.js +30 -0
- package/dist/lib/types/index.d.ts +112 -1
- package/dist/lib/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
## 0.3.0 (2026-05-02)
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- **adapter-livekit:** wire tool calls through /v1/complete ([#105](https://github.com/SpekoAI/platform/pull/105))
|
|
6
|
+
- **dashboard:** /phone-numbers page — buy + edit + release US numbers ([ec3d541](https://github.com/SpekoAI/platform/commit/ec3d541))
|
|
7
|
+
- **telephony:** Telnyx outbound + inbound + phone number CRUD ([c5cc1f0](https://github.com/SpekoAI/platform/commit/c5cc1f0))
|
|
8
|
+
|
|
9
|
+
### ❤️ Thank You
|
|
10
|
+
|
|
11
|
+
- Baymurat785 @Baymurat785
|
|
12
|
+
- Claude Opus 4.7 (1M context)
|
|
13
|
+
|
|
1
14
|
# Changelog
|
|
2
15
|
|
|
3
16
|
All notable changes to `@spekoai/sdk` will be documented in this file.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { Speko } from './lib/client.js';
|
|
2
2
|
export { SpekoApiError, SpekoAuthError, SpekoRateLimitError } from './lib/errors.js';
|
|
3
|
-
export type { SpekoClientOptions, KeySource, UsageSummary, UsageByProvider, UsageQueryParams, OrganizationBalance, CreditLedgerEntry, CreditLedgerKind, CreditLedgerPage, CreditLedgerQueryParams, OptimizeFor, RoutingIntent, PipelineConstraints, TranscribeOptions, TranscribeResult, SynthesizeOptions, SynthesizeResult, ChatMessage, CompleteParams, CompleteResult, RealtimeProvider, RealtimeToolSpec, RealtimeConnectParams, RealtimeFrame, RealtimeEventHandler, RealtimeSessionHandle, } from './lib/types/index.js';
|
|
3
|
+
export type { SpekoClientOptions, KeySource, UsageSummary, UsageByProvider, UsageQueryParams, OrganizationBalance, CreditLedgerEntry, CreditLedgerKind, CreditLedgerPage, CreditLedgerQueryParams, OptimizeFor, RoutingIntent, PipelineConstraints, TranscribeOptions, TranscribeResult, SynthesizeOptions, SynthesizeResult, ChatMessage, ChatTool, ChatToolCall, ChatToolChoice, CompleteParams, CompleteResult, RealtimeProvider, RealtimeToolSpec, RealtimeConnectParams, RealtimeFrame, RealtimeEventHandler, RealtimeSessionHandle, VoiceDialParams, VoiceDialResult, PhoneNumberDirection, PhoneNumberRow, PhoneNumberCreateParams, PhoneNumberUpdateParams, AvailablePhoneNumber, PhoneNumberSearchParams, } from './lib/types/index.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACrF,YAAY,EACV,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACrF,YAAY,EACV,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC"}
|
package/dist/lib/client.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import type { CompleteParams, CompleteResult, SpekoClientOptions, SynthesizeOpti
|
|
|
2
2
|
import { Usage } from './resources/usage.js';
|
|
3
3
|
import { Credits } from './resources/credits.js';
|
|
4
4
|
import { Realtime } from './resources/realtime.js';
|
|
5
|
+
import { Voice } from './resources/voice.js';
|
|
6
|
+
import { PhoneNumbers } from './resources/phone-numbers.js';
|
|
5
7
|
/**
|
|
6
8
|
* Speko client — one API, every voice provider.
|
|
7
9
|
*
|
|
@@ -20,6 +22,8 @@ export declare class Speko {
|
|
|
20
22
|
readonly usage: Usage;
|
|
21
23
|
readonly credits: Credits;
|
|
22
24
|
readonly realtime: Realtime;
|
|
25
|
+
readonly voice: Voice;
|
|
26
|
+
readonly phoneNumbers: PhoneNumbers;
|
|
23
27
|
private readonly transcribeResource;
|
|
24
28
|
private readonly synthesizeResource;
|
|
25
29
|
private readonly completeResource;
|
package/dist/lib/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAIjD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAIjD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAK5D;;;;;;;;;;;;;GAaG;AACH,qBAAa,KAAK;IAChB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAEpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAa;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAW;gBAEhC,OAAO,EAAE,kBAAkB;IAuBvC;;;;;;OAMG;IACH,UAAU,CACR,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,iBAAiB,EAC1B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,gBAAgB,CAAC;IAI5B;;;;OAIG;IACH,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,EAC1B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,gBAAgB,CAAC;IAI5B;;;OAGG;IACH,QAAQ,CACN,MAAM,EAAE,cAAc,EACtB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,cAAc,CAAC;CAG3B"}
|
package/dist/lib/client.js
CHANGED
|
@@ -5,6 +5,8 @@ import { Transcribe } from './resources/transcribe.js';
|
|
|
5
5
|
import { Synthesize } from './resources/synthesize.js';
|
|
6
6
|
import { Complete } from './resources/complete.js';
|
|
7
7
|
import { Realtime } from './resources/realtime.js';
|
|
8
|
+
import { Voice } from './resources/voice.js';
|
|
9
|
+
import { PhoneNumbers } from './resources/phone-numbers.js';
|
|
8
10
|
const DEFAULT_BASE_URL = 'https://api.speko.ai';
|
|
9
11
|
const DEFAULT_TIMEOUT = 30_000;
|
|
10
12
|
/**
|
|
@@ -25,6 +27,8 @@ export class Speko {
|
|
|
25
27
|
usage;
|
|
26
28
|
credits;
|
|
27
29
|
realtime;
|
|
30
|
+
voice;
|
|
31
|
+
phoneNumbers;
|
|
28
32
|
transcribeResource;
|
|
29
33
|
synthesizeResource;
|
|
30
34
|
completeResource;
|
|
@@ -40,6 +44,8 @@ export class Speko {
|
|
|
40
44
|
this.usage = new Usage(http);
|
|
41
45
|
this.credits = new Credits(http);
|
|
42
46
|
this.realtime = new Realtime(http);
|
|
47
|
+
this.voice = new Voice(http);
|
|
48
|
+
this.phoneNumbers = new PhoneNumbers(http);
|
|
43
49
|
this.transcribeResource = new Transcribe(http);
|
|
44
50
|
this.synthesizeResource = new Synthesize(http);
|
|
45
51
|
this.completeResource = new Complete(http);
|
package/dist/lib/http.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export declare class HttpClient {
|
|
|
13
13
|
get<T>(path: string, externalSignal?: AbortSignal): Promise<T>;
|
|
14
14
|
post<T>(path: string, body: unknown, externalSignal?: AbortSignal): Promise<T>;
|
|
15
15
|
delete<T>(path: string, externalSignal?: AbortSignal): Promise<T>;
|
|
16
|
+
patch<T>(path: string, body: unknown, externalSignal?: AbortSignal): Promise<T>;
|
|
16
17
|
/**
|
|
17
18
|
* Send raw bytes as the request body and parse a JSON response.
|
|
18
19
|
* Used by `speko.transcribe()` to upload audio and receive a transcript.
|
package/dist/lib/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,iBAAiB;IAWhC,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,cAAc,CAAC,EAAE,WAAW,GAC3B,OAAO,CAAC,CAAC,CAAC;IAsBP,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAI9D,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,cAAc,CAAC,EAAE,WAAW,GAC3B,OAAO,CAAC,CAAC,CAAC;IAIP,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/lib/http.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,iBAAiB;IAWhC,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,cAAc,CAAC,EAAE,WAAW,GAC3B,OAAO,CAAC,CAAC,CAAC;IAsBP,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAI9D,IAAI,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,cAAc,CAAC,EAAE,WAAW,GAC3B,OAAO,CAAC,CAAC,CAAC;IAIP,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjE,KAAK,CAAC,CAAC,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,cAAc,CAAC,EAAE,WAAW,GAC3B,OAAO,CAAC,CAAC,CAAC;IAIb;;;OAGG;IACG,UAAU,CAAC,CAAC,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,UAAU,EACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,cAAc,CAAC,EAAE,WAAW,GAC3B,OAAO,CAAC,CAAC,CAAC;IA4Bb;;;;OAIG;IACG,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,cAAc,CAAC,EAAE,WAAW,GAC3B,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IA4BlE;;;;OAIG;IACH,OAAO,CAAC,WAAW;YA6BL,WAAW;CA4B1B"}
|
package/dist/lib/http.js
CHANGED
|
@@ -43,6 +43,9 @@ export class HttpClient {
|
|
|
43
43
|
async delete(path, externalSignal) {
|
|
44
44
|
return this.request('DELETE', path, undefined, externalSignal);
|
|
45
45
|
}
|
|
46
|
+
async patch(path, body, externalSignal) {
|
|
47
|
+
return this.request('PATCH', path, body, externalSignal);
|
|
48
|
+
}
|
|
46
49
|
/**
|
|
47
50
|
* Send raw bytes as the request body and parse a JSON response.
|
|
48
51
|
* Used by `speko.transcribe()` to upload audio and receive a transcript.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { HttpClient } from '../http.js';
|
|
2
|
+
import type { AvailablePhoneNumber, PhoneNumberCreateParams, PhoneNumberRow, PhoneNumberSearchParams, PhoneNumberUpdateParams } from '../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Phone numbers Speko has provisioned (or imported) on Telnyx for your
|
|
5
|
+
* organization. Each number can be used for outbound dialing and/or
|
|
6
|
+
* inbound, and carries an optional metadata template that's merged into
|
|
7
|
+
* the worker dispatch payload when the number is used.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* // List org's numbers
|
|
12
|
+
* const numbers = await speko.phoneNumbers.list();
|
|
13
|
+
*
|
|
14
|
+
* // Provision a new US local number
|
|
15
|
+
* const num = await speko.phoneNumbers.create({
|
|
16
|
+
* e164: '+12015551234',
|
|
17
|
+
* direction: 'both',
|
|
18
|
+
* label: 'Sales line',
|
|
19
|
+
* dispatchMetadataTemplate: {
|
|
20
|
+
* intent: { language: 'en', optimizeFor: 'latency' },
|
|
21
|
+
* systemPrompt: 'You are a helpful sales agent for Acme.',
|
|
22
|
+
* },
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class PhoneNumbers {
|
|
27
|
+
private readonly http;
|
|
28
|
+
constructor(http: HttpClient);
|
|
29
|
+
list(): Promise<PhoneNumberRow[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Search Telnyx's pool for orderable US numbers. Filter by area code
|
|
32
|
+
* and/or locality. Results include cost so you can preview "$1 upfront +
|
|
33
|
+
* $1/month" before committing to {@link create}.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* const candidates = await speko.phoneNumbers.searchAvailable({ areaCode: '415' });
|
|
38
|
+
* console.log(candidates[0].friendlyName); // "+1 (415) 555-0123"
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
searchAvailable(params?: PhoneNumberSearchParams): Promise<AvailablePhoneNumber[]>;
|
|
42
|
+
get(id: string): Promise<PhoneNumberRow>;
|
|
43
|
+
create(params: PhoneNumberCreateParams): Promise<PhoneNumberRow>;
|
|
44
|
+
update(id: string, params: PhoneNumberUpdateParams): Promise<PhoneNumberRow>;
|
|
45
|
+
delete(id: string): Promise<{
|
|
46
|
+
released: boolean;
|
|
47
|
+
}>;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=phone-numbers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone-numbers.d.ts","sourceRoot":"","sources":["../../../src/lib/resources/phone-numbers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIjC;;;;;;;;;;OAUG;IACH,eAAe,CACb,MAAM,GAAE,uBAA4B,GACnC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAWlC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAMxC,MAAM,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,cAAc,CAAC;IAIhE,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,cAAc,CAAC;IAO1B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;CAKnD"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phone numbers Speko has provisioned (or imported) on Telnyx for your
|
|
3
|
+
* organization. Each number can be used for outbound dialing and/or
|
|
4
|
+
* inbound, and carries an optional metadata template that's merged into
|
|
5
|
+
* the worker dispatch payload when the number is used.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* // List org's numbers
|
|
10
|
+
* const numbers = await speko.phoneNumbers.list();
|
|
11
|
+
*
|
|
12
|
+
* // Provision a new US local number
|
|
13
|
+
* const num = await speko.phoneNumbers.create({
|
|
14
|
+
* e164: '+12015551234',
|
|
15
|
+
* direction: 'both',
|
|
16
|
+
* label: 'Sales line',
|
|
17
|
+
* dispatchMetadataTemplate: {
|
|
18
|
+
* intent: { language: 'en', optimizeFor: 'latency' },
|
|
19
|
+
* systemPrompt: 'You are a helpful sales agent for Acme.',
|
|
20
|
+
* },
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export class PhoneNumbers {
|
|
25
|
+
http;
|
|
26
|
+
constructor(http) {
|
|
27
|
+
this.http = http;
|
|
28
|
+
}
|
|
29
|
+
list() {
|
|
30
|
+
return this.http.get('/v1/phone-numbers');
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Search Telnyx's pool for orderable US numbers. Filter by area code
|
|
34
|
+
* and/or locality. Results include cost so you can preview "$1 upfront +
|
|
35
|
+
* $1/month" before committing to {@link create}.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const candidates = await speko.phoneNumbers.searchAvailable({ areaCode: '415' });
|
|
40
|
+
* console.log(candidates[0].friendlyName); // "+1 (415) 555-0123"
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
searchAvailable(params = {}) {
|
|
44
|
+
const query = new URLSearchParams();
|
|
45
|
+
if (params.areaCode)
|
|
46
|
+
query.set('areaCode', params.areaCode);
|
|
47
|
+
if (params.locality)
|
|
48
|
+
query.set('locality', params.locality);
|
|
49
|
+
if (params.limit !== undefined)
|
|
50
|
+
query.set('limit', String(params.limit));
|
|
51
|
+
const qs = query.toString();
|
|
52
|
+
return this.http.get(`/v1/phone-numbers/available${qs ? `?${qs}` : ''}`);
|
|
53
|
+
}
|
|
54
|
+
get(id) {
|
|
55
|
+
return this.http.get(`/v1/phone-numbers/${encodeURIComponent(id)}`);
|
|
56
|
+
}
|
|
57
|
+
create(params) {
|
|
58
|
+
return this.http.post('/v1/phone-numbers', params);
|
|
59
|
+
}
|
|
60
|
+
update(id, params) {
|
|
61
|
+
return this.http.patch(`/v1/phone-numbers/${encodeURIComponent(id)}`, params);
|
|
62
|
+
}
|
|
63
|
+
delete(id) {
|
|
64
|
+
return this.http.delete(`/v1/phone-numbers/${encodeURIComponent(id)}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { HttpClient } from '../http.js';
|
|
2
|
+
import type { VoiceDialParams, VoiceDialResult } from '../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Outbound phone calls via Speko's Telnyx-backed gateway.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* const { sessionId, status } = await speko.voice.dial({
|
|
9
|
+
* to: '+12015551234',
|
|
10
|
+
* intent: { language: 'en', optimizeFor: 'latency' },
|
|
11
|
+
* systemPrompt: 'You are a helpful Speko assistant. Greet the caller in English.',
|
|
12
|
+
* });
|
|
13
|
+
* console.log('dialing:', sessionId, status);
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare class Voice {
|
|
17
|
+
private readonly http;
|
|
18
|
+
constructor(http: HttpClient);
|
|
19
|
+
/**
|
|
20
|
+
* Place an outbound call. The destination's phone rings; once they pick
|
|
21
|
+
* up, audio bridges to a Speko worker running the configured pipeline
|
|
22
|
+
* (STT→LLM→TTS) on a LiveKit room.
|
|
23
|
+
*
|
|
24
|
+
* Lifecycle is observable via Telnyx webhooks (which Speko handles
|
|
25
|
+
* server-side) and reflected in the `voice_session` row's `status`.
|
|
26
|
+
*/
|
|
27
|
+
dial(params: VoiceDialParams): Promise<VoiceDialResult>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=voice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../../src/lib/resources/voice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,qBAAa,KAAK;IACJ,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C;;;;;;;OAOG;IACG,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;CAG9D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outbound phone calls via Speko's Telnyx-backed gateway.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* const { sessionId, status } = await speko.voice.dial({
|
|
7
|
+
* to: '+12015551234',
|
|
8
|
+
* intent: { language: 'en', optimizeFor: 'latency' },
|
|
9
|
+
* systemPrompt: 'You are a helpful Speko assistant. Greet the caller in English.',
|
|
10
|
+
* });
|
|
11
|
+
* console.log('dialing:', sessionId, status);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export class Voice {
|
|
15
|
+
http;
|
|
16
|
+
constructor(http) {
|
|
17
|
+
this.http = http;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Place an outbound call. The destination's phone rings; once they pick
|
|
21
|
+
* up, audio bridges to a Speko worker running the configured pipeline
|
|
22
|
+
* (STT→LLM→TTS) on a LiveKit room.
|
|
23
|
+
*
|
|
24
|
+
* Lifecycle is observable via Telnyx webhooks (which Speko handles
|
|
25
|
+
* server-side) and reflected in the `voice_session` row's `status`.
|
|
26
|
+
*/
|
|
27
|
+
async dial(params) {
|
|
28
|
+
return this.http.post('/v1/sessions/phone', params);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -116,10 +116,40 @@ export interface SynthesizeResult {
|
|
|
116
116
|
failoverCount: number;
|
|
117
117
|
scoresRunId: string | null;
|
|
118
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* One LLM-emitted tool invocation. `args` is a JSON-encoded string (LLMs may
|
|
121
|
+
* stream partial JSON; the proxy guarantees a complete, parseable string).
|
|
122
|
+
*/
|
|
123
|
+
export interface ChatToolCall {
|
|
124
|
+
id: string;
|
|
125
|
+
name: string;
|
|
126
|
+
args: string;
|
|
127
|
+
}
|
|
119
128
|
export interface ChatMessage {
|
|
120
|
-
role: 'system' | 'user' | 'assistant';
|
|
129
|
+
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
121
130
|
content: string;
|
|
131
|
+
/** Present on `role: 'assistant'` when the model invoked one or more tools. */
|
|
132
|
+
toolCalls?: ChatToolCall[];
|
|
133
|
+
/** Required on `role: 'tool'` — pairs with the `id` from a prior assistant `toolCalls[]`. */
|
|
134
|
+
toolCallId?: string;
|
|
122
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Tool definition exposed to the LLM. `parameters` is a JSON Schema (draft-7)
|
|
138
|
+
* object — typically generated from a Zod schema via
|
|
139
|
+
* `llm.toJsonSchema()` from `@livekit/agents`.
|
|
140
|
+
*/
|
|
141
|
+
export interface ChatTool {
|
|
142
|
+
name: string;
|
|
143
|
+
description: string;
|
|
144
|
+
parameters: Record<string, unknown>;
|
|
145
|
+
}
|
|
146
|
+
/** Mirrors LiveKit's `ToolChoice` for parity with the agents framework. */
|
|
147
|
+
export type ChatToolChoice = 'auto' | 'none' | 'required' | {
|
|
148
|
+
type: 'function';
|
|
149
|
+
function: {
|
|
150
|
+
name: string;
|
|
151
|
+
};
|
|
152
|
+
};
|
|
123
153
|
export interface CompleteParams {
|
|
124
154
|
messages: ChatMessage[];
|
|
125
155
|
intent: RoutingIntent;
|
|
@@ -127,6 +157,9 @@ export interface CompleteParams {
|
|
|
127
157
|
temperature?: number;
|
|
128
158
|
maxTokens?: number;
|
|
129
159
|
constraints?: PipelineConstraints;
|
|
160
|
+
tools?: ChatTool[];
|
|
161
|
+
toolChoice?: ChatToolChoice;
|
|
162
|
+
parallelToolCalls?: boolean;
|
|
130
163
|
}
|
|
131
164
|
export interface CompleteResult {
|
|
132
165
|
text: string;
|
|
@@ -138,6 +171,8 @@ export interface CompleteResult {
|
|
|
138
171
|
};
|
|
139
172
|
failoverCount: number;
|
|
140
173
|
scoresRunId: string | null;
|
|
174
|
+
/** Present when the LLM invoked tools instead of (or in addition to) emitting text. */
|
|
175
|
+
toolCalls?: ChatToolCall[];
|
|
141
176
|
}
|
|
142
177
|
export type RealtimeProvider = 'openai' | 'google' | 'xai';
|
|
143
178
|
export interface RealtimeToolSpec {
|
|
@@ -206,4 +241,80 @@ export interface RealtimeSessionHandle {
|
|
|
206
241
|
/** Close the session. Safe to call multiple times. */
|
|
207
242
|
close(code?: number, reason?: string): void;
|
|
208
243
|
}
|
|
244
|
+
export interface VoiceDialParams {
|
|
245
|
+
/** Destination number in E.164 format (e.g. "+12015551234"). */
|
|
246
|
+
to: string;
|
|
247
|
+
/** Caller ID. Falls back to the org default if omitted server-side. */
|
|
248
|
+
from?: string;
|
|
249
|
+
/** Routing intent — language is required, optimizeFor optional. */
|
|
250
|
+
intent: RoutingIntent;
|
|
251
|
+
constraints?: PipelineConstraints;
|
|
252
|
+
/** TTS voice id passed through to the picked TTS provider. */
|
|
253
|
+
voice?: string;
|
|
254
|
+
/** Agent system prompt. */
|
|
255
|
+
systemPrompt?: string;
|
|
256
|
+
llm?: {
|
|
257
|
+
temperature?: number;
|
|
258
|
+
maxTokens?: number;
|
|
259
|
+
};
|
|
260
|
+
ttsOptions?: {
|
|
261
|
+
sampleRate?: number;
|
|
262
|
+
speed?: number;
|
|
263
|
+
};
|
|
264
|
+
/** Free-form metadata round-tripped to your webhooks. */
|
|
265
|
+
metadata?: Record<string, unknown>;
|
|
266
|
+
}
|
|
267
|
+
export interface VoiceDialResult {
|
|
268
|
+
sessionId: string;
|
|
269
|
+
callControlId: string;
|
|
270
|
+
roomName: string;
|
|
271
|
+
/** 'dialing' on a real call, 'dialing-stub' if Telnyx isn't configured. */
|
|
272
|
+
status: 'dialing' | 'dialing-stub';
|
|
273
|
+
to: string;
|
|
274
|
+
from: string;
|
|
275
|
+
}
|
|
276
|
+
export type PhoneNumberDirection = 'inbound' | 'outbound' | 'both';
|
|
277
|
+
export interface PhoneNumberRow {
|
|
278
|
+
id: string;
|
|
279
|
+
organizationId: string;
|
|
280
|
+
e164: string;
|
|
281
|
+
telnyxPhoneNumberId: string | null;
|
|
282
|
+
direction: PhoneNumberDirection;
|
|
283
|
+
dispatchMetadataTemplate: Record<string, unknown> | null;
|
|
284
|
+
label: string | null;
|
|
285
|
+
createdAt: string;
|
|
286
|
+
updatedAt: string;
|
|
287
|
+
}
|
|
288
|
+
export interface PhoneNumberCreateParams {
|
|
289
|
+
e164: string;
|
|
290
|
+
direction?: PhoneNumberDirection;
|
|
291
|
+
/** LiveKit dispatch metadata template (variables `{{var}}` resolved at dial). */
|
|
292
|
+
dispatchMetadataTemplate?: Record<string, unknown>;
|
|
293
|
+
label?: string;
|
|
294
|
+
}
|
|
295
|
+
export interface PhoneNumberUpdateParams {
|
|
296
|
+
direction?: PhoneNumberDirection;
|
|
297
|
+
dispatchMetadataTemplate?: Record<string, unknown>;
|
|
298
|
+
label?: string;
|
|
299
|
+
}
|
|
300
|
+
export interface AvailablePhoneNumber {
|
|
301
|
+
e164: string;
|
|
302
|
+
friendlyName: string;
|
|
303
|
+
monthlyCostUsd: number;
|
|
304
|
+
upfrontCostUsd: number;
|
|
305
|
+
features: string[];
|
|
306
|
+
region: {
|
|
307
|
+
state: string | null;
|
|
308
|
+
locality: string | null;
|
|
309
|
+
rateCenter: string | null;
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
export interface PhoneNumberSearchParams {
|
|
313
|
+
/** 3-digit US area code, e.g. "415". */
|
|
314
|
+
areaCode?: string;
|
|
315
|
+
/** Optional locality filter, e.g. "San Francisco". */
|
|
316
|
+
locality?: string;
|
|
317
|
+
/** Max results — Telnyx caps at 50. Default 10. */
|
|
318
|
+
limit?: number;
|
|
319
|
+
}
|
|
209
320
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/types/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/types/index.ts"],"names":[],"mappings":"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"}
|