@tonyclaw/agent-inspector 3.0.28 → 3.0.30

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 (156) hide show
  1. package/.output/cli.js +791 -191
  2. package/.output/nitro.json +1 -1
  3. package/.output/public/assets/CompareDrawer-B6cXJohL.js +1 -0
  4. package/.output/public/assets/InspectorPet-mAzeGmEE.js +4108 -0
  5. package/.output/public/assets/ProxyViewerContainer-CkFWv_Nm.js +126 -0
  6. package/.output/public/assets/{ReplayDialog-CZMApaF4.js → ReplayDialog-DodiTL6E.js} +1 -1
  7. package/.output/public/assets/{RequestAnatomy-DNWccR7O.js → RequestAnatomy-B3IauToI.js} +1 -1
  8. package/.output/public/assets/ResponseView-Hn-5ordK.js +3 -0
  9. package/.output/public/assets/StreamingChunkSequence-vLDOVQM_.js +1 -0
  10. package/.output/public/assets/_sessionId-BFH4TOaI.js +1 -0
  11. package/.output/public/assets/{_sessionId-DRfvuE2k.js → _sessionId-Cj_HIFZx.js} +1 -1
  12. package/.output/public/assets/{index-D4HkS7Ct.js → index-Bmj2lcWE.js} +1 -1
  13. package/.output/public/assets/index-CgJj-HBC.css +1 -0
  14. package/.output/public/assets/index-Ch7uqnCT.js +1 -0
  15. package/.output/public/assets/index-DkDdKvLl.js +76 -0
  16. package/.output/public/assets/{index-B3aAuqWq.js → index-ZlhqCrSg.js} +6 -6
  17. package/.output/public/assets/{json-viewer-wuJSKaed.js → json-viewer-BdrnVQu-.js} +1 -1
  18. package/.output/public/assets/jszip.min-CS_nt_o1.js +2 -0
  19. package/.output/public/assets/qwen-mMn3f5ul.webp +0 -0
  20. package/.output/server/_libs/jszip.mjs +35 -9
  21. package/.output/server/_libs/lucide-react.mjs +86 -86
  22. package/.output/server/_libs/radix-ui__react-dialog.mjs +3 -3
  23. package/.output/server/_libs/tanstack__react-router.mjs +1 -1
  24. package/.output/server/{_sessionId-BJTNiP_O.mjs → _sessionId-C5S3pGZd.mjs} +15 -15
  25. package/.output/server/_sessionId-g6D69lKq.mjs +81 -0
  26. package/.output/server/_ssr/{CompareDrawer-BMRH3N97.mjs → CompareDrawer-CqUmGHal.mjs} +138 -103
  27. package/.output/server/_ssr/InspectorPet-DI0UJd01.mjs +925 -0
  28. package/.output/server/_ssr/{ProxyViewerContainer-AFwcHAIR.mjs → ProxyViewerContainer-CvsUmbJ3.mjs} +1216 -1659
  29. package/.output/server/_ssr/{ReplayDialog-CbWvRHiN.mjs → ReplayDialog-DS48dpFG.mjs} +18 -18
  30. package/.output/server/_ssr/{RequestAnatomy-C4kcPyqN.mjs → RequestAnatomy-DxYVQU1C.mjs} +58 -58
  31. package/.output/server/_ssr/{ResponseView-D8VYt-gZ.mjs → ResponseView-BLXW73eq.mjs} +60 -60
  32. package/.output/server/_ssr/{StreamingChunkSequence-BUUo6vU0.mjs → StreamingChunkSequence-DD0iFuy0.mjs} +16 -16
  33. package/.output/server/_ssr/{index-DTwMEEXO.mjs → index-B10LIaK0.mjs} +15 -15
  34. package/.output/server/_ssr/index-RHVJnU2p.mjs +81 -0
  35. package/.output/server/_ssr/index.mjs +2 -2
  36. package/.output/server/_ssr/{json-viewer-BqF1pSQD.mjs → json-viewer-LDu2XBaK.mjs} +58 -58
  37. package/.output/server/_ssr/{router-C8BOns7y.mjs → router-GKvrwifJ.mjs} +9005 -6488
  38. package/.output/server/_tanstack-start-manifest_v-Df2n4mbT.mjs +4 -0
  39. package/.output/server/index.mjs +105 -77
  40. package/.output/workers/logFinalizer.worker.js +16908 -0
  41. package/.output/workers/sessionWorkerEntry.js +16904 -0
  42. package/README.md +21 -5
  43. package/package.json +6 -2
  44. package/src/assets/logos/qwen.webp +0 -0
  45. package/src/cli.ts +85 -10
  46. package/src/components/OnboardingBanner.tsx +41 -21
  47. package/src/components/ProxyViewer.tsx +198 -269
  48. package/src/components/ProxyViewerContainer.tsx +128 -17
  49. package/src/components/clients/ClientLogo.tsx +9 -6
  50. package/src/components/ecosystem/AgentLabDialog.tsx +166 -19
  51. package/src/components/errors/SafeErrorBoundary.tsx +201 -0
  52. package/src/components/pi-agent/PiAgentPanel.tsx +4 -1
  53. package/src/components/providers/ImportWizardDialog.tsx +18 -42
  54. package/src/components/providers/ProviderLogo.tsx +1 -1
  55. package/src/components/providers/ProvidersPanel.tsx +8 -5
  56. package/src/components/providers/SettingsDialog.tsx +34 -11
  57. package/src/components/proxy-viewer/ApplicationBar.tsx +63 -0
  58. package/src/components/proxy-viewer/CompareDrawer.tsx +92 -49
  59. package/src/components/proxy-viewer/ConversationGroupList.tsx +49 -34
  60. package/src/components/proxy-viewer/ConversationHeader.tsx +22 -18
  61. package/src/components/proxy-viewer/LiveConnectionStatus.tsx +186 -0
  62. package/src/components/proxy-viewer/LogEntry.tsx +283 -275
  63. package/src/components/proxy-viewer/RawExportWarning.tsx +77 -0
  64. package/src/components/proxy-viewer/SessionLoadProgressBar.tsx +61 -0
  65. package/src/components/proxy-viewer/ThreadConnector.tsx +16 -1
  66. package/src/components/proxy-viewer/TurnGroup.tsx +13 -2
  67. package/src/components/proxy-viewer/accessibility.ts +8 -0
  68. package/src/components/proxy-viewer/lazy.ts +4 -0
  69. package/src/components/proxy-viewer/liveConnectionState.ts +158 -0
  70. package/src/components/proxy-viewer/proxyViewerLogic.ts +10 -0
  71. package/src/components/proxy-viewer/viewerState.ts +2 -6
  72. package/src/components/ui/select.tsx +1 -1
  73. package/src/components/ui/tabs.tsx +3 -3
  74. package/src/components/ui/transient-toast.tsx +1 -1
  75. package/src/lib/apiClient.ts +17 -2
  76. package/src/lib/ecosystemContract.ts +34 -0
  77. package/src/lib/export-logs.ts +1 -1
  78. package/src/lib/providerContract.ts +70 -4
  79. package/src/lib/providerImportContract.ts +27 -0
  80. package/src/lib/providerModelMetadata.ts +16 -7
  81. package/src/lib/resourceLimits.ts +152 -0
  82. package/src/lib/safeDiagnostic.ts +38 -0
  83. package/src/lib/useProviders.ts +4 -4
  84. package/src/lib/utils.ts +5 -1
  85. package/src/mcp/server.ts +39 -6
  86. package/src/mcp/toolHandlers.ts +131 -4
  87. package/src/proxy/chunkStorage.ts +20 -6
  88. package/src/proxy/config.ts +20 -6
  89. package/src/proxy/dataDir.ts +3 -0
  90. package/src/proxy/ecosystemExecutionConfirmation.ts +114 -0
  91. package/src/proxy/ecosystemExecutionRoute.ts +116 -0
  92. package/src/proxy/ecosystemTasks.ts +48 -0
  93. package/src/proxy/evidenceExporter.ts +23 -9
  94. package/src/proxy/groupEvidenceExporter.ts +26 -5
  95. package/src/proxy/groupStore.ts +13 -3
  96. package/src/proxy/handler.ts +103 -20
  97. package/src/proxy/identityProxy.ts +333 -14
  98. package/src/proxy/logFinalizer.ts +73 -6
  99. package/src/proxy/logImportUpload.ts +128 -0
  100. package/src/proxy/logImporter.ts +321 -70
  101. package/src/proxy/logIndex.ts +16 -6
  102. package/src/proxy/logger.ts +294 -41
  103. package/src/proxy/privateDataPath.ts +183 -0
  104. package/src/proxy/providerScanStore.ts +87 -0
  105. package/src/proxy/providerSecretStore.ts +58 -19
  106. package/src/proxy/providers.ts +175 -58
  107. package/src/proxy/rawStreamCapture.ts +66 -5
  108. package/src/proxy/runStore.ts +13 -3
  109. package/src/proxy/runtimeAdmission.ts +52 -0
  110. package/src/proxy/runtimeHealth.ts +206 -0
  111. package/src/proxy/runtimeShutdown.ts +75 -0
  112. package/src/proxy/sessionArchive.ts +15 -2
  113. package/src/proxy/sessionProcess.ts +19 -0
  114. package/src/proxy/sessionRuntime.ts +7 -0
  115. package/src/proxy/shutdownCoordinator.ts +90 -0
  116. package/src/proxy/sqliteLogIndex.ts +18 -2
  117. package/src/proxy/store.ts +18 -2
  118. package/src/routes/__root.tsx +18 -1
  119. package/src/routes/api/alerts.summary.ts +12 -8
  120. package/src/routes/api/alerts.ts +27 -9
  121. package/src/routes/api/ecosystem.packages.$packageId.help.ts +3 -8
  122. package/src/routes/api/ecosystem.packages.$packageId.install.ts +3 -8
  123. package/src/routes/api/ecosystem.packages.$packageId.runner-presets.ts +3 -11
  124. package/src/routes/api/ecosystem.packages.$packageId.upgrade.ts +3 -8
  125. package/src/routes/api/ecosystem.recipes.$recipeId.run.ts +3 -8
  126. package/src/routes/api/health.ts +9 -2
  127. package/src/routes/api/knowledge.project-context.ts +11 -0
  128. package/src/routes/api/knowledge.search.ts +33 -2
  129. package/src/routes/api/logs.$id.body.ts +16 -2
  130. package/src/routes/api/logs.import.ts +7 -18
  131. package/src/routes/api/logs.stream.ts +147 -69
  132. package/src/routes/api/logs.ts +55 -14
  133. package/src/routes/api/providers.$providerId.model-metadata.ts +22 -4
  134. package/src/routes/api/providers.$providerId.ts +37 -6
  135. package/src/routes/api/providers.export.ts +34 -16
  136. package/src/routes/api/providers.import.ts +42 -8
  137. package/src/routes/api/providers.scan.ts +13 -8
  138. package/src/routes/api/providers.ts +36 -5
  139. package/src/routes/api/runs.ts +12 -12
  140. package/src/routes/api/sessions.ts +15 -8
  141. package/src/routes/index.tsx +6 -0
  142. package/src/routes/livez.ts +13 -0
  143. package/src/routes/readyz.ts +18 -0
  144. package/src/routes/session/$sessionId.tsx +6 -0
  145. package/styles/globals.css +19 -3
  146. package/.output/public/assets/CompareDrawer-TghZr5t1.js +0 -1
  147. package/.output/public/assets/ProxyViewerContainer-fShBAZjj.js +0 -4234
  148. package/.output/public/assets/ResponseView-d25MdFhY.js +0 -3
  149. package/.output/public/assets/StreamingChunkSequence-DIFZEnWe.js +0 -1
  150. package/.output/public/assets/index-BsxAGqMA.css +0 -1
  151. package/.output/public/assets/index-DzARL2Fi.js +0 -76
  152. package/.output/public/assets/qwen-CONDcHqt.png +0 -0
  153. package/.output/server/_tanstack-start-manifest_v-BBf2nRhb.mjs +0 -4
  154. package/src/assets/logos/mcp.png +0 -0
  155. package/src/assets/logos/qwen.png +0 -0
  156. package/src/components/ui/mcp-logo.tsx +0 -20
