@guava-ai/guava-sdk 0.1.0 → 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/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # Guava Typescript SDK
2
+
3
+ You will need two environment variables to use the SDK.
4
+
5
+ ```bash
6
+ export GUAVA_API_KEY="..."
7
+ export GUAVA_AGENT_NUMBER="..."
8
+ ```
9
+
10
+ Once those environment variables are set, you can run the examples.
11
+
12
+ ```bash
13
+ npx -- @guava-ai/guava-sdk property-insurance +15556667777
14
+ ```
15
+
16
+ or e.g.
17
+ ```bash
18
+ npx -- @guava-ai/guava-sdk thai-palace
19
+ ```
@@ -0,0 +1 @@
1
+ export declare function run(_args: string[]): void;
@@ -0,0 +1,162 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { IntentRecognizer } from "../src/helpers/openai.js";
11
+ import * as guava from "../src/index.js";
12
+ const CUSTOMER_DB = [
13
+ {
14
+ name: "John Smith",
15
+ ssn: "123456789",
16
+ unactivated_cards: {
17
+ "6011002980139424": 567,
18
+ },
19
+ },
20
+ ];
21
+ function findCustomerBySSN(ssn) {
22
+ return CUSTOMER_DB.find((c) => c.ssn == ssn);
23
+ }
24
+ const ORGANIZATION_NAME = "Harper Valley Bank";
25
+ class CreditCardActivationController extends guava.CallController {
26
+ constructor(logger) {
27
+ super(logger);
28
+ this.choices = ["activate credit card", "anything else"];
29
+ this.intentRecognizer = new IntentRecognizer(this.choices, logger);
30
+ this.setPersona({
31
+ organizationName: ORGANIZATION_NAME,
32
+ agentPurpose: `You are a customer service voice agent that activates credit cards for customers of ${ORGANIZATION_NAME}.`,
33
+ });
34
+ this.readScript(`Hello, thank you for calling the credit card activation line for ${ORGANIZATION_NAME}. My name is Grace. Are you here to activate your credit card?`);
35
+ this.acceptCall();
36
+ }
37
+ onIntent(intent) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ const choice = yield this.intentRecognizer.classify(intent);
40
+ this.logger.info(`Chosen intent: ${choice}`);
41
+ if (choice == "activate credit card") {
42
+ yield this.activateCreditCard();
43
+ return null;
44
+ }
45
+ else {
46
+ return "Unfortunately I'm not able to help with that.";
47
+ }
48
+ });
49
+ }
50
+ findCustomer() {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ let customer;
53
+ let cardNumber;
54
+ while (true) {
55
+ yield this.awaitTask({
56
+ checklist: [
57
+ {
58
+ item_type: "field",
59
+ description: "Could you give me your social security number?",
60
+ key: "social_security_number",
61
+ field_type: "integer",
62
+ required: true,
63
+ },
64
+ ],
65
+ });
66
+ const ssn_data = this.getField("social_security_number");
67
+ let ssn;
68
+ if (typeof ssn_data == "string") {
69
+ ssn = ssn_data;
70
+ }
71
+ else {
72
+ // Should we assume all payloads are strings? or leave room by returning unknown
73
+ ssn = JSON.stringify(ssn_data);
74
+ }
75
+ customer = findCustomerBySSN(ssn);
76
+ if (!customer) {
77
+ this.sendInstruction("We were unable to identify the customer using the SSN they provided. Let the caller know this, and ask if they have the correct social security number.");
78
+ }
79
+ else {
80
+ yield this.awaitTask({
81
+ objective: "We were able to identify the customer using the Social Security Number they have provided. We're going to confirm the client's name.",
82
+ checklist: [
83
+ {
84
+ item_type: "field",
85
+ description: `We're going to confirm the client's name. Am I speaking with ${customer.name}?`,
86
+ key: "is_client",
87
+ field_type: "multiple_choice",
88
+ choices: ["yes", "no"],
89
+ required: true,
90
+ },
91
+ ],
92
+ });
93
+ if (this.getField("is_client") == "no") {
94
+ this.sendInstruction("We were unable to identify the client's name in our files. Let the caller know this, and re-ask their social security number.");
95
+ }
96
+ else {
97
+ break;
98
+ }
99
+ }
100
+ }
101
+ this.sendInstruction("We were able to find the client's name in our files. Proceed to ask for their card number.");
102
+ while (true) {
103
+ yield this.awaitTask({
104
+ checklist: [
105
+ {
106
+ item_type: "field",
107
+ field_type: "integer",
108
+ description: "Could you read me the digits on the front of your credit card?",
109
+ key: "credit_card_number",
110
+ required: true,
111
+ },
112
+ ],
113
+ });
114
+ cardNumber = this.getField("credit_card_number");
115
+ if (!(cardNumber in customer.unactivated_cards)) {
116
+ this.sendInstruction("We were unable to find the matching card number in our system. Let the caller know this, and re-ask for the credit card number.");
117
+ }
118
+ else {
119
+ this.sendInstruction("We were able to find the matching card number in our system. Let the caller know this, and ask for security code on their card.");
120
+ break;
121
+ }
122
+ }
123
+ const correctCvv = customer.unactivated_cards[cardNumber];
124
+ while (true) {
125
+ yield this.awaitTask({
126
+ checklist: [
127
+ {
128
+ item_type: "field",
129
+ field_type: "integer",
130
+ key: "security_code",
131
+ description: "To wrap up, could I get the security code on your card?",
132
+ required: true,
133
+ },
134
+ ],
135
+ });
136
+ const security_code = this.getField("security_code");
137
+ if (security_code != correctCvv.toString()) {
138
+ this.sendInstruction("We were unable to match the security code to the credit card. Let the caller know this and re-ask for the security code.");
139
+ }
140
+ else {
141
+ break;
142
+ }
143
+ }
144
+ this.hangup("Explain to the caller that their credit card has now been activated. Thank them for using the bank's services, and hang up.");
145
+ });
146
+ }
147
+ activateCreditCard() {
148
+ return __awaiter(this, void 0, void 0, function* () {
149
+ this.sendInstruction("We are starting the credit card activation process, which starts with asking the caller for their social security number.");
150
+ yield this.findCustomer();
151
+ });
152
+ }
153
+ }
154
+ export function run(_args) {
155
+ const conn = new guava.Client().listenInbound({
156
+ agent_number: process.env.GUAVA_AGENT_NUMBER,
157
+ }, (logger) => new CreditCardActivationController(logger));
158
+ }
159
+ if (import.meta.main) {
160
+ run([]);
161
+ }
162
+ //# sourceMappingURL=credit-card-activation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credit-card-activation.js","sourceRoot":"","sources":["../../examples/credit-card-activation.ts"],"names":[],"mappings":"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"}
@@ -17,8 +17,12 @@ class InsuranceCallController extends guava.CallController {
17
17
  }
