@tonyclaw/agent-inspector 3.0.21 → 3.0.22

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 (30) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/{CompareDrawer-BhQ8UZBt.js → CompareDrawer-CaDAbX9q.js} +1 -1
  3. package/.output/public/assets/{ProxyViewerContainer-GpMPUmJQ.js → ProxyViewerContainer-7ugZIMW0.js} +11 -11
  4. package/.output/public/assets/{ReplayDialog-CqUvVWFk.js → ReplayDialog-C5kb1Bj4.js} +1 -1
  5. package/.output/public/assets/{RequestAnatomy-DU8c0Ysb.js → RequestAnatomy-CbPNLnlL.js} +1 -1
  6. package/.output/public/assets/{ResponseView-Ce2JAKBf.js → ResponseView-DyzW0Zfo.js} +2 -2
  7. package/.output/public/assets/{StreamingChunkSequence-DvMcBgID.js → StreamingChunkSequence-Cl8zJu0w.js} +1 -1
  8. package/.output/public/assets/{_sessionId-BeinzuQZ.js → _sessionId-BeN8-5Ho.js} +1 -1
  9. package/.output/public/assets/{index-BMVjOrho.js → index-BCHWOmF2.js} +2 -2
  10. package/.output/public/assets/{index-DENY-gse.js → index-DcFtdKF3.js} +1 -1
  11. package/.output/public/assets/{index-Cu0STzXy.js → index-Pz9T7cS9.js} +1 -1
  12. package/.output/public/assets/{index-D2iiZaNM.css → index-SqCROi0s.css} +1 -1
  13. package/.output/public/assets/{json-viewer-Bjmt-Mdw.js → json-viewer-PNvFrOUw.js} +1 -1
  14. package/.output/server/{_sessionId-DiAGJ75k.mjs → _sessionId-CIvbZsmt.mjs} +2 -2
  15. package/.output/server/_ssr/{CompareDrawer-DF4wc8NT.mjs → CompareDrawer-CtWPZP5T.mjs} +2 -2
  16. package/.output/server/_ssr/{ProxyViewerContainer-BupCsVk6.mjs → ProxyViewerContainer-Dnm-Hup3.mjs} +68 -86
  17. package/.output/server/_ssr/{ReplayDialog-BIzO8gkO.mjs → ReplayDialog-BYii7Q2m.mjs} +3 -3
  18. package/.output/server/_ssr/{RequestAnatomy-DR7XdTUQ.mjs → RequestAnatomy-CC6brPZr.mjs} +2 -2
  19. package/.output/server/_ssr/{ResponseView-DoadSJYH.mjs → ResponseView-CwwkL_0d.mjs} +2 -2
  20. package/.output/server/_ssr/{StreamingChunkSequence-KPnZNTpB.mjs → StreamingChunkSequence-CFsJzBLS.mjs} +2 -2
  21. package/.output/server/_ssr/{index-uv5HMw8-.mjs → index-B-Mm06YB.mjs} +2 -2
  22. package/.output/server/_ssr/index.mjs +2 -2
  23. package/.output/server/_ssr/{json-viewer-JNF8ttGZ.mjs → json-viewer-D2MGmYZ0.mjs} +2 -2
  24. package/.output/server/_ssr/{router-07KkEFRt.mjs → router-BwvN4eYE.mjs} +4 -4
  25. package/.output/server/{_tanstack-start-manifest_v-CLXgj2ke.mjs → _tanstack-start-manifest_v-Dpk8cafb.mjs} +1 -1
  26. package/.output/server/index.mjs +73 -73
  27. package/package.json +1 -1
  28. package/src/components/ProxyViewer.tsx +4 -4
  29. package/src/components/providers/ProviderCard.tsx +6 -21
  30. package/src/components/providers/ProvidersPanel.tsx +39 -43
@@ -17,124 +17,124 @@ const headers = ((m) => function headersRouteRule(event) {
17
17
  }
18
18
  });
