@tonyclaw/agent-inspector 2.1.7 → 2.1.8

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.
Files changed (34) hide show
  1. package/.output/cli.js +274 -140
  2. package/.output/nitro.json +1 -1
  3. package/.output/public/assets/{CompareDrawer-BLS7CVvA.js → CompareDrawer-CHkT7kun.js} +1 -1
  4. package/.output/public/assets/{ProxyViewerContainer-BFZ1WG07.js → ProxyViewerContainer-BiZ2_tMC.js} +21 -21
  5. package/.output/public/assets/{ReplayDialog-DIGF807X.js → ReplayDialog-C85cakjx.js} +1 -1
  6. package/.output/public/assets/{RequestAnatomy-C3Nlvp9P.js → RequestAnatomy-Dn_pMMoX.js} +1 -1
  7. package/.output/public/assets/{ResponseView-BbZywqHe.js → ResponseView-DzcxCUBf.js} +1 -1
  8. package/.output/public/assets/{StreamingChunkSequence-Dk27PfPn.js → StreamingChunkSequence-BamtvkgZ.js} +1 -1
  9. package/.output/public/assets/_sessionId-xBBbFH1M.js +1 -0
  10. package/.output/public/assets/index-6udjwQO1.js +1 -0
  11. package/.output/public/assets/{main-BxHXMs6B.js → main-Dc2qVWpb.js} +2 -2
  12. package/.output/server/{_sessionId-D5HNwb9A.mjs → _sessionId-BnimGger.mjs} +2 -2
  13. package/.output/server/_ssr/{CompareDrawer-QNk1twf8.mjs → CompareDrawer-CwVFykVF.mjs} +2 -2
  14. package/.output/server/_ssr/{ProxyViewerContainer-DGhc2le_.mjs → ProxyViewerContainer-X3S2TWBJ.mjs} +205 -132
  15. package/.output/server/_ssr/{ReplayDialog-D8wg4VNL.mjs → ReplayDialog-BxC12XUj.mjs} +3 -3
  16. package/.output/server/_ssr/{RequestAnatomy-BtJHKVl2.mjs → RequestAnatomy-CWWS8Qh7.mjs} +2 -2
  17. package/.output/server/_ssr/{ResponseView-CndDItiU.mjs → ResponseView-BewErHF-.mjs} +2 -2
  18. package/.output/server/_ssr/{StreamingChunkSequence-D5Ywpbr7.mjs → StreamingChunkSequence-BlmCVryW.mjs} +2 -2
  19. package/.output/server/_ssr/{index-DtcUTHAX.mjs → index-5qbGuoFX.mjs} +2 -2
  20. package/.output/server/_ssr/index.mjs +2 -2
  21. package/.output/server/_ssr/{router-C0apgqfC.mjs → router-s78S54MU.mjs} +16 -7
  22. package/.output/server/{_tanstack-start-manifest_v-BoTPaB-V.mjs → _tanstack-start-manifest_v-DTxpr3KE.mjs} +1 -1
  23. package/.output/server/index.mjs +63 -63
  24. package/README.md +10 -6
  25. package/package.json +1 -1
  26. package/src/cli/detect-tools.ts +2 -1
  27. package/src/cli/onboard.ts +334 -167
  28. package/src/components/providers/SettingsDialog.tsx +47 -0
  29. package/src/components/proxy-viewer/ConversationGroup.tsx +28 -0
  30. package/src/components/proxy-viewer/ConversationHeader.tsx +34 -0
  31. package/src/components/proxy-viewer/LogEntryHeader.tsx +3 -12
  32. package/src/mcp/server.ts +18 -4
  33. package/.output/public/assets/_sessionId-BHpX8AVf.js +0 -1
  34. package/.output/public/assets/index-BXHM9OMb.js +0 -1
@@ -1,5 +1,5 @@
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-C0apgqfC.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-s78S54MU.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";
@@ -807,6 +807,128 @@ function ConfirmDialog({
807
807
  ] })
