@burtson-labs/bandit-engine 2.0.52 → 2.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +23 -12
  2. package/dist/{aiProviderStore-3N3VE6D4.mjs → aiProviderStore-337QNQB3.mjs} +2 -2
  3. package/dist/{chat-YWYLVKXX.mjs → chat-IDE6Z4Q4.mjs} +6 -6
  4. package/dist/chat-provider.js +17 -9
  5. package/dist/chat-provider.js.map +1 -1
  6. package/dist/chat-provider.mjs +4 -4
  7. package/dist/{chunk-QX6CO7TJ.mjs → chunk-557E5VZ2.mjs} +3 -3
  8. package/dist/{chunk-MH7WFWCP.mjs → chunk-AVV7HDGR.mjs} +3 -3
  9. package/dist/{chunk-BENL3EF2.mjs → chunk-H3BYFEIE.mjs} +18 -10
  10. package/dist/chunk-H3BYFEIE.mjs.map +1 -0
  11. package/dist/{chunk-YZ2HJFPQ.mjs → chunk-KM7FUWCM.mjs} +4 -4
  12. package/dist/chunk-KM7FUWCM.mjs.map +1 -0
  13. package/dist/{chunk-M3BEAMCC.mjs → chunk-KNBWR4DS.mjs} +775 -488
  14. package/dist/chunk-KNBWR4DS.mjs.map +1 -0
  15. package/dist/{chunk-Y5N3NSTU.mjs → chunk-NP2OHTTX.mjs} +116 -152
  16. package/dist/chunk-NP2OHTTX.mjs.map +1 -0
  17. package/dist/{chunk-TSQCNHOX.mjs → chunk-TLY6A6XL.mjs} +123 -147
  18. package/dist/chunk-TLY6A6XL.mjs.map +1 -0
  19. package/dist/{chunk-37PEP5JK.mjs → chunk-UFSEYVRS.mjs} +3 -3
  20. package/dist/{chunk-RSSJADDD.mjs → chunk-WL7NV4WJ.mjs} +28 -32
  21. package/dist/chunk-WL7NV4WJ.mjs.map +1 -0
  22. package/dist/index.d.mts +5 -3
  23. package/dist/index.d.ts +5 -3
  24. package/dist/index.js +4097 -4045
  25. package/dist/index.js.map +1 -1
  26. package/dist/index.mjs +11 -15
  27. package/dist/index.mjs.map +1 -1
  28. package/dist/management/management.js +4068 -4016
  29. package/dist/management/management.js.map +1 -1
  30. package/dist/management/management.mjs +7 -7
  31. package/dist/modals/chat-modal/chat-modal.js +1401 -1279
  32. package/dist/modals/chat-modal/chat-modal.js.map +1 -1
  33. package/dist/modals/chat-modal/chat-modal.mjs +4 -4
  34. package/dist/{gateway-oScD5tvE.d.mts → public-BzsEWB08.d.mts} +11 -122
  35. package/dist/{gateway-oScD5tvE.d.ts → public-BzsEWB08.d.ts} +11 -122
  36. package/dist/public-types.d.mts +2 -32
  37. package/dist/public-types.d.ts +2 -32
  38. package/package.json +3 -11
  39. package/dist/chunk-BENL3EF2.mjs.map +0 -1
  40. package/dist/chunk-M3BEAMCC.mjs.map +0 -1
  41. package/dist/chunk-RSSJADDD.mjs.map +0 -1
  42. package/dist/chunk-TSQCNHOX.mjs.map +0 -1
  43. package/dist/chunk-Y5N3NSTU.mjs.map +0 -1
  44. package/dist/chunk-YZ2HJFPQ.mjs.map +0 -1
  45. package/dist/cli.js +0 -4084
  46. package/dist/cli.js.map +0 -1
  47. /package/dist/{aiProviderStore-3N3VE6D4.mjs.map → aiProviderStore-337QNQB3.mjs.map} +0 -0
  48. /package/dist/{chat-YWYLVKXX.mjs.map → chat-IDE6Z4Q4.mjs.map} +0 -0
  49. /package/dist/{chunk-QX6CO7TJ.mjs.map → chunk-557E5VZ2.mjs.map} +0 -0
  50. /package/dist/{chunk-MH7WFWCP.mjs.map → chunk-AVV7HDGR.mjs.map} +0 -0
  51. /package/dist/{chunk-37PEP5JK.mjs.map → chunk-UFSEYVRS.mjs.map} +0 -0
