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