@botonic/core 0.47.0 → 0.48.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.
@@ -40,7 +40,7 @@ class CoreBot {
40
40
  return output;
41
41
  }
42
42
  getBotContext(request) {
43
- const { input, session, lastRoutePath } = request;
43
+ const { input, session, lastRoutePath, settings, secrets } = request;
44
44
  return {
45
45
  input,
46
46
  session,
@@ -55,6 +55,8 @@ class CoreBot {
55
55
  setUserCountry: (country) => this.setUserCountry(country, session),
56
56
  setUserLocale: (locale) => this.setUserLocale(locale, session),
57
57
  setSystemLocale: (locale) => this.setSystemLocale(locale, session),
58
+ settings,
59
+ secrets,
58
60
  };
59
61
  }
60
62
  async runInput(botContext) {
@@ -65,6 +67,8 @@ class CoreBot {
65
67
  input: botContext.input,
66
68
  session: botContext.session,
67
69
  lastRoutePath: botContext.lastRoutePath,
70
+ settings: botContext.settings,
71
+ secrets: botContext.secrets,
68
72
  response: [],
69
73
  };
70
74
  }
@@ -79,9 +83,11 @@ class CoreBot {
79
83
  botContext.session.is_first_interaction = false;
80
84
  return {
81
85
  input: botContext.input,
82
- response,
83
86
  session: botContext.session,
84
87
  lastRoutePath: botContext.lastRoutePath,
88
+ settings: botContext.settings,
89
+ secrets: botContext.secrets,
90
+ response,
85
91
  };
86
92
  }
87
93
  updateSession(session) {
@@ -155,6 +161,8 @@ class CoreBot {
155
161
  response: previousResponse.response.concat(followUp.response),
156
162
  session: botContext.session,
157
163
  lastRoutePath: followUp.lastRoutePath,
164
+ settings: followUp.settings,
165
+ secrets: followUp.secrets,
158
166
  };
159
167
  // Recursive call to handle multiple bot actions in a row
160
168
  if (response.session._botonic_action?.startsWith(models_1.BotonicAction.Redirect)) {
@@ -1 +1 @@
1
- {"version":3,"file":"core-bot.js","sourceRoot":"","sources":["../../src/core-bot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-bot.js","sourceRoot":"","sources":["../../src/core-bot.ts"],"names":[],"mappings":"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"}
@@ -171,6 +171,7 @@ export interface SessionUser<TExtraData = any> {
171
171
  locale: string;
172
172
  country: string;
173
173
  system_locale: string;
174
+ system_locale_updated?: boolean;
174
175
  }
175
176
  export interface HubtypeCaseContactReason {
176
177
  id: string;
@@ -242,6 +243,24 @@ export interface BotRequest<TExtraData = any> {
242
243
  input: Input;
243
244
  lastRoutePath: RoutePath;
244
245
  session: Session<TExtraData>;
246
+ settings: BotSettings;
247
+ secrets: BotSecrets;
248
+ }
249
+ export interface BotSettings {
250
+ HUBTYPE_API_URL: string;
251
+ STATIC_URL: string;
252
+ LITELLM_API_URL: string;
253
+ AZURE_OPENAI_API_BASE: string;
254
+ AZURE_OPENAI_API_VERSION: string;
255
+ LANGUAGE_DETECTION_ENABLED?: boolean;
256
+ CUSTOM_SHORT_URL_HOST: string | null;
257
+ custom: Record<string, any>;
258
+ }
259
+ export interface BotSecrets {
260
+ HUBTYPE_ACCESS_TOKEN: string;
261
+ LITELLM_API_KEY: string;
262
+ AZURE_OPENAI_API_KEY: string;
263
+ custom: Record<string, any>;
245
264
  }
246
265
  export interface BotContext<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> extends BotRequest<TExtraData> {
247
266
  getUserCountry: () => string;
@@ -1 +1 @@
1
- {"version":3,"file":"legacy-types.js","sourceRoot":"","sources":["../../../src/models/legacy-types.ts"],"names":[],"mappings":";AAAA,wIAAwI;;;AAExI,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,yCAA0B,CAAA;IAC1B,6CAA8B,CAAA;IAC9B,mCAAoB,CAAA;IACpB,2CAA4B,CAAA;AAC9B,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAQD,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,mCAAgB,CAAA;IAChB,qCAAkB,CAAA;IAClB,mDAAgC,CAAA;IAChC,2CAAwB,CAAA;AAC1B,CAAC,EALW,eAAe,+BAAf,eAAe,QAK1B;AAQD,IAAY,QAaX;AAbD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,uBAAW,CAAA;IACX,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,mCAAuB,CAAA;IACvB,iCAAqB,CAAA;IACrB,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;AACvB,CAAC,EAbW,QAAQ,wBAAR,QAAQ,QAanB;AAeD,IAAY,KA4BX;AA5BD,WAAY,KAAK;IACf,sBAAa,CAAA;IACb,8BAAqB,CAAA;IACrB,wBAAe,CAAA;IACf,wBAAe,CAAA;IACf,wBAAe,CAAA;IACf,8BAAqB,CAAA;IACrB,8BAAqB,CAAA;IACrB,4BAAmB,CAAA;IACnB,yCAAgC,CAAA;IAChC,8BAAqB,CAAA;IACrB,0BAAiB,CAAA;IACjB,6CAAoC,CAAA;IACpC,+CAAsC,CAAA;IACtC,oBAAW,CAAA;IACX,iCAAwB,CAAA;IACxB,sDAA6C,CAAA;IAC7C,4DAAmD,CAAA;IACnD,8CAAqC,CAAA;IACrC,8CAAqC,CAAA;IACrC,wDAA+C,CAAA;IAC/C,gEAAuD,CAAA;IACvD,4DAAmD,CAAA;IACnD,0CAAiC,CAAA;IACjC,yEAAgE,CAAA;IAChE,2EAAkE,CAAA;IAClE,gEAAuD,CAAA;IACvD,kDAAyC,CAAA;AAC3C,CAAC,EA5BW,KAAK,qBAAL,KAAK,QA4BhB;AA8CD,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,8BAAmB,CAAA;IACnB,uCAA4B,CAAA;AAC9B,CAAC,EAHW,OAAO,uBAAP,OAAO,QAGlB;AAuCD,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,wCAA0B,CAAA;IAC1B,4CAA8B,CAAA;IAC9B,kCAAoB,CAAA;IACpB,0CAA4B,CAAA;AAC9B,CAAC,EALW,UAAU,0BAAV,UAAU,QAKrB;AAgQD,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,6CAA4B,CAAA;IAC5B,2CAA0B,CAAA;IAC1B,2CAA0B,CAAA;IAC1B,6CAA4B,CAAA;AAC9B,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB"}
1
+ {"version":3,"file":"legacy-types.js","sourceRoot":"","sources":["../../../src/models/legacy-types.ts"],"names":[],"mappings":";AAAA,wIAAwI;;;AAExI,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,yCAA0B,CAAA;IAC1B,6CAA8B,CAAA;IAC9B,mCAAoB,CAAA;IACpB,2CAA4B,CAAA;AAC9B,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAQD,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,mCAAgB,CAAA;IAChB,qCAAkB,CAAA;IAClB,mDAAgC,CAAA;IAChC,2CAAwB,CAAA;AAC1B,CAAC,EALW,eAAe,+BAAf,eAAe,QAK1B;AAQD,IAAY,QAaX;AAbD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,uBAAW,CAAA;IACX,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,mCAAuB,CAAA;IACvB,iCAAqB,CAAA;IACrB,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;AACvB,CAAC,EAbW,QAAQ,wBAAR,QAAQ,QAanB;AAeD,IAAY,KA4BX;AA5BD,WAAY,KAAK;IACf,sBAAa,CAAA;IACb,8BAAqB,CAAA;IACrB,wBAAe,CAAA;IACf,wBAAe,CAAA;IACf,wBAAe,CAAA;IACf,8BAAqB,CAAA;IACrB,8BAAqB,CAAA;IACrB,4BAAmB,CAAA;IACnB,yCAAgC,CAAA;IAChC,8BAAqB,CAAA;IACrB,0BAAiB,CAAA;IACjB,6CAAoC,CAAA;IACpC,+CAAsC,CAAA;IACtC,oBAAW,CAAA;IACX,iCAAwB,CAAA;IACxB,sDAA6C,CAAA;IAC7C,4DAAmD,CAAA;IACnD,8CAAqC,CAAA;IACrC,8CAAqC,CAAA;IACrC,wDAA+C,CAAA;IAC/C,gEAAuD,CAAA;IACvD,4DAAmD,CAAA;IACnD,0CAAiC,CAAA;IACjC,yEAAgE,CAAA;IAChE,2EAAkE,CAAA;IAClE,gEAAuD,CAAA;IACvD,kDAAyC,CAAA;AAC3C,CAAC,EA5BW,KAAK,qBAAL,KAAK,QA4BhB;AA8CD,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,8BAAmB,CAAA;IACnB,uCAA4B,CAAA;AAC9B,CAAC,EAHW,OAAO,uBAAP,OAAO,QAGlB;AAuCD,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,wCAA0B,CAAA;IAC1B,4CAA8B,CAAA;IAC9B,kCAAoB,CAAA;IACpB,0CAA4B,CAAA;AAC9B,CAAC,EALW,UAAU,0BAAV,UAAU,QAKrB;AAqRD,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,6CAA4B,CAAA;IAC5B,2CAA0B,CAAA;IAC1B,2CAA0B,CAAA;IAC1B,6CAA4B,CAAA;AAC9B,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB"}
@@ -0,0 +1,91 @@
1
+ import { type BotContext, type BotRequest, type BotSecrets, type BotSettings, type ContactInfo, type Input, type ProviderType, type ResolvedPlugins, type Session, type SessionUser } from '../models';
2
+ export declare const TEST_DEFAULTS: {
3
+ HUBTYPE_API_URL: string;
4
+ STATIC_URL: string;
5
+ LITELLM_API_URL: string;
6
+ AZURE_OPENAI_API_BASE: string;
7
+ AZURE_OPENAI_API_VERSION: string;
8
+ LANGUAGE_DETECTION_ENABLED: boolean;
9
+ HUBTYPE_ACCESS_TOKEN: string;
10
+ LITELLM_API_KEY: string;
11
+ AZURE_OPENAI_API_KEY: string;
12
+ ACCESS_TOKEN: string;
13
+ HUBTYPE_API_HOST: string;
14
+ FLOW_THREAD_ID: string;
15
+ BOT_ID: string;
16
+ USER_ID: string;
17
+ ORG_ID: string;
18
+ ORG_NAME: string;
19
+ PROVIDER: ProviderType;
20
+ LOCALE: string;
21
+ COUNTRY: string;
22
+ BOT_INTERACTION_ID: string;
23
+ MESSAGE_ID: string;
24
+ LAST_ROUTE_PATH: string;
25
+ };
26
+ export declare function createTestSettings(overrides?: Partial<BotSettings>): BotSettings;
27
+ export declare function createTestSecrets(overrides?: Partial<BotSecrets>): BotSecrets;
28
+ export interface TestUserOptions {
29
+ id?: string;
30
+ provider?: ProviderType;
31
+ locale?: string;
32
+ country?: string;
33
+ systemLocale?: string;
34
+ contactInfo?: ContactInfo[];
35
+ extraData?: Record<string, any>;
36
+ }
37
+ export declare function createTestSessionUser(options?: TestUserOptions): SessionUser<Record<string, any>>;
38
+ export interface TestSessionOptions {
39
+ user?: TestUserOptions;
40
+ botId?: string;
41
+ organization?: string;
42
+ organizationId?: string;
43
+ isFirstInteraction?: boolean;
44
+ isTestIntegration?: boolean;
45
+ accessToken?: string;
46
+ hubtypeApi?: string;
47
+ flowThreadId?: string;
48
+ retries?: number;
49
+ shadowing?: boolean;
50
+ hubtypeCaseId?: string;
51
+ captureUserInputNodeId?: string;
52
+ }
53
+ export declare function createTestSession(options?: TestSessionOptions): Session<Record<string, any>>;
54
+ export interface TestInputOptions {
55
+ type?: Input['type'];
56
+ data?: string;
57
+ text?: string;
58
+ payload?: string;
59
+ src?: string;
60
+ botInteractionId?: string;
61
+ messageId?: string;
62
+ context?: Input['context'];
63
+ transcript?: string;
64
+ }
65
+ export declare function createTestInput(options?: TestInputOptions): Input;
66
+ export interface TestBotRequestOptions {
67
+ input?: TestInputOptions | Input;
68
+ session?: TestSessionOptions | Session;
69
+ lastRoutePath?: string;
70
+ settings?: Partial<BotSettings> | BotSettings;
71
+ secrets?: Partial<BotSecrets> | BotSecrets;
72
+ }
73
+ export declare function createTestBotRequest(options?: TestBotRequestOptions): BotRequest;
74
+ export interface TestBotContextOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins> extends TestBotRequestOptions {
75
+ plugins?: TPlugins;
76
+ params?: Record<string, string>;
77
+ defaultDelay?: number;
78
+ defaultTyping?: number;
79
+ }
80
+ export declare function createTestBotContext<TPlugins extends ResolvedPlugins = ResolvedPlugins>(options?: TestBotContextOptions<TPlugins>): BotContext<TPlugins>;
81
+ /**
82
+ * Alias for `createTestBotContext` typed as `PluginPreRequest`.
83
+ * PluginPreRequest === BotContext in @botonic/core.
84
+ */
85
+ export declare const createTestPluginPreRequest: typeof createTestBotContext;
86
+ export interface TestPluginPostRequestOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins> extends TestBotContextOptions<TPlugins> {
87
+ response?: string | null;
88
+ }
89
+ export declare function createTestPluginPostRequest<TPlugins extends ResolvedPlugins = ResolvedPlugins>(options?: TestPluginPostRequestOptions<TPlugins>): BotContext<TPlugins> & {
90
+ response: string | null;
91
+ };
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTestPluginPreRequest = exports.TEST_DEFAULTS = void 0;
4
+ exports.createTestSettings = createTestSettings;
5
+ exports.createTestSecrets = createTestSecrets;
6
+ exports.createTestSessionUser = createTestSessionUser;
7
+ exports.createTestSession = createTestSession;
8
+ exports.createTestInput = createTestInput;
9
+ exports.createTestBotRequest = createTestBotRequest;
10
+ exports.createTestBotContext = createTestBotContext;
11
+ exports.createTestPluginPostRequest = createTestPluginPostRequest;
12
+ const models_1 = require("../models");
13
+ // ---------------------------------------------------------------------------
14
+ // Default values
15
+ // ---------------------------------------------------------------------------
16
+ exports.TEST_DEFAULTS = {
17
+ HUBTYPE_API_URL: 'https://api.hubtype.com',
18
+ STATIC_URL: 'https://static.hubtype.com',
19
+ LITELLM_API_URL: 'https://api.litellm.com',
20
+ AZURE_OPENAI_API_BASE: 'https://api.openai.com',
21
+ AZURE_OPENAI_API_VERSION: '2026-02-01',
22
+ LANGUAGE_DETECTION_ENABLED: true,
23
+ HUBTYPE_ACCESS_TOKEN: 'testAccessToken', // pragma: allowlist secret
24
+ LITELLM_API_KEY: 'testLiteLLMAPIKey', // pragma: allowlist secret
25
+ AZURE_OPENAI_API_KEY: 'testAzureOpenAIAPIKey', // pragma: allowlist secret
26
+ ACCESS_TOKEN: 'fake_access_token',
27
+ HUBTYPE_API_HOST: 'https://api.hubtype.com',
28
+ FLOW_THREAD_ID: 'testFlowThreadId',
29
+ BOT_ID: 'testBotId',
30
+ USER_ID: 'testUserId',
31
+ ORG_ID: 'testOrgId',
32
+ ORG_NAME: 'testOrg',
33
+ PROVIDER: models_1.PROVIDER.WEBCHAT,
34
+ LOCALE: 'en',
35
+ COUNTRY: 'US',
36
+ BOT_INTERACTION_ID: 'testInteractionId',
37
+ MESSAGE_ID: 'testMessageId',
38
+ LAST_ROUTE_PATH: '',
39
+ };
40
+ // ---------------------------------------------------------------------------
41
+ // Leaf factories
42
+ // ---------------------------------------------------------------------------
43
+ function createTestSettings(overrides) {
44
+ return {
45
+ HUBTYPE_API_URL: exports.TEST_DEFAULTS.HUBTYPE_API_URL,
46
+ STATIC_URL: exports.TEST_DEFAULTS.STATIC_URL,
47
+ LITELLM_API_URL: exports.TEST_DEFAULTS.LITELLM_API_URL,
48
+ AZURE_OPENAI_API_BASE: exports.TEST_DEFAULTS.AZURE_OPENAI_API_BASE,
49
+ AZURE_OPENAI_API_VERSION: exports.TEST_DEFAULTS.AZURE_OPENAI_API_VERSION,
50
+ LANGUAGE_DETECTION_ENABLED: exports.TEST_DEFAULTS.LANGUAGE_DETECTION_ENABLED,
51
+ CUSTOM_SHORT_URL_HOST: null,
52
+ custom: {},
53
+ ...overrides,
54
+ };
55
+ }
56
+ function createTestSecrets(overrides) {
57
+ return {
58
+ HUBTYPE_ACCESS_TOKEN: exports.TEST_DEFAULTS.HUBTYPE_ACCESS_TOKEN,
59
+ LITELLM_API_KEY: exports.TEST_DEFAULTS.LITELLM_API_KEY,
60
+ AZURE_OPENAI_API_KEY: exports.TEST_DEFAULTS.AZURE_OPENAI_API_KEY,
61
+ custom: {},
62
+ ...overrides,
63
+ };
64
+ }
65
+ function createTestSessionUser(options) {
66
+ const locale = options?.locale ?? exports.TEST_DEFAULTS.LOCALE;
67
+ const country = options?.country ?? exports.TEST_DEFAULTS.COUNTRY;
68
+ return {
69
+ id: options?.id ?? exports.TEST_DEFAULTS.USER_ID,
70
+ provider: options?.provider ?? exports.TEST_DEFAULTS.PROVIDER,
71
+ locale,
72
+ country,
73
+ system_locale: options?.systemLocale ?? locale,
74
+ contact_info: options?.contactInfo ?? [],
75
+ extra_data: options?.extraData ?? {},
76
+ };
77
+ }
78
+ function createTestSession(options) {
79
+ return {
80
+ bot: { id: options?.botId ?? exports.TEST_DEFAULTS.BOT_ID },
81
+ user: createTestSessionUser(options?.user),
82
+ organization: options?.organization ?? exports.TEST_DEFAULTS.ORG_NAME,
83
+ organization_id: options?.organizationId ?? exports.TEST_DEFAULTS.ORG_ID,
84
+ is_first_interaction: options?.isFirstInteraction ?? false,
85
+ is_test_integration: options?.isTestIntegration ?? false,
86
+ _access_token: options?.accessToken ?? exports.TEST_DEFAULTS.ACCESS_TOKEN,
87
+ _hubtype_api: options?.hubtypeApi ?? exports.TEST_DEFAULTS.HUBTYPE_API_HOST,
88
+ flow_thread_id: options?.flowThreadId ?? exports.TEST_DEFAULTS.FLOW_THREAD_ID,
89
+ __retries: options?.retries ?? 0,
90
+ _shadowing: options?.shadowing,
91
+ _hubtype_case_id: options?.hubtypeCaseId,
92
+ capture_user_input: options?.captureUserInputNodeId
93
+ ? { node_id: options.captureUserInputNodeId }
94
+ : undefined,
95
+ };
96
+ }
97
+ function createTestInput(options) {
98
+ return {
99
+ type: options?.type ?? models_1.INPUT.TEXT,
100
+ data: options?.data,
101
+ text: options?.text,
102
+ payload: options?.payload,
103
+ src: options?.src,
104
+ transcript: options?.transcript,
105
+ context: options?.context,
106
+ bot_interaction_id: options?.botInteractionId ?? exports.TEST_DEFAULTS.BOT_INTERACTION_ID,
107
+ message_id: options?.messageId ?? exports.TEST_DEFAULTS.MESSAGE_ID,
108
+ };
109
+ }
110
+ function isFullInput(v) {
111
+ return 'bot_interaction_id' in v && 'message_id' in v;
112
+ }
113
+ function isFullSession(v) {
114
+ return 'bot' in v && '__retries' in v;
115
+ }
116
+ function isFullSettings(v) {
117
+ return ('HUBTYPE_API_URL' in v &&
118
+ 'STATIC_URL' in v &&
119
+ 'LITELLM_API_URL' in v &&
120
+ 'AZURE_OPENAI_API_BASE' in v &&
121
+ 'AZURE_OPENAI_API_VERSION' in v &&
122
+ 'LANGUAGE_DETECTION_ENABLED' in v &&
123
+ 'CUSTOM_SHORT_URL_HOST' in v &&
124
+ 'custom' in v);
125
+ }
126
+ function isFullSecrets(v) {
127
+ return ('HUBTYPE_ACCESS_TOKEN' in v &&
128
+ 'LITELLM_API_KEY' in v &&
129
+ 'AZURE_OPENAI_API_KEY' in v &&
130
+ 'custom' in v);
131
+ }
132
+ function createTestBotRequest(options) {
133
+ const input = options?.input == null
134
+ ? createTestInput()
135
+ : isFullInput(options.input)
136
+ ? options.input
137
+ : createTestInput(options.input);
138
+ const session = options?.session == null
139
+ ? createTestSession()
140
+ : isFullSession(options.session)
141
+ ? options.session
142
+ : createTestSession(options.session);
143
+ const settings = options?.settings == null
144
+ ? createTestSettings()
145
+ : isFullSettings(options.settings)
146
+ ? options.settings
147
+ : createTestSettings(options.settings);
148
+ const secrets = options?.secrets == null
149
+ ? createTestSecrets()
150
+ : isFullSecrets(options.secrets)
151
+ ? options.secrets
152
+ : createTestSecrets(options.secrets);
153
+ return {
154
+ input,
155
+ session,
156
+ lastRoutePath: options?.lastRoutePath ?? exports.TEST_DEFAULTS.LAST_ROUTE_PATH,
157
+ settings,
158
+ secrets,
159
+ };
160
+ }
161
+ function createTestBotContext(options) {
162
+ const request = createTestBotRequest(options);
163
+ const sessionForLocale = options?.session == null
164
+ ? createTestSession()
165
+ : isFullSession(options.session)
166
+ ? options.session
167
+ : createTestSession(options.session);
168
+ const locale = sessionForLocale.user.locale;
169
+ const country = sessionForLocale.user.country;
170
+ const systemLocale = sessionForLocale.user.system_locale;
171
+ return {
172
+ ...request,
173
+ plugins: options?.plugins ?? {},
174
+ params: options?.params ?? {},
175
+ defaultDelay: options?.defaultDelay ?? 0,
176
+ defaultTyping: options?.defaultTyping ?? 0,
177
+ getUserLocale: () => locale,
178
+ getUserCountry: () => country,
179
+ getSystemLocale: () => systemLocale,
180
+ setUserLocale: () => undefined,
181
+ setUserCountry: () => undefined,
182
+ setSystemLocale: () => undefined,
183
+ };
184
+ }
185
+ /**
186
+ * Alias for `createTestBotContext` typed as `PluginPreRequest`.
187
+ * PluginPreRequest === BotContext in @botonic/core.
188
+ */
189
+ exports.createTestPluginPreRequest = createTestBotContext;
190
+ function createTestPluginPostRequest(options) {
191
+ return {
192
+ ...createTestBotContext(options),
193
+ response: options?.response ?? null,
194
+ };
195
+ }
196
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"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"}
@@ -40,7 +40,7 @@ class CoreBot {
40
40
  return output;
41
41
  }
42
42
  getBotContext(request) {
43
- const { input, session, lastRoutePath } = request;
43
+ const { input, session, lastRoutePath, settings, secrets } = request;
44
44
  return {
45
45
  input,
46
46
  session,
@@ -55,6 +55,8 @@ class CoreBot {
55
55
  setUserCountry: (country) => this.setUserCountry(country, session),
56
56
  setUserLocale: (locale) => this.setUserLocale(locale, session),
57
57
  setSystemLocale: (locale) => this.setSystemLocale(locale, session),
58
+ settings,
59
+ secrets,
58
60
  };
59
61
  }
60
62
  async runInput(botContext) {
@@ -65,6 +67,8 @@ class CoreBot {
65
67
  input: botContext.input,
66
68
  session: botContext.session,
67
69
  lastRoutePath: botContext.lastRoutePath,
70
+ settings: botContext.settings,
71
+ secrets: botContext.secrets,
68
72
  response: [],
69
73
  };
70
74
  }
@@ -79,9 +83,11 @@ class CoreBot {
79
83
  botContext.session.is_first_interaction = false;
80
84
  return {
81
85
  input: botContext.input,
82
- response,
83
86
  session: botContext.session,
84
87
  lastRoutePath: botContext.lastRoutePath,
88
+ settings: botContext.settings,
89
+ secrets: botContext.secrets,
90
+ response,
85
91
  };
86
92
  }
87
93
  updateSession(session) {
@@ -155,6 +161,8 @@ class CoreBot {
155
161
  response: previousResponse.response.concat(followUp.response),
156
162
  session: botContext.session,
157
163
  lastRoutePath: followUp.lastRoutePath,
164
+ settings: followUp.settings,
165
+ secrets: followUp.secrets,
158
166
  };
159
167
  // Recursive call to handle multiple bot actions in a row
160
168
  if (response.session._botonic_action?.startsWith(models_1.BotonicAction.Redirect)) {
@@ -1 +1 @@
1
- {"version":3,"file":"core-bot.js","sourceRoot":"","sources":["../../src/core-bot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-bot.js","sourceRoot":"","sources":["../../src/core-bot.ts"],"names":[],"mappings":"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"}
@@ -171,6 +171,7 @@ export interface SessionUser<TExtraData = any> {
171
171
  locale: string;
172
172
  country: string;
173
173
  system_locale: string;
174
+ system_locale_updated?: boolean;
174
175
  }
175
176
  export interface HubtypeCaseContactReason {
176
177
  id: string;
@@ -242,6 +243,24 @@ export interface BotRequest<TExtraData = any> {
242
243
  input: Input;
243
244
  lastRoutePath: RoutePath;
244
245
  session: Session<TExtraData>;
246
+ settings: BotSettings;
247
+ secrets: BotSecrets;
248
+ }
249
+ export interface BotSettings {
250
+ HUBTYPE_API_URL: string;
251
+ STATIC_URL: string;
252
+ LITELLM_API_URL: string;
253
+ AZURE_OPENAI_API_BASE: string;
254
+ AZURE_OPENAI_API_VERSION: string;
255
+ LANGUAGE_DETECTION_ENABLED?: boolean;
256
+ CUSTOM_SHORT_URL_HOST: string | null;
257
+ custom: Record<string, any>;
258
+ }
259
+ export interface BotSecrets {
260
+ HUBTYPE_ACCESS_TOKEN: string;
261
+ LITELLM_API_KEY: string;
262
+ AZURE_OPENAI_API_KEY: string;
263
+ custom: Record<string, any>;
245
264
  }
246
265
  export interface BotContext<TPlugins extends ResolvedPlugins = ResolvedPlugins, TExtraData = any> extends BotRequest<TExtraData> {
247
266
  getUserCountry: () => string;
@@ -1 +1 @@
1
- {"version":3,"file":"legacy-types.js","sourceRoot":"","sources":["../../../src/models/legacy-types.ts"],"names":[],"mappings":";AAAA,wIAAwI;;;AAExI,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,yCAA0B,CAAA;IAC1B,6CAA8B,CAAA;IAC9B,mCAAoB,CAAA;IACpB,2CAA4B,CAAA;AAC9B,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAQD,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,mCAAgB,CAAA;IAChB,qCAAkB,CAAA;IAClB,mDAAgC,CAAA;IAChC,2CAAwB,CAAA;AAC1B,CAAC,EALW,eAAe,+BAAf,eAAe,QAK1B;AAQD,IAAY,QAaX;AAbD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,uBAAW,CAAA;IACX,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,mCAAuB,CAAA;IACvB,iCAAqB,CAAA;IACrB,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;AACvB,CAAC,EAbW,QAAQ,wBAAR,QAAQ,QAanB;AAeD,IAAY,KA4BX;AA5BD,WAAY,KAAK;IACf,sBAAa,CAAA;IACb,8BAAqB,CAAA;IACrB,wBAAe,CAAA;IACf,wBAAe,CAAA;IACf,wBAAe,CAAA;IACf,8BAAqB,CAAA;IACrB,8BAAqB,CAAA;IACrB,4BAAmB,CAAA;IACnB,yCAAgC,CAAA;IAChC,8BAAqB,CAAA;IACrB,0BAAiB,CAAA;IACjB,6CAAoC,CAAA;IACpC,+CAAsC,CAAA;IACtC,oBAAW,CAAA;IACX,iCAAwB,CAAA;IACxB,sDAA6C,CAAA;IAC7C,4DAAmD,CAAA;IACnD,8CAAqC,CAAA;IACrC,8CAAqC,CAAA;IACrC,wDAA+C,CAAA;IAC/C,gEAAuD,CAAA;IACvD,4DAAmD,CAAA;IACnD,0CAAiC,CAAA;IACjC,yEAAgE,CAAA;IAChE,2EAAkE,CAAA;IAClE,gEAAuD,CAAA;IACvD,kDAAyC,CAAA;AAC3C,CAAC,EA5BW,KAAK,qBAAL,KAAK,QA4BhB;AA8CD,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,8BAAmB,CAAA;IACnB,uCAA4B,CAAA;AAC9B,CAAC,EAHW,OAAO,uBAAP,OAAO,QAGlB;AAuCD,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,wCAA0B,CAAA;IAC1B,4CAA8B,CAAA;IAC9B,kCAAoB,CAAA;IACpB,0CAA4B,CAAA;AAC9B,CAAC,EALW,UAAU,0BAAV,UAAU,QAKrB;AAgQD,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,6CAA4B,CAAA;IAC5B,2CAA0B,CAAA;IAC1B,2CAA0B,CAAA;IAC1B,6CAA4B,CAAA;AAC9B,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB"}
1
+ {"version":3,"file":"legacy-types.js","sourceRoot":"","sources":["../../../src/models/legacy-types.ts"],"names":[],"mappings":";AAAA,wIAAwI;;;AAExI,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,yCAA0B,CAAA;IAC1B,6CAA8B,CAAA;IAC9B,mCAAoB,CAAA;IACpB,2CAA4B,CAAA;AAC9B,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAQD,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,mCAAgB,CAAA;IAChB,qCAAkB,CAAA;IAClB,mDAAgC,CAAA;IAChC,2CAAwB,CAAA;AAC1B,CAAC,EALW,eAAe,+BAAf,eAAe,QAK1B;AAQD,IAAY,QAaX;AAbD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,uBAAW,CAAA;IACX,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,mCAAuB,CAAA;IACvB,iCAAqB,CAAA;IACrB,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;AACvB,CAAC,EAbW,QAAQ,wBAAR,QAAQ,QAanB;AAeD,IAAY,KA4BX;AA5BD,WAAY,KAAK;IACf,sBAAa,CAAA;IACb,8BAAqB,CAAA;IACrB,wBAAe,CAAA;IACf,wBAAe,CAAA;IACf,wBAAe,CAAA;IACf,8BAAqB,CAAA;IACrB,8BAAqB,CAAA;IACrB,4BAAmB,CAAA;IACnB,yCAAgC,CAAA;IAChC,8BAAqB,CAAA;IACrB,0BAAiB,CAAA;IACjB,6CAAoC,CAAA;IACpC,+CAAsC,CAAA;IACtC,oBAAW,CAAA;IACX,iCAAwB,CAAA;IACxB,sDAA6C,CAAA;IAC7C,4DAAmD,CAAA;IACnD,8CAAqC,CAAA;IACrC,8CAAqC,CAAA;IACrC,wDAA+C,CAAA;IAC/C,gEAAuD,CAAA;IACvD,4DAAmD,CAAA;IACnD,0CAAiC,CAAA;IACjC,yEAAgE,CAAA;IAChE,2EAAkE,CAAA;IAClE,gEAAuD,CAAA;IACvD,kDAAyC,CAAA;AAC3C,CAAC,EA5BW,KAAK,qBAAL,KAAK,QA4BhB;AA8CD,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,8BAAmB,CAAA;IACnB,uCAA4B,CAAA;AAC9B,CAAC,EAHW,OAAO,uBAAP,OAAO,QAGlB;AAuCD,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,wCAA0B,CAAA;IAC1B,4CAA8B,CAAA;IAC9B,kCAAoB,CAAA;IACpB,0CAA4B,CAAA;AAC9B,CAAC,EALW,UAAU,0BAAV,UAAU,QAKrB;AAqRD,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,6CAA4B,CAAA;IAC5B,2CAA0B,CAAA;IAC1B,2CAA0B,CAAA;IAC1B,6CAA4B,CAAA;AAC9B,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB"}
@@ -0,0 +1,91 @@
1
+ import { type BotContext, type BotRequest, type BotSecrets, type BotSettings, type ContactInfo, type Input, type ProviderType, type ResolvedPlugins, type Session, type SessionUser } from '../models';
2
+ export declare const TEST_DEFAULTS: {
3
+ HUBTYPE_API_URL: string;
4
+ STATIC_URL: string;
5
+ LITELLM_API_URL: string;
6
+ AZURE_OPENAI_API_BASE: string;
7
+ AZURE_OPENAI_API_VERSION: string;
8
+ LANGUAGE_DETECTION_ENABLED: boolean;
9
+ HUBTYPE_ACCESS_TOKEN: string;
10
+ LITELLM_API_KEY: string;
11
+ AZURE_OPENAI_API_KEY: string;
12
+ ACCESS_TOKEN: string;
13
+ HUBTYPE_API_HOST: string;
14
+ FLOW_THREAD_ID: string;
15
+ BOT_ID: string;
16
+ USER_ID: string;
17
+ ORG_ID: string;
18
+ ORG_NAME: string;
19
+ PROVIDER: ProviderType;
20
+ LOCALE: string;
21
+ COUNTRY: string;
22
+ BOT_INTERACTION_ID: string;
23
+ MESSAGE_ID: string;
24
+ LAST_ROUTE_PATH: string;
25
+ };
26
+ export declare function createTestSettings(overrides?: Partial<BotSettings>): BotSettings;
27
+ export declare function createTestSecrets(overrides?: Partial<BotSecrets>): BotSecrets;
28
+ export interface TestUserOptions {
29
+ id?: string;
30
+ provider?: ProviderType;
31
+ locale?: string;
32
+ country?: string;
33
+ systemLocale?: string;
34
+ contactInfo?: ContactInfo[];
35
+ extraData?: Record<string, any>;
36
+ }
37
+ export declare function createTestSessionUser(options?: TestUserOptions): SessionUser<Record<string, any>>;
38
+ export interface TestSessionOptions {
39
+ user?: TestUserOptions;
40
+ botId?: string;
41
+ organization?: string;
42
+ organizationId?: string;
43
+ isFirstInteraction?: boolean;
44
+ isTestIntegration?: boolean;
45
+ accessToken?: string;
46
+ hubtypeApi?: string;
47
+ flowThreadId?: string;
48
+ retries?: number;
49
+ shadowing?: boolean;
50
+ hubtypeCaseId?: string;
51
+ captureUserInputNodeId?: string;
52
+ }
53
+ export declare function createTestSession(options?: TestSessionOptions): Session<Record<string, any>>;
54
+ export interface TestInputOptions {
55
+ type?: Input['type'];
56
+ data?: string;
57
+ text?: string;
58
+ payload?: string;
59
+ src?: string;
60
+ botInteractionId?: string;
61
+ messageId?: string;
62
+ context?: Input['context'];
63
+ transcript?: string;
64
+ }
65
+ export declare function createTestInput(options?: TestInputOptions): Input;
66
+ export interface TestBotRequestOptions {
67
+ input?: TestInputOptions | Input;
68
+ session?: TestSessionOptions | Session;
69
+ lastRoutePath?: string;
70
+ settings?: Partial<BotSettings> | BotSettings;
71
+ secrets?: Partial<BotSecrets> | BotSecrets;
72
+ }
73
+ export declare function createTestBotRequest(options?: TestBotRequestOptions): BotRequest;
74
+ export interface TestBotContextOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins> extends TestBotRequestOptions {
75
+ plugins?: TPlugins;
76
+ params?: Record<string, string>;
77
+ defaultDelay?: number;
78
+ defaultTyping?: number;
79
+ }
80
+ export declare function createTestBotContext<TPlugins extends ResolvedPlugins = ResolvedPlugins>(options?: TestBotContextOptions<TPlugins>): BotContext<TPlugins>;
81
+ /**
82
+ * Alias for `createTestBotContext` typed as `PluginPreRequest`.
83
+ * PluginPreRequest === BotContext in @botonic/core.
84
+ */
85
+ export declare const createTestPluginPreRequest: typeof createTestBotContext;
86
+ export interface TestPluginPostRequestOptions<TPlugins extends ResolvedPlugins = ResolvedPlugins> extends TestBotContextOptions<TPlugins> {
87
+ response?: string | null;
88
+ }
89
+ export declare function createTestPluginPostRequest<TPlugins extends ResolvedPlugins = ResolvedPlugins>(options?: TestPluginPostRequestOptions<TPlugins>): BotContext<TPlugins> & {
90
+ response: string | null;
91
+ };
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTestPluginPreRequest = exports.TEST_DEFAULTS = void 0;
4
+ exports.createTestSettings = createTestSettings;
5
+ exports.createTestSecrets = createTestSecrets;
6
+ exports.createTestSessionUser = createTestSessionUser;
7
+ exports.createTestSession = createTestSession;
8
+ exports.createTestInput = createTestInput;
9
+ exports.createTestBotRequest = createTestBotRequest;
10
+ exports.createTestBotContext = createTestBotContext;
11
+ exports.createTestPluginPostRequest = createTestPluginPostRequest;
12
+ const models_1 = require("../models");
13
+ // ---------------------------------------------------------------------------
14
+ // Default values
15
+ // ---------------------------------------------------------------------------
16
+ exports.TEST_DEFAULTS = {
17
+ HUBTYPE_API_URL: 'https://api.hubtype.com',
18
+ STATIC_URL: 'https://static.hubtype.com',
19
+ LITELLM_API_URL: 'https://api.litellm.com',
20
+ AZURE_OPENAI_API_BASE: 'https://api.openai.com',
21
+ AZURE_OPENAI_API_VERSION: '2026-02-01',
22
+ LANGUAGE_DETECTION_ENABLED: true,
23
+ HUBTYPE_ACCESS_TOKEN: 'testAccessToken', // pragma: allowlist secret
24
+ LITELLM_API_KEY: 'testLiteLLMAPIKey', // pragma: allowlist secret
25
+ AZURE_OPENAI_API_KEY: 'testAzureOpenAIAPIKey', // pragma: allowlist secret
26
+ ACCESS_TOKEN: 'fake_access_token',
27
+ HUBTYPE_API_HOST: 'https://api.hubtype.com',
28
+ FLOW_THREAD_ID: 'testFlowThreadId',
29
+ BOT_ID: 'testBotId',
30
+ USER_ID: 'testUserId',
31
+ ORG_ID: 'testOrgId',
32
+ ORG_NAME: 'testOrg',
33
+ PROVIDER: models_1.PROVIDER.WEBCHAT,
34
+ LOCALE: 'en',
35
+ COUNTRY: 'US',
36
+ BOT_INTERACTION_ID: 'testInteractionId',
37
+ MESSAGE_ID: 'testMessageId',
38
+ LAST_ROUTE_PATH: '',
39
+ };
40
+ // ---------------------------------------------------------------------------
41
+ // Leaf factories
42
+ // ---------------------------------------------------------------------------
43
+ function createTestSettings(overrides) {
44
+ return {
45
+ HUBTYPE_API_URL: exports.TEST_DEFAULTS.HUBTYPE_API_URL,
46
+ STATIC_URL: exports.TEST_DEFAULTS.STATIC_URL,
47
+ LITELLM_API_URL: exports.TEST_DEFAULTS.LITELLM_API_URL,
48
+ AZURE_OPENAI_API_BASE: exports.TEST_DEFAULTS.AZURE_OPENAI_API_BASE,
49
+ AZURE_OPENAI_API_VERSION: exports.TEST_DEFAULTS.AZURE_OPENAI_API_VERSION,
50
+ LANGUAGE_DETECTION_ENABLED: exports.TEST_DEFAULTS.LANGUAGE_DETECTION_ENABLED,
51
+ CUSTOM_SHORT_URL_HOST: null,
52
+ custom: {},
53
+ ...overrides,
54
+ };
55
+ }
56
+ function createTestSecrets(overrides) {
57
+ return {
58
+ HUBTYPE_ACCESS_TOKEN: exports.TEST_DEFAULTS.HUBTYPE_ACCESS_TOKEN,
59
+ LITELLM_API_KEY: exports.TEST_DEFAULTS.LITELLM_API_KEY,
60
+ AZURE_OPENAI_API_KEY: exports.TEST_DEFAULTS.AZURE_OPENAI_API_KEY,
61
+ custom: {},
62
+ ...overrides,
63
+ };
64
+ }
65
+ function createTestSessionUser(options) {
66
+ const locale = options?.locale ?? exports.TEST_DEFAULTS.LOCALE;
67
+ const country = options?.country ?? exports.TEST_DEFAULTS.COUNTRY;
68
+ return {
69
+ id: options?.id ?? exports.TEST_DEFAULTS.USER_ID,
70
+ provider: options?.provider ?? exports.TEST_DEFAULTS.PROVIDER,
71
+ locale,
72
+ country,
73
+ system_locale: options?.systemLocale ?? locale,
74
+ contact_info: options?.contactInfo ?? [],
75
+ extra_data: options?.extraData ?? {},
76
+ };
77
+ }
78
+ function createTestSession(options) {
79
+ return {
80
+ bot: { id: options?.botId ?? exports.TEST_DEFAULTS.BOT_ID },
81
+ user: createTestSessionUser(options?.user),
82
+ organization: options?.organization ?? exports.TEST_DEFAULTS.ORG_NAME,
83
+ organization_id: options?.organizationId ?? exports.TEST_DEFAULTS.ORG_ID,
84
+ is_first_interaction: options?.isFirstInteraction ?? false,
85
+ is_test_integration: options?.isTestIntegration ?? false,
86
+ _access_token: options?.accessToken ?? exports.TEST_DEFAULTS.ACCESS_TOKEN,
87
+ _hubtype_api: options?.hubtypeApi ?? exports.TEST_DEFAULTS.HUBTYPE_API_HOST,
88
+ flow_thread_id: options?.flowThreadId ?? exports.TEST_DEFAULTS.FLOW_THREAD_ID,
89
+ __retries: options?.retries ?? 0,
90
+ _shadowing: options?.shadowing,
91
+ _hubtype_case_id: options?.hubtypeCaseId,
92
+ capture_user_input: options?.captureUserInputNodeId
93
+ ? { node_id: options.captureUserInputNodeId }
94
+ : undefined,
95
+ };
96
+ }
97
+ function createTestInput(options) {
98
+ return {
99
+ type: options?.type ?? models_1.INPUT.TEXT,
100
+ data: options?.data,
101
+ text: options?.text,
102
+ payload: options?.payload,
103
+ src: options?.src,
104
+ transcript: options?.transcript,
105
+ context: options?.context,
106
+ bot_interaction_id: options?.botInteractionId ?? exports.TEST_DEFAULTS.BOT_INTERACTION_ID,
107
+ message_id: options?.messageId ?? exports.TEST_DEFAULTS.MESSAGE_ID,
108
+ };
109
+ }
110
+ function isFullInput(v) {
111
+ return 'bot_interaction_id' in v && 'message_id' in v;
112
+ }
113
+ function isFullSession(v) {
114
+ return 'bot' in v && '__retries' in v;
115
+ }
116
+ function isFullSettings(v) {
117
+ return ('HUBTYPE_API_URL' in v &&
118
+ 'STATIC_URL' in v &&
119
+ 'LITELLM_API_URL' in v &&
120
+ 'AZURE_OPENAI_API_BASE' in v &&
121
+ 'AZURE_OPENAI_API_VERSION' in v &&
122
+ 'LANGUAGE_DETECTION_ENABLED' in v &&
123
+ 'CUSTOM_SHORT_URL_HOST' in v &&
124
+ 'custom' in v);
125
+ }
126
+ function isFullSecrets(v) {
127
+ return ('HUBTYPE_ACCESS_TOKEN' in v &&
128
+ 'LITELLM_API_KEY' in v &&
129
+ 'AZURE_OPENAI_API_KEY' in v &&
130
+ 'custom' in v);
131
+ }
132
+ function createTestBotRequest(options) {
133
+ const input = options?.input == null
134
+ ? createTestInput()
135
+ : isFullInput(options.input)
136
+ ? options.input
137
+ : createTestInput(options.input);
138
+ const session = options?.session == null
139
+ ? createTestSession()
140
+ : isFullSession(options.session)
141
+ ? options.session
142
+ : createTestSession(options.session);
143
+ const settings = options?.settings == null
144
+ ? createTestSettings()
145
+ : isFullSettings(options.settings)
146
+ ? options.settings
147
+ : createTestSettings(options.settings);
148
+ const secrets = options?.secrets == null
149
+ ? createTestSecrets()
150
+ : isFullSecrets(options.secrets)
151
+ ? options.secrets
152
+ : createTestSecrets(options.secrets);
153
+ return {
154
+ input,
155
+ session,
156
+ lastRoutePath: options?.lastRoutePath ?? exports.TEST_DEFAULTS.LAST_ROUTE_PATH,
157
+ settings,
158
+ secrets,
159
+ };
160
+ }
161
+ function createTestBotContext(options) {
162
+ const request = createTestBotRequest(options);
163
+ const sessionForLocale = options?.session == null
164
+ ? createTestSession()
165
+ : isFullSession(options.session)
166
+ ? options.session
167
+ : createTestSession(options.session);
168
+ const locale = sessionForLocale.user.locale;
169
+ const country = sessionForLocale.user.country;
170
+ const systemLocale = sessionForLocale.user.system_locale;
171
+ return {
172
+ ...request,
173
+ plugins: options?.plugins ?? {},
174
+ params: options?.params ?? {},
175
+ defaultDelay: options?.defaultDelay ?? 0,
176
+ defaultTyping: options?.defaultTyping ?? 0,
177
+ getUserLocale: () => locale,
178
+ getUserCountry: () => country,
179
+ getSystemLocale: () => systemLocale,
180
+ setUserLocale: () => undefined,
181
+ setUserCountry: () => undefined,
182
+ setSystemLocale: () => undefined,
183
+ };
184
+ }
185
+ /**
186
+ * Alias for `createTestBotContext` typed as `PluginPreRequest`.
187
+ * PluginPreRequest === BotContext in @botonic/core.
188
+ */
189
+ exports.createTestPluginPreRequest = createTestBotContext;
190
+ function createTestPluginPostRequest(options) {
191
+ return {
192
+ ...createTestBotContext(options),
193
+ response: options?.response ?? null,
194
+ };
195
+ }
196
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,20 @@
1
1
  {
2
2
  "name": "@botonic/core",
3
- "version": "0.47.0",
3
+ "version": "0.48.0",
4
4
  "license": "MIT",
5
5
  "description": "Build Chatbots using React",
6
6
  "main": "./lib/cjs/index.js",
7
7
  "module": "./lib/esm/index.js",
8
+ "exports": {
9
+ ".": {
10
+ "require": "./lib/cjs/index.js",
11
+ "import": "./lib/esm/index.js"
12
+ },
13
+ "./testing": {
14
+ "require": "./lib/cjs/testing/index.js",
15
+ "import": "./lib/esm/testing/index.js"
16
+ }
17
+ },
8
18
  "scripts": {
9
19
  "test": "../../node_modules/.bin/jest --coverage",
10
20
  "prepublishOnly": "rm -rf lib && npm i && npm run build",
@@ -29,6 +39,13 @@
29
39
  "index.d.ts",
30
40
  "README.md"
31
41
  ],
42
+ "typesVersions": {
43
+ "*": {
44
+ "testing": [
45
+ "./lib/cjs/testing/index.d.ts"
46
+ ]
47
+ }
48
+ },
32
49
  "dependencies": {
33
50
  "@babel/plugin-transform-runtime": "^7.25.9",
34
51
  "axios": "^1.13.6",
package/src/core-bot.ts CHANGED
@@ -97,7 +97,7 @@ export class CoreBot {
97
97
  }
98
98
 
99
99
  private getBotContext(request: BotRequest): BotContext {
100
- const { input, session, lastRoutePath } = request
100
+ const { input, session, lastRoutePath, settings, secrets } = request
101
101
  return {
102
102
  input,
103
103
  session,
@@ -114,6 +114,8 @@ export class CoreBot {
114
114
  setUserLocale: (locale: string) => this.setUserLocale(locale, session),
115
115
  setSystemLocale: (locale: string) =>
116
116
  this.setSystemLocale(locale, session),
117
+ settings,
118
+ secrets,
117
119
  }
118
120
  }
119
121
 
@@ -126,6 +128,8 @@ export class CoreBot {
126
128
  input: botContext.input,
127
129
  session: botContext.session,
128
130
  lastRoutePath: botContext.lastRoutePath,
131
+ settings: botContext.settings,
132
+ secrets: botContext.secrets,
129
133
  response: [],
130
134
  }
131
135
  }
@@ -145,9 +149,11 @@ export class CoreBot {
145
149
 
146
150
  return {
147
151
  input: botContext.input,
148
- response,
149
152
  session: botContext.session,
150
153
  lastRoutePath: botContext.lastRoutePath,
154
+ settings: botContext.settings,
155
+ secrets: botContext.secrets,
156
+ response,
151
157
  }
152
158
  }
153
159
 
@@ -247,11 +253,13 @@ export class CoreBot {
247
253
 
248
254
  const followUp = await this.runInput(botContext)
249
255
 
250
- const response = {
256
+ const response: BotResponse = {
251
257
  input: followUp.input,
252
258
  response: previousResponse.response.concat(followUp.response),
253
259
  session: botContext.session,
254
260
  lastRoutePath: followUp.lastRoutePath,
261
+ settings: followUp.settings,
262
+ secrets: followUp.secrets,
255
263
  }
256
264
 
257
265
  // Recursive call to handle multiple bot actions in a row
@@ -241,6 +241,7 @@ export interface SessionUser<TExtraData = any> {
241
241
  locale: string
242
242
  country: string
243
243
  system_locale: string
244
+ system_locale_updated?: boolean
244
245
  }
245
246
 
246
247
  export interface HubtypeCaseContactReason {
@@ -334,6 +335,26 @@ export interface BotRequest<TExtraData = any> {
334
335
  input: Input
335
336
  lastRoutePath: RoutePath
336
337
  session: Session<TExtraData>
338
+ settings: BotSettings
339
+ secrets: BotSecrets
340
+ }
341
+
342
+ export interface BotSettings {
343
+ HUBTYPE_API_URL: string
344
+ STATIC_URL: string
345
+ LITELLM_API_URL: string
346
+ AZURE_OPENAI_API_BASE: string
347
+ AZURE_OPENAI_API_VERSION: string
348
+ LANGUAGE_DETECTION_ENABLED?: boolean
349
+ CUSTOM_SHORT_URL_HOST: string | null
350
+ custom: Record<string, any>
351
+ }
352
+
353
+ export interface BotSecrets {
354
+ HUBTYPE_ACCESS_TOKEN: string
355
+ LITELLM_API_KEY: string
356
+ AZURE_OPENAI_API_KEY: string
357
+ custom: Record<string, any>
337
358
  }
338
359
 
339
360
  export interface BotContext<
@@ -0,0 +1,311 @@
1
+ import {
2
+ type BotContext,
3
+ type BotRequest,
4
+ type BotSecrets,
5
+ type BotSettings,
6
+ type ContactInfo,
7
+ INPUT,
8
+ type Input,
9
+ PROVIDER,
10
+ type ProviderType,
11
+ type ResolvedPlugins,
12
+ type Session,
13
+ type SessionUser,
14
+ } from '../models'
15
+
16
+ // ---------------------------------------------------------------------------
17
+ // Default values
18
+ // ---------------------------------------------------------------------------
19
+
20
+ export const TEST_DEFAULTS = {
21
+ HUBTYPE_API_URL: 'https://api.hubtype.com',
22
+ STATIC_URL: 'https://static.hubtype.com',
23
+ LITELLM_API_URL: 'https://api.litellm.com',
24
+ AZURE_OPENAI_API_BASE: 'https://api.openai.com',
25
+ AZURE_OPENAI_API_VERSION: '2026-02-01',
26
+ LANGUAGE_DETECTION_ENABLED: true,
27
+ HUBTYPE_ACCESS_TOKEN: 'testAccessToken', // pragma: allowlist secret
28
+ LITELLM_API_KEY: 'testLiteLLMAPIKey', // pragma: allowlist secret
29
+ AZURE_OPENAI_API_KEY: 'testAzureOpenAIAPIKey', // pragma: allowlist secret
30
+ ACCESS_TOKEN: 'fake_access_token',
31
+ HUBTYPE_API_HOST: 'https://api.hubtype.com',
32
+ FLOW_THREAD_ID: 'testFlowThreadId',
33
+ BOT_ID: 'testBotId',
34
+ USER_ID: 'testUserId',
35
+ ORG_ID: 'testOrgId',
36
+ ORG_NAME: 'testOrg',
37
+ PROVIDER: PROVIDER.WEBCHAT as ProviderType,
38
+ LOCALE: 'en',
39
+ COUNTRY: 'US',
40
+ BOT_INTERACTION_ID: 'testInteractionId',
41
+ MESSAGE_ID: 'testMessageId',
42
+ LAST_ROUTE_PATH: '',
43
+ }
44
+
45
+ // ---------------------------------------------------------------------------
46
+ // Leaf factories
47
+ // ---------------------------------------------------------------------------
48
+
49
+ export function createTestSettings(
50
+ overrides?: Partial<BotSettings>
51
+ ): BotSettings {
52
+ return {
53
+ HUBTYPE_API_URL: TEST_DEFAULTS.HUBTYPE_API_URL,
54
+ STATIC_URL: TEST_DEFAULTS.STATIC_URL,
55
+ LITELLM_API_URL: TEST_DEFAULTS.LITELLM_API_URL,
56
+ AZURE_OPENAI_API_BASE: TEST_DEFAULTS.AZURE_OPENAI_API_BASE,
57
+ AZURE_OPENAI_API_VERSION: TEST_DEFAULTS.AZURE_OPENAI_API_VERSION,
58
+ LANGUAGE_DETECTION_ENABLED: TEST_DEFAULTS.LANGUAGE_DETECTION_ENABLED,
59
+ CUSTOM_SHORT_URL_HOST: null,
60
+ custom: {},
61
+ ...overrides,
62
+ }
63
+ }
64
+
65
+ export function createTestSecrets(overrides?: Partial<BotSecrets>): BotSecrets {
66
+ return {
67
+ HUBTYPE_ACCESS_TOKEN: TEST_DEFAULTS.HUBTYPE_ACCESS_TOKEN,
68
+ LITELLM_API_KEY: TEST_DEFAULTS.LITELLM_API_KEY,
69
+ AZURE_OPENAI_API_KEY: TEST_DEFAULTS.AZURE_OPENAI_API_KEY,
70
+ custom: {},
71
+ ...overrides,
72
+ }
73
+ }
74
+
75
+ export interface TestUserOptions {
76
+ id?: string
77
+ provider?: ProviderType
78
+ locale?: string
79
+ country?: string
80
+ systemLocale?: string
81
+ contactInfo?: ContactInfo[]
82
+ extraData?: Record<string, any>
83
+ }
84
+
85
+ export function createTestSessionUser(
86
+ options?: TestUserOptions
87
+ ): SessionUser<Record<string, any>> {
88
+ const locale = options?.locale ?? TEST_DEFAULTS.LOCALE
89
+ const country = options?.country ?? TEST_DEFAULTS.COUNTRY
90
+ return {
91
+ id: options?.id ?? TEST_DEFAULTS.USER_ID,
92
+ provider: options?.provider ?? TEST_DEFAULTS.PROVIDER,
93
+ locale,
94
+ country,
95
+ system_locale: options?.systemLocale ?? locale,
96
+ contact_info: options?.contactInfo ?? [],
97
+ extra_data: options?.extraData ?? {},
98
+ }
99
+ }
100
+
101
+ export interface TestSessionOptions {
102
+ user?: TestUserOptions
103
+ botId?: string
104
+ organization?: string
105
+ organizationId?: string
106
+ isFirstInteraction?: boolean
107
+ isTestIntegration?: boolean
108
+ accessToken?: string
109
+ hubtypeApi?: string
110
+ flowThreadId?: string
111
+ retries?: number
112
+ shadowing?: boolean
113
+ hubtypeCaseId?: string
114
+ captureUserInputNodeId?: string
115
+ }
116
+
117
+ export function createTestSession(
118
+ options?: TestSessionOptions
119
+ ): Session<Record<string, any>> {
120
+ return {
121
+ bot: { id: options?.botId ?? TEST_DEFAULTS.BOT_ID },
122
+ user: createTestSessionUser(options?.user),
123
+ organization: options?.organization ?? TEST_DEFAULTS.ORG_NAME,
124
+ organization_id: options?.organizationId ?? TEST_DEFAULTS.ORG_ID,
125
+ is_first_interaction: options?.isFirstInteraction ?? false,
126
+ is_test_integration: options?.isTestIntegration ?? false,
127
+ _access_token: options?.accessToken ?? TEST_DEFAULTS.ACCESS_TOKEN,
128
+ _hubtype_api: options?.hubtypeApi ?? TEST_DEFAULTS.HUBTYPE_API_HOST,
129
+ flow_thread_id: options?.flowThreadId ?? TEST_DEFAULTS.FLOW_THREAD_ID,
130
+ __retries: options?.retries ?? 0,
131
+ _shadowing: options?.shadowing,
132
+ _hubtype_case_id: options?.hubtypeCaseId,
133
+ capture_user_input: options?.captureUserInputNodeId
134
+ ? { node_id: options.captureUserInputNodeId }
135
+ : undefined,
136
+ }
137
+ }
138
+
139
+ export interface TestInputOptions {
140
+ type?: Input['type']
141
+ data?: string
142
+ text?: string
143
+ payload?: string
144
+ src?: string
145
+ botInteractionId?: string
146
+ messageId?: string
147
+ context?: Input['context']
148
+ transcript?: string
149
+ }
150
+
151
+ export function createTestInput(options?: TestInputOptions): Input {
152
+ return {
153
+ type: options?.type ?? INPUT.TEXT,
154
+ data: options?.data,
155
+ text: options?.text,
156
+ payload: options?.payload,
157
+ src: options?.src,
158
+ transcript: options?.transcript,
159
+ context: options?.context,
160
+ bot_interaction_id:
161
+ options?.botInteractionId ?? TEST_DEFAULTS.BOT_INTERACTION_ID,
162
+ message_id: options?.messageId ?? TEST_DEFAULTS.MESSAGE_ID,
163
+ }
164
+ }
165
+
166
+ // ---------------------------------------------------------------------------
167
+ // Composite factories
168
+ // ---------------------------------------------------------------------------
169
+
170
+ export interface TestBotRequestOptions {
171
+ input?: TestInputOptions | Input
172
+ session?: TestSessionOptions | Session
173
+ lastRoutePath?: string
174
+ settings?: Partial<BotSettings> | BotSettings
175
+ secrets?: Partial<BotSecrets> | BotSecrets
176
+ }
177
+
178
+ function isFullInput(v: TestInputOptions | Input): v is Input {
179
+ return 'bot_interaction_id' in v && 'message_id' in v
180
+ }
181
+
182
+ function isFullSession(v: TestSessionOptions | Session): v is Session {
183
+ return 'bot' in v && '__retries' in v
184
+ }
185
+
186
+ function isFullSettings(
187
+ v: Partial<BotSettings> | BotSettings
188
+ ): v is BotSettings {
189
+ return (
190
+ 'HUBTYPE_API_URL' in v &&
191
+ 'STATIC_URL' in v &&
192
+ 'LITELLM_API_URL' in v &&
193
+ 'AZURE_OPENAI_API_BASE' in v &&
194
+ 'AZURE_OPENAI_API_VERSION' in v &&
195
+ 'LANGUAGE_DETECTION_ENABLED' in v &&
196
+ 'CUSTOM_SHORT_URL_HOST' in v &&
197
+ 'custom' in v
198
+ )
199
+ }
200
+
201
+ function isFullSecrets(v: Partial<BotSecrets> | BotSecrets): v is BotSecrets {
202
+ return (
203
+ 'HUBTYPE_ACCESS_TOKEN' in v &&
204
+ 'LITELLM_API_KEY' in v &&
205
+ 'AZURE_OPENAI_API_KEY' in v &&
206
+ 'custom' in v
207
+ )
208
+ }
209
+
210
+ export function createTestBotRequest(
211
+ options?: TestBotRequestOptions
212
+ ): BotRequest {
213
+ const input =
214
+ options?.input == null
215
+ ? createTestInput()
216
+ : isFullInput(options.input)
217
+ ? options.input
218
+ : createTestInput(options.input)
219
+
220
+ const session =
221
+ options?.session == null
222
+ ? createTestSession()
223
+ : isFullSession(options.session)
224
+ ? options.session
225
+ : createTestSession(options.session)
226
+
227
+ const settings =
228
+ options?.settings == null
229
+ ? createTestSettings()
230
+ : isFullSettings(options.settings)
231
+ ? options.settings
232
+ : createTestSettings(options.settings)
233
+
234
+ const secrets =
235
+ options?.secrets == null
236
+ ? createTestSecrets()
237
+ : isFullSecrets(options.secrets)
238
+ ? options.secrets
239
+ : createTestSecrets(options.secrets)
240
+
241
+ return {
242
+ input,
243
+ session,
244
+ lastRoutePath: options?.lastRoutePath ?? TEST_DEFAULTS.LAST_ROUTE_PATH,
245
+ settings,
246
+ secrets,
247
+ }
248
+ }
249
+
250
+ export interface TestBotContextOptions<
251
+ TPlugins extends ResolvedPlugins = ResolvedPlugins,
252
+ > extends TestBotRequestOptions {
253
+ plugins?: TPlugins
254
+ params?: Record<string, string>
255
+ defaultDelay?: number
256
+ defaultTyping?: number
257
+ }
258
+
259
+ export function createTestBotContext<
260
+ TPlugins extends ResolvedPlugins = ResolvedPlugins,
261
+ >(options?: TestBotContextOptions<TPlugins>): BotContext<TPlugins> {
262
+ const request = createTestBotRequest(options)
263
+
264
+ const sessionForLocale =
265
+ options?.session == null
266
+ ? createTestSession()
267
+ : isFullSession(options.session)
268
+ ? options.session
269
+ : createTestSession(options.session)
270
+
271
+ const locale = sessionForLocale.user.locale
272
+ const country = sessionForLocale.user.country
273
+ const systemLocale = sessionForLocale.user.system_locale
274
+
275
+ return {
276
+ ...request,
277
+ plugins: options?.plugins ?? ({} as TPlugins),
278
+ params: options?.params ?? {},
279
+ defaultDelay: options?.defaultDelay ?? 0,
280
+ defaultTyping: options?.defaultTyping ?? 0,
281
+ getUserLocale: () => locale,
282
+ getUserCountry: () => country,
283
+ getSystemLocale: () => systemLocale,
284
+ setUserLocale: () => undefined,
285
+ setUserCountry: () => undefined,
286
+ setSystemLocale: () => undefined,
287
+ }
288
+ }
289
+
290
+ /**
291
+ * Alias for `createTestBotContext` typed as `PluginPreRequest`.
292
+ * PluginPreRequest === BotContext in @botonic/core.
293
+ */
294
+ export const createTestPluginPreRequest = createTestBotContext
295
+
296
+ export interface TestPluginPostRequestOptions<
297
+ TPlugins extends ResolvedPlugins = ResolvedPlugins,
298
+ > extends TestBotContextOptions<TPlugins> {
299
+ response?: string | null
300
+ }
301
+
302
+ export function createTestPluginPostRequest<
303
+ TPlugins extends ResolvedPlugins = ResolvedPlugins,
304
+ >(
305
+ options?: TestPluginPostRequestOptions<TPlugins>
306
+ ): BotContext<TPlugins> & { response: string | null } {
307
+ return {
308
+ ...createTestBotContext(options),
309
+ response: options?.response ?? null,
310
+ }
311
+ }