@lvce-editor/chat-debug-view 7.1.0 → 7.3.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.
- package/dist/chatDebugViewWorkerMain.js +124 -150
- package/package.json +1 -1
|
@@ -1524,30 +1524,6 @@ const diff2 = uid => {
|
|
|
1524
1524
|
return diff(oldState, newState);
|
|
1525
1525
|
};
|
|
1526
1526
|
|
|
1527
|
-
const getMenuIds = () => {
|
|
1528
|
-
return [555, 556, 557];
|
|
1529
|
-
};
|
|
1530
|
-
|
|
1531
|
-
const getErrorMessage = error => {
|
|
1532
|
-
if (error instanceof Error) {
|
|
1533
|
-
return error.message;
|
|
1534
|
-
}
|
|
1535
|
-
if (typeof error === 'string') {
|
|
1536
|
-
return error;
|
|
1537
|
-
}
|
|
1538
|
-
if (error && typeof error === 'object' && 'message' in error && typeof error.message === 'string') {
|
|
1539
|
-
return error.message;
|
|
1540
|
-
}
|
|
1541
|
-
return undefined;
|
|
1542
|
-
};
|
|
1543
|
-
const getFailedToLoadMessage = (sessionId, error) => {
|
|
1544
|
-
const errorMessage = getErrorMessage(error);
|
|
1545
|
-
if (errorMessage) {
|
|
1546
|
-
return `Failed to load chat debug session "${sessionId}": ${errorMessage}`;
|
|
1547
|
-
}
|
|
1548
|
-
return `Failed to load chat debug session "${sessionId}". Please try again.`;
|
|
1549
|
-
};
|
|
1550
|
-
|
|
1551
1527
|
const hasMatchingToolName = (startedEvent, finishedEvent) => {
|
|
1552
1528
|
if (typeof startedEvent.toolName === 'string' && typeof finishedEvent.toolName === 'string') {
|
|
1553
1529
|
return startedEvent.toolName === finishedEvent.toolName;
|
|
@@ -1579,29 +1555,10 @@ const getEndedTimestamp = event => {
|
|
|
1579
1555
|
return getTimestamp(event.ended) ?? getTimestamp(event.endTime) ?? getTimestamp(event.endTimestamp) ?? getTimestamp(event.timestamp);
|
|
1580
1556
|
};
|
|
1581
1557
|
|
|
1582
|
-
const eventStableIds = new WeakMap();
|
|
1583
|
-
const eventStableIdState = {
|
|
1584
|
-
nextStableEventId: 1
|
|
1585
|
-
};
|
|
1586
|
-
|
|
1587
|
-
const getOrCreateStableEventId = event => {
|
|
1588
|
-
const existingStableEventId = eventStableIds.get(event);
|
|
1589
|
-
if (existingStableEventId) {
|
|
1590
|
-
return existingStableEventId;
|
|
1591
|
-
}
|
|
1592
|
-
const stableEventId = `event-${eventStableIdState.nextStableEventId++}`;
|
|
1593
|
-
eventStableIds.set(event, stableEventId);
|
|
1594
|
-
return stableEventId;
|
|
1595
|
-
};
|
|
1596
|
-
|
|
1597
1558
|
const getStartedTimestamp = event => {
|
|
1598
1559
|
return getTimestamp(event.started) ?? getTimestamp(event.startTime) ?? getTimestamp(event.startTimestamp) ?? getTimestamp(event.timestamp);
|
|
1599
1560
|
};
|
|
1600
1561
|
|
|
1601
|
-
const setStableEventId = (event, stableEventId) => {
|
|
1602
|
-
eventStableIds.set(event, stableEventId);
|
|
1603
|
-
};
|
|
1604
|
-
|
|
1605
1562
|
const mergeToolExecutionEvents = (startedEvent, finishedEvent) => {
|
|
1606
1563
|
const ended = getEndedTimestamp(finishedEvent);
|
|
1607
1564
|
const {
|
|
@@ -1622,15 +1579,9 @@ const mergeToolExecutionEvents = (startedEvent, finishedEvent) => {
|
|
|
1622
1579
|
}),
|
|
1623
1580
|
type: mergedEventType
|
|
1624
1581
|
};
|
|
1625
|
-
const stableEventId = `${getOrCreateStableEventId(startedEvent)}:${getOrCreateStableEventId(finishedEvent)}`;
|
|
1626
|
-
setStableEventId(mergedEvent, stableEventId);
|
|
1627
1582
|
return mergedEvent;
|
|
1628
1583
|
};
|
|
1629
1584
|
|
|
1630
|
-
const getStableEventId = event => {
|
|
1631
|
-
return getOrCreateStableEventId(event);
|
|
1632
|
-
};
|
|
1633
|
-
|
|
1634
1585
|
const collapseToolExecutionEvents = events => {
|
|
1635
1586
|
const collapsedEvents = [];
|
|
1636
1587
|
for (let i = 0; i < events.length; i++) {
|
|
@@ -1715,24 +1666,6 @@ const getFilteredEvents = (events, filterValue, eventCategoryFilter, showInputEv
|
|
|
1715
1666
|
return filteredByCategory.filter(event => JSON.stringify(event).toLowerCase().includes(filterText));
|
|
1716
1667
|
};
|
|
1717
1668
|
|
|
1718
|
-
const ParseChatDebugUriErrorCode = {
|
|
1719
|
-
InvalidSessionId: 'invalid-session-id',
|
|
1720
|
-
InvalidUriEncoding: 'invalid-uri-encoding',
|
|
1721
|
-
InvalidUriFormat: 'invalid-uri-format',
|
|
1722
|
-
MissingUri: 'missing-uri'
|
|
1723
|
-
};
|
|
1724
|
-
|
|
1725
|
-
const getInvalidUriMessage = (uri, code) => {
|
|
1726
|
-
if (code === ParseChatDebugUriErrorCode.MissingUri) {
|
|
1727
|
-
return 'Unable to load debug session: missing URI. Expected format: chat-debug://<sessionId>.';
|
|
1728
|
-
}
|
|
1729
|
-
return `Unable to load debug session: invalid URI "${uri}". Expected format: chat-debug://<sessionId>.`;
|
|
1730
|
-
};
|
|
1731
|
-
|
|
1732
|
-
const getSessionNotFoundMessage = sessionId => {
|
|
1733
|
-
return `No chat session found for sessionId "${sessionId}".`;
|
|
1734
|
-
};
|
|
1735
|
-
|
|
1736
1669
|
const toTimeNumber = value => {
|
|
1737
1670
|
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
1738
1671
|
return value;
|
|
@@ -1884,6 +1817,122 @@ const getTimelineInfo = (events, startValue, endValue) => {
|
|
|
1884
1817
|
};
|
|
1885
1818
|
};
|
|
1886
1819
|
|
|
1820
|
+
const getCurrentEvents$3 = state => {
|
|
1821
|
+
const filteredEvents = getFilteredEvents(state.events, state.filterValue, state.eventCategoryFilter, state.showInputEvents, state.showResponsePartEvents, state.showEventStreamFinishedEvents);
|
|
1822
|
+
return filterEventsByTimelineRange(filteredEvents, state.timelineStartSeconds, state.timelineEndSeconds);
|
|
1823
|
+
};
|
|
1824
|
+
const selectEventAtIndex = async (state, selectedEventIndex, dependencies) => {
|
|
1825
|
+
const currentEvents = getCurrentEvents$3(state);
|
|
1826
|
+
const selectedEvent = currentEvents[selectedEventIndex];
|
|
1827
|
+
if (!selectedEvent) {
|
|
1828
|
+
return {
|
|
1829
|
+
...state,
|
|
1830
|
+
selectedEvent: null,
|
|
1831
|
+
selectedEventId: null,
|
|
1832
|
+
selectedEventIndex
|
|
1833
|
+
};
|
|
1834
|
+
}
|
|
1835
|
+
if (typeof selectedEvent.eventId !== 'number') {
|
|
1836
|
+
return {
|
|
1837
|
+
...state,
|
|
1838
|
+
selectedEvent,
|
|
1839
|
+
selectedEventId: null,
|
|
1840
|
+
selectedEventIndex
|
|
1841
|
+
};
|
|
1842
|
+
}
|
|
1843
|
+
const selectedEventDetails = await dependencies.loadSelectedEvent(state.databaseName, state.dataBaseVersion, state.eventStoreName, state.sessionId, state.sessionIdIndexName, selectedEvent.eventId, selectedEvent.type);
|
|
1844
|
+
return {
|
|
1845
|
+
...state,
|
|
1846
|
+
selectedEvent: selectedEventDetails ?? selectedEvent,
|
|
1847
|
+
selectedEventId: selectedEvent.eventId,
|
|
1848
|
+
selectedEventIndex
|
|
1849
|
+
};
|
|
1850
|
+
};
|
|
1851
|
+
|
|
1852
|
+
const devtoolsRootGap = 4;
|
|
1853
|
+
const devtoolsTopHeight = 28;
|
|
1854
|
+
const devtoolsTimelineHeight = 88;
|
|
1855
|
+
const devtoolsTableHeaderHeight = 24;
|
|
1856
|
+
const devtoolsTableRowHeight = 24;
|
|
1857
|
+
const getTableBodyY = (state, hasTimeline) => {
|
|
1858
|
+
return state.y + viewPadding + devtoolsTopHeight + devtoolsRootGap + (hasTimeline ? devtoolsTimelineHeight : 0) + devtoolsTableHeaderHeight;
|
|
1859
|
+
};
|
|
1860
|
+
const getTableBodyEventIndex = (state, eventX, eventY) => {
|
|
1861
|
+
if (!state.useDevtoolsLayout) {
|
|
1862
|
+
return -1;
|
|
1863
|
+
}
|
|
1864
|
+
const currentEvents = getCurrentEvents$3(state);
|
|
1865
|
+
if (currentEvents.length === 0) {
|
|
1866
|
+
return -1;
|
|
1867
|
+
}
|
|
1868
|
+
const tableX = state.x + leftPadding;
|
|
1869
|
+
const tableWidth = clampTableWidth(state.width, state.tableWidth);
|
|
1870
|
+
const hasTimeline = currentEvents.length > 0;
|
|
1871
|
+
const tableBodyY = getTableBodyY(state, hasTimeline);
|
|
1872
|
+
const relativeX = eventX - tableX;
|
|
1873
|
+
const relativeY = eventY - tableBodyY;
|
|
1874
|
+
if (relativeX < 0 || relativeX >= tableWidth || relativeY < 0) {
|
|
1875
|
+
return -1;
|
|
1876
|
+
}
|
|
1877
|
+
const eventIndex = Math.floor(relativeY / devtoolsTableRowHeight);
|
|
1878
|
+
if (eventIndex < 0 || eventIndex >= currentEvents.length) {
|
|
1879
|
+
return -1;
|
|
1880
|
+
}
|
|
1881
|
+
return eventIndex;
|
|
1882
|
+
};
|
|
1883
|
+
|
|
1884
|
+
const MenuChatDebugTableBody = 2190;
|
|
1885
|
+
const handleTableBodyContextMenu = async (state, eventX, eventY) => {
|
|
1886
|
+
const eventIndex = getTableBodyEventIndex(state, eventX, eventY);
|
|
1887
|
+
await showContextMenu2(state.uid, MenuChatDebugTableBody, eventX, eventY, {
|
|
1888
|
+
eventIndex,
|
|
1889
|
+
menuId: MenuChatDebugTableBody
|
|
1890
|
+
});
|
|
1891
|
+
return state;
|
|
1892
|
+
};
|
|
1893
|
+
|
|
1894
|
+
const getMenuIds = () => {
|
|
1895
|
+
return [MenuChatDebugTableBody, 556, 557];
|
|
1896
|
+
};
|
|
1897
|
+
|
|
1898
|
+
const getErrorMessage = error => {
|
|
1899
|
+
if (error instanceof Error) {
|
|
1900
|
+
return error.message;
|
|
1901
|
+
}
|
|
1902
|
+
if (typeof error === 'string') {
|
|
1903
|
+
return error;
|
|
1904
|
+
}
|
|
1905
|
+
if (error && typeof error === 'object' && 'message' in error && typeof error.message === 'string') {
|
|
1906
|
+
return error.message;
|
|
1907
|
+
}
|
|
1908
|
+
return undefined;
|
|
1909
|
+
};
|
|
1910
|
+
const getFailedToLoadMessage = (sessionId, error) => {
|
|
1911
|
+
const errorMessage = getErrorMessage(error);
|
|
1912
|
+
if (errorMessage) {
|
|
1913
|
+
return `Failed to load chat debug session "${sessionId}": ${errorMessage}`;
|
|
1914
|
+
}
|
|
1915
|
+
return `Failed to load chat debug session "${sessionId}". Please try again.`;
|
|
1916
|
+
};
|
|
1917
|
+
|
|
1918
|
+
const ParseChatDebugUriErrorCode = {
|
|
1919
|
+
InvalidSessionId: 'invalid-session-id',
|
|
1920
|
+
InvalidUriEncoding: 'invalid-uri-encoding',
|
|
1921
|
+
InvalidUriFormat: 'invalid-uri-format',
|
|
1922
|
+
MissingUri: 'missing-uri'
|
|
1923
|
+
};
|
|
1924
|
+
|
|
1925
|
+
const getInvalidUriMessage = (uri, code) => {
|
|
1926
|
+
if (code === ParseChatDebugUriErrorCode.MissingUri) {
|
|
1927
|
+
return 'Unable to load debug session: missing URI. Expected format: chat-debug://<sessionId>.';
|
|
1928
|
+
}
|
|
1929
|
+
return `Unable to load debug session: invalid URI "${uri}". Expected format: chat-debug://<sessionId>.`;
|
|
1930
|
+
};
|
|
1931
|
+
|
|
1932
|
+
const getSessionNotFoundMessage = sessionId => {
|
|
1933
|
+
return `No chat session found for sessionId "${sessionId}".`;
|
|
1934
|
+
};
|
|
1935
|
+
|
|
1887
1936
|
const listChatViewEventsDependencies = {
|
|
1888
1937
|
listChatViewEventsFromWorker: listChatViewEvents$1
|
|
1889
1938
|
};
|
|
@@ -1951,7 +2000,7 @@ const loadEventsDependencies = {
|
|
|
1951
2000
|
listChatViewEvents: listChatViewEvents,
|
|
1952
2001
|
loadSelectedEvent: loadSelectedEvent
|
|
1953
2002
|
};
|
|
1954
|
-
const getCurrentEvents$
|
|
2003
|
+
const getCurrentEvents$2 = state => {
|
|
1955
2004
|
const filteredEvents = getFilteredEvents(state.events, state.filterValue, state.eventCategoryFilter, state.showInputEvents, state.showResponsePartEvents, state.showEventStreamFinishedEvents);
|
|
1956
2005
|
return filterEventsByTimelineRange(filteredEvents, state.timelineStartSeconds, state.timelineEndSeconds);
|
|
1957
2006
|
};
|
|
@@ -1963,7 +2012,7 @@ const restoreSelectedEvent = async state => {
|
|
|
1963
2012
|
selectedEventIndex: null
|
|
1964
2013
|
};
|
|
1965
2014
|
}
|
|
1966
|
-
const currentEvents = getCurrentEvents$
|
|
2015
|
+
const currentEvents = getCurrentEvents$2(state);
|
|
1967
2016
|
const selectedEventIndex = currentEvents.findIndex(event => event.eventId === state.selectedEventId);
|
|
1968
2017
|
if (selectedEventIndex === -1) {
|
|
1969
2018
|
return {
|
|
@@ -2106,13 +2155,12 @@ const handleDetailTab = (state, value) => {
|
|
|
2106
2155
|
};
|
|
2107
2156
|
};
|
|
2108
2157
|
|
|
2109
|
-
const getCurrentEvents$
|
|
2158
|
+
const getCurrentEvents$1 = state => {
|
|
2110
2159
|
const filteredEvents = getFilteredEvents(state.events, state.filterValue, state.eventCategoryFilter, state.showInputEvents, state.showResponsePartEvents, state.showEventStreamFinishedEvents);
|
|
2111
2160
|
return filterEventsByTimelineRange(filteredEvents, state.timelineStartSeconds, state.timelineEndSeconds);
|
|
2112
2161
|
};
|
|
2113
2162
|
const getEventIndexByStableId$1 = (events, event) => {
|
|
2114
|
-
|
|
2115
|
-
return events.findIndex(candidate => getStableEventId(candidate) === stableEventId);
|
|
2163
|
+
return events.findIndex(candidate => candidate.eventId === event.eventId);
|
|
2116
2164
|
};
|
|
2117
2165
|
const getSelectedEventIndex$1 = state => {
|
|
2118
2166
|
const {
|
|
@@ -2121,7 +2169,7 @@ const getSelectedEventIndex$1 = state => {
|
|
|
2121
2169
|
if (selectedEventIndex === null) {
|
|
2122
2170
|
return null;
|
|
2123
2171
|
}
|
|
2124
|
-
const filteredEvents = getCurrentEvents$
|
|
2172
|
+
const filteredEvents = getCurrentEvents$1(state);
|
|
2125
2173
|
const selectedEvent = filteredEvents[selectedEventIndex];
|
|
2126
2174
|
if (!selectedEvent) {
|
|
2127
2175
|
return null;
|
|
@@ -2139,12 +2187,12 @@ const getPreservedSelectedEventIndex$1 = (oldState, newState) => {
|
|
|
2139
2187
|
if (selectedEventIndex === null) {
|
|
2140
2188
|
return null;
|
|
2141
2189
|
}
|
|
2142
|
-
const oldFilteredEvents = getCurrentEvents$
|
|
2190
|
+
const oldFilteredEvents = getCurrentEvents$1(oldState);
|
|
2143
2191
|
const selectedEvent = oldFilteredEvents[selectedEventIndex];
|
|
2144
2192
|
if (!selectedEvent) {
|
|
2145
2193
|
return null;
|
|
2146
2194
|
}
|
|
2147
|
-
const newFilteredEvents = getCurrentEvents$
|
|
2195
|
+
const newFilteredEvents = getCurrentEvents$1(newState);
|
|
2148
2196
|
const newIndex = getEventIndexByStableId$1(newFilteredEvents, selectedEvent);
|
|
2149
2197
|
if (newIndex === -1) {
|
|
2150
2198
|
return null;
|
|
@@ -2169,38 +2217,6 @@ const handleEventCategoryFilter = (state, value) => {
|
|
|
2169
2217
|
return withPreservedSelection$1(state, nextState);
|
|
2170
2218
|
};
|
|
2171
2219
|
|
|
2172
|
-
const getCurrentEvents$1 = state => {
|
|
2173
|
-
const filteredEvents = getFilteredEvents(state.events, state.filterValue, state.eventCategoryFilter, state.showInputEvents, state.showResponsePartEvents, state.showEventStreamFinishedEvents);
|
|
2174
|
-
return filterEventsByTimelineRange(filteredEvents, state.timelineStartSeconds, state.timelineEndSeconds);
|
|
2175
|
-
};
|
|
2176
|
-
const selectEventAtIndex = async (state, selectedEventIndex, dependencies) => {
|
|
2177
|
-
const currentEvents = getCurrentEvents$1(state);
|
|
2178
|
-
const selectedEvent = currentEvents[selectedEventIndex];
|
|
2179
|
-
if (!selectedEvent) {
|
|
2180
|
-
return {
|
|
2181
|
-
...state,
|
|
2182
|
-
selectedEvent: null,
|
|
2183
|
-
selectedEventId: null,
|
|
2184
|
-
selectedEventIndex
|
|
2185
|
-
};
|
|
2186
|
-
}
|
|
2187
|
-
if (typeof selectedEvent.eventId !== 'number') {
|
|
2188
|
-
return {
|
|
2189
|
-
...state,
|
|
2190
|
-
selectedEvent,
|
|
2191
|
-
selectedEventId: null,
|
|
2192
|
-
selectedEventIndex
|
|
2193
|
-
};
|
|
2194
|
-
}
|
|
2195
|
-
const selectedEventDetails = await dependencies.loadSelectedEvent(state.databaseName, state.dataBaseVersion, state.eventStoreName, state.sessionId, state.sessionIdIndexName, selectedEvent.eventId, selectedEvent.type);
|
|
2196
|
-
return {
|
|
2197
|
-
...state,
|
|
2198
|
-
selectedEvent: selectedEventDetails ?? selectedEvent,
|
|
2199
|
-
selectedEventId: selectedEvent.eventId,
|
|
2200
|
-
selectedEventIndex
|
|
2201
|
-
};
|
|
2202
|
-
};
|
|
2203
|
-
|
|
2204
2220
|
const handleEventRowClickDependencies = {
|
|
2205
2221
|
loadSelectedEvent: loadSelectedEvent
|
|
2206
2222
|
};
|
|
@@ -2265,8 +2281,7 @@ const parseTimelineRangePreset$1 = value => {
|
|
|
2265
2281
|
};
|
|
2266
2282
|
};
|
|
2267
2283
|
const getEventIndexByStableId = (events, event) => {
|
|
2268
|
-
|
|
2269
|
-
return events.findIndex(candidate => getStableEventId(candidate) === stableEventId);
|
|
2284
|
+
return events.findIndex(candidate => candidate.eventId === event.eventId);
|
|
2270
2285
|
};
|
|
2271
2286
|
const getSelectedEventIndex = state => {
|
|
2272
2287
|
const {
|
|
@@ -2433,47 +2448,6 @@ const handleSashPointerUp = (state, eventX, eventY) => {
|
|
|
2433
2448
|
return state;
|
|
2434
2449
|
};
|
|
2435
2450
|
|
|
2436
|
-
const devtoolsRootGap = 4;
|
|
2437
|
-
const devtoolsTopHeight = 28;
|
|
2438
|
-
const devtoolsTimelineHeight = 88;
|
|
2439
|
-
const devtoolsTableHeaderHeight = 24;
|
|
2440
|
-
const devtoolsTableRowHeight = 24;
|
|
2441
|
-
const MenuChatDebugTableBody = 2190;
|
|
2442
|
-
const getTableBodyY = (state, hasTimeline) => {
|
|
2443
|
-
return state.y + viewPadding + devtoolsTopHeight + devtoolsRootGap + (hasTimeline ? devtoolsTimelineHeight : 0) + devtoolsTableHeaderHeight;
|
|
2444
|
-
};
|
|
2445
|
-
const getTableBodyEventIndex = (state, eventX, eventY) => {
|
|
2446
|
-
if (!state.useDevtoolsLayout) {
|
|
2447
|
-
return -1;
|
|
2448
|
-
}
|
|
2449
|
-
const currentEvents = getCurrentEvents$1(state);
|
|
2450
|
-
if (currentEvents.length === 0) {
|
|
2451
|
-
return -1;
|
|
2452
|
-
}
|
|
2453
|
-
const tableX = state.x + leftPadding;
|
|
2454
|
-
const tableWidth = clampTableWidth(state.width, state.tableWidth);
|
|
2455
|
-
const hasTimeline = currentEvents.length > 0;
|
|
2456
|
-
const tableBodyY = getTableBodyY(state, hasTimeline);
|
|
2457
|
-
const relativeX = eventX - tableX;
|
|
2458
|
-
const relativeY = eventY - tableBodyY;
|
|
2459
|
-
if (relativeX < 0 || relativeX >= tableWidth || relativeY < 0) {
|
|
2460
|
-
return -1;
|
|
2461
|
-
}
|
|
2462
|
-
const eventIndex = Math.floor(relativeY / devtoolsTableRowHeight);
|
|
2463
|
-
if (eventIndex < 0 || eventIndex >= currentEvents.length) {
|
|
2464
|
-
return -1;
|
|
2465
|
-
}
|
|
2466
|
-
return eventIndex;
|
|
2467
|
-
};
|
|
2468
|
-
const handleTableBodyContextMenu = async (state, eventX, eventY) => {
|
|
2469
|
-
const eventIndex = getTableBodyEventIndex(state, eventX, eventY);
|
|
2470
|
-
await showContextMenu2(state.uid, MenuChatDebugTableBody, eventX, eventY, {
|
|
2471
|
-
eventIndex,
|
|
2472
|
-
menuId: MenuChatDebugTableBody
|
|
2473
|
-
});
|
|
2474
|
-
return state;
|
|
2475
|
-
};
|
|
2476
|
-
|
|
2477
2451
|
const clearTimelineSelectionState = state => {
|
|
2478
2452
|
return {
|
|
2479
2453
|
...state,
|