@botpress/cognitive 0.1.18 → 0.1.20
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/.turbo/turbo-build.log +7 -7
- package/dist/index.cjs +11 -1
- package/dist/index.cjs.map +2 -2
- package/dist/index.d.ts +447 -1
- package/dist/index.mjs +11 -1
- package/dist/index.mjs.map +2 -2
- package/package.json +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
|
|
2
|
-
> @botpress/cognitive@0.1.
|
|
2
|
+
> @botpress/cognitive@0.1.20 build /home/runner/work/botpress/botpress/packages/cognitive
|
|
3
3
|
> pnpm build:type && pnpm build:neutral && size-limit
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @botpress/cognitive@0.1.
|
|
6
|
+
> @botpress/cognitive@0.1.20 build:type /home/runner/work/botpress/botpress/packages/cognitive
|
|
7
7
|
> tsup --tsconfig tsconfig.build.json ./src/index.ts --dts-resolve --dts-only --clean
|
|
8
8
|
|
|
9
9
|
CLI Building entry: ./src/index.ts
|
|
10
10
|
CLI Using tsconfig: tsconfig.build.json
|
|
11
11
|
CLI tsup v8.0.2
|
|
12
12
|
DTS Build start
|
|
13
|
-
DTS ⚡️ Build success in
|
|
14
|
-
DTS dist/index.d.ts
|
|
13
|
+
DTS ⚡️ Build success in 11478ms
|
|
14
|
+
DTS dist/index.d.ts 568.75 KB
|
|
15
15
|
|
|
16
|
-
> @botpress/cognitive@0.1.
|
|
16
|
+
> @botpress/cognitive@0.1.20 build:neutral /home/runner/work/botpress/botpress/packages/cognitive
|
|
17
17
|
> ts-node -T ./build.ts --neutral
|
|
18
18
|
|
|
19
19
|
Done
|
|
20
20
|
|
|
21
21
|
[1mdist/index.cjs[22m
|
|
22
22
|
Size limit: [32m[1m50 kB[22m[39m
|
|
23
|
-
Size: [32m[1m6.
|
|
23
|
+
Size: [32m[1m6.91 kB[22m[39m [90mbrotlied[39m
|
|
24
24
|
|
|
25
25
|
[1mdist/index.mjs[22m
|
|
26
26
|
Size limit: [32m[1m50 kB[22m[39m
|
|
27
|
-
Size: [32m[1m6.
|
|
27
|
+
Size: [32m[1m6.79 kB[22m[39m [90mbrotlied[39m
|
|
28
28
|
|
package/dist/index.cjs
CHANGED
|
@@ -625,7 +625,17 @@ var createNanoEvents = () => ({
|
|
|
625
625
|
});
|
|
626
626
|
|
|
627
627
|
// src/bp-client.ts
|
|
628
|
-
var getExtendedClient = (
|
|
628
|
+
var getExtendedClient = (_client) => {
|
|
629
|
+
const client = _client;
|
|
630
|
+
if (!client || client === null || typeof client !== "object") {
|
|
631
|
+
throw new Error("Client must be a valid instance of a Botpress client (@botpress/client)");
|
|
632
|
+
}
|
|
633
|
+
if (typeof client._client === "object" && !!client._client) {
|
|
634
|
+
try {
|
|
635
|
+
return getExtendedClient(client._client);
|
|
636
|
+
} catch {
|
|
637
|
+
}
|
|
638
|
+
}
|
|
629
639
|
if (typeof client.constructor !== "function" || typeof client.callAction !== "function" || !client.config || typeof client.config !== "object" || !client.config.headers) {
|
|
630
640
|
throw new Error("Client must be a valid instance of a Botpress client (@botpress/client)");
|
|
631
641
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/options.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/jitter/full/full.jitter.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/jitter/no/no.jitter.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/jitter/jitter.factory.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/delay/delay.base.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/delay/skip-first/skip-first.delay.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/delay/always/always.delay.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/delay/delay.factory.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/backoff.ts", "../src/index.ts", "../src/client.ts", "../../../node_modules/.pnpm/nanoevents@9.1.0/node_modules/nanoevents/index.js", "../src/bp-client.ts", "../src/errors.ts", "../src/interceptors.ts", "../src/models.ts"],
|
|
4
|
-
"sourcesContent": [null, null, null, null, null, null, null, null, null, "export { Events, BotpressClientLike } from './types'\nexport * from './client'\nexport { ModelPreferences, ModelProvider, RemoteModelProvider, Model } from './models'\nexport { type GenerateContentInput, type GenerateContentOutput } from './schemas.gen'\n", "import { backOff } from 'exponential-backoff'\nimport { createNanoEvents, Unsubscribe } from 'nanoevents'\n\nimport { ExtendedClient, getExtendedClient } from './bp-client'\nimport { getActionFromError } from './errors'\nimport { InterceptorManager } from './interceptors'\nimport {\n DOWNTIME_THRESHOLD_MINUTES,\n getBestModels,\n getFastModels,\n Model,\n ModelPreferences,\n ModelProvider,\n ModelRef,\n pickModel,\n RemoteModelProvider,\n} from './models'\nimport { GenerateContentOutput } from './schemas.gen'\nimport { CognitiveProps, Events, InputProps, Request, Response } from './types'\n\nexport class Cognitive {\n public ['$$IS_COGNITIVE'] = true\n\n public static isCognitiveClient(obj: any): obj is Cognitive {\n return obj?.$$IS_COGNITIVE === true\n }\n\n public interceptors = {\n request: new InterceptorManager<Request>(),\n response: new InterceptorManager<Response>(),\n }\n\n private _client: ExtendedClient\n private _preferences: ModelPreferences | null = null\n private _provider: ModelProvider\n private _events = createNanoEvents<Events>()\n private _downtimes: ModelPreferences['downtimes'] = []\n private _models: Model[] = []\n\n public constructor(props: CognitiveProps) {\n this._client = getExtendedClient(props.client)\n this._provider = props.provider ?? new RemoteModelProvider(props.client)\n }\n\n public get client(): ExtendedClient {\n return this._client\n }\n\n public on<K extends keyof Events>(this: this, event: K, cb: Events[K]): Unsubscribe {\n return this._events.on(event, cb)\n }\n\n public async fetchInstalledModels(): Promise<Model[]> {\n if (!this._models.length) {\n this._models = await this._provider.fetchInstalledModels()\n }\n\n return this._models\n }\n\n public async fetchPreferences(): Promise<ModelPreferences> {\n if (this._preferences) {\n return this._preferences\n }\n\n this._preferences = await this._provider.fetchModelPreferences()\n\n if (this._preferences) {\n return this._preferences\n }\n\n const models = await this.fetchInstalledModels()\n\n this._preferences = {\n best: getBestModels(models).map((m) => m.ref),\n fast: getFastModels(models).map((m) => m.ref),\n downtimes: [],\n }\n\n await this._provider.saveModelPreferences(this._preferences)\n\n return this._preferences\n }\n\n public async setPreferences(preferences: ModelPreferences, save: boolean = false): Promise<void> {\n this._preferences = preferences\n\n if (save) {\n await this._provider.saveModelPreferences(preferences)\n }\n }\n\n private _cleanupOldDowntimes(): void {\n const now = Date.now()\n const thresholdMs = 1000 * 60 * DOWNTIME_THRESHOLD_MINUTES\n\n this._preferences!.downtimes = this._preferences!.downtimes.filter((downtime) => {\n const downtimeStart = new Date(downtime.startedAt).getTime()\n return now - downtimeStart <= thresholdMs\n })\n }\n\n private async _selectModel(ref: string): Promise<{ integration: string; model: string }> {\n const parseRef = (ref: string) => {\n const parts = ref.split(':')\n return { integration: parts[0]!, model: parts.slice(1).join(':') }\n }\n\n const preferences = await this.fetchPreferences()\n\n preferences.best ??= []\n preferences.fast ??= []\n preferences.downtimes ??= []\n\n const downtimes = [...preferences.downtimes, ...(this._downtimes ?? [])]\n\n if (ref === 'best') {\n return parseRef(pickModel(preferences.best, downtimes))\n }\n\n if (ref === 'fast') {\n return parseRef(pickModel(preferences.fast, downtimes))\n }\n\n return parseRef(pickModel([ref as ModelRef, ...preferences.best, ...preferences.fast], downtimes))\n }\n\n public async getModelDetails(model: string) {\n await this.fetchInstalledModels()\n const { integration, model: modelName } = await this._selectModel(model)\n const def = this._models.find((m) => m.integration === integration && (m.name === modelName || m.id === modelName))\n if (!def) {\n console.info('Models:', this._models)\n throw new Error(`Model ${modelName} not found`)\n }\n\n return def\n }\n\n public async generateContent(input: InputProps): Promise<Response> {\n const start = Date.now()\n\n const signal = input.signal ?? AbortSignal.timeout(30_000)\n\n const client = this._client.abortable(signal)\n\n let props: Request = { input }\n let integration: string\n let model: string\n\n const { output, meta } = await backOff<{\n output: GenerateContentOutput\n meta: any\n }>(\n async () => {\n const selection = await this._selectModel(input.model ?? 'best')\n\n integration = selection.integration\n model = selection.model\n\n props = await this.interceptors.request.run({ input }, signal)\n\n return client.callAction({\n type: `${integration}:generateContent`,\n input: {\n ...props.input,\n model: { id: model },\n },\n }) as Promise<{ output: GenerateContentOutput; meta: any }>\n },\n {\n retry: async (err, _attempt) => {\n if (signal?.aborted) {\n // We don't want to retry if the request was aborted\n this._events.emit('aborted', props, err)\n return false\n }\n\n if (_attempt > 3) {\n // We don't want to retry more than 3 times\n this._events.emit('error', props, err)\n return false\n }\n\n const action = getActionFromError(err)\n\n if (action === 'abort') {\n this._events.emit('error', props, err)\n return false\n }\n\n if (action === 'fallback') {\n // We don't want to retry if the request was already retried with a fallback model\n this._downtimes.push({\n ref: `${integration!}:${model!}`,\n startedAt: new Date().toISOString(),\n reason: 'Model is down',\n })\n\n this._cleanupOldDowntimes()\n\n await this._provider.saveModelPreferences({\n ...(this._preferences ?? { best: [], downtimes: [], fast: [] }),\n downtimes: [...(this._preferences!.downtimes ?? []), ...(this._downtimes ?? [])],\n })\n\n this._events.emit('fallback', props, err)\n return true\n }\n\n this._events.emit('retry', props, err)\n return true\n },\n }\n )\n\n const response = {\n output,\n meta: {\n cached: meta.cached ?? false,\n model: { integration: integration!, model: model! },\n latency: Date.now() - start,\n cost: { input: output.usage.inputCost, output: output.usage.outputCost },\n tokens: { input: output.usage.inputTokens, output: output.usage.outputTokens },\n },\n } satisfies Response\n\n this._events.emit('response', props, response)\n\n return this.interceptors.response.run(response, signal)\n }\n}\n", "export let createNanoEvents = () => ({\n emit(event, ...args) {\n for (\n let callbacks = this.events[event] || [],\n i = 0,\n length = callbacks.length;\n i < length;\n i++\n ) {\n callbacks[i](...args)\n }\n },\n events: {},\n on(event, cb) {\n ;(this.events[event] ||= []).push(cb)\n return () => {\n this.events[event] = this.events[event]?.filter(i => cb !== i)\n }\n }\n})\n", "import { type Client } from '@botpress/client'\nimport { type AxiosInstance } from 'axios'\nimport { BotpressClientLike } from './types'\n\n/** @internal */\nexport type ExtendedClient = Client & {\n botId: string\n axios: AxiosInstance\n clone: () => ExtendedClient\n abortable: (signal: AbortSignal) => ExtendedClient\n}\n\nexport const getExtendedClient = (client: BotpressClientLike): ExtendedClient => {\n if (\n typeof client.constructor !== 'function' ||\n typeof client.callAction !== 'function' ||\n !client.config ||\n typeof client.config !== 'object' ||\n !client.config.headers\n ) {\n throw new Error('Client must be a valid instance of a Botpress client (@botpress/client)')\n }\n\n const botId = client.config.headers['x-bot-id'] as string\n\n if (!botId?.length) {\n throw new Error('Client must be instanciated with Bot ID')\n }\n\n const clone = () => {\n const c = client as any\n if (c.clone && typeof c.clone === 'function') {\n return getExtendedClient(c.clone())\n }\n return getExtendedClient(new c.constructor(c.config))\n }\n\n return {\n ...client,\n botId,\n axios: (client as any).axiosInstance as AxiosInstance,\n clone,\n abortable: (signal: AbortSignal) => {\n const abortable = clone()\n const instance = abortable.axios\n instance.defaults.signal = signal\n return abortable\n },\n } as ExtendedClient\n}\n", "import { type ErrorType } from '@botpress/client'\n\nexport type BotpressError = {\n isApiError: boolean\n code: number\n description: string\n type: ErrorType\n subtype?: string\n error?: unknown\n metadata?: unknown\n message?: string\n id: string\n}\n\ntype Action = 'fallback' | 'retry' | 'abort'\n\nexport const getActionFromError = (error: any): Action => {\n if (!isBotpressError(error)) {\n return 'retry'\n }\n\n if (error.type === 'InvalidDataFormat') {\n if (error.message?.includes('data/model/id')) {\n // Invalid Model ID, so we want to try another model\n return 'fallback'\n }\n\n // Usually means the request was malformed\n return 'abort'\n }\n\n const subtype = (error.metadata as any)?.subtype\n if (error.type === 'Internal' || subtype === 'UPSTREAM_PROVIDER_FAILED') {\n // The model is degraded, so we want to try another model\n return 'fallback'\n }\n\n return 'abort'\n}\n\nexport const isNotFoundError = (error: any): boolean => isBotpressError(error) && error.type === 'ResourceNotFound'\n\nexport const isForbiddenOrUnauthorizedError = (error: any): boolean =>\n isBotpressError(error) && (error.type === 'Forbidden' || error.type === 'Unauthorized')\n\nexport const isBotpressError = (error: any): error is BotpressError =>\n typeof error === 'object' &&\n error !== null &&\n 'isApiError' in error &&\n 'code' in error &&\n 'type' in error &&\n 'id' in error\n", "export type Callback<T> = (error: any | null, value: T) => void\nexport type Interceptor<T> = (error: any | null, value: T, next: Callback<T>, done: Callback<T>) => Promise<void> | void\n\nexport class InterceptorManager<T> {\n private _interceptors: Interceptor<T>[] = []\n\n public use(interceptor: Interceptor<T>) {\n this._interceptors.push(interceptor)\n return () => this.remove(interceptor)\n }\n\n public remove(interceptor: Interceptor<T>) {\n this._interceptors = this._interceptors.filter((i) => i !== interceptor)\n }\n\n public async run(value: T, signal: AbortSignal): Promise<T> {\n let error: any | null = null\n let result: T = value\n let done = false\n\n for (const interceptor of this._interceptors) {\n if (done) {\n break\n }\n\n if (signal.aborted) {\n throw signal.reason\n }\n\n await new Promise<void>((resolve) => {\n void interceptor(\n error,\n result,\n (err, val) => {\n error = err\n result = val\n resolve()\n },\n (err, val) => {\n error = err\n result = val\n done = true\n resolve()\n }\n )\n })\n }\n\n if (error) {\n throw error\n }\n\n return result\n }\n}\n", "import { ExtendedClient, getExtendedClient } from './bp-client'\nimport { isForbiddenOrUnauthorizedError, isNotFoundError } from './errors'\nimport { Model as RawModel } from './schemas.gen'\nimport { BotpressClientLike } from './types'\n\nexport const DOWNTIME_THRESHOLD_MINUTES = 5\nconst PREFERENCES_FILE_SUFFIX = 'models.config.json'\n\nexport const DEFAULT_INTEGRATIONS = ['google-ai', 'anthropic', 'openai', 'cerebras', 'fireworks-ai', 'groq']\n\n// Biases for vendors and models\nconst VendorPreferences = ['google-ai', 'anthropic', 'openai']\nconst BestModelPreferences = ['4o', '3-5-sonnet', 'gemini-1.5-pro']\nconst FastModelPreferences = ['gemini-1.5-flash', '4o-mini', 'flash', 'haiku']\n\nconst InputPricePenalty = 3 // $3 per 1M tokens\nconst OutputPricePenalty = 10 // $10 per 1M tokens\nconst LowTokensPenalty = 128_000 // 128k tokens\n\nexport type Model = RawModel & {\n ref: ModelRef\n integration: string\n}\n\nexport type ModelRef = `${string}:${string}`\n\nexport type ModelPreferences = {\n best: ModelRef[]\n fast: ModelRef[]\n downtimes: Array<{ ref: ModelRef; startedAt: string; reason: string }>\n}\n\nconst isRecommended = (model: Model) => model.tags.includes('recommended')\nconst isDeprecated = (model: Model) => model.tags.includes('deprecated')\nconst isLowCost = (model: Model) => model.tags.includes('low-cost')\nconst hasVisionSupport = (model: Model) => model.tags.includes('vision')\nconst isGeneralPurpose = (model: Model) => model.tags.includes('general-purpose')\n\nconst scoreModel = (model: Model, type: 'best' | 'fast', boosts: Record<ModelRef, number> = {}) => {\n let score: number = 0\n\n const scores: Array<[string, boolean, number]> = [\n ['input price penalty', model.input.costPer1MTokens > InputPricePenalty, -1],\n ['output price penalty', model.output.costPer1MTokens > OutputPricePenalty, -1],\n ['low tokens penalty', (model.input.maxTokens ?? 0 + model.output.maxTokens ?? 0) < LowTokensPenalty, -1],\n ['recommended', isRecommended(model), 2],\n ['deprecated', isDeprecated(model), -2],\n ['vision support', hasVisionSupport(model), 1],\n ['general purpose', isGeneralPurpose(model), 1],\n ['vendor preference', VendorPreferences.includes(model.integration), 1],\n ['best model preference', type === 'best' && BestModelPreferences.some((x) => model.id.includes(x)), 1],\n ['fast model preference penalty', type === 'best' && FastModelPreferences.some((x) => model.id.includes(x)), -2],\n ['fast model preference', type === 'fast' && FastModelPreferences.some((x) => model.id.includes(x)), 2],\n ['low cost', type === 'fast' && isLowCost(model), 1],\n ]\n\n for (const rule in boosts) {\n if (model.ref.includes(rule)) {\n scores.push([`boost (${rule})`, true, Number(boosts[rule as ModelRef]) ?? 0] as const)\n }\n }\n\n for (const [, condition, value] of scores) {\n if (condition) {\n score += value\n }\n }\n\n return score\n}\n\nexport const getBestModels = (models: Model[], boosts: Record<ModelRef, number> = {}) =>\n models.sort((a, b) => scoreModel(b, 'best', boosts) - scoreModel(a, 'best', boosts))\n\nexport const getFastModels = (models: Model[], boosts: Record<ModelRef, number> = {}) =>\n models.sort((a, b) => scoreModel(b, 'fast', boosts) - scoreModel(a, 'fast', boosts))\n\nexport const pickModel = (models: ModelRef[], downtimes: ModelPreferences['downtimes'] = []) => {\n const copy = [...models]\n const elasped = (date: string) => new Date().getTime() - new Date(date).getTime()\n const DOWNTIME_THRESHOLD = 1000 * 60 * DOWNTIME_THRESHOLD_MINUTES\n\n if (!copy.length) {\n throw new Error('At least one model is required')\n }\n\n while (copy.length) {\n const ref = copy.shift() as ModelRef\n const downtime = downtimes.find((o) => o.ref === ref && elasped(o.startedAt) < DOWNTIME_THRESHOLD)\n if (downtime) {\n continue\n } else {\n return ref\n }\n }\n\n throw new Error(`All models are down: ${models.join(', ')}`)\n}\n\nexport abstract class ModelProvider {\n public abstract fetchInstalledModels(): Promise<Model[]>\n public abstract fetchModelPreferences(): Promise<ModelPreferences | null>\n public abstract saveModelPreferences(preferences: ModelPreferences): Promise<void>\n public abstract deleteModelPreferences(): Promise<void>\n}\n\nexport class RemoteModelProvider extends ModelProvider {\n private _client: ExtendedClient\n\n public constructor(client: BotpressClientLike) {\n super()\n this._client = getExtendedClient(client)\n }\n\n private async _fetchInstalledIntegrationNames() {\n try {\n const { bot } = await this._client.getBot({ id: this._client.botId })\n const integrations = Object.values(bot.integrations).filter((x) => x.status === 'registered')\n return integrations.map((x) => x.name)\n } catch (err) {\n if (isForbiddenOrUnauthorizedError(err)) {\n // This happens when the bot (with a BAK token) tries to access the .getBot endpoint\n return DEFAULT_INTEGRATIONS\n }\n\n throw err\n }\n }\n\n public async fetchInstalledModels() {\n const integrationNames = await this._fetchInstalledIntegrationNames()\n const models: Model[] = []\n\n await Promise.allSettled(\n integrationNames.map(async (integration) => {\n const { output } = await this._client.callAction({\n type: `${integration}:listLanguageModels`,\n input: {},\n })\n\n if (!output?.models?.length) {\n return\n }\n\n for (const model of output.models as RawModel[]) {\n if (model.name && model.id && model.input && model.tags) {\n models.push({\n ref: `${integration}:${model.id}`,\n integration,\n id: model.id,\n name: model.name,\n description: model.description,\n input: model.input,\n output: model.output,\n tags: model.tags,\n })\n }\n }\n })\n )\n\n return models\n }\n\n public async fetchModelPreferences(): Promise<ModelPreferences | null> {\n try {\n const { file } = await this._client.getFile({ id: this._preferenceFileKey })\n\n if (globalThis.fetch !== undefined) {\n const response = await fetch(file.url)\n return (await response.json()) as ModelPreferences\n } else {\n const { data } = await this._client.axios.get(file.url, {\n // we piggy-back axios to avoid adding a new dependency\n // unset all headers to avoid S3 pre-signed signature mismatch\n headers: Object.keys(this._client.config.headers).reduce(\n (acc, key) => {\n acc[key] = undefined\n return acc\n },\n {} as Record<string, undefined>\n ),\n })\n return data as ModelPreferences\n }\n } catch (err) {\n if (isNotFoundError(err)) {\n return null\n }\n\n throw err\n }\n }\n\n public async saveModelPreferences(preferences: ModelPreferences) {\n await this._client.uploadFile({\n key: this._preferenceFileKey,\n content: JSON.stringify(preferences, null, 2),\n index: false,\n tags: {\n system: 'true',\n purpose: 'config',\n },\n })\n }\n\n public async deleteModelPreferences() {\n await this._client.deleteFile({ id: this._preferenceFileKey }).catch(() => {})\n }\n\n private get _preferenceFileKey() {\n return `bot->${this._client.botId}->${PREFERENCES_FILE_SUFFIX}`\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": [null, null, null, null, null, null, null, null, null, "export { Events, BotpressClientLike } from './types'\nexport * from './client'\nexport { ModelPreferences, ModelProvider, RemoteModelProvider, Model } from './models'\nexport { type GenerateContentInput, type GenerateContentOutput } from './schemas.gen'\n", "import { backOff } from 'exponential-backoff'\nimport { createNanoEvents, Unsubscribe } from 'nanoevents'\n\nimport { ExtendedClient, getExtendedClient } from './bp-client'\nimport { getActionFromError } from './errors'\nimport { InterceptorManager } from './interceptors'\nimport {\n DOWNTIME_THRESHOLD_MINUTES,\n getBestModels,\n getFastModels,\n Model,\n ModelPreferences,\n ModelProvider,\n ModelRef,\n pickModel,\n RemoteModelProvider,\n} from './models'\nimport { GenerateContentOutput } from './schemas.gen'\nimport { CognitiveProps, Events, InputProps, Request, Response } from './types'\n\nexport class Cognitive {\n public ['$$IS_COGNITIVE'] = true\n\n public static isCognitiveClient(obj: any): obj is Cognitive {\n return obj?.$$IS_COGNITIVE === true\n }\n\n public interceptors = {\n request: new InterceptorManager<Request>(),\n response: new InterceptorManager<Response>(),\n }\n\n private _client: ExtendedClient\n private _preferences: ModelPreferences | null = null\n private _provider: ModelProvider\n private _events = createNanoEvents<Events>()\n private _downtimes: ModelPreferences['downtimes'] = []\n private _models: Model[] = []\n\n public constructor(props: CognitiveProps) {\n this._client = getExtendedClient(props.client)\n this._provider = props.provider ?? new RemoteModelProvider(props.client)\n }\n\n public get client(): ExtendedClient {\n return this._client\n }\n\n public on<K extends keyof Events>(this: this, event: K, cb: Events[K]): Unsubscribe {\n return this._events.on(event, cb)\n }\n\n public async fetchInstalledModels(): Promise<Model[]> {\n if (!this._models.length) {\n this._models = await this._provider.fetchInstalledModels()\n }\n\n return this._models\n }\n\n public async fetchPreferences(): Promise<ModelPreferences> {\n if (this._preferences) {\n return this._preferences\n }\n\n this._preferences = await this._provider.fetchModelPreferences()\n\n if (this._preferences) {\n return this._preferences\n }\n\n const models = await this.fetchInstalledModels()\n\n this._preferences = {\n best: getBestModels(models).map((m) => m.ref),\n fast: getFastModels(models).map((m) => m.ref),\n downtimes: [],\n }\n\n await this._provider.saveModelPreferences(this._preferences)\n\n return this._preferences\n }\n\n public async setPreferences(preferences: ModelPreferences, save: boolean = false): Promise<void> {\n this._preferences = preferences\n\n if (save) {\n await this._provider.saveModelPreferences(preferences)\n }\n }\n\n private _cleanupOldDowntimes(): void {\n const now = Date.now()\n const thresholdMs = 1000 * 60 * DOWNTIME_THRESHOLD_MINUTES\n\n this._preferences!.downtimes = this._preferences!.downtimes.filter((downtime) => {\n const downtimeStart = new Date(downtime.startedAt).getTime()\n return now - downtimeStart <= thresholdMs\n })\n }\n\n private async _selectModel(ref: string): Promise<{ integration: string; model: string }> {\n const parseRef = (ref: string) => {\n const parts = ref.split(':')\n return { integration: parts[0]!, model: parts.slice(1).join(':') }\n }\n\n const preferences = await this.fetchPreferences()\n\n preferences.best ??= []\n preferences.fast ??= []\n preferences.downtimes ??= []\n\n const downtimes = [...preferences.downtimes, ...(this._downtimes ?? [])]\n\n if (ref === 'best') {\n return parseRef(pickModel(preferences.best, downtimes))\n }\n\n if (ref === 'fast') {\n return parseRef(pickModel(preferences.fast, downtimes))\n }\n\n return parseRef(pickModel([ref as ModelRef, ...preferences.best, ...preferences.fast], downtimes))\n }\n\n public async getModelDetails(model: string) {\n await this.fetchInstalledModels()\n const { integration, model: modelName } = await this._selectModel(model)\n const def = this._models.find((m) => m.integration === integration && (m.name === modelName || m.id === modelName))\n if (!def) {\n console.info('Models:', this._models)\n throw new Error(`Model ${modelName} not found`)\n }\n\n return def\n }\n\n public async generateContent(input: InputProps): Promise<Response> {\n const start = Date.now()\n\n const signal = input.signal ?? AbortSignal.timeout(30_000)\n\n const client = this._client.abortable(signal)\n\n let props: Request = { input }\n let integration: string\n let model: string\n\n const { output, meta } = await backOff<{\n output: GenerateContentOutput\n meta: any\n }>(\n async () => {\n const selection = await this._selectModel(input.model ?? 'best')\n\n integration = selection.integration\n model = selection.model\n\n props = await this.interceptors.request.run({ input }, signal)\n\n return client.callAction({\n type: `${integration}:generateContent`,\n input: {\n ...props.input,\n model: { id: model },\n },\n }) as Promise<{ output: GenerateContentOutput; meta: any }>\n },\n {\n retry: async (err, _attempt) => {\n if (signal?.aborted) {\n // We don't want to retry if the request was aborted\n this._events.emit('aborted', props, err)\n return false\n }\n\n if (_attempt > 3) {\n // We don't want to retry more than 3 times\n this._events.emit('error', props, err)\n return false\n }\n\n const action = getActionFromError(err)\n\n if (action === 'abort') {\n this._events.emit('error', props, err)\n return false\n }\n\n if (action === 'fallback') {\n // We don't want to retry if the request was already retried with a fallback model\n this._downtimes.push({\n ref: `${integration!}:${model!}`,\n startedAt: new Date().toISOString(),\n reason: 'Model is down',\n })\n\n this._cleanupOldDowntimes()\n\n await this._provider.saveModelPreferences({\n ...(this._preferences ?? { best: [], downtimes: [], fast: [] }),\n downtimes: [...(this._preferences!.downtimes ?? []), ...(this._downtimes ?? [])],\n })\n\n this._events.emit('fallback', props, err)\n return true\n }\n\n this._events.emit('retry', props, err)\n return true\n },\n }\n )\n\n const response = {\n output,\n meta: {\n cached: meta.cached ?? false,\n model: { integration: integration!, model: model! },\n latency: Date.now() - start,\n cost: { input: output.usage.inputCost, output: output.usage.outputCost },\n tokens: { input: output.usage.inputTokens, output: output.usage.outputTokens },\n },\n } satisfies Response\n\n this._events.emit('response', props, response)\n\n return this.interceptors.response.run(response, signal)\n }\n}\n", "export let createNanoEvents = () => ({\n emit(event, ...args) {\n for (\n let callbacks = this.events[event] || [],\n i = 0,\n length = callbacks.length;\n i < length;\n i++\n ) {\n callbacks[i](...args)\n }\n },\n events: {},\n on(event, cb) {\n ;(this.events[event] ||= []).push(cb)\n return () => {\n this.events[event] = this.events[event]?.filter(i => cb !== i)\n }\n }\n})\n", "import { type Client } from '@botpress/client'\nimport { type AxiosInstance } from 'axios'\nimport { BotpressClientLike } from './types'\n\n/** @internal */\nexport type ExtendedClient = Client & {\n botId: string\n axios: AxiosInstance\n clone: () => ExtendedClient\n abortable: (signal: AbortSignal) => ExtendedClient\n}\n\ntype InternalClientType = BotpressClientLike & {\n _client?: InternalClientType\n config: {\n headers: Record<string, string>\n }\n}\n\nexport const getExtendedClient = (_client: unknown): ExtendedClient => {\n const client = _client as InternalClientType\n\n if (!client || client === null || typeof client !== 'object') {\n throw new Error('Client must be a valid instance of a Botpress client (@botpress/client)')\n }\n\n if (typeof client._client === 'object' && !!client._client) {\n try {\n return getExtendedClient((client as any)._client)\n } catch {}\n }\n\n if (\n typeof client.constructor !== 'function' ||\n typeof client.callAction !== 'function' ||\n !client.config ||\n typeof client.config !== 'object' ||\n !client.config.headers\n ) {\n throw new Error('Client must be a valid instance of a Botpress client (@botpress/client)')\n }\n\n const botId = client.config.headers['x-bot-id'] as string\n\n if (!botId?.length) {\n throw new Error('Client must be instanciated with Bot ID')\n }\n\n const clone = () => {\n const c = client as any\n if (c.clone && typeof c.clone === 'function') {\n return getExtendedClient(c.clone())\n }\n return getExtendedClient(new c.constructor(c.config))\n }\n\n return {\n ...client,\n botId,\n axios: (client as any).axiosInstance as AxiosInstance,\n clone,\n abortable: (signal: AbortSignal) => {\n const abortable = clone()\n const instance = abortable.axios\n instance.defaults.signal = signal\n return abortable\n },\n } as ExtendedClient\n}\n", "import { type ErrorType } from '@botpress/client'\n\nexport type BotpressError = {\n isApiError: boolean\n code: number\n description: string\n type: ErrorType\n subtype?: string\n error?: unknown\n metadata?: unknown\n message?: string\n id: string\n}\n\ntype Action = 'fallback' | 'retry' | 'abort'\n\nexport const getActionFromError = (error: any): Action => {\n if (!isBotpressError(error)) {\n return 'retry'\n }\n\n if (error.type === 'InvalidDataFormat') {\n if (error.message?.includes('data/model/id')) {\n // Invalid Model ID, so we want to try another model\n return 'fallback'\n }\n\n // Usually means the request was malformed\n return 'abort'\n }\n\n const subtype = (error.metadata as any)?.subtype\n if (error.type === 'Internal' || subtype === 'UPSTREAM_PROVIDER_FAILED') {\n // The model is degraded, so we want to try another model\n return 'fallback'\n }\n\n return 'abort'\n}\n\nexport const isNotFoundError = (error: any): boolean => isBotpressError(error) && error.type === 'ResourceNotFound'\n\nexport const isForbiddenOrUnauthorizedError = (error: any): boolean =>\n isBotpressError(error) && (error.type === 'Forbidden' || error.type === 'Unauthorized')\n\nexport const isBotpressError = (error: any): error is BotpressError =>\n typeof error === 'object' &&\n error !== null &&\n 'isApiError' in error &&\n 'code' in error &&\n 'type' in error &&\n 'id' in error\n", "export type Callback<T> = (error: any | null, value: T) => void\nexport type Interceptor<T> = (error: any | null, value: T, next: Callback<T>, done: Callback<T>) => Promise<void> | void\n\nexport class InterceptorManager<T> {\n private _interceptors: Interceptor<T>[] = []\n\n public use(interceptor: Interceptor<T>) {\n this._interceptors.push(interceptor)\n return () => this.remove(interceptor)\n }\n\n public remove(interceptor: Interceptor<T>) {\n this._interceptors = this._interceptors.filter((i) => i !== interceptor)\n }\n\n public async run(value: T, signal: AbortSignal): Promise<T> {\n let error: any | null = null\n let result: T = value\n let done = false\n\n for (const interceptor of this._interceptors) {\n if (done) {\n break\n }\n\n if (signal.aborted) {\n throw signal.reason\n }\n\n await new Promise<void>((resolve) => {\n void interceptor(\n error,\n result,\n (err, val) => {\n error = err\n result = val\n resolve()\n },\n (err, val) => {\n error = err\n result = val\n done = true\n resolve()\n }\n )\n })\n }\n\n if (error) {\n throw error\n }\n\n return result\n }\n}\n", "import { ExtendedClient, getExtendedClient } from './bp-client'\nimport { isForbiddenOrUnauthorizedError, isNotFoundError } from './errors'\nimport { Model as RawModel } from './schemas.gen'\nimport { BotpressClientLike } from './types'\n\nexport const DOWNTIME_THRESHOLD_MINUTES = 5\nconst PREFERENCES_FILE_SUFFIX = 'models.config.json'\n\nexport const DEFAULT_INTEGRATIONS = ['google-ai', 'anthropic', 'openai', 'cerebras', 'fireworks-ai', 'groq']\n\n// Biases for vendors and models\nconst VendorPreferences = ['google-ai', 'anthropic', 'openai']\nconst BestModelPreferences = ['4o', '3-5-sonnet', 'gemini-1.5-pro']\nconst FastModelPreferences = ['gemini-1.5-flash', '4o-mini', 'flash', 'haiku']\n\nconst InputPricePenalty = 3 // $3 per 1M tokens\nconst OutputPricePenalty = 10 // $10 per 1M tokens\nconst LowTokensPenalty = 128_000 // 128k tokens\n\nexport type Model = RawModel & {\n ref: ModelRef\n integration: string\n}\n\nexport type ModelRef = `${string}:${string}`\n\nexport type ModelPreferences = {\n best: ModelRef[]\n fast: ModelRef[]\n downtimes: Array<{ ref: ModelRef; startedAt: string; reason: string }>\n}\n\nconst isRecommended = (model: Model) => model.tags.includes('recommended')\nconst isDeprecated = (model: Model) => model.tags.includes('deprecated')\nconst isLowCost = (model: Model) => model.tags.includes('low-cost')\nconst hasVisionSupport = (model: Model) => model.tags.includes('vision')\nconst isGeneralPurpose = (model: Model) => model.tags.includes('general-purpose')\n\nconst scoreModel = (model: Model, type: 'best' | 'fast', boosts: Record<ModelRef, number> = {}) => {\n let score: number = 0\n\n const scores: Array<[string, boolean, number]> = [\n ['input price penalty', model.input.costPer1MTokens > InputPricePenalty, -1],\n ['output price penalty', model.output.costPer1MTokens > OutputPricePenalty, -1],\n ['low tokens penalty', (model.input.maxTokens ?? 0 + model.output.maxTokens ?? 0) < LowTokensPenalty, -1],\n ['recommended', isRecommended(model), 2],\n ['deprecated', isDeprecated(model), -2],\n ['vision support', hasVisionSupport(model), 1],\n ['general purpose', isGeneralPurpose(model), 1],\n ['vendor preference', VendorPreferences.includes(model.integration), 1],\n ['best model preference', type === 'best' && BestModelPreferences.some((x) => model.id.includes(x)), 1],\n ['fast model preference penalty', type === 'best' && FastModelPreferences.some((x) => model.id.includes(x)), -2],\n ['fast model preference', type === 'fast' && FastModelPreferences.some((x) => model.id.includes(x)), 2],\n ['low cost', type === 'fast' && isLowCost(model), 1],\n ]\n\n for (const rule in boosts) {\n if (model.ref.includes(rule)) {\n scores.push([`boost (${rule})`, true, Number(boosts[rule as ModelRef]) ?? 0] as const)\n }\n }\n\n for (const [, condition, value] of scores) {\n if (condition) {\n score += value\n }\n }\n\n return score\n}\n\nexport const getBestModels = (models: Model[], boosts: Record<ModelRef, number> = {}) =>\n models.sort((a, b) => scoreModel(b, 'best', boosts) - scoreModel(a, 'best', boosts))\n\nexport const getFastModels = (models: Model[], boosts: Record<ModelRef, number> = {}) =>\n models.sort((a, b) => scoreModel(b, 'fast', boosts) - scoreModel(a, 'fast', boosts))\n\nexport const pickModel = (models: ModelRef[], downtimes: ModelPreferences['downtimes'] = []) => {\n const copy = [...models]\n const elasped = (date: string) => new Date().getTime() - new Date(date).getTime()\n const DOWNTIME_THRESHOLD = 1000 * 60 * DOWNTIME_THRESHOLD_MINUTES\n\n if (!copy.length) {\n throw new Error('At least one model is required')\n }\n\n while (copy.length) {\n const ref = copy.shift() as ModelRef\n const downtime = downtimes.find((o) => o.ref === ref && elasped(o.startedAt) < DOWNTIME_THRESHOLD)\n if (downtime) {\n continue\n } else {\n return ref\n }\n }\n\n throw new Error(`All models are down: ${models.join(', ')}`)\n}\n\nexport abstract class ModelProvider {\n public abstract fetchInstalledModels(): Promise<Model[]>\n public abstract fetchModelPreferences(): Promise<ModelPreferences | null>\n public abstract saveModelPreferences(preferences: ModelPreferences): Promise<void>\n public abstract deleteModelPreferences(): Promise<void>\n}\n\nexport class RemoteModelProvider extends ModelProvider {\n private _client: ExtendedClient\n\n public constructor(client: BotpressClientLike) {\n super()\n this._client = getExtendedClient(client)\n }\n\n private async _fetchInstalledIntegrationNames() {\n try {\n const { bot } = await this._client.getBot({ id: this._client.botId })\n const integrations = Object.values(bot.integrations).filter((x) => x.status === 'registered')\n return integrations.map((x) => x.name)\n } catch (err) {\n if (isForbiddenOrUnauthorizedError(err)) {\n // This happens when the bot (with a BAK token) tries to access the .getBot endpoint\n return DEFAULT_INTEGRATIONS\n }\n\n throw err\n }\n }\n\n public async fetchInstalledModels() {\n const integrationNames = await this._fetchInstalledIntegrationNames()\n const models: Model[] = []\n\n await Promise.allSettled(\n integrationNames.map(async (integration) => {\n const { output } = await this._client.callAction({\n type: `${integration}:listLanguageModels`,\n input: {},\n })\n\n if (!output?.models?.length) {\n return\n }\n\n for (const model of output.models as RawModel[]) {\n if (model.name && model.id && model.input && model.tags) {\n models.push({\n ref: `${integration}:${model.id}`,\n integration,\n id: model.id,\n name: model.name,\n description: model.description,\n input: model.input,\n output: model.output,\n tags: model.tags,\n })\n }\n }\n })\n )\n\n return models\n }\n\n public async fetchModelPreferences(): Promise<ModelPreferences | null> {\n try {\n const { file } = await this._client.getFile({ id: this._preferenceFileKey })\n\n if (globalThis.fetch !== undefined) {\n const response = await fetch(file.url)\n return (await response.json()) as ModelPreferences\n } else {\n const { data } = await this._client.axios.get(file.url, {\n // we piggy-back axios to avoid adding a new dependency\n // unset all headers to avoid S3 pre-signed signature mismatch\n headers: Object.keys(this._client.config.headers).reduce(\n (acc, key) => {\n acc[key] = undefined\n return acc\n },\n {} as Record<string, undefined>\n ),\n })\n return data as ModelPreferences\n }\n } catch (err) {\n if (isNotFoundError(err)) {\n return null\n }\n\n throw err\n }\n }\n\n public async saveModelPreferences(preferences: ModelPreferences) {\n await this._client.uploadFile({\n key: this._preferenceFileKey,\n content: JSON.stringify(preferences, null, 2),\n index: false,\n tags: {\n system: 'true',\n purpose: 'config',\n },\n })\n }\n\n public async deleteModelPreferences() {\n await this._client.deleteFile({ id: this._preferenceFileKey }).catch(() => {})\n }\n\n private get _preferenceFileKey() {\n return `bot->${this._client.botId}->${PREFERENCES_FILE_SUFFIX}`\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Delay", "SkipFirstDelay", "AlwaysDelay", "backOff", "BackOff", "ref"]
|
|
7
7
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -174,7 +174,6 @@ declare class RemoteModelProvider extends ModelProvider {
|
|
|
174
174
|
|
|
175
175
|
type BotpressClientLike = {
|
|
176
176
|
callAction(...params: any): Promise<any>;
|
|
177
|
-
config: any;
|
|
178
177
|
constructor: Function;
|
|
179
178
|
};
|
|
180
179
|
type InputProps = Omit<GenerateContentInput, 'model'> & {
|
|
@@ -5569,6 +5568,388 @@ interface GetPublicPluginCodeResponse {
|
|
|
5569
5568
|
code: string;
|
|
5570
5569
|
}
|
|
5571
5570
|
|
|
5571
|
+
interface ListPublicInterfacesRequestHeaders {
|
|
5572
|
+
}
|
|
5573
|
+
interface ListPublicInterfacesRequestQuery {
|
|
5574
|
+
nextToken?: string;
|
|
5575
|
+
name?: string;
|
|
5576
|
+
version?: string;
|
|
5577
|
+
}
|
|
5578
|
+
interface ListPublicInterfacesRequestParams {
|
|
5579
|
+
}
|
|
5580
|
+
interface ListPublicInterfacesRequestBody {
|
|
5581
|
+
}
|
|
5582
|
+
type ListPublicInterfacesInput = ListPublicInterfacesRequestBody & ListPublicInterfacesRequestHeaders & ListPublicInterfacesRequestQuery & ListPublicInterfacesRequestParams;
|
|
5583
|
+
interface ListPublicInterfacesResponse {
|
|
5584
|
+
interfaces: {
|
|
5585
|
+
/**
|
|
5586
|
+
* ID of the [Interface](#schema_interface)
|
|
5587
|
+
*/
|
|
5588
|
+
id: string;
|
|
5589
|
+
/**
|
|
5590
|
+
* Creation date of the [Interface](#schema_interface) in ISO 8601 format
|
|
5591
|
+
*/
|
|
5592
|
+
createdAt: string;
|
|
5593
|
+
/**
|
|
5594
|
+
* Updating date of the [Interface](#schema_interface) in ISO 8601 format
|
|
5595
|
+
*/
|
|
5596
|
+
updatedAt: string;
|
|
5597
|
+
/**
|
|
5598
|
+
* Name of the [Interface](#schema_interface)
|
|
5599
|
+
*/
|
|
5600
|
+
name: string;
|
|
5601
|
+
/**
|
|
5602
|
+
* Version of the [Interface](#schema_interface)
|
|
5603
|
+
*/
|
|
5604
|
+
version: string;
|
|
5605
|
+
/**
|
|
5606
|
+
* Title of the interface. This is the name that will be displayed in the UI
|
|
5607
|
+
*/
|
|
5608
|
+
title: string;
|
|
5609
|
+
/**
|
|
5610
|
+
* Description of the interface. This is the description that will be displayed in the UI
|
|
5611
|
+
*/
|
|
5612
|
+
description: string;
|
|
5613
|
+
/**
|
|
5614
|
+
* URL of the icon of the interface. This is the icon that will be displayed in the UI
|
|
5615
|
+
*/
|
|
5616
|
+
iconUrl: string;
|
|
5617
|
+
/**
|
|
5618
|
+
* URL of the readme of the interface. This is the readme that will be displayed in the UI
|
|
5619
|
+
*/
|
|
5620
|
+
readmeUrl: string;
|
|
5621
|
+
/**
|
|
5622
|
+
* Indicates if the interface is public. Public interfaces are available to all and cannot be updated without creating a new version.
|
|
5623
|
+
*/
|
|
5624
|
+
public: boolean;
|
|
5625
|
+
}[];
|
|
5626
|
+
meta: {
|
|
5627
|
+
/**
|
|
5628
|
+
* The token to use to retrieve the next page of results, passed as a query string parameter (value should be URL-encoded) to this API endpoint.
|
|
5629
|
+
*/
|
|
5630
|
+
nextToken?: string;
|
|
5631
|
+
};
|
|
5632
|
+
}
|
|
5633
|
+
|
|
5634
|
+
interface GetPublicInterfaceByIdRequestHeaders {
|
|
5635
|
+
}
|
|
5636
|
+
interface GetPublicInterfaceByIdRequestQuery {
|
|
5637
|
+
}
|
|
5638
|
+
interface GetPublicInterfaceByIdRequestParams {
|
|
5639
|
+
id: string;
|
|
5640
|
+
}
|
|
5641
|
+
interface GetPublicInterfaceByIdRequestBody {
|
|
5642
|
+
}
|
|
5643
|
+
type GetPublicInterfaceByIdInput = GetPublicInterfaceByIdRequestBody & GetPublicInterfaceByIdRequestHeaders & GetPublicInterfaceByIdRequestQuery & GetPublicInterfaceByIdRequestParams;
|
|
5644
|
+
interface GetPublicInterfaceByIdResponse {
|
|
5645
|
+
interface: {
|
|
5646
|
+
/**
|
|
5647
|
+
* ID of the [Interface](#schema_interface)
|
|
5648
|
+
*/
|
|
5649
|
+
id: string;
|
|
5650
|
+
/**
|
|
5651
|
+
* Creation date of the [Interface](#schema_interface) in ISO 8601 format
|
|
5652
|
+
*/
|
|
5653
|
+
createdAt: string;
|
|
5654
|
+
/**
|
|
5655
|
+
* Updating date of the [Interface](#schema_interface) in ISO 8601 format
|
|
5656
|
+
*/
|
|
5657
|
+
updatedAt: string;
|
|
5658
|
+
/**
|
|
5659
|
+
* Name of the [Interface](#schema_interface)
|
|
5660
|
+
*/
|
|
5661
|
+
name: string;
|
|
5662
|
+
/**
|
|
5663
|
+
* Version of the [Interface](#schema_interface)
|
|
5664
|
+
*/
|
|
5665
|
+
version: string;
|
|
5666
|
+
entities: {
|
|
5667
|
+
/**
|
|
5668
|
+
* Entity definition
|
|
5669
|
+
*/
|
|
5670
|
+
[k: string]: {
|
|
5671
|
+
/**
|
|
5672
|
+
* Title of the entity
|
|
5673
|
+
*/
|
|
5674
|
+
title?: string;
|
|
5675
|
+
/**
|
|
5676
|
+
* Description of the entity
|
|
5677
|
+
*/
|
|
5678
|
+
description?: string;
|
|
5679
|
+
schema: {
|
|
5680
|
+
[k: string]: any;
|
|
5681
|
+
};
|
|
5682
|
+
};
|
|
5683
|
+
};
|
|
5684
|
+
events: {
|
|
5685
|
+
/**
|
|
5686
|
+
* Event Definition
|
|
5687
|
+
*/
|
|
5688
|
+
[k: string]: {
|
|
5689
|
+
/**
|
|
5690
|
+
* Title of the event
|
|
5691
|
+
*/
|
|
5692
|
+
title?: string;
|
|
5693
|
+
/**
|
|
5694
|
+
* Description of the event
|
|
5695
|
+
*/
|
|
5696
|
+
description?: string;
|
|
5697
|
+
schema: {
|
|
5698
|
+
[k: string]: any;
|
|
5699
|
+
};
|
|
5700
|
+
/**
|
|
5701
|
+
* Optional attributes
|
|
5702
|
+
*/
|
|
5703
|
+
attributes?: {
|
|
5704
|
+
[k: string]: string;
|
|
5705
|
+
};
|
|
5706
|
+
};
|
|
5707
|
+
};
|
|
5708
|
+
actions: {
|
|
5709
|
+
/**
|
|
5710
|
+
* Action definition
|
|
5711
|
+
*/
|
|
5712
|
+
[k: string]: {
|
|
5713
|
+
/**
|
|
5714
|
+
* Title of the action
|
|
5715
|
+
*/
|
|
5716
|
+
title?: string;
|
|
5717
|
+
/**
|
|
5718
|
+
* Description of the action
|
|
5719
|
+
*/
|
|
5720
|
+
description?: string;
|
|
5721
|
+
billable?: boolean;
|
|
5722
|
+
cacheable?: boolean;
|
|
5723
|
+
input: {
|
|
5724
|
+
schema: {
|
|
5725
|
+
[k: string]: any;
|
|
5726
|
+
};
|
|
5727
|
+
};
|
|
5728
|
+
output: {
|
|
5729
|
+
schema: {
|
|
5730
|
+
[k: string]: any;
|
|
5731
|
+
};
|
|
5732
|
+
};
|
|
5733
|
+
/**
|
|
5734
|
+
* Optional attributes
|
|
5735
|
+
*/
|
|
5736
|
+
attributes?: {
|
|
5737
|
+
[k: string]: string;
|
|
5738
|
+
};
|
|
5739
|
+
};
|
|
5740
|
+
};
|
|
5741
|
+
channels: {
|
|
5742
|
+
[k: string]: {
|
|
5743
|
+
/**
|
|
5744
|
+
* Title of the channel
|
|
5745
|
+
*/
|
|
5746
|
+
title?: string;
|
|
5747
|
+
/**
|
|
5748
|
+
* Description of the channel
|
|
5749
|
+
*/
|
|
5750
|
+
description?: string;
|
|
5751
|
+
messages: {
|
|
5752
|
+
/**
|
|
5753
|
+
* Message definition
|
|
5754
|
+
*/
|
|
5755
|
+
[k: string]: {
|
|
5756
|
+
schema: {
|
|
5757
|
+
[k: string]: any;
|
|
5758
|
+
};
|
|
5759
|
+
};
|
|
5760
|
+
};
|
|
5761
|
+
};
|
|
5762
|
+
};
|
|
5763
|
+
/**
|
|
5764
|
+
* Template string optionaly used at build time by integrations implementing this interface to pick a name for actions and events.
|
|
5765
|
+
*/
|
|
5766
|
+
nameTemplate?: {
|
|
5767
|
+
script: string;
|
|
5768
|
+
language: string;
|
|
5769
|
+
};
|
|
5770
|
+
/**
|
|
5771
|
+
* Title of the interface. This is the name that will be displayed in the UI
|
|
5772
|
+
*/
|
|
5773
|
+
title: string;
|
|
5774
|
+
/**
|
|
5775
|
+
* Description of the interface. This is the description that will be displayed in the UI
|
|
5776
|
+
*/
|
|
5777
|
+
description: string;
|
|
5778
|
+
/**
|
|
5779
|
+
* URL of the icon of the interface. This is the icon that will be displayed in the UI
|
|
5780
|
+
*/
|
|
5781
|
+
iconUrl: string;
|
|
5782
|
+
/**
|
|
5783
|
+
* URL of the readme of the interface. This is the readme that will be displayed in the UI
|
|
5784
|
+
*/
|
|
5785
|
+
readmeUrl: string;
|
|
5786
|
+
/**
|
|
5787
|
+
* Indicates if the interface is public. Public interfaces are available to all and cannot be updated without creating a new version.
|
|
5788
|
+
*/
|
|
5789
|
+
public: boolean;
|
|
5790
|
+
};
|
|
5791
|
+
}
|
|
5792
|
+
|
|
5793
|
+
interface GetPublicInterfaceRequestHeaders {
|
|
5794
|
+
}
|
|
5795
|
+
interface GetPublicInterfaceRequestQuery {
|
|
5796
|
+
}
|
|
5797
|
+
interface GetPublicInterfaceRequestParams {
|
|
5798
|
+
name: string;
|
|
5799
|
+
version: string;
|
|
5800
|
+
}
|
|
5801
|
+
interface GetPublicInterfaceRequestBody {
|
|
5802
|
+
}
|
|
5803
|
+
type GetPublicInterfaceInput = GetPublicInterfaceRequestBody & GetPublicInterfaceRequestHeaders & GetPublicInterfaceRequestQuery & GetPublicInterfaceRequestParams;
|
|
5804
|
+
interface GetPublicInterfaceResponse {
|
|
5805
|
+
interface: {
|
|
5806
|
+
/**
|
|
5807
|
+
* ID of the [Interface](#schema_interface)
|
|
5808
|
+
*/
|
|
5809
|
+
id: string;
|
|
5810
|
+
/**
|
|
5811
|
+
* Creation date of the [Interface](#schema_interface) in ISO 8601 format
|
|
5812
|
+
*/
|
|
5813
|
+
createdAt: string;
|
|
5814
|
+
/**
|
|
5815
|
+
* Updating date of the [Interface](#schema_interface) in ISO 8601 format
|
|
5816
|
+
*/
|
|
5817
|
+
updatedAt: string;
|
|
5818
|
+
/**
|
|
5819
|
+
* Name of the [Interface](#schema_interface)
|
|
5820
|
+
*/
|
|
5821
|
+
name: string;
|
|
5822
|
+
/**
|
|
5823
|
+
* Version of the [Interface](#schema_interface)
|
|
5824
|
+
*/
|
|
5825
|
+
version: string;
|
|
5826
|
+
entities: {
|
|
5827
|
+
/**
|
|
5828
|
+
* Entity definition
|
|
5829
|
+
*/
|
|
5830
|
+
[k: string]: {
|
|
5831
|
+
/**
|
|
5832
|
+
* Title of the entity
|
|
5833
|
+
*/
|
|
5834
|
+
title?: string;
|
|
5835
|
+
/**
|
|
5836
|
+
* Description of the entity
|
|
5837
|
+
*/
|
|
5838
|
+
description?: string;
|
|
5839
|
+
schema: {
|
|
5840
|
+
[k: string]: any;
|
|
5841
|
+
};
|
|
5842
|
+
};
|
|
5843
|
+
};
|
|
5844
|
+
events: {
|
|
5845
|
+
/**
|
|
5846
|
+
* Event Definition
|
|
5847
|
+
*/
|
|
5848
|
+
[k: string]: {
|
|
5849
|
+
/**
|
|
5850
|
+
* Title of the event
|
|
5851
|
+
*/
|
|
5852
|
+
title?: string;
|
|
5853
|
+
/**
|
|
5854
|
+
* Description of the event
|
|
5855
|
+
*/
|
|
5856
|
+
description?: string;
|
|
5857
|
+
schema: {
|
|
5858
|
+
[k: string]: any;
|
|
5859
|
+
};
|
|
5860
|
+
/**
|
|
5861
|
+
* Optional attributes
|
|
5862
|
+
*/
|
|
5863
|
+
attributes?: {
|
|
5864
|
+
[k: string]: string;
|
|
5865
|
+
};
|
|
5866
|
+
};
|
|
5867
|
+
};
|
|
5868
|
+
actions: {
|
|
5869
|
+
/**
|
|
5870
|
+
* Action definition
|
|
5871
|
+
*/
|
|
5872
|
+
[k: string]: {
|
|
5873
|
+
/**
|
|
5874
|
+
* Title of the action
|
|
5875
|
+
*/
|
|
5876
|
+
title?: string;
|
|
5877
|
+
/**
|
|
5878
|
+
* Description of the action
|
|
5879
|
+
*/
|
|
5880
|
+
description?: string;
|
|
5881
|
+
billable?: boolean;
|
|
5882
|
+
cacheable?: boolean;
|
|
5883
|
+
input: {
|
|
5884
|
+
schema: {
|
|
5885
|
+
[k: string]: any;
|
|
5886
|
+
};
|
|
5887
|
+
};
|
|
5888
|
+
output: {
|
|
5889
|
+
schema: {
|
|
5890
|
+
[k: string]: any;
|
|
5891
|
+
};
|
|
5892
|
+
};
|
|
5893
|
+
/**
|
|
5894
|
+
* Optional attributes
|
|
5895
|
+
*/
|
|
5896
|
+
attributes?: {
|
|
5897
|
+
[k: string]: string;
|
|
5898
|
+
};
|
|
5899
|
+
};
|
|
5900
|
+
};
|
|
5901
|
+
channels: {
|
|
5902
|
+
[k: string]: {
|
|
5903
|
+
/**
|
|
5904
|
+
* Title of the channel
|
|
5905
|
+
*/
|
|
5906
|
+
title?: string;
|
|
5907
|
+
/**
|
|
5908
|
+
* Description of the channel
|
|
5909
|
+
*/
|
|
5910
|
+
description?: string;
|
|
5911
|
+
messages: {
|
|
5912
|
+
/**
|
|
5913
|
+
* Message definition
|
|
5914
|
+
*/
|
|
5915
|
+
[k: string]: {
|
|
5916
|
+
schema: {
|
|
5917
|
+
[k: string]: any;
|
|
5918
|
+
};
|
|
5919
|
+
};
|
|
5920
|
+
};
|
|
5921
|
+
};
|
|
5922
|
+
};
|
|
5923
|
+
/**
|
|
5924
|
+
* Template string optionaly used at build time by integrations implementing this interface to pick a name for actions and events.
|
|
5925
|
+
*/
|
|
5926
|
+
nameTemplate?: {
|
|
5927
|
+
script: string;
|
|
5928
|
+
language: string;
|
|
5929
|
+
};
|
|
5930
|
+
/**
|
|
5931
|
+
* Title of the interface. This is the name that will be displayed in the UI
|
|
5932
|
+
*/
|
|
5933
|
+
title: string;
|
|
5934
|
+
/**
|
|
5935
|
+
* Description of the interface. This is the description that will be displayed in the UI
|
|
5936
|
+
*/
|
|
5937
|
+
description: string;
|
|
5938
|
+
/**
|
|
5939
|
+
* URL of the icon of the interface. This is the icon that will be displayed in the UI
|
|
5940
|
+
*/
|
|
5941
|
+
iconUrl: string;
|
|
5942
|
+
/**
|
|
5943
|
+
* URL of the readme of the interface. This is the readme that will be displayed in the UI
|
|
5944
|
+
*/
|
|
5945
|
+
readmeUrl: string;
|
|
5946
|
+
/**
|
|
5947
|
+
* Indicates if the interface is public. Public interfaces are available to all and cannot be updated without creating a new version.
|
|
5948
|
+
*/
|
|
5949
|
+
public: boolean;
|
|
5950
|
+
};
|
|
5951
|
+
}
|
|
5952
|
+
|
|
5572
5953
|
interface CreateBotRequestHeaders {
|
|
5573
5954
|
}
|
|
5574
5955
|
interface CreateBotRequestQuery {
|
|
@@ -5819,6 +6200,10 @@ interface CreateBotResponse {
|
|
|
5819
6200
|
};
|
|
5820
6201
|
status: "registration_pending" | "registered" | "registration_failed" | "unregistration_pending" | "unregistered" | "unregistration_failed";
|
|
5821
6202
|
statusReason: string | null;
|
|
6203
|
+
/**
|
|
6204
|
+
* Disabled channels for this integration
|
|
6205
|
+
*/
|
|
6206
|
+
disabledChannels: string[];
|
|
5822
6207
|
/**
|
|
5823
6208
|
* ID of the [Integration](#schema_integration)
|
|
5824
6209
|
*/
|
|
@@ -6275,6 +6660,10 @@ interface UpdateBotRequestBody {
|
|
|
6275
6660
|
configuration?: {
|
|
6276
6661
|
[k: string]: any;
|
|
6277
6662
|
};
|
|
6663
|
+
/**
|
|
6664
|
+
* Disabled channels for this integration
|
|
6665
|
+
*/
|
|
6666
|
+
disabledChannels?: string[];
|
|
6278
6667
|
} | null;
|
|
6279
6668
|
};
|
|
6280
6669
|
subscriptions?: {
|
|
@@ -6341,6 +6730,10 @@ interface UpdateBotResponse {
|
|
|
6341
6730
|
};
|
|
6342
6731
|
status: "registration_pending" | "registered" | "registration_failed" | "unregistration_pending" | "unregistered" | "unregistration_failed";
|
|
6343
6732
|
statusReason: string | null;
|
|
6733
|
+
/**
|
|
6734
|
+
* Disabled channels for this integration
|
|
6735
|
+
*/
|
|
6736
|
+
disabledChannels: string[];
|
|
6344
6737
|
/**
|
|
6345
6738
|
* ID of the [Integration](#schema_integration)
|
|
6346
6739
|
*/
|
|
@@ -6730,6 +7123,10 @@ interface GetBotResponse {
|
|
|
6730
7123
|
};
|
|
6731
7124
|
status: "registration_pending" | "registered" | "registration_failed" | "unregistration_pending" | "unregistered" | "unregistration_failed";
|
|
6732
7125
|
statusReason: string | null;
|
|
7126
|
+
/**
|
|
7127
|
+
* Disabled channels for this integration
|
|
7128
|
+
*/
|
|
7129
|
+
disabledChannels: string[];
|
|
6733
7130
|
/**
|
|
6734
7131
|
* ID of the [Integration](#schema_integration)
|
|
6735
7132
|
*/
|
|
@@ -7026,6 +7423,7 @@ interface GetBotLogsRequestQuery {
|
|
|
7026
7423
|
userId?: string;
|
|
7027
7424
|
workflowId?: string;
|
|
7028
7425
|
conversationId?: string;
|
|
7426
|
+
messageContains?: string;
|
|
7029
7427
|
nextToken?: string;
|
|
7030
7428
|
}
|
|
7031
7429
|
interface GetBotLogsRequestParams {
|
|
@@ -10624,6 +11022,7 @@ interface GetIntegrationLogsRequestQuery {
|
|
|
10624
11022
|
level?: string;
|
|
10625
11023
|
userId?: string;
|
|
10626
11024
|
conversationId?: string;
|
|
11025
|
+
messageContains?: string;
|
|
10627
11026
|
nextToken?: string;
|
|
10628
11027
|
}
|
|
10629
11028
|
interface GetIntegrationLogsRequestParams {
|
|
@@ -11962,6 +12361,7 @@ interface ListInterfacesRequestHeaders {
|
|
|
11962
12361
|
interface ListInterfacesRequestQuery {
|
|
11963
12362
|
nextToken?: string;
|
|
11964
12363
|
name?: string;
|
|
12364
|
+
version?: string;
|
|
11965
12365
|
}
|
|
11966
12366
|
interface ListInterfacesRequestParams {
|
|
11967
12367
|
}
|
|
@@ -13432,8 +13832,15 @@ interface ListUsageActivityDailyRequestBody {
|
|
|
13432
13832
|
type ListUsageActivityDailyInput = ListUsageActivityDailyRequestBody & ListUsageActivityDailyRequestHeaders & ListUsageActivityDailyRequestQuery & ListUsageActivityDailyRequestParams;
|
|
13433
13833
|
interface ListUsageActivityDailyResponse {
|
|
13434
13834
|
data: {
|
|
13835
|
+
key: string;
|
|
13435
13836
|
date: string;
|
|
13436
13837
|
value: number;
|
|
13838
|
+
metadata?: {
|
|
13839
|
+
botId: string;
|
|
13840
|
+
type: "IntegrationAction" | "FileIndexing";
|
|
13841
|
+
subtype: string;
|
|
13842
|
+
source?: string;
|
|
13843
|
+
};
|
|
13437
13844
|
}[];
|
|
13438
13845
|
meta: {
|
|
13439
13846
|
nextToken?: string;
|
|
@@ -14290,6 +14697,33 @@ interface ListFilePassagesResponse {
|
|
|
14290
14697
|
};
|
|
14291
14698
|
}
|
|
14292
14699
|
|
|
14700
|
+
interface SetFilePassagesRequestHeaders {
|
|
14701
|
+
}
|
|
14702
|
+
interface SetFilePassagesRequestQuery {
|
|
14703
|
+
}
|
|
14704
|
+
interface SetFilePassagesRequestParams {
|
|
14705
|
+
id: string;
|
|
14706
|
+
}
|
|
14707
|
+
interface SetFilePassagesRequestBody {
|
|
14708
|
+
/**
|
|
14709
|
+
* Note: The passages should appear in the array in the same order as they appear in the original document.
|
|
14710
|
+
*/
|
|
14711
|
+
passages: {
|
|
14712
|
+
/**
|
|
14713
|
+
* The content of the passage, supports Markdown formatting.
|
|
14714
|
+
*/
|
|
14715
|
+
content: string;
|
|
14716
|
+
/**
|
|
14717
|
+
* The type should match the Markdown format used for the passage content.
|
|
14718
|
+
*/
|
|
14719
|
+
type?: "title" | "subtitle" | "paragraph" | "blockquote" | "list" | "table" | "code" | "image";
|
|
14720
|
+
pageNumber?: number;
|
|
14721
|
+
}[];
|
|
14722
|
+
}
|
|
14723
|
+
type SetFilePassagesInput = SetFilePassagesRequestBody & SetFilePassagesRequestHeaders & SetFilePassagesRequestQuery & SetFilePassagesRequestParams;
|
|
14724
|
+
interface SetFilePassagesResponse {
|
|
14725
|
+
}
|
|
14726
|
+
|
|
14293
14727
|
interface ListFileTagsRequestHeaders {
|
|
14294
14728
|
}
|
|
14295
14729
|
interface ListFileTagsRequestQuery {
|
|
@@ -16124,6 +16558,9 @@ declare class Client$1 {
|
|
|
16124
16558
|
readonly getPublicPluginById: (input: GetPublicPluginByIdInput) => Promise<GetPublicPluginByIdResponse>;
|
|
16125
16559
|
readonly getPublicPlugin: (input: GetPublicPluginInput) => Promise<GetPublicPluginResponse>;
|
|
16126
16560
|
readonly getPublicPluginCode: (input: GetPublicPluginCodeInput) => Promise<GetPublicPluginCodeResponse>;
|
|
16561
|
+
readonly listPublicInterfaces: (input: ListPublicInterfacesInput) => Promise<ListPublicInterfacesResponse>;
|
|
16562
|
+
readonly getPublicInterfaceById: (input: GetPublicInterfaceByIdInput) => Promise<GetPublicInterfaceByIdResponse>;
|
|
16563
|
+
readonly getPublicInterface: (input: GetPublicInterfaceInput) => Promise<GetPublicInterfaceResponse>;
|
|
16127
16564
|
readonly createBot: (input: CreateBotInput) => Promise<CreateBotResponse>;
|
|
16128
16565
|
readonly updateBot: (input: UpdateBotInput) => Promise<UpdateBotResponse>;
|
|
16129
16566
|
readonly transferBot: (input: TransferBotInput) => Promise<TransferBotResponse>;
|
|
@@ -16211,6 +16648,7 @@ declare class Client$1 {
|
|
|
16211
16648
|
readonly copyFile: (input: CopyFileInput) => Promise<CopyFileResponse>;
|
|
16212
16649
|
readonly searchFiles: (input: SearchFilesInput) => Promise<SearchFilesResponse>;
|
|
16213
16650
|
readonly listFilePassages: (input: ListFilePassagesInput) => Promise<ListFilePassagesResponse>;
|
|
16651
|
+
readonly setFilePassages: (input: SetFilePassagesInput) => Promise<SetFilePassagesResponse>;
|
|
16214
16652
|
readonly listFileTags: (input: ListFileTagsInput) => Promise<ListFileTagsResponse>;
|
|
16215
16653
|
readonly listFileTagValues: (input: ListFileTagValuesInput) => Promise<ListFileTagValuesResponse>;
|
|
16216
16654
|
readonly createKnowledgeBase: (input: CreateKnowledgeBaseInput) => Promise<CreateKnowledgeBaseResponse>;
|
|
@@ -16488,6 +16926,7 @@ declare class Client extends Client$1 implements IClient {
|
|
|
16488
16926
|
}>;
|
|
16489
16927
|
interfaces: (props: {
|
|
16490
16928
|
name?: string | undefined;
|
|
16929
|
+
version?: string | undefined;
|
|
16491
16930
|
}) => AsyncCollection<{
|
|
16492
16931
|
id: string;
|
|
16493
16932
|
createdAt: string;
|
|
@@ -16572,8 +17011,15 @@ declare class Client extends Client$1 implements IClient {
|
|
|
16572
17011
|
dateFrom?: string | undefined;
|
|
16573
17012
|
dateUntil?: string | undefined;
|
|
16574
17013
|
}) => AsyncCollection<{
|
|
17014
|
+
key: string;
|
|
16575
17015
|
date: string;
|
|
16576
17016
|
value: number;
|
|
17017
|
+
metadata?: {
|
|
17018
|
+
botId: string;
|
|
17019
|
+
type: "IntegrationAction" | "FileIndexing";
|
|
17020
|
+
subtype: string;
|
|
17021
|
+
source?: string;
|
|
17022
|
+
};
|
|
16577
17023
|
}>;
|
|
16578
17024
|
};
|
|
16579
17025
|
/**
|
package/dist/index.mjs
CHANGED
|
@@ -611,7 +611,17 @@ var createNanoEvents = () => ({
|
|
|
611
611
|
});
|
|
612
612
|
|
|
613
613
|
// src/bp-client.ts
|
|
614
|
-
var getExtendedClient = (
|
|
614
|
+
var getExtendedClient = (_client) => {
|
|
615
|
+
const client = _client;
|
|
616
|
+
if (!client || client === null || typeof client !== "object") {
|
|
617
|
+
throw new Error("Client must be a valid instance of a Botpress client (@botpress/client)");
|
|
618
|
+
}
|
|
619
|
+
if (typeof client._client === "object" && !!client._client) {
|
|
620
|
+
try {
|
|
621
|
+
return getExtendedClient(client._client);
|
|
622
|
+
} catch {
|
|
623
|
+
}
|
|
624
|
+
}
|
|
615
625
|
if (typeof client.constructor !== "function" || typeof client.callAction !== "function" || !client.config || typeof client.config !== "object" || !client.config.headers) {
|
|
616
626
|
throw new Error("Client must be a valid instance of a Botpress client (@botpress/client)");
|
|
617
627
|
}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/options.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/jitter/full/full.jitter.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/jitter/no/no.jitter.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/jitter/jitter.factory.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/delay/delay.base.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/delay/skip-first/skip-first.delay.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/delay/always/always.delay.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/delay/delay.factory.ts", "../../../node_modules/.pnpm/exponential-backoff@3.1.1/node_modules/exponential-backoff/src/backoff.ts", "../src/client.ts", "../../../node_modules/.pnpm/nanoevents@9.1.0/node_modules/nanoevents/index.js", "../src/bp-client.ts", "../src/errors.ts", "../src/interceptors.ts", "../src/models.ts"],
|
|
4
|
-
"sourcesContent": [null, null, null, null, null, null, null, null, null, "import { backOff } from 'exponential-backoff'\nimport { createNanoEvents, Unsubscribe } from 'nanoevents'\n\nimport { ExtendedClient, getExtendedClient } from './bp-client'\nimport { getActionFromError } from './errors'\nimport { InterceptorManager } from './interceptors'\nimport {\n DOWNTIME_THRESHOLD_MINUTES,\n getBestModels,\n getFastModels,\n Model,\n ModelPreferences,\n ModelProvider,\n ModelRef,\n pickModel,\n RemoteModelProvider,\n} from './models'\nimport { GenerateContentOutput } from './schemas.gen'\nimport { CognitiveProps, Events, InputProps, Request, Response } from './types'\n\nexport class Cognitive {\n public ['$$IS_COGNITIVE'] = true\n\n public static isCognitiveClient(obj: any): obj is Cognitive {\n return obj?.$$IS_COGNITIVE === true\n }\n\n public interceptors = {\n request: new InterceptorManager<Request>(),\n response: new InterceptorManager<Response>(),\n }\n\n private _client: ExtendedClient\n private _preferences: ModelPreferences | null = null\n private _provider: ModelProvider\n private _events = createNanoEvents<Events>()\n private _downtimes: ModelPreferences['downtimes'] = []\n private _models: Model[] = []\n\n public constructor(props: CognitiveProps) {\n this._client = getExtendedClient(props.client)\n this._provider = props.provider ?? new RemoteModelProvider(props.client)\n }\n\n public get client(): ExtendedClient {\n return this._client\n }\n\n public on<K extends keyof Events>(this: this, event: K, cb: Events[K]): Unsubscribe {\n return this._events.on(event, cb)\n }\n\n public async fetchInstalledModels(): Promise<Model[]> {\n if (!this._models.length) {\n this._models = await this._provider.fetchInstalledModels()\n }\n\n return this._models\n }\n\n public async fetchPreferences(): Promise<ModelPreferences> {\n if (this._preferences) {\n return this._preferences\n }\n\n this._preferences = await this._provider.fetchModelPreferences()\n\n if (this._preferences) {\n return this._preferences\n }\n\n const models = await this.fetchInstalledModels()\n\n this._preferences = {\n best: getBestModels(models).map((m) => m.ref),\n fast: getFastModels(models).map((m) => m.ref),\n downtimes: [],\n }\n\n await this._provider.saveModelPreferences(this._preferences)\n\n return this._preferences\n }\n\n public async setPreferences(preferences: ModelPreferences, save: boolean = false): Promise<void> {\n this._preferences = preferences\n\n if (save) {\n await this._provider.saveModelPreferences(preferences)\n }\n }\n\n private _cleanupOldDowntimes(): void {\n const now = Date.now()\n const thresholdMs = 1000 * 60 * DOWNTIME_THRESHOLD_MINUTES\n\n this._preferences!.downtimes = this._preferences!.downtimes.filter((downtime) => {\n const downtimeStart = new Date(downtime.startedAt).getTime()\n return now - downtimeStart <= thresholdMs\n })\n }\n\n private async _selectModel(ref: string): Promise<{ integration: string; model: string }> {\n const parseRef = (ref: string) => {\n const parts = ref.split(':')\n return { integration: parts[0]!, model: parts.slice(1).join(':') }\n }\n\n const preferences = await this.fetchPreferences()\n\n preferences.best ??= []\n preferences.fast ??= []\n preferences.downtimes ??= []\n\n const downtimes = [...preferences.downtimes, ...(this._downtimes ?? [])]\n\n if (ref === 'best') {\n return parseRef(pickModel(preferences.best, downtimes))\n }\n\n if (ref === 'fast') {\n return parseRef(pickModel(preferences.fast, downtimes))\n }\n\n return parseRef(pickModel([ref as ModelRef, ...preferences.best, ...preferences.fast], downtimes))\n }\n\n public async getModelDetails(model: string) {\n await this.fetchInstalledModels()\n const { integration, model: modelName } = await this._selectModel(model)\n const def = this._models.find((m) => m.integration === integration && (m.name === modelName || m.id === modelName))\n if (!def) {\n console.info('Models:', this._models)\n throw new Error(`Model ${modelName} not found`)\n }\n\n return def\n }\n\n public async generateContent(input: InputProps): Promise<Response> {\n const start = Date.now()\n\n const signal = input.signal ?? AbortSignal.timeout(30_000)\n\n const client = this._client.abortable(signal)\n\n let props: Request = { input }\n let integration: string\n let model: string\n\n const { output, meta } = await backOff<{\n output: GenerateContentOutput\n meta: any\n }>(\n async () => {\n const selection = await this._selectModel(input.model ?? 'best')\n\n integration = selection.integration\n model = selection.model\n\n props = await this.interceptors.request.run({ input }, signal)\n\n return client.callAction({\n type: `${integration}:generateContent`,\n input: {\n ...props.input,\n model: { id: model },\n },\n }) as Promise<{ output: GenerateContentOutput; meta: any }>\n },\n {\n retry: async (err, _attempt) => {\n if (signal?.aborted) {\n // We don't want to retry if the request was aborted\n this._events.emit('aborted', props, err)\n return false\n }\n\n if (_attempt > 3) {\n // We don't want to retry more than 3 times\n this._events.emit('error', props, err)\n return false\n }\n\n const action = getActionFromError(err)\n\n if (action === 'abort') {\n this._events.emit('error', props, err)\n return false\n }\n\n if (action === 'fallback') {\n // We don't want to retry if the request was already retried with a fallback model\n this._downtimes.push({\n ref: `${integration!}:${model!}`,\n startedAt: new Date().toISOString(),\n reason: 'Model is down',\n })\n\n this._cleanupOldDowntimes()\n\n await this._provider.saveModelPreferences({\n ...(this._preferences ?? { best: [], downtimes: [], fast: [] }),\n downtimes: [...(this._preferences!.downtimes ?? []), ...(this._downtimes ?? [])],\n })\n\n this._events.emit('fallback', props, err)\n return true\n }\n\n this._events.emit('retry', props, err)\n return true\n },\n }\n )\n\n const response = {\n output,\n meta: {\n cached: meta.cached ?? false,\n model: { integration: integration!, model: model! },\n latency: Date.now() - start,\n cost: { input: output.usage.inputCost, output: output.usage.outputCost },\n tokens: { input: output.usage.inputTokens, output: output.usage.outputTokens },\n },\n } satisfies Response\n\n this._events.emit('response', props, response)\n\n return this.interceptors.response.run(response, signal)\n }\n}\n", "export let createNanoEvents = () => ({\n emit(event, ...args) {\n for (\n let callbacks = this.events[event] || [],\n i = 0,\n length = callbacks.length;\n i < length;\n i++\n ) {\n callbacks[i](...args)\n }\n },\n events: {},\n on(event, cb) {\n ;(this.events[event] ||= []).push(cb)\n return () => {\n this.events[event] = this.events[event]?.filter(i => cb !== i)\n }\n }\n})\n", "import { type Client } from '@botpress/client'\nimport { type AxiosInstance } from 'axios'\nimport { BotpressClientLike } from './types'\n\n/** @internal */\nexport type ExtendedClient = Client & {\n botId: string\n axios: AxiosInstance\n clone: () => ExtendedClient\n abortable: (signal: AbortSignal) => ExtendedClient\n}\n\nexport const getExtendedClient = (client: BotpressClientLike): ExtendedClient => {\n if (\n typeof client.constructor !== 'function' ||\n typeof client.callAction !== 'function' ||\n !client.config ||\n typeof client.config !== 'object' ||\n !client.config.headers\n ) {\n throw new Error('Client must be a valid instance of a Botpress client (@botpress/client)')\n }\n\n const botId = client.config.headers['x-bot-id'] as string\n\n if (!botId?.length) {\n throw new Error('Client must be instanciated with Bot ID')\n }\n\n const clone = () => {\n const c = client as any\n if (c.clone && typeof c.clone === 'function') {\n return getExtendedClient(c.clone())\n }\n return getExtendedClient(new c.constructor(c.config))\n }\n\n return {\n ...client,\n botId,\n axios: (client as any).axiosInstance as AxiosInstance,\n clone,\n abortable: (signal: AbortSignal) => {\n const abortable = clone()\n const instance = abortable.axios\n instance.defaults.signal = signal\n return abortable\n },\n } as ExtendedClient\n}\n", "import { type ErrorType } from '@botpress/client'\n\nexport type BotpressError = {\n isApiError: boolean\n code: number\n description: string\n type: ErrorType\n subtype?: string\n error?: unknown\n metadata?: unknown\n message?: string\n id: string\n}\n\ntype Action = 'fallback' | 'retry' | 'abort'\n\nexport const getActionFromError = (error: any): Action => {\n if (!isBotpressError(error)) {\n return 'retry'\n }\n\n if (error.type === 'InvalidDataFormat') {\n if (error.message?.includes('data/model/id')) {\n // Invalid Model ID, so we want to try another model\n return 'fallback'\n }\n\n // Usually means the request was malformed\n return 'abort'\n }\n\n const subtype = (error.metadata as any)?.subtype\n if (error.type === 'Internal' || subtype === 'UPSTREAM_PROVIDER_FAILED') {\n // The model is degraded, so we want to try another model\n return 'fallback'\n }\n\n return 'abort'\n}\n\nexport const isNotFoundError = (error: any): boolean => isBotpressError(error) && error.type === 'ResourceNotFound'\n\nexport const isForbiddenOrUnauthorizedError = (error: any): boolean =>\n isBotpressError(error) && (error.type === 'Forbidden' || error.type === 'Unauthorized')\n\nexport const isBotpressError = (error: any): error is BotpressError =>\n typeof error === 'object' &&\n error !== null &&\n 'isApiError' in error &&\n 'code' in error &&\n 'type' in error &&\n 'id' in error\n", "export type Callback<T> = (error: any | null, value: T) => void\nexport type Interceptor<T> = (error: any | null, value: T, next: Callback<T>, done: Callback<T>) => Promise<void> | void\n\nexport class InterceptorManager<T> {\n private _interceptors: Interceptor<T>[] = []\n\n public use(interceptor: Interceptor<T>) {\n this._interceptors.push(interceptor)\n return () => this.remove(interceptor)\n }\n\n public remove(interceptor: Interceptor<T>) {\n this._interceptors = this._interceptors.filter((i) => i !== interceptor)\n }\n\n public async run(value: T, signal: AbortSignal): Promise<T> {\n let error: any | null = null\n let result: T = value\n let done = false\n\n for (const interceptor of this._interceptors) {\n if (done) {\n break\n }\n\n if (signal.aborted) {\n throw signal.reason\n }\n\n await new Promise<void>((resolve) => {\n void interceptor(\n error,\n result,\n (err, val) => {\n error = err\n result = val\n resolve()\n },\n (err, val) => {\n error = err\n result = val\n done = true\n resolve()\n }\n )\n })\n }\n\n if (error) {\n throw error\n }\n\n return result\n }\n}\n", "import { ExtendedClient, getExtendedClient } from './bp-client'\nimport { isForbiddenOrUnauthorizedError, isNotFoundError } from './errors'\nimport { Model as RawModel } from './schemas.gen'\nimport { BotpressClientLike } from './types'\n\nexport const DOWNTIME_THRESHOLD_MINUTES = 5\nconst PREFERENCES_FILE_SUFFIX = 'models.config.json'\n\nexport const DEFAULT_INTEGRATIONS = ['google-ai', 'anthropic', 'openai', 'cerebras', 'fireworks-ai', 'groq']\n\n// Biases for vendors and models\nconst VendorPreferences = ['google-ai', 'anthropic', 'openai']\nconst BestModelPreferences = ['4o', '3-5-sonnet', 'gemini-1.5-pro']\nconst FastModelPreferences = ['gemini-1.5-flash', '4o-mini', 'flash', 'haiku']\n\nconst InputPricePenalty = 3 // $3 per 1M tokens\nconst OutputPricePenalty = 10 // $10 per 1M tokens\nconst LowTokensPenalty = 128_000 // 128k tokens\n\nexport type Model = RawModel & {\n ref: ModelRef\n integration: string\n}\n\nexport type ModelRef = `${string}:${string}`\n\nexport type ModelPreferences = {\n best: ModelRef[]\n fast: ModelRef[]\n downtimes: Array<{ ref: ModelRef; startedAt: string; reason: string }>\n}\n\nconst isRecommended = (model: Model) => model.tags.includes('recommended')\nconst isDeprecated = (model: Model) => model.tags.includes('deprecated')\nconst isLowCost = (model: Model) => model.tags.includes('low-cost')\nconst hasVisionSupport = (model: Model) => model.tags.includes('vision')\nconst isGeneralPurpose = (model: Model) => model.tags.includes('general-purpose')\n\nconst scoreModel = (model: Model, type: 'best' | 'fast', boosts: Record<ModelRef, number> = {}) => {\n let score: number = 0\n\n const scores: Array<[string, boolean, number]> = [\n ['input price penalty', model.input.costPer1MTokens > InputPricePenalty, -1],\n ['output price penalty', model.output.costPer1MTokens > OutputPricePenalty, -1],\n ['low tokens penalty', (model.input.maxTokens ?? 0 + model.output.maxTokens ?? 0) < LowTokensPenalty, -1],\n ['recommended', isRecommended(model), 2],\n ['deprecated', isDeprecated(model), -2],\n ['vision support', hasVisionSupport(model), 1],\n ['general purpose', isGeneralPurpose(model), 1],\n ['vendor preference', VendorPreferences.includes(model.integration), 1],\n ['best model preference', type === 'best' && BestModelPreferences.some((x) => model.id.includes(x)), 1],\n ['fast model preference penalty', type === 'best' && FastModelPreferences.some((x) => model.id.includes(x)), -2],\n ['fast model preference', type === 'fast' && FastModelPreferences.some((x) => model.id.includes(x)), 2],\n ['low cost', type === 'fast' && isLowCost(model), 1],\n ]\n\n for (const rule in boosts) {\n if (model.ref.includes(rule)) {\n scores.push([`boost (${rule})`, true, Number(boosts[rule as ModelRef]) ?? 0] as const)\n }\n }\n\n for (const [, condition, value] of scores) {\n if (condition) {\n score += value\n }\n }\n\n return score\n}\n\nexport const getBestModels = (models: Model[], boosts: Record<ModelRef, number> = {}) =>\n models.sort((a, b) => scoreModel(b, 'best', boosts) - scoreModel(a, 'best', boosts))\n\nexport const getFastModels = (models: Model[], boosts: Record<ModelRef, number> = {}) =>\n models.sort((a, b) => scoreModel(b, 'fast', boosts) - scoreModel(a, 'fast', boosts))\n\nexport const pickModel = (models: ModelRef[], downtimes: ModelPreferences['downtimes'] = []) => {\n const copy = [...models]\n const elasped = (date: string) => new Date().getTime() - new Date(date).getTime()\n const DOWNTIME_THRESHOLD = 1000 * 60 * DOWNTIME_THRESHOLD_MINUTES\n\n if (!copy.length) {\n throw new Error('At least one model is required')\n }\n\n while (copy.length) {\n const ref = copy.shift() as ModelRef\n const downtime = downtimes.find((o) => o.ref === ref && elasped(o.startedAt) < DOWNTIME_THRESHOLD)\n if (downtime) {\n continue\n } else {\n return ref\n }\n }\n\n throw new Error(`All models are down: ${models.join(', ')}`)\n}\n\nexport abstract class ModelProvider {\n public abstract fetchInstalledModels(): Promise<Model[]>\n public abstract fetchModelPreferences(): Promise<ModelPreferences | null>\n public abstract saveModelPreferences(preferences: ModelPreferences): Promise<void>\n public abstract deleteModelPreferences(): Promise<void>\n}\n\nexport class RemoteModelProvider extends ModelProvider {\n private _client: ExtendedClient\n\n public constructor(client: BotpressClientLike) {\n super()\n this._client = getExtendedClient(client)\n }\n\n private async _fetchInstalledIntegrationNames() {\n try {\n const { bot } = await this._client.getBot({ id: this._client.botId })\n const integrations = Object.values(bot.integrations).filter((x) => x.status === 'registered')\n return integrations.map((x) => x.name)\n } catch (err) {\n if (isForbiddenOrUnauthorizedError(err)) {\n // This happens when the bot (with a BAK token) tries to access the .getBot endpoint\n return DEFAULT_INTEGRATIONS\n }\n\n throw err\n }\n }\n\n public async fetchInstalledModels() {\n const integrationNames = await this._fetchInstalledIntegrationNames()\n const models: Model[] = []\n\n await Promise.allSettled(\n integrationNames.map(async (integration) => {\n const { output } = await this._client.callAction({\n type: `${integration}:listLanguageModels`,\n input: {},\n })\n\n if (!output?.models?.length) {\n return\n }\n\n for (const model of output.models as RawModel[]) {\n if (model.name && model.id && model.input && model.tags) {\n models.push({\n ref: `${integration}:${model.id}`,\n integration,\n id: model.id,\n name: model.name,\n description: model.description,\n input: model.input,\n output: model.output,\n tags: model.tags,\n })\n }\n }\n })\n )\n\n return models\n }\n\n public async fetchModelPreferences(): Promise<ModelPreferences | null> {\n try {\n const { file } = await this._client.getFile({ id: this._preferenceFileKey })\n\n if (globalThis.fetch !== undefined) {\n const response = await fetch(file.url)\n return (await response.json()) as ModelPreferences\n } else {\n const { data } = await this._client.axios.get(file.url, {\n // we piggy-back axios to avoid adding a new dependency\n // unset all headers to avoid S3 pre-signed signature mismatch\n headers: Object.keys(this._client.config.headers).reduce(\n (acc, key) => {\n acc[key] = undefined\n return acc\n },\n {} as Record<string, undefined>\n ),\n })\n return data as ModelPreferences\n }\n } catch (err) {\n if (isNotFoundError(err)) {\n return null\n }\n\n throw err\n }\n }\n\n public async saveModelPreferences(preferences: ModelPreferences) {\n await this._client.uploadFile({\n key: this._preferenceFileKey,\n content: JSON.stringify(preferences, null, 2),\n index: false,\n tags: {\n system: 'true',\n purpose: 'config',\n },\n })\n }\n\n public async deleteModelPreferences() {\n await this._client.deleteFile({ id: this._preferenceFileKey }).catch(() => {})\n }\n\n private get _preferenceFileKey() {\n return `bot->${this._client.botId}->${PREFERENCES_FILE_SUFFIX}`\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": [null, null, null, null, null, null, null, null, null, "import { backOff } from 'exponential-backoff'\nimport { createNanoEvents, Unsubscribe } from 'nanoevents'\n\nimport { ExtendedClient, getExtendedClient } from './bp-client'\nimport { getActionFromError } from './errors'\nimport { InterceptorManager } from './interceptors'\nimport {\n DOWNTIME_THRESHOLD_MINUTES,\n getBestModels,\n getFastModels,\n Model,\n ModelPreferences,\n ModelProvider,\n ModelRef,\n pickModel,\n RemoteModelProvider,\n} from './models'\nimport { GenerateContentOutput } from './schemas.gen'\nimport { CognitiveProps, Events, InputProps, Request, Response } from './types'\n\nexport class Cognitive {\n public ['$$IS_COGNITIVE'] = true\n\n public static isCognitiveClient(obj: any): obj is Cognitive {\n return obj?.$$IS_COGNITIVE === true\n }\n\n public interceptors = {\n request: new InterceptorManager<Request>(),\n response: new InterceptorManager<Response>(),\n }\n\n private _client: ExtendedClient\n private _preferences: ModelPreferences | null = null\n private _provider: ModelProvider\n private _events = createNanoEvents<Events>()\n private _downtimes: ModelPreferences['downtimes'] = []\n private _models: Model[] = []\n\n public constructor(props: CognitiveProps) {\n this._client = getExtendedClient(props.client)\n this._provider = props.provider ?? new RemoteModelProvider(props.client)\n }\n\n public get client(): ExtendedClient {\n return this._client\n }\n\n public on<K extends keyof Events>(this: this, event: K, cb: Events[K]): Unsubscribe {\n return this._events.on(event, cb)\n }\n\n public async fetchInstalledModels(): Promise<Model[]> {\n if (!this._models.length) {\n this._models = await this._provider.fetchInstalledModels()\n }\n\n return this._models\n }\n\n public async fetchPreferences(): Promise<ModelPreferences> {\n if (this._preferences) {\n return this._preferences\n }\n\n this._preferences = await this._provider.fetchModelPreferences()\n\n if (this._preferences) {\n return this._preferences\n }\n\n const models = await this.fetchInstalledModels()\n\n this._preferences = {\n best: getBestModels(models).map((m) => m.ref),\n fast: getFastModels(models).map((m) => m.ref),\n downtimes: [],\n }\n\n await this._provider.saveModelPreferences(this._preferences)\n\n return this._preferences\n }\n\n public async setPreferences(preferences: ModelPreferences, save: boolean = false): Promise<void> {\n this._preferences = preferences\n\n if (save) {\n await this._provider.saveModelPreferences(preferences)\n }\n }\n\n private _cleanupOldDowntimes(): void {\n const now = Date.now()\n const thresholdMs = 1000 * 60 * DOWNTIME_THRESHOLD_MINUTES\n\n this._preferences!.downtimes = this._preferences!.downtimes.filter((downtime) => {\n const downtimeStart = new Date(downtime.startedAt).getTime()\n return now - downtimeStart <= thresholdMs\n })\n }\n\n private async _selectModel(ref: string): Promise<{ integration: string; model: string }> {\n const parseRef = (ref: string) => {\n const parts = ref.split(':')\n return { integration: parts[0]!, model: parts.slice(1).join(':') }\n }\n\n const preferences = await this.fetchPreferences()\n\n preferences.best ??= []\n preferences.fast ??= []\n preferences.downtimes ??= []\n\n const downtimes = [...preferences.downtimes, ...(this._downtimes ?? [])]\n\n if (ref === 'best') {\n return parseRef(pickModel(preferences.best, downtimes))\n }\n\n if (ref === 'fast') {\n return parseRef(pickModel(preferences.fast, downtimes))\n }\n\n return parseRef(pickModel([ref as ModelRef, ...preferences.best, ...preferences.fast], downtimes))\n }\n\n public async getModelDetails(model: string) {\n await this.fetchInstalledModels()\n const { integration, model: modelName } = await this._selectModel(model)\n const def = this._models.find((m) => m.integration === integration && (m.name === modelName || m.id === modelName))\n if (!def) {\n console.info('Models:', this._models)\n throw new Error(`Model ${modelName} not found`)\n }\n\n return def\n }\n\n public async generateContent(input: InputProps): Promise<Response> {\n const start = Date.now()\n\n const signal = input.signal ?? AbortSignal.timeout(30_000)\n\n const client = this._client.abortable(signal)\n\n let props: Request = { input }\n let integration: string\n let model: string\n\n const { output, meta } = await backOff<{\n output: GenerateContentOutput\n meta: any\n }>(\n async () => {\n const selection = await this._selectModel(input.model ?? 'best')\n\n integration = selection.integration\n model = selection.model\n\n props = await this.interceptors.request.run({ input }, signal)\n\n return client.callAction({\n type: `${integration}:generateContent`,\n input: {\n ...props.input,\n model: { id: model },\n },\n }) as Promise<{ output: GenerateContentOutput; meta: any }>\n },\n {\n retry: async (err, _attempt) => {\n if (signal?.aborted) {\n // We don't want to retry if the request was aborted\n this._events.emit('aborted', props, err)\n return false\n }\n\n if (_attempt > 3) {\n // We don't want to retry more than 3 times\n this._events.emit('error', props, err)\n return false\n }\n\n const action = getActionFromError(err)\n\n if (action === 'abort') {\n this._events.emit('error', props, err)\n return false\n }\n\n if (action === 'fallback') {\n // We don't want to retry if the request was already retried with a fallback model\n this._downtimes.push({\n ref: `${integration!}:${model!}`,\n startedAt: new Date().toISOString(),\n reason: 'Model is down',\n })\n\n this._cleanupOldDowntimes()\n\n await this._provider.saveModelPreferences({\n ...(this._preferences ?? { best: [], downtimes: [], fast: [] }),\n downtimes: [...(this._preferences!.downtimes ?? []), ...(this._downtimes ?? [])],\n })\n\n this._events.emit('fallback', props, err)\n return true\n }\n\n this._events.emit('retry', props, err)\n return true\n },\n }\n )\n\n const response = {\n output,\n meta: {\n cached: meta.cached ?? false,\n model: { integration: integration!, model: model! },\n latency: Date.now() - start,\n cost: { input: output.usage.inputCost, output: output.usage.outputCost },\n tokens: { input: output.usage.inputTokens, output: output.usage.outputTokens },\n },\n } satisfies Response\n\n this._events.emit('response', props, response)\n\n return this.interceptors.response.run(response, signal)\n }\n}\n", "export let createNanoEvents = () => ({\n emit(event, ...args) {\n for (\n let callbacks = this.events[event] || [],\n i = 0,\n length = callbacks.length;\n i < length;\n i++\n ) {\n callbacks[i](...args)\n }\n },\n events: {},\n on(event, cb) {\n ;(this.events[event] ||= []).push(cb)\n return () => {\n this.events[event] = this.events[event]?.filter(i => cb !== i)\n }\n }\n})\n", "import { type Client } from '@botpress/client'\nimport { type AxiosInstance } from 'axios'\nimport { BotpressClientLike } from './types'\n\n/** @internal */\nexport type ExtendedClient = Client & {\n botId: string\n axios: AxiosInstance\n clone: () => ExtendedClient\n abortable: (signal: AbortSignal) => ExtendedClient\n}\n\ntype InternalClientType = BotpressClientLike & {\n _client?: InternalClientType\n config: {\n headers: Record<string, string>\n }\n}\n\nexport const getExtendedClient = (_client: unknown): ExtendedClient => {\n const client = _client as InternalClientType\n\n if (!client || client === null || typeof client !== 'object') {\n throw new Error('Client must be a valid instance of a Botpress client (@botpress/client)')\n }\n\n if (typeof client._client === 'object' && !!client._client) {\n try {\n return getExtendedClient((client as any)._client)\n } catch {}\n }\n\n if (\n typeof client.constructor !== 'function' ||\n typeof client.callAction !== 'function' ||\n !client.config ||\n typeof client.config !== 'object' ||\n !client.config.headers\n ) {\n throw new Error('Client must be a valid instance of a Botpress client (@botpress/client)')\n }\n\n const botId = client.config.headers['x-bot-id'] as string\n\n if (!botId?.length) {\n throw new Error('Client must be instanciated with Bot ID')\n }\n\n const clone = () => {\n const c = client as any\n if (c.clone && typeof c.clone === 'function') {\n return getExtendedClient(c.clone())\n }\n return getExtendedClient(new c.constructor(c.config))\n }\n\n return {\n ...client,\n botId,\n axios: (client as any).axiosInstance as AxiosInstance,\n clone,\n abortable: (signal: AbortSignal) => {\n const abortable = clone()\n const instance = abortable.axios\n instance.defaults.signal = signal\n return abortable\n },\n } as ExtendedClient\n}\n", "import { type ErrorType } from '@botpress/client'\n\nexport type BotpressError = {\n isApiError: boolean\n code: number\n description: string\n type: ErrorType\n subtype?: string\n error?: unknown\n metadata?: unknown\n message?: string\n id: string\n}\n\ntype Action = 'fallback' | 'retry' | 'abort'\n\nexport const getActionFromError = (error: any): Action => {\n if (!isBotpressError(error)) {\n return 'retry'\n }\n\n if (error.type === 'InvalidDataFormat') {\n if (error.message?.includes('data/model/id')) {\n // Invalid Model ID, so we want to try another model\n return 'fallback'\n }\n\n // Usually means the request was malformed\n return 'abort'\n }\n\n const subtype = (error.metadata as any)?.subtype\n if (error.type === 'Internal' || subtype === 'UPSTREAM_PROVIDER_FAILED') {\n // The model is degraded, so we want to try another model\n return 'fallback'\n }\n\n return 'abort'\n}\n\nexport const isNotFoundError = (error: any): boolean => isBotpressError(error) && error.type === 'ResourceNotFound'\n\nexport const isForbiddenOrUnauthorizedError = (error: any): boolean =>\n isBotpressError(error) && (error.type === 'Forbidden' || error.type === 'Unauthorized')\n\nexport const isBotpressError = (error: any): error is BotpressError =>\n typeof error === 'object' &&\n error !== null &&\n 'isApiError' in error &&\n 'code' in error &&\n 'type' in error &&\n 'id' in error\n", "export type Callback<T> = (error: any | null, value: T) => void\nexport type Interceptor<T> = (error: any | null, value: T, next: Callback<T>, done: Callback<T>) => Promise<void> | void\n\nexport class InterceptorManager<T> {\n private _interceptors: Interceptor<T>[] = []\n\n public use(interceptor: Interceptor<T>) {\n this._interceptors.push(interceptor)\n return () => this.remove(interceptor)\n }\n\n public remove(interceptor: Interceptor<T>) {\n this._interceptors = this._interceptors.filter((i) => i !== interceptor)\n }\n\n public async run(value: T, signal: AbortSignal): Promise<T> {\n let error: any | null = null\n let result: T = value\n let done = false\n\n for (const interceptor of this._interceptors) {\n if (done) {\n break\n }\n\n if (signal.aborted) {\n throw signal.reason\n }\n\n await new Promise<void>((resolve) => {\n void interceptor(\n error,\n result,\n (err, val) => {\n error = err\n result = val\n resolve()\n },\n (err, val) => {\n error = err\n result = val\n done = true\n resolve()\n }\n )\n })\n }\n\n if (error) {\n throw error\n }\n\n return result\n }\n}\n", "import { ExtendedClient, getExtendedClient } from './bp-client'\nimport { isForbiddenOrUnauthorizedError, isNotFoundError } from './errors'\nimport { Model as RawModel } from './schemas.gen'\nimport { BotpressClientLike } from './types'\n\nexport const DOWNTIME_THRESHOLD_MINUTES = 5\nconst PREFERENCES_FILE_SUFFIX = 'models.config.json'\n\nexport const DEFAULT_INTEGRATIONS = ['google-ai', 'anthropic', 'openai', 'cerebras', 'fireworks-ai', 'groq']\n\n// Biases for vendors and models\nconst VendorPreferences = ['google-ai', 'anthropic', 'openai']\nconst BestModelPreferences = ['4o', '3-5-sonnet', 'gemini-1.5-pro']\nconst FastModelPreferences = ['gemini-1.5-flash', '4o-mini', 'flash', 'haiku']\n\nconst InputPricePenalty = 3 // $3 per 1M tokens\nconst OutputPricePenalty = 10 // $10 per 1M tokens\nconst LowTokensPenalty = 128_000 // 128k tokens\n\nexport type Model = RawModel & {\n ref: ModelRef\n integration: string\n}\n\nexport type ModelRef = `${string}:${string}`\n\nexport type ModelPreferences = {\n best: ModelRef[]\n fast: ModelRef[]\n downtimes: Array<{ ref: ModelRef; startedAt: string; reason: string }>\n}\n\nconst isRecommended = (model: Model) => model.tags.includes('recommended')\nconst isDeprecated = (model: Model) => model.tags.includes('deprecated')\nconst isLowCost = (model: Model) => model.tags.includes('low-cost')\nconst hasVisionSupport = (model: Model) => model.tags.includes('vision')\nconst isGeneralPurpose = (model: Model) => model.tags.includes('general-purpose')\n\nconst scoreModel = (model: Model, type: 'best' | 'fast', boosts: Record<ModelRef, number> = {}) => {\n let score: number = 0\n\n const scores: Array<[string, boolean, number]> = [\n ['input price penalty', model.input.costPer1MTokens > InputPricePenalty, -1],\n ['output price penalty', model.output.costPer1MTokens > OutputPricePenalty, -1],\n ['low tokens penalty', (model.input.maxTokens ?? 0 + model.output.maxTokens ?? 0) < LowTokensPenalty, -1],\n ['recommended', isRecommended(model), 2],\n ['deprecated', isDeprecated(model), -2],\n ['vision support', hasVisionSupport(model), 1],\n ['general purpose', isGeneralPurpose(model), 1],\n ['vendor preference', VendorPreferences.includes(model.integration), 1],\n ['best model preference', type === 'best' && BestModelPreferences.some((x) => model.id.includes(x)), 1],\n ['fast model preference penalty', type === 'best' && FastModelPreferences.some((x) => model.id.includes(x)), -2],\n ['fast model preference', type === 'fast' && FastModelPreferences.some((x) => model.id.includes(x)), 2],\n ['low cost', type === 'fast' && isLowCost(model), 1],\n ]\n\n for (const rule in boosts) {\n if (model.ref.includes(rule)) {\n scores.push([`boost (${rule})`, true, Number(boosts[rule as ModelRef]) ?? 0] as const)\n }\n }\n\n for (const [, condition, value] of scores) {\n if (condition) {\n score += value\n }\n }\n\n return score\n}\n\nexport const getBestModels = (models: Model[], boosts: Record<ModelRef, number> = {}) =>\n models.sort((a, b) => scoreModel(b, 'best', boosts) - scoreModel(a, 'best', boosts))\n\nexport const getFastModels = (models: Model[], boosts: Record<ModelRef, number> = {}) =>\n models.sort((a, b) => scoreModel(b, 'fast', boosts) - scoreModel(a, 'fast', boosts))\n\nexport const pickModel = (models: ModelRef[], downtimes: ModelPreferences['downtimes'] = []) => {\n const copy = [...models]\n const elasped = (date: string) => new Date().getTime() - new Date(date).getTime()\n const DOWNTIME_THRESHOLD = 1000 * 60 * DOWNTIME_THRESHOLD_MINUTES\n\n if (!copy.length) {\n throw new Error('At least one model is required')\n }\n\n while (copy.length) {\n const ref = copy.shift() as ModelRef\n const downtime = downtimes.find((o) => o.ref === ref && elasped(o.startedAt) < DOWNTIME_THRESHOLD)\n if (downtime) {\n continue\n } else {\n return ref\n }\n }\n\n throw new Error(`All models are down: ${models.join(', ')}`)\n}\n\nexport abstract class ModelProvider {\n public abstract fetchInstalledModels(): Promise<Model[]>\n public abstract fetchModelPreferences(): Promise<ModelPreferences | null>\n public abstract saveModelPreferences(preferences: ModelPreferences): Promise<void>\n public abstract deleteModelPreferences(): Promise<void>\n}\n\nexport class RemoteModelProvider extends ModelProvider {\n private _client: ExtendedClient\n\n public constructor(client: BotpressClientLike) {\n super()\n this._client = getExtendedClient(client)\n }\n\n private async _fetchInstalledIntegrationNames() {\n try {\n const { bot } = await this._client.getBot({ id: this._client.botId })\n const integrations = Object.values(bot.integrations).filter((x) => x.status === 'registered')\n return integrations.map((x) => x.name)\n } catch (err) {\n if (isForbiddenOrUnauthorizedError(err)) {\n // This happens when the bot (with a BAK token) tries to access the .getBot endpoint\n return DEFAULT_INTEGRATIONS\n }\n\n throw err\n }\n }\n\n public async fetchInstalledModels() {\n const integrationNames = await this._fetchInstalledIntegrationNames()\n const models: Model[] = []\n\n await Promise.allSettled(\n integrationNames.map(async (integration) => {\n const { output } = await this._client.callAction({\n type: `${integration}:listLanguageModels`,\n input: {},\n })\n\n if (!output?.models?.length) {\n return\n }\n\n for (const model of output.models as RawModel[]) {\n if (model.name && model.id && model.input && model.tags) {\n models.push({\n ref: `${integration}:${model.id}`,\n integration,\n id: model.id,\n name: model.name,\n description: model.description,\n input: model.input,\n output: model.output,\n tags: model.tags,\n })\n }\n }\n })\n )\n\n return models\n }\n\n public async fetchModelPreferences(): Promise<ModelPreferences | null> {\n try {\n const { file } = await this._client.getFile({ id: this._preferenceFileKey })\n\n if (globalThis.fetch !== undefined) {\n const response = await fetch(file.url)\n return (await response.json()) as ModelPreferences\n } else {\n const { data } = await this._client.axios.get(file.url, {\n // we piggy-back axios to avoid adding a new dependency\n // unset all headers to avoid S3 pre-signed signature mismatch\n headers: Object.keys(this._client.config.headers).reduce(\n (acc, key) => {\n acc[key] = undefined\n return acc\n },\n {} as Record<string, undefined>\n ),\n })\n return data as ModelPreferences\n }\n } catch (err) {\n if (isNotFoundError(err)) {\n return null\n }\n\n throw err\n }\n }\n\n public async saveModelPreferences(preferences: ModelPreferences) {\n await this._client.uploadFile({\n key: this._preferenceFileKey,\n content: JSON.stringify(preferences, null, 2),\n index: false,\n tags: {\n system: 'true',\n purpose: 'config',\n },\n })\n }\n\n public async deleteModelPreferences() {\n await this._client.deleteFile({ id: this._preferenceFileKey }).catch(() => {})\n }\n\n private get _preferenceFileKey() {\n return `bot->${this._client.botId}->${PREFERENCES_FILE_SUFFIX}`\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Delay", "SkipFirstDelay", "AlwaysDelay", "backOff", "BackOff", "ref"]
|
|
7
7
|
}
|