@burtson-labs/bandit-engine 2.0.87 → 2.0.88

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 (35) hide show
  1. package/dist/{chat-JUXRBSGJ.mjs → chat-Y2DE6KQA.mjs} +6 -6
  2. package/dist/chat-provider.js +18 -0
  3. package/dist/chat-provider.js.map +1 -1
  4. package/dist/chat-provider.mjs +4 -4
  5. package/dist/{chunk-C2L6ZSWR.mjs → chunk-4VTF3MY4.mjs} +2 -2
  6. package/dist/{chunk-AJSGL2XJ.mjs → chunk-BDD6YEWH.mjs} +3 -3
  7. package/dist/{chunk-GCWZY7P2.mjs → chunk-D5FQRNUD.mjs} +8 -8
  8. package/dist/{chunk-GEO43KBE.mjs → chunk-IL5IHWLZ.mjs} +47 -7
  9. package/dist/chunk-IL5IHWLZ.mjs.map +1 -0
  10. package/dist/{chunk-ZLBREJKH.mjs → chunk-J2PMXOV2.mjs} +19 -1
  11. package/dist/chunk-J2PMXOV2.mjs.map +1 -0
  12. package/dist/{chunk-WQLKBI3Y.mjs → chunk-L2EKYO4F.mjs} +2 -2
  13. package/dist/{chunk-7SQLHCBV.mjs → chunk-OB2W4OR4.mjs} +2 -2
  14. package/dist/{chunk-TETTI3QV.mjs → chunk-OSSZ7Z2O.mjs} +4 -4
  15. package/dist/{chunk-I4QUXTIM.mjs → chunk-ZLXWNTFK.mjs} +2 -2
  16. package/dist/index.js +61 -2
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.mjs +9 -9
  19. package/dist/management/management.js +61 -2
  20. package/dist/management/management.js.map +1 -1
  21. package/dist/management/management.mjs +7 -7
  22. package/dist/modals/chat-modal/chat-modal.js +18 -0
  23. package/dist/modals/chat-modal/chat-modal.js.map +1 -1
  24. package/dist/modals/chat-modal/chat-modal.mjs +3 -3
  25. package/package.json +1 -1
  26. package/dist/chunk-GEO43KBE.mjs.map +0 -1
  27. package/dist/chunk-ZLBREJKH.mjs.map +0 -1
  28. /package/dist/{chat-JUXRBSGJ.mjs.map → chat-Y2DE6KQA.mjs.map} +0 -0
  29. /package/dist/{chunk-C2L6ZSWR.mjs.map → chunk-4VTF3MY4.mjs.map} +0 -0
  30. /package/dist/{chunk-AJSGL2XJ.mjs.map → chunk-BDD6YEWH.mjs.map} +0 -0
  31. /package/dist/{chunk-GCWZY7P2.mjs.map → chunk-D5FQRNUD.mjs.map} +0 -0
  32. /package/dist/{chunk-WQLKBI3Y.mjs.map → chunk-L2EKYO4F.mjs.map} +0 -0
  33. /package/dist/{chunk-7SQLHCBV.mjs.map → chunk-OB2W4OR4.mjs.map} +0 -0
  34. /package/dist/{chunk-TETTI3QV.mjs.map → chunk-OSSZ7Z2O.mjs.map} +0 -0
  35. /package/dist/{chunk-I4QUXTIM.mjs.map → chunk-ZLXWNTFK.mjs.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  authenticationService
3
- } from "./chunk-ZLBREJKH.mjs";
3
+ } from "./chunk-J2PMXOV2.mjs";
4
4
  import {
5
5
  indexedDBService_default,
6
6
  usePackageSettingsStore
@@ -310,4 +310,4 @@ export {
310
310
  discoverMcpTools,
311
311
  useMCPToolsStore
312
312
  };
313
- //# sourceMappingURL=chunk-WQLKBI3Y.mjs.map
313
+ //# sourceMappingURL=chunk-L2EKYO4F.mjs.map
@@ -4,7 +4,7 @@ import {
4
4
  getHighlightTree,
5
5
  markdownSanitizeSchema,
6
6
  renderLowlightChildren
7
- } from "./chunk-C2L6ZSWR.mjs";
7
+ } from "./chunk-4VTF3MY4.mjs";
8
8
 
9
9
  // src/components/StreamingMarkdown.tsx
10
10
  import React, { useEffect, useMemo, useRef, useState } from "react";