@@ -1,29 +1,30 @@
1
1
  import { j as jsxRuntimeExports, r as reactExports } from "./_libs/react.mjs";
2
- import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-AFwcHAIR.mjs";
3
- import { R as Route$K } from "./_ssr/router-C8BOns7y.mjs";
4
- import "./_libs/jszip.mjs";
5
- import "./_libs/react-dom.mjs";
6
- import "node:fs";
7
- import "node:buffer";
8
- import "node:path";
2
+ import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-CvsUmbJ3.mjs";
3
+ import { R as Route$K } from "./_ssr/router-GKvrwifJ.mjs";
9
4
  import "node:crypto";
5
+ import "node:path";
6
+ import "node:fs";
10
7
  import "node:child_process";
8
+ import "node:buffer";
11
9
  import "node:url";
12
10
  import "crypto";
13
11
  import "node:util";
14
12
  import "node:net";
15
13
  import "./_libs/modelcontextprotocol__server.mjs";
14
+ import "./_libs/jszip.mjs";
16
15
  import "node:os";
17
16
  import "./_libs/swr.mjs";
18
17
  import "./_libs/use-sync-external-store.mjs";
19
18
  import "./_libs/dequal.mjs";
20
- import "./_libs/clsx.mjs";
21
- import "./_libs/tailwind-merge.mjs";
22
- import "./_libs/class-variance-authority.mjs";
23
19
  import "./_libs/tanstack__react-virtual.mjs";
