@roarkanalytics/sdk 2.4.0 → 2.5.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 +22 -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 +4 -5
  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 +314 -0
  47. package/resources/simulation.d.ts.map +1 -0
  48. package/resources/simulation.js +21 -0
  49. package/resources/simulation.js.map +1 -0
  50. package/resources/simulation.mjs +17 -0
  51. package/resources/simulation.mjs.map +1 -0
  52. package/src/index.ts +21 -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 +390 -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 SimulationGetJobResponse,
26
+ type SimulationGetJobByIDResponse,
27
+ type SimulationGetJobParams,
28
+ } from './simulation';
@@ -0,0 +1,390 @@
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 by looking up the active lease for the given phone numbers
9
+ */
10
+ getJob(
11
+ query: SimulationGetJobParams,
12
+ options?: Core.RequestOptions,
13
+ ): Core.APIPromise<SimulationGetJobResponse> {
14
+ return this._client.get('/v1/simulation/job', { query, ...options });
15
+ }
16
+
17
+ /**
18
+ * Find a simulation job directly by its ID
19
+ */
20
+ getJobById(jobId: unknown, options?: Core.RequestOptions): Core.APIPromise<SimulationGetJobByIDResponse> {
21
+ return this._client.get(`/v1/simulation/jobs/${jobId}`, options);
22
+ }
23
+ }
24
+
25
+ export interface SimulationGetJobResponse {
26
+ /**
27
+ * Simulation job with related entities
28
+ */
29
+ data: SimulationGetJobResponse.Data;
30
+ }
31
+
32
+ export namespace SimulationGetJobResponse {
33
+ /**
34
+ * Simulation job with related entities
35
+ */
36
+ export interface Data {
37
+ /**
38
+ * Agent endpoint used in the simulation
39
+ */
40
+ agentEndpoint: Data.AgentEndpoint;
41
+
42
+ /**
43
+ * When the job was created
44
+ */
45
+ createdAt: string;
46
+
47
+ /**
48
+ * Persona used in the simulation
49
+ */
50
+ persona: Data.Persona;
51
+
52
+ /**
53
+ * Processing status
54
+ */
55
+ processingStatus: string;
56
+
57
+ /**
58
+ * Scenario used in the simulation
59
+ */
60
+ scenario: Data.Scenario;
61
+
62
+ /**
63
+ * Simulation job ID
64
+ */
65
+ simulationJobId: string;
66
+
67
+ /**
68
+ * Job status
69
+ */
70
+ status: string;
71
+
72
+ /**
73
+ * When the job completed
74
+ */
75
+ completedAt?: string | null;
76
+
77
+ /**
78
+ * When the job started
79
+ */
80
+ startedAt?: string | null;
81
+ }
82
+
83
+ export namespace Data {
84
+ /**
85
+ * Agent endpoint used in the simulation
86
+ */
87
+ export interface AgentEndpoint {
88
+ /**
89
+ * Agent endpoint ID
90
+ */
91
+ id: string;
92
+
93
+ /**
94
+ * Agent endpoint type
95
+ */
96
+ endpointType: string;
97
+
98
+ /**
99
+ * Agent endpoint name
100
+ */
101
+ name: string;
102
+
103
+ /**
104
+ * Agent endpoint phone number
105
+ */
106
+ phoneNumber: string | null;
107
+ }
108
+
109
+ /**
110
+ * Persona used in the simulation
111
+ */
112
+ export interface Persona {
113
+ /**
114
+ * Persona ID
115
+ */
116
+ id: string;
117
+
118
+ /**
119
+ * Accent of the persona
120
+ */
121
+ accent: string;
122
+
123
+ /**
124
+ * Background noise setting
125
+ */
126
+ backgroundNoise: string;
127
+
128
+ /**
129
+ * Base emotion of the persona
130
+ */
131
+ baseEmotion: string;
132
+
133
+ /**
134
+ * How the persona confirms information
135
+ */
136
+ confirmationStyle: string;
137
+
138
+ /**
139
+ * Whether persona has speech disfluencies
140
+ */
141
+ disfluencies: boolean;
142
+
143
+ /**
144
+ * Gender of the persona
145
+ */
146
+ gender: string;
147
+
148
+ /**
149
+ * How clearly the persona expresses intent
150
+ */
151
+ intentClarity: string;
152
+
153
+ /**
154
+ * Language of the persona
155
+ */
156
+ language: string;
157
+
158
+ /**
159
+ * Reliability of persona memory
160
+ */
161
+ memoryReliability: string;
162
+
163
+ /**
164
+ * Persona name
165
+ */
166
+ name: string;
167
+
168
+ /**
169
+ * Speech clarity
170
+ */
171
+ speechClarity: string;
172
+
173
+ /**
174
+ * Speech pace
175
+ */
176
+ speechPace: string;
177
+ }
178
+
179
+ /**
180
+ * Scenario used in the simulation
181
+ */
182
+ export interface Scenario {
183
+ /**
184
+ * Scenario ID
185
+ */
186
+ id: string;
187
+
188
+ /**
189
+ * Scenario description
190
+ */
191
+ description?: string | null;
192
+ }
193
+ }
194
+ }
195
+
196
+ export interface SimulationGetJobByIDResponse {
197
+ /**
198
+ * Simulation job with related entities
199
+ */
200
+ data: SimulationGetJobByIDResponse.Data;
201
+ }
202
+
203
+ export namespace SimulationGetJobByIDResponse {
204
+ /**
205
+ * Simulation job with related entities
206
+ */
207
+ export interface Data {
208
+ /**
209
+ * Agent endpoint used in the simulation
210
+ */
211
+ agentEndpoint: Data.AgentEndpoint;
212
+
213
+ /**
214
+ * When the job was created
215
+ */
216
+ createdAt: string;
217
+
218
+ /**
219
+ * Persona used in the simulation
220
+ */
221
+ persona: Data.Persona;
222
+
223
+ /**
224
+ * Processing status
225
+ */
226
+ processingStatus: string;
227
+
228
+ /**
229
+ * Scenario used in the simulation
230
+ */
231
+ scenario: Data.Scenario;
232
+
233
+ /**
234
+ * Simulation job ID
235
+ */
236
+ simulationJobId: string;
237
+
238
+ /**
239
+ * Job status
240
+ */
241
+ status: string;
242
+
243
+ /**
244
+ * When the job completed
245
+ */
246
+ completedAt?: string | null;
247
+
248
+ /**
249
+ * When the job started
250
+ */
251
+ startedAt?: string | null;
252
+ }
253
+
254
+ export namespace Data {
255
+ /**
256
+ * Agent endpoint used in the simulation
257
+ */
258
+ export interface AgentEndpoint {
259
+ /**
260
+ * Agent endpoint ID
261
+ */
262
+ id: string;
263
+
264
+ /**
265
+ * Agent endpoint type
266
+ */
267
+ endpointType: string;
268
+
269
+ /**
270
+ * Agent endpoint name
271
+ */
272
+ name: string;
273
+
274
+ /**
275
+ * Agent endpoint phone number
276
+ */
277
+ phoneNumber: string | null;
278
+ }
279
+
280
+ /**
281
+ * Persona used in the simulation
282
+ */
283
+ export interface Persona {
284
+ /**
285
+ * Persona ID
286
+ */
287
+ id: string;
288
+
289
+ /**
290
+ * Accent of the persona
291
+ */
292
+ accent: string;
293
+
294
+ /**
295
+ * Background noise setting
296
+ */
297
+ backgroundNoise: string;
298
+
299
+ /**
300
+ * Base emotion of the persona
301
+ */
302
+ baseEmotion: string;
303
+
304
+ /**
305
+ * How the persona confirms information
306
+ */
307
+ confirmationStyle: string;
308
+
309
+ /**
310
+ * Whether persona has speech disfluencies
311
+ */
312
+ disfluencies: boolean;
313
+
314
+ /**
315
+ * Gender of the persona
316
+ */
317
+ gender: string;
318
+
319
+ /**
320
+ * How clearly the persona expresses intent
321
+ */
322
+ intentClarity: string;
323
+
324
+ /**
325
+ * Language of the persona
326
+ */
327
+ language: string;
328
+
329
+ /**
330
+ * Reliability of persona memory
331
+ */
332
+ memoryReliability: string;
333
+
334
+ /**
335
+ * Persona name
336
+ */
337
+ name: string;
338
+
339
+ /**
340
+ * Speech clarity
341
+ */
342
+ speechClarity: string;
343
+
344
+ /**
345
+ * Speech pace
346
+ */
347
+ speechPace: string;
348
+ }
349
+
350
+ /**
351
+ * Scenario used in the simulation
352
+ */
353
+ export interface Scenario {
354
+ /**
355
+ * Scenario ID
356
+ */
357
+ id: string;
358
+
359
+ /**
360
+ * Scenario description
361
+ */
362
+ description?: string | null;
363
+ }
364
+ }
365
+ }
366
+
367
+ export interface SimulationGetJobParams {
368
+ /**
369
+ * Customer phone number in E.164 format
370
+ */
371
+ phoneNumber: unknown;
372
+
373
+ /**
374
+ * Roark-assigned phone number in E.164 format
375
+ */
376
+ roarkPhoneNumber: unknown;
377
+
378
+ /**
379
+ * ISO 8601 timestamp to check for active lease (defaults to current time)
380
+ */
381
+ timestamp?: unknown;
382
+ }
383
+
384
+ export declare namespace Simulation {
385
+ export {
386
+ type SimulationGetJobResponse as SimulationGetJobResponse,
387
+ type SimulationGetJobByIDResponse as SimulationGetJobByIDResponse,
388
+ type SimulationGetJobParams as SimulationGetJobParams,
389
+ };
390
+ }
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '2.4.0'; // x-release-please-version
1
+ export const VERSION = '2.5.0'; // x-release-please-version
package/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "2.4.0";
1
+ export declare const VERSION = "2.5.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.0'; // x-release-please-version
4
+ exports.VERSION = '2.5.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.0'; // x-release-please-version
1
+ export const VERSION = '2.5.0'; // x-release-please-version
2
2
  //# sourceMappingURL=version.mjs.map