@workflow/web-shared 4.1.11 → 4.1.13
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/components/event-list-view.d.ts +1 -1
- package/dist/components/event-list-view.d.ts.map +1 -1
- package/dist/components/event-list-view.js +6 -2
- package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
- package/dist/components/sidebar/attribute-panel.js +29 -33
- package/dist/components/trace-viewer/components/map.d.ts +2 -2
- package/dist/components/trace-viewer/components/map.d.ts.map +1 -1
- package/dist/components/trace-viewer/components/node.d.ts +7 -7
- package/dist/components/trace-viewer/components/node.d.ts.map +1 -1
- package/dist/components/trace-viewer/trace-viewer.module.css +4 -4
- package/dist/components/ui/alert.js +2 -2
- package/dist/components/ui/card.js +2 -2
- package/dist/components/ui/context-card.d.ts +47 -0
- package/dist/components/ui/context-card.d.ts.map +1 -0
- package/dist/components/ui/context-card.js +471 -0
- package/dist/components/ui/error-card.js +2 -2
- package/dist/components/ui/skeleton.js +2 -2
- package/dist/components/ui/timestamp-tooltip.d.ts +34 -1
- package/dist/components/ui/timestamp-tooltip.d.ts.map +1 -1
- package/dist/components/ui/timestamp-tooltip.js +80 -132
- package/dist/components/workflow-traces/trace-span-construction.d.ts +4 -1
- package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
- package/dist/components/workflow-traces/trace-span-construction.js +30 -9
- package/dist/hooks/use-reduced-motion.d.ts +10 -0
- package/dist/hooks/use-reduced-motion.d.ts.map +1 -0
- package/dist/hooks/use-reduced-motion.js +29 -0
- package/dist/lib/cn.d.ts +10 -0
- package/dist/lib/cn.d.ts.map +1 -0
- package/dist/lib/cn.js +83 -0
- package/dist/lib/event-materialization.d.ts +3 -0
- package/dist/lib/event-materialization.d.ts.map +1 -1
- package/dist/lib/event-materialization.js +13 -7
- package/dist/lib/utils.d.ts +0 -2
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +1 -6
- package/dist/styles.css +9 -0
- package/package.json +8 -6
- package/src/components/event-list-view.tsx +10 -1
- package/src/components/sidebar/attribute-panel.tsx +122 -121
- package/src/components/trace-viewer/trace-viewer.module.css +4 -4
- package/src/components/ui/alert.tsx +1 -1
- package/src/components/ui/card.tsx +1 -1
- package/src/components/ui/context-card.tsx +784 -0
- package/src/components/ui/error-card.tsx +1 -1
- package/src/components/ui/skeleton.tsx +1 -1
- package/src/components/ui/timestamp-tooltip.tsx +132 -194
- package/src/components/workflow-traces/trace-span-construction.ts +72 -30
- package/src/hooks/use-reduced-motion.ts +34 -0
- package/src/lib/cn.ts +93 -0
- package/src/lib/event-materialization.ts +68 -40
- package/src/lib/utils.ts +0 -6
- package/src/styles.css +9 -0
package/dist/lib/utils.js
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
import { clsx } from 'clsx';
|
|
2
|
-
import { twMerge } from 'tailwind-merge';
|
|
3
|
-
export function cn(...inputs) {
|
|
4
|
-
return twMerge(clsx(inputs));
|
|
5
|
-
}
|
|
6
1
|
const durationFormatter = new Intl.NumberFormat(undefined, {
|
|
7
2
|
maximumFractionDigits: 2,
|
|
8
3
|
});
|
|
@@ -129,4 +124,4 @@ export function identifyStreamSteps(steps) {
|
|
|
129
124
|
};
|
|
130
125
|
});
|
|
131
126
|
}
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBbUIsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxNQUFNLFVBQVUsRUFBRSxDQUFDLEdBQUcsTUFBb0I7SUFDeEMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUVELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRTtJQUN6RCxxQkFBcUIsRUFBRSxDQUFDO0NBQ3pCLENBQUMsQ0FBQztBQUVILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQztBQUMxQixNQUFNLFlBQVksR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDO0FBQ3ZDLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxZQUFZLENBQUM7QUFDckMsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQUVsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEVBQVUsRUFBRSxPQUFPLEdBQUcsS0FBSztJQUN4RCxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNiLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxJQUFJLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUN0QixPQUFPLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDN0MsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxJQUFJLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUN0QixPQUFPLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxZQUFZ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QU07WUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFdBQVcsRUFBRSxZQUFZO1lBQ3pCLFlBQVk7U0FDYixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdGVwIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB0eXBlIHsgTW9kZWxNZXNzYWdlIH0gZnJvbSAnYWknO1xuaW1wb3J0IHsgdHlwZSBDbGFzc1ZhbHVlLCBjbHN4IH0gZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB0d01lcmdlIH0gZnJvbSAndGFpbHdpbmQtbWVyZ2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gY24oLi4uaW5wdXRzOiBDbGFzc1ZhbHVlW10pIHtcbiAgcmV0dXJuIHR3TWVyZ2UoY2xzeChpbnB1dHMpKTtcbn1cblxuY29uc3QgZHVyYXRpb25Gb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodW5kZWZpbmVkLCB7XG4gIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMixcbn0pO1xuXG5jb25zdCBNU19JTl9TRUNPTkQgPSAxMDAwO1xuY29uc3QgTVNfSU5fTUlOVVRFID0gNjAgKiBNU19JTl9TRUNPTkQ7XG5jb25zdCBNU19JTl9IT1VSID0gNjAgKiBNU19JTl9NSU5VVEU7XG5jb25zdCBNU19JTl9EQVkgPSAyNCAqIE1TX0lOX0hPVVI7XG5cbi8qKlxuICogRm9ybWF0cyBhIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyB0byBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gbXMgLSBEdXJhdGlvbiBpbiBtaWxsaXNlY29uZHNcbiAqIEBwYXJhbSBjb21wYWN0IC0gSWYgdHJ1ZSwgcmV0dXJucyBhIHNpbmdsZS11bml0IGZvcm1hdCAoZS5nLiwgXCI0NXNcIiwgXCIyLjVtXCIpLlxuICogICAgICAgICAgICAgICAgICBJZiBmYWxzZSAoZGVmYXVsdCksIHJldHVybnMgbXVsdGktcGFydCBmb3JtYXQgKGUuZy4sIFwiMWggMzBtXCIsIFwiMmQgNWhcIikuXG4gKlxuICogQ29tcGFjdCBmb3JtYXQ6XG4gKiAtIDwgMXM6IHNob3dzIG1pbGxpc2Vjb25kcyAoZS5nLiwgXCI1MDBtc1wiKVxuICogLSA8IDFtOiBzaG93cyBzZWNvbmRzIChlLmcuLCBcIjQ1c1wiKVxuICogLSA8IDFoOiBzaG93cyBtaW51dGVzIChlLmcuLCBcIjQ1bVwiKVxuICogLSA+PSAxaDogc2hvd3MgaG91cnMgKGUuZy4sIFwiMi41aFwiKVxuICpcbiAqIEZ1bGwgZm9ybWF0OlxuICogLSA8IDFzOiBzaG93cyBtaWxsaXNlY29uZHMgKGUuZy4sIFwiNTAwbXNcIilcbiAqIC0gPCAxbTogc2hvd3Mgc2Vjb25kcyAoZS5nLiwgXCI0NS41c1wiKVxuICogLSA+PSAxbTogc2hvd3MgaHVtYW4tcmVhZGFibGUgZm9ybWF0IChlLmcuLCBcIjFoIDMwbVwiLCBcIjJkIDVoXCIpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREdXJhdGlvbihtczogbnVtYmVyLCBjb21wYWN0ID0gZmFsc2UpOiBzdHJpbmcge1xuICBpZiAobXMgPT09IDApIHtcbiAgICByZXR1cm4gJzAnO1xuICB9XG5cbiAgLy8gRm9yIGR1cmF0aW9ucyBsZXNzIHRoYW4gMSBzZWNvbmQsIHNob3cgbWlsbGlzZWNvbmRzXG4gIGlmIChtcyA8IE1TX0lOX1NFQ09ORCkge1xuICAgIHJldHVybiBgJHtkdXJhdGlvbkZvcm1hdHRlci5mb3JtYXQobXMpfW1zYDtcbiAgfVxuXG4gIC8vIEZvciBkdXJhdGlvbnMgbGVzcyB0aGFuIDEgbWludXRlLCBzaG93IHNlY29uZHNcbiAgaWYgKG1zIDwgTVNfSU5fTUlOVVRFKSB7XG4gICAgcmV0dXJuIGAke2R1cmF0aW9uRm9ybWF0dGVyLmZvcm1hdChtcyAvIE1TX0lOX1NFQ09ORCl9c2A7XG4gIH1cblxuICAvLyBDb21wYWN0IGZvcm1hdDogbXVsdGktdW5pdCB3aXRob3V0IGRlY2ltYWxzIChlLmcuIFwiOG0gMjBzXCIsIFwiMmggMzBtXCIpXG4gIGlmIChjb21wYWN0KSB7XG4gICAgaWYgKG1zIDwgTVNfSU5fSE9VUikge1xuICAgICAgY29uc3QgbSA9IE1hdGguZmxvb3IobXMgLyBNU19JTl9NSU5VVEUpO1xuICAgICAgY29uc3QgcyA9IE1hdGguZmxvb3IoKG1zICUgTVNfSU5fTUlOVVRFKSAvIE1TX0lOX1NFQ09ORCk7XG4gICAgICByZXR1cm4gcyA+IDAgPyBgJHttfW0gJHtzfXNgIDogYCR7bX1tYDtcbiAgICB9XG4gICAgY29uc3QgaCA9IE1hdGguZmxvb3IobXMgLyBNU19JTl9IT1VSKTtcbiAgICBjb25zdCBtID0gTWF0aC5mbG9vcigobXMgJSBNU19JTl9IT1VSKSAvIE1TX0lOX01JTlVURSk7XG4gICAgcmV0dXJuIG0gPiAwID8gYCR7aH1oICR7bX1tYCA6IGAke2h9aGA7XG4gIH1cblxuICAvLyBGdWxsIGZvcm1hdDogaHVtYW4tcmVhZGFibGUgbXVsdGktcGFydFxuICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihtcyAvIE1TX0lOX0RBWSk7XG4gIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcigobXMgJSBNU19JTl9EQVkpIC8gTVNfSU5fSE9VUik7XG4gIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKChtcyAlIE1TX0lOX0hPVVIpIC8gTVNfSU5fTUlOVVRFKTtcbiAgY29uc3Qgc2Vjb25kcyA9IE1hdGguZmxvb3IoKG1zICUgTVNfSU5fTUlOVVRFKSAvIE1TX0lOX1NFQ09ORCk7XG5cbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgaWYgKGRheXMgPiAwKSB7XG4gICAgcGFydHMucHVzaChgJHtkYXlzfWRgKTtcbiAgfVxuICBpZiAoaG91cnMgPiAwKSB7XG4gICAgcGFydHMucHVzaChgJHtob3Vyc31oYCk7XG4gIH1cbiAgaWYgKG1pbnV0ZXMgPiAwKSB7XG4gICAgcGFydHMucHVzaChgJHttaW51dGVzfW1gKTtcbiAgfVxuICBpZiAoaG91cnMgPD0gMSAmJiAoc2Vjb25kcyA+IDAgfHwgcGFydHMubGVuZ3RoID09PSAwKSkge1xuICAgIHBhcnRzLnB1c2goYCR7c2Vjb25kc31zYCk7XG4gIH1cblxuICByZXR1cm4gcGFydHMuam9pbignICcpO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmb3JtYXR0ZWQgcGFnaW5hdGlvbiBkaXNwbGF5IHN0cmluZ1xuICogQHBhcmFtIGN1cnJlbnRQYWdlIC0gVGhlIGN1cnJlbnQgcGFnZSBudW1iZXJcbiAqIEBwYXJhbSB0b3RhbFBhZ2VzIC0gVGhlIHRvdGFsIG51bWJlciBvZiBwYWdlcyB2aXNpdGVkIHNvIGZhclxuICogQHBhcmFtIGhhc01vcmUgLSBXaGV0aGVyIHRoZXJlIGFyZSBtb3JlIHBhZ2VzIGF2YWlsYWJsZVxuICogQHJldHVybnMgRm9ybWF0dGVkIHN0cmluZyBsaWtlIFwiUGFnZSAxIG9mIDMrXCIgb3IgXCJQYWdlIDIgb2YgMlwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWdpbmF0aW9uRGlzcGxheShcbiAgY3VycmVudFBhZ2U6IG51bWJlcixcbiAgdG90YWxQYWdlczogbnVtYmVyLFxuICBoYXNNb3JlOiBib29sZWFuXG4pOiBzdHJpbmcge1xuICBpZiAoaGFzTW9yZSkge1xuICAgIHJldHVybiBgUGFnZSAke2N1cnJlbnRQYWdlfSBvZiAke3RvdGFsUGFnZXN9K2A7XG4gIH1cbiAgcmV0dXJuIGBQYWdlICR7Y3VycmVudFBhZ2V9IG9mICR7dG90YWxQYWdlc31gO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEdXJhYmxlIEFnZW50IFV0aWxpdGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENoZWNrIGlmIGEgc3RlcCBpcyBhIGRvU3RyZWFtU3RlcCAoTExNIGNhbGwgd2l0aCBjb252ZXJzYXRpb24gaW5wdXQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RvU3RyZWFtU3RlcChzdGVwTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBzdGVwTmFtZS5lbmRzV2l0aCgnLy9kb1N0cmVhbVN0ZXAnKTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHRoZSBjb252ZXJzYXRpb24gZnJvbSBhIGh5ZHJhdGVkIGRvU3RyZWFtU3RlcCBpbnB1dC5cbiAqIGRvU3RyZWFtU3RlcCBzaWduYXR1cmU6IChjb252ZXJzYXRpb25Qcm9tcHQsIG1vZGVsLCB3cml0YWJsZSwgdG9vbHMsIG9wdGlvbnMpXG4gKiBTbyBpbnB1dFswXSBpcyB0aGUgY29udmVyc2F0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdENvbnZlcnNhdGlvbihzdGVwSW5wdXQ6IHVua25vd24pOiBNb2RlbE1lc3NhZ2VbXSB8IG51bGwge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoc3RlcElucHV0KSB8fCBzdGVwSW5wdXQubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBmaXJzdEFyZyA9IHN0ZXBJbnB1dFswXTtcblxuICBpZiAoIUFycmF5LmlzQXJyYXkoZmlyc3RBcmcpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBpdCBsb29rcyBsaWtlIE1vZGVsTWVzc2FnZVtdXG4gIGlmIChcbiAgICAhZmlyc3RBcmcuZXZlcnkoKG1zZykgPT4gbXNnICYmIHR5cGVvZiBtc2cgPT09ICdvYmplY3QnICYmICdyb2xlJyBpbiBtc2cpXG4gICkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGZpcnN0QXJnIGFzIE1vZGVsTWVzc2FnZVtdO1xufVxuXG4vKipcbiAqIEEgZG9TdHJlYW1TdGVwIHdpdGggaXRzIGNvbnZlcnNhdGlvbiBpbnB1dCBleHRyYWN0ZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1TdGVwIHtcbiAgc3RlcElkOiBzdHJpbmc7XG4gIHN0ZXBOYW1lOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGNvbnZlcnNhdGlvbjogTW9kZWxNZXNzYWdlW107XG59XG5cbi8qKlxuICogSWRlbnRpZmllcyBhbGwgc3RyZWFtIHN0ZXBzIChkb1N0cmVhbVN0ZXApIGluIGEgcnVuIGFuZCBleHRyYWN0cyB0aGVpciBjb252ZXJzYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZnlTdHJlYW1TdGVwcyhzdGVwczogU3RlcFtdKTogU3RyZWFtU3RlcFtdIHtcbiAgcmV0dXJuIHN0ZXBzXG4gICAgLmZpbHRlcigoc3RlcCkgPT4gaXNEb1N0cmVhbVN0ZXAoc3RlcC5zdGVwTmFtZSkpXG4gICAgLm1hcCgoc3RlcCkgPT4ge1xuICAgICAgY29uc3QgZnVuY3Rpb25OYW1lID0gc3RlcC5zdGVwTmFtZS5zcGxpdCgnLy8nKS5wb3AoKSA/PyAndW5rbm93bic7XG4gICAgICBjb25zdCBjb252ZXJzYXRpb24gPSBleHRyYWN0Q29udmVyc2F0aW9uKHN0ZXAuaW5wdXQpID8/IFtdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGVwSWQ6IHN0ZXAuc3RlcElkLFxuICAgICAgICBzdGVwTmFtZTogc3RlcC5zdGVwTmFtZSxcbiAgICAgICAgZGlzcGxheU5hbWU6IGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgY29udmVyc2F0aW9uLFxuICAgICAgfTtcbiAgICB9KTtcbn1cbiJdfQ==
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRTtJQUN6RCxxQkFBcUIsRUFBRSxDQUFDO0NBQ3pCLENBQUMsQ0FBQztBQUVILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQztBQUMxQixNQUFNLFlBQVksR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDO0FBQ3ZDLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxZQUFZLENBQUM7QUFDckMsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLFVBQVUsQ0FBQztBQUVsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEVBQVUsRUFBRSxPQUFPLEdBQUcsS0FBSztJQUN4RCxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNiLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxJQUFJLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUN0QixPQUFPLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDN0MsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxJQUFJLEVBQUUsR0FBRyxZQUFZLEVBQUUsQ0FBQztRQUN0QixPQUFPLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDO0lBQzNELENBQUM7SUFFRCx3RUFBd0U7SUFDeEUsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLElBQUksRUFBRSxHQUFHLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sQ0FBQyxH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QUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsSUFDRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksTUFBTSxJQUFJLEdBQUcsQ0FBQyxFQUN6RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxRQUEwQixDQUFDO0FBQ3BDLENBQUM7QUFZRDs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLE9BQU8sS0FBSztTQUNULE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMvQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNaLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLFNBQVMsQ0FBQztRQUNsRSxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTNELE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFdBQVcsRUFBRSxZQUFZO1lBQ3pCLFlBQVk7U0FDYixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdGVwIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB0eXBlIHsgTW9kZWxNZXNzYWdlIH0gZnJvbSAnYWknO1xuXG5jb25zdCBkdXJhdGlvbkZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh1bmRlZmluZWQsIHtcbiAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyLFxufSk7XG5cbmNvbnN0IE1TX0lOX1NFQ09ORCA9IDEwMDA7XG5jb25zdCBNU19JTl9NSU5VVEUgPSA2MCAqIE1TX0lOX1NFQ09ORDtcbmNvbnN0IE1TX0lOX0hPVVIgPSA2MCAqIE1TX0lOX01JTlVURTtcbmNvbnN0IE1TX0lOX0RBWSA9IDI0ICogTVNfSU5fSE9VUjtcblxuLyoqXG4gKiBGb3JtYXRzIGEgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzIHRvIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBtcyAtIER1cmF0aW9uIGluIG1pbGxpc2Vjb25kc1xuICogQHBhcmFtIGNvbXBhY3QgLSBJZiB0cnVlLCByZXR1cm5zIGEgc2luZ2xlLXVuaXQgZm9ybWF0IChlLmcuLCBcIjQ1c1wiLCBcIjIuNW1cIikuXG4gKiAgICAgICAgICAgICAgICAgIElmIGZhbHNlIChkZWZhdWx0KSwgcmV0dXJucyBtdWx0aS1wYXJ0IGZvcm1hdCAoZS5nLiwgXCIxaCAzMG1cIiwgXCIyZCA1aFwiKS5cbiAqXG4gKiBDb21wYWN0IGZvcm1hdDpcbiAqIC0gPCAxczogc2hvd3MgbWlsbGlzZWNvbmRzIChlLmcuLCBcIjUwMG1zXCIpXG4gKiAtIDwgMW06IHNob3dzIHNlY29uZHMgKGUuZy4sIFwiNDVzXCIpXG4gKiAtIDwgMWg6IHNob3dzIG1pbnV0ZXMgKGUuZy4sIFwiNDVtXCIpXG4gKiAtID49IDFoOiBzaG93cyBob3VycyAoZS5nLiwgXCIyLjVoXCIpXG4gKlxuICogRnVsbCBmb3JtYXQ6XG4gKiAtIDwgMXM6IHNob3dzIG1pbGxpc2Vjb25kcyAoZS5nLiwgXCI1MDBtc1wiKVxuICogLSA8IDFtOiBzaG93cyBzZWNvbmRzIChlLmcuLCBcIjQ1LjVzXCIpXG4gKiAtID49IDFtOiBzaG93cyBodW1hbi1yZWFkYWJsZSBmb3JtYXQgKGUuZy4sIFwiMWggMzBtXCIsIFwiMmQgNWhcIilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdER1cmF0aW9uKG1zOiBudW1iZXIsIGNvbXBhY3QgPSBmYWxzZSk6IHN0cmluZyB7XG4gIGlmIChtcyA9PT0gMCkge1xuICAgIHJldHVybiAnMCc7XG4gIH1cblxuICAvLyBGb3IgZHVyYXRpb25zIGxlc3MgdGhhbiAxIHNlY29uZCwgc2hvdyBtaWxsaXNlY29uZHNcbiAgaWYgKG1zIDwgTVNfSU5fU0VDT05EKSB7XG4gICAgcmV0dXJuIGAke2R1cmF0aW9uRm9ybWF0dGVyLmZvcm1hdChtcyl9bXNgO1xuICB9XG5cbiAgLy8gRm9yIGR1cmF0aW9ucyBsZXNzIHRoYW4gMSBtaW51dGUsIHNob3cgc2Vjb25kc1xuICBpZiAobXMgPCBNU19JTl9NSU5VVEUpIHtcbiAgICByZXR1cm4gYCR7ZHVyYXRpb25Gb3JtYXR0ZXIuZm9ybWF0KG1zIC8gTVNfSU5fU0VDT05EKX1zYDtcbiAgfVxuXG4gIC8vIENvbXBhY3QgZm9ybWF0OiBtdWx0aS11bml0IHdpdGhvdXQgZGVjaW1hbHMgKGUuZy4gXCI4bSAyMHNcIiwgXCIyaCAzMG1cIilcbiAgaWYgKGNvbXBhY3QpIHtcbiAgICBpZiAobXMgPCBNU19JTl9IT1VSKSB7XG4gICAgICBjb25zdCBtID0gTWF0aC5mbG9vcihtcyAvIE1TX0lOX01JTlVURSk7XG4gICAgICBjb25zdCBzID0gTWF0aC5mbG9vcigobXMgJSBNU19JTl9NSU5VVEUpIC8gTVNfSU5fU0VDT05EKTtcbiAgICAgIHJldHVybiBzID4gMCA/IGAke219bSAke3N9c2AgOiBgJHttfW1gO1xuICAgIH1cbiAgICBjb25zdCBoID0gTWF0aC5mbG9vcihtcyAvIE1TX0lOX0hPVVIpO1xuICAgIGNvbnN0IG0gPSBNYXRoLmZsb29yKChtcyAlIE1TX0lOX0hPVVIpIC8gTVNfSU5fTUlOVVRFKTtcbiAgICByZXR1cm4gbSA+IDAgPyBgJHtofWggJHttfW1gIDogYCR7aH1oYDtcbiAgfVxuXG4gIC8vIEZ1bGwgZm9ybWF0OiBodW1hbi1yZWFkYWJsZSBtdWx0aS1wYXJ0XG4gIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKG1zIC8gTVNfSU5fREFZKTtcbiAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKChtcyAlIE1TX0lOX0RBWSkgLyBNU19JTl9IT1VSKTtcbiAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoKG1zICUgTVNfSU5fSE9VUikgLyBNU19JTl9NSU5VVEUpO1xuICBjb25zdCBzZWNvbmRzID0gTWF0aC5mbG9vcigobXMgJSBNU19JTl9NSU5VVEUpIC8gTVNfSU5fU0VDT05EKTtcblxuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcblxuICBpZiAoZGF5cyA+IDApIHtcbiAgICBwYXJ0cy5wdXNoKGAke2RheXN9ZGApO1xuICB9XG4gIGlmIChob3VycyA+IDApIHtcbiAgICBwYXJ0cy5wdXNoKGAke2hvdXJzfWhgKTtcbiAgfVxuICBpZiAobWludXRlcyA+IDApIHtcbiAgICBwYXJ0cy5wdXNoKGAke21pbnV0ZXN9bWApO1xuICB9XG4gIGlmIChob3VycyA8PSAxICYmIChzZWNvbmRzID4gMCB8fCBwYXJ0cy5sZW5ndGggPT09IDApKSB7XG4gICAgcGFydHMucHVzaChgJHtzZWNvbmRzfXNgKTtcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCcgJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZvcm1hdHRlZCBwYWdpbmF0aW9uIGRpc3BsYXkgc3RyaW5nXG4gKiBAcGFyYW0gY3VycmVudFBhZ2UgLSBUaGUgY3VycmVudCBwYWdlIG51bWJlclxuICogQHBhcmFtIHRvdGFsUGFnZXMgLSBUaGUgdG90YWwgbnVtYmVyIG9mIHBhZ2VzIHZpc2l0ZWQgc28gZmFyXG4gKiBAcGFyYW0gaGFzTW9yZSAtIFdoZXRoZXIgdGhlcmUgYXJlIG1vcmUgcGFnZXMgYXZhaWxhYmxlXG4gKiBAcmV0dXJucyBGb3JtYXR0ZWQgc3RyaW5nIGxpa2UgXCJQYWdlIDEgb2YgMytcIiBvciBcIlBhZ2UgMiBvZiAyXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhZ2luYXRpb25EaXNwbGF5KFxuICBjdXJyZW50UGFnZTogbnVtYmVyLFxuICB0b3RhbFBhZ2VzOiBudW1iZXIsXG4gIGhhc01vcmU6IGJvb2xlYW5cbik6IHN0cmluZyB7XG4gIGlmIChoYXNNb3JlKSB7XG4gICAgcmV0dXJuIGBQYWdlICR7Y3VycmVudFBhZ2V9IG9mICR7dG90YWxQYWdlc30rYDtcbiAgfVxuICByZXR1cm4gYFBhZ2UgJHtjdXJyZW50UGFnZX0gb2YgJHt0b3RhbFBhZ2VzfWA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIER1cmFibGUgQWdlbnQgVXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdGVwIGlzIGEgZG9TdHJlYW1TdGVwIChMTE0gY2FsbCB3aXRoIGNvbnZlcnNhdGlvbiBpbnB1dClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRG9TdHJlYW1TdGVwKHN0ZXBOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0ZXBOYW1lLmVuZHNXaXRoKCcvL2RvU3RyZWFtU3RlcCcpO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgdGhlIGNvbnZlcnNhdGlvbiBmcm9tIGEgaHlkcmF0ZWQgZG9TdHJlYW1TdGVwIGlucHV0LlxuICogZG9TdHJlYW1TdGVwIHNpZ25hdHVyZTogKGNvbnZlcnNhdGlvblByb21wdCwgbW9kZWwsIHdyaXRhYmxlLCB0b29scywgb3B0aW9ucylcbiAqIFNvIGlucHV0WzBdIGlzIHRoZSBjb252ZXJzYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0Q29udmVyc2F0aW9uKHN0ZXBJbnB1dDogdW5rbm93bik6IE1vZGVsTWVzc2FnZVtdIHwgbnVsbCB7XG4gIGlmICghQXJyYXkuaXNBcnJheShzdGVwSW5wdXQpIHx8IHN0ZXBJbnB1dC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGZpcnN0QXJnID0gc3RlcElucHV0WzBdO1xuXG4gIGlmICghQXJyYXkuaXNBcnJheShmaXJzdEFyZykpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGl0IGxvb2tzIGxpa2UgTW9kZWxNZXNzYWdlW11cbiAgaWYgKFxuICAgICFmaXJzdEFyZy5ldmVyeSgobXNnKSA9PiBtc2cgJiYgdHlwZW9mIG1zZyA9PT0gJ29iamVjdCcgJiYgJ3JvbGUnIGluIG1zZylcbiAgKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZmlyc3RBcmcgYXMgTW9kZWxNZXNzYWdlW107XG59XG5cbi8qKlxuICogQSBkb1N0cmVhbVN0ZXAgd2l0aCBpdHMgY29udmVyc2F0aW9uIGlucHV0IGV4dHJhY3RlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVhbVN0ZXAge1xuICBzdGVwSWQ6IHN0cmluZztcbiAgc3RlcE5hbWU6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgY29udmVyc2F0aW9uOiBNb2RlbE1lc3NhZ2VbXTtcbn1cblxuLyoqXG4gKiBJZGVudGlmaWVzIGFsbCBzdHJlYW0gc3RlcHMgKGRvU3RyZWFtU3RlcCkgaW4gYSBydW4gYW5kIGV4dHJhY3RzIHRoZWlyIGNvbnZlcnNhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmeVN0cmVhbVN0ZXBzKHN0ZXBzOiBTdGVwW10pOiBTdHJlYW1TdGVwW10ge1xuICByZXR1cm4gc3RlcHNcbiAgICAuZmlsdGVyKChzdGVwKSA9PiBpc0RvU3RyZWFtU3RlcChzdGVwLnN0ZXBOYW1lKSlcbiAgICAubWFwKChzdGVwKSA9PiB7XG4gICAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBzdGVwLnN0ZXBOYW1lLnNwbGl0KCcvLycpLnBvcCgpID8/ICd1bmtub3duJztcbiAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbiA9IGV4dHJhY3RDb252ZXJzYXRpb24oc3RlcC5pbnB1dCkgPz8gW107XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0ZXBJZDogc3RlcC5zdGVwSWQsXG4gICAgICAgIHN0ZXBOYW1lOiBzdGVwLnN0ZXBOYW1lLFxuICAgICAgICBkaXNwbGF5TmFtZTogZnVuY3Rpb25OYW1lLFxuICAgICAgICBjb252ZXJzYXRpb24sXG4gICAgICB9O1xuICAgIH0pO1xufVxuIl19
|
package/dist/styles.css
CHANGED
|
@@ -12,6 +12,9 @@
|
|
|
12
12
|
* import '@workflow/web-shared/styles.css';
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
+
@custom-variant dark-theme (&:where(.dark-theme, .dark-theme *, .dark, .dark *, [data-theme="dark"], [data-theme="dark"] *));
|
|
16
|
+
@custom-variant light-theme (&:where(.light-theme, .light-theme *, .light, .light *));
|
|
17
|
+
|
|
15
18
|
:root {
|
|
16
19
|
/* Background */
|
|
17
20
|
--ds-background-100: hsl(0, 0%, 100%);
|
|
@@ -100,6 +103,9 @@
|
|
|
100
103
|
|
|
101
104
|
/* Shadows */
|
|
102
105
|
--ds-shadow-small: 0px 1px 2px rgba(0, 0, 0, 0.04);
|
|
106
|
+
--ds-shadow-tooltip:
|
|
107
|
+
0 0 0 1px rgba(0, 0, 0, 0.08), 0px 1px 1px rgba(0, 0, 0, 0.02),
|
|
108
|
+
0px 4px 8px rgba(0, 0, 0, 0.04), 0 0 0 1px var(--ds-background-200);
|
|
103
109
|
}
|
|
104
110
|
|
|
105
111
|
/* Dark theme defaults */
|
|
@@ -182,5 +188,8 @@
|
|
|
182
188
|
--ds-pink-900: hsl(336, 80%, 70%);
|
|
183
189
|
|
|
184
190
|
--ds-shadow-small: 0px 1px 2px rgba(0, 0, 0, 0.3);
|
|
191
|
+
--ds-shadow-tooltip:
|
|
192
|
+
0 0 0 1px rgba(255, 255, 255, 0.145), 0px 1px 1px rgba(0, 0, 0, 0.02),
|
|
193
|
+
0px 4px 8px rgba(0, 0, 0, 0.04), 0 0 0 1px var(--ds-background-200);
|
|
185
194
|
}
|
|
186
195
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workflow/web-shared",
|
|
3
3
|
"description": "Shared components for Workflow Observability UI",
|
|
4
|
-
"version": "4.1.
|
|
4
|
+
"version": "4.1.13",
|
|
5
5
|
"private": false,
|
|
6
6
|
"files": [
|
|
7
7
|
"dist",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"directory": "packages/web-shared"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
+
"@radix-ui/react-slot": "1.1.1",
|
|
41
42
|
"@tailwindcss/postcss": "4.3.0",
|
|
42
43
|
"class-variance-authority": "0.7.1",
|
|
43
44
|
"clsx": "2.1.1",
|
|
@@ -46,15 +47,16 @@
|
|
|
46
47
|
"react": "19.1.0",
|
|
47
48
|
"react-dom": "19.1.0",
|
|
48
49
|
"react-inspector": "9.0.0",
|
|
50
|
+
"react-use-measure": "2.1.1",
|
|
49
51
|
"react-virtuoso": "4.18.1",
|
|
50
52
|
"shiki": "4.2.0",
|
|
51
53
|
"sonner": "2.0.7",
|
|
52
54
|
"streamdown": "2.3.0",
|
|
53
55
|
"tailwind-merge": "3.5.0",
|
|
54
56
|
"tailwindcss": "4",
|
|
55
|
-
"@workflow/core": "4.
|
|
56
|
-
"@workflow/utils": "4.1.
|
|
57
|
-
"@workflow/world": "4.2.
|
|
57
|
+
"@workflow/core": "4.6.1",
|
|
58
|
+
"@workflow/utils": "4.1.4",
|
|
59
|
+
"@workflow/world": "4.2.1"
|
|
58
60
|
},
|
|
59
61
|
"devDependencies": {
|
|
60
62
|
"@biomejs/biome": "^2.4.4",
|
|
@@ -62,8 +64,8 @@
|
|
|
62
64
|
"@types/react": "19",
|
|
63
65
|
"@types/react-dom": "19",
|
|
64
66
|
"ai": "6.0.116",
|
|
65
|
-
"typescript": "^
|
|
66
|
-
"vitest": "^4.
|
|
67
|
+
"typescript": "^6.0.3",
|
|
68
|
+
"vitest": "^4.1.10",
|
|
67
69
|
"@workflow/tsconfig": "4.0.1"
|
|
68
70
|
},
|
|
69
71
|
"scripts": {
|
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
import { isEncryptedMarker } from '../lib/hydration';
|
|
20
20
|
import { useToast } from '../lib/toast';
|
|
21
21
|
import { formatDuration } from '../lib/utils';
|
|
22
|
+
import { ContextCardProvider } from './ui/context-card';
|
|
22
23
|
import { DataInspector, DecryptClickContext } from './ui/data-inspector';
|
|
23
24
|
import { DecryptButton } from './ui/decrypt-button';
|
|
24
25
|
import {
|
|
@@ -1162,7 +1163,7 @@ function EventRow({
|
|
|
1162
1163
|
// Main component
|
|
1163
1164
|
// ──────────────────────────────────────────────────────────────────────────
|
|
1164
1165
|
|
|
1165
|
-
|
|
1166
|
+
function EventListViewInner({
|
|
1166
1167
|
events,
|
|
1167
1168
|
run,
|
|
1168
1169
|
onLoadEventData,
|
|
@@ -1745,3 +1746,11 @@ export function EventListView({
|
|
|
1745
1746
|
</DecryptClickContext.Provider>
|
|
1746
1747
|
);
|
|
1747
1748
|
}
|
|
1749
|
+
|
|
1750
|
+
export function EventListView(props: EventsListProps) {
|
|
1751
|
+
return (
|
|
1752
|
+
<ContextCardProvider>
|
|
1753
|
+
<EventListViewInner {...props} />
|
|
1754
|
+
</ContextCardProvider>
|
|
1755
|
+
);
|
|
1756
|
+
}
|
|
@@ -3,17 +3,19 @@
|
|
|
3
3
|
import { parseStepName, parseWorkflowName } from '@workflow/utils/parse-name';
|
|
4
4
|
import type { Event, Hook, Step, WorkflowRun } from '@workflow/world';
|
|
5
5
|
import type { ModelMessage } from 'ai';
|
|
6
|
+
import { format } from 'date-fns';
|
|
6
7
|
import { Lock } from 'lucide-react';
|
|
7
|
-
import { Spinner } from '../ui/spinner';
|
|
8
8
|
import type { KeyboardEvent, ReactNode } from 'react';
|
|
9
9
|
import { useCallback, useContext, useMemo, useState } from 'react';
|
|
10
10
|
import { isEncryptedMarker, isExpiredMarker } from '../../lib/hydration';
|
|
11
11
|
import { useToast } from '../../lib/toast';
|
|
12
12
|
import { extractConversation, isDoStreamStep } from '../../lib/utils';
|
|
13
|
+
import { ContextCardProvider } from '../ui/context-card';
|
|
13
14
|
import { DecryptClickContext, StreamClickContext } from '../ui/data-inspector';
|
|
14
15
|
import { ErrorCard } from '../ui/error-card';
|
|
15
16
|
import { ErrorStackBlock, isStructuredError } from '../ui/error-stack-block';
|
|
16
17
|
import { Skeleton } from '../ui/skeleton';
|
|
18
|
+
import { Spinner } from '../ui/spinner';
|
|
17
19
|
import { TimestampTooltip } from '../ui/timestamp-tooltip';
|
|
18
20
|
import { ConversationView } from './conversation-view';
|
|
19
21
|
import { CopyableDataBlock } from './copyable-data-block';
|
|
@@ -255,6 +257,7 @@ type AttributeKey =
|
|
|
255
257
|
| keyof WorkflowRun
|
|
256
258
|
| keyof Hook
|
|
257
259
|
| keyof Event
|
|
260
|
+
| 'occurredAt'
|
|
258
261
|
| 'moduleSpecifier'
|
|
259
262
|
| 'eventData'
|
|
260
263
|
| 'resumeAt'
|
|
@@ -287,6 +290,7 @@ const attributeOrder: AttributeKey[] = [
|
|
|
287
290
|
'projectId',
|
|
288
291
|
'environment',
|
|
289
292
|
'executionContext',
|
|
293
|
+
'occurredAt',
|
|
290
294
|
'createdAt',
|
|
291
295
|
'startedAt',
|
|
292
296
|
'updatedAt',
|
|
@@ -312,6 +316,7 @@ const sortByAttributeOrder = (a: string, b: string): number => {
|
|
|
312
316
|
*/
|
|
313
317
|
const attributeDisplayNames: Partial<Record<AttributeKey, string>> = {
|
|
314
318
|
workflowCoreVersion: '@workflow/core version',
|
|
319
|
+
occurredAt: 'Occurred',
|
|
315
320
|
receivedCount: 'times resolved',
|
|
316
321
|
};
|
|
317
322
|
|
|
@@ -352,15 +357,7 @@ const parseDateValue = (value: unknown): Date | null => {
|
|
|
352
357
|
};
|
|
353
358
|
|
|
354
359
|
const formatLocalMillisecondTime = (date: Date): string =>
|
|
355
|
-
date.
|
|
356
|
-
year: 'numeric',
|
|
357
|
-
month: 'numeric',
|
|
358
|
-
day: 'numeric',
|
|
359
|
-
hour: 'numeric',
|
|
360
|
-
minute: 'numeric',
|
|
361
|
-
second: 'numeric',
|
|
362
|
-
fractionalSecondDigits: 3,
|
|
363
|
-
});
|
|
360
|
+
format(date, 'MMM dd HH:mm:ss.SS OO').toUpperCase();
|
|
364
361
|
|
|
365
362
|
export const localMillisecondTime = (value: unknown): string => {
|
|
366
363
|
const date = parseDateValue(value);
|
|
@@ -368,7 +365,6 @@ export const localMillisecondTime = (value: unknown): string => {
|
|
|
368
365
|
return '-';
|
|
369
366
|
}
|
|
370
367
|
|
|
371
|
-
// e.g. 12/17/2025, 9:08:55.182 AM
|
|
372
368
|
return formatLocalMillisecondTime(date);
|
|
373
369
|
};
|
|
374
370
|
|
|
@@ -430,6 +426,7 @@ const attributeToDisplayFn: Record<
|
|
|
430
426
|
environment: (_value: unknown) => null,
|
|
431
427
|
executionContext: (_value: unknown) => null,
|
|
432
428
|
// Dates — wrapped with TimestampTooltip showing UTC/local + relative time
|
|
429
|
+
occurredAt: timestampWithTooltipOrNull,
|
|
433
430
|
createdAt: timestampWithTooltipOrNull,
|
|
434
431
|
startedAt: timestampWithTooltipOrNull,
|
|
435
432
|
updatedAt: timestampWithTooltipOrNull,
|
|
@@ -828,122 +825,126 @@ export const AttributePanel = ({
|
|
|
828
825
|
}, []);
|
|
829
826
|
|
|
830
827
|
return (
|
|
831
|
-
<
|
|
832
|
-
<
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
828
|
+
<ContextCardProvider>
|
|
829
|
+
<StreamClickContext.Provider value={onStreamClick}>
|
|
830
|
+
<DecryptClickContext.Provider
|
|
831
|
+
value={onDecrypt ? { onDecrypt, isDecrypting } : undefined}
|
|
832
|
+
>
|
|
833
|
+
<div>
|
|
834
|
+
{/* Basic attributes in a vertical layout with border */}
|
|
835
|
+
{visibleBasicAttributes.length > 0 && (
|
|
836
|
+
<div
|
|
837
|
+
className="mb-3 flex flex-col overflow-hidden rounded-lg border"
|
|
838
|
+
style={{
|
|
839
|
+
borderColor: 'var(--ds-gray-300)',
|
|
840
|
+
}}
|
|
841
|
+
>
|
|
842
|
+
{orderedBasicAttributes.map((attribute, index) => {
|
|
843
|
+
const displayValue = attributeToDisplayFn[
|
|
844
|
+
attribute as keyof typeof attributeToDisplayFn
|
|
845
|
+
]?.(displayData[attribute as keyof typeof displayData]);
|
|
846
|
+
const isModuleSpecifier = attribute === 'moduleSpecifier';
|
|
847
|
+
const moduleSpecifierValue =
|
|
848
|
+
typeof displayValue === 'string'
|
|
849
|
+
? displayValue
|
|
850
|
+
: String(
|
|
851
|
+
displayValue ?? displayData.moduleSpecifier ?? ''
|
|
852
|
+
);
|
|
853
|
+
const shouldCapitalizeLabel =
|
|
854
|
+
attribute !== 'workflowCoreVersion';
|
|
855
|
+
const showResumeAtSkeleton =
|
|
856
|
+
isLoading && resource === 'sleep' && !displayData.resumeAt;
|
|
857
|
+
const showDivider =
|
|
858
|
+
index < orderedBasicAttributes.length - 1 ||
|
|
859
|
+
showResumeAtSkeleton;
|
|
860
|
+
|
|
861
|
+
return (
|
|
862
|
+
<div key={attribute} className="py-1">
|
|
863
|
+
<div className="flex min-h-[32px] items-center justify-between gap-4 rounded-sm px-2.5 py-1">
|
|
864
|
+
<span
|
|
865
|
+
className={
|
|
866
|
+
shouldCapitalizeLabel
|
|
867
|
+
? 'text-[14px] first-letter:uppercase'
|
|
868
|
+
: 'text-[14px]'
|
|
869
|
+
}
|
|
870
|
+
style={{ color: 'var(--ds-gray-700)' }}
|
|
871
|
+
>
|
|
872
|
+
{getAttributeDisplayName(attribute)}
|
|
873
|
+
</span>
|
|
874
|
+
{isModuleSpecifier ? (
|
|
875
|
+
<button
|
|
876
|
+
type="button"
|
|
877
|
+
className="min-w-0 max-w-[70%] truncate text-right text-[13px] font-mono"
|
|
878
|
+
style={{
|
|
879
|
+
color: 'var(--ds-gray-1000)',
|
|
880
|
+
background: 'transparent',
|
|
881
|
+
border: 'none',
|
|
882
|
+
padding: 0,
|
|
883
|
+
}}
|
|
884
|
+
title={moduleSpecifierValue}
|
|
885
|
+
onClick={() =>
|
|
886
|
+
handleCopyModuleSpecifier(moduleSpecifierValue)
|
|
887
|
+
}
|
|
888
|
+
>
|
|
889
|
+
{moduleSpecifierValue}
|
|
890
|
+
</button>
|
|
891
|
+
) : (
|
|
892
|
+
<span
|
|
893
|
+
className="min-w-0 max-w-[70%] truncate text-right text-[13px] font-mono"
|
|
894
|
+
style={{ color: 'var(--ds-gray-1000)' }}
|
|
895
|
+
>
|
|
896
|
+
{displayValue}
|
|
897
|
+
</span>
|
|
898
|
+
)}
|
|
899
|
+
</div>
|
|
900
|
+
{showDivider ? (
|
|
901
|
+
<div
|
|
902
|
+
className="mx-2.5 border-b"
|
|
903
|
+
style={{ borderColor: 'var(--ds-gray-300)' }}
|
|
904
|
+
/>
|
|
905
|
+
) : null}
|
|
906
|
+
</div>
|
|
907
|
+
);
|
|
908
|
+
})}
|
|
909
|
+
{isLoading && resource === 'sleep' && !displayData.resumeAt && (
|
|
910
|
+
<div className="py-1">
|
|
863
911
|
<div className="flex min-h-[32px] items-center justify-between gap-4 rounded-sm px-2.5 py-1">
|
|
864
912
|
<span
|
|
865
|
-
className=
|
|
866
|
-
shouldCapitalizeLabel
|
|
867
|
-
? 'text-[14px] first-letter:uppercase'
|
|
868
|
-
: 'text-[14px]'
|
|
869
|
-
}
|
|
913
|
+
className="text-[14px] first-letter:uppercase"
|
|
870
914
|
style={{ color: 'var(--ds-gray-700)' }}
|
|
871
915
|
>
|
|
872
|
-
|
|
916
|
+
resumeAt
|
|
873
917
|
</span>
|
|
874
|
-
|
|
875
|
-
<button
|
|
876
|
-
type="button"
|
|
877
|
-
className="min-w-0 max-w-[70%] truncate text-right text-[13px] font-mono"
|
|
878
|
-
style={{
|
|
879
|
-
color: 'var(--ds-gray-1000)',
|
|
880
|
-
background: 'transparent',
|
|
881
|
-
border: 'none',
|
|
882
|
-
padding: 0,
|
|
883
|
-
}}
|
|
884
|
-
title={moduleSpecifierValue}
|
|
885
|
-
onClick={() =>
|
|
886
|
-
handleCopyModuleSpecifier(moduleSpecifierValue)
|
|
887
|
-
}
|
|
888
|
-
>
|
|
889
|
-
{moduleSpecifierValue}
|
|
890
|
-
</button>
|
|
891
|
-
) : (
|
|
892
|
-
<span
|
|
893
|
-
className="min-w-0 max-w-[70%] truncate text-right text-[13px] font-mono"
|
|
894
|
-
style={{ color: 'var(--ds-gray-1000)' }}
|
|
895
|
-
>
|
|
896
|
-
{displayValue}
|
|
897
|
-
</span>
|
|
898
|
-
)}
|
|
918
|
+
<Skeleton className="h-4 w-[55%]" />
|
|
899
919
|
</div>
|
|
900
|
-
{showDivider ? (
|
|
901
|
-
<div
|
|
902
|
-
className="mx-2.5 border-b"
|
|
903
|
-
style={{ borderColor: 'var(--ds-gray-300)' }}
|
|
904
|
-
/>
|
|
905
|
-
) : null}
|
|
906
920
|
</div>
|
|
907
|
-
)
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
<AttributeBlock
|
|
936
|
-
isLoading={isLoading}
|
|
937
|
-
key={attribute}
|
|
938
|
-
attribute={attribute}
|
|
939
|
-
value={displayData[attribute as keyof typeof displayData]}
|
|
940
|
-
context={displayContext}
|
|
941
|
-
/>
|
|
942
|
-
))}
|
|
943
|
-
</>
|
|
944
|
-
)}
|
|
945
|
-
</div>
|
|
946
|
-
</DecryptClickContext.Provider>
|
|
947
|
-
</StreamClickContext.Provider>
|
|
921
|
+
)}
|
|
922
|
+
</div>
|
|
923
|
+
)}
|
|
924
|
+
{error ? (
|
|
925
|
+
<ErrorCard
|
|
926
|
+
title="Failed to load resource details"
|
|
927
|
+
details={error.message}
|
|
928
|
+
className="my-4"
|
|
929
|
+
/>
|
|
930
|
+
) : hasExpired ? (
|
|
931
|
+
<ExpiredDataMessage />
|
|
932
|
+
) : (
|
|
933
|
+
<>
|
|
934
|
+
{resolvedAttributes.map((attribute) => (
|
|
935
|
+
<AttributeBlock
|
|
936
|
+
isLoading={isLoading}
|
|
937
|
+
key={attribute}
|
|
938
|
+
attribute={attribute}
|
|
939
|
+
value={displayData[attribute as keyof typeof displayData]}
|
|
940
|
+
context={displayContext}
|
|
941
|
+
/>
|
|
942
|
+
))}
|
|
943
|
+
</>
|
|
944
|
+
)}
|
|
945
|
+
</div>
|
|
946
|
+
</DecryptClickContext.Provider>
|
|
947
|
+
</StreamClickContext.Provider>
|
|
948
|
+
</ContextCardProvider>
|
|
948
949
|
);
|
|
949
950
|
};
|
|
@@ -1314,10 +1314,10 @@
|
|
|
1314
1314
|
.segQueued {
|
|
1315
1315
|
background: repeating-linear-gradient(
|
|
1316
1316
|
45deg,
|
|
1317
|
-
var(--ds-gray-
|
|
1318
|
-
var(--ds-gray-
|
|
1319
|
-
var(--ds-gray-
|
|
1320
|
-
var(--ds-gray-
|
|
1317
|
+
var(--ds-gray-200),
|
|
1318
|
+
var(--ds-gray-200) 6px,
|
|
1319
|
+
var(--ds-gray-100) 6px,
|
|
1320
|
+
var(--ds-gray-100) 12px
|
|
1321
1321
|
);
|
|
1322
1322
|
}
|
|
1323
1323
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { cva, type VariantProps } from 'class-variance-authority';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
|
|
4
|
-
import { cn } from '../../lib/
|
|
4
|
+
import { cn } from '../../lib/cn';
|
|
5
5
|
|
|
6
6
|
const alertVariants = cva(
|
|
7
7
|
'relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4',
|