18
18
  onCallStart() {
19
19
  return __awaiter(this, void 0, void 0, function* () {
20
- yield this.setPersona("Harper Valley Property Insurance");
21
- yield this.setTask("You are making an outbound call to a potential customer. Your task is to answer questions regarding property insurance policy until there are no more questions.");
20
+ yield this.setPersona({
21
+ organizationName: "Harper Valley Property Insurance",
22
+ });
23
+ this.setTask({
24
+ objective: "You are making an outbound call to a potential customer. Your task is to answer questions regarding property insurance policy until there are no more questions.",
25
+ });
22
26
  });
23
27
  }
24
28
  onQuestion(question) {
@@ -1 +1 @@
1
- {"version":3,"file":"property-insurance.js","sourceRoot":"","sources":["../../examples/property-insurance.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAItD,OAAO,EAAC,yBAAyB,EAAC,MAAM,wBAAwB,CAAC;AAEjE,MAAM,uBAAwB,SAAQ,KAAK,CAAC,cAAc;IAExD,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAC9B,kCAAkC,EAClC,yBAAyB,EACzB,MAAM,CACP,CAAC;IACJ,CAAC;IACc,WAAW;;YACxB,MAAM,IAAI,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,OAAO,CAChB,kKAAkK,CACnK,CAAC;QACJ,CAAC;KAAA;IAEc,UAAU,CAAC,QAAgB;;YACxC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;KAAA;CACF;AAED,MAAM,UAAU,GAAG,CAAC,IAAc;IAChC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAErB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,cAAc,CAC/B,OAAO,CAAC,GAAG,CAAC,kBAAmB,EAC/B,KAAK,EACL,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAChD,CAAC;AACJ,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"property-insurance.js","sourceRoot":"","sources":["../../examples/property-insurance.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAItD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,uBAAwB,SAAQ,KAAK,CAAC,cAAc;IAExD,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAC9B,kCAAkC,EAClC,yBAAyB,EACzB,MAAM,CACP,CAAC;IACJ,CAAC;IAEc,WAAW;;YACxB,MAAM,IAAI,CAAC,UAAU,CAAC;gBACpB,gBAAgB,EAAE,kCAAkC;aACrD,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC;gBACX,SAAS,EACP,kKAAkK;aACrK,CAAC,CAAC;QACL,CAAC;KAAA;IAEc,UAAU,CAAC,QAAgB;;YACxC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;KAAA;CACF;AAED,MAAM,UAAU,GAAG,CAAC,IAAc;IAChC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAErB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,cAAc,CAC/B,OAAO,CAAC,GAAG,CAAC,kBAAmB,EAC/B,KAAK,EACL,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAChD,CAAC;AACJ,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function run(_args: string[]): void;
@@ -0,0 +1,79 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import * as guava from "../src/index.js";
11
+ import { getConsoleLogger } from "../src/logging.js";
12
+ import { IntentRecognizer } from "../src/helpers/openai.js";
13
+ class ThaiPalaceCallController extends guava.CallController {
14
+ constructor(logger) {
15
+ super(logger);
16
+ this.choices = ["restaurant waitlist", "anything else"];
17
+ this.intentRecognizer = new IntentRecognizer(this.choices, logger);
18
+ this.setPersona({
19
+ organizationName: "Thai Palace",
20
+ });
21
+ }
22
+ onIncomingCall(from_number) {
23
+ const _super = Object.create(null, {
24
+ onIncomingCall: { get: () => super.onIncomingCall }
25
+ });
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ yield _super.onIncomingCall.call(this, from_number);
28
+ this.acceptCall();
29
+ this.setThaiPalaceTask();
30
+ });
31
+ }
32
+ setThaiPalaceTask() {
33
+ this.setTask({
34
+ objective: `You are a virtual assistant for a restaurant called Thai Palace.
35
+ Your job is to add callers to the waitlist.`,
36
+ checklist: [
37
+ {
38
+ item_type: "field",
39
+ key: "caller_name",
40
+ field_type: "text",
41
+ description: "The name to be added to the waitlist",
42
+ },
43
+ {
44
+ item_type: "field",
45
+ key: "party_size",
46
+ field_type: "integer",
47
+ description: "The number of people attending",
48
+ },
49
+ {
50
+ item_type: "field",
51
+ key: "phone_number",
52
+ field_type: "text",
53
+ description: "phone number to text when table is ready",
54
+ },
55
+ "Read the phone number back to the caller to make sure you got it right",
56
+ ],
57
+ }, () => this.hangup());
58
+ }
59
+ onIntent(intent) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ const choice = yield this.intentRecognizer.classify(intent);
62
+ this.logger.info(`Chosen intent: ${choice}`);
63
+ if (choice == "restaurant waitlist") {
64
+ this.setThaiPalaceTask();
65
+ return null;
66
+ }
67
+ else {
68
+ return "Tell them we only handle waitlist additions at this number.";
69
+ }
70
+ });
71
+ }
72
+ }
73
+ export function run(_args) {
74
+ new guava.Client().listenInbound({ agent_number: process.env.GUAVA_AGENT_NUMBER }, (logger) => new ThaiPalaceCallController(getConsoleLogger("debug")));
75
+ }
76
+ if (import.meta.main) {
77
+ run([]);
78
+ }
79
+ //# sourceMappingURL=thai-palace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thai-palace.js","sourceRoot":"","sources":["../../examples/thai-palace.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAe,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,wBAAyB,SAAQ,KAAK,CAAC,cAAc;IAGzD,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC;QAHR,YAAO,GAAG,CAAC,qBAAqB,EAAE,eAAe,CAAU,CAAC;QAIlE,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,CAAC;YACd,gBAAgB,EAAE,aAAa;SAChC,CAAC,CAAC;IACL,CAAC;IAEc,cAAc,CAAC,WAAoB;;;;;YAChD,MAAM,OAAM,cAAc,YAAC,WAAW,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;KAAA;IAED,iBAAiB;QACf,IAAI,CAAC,OAAO,CACV;YACE,SAAS,EAAE;6CAC0B;YACrC,SAAS,EAAE;gBACT;oBACE,SAAS,EAAE,OAAO;oBAClB,GAAG,EAAE,aAAa;oBAClB,UAAU,EAAE,MAAM;oBAClB,WAAW,EAAE,sCAAsC;iBACpD;gBACD;oBACE,SAAS,EAAE,OAAO;oBAClB,GAAG,EAAE,YAAY;oBACjB,UAAU,EAAE,SAAS;oBACrB,WAAW,EAAE,gCAAgC;iBAC9C;gBACD;oBACE,SAAS,EAAE,OAAO;oBAClB,GAAG,EAAE,cAAc;oBACnB,UAAU,EAAE,MAAM;oBAClB,WAAW,EAAE,0CAA0C;iBACxD;gBACD,wEAAwE;aACzE;SACF,EACD,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CACpB,CAAC;IACJ,CAAC;IAEc,QAAQ,CAAC,MAAc;;YACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;YAC7C,IAAI,MAAM,IAAI,qBAAqB,EAAE,CAAC;gBACpC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,6DAA6D,CAAC;YACvE,CAAC;QACH,CAAC;KAAA;CACF;AAED,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,aAAa,CAC9B,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAmB,EAAE,EACjD,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,wBAAwB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CACpE,CAAC;AACJ,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,GAAG,CAAC,EAAE,CAAC,CAAC;AACV,CAAC"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guava-ai/guava-sdk",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -7,7 +7,7 @@ export declare const fieldItem: z.ZodObject<{
7
7
  description: z.ZodString;
