@roarkanalytics/sdk 2.4.1 → 2.6.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 (65) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/index.d.mts +4 -0
  3. package/index.d.ts +4 -0
  4. package/index.d.ts.map +1 -1
  5. package/index.js +7 -0
  6. package/index.js.map +1 -1
  7. package/index.mjs +7 -0
  8. package/index.mjs.map +1 -1
  9. package/internal/qs/formats.d.ts +6 -0
  10. package/internal/qs/formats.d.ts.map +1 -0
  11. package/internal/qs/formats.js +11 -0
  12. package/internal/qs/formats.js.map +1 -0
  13. package/internal/qs/formats.mjs +8 -0
  14. package/internal/qs/formats.mjs.map +1 -0
  15. package/internal/qs/index.d.ts +10 -0
  16. package/internal/qs/index.d.ts.map +1 -0
  17. package/internal/qs/index.js +14 -0
  18. package/internal/qs/index.js.map +1 -0
  19. package/internal/qs/index.mjs +10 -0
  20. package/internal/qs/index.mjs.map +1 -0
  21. package/internal/qs/stringify.d.ts +3 -0
  22. package/internal/qs/stringify.d.ts.map +1 -0
  23. package/internal/qs/stringify.js +280 -0
  24. package/internal/qs/stringify.js.map +1 -0
  25. package/internal/qs/stringify.mjs +276 -0
  26. package/internal/qs/stringify.mjs.map +1 -0
  27. package/internal/qs/types.d.ts +57 -0
  28. package/internal/qs/types.d.ts.map +1 -0
  29. package/internal/qs/types.js +3 -0
  30. package/internal/qs/types.js.map +1 -0
  31. package/internal/qs/types.mjs +2 -0
  32. package/internal/qs/types.mjs.map +1 -0
  33. package/internal/qs/utils.d.ts +14 -0
  34. package/internal/qs/utils.d.ts.map +1 -0
  35. package/internal/qs/utils.js +229 -0
  36. package/internal/qs/utils.js.map +1 -0
  37. package/internal/qs/utils.mjs +217 -0
  38. package/internal/qs/utils.mjs.map +1 -0
  39. package/package.json +1 -1
  40. package/resources/index.d.ts +1 -0
  41. package/resources/index.d.ts.map +1 -1
  42. package/resources/index.js +3 -1
  43. package/resources/index.js.map +1 -1
  44. package/resources/index.mjs +1 -0
  45. package/resources/index.mjs.map +1 -1
  46. package/resources/simulation.d.ts +328 -0
  47. package/resources/simulation.d.ts.map +1 -0
  48. package/resources/simulation.js +35 -0
  49. package/resources/simulation.js.map +1 -0
  50. package/resources/simulation.mjs +31 -0
  51. package/resources/simulation.mjs.map +1 -0
  52. package/src/index.ts +20 -0
  53. package/src/internal/qs/LICENSE.md +13 -0
  54. package/src/internal/qs/README.md +3 -0
  55. package/src/internal/qs/formats.ts +9 -0
  56. package/src/internal/qs/index.ts +13 -0
  57. package/src/internal/qs/stringify.ts +388 -0
  58. package/src/internal/qs/types.ts +71 -0
  59. package/src/internal/qs/utils.ts +265 -0
  60. package/src/resources/index.ts +6 -0
  61. package/src/resources/simulation.ts +403 -0
  62. package/src/version.ts +1 -1
  63. package/version.d.ts +1 -1
  64. package/version.js +1 -1
  65. package/version.mjs +1 -1
