@nice-code/action 0.2.18 → 0.2.19

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.
@@ -1957,7 +1957,7 @@ class ActionDevtoolsCore {
1957
1957
  }
1958
1958
  }
1959
1959
  // src/devtools/browser/NiceActionDevtools.tsx
1960
- import { useEffect as useEffect3, useMemo as useMemo2, useRef, useState as useState9 } from "react";
1960
+ import { useEffect as useEffect3, useMemo as useMemo2, useRef as useRef2, useState as useState9 } from "react";
1961
1961
 
1962
1962
  // src/devtools/core/devtools_colors.ts
1963
1963
  var DEVTOOL_COLOR_SEMANTIC_ERROR = "#FF5C5C";
@@ -2068,7 +2068,7 @@ var SEMANTIC_COLORS = {
2068
2068
  };
2069
2069
 
2070
2070
  // src/devtools/browser/components/action_detail/ActionDetailPanel.tsx
2071
- import { useMemo, useState as useState6 } from "react";
2071
+ import { useMemo, useState as useState7 } from "react";
2072
2072
 
2073
2073
  // src/devtools/browser/ui_util/size.ts
2074
2074
  function getSizeValue(size) {
@@ -2392,7 +2392,13 @@ function NiceErrorDisplay({
2392
2392
  }
2393
2393
 
2394
2394
  // src/devtools/browser/components/StackTraceSection.tsx
2395
- import { useEffect, useState as useState2 } from "react";
2395
+ import { ExternalLink } from "lucide-react";
2396
+ import { useEffect, useRef, useState as useState2 } from "react";
2397
+
2398
+ // src/devtools/browser/devtools_storage.ts
2399
+ import { createTypedWebLocalStorage } from "@nice-code/util";
2400
+ var devtools_storage = createTypedWebLocalStorage(window.localStorage, "nice-action-devtools::");
2401
+ devtools_storage.updateJsonWithDef("runtimeToProjectFilePath", {}, (prev) => prev);
2396
2402
 
2397
2403
  // ../../node_modules/.bun/source-map-js@1.2.1/node_modules/source-map-js/source-map.js
2398
2404
  var $SourceMapGenerator = require_source_map_generator().SourceMapGenerator;
@@ -2507,7 +2513,7 @@ async function resolveSourceMapPositions(frames) {
2507
2513
  const resolved = await resolveCompiledPosition(frame.file, frame.line, frame.col ?? 0);
2508
2514
  if (resolved == null)
2509
2515
  return frame;
2510
- return { ...frame, file: resolved.file, line: resolved.line, col: resolved.col };
2516
+ return { ...frame, originalFile: frame.file, file: resolved.file, line: resolved.line, col: resolved.col };
2511
2517
  }));
2512
2518
  }