20
+ import "./_libs/react-dom.mjs";
21
+ import "util";
22
+ import "async_hooks";
23
+ import "stream";
24
24
  import "./_libs/tanstack__virtual-core.mjs";
25
+ import "./_libs/class-variance-authority.mjs";
26
+ import "./_libs/clsx.mjs";
25
27
  import "./_libs/diff.mjs";
26
- import "./_libs/three.mjs";
27
28
  import "./_libs/lucide-react.mjs";
28
29
  import "./_libs/zod.mjs";
29
30
  import "./_libs/radix-ui__react-select.mjs";
@@ -77,7 +78,9 @@ import "node:stream";
77
78
  import "./_libs/tanstack__history.mjs";
78
79
  import "node:stream/web";
79
80
  import "./_libs/isbot.mjs";
81
+ import "./_libs/tailwind-merge.mjs";
80
82
  import "node:fs/promises";
83
+ import "node:worker_threads";
81
84
  import "node:readline";
82
85
  import "./_libs/conf.mjs";
83
86
  import "node:process";
@@ -99,10 +102,7 @@ import "./_libs/mimic-function.mjs";
99
102
  import "./_libs/semver.mjs";
100
103
  import "./_libs/uint8array-extras.mjs";
101
104
  import "node:dns/promises";
102
- import "node:worker_threads";
103
- import "util";
104
- import "async_hooks";
105
- import "stream";
105
+ import "node:assert/strict";
106
106
  import "./_libs/readable-stream.mjs";
107
107
  import "events";
108
108
  import "node:string_decoder";
@@ -0,0 +1,81 @@
1
+ import { j as jsxRuntimeExports } from "./_libs/react.mjs";
2
+ import { S as SafeRouteError } from "./_ssr/router-GKvrwifJ.mjs";
3
+ import "node:crypto";
4
+ import "node:path";
5
+ import "node:fs";
6
+ import "node:child_process";
7
+ import "node:buffer";
8
+ import "node:url";
9
+ import "crypto";
10
+ import "node:util";
11
+ import "node:net";
12
+ import "./_libs/modelcontextprotocol__server.mjs";
13
+ import "./_libs/jszip.mjs";
14
+ import "node:os";
15
+ import "./_libs/tanstack__react-router.mjs";
16
+ import "./_libs/tanstack__router-core.mjs";
17
+ import "./_libs/cookie-es.mjs";
18
+ import "./_libs/seroval.mjs";
19
+ import "./_libs/seroval-plugins.mjs";
20
+ import "node:stream";
21
+ import "./_libs/tanstack__history.mjs";
22
+ import "node:stream/web";
23
+ import "./_libs/react-dom.mjs";
24
+ import "util";
25
+ import "async_hooks";
26
+ import "stream";
27
+ import "./_libs/isbot.mjs";
28
+ import "./_libs/swr.mjs";
29
+ import "./_libs/use-sync-external-store.mjs";
30
+ import "./_libs/dequal.mjs";
31
+ import "./_libs/class-variance-authority.mjs";
32
+ import "./_libs/clsx.mjs";
33
+ import "./_libs/tailwind-merge.mjs";
34
+ import "node:fs/promises";
35
+ import "node:worker_threads";
36
+ import "node:readline";
37
+ import "./_libs/conf.mjs";
38
+ import "node:process";
39
+ import "node:assert";
40
+ import "./_libs/dot-prop.mjs";
41
+ import "./_libs/env-paths.mjs";
42
+ import "./_libs/atomically.mjs";
43
+ import "node:events";
44
+ import "./_libs/stubborn-fs.mjs";
45
+ import "./_libs/stubborn-utils.mjs";
46
+ import "./_libs/when-exit.mjs";
47
+ import "./_libs/ajv.mjs";
48
+ import "./_libs/fast-deep-equal.mjs";
49
+ import "./_libs/json-schema-traverse.mjs";
50
+ import "./_libs/fast-uri.mjs";
51
+ import "./_libs/ajv-formats.mjs";
52
+ import "./_libs/debounce-fn.mjs";
53
+ import "./_libs/mimic-function.mjs";
54
+ import "./_libs/semver.mjs";
55
+ import "./_libs/uint8array-extras.mjs";
56
+ import "node:dns/promises";
57
+ import "node:assert/strict";
58
+ import "./_libs/zod.mjs";
59
+ import "./_libs/readable-stream.mjs";
60
+ import "events";
61
+ import "node:string_decoder";
62
+ import "./_libs/process-nextick-args.mjs";
63
+ import "./_libs/isarray.mjs";
64
+ import "./_libs/safe-buffer.mjs";
65
+ import "buffer";
66
+ import "./_libs/core-util-is.mjs";
67
+ import "./_libs/inherits.mjs";
68
+ import "./_libs/util-deprecate.mjs";
69
+ import "./_libs/lie.mjs";
70
+ import "./_libs/immediate.mjs";
71
+ import "./_libs/setimmediate.mjs";
72
+ import "./_libs/pako.mjs";
73
+ function SessionRouteError({
74
+ error,
75
+ reset
76
+ }) {
77
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SafeRouteError, { error, reset, scope: "session-route" });
78
+ }
79
+ export {
80
+ SessionRouteError as errorComponent
81
+ };
@@ -1,11 +1,11 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, c as cn, B as Badge, f as formatTokens, b as copyTextToClipboard, L as LazyJsonViewerFromString } from "./ProxyViewerContainer-AFwcHAIR.mjs";
3
- import "./router-C8BOns7y.mjs";
4
- import "node:fs";
5
- import "node:buffer";
6
- import "node:path";
2
+ import { m as cn, x as formatTokens, y as copyTextToClipboard } from "./router-GKvrwifJ.mjs";
3
+ import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, B as Badge, L as LazyJsonViewerFromString } from "./ProxyViewerContainer-CvsUmbJ3.mjs";
7
4
  import "node:crypto";