@@ -0,0 +1,265 @@
1
+ import { RFC1738 } from './formats';
2
+ import type { DefaultEncoder, Format } from './types';
3
+
4
+ const has = Object.prototype.hasOwnProperty;
5
+ const is_array = Array.isArray;
6
+
7
+ const hex_table = (() => {
8
+ const array = [];
9
+ for (let i = 0; i < 256; ++i) {
10
+ array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());
11
+ }
12
+
13
+ return array;
14
+ })();
15
+
16
+ function compact_queue<T extends Record<string, any>>(queue: Array<{ obj: T; prop: string }>) {
17
+ while (queue.length > 1) {
18
+ const item = queue.pop();
19
+ if (!item) continue;
20
+
21
+ const obj = item.obj[item.prop];
22
+
23
+ if (is_array(obj)) {
24
+ const compacted: unknown[] = [];
25
+
26
+ for (let j = 0; j < obj.length; ++j) {
27
+ if (typeof obj[j] !== 'undefined') {
28
+ compacted.push(obj[j]);
29
+ }
30
+ }
31
+
32
+ // @ts-ignore
33
+ item.obj[item.prop] = compacted;
34
+ }
35
+ }
36
+ }
37
+
38
+ function array_to_object(source: any[], options: { plainObjects: boolean }) {
39
+ const obj = options && options.plainObjects ? Object.create(null) : {};
40
+ for (let i = 0; i < source.length; ++i) {
41
+ if (typeof source[i] !== 'undefined') {
42
+ obj[i] = source[i];
43
+ }
44
+ }
45
+
46
+ return obj;
47
+ }
48
+
49
+ export function merge(
50
+ target: any,
51
+ source: any,
52
+ options: { plainObjects?: boolean; allowPrototypes?: boolean } = {},
53
+ ) {
54
+ if (!source) {
55
+ return target;
56
+ }
57
+
58
+ if (typeof source !== 'object') {
59
+ if (is_array(target)) {
60
+ target.push(source);
61
+ } else if (target && typeof target === 'object') {
62
+ if (
63
+ (options && (options.plainObjects || options.allowPrototypes)) ||
64
+ !has.call(Object.prototype, source)
65
+ ) {
66
+ target[source] = true;
67
+ }
68
+ } else {
69
+ return [target, source];
70
+ }
71
+
72
+ return target;
73
+ }
74
+
75
+ if (!target || typeof target !== 'object') {
76
+ return [target].concat(source);
77
+ }
78
+
79
+ let mergeTarget = target;
80
+ if (is_array(target) && !is_array(source)) {
81
+ // @ts-ignore
82
+ mergeTarget = array_to_object(target, options);
83
+ }
84
+
85
+ if (is_array(target) && is_array(source)) {
86
+ source.forEach(function (item, i) {
87
+ if (has.call(target, i)) {
88
+ const targetItem = target[i];
89
+ if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {
90
+ target[i] = merge(targetItem, item, options);
91
+ } else {
92
+ target.push(item);
93
+ }
94
+ } else {
95
+ target[i] = item;
96
+ }
97
+ });
98
+ return target;
99
+ }
100
+
101
+ return Object.keys(source).reduce(function (acc, key) {
102
+ const value = source[key];
103
+
104
+ if (has.call(acc, key)) {
105
+ acc[key] = merge(acc[key], value, options);
106
+ } else {
107
+ acc[key] = value;
108
+ }
109
+ return acc;
110
+ }, mergeTarget);
111
+ }
112
+
113
+ export function assign_single_source(target: any, source: any) {
114
+ return Object.keys(source).reduce(function (acc, key) {
115
+ acc[key] = source[key];
116
+ return acc;
117
+ }, target);
118
+ }
119
+
120
+ export function decode(str: string, _: any, charset: string) {
121
+ const strWithoutPlus = str.replace(/\+/g, ' ');
122
+ if (charset === 'iso-8859-1') {
123
+ // unescape never throws, no try...catch needed:
124
+ return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);
125
+ }
126
+ // utf-8
127
+ try {
128
+ return decodeURIComponent(strWithoutPlus);
129
+ } catch (e) {
130
+ return strWithoutPlus;
131
+ }
132
+ }
133
+
134
+ const limit = 1024;
135
+
136
+ export const encode: (
137
+ str: any,
138
+ defaultEncoder: DefaultEncoder,
139
+ charset: string,
140
+ type: 'key' | 'value',
141
+ format: Format,
142
+ ) => string = (str, _defaultEncoder, charset, _kind, format: Format) => {
143
+ // This code was originally written by Brian White for the io.js core querystring library.
144
+ // It has been adapted here for stricter adherence to RFC 3986
145
+ if (str.length === 0) {
146
+ return str;
147
+ }
148
+
149
+ let string = str;
150
+ if (typeof str === 'symbol') {
151
+ string = Symbol.prototype.toString.call(str);
152
+ } else if (typeof str !== 'string') {
153
+ string = String(str);
154
+ }
155
+
156
+ if (charset === 'iso-8859-1') {
157
+ return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {
158
+ return '%26%23' + parseInt($0.slice(2), 16) + '%3B';
159
+ });
160
+ }
161
+
162
+ let out = '';
163
+ for (let j = 0; j < string.length; j += limit) {
164
+ const segment = string.length >= limit ? string.slice(j, j + limit) : string;
165
+ const arr = [];
166
+
167
+ for (let i = 0; i < segment.length; ++i) {
168
+ let c = segment.charCodeAt(i);
169
+ if (
170
+ c === 0x2d || // -
171
+ c === 0x2e || // .
172
+ c === 0x5f || // _
173
+ c === 0x7e || // ~
174
+ (c >= 0x30 && c <= 0x39) || // 0-9
175
+ (c >= 0x41 && c <= 0x5a) || // a-z
176
+ (c >= 0x61 && c <= 0x7a) || // A-Z
177
+ (format === RFC1738 && (c === 0x28 || c === 0x29)) // ( )
178
+ ) {
179
+ arr[arr.length] = segment.charAt(i);
180
+ continue;
181
+ }
182
+
183
+ if (c < 0x80) {
184
+ arr[arr.length] = hex_table[c];
185
+ continue;
186
+ }
187
+
188
+ if (c < 0x800) {
189
+ arr[arr.length] = hex_table[0xc0 | (c >> 6)]! + hex_table[0x80 | (c & 0x3f)];
190
+ continue;
191
+ }
192
+
193
+ if (c < 0xd800 || c >= 0xe000) {
194
+ arr[arr.length] =
195
+ hex_table[0xe0 | (c >> 12)]! + hex_table[0x80 | ((c >> 6) & 0x3f)] + hex_table[0x80 | (c & 0x3f)];
196
+ continue;
197
+ }
198
+
199
+ i += 1;
200
+ c = 0x10000 + (((c & 0x3ff) << 10) | (segment.charCodeAt(i) & 0x3ff));
201
+
202
+ arr[arr.length] =
203
+ hex_table[0xf0 | (c >> 18)]! +
204
+ hex_table[0x80 | ((c >> 12) & 0x3f)] +
205
+ hex_table[0x80 | ((c >> 6) & 0x3f)] +
206
+ hex_table[0x80 | (c & 0x3f)];
207
+ }
208
+
209
+ out += arr.join('');
210
+ }
211
+
212
+ return out;
213
+ };
214
+
215
+ export function compact(value: any) {
216
+ const queue = [{ obj: { o: value }, prop: 'o' }];
217
+ const refs = [];
218
+
219
+ for (let i = 0; i < queue.length; ++i) {
220
+ const item = queue[i];
221
+ // @ts-ignore
222
+ const obj = item.obj[item.prop];
223
+
224
+ const keys = Object.keys(obj);
225
+ for (let j = 0; j < keys.length; ++j) {
226
+ const key = keys[j]!;
227
+ const val = obj[key];
228
+ if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {
229
+ queue.push({ obj: obj, prop: key });
230
+ refs.push(val);
231
+ }
232
+ }
233
+ }
234
+
235
+ compact_queue(queue);
236
+
237
+ return value;
238
+ }
239
+
240
+ export function is_regexp(obj: any) {
241
+ return Object.prototype.toString.call(obj) === '[object RegExp]';
242
+ }
243
+
244
+ export function is_buffer(obj: any) {
245
+ if (!obj || typeof obj !== 'object') {
246
+ return false;
247
+ }
248
+
249
+ return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
250
+ }
251
+
252
+ export function combine(a: any, b: any) {
253
+ return [].concat(a, b);
254
+ }
255
+
256
+ export function maybe_map<T>(val: T[], fn: (v: T) => T) {
257
+ if (is_array(val)) {
258
+ const mapped = [];
259
+ for (let i = 0; i < val.length; i += 1) {
260
+ mapped.push(fn(val[i]!));
261
+ }
262
+ return mapped;
263
+ }
264
+ return fn(val);
265
+ }
@@ -20,3 +20,9 @@ export {
20
20
  type IntegrationCreateRetellCallParams,
21
21
  type IntegrationCreateVapiCallParams,
22
22
  } from './integrations';