8
8
  field_type: z.ZodUnion<z.ZodLiteral<"text" | "integer" | "date" | "datetime" | "multiple_choice">[]>;
9
9
  required: z.ZodDefault<z.ZodBoolean>;
10
- choices: z.ZodArray<z.ZodString>;
10
+ choices: z.ZodDefault<z.ZodArray<z.ZodString>>;
11
11
  }, z.core.$strip>;
12
12
  export type Field = z.input<typeof fieldItem>;
13
13
  export declare const sayItem: z.ZodObject<{
@@ -28,7 +28,7 @@ export declare const actionItem: z.ZodUnion<readonly [z.ZodObject<{
28
28
  description: z.ZodString;
29
29
  field_type: z.ZodUnion<z.ZodLiteral<"text" | "integer" | "date" | "datetime" | "multiple_choice">[]>;
30
30
  required: z.ZodDefault<z.ZodBoolean>;
31
- choices: z.ZodArray<z.ZodString>;
31
+ choices: z.ZodDefault<z.ZodArray<z.ZodString>>;
32
32
  }, z.core.$strip>, z.ZodObject<{
33
33
  item_type: z.ZodLiteral<"say">;
34
34
  statement: z.ZodString;
@@ -7,7 +7,7 @@ export const fieldItem = z
7
7
  description: z.string(),
8
8
  field_type: fieldItemType,
9
9
  required: z.boolean().default(true),
10
- choices: z.array(z.string()),
10
+ choices: z.array(z.string()).default([]),
11
11
  })
12
12
  .refine((field) => {
13
13
  if (field.field_type == "multiple_choice" && field.choices.length > 10) {
@@ -1 +1 @@
1
- {"version":3,"file":"action_item.js","sourceRoot":"","sources":["../../src/action_item.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CACjC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,CAAW,CAAC,GAAG,CACvE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CACxB,CACF,CAAC;AAGF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC7B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC7B,CAAC;KACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;IAChB,IAAI,KAAK,CAAC,UAAU,IAAI,iBAAiB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACvE,OAAO,CAAC,WAAW,CAAC,8EAA8E,EAAE,aAAa,CAAC,CAAA;IACpH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC,CAAC;AAGL,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1E,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1E,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"action_item.js","sourceRoot":"","sources":["../../src/action_item.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CACjC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,CAAW,CAAC,GAAG,CACvE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CACxB,CACF,CAAC;AAGF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC7B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACzC,CAAC;KACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;IAChB,IAAI,KAAK,CAAC,UAAU,IAAI,iBAAiB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACvE,OAAO,CAAC,WAAW,CACjB,8EAA8E,EAC9E,aAAa,CACd,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC,CAAC;AAGL,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1E,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1E,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC"}
@@ -7,8 +7,8 @@ export declare const startOutboundCallCommand: z.ZodObject<{
7
7
  export type StartOutboundCallCommand = z.input<typeof startOutboundCallCommand>;
8
8
  export declare const listenInboundCommand: z.ZodObject<{
9
9
  command_type: z.ZodLiteral<"listen-inbound">;
10
- agent_number: z.ZodOptional<z.ZodE164>;
11
- webrtc_code: z.ZodOptional<z.ZodString>;
10
+ agent_number: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodE164>>>;
11
+ webrtc_code: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
12
12
  }, z.core.$strict>;
13
13
  export type ListenInboundCommand = z.input<typeof listenInboundCommand>;
14
14
  export declare const rejectInboundCallCommand: z.ZodObject<{
@@ -29,7 +29,7 @@ export declare const setTaskCommand: z.ZodObject<{
29
29
  description: z.ZodString;
30
30
  field_type: z.ZodUnion<z.ZodLiteral<"text" | "integer" | "date" | "datetime" | "multiple_choice">[]>;
31
31
  required: z.ZodDefault<z.ZodBoolean>;
32
- choices: z.ZodArray<z.ZodString>;
32
+ choices: z.ZodDefault<z.ZodArray<z.ZodString>>;
33
33
  }, z.core.$strip>, z.ZodObject<{
34
34
  item_type: z.ZodLiteral<"say">;
35
35
  statement: z.ZodString;
@@ -76,8 +76,8 @@ export declare const anyCommand: z.ZodUnion<readonly [z.ZodObject<{
76
76
  to_number: z.ZodE164;
77
77
  }, z.core.$strict>, z.ZodObject<{
78
78
  command_type: z.ZodLiteral<"listen-inbound">;
79
- agent_number: z.ZodOptional<z.ZodE164>;
80
- webrtc_code: z.ZodOptional<z.ZodString>;
79
+ agent_number: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodE164>>>;
80
+ webrtc_code: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
81
81
  }, z.core.$strict>, z.ZodObject<{
82
82
  command_type: z.ZodLiteral<"reject-inbound">;
83
83
  }, z.core.$strict>, z.ZodObject<{
@@ -92,7 +92,7 @@ export declare const anyCommand: z.ZodUnion<readonly [z.ZodObject<{
92
92
  description: z.ZodString;
93
93
  field_type: z.ZodUnion<z.ZodLiteral<"text" | "integer" | "date" | "datetime" | "multiple_choice">[]>;
94
94
  required: z.ZodDefault<z.ZodBoolean>;
95
- choices: z.ZodArray<z.ZodString>;
95
+ choices: z.ZodDefault<z.ZodArray<z.ZodString>>;
96
96
  }, z.core.$strip>, z.ZodObject<{
97
97
  item_type: z.ZodLiteral<"say">;
98
98
  statement: z.ZodString;
@@ -131,8 +131,8 @@ export declare const inboundTunnelCommand: z.ZodObject<{
131
131
  to_number: z.ZodE164;
132
132
  }, z.core.$strict>, z.ZodObject<{
133
133
  command_type: z.ZodLiteral<"listen-inbound">;
134
- agent_number: z.ZodOptional<z.ZodE164>;
135
- webrtc_code: z.ZodOptional<z.ZodString>;
134
+ agent_number: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodE164>>>;
135
+ webrtc_code: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
136
136
  }, z.core.$strict>, z.ZodObject<{
137
137
  command_type: z.ZodLiteral<"reject-inbound">;
138
138
  }, z.core.$strict>, z.ZodObject<{
@@ -147,7 +147,7 @@ export declare const inboundTunnelCommand: z.ZodObject<{
147
147
  description: z.ZodString;
148
148
  field_type: z.ZodUnion<z.ZodLiteral<"text" | "integer" | "date" | "datetime" | "multiple_choice">[]>;
149
149
  required: z.ZodDefault<z.ZodBoolean>;
150
- choices: z.ZodArray<z.ZodString>;
150
+ choices: z.ZodDefault<z.ZodArray<z.ZodString>>;
151
151
  }, z.core.$strip>, z.ZodObject<{
152
152
  item_type: z.ZodLiteral<"say">;
153
153
  statement: z.ZodString;
@@ -8,12 +8,13 @@ export const startOutboundCallCommand = z.strictObject({
8
8
  export const listenInboundCommand = z
9
9
  .strictObject({
10
10
  command_type: z.literal("listen-inbound"),
11
- agent_number: z.e164().optional(),
12
- webrtc_code: z.string().optional(),
11
+ agent_number: z.e164().nullish().default(null),
12
+ webrtc_code: z.string().nullish().default(null),
13
13
  })
14
14
  .refine((obj) => {
15
- !!obj.agent_number || !!obj.webrtc_code;
16
- });
15
+ return (typeof obj.agent_number == "string" ||
16
+ typeof obj.webrtc_code == "string");
17
+ }, { error: "one of ['agent_number', 'webrtc_code'] must be set" });
17
18
  export const rejectInboundCallCommand = z.strictObject({
18
19
  command_type: z.literal("reject-inbound"),
19
20
  });
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,YAAY,CAAC;IACrD,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAEzC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;CACpB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,YAAY,CAAC;IACZ,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAEzC,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC;KACD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;IACd,CAAC,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;AAC1C,CAAC,CAAC,CAAC;AAGL,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,YAAY,CAAC;IACrD,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;CAC1C,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,YAAY,CAAC;IACrD,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;CAC1C,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC;IAC3C,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;CAClC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,YAAY,CAAC;IAC9C,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,YAAY,CAAC;IAClD,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC;IACvC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,YAAY,CAAC;IACnD,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC3C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,YAAY,CAAC;IAC5C,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;IACxC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC;IAChC,wBAAwB;IACxB,oBAAoB;IACpB,wBAAwB;IACxB,wBAAwB;IACxB,cAAc;IACd,iBAAiB;IACjB,qBAAqB;IACrB,UAAU;IACV,sBAAsB;IACtB,eAAe;CAChB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,YAAY,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,UAAU;CACpB,CAAC,CAAC"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"example_data.js","sourceRoot":"","sources":["../../src/example_data.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CAgmBC,CAAA"}
1
+ {"version":3,"file":"example_data.js","sourceRoot":"","sources":["../../src/example_data.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CAgmBC,CAAC"}
@@ -1,6 +1,11 @@
1
1
  import OpenAI from "openai";
2
2
  import { type Logger } from "../logging.ts";
3
- export declare class IntentRecognizer {
3
+ export declare class IntentRecognizer<Choices extends readonly string[]> {
4
+ private client;
5
+ private intentChoices;
6
+ private choiceModel;
7
+ constructor(choices: Choices, logger: Logger, client?: OpenAI);
8
+ classify(intent: string): Promise<Choices[number]>;
4
9
  }
5
10
  export declare class DocumentQA {
6
11
  private client;
@@ -15,16 +15,14 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
15
15
  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
16
16
  };
17
17
  import OpenAI, { toFile } from "openai";
18
+ import * as z from "zod";
18
19
  // from beta.py
19
20
  // TODO: Remove after beta
20
21
  function beta_create_openai_client(logger) {
21
22
  var _a;
22
- const baseUrl = (_a = process.env.GUAVA_BASE_URL) !== null && _a !== void 0 ? _a : "wss://guava-dev.gridspace.com/guava/";
23
+ const baseUrl = (_a = process.env.GUAVA_BASE_URL) !== null && _a !== void 0 ? _a : "https://guava-dev.gridspace.com/";
23
24
  // to get it working with OpenAI TS/JS client
24
25
  const basedUrl = new URL("openai/v1/", baseUrl);
25
- basedUrl.protocol = /^wss:\/\//.test(basedUrl.toString())
26
- ? "https:"
27
- : "http:";
28
26
  logger.info(`Creating beta OpenAI client`);
29
27
  return new OpenAI({
30
28
  baseURL: basedUrl.toString(),
@@ -32,6 +30,28 @@ function beta_create_openai_client(logger) {
32
30
  });
33
31
  }
34
32
  export class IntentRecognizer {
33
+ constructor(choices, logger, client) {
34
+ this.intentChoices = choices;
35
+ this.client = client !== null && client !== void 0 ? client : beta_create_openai_client(logger);
36
+ this.choiceModel = z.union(choices.map((s) => z.literal(s)));
37
+ }
38
+ classify(intent) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ const response = yield this.client.responses.parse({
41
+ model: "gpt-5-mini",
42
+ input: `
43
+ Pick the choice in the list of choices that best reflects the given intent.
44
+ Intent: "${intent}".
45
+ Possible Choices: ${this.intentChoices}.
46
+ `.trim(),
47
+ reasoning: {
48
+ effort: "low",
49
+ },
50
+ });
51
+ const parsed_output = this.choiceModel.parse(response.output_text);
52
+ return parsed_output;
53
+ });
54
+ }
35
55
  }
36
56
  export class DocumentQA {
37
57
  constructor(vector_store_name, document, logger, client) {
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/helpers/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/helpers/openai.ts"],"names":[],"mappings":"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"}