5
+ import "node:path";
6
+ import "node:fs";
8
7
  import "node:child_process";
8
+ import "node:buffer";
9
9
  import "node:url";
10
10
  import "crypto";
11
11
  import "node:util";
@@ -13,19 +13,68 @@ import "node:net";
13
13
  import "../_libs/modelcontextprotocol__server.mjs";
14
14
  import "../_libs/jszip.mjs";
15
15
  import "node:os";
16
+ import { X, aD as Rows3, aE as Columns2, ad as Minus, H as Plus, a0 as Pencil, t as ChevronRight, aF as Equal, d as Check, l as Copy } from "../_libs/lucide-react.mjs";
17
+ import "../_libs/tanstack__react-router.mjs";
18
+ import "../_libs/tanstack__router-core.mjs";
19
+ import "../_libs/cookie-es.mjs";
20
+ import "../_libs/seroval.mjs";
21
+ import "../_libs/seroval-plugins.mjs";
22
+ import "node:stream";
23
+ import "../_libs/tanstack__history.mjs";
24
+ import "node:stream/web";
16
25
  import "../_libs/react-dom.mjs";
17
- import { X, aF as Rows3, aG as Columns2, af as Minus, g as Plus, aa as Pencil, m as ChevronRight, aH as Equal, b as Check, j as Copy } from "../_libs/lucide-react.mjs";
26
+ import "util";
27
+ import "async_hooks";
28
+ import "stream";
29
+ import "../_libs/isbot.mjs";
18
30
  import "../_libs/swr.mjs";
19
31
  import "../_libs/use-sync-external-store.mjs";
20
32
  import "../_libs/dequal.mjs";
33
+ import "../_libs/class-variance-authority.mjs";
21
34
  import "../_libs/clsx.mjs";
22
35
  import "../_libs/tailwind-merge.mjs";
23
- import "../_libs/class-variance-authority.mjs";
36
+ import "node:fs/promises";
37
+ import "node:worker_threads";
38
+ import "node:readline";
39
+ import "../_libs/conf.mjs";
40
+ import "node:process";
41
+ import "node:assert";
42
+ import "../_libs/dot-prop.mjs";
43
+ import "../_libs/env-paths.mjs";
44
+ import "../_libs/atomically.mjs";
45
+ import "node:events";
46
+ import "../_libs/stubborn-fs.mjs";
47
+ import "../_libs/stubborn-utils.mjs";
48
+ import "../_libs/when-exit.mjs";
49
+ import "../_libs/ajv.mjs";
50
+ import "../_libs/fast-deep-equal.mjs";
51
+ import "../_libs/json-schema-traverse.mjs";
52
+ import "../_libs/fast-uri.mjs";
53
+ import "../_libs/ajv-formats.mjs";
54
+ import "../_libs/debounce-fn.mjs";
55
+ import "../_libs/mimic-function.mjs";
56
+ import "../_libs/semver.mjs";
57
+ import "../_libs/uint8array-extras.mjs";
58
+ import "node:dns/promises";
59
+ import "node:assert/strict";
60
+ import "../_libs/zod.mjs";
61
+ import "../_libs/readable-stream.mjs";
62
+ import "events";
63
+ import "node:string_decoder";
64
+ import "../_libs/process-nextick-args.mjs";
65
+ import "../_libs/isarray.mjs";
66
+ import "../_libs/safe-buffer.mjs";
67
+ import "buffer";
68
+ import "../_libs/core-util-is.mjs";
69
+ import "../_libs/inherits.mjs";
70
+ import "../_libs/util-deprecate.mjs";
71
+ import "../_libs/lie.mjs";
72
+ import "../_libs/immediate.mjs";
73
+ import "../_libs/setimmediate.mjs";
74
+ import "../_libs/pako.mjs";
24
75
  import "../_libs/tanstack__react-virtual.mjs";