19
19
  const assets = {
20
- "/assets/CompareDrawer-BhQ8UZBt.js": {
21
- "type": "text/javascript; charset=utf-8",
22
- "etag": '"4bc4-q7/WZBBoHI4QCp2aBIrQbpS+ZwA"',
23
- "mtime": "2026-07-09T07:33:08.150Z",
24
- "size": 19396,
25
- "path": "../public/assets/CompareDrawer-BhQ8UZBt.js"
26
- },
27
20
  "/assets/alibaba-TTwafVwX.svg": {
28
21
  "type": "image/svg+xml",
29
22
  "etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
30
- "mtime": "2026-07-09T07:33:08.149Z",
23
+ "mtime": "2026-07-09T12:37:18.744Z",
31
24
  "size": 5915,
32
25
  "path": "../public/assets/alibaba-TTwafVwX.svg"
33
26
  },
34
- "/assets/index-Cu0STzXy.js": {
27
+ "/assets/CompareDrawer-CaDAbX9q.js": {
35
28
  "type": "text/javascript; charset=utf-8",
36
- "etag": '"265-Y2kn4+kLz0UCilDKDhsxBE8vpnc"',
37
- "mtime": "2026-07-09T07:33:08.150Z",
38
- "size": 613,
39
- "path": "../public/assets/index-Cu0STzXy.js"
29
+ "etag": '"4bc4-9djCiW/2Q9xO0RFf4a2mC6kHtIE"',
30
+ "mtime": "2026-07-09T12:37:18.745Z",
31
+ "size": 19396,
32
+ "path": "../public/assets/CompareDrawer-CaDAbX9q.js"
40
33
  },
41
- "/assets/json-viewer-Bjmt-Mdw.js": {
34
+ "/assets/index-Pz9T7cS9.js": {
42
35
  "type": "text/javascript; charset=utf-8",
43
- "etag": '"1ae7-tt6uImcLjdS2gr8kUpKvBHv82YY"',
44
- "mtime": "2026-07-09T07:33:08.150Z",
45
- "size": 6887,
46
- "path": "../public/assets/json-viewer-Bjmt-Mdw.js"
36
+ "etag": '"265-G8z2PAgLrqD9mCoBT80CeMoLvDc"',
37
+ "mtime": "2026-07-09T12:37:18.745Z",
38
+ "size": 613,
39
+ "path": "../public/assets/index-Pz9T7cS9.js"
47
40
  },
48
41
  "/assets/agent-inspector-58K1_MsC.ico": {
49
42
  "type": "image/vnd.microsoft.icon",
50
43
  "etag": '"38fa-ZD8kPABHYjPIkcH82FMY6iZM7fI"',
51
- "mtime": "2026-07-09T07:33:08.149Z",
44
+ "mtime": "2026-07-09T12:37:18.744Z",
52
45
  "size": 14586,
53
46
  "path": "../public/assets/agent-inspector-58K1_MsC.ico"
54
47
  },
55
- "/assets/index-D2iiZaNM.css": {
56
- "type": "text/css; charset=utf-8",
57
- "etag": '"25cbf-gXyEinEYizYtkUYphvKg/JJAlXM"',
58
- "mtime": "2026-07-09T07:33:08.149Z",
59
- "size": 154815,
60
- "path": "../public/assets/index-D2iiZaNM.css"
61
- },
62
- "/assets/index-DENY-gse.js": {
48
+ "/assets/index-DcFtdKF3.js": {
63
49
  "type": "text/javascript; charset=utf-8",
64
- "etag": '"1cd2d-azZxx60qWI9z51uvMu8o3Zkmqqg"',
65
- "mtime": "2026-07-09T07:33:08.150Z",
50
+ "etag": '"1cd2d-USsoPsp/IKbvu6AQ2mrDK0lM6jI"',
51
+ "mtime": "2026-07-09T12:37:18.745Z",
66
52
  "size": 118061,
67
- "path": "../public/assets/index-DENY-gse.js"
53
+ "path": "../public/assets/index-DcFtdKF3.js"
68
54
  },
69
55
  "/assets/minimax-BPMzvuL-.jpeg": {
70
56
  "type": "image/jpeg",
71
57
  "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
72
- "mtime": "2026-07-09T07:33:08.149Z",
58
+ "mtime": "2026-07-09T12:37:18.745Z",
73
59
  "size": 6918,
74
60
  "path": "../public/assets/minimax-BPMzvuL-.jpeg"
75
61
  },
76
- "/assets/RequestAnatomy-DU8c0Ysb.js": {
62
+ "/assets/json-viewer-PNvFrOUw.js": {
77
63
  "type": "text/javascript; charset=utf-8",
78
- "etag": '"43f3-tict+3CArhDH0oq7q3mampyiL4o"',
79
- "mtime": "2026-07-09T07:33:08.150Z",
80
- "size": 17395,
81
- "path": "../public/assets/RequestAnatomy-DU8c0Ysb.js"
64
+ "etag": '"1ae7-HKTdBiQVby4QPNCyLeI2J993hKs"',
65
+ "mtime": "2026-07-09T12:37:18.745Z",
66
+ "size": 6887,
67
+ "path": "../public/assets/json-viewer-PNvFrOUw.js"
82
68
  },
83
- "/assets/zhipuai-BPNAnxo-.svg": {
84
- "type": "image/svg+xml",
85
- "etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
86
- "mtime": "2026-07-09T07:33:08.149Z",
87
- "size": 11256,
88
- "path": "../public/assets/zhipuai-BPNAnxo-.svg"
69
+ "/assets/index-SqCROi0s.css": {
70
+ "type": "text/css; charset=utf-8",
71
+ "etag": '"25d37-HOO9KmFYmR0YRmhfK7KT3R/Ziuo"',
72
+ "mtime": "2026-07-09T12:37:18.745Z",
73
+ "size": 154935,
74
+ "path": "../public/assets/index-SqCROi0s.css"
89
75
  },
90
- "/assets/_sessionId-BeinzuQZ.js": {
76
+ "/assets/ReplayDialog-C5kb1Bj4.js": {
91
77
  "type": "text/javascript; charset=utf-8",
92
- "etag": '"36d-wyDMru6FvHjuW6fdH0fxfDL5csw"',
93
- "mtime": "2026-07-09T07:33:08.150Z",
94
- "size": 877,
95
- "path": "../public/assets/_sessionId-BeinzuQZ.js"
78
+ "etag": '"3348-CSB9wd+aAH4G2USLbcotKg1PhPs"',
79
+ "mtime": "2026-07-09T12:37:18.745Z",
80
+ "size": 13128,
81
+ "path": "../public/assets/ReplayDialog-C5kb1Bj4.js"
96
82
  },
97
- "/assets/StreamingChunkSequence-DvMcBgID.js": {
83
+ "/assets/RequestAnatomy-CbPNLnlL.js": {
98
84
  "type": "text/javascript; charset=utf-8",
99
- "etag": '"e96-6BaPiEMr6EDDv+mO5wBLCpH1qYQ"',
100
- "mtime": "2026-07-09T07:33:08.150Z",
101
- "size": 3734,
102
- "path": "../public/assets/StreamingChunkSequence-DvMcBgID.js"
85
+ "etag": '"43f3-R+BPu82QzCXvsVcsW6n+y0R+4vA"',
86
+ "mtime": "2026-07-09T12:37:18.745Z",
87
+ "size": 17395,
88
+ "path": "../public/assets/RequestAnatomy-CbPNLnlL.js"
103
89
  },
104
- "/assets/ReplayDialog-CqUvVWFk.js": {
90
+ "/assets/index-BCHWOmF2.js": {
105
91
  "type": "text/javascript; charset=utf-8",
106
- "etag": '"3348-tWBPWrexRvJS3YQIdPt3HDAs1p0"',
107
- "mtime": "2026-07-09T07:33:08.150Z",
108
- "size": 13128,
109
- "path": "../public/assets/ReplayDialog-CqUvVWFk.js"
92
+ "etag": '"5231f-Y7KcHI9eQF/JhCbtxjLP2+bqYp0"',
93
+ "mtime": "2026-07-09T12:37:18.745Z",
94
+ "size": 336671,
95
+ "path": "../public/assets/index-BCHWOmF2.js"
110
96
  },
111
- "/assets/ResponseView-Ce2JAKBf.js": {
97
+ "/assets/StreamingChunkSequence-Cl8zJu0w.js": {
112
98
  "type": "text/javascript; charset=utf-8",
113
- "etag": '"47fe-SBZtSFnLFU3zdUC9GzC5G68XDpI"',
114
- "mtime": "2026-07-09T07:33:08.150Z",
115
- "size": 18430,
116
- "path": "../public/assets/ResponseView-Ce2JAKBf.js"
99
+ "etag": '"e96-AK9Wkk6ExZCudZ+MgmTX2CnRN7c"',
100
+ "mtime": "2026-07-09T12:37:18.745Z",
101
+ "size": 3734,
102
+ "path": "../public/assets/StreamingChunkSequence-Cl8zJu0w.js"
103
+ },
104
+ "/assets/zhipuai-BPNAnxo-.svg": {
105
+ "type": "image/svg+xml",
106
+ "etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
107
+ "mtime": "2026-07-09T12:37:18.744Z",
108
+ "size": 11256,
109
+ "path": "../public/assets/zhipuai-BPNAnxo-.svg"
117
110
  },
118
- "/assets/index-BMVjOrho.js": {
111
+ "/assets/_sessionId-BeN8-5Ho.js": {
119
112
  "type": "text/javascript; charset=utf-8",
120
- "etag": '"5231f-+JWwi3Ne4jFZpTso0unc0dEWK7M"',
121
- "mtime": "2026-07-09T07:33:08.150Z",
122
- "size": 336671,
123
- "path": "../public/assets/index-BMVjOrho.js"
113
+ "etag": '"36d-ETldorz407qqdoD94Bv1I3mmH9E"',
114
+ "mtime": "2026-07-09T12:37:18.745Z",
115
+ "size": 877,
116
+ "path": "../public/assets/_sessionId-BeN8-5Ho.js"
124
117
  },
125
118
  "/assets/qwen-CONDcHqt.png": {
126
119
  "type": "image/png",
127
120
  "etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
128
- "mtime": "2026-07-09T07:33:08.150Z",
121
+ "mtime": "2026-07-09T12:37:18.745Z",
129
122
  "size": 357059,
130
123
  "path": "../public/assets/qwen-CONDcHqt.png"
131
124
  },
132
- "/assets/ProxyViewerContainer-GpMPUmJQ.js": {
125
+ "/assets/ResponseView-DyzW0Zfo.js": {
126
+ "type": "text/javascript; charset=utf-8",
127
+ "etag": '"47fe-4kegTU4CX0Nurl3/j8IApFs6UII"',
128
+ "mtime": "2026-07-09T12:37:18.745Z",
129
+ "size": 18430,
130
+ "path": "../public/assets/ResponseView-DyzW0Zfo.js"
131
+ },
132
+ "/assets/ProxyViewerContainer-7ugZIMW0.js": {
133
133
  "type": "text/javascript; charset=utf-8",
134
- "etag": '"bd7e1-Uddz5LuKxXdcrqA/GQwaawsmbAI"',
135
- "mtime": "2026-07-09T07:33:08.150Z",
136
- "size": 776161,
137
- "path": "../public/assets/ProxyViewerContainer-GpMPUmJQ.js"
134
+ "etag": '"bd60a-o5dnZsvfsIHEVepLqg/IiNmDC0I"',
135
+ "mtime": "2026-07-09T12:37:18.745Z",
136
+ "size": 775690,
137
+ "path": "../public/assets/ProxyViewerContainer-7ugZIMW0.js"
138
138
  }
139
139
  };
140
140
  function readAsset(id) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tonyclaw/agent-inspector",
3
- "version": "3.0.21",
3
+ "version": "3.0.22",
4
4
  "type": "module",
5
5
  "description": "Agent observability and knowledge capture layer for AI coding tools.",
6
6
  "license": "MIT",
@@ -2328,7 +2328,7 @@ export function ProxyViewer({
2328
2328
  : selectedSession;
2329
2329
 
2330
2330
  return (
2331
- <div className="bg-background min-h-screen w-full text-foreground">
2331
+ <div className="bg-background min-h-screen w-full text-foreground lg:h-screen lg:flex lg:flex-col lg:overflow-hidden">
2332
2332
  <button
2333
2333
  type="button"
2334
2334
  onClick={toggleDetailsPanelCollapsed}
@@ -2349,14 +2349,14 @@ export function ProxyViewer({
2349
2349
  {detailsPanelCollapsed && <FloatingInspectorLogo />}
2350
2350
  <div
2351
2351
  className={cn(
2352
- "grid min-h-screen w-full grid-cols-1",
2352
+ "grid w-full min-w-0 grid-cols-1 lg:min-h-0 lg:flex-1 lg:overflow-hidden",
2353
2353
  detailsPanelCollapsed
2354
2354
  ? "lg:grid-cols-[minmax(0,1fr)]"
2355
2355
  : "lg:grid-cols-[minmax(0,1fr)_340px] xl:grid-cols-[minmax(0,1fr)_360px]",
2356
2356
  )}
2357
2357
  >
2358
2358
  {!detailsPanelCollapsed && (
2359
- <aside className="bg-background/95 order-1 border-b border-white/[0.045] lg:sticky lg:top-0 lg:order-2 lg:h-screen lg:overflow-y-auto lg:border-b-0 lg:border-l lg:border-white/[0.055]">
2359
+ <aside className="bg-background/95 order-1 border-b border-white/[0.045] lg:order-2 lg:h-full lg:overflow-y-auto lg:border-b-0 lg:border-l lg:border-white/[0.055] inspector-scrollbar">
2360
2360
  <div className="space-y-4 p-4">
2361
2361
  <BrandHeader
2362
2362
  compact={true}
@@ -2485,7 +2485,7 @@ export function ProxyViewer({
2485
2485
  </aside>
2486
2486
  )}
2487
2487
 
2488
- <main className="order-2 min-w-0 lg:order-1">
2488
+ <main className="order-2 min-w-0 lg:order-1 lg:h-full lg:overflow-y-auto inspector-scrollbar">
2489
2489
  <div className="bg-background/95 shadow-[0_12px_36px_rgba(0,0,0,0.18),inset_0_-1px_0_rgba(255,255,255,0.045)] sticky top-0 z-30 px-4 py-3 lg:px-5">
2490
2490
  <div className="flex flex-wrap items-center gap-2">
2491
2491
  <div className="min-w-[180px] flex-1">
@@ -289,7 +289,6 @@ function ProviderCapabilitySummary({ provider }: { provider: ProviderConfig }):
289
289
 
290
290
  return (
291
291
  <div className="flex min-w-0 flex-wrap items-center gap-1.5 text-xs text-muted-foreground">
292
- <span>Capabilities</span>
293
292
  {hasAnthropic && <CapabilityChip label="Anthropic" enabled={true} />}
294
293
  {hasChat && <CapabilityChip label="OpenAI Chat" enabled={true} />}
295
294
  {hasResponses && <CapabilityChip label="OpenAI Responses" enabled={true} />}
@@ -448,14 +447,6 @@ function ModelChip({ provider, model }: { provider: ProviderConfig; model: strin
448
447
  );
449
448
  }
450
449
 
451
- function modelResultsLabel(testResults: TestResults | undefined): string | null {
452
- const models = testResults?.models;
453
- if (models === undefined) return null;
454
- const count = Object.keys(models).length;
455
- if (count === 0) return null;
456
- return `${count} model${count === 1 ? "" : "s"} tested`;
457
- }
458
-
459
450
  function getErrorIcon(type: ErrorType): JSX.Element {
460
451
  const iconProps = { className: "size-3", strokeWidth: 2 };
461
452
  switch (type) {
@@ -662,7 +653,6 @@ export function ProviderCard({
662
653
  provider.modelMetadataUrl !== undefined && provider.modelMetadataUrl.trim() !== "";
663
654
  const metadataImportLabel = canRefreshMetadata ? "Refresh" : "Import defaults";
664
655
  const isTestingValue = isTesting ?? false;
665
- const testedModelsLabel = modelResultsLabel(testResults);
666
656
  const providerSourceBadge =
667
657
  provider.source === "company" ? (
668
658
  <span className="shrink-0 rounded border border-cyan-300/20 bg-cyan-300/[0.08] px-1.5 py-0.5 text-xs text-cyan-100">
@@ -711,17 +701,12 @@ export function ProviderCard({
711
701
 
712
702
  <div className="flex flex-col gap-2 text-xs text-muted-foreground sm:flex-row sm:items-center sm:justify-between">
713
703
  <ProviderCapabilitySummary provider={provider} />
714
- <div className="flex flex-wrap items-center gap-2">
715
- <span>Key configured</span>
716
- <span>{provider.authHeader === "x-api-key" ? "x-api-key" : "Bearer"}</span>
717
- {testedModelsLabel !== null && <span>{testedModelsLabel}</span>}
718
- {testResults?.testedAt !== undefined && (
719
- <span className="inline-flex items-center gap-1">
720
- <Clock className="size-3" />
721
- {formatTimeAgo(testResults.testedAt)}
722
- </span>
723
- )}
724
- </div>
704
+ {testResults?.testedAt !== undefined && (
705
+ <span className="inline-flex items-center gap-1">
706
+ <Clock className="size-3" />
707
+ {formatTimeAgo(testResults.testedAt)}
708
+ </span>
709
+ )}
725
710
  </div>
726
711
 
727
712
  {!hasContextMetadata && (
@@ -553,53 +553,49 @@ export function ProvidersPanel({
553
553
 
554
554
  return (
555
555
  <div className="space-y-4">
556
- <div className="sticky top-0 z-10 flex items-center justify-between gap-3 rounded-[8px] bg-background/95 px-1 py-1 backdrop-blur">
557
- <h3 className="text-lg font-medium">Providers</h3>
558
- <div className="flex items-center gap-2">
559
- <Button
560
- variant="outline"
561
- size="sm"
562
- onClick={() => handleExport(false)}
563
- className="gap-1 hover:bg-muted"
564
- >
565
- <Download className="size-3" />
566
- Export
567
- </Button>
568
- <Button
569
- variant="outline"
570
- size="sm"
571
- onClick={handleImportClick}
572
- className="gap-1 hover:bg-muted"
573
- >
574
- <Upload className="size-3" />
575
- Import
576
- </Button>
577
- <input
578
- type="file"
579
- ref={fileInputRef}
580
- accept=".json"
581
- onChange={handleFileChange}
582
- style={{ display: "none" }}
583
- />
584
- <Button
585
- variant="outline"
586
- size="sm"
587
- onClick={() => setShowImportWizard(true)}
588
- className="gap-1"
589
- >
590
- <Scan className="size-3" />
591
- Scan
592
- </Button>
593
- <Button onClick={() => setShowForm(true)} size="sm" className="gap-1">
594
- <Plus className="size-4" />
595
- Add Provider
596
- </Button>
597
- </div>
556
+ <div className="sticky top-0 z-10 flex items-center justify-end gap-2 rounded-[8px] bg-background/95 px-1 py-1 backdrop-blur">
557
+ <Button
558
+ variant="outline"
559
+ size="sm"
560
+ onClick={() => handleExport(false)}
561
+ className="gap-1 hover:bg-muted"
562
+ >
563
+ <Download className="size-3" />
564
+ Export
565
+ </Button>
566
+ <Button
567
+ variant="outline"
568
+ size="sm"
569
+ onClick={handleImportClick}
570
+ className="gap-1 hover:bg-muted"
571
+ >
572
+ <Upload className="size-3" />
573
+ Import
574
+ </Button>
575
+ <input
576
+ type="file"
577
+ ref={fileInputRef}
578
+ accept=".json"
579
+ onChange={handleFileChange}
580
+ style={{ display: "none" }}
581
+ />
582
+ <Button
583
+ variant="outline"
584
+ size="sm"
585
+ onClick={() => setShowImportWizard(true)}
586
+ className="gap-1"
587
+ >
588
+ <Scan className="size-3" />
589
+ Scan
590
+ </Button>
591
+ <Button onClick={() => setShowForm(true)} size="sm" className="gap-1">
592
+ <Plus className="size-4" />
593
+ Add Provider
594
+ </Button>
598
595
  </div>
599
596
 
600
597
  {configPath !== null && (
601
598
  <div className="flex items-center gap-2 rounded-[8px] bg-muted/15 px-3 py-2 text-xs text-muted-foreground">
602
- <span className="shrink-0">Config:</span>
603
599
  <span className="font-mono truncate" title={configPath}>
604
600
  {configPath}
605
601
  </span>