@tonyclaw/agent-inspector 2.1.7 → 2.1.9
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/.output/cli.js +274 -140
- package/.output/nitro.json +1 -1
- package/.output/public/assets/{CompareDrawer-BLS7CVvA.js → CompareDrawer-Dv423tJJ.js} +1 -1
- package/.output/public/assets/{ProxyViewerContainer-BFZ1WG07.js → ProxyViewerContainer-6mRRv0F1.js} +35 -35
- package/.output/public/assets/{ReplayDialog-DIGF807X.js → ReplayDialog-Bury80WZ.js} +1 -1
- package/.output/public/assets/{RequestAnatomy-C3Nlvp9P.js → RequestAnatomy-Bh07p6Yj.js} +1 -1
- package/.output/public/assets/{ResponseView-BbZywqHe.js → ResponseView-C8_ZLXNd.js} +1 -1
- package/.output/public/assets/{StreamingChunkSequence-Dk27PfPn.js → StreamingChunkSequence-BKvT1lyU.js} +1 -1
- package/.output/public/assets/_sessionId-DnxfC3cB.js +1 -0
- package/.output/public/assets/index-B1naZUTb.js +1 -0
- package/.output/public/assets/index-CmtfjQPv.css +1 -0
- package/.output/public/assets/{main-BxHXMs6B.js → main-D9YPHKL0.js} +2 -2
- package/.output/server/{_sessionId-D5HNwb9A.mjs → _sessionId-D2z4VD7h.mjs} +3 -3
- package/.output/server/_ssr/{CompareDrawer-QNk1twf8.mjs → CompareDrawer-DNDkVh7T.mjs} +3 -3
- package/.output/server/_ssr/{ProxyViewerContainer-DGhc2le_.mjs → ProxyViewerContainer-CI-fjnaf.mjs} +284 -217
- package/.output/server/_ssr/{ReplayDialog-D8wg4VNL.mjs → ReplayDialog-Dx4um0uS.mjs} +4 -4
- package/.output/server/_ssr/{RequestAnatomy-BtJHKVl2.mjs → RequestAnatomy-CKPBN_PB.mjs} +3 -3
- package/.output/server/_ssr/{ResponseView-CndDItiU.mjs → ResponseView-3wkt24-z.mjs} +3 -3
- package/.output/server/_ssr/{StreamingChunkSequence-D5Ywpbr7.mjs → StreamingChunkSequence-CSK53g5a.mjs} +3 -3
- package/.output/server/_ssr/{index-DtcUTHAX.mjs → index-1uaJ_KuG.mjs} +3 -3
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{router-C0apgqfC.mjs → router-KEX70DxH.mjs} +17 -8
- package/.output/server/{_tanstack-start-manifest_v-BoTPaB-V.mjs → _tanstack-start-manifest_v-VhueDt-w.mjs} +1 -1
- package/.output/server/index.mjs +63 -63
- package/README.md +10 -6
- package/package.json +1 -1
- package/src/cli/detect-tools.ts +2 -1
- package/src/cli/onboard.ts +334 -167
- package/src/components/providers/SettingsDialog.tsx +47 -0
- package/src/components/proxy-viewer/ConversationGroup.tsx +31 -9
- package/src/components/proxy-viewer/ConversationHeader.tsx +97 -37
- package/src/components/proxy-viewer/LogEntryHeader.tsx +3 -12
- package/src/mcp/server.ts +18 -4
- package/.output/public/assets/_sessionId-BHpX8AVf.js +0 -1
- package/.output/public/assets/index-BXHM9OMb.js +0 -1
- package/.output/public/assets/index-DP4NzCZ5.css +0 -1
package/.output/server/_ssr/{ProxyViewerContainer-DGhc2le_.mjs → ProxyViewerContainer-CI-fjnaf.mjs}
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports, a as React } from "../_libs/react.mjs";
|
|
2
|
-
import { I as InspectorGroupsListResponseSchema, C as CapturedLogSchema, D as DEFAULT_CAPTURE_MODE, a as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, b as DEFAULT_PROVIDER_TEST_TIMEOUT_SECONDS, c as DEFAULT_TIME_DISPLAY_FORMAT, d as RuntimeConfigSchema, p as packageJson, P as ProviderConfigSchema, g as apiFormatForPath, l as GroupEvidenceExportResultSchema, m as DeleteInspectorGroupResponseSchema, r as createPendingProviderTestResults, t as ProviderTestResultsSchema, u as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, v as MAX_PROVIDER_TEST_TIMEOUT_SECONDS, T as TimeDisplayFormatSchema, h as getSessionPath, f as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, e as AnthropicRequestSchema, s as safeGetOwnProperty, w as resolveProviderContextWindow, j as AlertSummarySchema, k as AlertListResponseSchema, G as GroupEvidenceReadResponseSchema, q as maskApiKey, n as providerHasContextMetadata, o as findProviderModelMetadata, K as KnowledgeCandidateSchema, i as stripClaudeCodeBillingHeader, L as LogBodyChunkSchema, x as isPlainRecord } from "./router-
|
|
2
|
+
import { I as InspectorGroupsListResponseSchema, C as CapturedLogSchema, D as DEFAULT_CAPTURE_MODE, a as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, b as DEFAULT_PROVIDER_TEST_TIMEOUT_SECONDS, c as DEFAULT_TIME_DISPLAY_FORMAT, d as RuntimeConfigSchema, p as packageJson, P as ProviderConfigSchema, g as apiFormatForPath, l as GroupEvidenceExportResultSchema, m as DeleteInspectorGroupResponseSchema, r as createPendingProviderTestResults, t as ProviderTestResultsSchema, u as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, v as MAX_PROVIDER_TEST_TIMEOUT_SECONDS, T as TimeDisplayFormatSchema, h as getSessionPath, f as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, e as AnthropicRequestSchema, s as safeGetOwnProperty, w as resolveProviderContextWindow, j as AlertSummarySchema, k as AlertListResponseSchema, G as GroupEvidenceReadResponseSchema, q as maskApiKey, n as providerHasContextMetadata, o as findProviderModelMetadata, K as KnowledgeCandidateSchema, i as stripClaudeCodeBillingHeader, L as LogBodyChunkSchema, x as isPlainRecord } from "./router-KEX70DxH.mjs";
|
|
3
3
|
import { u as useSWR, a as useSWRConfig } from "../_libs/swr.mjs";
|
|
4
4
|
import { J as JSZip } from "../_libs/jszip.mjs";
|
|
5
5
|
import { c as clsx } from "../_libs/clsx.mjs";
|
|
6
6
|
import { t as twMerge } from "../_libs/tailwind-merge.mjs";
|
|
7
|
-
import { c as cva } from "../_libs/class-variance-authority.mjs";
|
|
8
7
|
import { R as Root, T as Trigger$1, C as Content, a as Close, b as Title, D as Description, P as Portal$2, O as Overlay } from "../_libs/radix-ui__react-dialog.mjs";
|
|
8
|
+
import { c as cva } from "../_libs/class-variance-authority.mjs";
|
|
9
9
|
import { d as diffJson, a as diffLines } from "../_libs/diff.mjs";
|
|
10
10
|
import { u as useWindowVirtualizer, a as useVirtualizer } from "../_libs/tanstack__react-virtual.mjs";
|
|
11
11
|
import { R as Root2, T as Trigger, I as Icon, V as Value, P as Portal, C as Content2, a as Viewport, b as Item, c as ItemIndicator, d as ItemText, S as ScrollUpButton, e as ScrollDownButton } from "../_libs/radix-ui__react-select.mjs";
|
|
@@ -609,41 +609,6 @@ function useProviders() {
|
|
|
609
609
|
mutate: response.mutate
|
|
610
610
|
};
|
|
611
611
|
}
|
|
612
|
-
const badgeVariants = cva(
|
|
613
|
-
"inline-flex items-center justify-center rounded-full border border-transparent px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
614
|
-
{
|
|
615
|
-
variants: {
|
|
616
|
-
variant: {
|
|
617
|
-
default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
618
|
-
secondary: "bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
619
|
-
destructive: "bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
620
|
-
outline: "border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
|
|
621
|
-
ghost: "[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
|
|
622
|
-
link: "text-primary underline-offset-4 [a&]:hover:underline"
|
|
623
|
-
}
|
|
624
|
-
},
|
|
625
|
-
defaultVariants: {
|
|
626
|
-
variant: "default"
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
);
|
|
630
|
-
function Badge({
|
|
631
|
-
className,
|
|
632
|
-
variant = "default",
|
|
633
|
-
asChild = false,
|
|
634
|
-
...props
|
|
635
|
-
}) {
|
|
636
|
-
const Comp = asChild ? Slot : "span";
|
|
637
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
638
|
-
Comp,
|
|
639
|
-
{
|
|
640
|
-
"data-slot": "badge",
|
|
641
|
-
"data-variant": variant,
|
|
642
|
-
className: cn(badgeVariants({ variant }), className),
|
|
643
|
-
...props
|
|
644
|
-
}
|
|
645
|
-
);
|
|
646
|
-
}
|
|
647
612
|
function Dialog({
|
|
648
613
|
...props
|
|
649
614
|
}) {
|
|
@@ -807,6 +772,128 @@ function ConfirmDialog({
|
|
|
807
772
|
] })
|
|
808
773
|
] }) });
|
|
809
774
|
}
|
|
775
|
+
const AnthropicLogoSvg = "data:image/svg+xml,%3csvg%20height='2500'%20viewBox='0%206.603%201192.672%201193.397'%20width='2500'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='m233.96%20800.215%20234.684-131.678%203.947-11.436-3.947-6.363h-11.436l-39.221-2.416-134.094-3.624-116.296-4.832-112.67-6.04-28.35-6.04-26.577-35.035%202.738-17.477%2023.84-16.027%2034.147%202.98%2075.463%205.155%20113.235%207.812%2082.147%204.832%20121.692%2012.644h19.329l2.738-7.812-6.604-4.832-5.154-4.832-117.182-79.41-126.845-83.92-66.443-48.321-35.92-24.484-18.12-22.953-7.813-50.093%2032.618-35.92%2043.812%202.98%2011.195%202.98%2044.375%2034.147%2094.792%2073.37%20123.786%2091.167%2018.12%2015.06%207.249-5.154.886-3.624-8.135-13.61-67.329-121.692-71.838-123.785-31.974-51.302-8.456-30.765c-2.98-12.645-5.154-23.275-5.154-36.242l37.127-50.416%2020.537-6.604%2049.53%206.604%2020.86%2018.121%2030.765%2070.39%2049.852%20110.818%2077.315%20150.684%2022.631%2044.698%2012.08%2041.396%204.51%2012.645h7.813v-7.248l6.362-84.886%2011.759-104.215%2011.436-134.094%203.946-37.772%2018.685-45.262%2037.127-24.482%2028.994%2013.852%2023.839%2034.148-3.303%2022.067-14.174%2092.134-27.785%20144.323-18.121%2096.644h10.55l12.08-12.08%2048.887-64.913%2082.147-102.685%2036.242-40.752%2042.282-45.02%2027.14-21.423h51.303l37.772%2056.135-16.913%2057.986-52.832%2067.007-43.812%2056.779-62.82%2084.563-39.22%2067.651%203.623%205.396%209.343-.886%20141.906-30.201%2076.671-13.852%2091.49-15.705%2041.396%2019.329%204.51%2019.65-16.269%2040.189-97.852%2024.16-114.764%2022.954-170.9%2040.43-2.093%201.53%202.416%202.98%2076.993%207.248%2032.94%201.771h80.617l150.12%2011.195%2039.222%2025.933%2023.517%2031.732-3.946%2024.16-60.403%2030.766-81.503-19.33-190.228-45.26-65.235-16.27h-9.02v5.397l54.362%2053.154%2099.624%2089.96%20124.752%20115.973%206.362%2028.671-16.027%2022.63-16.912-2.415-109.611-82.47-42.282-37.127-95.758-80.618h-6.363v8.456l22.067%2032.296%20116.537%20175.167%206.04%2053.719-8.456%2017.476-30.201%2010.55-33.181-6.04-68.215-95.758-70.39-107.84-56.778-96.644-6.926%203.947-33.503%20360.886-15.705%2018.443-36.243%2013.852-30.201-22.953-16.027-37.127%2016.027-73.37%2019.329-95.758%2015.704-76.107%2014.175-94.55%208.456-31.41-.563-2.094-6.927.886-71.275%2097.852-108.402%20146.497-85.772%2091.812-20.537%208.134-35.597-18.443%203.301-32.94%2019.893-29.315%20118.712-151.007%2071.597-93.583%2046.228-54.04-.322-7.813h-2.738l-315.302%20204.725-56.135%207.248-24.16-22.63%202.98-37.128%2011.435-12.08%2094.792-65.236-.322.323z'%20fill='%23d97757'/%3e%3c/svg%3e";
|
|
776
|
+
const OpenAILogoSvg = "data:image/svg+xml,%3csvg%20height='2500'%20viewBox='-1%20-.1%20949.1%20959.8'%20width='2474'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='m925.8%20456.3c10.4%2023.2%2017%2048%2019.7%2073.3%202.6%2025.3%201.3%2050.9-4.1%2075.8-5.3%2024.9-14.5%2048.8-27.3%2070.8-8.4%2014.7-18.3%2028.5-29.7%2041.2-11.3%2012.6-23.9%2024-37.6%2034-13.8%2010-28.5%2018.4-44.1%2025.3-15.5%206.8-31.7%2012-48.3%2015.4-7.8%2024.2-19.4%2047.1-34.4%2067.7-14.9%2020.6-33%2038.7-53.6%2053.6-20.6%2015-43.4%2026.6-67.6%2034.4-24.2%207.9-49.5%2011.8-75%2011.8-16.9.1-33.9-1.7-50.5-5.1-16.5-3.5-32.7-8.8-48.2-15.7s-30.2-15.5-43.9-25.5c-13.6-10-26.2-21.5-37.4-34.2-25%205.4-50.6%206.7-75.9%204.1-25.3-2.7-50.1-9.3-73.4-19.7-23.2-10.3-44.7-24.3-63.6-41.4s-35-37.1-47.7-59.1c-8.5-14.7-15.5-30.2-20.8-46.3s-8.8-32.7-10.6-49.6c-1.8-16.8-1.7-33.8.1-50.7%201.8-16.8%205.5-33.4%2010.8-49.5-17-18.9-31-40.4-41.4-63.6-10.3-23.3-17-48-19.6-73.3-2.7-25.3-1.3-50.9%204-75.8s14.5-48.8%2027.3-70.8c8.4-14.7%2018.3-28.6%2029.6-41.2s24-24%2037.7-34%2028.5-18.5%2044-25.3c15.6-6.9%2031.8-12%2048.4-15.4%207.8-24.3%2019.4-47.1%2034.3-67.7%2015-20.6%2033.1-38.7%2053.7-53.7%2020.6-14.9%2043.4-26.5%2067.6-34.4%2024.2-7.8%2049.5-11.8%2075-11.7%2016.9-.1%2033.9%201.6%2050.5%205.1s32.8%208.7%2048.3%2015.6c15.5%207%2030.2%2015.5%2043.9%2025.5%2013.7%2010.1%2026.3%2021.5%2037.5%2034.2%2024.9-5.3%2050.5-6.6%2075.8-4s50%209.3%2073.3%2019.6c23.2%2010.4%2044.7%2024.3%2063.6%2041.4%2018.9%2017%2035%2036.9%2047.7%2059%208.5%2014.6%2015.5%2030.1%2020.8%2046.3%205.3%2016.1%208.9%2032.7%2010.6%2049.6%201.8%2016.9%201.8%2033.9-.1%2050.8-1.8%2016.9-5.5%2033.5-10.8%2049.6%2017.1%2018.9%2031%2040.3%2041.4%2063.6zm-333.2%20426.9c21.8-9%2041.6-22.3%2058.3-39s30-36.5%2039-58.4c9-21.8%2013.7-45.2%2013.7-68.8v-223q-.1-.3-.2-.7-.1-.3-.3-.6-.2-.3-.5-.5-.3-.3-.6-.4l-80.7-46.6v269.4c0%202.7-.4%205.5-1.1%208.1-.7%202.7-1.7%205.2-3.1%207.6s-3%204.6-5%206.5a32.1%2032.1%200%200%201%20-6.5%205l-191.1%20110.3c-1.6%201-4.3%202.4-5.7%203.2%207.9%206.7%2016.5%2012.6%2025.5%2017.8%209.1%205.2%2018.5%209.6%2028.3%2013.2%209.8%203.5%2019.9%206.2%2030.1%208%2010.3%201.8%2020.7%202.7%2031.1%202.7%2023.6%200%2047-4.7%2068.8-13.8zm-455.1-151.4c11.9%2020.5%2027.6%2038.3%2046.3%2052.7%2018.8%2014.4%2040.1%2024.9%2062.9%2031s46.6%207.7%2070%204.6%2045.9-10.7%2066.4-22.5l193.2-111.5.5-.5q.2-.2.3-.6.2-.3.3-.6v-94l-233.2%20134.9c-2.4%201.4-4.9%202.4-7.5%203.2-2.7.7-5.4%201-8.2%201-2.7%200-5.4-.3-8.1-1-2.6-.8-5.2-1.8-7.6-3.2l-191.1-110.4c-1.7-1-4.2-2.5-5.6-3.4-1.8%2010.3-2.7%2020.7-2.7%2031.1s1%2020.8%202.8%2031.1c1.8%2010.2%204.6%2020.3%208.1%2030.1%203.6%209.8%208%2019.2%2013.2%2028.2zm-50.2-417c-11.8%2020.5-19.4%2043.1-22.5%2066.5s-1.5%2047.1%204.6%2070c6.1%2022.8%2016.6%2044.1%2031%2062.9%2014.4%2018.7%2032.3%2034.4%2052.7%2046.2l193.1%20111.6q.3.1.7.2h.7q.4%200%20.7-.2.3-.1.6-.3l81-46.8-233.2-134.6c-2.3-1.4-4.5-3.1-6.5-5a32.1%2032.1%200%200%201%20-5-6.5c-1.3-2.4-2.4-4.9-3.1-7.6-.7-2.6-1.1-5.3-1-8.1v-227.1c-9.8%203.6-19.3%208-28.3%2013.2-9%205.3-17.5%2011.3-25.5%2018-7.9%206.7-15.3%2014.1-22%2022.1-6.7%207.9-12.6%2016.5-17.8%2025.5zm663.3%20154.4c2.4%201.4%204.6%203%206.6%205%201.9%201.9%203.6%204.1%205%206.5%201.3%202.4%202.4%205%203.1%207.6.6%202.7%201%205.4.9%208.2v227.1c32.1-11.8%2060.1-32.5%2080.8-59.7%2020.8-27.2%2033.3-59.7%2036.2-93.7s-3.9-68.2-19.7-98.5-39.9-55.5-69.5-72.5l-193.1-111.6q-.3-.1-.7-.2h-.7q-.3.1-.7.2-.3.1-.6.3l-80.6%2046.6%20233.2%20134.7zm80.5-121h-.1v.1zm-.1-.1c5.8-33.6%201.9-68.2-11.3-99.7-13.1-31.5-35-58.6-63-78.2-28-19.5-61-30.7-95.1-32.2-34.2-1.4-68%206.9-97.6%2023.9l-193.1%20111.5q-.3.2-.5.5l-.4.6q-.1.3-.2.7-.1.3-.1.7v93.2l233.2-134.7c2.4-1.4%205-2.4%207.6-3.2%202.7-.7%205.4-1%208.1-1%202.8%200%205.5.3%208.2%201%202.6.8%205.1%201.8%207.5%203.2l191.1%20110.4c1.7%201%204.2%202.4%205.6%203.3zm-505.3-103.2c0-2.7.4-5.4%201.1-8.1.7-2.6%201.7-5.2%203.1-7.6%201.4-2.3%203-4.5%205-6.5%201.9-1.9%204.1-3.6%206.5-4.9l191.1-110.3c1.8-1.1%204.3-2.5%205.7-3.2-26.2-21.9-58.2-35.9-92.1-40.2-33.9-4.4-68.3%201-99.2%2015.5-31%2014.5-57.2%2037.6-75.5%2066.4-18.3%2028.9-28%2062.3-28%2096.5v223q.1.4.2.7.1.3.3.6.2.3.5.6.2.2.6.4l80.7%2046.6zm43.8%20294.7%20103.9%2060%20103.9-60v-119.9l-103.8-60-103.9%2060z'/%3e%3c/svg%3e";
|
|
777
|
+
const DeepSeekLogoSvg = "data:image/svg+xml,%3csvg%20fill='none'%20height='1320'%20viewBox='3.771%206.973%2023.993%2017.652'%20width='2500'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='m27.501%208.469c-.252-.123-.36.111-.508.23-.05.04-.093.09-.135.135-.368.395-.797.652-1.358.621-.821-.045-1.521.213-2.14.842-.132-.776-.57-1.238-1.235-1.535-.349-.155-.701-.309-.944-.645-.171-.238-.217-.504-.303-.765-.054-.159-.108-.32-.29-.348-.197-.031-.274.135-.352.273-.31.567-.43%201.192-.419%201.825.028%201.421.628%202.554%201.82%203.36.136.093.17.186.128.321-.081.278-.178.547-.264.824-.054.178-.135.217-.324.14a5.448%205.448%200%200%201%20-1.719-1.169c-.848-.82-1.614-1.726-2.57-2.435-.225-.166-.449-.32-.681-.467-.976-.95.128-1.729.383-1.82.267-.096.093-.428-.77-.424s-1.653.293-2.659.677a2.782%202.782%200%200%201%20-.46.135%209.554%209.554%200%200%200%20-2.853-.1c-1.866.21-3.356%201.092-4.452%202.6-1.315%201.81-1.625%203.87-1.246%206.018.399%202.261%201.552%204.136%203.326%205.601%201.837%201.518%203.955%202.262%206.37%202.12%201.466-.085%203.1-.282%204.942-1.842.465.23.952.322%201.762.392.623.059%201.223-.031%201.687-.127.728-.154.677-.828.414-.953-2.132-.994-1.665-.59-2.09-.916%201.084-1.285%202.717-2.619%203.356-6.94.05-.343.007-.558%200-.837-.004-.168.034-.235.228-.254a4.084%204.084%200%200%200%201.529-.47c1.382-.757%201.938-1.997%202.07-3.485.02-.227-.004-.463-.243-.582zm-12.041%2013.391c-2.067-1.627-3.07-2.162-3.483-2.138-.387.021-.318.465-.233.754.089.285.205.482.368.732.113.166.19.414-.112.598-.666.414-1.823-.139-1.878-.166-1.347-.793-2.473-1.842-3.267-3.276-.765-1.38-1.21-2.861-1.284-4.441-.02-.383.093-.518.472-.586a4.692%204.692%200%200%201%201.514-.04c2.109.31%203.905%201.255%205.41%202.749.86.853%201.51%201.871%202.18%202.865.711%201.057%201.478%202.063%202.454%202.887.343.289.619.51.881.672-.792.088-2.117.107-3.022-.61zm.99-6.38a.304.304%200%201%201%20.609%200c0%20.17-.136.304-.306.304a.3.3%200%200%201%20-.303-.305zm3.077%201.581c-.197.08-.394.15-.584.159a1.246%201.246%200%200%201%20-.79-.252c-.27-.227-.463-.354-.546-.752a1.752%201.752%200%200%201%20.016-.582c.07-.324-.008-.531-.235-.72-.187-.155-.422-.196-.682-.196a.551.551%200%200%201%20-.252-.078c-.108-.055-.197-.19-.112-.356.027-.053.159-.183.19-.207.352-.201.758-.135%201.134.016.349.142.611.404.99.773.388.448.457.573.678.906.174.264.333.534.441.842.066.192-.02.35-.248.448z'%20fill='%234d6bfe'/%3e%3c/svg%3e";
|
|
778
|
+
const MiniMaxLogoSvg = "/assets/minimax-BPMzvuL-.jpeg";
|
|
779
|
+
const AlibabaLogoSvg = "/assets/alibaba-TTwafVwX.svg";
|
|
780
|
+
const QwenLogoSvg = "/assets/qwen-CONDcHqt.png";
|
|
781
|
+
const ZhipuAILogoSvg = "/assets/zhipuai-BPNAnxo-.svg";
|
|
782
|
+
const PROVIDER_MAP = {
|
|
783
|
+
"claude-": "anthropic",
|
|
784
|
+
"gpt-": "openai",
|
|
785
|
+
"o1-": "openai",
|
|
786
|
+
"o3-": "openai",
|
|
787
|
+
"deepseek-": "deepseek",
|
|
788
|
+
MiniMax: "minimax",
|
|
789
|
+
qwen: "qwen",
|
|
790
|
+
"glm-": "zhipuai"
|
|
791
|
+
};
|
|
792
|
+
function detectProvider(model) {
|
|
793
|
+
if (model === null) return "unknown";
|
|
794
|
+
const modelLower = model.toLowerCase();
|
|
795
|
+
for (const [prefix, provider] of Object.entries(PROVIDER_MAP)) {
|
|
796
|
+
if (modelLower.startsWith(prefix.toLowerCase())) {
|
|
797
|
+
return provider;
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
return "unknown";
|
|
801
|
+
}
|
|
802
|
+
const sizeStyle = { width: 24, height: 24, objectFit: "contain" };
|
|
803
|
+
const AnthropicLogo = React.memo(
|
|
804
|
+
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: AnthropicLogoSvg, alt: "Anthropic", className, style: sizeStyle })
|
|
805
|
+
);
|
|
806
|
+
const OpenAILogo = React.memo(
|
|
807
|
+
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
808
|
+
"img",
|
|
809
|
+
{
|
|
810
|
+
src: OpenAILogoSvg,
|
|
811
|
+
alt: "OpenAI",
|
|
812
|
+
className,
|
|
813
|
+
style: { ...sizeStyle, background: "white", borderRadius: "4px" }
|
|
814
|
+
}
|
|
815
|
+
)
|
|
816
|
+
);
|
|
817
|
+
const DeepSeekLogo = React.memo(
|
|
818
|
+
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: DeepSeekLogoSvg, alt: "DeepSeek", className, style: sizeStyle })
|
|
819
|
+
);
|
|
820
|
+
const MiniMaxLogo = React.memo(
|
|
821
|
+
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: MiniMaxLogoSvg, alt: "MiniMax", className, style: sizeStyle })
|
|
822
|
+
);
|
|
823
|
+
const AlibabaLogo = React.memo(
|
|
824
|
+
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: AlibabaLogoSvg, alt: "Alibaba", className, style: sizeStyle })
|
|
825
|
+
);
|
|
826
|
+
const QwenLogo = React.memo(
|
|
827
|
+
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: QwenLogoSvg, alt: "Qwen", className, style: sizeStyle })
|
|
828
|
+
);
|
|
829
|
+
const ZhipuAILogo = React.memo(
|
|
830
|
+
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: ZhipuAILogoSvg, alt: "ZhipuAI", className, style: sizeStyle })
|
|
831
|
+
);
|
|
832
|
+
function ProviderLogo({
|
|
833
|
+
provider,
|
|
834
|
+
className
|
|
835
|
+
}) {
|
|
836
|
+
switch (provider) {
|
|
837
|
+
case "anthropic":
|
|
838
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(AnthropicLogo, { className });
|
|
839
|
+
case "openai":
|
|
840
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(OpenAILogo, { className });
|
|
841
|
+
case "deepseek":
|
|
842
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(DeepSeekLogo, { className });
|
|
843
|
+
case "minimax":
|
|
844
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(MiniMaxLogo, { className });
|
|
845
|
+
case "alibaba":
|
|
846
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(AlibabaLogo, { className });
|
|
847
|
+
case "qwen":
|
|
848
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(QwenLogo, { className });
|
|
849
|
+
case "zhipuai":
|
|
850
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(ZhipuAILogo, { className });
|
|
851
|
+
case "unknown":
|
|
852
|
+
return null;
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
function TooltipProvider({
|
|
856
|
+
delayDuration = 0,
|
|
857
|
+
...props
|
|
858
|
+
}) {
|
|
859
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
860
|
+
Provider,
|
|
861
|
+
{
|
|
862
|
+
"data-slot": "tooltip-provider",
|
|
863
|
+
delayDuration,
|
|
864
|
+
...props
|
|
865
|
+
}
|
|
866
|
+
);
|
|
867
|
+
}
|
|
868
|
+
function Tooltip({ ...props }) {
|
|
869
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(Root3, { "data-slot": "tooltip", ...props });
|
|
870
|
+
}
|
|
871
|
+
function TooltipTrigger({ ...props }) {
|
|
872
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(Trigger$3, { "data-slot": "tooltip-trigger", ...props });
|
|
873
|
+
}
|
|
874
|
+
function TooltipContent({
|
|
875
|
+
className,
|
|
876
|
+
sideOffset = 0,
|
|
877
|
+
children,
|
|
878
|
+
...props
|
|
879
|
+
}) {
|
|
880
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
881
|
+
Content2$1,
|
|
882
|
+
{
|
|
883
|
+
"data-slot": "tooltip-content",
|
|
884
|
+
sideOffset,
|
|
885
|
+
className: cn(
|
|
886
|
+
"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
|
|
887
|
+
className
|
|
888
|
+
),
|
|
889
|
+
...props,
|
|
890
|
+
children: [
|
|
891
|
+
children,
|
|
892
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Arrow2, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
|
|
893
|
+
]
|
|
894
|
+
}
|
|
895
|
+
) });
|
|
896
|
+
}
|
|
810
897
|
function forEachCodePoint(text, visit) {
|
|
811
898
|
for (const ch of Array.from(text)) {
|
|
812
899
|
visit(ch);
|
|
@@ -1113,11 +1200,6 @@ function resolveLogFormat(log) {
|
|
|
1113
1200
|
const pathFormat = apiFormatForPath(log.path);
|
|
1114
1201
|
return pathFormat === "unknown" ? log.apiFormat : pathFormat;
|
|
1115
1202
|
}
|
|
1116
|
-
const API_FORMAT_LABELS = {
|
|
1117
|
-
anthropic: "Anthropic",
|
|
1118
|
-
openai: "OpenAI",
|
|
1119
|
-
unknown: "Unknown"
|
|
1120
|
-
};
|
|
1121
1203
|
function ConversationHeader({
|
|
1122
1204
|
conversationId,
|
|
1123
1205
|
startTime,
|
|
@@ -1125,12 +1207,13 @@ function ConversationHeader({
|
|
|
1125
1207
|
totalCalls,
|
|
1126
1208
|
totalInputTokens,
|
|
1127
1209
|
totalOutputTokens,
|
|
1128
|
-
apiFormat,
|
|
1129
1210
|
expanded,
|
|
1130
1211
|
onToggle,
|
|
1131
|
-
|
|
1212
|
+
providers,
|
|
1132
1213
|
isLoading = false,
|
|
1133
1214
|
userAgent,
|
|
1215
|
+
clientPid,
|
|
1216
|
+
clientProjectFolder,
|
|
1134
1217
|
timeDisplayFormat,
|
|
1135
1218
|
onClear
|
|
1136
1219
|
}) {
|
|
@@ -1171,14 +1254,47 @@ function ConversationHeader({
|
|
|
1171
1254
|
},
|
|
1172
1255
|
children: [
|
|
1173
1256
|
expanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-4 text-muted-foreground shrink-0" }) : isLoading ? /* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "size-4 animate-spin text-muted-foreground shrink-0" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { className: "size-4 text-muted-foreground shrink-0" }),
|
|
1174
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1257
|
+
conversationId.startsWith("PID:") || conversationId.includes("|") ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
1258
|
+
clientPid !== null && clientPid !== void 0 ? /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1259
|
+
"span",
|
|
1260
|
+
{
|
|
1261
|
+
className: "text-purple-400/90 font-mono text-xs font-semibold shrink-0",
|
|
1262
|
+
title: `PID ${clientPid}`,
|
|
1263
|
+
children: [
|
|
1264
|
+
"PID ",
|
|
1265
|
+
clientPid
|
|
1266
|
+
]
|
|
1267
|
+
}
|
|
1268
|
+
) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-purple-400/90 font-mono text-xs font-semibold shrink-0", children: conversationId }),
|
|
1269
|
+
clientProjectFolder !== null && clientProjectFolder !== void 0 && clientProjectFolder !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1270
|
+
"span",
|
|
1271
|
+
{
|
|
1272
|
+
className: "text-muted-foreground text-xs font-mono truncate max-w-[200px] shrink-0",
|
|
1273
|
+
title: clientProjectFolder,
|
|
1274
|
+
children: clientProjectFolder
|
|
1275
|
+
}
|
|
1276
|
+
)
|
|
1277
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
1278
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1279
|
+
"span",
|
|
1280
|
+
{
|
|
1281
|
+
className: "text-purple-400/90 font-mono text-xs font-semibold shrink-0",
|
|
1282
|
+
title: conversationId,
|
|
1283
|
+
children: conversationId.length > 24 ? conversationId.slice(0, 12) + "..." + conversationId.slice(-12) : conversationId
|
|
1284
|
+
}
|
|
1285
|
+
),
|
|
1286
|
+
clientPid !== null && clientPid !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1287
|
+
"span",
|
|
1288
|
+
{
|
|
1289
|
+
className: "text-muted-foreground text-xs font-mono tabular-nums shrink-0 px-1.5 py-0.5 rounded border border-border bg-muted/40",
|
|
1290
|
+
title: `Client process ID ${clientPid}`,
|
|
1291
|
+
children: [
|
|
1292
|
+
"PID ",
|
|
1293
|
+
clientPid
|
|
1294
|
+
]
|
|
1295
|
+
}
|
|
1296
|
+
)
|
|
1297
|
+
] }),
|
|
1182
1298
|
userAgent !== null && userAgent !== void 0 && userAgent !== "" && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1183
1299
|
"span",
|
|
1184
1300
|
{
|
|
@@ -1190,19 +1306,17 @@ function ConversationHeader({
|
|
|
1190
1306
|
]
|
|
1191
1307
|
}
|
|
1192
1308
|
),
|
|
1193
|
-
|
|
1194
|
-
|
|
1309
|
+
providers !== void 0 && providers.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipProvider, { delayDuration: 150, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1310
|
+
"span",
|
|
1195
1311
|
{
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
),
|
|
1203
|
-
children: API_FORMAT_LABELS[apiFormat]
|
|
1312
|
+
className: "flex items-center gap-0.5 shrink-0",
|
|
1313
|
+
"aria-label": "Models used in this session",
|
|
1314
|
+
children: providers.map(({ provider, models }) => /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
1315
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderLogo, { provider, className: "size-4" }) }) }),
|
|
1316
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: models.length === 1 ? models[0] : models.join(", ") })
|
|
1317
|
+
] }, provider))
|
|
1204
1318
|
}
|
|
1205
|
-
),
|
|
1319
|
+
) }),
|
|
1206
1320
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex items-center gap-1 text-muted-foreground text-xs shrink-0", children: [
|
|
1207
1321
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-3" }),
|
|
1208
1322
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono tabular-nums", children: formatTimestampRange(startTime, endTime, timeDisplayFormat) })
|
|
@@ -1269,26 +1383,6 @@ function ConversationHeader({
|
|
|
1269
1383
|
}
|
|
1270
1384
|
);
|
|
1271
1385
|
}
|
|
1272
|
-
function getGroupApiFormat(logs) {
|
|
1273
|
-
for (const log of logs) {
|
|
1274
|
-
const apiFormat = resolveLogFormat(log);
|
|
1275
|
-
if (apiFormat !== "unknown") {
|
|
1276
|
-
return apiFormat;
|
|
1277
|
-
}
|
|
1278
|
-
}
|
|
1279
|
-
return "unknown";
|
|
1280
|
-
}
|
|
1281
|
-
function hasMixedApiFormat(logs) {
|
|
1282
|
-
let hasAnthropic = false;
|
|
1283
|
-
let hasOpenai = false;
|
|
1284
|
-
for (const log of logs) {
|
|
1285
|
-
const apiFormat = resolveLogFormat(log);
|
|
1286
|
-
if (apiFormat === "anthropic") hasAnthropic = true;
|
|
1287
|
-
else if (apiFormat === "openai") hasOpenai = true;
|
|
1288
|
-
if (hasAnthropic && hasOpenai) return true;
|
|
1289
|
-
}
|
|
1290
|
-
return false;
|
|
1291
|
-
}
|
|
1292
1386
|
function getConversationId(log) {
|
|
1293
1387
|
if (log.isTest === true) return "provider-test";
|
|
1294
1388
|
if (log.sessionId !== null && log.sessionId !== "" && log.sessionId !== void 0) {
|
|
@@ -1704,128 +1798,6 @@ function getInteriorCrabVariantIndex(seed) {
|
|
|
1704
1798
|
function getInteriorCrabVariant(seed) {
|
|
1705
1799
|
return getCrabVariant(getInteriorCrabVariantIndex(seed));
|
|
1706
1800
|
}
|
|
1707
|
-
const AnthropicLogoSvg = "data:image/svg+xml,%3csvg%20height='2500'%20viewBox='0%206.603%201192.672%201193.397'%20width='2500'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='m233.96%20800.215%20234.684-131.678%203.947-11.436-3.947-6.363h-11.436l-39.221-2.416-134.094-3.624-116.296-4.832-112.67-6.04-28.35-6.04-26.577-35.035%202.738-17.477%2023.84-16.027%2034.147%202.98%2075.463%205.155%20113.235%207.812%2082.147%204.832%20121.692%2012.644h19.329l2.738-7.812-6.604-4.832-5.154-4.832-117.182-79.41-126.845-83.92-66.443-48.321-35.92-24.484-18.12-22.953-7.813-50.093%2032.618-35.92%2043.812%202.98%2011.195%202.98%2044.375%2034.147%2094.792%2073.37%20123.786%2091.167%2018.12%2015.06%207.249-5.154.886-3.624-8.135-13.61-67.329-121.692-71.838-123.785-31.974-51.302-8.456-30.765c-2.98-12.645-5.154-23.275-5.154-36.242l37.127-50.416%2020.537-6.604%2049.53%206.604%2020.86%2018.121%2030.765%2070.39%2049.852%20110.818%2077.315%20150.684%2022.631%2044.698%2012.08%2041.396%204.51%2012.645h7.813v-7.248l6.362-84.886%2011.759-104.215%2011.436-134.094%203.946-37.772%2018.685-45.262%2037.127-24.482%2028.994%2013.852%2023.839%2034.148-3.303%2022.067-14.174%2092.134-27.785%20144.323-18.121%2096.644h10.55l12.08-12.08%2048.887-64.913%2082.147-102.685%2036.242-40.752%2042.282-45.02%2027.14-21.423h51.303l37.772%2056.135-16.913%2057.986-52.832%2067.007-43.812%2056.779-62.82%2084.563-39.22%2067.651%203.623%205.396%209.343-.886%20141.906-30.201%2076.671-13.852%2091.49-15.705%2041.396%2019.329%204.51%2019.65-16.269%2040.189-97.852%2024.16-114.764%2022.954-170.9%2040.43-2.093%201.53%202.416%202.98%2076.993%207.248%2032.94%201.771h80.617l150.12%2011.195%2039.222%2025.933%2023.517%2031.732-3.946%2024.16-60.403%2030.766-81.503-19.33-190.228-45.26-65.235-16.27h-9.02v5.397l54.362%2053.154%2099.624%2089.96%20124.752%20115.973%206.362%2028.671-16.027%2022.63-16.912-2.415-109.611-82.47-42.282-37.127-95.758-80.618h-6.363v8.456l22.067%2032.296%20116.537%20175.167%206.04%2053.719-8.456%2017.476-30.201%2010.55-33.181-6.04-68.215-95.758-70.39-107.84-56.778-96.644-6.926%203.947-33.503%20360.886-15.705%2018.443-36.243%2013.852-30.201-22.953-16.027-37.127%2016.027-73.37%2019.329-95.758%2015.704-76.107%2014.175-94.55%208.456-31.41-.563-2.094-6.927.886-71.275%2097.852-108.402%20146.497-85.772%2091.812-20.537%208.134-35.597-18.443%203.301-32.94%2019.893-29.315%20118.712-151.007%2071.597-93.583%2046.228-54.04-.322-7.813h-2.738l-315.302%20204.725-56.135%207.248-24.16-22.63%202.98-37.128%2011.435-12.08%2094.792-65.236-.322.323z'%20fill='%23d97757'/%3e%3c/svg%3e";
|
|
1708
|
-
const OpenAILogoSvg = "data:image/svg+xml,%3csvg%20height='2500'%20viewBox='-1%20-.1%20949.1%20959.8'%20width='2474'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='m925.8%20456.3c10.4%2023.2%2017%2048%2019.7%2073.3%202.6%2025.3%201.3%2050.9-4.1%2075.8-5.3%2024.9-14.5%2048.8-27.3%2070.8-8.4%2014.7-18.3%2028.5-29.7%2041.2-11.3%2012.6-23.9%2024-37.6%2034-13.8%2010-28.5%2018.4-44.1%2025.3-15.5%206.8-31.7%2012-48.3%2015.4-7.8%2024.2-19.4%2047.1-34.4%2067.7-14.9%2020.6-33%2038.7-53.6%2053.6-20.6%2015-43.4%2026.6-67.6%2034.4-24.2%207.9-49.5%2011.8-75%2011.8-16.9.1-33.9-1.7-50.5-5.1-16.5-3.5-32.7-8.8-48.2-15.7s-30.2-15.5-43.9-25.5c-13.6-10-26.2-21.5-37.4-34.2-25%205.4-50.6%206.7-75.9%204.1-25.3-2.7-50.1-9.3-73.4-19.7-23.2-10.3-44.7-24.3-63.6-41.4s-35-37.1-47.7-59.1c-8.5-14.7-15.5-30.2-20.8-46.3s-8.8-32.7-10.6-49.6c-1.8-16.8-1.7-33.8.1-50.7%201.8-16.8%205.5-33.4%2010.8-49.5-17-18.9-31-40.4-41.4-63.6-10.3-23.3-17-48-19.6-73.3-2.7-25.3-1.3-50.9%204-75.8s14.5-48.8%2027.3-70.8c8.4-14.7%2018.3-28.6%2029.6-41.2s24-24%2037.7-34%2028.5-18.5%2044-25.3c15.6-6.9%2031.8-12%2048.4-15.4%207.8-24.3%2019.4-47.1%2034.3-67.7%2015-20.6%2033.1-38.7%2053.7-53.7%2020.6-14.9%2043.4-26.5%2067.6-34.4%2024.2-7.8%2049.5-11.8%2075-11.7%2016.9-.1%2033.9%201.6%2050.5%205.1s32.8%208.7%2048.3%2015.6c15.5%207%2030.2%2015.5%2043.9%2025.5%2013.7%2010.1%2026.3%2021.5%2037.5%2034.2%2024.9-5.3%2050.5-6.6%2075.8-4s50%209.3%2073.3%2019.6c23.2%2010.4%2044.7%2024.3%2063.6%2041.4%2018.9%2017%2035%2036.9%2047.7%2059%208.5%2014.6%2015.5%2030.1%2020.8%2046.3%205.3%2016.1%208.9%2032.7%2010.6%2049.6%201.8%2016.9%201.8%2033.9-.1%2050.8-1.8%2016.9-5.5%2033.5-10.8%2049.6%2017.1%2018.9%2031%2040.3%2041.4%2063.6zm-333.2%20426.9c21.8-9%2041.6-22.3%2058.3-39s30-36.5%2039-58.4c9-21.8%2013.7-45.2%2013.7-68.8v-223q-.1-.3-.2-.7-.1-.3-.3-.6-.2-.3-.5-.5-.3-.3-.6-.4l-80.7-46.6v269.4c0%202.7-.4%205.5-1.1%208.1-.7%202.7-1.7%205.2-3.1%207.6s-3%204.6-5%206.5a32.1%2032.1%200%200%201%20-6.5%205l-191.1%20110.3c-1.6%201-4.3%202.4-5.7%203.2%207.9%206.7%2016.5%2012.6%2025.5%2017.8%209.1%205.2%2018.5%209.6%2028.3%2013.2%209.8%203.5%2019.9%206.2%2030.1%208%2010.3%201.8%2020.7%202.7%2031.1%202.7%2023.6%200%2047-4.7%2068.8-13.8zm-455.1-151.4c11.9%2020.5%2027.6%2038.3%2046.3%2052.7%2018.8%2014.4%2040.1%2024.9%2062.9%2031s46.6%207.7%2070%204.6%2045.9-10.7%2066.4-22.5l193.2-111.5.5-.5q.2-.2.3-.6.2-.3.3-.6v-94l-233.2%20134.9c-2.4%201.4-4.9%202.4-7.5%203.2-2.7.7-5.4%201-8.2%201-2.7%200-5.4-.3-8.1-1-2.6-.8-5.2-1.8-7.6-3.2l-191.1-110.4c-1.7-1-4.2-2.5-5.6-3.4-1.8%2010.3-2.7%2020.7-2.7%2031.1s1%2020.8%202.8%2031.1c1.8%2010.2%204.6%2020.3%208.1%2030.1%203.6%209.8%208%2019.2%2013.2%2028.2zm-50.2-417c-11.8%2020.5-19.4%2043.1-22.5%2066.5s-1.5%2047.1%204.6%2070c6.1%2022.8%2016.6%2044.1%2031%2062.9%2014.4%2018.7%2032.3%2034.4%2052.7%2046.2l193.1%20111.6q.3.1.7.2h.7q.4%200%20.7-.2.3-.1.6-.3l81-46.8-233.2-134.6c-2.3-1.4-4.5-3.1-6.5-5a32.1%2032.1%200%200%201%20-5-6.5c-1.3-2.4-2.4-4.9-3.1-7.6-.7-2.6-1.1-5.3-1-8.1v-227.1c-9.8%203.6-19.3%208-28.3%2013.2-9%205.3-17.5%2011.3-25.5%2018-7.9%206.7-15.3%2014.1-22%2022.1-6.7%207.9-12.6%2016.5-17.8%2025.5zm663.3%20154.4c2.4%201.4%204.6%203%206.6%205%201.9%201.9%203.6%204.1%205%206.5%201.3%202.4%202.4%205%203.1%207.6.6%202.7%201%205.4.9%208.2v227.1c32.1-11.8%2060.1-32.5%2080.8-59.7%2020.8-27.2%2033.3-59.7%2036.2-93.7s-3.9-68.2-19.7-98.5-39.9-55.5-69.5-72.5l-193.1-111.6q-.3-.1-.7-.2h-.7q-.3.1-.7.2-.3.1-.6.3l-80.6%2046.6%20233.2%20134.7zm80.5-121h-.1v.1zm-.1-.1c5.8-33.6%201.9-68.2-11.3-99.7-13.1-31.5-35-58.6-63-78.2-28-19.5-61-30.7-95.1-32.2-34.2-1.4-68%206.9-97.6%2023.9l-193.1%20111.5q-.3.2-.5.5l-.4.6q-.1.3-.2.7-.1.3-.1.7v93.2l233.2-134.7c2.4-1.4%205-2.4%207.6-3.2%202.7-.7%205.4-1%208.1-1%202.8%200%205.5.3%208.2%201%202.6.8%205.1%201.8%207.5%203.2l191.1%20110.4c1.7%201%204.2%202.4%205.6%203.3zm-505.3-103.2c0-2.7.4-5.4%201.1-8.1.7-2.6%201.7-5.2%203.1-7.6%201.4-2.3%203-4.5%205-6.5%201.9-1.9%204.1-3.6%206.5-4.9l191.1-110.3c1.8-1.1%204.3-2.5%205.7-3.2-26.2-21.9-58.2-35.9-92.1-40.2-33.9-4.4-68.3%201-99.2%2015.5-31%2014.5-57.2%2037.6-75.5%2066.4-18.3%2028.9-28%2062.3-28%2096.5v223q.1.4.2.7.1.3.3.6.2.3.5.6.2.2.6.4l80.7%2046.6zm43.8%20294.7%20103.9%2060%20103.9-60v-119.9l-103.8-60-103.9%2060z'/%3e%3c/svg%3e";
|
|
1709
|
-
const DeepSeekLogoSvg = "data:image/svg+xml,%3csvg%20fill='none'%20height='1320'%20viewBox='3.771%206.973%2023.993%2017.652'%20width='2500'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='m27.501%208.469c-.252-.123-.36.111-.508.23-.05.04-.093.09-.135.135-.368.395-.797.652-1.358.621-.821-.045-1.521.213-2.14.842-.132-.776-.57-1.238-1.235-1.535-.349-.155-.701-.309-.944-.645-.171-.238-.217-.504-.303-.765-.054-.159-.108-.32-.29-.348-.197-.031-.274.135-.352.273-.31.567-.43%201.192-.419%201.825.028%201.421.628%202.554%201.82%203.36.136.093.17.186.128.321-.081.278-.178.547-.264.824-.054.178-.135.217-.324.14a5.448%205.448%200%200%201%20-1.719-1.169c-.848-.82-1.614-1.726-2.57-2.435-.225-.166-.449-.32-.681-.467-.976-.95.128-1.729.383-1.82.267-.096.093-.428-.77-.424s-1.653.293-2.659.677a2.782%202.782%200%200%201%20-.46.135%209.554%209.554%200%200%200%20-2.853-.1c-1.866.21-3.356%201.092-4.452%202.6-1.315%201.81-1.625%203.87-1.246%206.018.399%202.261%201.552%204.136%203.326%205.601%201.837%201.518%203.955%202.262%206.37%202.12%201.466-.085%203.1-.282%204.942-1.842.465.23.952.322%201.762.392.623.059%201.223-.031%201.687-.127.728-.154.677-.828.414-.953-2.132-.994-1.665-.59-2.09-.916%201.084-1.285%202.717-2.619%203.356-6.94.05-.343.007-.558%200-.837-.004-.168.034-.235.228-.254a4.084%204.084%200%200%200%201.529-.47c1.382-.757%201.938-1.997%202.07-3.485.02-.227-.004-.463-.243-.582zm-12.041%2013.391c-2.067-1.627-3.07-2.162-3.483-2.138-.387.021-.318.465-.233.754.089.285.205.482.368.732.113.166.19.414-.112.598-.666.414-1.823-.139-1.878-.166-1.347-.793-2.473-1.842-3.267-3.276-.765-1.38-1.21-2.861-1.284-4.441-.02-.383.093-.518.472-.586a4.692%204.692%200%200%201%201.514-.04c2.109.31%203.905%201.255%205.41%202.749.86.853%201.51%201.871%202.18%202.865.711%201.057%201.478%202.063%202.454%202.887.343.289.619.51.881.672-.792.088-2.117.107-3.022-.61zm.99-6.38a.304.304%200%201%201%20.609%200c0%20.17-.136.304-.306.304a.3.3%200%200%201%20-.303-.305zm3.077%201.581c-.197.08-.394.15-.584.159a1.246%201.246%200%200%201%20-.79-.252c-.27-.227-.463-.354-.546-.752a1.752%201.752%200%200%201%20.016-.582c.07-.324-.008-.531-.235-.72-.187-.155-.422-.196-.682-.196a.551.551%200%200%201%20-.252-.078c-.108-.055-.197-.19-.112-.356.027-.053.159-.183.19-.207.352-.201.758-.135%201.134.016.349.142.611.404.99.773.388.448.457.573.678.906.174.264.333.534.441.842.066.192-.02.35-.248.448z'%20fill='%234d6bfe'/%3e%3c/svg%3e";
|
|
1710
|
-
const MiniMaxLogoSvg = "/assets/minimax-BPMzvuL-.jpeg";
|
|
1711
|
-
const AlibabaLogoSvg = "/assets/alibaba-TTwafVwX.svg";
|
|
1712
|
-
const QwenLogoSvg = "/assets/qwen-CONDcHqt.png";
|
|
1713
|
-
const ZhipuAILogoSvg = "/assets/zhipuai-BPNAnxo-.svg";
|
|
1714
|
-
const PROVIDER_MAP = {
|
|
1715
|
-
"claude-": "anthropic",
|
|
1716
|
-
"gpt-": "openai",
|
|
1717
|
-
"o1-": "openai",
|
|
1718
|
-
"o3-": "openai",
|
|
1719
|
-
"deepseek-": "deepseek",
|
|
1720
|
-
MiniMax: "minimax",
|
|
1721
|
-
qwen: "qwen",
|
|
1722
|
-
"glm-": "zhipuai"
|
|
1723
|
-
};
|
|
1724
|
-
function detectProvider(model) {
|
|
1725
|
-
if (model === null) return "unknown";
|
|
1726
|
-
const modelLower = model.toLowerCase();
|
|
1727
|
-
for (const [prefix, provider] of Object.entries(PROVIDER_MAP)) {
|
|
1728
|
-
if (modelLower.startsWith(prefix.toLowerCase())) {
|
|
1729
|
-
return provider;
|
|
1730
|
-
}
|
|
1731
|
-
}
|
|
1732
|
-
return "unknown";
|
|
1733
|
-
}
|
|
1734
|
-
const sizeStyle = { width: 24, height: 24, objectFit: "contain" };
|
|
1735
|
-
const AnthropicLogo = React.memo(
|
|
1736
|
-
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: AnthropicLogoSvg, alt: "Anthropic", className, style: sizeStyle })
|
|
1737
|
-
);
|
|
1738
|
-
const OpenAILogo = React.memo(
|
|
1739
|
-
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1740
|
-
"img",
|
|
1741
|
-
{
|
|
1742
|
-
src: OpenAILogoSvg,
|
|
1743
|
-
alt: "OpenAI",
|
|
1744
|
-
className,
|
|
1745
|
-
style: { ...sizeStyle, background: "white", borderRadius: "4px" }
|
|
1746
|
-
}
|
|
1747
|
-
)
|
|
1748
|
-
);
|
|
1749
|
-
const DeepSeekLogo = React.memo(
|
|
1750
|
-
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: DeepSeekLogoSvg, alt: "DeepSeek", className, style: sizeStyle })
|
|
1751
|
-
);
|
|
1752
|
-
const MiniMaxLogo = React.memo(
|
|
1753
|
-
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: MiniMaxLogoSvg, alt: "MiniMax", className, style: sizeStyle })
|
|
1754
|
-
);
|
|
1755
|
-
const AlibabaLogo = React.memo(
|
|
1756
|
-
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: AlibabaLogoSvg, alt: "Alibaba", className, style: sizeStyle })
|
|
1757
|
-
);
|
|
1758
|
-
const QwenLogo = React.memo(
|
|
1759
|
-
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: QwenLogoSvg, alt: "Qwen", className, style: sizeStyle })
|
|
1760
|
-
);
|
|
1761
|
-
const ZhipuAILogo = React.memo(
|
|
1762
|
-
({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: ZhipuAILogoSvg, alt: "ZhipuAI", className, style: sizeStyle })
|
|
1763
|
-
);
|
|
1764
|
-
function ProviderLogo({
|
|
1765
|
-
provider,
|
|
1766
|
-
className
|
|
1767
|
-
}) {
|
|
1768
|
-
switch (provider) {
|
|
1769
|
-
case "anthropic":
|
|
1770
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(AnthropicLogo, { className });
|
|
1771
|
-
case "openai":
|
|
1772
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(OpenAILogo, { className });
|
|
1773
|
-
case "deepseek":
|
|
1774
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(DeepSeekLogo, { className });
|
|
1775
|
-
case "minimax":
|
|
1776
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(MiniMaxLogo, { className });
|
|
1777
|
-
case "alibaba":
|
|
1778
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(AlibabaLogo, { className });
|
|
1779
|
-
case "qwen":
|
|
1780
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(QwenLogo, { className });
|
|
1781
|
-
case "zhipuai":
|
|
1782
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(ZhipuAILogo, { className });
|
|
1783
|
-
case "unknown":
|
|
1784
|
-
return null;
|
|
1785
|
-
}
|
|
1786
|
-
}
|
|
1787
|
-
function TooltipProvider({
|
|
1788
|
-
delayDuration = 0,
|
|
1789
|
-
...props
|
|
1790
|
-
}) {
|
|
1791
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1792
|
-
Provider,
|
|
1793
|
-
{
|
|
1794
|
-
"data-slot": "tooltip-provider",
|
|
1795
|
-
delayDuration,
|
|
1796
|
-
...props
|
|
1797
|
-
}
|
|
1798
|
-
);
|
|
1799
|
-
}
|
|
1800
|
-
function Tooltip({ ...props }) {
|
|
1801
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(Root3, { "data-slot": "tooltip", ...props });
|
|
1802
|
-
}
|
|
1803
|
-
function TooltipTrigger({ ...props }) {
|
|
1804
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(Trigger$3, { "data-slot": "tooltip-trigger", ...props });
|
|
1805
|
-
}
|
|
1806
|
-
function TooltipContent({
|
|
1807
|
-
className,
|
|
1808
|
-
sideOffset = 0,
|
|
1809
|
-
children,
|
|
1810
|
-
...props
|
|
1811
|
-
}) {
|
|
1812
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1813
|
-
Content2$1,
|
|
1814
|
-
{
|
|
1815
|
-
"data-slot": "tooltip-content",
|
|
1816
|
-
sideOffset,
|
|
1817
|
-
className: cn(
|
|
1818
|
-
"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
|
|
1819
|
-
className
|
|
1820
|
-
),
|
|
1821
|
-
...props,
|
|
1822
|
-
children: [
|
|
1823
|
-
children,
|
|
1824
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Arrow2, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
|
|
1825
|
-
]
|
|
1826
|
-
}
|
|
1827
|
-
) });
|
|
1828
|
-
}
|
|
1829
1801
|
function getJsonExpansionPolicy(_value) {
|
|
1830
1802
|
return { depth: Number.POSITIVE_INFINITY };
|
|
1831
1803
|
}
|
|
@@ -1989,19 +1961,19 @@ function useCopyFeedback(text) {
|
|
|
1989
1961
|
return { copied, copy };
|
|
1990
1962
|
}
|
|
1991
1963
|
const LazyCompareDrawer = reactExports.lazy(
|
|
1992
|
-
() => import("./CompareDrawer-
|
|
1964
|
+
() => import("./CompareDrawer-DNDkVh7T.mjs").then((m) => ({ default: m.CompareDrawer }))
|
|
1993
1965
|
);
|
|
1994
1966
|
const LazyReplayDialog = reactExports.lazy(
|
|
1995
|
-
() => import("./ReplayDialog-
|
|
1967
|
+
() => import("./ReplayDialog-Dx4um0uS.mjs").then((m) => ({ default: m.ReplayDialog }))
|
|
1996
1968
|
);
|
|
1997
1969
|
const LazyRequestAnatomy = reactExports.lazy(
|
|
1998
|
-
() => import("./RequestAnatomy-
|
|
1970
|
+
() => import("./RequestAnatomy-CKPBN_PB.mjs").then((m) => ({ default: m.RequestAnatomy }))
|
|
1999
1971
|
);
|
|
2000
1972
|
const LazyResponseView = reactExports.lazy(
|
|
2001
|
-
() => import("./ResponseView-
|
|
1973
|
+
() => import("./ResponseView-3wkt24-z.mjs").then((m) => ({ default: m.ResponseView }))
|
|
2002
1974
|
);
|
|
2003
1975
|
const LazyStreamingChunkSequence = reactExports.lazy(
|
|
2004
|
-
() => import("./StreamingChunkSequence-
|
|
1976
|
+
() => import("./StreamingChunkSequence-CSK53g5a.mjs").then((m) => ({
|
|
2005
1977
|
default: m.StreamingChunkSequence
|
|
2006
1978
|
}))
|
|
2007
1979
|
);
|
|
@@ -2397,6 +2369,41 @@ function SplitRows({ lines }) {
|
|
|
2397
2369
|
)) });
|
|
2398
2370
|
}
|
|
2399
2371
|
const DiffView = reactExports.memo(DiffViewInner);
|
|
2372
|
+
const badgeVariants = cva(
|
|
2373
|
+
"inline-flex items-center justify-center rounded-full border border-transparent px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
2374
|
+
{
|
|
2375
|
+
variants: {
|
|
2376
|
+
variant: {
|
|
2377
|
+
default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
2378
|
+
secondary: "bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
2379
|
+
destructive: "bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
2380
|
+
outline: "border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
|
|
2381
|
+
ghost: "[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
|
|
2382
|
+
link: "text-primary underline-offset-4 [a&]:hover:underline"
|
|
2383
|
+
}
|
|
2384
|
+
},
|
|
2385
|
+
defaultVariants: {
|
|
2386
|
+
variant: "default"
|
|
2387
|
+
}
|
|
2388
|
+
}
|
|
2389
|
+
);
|
|
2390
|
+
function Badge({
|
|
2391
|
+
className,
|
|
2392
|
+
variant = "default",
|
|
2393
|
+
asChild = false,
|
|
2394
|
+
...props
|
|
2395
|
+
}) {
|
|
2396
|
+
const Comp = asChild ? Slot : "span";
|
|
2397
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2398
|
+
Comp,
|
|
2399
|
+
{
|
|
2400
|
+
"data-slot": "badge",
|
|
2401
|
+
"data-variant": variant,
|
|
2402
|
+
className: cn(badgeVariants({ variant }), className),
|
|
2403
|
+
...props
|
|
2404
|
+
}
|
|
2405
|
+
);
|
|
2406
|
+
}
|
|
2400
2407
|
const STATUS_BADGE_CLASSES = {
|
|
2401
2408
|
success: "bg-emerald-500/15 text-emerald-400 border-emerald-500/25",
|
|
2402
2409
|
client_error: "bg-amber-500/15 text-amber-400 border-amber-500/25",
|
|
@@ -2476,10 +2483,6 @@ const LogEntryHeader = reactExports.memo(function({
|
|
|
2476
2483
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-3" }),
|
|
2477
2484
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono tabular-nums", title: log.timestamp, children: formatTimestamp$2(log.timestamp, timeDisplayFormat) })
|
|
2478
2485
|
] }),
|
|
2479
|
-
log.model !== null && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
2480
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderLogo, { provider: detectProvider(log.model), className: "size-4" }) }) }),
|
|
2481
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: log.model })
|
|
2482
|
-
] }),
|
|
2483
2486
|
statusCategory !== "success" && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2484
2487
|
Badge,
|
|
2485
2488
|
{
|
|
@@ -5584,6 +5587,24 @@ function computeStats(logs) {
|
|
|
5584
5587
|
}
|
|
5585
5588
|
return { totalInputTokens: totalInput, totalOutputTokens: totalOutput };
|
|
5586
5589
|
}
|
|
5590
|
+
function collectProviders(logs) {
|
|
5591
|
+
const buckets = /* @__PURE__ */ new Map();
|
|
5592
|
+
for (const log of logs) {
|
|
5593
|
+
if (log.model === null) continue;
|
|
5594
|
+
const provider = detectProvider(log.model);
|
|
5595
|
+
if (provider === "unknown") continue;
|
|
5596
|
+
let models = buckets.get(provider);
|
|
5597
|
+
if (models === void 0) {
|
|
5598
|
+
models = /* @__PURE__ */ new Set();
|
|
5599
|
+
buckets.set(provider, models);
|
|
5600
|
+
}
|
|
5601
|
+
models.add(log.model);
|
|
5602
|
+
}
|
|
5603
|
+
return [...buckets.entries()].map(([provider, models]) => ({
|
|
5604
|
+
provider,
|
|
5605
|
+
models: [...models]
|
|
5606
|
+
}));
|
|
5607
|
+
}
|
|
5587
5608
|
const ConversationGroup = reactExports.memo(function({
|
|
5588
5609
|
group,
|
|
5589
5610
|
viewMode = "simple",
|
|
@@ -5612,9 +5633,9 @@ const ConversationGroup = reactExports.memo(function({
|
|
|
5612
5633
|
[onExpandedChange]
|
|
5613
5634
|
);
|
|
5614
5635
|
const stats = reactExports.useMemo(() => computeStats(group.logs), [group.logs]);
|
|
5636
|
+
const providers = reactExports.useMemo(() => collectProviders(group.logs), [group.logs]);
|
|
5615
5637
|
const startTime = group.logs[0]?.timestamp ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
5616
5638
|
const endTime = group.logs[group.logs.length - 1]?.timestamp ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
5617
|
-
const mixed = hasMixedApiFormat(group.logs);
|
|
5618
5639
|
const isLoading = group.logs.some((log) => log.responseStatus === null);
|
|
5619
5640
|
const showTraceRollupMetrics = standalone && !hasPinnedSessionContext;
|
|
5620
5641
|
const turnGroups = reactExports.useMemo(() => buildTurnGroups(group.logs), [group.logs]);
|
|
@@ -5641,12 +5662,13 @@ const ConversationGroup = reactExports.memo(function({
|
|
|
5641
5662
|
totalCalls: group.logs.length,
|
|
5642
5663
|
totalInputTokens: stats.totalInputTokens,
|
|
5643
5664
|
totalOutputTokens: stats.totalOutputTokens,
|
|
5644
|
-
apiFormat: getGroupApiFormat(group.logs),
|
|
5645
5665
|
expanded,
|
|
5646
5666
|
onToggle: () => setExpanded(!expanded),
|
|
5647
|
-
|
|
5667
|
+
providers,
|
|
5648
5668
|
isLoading,
|
|
5649
5669
|
userAgent: group.logs[0]?.userAgent ?? null,
|
|
5670
|
+
clientPid: group.logs[0]?.clientPid ?? null,
|
|
5671
|
+
clientProjectFolder: group.logs[0]?.clientProjectFolder ?? null,
|
|
5650
5672
|
timeDisplayFormat,
|
|
5651
5673
|
onClear: () => onClearGroup(group.logs.map((l) => l.id))
|
|
5652
5674
|
}
|
|
@@ -9770,6 +9792,18 @@ function OnboardingSettingsTab() {
|
|
|
9770
9792
|
},
|
|
9771
9793
|
{ id: "opencode-verify", label: "OpenCode verify", value: "opencode mcp list" },
|
|
9772
9794
|
{ id: "opencode-proxy", label: "OpenCode proxy", value: `LLM_BASE_URL=${origin}/proxy` },
|
|
9795
|
+
{
|
|
9796
|
+
id: "mimo-config",
|
|
9797
|
+
label: "MiMo Code config",
|
|
9798
|
+
value: "agent-inspector onboard --mimo-only"
|
|
9799
|
+
},
|
|
9800
|
+
{
|
|
9801
|
+
id: "mimo-status",
|
|
9802
|
+
label: "MiMo Code status",
|
|
9803
|
+
value: "agent-inspector onboard --status --mimo-only"
|
|
9804
|
+
},
|
|
9805
|
+
{ id: "mimo-verify", label: "MiMo Code verify", value: "mimo mcp list" },
|
|
9806
|
+
{ id: "mimo-proxy", label: "MiMo Code proxy", value: `OPENAI_BASE_URL=${origin}/proxy` },
|
|
9773
9807
|
{ id: "mcp", label: "MCP URL", value: `${origin}/api/mcp` },
|
|
9774
9808
|
{ id: "proxy", label: "Proxy URL", value: `${origin}/proxy` },
|
|
9775
9809
|
{ id: "anthropic", label: "Anthropic base", value: `ANTHROPIC_BASE_URL=${origin}/proxy` },
|
|
@@ -9833,6 +9867,22 @@ function OnboardingSettingsTab() {
|
|
|
9833
9867
|
"."
|
|
9834
9868
|
] })
|
|
9835
9869
|
] }),
|
|
9870
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2", children: [
|
|
9871
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "mt-0.5 size-3.5 text-emerald-500" }),
|
|
9872
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
|
|
9873
|
+
"MiMo Code onboarding safely merges",
|
|
9874
|
+
" ",
|
|
9875
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 font-mono text-[11px] text-foreground", children: "mcp.agent-inspector" }),
|
|
9876
|
+
" ",
|
|
9877
|
+
"into",
|
|
9878
|
+
" ",
|
|
9879
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 font-mono text-[11px] text-foreground", children: "mimocode.jsonc" }),
|
|
9880
|
+
", then route OpenAI-format traffic with",
|
|
9881
|
+
" ",
|
|
9882
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 font-mono text-[11px] text-foreground", children: "OPENAI_BASE_URL" }),
|
|
9883
|
+
"."
|
|
9884
|
+
] })
|
|
9885
|
+
] }),
|
|
9836
9886
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2", children: [
|
|
9837
9887
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "mt-0.5 size-3.5 text-emerald-500" }),
|
|
9838
9888
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "If your AI tool runs in another container or host, replace localhost with an address reachable from that tool and verify the network/firewall path." })
|
|
@@ -9924,6 +9974,23 @@ function McpSettingsTab() {
|
|
|
9924
9974
|
2
|
|
9925
9975
|
)
|
|
9926
9976
|
},
|
|
9977
|
+
{
|
|
9978
|
+
id: "mimo-local",
|
|
9979
|
+
label: "MiMo Code local MCP",
|
|
9980
|
+
value: JSON.stringify(
|
|
9981
|
+
{
|
|
9982
|
+
mcp: {
|
|
9983
|
+
"agent-inspector": {
|
|
9984
|
+
type: "local",
|
|
9985
|
+
command: ["agent-inspector-mcp", "stdio", "--url", endpoint],
|
|
9986
|
+
enabled: true
|
|
9987
|
+
}
|
|
9988
|
+
}
|
|
9989
|
+
},
|
|
9990
|
+
null,
|
|
9991
|
+
2
|
|
9992
|
+
)
|
|
9993
|
+
},
|
|
9927
9994
|
{
|
|
9928
9995
|
id: "codex-toml",
|
|
9929
9996
|
label: "Codex TOML",
|