@burtson-labs/bandit-engine 2.0.167 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/LICENSE +189 -31
- package/NOTICE +26 -0
- package/README.md +15 -59
- package/dist/aiProviderStore-DKQCCDWF.mjs +8 -0
- package/dist/aiProviderStore-DKQCCDWF.mjs.map +1 -0
- package/dist/chat-VYZFUECC.mjs +10 -0
- package/dist/chat-VYZFUECC.mjs.map +1 -0
- package/dist/{chunk-GRPTCHFN.mjs → chunk-BJT6KPUG.mjs} +309 -154
- package/dist/chunk-BJT6KPUG.mjs.map +1 -0
- package/dist/{chunk-SZJB5FLZ.mjs → chunk-FCQN3LKT.mjs} +251 -77
- package/dist/chunk-FCQN3LKT.mjs.map +1 -0
- package/dist/chunk-HD4PJNPH.mjs +29034 -0
- package/dist/chunk-HD4PJNPH.mjs.map +1 -0
- package/dist/{chunk-HNXPDIWC.mjs → chunk-NI7BKLC7.mjs} +1 -1
- package/dist/chunk-NI7BKLC7.mjs.map +1 -0
- package/dist/index.d.mts +115 -57
- package/dist/index.d.ts +115 -57
- package/dist/index.js +15660 -7577
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +16630 -142
- package/dist/index.mjs.map +1 -1
- package/dist/{memoryUtils-HGCYEUCD.mjs → memoryUtils-UBZ33DNA.mjs} +8 -3
- package/dist/memoryUtils-UBZ33DNA.mjs.map +1 -0
- package/dist/modelStore-SEC34WRM.mjs +8 -0
- package/dist/modelStore-SEC34WRM.mjs.map +1 -0
- package/dist/{public-DJa4Db00.d.mts → public-CKQQDOoy.d.mts} +8 -8
- package/dist/{public-DJa4Db00.d.ts → public-CKQQDOoy.d.ts} +8 -8
- package/dist/public-types.d.mts +1 -1
- package/dist/public-types.d.ts +1 -1
- package/docs/00_intro.md +2 -2
- package/docs/05_contributing.md +2 -2
- package/docs/06_licensing.md +18 -0
- package/docs/07_custom_tools.md +233 -0
- package/docs/README.md +2 -1
- package/package.json +23 -20
- package/dist/aiProviderStore-HY5G4QAK.mjs +0 -8
- package/dist/aiProviderStore-HY5G4QAK.mjs.map +0 -1
- package/dist/chat-6N5B7A7F.mjs +0 -15
- package/dist/chat-6N5B7A7F.mjs.map +0 -1
- package/dist/chat-provider.js +0 -10964
- package/dist/chat-provider.js.map +0 -1
- package/dist/chat-provider.mjs +0 -16
- package/dist/chat-provider.mjs.map +0 -1
- package/dist/chunk-46OGYEME.mjs +0 -5895
- package/dist/chunk-46OGYEME.mjs.map +0 -1
- package/dist/chunk-5BZWJQ5O.mjs +0 -516
- package/dist/chunk-5BZWJQ5O.mjs.map +0 -1
- package/dist/chunk-CABOLDNR.mjs +0 -216
- package/dist/chunk-CABOLDNR.mjs.map +0 -1
- package/dist/chunk-E5WMDLE3.mjs +0 -390
- package/dist/chunk-E5WMDLE3.mjs.map +0 -1
- package/dist/chunk-GRPTCHFN.mjs.map +0 -1
- package/dist/chunk-HNXPDIWC.mjs.map +0 -1
- package/dist/chunk-KDIL5WUL.mjs +0 -7323
- package/dist/chunk-KDIL5WUL.mjs.map +0 -1
- package/dist/chunk-N4BQ6HKL.mjs +0 -2945
- package/dist/chunk-N4BQ6HKL.mjs.map +0 -1
- package/dist/chunk-ONQMRE2G.mjs +0 -26
- package/dist/chunk-ONQMRE2G.mjs.map +0 -1
- package/dist/chunk-P4C5IRM5.mjs +0 -39
- package/dist/chunk-P4C5IRM5.mjs.map +0 -1
- package/dist/chunk-PK3LFBGC.mjs +0 -10575
- package/dist/chunk-PK3LFBGC.mjs.map +0 -1
- package/dist/chunk-SHYNXDRO.mjs +0 -11906
- package/dist/chunk-SHYNXDRO.mjs.map +0 -1
- package/dist/chunk-SZJB5FLZ.mjs.map +0 -1
- package/dist/chunk-US4TG745.mjs +0 -194
- package/dist/chunk-US4TG745.mjs.map +0 -1
- package/dist/management/management.js +0 -44217
- package/dist/management/management.js.map +0 -1
- package/dist/management/management.mjs +0 -16
- package/dist/management/management.mjs.map +0 -1
- package/dist/memoryUtils-HGCYEUCD.mjs.map +0 -1
- package/dist/modals/chat-modal/chat-modal.js +0 -19613
- package/dist/modals/chat-modal/chat-modal.js.map +0 -1
- package/dist/modals/chat-modal/chat-modal.mjs +0 -18
- package/dist/modals/chat-modal/chat-modal.mjs.map +0 -1
- package/dist/modelStore-TFNX4GEC.mjs +0 -8
- package/dist/modelStore-TFNX4GEC.mjs.map +0 -1
- package/dist/shared/custom-element.js +0 -73
- package/dist/shared/custom-element.js.map +0 -1
- package/dist/shared/custom-element.mjs +0 -7
- package/dist/shared/custom-element.mjs.map +0 -1
- package/docs/06_busl_licensing.md +0 -25
- package/docs/api_reference/.nojekyll +0 -1
- package/docs/api_reference/assets/bandit-docs.js +0 -462
- package/docs/api_reference/assets/highlight.css +0 -141
- package/docs/api_reference/assets/icons.js +0 -18
- package/docs/api_reference/assets/icons.svg +0 -1
- package/docs/api_reference/assets/main.js +0 -61
- package/docs/api_reference/assets/navigation.js +0 -1
- package/docs/api_reference/assets/search.js +0 -1
- package/docs/api_reference/assets/style.css +0 -1664
- package/docs/api_reference/classes/DebugLogger.html +0 -29
- package/docs/api_reference/classes/FeatureFlagService.html +0 -28
- package/docs/api_reference/classes/NotificationService.html +0 -21
- package/docs/api_reference/classes/StreamingTTSClient.html +0 -19
- package/docs/api_reference/classes/VectorDatabaseService.html +0 -63
- package/docs/api_reference/classes/VectorMigrationService.html +0 -27
- package/docs/api_reference/classes/VoiceService.html +0 -4
- package/docs/api_reference/enums/TTSState.html +0 -6
- package/docs/api_reference/functions/Chat.html +0 -1
- package/docs/api_reference/functions/ChatModal.html +0 -29
- package/docs/api_reference/functions/ChatProvider.html +0 -29
- package/docs/api_reference/functions/FeatureFlagProvider.html +0 -30
- package/docs/api_reference/functions/FeedbackButton.html +0 -29
- package/docs/api_reference/functions/FeedbackModal.html +0 -29
- package/docs/api_reference/functions/InterestsEditor.html +0 -5
- package/docs/api_reference/functions/Management.html +0 -1
- package/docs/api_reference/functions/NotificationProvider.html +0 -29
- package/docs/api_reference/functions/SubscriptionExpiredGuard.html +0 -31
- package/docs/api_reference/functions/SubscriptionExpiredModal.html +0 -31
- package/docs/api_reference/functions/defineCustomElement.html +0 -1
- package/docs/api_reference/functions/getCriticalConfig.html +0 -2
- package/docs/api_reference/functions/getFeatureMatrix.html +0 -1
- package/docs/api_reference/functions/getStreamingTTSClient.html +0 -1
- package/docs/api_reference/functions/getSystemConstants.html +0 -2
- package/docs/api_reference/functions/getTTSState.html +0 -1
- package/docs/api_reference/functions/handleHttpError.html +0 -2
- package/docs/api_reference/functions/handleSubscriptionUpgrade.html +0 -1
- package/docs/api_reference/functions/handleValidationError.html +0 -2
- package/docs/api_reference/functions/initializeCoreSystem.html +0 -2
- package/docs/api_reference/functions/isWorkspaceAdminRole.html +0 -6
- package/docs/api_reference/functions/pauseTTS.html +0 -1
- package/docs/api_reference/functions/previewTierUpgrade.html +0 -1
- package/docs/api_reference/functions/resolveManagementSections.html +0 -2
- package/docs/api_reference/functions/resumeTTS.html +0 -1
- package/docs/api_reference/functions/showInfoNotification.html +0 -2
- package/docs/api_reference/functions/showSuccessNotification.html +0 -2
- package/docs/api_reference/functions/speakWithStreaming.html +0 -1
- package/docs/api_reference/functions/stopTTS.html +0 -1
- package/docs/api_reference/functions/syncSubscriptionWithAPI.html +0 -1
- package/docs/api_reference/functions/updateSubscriptionTier.html +0 -2
- package/docs/api_reference/functions/useFeatureFlag.html +0 -2
- package/docs/api_reference/functions/useFeatureVisibility.html +0 -2
- package/docs/api_reference/functions/useFeatures.html +0 -2
- package/docs/api_reference/functions/useGatewayHealth.html +0 -1
- package/docs/api_reference/functions/useGatewayMemory.html +0 -1
- package/docs/api_reference/functions/useGatewayModels.html +0 -1
- package/docs/api_reference/functions/useGlobalTTS.html +0 -2
- package/docs/api_reference/functions/useManagementAccess.html +0 -2
- package/docs/api_reference/functions/useNotification.html +0 -1
- package/docs/api_reference/functions/useNotificationService.html +0 -6
- package/docs/api_reference/functions/useTTS.html +0 -2
- package/docs/api_reference/functions/useVectorStore.html +0 -13
- package/docs/api_reference/functions/useVoiceStore.html +0 -8
- package/docs/api_reference/functions/useVoices.html +0 -3
- package/docs/api_reference/functions/validateEnvironment.html +0 -2
- package/docs/api_reference/functions/validateSystemIntegrity.html +0 -2
- package/docs/api_reference/index.html +0 -916
- package/docs/api_reference/interfaces/AIChatRequest.html +0 -8
- package/docs/api_reference/interfaces/AIChatResponse.html +0 -3
- package/docs/api_reference/interfaces/AIGenerateRequest.html +0 -5
- package/docs/api_reference/interfaces/AIGenerateResponse.html +0 -3
- package/docs/api_reference/interfaces/AIMessage.html +0 -4
- package/docs/api_reference/interfaces/AIModel.html +0 -6
- package/docs/api_reference/interfaces/AIProviderConfig.html +0 -12
- package/docs/api_reference/interfaces/ChatConfig.html +0 -5
- package/docs/api_reference/interfaces/ChatModalProps.html +0 -7
- package/docs/api_reference/interfaces/CreateMemoryOptions.html +0 -7
- package/docs/api_reference/interfaces/FeatureEvaluation.html +0 -14
- package/docs/api_reference/interfaces/FeatureFlagConfig.html +0 -18
- package/docs/api_reference/interfaces/FeatureFlagContextValue.html +0 -16
- package/docs/api_reference/interfaces/FeatureFlagProviderProps.html +0 -4
- package/docs/api_reference/interfaces/FeedbackButtonProps.html +0 -19
- package/docs/api_reference/interfaces/FeedbackCategories.html +0 -6
- package/docs/api_reference/interfaces/FeedbackModalProps.html +0 -4
- package/docs/api_reference/interfaces/FeedbackPriorities.html +0 -5
- package/docs/api_reference/interfaces/FeedbackRequest.html +0 -12
- package/docs/api_reference/interfaces/FeedbackResponse.html +0 -7
- package/docs/api_reference/interfaces/FileUploadResult.html +0 -4
- package/docs/api_reference/interfaces/GatewayChatRequest.html +0 -13
- package/docs/api_reference/interfaces/GatewayChatResponse.html +0 -7
- package/docs/api_reference/interfaces/GatewayContract.html +0 -4
- package/docs/api_reference/interfaces/GatewayGenerateRequest.html +0 -8
- package/docs/api_reference/interfaces/GatewayGenerateResponse.html +0 -12
- package/docs/api_reference/interfaces/GatewayHealthResponse.html +0 -5
- package/docs/api_reference/interfaces/GatewayMemoryRecord.html +0 -7
- package/docs/api_reference/interfaces/GatewayMemoryResponse.html +0 -4
- package/docs/api_reference/interfaces/GatewayMessage.html +0 -5
- package/docs/api_reference/interfaces/GatewayMessageContent.html +0 -4
- package/docs/api_reference/interfaces/GatewayModel.html +0 -9
- package/docs/api_reference/interfaces/GatewayModelsResponse.html +0 -2
- package/docs/api_reference/interfaces/ManagementAccess.html +0 -5
- package/docs/api_reference/interfaces/ManagementAccessInput.html +0 -5
- package/docs/api_reference/interfaces/ManagementLink.html +0 -7
- package/docs/api_reference/interfaces/ManagementProps.html +0 -22
- package/docs/api_reference/interfaces/ManagementSectionDef.html +0 -10
- package/docs/api_reference/interfaces/MemorySearchFilters.html +0 -5
- package/docs/api_reference/interfaces/MigrationProgress.html +0 -6
- package/docs/api_reference/interfaces/MigrationStatus.html +0 -7
- package/docs/api_reference/interfaces/NotificationConfig.html +0 -5
- package/docs/api_reference/interfaces/NotificationContextType.html +0 -6
- package/docs/api_reference/interfaces/NotificationProviderProps.html +0 -4
- package/docs/api_reference/interfaces/PackageSettings.html +0 -22
- package/docs/api_reference/interfaces/SearchOptions.html +0 -6
- package/docs/api_reference/interfaces/SearchResult.html +0 -5
- package/docs/api_reference/interfaces/SubscriptionExpiredGuardProps.html +0 -7
- package/docs/api_reference/interfaces/SubscriptionExpiredModalProps.html +0 -6
- package/docs/api_reference/interfaces/TTSOptions.html +0 -5
- package/docs/api_reference/interfaces/TTSProgress.html +0 -6
- package/docs/api_reference/interfaces/TrialUsage.html +0 -6
- package/docs/api_reference/interfaces/UploadRequest.html +0 -9
- package/docs/api_reference/interfaces/UseTTSReturn.html +0 -14
- package/docs/api_reference/interfaces/VectorDocument.html +0 -11
- package/docs/api_reference/interfaces/VectorMemory.html +0 -12
- package/docs/api_reference/interfaces/VectorMemoryMetadata.html +0 -7
- package/docs/api_reference/interfaces/VectorStoreStatus.html +0 -7
- package/docs/api_reference/interfaces/VoiceModelsResponse.html +0 -4
- package/docs/api_reference/interfaces/VoiceState.html +0 -12
- package/docs/api_reference/media/02_gateway_api.md +0 -123
- package/docs/api_reference/media/05_cli_quickstart.md +0 -87
- package/docs/api_reference/media/LICENSE +0 -43
- package/docs/api_reference/media/PRE-PUSH-CHECKLIST.md +0 -10
- package/docs/api_reference/media/PROTECTION-NOTICE.md +0 -11
- package/docs/api_reference/media/README.md +0 -58
- package/docs/api_reference/modules.html +0 -136
- package/docs/api_reference/types/FeatureKey.html +0 -2
- package/docs/api_reference/types/FeatureMatrix.html +0 -2
- package/docs/api_reference/types/GatewayQueryOptions.html +0 -1
- package/docs/api_reference/types/LogContext.html +0 -14
- package/docs/api_reference/types/ManagementRequest.html +0 -1
- package/docs/api_reference/types/ManagementSectionId.html +0 -2
- package/docs/api_reference/types/SubscriptionTier.html +0 -2
- package/docs/api_reference/variables/DEFAULT_TIER_FEATURES.html +0 -2
- package/docs/api_reference/variables/FeatureFlagContext.html +0 -1
- package/docs/api_reference/variables/MANAGEMENT_SECTIONS.html +0 -1
- package/docs/api_reference/variables/OSS_DEFAULT_FEATURES.html +0 -2
- package/docs/api_reference/variables/SYSTEM_FLAGS.html +0 -2
- package/docs/api_reference/variables/authenticationService.html +0 -1
- package/docs/api_reference/variables/debugLogger-1.html +0 -1
- package/docs/api_reference/variables/featureFlagService-1.html +0 -2
- package/docs/api_reference/variables/notificationService-1.html +0 -1
- package/docs/api_reference/variables/vectorDatabaseService-1.html +0 -1
- package/docs/api_reference/variables/vectorMigrationService-1.html +0 -1
- package/docs/api_reference/variables/voiceService-1.html +0 -1
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
FULL_SCREEN_THRESHOLD,
|
|
3
|
-
MAX_WINDOWED_HEIGHT,
|
|
4
|
-
MIN_WINDOWED_HEIGHT,
|
|
5
|
-
chat_modal_default
|
|
6
|
-
} from "../../chunk-N4BQ6HKL.mjs";
|
|
7
|
-
import "../../chunk-KDIL5WUL.mjs";
|
|
8
|
-
import "../../chunk-46OGYEME.mjs";
|
|
9
|
-
import "../../chunk-SZJB5FLZ.mjs";
|
|
10
|
-
import "../../chunk-GRPTCHFN.mjs";
|
|
11
|
-
import "../../chunk-HNXPDIWC.mjs";
|
|
12
|
-
export {
|
|
13
|
-
FULL_SCREEN_THRESHOLD,
|
|
14
|
-
MAX_WINDOWED_HEIGHT,
|
|
15
|
-
MIN_WINDOWED_HEIGHT,
|
|
16
|
-
chat_modal_default as default
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=chat-modal.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
|
|
30
|
-
// src/shared/custom-element.ts
|
|
31
|
-
var custom_element_exports = {};
|
|
32
|
-
__export(custom_element_exports, {
|
|
33
|
-
defineCustomElement: () => defineCustomElement
|
|
34
|
-
});
|
|
35
|
-
module.exports = __toCommonJS(custom_element_exports);
|
|
36
|
-
var import_react = __toESM(require("react"));
|
|
37
|
-
var import_client = __toESM(require("react-dom/client"));
|
|
38
|
-
function defineCustomElement(name, Component) {
|
|
39
|
-
if (customElements.get(name)) return;
|
|
40
|
-
class ReactElement extends HTMLElement {
|
|
41
|
-
mountPoint;
|
|
42
|
-
root;
|
|
43
|
-
constructor() {
|
|
44
|
-
super();
|
|
45
|
-
this.mountPoint = document.createElement("div");
|
|
46
|
-
this.attachShadow({ mode: "open" }).appendChild(this.mountPoint);
|
|
47
|
-
}
|
|
48
|
-
connectedCallback() {
|
|
49
|
-
this.render();
|
|
50
|
-
}
|
|
51
|
-
static get observedAttributes() {
|
|
52
|
-
return [];
|
|
53
|
-
}
|
|
54
|
-
attributeChangedCallback() {
|
|
55
|
-
this.render();
|
|
56
|
-
}
|
|
57
|
-
render() {
|
|
58
|
-
const props = Object.fromEntries(
|
|
59
|
-
Array.from(this.attributes).map((attr) => [attr.name, attr.value])
|
|
60
|
-
);
|
|
61
|
-
if (!this.root) {
|
|
62
|
-
this.root = import_client.default.createRoot(this.mountPoint);
|
|
63
|
-
}
|
|
64
|
-
this.root.render(import_react.default.createElement(Component, props));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
customElements.define(name, ReactElement);
|
|
68
|
-
}
|
|
69
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
70
|
-
0 && (module.exports = {
|
|
71
|
-
defineCustomElement
|
|
72
|
-
});
|
|
73
|
-
//# sourceMappingURL=custom-element.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/custom-element.ts"],"sourcesContent":["/*\n * Copyright (c) 2025 Burtson Labs LLC.\n * SPDX-License-Identifier: BUSL-1.1\n * See LICENSE for the applicable terms.\n */\n\n\nimport React from \"react\";\nimport ReactDOM from \"react-dom/client\";\n\ntype AttributeMap = Record<string, string>;\n\nexport function defineCustomElement<Props extends Record<string, unknown>>(\n name: string,\n Component: React.ComponentType<Props>\n) {\n if (customElements.get(name)) return;\n\n class ReactElement extends HTMLElement {\n mountPoint: HTMLDivElement;\n root!: ReactDOM.Root;\n\n constructor() {\n super();\n this.mountPoint = document.createElement(\"div\");\n this.attachShadow({ mode: \"open\" }).appendChild(this.mountPoint);\n }\n\n connectedCallback() {\n this.render();\n }\n\n static get observedAttributes() {\n return [];\n }\n\n attributeChangedCallback() {\n this.render();\n }\n\n render() {\n const props = Object.fromEntries(\n Array.from(this.attributes).map((attr) => [attr.name, attr.value])\n ) as AttributeMap;\n\n if (!this.root) {\n this.root = ReactDOM.createRoot(this.mountPoint);\n }\n\n this.root.render(React.createElement(Component, props as Props));\n }\n }\n\n customElements.define(name, ReactElement);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,mBAAkB;AAClB,oBAAqB;AAId,SAAS,oBACd,MACA,WACA;AACA,MAAI,eAAe,IAAI,IAAI,EAAG;AAAA,EAE9B,MAAM,qBAAqB,YAAY;AAAA,IACrC;AAAA,IACA;AAAA,IAEA,cAAc;AACZ,YAAM;AACN,WAAK,aAAa,SAAS,cAAc,KAAK;AAC9C,WAAK,aAAa,EAAE,MAAM,OAAO,CAAC,EAAE,YAAY,KAAK,UAAU;AAAA,IACjE;AAAA,IAEA,oBAAoB;AAClB,WAAK,OAAO;AAAA,IACd;AAAA,IAEA,WAAW,qBAAqB;AAC9B,aAAO,CAAC;AAAA,IACV;AAAA,IAEA,2BAA2B;AACzB,WAAK,OAAO;AAAA,IACd;AAAA,IAEA,SAAS;AACP,YAAM,QAAQ,OAAO;AAAA,QACnB,MAAM,KAAK,KAAK,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,KAAK,KAAK,CAAC;AAAA,MACnE;AAEA,UAAI,CAAC,KAAK,MAAM;AACd,aAAK,OAAO,cAAAA,QAAS,WAAW,KAAK,UAAU;AAAA,MACjD;AAEA,WAAK,KAAK,OAAO,aAAAC,QAAM,cAAc,WAAW,KAAc,CAAC;AAAA,IACjE;AAAA,EACF;AAEA,iBAAe,OAAO,MAAM,YAAY;AAC1C;","names":["ReactDOM","React"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# BUSL Licensing & Commercial Terms
|
|
2
|
-
## Overview
|
|
3
|
-
Bandit Engine is distributed under the Business Source License 1.1 (BUSL-1.1). The license allows free evaluation and local development while reserving production usage for customers with a commercial agreement. After a two-year change date the code converts to Apache 2.0.
|
|
4
|
-
|
|
5
|
-
## Endpoints / API Usage
|
|
6
|
-
No special endpoints are required for licensing enforcement, but your deployment should:
|
|
7
|
-
- Provide an internal audit trail for who accesses the gateway endpoints described in [`docs/02_gateway_api.md`](./02_gateway_api.md).
|
|
8
|
-
- Surface licensing notices in any management UI served through your product site.
|
|
9
|
-
|
|
10
|
-
## Example Implementation
|
|
11
|
-
- Add a link to `/LICENSE` and `/LICENSE-NOTICE.md` in your hosted documentation.
|
|
12
|
-
- Maintain a renewal job that checks commercial license status before calling `npm run release`.
|
|
13
|
-
|
|
14
|
-
## Integration Notes
|
|
15
|
-
- **Change Date**: Two years after each release tag the BUSL terms convert to Apache 2.0. Keep a calendar reminder for compliance.
|
|
16
|
-
- **Commercial Tiers**:
|
|
17
|
-
- **Indie** – Annual revenue under $1M, includes email support.
|
|
18
|
-
- **Startup** – Revenue $1M–$10M, includes priority support and roadmap input.
|
|
19
|
-
- **Enterprise** – Revenue above $10M, includes SLA-backed support and private builds.
|
|
20
|
-
- **Support**: Contact `legal@burtson.ai` for licensing questions and `security@burtson.ai` for vulnerability reports.
|
|
21
|
-
|
|
22
|
-
## Related Files
|
|
23
|
-
- [`LICENSE`](../LICENSE)
|
|
24
|
-
- [`LICENSE-NOTICE.md`](../LICENSE-NOTICE.md)
|
|
25
|
-
- [`SECURITY.md`](../SECURITY.md)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
|
|
@@ -1,462 +0,0 @@
|
|
|
1
|
-
(() => {
|
|
2
|
-
const STYLE_ID = "bandit-typedoc-mobile-tweaks";
|
|
3
|
-
const BACK_BUTTON_ID = "bandit-docs-back-button";
|
|
4
|
-
const FALLBACK_URL = "/npm-package";
|
|
5
|
-
const GATEWAY_MARKER = "VITE_DEFAULT_MODEL";
|
|
6
|
-
const MAX_GATEWAY_ATTEMPTS = 40;
|
|
7
|
-
const EMBEDDED_CLASS = "bandit-docs-embedded";
|
|
8
|
-
const STANDALONE_CLASS = "bandit-docs-standalone";
|
|
9
|
-
|
|
10
|
-
const isEmbedded = (() => {
|
|
11
|
-
try {
|
|
12
|
-
return window.top !== window;
|
|
13
|
-
} catch {
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
})();
|
|
17
|
-
|
|
18
|
-
const addStyles = () => {
|
|
19
|
-
if (document.getElementById(STYLE_ID)) return;
|
|
20
|
-
|
|
21
|
-
const style = document.createElement("style");
|
|
22
|
-
style.id = STYLE_ID;
|
|
23
|
-
style.textContent = `
|
|
24
|
-
:root {
|
|
25
|
-
--bandit-docs-footer-height: 56px;
|
|
26
|
-
--bandit-docs-header-height: 68px;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
html,
|
|
30
|
-
body {
|
|
31
|
-
overflow: hidden;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
body.bandit-docs-ready {
|
|
35
|
-
display: block !important;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.tsd-panel table {
|
|
39
|
-
width: 100%;
|
|
40
|
-
border-collapse: collapse;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.tsd-panel table:not(.tsd-comment-table) {
|
|
44
|
-
display: block;
|
|
45
|
-
overflow-x: auto;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.tsd-panel table::-webkit-scrollbar {
|
|
49
|
-
height: 6px;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
.gateway-doc {
|
|
53
|
-
display: grid;
|
|
54
|
-
gap: clamp(12px, 2.5vw, 20px);
|
|
55
|
-
line-height: 1.65;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.gateway-doc ul {
|
|
59
|
-
margin: 0;
|
|
60
|
-
padding-left: clamp(20px, 4vw, 32px);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.gateway-doc blockquote {
|
|
64
|
-
margin: 0;
|
|
65
|
-
padding-left: clamp(16px, 3vw, 24px);
|
|
66
|
-
border-left: 3px solid rgba(148, 163, 184, 0.35);
|
|
67
|
-
opacity: 0.9;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
.container {
|
|
71
|
-
width: 100%;
|
|
72
|
-
max-width: none;
|
|
73
|
-
margin: 0 auto;
|
|
74
|
-
padding-left: clamp(18px, 2.8vw, 64px);
|
|
75
|
-
padding-right: clamp(18px, 2.8vw, 64px);
|
|
76
|
-
box-sizing: border-box;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
.container-main {
|
|
80
|
-
box-sizing: border-box;
|
|
81
|
-
margin: 0 auto;
|
|
82
|
-
padding-top: clamp(4px, 0.6vh, 10px);
|
|
83
|
-
padding-bottom: 0;
|
|
84
|
-
gap: clamp(12px, 1.4vw, 24px);
|
|
85
|
-
height: calc(100vh - var(--bandit-docs-header-height));
|
|
86
|
-
display: grid;
|
|
87
|
-
grid-template-rows: max-content 1fr;
|
|
88
|
-
align-content: start;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.container-main .col-content,
|
|
92
|
-
.container-main .col-navigation,
|
|
93
|
-
.container-main .col-sidebar {
|
|
94
|
-
padding-bottom: clamp(12px, 1.4vw, 20px);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
@media (min-width: 1280px) {
|
|
98
|
-
.container-main {
|
|
99
|
-
display: grid;
|
|
100
|
-
grid-template-columns:
|
|
101
|
-
minmax(200px, clamp(236px, 15.5vw, 284px))
|
|
102
|
-
minmax(0, 1fr)
|
|
103
|
-
minmax(200px, clamp(236px, 15.5vw, 284px));
|
|
104
|
-
align-items: stretch;
|
|
105
|
-
grid-template-rows: max-content 1fr;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
.container-main .col-navigation,
|
|
109
|
-
.container-main .col-sidebar {
|
|
110
|
-
position: sticky;
|
|
111
|
-
top: var(--bandit-docs-header-height);
|
|
112
|
-
max-height: calc(100vh - var(--bandit-docs-header-height) - var(--bandit-docs-footer-height) - clamp(12px, 1.5vh, 24px));
|
|
113
|
-
overflow-y: auto;
|
|
114
|
-
padding-right: clamp(6px, 0.9vw, 16px);
|
|
115
|
-
padding-bottom: calc(var(--bandit-docs-footer-height) + clamp(12px, 1.5vh, 24px));
|
|
116
|
-
scrollbar-gutter: stable;
|
|
117
|
-
overscroll-behavior: contain;
|
|
118
|
-
-webkit-overflow-scrolling: touch;
|
|
119
|
-
min-width: 0;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
.container-main .col-content {
|
|
123
|
-
min-width: 0;
|
|
124
|
-
max-height: calc(100vh - var(--bandit-docs-header-height) - var(--bandit-docs-footer-height) - clamp(12px, 1.5vh, 24px));
|
|
125
|
-
overflow-y: auto;
|
|
126
|
-
padding-right: clamp(8px, 1vw, 20px);
|
|
127
|
-
padding-bottom: calc(var(--bandit-docs-footer-height) + clamp(16px, 2vh, 28px));
|
|
128
|
-
scrollbar-gutter: stable;
|
|
129
|
-
overscroll-behavior: contain;
|
|
130
|
-
-webkit-overflow-scrolling: touch;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
.container-main .col-navigation .tsd-navigation a,
|
|
134
|
-
.container-main .col-sidebar .tsd-navigation a {
|
|
135
|
-
white-space: normal;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
footer {
|
|
140
|
-
position: fixed;
|
|
141
|
-
left: 0;
|
|
142
|
-
right: 0;
|
|
143
|
-
bottom: 0;
|
|
144
|
-
margin: 0;
|
|
145
|
-
padding: 0 clamp(18px, 2.8vw, 54px);
|
|
146
|
-
height: var(--bandit-docs-footer-height);
|
|
147
|
-
display: flex;
|
|
148
|
-
align-items: center;
|
|
149
|
-
background: rgba(5, 11, 25, 0.94);
|
|
150
|
-
backdrop-filter: blur(14px);
|
|
151
|
-
border-top: 1px solid rgba(148, 163, 184, 0.2);
|
|
152
|
-
z-index: 200;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
footer > * {
|
|
156
|
-
max-width: min(100%, calc(100vw - clamp(32px, 6vw, 120px)));
|
|
157
|
-
margin: 0 auto;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
.${EMBEDDED_CLASS} footer {
|
|
161
|
-
padding-left: clamp(18px, 2.4vw, 54px);
|
|
162
|
-
padding-right: clamp(18px, 2.4vw, 54px);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
body {
|
|
166
|
-
margin: 0;
|
|
167
|
-
padding-bottom: 0;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
@media (min-width: 1280px) {
|
|
171
|
-
body {
|
|
172
|
-
overflow-y: hidden;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
@media (min-width: 1200px) {
|
|
177
|
-
.page-menu,
|
|
178
|
-
.site-menu {
|
|
179
|
-
max-height: calc(100vh - 2rem - 114px) !important;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
@media (min-width: 770px) and (max-width: 1199px) {
|
|
184
|
-
.site-menu {
|
|
185
|
-
max-height: calc(100vh - 2rem - 114px) !important;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
@media (max-width: 1024px) {
|
|
190
|
-
html,
|
|
191
|
-
body {
|
|
192
|
-
overflow: auto;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
.container {
|
|
196
|
-
padding-left: clamp(16px, 4.5vw, 28px);
|
|
197
|
-
padding-right: clamp(16px, 4.5vw, 28px);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
.container-main {
|
|
201
|
-
display: block;
|
|
202
|
-
max-width: min(100%, 780px);
|
|
203
|
-
margin-left: auto;
|
|
204
|
-
margin-right: auto;
|
|
205
|
-
min-height: auto;
|
|
206
|
-
height: auto;
|
|
207
|
-
padding-top: clamp(18px, 6vw, 28px);
|
|
208
|
-
padding-bottom: clamp(18px, 6vw, 32px);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
.container-main .col-navigation,
|
|
212
|
-
.container-main .col-sidebar {
|
|
213
|
-
position: relative;
|
|
214
|
-
top: auto;
|
|
215
|
-
max-height: none;
|
|
216
|
-
overflow: visible;
|
|
217
|
-
padding-right: 0;
|
|
218
|
-
padding-bottom: clamp(24px, 6vw, 48px);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
.container-main .col-content {
|
|
222
|
-
max-height: none;
|
|
223
|
-
overflow: visible;
|
|
224
|
-
padding-right: 0;
|
|
225
|
-
padding-bottom: clamp(72px, 10vw, 120px);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
.has-menu .col-sidebar {
|
|
229
|
-
max-height: 100vh;
|
|
230
|
-
overflow-y: auto;
|
|
231
|
-
-webkit-overflow-scrolling: touch;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
footer {
|
|
235
|
-
position: static;
|
|
236
|
-
padding: clamp(18px, 6vw, 28px) 0 clamp(24px, 6vw, 36px);
|
|
237
|
-
background: transparent;
|
|
238
|
-
backdrop-filter: none;
|
|
239
|
-
border-top: 1px solid rgba(148, 163, 184, 0.24);
|
|
240
|
-
height: auto;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
footer > * {
|
|
244
|
-
max-width: none;
|
|
245
|
-
padding-left: clamp(16px, 4.5vw, 28px);
|
|
246
|
-
padding-right: clamp(16px, 4.5vw, 28px);
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
body {
|
|
250
|
-
overflow-y: auto;
|
|
251
|
-
padding-bottom: clamp(48px, 12vw, 88px);
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
#${BACK_BUTTON_ID} {
|
|
255
|
-
display: flex;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
.${EMBEDDED_CLASS} .container {
|
|
260
|
-
padding-left: clamp(18px, 2.4vw, 54px);
|
|
261
|
-
padding-right: clamp(18px, 2.4vw, 54px);
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
.${EMBEDDED_CLASS} .container-main {
|
|
265
|
-
margin-left: auto;
|
|
266
|
-
margin-right: auto;
|
|
267
|
-
width: min(100%, calc(100vw - clamp(32px, 6vw, 120px)));
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
.${EMBEDDED_CLASS} .tsd-page-toolbar {
|
|
271
|
-
position: sticky;
|
|
272
|
-
top: 0;
|
|
273
|
-
z-index: 90;
|
|
274
|
-
min-height: 56px;
|
|
275
|
-
padding: 0;
|
|
276
|
-
box-shadow: inset 0 -1px 0 rgba(148, 163, 184, 0.18);
|
|
277
|
-
backdrop-filter: blur(18px);
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
.${EMBEDDED_CLASS} .tsd-page-toolbar .tsd-toolbar-contents {
|
|
281
|
-
margin: 0 auto;
|
|
282
|
-
padding: 0 clamp(18px, 2.4vw, 54px);
|
|
283
|
-
width: min(100%, calc(100vw - clamp(32px, 6vw, 120px)));
|
|
284
|
-
display: flex;
|
|
285
|
-
align-items: center;
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
#${BACK_BUTTON_ID} {
|
|
289
|
-
position: fixed;
|
|
290
|
-
left: 50%;
|
|
291
|
-
transform: translateX(-50%);
|
|
292
|
-
bottom: calc(env(safe-area-inset-bottom, 0px) + clamp(18px, 6vw, 32px));
|
|
293
|
-
z-index: 2147483647;
|
|
294
|
-
border: 1px solid rgba(148, 163, 184, 0.18);
|
|
295
|
-
border-radius: clamp(32px, 10vw, 999px);
|
|
296
|
-
padding: clamp(12px, 4vw, 18px) clamp(18px, 7vw, 22px);
|
|
297
|
-
min-height: 46px;
|
|
298
|
-
width: min(480px, calc(100vw - clamp(28px, 10vw, 64px)));
|
|
299
|
-
background: linear-gradient(135deg, rgba(63, 133, 245, 0.95), rgba(14, 165, 233, 0.95));
|
|
300
|
-
color: #f8fafc;
|
|
301
|
-
font-size: clamp(14px, 4vw, 16px);
|
|
302
|
-
font-weight: 700;
|
|
303
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
304
|
-
box-shadow: 0 20px 36px rgba(8, 15, 32, 0.35);
|
|
305
|
-
display: none;
|
|
306
|
-
align-items: center;
|
|
307
|
-
justify-content: center;
|
|
308
|
-
gap: clamp(4px, 2vw, 10px);
|
|
309
|
-
cursor: pointer;
|
|
310
|
-
backdrop-filter: blur(18px);
|
|
311
|
-
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
#${BACK_BUTTON_ID}:hover {
|
|
315
|
-
transform: translate(-50%, -2px);
|
|
316
|
-
box-shadow: 0 26px 45px rgba(8, 15, 32, 0.4);
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
#${BACK_BUTTON_ID}:active {
|
|
320
|
-
transform: translate(-50%, 0) scale(0.97);
|
|
321
|
-
box-shadow: 0 16px 30px rgba(8, 15, 32, 0.4);
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
#${BACK_BUTTON_ID} svg {
|
|
325
|
-
width: clamp(16px, 4vw, 18px);
|
|
326
|
-
height: clamp(16px, 4vw, 18px);
|
|
327
|
-
fill: currentColor;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
#${BACK_BUTTON_ID} span {
|
|
331
|
-
white-space: nowrap;
|
|
332
|
-
letter-spacing: 0.01em;
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
@media (max-width: 1024px) {
|
|
336
|
-
.container {
|
|
337
|
-
width: 100%;
|
|
338
|
-
max-width: calc(100vw - clamp(8px, 4vw, 28px));
|
|
339
|
-
margin: 0 auto;
|
|
340
|
-
padding: clamp(14px, 4.5vw, 24px);
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
#${BACK_BUTTON_ID} {
|
|
344
|
-
display: flex;
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
`;
|
|
348
|
-
|
|
349
|
-
document.head.appendChild(style);
|
|
350
|
-
};
|
|
351
|
-
|
|
352
|
-
const revealBody = () => {
|
|
353
|
-
if (document.body) {
|
|
354
|
-
document.body.classList.add("bandit-docs-ready");
|
|
355
|
-
document.body.style.removeProperty("display");
|
|
356
|
-
}
|
|
357
|
-
};
|
|
358
|
-
|
|
359
|
-
const ensureBackButton = () => {
|
|
360
|
-
if (isEmbedded) return;
|
|
361
|
-
|
|
362
|
-
let button = document.getElementById(BACK_BUTTON_ID);
|
|
363
|
-
if (!button) {
|
|
364
|
-
button = document.createElement("button");
|
|
365
|
-
button.id = BACK_BUTTON_ID;
|
|
366
|
-
button.type = "button";
|
|
367
|
-
button.setAttribute("aria-label", "Return to npm package page");
|
|
368
|
-
button.innerHTML =
|
|
369
|
-
'<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z"/></svg><span>Back to overview</span>';
|
|
370
|
-
button.addEventListener("click", () => {
|
|
371
|
-
const fallback = () => {
|
|
372
|
-
window.location.href = FALLBACK_URL;
|
|
373
|
-
};
|
|
374
|
-
const timeout = setTimeout(fallback, 180);
|
|
375
|
-
window.addEventListener(
|
|
376
|
-
"popstate",
|
|
377
|
-
() => {
|
|
378
|
-
clearTimeout(timeout);
|
|
379
|
-
},
|
|
380
|
-
{ once: true },
|
|
381
|
-
);
|
|
382
|
-
window.history.back();
|
|
383
|
-
});
|
|
384
|
-
document.body.appendChild(button);
|
|
385
|
-
}
|
|
386
|
-
};
|
|
387
|
-
|
|
388
|
-
const replaceGatewaySnippet = (attempt = 0) => {
|
|
389
|
-
const codeBlocks = Array.from(document.querySelectorAll("pre code"));
|
|
390
|
-
const targetBlock = codeBlocks.find((block) => {
|
|
391
|
-
const text = block.textContent || "";
|
|
392
|
-
return text.includes(GATEWAY_MARKER) && text.includes("Voice Services (TTS/STT)");
|
|
393
|
-
});
|
|
394
|
-
|
|
395
|
-
if (!targetBlock) {
|
|
396
|
-
if (attempt < MAX_GATEWAY_ATTEMPTS) {
|
|
397
|
-
setTimeout(() => replaceGatewaySnippet(attempt + 1), 200);
|
|
398
|
-
}
|
|
399
|
-
return;
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
const pre = targetBlock.closest("pre");
|
|
403
|
-
if (!pre) return;
|
|
404
|
-
|
|
405
|
-
const copyButton = pre.nextElementSibling;
|
|
406
|
-
if (copyButton?.tagName === "BUTTON") {
|
|
407
|
-
copyButton.remove();
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
const wrapper = document.createElement("div");
|
|
411
|
-
wrapper.className = "gateway-doc";
|
|
412
|
-
wrapper.innerHTML = `
|
|
413
|
-
<p>Set <code>VITE_DEFAULT_MODEL</code> / <code>VITE_FALLBACK_MODEL</code> to the exact Ollama model tags you have available (<code>gemma</code>, <code>llava</code>, <code>moondream</code>, or your own custom builds). Bandit automatically detects multimodal Ollama models, so setting <code>llava</code>, <code>moondream</code>, or other vision-capable variants enables image understanding with no extra code.</p>
|
|
414
|
-
<h3>🎤 Voice Services (TTS/STT)</h3>
|
|
415
|
-
<p>The Bandit Engine supports Text-to-Speech (TTS) and Speech-to-Text (STT) through your gateway API. These services are <strong>technology-agnostic</strong> — you can implement them using any backend technology:</p>
|
|
416
|
-
<ul>
|
|
417
|
-
<li>
|
|
418
|
-
<strong>TTS Endpoint (<code>POST /api/tts</code>)</strong>
|
|
419
|
-
<ul>
|
|
420
|
-
<li><strong>Input</strong>: <code>{ text: string, voice?: string, speed?: number }</code></li>
|
|
421
|
-
<li><strong>Output</strong>: Audio file (MP3, WAV, etc.) or streaming audio</li>
|
|
422
|
-
<li><strong>Compatible with</strong>: OpenAI TTS, Azure Speech, Google Cloud TTS, AWS Polly, local TTS servers, or custom implementations</li>
|
|
423
|
-
</ul>
|
|
424
|
-
</li>
|
|
425
|
-
<li>
|
|
426
|
-
<strong>STT Endpoint (<code>POST /api/stt/transcribe</code>)</strong>
|
|
427
|
-
<ul>
|
|
428
|
-
<li><strong>Input</strong>: Audio file upload (multipart/form-data)</li>
|
|
429
|
-
<li><strong>Output</strong>: <code>{ text: string }</code> or <code>{ transcription: string }</code></li>
|
|
430
|
-
<li><strong>Compatible with</strong>: OpenAI Whisper, Azure Speech, Google Speech, AWS Transcribe, local Whisper servers, or custom implementations</li>
|
|
431
|
-
</ul>
|
|
432
|
-
</li>
|
|
433
|
-
<li>
|
|
434
|
-
<strong>Service Discovery (<code>GET /api/tts/available-models</code>)</strong>
|
|
435
|
-
<ul>
|
|
436
|
-
<li><strong>Output</strong>: <code>{ models: string[], defaultModel: string, fallbackModel: string }</code></li>
|
|
437
|
-
<li>Used for automatic service availability detection and voice model selection</li>
|
|
438
|
-
</ul>
|
|
439
|
-
</li>
|
|
440
|
-
</ul>
|
|
441
|
-
<blockquote>Quickstart note: the generated Express gateway ships these TTS/STT routes as <code>501</code> placeholders so you can connect your own provider. Voice features remain disabled until you implement them server-side.</blockquote>
|
|
442
|
-
<p>See the <a href="media/02_gateway_api.md">Gateway API Contract</a> for complete implementation examples in multiple languages.</p>
|
|
443
|
-
<p>Use the Management interface to switch providers anytime or migrate from direct to gateway setup.</p>
|
|
444
|
-
`;
|
|
445
|
-
|
|
446
|
-
pre.replaceWith(wrapper);
|
|
447
|
-
};
|
|
448
|
-
|
|
449
|
-
const init = () => {
|
|
450
|
-
document.documentElement.classList.add(isEmbedded ? EMBEDDED_CLASS : STANDALONE_CLASS);
|
|
451
|
-
addStyles();
|
|
452
|
-
revealBody();
|
|
453
|
-
ensureBackButton();
|
|
454
|
-
replaceGatewaySnippet();
|
|
455
|
-
};
|
|
456
|
-
|
|
457
|
-
if (document.readyState === "complete" || document.readyState === "interactive") {
|
|
458
|
-
init();
|
|
459
|
-
} else {
|
|
460
|
-
document.addEventListener("DOMContentLoaded", init, { once: true });
|
|
461
|
-
}
|
|
462
|
-
})();
|