@botonic/plugin-ai-agents 0.42.3 → 0.43.0-alpha.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 (52) hide show
  1. package/lib/cjs/agent-builder.d.ts +13 -2
  2. package/lib/cjs/agent-builder.js +34 -10
  3. package/lib/cjs/agent-builder.js.map +1 -1
  4. package/lib/cjs/constants.d.ts +3 -0
  5. package/lib/cjs/constants.js +6 -1
  6. package/lib/cjs/constants.js.map +1 -1
  7. package/lib/cjs/guardrails/input.js.map +1 -1
  8. package/lib/cjs/index.js +10 -2
  9. package/lib/cjs/index.js.map +1 -1
  10. package/lib/cjs/openai.js +18 -3
  11. package/lib/cjs/openai.js.map +1 -1
  12. package/lib/cjs/runner.js +5 -1
  13. package/lib/cjs/runner.js.map +1 -1
  14. package/lib/cjs/structured-output/index.d.ts +9 -0
  15. package/lib/cjs/structured-output/text-with-buttons.d.ts +7 -0
  16. package/lib/cjs/structured-output/text-with-buttons.js +1 -0
  17. package/lib/cjs/structured-output/text-with-buttons.js.map +1 -1
  18. package/lib/cjs/tools/retrieve-knowledge.d.ts +8 -1
  19. package/lib/cjs/tools/retrieve-knowledge.js +2 -1
  20. package/lib/cjs/tools/retrieve-knowledge.js.map +1 -1
  21. package/lib/cjs/types.d.ts +2 -2
  22. package/lib/esm/agent-builder.d.ts +13 -2
  23. package/lib/esm/agent-builder.js +35 -11
  24. package/lib/esm/agent-builder.js.map +1 -1
  25. package/lib/esm/constants.d.ts +3 -0
  26. package/lib/esm/constants.js +5 -0
  27. package/lib/esm/constants.js.map +1 -1
  28. package/lib/esm/guardrails/input.js.map +1 -1
  29. package/lib/esm/index.js +10 -2
  30. package/lib/esm/index.js.map +1 -1
  31. package/lib/esm/openai.js +18 -4
  32. package/lib/esm/openai.js.map +1 -1
  33. package/lib/esm/runner.js +5 -1
  34. package/lib/esm/runner.js.map +1 -1
  35. package/lib/esm/structured-output/index.d.ts +9 -0
  36. package/lib/esm/structured-output/text-with-buttons.d.ts +7 -0
  37. package/lib/esm/structured-output/text-with-buttons.js +1 -0
  38. package/lib/esm/structured-output/text-with-buttons.js.map +1 -1
  39. package/lib/esm/tools/retrieve-knowledge.d.ts +8 -1
  40. package/lib/esm/tools/retrieve-knowledge.js +2 -1
  41. package/lib/esm/tools/retrieve-knowledge.js.map +1 -1
  42. package/lib/esm/types.d.ts +2 -2
  43. package/package.json +3 -3
  44. package/src/agent-builder.ts +64 -22
  45. package/src/constants.ts +7 -0
  46. package/src/guardrails/input.ts +1 -1
  47. package/src/index.ts +9 -8
  48. package/src/openai.ts +19 -3
  49. package/src/runner.ts +15 -2
  50. package/src/structured-output/text-with-buttons.ts +1 -0
  51. package/src/tools/retrieve-knowledge.ts +3 -2
  52. package/src/types.ts +2 -1
package/lib/esm/index.js CHANGED
@@ -16,7 +16,7 @@ export default class BotonicPluginAiAgents {
16
16
  return;
17
17
  }