808
808
  ] }) });
809
809
  }
810
+ 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";
811
+ 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";
812
+ 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";
813
+ const MiniMaxLogoSvg = "/assets/minimax-BPMzvuL-.jpeg";
814
+ const AlibabaLogoSvg = "/assets/alibaba-TTwafVwX.svg";
815
+ const QwenLogoSvg = "/assets/qwen-CONDcHqt.png";
816
+ const ZhipuAILogoSvg = "/assets/zhipuai-BPNAnxo-.svg";
817
+ const PROVIDER_MAP = {
818
+ "claude-": "anthropic",
819
+ "gpt-": "openai",
820
+ "o1-": "openai",
821
+ "o3-": "openai",
822
+ "deepseek-": "deepseek",
823
+ MiniMax: "minimax",
824
+ qwen: "qwen",
825
+ "glm-": "zhipuai"
826
+ };
827
+ function detectProvider(model) {
828
+ if (model === null) return "unknown";
829
+ const modelLower = model.toLowerCase();
830
+ for (const [prefix, provider] of Object.entries(PROVIDER_MAP)) {
831
+ if (modelLower.startsWith(prefix.toLowerCase())) {
832
+ return provider;
833
+ }
834
+ }
835
+ return "unknown";
836
+ }
837
+ const sizeStyle = { width: 24, height: 24, objectFit: "contain" };
838
+ const AnthropicLogo = React.memo(
839
+ ({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: AnthropicLogoSvg, alt: "Anthropic", className, style: sizeStyle })
840
+ );
841
+ const OpenAILogo = React.memo(
842
+ ({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx(
843
+ "img",
844
+ {
845
+ src: OpenAILogoSvg,
846
+ alt: "OpenAI",
847
+ className,
848
+ style: { ...sizeStyle, background: "white", borderRadius: "4px" }
849
+ }
850
+ )
851
+ );
852
+ const DeepSeekLogo = React.memo(
853
+ ({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: DeepSeekLogoSvg, alt: "DeepSeek", className, style: sizeStyle })
854
+ );
855
+ const MiniMaxLogo = React.memo(
856
+ ({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: MiniMaxLogoSvg, alt: "MiniMax", className, style: sizeStyle })
857
+ );
858
+ const AlibabaLogo = React.memo(
859
+ ({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: AlibabaLogoSvg, alt: "Alibaba", className, style: sizeStyle })
860
+ );
861
+ const QwenLogo = React.memo(
862
+ ({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: QwenLogoSvg, alt: "Qwen", className, style: sizeStyle })
863
+ );
864
+ const ZhipuAILogo = React.memo(
865
+ ({ className }) => /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: ZhipuAILogoSvg, alt: "ZhipuAI", className, style: sizeStyle })
866
+ );
867
+ function ProviderLogo({
868
+ provider,
869
+ className
870
+ }) {
871
+ switch (provider) {
872
+ case "anthropic":
873
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(AnthropicLogo, { className });
874
+ case "openai":
875
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(OpenAILogo, { className });
876
+ case "deepseek":
877
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(DeepSeekLogo, { className });
878
+ case "minimax":
879
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(MiniMaxLogo, { className });
880
+ case "alibaba":
881
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(AlibabaLogo, { className });
882
+ case "qwen":
883
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(QwenLogo, { className });
884
+ case "zhipuai":
885
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(ZhipuAILogo, { className });
886
+ case "unknown":
887
+ return null;
888
+ }
889
+ }
890
+ function TooltipProvider({
891
+ delayDuration = 0,
892
+ ...props
893
+ }) {
894
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
895
+ Provider,
896
+ {
897
+ "data-slot": "tooltip-provider",
898
+ delayDuration,
899
+ ...props
900
+ }
901
+ );
902
+ }
903
+ function Tooltip({ ...props }) {
904
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Root3, { "data-slot": "tooltip", ...props });
905
+ }
906
+ function TooltipTrigger({ ...props }) {
907
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Trigger$3, { "data-slot": "tooltip-trigger", ...props });
908
+ }
909
+ function TooltipContent({
910
+ className,
911
+ sideOffset = 0,
912
+ children,
913
+ ...props
914
+ }) {
915
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$1, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
916
+ Content2$1,
917
+ {
918
+ "data-slot": "tooltip-content",
919
+ sideOffset,
920
+ className: cn(
921
+ "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",
922
+ className
923
+ ),
924
+ ...props,
925
+ children: [
926
+ children,
927
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Arrow2, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
928
+ ]
929
+ }
930
+ ) });
931
+ }
810
932
  function forEachCodePoint(text, visit) {
811
933
  for (const ch of Array.from(text)) {
812
934
  visit(ch);
@@ -1129,6 +1251,7 @@ function ConversationHeader({
1129
1251
  expanded,
1130
1252
  onToggle,
1131
1253
  hideApiFormat = false,
1254
+ providers,
1132
1255
  isLoading = false,
1133
1256
  userAgent,
1134
1257
  timeDisplayFormat,
@@ -1203,6 +1326,17 @@ function ConversationHeader({
1203
1326
  children: API_FORMAT_LABELS[apiFormat]
1204
1327
  }
1205
1328
  ),
1329
+ providers !== void 0 && providers.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipProvider, { delayDuration: 150, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
1330
+ "span",
1331
+ {
1332
+ className: "flex items-center gap-0.5 shrink-0",
1333
+ "aria-label": "Models used in this session",
1334
+ children: providers.map(({ provider, models }) => /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
1335
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderLogo, { provider, className: "size-4" }) }) }),
1336
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: models.length === 1 ? models[0] : models.join(", ") })
1337
+ ] }, provider))
1338
+ }
1339
+ ) }),
1206
1340
  /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex items-center gap-1 text-muted-foreground text-xs shrink-0", children: [