25
76
  import "../_libs/tanstack__virtual-core.mjs";
26
77
  import "../_libs/diff.mjs";
27
- import "../_libs/three.mjs";
28
- import "../_libs/zod.mjs";
29
78
  import "../_libs/radix-ui__react-select.mjs";
30
79
  import "../_libs/radix-ui__number.mjs";
31
80
  import "../_libs/radix-ui__primitive.mjs";
@@ -68,55 +117,6 @@ import "../_libs/@radix-ui/react-use-is-hydrated+[...].mjs";
68
117
  import "../_libs/radix-ui__react-tooltip.mjs";
69
118
  import "../_libs/radix-ui__react-collapsible.mjs";
70
119
  import "../_libs/radix-ui__react-scroll-area.mjs";
71
- import "../_libs/tanstack__react-router.mjs";
72
- import "../_libs/tanstack__router-core.mjs";
73
- import "../_libs/cookie-es.mjs";
74
- import "../_libs/seroval.mjs";
75
- import "../_libs/seroval-plugins.mjs";
76
- import "node:stream";
77
- import "../_libs/tanstack__history.mjs";
78
- import "node:stream/web";
79
- import "../_libs/isbot.mjs";
80
- import "node:fs/promises";
81
- import "node:readline";
82
- import "../_libs/conf.mjs";
83
- import "node:process";
84
- import "node:assert";
85
- import "../_libs/dot-prop.mjs";
86
- import "../_libs/env-paths.mjs";
87
- import "../_libs/atomically.mjs";
88
- import "node:events";
89
- import "../_libs/stubborn-fs.mjs";
90
- import "../_libs/stubborn-utils.mjs";
91
- import "../_libs/when-exit.mjs";
92
- import "../_libs/ajv.mjs";
93
- import "../_libs/fast-deep-equal.mjs";
94
- import "../_libs/json-schema-traverse.mjs";
95
- import "../_libs/fast-uri.mjs";
96
- import "../_libs/ajv-formats.mjs";
97
- import "../_libs/debounce-fn.mjs";
98
- import "../_libs/mimic-function.mjs";
99
- import "../_libs/semver.mjs";
100
- import "../_libs/uint8array-extras.mjs";
101
- import "node:dns/promises";
102
- import "node:worker_threads";
103
- import "util";
104
- import "async_hooks";
105
- import "stream";
106
- import "../_libs/readable-stream.mjs";
107
- import "events";
108
- import "node:string_decoder";
109
- import "../_libs/process-nextick-args.mjs";
110
- import "../_libs/isarray.mjs";
111
- import "../_libs/safe-buffer.mjs";
112
- import "buffer";
113
- import "../_libs/core-util-is.mjs";
114
- import "../_libs/inherits.mjs";
115
- import "../_libs/util-deprecate.mjs";
116
- import "../_libs/lie.mjs";
117
- import "../_libs/immediate.mjs";
118
- import "../_libs/setimmediate.mjs";
119
- import "../_libs/pako.mjs";
120
120
  const ROOT_PATH = "";