18
18
  getInference(request, aiAgentArgs) {
19
- var _a;
19
+ var _a, _b;
20
20
  return __awaiter(this, void 0, void 0, function* () {
21
21
  try {
22
22
  const authToken = isProd ? request.session._access_token : this.authToken;
@@ -24,7 +24,15 @@ export default class BotonicPluginAiAgents {
24
24
  throw new Error('Auth token is required');
25
25
  }
26
26
  const tools = this.buildTools(((_a = aiAgentArgs.activeTools) === null || _a === void 0 ? void 0 : _a.map(tool => tool.name)) || []);
27
- const agent = new AIAgentBuilder(aiAgentArgs.name, aiAgentArgs.instructions, tools, request.session.user.contact_info || {}, aiAgentArgs.inputGuardrailRules || [], aiAgentArgs.sourceIds || []).build();
27
+ const agent = new AIAgentBuilder({
28
+ name: aiAgentArgs.name,
29
+ instructions: aiAgentArgs.instructions,
30
+ tools: tools,
31
+ contactInfo: request.session.user.contact_info || {},
32
+ inputGuardrailRules: aiAgentArgs.inputGuardrailRules || [],
33
+ sourceIds: aiAgentArgs.sourceIds || [],
34
+ campaignContext: (_b = request.input.context) === null || _b === void 0 ? void 0 : _b.campaign_v2,
35
+ }).build();
28
36
  const messages = yield this.getMessages(request, authToken, MAX_MEMORY_LENGTH);
29
37
  const context = {
30
38
  authToken,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/lib/esm/openai.js CHANGED
@@ -1,18 +1,32 @@
1
1
  import { setDefaultOpenAIClient, setOpenAIAPI, setTracingDisabled, } from '@openai/agents';
2
- import { AzureOpenAI } from 'openai';
3
- import { AZURE_OPENAI_API_BASE, AZURE_OPENAI_API_DEPLOYMENT_NAME, AZURE_OPENAI_API_KEY, AZURE_OPENAI_API_VERSION, isProd, } from './constants';
2
+ import OpenAI, { AzureOpenAI } from 'openai';
3
+ import { AZURE_OPENAI_API_BASE, AZURE_OPENAI_API_DEPLOYMENT_NAME, AZURE_OPENAI_API_KEY, AZURE_OPENAI_API_VERSION, isProd, OPENAI_API_KEY, OPENAI_PROVIDER, } from './constants';
4
4
  export function setUpOpenAI(maxRetries, timeout) {
5
- setAzureOpenAIClient(maxRetries, timeout);
5
+ if (OPENAI_PROVIDER === 'azure') {
6
+ setAzureOpenAIClient(maxRetries, timeout);
7
+ }
8
+ else {
9
+ setOpenAIClient(maxRetries, timeout);
10
+ }
6
11
  setOpenAIAPI('chat_completions');
7
12
  setTracingDisabled(true);
8
13
  }
14
+ function setOpenAIClient(maxRetries, timeout) {
15
+ const client = new OpenAI({
16
+ apiKey: OPENAI_API_KEY,
17
+ timeout: timeout || 16000,
18
+ maxRetries: maxRetries || 2,
19
+ dangerouslyAllowBrowser: !isProd,
20
+ });
21
+ setDefaultOpenAIClient(client);
22
+ }
9
23
  function setAzureOpenAIClient(maxRetries, timeout) {
10
24
  const client = new AzureOpenAI({
11
25
  apiKey: AZURE_OPENAI_API_KEY,
12
26
  apiVersion: AZURE_OPENAI_API_VERSION,
13
27
  deployment: AZURE_OPENAI_API_DEPLOYMENT_NAME,
14
28
  baseURL: AZURE_OPENAI_API_BASE,
15
- timeout: timeout || 8000,
29
+ timeout: timeout || 16000,
16
30
  maxRetries: maxRetries || 2,
17
31
  dangerouslyAllowBrowser: !isProd,
18
32
  });
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,EACL,qBAAqB,EACrB,gCAAgC,EAChC,oBAAoB,EACpB,wBAAwB,EACxB,MAAM,GACP,MAAM,aAAa,CAAA;AAEpB,MAAM,UAAU,WAAW,CAAC,UAAmB,EAAE,OAAgB;IAC/D,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACzC,YAAY,CAAC,kBAAkB,CAAC,CAAA;IAChC,kBAAkB,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAmB,EAAE,OAAgB;IACjE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC;QAC7B,MAAM,EAAE,oBAAoB;QAC5B,UAAU,EAAE,wBAAwB;QACpC,UAAU,EAAE,gCAAgC;QAC5C,OAAO,EAAE,qBAAqB;QAC9B,OAAO,EAAE,OAAO,IAAI,IAAI;QACxB,UAAU,EAAE,UAAU,IAAI,CAAC;QAC3B,uBAAuB,EAAE,CAAC,MAAM;KACjC,CAAC,CAAA;IACF,sBAAsB,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAE5C,OAAO,EACL,qBAAqB,EACrB,gCAAgC,EAChC,oBAAoB,EACpB,wBAAwB,EACxB,MAAM,EACN,cAAc,EACd,eAAe,GAChB,MAAM,aAAa,CAAA;AAEpB,MAAM,UAAU,WAAW,CAAC,UAAmB,EAAE,OAAgB;IAC/D,IAAI,eAAe,KAAK,OAAO,EAAE;QAC/B,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;KAC1C;SAAM;QACL,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;KACrC;IACD,YAAY,CAAC,kBAAkB,CAAC,CAAA;IAChC,kBAAkB,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,eAAe,CAAC,UAAmB,EAAE,OAAgB;IAC5D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,MAAM,EAAE,cAAc;QACtB,OAAO,EAAE,OAAO,IAAI,KAAK;QACzB,UAAU,EAAE,UAAU,IAAI,CAAC;QAC3B,uBAAuB,EAAE,CAAC,MAAM;KACjC,CAAC,CAAA;IACF,sBAAsB,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAmB,EAAE,OAAgB;IACjE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC;QAC7B,MAAM,EAAE,oBAAoB;QAC5B,UAAU,EAAE,wBAAwB;QACpC,UAAU,EAAE,gCAAgC;QAC5C,OAAO,EAAE,qBAAqB;QAC9B,OAAO,EAAE,OAAO,IAAI,KAAK;QACzB,UAAU,EAAE,UAAU,IAAI,CAAC;QAC3B,uBAAuB,EAAE,CAAC,MAAM;KACjC,CAAC,CAAA;IACF,sBAAsB,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC"}
package/lib/esm/runner.js CHANGED
@@ -12,7 +12,11 @@ export class AIAgentRunner {
12
12
  const runner = new Runner({
13
13
  modelSettings: { temperature: 0 },
14
14
  });
15
- const result = yield runner.run(this.agent, messages, { context });
15
+ // Type assertion to bypass strict type checking - the actual return type from runner.run()
16
+ // doesn't perfectly match our interface, but the properties we access are compatible
17
+ const result = (yield runner.run(this.agent, messages, {
18
+ context,
19
+ }));
16
20
  const outputMessages = ((_a = result.finalOutput) === null || _a === void 0 ? void 0 : _a.messages) || [];
17
21
  const hasExit = outputMessages.length === 0 ||
18
22
  outputMessages.some(message => message.type === 'exit');
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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"}
@@ -29,20 +29,25 @@ export declare const OutputSchema: z.ZodObject<{
29
29
  text: z.ZodString;
30
30
  buttons: z.ZodArray<z.ZodObject<{
31
31
  text: z.ZodString;
32
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
32
33
  }, "strip", z.ZodTypeAny, {
33
34
  text: string;
35
+ url?: string | null | undefined;
34
36
  }, {
35
37
  text: string;
38
+ url?: string | null | undefined;
36
39
  }>, "many">;
37
40
  }, "strip", z.ZodTypeAny, {
38
41
  text: string;
39
42
  buttons: {
40
43
  text: string;
44
+ url?: string | null | undefined;
41
45
  }[];
42
46
  }, {
43
47
  text: string;
44
48
  buttons: {
45
49
  text: string;
50
+ url?: string | null | undefined;
46
51
  }[];
47
52
  }>;
48
53
  }, "strip", z.ZodTypeAny, {
@@ -51,6 +56,7 @@ export declare const OutputSchema: z.ZodObject<{
51
56
  text: string;
52
57
  buttons: {
53
58
  text: string;
59
+ url?: string | null | undefined;
54
60
  }[];
55
61
  };
56
62
  }, {
@@ -59,6 +65,7 @@ export declare const OutputSchema: z.ZodObject<{
59
65
  text: string;
60
66
  buttons: {
61
67
  text: string;
68
+ url?: string | null | undefined;
62
69
  }[];
63
70
  };
64
71
  }>, z.ZodObject<{
@@ -182,6 +189,7 @@ export declare const OutputSchema: z.ZodObject<{
182
189
  text: string;
183
190
  buttons: {
184
191
  text: string;
192
+ url?: string | null | undefined;
185
193
  }[];
186
194
  };
187
195
  })[];
@@ -213,6 +221,7 @@ export declare const OutputSchema: z.ZodObject<{
213
221
  text: string;
214
222
  buttons: {
215
223
  text: string;
224
+ url?: string | null | undefined;
216
225
  }[];
217
226
  };
218
227
  })[];
@@ -7,20 +7,25 @@ export declare const TextWithButtonsSchema: z.ZodObject<{
7
7
  text: z.ZodString;
8
8
  buttons: z.ZodArray<z.ZodObject<{
9
9
  text: z.ZodString;
10
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
10
11
  }, "strip", z.ZodTypeAny, {
11
12
  text: string;
13
+ url?: string | null | undefined;
12
14
  }, {
13
15
  text: string;
16
+ url?: string | null | undefined;
14
17
  }>, "many">;
15
18
  }, "strip", z.ZodTypeAny, {
16
19
  text: string;
17
20
  buttons: {
18
21
  text: string;
22
+ url?: string | null | undefined;
19
23
  }[];
20
24
  }, {
21
25
  text: string;
22
26
  buttons: {
23
27
  text: string;
28
+ url?: string | null | undefined;
24
29
  }[];
25
30
  }>;
26
31
  }, "strip", z.ZodTypeAny, {
@@ -29,6 +34,7 @@ export declare const TextWithButtonsSchema: z.ZodObject<{
29
34
  text: string;
30
35
  buttons: {
31
36
  text: string;
37
+ url?: string | null | undefined;
32
38
  }[];
33
39
  };
34
40
  }, {
@@ -37,6 +43,7 @@ export declare const TextWithButtonsSchema: z.ZodObject<{
37
43
  text: string;
38
44
  buttons: {
39
45
  text: string;
46
+ url?: string | null | undefined;
40
47
  }[];
41
48
  };
42
49
  }>;
@@ -6,6 +6,7 @@ export const TextWithButtonsSchema = z
6
6
  text: z.string(),
7
7
  buttons: z.array(z.object({
8
8
  text: z.string(),
9
+ url: z.string().nullable().optional(),
9
10
  })),
10
11
  }),