1207
1341
  /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-3" }),
1208
1342
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono tabular-nums", children: formatTimestampRange(startTime, endTime, timeDisplayFormat) })
@@ -1704,128 +1838,6 @@ function getInteriorCrabVariantIndex(seed) {
1704
1838
  function getInteriorCrabVariant(seed) {
1705
1839
  return getCrabVariant(getInteriorCrabVariantIndex(seed));
1706
1840
  }
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
1841
  function getJsonExpansionPolicy(_value) {
1830
1842
  return { depth: Number.POSITIVE_INFINITY };
1831
1843
  }
@@ -1989,19 +2001,19 @@ function useCopyFeedback(text) {
1989
2001
  return { copied, copy };
1990
2002
  }
1991
2003
  const LazyCompareDrawer = reactExports.lazy(
1992
- () => import("./CompareDrawer-QNk1twf8.mjs").then((m) => ({ default: m.CompareDrawer }))
2004
+ () => import("./CompareDrawer-CwVFykVF.mjs").then((m) => ({ default: m.CompareDrawer }))
1993
2005
  );
1994
2006
  const LazyReplayDialog = reactExports.lazy(
1995
- () => import("./ReplayDialog-D8wg4VNL.mjs").then((m) => ({ default: m.ReplayDialog }))
2007
+ () => import("./ReplayDialog-BxC12XUj.mjs").then((m) => ({ default: m.ReplayDialog }))
1996
2008
  );
1997
2009
  const LazyRequestAnatomy = reactExports.lazy(
1998
- () => import("./RequestAnatomy-BtJHKVl2.mjs").then((m) => ({ default: m.RequestAnatomy }))
2010
+ () => import("./RequestAnatomy-CWWS8Qh7.mjs").then((m) => ({ default: m.RequestAnatomy }))
1999
2011
  );
2000
2012
  const LazyResponseView = reactExports.lazy(
2001
- () => import("./ResponseView-CndDItiU.mjs").then((m) => ({ default: m.ResponseView }))
2013
+ () => import("./ResponseView-BewErHF-.mjs").then((m) => ({ default: m.ResponseView }))
2002
2014
  );
2003
2015
  const LazyStreamingChunkSequence = reactExports.lazy(
2004
- () => import("./StreamingChunkSequence-D5Ywpbr7.mjs").then((m) => ({
2016
+ () => import("./StreamingChunkSequence-BlmCVryW.mjs").then((m) => ({
2005
2017
  default: m.StreamingChunkSequence
2006
2018
  }))
2007
2019
  );
@@ -2476,10 +2488,6 @@ const LogEntryHeader = reactExports.memo(function({
2476
2488
  /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-3" }),
2477
2489
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono tabular-nums", title: log.timestamp, children: formatTimestamp$2(log.timestamp, timeDisplayFormat) })
2478
2490
  ] }),
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
2491
  statusCategory !== "success" && /* @__PURE__ */ jsxRuntimeExports.jsxs(
2484
2492
  Badge,
2485
2493
  {
@@ -5584,6 +5592,24 @@ function computeStats(logs) {
5584
5592
  }
5585
5593
  return { totalInputTokens: totalInput, totalOutputTokens: totalOutput };
5586
5594
  }
5595
+ function collectProviders(logs) {
5596
+ const buckets = /* @__PURE__ */ new Map();
5597
+ for (const log of logs) {
5598
+ if (log.model === null) continue;
5599
+ const provider = detectProvider(log.model);
5600
+ if (provider === "unknown") continue;
5601
+ let models = buckets.get(provider);
5602
+ if (models === void 0) {
5603
+ models = /* @__PURE__ */ new Set();
5604
+ buckets.set(provider, models);
5605
+ }
5606
+ models.add(log.model);
5607
+ }
5608
+ return [...buckets.entries()].map(([provider, models]) => ({
5609
+ provider,
5610
+ models: [...models]
5611
+ }));
5612
+ }
5587
5613
  const ConversationGroup = reactExports.memo(function({
5588
5614
  group,
5589
5615
  viewMode = "simple",
@@ -5612,6 +5638,7 @@ const ConversationGroup = reactExports.memo(function({
5612
5638
  [onExpandedChange]
5613
5639
  );
5614
5640
  const stats = reactExports.useMemo(() => computeStats(group.logs), [group.logs]);
5641
+ const providers = reactExports.useMemo(() => collectProviders(group.logs), [group.logs]);
5615
5642
  const startTime = group.logs[0]?.timestamp ?? (/* @__PURE__ */ new Date()).toISOString();
5616
5643
  const endTime = group.logs[group.logs.length - 1]?.timestamp ?? (/* @__PURE__ */ new Date()).toISOString();
5617
5644
  const mixed = hasMixedApiFormat(group.logs);
@@ -5645,6 +5672,7 @@ const ConversationGroup = reactExports.memo(function({
5645
5672
  expanded,
5646
5673
  onToggle: () => setExpanded(!expanded),
5647
5674
  hideApiFormat: mixed,
5675
+ providers,
5648
5676
  isLoading,
5649
5677
  userAgent: group.logs[0]?.userAgent ?? null,
5650
5678
  timeDisplayFormat,
@@ -9770,6 +9798,18 @@ function OnboardingSettingsTab() {
9770
9798
  },
9771
9799
  { id: "opencode-verify", label: "OpenCode verify", value: "opencode mcp list" },
9772
9800
  { id: "opencode-proxy", label: "OpenCode proxy", value: `LLM_BASE_URL=${origin}/proxy` },
9801
+ {
9802
+ id: "mimo-config",
9803
+ label: "MiMo Code config",
9804
+ value: "agent-inspector onboard --mimo-only"
9805
+ },
9806
+ {
9807
+ id: "mimo-status",
9808
+ label: "MiMo Code status",
9809
+ value: "agent-inspector onboard --status --mimo-only"
9810
+ },
9811
+ { id: "mimo-verify", label: "MiMo Code verify", value: "mimo mcp list" },
9812
+ { id: "mimo-proxy", label: "MiMo Code proxy", value: `OPENAI_BASE_URL=${origin}/proxy` },
9773
9813
  { id: "mcp", label: "MCP URL", value: `${origin}/api/mcp` },
9774
9814
  { id: "proxy", label: "Proxy URL", value: `${origin}/proxy` },
9775
9815
  { id: "anthropic", label: "Anthropic base", value: `ANTHROPIC_BASE_URL=${origin}/proxy` },
@@ -9833,6 +9873,22 @@ function OnboardingSettingsTab() {
9833
9873
  "."
9834
9874
  ] })
9835
9875
  ] }),
9876
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2", children: [
9877
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "mt-0.5 size-3.5 text-emerald-500" }),
9878
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
9879
+ "MiMo Code onboarding safely merges",
9880
+ " ",
9881
+ /* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 font-mono text-[11px] text-foreground", children: "mcp.agent-inspector" }),
9882
+ " ",
9883
+ "into",
9884
+ " ",
9885
+ /* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 font-mono text-[11px] text-foreground", children: "mimocode.jsonc" }),
9886
+ ", then route OpenAI-format traffic with",
9887
+ " ",
9888
+ /* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 font-mono text-[11px] text-foreground", children: "OPENAI_BASE_URL" }),
9889
+ "."
9890
+ ] })
9891
+ ] }),
9836
9892
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2", children: [
9837
9893
  /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "mt-0.5 size-3.5 text-emerald-500" }),
9838
9894
  /* @__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 +9980,23 @@ function McpSettingsTab() {
9924
9980
  2
9925
9981
  )
9926
9982
  },
9983
+ {
9984
+ id: "mimo-local",
9985
+ label: "MiMo Code local MCP",
9986
+ value: JSON.stringify(
9987
+ {
9988
+ mcp: {
9989
+ "agent-inspector": {
9990
+ type: "local",
9991
+ command: ["agent-inspector-mcp", "stdio", "--url", endpoint],
9992
+ enabled: true
9993
+ }
9994
+ }
9995
+ },
9996
+ null,
9997
+ 2
9998
+ )
9999
+ },
9927
10000
  {
9928
10001
  id: "codex-toml",
9929
10002
  label: "Codex TOML",
@@ -1,7 +1,7 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { u as useProviders, D as Dialog, d as DialogContent, e as DialogHeader, h as DialogTitle, T as Tabs, i as TabsList, j as TabsTrigger, k as TabsContent, l as Button, m as TooltipProvider, n as Tooltip, o as TooltipTrigger, p as TooltipContent, q as dispatchLogFocusRequest } from "./ProxyViewerContainer-DGhc2le_.mjs";
3
- import { ResponseView } from "./ResponseView-CndDItiU.mjs";
4
- import { C as CapturedLogSchema } from "./router-C0apgqfC.mjs";
2
+ import { u as useProviders, D as Dialog, d as DialogContent, e as DialogHeader, h as DialogTitle, T as Tabs, i as TabsList, j as TabsTrigger, k as TabsContent, l as Button, m as TooltipProvider, n as Tooltip, o as TooltipTrigger, p as TooltipContent, q as dispatchLogFocusRequest } from "./ProxyViewerContainer-X3S2TWBJ.mjs";
3
+ import { ResponseView } from "./ResponseView-BewErHF-.mjs";
4
+ import { C as CapturedLogSchema } from "./router-s78S54MU.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import "../_libs/modelcontextprotocol__server.mjs";
7
7
  import { a3 as RotateCcw, an as Braces, ao as Minimize2 } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { u as useProviders, s as analyzeContextIntelligence, f as formatTokens, m as TooltipProvider, c as cn, n as Tooltip, o as TooltipTrigger, p as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, t as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-DGhc2le_.mjs";
3
- import "./router-C0apgqfC.mjs";
2
+ import { u as useProviders, s as analyzeContextIntelligence, f as formatTokens, m as TooltipProvider, c as cn, n as Tooltip, o as TooltipTrigger, p as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, t as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-X3S2TWBJ.mjs";
3
+ import "./router-s78S54MU.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { I as Info, C as ChevronDown, f as ChevronRight } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { g as getLogFormatAdapter, f as formatTokens, c as cn, v as getStatusCategory, B as Badge, w as Collapsible, x as CollapsibleTrigger, y as CollapsibleContent, z as ScrollArea, E as JsonViewer, F as safeJsonValue } from "./ProxyViewerContainer-DGhc2le_.mjs";
3
- import "./router-C0apgqfC.mjs";
2
+ import { g as getLogFormatAdapter, f as formatTokens, c as cn, v as getStatusCategory, B as Badge, w as Collapsible, x as CollapsibleTrigger, y as CollapsibleContent, z as ScrollArea, E as JsonViewer, F as safeJsonValue } from "./ProxyViewerContainer-X3S2TWBJ.mjs";
3
+ import "./router-s78S54MU.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { Z as Zap, r as TriangleAlert, ap as CircleStop, B as Brain, C as ChevronDown, f as ChevronRight, m as Terminal } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { m as TooltipProvider, n as Tooltip, o as TooltipTrigger, B as Badge, p as TooltipContent, E as JsonViewer } from "./ProxyViewerContainer-DGhc2le_.mjs";
3
- import "./router-C0apgqfC.mjs";
2
+ import { m as TooltipProvider, n as Tooltip, o as TooltipTrigger, B as Badge, p as TooltipContent, E as JsonViewer } from "./ProxyViewerContainer-X3S2TWBJ.mjs";
3
+ import "./router-s78S54MU.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { C as ChevronDown, f as ChevronRight, L as LoaderCircle } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
- import { P as ProxyViewerContainer } from "./ProxyViewerContainer-DGhc2le_.mjs";
1
+ import { P as ProxyViewerContainer } from "./ProxyViewerContainer-X3S2TWBJ.mjs";
2
2
  import "../_libs/react.mjs";
3
- import "./router-C0apgqfC.mjs";
3
+ import "./router-s78S54MU.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import "../_libs/swr.mjs";
@@ -198,7 +198,7 @@ function getResponse() {
198
198
  return event.res;
199
199
  }
200
200
  async function getStartManifest(matchedRoutes) {
201
- const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-BoTPaB-V.mjs");
201
+ const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-DTxpr3KE.mjs");
202
202
  const startManifest = tsrStartManifest();
203
203
  const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
204
204
  rootRoute.assets = rootRoute.assets || [];
@@ -776,7 +776,7 @@ let entriesPromise;
776
776
  let baseManifestPromise;
777
777
  let cachedFinalManifestPromise;
778
778
  async function loadEntries() {
779
- const routerEntry = await import("./router-C0apgqfC.mjs").then((n) => n.y);
779
+ const routerEntry = await import("./router-s78S54MU.mjs").then((n) => n.y);
780
780
  const startEntry = await import("./start-HYkvq4Ni.mjs");
781
781
  return { startEntry, routerEntry };
782
782
  }
@@ -108,7 +108,7 @@ function RootDocument({ children }) {
108
108
  ] })
109
109
  ] });
110
110
  }
111
- const $$splitComponentImporter$1 = () => import("./index-DtcUTHAX.mjs");
111
+ const $$splitComponentImporter$1 = () => import("./index-5qbGuoFX.mjs");
112
112
  const Route$C = createFileRoute("/")({
113
113
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
114
114
  });
@@ -151,7 +151,7 @@ function decodeSessionIdFromPath(encoded) {
151
151
  function getSessionPath(sessionId) {
152
152
  return `/session/${encodeSessionIdForPath(sessionId)}`;
153
153
  }
154
- const $$splitComponentImporter = () => import("../_sessionId-D5HNwb9A.mjs");
154
+ const $$splitComponentImporter = () => import("../_sessionId-BnimGger.mjs");
155
155
  const Route$B = createFileRoute("/session/$sessionId")({
156
156
  component: lazyRouteComponent($$splitComponentImporter, "component"),
157
157
  parseParams: (params) => ({
@@ -8345,7 +8345,7 @@ const Route$w = createFileRoute("/api/models")({
8345
8345
  }
8346
8346
  }
8347
8347
  });
8348
- const version = "2.1.7";
8348
+ const version = "2.1.8";
8349
8349
  const packageJson = {
8350
8350
  version
8351
8351
  };
@@ -9731,6 +9731,15 @@ function mcpConfig() {
9731
9731
  }
9732
9732
  }
9733
9733
  },
9734
+ mimoCodeLocal: {
9735
+ mcp: {
9736
+ "agent-inspector": {
9737
+ type: "local",
9738
+ command: ["agent-inspector-mcp", "stdio", "--url", endpoint],
9739
+ enabled: true
9740
+ }
9741
+ }
9742
+ },
9734
9743
  networkNote: "If the MCP client runs in another container or host, replace localhost with an address reachable from that client. Configure only one transport for the same Inspector instance."
9735
9744
  };
9736
9745
  }
@@ -10054,7 +10063,7 @@ function registerTools(server) {
10054
10063
  title: string().min(1).optional().describe("Human-readable run title."),
10055
10064
  task: string().nullable().optional().describe("Task statement or benchmark case."),
10056
10065
  project: string().nullable().optional().describe("Project or repository under test."),
10057
- agent: string().nullable().optional().describe("Coding agent name, e.g. Codex/OpenCode."),
10066
+ agent: string().nullable().optional().describe("Coding agent name, e.g. Codex/OpenCode/MiMo Code."),
10058
10067
  status: InspectorRunStatusSchema.optional().describe("Initial run status."),
10059
10068
  tags: array(string()).optional().describe("Free-form run labels."),
10060
10069
  metadata: record(string(), JsonValueSchema).optional().describe("JSON metadata.")
@@ -10143,7 +10152,7 @@ function registerTools(server) {
10143
10152
  "inspector_create_group",
10144
10153
  {
10145
10154
  title: "Create or declare an Inspector group",
10146
- description: "Creates an evaluation/batch group that external systems can use to aggregate multiple OpenCode/Codex sessions across models such as MiniMax, DeepSeek, or GLM.",
10155
+ description: "Creates an evaluation/batch group that external systems can use to aggregate multiple Codex, OpenCode, or MiMo Code sessions across models such as MiniMax, DeepSeek, or GLM.",
10147
10156
  inputSchema: object({
10148
10157
  groupId: string().min(1).optional().describe("Stable group id. Generated when omitted."),
10149
10158
  title: string().min(1).optional().describe("Human-readable group title."),
@@ -10194,7 +10203,7 @@ function registerTools(server) {
10194
10203
  "inspector_add_group_session",
10195
10204
  {
10196
10205
  title: "Attach a session to an Inspector group",
10197
- description: "Adds or updates one group member. Use it after each OpenCode process discovers its session id, or while an evaluation matrix is running to attach model/provider labels.",
10206
+ description: "Adds or updates one group member. Use it after each coding-agent process discovers its session id, or while an evaluation matrix is running to attach model/provider labels.",
10198
10207
  inputSchema: AddInspectorGroupSessionInputSchema.extend({
10199
10208
  groupId: string().min(1).describe("The Inspector group id.")
10200
10209
  })
@@ -10434,7 +10443,7 @@ function registerResources(server) {
10434
10443
  "inspector://mcp/config",
10435
10444
  {
10436
10445
  title: "Inspector MCP client config",
10437
- description: "Streamable HTTP, stdio bridge, and OpenCode MCP configuration snippets.",
10446
+ description: "Streamable HTTP, stdio bridge, OpenCode, and MiMo Code MCP configuration snippets.",
10438
10447
  mimeType: "application/json"
10439
10448
  },
10440
10449
  (uri) => jsonResource(uri, mcpConfig())