2513
2519
  function formatFrameFile(file) {
@@ -2525,7 +2531,299 @@ function formatFrameFile(file) {
2525
2531
  const tail = filtered.slice(-4);
2526
2532
  return tail.join("/") || file;
2527
2533
  }
2528
- function countUserFrames(stack) {
2534
+ function getOriginUrl(frame) {
2535
+ const candidate = frame.originalFile ?? frame.file;
2536
+ if (candidate == null)
2537
+ return null;
2538
+ try {
2539
+ new URL(candidate);
2540
+ return candidate;
2541
+ } catch {
2542
+ return null;
2543
+ }
2544
+ }
2545
+ function frameNeedsProjectRoot(frame) {
2546
+ if (frame.isInternal)
2547
+ return false;
2548
+ const originUrl = getOriginUrl(frame);
2549
+ if (originUrl == null)
2550
+ return false;
2551
+ const path = new URL(originUrl).pathname.split("?")[0] ?? "";
2552
+ return !path.startsWith("/@fs/");
2553
+ }
2554
+ function buildVscodeUrl(frame, projectRoot) {
2555
+ if (frame.line == null)
2556
+ return null;
2557
+ const originUrl = getOriginUrl(frame);
2558
+ if (originUrl != null) {
2559
+ let path = new URL(originUrl).pathname.split("?")[0] ?? "";
2560
+ if (path.startsWith("/@fs/")) {
2561
+ path = path.slice(5);
2562
+ if (/^\/[a-zA-Z]:\//.test(path))
2563
+ path = path.slice(1);
2564
+ return `vscode://file/${path}:${frame.line}:${frame.col ?? 1}`;
2565
+ }
2566
+ if (projectRoot == null)
2567
+ return null;
2568
+ const normalRoot2 = projectRoot.replace(/[/\\]+$/, "").replace(/\\/g, "/");
2569
+ return `vscode://file/${normalRoot2}${path}:${frame.line}:${frame.col ?? 1}`;
2570
+ }
2571
+ const filePath = frame.file;
2572
+ if (filePath == null)
2573
+ return null;
2574
+ const normalPath = filePath.replace(/\\/g, "/");
2575
+ if (/^[a-zA-Z]:\//.test(normalPath)) {
2576
+ return `vscode://file/${normalPath}:${frame.line}:${frame.col ?? 1}`;
2577
+ }
2578
+ if (/^\/[a-zA-Z]:\//.test(normalPath)) {
2579
+ return `vscode://file/${normalPath.slice(1)}:${frame.line}:${frame.col ?? 1}`;
2580
+ }
2581
+ if (normalPath.startsWith("/")) {
2582
+ if (projectRoot == null)
2583
+ return null;
2584
+ const normalRoot2 = projectRoot.replace(/[/\\]+$/, "").replace(/\\/g, "/");
2585
+ return `vscode://file/${normalRoot2}${normalPath}:${frame.line}:${frame.col ?? 1}`;
2586
+ }
2587
+ if (projectRoot == null)
2588
+ return null;
2589
+ const normalRoot = projectRoot.replace(/[/\\]+$/, "").replace(/\\/g, "/");
2590
+ return `vscode://file/${normalRoot}/${normalPath}:${frame.line}:${frame.col ?? 1}`;
2591
+ }
2592
+ function ProjectRootSetupModal({
2593
+ envId,
2594
+ currentValue,
2595
+ onSave,
2596
+ onCancel
2597
+ }) {
2598
+ const [value, setValue] = useState2(currentValue);
2599
+ const inputRef = useRef(null);
2600
+ useEffect(() => {
2601
+ inputRef.current?.focus();
2602
+ inputRef.current?.select();
2603
+ }, []);
2604
+ useEffect(() => {
2605
+ const handler = (e) => {
2606
+ if (e.key === "Escape")
2607
+ onCancel();
2608
+ };
2609
+ window.addEventListener("keydown", handler);
2610
+ return () => window.removeEventListener("keydown", handler);
2611
+ }, [onCancel]);
2612
+ const handleSubmit = (e) => {
2613
+ e.preventDefault();
2614
+ const trimmed = value.trim();
2615
+ if (trimmed !== "")
2616
+ onSave(trimmed);
2617
+ };
2618
+ return /* @__PURE__ */ jsxDEV4("div", {
2619
+ style: {
2620
+ position: "fixed",
2621
+ inset: 0,
2622
+ zIndex: 2147483647,
2623
+ display: "flex",
2624
+ alignItems: "center",
2625
+ justifyContent: "center"
2626
+ },
2627
+ children: [
2628
+ /* @__PURE__ */ jsxDEV4("div", {
2629
+ onClick: onCancel,
2630
+ style: { position: "absolute", inset: 0, background: "rgba(0, 0, 0, 0.72)" }
2631
+ }, undefined, false, undefined, this),
2632
+ /* @__PURE__ */ jsxDEV4("form", {
2633
+ onSubmit: handleSubmit,
2634
+ style: {
2635
+ position: "relative",
2636
+ background: DEVTOOL_TOOLTIP_BACKGROUND,
2637
+ border: `1px solid ${DEVTOOL_TOOLTIP_BORDER}`,
2638
+ borderRadius: "8px",
2639
+ width: "420px",
2640
+ maxWidth: "90vw",
2641
+ boxShadow: "0 8px 32px rgba(0, 0, 0, 0.8)",
2642
+ overflow: "hidden",
2643
+ display: "flex",
2644
+ flexDirection: "column"
2645
+ },
2646
+ children: [
2647
+ /* @__PURE__ */ jsxDEV4("div", {
2648
+ style: {
2649
+ background: DEVTOOL_TOOLTIP_TITLE_BACKGROUND,
2650
+ borderBottom: `1px solid ${DEVTOOL_TOOLTIP_BORDER}`,
2651
+ padding: "10px 14px"
2652
+ },
2653
+ children: [
2654
+ /* @__PURE__ */ jsxDEV4("div", {
2655
+ style: {
2656
+ color: DEVTOOL_COLOR_TEXT_EMPHASIS,
2657
+ fontSize: "12px",
2658
+ fontWeight: 600,
2659
+ marginBottom: "2px"
2660
+ },
2661
+ children: "Set project root"
2662
+ }, undefined, false, undefined, this),
2663
+ /* @__PURE__ */ jsxDEV4("div", {
2664
+ style: { color: DEVTOOL_COLOR_TEXT_MUTED, fontSize: "10px" },
2665
+ children: [
2666
+ "Runtime:",
2667
+ " ",
2668
+ /* @__PURE__ */ jsxDEV4("span", {
2669
+ style: {
2670
+ color: DEVTOOL_COLOR_SEMANTIC_SYSTEM,
2671
+ fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace"
2672
+ },
2673
+ children: envId
2674
+ }, undefined, false, undefined, this)
2675
+ ]
2676
+ }, undefined, true, undefined, this)
2677
+ ]
2678
+ }, undefined, true, undefined, this),
2679
+ /* @__PURE__ */ jsxDEV4("div", {
2680
+ style: { padding: "14px", display: "flex", flexDirection: "column", gap: "8px" },
2681
+ children: [
2682
+ /* @__PURE__ */ jsxDEV4("div", {
2683
+ style: { color: DEVTOOL_COLOR_TEXT_MUTED, fontSize: "10px", lineHeight: 1.4 },
2684
+ children: [
2685
+ "Provide the absolute path to this project's root so that root-relative source file paths (e.g.",
2686
+ " ",
2687
+ /* @__PURE__ */ jsxDEV4("span", {
2688
+ style: {
2689
+ fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace"
2690
+ },
2691
+ children: "src/App.tsx"
2692
+ }, undefined, false, undefined, this),
2693
+ ") can be opened in VS Code."
2694
+ ]
2695
+ }, undefined, true, undefined, this),
2696
+ /* @__PURE__ */ jsxDEV4("input", {
2697
+ ref: inputRef,
2698
+ value,
2699
+ onChange: (e) => setValue(e.currentTarget.value),
2700
+ placeholder: "e.g. C:/d/nice-code/packages/demo-frontend",
2701
+ style: {
2702
+ background: DEVTOOL_STACK_TRACE_BACKGROUND,
2703
+ border: `1px solid ${DEVTOOL_TOOLTIP_BORDER}`,
2704
+ borderRadius: "4px",
2705
+ color: DEVTOOL_COLOR_TEXT_SECONDARY,
2706
+ fontSize: "11px",
2707
+ fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace",
2708
+ padding: "7px 9px",
2709
+ outline: "none",
2710
+ width: "100%",
2711
+ boxSizing: "border-box"
2712
+ }
2713
+ }, undefined, false, undefined, this)
2714
+ ]
2715
+ }, undefined, true, undefined, this),
2716
+ /* @__PURE__ */ jsxDEV4("div", {
2717
+ style: {
2718
+ display: "flex",
2719
+ justifyContent: "flex-end",
2720
+ gap: "8px",
2721
+ padding: "10px 14px",
2722
+ borderTop: `1px solid ${DEVTOOL_PANEL_BORDER}`
2723
+ },
2724
+ children: [
2725
+ /* @__PURE__ */ jsxDEV4("button", {
2726
+ type: "button",
2727
+ onClick: onCancel,
2728
+ style: {
2729
+ background: "transparent",
2730
+ border: `1px solid ${DEVTOOL_PANEL_BORDER}`,
2731
+ borderRadius: "4px",
2732
+ color: DEVTOOL_COLOR_TEXT_MUTED,
2733
+ fontSize: "11px",
2734
+ padding: "5px 12px",
2735
+ cursor: "pointer"
2736
+ },
2737
+ children: "Cancel"
2738
+ }, undefined, false, undefined, this),
2739
+ /* @__PURE__ */ jsxDEV4("button", {
2740
+ type: "submit",
2741
+ disabled: value.trim() === "",
2742
+ style: {
2743
+ background: `${DEVTOOL_COLOR_SEMANTIC_SYSTEM}22`,
2744
+ border: `1px solid ${DEVTOOL_COLOR_SEMANTIC_SYSTEM}66`,
2745
+ borderRadius: "4px",
2746
+ color: DEVTOOL_COLOR_SEMANTIC_SYSTEM,
2747
+ fontSize: "11px",
2748
+ padding: "5px 12px",
2749
+ cursor: value.trim() === "" ? "not-allowed" : "pointer",
2750
+ opacity: value.trim() === "" ? 0.5 : 1
2751
+ },
2752
+ children: "Save"
2753
+ }, undefined, false, undefined, this)
2754
+ ]
2755
+ }, undefined, true, undefined, this)
2756
+ ]
2757
+ }, undefined, true, undefined, this)
2758
+ ]
2759
+ }, undefined, true, undefined, this);
2760
+ }
2761
+ function OpenInVscodeButton({
2762
+ frame,
2763
+ projectRoot,
2764
+ onNeedSetup
2765
+ }) {
2766
+ const [hovered, setHovered] = useState2(false);
2767
+ const needsSetup = frameNeedsProjectRoot(frame) && projectRoot == null;
2768
+ const url = buildVscodeUrl(frame, projectRoot);
2769
+ if (frame.file == null || frame.line == null)
2770
+ return null;
2771
+ if (!needsSetup && url == null)
2772
+ return null;
2773
+ const baseStyle = {
2774
+ position: "absolute",
2775
+ bottom: "3px",
2776
+ right: "4px",
2777
+ display: "flex",
2778
+ alignItems: "center",
2779
+ justifyContent: "center",
2780
+ width: "16px",
2781
+ height: "16px",
2782
+ opacity: hovered ? 0.85 : 0.25,
2783
+ transition: "opacity 0.15s ease",
2784
+ cursor: "pointer",
2785
+ flexShrink: 0
2786
+ };
2787
+ if (needsSetup) {
2788
+ return /* @__PURE__ */ jsxDEV4("button", {
2789
+ onClick: (e) => {
2790
+ e.stopPropagation();
2791
+ onNeedSetup();
2792
+ },
2793
+ onMouseEnter: () => setHovered(true),
2794
+ onMouseLeave: () => setHovered(false),
2795
+ title: "Set project root to open in VS Code",
2796
+ style: {
2797
+ ...baseStyle,
2798
+ color: DEVTOOL_COLOR_SEMANTIC_WARNING,
2799
+ background: "none",
2800
+ border: "none",
2801
+ padding: 0
2802
+ },
2803
+ children: /* @__PURE__ */ jsxDEV4(ExternalLink, {
2804
+ size: 10,
2805
+ strokeWidth: 1.8
2806
+ }, undefined, false, undefined, this)
2807
+ }, undefined, false, undefined, this);
2808
+ }
2809
+ return /* @__PURE__ */ jsxDEV4("a", {
2810
+ href: url,
2811
+ onClick: (e) => e.stopPropagation(),
2812
+ onMouseEnter: () => setHovered(true),
2813
+ onMouseLeave: () => setHovered(false),
2814
+ title: "Open in VS Code",
2815
+ style: {
2816
+ ...baseStyle,
2817
+ color: DEVTOOL_COLOR_TEXT_SECONDARY,
2818
+ textDecoration: "none"
2819
+ },
2820
+ children: /* @__PURE__ */ jsxDEV4(ExternalLink, {
2821
+ size: 10,
2822
+ strokeWidth: 1.8
2823
+ }, undefined, false, undefined, this)
2824
+ }, undefined, false, undefined, this);
2825
+ }
2826
+ function countUserFrames(_runtime, stack) {
2529
2827
  if (stack == null)
2530
2828
  return 0;
2531
2829
  return parseStackFrames(stack).filter((f) => !f.isInternal).length;
@@ -2534,10 +2832,16 @@ function StackTraceSection({
2534
2832
  label,
2535
2833
  stack,
2536
2834
  color = DEVTOOL_COLOR_SEMANTIC_SYSTEM,
2835
+ runtime,
2537
2836
  minFrameCount
2538
2837
  }) {
2539
2838
  const [showAll, setShowAll] = useState2(false);
2540
2839
  const [resolvedFrames, setResolvedFrames] = useState2(null);
2840
+ const [projectRootMap, setProjectRootMap] = useState2({});
2841
+ const [showSetupModal, setShowSetupModal] = useState2(false);
2842
+ useEffect(() => {
2843
+ devtools_storage.getJsonOrDef("runtimeToProjectFilePath", {}).then((map) => setProjectRootMap(map));
2844
+ }, []);
2541
2845
  useEffect(() => {
2542
2846
  if (stack == null)
2543
2847
  return;
@@ -2561,6 +2865,16 @@ function StackTraceSection({
2561
2865
  const phantomFrameCount = !showAll ? Math.max(0, (minFrameCount ?? 0) - displayFrames.length) : 0;
2562
2866
  if (allFrames.length === 0)
2563
2867
  return null;
2868
+ const runtimeKey = `envId[${runtime.envId}]`;
2869
+ const projectRoot = projectRootMap[runtimeKey] ?? null;
2870
+ const handleSaveProjectRoot = (path) => {
2871
+ setProjectRootMap((prev) => ({ ...prev, [runtimeKey]: path }));
2872
+ setShowSetupModal(false);
2873
+ devtools_storage.updateJsonWithDef("runtimeToProjectFilePath", {}, (prev) => ({
2874
+ ...prev,
2875
+ [runtimeKey]: path
2876
+ }));
2877
+ };
2564
2878
  return /* @__PURE__ */ jsxDEV4("div", {
2565
2879
  children: [
2566
2880
  /* @__PURE__ */ jsxDEV4("div", {
@@ -2592,7 +2906,12 @@ function StackTraceSection({
2592
2906
  },
2593
2907
  children: [
2594
2908
  displayFrames.length === 0 ? /* @__PURE__ */ jsxDEV4("div", {
2595
- style: { padding: "6px 10px", color: DEVTOOL_COLOR_TEXT_MUTED, fontSize: "10px", fontStyle: "italic" },
2909
+ style: {
2910
+ padding: "6px 10px",
2911
+ color: DEVTOOL_COLOR_TEXT_MUTED,
2912
+ fontSize: "10px",
2913
+ fontStyle: "italic"
2914
+ },
2596
2915
  children: "no user frames captured"
2597
2916
  }, undefined, false, undefined, this) : displayFrames.map((frame, idx) => {
2598
2917
  const displayFile = formatFrameFile(frame.file);
@@ -2604,10 +2923,12 @@ function StackTraceSection({
2604
2923
  return /* @__PURE__ */ jsxDEV4("div", {
2605
2924
  title: titleStr,
2606
2925
  style: {
2926
+ position: "relative",
2607
2927
  display: "flex",
2608
2928
  flexDirection: "row",
2609
2929
  gap: "0.5em",
2610
2930
  padding: "4px",
2931
+ paddingRight: "22px",
2611
2932
  borderBottom: `1px solid ${DEVTOOL_LIST_BASE_BACKGROUND}`
2612
2933
  },
2613
2934
  children: [
@@ -2684,7 +3005,12 @@ function StackTraceSection({
2684
3005
  ]
2685
3006
  }, undefined, true, undefined, this)
2686
3007
  ]
2687
- }, undefined, true, undefined, this)
3008
+ }, undefined, true, undefined, this),
3009
+ /* @__PURE__ */ jsxDEV4(OpenInVscodeButton, {
3010
+ frame,
3011
+ projectRoot,
3012
+ onNeedSetup: () => setShowSetupModal(true)
3013
+ }, undefined, false, undefined, this)
2688
3014
  ]
2689
3015
  }, frame.raw, true, undefined, this);
2690
3016
  }),
@@ -2719,7 +3045,13 @@ function StackTraceSection({
2719
3045
  ]
2720
3046
  }, `phantom-${i}`, true, undefined, this))
2721
3047
  ]
2722
- }, undefined, true, undefined, this)
3048
+ }, undefined, true, undefined, this),
3049
+ showSetupModal && /* @__PURE__ */ jsxDEV4(ProjectRootSetupModal, {
3050
+ envId: runtime.envId,
3051
+ currentValue: projectRoot ?? "",
3052
+ onSave: handleSaveProjectRoot,
3053
+ onCancel: () => setShowSetupModal(false)
3054
+ }, undefined, false, undefined, this)
2723
3055
  ]
2724
3056
  }, undefined, true, undefined, this);
2725
3057
  }
@@ -2732,7 +3064,8 @@ function FullErrorContent({
2732
3064
  label,
2733
3065
  error,
2734
3066
  errorStack,
2735
- color
3067
+ color,
3068
+ runtime
2736
3069
  }) {
2737
3070
  return /* @__PURE__ */ jsxDEV5(Fragment, {
2738
3071
  children: [
@@ -2746,6 +3079,7 @@ function FullErrorContent({
2746
3079
  color
2747
3080
  }, undefined, false, undefined, this),
2748
3081
  /* @__PURE__ */ jsxDEV5(StackTraceSection, {
3082
+ runtime,
2749
3083
  label: "Error Stack",
2750
3084
  stack: errorStack,
2751
3085
  color
@@ -2813,6 +3147,7 @@ function ActionErrorDisplay({
2813
3147
  color
2814
3148
  }, undefined, false, undefined, this);
2815
3149
  return /* @__PURE__ */ jsxDEV5(FullErrorContent, {
3150
+ runtime: entry.meta.originClient,
2816
3151
  label: "Action Error",
2817
3152
  error,
2818
3153
  errorStack,
@@ -2827,6 +3162,7 @@ function ActionErrorDisplay({
2827
3162
  color
2828
3163
  }, undefined, false, undefined, this);
2829
3164
  return /* @__PURE__ */ jsxDEV5(FullErrorContent, {
3165
+ runtime: entry.meta.originClient,
2830
3166
  label: "Error",
2831
3167
  error,
2832
3168
  errorStack,
@@ -2852,6 +3188,7 @@ function ActionErrorDisplay({
2852
3188
  color
2853
3189
  }, undefined, false, undefined, this)),
2854
3190
  /* @__PURE__ */ jsxDEV5(StackTraceSection, {
3191
+ runtime: entry.meta.originClient,
2855
3192
  label: "Abort Stack",
2856
3193
  stack: errorStack,
2857
3194
  color
@@ -2862,6 +3199,9 @@ function ActionErrorDisplay({
2862
3199
  return null;
2863
3200
  }
2864
3201
 
3202
+ // src/devtools/browser/components/DomainChip.tsx
3203
+ import { Component } from "lucide-react";
3204
+
2865
3205
  // src/devtools/browser/components/Chip.tsx
2866
3206
  import { useState as useState3 } from "react";
2867
3207
 
@@ -2991,13 +3331,64 @@ function Chip({
2991
3331
  }, undefined, true, undefined, this);
2992
3332
  }
2993
3333
 
2994
- // src/devtools/browser/components/DomainChip.tsx
3334
+ // src/devtools/browser/components/Icon.tsx
3335
+ import { useState as useState4 } from "react";
2995
3336
  import { jsxDEV as jsxDEV8, Fragment as Fragment3 } from "react/jsx-dev-runtime";
2996
- function DomainHierarchyContent({ allDomains }) {
3337
+ var ICON_SIZE_PX = {
3338
+ ["sm" /* sm */]: 13,
3339
+ ["md" /* md */]: 16,
3340
+ ["lg" /* lg */]: 18
3341
+ };
3342
+ function Icon({
3343
+ icon: IconComponent,
3344
+ color,
3345
+ size = "md" /* md */,
3346
+ subtle = false,
3347
+ tooltip,
3348
+ style
3349
+ }) {
3350
+ const [anchor, setAnchor] = useState4(null);
3351
+ const hasTooltip = tooltip != null;
3352
+ const colorEntry = SEMANTIC_COLORS[color];
3353
+ const resolvedColor = subtle ? colorEntry.subtle?.color ?? colorEntry.color : colorEntry.color;
2997
3354
  return /* @__PURE__ */ jsxDEV8(Fragment3, {
3355
+ children: [
3356
+ /* @__PURE__ */ jsxDEV8("div", {
3357
+ onMouseEnter: hasTooltip ? (e) => setAnchor(e.currentTarget.getBoundingClientRect()) : undefined,
3358
+ onMouseLeave: hasTooltip ? () => setAnchor(null) : undefined,
3359
+ style: {
3360
+ borderRadius: "0.4em",
3361
+ height: `${1.65 * getSizeValue(size)}em`,
3362
+ width: `${1.65 * getSizeValue(size)}em`,
3363
+ display: "flex",
3364
+ alignItems: "center",
3365
+ justifyContent: "center",
3366
+ background: "rgba(0,0,0,0.4)",
3367
+ color: resolvedColor,
3368
+ flexShrink: 0,
3369
+ cursor: hasTooltip ? "default" : undefined,
3370
+ ...style
3371
+ },
3372
+ children: /* @__PURE__ */ jsxDEV8(IconComponent, {
3373
+ size: ICON_SIZE_PX[size],
3374
+ strokeWidth: 1.5
3375
+ }, undefined, false, undefined, this)
3376
+ }, undefined, false, undefined, this),
3377
+ anchor != null && hasTooltip && /* @__PURE__ */ jsxDEV8(Tooltip, {
3378
+ anchor,
3379
+ config: tooltip
3380
+ }, undefined, false, undefined, this)
3381
+ ]
3382
+ }, undefined, true, undefined, this);
3383
+ }
3384
+
3385
+ // src/devtools/browser/components/DomainChip.tsx
3386
+ import { jsxDEV as jsxDEV9, Fragment as Fragment4 } from "react/jsx-dev-runtime";
3387
+ function DomainHierarchyContent({ allDomains }) {
3388
+ return /* @__PURE__ */ jsxDEV9(Fragment4, {
2998
3389
  children: allDomains.map((d, i) => {
2999
3390
  const isCurrent = i === allDomains.length - 1;
3000
- return /* @__PURE__ */ jsxDEV8("div", {
3391
+ return /* @__PURE__ */ jsxDEV9("div", {
3001
3392
  style: {
3002
3393
  display: "flex",
3003
3394
  alignItems: "center",
@@ -3006,7 +3397,7 @@ function DomainHierarchyContent({ allDomains }) {
3006
3397
  paddingTop: i > 0 ? "0.1rem" : undefined
3007
3398
  },
3008
3399
  children: [
3009
- /* @__PURE__ */ jsxDEV8("span", {
3400
+ /* @__PURE__ */ jsxDEV9("span", {
3010
3401
  style: {
3011
3402
  fontSize: "0.8rem",
3012
3403
  height: "0.6em",
@@ -3019,7 +3410,7 @@ function DomainHierarchyContent({ allDomains }) {
3019
3410
  },
3020
3411
  children: "⬢"
3021
3412
  }, undefined, false, undefined, this),
3022
- /* @__PURE__ */ jsxDEV8("span", {
3413
+ /* @__PURE__ */ jsxDEV9("span", {
3023
3414
  style: {
3024
3415
  color: isCurrent ? DEVTOOL_COLOR_SEMANTIC_SYSTEM : "#4b5563",
3025
3416
  fontSize: "0.7rem",
@@ -3033,18 +3424,32 @@ function DomainHierarchyContent({ allDomains }) {
3033
3424
  }, undefined, false, undefined, this);
3034
3425
  }
3035
3426
  function DomainChip({
3427
+ compact = false,
3036
3428
  subtle = false,
3037
3429
  domain,
3038
3430
  allDomains,
3039
3431
  size
3040
3432
  }) {
3041
- return /* @__PURE__ */ jsxDEV8(Chip, {
3433
+ if (compact) {
3434
+ return /* @__PURE__ */ jsxDEV9(Icon, {
3435
+ icon: Component,
3436
+ color: "domain" /* domain */,
3437
+ tooltip: {
3438
+ content: /* @__PURE__ */ jsxDEV9(DomainHierarchyContent, {
3439
+ allDomains
3440
+ }, undefined, false, undefined, this),
3441
+ title: "Action Domain",
3442
+ align: "edge"
3443
+ }
3444
+ }, undefined, false, undefined, this);
3445
+ }
3446
+ return /* @__PURE__ */ jsxDEV9(Chip, {
3042
3447
  color: "domain" /* domain */,
3043
3448
  subtle,
3044
3449
  size,
3045
3450
  rounded: true,
3046
3451
  tooltip: {
3047
- content: /* @__PURE__ */ jsxDEV8(DomainHierarchyContent, {
3452
+ content: /* @__PURE__ */ jsxDEV9(DomainHierarchyContent, {
3048
3453
  allDomains
3049
3454
  }, undefined, false, undefined, this),
3050
3455
  title: "Action Domain",
@@ -3052,17 +3457,20 @@ function DomainChip({
3052
3457
  },
3053
3458
  style: { display: "flex", alignItems: "center", gap: "0.4em" },
3054
3459
  children: [
3055
- /* @__PURE__ */ jsxDEV8("span", {
3460
+ /* @__PURE__ */ jsxDEV9("span", {
3056
3461
  style: {
3057
- height: "0.6em",
3058
- width: "0.6em",
3462
+ height: "1.2em",
3463
+ width: "1.2em",
3059
3464
  display: "flex",
3060
3465
  alignItems: "center",
3061
3466
  justifyContent: "center"
3062
3467
  },
3063
- children: "⬢"
3468
+ children: /* @__PURE__ */ jsxDEV9(Component, {
3469
+ height: "1.2em",
3470
+ width: "1.2em"
3471
+ }, undefined, false, undefined, this)
3064
3472
  }, undefined, false, undefined, this),
3065
- /* @__PURE__ */ jsxDEV8("span", {
3473
+ /* @__PURE__ */ jsxDEV9("span", {
3066
3474
  children: domain
3067
3475
  }, undefined, false, undefined, this)
3068
3476
  ]
@@ -3070,7 +3478,7 @@ function DomainChip({
3070
3478
  }
3071
3479
 
3072
3480
  // src/devtools/browser/components/HandlerChips.tsx
3073
- import { jsxDEV as jsxDEV9, Fragment as Fragment4 } from "react/jsx-dev-runtime";
3481
+ import { jsxDEV as jsxDEV10, Fragment as Fragment5 } from "react/jsx-dev-runtime";
3074
3482
  function getExternalLabel(hop) {
3075
3483
  if (hop.handlerType !== "external")
3076
3484
  return null;
@@ -3081,15 +3489,15 @@ function HandlerChips({ entry, size, subtle }) {
3081
3489
  const localEnvId = firstHop != null ? firstHop.runtime.envId : null;
3082
3490
  const externalLabel = firstHop != null ? getExternalLabel(firstHop) : null;
3083
3491
  const firstHopIsLocal = firstHop != null && firstHop.handlerType === "local";
3084
- return /* @__PURE__ */ jsxDEV9(Fragment4, {
3492
+ return /* @__PURE__ */ jsxDEV10(Fragment5, {
3085
3493
  children: [
3086
- localEnvId != null && (firstHopIsLocal || externalLabel == null) && /* @__PURE__ */ jsxDEV9(Chip, {
3494
+ localEnvId != null && (firstHopIsLocal || externalLabel == null) && /* @__PURE__ */ jsxDEV10(Chip, {
3087
3495
  color: "handler_local" /* handler_local */,
3088
3496
  size,
3089
3497
  subtle,
3090
3498
  children: localEnvId
3091
3499
  }, undefined, false, undefined, this),
3092
- externalLabel != null && /* @__PURE__ */ jsxDEV9(Chip, {
3500
+ externalLabel != null && /* @__PURE__ */ jsxDEV10(Chip, {
3093
3501
  color: "handler_external" /* handler_external */,
3094
3502
  size,
3095
3503
  subtle,
@@ -3100,15 +3508,15 @@ function HandlerChips({ entry, size, subtle }) {
3100
3508
  }
3101
3509
 
3102
3510
  // src/devtools/browser/components/RunningTimer.tsx
3103
- import { useEffect as useEffect2, useState as useState4 } from "react";
3104
- import { jsxDEV as jsxDEV10, Fragment as Fragment5 } from "react/jsx-dev-runtime";
3511
+ import { useEffect as useEffect2, useState as useState5 } from "react";
3512
+ import { jsxDEV as jsxDEV11, Fragment as Fragment6 } from "react/jsx-dev-runtime";
3105
3513
  function RunningTimer({ startTime }) {
3106
- const [elapsed, setElapsed] = useState4(() => Date.now() - startTime);
3514
+ const [elapsed, setElapsed] = useState5(() => Date.now() - startTime);
3107
3515
  useEffect2(() => {
3108
3516
  const interval = setInterval(() => setElapsed(Date.now() - startTime), 100);
3109
3517
  return () => clearInterval(interval);
3110
3518
  }, [startTime]);
3111
- return /* @__PURE__ */ jsxDEV10(Fragment5, {
3519
+ return /* @__PURE__ */ jsxDEV11(Fragment6, {
3112
3520
  children: [
3113
3521
  elapsed,
3114
3522
  "ms"
@@ -3117,15 +3525,15 @@ function RunningTimer({ startTime }) {
3117
3525
  }
3118
3526
  function DurationDisplay({ entry }) {
3119
3527
  const d = formatDuration(entry);
3120
- return /* @__PURE__ */ jsxDEV10(Fragment5, {
3121
- children: d ?? /* @__PURE__ */ jsxDEV10(RunningTimer, {
3528
+ return /* @__PURE__ */ jsxDEV11(Fragment6, {
3529
+ children: d ?? /* @__PURE__ */ jsxDEV11(RunningTimer, {
3122
3530
  startTime: entry.startTime
3123
3531
  }, undefined, false, undefined, this)
3124
3532
  }, undefined, false, undefined, this);
3125
3533
  }
3126
3534
 
3127
3535
  // src/devtools/browser/components/CallStackSection.tsx
3128
- import { jsxDEV as jsxDEV11 } from "react/jsx-dev-runtime";
3536
+ import { jsxDEV as jsxDEV12 } from "react/jsx-dev-runtime";
3129
3537
  function getCalledLabel(entry) {
3130
3538
  const firstHop = entry.meta.routing[0];
3131
3539
  if (firstHop == null)
@@ -3153,7 +3561,7 @@ function CallStackLink({
3153
3561
  const symbol = STATUS_SYMBOL[entry.status];
3154
3562
  const labelColor = entryRole === "caller" ? DEVTOOL_COLOR_TEXT_SECONDARY : getCalledColor(entry);
3155
3563
  const label = entryRole === "caller" ? "↑ from" : getCalledLabel(entry);
3156
- return /* @__PURE__ */ jsxDEV11("div", {
3564
+ return /* @__PURE__ */ jsxDEV12("div", {
3157
3565
  onClick,
3158
3566
  style: {
3159
3567
  background: isFocused ? DEVTOOL_SECTION_BACKGROUND : DEVTOOL_DETAIL_HEADER_BACKGROUND,
@@ -3167,21 +3575,21 @@ function CallStackLink({
3167
3575
  cursor: "pointer"
3168
3576
  },
3169
3577
  children: [
3170
- /* @__PURE__ */ jsxDEV11("span", {
3578
+ /* @__PURE__ */ jsxDEV12("span", {
3171
3579
  style: { display: "flex", alignItems: "center", gap: "1em", flexShrink: 0 },
3172
3580
  children: [
3173
- /* @__PURE__ */ jsxDEV11("span", {
3581
+ /* @__PURE__ */ jsxDEV12("span", {
3174
3582
  style: { color, fontSize: "10px", flexShrink: 0 },
3175
3583
  children: symbol
3176
3584
  }, undefined, false, undefined, this),
3177
- /* @__PURE__ */ jsxDEV11("span", {
3585
+ /* @__PURE__ */ jsxDEV12("span", {
3178
3586
  style: { color: labelColor, fontSize: "9px", flexShrink: 0 },
3179
3587
  children: label
3180
3588
  }, undefined, false, undefined, this),
3181
- /* @__PURE__ */ jsxDEV11("span", {
3589
+ /* @__PURE__ */ jsxDEV12("span", {
3182
3590
  style: { display: "flex", alignItems: "center", gap: "5px" },
3183
3591
  children: [
3184
- /* @__PURE__ */ jsxDEV11("span", {
3592
+ /* @__PURE__ */ jsxDEV12("span", {
3185
3593
  style: {
3186
3594
  color: DEVTOOL_COLOR_TEXT_SECONDARY,
3187
3595
  fontSize: "11px",
@@ -3191,7 +3599,7 @@ function CallStackLink({
3191
3599
  },
3192
3600
  children: entry.actionId
3193
3601
  }, undefined, false, undefined, this),
3194
- /* @__PURE__ */ jsxDEV11(DomainChip, {
3602
+ /* @__PURE__ */ jsxDEV12(DomainChip, {
3195
3603
  domain: entry.domain,
3196
3604
  allDomains: entry.allDomains,
3197
3605
  size: "sm" /* sm */
@@ -3200,14 +3608,14 @@ function CallStackLink({
3200
3608
  }, undefined, true, undefined, this)
3201
3609
  ]
3202
3610
  }, undefined, true, undefined, this),
3203
- /* @__PURE__ */ jsxDEV11("span", {
3611
+ /* @__PURE__ */ jsxDEV12("span", {
3204
3612
  style: {
3205
3613
  color: DEVTOOL_COLOR_TEXT_FAINT,
3206
3614
  fontSize: "10px",
3207
3615
  textAlign: "right",
3208
3616
  whiteSpace: "nowrap"
3209
3617
  },
3210
- children: /* @__PURE__ */ jsxDEV11(DurationDisplay, {
3618
+ children: /* @__PURE__ */ jsxDEV12(DurationDisplay, {
3211
3619
  entry
3212
3620
  }, undefined, false, undefined, this)
3213
3621
  }, undefined, false, undefined, this)
@@ -3223,15 +3631,15 @@ function CallStackSection({
3223
3631
  }) {
3224
3632
  if (parent == null && childEntries.length === 0)
3225
3633
  return null;
3226
- return /* @__PURE__ */ jsxDEV11("div", {
3634
+ return /* @__PURE__ */ jsxDEV12("div", {
3227
3635
  children: [
3228
- parent != null && /* @__PURE__ */ jsxDEV11(CallStackLink, {
3636
+ parent != null && /* @__PURE__ */ jsxDEV12(CallStackLink, {
3229
3637
  entry: parent,
3230
3638
  entryRole: "caller",
3231
3639
  isFocused: false,
3232
3640
  onClick: () => onSelectParent(parent.cuid)
3233
3641
  }, undefined, false, undefined, this),
3234
- childEntries.map((child) => /* @__PURE__ */ jsxDEV11(CallStackLink, {
3642
+ childEntries.map((child) => /* @__PURE__ */ jsxDEV12(CallStackLink, {
3235
3643
  entry: child,
3236
3644
  entryRole: "called",
3237
3645
  isFocused: focusedChildCuid === child.cuid,
@@ -3242,7 +3650,7 @@ function CallStackSection({
3242
3650
  }
3243
3651
 
3244
3652
  // src/devtools/browser/components/ChildDispatchChips.tsx
3245
- import { jsxDEV as jsxDEV12 } from "react/jsx-dev-runtime";
3653
+ import { jsxDEV as jsxDEV13 } from "react/jsx-dev-runtime";
3246
3654
  function ChildDispatchChips({
3247
3655
  childRouteItems,
3248
3656
  size = "sm" /* sm */
@@ -3262,12 +3670,12 @@ function ChildDispatchChips({
3262
3670
  group.transports.push(transport);
3263
3671
  }
3264
3672
  }
3265
- return /* @__PURE__ */ jsxDEV12("div", {
3673
+ return /* @__PURE__ */ jsxDEV13("div", {
3266
3674
  style: { display: "flex", alignItems: "center", gap: "4px", flexWrap: "wrap" },
3267
3675
  children: Array.from(groups.values()).map((group) => {
3268
3676
  const transportStr = group.transports.length > 0 ? group.transports.join(", ") : "ext";
3269
3677
  const label = group.hasClient ? `${transportStr} → ${group.runtimeId}` : `→ ${transportStr}`;
3270
- return /* @__PURE__ */ jsxDEV12(Chip, {
3678
+ return /* @__PURE__ */ jsxDEV13(Chip, {
3271
3679
  color: "handler_external" /* handler_external */,
3272
3680
  size,
3273
3681
  children: label
@@ -3277,20 +3685,20 @@ function ChildDispatchChips({
3277
3685
  }
3278
3686
 
3279
3687
  // src/devtools/browser/components/MetaSection.tsx
3280
- import { useState as useState5 } from "react";
3281
- import { jsxDEV as jsxDEV13 } from "react/jsx-dev-runtime";
3688
+ import { useState as useState6 } from "react";
3689
+ import { jsxDEV as jsxDEV14 } from "react/jsx-dev-runtime";
3282
3690
  function MetaChip({ label, value }) {
3283
- return /* @__PURE__ */ jsxDEV13("span", {
3691
+ return /* @__PURE__ */ jsxDEV14("span", {
3284
3692
  style: { whiteSpace: "nowrap" },
3285
3693
  children: [
3286
- /* @__PURE__ */ jsxDEV13("span", {
3694
+ /* @__PURE__ */ jsxDEV14("span", {
3287
3695
  style: { color: DEVTOOL_COLOR_TEXT_MUTED },
3288
3696
  children: [
3289
3697
  label,
3290
3698
  " "
3291
3699
  ]
3292
3700
  }, undefined, true, undefined, this),
3293
- /* @__PURE__ */ jsxDEV13("span", {
3701
+ /* @__PURE__ */ jsxDEV14("span", {
3294
3702
  style: { color: DEVTOOL_COLOR_TEXT_SECONDARY },
3295
3703
  children: value
3296
3704
  }, undefined, false, undefined, this)
@@ -3298,7 +3706,7 @@ function MetaChip({ label, value }) {
3298
3706
  }, undefined, true, undefined, this);
3299
3707
  }
3300
3708
  function MetaSection({ entry }) {
3301
- const [expanded, setExpanded] = useState5(false);
3709
+ const [expanded, setExpanded] = useState6(false);
3302
3710
  const { meta, cuid } = entry;
3303
3711
  const expandedRows = [
3304
3712
  { label: "cuid", value: cuid },
@@ -3306,9 +3714,9 @@ function MetaSection({ entry }) {
3306
3714
  ...meta.originClient.perId != null ? [{ label: "perId", value: meta.originClient.perId }] : [],
3307
3715
  ...meta.originClient.insId != null ? [{ label: "insId", value: meta.originClient.insId }] : []
3308
3716
  ];
3309
- return /* @__PURE__ */ jsxDEV13("div", {
3717
+ return /* @__PURE__ */ jsxDEV14("div", {
3310
3718
  children: [
3311
- /* @__PURE__ */ jsxDEV13("div", {
3719
+ /* @__PURE__ */ jsxDEV14("div", {
3312
3720
  style: {
3313
3721
  display: "flex",
3314
3722
  alignItems: "center",
@@ -3316,7 +3724,7 @@ function MetaSection({ entry }) {
3316
3724
  marginBottom: "3px"
3317
3725
  },
3318
3726
  children: [
3319
- /* @__PURE__ */ jsxDEV13("div", {
3727
+ /* @__PURE__ */ jsxDEV14("div", {
3320
3728
  style: {
3321
3729
  color: DEVTOOL_COLOR_SEMANTIC_SYSTEM,
3322
3730
  fontSize: "10px",
@@ -3325,13 +3733,13 @@ function MetaSection({ entry }) {
3325
3733
  },
3326
3734
  children: "Meta"
3327
3735
  }, undefined, false, undefined, this),
3328
- /* @__PURE__ */ jsxDEV13("span", {
3736
+ /* @__PURE__ */ jsxDEV14("span", {
3329
3737
  style: { color: DEVTOOL_COLOR_TEXT_FAINT, fontSize: "11px" },
3330
3738
  children: expanded ? "▾" : "▸"
3331
3739
  }, undefined, false, undefined, this)
3332
3740
  ]
3333
3741
  }, undefined, true, undefined, this),
3334
- expanded ? /* @__PURE__ */ jsxDEV13("div", {
3742
+ expanded ? /* @__PURE__ */ jsxDEV14("div", {
3335
3743
  onClick: () => setExpanded(false),
3336
3744
  style: {
3337
3745
  background: DEVTOOL_SECTION_BACKGROUND,
@@ -3339,7 +3747,7 @@ function MetaSection({ entry }) {
3339
3747
  overflow: "hidden",
3340
3748
  cursor: "pointer"
3341
3749
  },
3342
- children: expandedRows.map(({ label, value }, i) => /* @__PURE__ */ jsxDEV13("div", {
3750
+ children: expandedRows.map(({ label, value }, i) => /* @__PURE__ */ jsxDEV14("div", {
3343
3751
  style: {
3344
3752
  display: "grid",
3345
3753
  gridTemplateColumns: "52px 1fr",
@@ -3349,11 +3757,11 @@ function MetaSection({ entry }) {
3349
3757
  alignItems: "start"
3350
3758
  },
3351
3759
  children: [
3352
- /* @__PURE__ */ jsxDEV13("span", {
3760
+ /* @__PURE__ */ jsxDEV14("span", {
3353
3761
  style: { textAlign: "left", color: DEVTOOL_COLOR_TEXT_MUTED, fontSize: "10px", paddingTop: "1px" },
3354
3762
  children: label
3355
3763
  }, undefined, false, undefined, this),
3356
- /* @__PURE__ */ jsxDEV13("span", {
3764
+ /* @__PURE__ */ jsxDEV14("span", {
3357
3765
  style: {
3358
3766
  textAlign: "left",
3359
3767
  color: DEVTOOL_COLOR_TEXT_SECONDARY,
@@ -3364,7 +3772,7 @@ function MetaSection({ entry }) {
3364
3772
  }, undefined, false, undefined, this)
3365
3773
  ]
3366
3774
  }, label, true, undefined, this))
3367
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV13("div", {
3775
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV14("div", {
3368
3776
  onClick: () => setExpanded(true),
3369
3777
  style: {
3370
3778
  background: DEVTOOL_SECTION_BACKGROUND,
@@ -3378,19 +3786,19 @@ function MetaSection({ entry }) {
3378
3786
  cursor: "pointer"
3379
3787
  },
3380
3788
  children: [
3381
- /* @__PURE__ */ jsxDEV13(MetaChip, {
3789
+ /* @__PURE__ */ jsxDEV14(MetaChip, {
3382
3790
  label: "cuid",
3383
3791
  value: `…${cuid.slice(-8)}`
3384
3792
  }, undefined, false, undefined, this),
3385
- /* @__PURE__ */ jsxDEV13(MetaChip, {
3793
+ /* @__PURE__ */ jsxDEV14(MetaChip, {
3386
3794
  label: "runtime",
3387
3795
  value: meta.originClient.envId
3388
3796
  }, undefined, false, undefined, this),
3389
- meta.originClient.perId != null && /* @__PURE__ */ jsxDEV13(MetaChip, {
3797
+ meta.originClient.perId != null && /* @__PURE__ */ jsxDEV14(MetaChip, {
3390
3798
  label: "perId",
3391
3799
  value: meta.originClient.perId.length > 10 ? `${meta.originClient.perId.slice(0, 10)}…` : meta.originClient.perId
3392
3800
  }, undefined, false, undefined, this),
3393
- meta.originClient.insId != null && /* @__PURE__ */ jsxDEV13(MetaChip, {
3801
+ meta.originClient.insId != null && /* @__PURE__ */ jsxDEV14(MetaChip, {
3394
3802
  label: "insId",
3395
3803
  value: meta.originClient.insId.length > 10 ? `${meta.originClient.insId.slice(0, 10)}…` : meta.originClient.insId
3396
3804
  }, undefined, false, undefined, this)
@@ -3401,7 +3809,7 @@ function MetaSection({ entry }) {
3401
3809
  }
3402
3810
 
3403
3811
  // src/devtools/browser/components/RoutingSection.tsx
3404
- import { jsxDEV as jsxDEV14 } from "react/jsx-dev-runtime";
3812
+ import { jsxDEV as jsxDEV15 } from "react/jsx-dev-runtime";
3405
3813
  function RoutingSection({
3406
3814
  entry,
3407
3815
  minHopCount = 0
@@ -3411,12 +3819,12 @@ function RoutingSection({
3411
3819
  const phantomCount = Math.max(0, minHopCount - hopCount);
3412
3820
  if (hopCount === 0 && phantomCount === 0)
3413
3821
  return null;
3414
- return /* @__PURE__ */ jsxDEV14("div", {
3822
+ return /* @__PURE__ */ jsxDEV15("div", {
3415
3823
  children: [
3416
- /* @__PURE__ */ jsxDEV14(SectionLabel, {
3824
+ /* @__PURE__ */ jsxDEV15(SectionLabel, {
3417
3825
  label: hopCount > 0 ? `Routing · ${hopCount} hop${hopCount !== 1 ? "s" : ""}` : "Routing"
3418
3826
  }, undefined, false, undefined, this),
3419
- /* @__PURE__ */ jsxDEV14("div", {
3827
+ /* @__PURE__ */ jsxDEV15("div", {
3420
3828
  style: { display: "flex", flexDirection: "column", gap: "2px" },
3421
3829
  children: [
3422
3830
  meta.routing.map((hop, i) => {
@@ -3425,7 +3833,7 @@ function RoutingSection({
3425
3833
  const badgeColor = isLocal ? DEVTOOL_COLOR_SEMANTIC_SUCCESS : DEVTOOL_COLOR_SEMANTIC_WARNING;
3426
3834
  const badgeText = isLocal ? "● exec" : `→ ${hop.transport ?? "ext"}`;
3427
3835
  const runtimeTitle = [hop.runtime.perId, hop.runtime.insId].filter(Boolean).join(" · ") || undefined;
3428
- return /* @__PURE__ */ jsxDEV14("div", {
3836
+ return /* @__PURE__ */ jsxDEV15("div", {
3429
3837
  style: {
3430
3838
  background: DEVTOOL_SECTION_BACKGROUND,
3431
3839
  borderRadius: "4px",
@@ -3438,14 +3846,14 @@ function RoutingSection({
3438
3846
  padding: "4px 8px"
3439
3847
  },
3440
3848
  children: [
3441
- /* @__PURE__ */ jsxDEV14("span", {
3849
+ /* @__PURE__ */ jsxDEV15("span", {
3442
3850
  style: { display: "flex", flexDirection: "row", alignItems: "center", gap: "10px" },
3443
3851
  children: [
3444
- /* @__PURE__ */ jsxDEV14("span", {
3852
+ /* @__PURE__ */ jsxDEV15("span", {
3445
3853
  style: { color: DEVTOOL_COLOR_TEXT_FAINT, fontSize: "10px", width: "16px", textAlign: "right" },
3446
3854
  children: i + 1
3447
3855
  }, undefined, false, undefined, this),
3448
- /* @__PURE__ */ jsxDEV14("span", {
3856
+ /* @__PURE__ */ jsxDEV15("span", {
3449
3857
  title: runtimeTitle,
3450
3858
  style: {
3451
3859
  color: DEVTOOL_COLOR_TEXT_SECONDARY,
@@ -3459,11 +3867,11 @@ function RoutingSection({
3459
3867
  }, undefined, false, undefined, this)
3460
3868
  ]
3461
3869
  }, undefined, true, undefined, this),
3462
- /* @__PURE__ */ jsxDEV14("span", {
3870
+ /* @__PURE__ */ jsxDEV15("span", {
3463
3871
  style: { color: badgeColor, fontSize: "10px", whiteSpace: "nowrap" },
3464
3872
  children: badgeText
3465
3873
  }, undefined, false, undefined, this),
3466
- /* @__PURE__ */ jsxDEV14("span", {
3874
+ /* @__PURE__ */ jsxDEV15("span", {
3467
3875
  style: {
3468
3876
  display: "flex",
3469
3877
  alignItems: "center",
@@ -3472,7 +3880,7 @@ function RoutingSection({
3472
3880
  overflow: "hidden"
3473
3881
  },
3474
3882
  children: [
3475
- /* @__PURE__ */ jsxDEV14("span", {
3883
+ /* @__PURE__ */ jsxDEV15("span", {
3476
3884
  style: {
3477
3885
  color: DEVTOOL_COLOR_TEXT_MUTED,
3478
3886
  fontSize: "10px",
@@ -3482,7 +3890,7 @@ function RoutingSection({
3482
3890
  },
3483
3891
  children: hop.handlerClient != null ? `↳ ${hop.handlerClient.envId}` : ""
3484
3892
  }, undefined, false, undefined, this),
3485
- /* @__PURE__ */ jsxDEV14("span", {
3893
+ /* @__PURE__ */ jsxDEV15("span", {
3486
3894
  style: { color: DEVTOOL_COLOR_TEXT_FAINT, fontSize: "10px", flexShrink: 0, marginLeft: "auto" },
3487
3895
  children: [
3488
3896
  "+",
@@ -3495,7 +3903,7 @@ function RoutingSection({
3495
3903
  ]
3496
3904
  }, `${hop.time}-${hop.runtime.envId}`, true, undefined, this);
3497
3905
  }),
3498
- Array.from({ length: phantomCount }, (_, i) => `routing-phantom-${hopCount + i}`).map((key) => /* @__PURE__ */ jsxDEV14("div", {
3906
+ Array.from({ length: phantomCount }, (_, i) => `routing-phantom-${hopCount + i}`).map((key) => /* @__PURE__ */ jsxDEV15("div", {
3499
3907
  "aria-hidden": "true",
3500
3908
  style: {
3501
3909
  visibility: "hidden",
@@ -3508,24 +3916,24 @@ function RoutingSection({
3508
3916
  padding: "4px 8px"
3509
3917
  },
3510
3918
  children: [
3511
- /* @__PURE__ */ jsxDEV14("span", {
3919
+ /* @__PURE__ */ jsxDEV15("span", {
3512
3920
  style: { display: "flex", flexDirection: "row", alignItems: "center", gap: "10px" },
3513
3921
  children: [
3514
- /* @__PURE__ */ jsxDEV14("span", {
3922
+ /* @__PURE__ */ jsxDEV15("span", {
3515
3923
  style: { fontSize: "10px", width: "16px" },
3516
3924
  children: "0"
3517
3925
  }, undefined, false, undefined, this),
3518
- /* @__PURE__ */ jsxDEV14("span", {
3926
+ /* @__PURE__ */ jsxDEV15("span", {
3519
3927
  style: { fontSize: "11px" },
3520
3928
  children: "placeholder"
3521
3929
  }, undefined, false, undefined, this)
3522
3930
  ]
3523
3931
  }, undefined, true, undefined, this),
3524
- /* @__PURE__ */ jsxDEV14("span", {
3932
+ /* @__PURE__ */ jsxDEV15("span", {
3525
3933
  style: { fontSize: "10px" },
3526
3934
  children: "placeholder"
3527
3935
  }, undefined, false, undefined, this),
3528
- /* @__PURE__ */ jsxDEV14("span", {}, undefined, false, undefined, this)
3936
+ /* @__PURE__ */ jsxDEV15("span", {}, undefined, false, undefined, this)
3529
3937
  ]
3530
3938
  }, key, true, undefined, this))
3531
3939
  ]
@@ -3535,7 +3943,7 @@ function RoutingSection({
3535
3943
  }
3536
3944
 
3537
3945
  // src/devtools/browser/components/action_detail/ActionDetailPanel.tsx
3538
- import { jsxDEV as jsxDEV15 } from "react/jsx-dev-runtime";
3946
+ import { jsxDEV as jsxDEV16 } from "react/jsx-dev-runtime";
3539
3947
  var STATUS_BADGE_LABEL = {
3540
3948
  running: "RUNNING",
3541
3949
  success: "SUCCESS",
@@ -3566,7 +3974,7 @@ function DetailHeader({
3566
3974
  const color = STATUS_COLOR[entry.status];
3567
3975
  const StatusIconComponent = STATUS_ICON[entry.status];
3568
3976
  const timestamp = formatTimestamp(entry.startTime);
3569
- return /* @__PURE__ */ jsxDEV15("div", {
3977
+ return /* @__PURE__ */ jsxDEV16("div", {
3570
3978
  onClick: !isActive ? onClick : undefined,
3571
3979
  style: {
3572
3980
  padding: "0.5em 1em",
@@ -3580,13 +3988,13 @@ function DetailHeader({
3580
3988
  gap: "1em",
3581
3989
  cursor: isActive ? "default" : "pointer"
3582
3990
  },
3583
- children: /* @__PURE__ */ jsxDEV15("div", {
3991
+ children: /* @__PURE__ */ jsxDEV16("div", {
3584
3992
  style: { flex: 1, minWidth: 0, display: "flex", flexDirection: "column", gap: "0.5em" },
3585
3993
  children: [
3586
- /* @__PURE__ */ jsxDEV15("div", {
3994
+ /* @__PURE__ */ jsxDEV16("div", {
3587
3995
  style: { display: "flex", alignItems: "center", minWidth: 0, gap: "0.5em" },
3588
3996
  children: [
3589
- /* @__PURE__ */ jsxDEV15("span", {
3997
+ /* @__PURE__ */ jsxDEV16("span", {
3590
3998
  style: {
3591
3999
  color,
3592
4000
  flexShrink: 0,
@@ -3594,12 +4002,12 @@ function DetailHeader({
3594
4002
  alignItems: "center",
3595
4003
  animation: entry.status === "running" ? "__nice-action-pulse 1.2s ease-in-out infinite" : undefined
3596
4004
  },
3597
- children: /* @__PURE__ */ jsxDEV15(StatusIconComponent, {
4005
+ children: /* @__PURE__ */ jsxDEV16(StatusIconComponent, {
3598
4006
  size: 20,
3599
4007
  strokeWidth: 1.75
3600
4008
  }, undefined, false, undefined, this)
3601
4009
  }, undefined, false, undefined, this),
3602
- /* @__PURE__ */ jsxDEV15("span", {
4010
+ /* @__PURE__ */ jsxDEV16("span", {
3603
4011
  style: {
3604
4012
  color: DEVTOOL_COLOR_TEXT_EMPHASIS,
3605
4013
  fontSize: "1.2em",
@@ -3613,7 +4021,7 @@ function DetailHeader({
3613
4021
  },
3614
4022
  children: entry.actionId
3615
4023
  }, undefined, false, undefined, this),
3616
- /* @__PURE__ */ jsxDEV15("span", {
4024
+ /* @__PURE__ */ jsxDEV16("span", {
3617
4025
  style: {
3618
4026
  flexShrink: 0,
3619
4027
  padding: "2px 9px",
@@ -3628,14 +4036,14 @@ function DetailHeader({
3628
4036
  },
3629
4037
  children: STATUS_BADGE_LABEL[entry.status]
3630
4038
  }, undefined, false, undefined, this),
3631
- /* @__PURE__ */ jsxDEV15(DomainChip, {
4039
+ /* @__PURE__ */ jsxDEV16(DomainChip, {
3632
4040
  domain: entry.domain,
3633
4041
  allDomains: entry.allDomains,
3634
4042
  size: "md" /* md */
3635
4043
  }, undefined, false, undefined, this)
3636
4044
  ]
3637
4045
  }, undefined, true, undefined, this),
3638
- /* @__PURE__ */ jsxDEV15("div", {
4046
+ /* @__PURE__ */ jsxDEV16("div", {
3639
4047
  style: {
3640
4048
  display: "flex",
3641
4049
  alignItems: "center",
@@ -3643,7 +4051,7 @@ function DetailHeader({
3643
4051
  gap: "8px"
3644
4052
  },
3645
4053
  children: [
3646
- /* @__PURE__ */ jsxDEV15("div", {
4054
+ /* @__PURE__ */ jsxDEV16("div", {
3647
4055
  style: {
3648
4056
  display: "flex",
3649
4057
  alignItems: "center",
@@ -3652,20 +4060,20 @@ function DetailHeader({
3652
4060
  overflow: "hidden"
3653
4061
  },
3654
4062
  children: [
3655
- /* @__PURE__ */ jsxDEV15(HandlerChips, {
4063
+ /* @__PURE__ */ jsxDEV16(HandlerChips, {
3656
4064
  entry,
3657
4065
  size: "md" /* md */
3658
4066
  }, undefined, false, undefined, this),
3659
- /* @__PURE__ */ jsxDEV15(ChildDispatchChips, {
4067
+ /* @__PURE__ */ jsxDEV16(ChildDispatchChips, {
3660
4068
  childRouteItems: childExternalRouteItems,
3661
4069
  size: "md" /* md */
3662
4070
  }, undefined, false, undefined, this)
3663
4071
  ]
3664
4072
  }, undefined, true, undefined, this),
3665
- /* @__PURE__ */ jsxDEV15("div", {
4073
+ /* @__PURE__ */ jsxDEV16("div", {
3666
4074
  style: { display: "flex", alignItems: "center", gap: "8px", flexShrink: 0 },
3667
4075
  children: [
3668
- /* @__PURE__ */ jsxDEV15("span", {
4076
+ /* @__PURE__ */ jsxDEV16("span", {
3669
4077
  style: {
3670
4078
  color: DEVTOOL_COLOR_SEMANTIC_METADATA,
3671
4079
  fontSize: "10px",
@@ -3674,9 +4082,9 @@ function DetailHeader({
3674
4082
  },
3675
4083
  children: timestamp
3676
4084
  }, undefined, false, undefined, this),
3677
- /* @__PURE__ */ jsxDEV15("span", {
4085
+ /* @__PURE__ */ jsxDEV16("span", {
3678
4086
  style: { color, fontSize: "12px", fontWeight: "500" },
3679
- children: /* @__PURE__ */ jsxDEV15(DurationDisplay, {
4087
+ children: /* @__PURE__ */ jsxDEV16(DurationDisplay, {
3680
4088
  entry
3681
4089
  }, undefined, false, undefined, this)
3682
4090
  }, undefined, false, undefined, this)
@@ -3694,10 +4102,10 @@ function ActionDetailPanel({
3694
4102
  childEntries,
3695
4103
  onSelectEntry
3696
4104
  }) {
3697
- const [focusedChildCuid, setFocusedChildCuid] = useState6(null);
4105
+ const [focusedChildCuid, setFocusedChildCuid] = useState7(null);
3698
4106
  const focusedEntry = focusedChildCuid != null ? childEntries.find((e) => e.cuid === focusedChildCuid) ?? entry : entry;
3699
4107
  const maxRoutingHops = Math.max(entry.meta.routing.length, ...childEntries.map((e) => e.meta.routing.length), 0);
3700
- const maxCallSiteFrames = Math.max(countUserFrames(entry.callSite), ...childEntries.map((e) => countUserFrames(e.callSite)), 0);
4108
+ const maxCallSiteFrames = Math.max(countUserFrames(entry.meta.originClient, entry.callSite), ...childEntries.map((e) => countUserFrames(e.meta.originClient, e.callSite)), 0);
3701
4109
  const childExternalRouteItems = useMemo(() => {
3702
4110
  const seen = new Set;
3703
4111
  const result = [];
@@ -3716,7 +4124,7 @@ function ActionDetailPanel({
3716
4124
  const handleFocusChild = (cuid) => {
3717
4125
  setFocusedChildCuid((prev) => prev === cuid ? null : cuid);
3718
4126
  };
3719
- return /* @__PURE__ */ jsxDEV15("div", {
4127
+ return /* @__PURE__ */ jsxDEV16("div", {
3720
4128
  style: {
3721
4129
  flex: 1,
3722
4130
  display: "flex",
@@ -3726,20 +4134,20 @@ function ActionDetailPanel({
3726
4134
  background: DEVTOOL_DETAIL_BASE_BACKGROUND
3727
4135
  },
3728
4136
  children: [
3729
- /* @__PURE__ */ jsxDEV15(DetailHeader, {
4137
+ /* @__PURE__ */ jsxDEV16(DetailHeader, {
3730
4138
  entry,
3731
4139
  isActive: focusedChildCuid === null,
3732
4140
  onClick: () => setFocusedChildCuid(null),
3733
4141
  childExternalRouteItems
3734
4142
  }, undefined, false, undefined, this),
3735
- /* @__PURE__ */ jsxDEV15(CallStackSection, {
4143
+ /* @__PURE__ */ jsxDEV16(CallStackSection, {
3736
4144
  parent,
3737
4145
  childEntries,
3738
4146
  focusedChildCuid,
3739
4147
  onFocusChild: handleFocusChild,
3740
4148
  onSelectParent: onSelectEntry
3741
4149
  }, undefined, false, undefined, this),
3742
- /* @__PURE__ */ jsxDEV15("div", {
4150
+ /* @__PURE__ */ jsxDEV16("div", {
3743
4151
  style: {
3744
4152
  flex: 1,
3745
4153
  overflowY: "auto",
@@ -3750,36 +4158,37 @@ function ActionDetailPanel({
3750
4158
  gap: "8px"
3751
4159
  },
3752
4160
  children: [
3753
- focusedEntry.input !== undefined ? /* @__PURE__ */ jsxDEV15(DetailSection, {
4161
+ focusedEntry.input !== undefined ? /* @__PURE__ */ jsxDEV16(DetailSection, {
3754
4162
  label: "Input",
3755
4163
  value: focusedEntry.input
3756
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV15(DetailSection, {
4164
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV16(DetailSection, {
3757
4165
  label: "Input",
3758
4166
  value: "No input required or given"
3759
4167
  }, undefined, false, undefined, this),
3760
- focusedEntry.status === "success" && /* @__PURE__ */ jsxDEV15(DetailSection, {
4168
+ focusedEntry.status === "success" && /* @__PURE__ */ jsxDEV16(DetailSection, {
3761
4169
  label: "Output",
3762
4170
  value: focusedEntry.output,
3763
4171
  color: DEVTOOL_COLOR_SEMANTIC_SUCCESS
3764
4172
  }, undefined, false, undefined, this),
3765
- (focusedEntry.status === "action-error" || focusedEntry.status === "failed" || focusedEntry.status === "aborted") && /* @__PURE__ */ jsxDEV15(ActionErrorDisplay, {
4173
+ (focusedEntry.status === "action-error" || focusedEntry.status === "failed" || focusedEntry.status === "aborted") && /* @__PURE__ */ jsxDEV16(ActionErrorDisplay, {
3766
4174
  entry: focusedEntry
3767
4175
  }, undefined, false, undefined, this),
3768
- focusedEntry.progressUpdates.length > 0 && /* @__PURE__ */ jsxDEV15(DetailSection, {
4176
+ focusedEntry.progressUpdates.length > 0 && /* @__PURE__ */ jsxDEV16(DetailSection, {
3769
4177
  label: `Progress (${focusedEntry.progressUpdates.length})`,
3770
4178
  value: focusedEntry.progressUpdates
3771
4179
  }, undefined, false, undefined, this),
3772
- /* @__PURE__ */ jsxDEV15(StackTraceSection, {
4180
+ /* @__PURE__ */ jsxDEV16(StackTraceSection, {
4181
+ runtime: entry.meta.originClient,
3773
4182
  label: "Dispatch Site",
3774
4183
  stack: focusedEntry.callSite,
3775
4184
  color: DEVTOOL_COLOR_TEXT_SECONDARY,
3776
4185
  minFrameCount: maxCallSiteFrames
3777
4186
  }, undefined, false, undefined, this),
3778
- /* @__PURE__ */ jsxDEV15(RoutingSection, {
4187
+ /* @__PURE__ */ jsxDEV16(RoutingSection, {
3779
4188
  entry: focusedEntry,
3780
4189
  minHopCount: maxRoutingHops
3781
4190
  }, undefined, false, undefined, this),
3782
- /* @__PURE__ */ jsxDEV15(MetaSection, {
4191
+ /* @__PURE__ */ jsxDEV16(MetaSection, {
3783
4192
  entry: focusedEntry
3784
4193
  }, undefined, false, undefined, this)
3785
4194
  ]
@@ -3791,59 +4200,6 @@ function ActionDetailPanel({
3791
4200
  // src/devtools/browser/components/action_list/ActionEntryRow.tsx
3792
4201
  import { Box, CircleX as CircleX2, Variable } from "lucide-react";
3793
4202
  import { Fragment as Fragment7, useState as useState8 } from "react";
3794
-
3795
- // src/devtools/browser/components/Icon.tsx
3796
- import { useState as useState7 } from "react";
3797
- import { jsxDEV as jsxDEV16, Fragment as Fragment6 } from "react/jsx-dev-runtime";
3798
- var ICON_SIZE_PX = {
3799
- ["sm" /* sm */]: 13,
3800
- ["md" /* md */]: 16,
3801
- ["lg" /* lg */]: 18
3802
- };
3803
- function Icon({
3804
- icon: IconComponent,
3805
- color,
3806
- size = "md" /* md */,
3807
- subtle = false,
3808
- tooltip,
3809
- style
3810
- }) {
3811
- const [anchor, setAnchor] = useState7(null);
3812
- const hasTooltip = tooltip != null;
3813
- const colorEntry = SEMANTIC_COLORS[color];
3814
- const resolvedColor = subtle ? colorEntry.subtle?.color ?? colorEntry.color : colorEntry.color;
3815
- return /* @__PURE__ */ jsxDEV16(Fragment6, {
3816
- children: [
3817
- /* @__PURE__ */ jsxDEV16("div", {
3818
- onMouseEnter: hasTooltip ? (e) => setAnchor(e.currentTarget.getBoundingClientRect()) : undefined,
3819
- onMouseLeave: hasTooltip ? () => setAnchor(null) : undefined,
3820
- style: {
3821
- borderRadius: "0.4em",
3822
- height: `${1.65 * getSizeValue(size)}em`,
3823
- width: `${1.65 * getSizeValue(size)}em`,
3824
- display: "flex",
3825
- alignItems: "center",
3826
- justifyContent: "center",
3827
- background: "rgba(0,0,0,0.4)",
3828
- color: resolvedColor,
3829
- flexShrink: 0,
3830
- cursor: hasTooltip ? "default" : undefined,
3831
- ...style
3832
- },
3833
- children: /* @__PURE__ */ jsxDEV16(IconComponent, {
3834
- size: ICON_SIZE_PX[size],
3835
- strokeWidth: 1.5
3836
- }, undefined, false, undefined, this)
3837
- }, undefined, false, undefined, this),
3838
- anchor != null && hasTooltip && /* @__PURE__ */ jsxDEV16(Tooltip, {
3839
- anchor,
3840
- config: tooltip
3841
- }, undefined, false, undefined, this)
3842
- ]
3843
- }, undefined, true, undefined, this);
3844
- }
3845
-
3846
- // src/devtools/browser/components/action_list/ActionEntryRow.tsx
3847
4203
  import { jsxDEV as jsxDEV17, Fragment as Fragment8 } from "react/jsx-dev-runtime";
3848
4204
  function getLatestChipColor(status) {
3849
4205
  if (status === "failed")
@@ -4034,8 +4390,6 @@ function ActionEntryRow({
4034
4390
  selectedGroupCuid,
4035
4391
  onSelectGroupEntry
4036
4392
  }) {
4037
- const statusSemantic = STATUS_THING[entry.status];
4038
- const statusIcon = STATUS_ICON[entry.status];
4039
4393
  const timestamp = formatTimestamp(entry.startTime);
4040
4394
  const hasGroup = groupEntries != null && groupEntries.length > 1;
4041
4395
  const hasBottomContent = childEntries != null && childEntries.length > 0 || (breakReasons?.some((r) => r !== "new input" && r !== "new output") ?? false) || entry.error != null || entry.abortReason != null;
@@ -4047,7 +4401,7 @@ function ActionEntryRow({
4047
4401
  display: "flex",
4048
4402
  flexDirection: "column",
4049
4403
  gap: "5px",
4050
- padding: "10px 12px",
4404
+ padding: "0.5em 0.6em",
4051
4405
  cursor: "pointer",
4052
4406
  background: isSelected ? DEVTOOL_LIST_HEADER_SELECTED_BACKGROUND : "transparent",
4053
4407
  border: `1px solid ${DEVTOOL_PANEL_BORDER}`,
@@ -4076,12 +4430,13 @@ function ActionEntryRow({
4076
4430
  position: "relative",
4077
4431
  zIndex: 1,
4078
4432
  flexShrink: 0,
4079
- minWidth: "4em",
4433
+ minWidth: "3.4em",
4080
4434
  display: "flex",
4081
4435
  alignItems: "center",
4082
4436
  justifyContent: "flex-start"
4083
4437
  },
4084
4438
  children: isLatest ? /* @__PURE__ */ jsxDEV17(Chip, {
4439
+ size: "sm" /* sm */,
4085
4440
  color: getLatestChipColor(entry.status),
4086
4441
  children: "latest"
4087
4442
  }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV17(Chip, {
@@ -4099,7 +4454,8 @@ function ActionEntryRow({
4099
4454
  /* @__PURE__ */ jsxDEV17("span", {
4100
4455
  style: {
4101
4456
  color: DEVTOOL_COLOR_TEXT_SECONDARY,
4102
- fontSize: "1.1em",
4457
+ fontSize: "1em",
4458
+ fontWeight: 400,
4103
4459
  fontFamily: "ui-monospace, 'Cascadia Code', 'Source Code Pro', monospace",
4104
4460
  overflow: "hidden",
4105
4461
  textOverflow: "ellipsis",
@@ -4109,10 +4465,6 @@ function ActionEntryRow({
4109
4465
  },
4110
4466
  children: entry.actionId
4111
4467
  }, undefined, false, undefined, this),
4112
- /* @__PURE__ */ jsxDEV17(DomainChip, {
4113
- domain: entry.domain,
4114
- allDomains: entry.allDomains
4115
- }, undefined, false, undefined, this),
4116
4468
  /* @__PURE__ */ jsxDEV17(Icon, {
4117
4469
  icon: Variable,
4118
4470
  color: entry.input !== undefined ? "io_input" /* io_input */ : "default" /* default */,
@@ -4828,7 +5180,7 @@ function ActionList({
4828
5180
  childEntriesMap,
4829
5181
  style
4830
5182
  }) {
4831
- const containerRef = useRef(null);
5183
+ const containerRef = useRef2(null);
4832
5184
  const latestTime = groups[0]?.representative.startTime;
4833
5185
  const flatItems = useMemo2(() => {
4834
5186
  return groups.map((group, gi) => {
@@ -4842,7 +5194,7 @@ function ActionList({
4842
5194
  return { group, groupIndex: gi, breakReasons };
4843
5195
  });
4844
5196
  }, [groups]);
4845
- const prevSelectedRef = useRef(selectedCuid);
5197
+ const prevSelectedRef = useRef2(selectedCuid);
4846
5198
  useEffect3(() => {
4847
5199
  if (selectedCuid === prevSelectedRef.current)
4848
5200
  return;