@kelet-ai/feedback-ui 1.1.3 → 1.1.4

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.
@@ -477,18 +477,20 @@ const KeletProvider = ({ apiKey, project, baseUrl, children }) => {
477
477
  const url = `${resolvedBaseUrl}/api/projects/${project}/signal`;
478
478
  const capturedEvent = getLatestEvent();
479
479
  const metadata = {
480
- ...data.extra_metadata ?? {},
480
+ ...data.metadata ?? {},
481
481
  ...capturedEvent && { $dom_event: capturedEvent }
482
482
  };
483
483
  const req = {
484
484
  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,
485
+ kind: data.kind,
486
+ source: data.source,
490
487
  trigger_name: data.trigger_name,
491
- metadata: Object.keys(metadata).length > 0 ? metadata : void 0
488
+ score: data.score,
489
+ value: data.value,
490
+ confidence: data.confidence,
491
+ metadata: Object.keys(metadata).length > 0 ? metadata : void 0,
492
+ timestamp: data.timestamp || (/* @__PURE__ */ new Date()).toISOString(),
493
+ trace_id: data.trace_id
492
494
  };
493
495
  const response = await fetch(url, {
494
496
  method: "POST",
@@ -534,9 +536,7 @@ const mergeProps = (slotProps, childProps) => {
534
536
  }
535
537
  return { ...slotProps, ...overrideProps };
536
538
  };
537
- const VoteFeedbackContext = createContext(
538
- null
539
- );
539
+ const VoteFeedbackContext = createContext(null);
540
540
  const useVoteFeedbackContext = () => {
541
541
  const context = useContext(VoteFeedbackContext);
542
542
  if (!context) {
@@ -551,10 +551,12 @@ const VoteFeedbackRoot = ({
551
551
  onFeedback,
552
552
  defaultText = "",
553
553
  session_id: sessionIdProp,
554
- extra_metadata,
555
- trigger_name
554
+ metadata,
555
+ trigger_name: triggerProp,
556
+ trace_id
556
557
  }) => {
557
558
  const session_id = typeof sessionIdProp === "function" ? sessionIdProp() : sessionIdProp;
559
+ const trigger_name = triggerProp || void 0;
558
560
  const [showPopover, setShowPopover] = useState(false);
559
561
  const [feedbackText, setFeedbackText] = useState(defaultText);
560
562
  const [isSubmitting, setIsSubmitting] = useState(false);
@@ -576,9 +578,12 @@ const VoteFeedbackRoot = ({
576
578
  setVote("upvote");
577
579
  const data = {
578
580
  session_id,
579
- vote: "upvote",
580
- ...extra_metadata && { extra_metadata },
581
- ...trigger_name && { trigger_name }
581
+ kind: "feedback",
582
+ source: "human",
583
+ trigger_name,
584
+ score: 1,
585
+ ...metadata && { metadata },
586
+ ...trace_id && { trace_id }
582
587
  };
583
588
  try {
584
589
  setIsSubmitting(true);
@@ -586,15 +591,18 @@ const VoteFeedbackRoot = ({
586
591
  } finally {
587
592
  setIsSubmitting(false);
588
593
  }
589
- }, [handler, session_id, extra_metadata, trigger_name]);
594
+ }, [handler, session_id, metadata, trigger_name, trace_id]);
590
595
  const handleDownvote = useCallback(async () => {
591
596
  setVote("downvote");
592
597
  if (handler) {
593
598
  const data = {
594
599
  session_id,
595
- vote: "downvote",
596
- ...extra_metadata && { extra_metadata },
597
- ...trigger_name && { trigger_name }
600
+ kind: "feedback",
601
+ source: "human",
602
+ trigger_name,
603
+ score: 0,
604
+ ...metadata && { metadata },
605
+ ...trace_id && { trace_id }
598
606
  };
599
607
  try {
600
608
  setIsSubmitting(true);
@@ -614,7 +622,7 @@ const VoteFeedbackRoot = ({
614
622
  document.body.appendChild(announcement);
615
623
  setTimeout(() => document.body.removeChild(announcement), 1e3);
616
624
  }, 0);
617
- }, [handler, session_id, extra_metadata, trigger_name]);
625
+ }, [handler, session_id, metadata, trigger_name, trace_id]);
618
626
  const handleTextareaChange = useCallback(
619
627
  (e) => {
620
628
  setFeedbackText(e.target.value);
@@ -626,10 +634,13 @@ const VoteFeedbackRoot = ({
626
634
  if (hasText) {
627
635
  const data = {
628
636
  session_id,
629
- vote: "downvote",
630
- explanation: feedbackText,
631
- ...extra_metadata && { extra_metadata },
632
- ...trigger_name && { trigger_name }
637
+ kind: "feedback",
638
+ source: "human",
639
+ trigger_name,
640
+ score: 0,
641
+ value: feedbackText,
642
+ ...metadata && { metadata },
643
+ ...trace_id && { trace_id }
633
644
  };
634
645
  try {
635
646
  setIsSubmitting(true);
@@ -654,8 +665,9 @@ const VoteFeedbackRoot = ({
654
665
  feedbackText,
655
666
  defaultText,
656
667
  session_id,
657
- extra_metadata,
658
- trigger_name
668
+ metadata,
669
+ trigger_name,
670
+ trace_id
659
671
  ]);
660
672
  const handleKeyDown = useCallback(
661
673
  (e) => {
@@ -706,8 +718,9 @@ const VoteFeedbackRoot = ({
706
718
  popoverId,
707
719
  triggerId,
708
720
  session_id,
709
- extra_metadata,
710
- trigger_name
721
+ metadata,
722
+ trigger_name,
723
+ trace_id
711
724
  };
712
725
  return /* @__PURE__ */ jsxRuntimeExports.jsx(VoteFeedbackContext.Provider, { value: contextValue, children });
713
726
  };
@@ -1343,223 +1356,6 @@ function requireDeepDiff() {
1343
1356
  return deepDiff$1.exports;
1344
1357
  }
1345
1358
  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
1359
  class Diff {
1564
1360
  diff(oldStr, newStr, options = {}) {
1565
1361
  let callback;
@@ -1969,6 +1765,223 @@ function splitLines(text) {
1969
1765
  }
1970
1766
  return result;
1971
1767
  }
1768
+ var levenshtein$1 = { exports: {} };
1769
+ const peq = new Uint32Array(65536);
1770
+ const myers_32 = (a, b) => {
1771
+ const n = a.length;
1772
+ const m = b.length;
1773
+ const lst = 1 << n - 1;
1774
+ let pv = -1;
1775
+ let mv = 0;
1776
+ let sc = n;
1777
+ let i = n;
1778
+ while (i--) {
1779
+ peq[a.charCodeAt(i)] |= 1 << i;
1780
+ }
1781
+ for (i = 0; i < m; i++) {
1782
+ let eq = peq[b.charCodeAt(i)];
1783
+ const xv = eq | mv;
1784
+ eq |= (eq & pv) + pv ^ pv;
1785
+ mv |= ~(eq | pv);
1786
+ pv &= eq;
1787
+ if (mv & lst) {
1788
+ sc++;
1789
+ }
1790
+ if (pv & lst) {
1791
+ sc--;
1792
+ }
1793
+ mv = mv << 1 | 1;
1794
+ pv = pv << 1 | ~(xv | mv);
1795
+ mv &= xv;
1796
+ }
1797
+ i = n;
1798
+ while (i--) {
1799
+ peq[a.charCodeAt(i)] = 0;
1800
+ }
1801
+ return sc;
1802
+ };
1803
+ const myers_x = (b, a) => {
1804
+ const n = a.length;
1805
+ const m = b.length;
1806
+ const mhc = [];
1807
+ const phc = [];
1808
+ const hsize = Math.ceil(n / 32);
1809
+ const vsize = Math.ceil(m / 32);
1810
+ for (let i = 0; i < hsize; i++) {
1811
+ phc[i] = -1;
1812
+ mhc[i] = 0;
1813
+ }
1814
+ let j = 0;
1815
+ for (; j < vsize - 1; j++) {
1816
+ let mv2 = 0;
1817
+ let pv2 = -1;
1818
+ const start2 = j * 32;
1819
+ const vlen2 = Math.min(32, m) + start2;
1820
+ for (let k = start2; k < vlen2; k++) {
1821
+ peq[b.charCodeAt(k)] |= 1 << k;
1822
+ }
1823
+ for (let i = 0; i < n; i++) {
1824
+ const eq = peq[a.charCodeAt(i)];
1825
+ const pb = phc[i / 32 | 0] >>> i & 1;
1826
+ const mb = mhc[i / 32 | 0] >>> i & 1;
1827
+ const xv = eq | mv2;
1828
+ const xh = ((eq | mb) & pv2) + pv2 ^ pv2 | eq | mb;
1829
+ let ph = mv2 | ~(xh | pv2);
1830
+ let mh = pv2 & xh;
1831
+ if (ph >>> 31 ^ pb) {
1832
+ phc[i / 32 | 0] ^= 1 << i;
1833
+ }
1834
+ if (mh >>> 31 ^ mb) {
1835
+ mhc[i / 32 | 0] ^= 1 << i;
1836
+ }
1837
+ ph = ph << 1 | pb;
1838
+ mh = mh << 1 | mb;
1839
+ pv2 = mh | ~(xv | ph);
1840
+ mv2 = ph & xv;
1841
+ }
1842
+ for (let k = start2; k < vlen2; k++) {
1843
+ peq[b.charCodeAt(k)] = 0;
1844
+ }
1845
+ }
1846
+ let mv = 0;
1847
+ let pv = -1;
1848
+ const start = j * 32;
1849
+ const vlen = Math.min(32, m - start) + start;
1850
+ for (let k = start; k < vlen; k++) {
1851
+ peq[b.charCodeAt(k)] |= 1 << k;
1852
+ }
1853
+ let score = m;
1854
+ for (let i = 0; i < n; i++) {
1855
+ const eq = peq[a.charCodeAt(i)];
1856
+ const pb = phc[i / 32 | 0] >>> i & 1;
1857
+ const mb = mhc[i / 32 | 0] >>> i & 1;
1858
+ const xv = eq | mv;
1859
+ const xh = ((eq | mb) & pv) + pv ^ pv | eq | mb;
1860
+ let ph = mv | ~(xh | pv);
1861
+ let mh = pv & xh;
1862
+ score += ph >>> m - 1 & 1;
1863
+ score -= mh >>> m - 1 & 1;
1864
+ if (ph >>> 31 ^ pb) {
1865
+ phc[i / 32 | 0] ^= 1 << i;
1866
+ }
1867
+ if (mh >>> 31 ^ mb) {
1868
+ mhc[i / 32 | 0] ^= 1 << i;
1869
+ }
1870
+ ph = ph << 1 | pb;
1871
+ mh = mh << 1 | mb;
1872
+ pv = mh | ~(xv | ph);
1873
+ mv = ph & xv;
1874
+ }
1875
+ for (let k = start; k < vlen; k++) {
1876
+ peq[b.charCodeAt(k)] = 0;
1877
+ }
1878
+ return score;
1879
+ };
1880
+ const distance = (a, b) => {
1881
+ if (a.length < b.length) {
1882
+ const tmp = b;
1883
+ b = a;
1884
+ a = tmp;
1885
+ }
1886
+ if (b.length === 0) {
1887
+ return a.length;
1888
+ }
1889
+ if (a.length <= 32) {
1890
+ return myers_32(a, b);
1891
+ }
1892
+ return myers_x(a, b);
1893
+ };
1894
+ const closest = (str, arr) => {
1895
+ let min_distance = Infinity;
1896
+ let min_index = 0;
1897
+ for (let i = 0; i < arr.length; i++) {
1898
+ const dist = distance(str, arr[i]);
1899
+ if (dist < min_distance) {
1900
+ min_distance = dist;
1901
+ min_index = i;
1902
+ }
1903
+ }
1904
+ return arr[min_index];
1905
+ };
1906
+ const mod = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1907
+ __proto__: null,
1908
+ closest,
1909
+ distance
1910
+ }, Symbol.toStringTag, { value: "Module" }));
1911
+ const require$$0 = /* @__PURE__ */ getAugmentedNamespace(mod);
1912
+ var hasRequiredLevenshtein;
1913
+ function requireLevenshtein() {
1914
+ if (hasRequiredLevenshtein) return levenshtein$1.exports;
1915
+ hasRequiredLevenshtein = 1;
1916
+ (function(module, exports) {
1917
+ (function() {
1918
+ var collator;
1919
+ try {
1920
+ collator = typeof Intl !== "undefined" && typeof Intl.Collator !== "undefined" ? Intl.Collator("generic", { sensitivity: "base" }) : null;
1921
+ } catch (err) {
1922
+ console.log("Collator could not be initialized and wouldn't be used");
1923
+ }
1924
+ var levenshtein2 = require$$0;
1925
+ var prevRow = [], str2Char = [];
1926
+ var Levenshtein = {
1927
+ /**
1928
+ * Calculate levenshtein distance of the two strings.
1929
+ *
1930
+ * @param str1 String the first string.
1931
+ * @param str2 String the second string.
1932
+ * @param [options] Additional options.
1933
+ * @param [options.useCollator] Use `Intl.Collator` for locale-sensitive string comparison.
1934
+ * @return Integer the levenshtein distance (0 and above).
1935
+ */
1936
+ get: function(str1, str2, options) {
1937
+ var useCollator = options && collator && options.useCollator;
1938
+ if (useCollator) {
1939
+ var str1Len = str1.length, str2Len = str2.length;
1940
+ if (str1Len === 0) return str2Len;
1941
+ if (str2Len === 0) return str1Len;
1942
+ var curCol, nextCol, i, j, tmp;
1943
+ for (i = 0; i < str2Len; ++i) {
1944
+ prevRow[i] = i;
1945
+ str2Char[i] = str2.charCodeAt(i);
1946
+ }
1947
+ prevRow[str2Len] = str2Len;
1948
+ var strCmp;
1949
+ for (i = 0; i < str1Len; ++i) {
1950
+ nextCol = i + 1;
1951
+ for (j = 0; j < str2Len; ++j) {
1952
+ curCol = nextCol;
1953
+ strCmp = 0 === collator.compare(str1.charAt(i), String.fromCharCode(str2Char[j]));
1954
+ nextCol = prevRow[j] + (strCmp ? 0 : 1);
1955
+ tmp = curCol + 1;
1956
+ if (nextCol > tmp) {
1957
+ nextCol = tmp;
1958
+ }
1959
+ tmp = prevRow[j + 1] + 1;
1960
+ if (nextCol > tmp) {
1961
+ nextCol = tmp;
1962
+ }
1963
+ prevRow[j] = curCol;
1964
+ }
1965
+ prevRow[j] = nextCol;
1966
+ }
1967
+ return nextCol;
1968
+ }
1969
+ return levenshtein2.distance(str1, str2);
1970
+ }
1971
+ };
1972
+ if (module !== null && true && module.exports === exports) {
1973
+ module.exports = Levenshtein;
1974
+ } else if (typeof self !== "undefined" && typeof self.postMessage === "function" && typeof self.importScripts === "function") {
1975
+ self.Levenshtein = Levenshtein;
1976
+ } else if (typeof window !== "undefined" && window !== null) {
1977
+ window.Levenshtein = Levenshtein;
1978
+ }
1979
+ })();
1980
+ })(levenshtein$1, levenshtein$1.exports);
1981
+ return levenshtein$1.exports;
1982
+ }
1983
+ var levenshteinExports = requireLevenshtein();
1984
+ const levenshtein = /* @__PURE__ */ getDefaultExportFromCjs(levenshteinExports);
1972
1985
  function formatDiff(oldValue, newValue, diffType = "git", context = 1) {
1973
1986
  switch (diffType) {
1974
1987
  case "git":
@@ -2145,25 +2158,17 @@ function useStateChangeTracking(currentState, session_id, options) {
2145
2158
  (startState, endState, triggerName) => {
2146
2159
  const diffPercentage = calculateDiffPercentage(startState, endState);
2147
2160
  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
- }
2161
+ const score = typeof options?.score === "function" ? options.score(startState, endState, diffPercentage) : options?.score ?? (diffPercentage > 0.5 ? 0 : 1);
2158
2162
  const idString = typeof session_id === "function" ? session_id(endState) : session_id;
2159
2163
  feedbackHandler({
2160
2164
  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
2165
+ kind: "edit",
2166
+ source: "human",
2167
+ trigger_name: triggerName,
2168
+ score,
2169
+ value: diffString,
2170
+ confidence: diffPercentage,
2171
+ metadata: options?.metadata
2167
2172
  });
2168
2173
  },
2169
2174
  [options, session_id, diffType, feedbackHandler]