11
12
  })
@@ -1 +1 @@
1
- {"version":3,"file":"text-with-buttons.js","sourceRoot":"","sources":["../../../src/structured-output/text-with-buttons.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAA;AAInB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,KAAK,CACd,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;SACjB,CAAC,CACH;KACF,CAAC;CACH,CAAC;KACD,QAAQ,CACP,oEAAoE,CACrE,CAAA"}
1
+ {"version":3,"file":"text-with-buttons.js","sourceRoot":"","sources":["../../../src/structured-output/text-with-buttons.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAA;AAInB,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,KAAK,CACd,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;SACtC,CAAC,CACH;KACF,CAAC;CACH,CAAC;KACD,QAAQ,CACP,oEAAoE,CACrE,CAAA"}
@@ -1,2 +1,9 @@
1
+ import { z } from 'zod';
1
2
  import { Context } from '../types';
2
- export declare const retrieveKnowledge: import("@openai/agents").FunctionTool<Context<import("@botonic/core").ResolvedPlugins, any>, any, any>;
3
+ export declare const retrieveKnowledge: import("@openai/agents").FunctionTool<Context<import("@botonic/core").ResolvedPlugins, any>, z.ZodObject<{
4
+ query: z.ZodString;
5
+ }, "strip", z.ZodTypeAny, {
6
+ query: string;
7
+ }, {
8
+ query: string;
9
+ }>, string>;
@@ -8,8 +8,9 @@ export const retrieveKnowledge = tool({
8
8
  parameters: z.object({
9
9
  query: z.string().describe('The query to search the knowledge base for'),
10
10
  }),
11
- execute: ({ query }, runContext) => __awaiter(void 0, void 0, void 0, function* () {
11
+ execute: (input, runContext) => __awaiter(void 0, void 0, void 0, function* () {
12
12
  const context = runContext === null || runContext === void 0 ? void 0 : runContext.context;
13
+ const query = input.query;
13
14
  if (!context) {
14
15
  throw new Error('Context is required');
15
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"retrieve-knowledge.js","sourceRoot":"","sources":["../../../src/tools/retrieve-knowledge.ts"],"names":[],"mappings":";AAAA,OAAO,EAAc,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAoB;IACvD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,kIAAkI;IACpI,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KACzE,CAAC;IACF,OAAO,EAAE,CACP,EAAE,KAAK,EAAqB,EAC5B,UAAgC,EACb,EAAE;QACrB,MAAM,OAAO,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAA;QACnC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;SACvC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QACnC,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QACnE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAElD,OAAO,CAAC,aAAa,GAAG;YACtB,KAAK;YACL,SAAS;YACT,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,UAAU;SACX,CAAA;QAED,OAAO,UAAU,CAAA;IACnB,CAAC,CAAA;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"retrieve-knowledge.js","sourceRoot":"","sources":["../../../src/tools/retrieve-knowledge.ts"],"names":[],"mappings":";AAAA,OAAO,EAAc,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;IACpC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,kIAAkI;IACpI,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KACzE,CAAC;IACF,OAAO,EAAE,CACP,KAAwB,EACxB,UAAgC,EACb,EAAE;QACrB,MAAM,OAAO,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAA;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;QACzB,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;SACvC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QACnC,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QACnE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAElD,OAAO,CAAC,aAAa,GAAG;YACtB,KAAK;YACL,SAAS;YACT,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,UAAU;SACX,CAAA;QAED,OAAO,UAAU,CAAA;IACnB,CAAC,CAAA;CACF,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { AgenticOutputMessage, AiAgentArgs, BotContext, GuardrailRule, InferenceResponse, ResolvedPlugins, RunResult } from '@botonic/core';
2
- import { Agent, AgentInputItem, RunContext as OpenAIRunContext, Tool as OpenAITool } from '@openai/agents';
2
+ import { Agent, AgentInputItem, AgentOutputType, RunContext as OpenAIRunContext, Tool as OpenAITool } from '@openai/agents';
3
3
  import { ZodSchema } from 'zod';
4
4
  import { OutputSchema } from './structured-output';
5
5
  export interface Context<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
@@ -26,7 +26,7 @@ export interface Chunk {
26
26
  }
27
27
  export type ContactInfo = Record<string, string>;
28
28
  export type Tool<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = OpenAITool<Context<TPlugins, TExtraData>>;
29
- export type AIAgent<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = Agent<Context<TPlugins, TExtraData>, typeof OutputSchema>;
29
+ export type AIAgent<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> = Agent<Context<TPlugins, TExtraData>, AgentOutputType<typeof OutputSchema>>;
30
30
  export interface PluginAiAgentOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> {
31
31
  authToken?: string;
32
32
  customTools?: CustomTool<TPlugins, TExtraData>[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botonic/plugin-ai-agents",
3
- "version": "0.42.3",
3
+ "version": "0.43.0-alpha.0",
4
4
  "main": "./lib/cjs/index.js",
5
5
  "module": "./lib/esm/index.js",
6
6
  "description": "Use AI Agents to generate your contents",
@@ -13,7 +13,7 @@
13
13
  "lint_core": "../../node_modules/.bin/eslint_d --cache --quiet 'src/**/*.ts*'"
14
14
  },
15
15
  "dependencies": {
16
- "@botonic/core": "^0.42.0",
16
+ "@botonic/core": "0.43.0-alpha.0",
17
17
  "@openai/agents": "^0.1.11",
18
18
  "axios": "^1.12.2",
19
19
  "openai": "^5.23.2",
@@ -45,4 +45,4 @@
45
45
  "javascript"
46
46
  ],
47
47
  "author": ""
48
- }
48
+ }
@@ -1,10 +1,29 @@
1
- import { ResolvedPlugins } from '@botonic/core'
2
- import { Agent, InputGuardrail, ModelSettings } from '@openai/agents'
1
+ import { CampaignV2, ResolvedPlugins } from '@botonic/core'
2
+ import {
3
+ Agent,
4
+ AgentOutputType,
5
+ InputGuardrail,
6
+ ModelSettings,
7
+ } from '@openai/agents'
3
8
 
9
+ import { OPENAI_MODEL, OPENAI_PROVIDER } from './constants'
4
10
  import { createInputGuardrail } from './guardrails'
5
11
  import { OutputSchema } from './structured-output'
6
12
  import { mandatoryTools, retrieveKnowledge } from './tools'
7
- import { AIAgent, ContactInfo, GuardrailRule, Tool } from './types'
13
+ import { AIAgent, ContactInfo, Context, GuardrailRule, Tool } from './types'
14
+
15
+ interface AIAgentBuilderOptions<
16
+ TPlugins extends ResolvedPlugins = ResolvedPlugins,
17
+ TExtraData = any,
18
+ > {
19
+ name: string
20
+ instructions: string
21
+ tools: Tool<TPlugins, TExtraData>[]
22
+ campaignContext?: CampaignV2
23
+ contactInfo: ContactInfo
24
+ inputGuardrailRules: GuardrailRule[]
25
+ sourceIds: string[]
26
+ }
8
27
 
9
28
  export class AIAgentBuilder<
10
29
  TPlugins extends ResolvedPlugins = ResolvedPlugins,
@@ -15,33 +34,47 @@ export class AIAgentBuilder<
15
34
  private tools: Tool<TPlugins, TExtraData>[]
16
35
  private inputGuardrails: InputGuardrail[]
17
36
 
18
- constructor(
19
- name: string,
20
- instructions: string,
21
- tools: Tool<TPlugins, TExtraData>[],
22
- contactInfo: ContactInfo,
23
- inputGuardrailRules: GuardrailRule[],
24
- sourceIds: string[]
25
- ) {
26
- this.name = name
27
- this.instructions = this.addExtraInstructions(instructions, contactInfo)
28
- this.tools = this.addHubtypeTools(tools, sourceIds)
37
+ constructor(options: AIAgentBuilderOptions<TPlugins, TExtraData>) {
38
+ this.name = options.name
39
+ this.instructions = this.addExtraInstructions(
40
+ options.instructions,
41
+ options.contactInfo,
42
+ options.campaignContext
43
+ )
44
+ this.tools = this.addHubtypeTools(options.tools, options.sourceIds)
29
45
  this.inputGuardrails = []
30
- if (inputGuardrailRules.length > 0) {
31
- const inputGuardrail = createInputGuardrail(inputGuardrailRules)
46
+ if (options.inputGuardrailRules.length > 0) {
47
+ const inputGuardrail = createInputGuardrail(options.inputGuardrailRules)
32
48
  this.inputGuardrails.push(inputGuardrail)
33
49
  }
34
50
  }
35
51
 
36
52
  build(): AIAgent<TPlugins, TExtraData> {
37
- const modelSettings: ModelSettings = {}
53
+ const modelSettings: ModelSettings = {} as ModelSettings
54
+ if (OPENAI_PROVIDER === 'openai') {
55
+ // @ts-expect-error - reasoning.effort is valid but we need to update openai and typescript dependencies
56
+ modelSettings.reasoning = { effort: 'none' }
57
+ modelSettings.text = { verbosity: 'medium' }
58
+ }
38
59
 
39
- if (this.tools.includes(retrieveKnowledge)) {
60
+ if (this.tools.includes(retrieveKnowledge) && OPENAI_PROVIDER === 'azure') {
40
61
  modelSettings.toolChoice = retrieveKnowledge.name
41
62
  }
42
63
 
43
- return new Agent({
64
+ // When using standard OpenAI API, we need to specify the model
65
+ // Azure OpenAI uses deployment name instead
66
+ const model = OPENAI_PROVIDER === 'openai' ? OPENAI_MODEL : undefined
67
+
68
+ // TODO: Improve type safety - replace AgentOutputType<any> with AgentOutputType<typeof OutputSchema>
69
+ // Currently using explicit type parameters to avoid type inference issues where Agent constructor
70
+ // infers ZodObject instead of AgentOutputType<typeof OutputSchema>. The explicit type parameters
71
+ // ensure compatibility with AIAgent type definition. Future improvements:
72
+ // 1. Update @openai/agents package to properly infer AgentOutputType from outputType parameter
73
+ // 2. Replace AgentOutputType<any> with AgentOutputType<typeof OutputSchema> once type system allows
74
+ // 3. Consider updating AIAgent type definition if @openai/agents types change significantly
75
+ return new Agent<Context<TPlugins, TExtraData>, AgentOutputType<any>>({
44
76
  name: this.name,
77
+ model,
45
78
  instructions: this.instructions,
46
79
  tools: this.tools,
47
80
  outputType: OutputSchema,
@@ -53,13 +86,15 @@ export class AIAgentBuilder<
53
86
 
54
87
  private addExtraInstructions(
55
88
  initialInstructions: string,
56
- contactInfo: ContactInfo
89
+ contactInfo: ContactInfo,
90
+ campaignContext?: CampaignV2
57
91
  ): string {
58
- const instructions = `<instructions>\n${initialInstructions}\n</instructions>`
92
+ const instructions = `<instructions>\n${initialInstructions.trim()}\n</instructions>`
59
93
  const metadataInstructions = this.getMetadataInstructions()
60
94
  const contactInfoInstructions = this.getContactInfoInstructions(contactInfo)
95
+ const campaignInstructions = this.getCampaignInstructions(campaignContext)
61
96
  const outputInstructions = this.getOutputInstructions()
62
- return `${instructions}\n\n${metadataInstructions}\n\n${contactInfoInstructions}\n\n${outputInstructions}`
97
+ return `${instructions}\n\n${metadataInstructions}\n\n${contactInfoInstructions}\n\n${campaignInstructions}\n\n${outputInstructions}`
63
98
  }
64
99
 
65
100
  private getContactInfoInstructions(contactInfo: ContactInfo): string {
@@ -74,6 +109,13 @@ export class AIAgentBuilder<
74
109
  return `<metadata>\n${metadata}\n</metadata>`
75
110
  }
76
111
 
112
+ private getCampaignInstructions(campaignContext?: CampaignV2): string {
113
+ if (!campaignContext || !campaignContext.agent_context) {
114
+ return ''
115
+ }
116
+ return `<campaign_context>\n${campaignContext.agent_context}\n</campaign_context>`
117
+ }
118
+
77
119
  private getOutputInstructions(): string {
78
120
  const example = {
79
121
  messages: [
package/src/constants.ts CHANGED
@@ -1,6 +1,13 @@
1
1
  export const HUBTYPE_API_URL =
2
2
  process.env.HUBTYPE_API_URL || 'https://api.hubtype.com'
3
3
 
4
+ // OpenAI Provider Configuration
5
+ export const OPENAI_API_KEY = process.env.OPENAI_API_KEY // pragma: allowlist secret
6
+ export const OPENAI_MODEL = process.env.OPENAI_MODEL || 'gpt-4.1-mini'
7
+ export const OPENAI_PROVIDER: 'openai' | 'azure' =
8
+ (process.env.OPENAI_PROVIDER as 'openai' | 'azure') || 'azure'
9
+
10
+ // Azure OpenAI Configuration
4
11
  export const AZURE_OPENAI_API_KEY = process.env.AZURE_OPENAI_API_KEY // pragma: allowlist secret
5
12
  export const AZURE_OPENAI_API_BASE = process.env.AZURE_OPENAI_API_BASE
6
13
  export const AZURE_OPENAI_API_DEPLOYMENT_NAME =
@@ -22,7 +22,7 @@ export function createInputGuardrail(rules: GuardrailRule[]): InputGuardrail {
22
22
  execute: async ({ input, context }) => {
23
23
  const lastMessage = input[input.length - 1] as UserMessageItem
24
24
  const result = await run(agent, [lastMessage], { context })
25
- const finalOutput = result.finalOutput
25
+ const finalOutput = result.finalOutput as Record<string, boolean>
26
26
  if (finalOutput === undefined) {
27
27
  throw new Error('Guardrail agent failed to produce output')
28
28
  }
package/src/index.ts CHANGED
@@ -46,14 +46,15 @@ export default class BotonicPluginAiAgents<
46
46
  const tools = this.buildTools(
47
47
  aiAgentArgs.activeTools?.map(tool => tool.name) || []
48
48
  )
49
- const agent = new AIAgentBuilder<TPlugins, TExtraData>(
50
- aiAgentArgs.name,
51
- aiAgentArgs.instructions,
52
- tools,
53
- request.session.user.contact_info || {},
54
- aiAgentArgs.inputGuardrailRules || [],
55
- aiAgentArgs.sourceIds || []
56
- ).build()
49
+ const agent = new AIAgentBuilder<TPlugins, TExtraData>({
50
+ name: aiAgentArgs.name,
51
+ instructions: aiAgentArgs.instructions,
52
+ tools: tools,
53
+ contactInfo: request.session.user.contact_info || {},
54
+ inputGuardrailRules: aiAgentArgs.inputGuardrailRules || [],
55
+ sourceIds: aiAgentArgs.sourceIds || [],
56
+ campaignContext: request.input.context?.campaign_v2,
57
+ }).build()
57
58
 
58
59
  const messages = await this.getMessages(
59
60
  request,
package/src/openai.ts CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  setOpenAIAPI,
4
4
  setTracingDisabled,
5
5
  } from '@openai/agents'
6
- import { AzureOpenAI } from 'openai'
6
+ import OpenAI, { AzureOpenAI } from 'openai'
7
7
 
8
8
  import {
9
9
  AZURE_OPENAI_API_BASE,
@@ -11,21 +11,37 @@ import {
11
11
  AZURE_OPENAI_API_KEY,
12
12
  AZURE_OPENAI_API_VERSION,
13
13
  isProd,
14
+ OPENAI_API_KEY,
15
+ OPENAI_PROVIDER,
14
16
  } from './constants'
15
17
 
16
18
  export function setUpOpenAI(maxRetries?: number, timeout?: number) {
17
- setAzureOpenAIClient(maxRetries, timeout)
19
+ if (OPENAI_PROVIDER === 'azure') {
20
+ setAzureOpenAIClient(maxRetries, timeout)
21
+ } else {
22
+ setOpenAIClient(maxRetries, timeout)
23
+ }
18
24
  setOpenAIAPI('chat_completions')
19
25
  setTracingDisabled(true)
20
26
  }
21
27
 
28
+ function setOpenAIClient(maxRetries?: number, timeout?: number) {
29
+ const client = new OpenAI({
30
+ apiKey: OPENAI_API_KEY,
31
+ timeout: timeout || 16000, // 16 seconds
32
+ maxRetries: maxRetries || 2,
33
+ dangerouslyAllowBrowser: !isProd,
34
+ })
35
+ setDefaultOpenAIClient(client)
36
+ }
37
+
22
38
  function setAzureOpenAIClient(maxRetries?: number, timeout?: number) {
23
39
  const client = new AzureOpenAI({
24
40
  apiKey: AZURE_OPENAI_API_KEY,
25
41
  apiVersion: AZURE_OPENAI_API_VERSION,
26
42
  deployment: AZURE_OPENAI_API_DEPLOYMENT_NAME,
27
43
  baseURL: AZURE_OPENAI_API_BASE,
28
- timeout: timeout || 8000, // 8 seconds
44
+ timeout: timeout || 16000, // 16 seconds
29
45
  maxRetries: maxRetries || 2,
30
46
  dangerouslyAllowBrowser: !isProd,
31
47
  })
package/src/runner.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ResolvedPlugins, ToolExecution } from '@botonic/core'
1
+ import { OutputMessage, ResolvedPlugins, ToolExecution } from '@botonic/core'
2
2
  import {
3
3
  InputGuardrailTripwireTriggered,
4
4
  Runner,
@@ -14,6 +14,15 @@ import {
14
14
  RunResult,
15
15
  } from './types'
16
16
 
17
+ // Minimal interface matching the properties we actually use from Runner.run() result
18
+ // This bypasses strict type checking while maintaining type safety for accessed properties
19
+ interface AIAgentRunnerResult {
20
+ finalOutput?: {
21
+ messages?: OutputMessage[]
22
+ }
23
+ newItems?: RunToolCallItem[]
24
+ }
25
+
17
26
  export class AIAgentRunner<
18
27
  TPlugins extends ResolvedPlugins = ResolvedPlugins,
19
28
  TExtraData = any,
@@ -32,7 +41,11 @@ export class AIAgentRunner<
32
41
  const runner = new Runner({
33
42
  modelSettings: { temperature: 0 },
34
43
  })
35
- const result = await runner.run(this.agent, messages, { context })
44
+ // Type assertion to bypass strict type checking - the actual return type from runner.run()
45
+ // doesn't perfectly match our interface, but the properties we access are compatible
46
+ const result = (await runner.run(this.agent, messages, {
47
+ context,
48
+ })) as AIAgentRunnerResult
36
49
 
37
50
  const outputMessages = result.finalOutput?.messages || []
38
51
  const hasExit =
@@ -11,6 +11,7 @@ export const TextWithButtonsSchema = z
11
11
  buttons: z.array(
12
12
  z.object({
13
13
  text: z.string(),
14
+ url: z.string().nullable().optional(),
14
15
  })
15
16
  ),
16
17
  }),
@@ -4,7 +4,7 @@ import { z } from 'zod'
4
4
  import { HubtypeApiClient } from '../hubtype-api-client'
5
5
  import { Context } from '../types'
6
6
 
7
- export const retrieveKnowledge = tool<any, Context, any>({
7
+ export const retrieveKnowledge = tool({
8
8
  name: 'retrieve_knowledge',
9
9
  description:
10
10
  'Consult the knowledge base for information before answering. Use this tool to make sure the information you provide is faithful.',
@@ -12,10 +12,11 @@ export const retrieveKnowledge = tool<any, Context, any>({
12
12
  query: z.string().describe('The query to search the knowledge base for'),
13
13
  }),
14
14
  execute: async (
15
- { query }: { query: string },
15
+ input: { query: string },
16
16
  runContext?: RunContext<Context>
17
17
  ): Promise<string[]> => {
18
18
  const context = runContext?.context
19
+ const query = input.query
19
20
  if (!context) {
20
21
  throw new Error('Context is required')
21
22
  }
package/src/types.ts CHANGED
@@ -10,6 +10,7 @@ import {
10
10
  import {
11
11
  Agent,
12
12
  AgentInputItem,
13
+ AgentOutputType,
13
14
  RunContext as OpenAIRunContext,
14
15
  Tool as OpenAITool,
15
16
  } from '@openai/agents'
@@ -64,7 +65,7 @@ export type Tool<
64
65
  export type AIAgent<
65
66
  TPlugins extends ResolvedPlugins = ResolvedPlugins,
66
67
  TExtraData = any,
67
- > = Agent<Context<TPlugins, TExtraData>, typeof OutputSchema>
68
+ > = Agent<Context<TPlugins, TExtraData>, AgentOutputType<typeof OutputSchema>>
68
69
  export interface PluginAiAgentOptions<
69
70
  TPlugins extends ResolvedPlugins = ResolvedPlugins,
70
71
  TExtraData = any,