@kelet-ai/feedback-ui 1.1.3 → 1.2.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.
@@ -443,7 +443,7 @@ const useKelet = () => {
443
443
  }
444
444
  return context;
445
445
  };
446
- const useDefaultFeedbackHandler = () => {
446
+ const useKeletSignal = () => {
447
447
  const context = useContext(KeletContext);
448
448
  if (!context) {
449
449
  console.warn(
@@ -455,6 +455,7 @@ const useDefaultFeedbackHandler = () => {
455
455
  return context.feedback;
456
456
  }
457
457
  };
458
+ const useDefaultFeedbackHandler = useKeletSignal;
458
459
  const KeletProvider = ({ apiKey, project, baseUrl, children }) => {
459
460
  useEffect(() => {
460
461
  initEventCapture();
@@ -477,18 +478,20 @@ const KeletProvider = ({ apiKey, project, baseUrl, children }) => {
477
478
  const url = `${resolvedBaseUrl}/api/projects/${project}/signal`;
478
479
  const capturedEvent = getLatestEvent();
479
480
  const metadata = {
480
- ...data.extra_metadata ?? {},
481
+ ...data.metadata ?? {},
481
482
  ...capturedEvent && { $dom_event: capturedEvent }
482
483
  };
483
484
  const req = {
484
485
  session_id: data.session_id,
485
- source: data.source || "EXPLICIT",
486
- vote: data.vote,
487
- explanation: data.explanation,
488
- correction: data.correction,
489
- selection: data.selection,
486
+ kind: data.kind,
487
+ source: data.source,
490
488
  trigger_name: data.trigger_name,
491
- metadata: Object.keys(metadata).length > 0 ? metadata : void 0
489
+ score: data.score,
490
+ value: data.value,
491
+ confidence: data.confidence,
492
+ metadata: Object.keys(metadata).length > 0 ? metadata : void 0,
493
+ timestamp: data.timestamp || (/* @__PURE__ */ new Date()).toISOString(),
494
+ trace_id: data.trace_id
492
495
  };
493
496
  const response = await fetch(url, {
494
497
  method: "POST",
@@ -534,9 +537,7 @@ const mergeProps = (slotProps, childProps) => {
534
537
  }
535
538
  return { ...slotProps, ...overrideProps };
536
539
  };
537
- const VoteFeedbackContext = createContext(
538
- null
539
- );
540
+ const VoteFeedbackContext = createContext(null);
540
541
  const useVoteFeedbackContext = () => {
541
542
  const context = useContext(VoteFeedbackContext);
542
543
  if (!context) {
@@ -551,10 +552,12 @@ const VoteFeedbackRoot = ({
551
552
  onFeedback,
552
553
  defaultText = "",
553
554
  session_id: sessionIdProp,
554
- extra_metadata,
555
- trigger_name
555
+ metadata,
556
+ trigger_name: triggerProp,
557
+ trace_id
556
558
  }) => {
557
559
  const session_id = typeof sessionIdProp === "function" ? sessionIdProp() : sessionIdProp;
560
+ const trigger_name = triggerProp || void 0;
558
561
  const [showPopover, setShowPopover] = useState(false);
559
562
  const [feedbackText, setFeedbackText] = useState(defaultText);
560
563
  const [isSubmitting, setIsSubmitting] = useState(false);
@@ -576,9 +579,12 @@ const VoteFeedbackRoot = ({
576
579
  setVote("upvote");
577
580
  const data = {
578
581
  session_id,
579
- vote: "upvote",
580
- ...extra_metadata && { extra_metadata },
581
- ...trigger_name && { trigger_name }
582
+ kind: "feedback",
583
+ source: "human",
584
+ trigger_name,
585
+ score: 1,
586
+ ...metadata && { metadata },
587
+ ...trace_id && { trace_id }
582
588
  };
583
589
  try {
584
590
  setIsSubmitting(true);
@@ -586,15 +592,18 @@ const VoteFeedbackRoot = ({
586
592
  } finally {
587
593
  setIsSubmitting(false);
588
594
  }
589
- }, [handler, session_id, extra_metadata, trigger_name]);
595
+ }, [handler, session_id, metadata, trigger_name, trace_id]);
590
596
  const handleDownvote = useCallback(async () => {
591
597
  setVote("downvote");
592
598
  if (handler) {
593
599
  const data = {
594
600
  session_id,
595
- vote: "downvote",
596
- ...extra_metadata && { extra_metadata },
597
- ...trigger_name && { trigger_name }
601
+ kind: "feedback",
602
+ source: "human",
603
+ trigger_name,
604
+ score: 0,
605
+ ...metadata && { metadata },
606
+ ...trace_id && { trace_id }
598
607
  };
599
608
  try {
600
609
  setIsSubmitting(true);
@@ -614,7 +623,7 @@ const VoteFeedbackRoot = ({
614
623
  document.body.appendChild(announcement);
615
624
  setTimeout(() => document.body.removeChild(announcement), 1e3);
616
625
  }, 0);
617
- }, [handler, session_id, extra_metadata, trigger_name]);
626
+ }, [handler, session_id, metadata, trigger_name, trace_id]);
618
627
  const handleTextareaChange = useCallback(
619
628
  (e) => {
620
629
  setFeedbackText(e.target.value);
@@ -626,10 +635,13 @@ const VoteFeedbackRoot = ({
626
635
  if (hasText) {
627
636
  const data = {
628
637
  session_id,
629
- vote: "downvote",
630
- explanation: feedbackText,
631
- ...extra_metadata && { extra_metadata },
632
- ...trigger_name && { trigger_name }
638
+ kind: "feedback",
639
+ source: "human",
640
+ trigger_name,
641
+ score: 0,
642
+ value: feedbackText,
643
+ ...metadata && { metadata },
644
+ ...trace_id && { trace_id }
633
645
  };
634
646
  try {
635
647
  setIsSubmitting(true);
@@ -654,8 +666,9 @@ const VoteFeedbackRoot = ({
654
666
  feedbackText,
655
667
  defaultText,
656
668
  session_id,
657
- extra_metadata,
658
- trigger_name
669
+ metadata,
670
+ trigger_name,
671
+ trace_id
659
672
  ]);
660
673
  const handleKeyDown = useCallback(
661
674
  (e) => {
@@ -706,8 +719,9 @@ const VoteFeedbackRoot = ({
706
719
  popoverId,
707
720
  triggerId,
708
721
  session_id,
709
- extra_metadata,
710
- trigger_name
722
+ metadata,
723
+ trigger_name,
724
+ trace_id
711
725
  };
712
726
  return /* @__PURE__ */ jsxRuntimeExports.jsx(VoteFeedbackContext.Provider, { value: contextValue, children });
713
727
  };
@@ -1343,223 +1357,6 @@ function requireDeepDiff() {
1343
1357
  return deepDiff$1.exports;
1344
1358
  }
1345
1359
  var deepDiffExports = requireDeepDiff();
1346
- var levenshtein$1 = { exports: {} };
1347
- const peq = new Uint32Array(65536);
1348
- const myers_32 = (a, b) => {
1349
- const n = a.length;
1350
- const m = b.length;
1351
- const lst = 1 << n - 1;
1352
- let pv = -1;
1353
- let mv = 0;
1354
- let sc = n;
1355
- let i = n;
1356
- while (i--) {
1357
- peq[a.charCodeAt(i)] |= 1 << i;
1358
- }
1359
- for (i = 0; i < m; i++) {
1360
- let eq = peq[b.charCodeAt(i)];
1361
- const xv = eq | mv;
1362
- eq |= (eq & pv) + pv ^ pv;
1363
- mv |= ~(eq | pv);
1364
- pv &= eq;
1365
- if (mv & lst) {
1366
- sc++;
1367
- }
1368
- if (pv & lst) {
1369
- sc--;
1370
- }
1371
- mv = mv << 1 | 1;
1372
- pv = pv << 1 | ~(xv | mv);
1373
- mv &= xv;
1374
- }
1375
- i = n;
1376
- while (i--) {
1377
- peq[a.charCodeAt(i)] = 0;
1378
- }
1379
- return sc;
1380
- };
1381
- const myers_x = (b, a) => {
1382
- const n = a.length;
1383
- const m = b.length;
1384
- const mhc = [];
1385
- const phc = [];
1386
- const hsize = Math.ceil(n / 32);
1387
- const vsize = Math.ceil(m / 32);
1388
- for (let i = 0; i < hsize; i++) {
1389
- phc[i] = -1;
1390
- mhc[i] = 0;
1391
- }
1392
- let j = 0;
1393
- for (; j < vsize - 1; j++) {
1394
- let mv2 = 0;
1395
- let pv2 = -1;
1396
- const start2 = j * 32;
1397
- const vlen2 = Math.min(32, m) + start2;
1398
- for (let k = start2; k < vlen2; k++) {
1399
- peq[b.charCodeAt(k)] |= 1 << k;
1400
- }
1401
- for (let i = 0; i < n; i++) {
1402
- const eq = peq[a.charCodeAt(i)];
1403
- const pb = phc[i / 32 | 0] >>> i & 1;
1404
- const mb = mhc[i / 32 | 0] >>> i & 1;
1405
- const xv = eq | mv2;
1406
- const xh = ((eq | mb) & pv2) + pv2 ^ pv2 | eq | mb;
1407
- let ph = mv2 | ~(xh | pv2);
1408
- let mh = pv2 & xh;
1409
- if (ph >>> 31 ^ pb) {
1410
- phc[i / 32 | 0] ^= 1 << i;
1411
- }
1412
- if (mh >>> 31 ^ mb) {
1413
- mhc[i / 32 | 0] ^= 1 << i;
1414
- }
1415
- ph = ph << 1 | pb;
1416
- mh = mh << 1 | mb;
1417
- pv2 = mh | ~(xv | ph);
1418
- mv2 = ph & xv;
1419
- }
1420
- for (let k = start2; k < vlen2; k++) {
1421
- peq[b.charCodeAt(k)] = 0;
1422
- }
1423
- }
1424
- let mv = 0;
1425
- let pv = -1;
1426
- const start = j * 32;
1427
- const vlen = Math.min(32, m - start) + start;
1428
- for (let k = start; k < vlen; k++) {
1429
- peq[b.charCodeAt(k)] |= 1 << k;
1430
- }
1431
- let score = m;
1432
- for (let i = 0; i < n; i++) {
1433
- const eq = peq[a.charCodeAt(i)];
1434
- const pb = phc[i / 32 | 0] >>> i & 1;
1435
- const mb = mhc[i / 32 | 0] >>> i & 1;
1436
- const xv = eq | mv;
1437
- const xh = ((eq | mb) & pv) + pv ^ pv | eq | mb;
1438
- let ph = mv | ~(xh | pv);
1439
- let mh = pv & xh;
1440
- score += ph >>> m - 1 & 1;
1441
- score -= mh >>> m - 1 & 1;
1442
- if (ph >>> 31 ^ pb) {
1443
- phc[i / 32 | 0] ^= 1 << i;
1444
- }
1445
- if (mh >>> 31 ^ mb) {
1446
- mhc[i / 32 | 0] ^= 1 << i;
1447
- }
1448
- ph = ph << 1 | pb;
1449
- mh = mh << 1 | mb;
1450
- pv = mh | ~(xv | ph);
1451
- mv = ph & xv;
1452
- }
1453
- for (let k = start; k < vlen; k++) {
1454
- peq[b.charCodeAt(k)] = 0;
1455
- }
1456
- return score;
1457
- };
1458
- const distance = (a, b) => {
1459
- if (a.length < b.length) {
1460
- const tmp = b;
1461
- b = a;
1462
- a = tmp;
1463
- }
1464
- if (b.length === 0) {
1465
- return a.length;
1466
- }
1467
- if (a.length <= 32) {
1468
- return myers_32(a, b);
1469
- }
1470
- return myers_x(a, b);
1471
- };
1472
- const closest = (str, arr) => {
1473
- let min_distance = Infinity;
1474
- let min_index = 0;
1475
- for (let i = 0; i < arr.length; i++) {
1476
- const dist = distance(str, arr[i]);
1477
- if (dist < min_distance) {
1478
- min_distance = dist;
1479
- min_index = i;
1480
- }
1481
- }
1482
- return arr[min_index];
1483
- };
1484
- const mod = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1485
- __proto__: null,
1486
- closest,
1487
- distance
1488
- }, Symbol.toStringTag, { value: "Module" }));
1489
- const require$$0 = /* @__PURE__ */ getAugmentedNamespace(mod);
1490
- var hasRequiredLevenshtein;
1491
- function requireLevenshtein() {
1492
- if (hasRequiredLevenshtein) return levenshtein$1.exports;
1493
- hasRequiredLevenshtein = 1;
1494
- (function(module, exports) {
1495
- (function() {
1496
- var collator;
1497
- try {
1498
- collator = typeof Intl !== "undefined" && typeof Intl.Collator !== "undefined" ? Intl.Collator("generic", { sensitivity: "base" }) : null;
1499
- } catch (err) {
1500
- console.log("Collator could not be initialized and wouldn't be used");
1501
- }
1502
- var levenshtein2 = require$$0;
1503
- var prevRow = [], str2Char = [];
1504
- var Levenshtein = {
1505
- /**
1506
- * Calculate levenshtein distance of the two strings.
1507
- *
1508
- * @param str1 String the first string.
1509
- * @param str2 String the second string.
1510
- * @param [options] Additional options.
1511
- * @param [options.useCollator] Use `Intl.Collator` for locale-sensitive string comparison.
1512
- * @return Integer the levenshtein distance (0 and above).
1513
- */
1514
- get: function(str1, str2, options) {
1515
- var useCollator = options && collator && options.useCollator;
1516
- if (useCollator) {
1517
- var str1Len = str1.length, str2Len = str2.length;
1518
- if (str1Len === 0) return str2Len;
1519
- if (str2Len === 0) return str1Len;
1520
- var curCol, nextCol, i, j, tmp;
1521
- for (i = 0; i < str2Len; ++i) {
1522
- prevRow[i] = i;
1523
- str2Char[i] = str2.charCodeAt(i);
1524
- }
1525
- prevRow[str2Len] = str2Len;
1526
- var strCmp;
1527
- for (i = 0; i < str1Len; ++i) {
1528
- nextCol = i + 1;
1529
- for (j = 0; j < str2Len; ++j) {
1530
- curCol = nextCol;
1531
- strCmp = 0 === collator.compare(str1.charAt(i), String.fromCharCode(str2Char[j]));
1532
- nextCol = prevRow[j] + (strCmp ? 0 : 1);
1533
- tmp = curCol + 1;
1534
- if (nextCol > tmp) {
1535
- nextCol = tmp;
1536
- }
1537
- tmp = prevRow[j + 1] + 1;
1538
- if (nextCol > tmp) {
1539
- nextCol = tmp;
1540
- }
1541
- prevRow[j] = curCol;
1542
- }
1543
- prevRow[j] = nextCol;
1544
- }
1545
- return nextCol;
1546
- }
1547
- return levenshtein2.distance(str1, str2);
1548
- }
1549
- };
1550
- if (module !== null && true && module.exports === exports) {
1551
- module.exports = Levenshtein;
1552
- } else if (typeof self !== "undefined" && typeof self.postMessage === "function" && typeof self.importScripts === "function") {
1553
- self.Levenshtein = Levenshtein;
1554
- } else if (typeof window !== "undefined" && window !== null) {
1555
- window.Levenshtein = Levenshtein;
1556
- }
1557
- })();
1558
- })(levenshtein$1, levenshtein$1.exports);
1559
- return levenshtein$1.exports;
1560
- }
1561
- var levenshteinExports = requireLevenshtein();
1562
- const levenshtein = /* @__PURE__ */ getDefaultExportFromCjs(levenshteinExports);
1563
1360
  class Diff {
1564
1361
  diff(oldStr, newStr, options = {}) {
1565
1362
  let callback;
@@ -1969,6 +1766,223 @@ function splitLines(text) {
1969
1766
  }
1970
1767
  return result;
1971
1768
  }
1769
+ var levenshtein$1 = { exports: {} };
1770
+ const peq = new Uint32Array(65536);
1771
+ const myers_32 = (a, b) => {
1772
+ const n = a.length;
1773
+ const m = b.length;
1774
+ const lst = 1 << n - 1;
1775
+ let pv = -1;
1776
+ let mv = 0;
1777
+ let sc = n;
1778
+ let i = n;
1779
+ while (i--) {
1780
+ peq[a.charCodeAt(i)] |= 1 << i;
1781
+ }
1782
+ for (i = 0; i < m; i++) {
1783
+ let eq = peq[b.charCodeAt(i)];
1784
+ const xv = eq | mv;
1785
+ eq |= (eq & pv) + pv ^ pv;
1786
+ mv |= ~(eq | pv);
1787
+ pv &= eq;
1788
+ if (mv & lst) {
1789
+ sc++;
1790
+ }
1791
+ if (pv & lst) {
1792
+ sc--;
1793
+ }
1794
+ mv = mv << 1 | 1;
1795
+ pv = pv << 1 | ~(xv | mv);
1796
+ mv &= xv;
1797
+ }
1798
+ i = n;
1799
+ while (i--) {
1800
+ peq[a.charCodeAt(i)] = 0;
1801
+ }
1802
+ return sc;
1803
+ };
1804
+ const myers_x = (b, a) => {
1805
+ const n = a.length;
1806
+ const m = b.length;
1807
+ const mhc = [];
1808
+ const phc = [];
1809
+ const hsize = Math.ceil(n / 32);
1810
+ const vsize = Math.ceil(m / 32);
1811
+ for (let i = 0; i < hsize; i++) {
1812
+ phc[i] = -1;
1813
+ mhc[i] = 0;
1814
+ }
1815
+ let j = 0;
1816
+ for (; j < vsize - 1; j++) {
1817
+ let mv2 = 0;
1818
+ let pv2 = -1;
1819
+ const start2 = j * 32;
1820
+ const vlen2 = Math.min(32, m) + start2;
1821
+ for (let k = start2; k < vlen2; k++) {
1822
+ peq[b.charCodeAt(k)] |= 1 << k;
1823
+ }
1824
+ for (let i = 0; i < n; i++) {
1825
+ const eq = peq[a.charCodeAt(i)];
1826
+ const pb = phc[i / 32 | 0] >>> i & 1;
1827
+ const mb = mhc[i / 32 | 0] >>> i & 1;
1828
+ const xv = eq | mv2;
1829
+ const xh = ((eq | mb) & pv2) + pv2 ^ pv2 | eq | mb;
1830
+ let ph = mv2 | ~(xh | pv2);
1831
+ let mh = pv2 & xh;
1832
+ if (ph >>> 31 ^ pb) {
1833
+ phc[i / 32 | 0] ^= 1 << i;
1834
+ }
1835
+ if (mh >>> 31 ^ mb) {
1836
+ mhc[i / 32 | 0] ^= 1 << i;
1837
+ }
1838
+ ph = ph << 1 | pb;
1839
+ mh = mh << 1 | mb;
1840
+ pv2 = mh | ~(xv | ph);
1841
+ mv2 = ph & xv;
1842
+ }
1843
+ for (let k = start2; k < vlen2; k++) {
1844
+ peq[b.charCodeAt(k)] = 0;
1845
+ }
1846
+ }
1847
+ let mv = 0;
1848
+ let pv = -1;
1849
+ const start = j * 32;
1850
+ const vlen = Math.min(32, m - start) + start;
1851
+ for (let k = start; k < vlen; k++) {
1852
+ peq[b.charCodeAt(k)] |= 1 << k;
1853
+ }
1854
+ let score = m;
1855
+ for (let i = 0; i < n; i++) {
1856
+ const eq = peq[a.charCodeAt(i)];
1857
+ const pb = phc[i / 32 | 0] >>> i & 1;
1858
+ const mb = mhc[i / 32 | 0] >>> i & 1;
1859
+ const xv = eq | mv;
1860
+ const xh = ((eq | mb) & pv) + pv ^ pv | eq | mb;
1861
+ let ph = mv | ~(xh | pv);
1862
+ let mh = pv & xh;
1863
+ score += ph >>> m - 1 & 1;
1864
+ score -= mh >>> m - 1 & 1;
1865
+ if (ph >>> 31 ^ pb) {
1866
+ phc[i / 32 | 0] ^= 1 << i;
1867
+ }
1868
+ if (mh >>> 31 ^ mb) {
1869
+ mhc[i / 32 | 0] ^= 1 << i;
1870
+ }
1871
+ ph = ph << 1 | pb;
1872
+ mh = mh << 1 | mb;
1873
+ pv = mh | ~(xv | ph);
1874
+ mv = ph & xv;
1875
+ }
1876
+ for (let k = start; k < vlen; k++) {
1877
+ peq[b.charCodeAt(k)] = 0;
1878
+ }
1879
+ return score;
1880
+ };
1881
+ const distance = (a, b) => {
1882
+ if (a.length < b.length) {
1883
+ const tmp = b;
1884
+ b = a;
1885
+ a = tmp;
1886
+ }
1887
+ if (b.length === 0) {
1888
+ return a.length;
1889
+ }
1890
+ if (a.length <= 32) {
1891
+ return myers_32(a, b);
1892
+ }
1893
+ return myers_x(a, b);
1894
+ };
1895
+ const closest = (str, arr) => {
1896
+ let min_distance = Infinity;
1897
+ let min_index = 0;
1898
+ for (let i = 0; i < arr.length; i++) {
1899
+ const dist = distance(str, arr[i]);
1900
+ if (dist < min_distance) {
1901
+ min_distance = dist;
1902
+ min_index = i;
1903
+ }
1904
+ }
1905
+ return arr[min_index];
1906
+ };
1907
+ const mod = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1908
+ __proto__: null,
1909
+ closest,
1910
+ distance
1911
+ }, Symbol.toStringTag, { value: "Module" }));
1912
+ const require$$0 = /* @__PURE__ */ getAugmentedNamespace(mod);
1913
+ var hasRequiredLevenshtein;
1914
+ function requireLevenshtein() {
1915
+ if (hasRequiredLevenshtein) return levenshtein$1.exports;
1916
+ hasRequiredLevenshtein = 1;
1917
+ (function(module, exports) {
1918
+ (function() {
1919
+ var collator;
1920
+ try {
1921
+ collator = typeof Intl !== "undefined" && typeof Intl.Collator !== "undefined" ? Intl.Collator("generic", { sensitivity: "base" }) : null;
1922
+ } catch (err) {
1923
+ console.log("Collator could not be initialized and wouldn't be used");
1924
+ }
1925
+ var levenshtein2 = require$$0;
1926
+ var prevRow = [], str2Char = [];
1927
+ var Levenshtein = {
1928
+ /**
1929
+ * Calculate levenshtein distance of the two strings.
1930
+ *
1931
+ * @param str1 String the first string.
1932
+ * @param str2 String the second string.
1933
+ * @param [options] Additional options.
1934
+ * @param [options.useCollator] Use `Intl.Collator` for locale-sensitive string comparison.
1935
+ * @return Integer the levenshtein distance (0 and above).
1936
+ */
1937
+ get: function(str1, str2, options) {
1938
+ var useCollator = options && collator && options.useCollator;
1939
+ if (useCollator) {
1940
+ var str1Len = str1.length, str2Len = str2.length;
1941
+ if (str1Len === 0) return str2Len;
1942
+ if (str2Len === 0) return str1Len;
1943
+ var curCol, nextCol, i, j, tmp;
1944
+ for (i = 0; i < str2Len; ++i) {
1945
+ prevRow[i] = i;
1946
+ str2Char[i] = str2.charCodeAt(i);
1947
+ }
1948
+ prevRow[str2Len] = str2Len;
1949
+ var strCmp;
1950
+ for (i = 0; i < str1Len; ++i) {
1951
+ nextCol = i + 1;
1952
+ for (j = 0; j < str2Len; ++j) {
1953
+ curCol = nextCol;
1954
+ strCmp = 0 === collator.compare(str1.charAt(i), String.fromCharCode(str2Char[j]));
1955
+ nextCol = prevRow[j] + (strCmp ? 0 : 1);
1956
+ tmp = curCol + 1;
1957
+ if (nextCol > tmp) {
1958
+ nextCol = tmp;
1959
+ }
1960
+ tmp = prevRow[j + 1] + 1;
1961
+ if (nextCol > tmp) {
1962
+ nextCol = tmp;
1963
+ }
1964
+ prevRow[j] = curCol;
1965
+ }
1966
+ prevRow[j] = nextCol;
1967
+ }
1968
+ return nextCol;
1969
+ }
1970
+ return levenshtein2.distance(str1, str2);
1971
+ }
1972
+ };
1973
+ if (module !== null && true && module.exports === exports) {
1974
+ module.exports = Levenshtein;
1975
+ } else if (typeof self !== "undefined" && typeof self.postMessage === "function" && typeof self.importScripts === "function") {
1976
+ self.Levenshtein = Levenshtein;
1977
+ } else if (typeof window !== "undefined" && window !== null) {
1978
+ window.Levenshtein = Levenshtein;
1979
+ }
1980
+ })();
1981
+ })(levenshtein$1, levenshtein$1.exports);
1982
+ return levenshtein$1.exports;
1983
+ }
1984
+ var levenshteinExports = requireLevenshtein();
1985
+ const levenshtein = /* @__PURE__ */ getDefaultExportFromCjs(levenshteinExports);
1972
1986
  function formatDiff(oldValue, newValue, diffType = "git", context = 1) {
1973
1987
  switch (diffType) {
1974
1988
  case "git":
@@ -2145,25 +2159,17 @@ function useStateChangeTracking(currentState, session_id, options) {
2145
2159
  (startState, endState, triggerName) => {
2146
2160
  const diffPercentage = calculateDiffPercentage(startState, endState);
2147
2161
  const diffString = formatDiff(startState, endState, diffType);
2148
- let vote;
2149
- if (options?.vote) {
2150
- if (typeof options.vote === "function") {
2151
- vote = options.vote(startState, endState, diffPercentage);
2152
- } else {
2153
- vote = options.vote;
2154
- }
2155
- } else {
2156
- vote = diffPercentage > 0.5 ? "downvote" : "upvote";
2157
- }
2162
+ const score = typeof options?.score === "function" ? options.score(startState, endState, diffPercentage) : options?.score ?? (diffPercentage > 0.5 ? 0 : 1);
2158
2163
  const idString = typeof session_id === "function" ? session_id(endState) : session_id;
2159
2164
  feedbackHandler({
2160
2165
  session_id: idString,
2161
- vote,
2162
- explanation: `State change with diff percentage: ${(diffPercentage * 100).toFixed(1)}%`,
2163
- correction: diffString,
2164
- source: "IMPLICIT",
2165
- extra_metadata: options?.metadata,
2166
- trigger_name: triggerName
2166
+ kind: "edit",
2167
+ source: "human",
2168
+ trigger_name: triggerName,
2169
+ score,
2170
+ value: diffString,
2171
+ confidence: diffPercentage,
2172
+ metadata: options?.metadata
2167
2173
  });
2168
2174
  },
2169
2175
  [options, session_id, diffType, feedbackHandler]
@@ -2270,6 +2276,7 @@ export {
2270
2276
  VoteFeedback,
2271
2277
  useDefaultFeedbackHandler,
2272
2278
  useFeedbackState,
2273
- useKelet
2279
+ useKelet,
2280
+ useKeletSignal
2274
2281
  };
2275
2282
  //# sourceMappingURL=feedback-ui.es.js.map