@mtharrison/loupe 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -643,6 +643,21 @@ pre {
643
643
  .ui-badge[data-semantic=call] {
644
644
  --semantic-badge-color: rgba(61, 108, 225, 0.9);
645
645
  }
646
+ .ui-badge[data-semantic=system] {
647
+ --semantic-badge-color: rgba(40, 93, 168, 0.92);
648
+ }
649
+ .ui-badge[data-semantic=assistant] {
650
+ --semantic-badge-color: rgba(91, 108, 168, 0.88);
651
+ }
652
+ .ui-badge[data-semantic=user] {
653
+ --semantic-badge-color: rgba(46, 181, 129, 0.92);
654
+ }
655
+ .ui-badge[data-semantic=tool] {
656
+ --semantic-badge-color: rgba(59, 146, 111, 0.9);
657
+ }
658
+ .ui-badge[data-semantic=tool-call] {
659
+ --semantic-badge-color: rgba(219, 150, 58, 0.92);
660
+ }
646
661
  .ui-badge-outline {
647
662
  border: 1px solid rgba(40, 93, 168, 0.16);
648
663
  background: rgba(40, 93, 168, 0.08);
@@ -1947,6 +1962,13 @@ pre {
1947
1962
  border-top: 1px solid rgba(88, 105, 130, 0.12);
1948
1963
  }
1949
1964
  .conversation-row {
1965
+ --message-accent: rgba(120, 137, 159, 0.24);
1966
+ --message-border-color: rgba(88, 105, 130, 0.12);
1967
+ --message-surface: rgba(255, 255, 255, 0.92);
1968
+ --message-label-color: color-mix(in srgb, var(--foreground) 52%, var(--muted-foreground));
1969
+ --message-label-border: rgba(88, 105, 130, 0.12);
1970
+ --message-label-surface: rgba(88, 105, 130, 0.06);
1971
+ --message-role-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.62);
1950
1972
  display: flex;
1951
1973
  flex-direction: column;
1952
1974
  gap: 0.45rem;
@@ -1954,6 +1976,12 @@ pre {
1954
1976
  }
1955
1977
  .conversation-row.is-user {
1956
1978
  align-self: flex-end;
1979
+ --message-accent: rgba(46, 181, 129, 0.58);
1980
+ --message-border-color: rgba(46, 181, 129, 0.28);
1981
+ --message-surface: rgba(232, 251, 242, 0.98);
1982
+ --message-label-color: #178b61;
1983
+ --message-label-border: rgba(46, 181, 129, 0.26);
1984
+ --message-label-surface: rgba(46, 181, 129, 0.16);
1957
1985
  }
1958
1986
  .conversation-row.is-assistant,
1959
1987
  .conversation-row.is-system,
@@ -1961,50 +1989,85 @@ pre {
1961
1989
  .conversation-row.is-tool-call {
1962
1990
  align-self: flex-start;
1963
1991
  }
1992
+ .conversation-row.is-assistant {
1993
+ --message-accent: rgba(151, 96, 255, 0.48);
1994
+ --message-border-color: rgba(151, 96, 255, 0.24);
1995
+ --message-surface: rgba(247, 240, 255, 0.98);
1996
+ --message-label-color: #7a41e3;
1997
+ --message-label-border: rgba(151, 96, 255, 0.24);
1998
+ --message-label-surface: rgba(151, 96, 255, 0.16);
1999
+ }
2000
+ .conversation-row.is-system {
2001
+ --message-accent: rgba(46, 104, 255, 0.56);
2002
+ --message-border-color: rgba(46, 104, 255, 0.28);
2003
+ --message-surface: rgba(233, 240, 255, 0.98);
2004
+ --message-label-color: #245fd6;
2005
+ --message-label-border: rgba(46, 104, 255, 0.24);
2006
+ --message-label-surface: rgba(46, 104, 255, 0.16);
2007
+ }
2008
+ .conversation-row.is-tool {
2009
+ --message-accent: rgba(23, 171, 108, 0.52);
2010
+ --message-border-color: rgba(23, 171, 108, 0.25);
2011
+ --message-surface: rgba(231, 251, 240, 0.98);
2012
+ --message-label-color: #0f8a58;
2013
+ --message-label-border: rgba(23, 171, 108, 0.24);
2014
+ --message-label-surface: rgba(23, 171, 108, 0.16);
2015
+ }
2016
+ .conversation-row.is-tool-call {
2017
+ --message-accent: rgba(255, 153, 28, 0.56);
2018
+ --message-border-color: rgba(255, 153, 28, 0.28);
2019
+ --message-surface: rgba(255, 244, 227, 0.98);
2020
+ --message-label-color: #b96b00;
2021
+ --message-label-border: rgba(255, 153, 28, 0.24);
2022
+ --message-label-surface: rgba(255, 153, 28, 0.16);
2023
+ }
1964
2024
  .conversation-role {
1965
- color: var(--muted-foreground);
2025
+ align-self: flex-start;
2026
+ display: inline-flex;
2027
+ align-items: center;
2028
+ gap: 0.35rem;
2029
+ border: 1px solid var(--message-label-border);
2030
+ border-radius: 999px;
2031
+ background: var(--message-label-surface);
2032
+ box-shadow: var(--message-role-shadow);
2033
+ color: var(--message-label-color);
1966
2034
  font-size: 0.74rem;
1967
2035
  font-weight: 700;
1968
2036
  letter-spacing: 0.06em;
2037
+ padding: 0.28rem 0.55rem;
1969
2038
  text-transform: uppercase;
1970
2039
  }
1971
2040
  .conversation-bubble {
1972
2041
  --expandable-fade-color: rgba(255, 255, 255, 0.96);
1973
- border: 1px solid var(--line);
2042
+ border: 1px solid var(--message-border-color);
1974
2043
  border-radius: 14px;
1975
- background: rgba(255, 255, 255, 0.9);
2044
+ background: var(--message-surface);
1976
2045
  padding: 0.9rem 1rem;
1977
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72);
2046
+ box-shadow: inset 3px 0 0 var(--message-accent), inset 0 1px 0 rgba(255, 255, 255, 0.72);
2047
+ }
2048
+ .conversation-row.is-user .conversation-role {
2049
+ align-self: flex-end;
1978
2050
  }
1979
2051
  .conversation-row.is-user .conversation-bubble {
1980
- --expandable-fade-color: rgba(224, 236, 248, 0.96);
1981
- background: rgba(224, 236, 248, 0.88);
2052
+ --expandable-fade-color: rgba(232, 251, 242, 0.98);
1982
2053
  }
1983
2054
  .conversation-row.is-assistant .conversation-bubble {
1984
2055
  --expandable-fade-color: rgba(255, 255, 255, 0.98);
1985
- background: rgba(255, 255, 255, 0.96);
1986
- }
1987
- .conversation-row.is-system .conversation-role {
1988
- color: var(--primary);
1989
2056
  }
1990
2057
  .conversation-row.is-system .conversation-bubble {
1991
2058
  --expandable-fade-color: rgba(235, 242, 250, 0.98);
1992
- border-color: rgba(40, 93, 168, 0.16);
1993
- background: rgba(235, 242, 250, 0.94);
1994
- box-shadow: inset 3px 0 0 rgba(40, 93, 168, 0.4);
1995
2059
  }
1996
2060
  .tool-result-bubble {
1997
- --expandable-fade-color: rgba(245, 248, 251, 0.98);
2061
+ --expandable-fade-color: rgba(238, 248, 243, 0.98);
1998
2062
  display: flex;
1999
2063
  flex-direction: column;
2000
2064
  gap: 0.8rem;
2001
- background: rgba(245, 248, 251, 0.94);
2002
2065
  }
2003
2066
  .tool-call-bubble {
2067
+ --expandable-fade-color: rgba(252, 245, 232, 0.98);
2004
2068
  display: flex;
2005
2069
  flex-direction: column;
2006
2070
  gap: 0.8rem;
2007
- background: rgba(237, 243, 249, 0.96);
2008
2071
  }
2009
2072
  .tool-result-meta {
2010
2073
  display: flex;
@@ -2329,14 +2392,18 @@ pre {
2329
2392
  gap: 0.8rem;
2330
2393
  }
2331
2394
  .message-card {
2395
+ --message-accent: rgba(120, 137, 159, 0.22);
2396
+ --message-border-color: rgba(88, 105, 130, 0.1);
2397
+ --message-surface: rgba(255, 255, 255, 0.92);
2332
2398
  --expandable-fade-color: rgba(255, 255, 255, 0.98);
2333
2399
  display: flex;
2334
2400
  flex-direction: column;
2335
2401
  gap: 0.75rem;
2336
2402
  padding: 0.9rem;
2337
2403
  border-radius: 12px;
2338
- background: rgba(255, 255, 255, 0.92);
2339
- border: 1px solid rgba(88, 105, 130, 0.08);
2404
+ background: var(--message-surface);
2405
+ border: 1px solid var(--message-border-color);
2406
+ box-shadow: inset 3px 0 0 var(--message-accent), inset 0 1px 0 rgba(255, 255, 255, 0.68);
2340
2407
  }
2341
2408
  .message-card-header {
2342
2409
  display: flex;
@@ -2362,21 +2429,28 @@ pre {
2362
2429
  font-weight: 600;
2363
2430
  }
2364
2431
  .message-card.role-system {
2432
+ --message-accent: rgba(46, 104, 255, 0.56);
2433
+ --message-border-color: rgba(46, 104, 255, 0.24);
2434
+ --message-surface: rgba(233, 240, 255, 0.98);
2365
2435
  --expandable-fade-color: rgba(236, 242, 250, 0.98);
2366
- border-color: rgba(40, 93, 168, 0.14);
2367
- background: rgba(236, 242, 250, 0.94);
2368
2436
  }
2369
2437
  .message-card.role-assistant {
2438
+ --message-accent: rgba(151, 96, 255, 0.48);
2439
+ --message-border-color: rgba(151, 96, 255, 0.2);
2440
+ --message-surface: rgba(247, 240, 255, 0.98);
2370
2441
  --expandable-fade-color: rgba(255, 255, 255, 0.98);
2371
- background: rgba(255, 255, 255, 0.96);
2372
2442
  }
2373
2443
  .message-card.role-user {
2374
- --expandable-fade-color: rgba(227, 237, 248, 0.96);
2375
- background: rgba(227, 237, 248, 0.82);
2444
+ --message-accent: rgba(46, 181, 129, 0.58);
2445
+ --message-border-color: rgba(46, 181, 129, 0.24);
2446
+ --message-surface: rgba(232, 251, 242, 0.97);
2447
+ --expandable-fade-color: rgba(232, 251, 242, 0.98);
2376
2448
  }
2377
2449
  .message-card.role-tool {
2378
- --expandable-fade-color: rgba(243, 247, 251, 0.98);
2379
- background: rgba(243, 247, 251, 0.94);
2450
+ --message-accent: rgba(23, 171, 108, 0.52);
2451
+ --message-border-color: rgba(23, 171, 108, 0.22);
2452
+ --message-surface: rgba(231, 251, 240, 0.97);
2453
+ --expandable-fade-color: rgba(238, 248, 243, 0.98);
2380
2454
  }
2381
2455
  .tool-call-stack {
2382
2456
  display: flex;
@@ -2892,29 +2966,64 @@ pre {
2892
2966
  background: rgba(12, 18, 28, 0.96);
2893
2967
  box-shadow: -24px 0 70px rgba(1, 7, 18, 0.42);
2894
2968
  }
2969
+ :root[data-theme=dark] .conversation-row,
2970
+ :root[data-theme=dark] .message-card {
2971
+ --message-role-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
2972
+ }
2895
2973
  :root[data-theme=dark] .conversation-row.is-user .conversation-bubble,
2896
2974
  :root[data-theme=dark] .message-card.role-user {
2897
- --expandable-fade-color: rgba(33, 47, 69, 0.98);
2898
- background: rgba(33, 47, 69, 0.96);
2975
+ --message-accent: rgba(76, 218, 157, 0.58);
2976
+ --message-border-color: rgba(76, 218, 157, 0.28);
2977
+ --message-surface: rgba(10, 72, 49, 0.98);
2978
+ --message-label-color: rgba(209, 255, 234, 0.98);
2979
+ --message-label-border: rgba(76, 218, 157, 0.24);
2980
+ --message-label-surface: rgba(76, 218, 157, 0.18);
2981
+ --expandable-fade-color: rgba(10, 72, 49, 0.99);
2899
2982
  }
2900
2983
  :root[data-theme=dark] .conversation-row.is-assistant .conversation-bubble,
2901
2984
  :root[data-theme=dark] .message-card.role-assistant {
2985
+ --message-accent: rgba(177, 108, 255, 0.54);
2986
+ --message-border-color: rgba(177, 108, 255, 0.24);
2987
+ --message-surface: rgba(54, 24, 89, 0.98);
2988
+ --message-label-color: rgba(231, 208, 255, 0.98);
2989
+ --message-label-border: rgba(177, 108, 255, 0.22);
2990
+ --message-label-surface: rgba(177, 108, 255, 0.16);
2902
2991
  --expandable-fade-color: rgba(22, 32, 48, 0.99);
2903
- background: rgba(22, 32, 48, 0.98);
2904
2992
  }
2905
2993
  :root[data-theme=dark] .conversation-row.is-system .conversation-bubble,
2906
2994
  :root[data-theme=dark] .message-card.role-system {
2995
+ --message-accent: rgba(79, 136, 255, 0.62);
2996
+ --message-border-color: rgba(79, 136, 255, 0.28);
2997
+ --message-surface: rgba(17, 42, 96, 0.98);
2998
+ --message-label-color: rgba(203, 221, 255, 0.98);
2999
+ --message-label-border: rgba(79, 136, 255, 0.26);
3000
+ --message-label-surface: rgba(79, 136, 255, 0.18);
2907
3001
  --expandable-fade-color: rgba(26, 39, 57, 0.99);
2908
- border-color: rgba(134, 184, 255, 0.24);
2909
- background: rgba(26, 39, 57, 0.98);
2910
- box-shadow: inset 3px 0 0 rgba(134, 184, 255, 0.42);
3002
+ }
3003
+ :root[data-theme=dark] .conversation-row.is-tool .conversation-bubble,
3004
+ :root[data-theme=dark] .message-card.role-tool {
3005
+ --message-accent: rgba(60, 212, 144, 0.56);
3006
+ --message-border-color: rgba(60, 212, 144, 0.26);
3007
+ --message-surface: rgba(11, 63, 42, 0.98);
3008
+ --message-label-color: rgba(203, 255, 229, 0.98);
3009
+ --message-label-border: rgba(60, 212, 144, 0.22);
3010
+ --message-label-surface: rgba(60, 212, 144, 0.16);
3011
+ --expandable-fade-color: rgba(18, 34, 33, 0.99);
3012
+ }
3013
+ :root[data-theme=dark] .conversation-row.is-tool-call .conversation-bubble {
3014
+ --message-accent: rgba(255, 170, 66, 0.6);
3015
+ --message-border-color: rgba(255, 170, 66, 0.28);
3016
+ --message-surface: rgba(84, 43, 5, 0.98);
3017
+ --message-label-color: rgba(255, 228, 184, 0.98);
3018
+ --message-label-border: rgba(255, 170, 66, 0.24);
3019
+ --message-label-surface: rgba(255, 170, 66, 0.16);
3020
+ --expandable-fade-color: rgba(44, 31, 16, 0.99);
2911
3021
  }
2912
3022
  :root[data-theme=dark] .tool-result-bubble {
2913
- --expandable-fade-color: rgba(17, 26, 39, 0.99);
2914
- background: rgba(17, 26, 39, 0.96);
3023
+ --expandable-fade-color: rgba(18, 34, 33, 0.99);
2915
3024
  }
2916
3025
  :root[data-theme=dark] .tool-call-bubble {
2917
- background: rgba(20, 32, 48, 0.98);
3026
+ --expandable-fade-color: rgba(44, 31, 16, 0.99);
2918
3027
  }
2919
3028
  :root[data-theme=dark] .markdown-body code {
2920
3029
  background: rgba(101, 134, 182, 0.18);
@@ -38351,11 +38351,11 @@ function StructuredMessageCard({
38351
38351
  const isToolResult = message.role === "tool";
38352
38352
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: cn("message-card", `role-${message.role}`), children: [
38353
38353
  /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "message-card-header", children: [
38354
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Badge, { variant: "secondary", children: message.role }),
38354
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Badge, { semantic: message.role, variant: "secondary", children: message.role }),
38355
38355
  /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "message-card-header-meta", children: [
38356
38356
  isToolResult && message.name ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Badge, { variant: "outline", children: message.name }) : null,
38357
38357
  isToolResult && message.tool_call_id ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Badge, { variant: "secondary", children: message.tool_call_id }) : null,
38358
- isToolCallTurn ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Badge, { variant: "outline", children: formatCountLabel(toolCalls.length, "tool call") }) : null
38358
+ isToolCallTurn ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Badge, { semantic: "tool-call", variant: "outline", children: formatCountLabel(toolCalls.length, "tool call") }) : null
38359
38359
  ] })
38360
38360
  ] }),
38361
38361
  /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "message-card-body", children: [
@@ -39615,6 +39615,17 @@ function getSemanticBadgeValue(value) {
39615
39615
  return "session";
39616
39616
  case "actor":
39617
39617
  return "actor";
39618
+ case "assistant":
39619
+ return "assistant";
39620
+ case "user":
39621
+ return "user";
39622
+ case "system":
39623
+ return "system";
39624
+ case "tool":
39625
+ return "tool";
39626
+ case "tool call":
39627
+ case "tool-call":
39628
+ return "tool-call";
39618
39629
  case "guardrail":
39619
39630
  return "guardrail";
39620
39631
  case "call":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mtharrison/loupe",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "Lightweight local tracing dashboard for LLM calls",
5
5
  "author": "Matt Harrison",
6
6
  "license": "MIT",