23
+ export {
24
+ Simulation,
25
+ type SimulationGetJobByIDResponse,
26
+ type SimulationLookupJobResponse,
27
+ type SimulationLookupJobParams,
28
+ } from './simulation';
@@ -0,0 +1,403 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../resource';
4
+ import * as Core from '../core';
5
+
6
+ export class Simulation extends APIResource {
7
+ /**
8
+ * Find a simulation job directly by its ID
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const response = await client.simulation.getJobById(
13
+ * '7f3e4d2c-8a91-4b5c-9e6f-1a2b3c4d5e6f',
14
+ * );
15
+ * ```
16
+ */
17
+ getJobById(jobId: unknown, options?: Core.RequestOptions): Core.APIPromise<SimulationGetJobByIDResponse> {
18
+ return this._client.get(`/v1/simulation/job/${jobId}`, options);
19
+ }
20
+
21
+ /**
22
+ * Find a simulation job by looking up the active lease for the given phone numbers
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const response = await client.simulation.lookupJob({
27
+ * roarkPhoneNumber: {},
28
+ * });
29
+ * ```
30
+ */
31
+ lookupJob(
32
+ query: SimulationLookupJobParams,
33
+ options?: Core.RequestOptions,
34
+ ): Core.APIPromise<SimulationLookupJobResponse> {
35
+ return this._client.get('/v1/simulation/job/lookup', { query, ...options });
36
+ }
37
+ }
38
+
39
+ export interface SimulationGetJobByIDResponse {
40
+ /**
41
+ * Simulation job with related entities
42
+ */
43
+ data: SimulationGetJobByIDResponse.Data;
44
+ }
45
+
46
+ export namespace SimulationGetJobByIDResponse {
47
+ /**
48
+ * Simulation job with related entities
49
+ */
50
+ export interface Data {
51
+ /**
52
+ * Agent endpoint used in the simulation
53
+ */
54
+ agentEndpoint: Data.AgentEndpoint;
55
+
56
+ /**
57
+ * When the job was created
58
+ */
59
+ createdAt: string;
60
+
61
+ /**
62
+ * Persona used in the simulation
63
+ */
64
+ persona: Data.Persona;
65
+
66
+ /**
67
+ * Processing status
68
+ */
69
+ processingStatus: string;
70
+
71
+ /**
72
+ * Scenario used in the simulation
73
+ */
74
+ scenario: Data.Scenario;
75
+
76
+ /**
77
+ * Simulation job ID
78
+ */
79
+ simulationJobId: string;
80
+
81
+ /**
82
+ * Job status
83
+ */
84
+ status: string;
85
+
86
+ /**
87
+ * When the job completed
88
+ */
89
+ completedAt?: string | null;
90
+
91
+ /**
92
+ * When the job started
93
+ */
94
+ startedAt?: string | null;
95
+ }
96
+
97
+ export namespace Data {
98
+ /**
99
+ * Agent endpoint used in the simulation
100
+ */
101
+ export interface AgentEndpoint {
102
+ /**
103
+ * Agent endpoint ID
104
+ */
105
+ id: string;
106
+
107
+ /**
108
+ * Agent endpoint type
109
+ */
110
+ endpointType: string;
111
+
112
+ /**
113
+ * Agent endpoint name
114
+ */
115
+ name: string;
116
+
117
+ /**
118
+ * Agent endpoint phone number
119
+ */
120
+ phoneNumber: string | null;
121
+ }
122
+
123
+ /**
124
+ * Persona used in the simulation
125
+ */
126
+ export interface Persona {
127
+ /**
128
+ * Persona ID
129
+ */
130
+ id: string;
131
+
132
+ /**
133
+ * Accent of the persona
134
+ */
135
+ accent: string;
136
+
137
+ /**
138
+ * Background noise setting
139
+ */
140
+ backgroundNoise: string;
141
+
142
+ /**
143
+ * Base emotion of the persona
144
+ */
145
+ baseEmotion: string;
146
+
147
+ /**
148
+ * How the persona confirms information
149
+ */
150
+ confirmationStyle: string;
151
+
152
+ /**
153
+ * Whether persona has speech disfluencies
154
+ */
155
+ disfluencies: boolean;
156
+
157
+ /**
158
+ * Gender of the persona
159
+ */
160
+ gender: string;
161
+
162
+ /**
163
+ * How clearly the persona expresses intent
164
+ */
165
+ intentClarity: string;
166
+
167
+ /**
168
+ * Language of the persona
169
+ */
170
+ language: string;
171
+
172
+ /**
173
+ * Reliability of persona memory
174
+ */
175
+ memoryReliability: string;
176
+
177
+ /**
178
+ * Persona name
179
+ */
180
+ name: string;
181
+
182
+ /**
183
+ * Speech clarity
184
+ */
185
+ speechClarity: string;
186
+
187
+ /**
188
+ * Speech pace
189
+ */
190
+ speechPace: string;
191
+ }
192
+
193
+ /**
194
+ * Scenario used in the simulation
195
+ */
196
+ export interface Scenario {
197
+ /**
198
+ * Scenario ID
199
+ */
200
+ id: string;
201
+
202
+ /**
203
+ * Scenario description
204
+ */
205
+ description?: string | null;
206
+ }
207
+ }
208
+ }
209
+
210
+ export interface SimulationLookupJobResponse {
211
+ /**
212
+ * Simulation job with related entities
213
+ */
214
+ data: SimulationLookupJobResponse.Data;
215
+ }
216
+
217
+ export namespace SimulationLookupJobResponse {
218
+ /**
219
+ * Simulation job with related entities
220
+ */
221
+ export interface Data {
222
+ /**
223
+ * Agent endpoint used in the simulation
224
+ */
225
+ agentEndpoint: Data.AgentEndpoint;
226
+
227
+ /**
228
+ * When the job was created
229
+ */
230
+ createdAt: string;
231
+
232
+ /**
233
+ * Persona used in the simulation
234
+ */
235
+ persona: Data.Persona;
236
+
237
+ /**
238
+ * Processing status
239
+ */
240
+ processingStatus: string;
241
+
242
+ /**
243
+ * Scenario used in the simulation
244
+ */
245
+ scenario: Data.Scenario;
246
+
247
+ /**
248
+ * Simulation job ID
249
+ */
250
+ simulationJobId: string;
251
+
252
+ /**
253
+ * Job status
254
+ */
255
+ status: string;
256
+
257
+ /**
258
+ * When the job completed
259
+ */
260
+ completedAt?: string | null;
261
+
262
+ /**
263
+ * When the job started
264
+ */
265
+ startedAt?: string | null;
266
+ }
267
+
268
+ export namespace Data {
269
+ /**
270
+ * Agent endpoint used in the simulation
271
+ */
272
+ export interface AgentEndpoint {
273
+ /**
274
+ * Agent endpoint ID
275
+ */
276
+ id: string;
277
+
278
+ /**
279
+ * Agent endpoint type
280
+ */
281
+ endpointType: string;
282
+
283
+ /**
284
+ * Agent endpoint name
285
+ */
286
+ name: string;
287
+
288
+ /**
289
+ * Agent endpoint phone number
290
+ */
291
+ phoneNumber: string | null;
292
+ }
293
+
294
+ /**
295
+ * Persona used in the simulation
296
+ */
297
+ export interface Persona {
298
+ /**
299
+ * Persona ID
300
+ */
301
+ id: string;
302
+
303
+ /**
304
+ * Accent of the persona
305
+ */
306
+ accent: string;
307
+
308
+ /**
309
+ * Background noise setting
310
+ */
311
+ backgroundNoise: string;
312
+
313
+ /**
314
+ * Base emotion of the persona
315
+ */
316
+ baseEmotion: string;
317
+
318
+ /**
319
+ * How the persona confirms information
320
+ */
321
+ confirmationStyle: string;
322
+
323
+ /**
324
+ * Whether persona has speech disfluencies
325
+ */
326
+ disfluencies: boolean;
327
+
328
+ /**
329
+ * Gender of the persona
330
+ */
331
+ gender: string;
332
+
333
+ /**
334
+ * How clearly the persona expresses intent
335
+ */
336
+ intentClarity: string;
337
+
338
+ /**
339
+ * Language of the persona
340
+ */
341
+ language: string;
342
+
343
+ /**
344
+ * Reliability of persona memory
345
+ */
346
+ memoryReliability: string;
347
+
348
+ /**
349
+ * Persona name
350
+ */
351
+ name: string;
352
+
353
+ /**
354
+ * Speech clarity
355
+ */
356
+ speechClarity: string;
357
+
358
+ /**
359
+ * Speech pace
360
+ */
361
+ speechPace: string;
362
+ }
363
+
364
+ /**
365
+ * Scenario used in the simulation
366
+ */
367
+ export interface Scenario {
368
+ /**
369
+ * Scenario ID
370
+ */
371
+ id: string;
372
+
373
+ /**
374
+ * Scenario description
375
+ */
376
+ description?: string | null;
377
+ }
378
+ }
379
+ }
380
+
381
+ export interface SimulationLookupJobParams {
382
+ /**
383
+ * Phone number provisioned by Roark for the simulation job in E.164 format. In the
384
+ * case of an inbound simulation, this is the number that calls your agent; in the
385
+ * case of an outbound simulation, this is the number you call from your agent.
386
+ */
387
+ roarkPhoneNumber: unknown;
388
+
389
+ /**
390
+ * ISO 8601 timestamp of when the call was received. Alternatively, any time
391
+ * between the start and end of the call is valid. Defaults to the current time,
392
+ * which fetches any jobs that are currently ongoing.
393
+ */
394
+ callReceivedAt?: unknown;
395
+ }
396
+
397
+ export declare namespace Simulation {
398
+ export {
399
+ type SimulationGetJobByIDResponse as SimulationGetJobByIDResponse,
400
+ type SimulationLookupJobResponse as SimulationLookupJobResponse,
401
+ type SimulationLookupJobParams as SimulationLookupJobParams,
402
+ };
403
+ }
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '2.4.1'; // x-release-please-version
1
+ export const VERSION = '2.6.0'; // x-release-please-version
package/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "2.4.1";
1
+ export declare const VERSION = "2.6.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '2.4.1'; // x-release-please-version
4
+ exports.VERSION = '2.6.0'; // x-release-please-version
5
5
  //# sourceMappingURL=version.js.map
package/version.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = '2.4.1'; // x-release-please-version
1
+ export const VERSION = '2.6.0'; // x-release-please-version
2
2
  //# sourceMappingURL=version.mjs.map