@burdenoff/fe-libs 2026.904.24 → 2026.904.26

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.
@@ -308,8 +308,12 @@ var j = ({ visible: p = !0, writeAccess: x = "unknown" }) => {
308
308
  earlier: k("voiceSession.earlierLabel", "Earlier"),
309
309
  you: k("voiceSession.speakerYou", "You"),
310
310
  assistant: k("voiceSession.speakerAssistant", "Assistant")
311
- }, e), te(e), "text/markdown");
312
- }, [X, k]), Z = Ae(), Q = E(Z);
311
+ }, e), te(A, e), "text/markdown");
312
+ }, [
313
+ A,
314
+ X,
315
+ k
316
+ ]), Z = Ae(), Q = E(Z);
313
317
  Q.current = Z;
314
318
  let $ = me({
315
319
  onSubmit: C((e, t) => {
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantMessageAttachments.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantMessageAttachments.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKrD,OAAO,EAAe,KAAK,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AA+G9E;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAAC;IAC3C,WAAW,EAAE,0BAA0B,EAAE,CAAC;CAC3C,CAoBA,CAAC"}
1
+ {"version":3,"file":"AssistantMessageAttachments.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantMessageAttachments.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKrD,OAAO,EAAe,KAAK,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AA2G9E;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAAC;IAC3C,WAAW,EAAE,0BAA0B,EAAE,CAAC;CAC3C,CAiBA,CAAC"}
@@ -7,7 +7,7 @@ import { useEffect as i, useState as a } from "react";
7
7
  import { FileText as o, Paperclip as s } from "lucide-react";
8
8
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
9
9
  //#region src/shared/assistant/ui/AssistantMessageAttachments.tsx
10
- var u = "\n query HealthyBowlAssistantMessageAttachmentUrl($id: ID!) {\n getFileDownloadUrl(id: $id)\n }\n";
10
+ var u = "\n query AssistantMessageAttachmentUrl($id: ID!) {\n getFileDownloadUrl(id: $id)\n }\n";
11
11
  function d(t) {
12
12
  let [n, o] = a(null);
13
13
  return i(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantComposer.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/AssistantComposer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,EAAE,EAER,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQjD,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,mBAAmB,CAAC;AAQ3B,UAAU,KAAK;IACb;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,IAAI,CAAC;IACtE,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,aAAa,CAAC;IACpB,qDAAqD;IACrD,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,KAAK,CA4ZvC,CAAC"}
1
+ {"version":3,"file":"AssistantComposer.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/AssistantComposer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,EAAE,EAER,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQjD,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,mBAAmB,CAAC;AAQ3B,UAAU,KAAK;IACb;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,IAAI,CAAC;IACtE,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,aAAa,CAAC;IACpB,qDAAqD;IACrD,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,KAAK,CA+XvC,CAAC"}
@@ -22,7 +22,7 @@ var g = 200, _ = ({ writeAccessDenied: _ = !1, onSend: v, disabled: y = !1, plac
22
22
  }, []), U = a((e) => e.assistantLanguage), W = a((e) => e.setAssistantLanguage), G = oe(() => ee(U, w), [U, w]), K = t({
23
23
  onFinalize: H,
24
24
  language: G.tag
25
- }), le = b ?? C("composer.placeholder", "Ask HealthyBowl anything…"), q = E.trim(), J = i(j), Y = j.filter((e) => e.status === "error"), X = (q.length > 0 || J.length > 0) && !y && P === null;
25
+ }), le = b ?? C("composer.placeholder", "Ask me anything…"), q = E.trim(), J = i(j), Y = j.filter((e) => e.status === "error"), X = (q.length > 0 || J.length > 0) && !y && P === null;
26
26
  ae(() => {
27
27
  let e = T.current;
28
28
  e && (e.style.height = "auto", e.style.height = `${Math.min(e.scrollHeight, g)}px`);
@@ -1 +1 @@
1
- {"version":3,"file":"useAssistantAttachments.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/useAssistantAttachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH,OAAO,EAYL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAC;AAmJvB,MAAM,WAAW,6BAA6B;IAC5C,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,qEAAqE;IACrE,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,WAAW,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC1C,6DAA6D;IAC7D,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAChE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,gFAAgF;IAChF,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,uBAAuB,IAAI,6BAA6B,CAoRvE"}
1
+ {"version":3,"file":"useAssistantAttachments.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/useAssistantAttachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH,OAAO,EAYL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAC;AAmJvB,MAAM,WAAW,6BAA6B;IAC5C,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,qEAAqE;IACrE,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,WAAW,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC1C,6DAA6D;IAC7D,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAChE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,gFAAgF;IAChF,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,uBAAuB,IAAI,6BAA6B,CAiQvE"}
@@ -9,7 +9,7 @@ import "../../storage/index.js";
9
9
  import { extractDocumentText as p } from "./documentExtract.js";
10
10
  import { useCallback as m, useEffect as h, useRef as g, useState as _ } from "react";
11
11
  //#region src/shared/assistant/useAssistantAttachments.ts
12
- var v = "/HealthyBowl/AI Assistant/Attachments", y = "\n query HealthyBowlAssistantAttachmentUrl($id: ID!) {\n getFileDownloadUrl(id: $id)\n }\n";
12
+ var v = "/HealthyBowl/AI Assistant/Attachments", y = "\n query AssistantAttachmentUrl($id: ID!) {\n getFileDownloadUrl(id: $id)\n }\n";
13
13
  async function b(t, n) {
14
14
  if (!t || !n) return null;
15
15
  try {
@@ -16,8 +16,12 @@
16
16
  * These are one short sentence each and they are needed synchronously.
17
17
  *
18
18
  * Deliberately short. Long enough to hear timbre and cadence, short enough that
19
- * auditioning four voices is not a chore, and it names the product so the
20
- * listener hears the one word this voice will say most often.
19
+ * auditioning four voices is not a chore.
20
+ *
21
+ * ★★ It names NO product. It used to say "your HealthyBowl assistant" in all
22
+ * seventeen languages, and a test asserted that it did — so every other product
23
+ * auditioning a voice heard it introduce itself as a different product's. The
24
+ * product's own name is not what is being judged here; the voice is.
21
25
  */
22
26
  /**
23
27
  * The audition sentence for a locale.
@@ -1 +1 @@
1
- {"version":3,"file":"voicePreview.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/voice/voicePreview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAsBH;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,UAAmC,CAAC"}
1
+ {"version":3,"file":"voicePreview.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/voice/voicePreview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAsBH;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,UAAmC,CAAC"}
@@ -1,22 +1,22 @@
1
1
  //#region src/shared/assistant/voice/voicePreview.ts
2
2
  var e = {
3
- en: "Hello! I am your HealthyBowl assistant.",
4
- ta: "வணக்கம்! நான் உங்கள் HealthyBowl உதவியாளர்.",
5
- hi: "नमस्ते! मैं आपका HealthyBowl सहायक हूँ।",
6
- bn: "নমস্কার! আমি আপনার HealthyBowl সহায়ক।",
7
- te: "నమస్కారం! నేను మీ HealthyBowl సహాయకుడిని.",
8
- mr: "नमस्कार! मी तुमचा HealthyBowl सहाय्यक आहे.",
9
- gu: "નમસ્તે! હું તમારો HealthyBowl સહાયક છું.",
10
- kn: "ನಮಸ್ಕಾರ! ನಾನು ನಿಮ್ಮ HealthyBowl ಸಹಾಯಕ.",
11
- ml: "നമസ്കാരം! ഞാൻ നിങ്ങളുടെ HealthyBowl സഹായിയാണ്.",
12
- pa: "ਸਤ ਸ੍ਰੀ ਅਕਾਲ! ਮੈਂ ਤੁਹਾਡਾ HealthyBowl ਸਹਾਇਕ ਹਾਂ।",
13
- ur: "السلام علیکم! میں آپ کا HealthyBowl معاون ہوں۔",
14
- ar: "مرحبًا! أنا مساعد HealthyBowl الخاص بك.",
15
- es: "¡Hola! Soy tu asistente de HealthyBowl.",
16
- fr: "Bonjour ! Je suis votre assistant HealthyBowl.",
17
- de: "Hallo! Ich bin Ihr HealthyBowl-Assistent.",
18
- ja: "こんにちは!HealthyBowl のアシスタントです。",
19
- zh: "你好!我是您的 HealthyBowl 助手。"
3
+ en: "Hello! I am your assistant.",
4
+ ta: "வணக்கம்! நான் உங்கள் உதவியாளர்.",
5
+ hi: "नमस्ते! मैं आपका सहायक हूँ।",
6
+ bn: "নমস্কার! আমি আপনার সহায়ক।",
7
+ te: "నమస్కారం! నేను మీ సహాయకుడిని.",
8
+ mr: "नमस्कार! मी तुमचा सहाय्यक आहे.",
9
+ gu: "નમસ્તે! હું તમારો સહાયક છું.",
10
+ kn: "ನಮಸ್ಕಾರ! ನಾನು ನಿಮ್ಮ ಸಹಾಯಕ.",
11
+ ml: "നമസ്കാരം! ഞാൻ നിങ്ങളുടെ സഹായിയാണ്.",
12
+ pa: "ਸਤ ਸ੍ਰੀ ਅਕਾਲ! ਮੈਂ ਤੁਹਾਡਾ ਸਹਾਇਕ ਹਾਂ।",
13
+ ur: "السلام علیکم! میں آپ کا معاون ہوں۔",
14
+ ar: "مرحبًا! أنا مساعدك.",
15
+ es: "¡Hola! Soy tu asistente.",
16
+ fr: "Bonjour ! Je suis votre assistant.",
17
+ de: "Hallo! Ich bin Ihr Assistent.",
18
+ ja: "こんにちは!あなたのアシスタントです。",
19
+ zh: "你好!我是您的助手。"
20
20
  };
21
21
  function t(t) {
22
22
  let n = t.trim().toLowerCase().split(/[-_]/)[0];
@@ -20,8 +20,17 @@ export declare function buildVoiceTranscriptMarkdown(turns: readonly VoiceTransc
20
20
  you: string;
21
21
  assistant: string;
22
22
  }, now: Date): string;
23
- /** A filename that sorts by date and never collides across a single day. */
24
- export declare function voiceTranscriptFilename(now: Date): string;
23
+ /**
24
+ * A filename that sorts by date and never collides across a single day.
25
+ *
26
+ * ★ `product` is REQUIRED, with no default. It was hardcoded to `healthybowl`,
27
+ * so every product's saved transcripts arrived in the user's downloads folder
28
+ * under another product's name. A default would have kept that failure for
29
+ * whoever forgot to pass it — and the whole point is that shared code cannot
30
+ * know this. The value is the same `product` the transport sends, so for
31
+ * HealthyBowl the output is byte-identical to before.
32
+ */
33
+ export declare function voiceTranscriptFilename(product: string, now: Date): string;
25
34
  /**
26
35
  * The note that "Continue in chat" leaves in the typed thread.
27
36
  *
@@ -1 +1 @@
1
- {"version":3,"file":"voiceTranscript.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/voice/voiceTranscript.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgCvF;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC5G,GAAG,EAAE,IAAI,GACR,MAAM,CA8BR;AAED,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAIzD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,GAC1E,MAAM,CAaR"}
1
+ {"version":3,"file":"voiceTranscript.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/voice/voiceTranscript.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgCvF;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,MAAM,EAAE;IACN,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB,EACD,GAAG,EAAE,IAAI,GACR,MAAM,CAmCR;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,CAI1E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,GAC1E,MAAM,CAkBR"}
@@ -29,8 +29,8 @@ function a(t, n, r) {
29
29
  }
30
30
  }), `${o.join("\n").trimEnd()}\n`;
31
31
  }
32
- function o(e) {
33
- return `healthybowl-voice-${`${e.getFullYear()}-${String(e.getMonth() + 1).padStart(2, "0")}-${String(e.getDate()).padStart(2, "0")}`}-${`${String(e.getHours()).padStart(2, "0")}${String(e.getMinutes()).padStart(2, "0")}`}.md`;
32
+ function o(e, t) {
33
+ return `${e}-voice-${`${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, "0")}-${String(t.getDate()).padStart(2, "0")}`}-${`${String(t.getHours()).padStart(2, "0")}${String(t.getMinutes()).padStart(2, "0")}`}.md`;
34
34
  }
35
35
  function s(e, i) {
36
36
  let a = e.filter((e) => e.role === "user" && e.text.trim()).map((e) => e.text);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.904.24",
3
+ "version": "2026.904.26",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "bin": {