121
121
  function formatPath(segments) {
122
122
  if (segments.length === 0) return ROOT_PATH;
@@ -287,6 +287,8 @@ function previewNode(node, maxLen = 80) {
287
287
  if (s.length > maxLen) s = `${s.slice(0, maxLen - 1)}…`;
288
288
  return s;
289
289
  }
290
+ const COMPARE_RESPONSIVE_HEADER_CLASS_NAME = "flex flex-col gap-3 border-b border-border px-3 py-3 sm:flex-row sm:items-start sm:gap-4 sm:px-4";
291
+ const COMPARE_RESPONSIVE_SPLIT_CLASS_NAME = "grid min-w-0 grid-cols-1 gap-x-2 gap-y-0.5 px-3 py-2 text-xs md:grid-cols-[200px_minmax(0,1fr)_minmax(0,1fr)]";
290
292
  function nodeToJsonString(node, indent = 2) {
291
293
  return JSON.stringify(nodeToJsonValue(node), null, indent);
292
294
  }
@@ -362,23 +364,23 @@ function groupContiguousEquals(ops) {
362
364
  const KIND_VISUAL = {
363
365
  added: {
364
366
  icon: Plus,
365
- accent: "text-emerald-600 dark:text-emerald-400",
366
- bg: "bg-emerald-500/5 hover:bg-emerald-500/10",
367
- border: "border-l-emerald-500",
367
+ accent: "text-status-success",
368
+ bg: "bg-status-success/5 hover:bg-status-success/10",
369
+ border: "border-l-status-success",
368
370
  label: "ADDED"
369
371
  },
370
372
  removed: {
371
373
  icon: Minus,
372
- accent: "text-rose-600 dark:text-rose-400",
373
- bg: "bg-rose-500/5 hover:bg-rose-500/10",
374
- border: "border-l-rose-500",
374
+ accent: "text-status-danger",
375
+ bg: "bg-status-danger/5 hover:bg-status-danger/10",
376
+ border: "border-l-status-danger",
375
377
  label: "REMOVED"
376
378
  },
377
379
  changed: {
378
380
  icon: Pencil,
379
- accent: "text-amber-600 dark:text-amber-400",
380
- bg: "bg-amber-500/5 hover:bg-amber-500/10",
381
- border: "border-l-amber-500",
381
+ accent: "text-status-watch",
382
+ bg: "bg-status-watch/5 hover:bg-status-watch/10",
383
+ border: "border-l-status-watch",
382
384
  label: "CHANGED"
383
385
  },
384
386
  equal: {
@@ -449,15 +451,15 @@ function UnifiedOpRow({
449
451
  const preview = op.kind === "changed" ? [
450
452
  {
451
453
  text: previewNode(op.left, 400),
452
- tone: "text-rose-700 dark:text-rose-300 line-through"
454
+ tone: "text-status-danger line-through"
453
455
  },
454
- { text: previewNode(op.right, 400), tone: "text-emerald-700 dark:text-emerald-300" }
456
+ { text: previewNode(op.right, 400), tone: "text-status-success" }
455
457
  ] : op.kind === "removed" ? [
456
458
  {
457
459
  text: previewNode(op.value, 400),
458
- tone: "text-rose-700 dark:text-rose-300 line-through"
460
+ tone: "text-status-danger line-through"
459
461
  }
460
- ] : op.kind === "added" ? [{ text: previewNode(op.value, 400), tone: "text-emerald-700 dark:text-emerald-300" }] : [{ text: previewNode(op.value, 400), tone: "text-muted-foreground" }];
462
+ ] : op.kind === "added" ? [{ text: previewNode(op.value, 400), tone: "text-status-success" }] : [{ text: previewNode(op.value, 400), tone: "text-muted-foreground" }];
461
463
  const justCopied = copiedPath === op.path && op.path !== "";
462
464
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
463
465
  "div",
@@ -520,7 +522,7 @@ function UnifiedOpRow({
520
522
  },
521
523
  className: cn(
522
524
  "shrink-0 p-1 rounded transition-colors cursor-pointer inline-flex items-center justify-center",
523
- justCopied ? "text-emerald-500" : "text-muted-foreground/50 hover:text-foreground hover:bg-muted"
525
+ justCopied ? "text-status-success" : "text-muted-foreground/50 hover:text-foreground hover:bg-muted"
524
526
  ),
525
527
  "aria-label": justCopied ? "Copied" : "Copy",
526
528
  title: justCopied ? "Copied!" : "Copy",
@@ -557,12 +559,12 @@ function ExpandedSubtree({ op }) {
557
559
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "pl-5 mt-2 text-xs text-muted-foreground/70 italic", children: "Primitive values are shown inline above." });
558
560
  }
559
561
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "pl-5 mt-2 grid grid-cols-1 md:grid-cols-2 gap-2", children: [
560
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border border-rose-500/30 rounded p-2 bg-rose-500/5", children: [
561
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-[10px] uppercase tracking-wider text-rose-500 mb-1", children: "Old" }),
562
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded border border-status-danger/30 bg-status-danger/5 p-2", children: [
563
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mb-1 text-[10px] uppercase tracking-wider text-status-danger", children: "Old" }),
562
564
  /* @__PURE__ */ jsxRuntimeExports.jsx(LazyJsonStringView, { text: nodeToJsonString(op.left), defaultExpandDepth: 0 })
563
565
  ] }),
564
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border border-emerald-500/30 rounded p-2 bg-emerald-500/5", children: [
565
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-[10px] uppercase tracking-wider text-emerald-500 mb-1", children: "New" }),
566
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded border border-status-success/30 bg-status-success/5 p-2", children: [
567
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mb-1 text-[10px] uppercase tracking-wider text-status-success", children: "New" }),
566
568
  /* @__PURE__ */ jsxRuntimeExports.jsx(LazyJsonStringView, { text: nodeToJsonString(op.right), defaultExpandDepth: 0 })
567
569
  ] })
568
570
  ] });
@@ -586,7 +588,7 @@ function SummaryChips({
586
588
  disabled: counts.removed === 0,
587
589
  className: cn(
588
590
  "inline-flex items-center gap-1 px-2 py-0.5 rounded-full border cursor-pointer transition-colors",
589
- counts.removed > 0 ? "border-rose-500/40 text-rose-600 dark:text-rose-400 bg-rose-500/10 hover:bg-rose-500/20" : "border-border text-muted-foreground/40 cursor-not-allowed"
591
+ counts.removed > 0 ? "border-status-danger/40 bg-status-danger/10 text-status-danger hover:bg-status-danger/20" : "border-border text-muted-foreground/40 cursor-not-allowed"
590
592
  ),
591
593
  title: counts.removed > 0 ? "Jump to first removed" : "No removals",
592
594
  children: [
@@ -604,7 +606,7 @@ function SummaryChips({
604
606
  disabled: counts.added === 0,
605
607
  className: cn(
606
608
  "inline-flex items-center gap-1 px-2 py-0.5 rounded-full border cursor-pointer transition-colors",
607
- counts.added > 0 ? "border-emerald-500/40 text-emerald-600 dark:text-emerald-400 bg-emerald-500/10 hover:bg-emerald-500/20" : "border-border text-muted-foreground/40 cursor-not-allowed"
609
+ counts.added > 0 ? "border-status-success/40 bg-status-success/10 text-status-success hover:bg-status-success/20" : "border-border text-muted-foreground/40 cursor-not-allowed"
608
610
  ),
609
611
  title: counts.added > 0 ? "Jump to first added" : "No additions",
610
612
  children: [
@@ -622,7 +624,7 @@ function SummaryChips({
622
624
  disabled: counts.changed === 0,
623
625
  className: cn(
624
626
  "inline-flex items-center gap-1 px-2 py-0.5 rounded-full border cursor-pointer transition-colors",
625
- counts.changed > 0 ? "border-amber-500/40 text-amber-600 dark:text-amber-400 bg-amber-500/10 hover:bg-amber-500/20" : "border-border text-muted-foreground/40 cursor-not-allowed"
627
+ counts.changed > 0 ? "border-status-watch/40 bg-status-watch/10 text-status-watch hover:bg-status-watch/20" : "border-border text-muted-foreground/40 cursor-not-allowed"
626
628
  ),
627
629
  title: counts.changed > 0 ? "Jump to first changed" : "No changes",
628
630
  children: [
@@ -689,23 +691,23 @@ function SideSummary({
689
691
  variant: "outline",
690
692
  className: cn(
691
693
  "text-[10px] px-1.5 py-0 h-5 font-mono shrink-0",
692
- side === "left" ? "border-rose-500/40 text-rose-400" : "border-emerald-500/40 text-emerald-400"
694
+ side === "left" ? "border-status-danger/40 text-status-danger" : "border-status-success/40 text-status-success"
693
695
  ),
694
696
  children: side === "left" ? "← Left" : "Right →"
695
697
  }
696
698
  ),
697
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "font-mono text-blue-400/80", title: `Log ID ${String(log.id)}`, children: [
699
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "font-mono text-status-info", title: `Log ID ${String(log.id)}`, children: [
698
700
  "#",
699
701
  displayNumber
700
702
  ] }),
701
- log.model !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono leading-snug text-muted-foreground", children: log.model })
703
+ log.model !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "min-w-0 truncate font-mono leading-snug text-muted-foreground", children: log.model })
702
704
  ] }),
703
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 text-muted-foreground font-mono", children: [
704
- log.cacheCreationInputTokens !== null && log.cacheCreationInputTokens > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-emerald-400", children: [
705
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 font-mono text-muted-foreground", children: [
706
+ log.cacheCreationInputTokens !== null && log.cacheCreationInputTokens > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-status-success", children: [
705
707
  "KV Cache +",
706
708
  formatTokens(log.cacheCreationInputTokens)
707
709
  ] }),