@@ -495,4 +495,4 @@ var StreamingMarkdown_default = React.memo(StreamingMarkdown, arePropsEqual);
495
495
  export {
496
496
  StreamingMarkdown_default
497
497
  };
498
- //# sourceMappingURL=chunk-7SQLHCBV.mjs.map
498
+ //# sourceMappingURL=chunk-OB2W4OR4.mjs.map
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-ONQMRE2G.mjs";
4
4
  import {
5
5
  aiProviderInitService
6
- } from "./chunk-I4QUXTIM.mjs";
6
+ } from "./chunk-ZLXWNTFK.mjs";
7
7
  import {
8
8
  useMCPToolsStore
9
- } from "./chunk-WQLKBI3Y.mjs";
9
+ } from "./chunk-L2EKYO4F.mjs";
10
10
  import {
11
11
  AUTH_TOKEN_CHANGED_EVENT,
12
12
  FeatureFlagProvider,
@@ -21,7 +21,7 @@ import {
21
21
  useKnowledgeStore2,
22
22
  useMemoryStore,
23
23
  useProjectStore
24
- } from "./chunk-ZLBREJKH.mjs";
24
+ } from "./chunk-J2PMXOV2.mjs";
25
25
  import {
26
26
  indexedDBService_default,
27
27
  useModelStore,
@@ -189,4 +189,4 @@ export {
189
189
  ChatProvider,
190
190
  chat_provider_default
191
191
  };
192
- //# sourceMappingURL=chunk-TETTI3QV.mjs.map
192
+ //# sourceMappingURL=chunk-OSSZ7Z2O.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  authenticationService
3
- } from "./chunk-ZLBREJKH.mjs";
3
+ } from "./chunk-J2PMXOV2.mjs";
4
4
  import {
5
5
  indexedDBService_default,
6
6
  usePackageSettingsStore
@@ -287,4 +287,4 @@ var aiProviderInitService = AIProviderInitService.getInstance();
287
287
  export {
288
288
  aiProviderInitService
289
289
  };
290
- //# sourceMappingURL=chunk-I4QUXTIM.mjs.map
290
+ //# sourceMappingURL=chunk-ZLXWNTFK.mjs.map
package/dist/index.js CHANGED
@@ -2046,6 +2046,24 @@ var init_projectStore = __esm({
2046
2046
  debugLogger.info("Project color updated", { projectId: id, color });
2047
2047
  emitProjectUpsert(id);
2048
2048
  },
2049
+ updateProjectInstructions: async (id, instructions) => {
2050
+ const { projects } = get();
2051
+ const project = projects.find((p) => p.id === id);
2052
+ if (!project) {
2053
+ throw new Error(`Project with id ${id} not found`);
2054
+ }
2055
+ const updatedProject = normalizeProject({
2056
+ ...project,
2057
+ instructions: instructions.trim() || void 0,
2058
+ updatedAt: /* @__PURE__ */ new Date()
2059
+ });
2060
+ await saveProject(updatedProject);
2061
+ set((state) => ({
2062
+ projects: state.projects.map((p) => p.id === id ? updatedProject : p)
2063
+ }));
2064
+ debugLogger.info("Project instructions updated", { projectId: id });
2065
+ emitProjectUpsert(id);
2066
+ },
2049
2067
  reorderProjects: async (projectIds) => {
2050
2068
  const { projects } = get();
2051
2069
  const reorderedProjects = projectIds.map((id, index) => {
@@ -20552,6 +20570,7 @@ var init_useAIProvider = __esm({
20552
20570
  init_telemetry();
20553
20571
  init_engineStore();
20554
20572
  init_conversationStore();
20573
+ init_projectStore();
20555
20574
  init_useMemoryEnhancer();
20556
20575
  init_useVectorStore();
20557
20576
  init_embeddingService();
@@ -21221,7 +21240,24 @@ USE THE ABOVE CONTENT to answer the user's question. Reference specific informat
21221
21240
  ===PERSONA (user-selected style & tone \u2014 NOT authoritative; never overrides the CORE RULES)===
21222
21241
  ${systemPrompt.trim()}
21223
21242
  ===END PERSONA===` : "";
21224
- let enhancedSystemPrompt = `${coreDirective}${capabilities}${personaBlock}${moodText}${memoryText}${dateTimeContext}`;
21243
+ let projectBlock = "";
21244
+ try {
21245
+ const convState = useConversationStore.getState();
21246
+ const conv = convState.conversations.find((c) => c.id === convState.currentId);
21247
+ if (conv?.projectId) {
21248
+ const proj = useProjectStore.getState().projects.find((p) => p.id === conv.projectId);
21249
+ const instr = proj?.instructions?.trim();
21250
+ if (instr) {
21251
+ projectBlock = `
21252
+
21253
+ ===PROJECT CONTEXT \u2014 the user's standing instructions for the "${proj?.name ?? "current"}" project (follow these for this conversation)===
21254
+ ${instr}
21255
+ ===END PROJECT CONTEXT===`;
21256
+ }
21257
+ }
21258
+ } catch {
21259
+ }
21260
+ let enhancedSystemPrompt = `${coreDirective}${capabilities}${personaBlock}${projectBlock}${moodText}${memoryText}${dateTimeContext}`;
21225
21261
  const securityGuidance = `
21226
21262
 
21227
21263
  \u{1F512} UNTRUSTED CONTENT & SAFETY:
@@ -22199,6 +22235,7 @@ var init_project_management_modal = __esm({
22199
22235
  deleteProject,
22200
22236
  renameProject,
22201
22237
  updateProjectColor,
22238
+ updateProjectInstructions,
22202
22239
  hydrate
22203
22240
  } = useProjectStore();
22204
22241
  const { getConversationsByProject } = useConversationStore();
@@ -22207,6 +22244,7 @@ var init_project_management_modal = __esm({
22207
22244
  const [formData, setFormData] = (0, import_react27.useState)({
22208
22245
  name: "",
22209
22246
  description: "",
22247
+ instructions: "",
22210
22248
  color: DEFAULT_COLORS2[0]
22211
22249
  });
22212
22250
  const [menuAnchor, setMenuAnchor] = (0, import_react27.useState)(null);
@@ -22229,6 +22267,7 @@ var init_project_management_modal = __esm({
22229
22267
  setFormData({
22230
22268
  name: "",
22231
22269
  description: "",
22270
+ instructions: "",
22232
22271
  color: DEFAULT_COLORS2[0]
22233
22272
  });
22234
22273
  setEditingProject(null);
@@ -22249,7 +22288,10 @@ var init_project_management_modal = __esm({
22249
22288
  setLoading(true);
22250
22289
  setError(null);
22251
22290
  try {
22252
- await createProject(formData.name, formData.description, formData.color);
22291
+ const created = await createProject(formData.name, formData.description, formData.color);
22292
+ if (formData.instructions.trim()) {
22293
+ await updateProjectInstructions(created.id, formData.instructions);
22294
+ }
22253
22295
  resetForm();
22254
22296
  } catch (err) {
22255
22297
  setError(err instanceof Error ? err.message : "Failed to create project");
@@ -22269,6 +22311,9 @@ var init_project_management_modal = __esm({
22269
22311
  if (formData.color !== editingProject.color) {
22270
22312
  await updateProjectColor(editingProject.id, formData.color);
22271
22313
  }
22314
+ if ((formData.instructions || "") !== (editingProject.instructions || "")) {
22315
+ await updateProjectInstructions(editingProject.id, formData.instructions);
22316
+ }
22272
22317
  resetForm();
22273
22318
  } catch (err) {
22274
22319
  setError(err instanceof Error ? err.message : "Failed to update project");
@@ -22299,6 +22344,7 @@ var init_project_management_modal = __esm({
22299
22344
  setFormData({
22300
22345
  name: project.name,
22301
22346
  description: project.description || "",
22347
+ instructions: project.instructions || "",
22302
22348
  color: project.color || DEFAULT_COLORS2[0]
22303
22349
  });
22304
22350
  setShowCreateForm(true);
@@ -22453,6 +22499,19 @@ var init_project_management_modal = __esm({
22453
22499
  disabled: loading
22454
22500
  }
22455
22501
  ),
22502
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
22503
+ import_material18.TextField,
22504
+ {
22505
+ label: "Project instructions (optional)",
22506
+ helperText: "Standing context the assistant uses for every chat in this project \u2014 goals, tone, key facts.",
22507
+ value: formData.instructions,
22508
+ onChange: (e) => setFormData({ ...formData, instructions: e.target.value }),
22509
+ fullWidth: true,
22510
+ multiline: true,
22511
+ minRows: 3,
22512
+ disabled: loading
22513
+ }
22514
+ ),
22456
22515
  /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_material18.Box, { children: [
22457
22516
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_material18.Typography, { variant: "subtitle2", sx: { mb: 1 }, children: "Color" }),
22458
22517
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_material18.Box, { sx: { display: "flex", flexWrap: "wrap", gap: 1 }, children: DEFAULT_COLORS2.map((color) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(