@guava-ai/guava-sdk 0.27.1 → 0.29.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/dist/examples/help-desk.js +6 -6
- package/dist/examples/help-desk.js.map +1 -1
- package/dist/src/action-item.d.ts +8 -4
- package/dist/src/action-item.js +22 -3
- package/dist/src/action-item.js.map +1 -1
- package/dist/src/agent.js +1 -5
- package/dist/src/agent.js.map +1 -1
- package/dist/src/call.d.ts +2 -0
- package/dist/src/call.js +7 -0
- package/dist/src/call.js.map +1 -1
- package/dist/src/campaigns.d.ts +79 -0
- package/dist/src/campaigns.js +195 -0
- package/dist/src/campaigns.js.map +1 -0
- package/dist/src/client.d.ts +10 -0
- package/dist/src/client.js +28 -0
- package/dist/src/client.js.map +1 -1
- package/dist/src/commands.d.ts +6 -3
- package/dist/src/health.d.ts +4 -1
- package/dist/src/health.js +14 -2
- package/dist/src/health.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/examples/help-desk.ts +9 -6
- package/package.json +1 -1
- package/src/action-item.ts +28 -5
- package/src/agent.ts +1 -5
- package/src/call.ts +9 -0
- package/src/campaigns.ts +156 -0
- package/src/client.ts +35 -0
- package/src/health.ts +17 -3
- package/src/index.ts +8 -0
- package/src/version.ts +1 -1
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
19
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
20
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
21
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
22
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
23
|
+
var _, done = false;
|
|
24
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
25
|
+
var context = {};
|
|
26
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
27
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
28
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
29
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
30
|
+
if (kind === "accessor") {
|
|
31
|
+
if (result === void 0) continue;
|
|
32
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
33
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
34
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
35
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
36
|
+
}
|
|
37
|
+
else if (_ = accept(result)) {
|
|
38
|
+
if (kind === "field") initializers.unshift(_);
|
|
39
|
+
else descriptor[key] = _;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
43
|
+
done = true;
|
|
44
|
+
};
|
|
45
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
46
|
+
var useValue = arguments.length > 2;
|
|
47
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
48
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
49
|
+
}
|
|
50
|
+
return useValue ? value : void 0;
|
|
51
|
+
};
|
|
52
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
53
|
+
var ownKeys = function(o) {
|
|
54
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
55
|
+
var ar = [];
|
|
56
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
57
|
+
return ar;
|
|
58
|
+
};
|
|
59
|
+
return ownKeys(o);
|
|
60
|
+
};
|
|
61
|
+
return function (mod) {
|
|
62
|
+
if (mod && mod.__esModule) return mod;
|
|
63
|
+
var result = {};
|
|
64
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
65
|
+
__setModuleDefault(result, mod);
|
|
66
|
+
return result;
|
|
67
|
+
};
|
|
68
|
+
})();
|
|
69
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
70
|
+
exports.Campaign = exports.Contact = exports.OutreachModality = void 0;
|
|
71
|
+
const node_util_1 = require("node:util");
|
|
72
|
+
const z = __importStar(require("zod"));
|
|
73
|
+
const utils_ts_1 = require("./utils.js");
|
|
74
|
+
const telemetry_ts_1 = require("./telemetry.js");
|
|
75
|
+
/**
|
|
76
|
+
* Modality used for campaign agentic outreach.
|
|
77
|
+
*
|
|
78
|
+
* Currently only SMS is available.
|
|
79
|
+
*/
|
|
80
|
+
exports.OutreachModality = z.enum(["sms"]);
|
|
81
|
+
/**
|
|
82
|
+
* A contact to upload to a campaign.
|
|
83
|
+
*/
|
|
84
|
+
exports.Contact = z.object({
|
|
85
|
+
/** The contact's phone number in E.164 format (e.g. `"+14155550123"`). */
|
|
86
|
+
phoneNumber: z.e164(),
|
|
87
|
+
/**
|
|
88
|
+
* Arbitrary per-contact data. This is delivered to the agent when the call is
|
|
89
|
+
* initiated and can be read during the call (e.g. via `call.getVariable`).
|
|
90
|
+
*/
|
|
91
|
+
data: z.record(z.string(), z.unknown()).default({}),
|
|
92
|
+
/**
|
|
93
|
+
* Modalities used to reach this contact. When omitted, falls back to the
|
|
94
|
+
* `outreachModalities` passed to {@link Campaign.uploadContacts}.
|
|
95
|
+
*/
|
|
96
|
+
outreachModalities: z.array(exports.OutreachModality).optional(),
|
|
97
|
+
});
|
|
98
|
+
// Wire-format schemas for parsing responses (snake_case, as returned by the API).
|
|
99
|
+
const UploadContactsResultWire = z.object({ created: z.number().int() });
|
|
100
|
+
const CampaignStatusWire = z.object({
|
|
101
|
+
status_counts: z.record(z.string(), z.number()).default({}),
|
|
102
|
+
});
|
|
103
|
+
/**
|
|
104
|
+
* A handle to an existing Guava campaign.
|
|
105
|
+
*
|
|
106
|
+
* Obtain instances via {@link Client.getCampaign} or {@link Client.listCampaigns};
|
|
107
|
+
* do not construct directly. Campaigns are created via the Guava dashboard or CLI.
|
|
108
|
+
*/
|
|
109
|
+
let Campaign = (() => {
|
|
110
|
+
let _classDecorators = [telemetry_ts_1.telemetryClient.trackClass()];
|
|
111
|
+
let _classDescriptor;
|
|
112
|
+
let _classExtraInitializers = [];
|
|
113
|
+
let _classThis;
|
|
114
|
+
var Campaign = class {
|
|
115
|
+
static { _classThis = this; }
|
|
116
|
+
static {
|
|
117
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
118
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
119
|
+
Campaign = _classThis = _classDescriptor.value;
|
|
120
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
121
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
122
|
+
}
|
|
123
|
+
_client;
|
|
124
|
+
_id;
|
|
125
|
+
_code;
|
|
126
|
+
// Snapshot of the name at the time this handle was fetched. Used for
|
|
127
|
+
// display/logging only; identity is keyed off id/code, never name.
|
|
128
|
+
_name;
|
|
129
|
+
constructor(client, id, code, name) {
|
|
130
|
+
this._client = client;
|
|
131
|
+
this._id = id;
|
|
132
|
+
this._code = code;
|
|
133
|
+
this._name = name;
|
|
134
|
+
}
|
|
135
|
+
get id() {
|
|
136
|
+
return this._id;
|
|
137
|
+
}
|
|
138
|
+
get name() {
|
|
139
|
+
return this._name;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Upload contacts to this campaign.
|
|
143
|
+
*
|
|
144
|
+
* @param contacts - The contacts to upload.
|
|
145
|
+
* @param options.allowDuplicates - Insert contacts whose number already
|
|
146
|
+
* exists in the campaign. Defaults to `false`.
|
|
147
|
+
* @param options.acceptedTermsOfService - Confirms you have consent to
|
|
148
|
+
* contact these numbers. Defaults to `false`.
|
|
149
|
+
* @param options.outreachModalities - Default modalities for any contact that
|
|
150
|
+
* doesn't set its own {@link Contact.outreachModalities}.
|
|
151
|
+
* @returns The number of contacts that were inserted.
|
|
152
|
+
*/
|
|
153
|
+
async uploadContacts(contacts, options = {}) {
|
|
154
|
+
const { allowDuplicates = false, acceptedTermsOfService = false, outreachModalities } = options;
|
|
155
|
+
const wireContacts = contacts.map((contact) => {
|
|
156
|
+
const parsed = exports.Contact.parse(contact);
|
|
157
|
+
return {
|
|
158
|
+
phone_number: parsed.phoneNumber,
|
|
159
|
+
data: parsed.data,
|
|
160
|
+
// Per-contact modalities take precedence; fall back to the method-level
|
|
161
|
+
// default, otherwise leave unset (server applies the campaign default).
|
|
162
|
+
outreach_modalities: parsed.outreachModalities ?? outreachModalities ?? null,
|
|
163
|
+
};
|
|
164
|
+
});
|
|
165
|
+
const url = new URL(`v2/campaigns/${this._code}/contacts`, this._client.getHttpBase());
|
|
166
|
+
url.searchParams.set("allow_duplicates", String(allowDuplicates));
|
|
167
|
+
url.searchParams.set("accepted_terms_of_service", String(acceptedTermsOfService));
|
|
168
|
+
const response = await (0, utils_ts_1.fetchOrThrow)(url, {
|
|
169
|
+
method: "POST",
|
|
170
|
+
headers: { ...(await this._client.headers()), "Content-Type": "application/json" },
|
|
171
|
+
body: JSON.stringify({ contacts: wireContacts }),
|
|
172
|
+
});
|
|
173
|
+
const { created } = UploadContactsResultWire.parse(await response.json());
|
|
174
|
+
return { created };
|
|
175
|
+
}
|
|
176
|
+
/** Fetch the current status of this campaign. */
|
|
177
|
+
async getStatus() {
|
|
178
|
+
const url = new URL(`v1/campaigns/${this._id}/status`, this._client.getHttpBase());
|
|
179
|
+
const response = await (0, utils_ts_1.fetchOrThrow)(url, { headers: await this._client.headers() });
|
|
180
|
+
const { status_counts } = CampaignStatusWire.parse(await response.json());
|
|
181
|
+
return { statusCounts: status_counts };
|
|
182
|
+
}
|
|
183
|
+
/** Permanently delete this campaign. */
|
|
184
|
+
async delete() {
|
|
185
|
+
const url = new URL(`v1/campaigns/${this._id}`, this._client.getHttpBase());
|
|
186
|
+
await (0, utils_ts_1.fetchOrThrow)(url, { method: "DELETE", headers: await this._client.headers() });
|
|
187
|
+
}
|
|
188
|
+
[node_util_1.inspect.custom]() {
|
|
189
|
+
return `Campaign { name: '${this._name}', code: '${this._code}' }`;
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
return Campaign = _classThis;
|
|
193
|
+
})();
|
|
194
|
+
exports.Campaign = Campaign;
|
|
195
|
+
//# sourceMappingURL=campaigns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaigns.js","sourceRoot":"","sources":["../../src/campaigns.ts"],"names":[],"mappings":"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"}
|
package/dist/src/client.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type Logger } from "./logging.ts";
|
|
2
2
|
import { SmsMessage } from "./sms.ts";
|
|
3
|
+
import { Campaign } from "./campaigns.ts";
|
|
3
4
|
export interface ClientOptions {
|
|
4
5
|
apiKey?: string;
|
|
5
6
|
baseUrl?: string;
|
|
@@ -26,6 +27,15 @@ export declare class Client {
|
|
|
26
27
|
* @param ttlSec - How long the agent code remains valid, in seconds. Defaults to no expiration.
|
|
27
28
|
*/
|
|
28
29
|
createWebrtcAgent(ttlSec?: number): Promise<string>;
|
|
30
|
+
createSipAgent(): Promise<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Fetch an existing campaign by its code.
|
|
33
|
+
*
|
|
34
|
+
* @param campaignCode - The campaign code (e.g. `gcmp-...`).
|
|
35
|
+
*/
|
|
36
|
+
getCampaign(campaignCode: string): Promise<Campaign>;
|
|
37
|
+
/** List all campaigns in your organization. */
|
|
38
|
+
listCampaigns(): Promise<Campaign[]>;
|
|
29
39
|
listNumbers(): Promise<{
|
|
30
40
|
phoneNumber: string;
|
|
31
41
|
}[]>;
|
package/dist/src/client.js
CHANGED
|
@@ -77,6 +77,7 @@ const node_os_1 = __importDefault(require("node:os"));
|
|
|
77
77
|
const fs = __importStar(require("node:fs"));
|
|
78
78
|
const utils_ts_1 = require("./utils.js");
|
|
79
79
|
const sms_ts_1 = require("./sms.js");
|
|
80
|
+
const campaigns_ts_1 = require("./campaigns.js");
|
|
80
81
|
const telemetry_ts_1 = require("./telemetry.js");
|
|
81
82
|
const auth_ts_1 = require("./auth.js");
|
|
82
83
|
const SDK_NAME = "typescript-sdk";
|
|
@@ -209,6 +210,33 @@ let Client = (() => {
|
|
|
209
210
|
const body = (await response.json());
|
|
210
211
|
return body.webrtc_code;
|
|
211
212
|
}
|
|
213
|
+
async createSipAgent() {
|
|
214
|
+
const url = new URL("v1/sip-agents", this.getHttpBase());
|
|
215
|
+
const response = await (0, utils_ts_1.fetchOrThrow)(url, {
|
|
216
|
+
method: "POST",
|
|
217
|
+
headers: await this.headers(),
|
|
218
|
+
});
|
|
219
|
+
const body = (await response.json());
|
|
220
|
+
return body.sip_code;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Fetch an existing campaign by its code.
|
|
224
|
+
*
|
|
225
|
+
* @param campaignCode - The campaign code (e.g. `gcmp-...`).
|
|
226
|
+
*/
|
|
227
|
+
async getCampaign(campaignCode) {
|
|
228
|
+
const url = new URL(`v1/campaigns/${campaignCode}`, this.getHttpBase());
|
|
229
|
+
const response = await (0, utils_ts_1.fetchOrThrow)(url, { headers: await this.headers() });
|
|
230
|
+
const body = (await response.json());
|
|
231
|
+
return new campaigns_ts_1.Campaign(this, body.id, body.campaign_code, body.name);
|
|
232
|
+
}
|
|
233
|
+
/** List all campaigns in your organization. */
|
|
234
|
+
async listCampaigns() {
|
|
235
|
+
const url = new URL("v1/campaigns", this.getHttpBase());
|
|
236
|
+
const response = await (0, utils_ts_1.fetchOrThrow)(url, { headers: await this.headers() });
|
|
237
|
+
const items = (await response.json());
|
|
238
|
+
return items.map((c) => new campaigns_ts_1.Campaign(this, c.id, c.campaign_code, c.name));
|
|
239
|
+
}
|
|
212
240
|
async listNumbers() {
|
|
213
241
|
const url = new URL("v1/phone-numbers", this.getHttpBase());
|
|
214
242
|
const response = await (0, utils_ts_1.fetchOrThrow)(url, { headers: await this.headers() });
|
package/dist/src/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA6D;AAC7D,6CAA2C;AAC3C,sDAAyB;AACzB,4CAA8B;AAC9B,yCAA6D;AAC7D,qCAAsC;AACtC,iDAAiD;AACjD,uCAOmB;AAEnB,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAUlC,IAAI,WAAW,GAAG,KAAK,CAAC;AAIxB,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,WAAW,GAAG,aAAa,CAAC;IAGrB,MAAM;4BADlB,8BAAe,CAAC,UAAU,EAAE;;;;;;;;YAC7B,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/src/commands.d.ts
CHANGED
|
@@ -28,10 +28,11 @@ export declare const SetTaskCommand: z.ZodObject<{
|
|
|
28
28
|
key: z.ZodString;
|
|
29
29
|
description: z.ZodDefault<z.ZodString>;
|
|
30
30
|
question: z.ZodDefault<z.ZodString>;
|
|
31
|
-
field_type: z.ZodUnion<z.ZodLiteral<"text" | "date" | "integer" | "digit_sequence" | "multiple_choice" | "calendar_slot">[]>;
|
|
31
|
+
field_type: z.ZodUnion<z.ZodLiteral<"text" | "date" | "integer" | "digit_sequence" | "multiple_choice" | "calendar_slot" | "cvv">[]>;
|
|
32
32
|
required: z.ZodDefault<z.ZodBoolean>;
|
|
33
33
|
choices: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
34
34
|
is_search_field: z.ZodDefault<z.ZodBoolean>;
|
|
35
|
+
sensitive: z.ZodDefault<z.ZodBoolean>;
|
|
35
36
|
}, z.core.$strip>, z.ZodObject<{
|
|
36
37
|
item_type: z.ZodLiteral<"say">;
|
|
37
38
|
statement: z.ZodString;
|
|
@@ -190,10 +191,11 @@ export declare const AnyCommand: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
190
191
|
key: z.ZodString;
|
|
191
192
|
description: z.ZodDefault<z.ZodString>;
|
|
192
193
|
question: z.ZodDefault<z.ZodString>;
|
|
193
|
-
field_type: z.ZodUnion<z.ZodLiteral<"text" | "date" | "integer" | "digit_sequence" | "multiple_choice" | "calendar_slot">[]>;
|
|
194
|
+
field_type: z.ZodUnion<z.ZodLiteral<"text" | "date" | "integer" | "digit_sequence" | "multiple_choice" | "calendar_slot" | "cvv">[]>;
|
|
194
195
|
required: z.ZodDefault<z.ZodBoolean>;
|
|
195
196
|
choices: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
196
197
|
is_search_field: z.ZodDefault<z.ZodBoolean>;
|
|
198
|
+
sensitive: z.ZodDefault<z.ZodBoolean>;
|
|
197
199
|
}, z.core.$strip>, z.ZodObject<{
|
|
198
200
|
item_type: z.ZodLiteral<"say">;
|
|
199
201
|
statement: z.ZodString;
|
|
@@ -315,10 +317,11 @@ export declare const InboundTunnelCommand: z.ZodObject<{
|
|
|
315
317
|
key: z.ZodString;
|
|
316
318
|
description: z.ZodDefault<z.ZodString>;
|
|
317
319
|
question: z.ZodDefault<z.ZodString>;
|
|
318
|
-
field_type: z.ZodUnion<z.ZodLiteral<"text" | "date" | "integer" | "digit_sequence" | "multiple_choice" | "calendar_slot">[]>;
|
|
320
|
+
field_type: z.ZodUnion<z.ZodLiteral<"text" | "date" | "integer" | "digit_sequence" | "multiple_choice" | "calendar_slot" | "cvv">[]>;
|
|
319
321
|
required: z.ZodDefault<z.ZodBoolean>;
|
|
320
322
|
choices: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
321
323
|
is_search_field: z.ZodDefault<z.ZodBoolean>;
|
|
324
|
+
sensitive: z.ZodDefault<z.ZodBoolean>;
|
|
322
325
|
}, z.core.$strip>, z.ZodObject<{
|
|
323
326
|
item_type: z.ZodLiteral<"say">;
|
|
324
327
|
statement: z.ZodString;
|
package/dist/src/health.d.ts
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { type Logger } from "./logging.ts";
|
|
2
|
-
export type HealthState = "starting" | "
|
|
2
|
+
export type HealthState = "starting" | "running" | "draining" | "stopped";
|
|
3
3
|
export declare class HealthContext {
|
|
4
4
|
private _state;
|
|
5
5
|
setState(newState: HealthState): void;
|
|
6
6
|
ready(): void;
|
|
7
|
+
draining(): void;
|
|
7
8
|
stopped(): void;
|
|
8
9
|
isLive(): boolean;
|
|
10
|
+
isReady(): boolean;
|
|
9
11
|
}
|
|
10
12
|
export declare class MultiHealthContext {
|
|
11
13
|
private _ctxs;
|
|
12
14
|
createCtx(): HealthContext;
|
|
13
15
|
isLive(): boolean;
|
|
16
|
+
isReady(): boolean;
|
|
14
17
|
}
|
|
15
18
|
export interface HealthServerOptions {
|
|
16
19
|
host?: string;
|
package/dist/src/health.js
CHANGED
|
@@ -10,13 +10,19 @@ class HealthContext {
|
|
|
10
10
|
this._state = newState;
|
|
11
11
|
}
|
|
12
12
|
ready() {
|
|
13
|
-
this.setState("
|
|
13
|
+
this.setState("running");
|
|
14
|
+
}
|
|
15
|
+
draining() {
|
|
16
|
+
this.setState("draining");
|
|
14
17
|
}
|
|
15
18
|
stopped() {
|
|
16
19
|
this.setState("stopped");
|
|
17
20
|
}
|
|
18
21
|
isLive() {
|
|
19
|
-
return this._state
|
|
22
|
+
return this._state !== "stopped";
|
|
23
|
+
}
|
|
24
|
+
isReady() {
|
|
25
|
+
return this._state === "running";
|
|
20
26
|
}
|
|
21
27
|
}
|
|
22
28
|
exports.HealthContext = HealthContext;
|
|
@@ -30,6 +36,9 @@ class MultiHealthContext {
|
|
|
30
36
|
isLive() {
|
|
31
37
|
return this._ctxs.length > 0 && this._ctxs.every((ctx) => ctx.isLive());
|
|
32
38
|
}
|
|
39
|
+
isReady() {
|
|
40
|
+
return this._ctxs.length > 0 && this._ctxs.every((ctx) => ctx.isReady());
|
|
41
|
+
}
|
|
33
42
|
}
|
|
34
43
|
exports.MultiHealthContext = MultiHealthContext;
|
|
35
44
|
class HealthServer {
|
|
@@ -48,6 +57,9 @@ class HealthServer {
|
|
|
48
57
|
if (req.method === "GET" && req.url === "/live") {
|
|
49
58
|
res.statusCode = healthCtx.isLive() ? 200 : 503;
|
|
50
59
|
}
|
|
60
|
+
else if (req.method === "GET" && req.url === "/ready") {
|
|
61
|
+
res.statusCode = healthCtx.isReady() ? 200 : 503;
|
|
62
|
+
}
|
|
51
63
|
else {
|
|
52
64
|
res.statusCode = 404;
|
|
53
65
|
}
|
package/dist/src/health.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/health.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/health.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { Client, type InboundConnection } from "./client.ts";
|
|
2
2
|
export { Runner } from "./runner.ts";
|
|
3
3
|
export type { SmsMessage } from "./sms.ts";
|
|
4
|
+
export { Campaign } from "./campaigns.ts";
|
|
5
|
+
export type { Contact, CampaignStatus, UploadContactsResult, UploadContactsOptions, OutreachModality, } from "./campaigns.ts";
|
|
4
6
|
export { Say, Field } from "./action-item.ts";
|
|
5
7
|
export { Logger, getConsoleLogger, getDefaultLogger } from "./logging.ts";
|
|
6
8
|
export { Agent, CallInfo } from "./agent.ts";
|
package/dist/src/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MockCall = exports.TestSession = exports.DEFAULT_REACH_PERSON_OUTCOMES = exports.Call = exports.Agent = exports.getDefaultLogger = exports.getConsoleLogger = exports.Field = exports.Say = exports.Runner = exports.Client = void 0;
|
|
3
|
+
exports.MockCall = exports.TestSession = exports.DEFAULT_REACH_PERSON_OUTCOMES = exports.Call = exports.Agent = exports.getDefaultLogger = exports.getConsoleLogger = exports.Field = exports.Say = exports.Campaign = exports.Runner = exports.Client = void 0;
|
|
4
4
|
var client_ts_1 = require("./client.js");
|
|
5
5
|
Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return client_ts_1.Client; } });
|
|
6
6
|
var runner_ts_1 = require("./runner.js");
|
|
7
7
|
Object.defineProperty(exports, "Runner", { enumerable: true, get: function () { return runner_ts_1.Runner; } });
|
|
8
|
+
var campaigns_ts_1 = require("./campaigns.js");
|
|
9
|
+
Object.defineProperty(exports, "Campaign", { enumerable: true, get: function () { return campaigns_ts_1.Campaign; } });
|
|
8
10
|
var action_item_ts_1 = require("./action-item.js");
|
|
9
11
|
Object.defineProperty(exports, "Say", { enumerable: true, get: function () { return action_item_ts_1.Say; } });
|
|
10
12
|
Object.defineProperty(exports, "Field", { enumerable: true, get: function () { return action_item_ts_1.Field; } });
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAA6D;AAApD,mGAAA,MAAM,OAAA;AACf,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AAEf,mDAA8C;AAArC,qGAAA,GAAG,OAAA;AAAE,uGAAA,KAAK,OAAA;AACnB,2CAA0E;AAAzD,8GAAA,gBAAgB,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AACnD,uCAA6C;AAApC,iGAAA,KAAK,OAAA;AACd,qCAAgE;AAAvD,+FAAA,IAAI,OAAA;AAAE,wHAAA,6BAA6B,OAAA;AAG5C,mDAAmD;AAA1C,yGAAA,WAAW,OAAA;AACpB,+CAA8C;AAArC,oGAAA,QAAQ,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAA6D;AAApD,mGAAA,MAAM,OAAA;AACf,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AAEf,+CAA0C;AAAjC,wGAAA,QAAQ,OAAA;AAQjB,mDAA8C;AAArC,qGAAA,GAAG,OAAA;AAAE,uGAAA,KAAK,OAAA;AACnB,2CAA0E;AAAzD,8GAAA,gBAAgB,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AACnD,uCAA6C;AAApC,iGAAA,KAAK,OAAA;AACd,qCAAgE;AAAvD,+FAAA,IAAI,OAAA;AAAE,wHAAA,6BAA6B,OAAA;AAG5C,mDAAmD;AAA1C,yGAAA,WAAW,OAAA;AACpB,+CAA8C;AAArC,oGAAA,QAAQ,OAAA"}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "0.
|
|
1
|
+
export declare const SDK_VERSION = "0.29.0";
|
package/dist/src/version.js
CHANGED
package/examples/help-desk.ts
CHANGED
|
@@ -16,12 +16,15 @@ const documentQA = new DocumentQA({
|
|
|
16
16
|
namespace: "clearfield-home-living-qa",
|
|
17
17
|
});
|
|
18
18
|
|
|
19
|
-
const intentRecognizer = new IntentRecognizer(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
const intentRecognizer = new IntentRecognizer({
|
|
20
|
+
sales:
|
|
21
|
+
"New purchases, product availability, pricing, promotions, price matching, store hours, order status, order changes and cancellations",
|
|
22
|
+
"delivery-and-returns":
|
|
23
|
+
"Delivery scheduling and rescheduling, installation, assembly, damaged-on-arrival items, returns, exchanges, refund status, warranty claims and repairs",
|
|
24
|
+
"account-management":
|
|
25
|
+
"Charges, invoices, payment plans, financing, billing disputes, rewards points, membership accounts, bulk and business orders",
|
|
26
|
+
other: "Anything else not listed under another category.",
|
|
27
|
+
});
|
|
25
28
|
|
|
26
29
|
agent.onQuestion(async (_call: guava.Call, question: string) => {
|
|
27
30
|
return await documentQA.ask(question);
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@guava-ai/guava-sdk",
|
|
3
3
|
"description": "The official TypeScript SDK for building Guava voice agents.",
|
|
4
4
|
"homepage": "https://docs.goguava.ai/typescript-sdk/",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.29.0",
|
|
6
6
|
"type": "commonjs",
|
|
7
7
|
"main": "dist/src/index.js",
|
|
8
8
|
"types": "dist/src/index.d.ts",
|
package/src/action-item.ts
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import * as z from "zod";
|
|
2
2
|
|
|
3
3
|
export const FieldItemType = z.union(
|
|
4
|
-
(
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
(
|
|
5
|
+
[
|
|
6
|
+
"text",
|
|
7
|
+
"date",
|
|
8
|
+
"integer",
|
|
9
|
+
"digit_sequence",
|
|
10
|
+
"multiple_choice",
|
|
11
|
+
"calendar_slot",
|
|
12
|
+
"cvv",
|
|
13
|
+
] as const
|
|
14
|
+
).map((val) => z.literal(val)),
|
|
7
15
|
);
|
|
8
16
|
export type FieldItemType = z.input<typeof FieldItemType>;
|
|
9
17
|
|
|
@@ -20,15 +28,27 @@ export const FieldItem = z
|
|
|
20
28
|
choices: z.array(z.string()).default([]),
|
|
21
29
|
choiceGenerator: z.custom<ChoiceGenerator>((val) => typeof val === "function").optional(),
|
|
22
30
|
searchable: z.boolean().default(false),
|
|
31
|
+
sensitive: z.boolean().default(false),
|
|
23
32
|
})
|
|
24
|
-
.
|
|
33
|
+
.superRefine((field, ctx) => {
|
|
34
|
+
const hasChoices = field.choices.length > 0 || field.choiceGenerator !== undefined;
|
|
35
|
+
if (
|
|
36
|
+
hasChoices &&
|
|
37
|
+
field.field_type !== "multiple_choice" &&
|
|
38
|
+
field.field_type !== "calendar_slot"
|
|
39
|
+
) {
|
|
40
|
+
ctx.addIssue({
|
|
41
|
+
code: "custom",
|
|
42
|
+
message: `Field type ${field.field_type} does not support choices attribute.`,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
25
46
|
if (field.field_type === "multiple_choice" && field.choices.length > 10) {
|
|
26
47
|
process.emitWarning(
|
|
27
48
|
"Performance degrades with large number of choices for multiple choice field.",
|
|
28
49
|
"ACTION_ITEM",
|
|
29
50
|
);
|
|
30
51
|
}
|
|
31
|
-
return true;
|
|
32
52
|
});
|
|
33
53
|
export type FieldItem = z.input<typeof FieldItem>;
|
|
34
54
|
|
|
@@ -41,6 +61,7 @@ export const SerializableFieldItem = z.object({
|
|
|
41
61
|
required: z.boolean().default(true),
|
|
42
62
|
choices: z.array(z.string()).default([]),
|
|
43
63
|
is_search_field: z.boolean().default(false),
|
|
64
|
+
sensitive: z.boolean().default(false),
|
|
44
65
|
});
|
|
45
66
|
export type SerializableFieldItem = z.input<typeof SerializableFieldItem>;
|
|
46
67
|
|
|
@@ -70,6 +91,7 @@ export function Field(options: {
|
|
|
70
91
|
choices?: string[];
|
|
71
92
|
choiceGenerator?: ChoiceGenerator;
|
|
72
93
|
searchable?: boolean;
|
|
94
|
+
sensitive?: boolean;
|
|
73
95
|
}): FieldItem {
|
|
74
96
|
return FieldItem.parse({
|
|
75
97
|
item_type: "field",
|
|
@@ -81,6 +103,7 @@ export function Field(options: {
|
|
|
81
103
|
choices: options.choices,
|
|
82
104
|
choiceGenerator: options.choiceGenerator,
|
|
83
105
|
searchable: options.searchable,
|
|
106
|
+
sensitive: options.sensitive,
|
|
84
107
|
});
|
|
85
108
|
}
|
|
86
109
|
|
package/src/agent.ts
CHANGED
|
@@ -900,11 +900,7 @@ Choose "speak" and provide your next utterance, or choose "hangup" if the conver
|
|
|
900
900
|
|
|
901
901
|
async _serveCampaign(healthCtx: HealthContext, campaignCode: string): Promise<void> {
|
|
902
902
|
try {
|
|
903
|
-
const
|
|
904
|
-
const campaignResponse = await fetchOrThrow(campaignUrl, {
|
|
905
|
-
headers: await this._client.headers(),
|
|
906
|
-
});
|
|
907
|
-
const campaign = (await campaignResponse.json()) as { id: string; name: string };
|
|
903
|
+
const campaign = await this._client.getCampaign(campaignCode);
|
|
908
904
|
|
|
909
905
|
const wsUrl = new URL(`v1/serve-campaign/${campaign.id}`, this._client.getWebsocketBase());
|
|
910
906
|
this._logger.info("Connecting to campaign '%s' (id: %s).", campaign.name, campaign.id);
|
package/src/call.ts
CHANGED
|
@@ -404,4 +404,13 @@ TASK COMPLETION REQUIREMENTS:
|
|
|
404
404
|
async getVariable(variableName: string) {
|
|
405
405
|
return this._variables[variableName] ?? null;
|
|
406
406
|
}
|
|
407
|
+
|
|
408
|
+
// Aliases for setVariable / getVariable, matching the Python SDK.
|
|
409
|
+
async setVar(variableName: string, variableValue: any) {
|
|
410
|
+
return this.setVariable(variableName, variableValue);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
async getVar(variableName: string) {
|
|
414
|
+
return this.getVariable(variableName);
|
|
415
|
+
}
|
|
407
416
|
}
|