package/README.md CHANGED
@@ -17,19 +17,30 @@ An AI chat toolkit built for speed, design, and control. Power branded AI assist
17
17
  [![License: BUSL-1.1](https://img.shields.io/badge/License-BUSL--1.1-red)](./LICENSE)
18
18
 
19
19
  ## Features
20
- - 🔌 Plug-and-play React chat, modal, and management surfaces
21
- - 🧠 Memory, searchable knowledge, and provider switching behind a secure gateway
22
- - 🎨 Full MUI theming, dark mode, and branding controls out of the box
23
- - 🌐 Multimodal support (voice, images, documents) with Bandit AI, Ollama, OpenAI, Azure OpenAI, Anthropic, and xAI today — tell us which providers you need next so we can prioritize them
24
- - 🛠️ CLI scaffolding, sample gateway, and docs to launch in minutes
20
+ - Plug-and-play React chat, modal, and management surfaces
21
+ - Memory, searchable knowledge, and provider switching behind a secure gateway
22
+ - Full MUI theming, dark mode, and branding controls out of the box
23
+ - Multimodal support (voice, images, documents) with Bandit AI, Ollama, OpenAI, Azure OpenAI, Anthropic, and xAI today — tell us which providers you need next so we can prioritize them
24
+ - CLI scaffolding, sample gateway, and docs to launch in minutes
25
25
 
26
26
  Bandit keeps confidentiality, integrity, and availability front and center: data stays within your routes, answers stay auditable, and the UI falls back gracefully when a provider is unavailable.
27
27
 
28
+ ## Bandit package ecosystem
29
+
30
+ This package is the core React engine. Related packages:
31
+
32
+ | Package | Purpose | Install weight |
33
+ |---------|---------|----------------|
34
+ | `@burtson-labs/bandit-engine` | React chat, modal, and management UI — this package | Full |
35
+ | [`@burtson-labs/bandit-cli`](https://banditailabs.com/npm-package) | Quickstart scaffolding CLI — `npx @burtson-labs/bandit-cli create` | Minimal (Node.js only) |
36
+ | [`@burtson-labs/bandit-themes`](https://banditailabs.com/npm-package) | MUI theme pack — use Bandit design tokens without the engine | MUI only |
37
+ | [`@burtson-labs/bandit-types`](https://banditailabs.com/npm-package) | Gateway contract type definitions — type your own gateway or server | Zero runtime deps |
38
+
28
39
  ## Quick Links
29
- - 📚 Full docs: [banditailabs.com/npm-package](https://banditailabs.com/npm-package) (mirrors `/docs` in this repo)
30
- - 🎯 Live demo with OAuth sign-in: [banditailabs.com](https://banditailabs.com/)
31
- - 🧪 Playground (no auth required): [banditailabs.com/playground](https://banditailabs.com/playground)
32
- - 🔁 Sample gateway: [`examples/gateway-node`](./examples/gateway-node/README.md)
40
+ - Full docs: [banditailabs.com/npm-package](https://banditailabs.com/npm-package) (mirrors `/docs` in this repo)
41
+ - Live demo with OAuth sign-in: [banditailabs.com](https://banditailabs.com/)
42
+ - Playground (no auth required): [banditailabs.com/playground](https://banditailabs.com/playground)
43
+ - Sample gateway: [`examples/gateway-node`](./examples/gateway-node/README.md)
33
44
 
34
45
  ## Quick Start
35
46
 
@@ -38,7 +49,7 @@ Bandit keeps confidentiality, integrity, and availability front and center: data
38
49
  Want a working playground instantly? Scaffold a Bandit app and gateway in one command:
39
50
 
40
51
  ```bash
41
- npx @burtson-labs/bandit-engine create my-bandit-app
52
+ npx @burtson-labs/bandit-cli create my-bandit-app
42
53
  ```
43
54
 
44
55
  ![Bandit CLI quickstart walkthrough](https://cdn.burtson.ai/images/cli-quickstart.jpg)
@@ -58,9 +69,9 @@ Customize the output with options such as:
58
69
  - `--yes` / `--skip-prompts` to accept defaults non-interactively
59
70
  - `--force` to overwrite a non-empty directory
60
71
 
61
- > 📦 The generated project installs directly from `https://registry.npmjs.org/` — no GitHub npm token is required once the package is public.
72
+ > The generated project installs directly from `https://registry.npmjs.org/` — no GitHub npm token is required once the package is public.
62
73
 
63
- > ⚠️ The scaffolded gateway focuses on Bandit AI/OpenAI/xAI/Ollama chat and model discovery. All advanced routes (file storage uploads, vector embedding, voice, MCP, etc.) are generated as `501` placeholders so you can wire them to your own infrastructure. Implement the contracts below before turning on those features in production.
74
+ > The scaffolded gateway focuses on Bandit AI/OpenAI/xAI/Ollama chat and model discovery. All advanced routes (file storage uploads, vector embedding, voice, MCP, etc.) are generated as `501` placeholders so you can wire them to your own infrastructure. Implement the contracts below before turning on those features in production.
64
75
 
65
76
  Check out the [CLI quick start guide](./docs/05_cli_quickstart.md) for the full walkthrough, option matrix, and project anatomy.
66
77
 
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  useAIProviderStore
3
- } from "./chunk-BENL3EF2.mjs";
3
+ } from "./chunk-H3BYFEIE.mjs";
4
4
  import "./chunk-KCI46M23.mjs";
5
5
  import "./chunk-BJTO5JO5.mjs";
6
6
  export {
7
7
  useAIProviderStore
8
8
  };
9
- //# sourceMappingURL=aiProviderStore-3N3VE6D4.mjs.map
9
+ //# sourceMappingURL=aiProviderStore-337QNQB3.mjs.map
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  chat_default
3
- } from "./chunk-TSQCNHOX.mjs";
3
+ } from "./chunk-TLY6A6XL.mjs";
4
4
  import "./chunk-ONQMRE2G.mjs";
5
- import "./chunk-YZ2HJFPQ.mjs";
5
+ import "./chunk-KM7FUWCM.mjs";
6
6
  import "./chunk-EHNWQ4T3.mjs";
7
- import "./chunk-M3BEAMCC.mjs";
8
- import "./chunk-QX6CO7TJ.mjs";
7
+ import "./chunk-KNBWR4DS.mjs";
8
+ import "./chunk-557E5VZ2.mjs";
9
9
  import "./chunk-7ZDS33S2.mjs";
10
- import "./chunk-BENL3EF2.mjs";
10
+ import "./chunk-H3BYFEIE.mjs";
11
11
  import "./chunk-KCI46M23.mjs";
12
12
  import "./chunk-BJTO5JO5.mjs";
13
13
  export {
14
14
  chat_default as default
15
15
  };
16
- //# sourceMappingURL=chat-YWYLVKXX.mjs.map
16
+ //# sourceMappingURL=chat-IDE6Z4Q4.mjs.map
@@ -2303,7 +2303,8 @@ var init_gateway_service = __esm({
2303
2303
  index: 0,
2304
2304
  delta: {
2305
2305
  role: parsed.message.role,
2306
- content: parsed.message.content
2306
+ content: parsed.message.content,
2307
+ tool_calls: parsed.message.tool_calls
2307
2308
  },
2308
2309
  finish_reason: parsed.done ? parsed.done_reason || "stop" : null
2309
2310
  }]
@@ -3283,6 +3284,7 @@ var init_gateway_provider = __esm({
3283
3284
  }
3284
3285
  }
3285
3286
  }
3287
+ const toolAwareRequest = request;
3286
3288
  const gatewayRequest = {
3287
3289
  model: request.model,
3288
3290
  messages,
@@ -3291,7 +3293,8 @@ var init_gateway_provider = __esm({
3291
3293
  max_tokens: request.maxTokens,
3292
3294
  provider: this.config.provider,
3293
3295
  // Only include top-level images for Ollama (fallback)
3294
- images: this.config.provider === "ollama" ? request.images : void 0
3296
+ images: this.config.provider === "ollama" ? request.images : void 0,
3297
+ tools: toolAwareRequest.tools?.length ? toolAwareRequest.tools : void 0
3295
3298
  };
3296
3299
  debugLogger.debug("Gateway provider chat request", {
3297
3300
  model: request.model,
@@ -3308,13 +3311,18 @@ var init_gateway_provider = __esm({
3308
3311
  }))
3309
3312
  });
3310
3313
  return this.gatewayService.chat(gatewayRequest).pipe(
3311
- (0, import_rxjs7.map)((response) => ({
3312
- message: {
3313
- content: response.choices?.[0]?.message?.content || response.choices?.[0]?.delta?.content || "",
3314
- role: "assistant"
3315
- },
3316
- done: response.choices?.[0]?.finish_reason === "stop" || response.choices?.[0]?.finish_reason === "length"
3317
- }))
3314
+ (0, import_rxjs7.map)((response) => {
3315
+ const choice = response.choices?.[0];
3316
+ const toolCalls = choice?.message?.tool_calls ?? choice?.delta?.tool_calls;
3317
+ return {
3318
+ message: {
3319
+ content: choice?.message?.content ?? choice?.delta?.content ?? "",
3320
+ role: "assistant",
3321
+ tool_calls: toolCalls
3322
+ },
3323
+ done: choice?.finish_reason === "stop" || choice?.finish_reason === "length" || choice?.finish_reason === "tool_calls"
3324
+ };
3325
+ })
3318
3326
  );
3319
3327
  }
3320
3328
  generate(request) {