708
- log.cacheReadInputTokens !== null && log.cacheReadInputTokens > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-purple-400", children: [
710
+ log.cacheReadInputTokens !== null && log.cacheReadInputTokens > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-status-accent", children: [
709
711
  "KV Cache ~",
710
712
  formatTokens(log.cacheReadInputTokens)
711
713
  ] }),
@@ -724,6 +726,9 @@ function CompareDrawer({
724
726
  rightDisplayNumber,
725
727
  onClose
726
728
  }) {
729
+ const panelRef = reactExports.useRef(null);
730
+ const closeButtonRef = reactExports.useRef(null);
731
+ const previousActiveElementRef = reactExports.useRef(null);
727
732
  const ops = reactExports.useMemo(() => {
728
733
  const leftRequest = getLogFormatAdapter(resolveLogFormat(left)).analyzeRequest(
729
734
  left.rawRequestBody
@@ -812,6 +817,8 @@ function CompareDrawer({
812
817
  }
813
818
  };
814
819
  reactExports.useEffect(() => {
820
+ previousActiveElementRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
821
+ closeButtonRef.current?.focus();
815
822
  const onKey = (e) => {
816
823
  if (e.key === "Escape") onClose();
817
824
  };
@@ -821,8 +828,32 @@ function CompareDrawer({
821
828
  return () => {
822
829
  document.removeEventListener("keydown", onKey);
823
830
  document.body.style.overflow = prevOverflow;
831
+ previousActiveElementRef.current?.focus();
824
832
  };
825
833
  }, [onClose]);
834
+ const handlePanelKeyDown = (event) => {
835
+ event.stopPropagation();
836
+ if (event.key !== "Tab") return;
837
+ const panel = panelRef.current;
838
+ if (panel === null) return;
839
+ const focusable = Array.from(
840
+ panel.querySelectorAll(
841
+ 'button:not([disabled]), [href], input:not([disabled]), [tabindex]:not([tabindex="-1"])'
842
+ )
843
+ );
844
+ const first = focusable[0];
845
+ const last = focusable[focusable.length - 1];
846
+ if (first === void 0 || last === void 0) return;
847
+ if (event.shiftKey && document.activeElement === first) {
848
+ event.preventDefault();
849
+ last.focus();
850
+ return;
851
+ }
852
+ if (!event.shiftKey && document.activeElement === last) {
853
+ event.preventDefault();
854
+ first.focus();
855
+ }
856
+ };
826
857
  const sameSession = getConversationId(left) === getConversationId(right);
827
858
  const allEqual = ops.length === 1 && ops[0]?.kind === "equal";
828
859
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
@@ -846,23 +877,25 @@ function CompareDrawer({
846
877
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
847
878
  "div",
848
879
  {
880
+ ref: panelRef,
849
881
  className: cn(
850
- "relative bg-background border-l border-border shadow-xl",
882
+ "relative overflow-x-hidden bg-background border-l border-border shadow-xl",
851
883
  "w-full md:w-[70vw] max-w-[1100px] flex flex-col h-full"
852
884
  ),
853
885
  onClick: (e) => e.stopPropagation(),
854
- onKeyDown: (e) => e.stopPropagation(),
886
+ onKeyDown: handlePanelKeyDown,
855
887
  children: [
856
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-4 px-4 py-3 border-b border-border", children: [
857
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 flex gap-4 min-w-0", children: [
888
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: COMPARE_RESPONSIVE_HEADER_CLASS_NAME, children: [
889
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid min-w-0 flex-1 grid-cols-1 gap-3 sm:grid-cols-2 sm:gap-4", children: [
858
890
  /* @__PURE__ */ jsxRuntimeExports.jsx(SideSummary, { log: left, side: "left", displayNumber: leftDisplayNumber }),
859
891
  /* @__PURE__ */ jsxRuntimeExports.jsx(SideSummary, { log: right, side: "right", displayNumber: rightDisplayNumber })
860
892
  ] }),
861
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 shrink-0", children: [
893
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex w-full shrink-0 items-center justify-between gap-2 sm:w-auto sm:justify-start", children: [
862
894
  /* @__PURE__ */ jsxRuntimeExports.jsx(ModeToggle, { mode, onChange: setMode }),
863
895
  /* @__PURE__ */ jsxRuntimeExports.jsx(
864
896
  "button",
865
897
  {
898
+ ref: closeButtonRef,
866
899
  type: "button",
867
900
  onClick: onClose,
868
901
  "aria-label": "Close",
@@ -872,7 +905,7 @@ function CompareDrawer({
872
905
  )
873
906
  ] })
874
907
  ] }),
875
- !sameSession && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-4 py-1.5 text-xs text-amber-400 bg-amber-500/10 border-b border-border", children: "Heads up: the two selected logs are from different sessions." }),
908
+ !sameSession && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-b border-border bg-warning/10 px-4 py-1.5 text-xs text-foreground", children: "Heads up: the two selected logs are from different sessions." }),
876
909
  allEqual ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0 overflow-y-auto flex items-center justify-center text-muted-foreground text-sm", children: "The two Request payloads are identical." }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
877
910
  /* @__PURE__ */ jsxRuntimeExports.jsx(SummaryChips, { counts, onJumpTo: jumpToKind }),
878
911
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: bodyRef, className: "flex-1 min-h-0 overflow-y-auto", children: mode === "unified" ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-3 py-2 space-y-0.5", children: grouped.map((g, i) => {
@@ -925,8 +958,8 @@ function SplitBody({
925
958
  leftDisplayNumber,
926
959
  rightDisplayNumber
927
960
  }) {
928
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-[200px_1fr_1fr] gap-x-2 gap-y-0.5 px-3 py-2 text-xs", children: [
929
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-[200px_1fr_1fr] gap-x-2 col-span-3 pb-2 mb-2 border-b border-border text-[10px] uppercase tracking-wider text-muted-foreground", children: [
961
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { "data-compare-layout": "responsive-split", className: COMPARE_RESPONSIVE_SPLIT_CLASS_NAME, children: [
962
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "col-span-1 mb-2 grid grid-cols-1 gap-x-2 gap-y-1 border-b border-border pb-2 text-[10px] uppercase tracking-wider text-muted-foreground md:col-span-3 md:grid-cols-[200px_minmax(0,1fr)_minmax(0,1fr)]", children: [
930
963
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Path" }),
931
964
  /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { title: `Log ID ${String(left.id)}`, children: [
932
965
  "Left (Log #",
@@ -944,7 +977,7 @@ function SplitBody({
944
977
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
945
978
  "div",
946
979
  {
947
- className: "col-span-3 px-2 py-1 text-xs text-muted-foreground/60",
980
+ className: "col-span-1 px-2 py-1 text-xs text-muted-foreground/60 md:col-span-3",
948
981
  children: [
949
982
  g.ops.length,
950
983
  " equal siblings collapsed — switch to Unified to expand"
@@ -958,7 +991,7 @@ function SplitBody({
958
991
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
959
992
  "div",
960
993
  {
961
- className: "col-span-3 grid grid-cols-[200px_1fr_1fr] gap-x-2 px-2 py-0.5 text-muted-foreground",
994
+ className: "col-span-1 grid min-w-0 grid-cols-1 gap-x-2 gap-y-1 px-2 py-0.5 text-muted-foreground md:col-span-3 md:grid-cols-[200px_minmax(0,1fr)_minmax(0,1fr)]",
962
995
  children: [
963
996
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-xs truncate", title: op.path, children: op.path }),
964
997
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-xs break-all opacity-60", children: previewNode(op.value, 200) }),
@@ -972,10 +1005,10 @@ function SplitBody({
972
1005
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
973
1006
  "div",
974
1007
  {
975
- className: "col-span-3 px-2 py-1 rounded text-xs border-l-2 border-l-emerald-400/70 bg-emerald-500/5",
1008
+ className: "col-span-1 rounded border-l-2 border-l-status-success bg-status-success/5 px-2 py-1 text-xs md:col-span-3",
976
1009
  children: [
977
1010
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-mono text-xs text-muted-foreground mb-0.5", children: op.path }),
978
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "font-mono break-all text-emerald-300/90", children: [
1011
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "font-mono break-all text-status-success", children: [
979
1012
  "+ ",
980
1013
  previewNode(op.value, 400)
981
1014
  ] })
@@ -988,10 +1021,10 @@ function SplitBody({
988
1021
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
989
1022
  "div",
990
1023
  {
991
- className: "col-span-3 px-2 py-1 rounded text-xs border-l-2 border-l-rose-400/70 bg-rose-500/5",
1024
+ className: "col-span-1 rounded border-l-2 border-l-status-danger bg-status-danger/5 px-2 py-1 text-xs md:col-span-3",
992
1025
  children: [
993
1026
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-mono text-xs text-muted-foreground mb-0.5", children: op.path }),
994
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "font-mono break-all text-rose-300/90 line-through", children: [
1027
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "font-mono break-all text-status-danger line-through", children: [
995
1028
  "− ",
996
1029
  previewNode(op.value, 400)
997
1030
  ] })
@@ -1003,12 +1036,12 @@ function SplitBody({
1003
1036
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
1004
1037
  "div",
1005
1038
  {
1006
- className: "col-span-3 px-2 py-1 rounded text-xs border-l-2 border-l-amber-400/70 bg-amber-500/5",
1039
+ className: "col-span-1 rounded border-l-2 border-l-status-watch bg-status-watch/5 px-2 py-1 text-xs md:col-span-3",
1007
1040
  children: [
1008
1041
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-mono text-xs text-muted-foreground mb-1", children: op.path }),
1009
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-2 gap-2", children: [
1010
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-mono text-rose-300/90 break-all line-through", children: previewNode(op.left, 400) }),
1011
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-mono text-emerald-300/90 break-all", children: previewNode(op.right, 400) })
1042
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: [
1043
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-mono break-all text-status-danger line-through", children: previewNode(op.left, 400) }),
1044
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-mono break-all text-status-success", children: previewNode(op.right, 400) })
1012
1045
  ] })
1013
1046
  ]
1014
1047
  },
@@ -1018,5 +1051,7 @@ function SplitBody({
1018
1051
  ] });
1019
1052
  }
1020
1053
  export {
1054
+ COMPARE_RESPONSIVE_HEADER_CLASS_NAME,
1055
+ COMPARE_RESPONSIVE_SPLIT_CLASS_NAME,
1021
1056
  CompareDrawer
1022
1057
  };