@tonyclaw/agent-inspector 3.0.44 → 3.0.46

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 (347) hide show
  1. package/.output/{nitro.json → backend/nitro.json} +3 -3
  2. package/.output/backend-public/assets/index-D4LX-sw-.js +11 -0
  3. package/.output/cli.js +22707 -17099
  4. package/.output/server/_libs/extend.mjs +4 -8
  5. package/.output/server/_libs/jszip.mjs +9 -35
  6. package/.output/server/_libs/modelcontextprotocol__core.mjs +25 -25
  7. package/.output/server/_libs/modelcontextprotocol__server.mjs +2 -2
  8. package/.output/server/_libs/react-dom.mjs +2 -3
  9. package/.output/server/_libs/react.mjs +1 -27
  10. package/.output/server/_libs/tanstack__react-router.mjs +1 -329
  11. package/.output/server/_libs/tanstack__router-core.mjs +42 -100
  12. package/.output/server/_libs/use-sync-external-store.mjs +1 -64
  13. package/.output/server/_libs/ws.mjs +1 -1
  14. package/.output/server/_libs/zod.mjs +6 -6
  15. package/.output/server/_ssr/index.mjs +5 -4
  16. package/.output/server/_ssr/publicBasePathContext-IH2ilOfu.mjs +176 -0
  17. package/.output/server/_ssr/{router-DWcUFPR3.mjs → router-D18yUq36.mjs} +7877 -5597
  18. package/.output/server/_ssr/start-COQu_AgD.mjs +57 -0
  19. package/.output/server/_tanstack-start-manifest_v-DnbdNeun.mjs +4 -0
  20. package/.output/server/index.mjs +5 -145
  21. package/.output/{public/assets/CompareDrawer-DQHjxFO6.js → ui/assets/CompareDrawer-DAUuIJ6G.js} +1 -1
  22. package/.output/{public/assets/InspectorPet-D1A4505B.js → ui/assets/InspectorPet-BRBVjOWI.js} +1 -1
  23. package/.output/ui/assets/ProxyViewerContainer-D7Sq0ctc.js +59 -0
  24. package/.output/{public/assets/ReplayDialog-C5vmbecv.js → ui/assets/ReplayDialog-nDLsjOhs.js} +1 -1
  25. package/.output/{public/assets/RequestAnatomy-CPGNB8lk.js → ui/assets/RequestAnatomy-zd4BDgL0.js} +1 -1
  26. package/.output/ui/assets/ResponseView-AdIXGcSn.js +2 -0
  27. package/.output/ui/assets/StreamingChunkSequence-CesTz8He.js +1 -0
  28. package/.output/{public/assets/_sessionId-CDhRgzf6.js → ui/assets/_sessionId-BAfzrhSU.js} +1 -1
  29. package/.output/{public/assets/_sessionId-mw3aA8Bp.js → ui/assets/_sessionId-QnBomgPD.js} +1 -1
  30. package/.output/ui/assets/favicon-DYEkHSNl.svg +21 -0
  31. package/.output/{public/assets/index-B2eoeT-Z.js → ui/assets/index-BcsdxBAd.js} +1 -1
  32. package/.output/ui/assets/index-BvXp42al.css +1 -0
  33. package/.output/{public/assets/index-CX7_rf7o.js → ui/assets/index-D0rtCN9V.js} +1 -1
  34. package/.output/ui/assets/index-DHpwr08Z.js +73 -0
  35. package/.output/{public/assets/index-BfRhTvOd.js → ui/assets/index-dNuk2dsU.js} +1 -1
  36. package/.output/ui/assets/json-viewer-BvFHglMb.js +1 -0
  37. package/.output/{public/assets/jszip.min-C9rCFoU3.js → ui/assets/jszip.min-B5Z7gNZB.js} +1 -1
  38. package/.output/ui/index.html +229 -0
  39. package/.output/ui/runtime-config.js +2 -0
  40. package/.output/workers/logFinalizer.worker.js +983 -414
  41. package/.output/workers/sessionWorkerEntry.js +983 -414
  42. package/README.md +363 -35
  43. package/docs/instance-control.openapi.yaml +361 -0
  44. package/package.json +28 -5
  45. package/scripts/generate-theme-scales.mjs +3 -3
  46. package/src/{router.tsx → backend/router.tsx} +3 -15
  47. package/src/backend/routes/$.ts +26 -0
  48. package/src/backend/routes/__root.ts +4 -0
  49. package/src/backend/routes/api/-instances.ts +109 -0
  50. package/src/{routes → backend/routes}/api/alerts.summary.ts +3 -3
  51. package/src/{routes → backend/routes}/api/alerts.ts +4 -4
  52. package/src/{routes → backend/routes}/api/config.paths.ts +1 -1
  53. package/src/{routes → backend/routes}/api/config.ts +11 -2
  54. package/src/{routes → backend/routes}/api/ecosystem.packages.$packageId.help.ts +1 -1
  55. package/src/{routes → backend/routes}/api/ecosystem.packages.$packageId.install.ts +1 -1
  56. package/src/{routes → backend/routes}/api/ecosystem.packages.$packageId.runner-presets.ts +1 -1
  57. package/src/{routes → backend/routes}/api/ecosystem.packages.$packageId.upgrade.ts +1 -1
  58. package/src/{routes → backend/routes}/api/ecosystem.packages.ts +5 -1
  59. package/src/{routes → backend/routes}/api/ecosystem.recipes.$recipeId.run.ts +1 -1
  60. package/src/{routes → backend/routes}/api/ecosystem.tasks.$taskId.ts +1 -1
  61. package/src/{routes → backend/routes}/api/ecosystem.tasks.ts +1 -1
  62. package/src/{routes → backend/routes}/api/groups.$groupId.evidence.ts +2 -2
  63. package/src/{routes → backend/routes}/api/groups.$groupId.sessions.ts +2 -2
  64. package/src/{routes → backend/routes}/api/groups.$groupId.ts +2 -2
  65. package/src/{routes → backend/routes}/api/groups.ts +2 -2
  66. package/src/{routes → backend/routes}/api/health.ts +3 -3
  67. package/src/backend/routes/api/instances.$name.connection.ts +12 -0
  68. package/src/backend/routes/api/instances.$name.restart.ts +23 -0
  69. package/src/backend/routes/api/instances.$name.start.ts +18 -0
  70. package/src/backend/routes/api/instances.$name.stop.ts +23 -0
  71. package/src/backend/routes/api/instances.$name.ts +12 -0
  72. package/src/backend/routes/api/instances.ts +16 -0
  73. package/src/{routes → backend/routes}/api/knowledge.candidates.$candidateId.promote.ts +2 -2
  74. package/src/{routes → backend/routes}/api/knowledge.candidates.$candidateId.ts +2 -2
  75. package/src/{routes → backend/routes}/api/knowledge.candidates.ts +1 -1
  76. package/src/{routes → backend/routes}/api/knowledge.project-context.ts +2 -2
  77. package/src/{routes → backend/routes}/api/knowledge.search.ts +2 -2
  78. package/src/{routes → backend/routes}/api/knowledge.sessions.$sessionId.candidates.ts +3 -3
  79. package/src/{routes → backend/routes}/api/logs.$id.body.ts +6 -6
  80. package/src/{routes → backend/routes}/api/logs.$id.chunks.ts +5 -4
  81. package/src/{routes → backend/routes}/api/logs.$id.replay.ts +12 -11
  82. package/src/{routes → backend/routes}/api/logs.$id.ts +4 -3
  83. package/src/{routes → backend/routes}/api/logs.import.ts +3 -3
  84. package/src/{routes → backend/routes}/api/logs.stream.ts +11 -7
  85. package/src/{routes → backend/routes}/api/logs.ts +17 -9
  86. package/src/{routes → backend/routes}/api/mcp.ts +1 -1
  87. package/src/{routes → backend/routes}/api/models.ts +1 -1
  88. package/src/{routes → backend/routes}/api/pi-agent.ts +2 -2
  89. package/src/{routes → backend/routes}/api/providers.$providerId.model-metadata.ts +5 -5
  90. package/src/{routes → backend/routes}/api/providers.$providerId.test.log.ts +7 -7
  91. package/src/{routes → backend/routes}/api/providers.$providerId.ts +4 -4
  92. package/src/{routes → backend/routes}/api/providers.export.ts +1 -1
  93. package/src/{routes → backend/routes}/api/providers.import.ts +3 -3
  94. package/src/{routes → backend/routes}/api/providers.scan.ts +2 -2
  95. package/src/{routes → backend/routes}/api/providers.ts +9 -4
  96. package/src/{routes → backend/routes}/api/runs.$runId.evidence.ts +2 -2
  97. package/src/{routes → backend/routes}/api/runs.$runId.ts +2 -2
  98. package/src/{routes → backend/routes}/api/runs.ts +4 -4
  99. package/src/backend/routes/api/runtime.ts +46 -0
  100. package/src/{routes → backend/routes}/api/sessions.ts +3 -3
  101. package/src/{routes → backend/routes}/proxy/$.ts +1 -1
  102. package/src/{routes → backend/routes}/readyz.ts +1 -1
  103. package/src/backend/start.ts +10 -0
  104. package/src/cli/alias.ts +431 -0
  105. package/src/cli/doctor.ts +32 -9
  106. package/src/cli/instance.ts +1050 -0
  107. package/src/cli/instanceArgs.ts +285 -0
  108. package/src/cli/instanceControl.ts +181 -0
  109. package/src/cli/instanceModel.ts +267 -0
  110. package/src/cli/instanceRegistry.ts +731 -0
  111. package/src/cli/networkHints.ts +27 -14
  112. package/src/cli/onboard.ts +190 -35
  113. package/src/cli/onboardTarget.ts +228 -0
  114. package/src/cli/templates/codex-skill-onboard.ts +109 -31
  115. package/src/cli/templates/skill-onboard.ts +140 -70
  116. package/src/cli.ts +338 -77
  117. package/src/components/ProxyViewer.tsx +20 -10
  118. package/src/components/ProxyViewerContainer.tsx +12 -11
  119. package/src/components/pi-agent/PiAgentPanel.tsx +2 -2
  120. package/src/components/providers/ProviderCard.tsx +1 -1
  121. package/src/components/providers/ProviderTestResultsView.tsx +1 -1
  122. package/src/components/providers/SettingsDialog.tsx +160 -140
  123. package/src/components/proxy-viewer/ApplicationBar.tsx +2 -1
  124. package/src/components/proxy-viewer/LogEntry.tsx +1 -1
  125. package/src/components/proxy-viewer/log-formats/index.ts +1 -1
  126. package/src/contracts/index.ts +5 -0
  127. package/src/contracts/log.ts +33 -3
  128. package/src/knowledge/types.ts +3 -2
  129. package/src/lib/alertContract.ts +2 -2
  130. package/src/lib/apiClient.ts +30 -7
  131. package/src/lib/apiFormat.ts +29 -0
  132. package/src/lib/basePath.ts +31 -7
  133. package/src/lib/browserRuntimeContract.ts +124 -0
  134. package/src/lib/browserRuntimeResolver.ts +244 -0
  135. package/src/{proxy → lib}/claudeCodeStrip.ts +6 -7
  136. package/src/lib/codingAgentEndpoints.ts +54 -0
  137. package/src/lib/instanceContract.ts +236 -0
  138. package/src/lib/managedInstance.ts +104 -0
  139. package/src/lib/piAgentContract.ts +3 -2
  140. package/src/lib/publicBasePathContext.ts +137 -0
  141. package/src/lib/resourceLimits.ts +2 -0
  142. package/src/lib/runContract.ts +3 -3
  143. package/src/lib/sessionInfoContract.ts +3 -2
  144. package/src/mcp/instanceHandlers.ts +150 -0
  145. package/src/mcp/loopback.ts +16 -5
  146. package/src/mcp/mode.ts +25 -0
  147. package/src/mcp/server.ts +274 -39
  148. package/src/mcp/toolHandlers.ts +2 -2
  149. package/src/proxy/config.ts +25 -30
  150. package/src/proxy/dataDir.ts +43 -7
  151. package/src/proxy/ecosystemTasks.ts +161 -70
  152. package/src/proxy/formats/registry.ts +6 -21
  153. package/src/proxy/handler.ts +129 -29
  154. package/src/proxy/identityProxy.ts +1049 -50
  155. package/src/proxy/jsonlRecovery.ts +554 -0
  156. package/src/proxy/logFinalizer.ts +25 -10
  157. package/src/proxy/logImporter.ts +2 -1
  158. package/src/proxy/logIndex.ts +191 -95
  159. package/src/proxy/logger.ts +77 -14
  160. package/src/proxy/platformCommands.ts +41 -0
  161. package/src/proxy/privateDataPath.ts +310 -88
  162. package/src/proxy/rawStreamCapture.ts +194 -13
  163. package/src/proxy/runtimeAdmission.ts +5 -2
  164. package/src/proxy/runtimeHealth.ts +14 -1
  165. package/src/proxy/runtimeShutdown.ts +84 -2
  166. package/src/proxy/schemas.ts +7 -1
  167. package/src/proxy/sessionArchive.ts +78 -14
  168. package/src/proxy/sessionInfo.ts +5 -4
  169. package/src/proxy/sqliteLogIndex.ts +65 -2
  170. package/src/proxy/store.ts +141 -34
  171. package/src/proxy/uiAssetServer.ts +106 -0
  172. package/src/proxy/upstream.ts +29 -2
  173. package/src/ui/bootstrap.ts +167 -0
  174. package/src/ui/index.html +38 -0
  175. package/src/ui/logsStreamClient.ts +20 -0
  176. package/src/ui/main.tsx +13 -0
  177. package/src/ui/public/runtime-config.js +2 -0
  178. package/src/ui/router.tsx +13 -0
  179. package/src/ui/routes/__root.tsx +69 -0
  180. package/src/{routes → ui/routes}/index.tsx +2 -3
  181. package/src/{routes → ui/routes}/session/$sessionId.tsx +5 -11
  182. package/src/ui/runtimeDiscovery.ts +50 -0
  183. package/styles/globals.css +1 -0
  184. package/.output/public/assets/ProxyViewerContainer-BhpIgfBi.js +0 -126
  185. package/.output/public/assets/ResponseView-DUfrajCm.js +0 -2
  186. package/.output/public/assets/StreamingChunkSequence-nbeCQqOz.js +0 -1
  187. package/.output/public/assets/index-BWjeqxbk.css +0 -1
  188. package/.output/public/assets/index-C6qZwYlR.js +0 -70
  189. package/.output/public/assets/json-viewer-BLmF1sOZ.js +0 -1
  190. package/.output/server/_libs/@radix-ui/react-accessible-icon+[...].mjs +0 -1
  191. package/.output/server/_libs/@radix-ui/react-dismissable-layer+[...].mjs +0 -344
  192. package/.output/server/_libs/@radix-ui/react-navigation-menu+[...].mjs +0 -2
  193. package/.output/server/_libs/@radix-ui/react-one-time-password-field+[...].mjs +0 -2
  194. package/.output/server/_libs/@radix-ui/react-password-toggle-field+[...].mjs +0 -2
  195. package/.output/server/_libs/@radix-ui/react-use-callback-ref+[...].mjs +0 -11
  196. package/.output/server/_libs/@radix-ui/react-use-controllable-state+[...].mjs +0 -69
  197. package/.output/server/_libs/@radix-ui/react-use-effect-event+[...].mjs +0 -1
  198. package/.output/server/_libs/@radix-ui/react-use-is-hydrated+[...].mjs +0 -28
  199. package/.output/server/_libs/@radix-ui/react-use-layout-effect+[...].mjs +0 -6
  200. package/.output/server/_libs/@radix-ui/react-visually-hidden+[...].mjs +0 -34
  201. package/.output/server/_libs/aria-hidden.mjs +0 -122
  202. package/.output/server/_libs/bail.mjs +0 -8
  203. package/.output/server/_libs/character-entities.mjs +0 -2130
  204. package/.output/server/_libs/class-variance-authority.mjs +0 -44
  205. package/.output/server/_libs/clsx.mjs +0 -16
  206. package/.output/server/_libs/comma-separated-tokens.mjs +0 -10
  207. package/.output/server/_libs/decode-named-character-reference+[...].mjs +0 -8
  208. package/.output/server/_libs/dequal.mjs +0 -27
  209. package/.output/server/_libs/detect-node-es.mjs +0 -1
  210. package/.output/server/_libs/devlop.mjs +0 -8
  211. package/.output/server/_libs/diff.mjs +0 -320
  212. package/.output/server/_libs/estree-util-is-identifier-name.mjs +0 -11
  213. package/.output/server/_libs/floating-ui__core.mjs +0 -725
  214. package/.output/server/_libs/floating-ui__dom.mjs +0 -622
  215. package/.output/server/_libs/floating-ui__react-dom.mjs +0 -292
  216. package/.output/server/_libs/floating-ui__utils.mjs +0 -320
  217. package/.output/server/_libs/get-nonce.mjs +0 -9
  218. package/.output/server/_libs/hast-util-to-jsx-runtime.mjs +0 -388
  219. package/.output/server/_libs/hast-util-whitespace.mjs +0 -10
  220. package/.output/server/_libs/html-url-attributes.mjs +0 -26
  221. package/.output/server/_libs/inline-style-parser.mjs +0 -142
  222. package/.output/server/_libs/is-plain-obj.mjs +0 -10
  223. package/.output/server/_libs/lucide-react.mjs +0 -1027
  224. package/.output/server/_libs/mdast-util-from-markdown.mjs +0 -717
  225. package/.output/server/_libs/mdast-util-to-hast.mjs +0 -710
  226. package/.output/server/_libs/mdast-util-to-string.mjs +0 -38
  227. package/.output/server/_libs/micromark-core-commonmark.mjs +0 -2259
  228. package/.output/server/_libs/micromark-factory-destination.mjs +0 -94
  229. package/.output/server/_libs/micromark-factory-label.mjs +0 -63
  230. package/.output/server/_libs/micromark-factory-space.mjs +0 -24
  231. package/.output/server/_libs/micromark-factory-title.mjs +0 -65
  232. package/.output/server/_libs/micromark-factory-whitespace.mjs +0 -22
  233. package/.output/server/_libs/micromark-util-character.mjs +0 -44
  234. package/.output/server/_libs/micromark-util-chunked.mjs +0 -36
  235. package/.output/server/_libs/micromark-util-classify-character+[...].mjs +0 -12
  236. package/.output/server/_libs/micromark-util-combine-extensions+[...].mjs +0 -41
  237. package/.output/server/_libs/micromark-util-decode-numeric-character-reference+[...].mjs +0 -19
  238. package/.output/server/_libs/micromark-util-decode-string.mjs +0 -21
  239. package/.output/server/_libs/micromark-util-encode.mjs +0 -1
  240. package/.output/server/_libs/micromark-util-html-tag-name.mjs +0 -69
  241. package/.output/server/_libs/micromark-util-normalize-identifier+[...].mjs +0 -6
  242. package/.output/server/_libs/micromark-util-resolve-all.mjs +0 -15
  243. package/.output/server/_libs/micromark-util-sanitize-uri.mjs +0 -41
  244. package/.output/server/_libs/micromark-util-subtokenize.mjs +0 -346
  245. package/.output/server/_libs/micromark.mjs +0 -906
  246. package/.output/server/_libs/property-information.mjs +0 -1209
  247. package/.output/server/_libs/radix-ui.mjs +0 -1
  248. package/.output/server/_libs/radix-ui__number.mjs +0 -6
  249. package/.output/server/_libs/radix-ui__primitive.mjs +0 -11
  250. package/.output/server/_libs/radix-ui__react-accordion.mjs +0 -1
  251. package/.output/server/_libs/radix-ui__react-alert-dialog.mjs +0 -1
  252. package/.output/server/_libs/radix-ui__react-arrow.mjs +0 -23
  253. package/.output/server/_libs/radix-ui__react-aspect-ratio.mjs +0 -1
  254. package/.output/server/_libs/radix-ui__react-avatar.mjs +0 -1
  255. package/.output/server/_libs/radix-ui__react-checkbox.mjs +0 -1
  256. package/.output/server/_libs/radix-ui__react-collapsible.mjs +0 -144
  257. package/.output/server/_libs/radix-ui__react-collection.mjs +0 -69
  258. package/.output/server/_libs/radix-ui__react-compose-refs.mjs +0 -38
  259. package/.output/server/_libs/radix-ui__react-context-menu.mjs +0 -1
  260. package/.output/server/_libs/radix-ui__react-context.mjs +0 -64
  261. package/.output/server/_libs/radix-ui__react-dialog.mjs +0 -280
  262. package/.output/server/_libs/radix-ui__react-direction.mjs +0 -9
  263. package/.output/server/_libs/radix-ui__react-dropdown-menu.mjs +0 -1
  264. package/.output/server/_libs/radix-ui__react-focus-guards.mjs +0 -39
  265. package/.output/server/_libs/radix-ui__react-focus-scope.mjs +0 -210
  266. package/.output/server/_libs/radix-ui__react-form.mjs +0 -1
  267. package/.output/server/_libs/radix-ui__react-hover-card.mjs +0 -1
  268. package/.output/server/_libs/radix-ui__react-id.mjs +0 -14
  269. package/.output/server/_libs/radix-ui__react-label.mjs +0 -1
  270. package/.output/server/_libs/radix-ui__react-menu.mjs +0 -1
  271. package/.output/server/_libs/radix-ui__react-menubar.mjs +0 -1
  272. package/.output/server/_libs/radix-ui__react-popover.mjs +0 -1
  273. package/.output/server/_libs/radix-ui__react-popper.mjs +0 -340
  274. package/.output/server/_libs/radix-ui__react-portal.mjs +0 -16
  275. package/.output/server/_libs/radix-ui__react-presence.mjs +0 -173
  276. package/.output/server/_libs/radix-ui__react-primitive.mjs +0 -42
  277. package/.output/server/_libs/radix-ui__react-progress.mjs +0 -1
  278. package/.output/server/_libs/radix-ui__react-radio-group.mjs +0 -1
  279. package/.output/server/_libs/radix-ui__react-roving-focus.mjs +0 -235
  280. package/.output/server/_libs/radix-ui__react-scroll-area.mjs +0 -731
  281. package/.output/server/_libs/radix-ui__react-select.mjs +0 -1207
  282. package/.output/server/_libs/radix-ui__react-separator.mjs +0 -28
  283. package/.output/server/_libs/radix-ui__react-slider.mjs +0 -1
  284. package/.output/server/_libs/radix-ui__react-slot.mjs +0 -132
  285. package/.output/server/_libs/radix-ui__react-switch.mjs +0 -1
  286. package/.output/server/_libs/radix-ui__react-tabs.mjs +0 -194
  287. package/.output/server/_libs/radix-ui__react-toast.mjs +0 -2
  288. package/.output/server/_libs/radix-ui__react-toggle-group.mjs +0 -1
  289. package/.output/server/_libs/radix-ui__react-toggle.mjs +0 -1
  290. package/.output/server/_libs/radix-ui__react-toolbar.mjs +0 -1
  291. package/.output/server/_libs/radix-ui__react-tooltip.mjs +0 -498
  292. package/.output/server/_libs/radix-ui__react-use-previous.mjs +0 -14
  293. package/.output/server/_libs/radix-ui__react-use-size.mjs +0 -39
  294. package/.output/server/_libs/react-markdown.mjs +0 -235
  295. package/.output/server/_libs/react-remove-scroll-bar.mjs +0 -82
  296. package/.output/server/_libs/react-remove-scroll.mjs +0 -328
  297. package/.output/server/_libs/react-style-singleton.mjs +0 -69
  298. package/.output/server/_libs/remark-parse.mjs +0 -19
  299. package/.output/server/_libs/remark-rehype.mjs +0 -21
  300. package/.output/server/_libs/space-separated-tokens.mjs +0 -6
  301. package/.output/server/_libs/style-to-js.mjs +0 -72
  302. package/.output/server/_libs/style-to-object.mjs +0 -38
  303. package/.output/server/_libs/swr.mjs +0 -947
  304. package/.output/server/_libs/tailwind-merge.mjs +0 -3255
  305. package/.output/server/_libs/tanstack__react-virtual.mjs +0 -130
  306. package/.output/server/_libs/tanstack__virtual-core.mjs +0 -1319
  307. package/.output/server/_libs/three.mjs +0 -26016
  308. package/.output/server/_libs/trim-lines.mjs +0 -41
  309. package/.output/server/_libs/trough.mjs +0 -85
  310. package/.output/server/_libs/tslib.mjs +0 -1
  311. package/.output/server/_libs/ungap__structured-clone.mjs +0 -212
  312. package/.output/server/_libs/unified.mjs +0 -661
  313. package/.output/server/_libs/unist-util-is.mjs +0 -100
  314. package/.output/server/_libs/unist-util-position.mjs +0 -27
  315. package/.output/server/_libs/unist-util-stringify-position.mjs +0 -27
  316. package/.output/server/_libs/unist-util-visit-parents.mjs +0 -82
  317. package/.output/server/_libs/unist-util-visit.mjs +0 -24
  318. package/.output/server/_libs/use-callback-ref.mjs +0 -66
  319. package/.output/server/_libs/use-sidecar.mjs +0 -106
  320. package/.output/server/_libs/vfile-message.mjs +0 -138
  321. package/.output/server/_libs/vfile.mjs +0 -467
  322. package/.output/server/_sessionId-E_Dmopc-.mjs +0 -144
  323. package/.output/server/_sessionId-U54BAqdp.mjs +0 -82
  324. package/.output/server/_ssr/CompareDrawer-CksatPed.mjs +0 -1058
  325. package/.output/server/_ssr/InspectorPet-DNc4GQ7z.mjs +0 -936
  326. package/.output/server/_ssr/ProxyViewerContainer-B02Ey0p_.mjs +0 -17607
  327. package/.output/server/_ssr/ReplayDialog-DdMvHJF1.mjs +0 -723
  328. package/.output/server/_ssr/RequestAnatomy--vh2Z8__.mjs +0 -835
  329. package/.output/server/_ssr/ResponseView-Dhxc-cKC.mjs +0 -755
  330. package/.output/server/_ssr/StreamingChunkSequence-BG0EQmaD.mjs +0 -272
  331. package/.output/server/_ssr/index-D0At9nfd.mjs +0 -82
  332. package/.output/server/_ssr/index-lcfulIXa.mjs +0 -133
  333. package/.output/server/_ssr/json-viewer-My1J1_5R.mjs +0 -481
  334. package/.output/server/_ssr/start-HYkvq4Ni.mjs +0 -4
  335. package/.output/server/_tanstack-start-manifest_v-B2chR8ef.mjs +0 -4
  336. package/.output/server/node_modules/tslib/modules/index.js +0 -70
  337. package/.output/server/node_modules/tslib/modules/package.json +0 -3
  338. package/.output/server/node_modules/tslib/package.json +0 -47
  339. package/.output/server/node_modules/tslib/tslib.js +0 -484
  340. package/.output/server/package.json +0 -9
  341. package/src/routes/__root.tsx +0 -170
  342. /package/.output/{public → ui}/assets/agent-inspector-58K1_MsC.ico +0 -0
  343. /package/.output/{public → ui}/assets/alibaba-TTwafVwX.svg +0 -0
  344. /package/.output/{public → ui}/assets/minimax-BPMzvuL-.jpeg +0 -0
  345. /package/.output/{public → ui}/assets/qwen-mMn3f5ul.webp +0 -0
  346. /package/.output/{public → ui}/assets/zhipuai-BPNAnxo-.svg +0 -0
  347. /package/src/{routes → backend/routes}/livez.ts +0 -0
@@ -1,731 +0,0 @@
1
- import { r as reactExports, j as jsxRuntimeExports } from "./react.mjs";
2
- import { P as Primitive } from "./radix-ui__react-primitive.mjs";
3
- import { P as Presence } from "./radix-ui__react-presence.mjs";
4
- import { c as createContextScope } from "./radix-ui__react-context.mjs";
5
- import { u as useComposedRefs } from "./radix-ui__react-compose-refs.mjs";
6
- import { u as useCallbackRef } from "./@radix-ui/react-use-callback-ref+[...].mjs";
7
- import { u as useDirection } from "./radix-ui__react-direction.mjs";
8
- import { u as useLayoutEffect2 } from "./@radix-ui/react-use-layout-effect+[...].mjs";
9
- import { c as clamp } from "./radix-ui__number.mjs";
10
- import { c as composeEventHandlers } from "./radix-ui__primitive.mjs";
11
- function useStateMachine(initialState, machine) {
12
- return reactExports.useReducer((state, event) => {
13
- const nextState = machine[state][event];
14
- return nextState ?? state;
15
- }, initialState);
16
- }
17
- var SCROLL_AREA_NAME = "ScrollArea";
18
- var [createScrollAreaContext] = createContextScope(SCROLL_AREA_NAME);
19
- var [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext(SCROLL_AREA_NAME);
20
- var ScrollArea = reactExports.forwardRef(
21
- (props, forwardedRef) => {
22
- const {
23
- __scopeScrollArea,
24
- type = "hover",
25
- dir,
26
- scrollHideDelay = 600,
27
- ...scrollAreaProps
28
- } = props;
29
- const [scrollArea, setScrollArea] = reactExports.useState(null);
30
- const [viewport, setViewport] = reactExports.useState(null);
31
- const [content, setContent] = reactExports.useState(null);
32
- const [scrollbarX, setScrollbarX] = reactExports.useState(null);
33
- const [scrollbarY, setScrollbarY] = reactExports.useState(null);
34
- const [cornerWidth, setCornerWidth] = reactExports.useState(0);
35
- const [cornerHeight, setCornerHeight] = reactExports.useState(0);
36
- const [scrollbarXEnabled, setScrollbarXEnabled] = reactExports.useState(false);
37
- const [scrollbarYEnabled, setScrollbarYEnabled] = reactExports.useState(false);
38
- const composedRefs = useComposedRefs(forwardedRef, setScrollArea);
39
- const direction = useDirection(dir);
40
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
41
- ScrollAreaProvider,
42
- {
43
- scope: __scopeScrollArea,
44
- type,
45
- dir: direction,
46
- scrollHideDelay,
47
- scrollArea,
48
- viewport,
49
- onViewportChange: setViewport,
50
- content,
51
- onContentChange: setContent,
52
- scrollbarX,
53
- onScrollbarXChange: setScrollbarX,
54
- scrollbarXEnabled,
55
- onScrollbarXEnabledChange: setScrollbarXEnabled,
56
- scrollbarY,
57
- onScrollbarYChange: setScrollbarY,
58
- scrollbarYEnabled,
59
- onScrollbarYEnabledChange: setScrollbarYEnabled,
60
- onCornerWidthChange: setCornerWidth,
61
- onCornerHeightChange: setCornerHeight,
62
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
63
- Primitive.div,
64
- {
65
- dir: direction,
66
- ...scrollAreaProps,
67
- ref: composedRefs,
68
- style: {
69
- position: "relative",
70
- // Pass corner sizes as CSS vars to reduce re-renders of context consumers
71
- "--radix-scroll-area-corner-width": cornerWidth + "px",
72
- "--radix-scroll-area-corner-height": cornerHeight + "px",
73
- ...props.style
74
- }
75
- }
76
- )
77
- }
78
- );
79
- }
80
- );
81
- ScrollArea.displayName = SCROLL_AREA_NAME;
82
- var VIEWPORT_NAME = "ScrollAreaViewport";
83
- var ScrollAreaViewport = reactExports.forwardRef(
84
- (props, forwardedRef) => {
85
- const { __scopeScrollArea, children, nonce, ...viewportProps } = props;
86
- const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);
87
- const ref = reactExports.useRef(null);
88
- const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);
89
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
90
- /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollAreaViewportStyle, { nonce }),
91
- /* @__PURE__ */ jsxRuntimeExports.jsx(
92
- Primitive.div,
93
- {
94
- "data-radix-scroll-area-viewport": "",
95
- ...viewportProps,
96
- ref: composedRefs,
97
- style: {
98
- /**
99
- * We don't support `visible` because the intention is to have at least one scrollbar
100
- * if this component is used and `visible` will behave like `auto` in that case
101
- * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow#description
102
- *
103
- * We don't handle `auto` because the intention is for the native implementation
104
- * to be hidden if using this component. We just want to ensure the node is scrollable
105
- * so could have used either `scroll` or `auto` here. We picked `scroll` to prevent
106
- * the browser from having to work out whether to render native scrollbars or not,
107
- * we tell it to with the intention of hiding them in CSS.
108
- */
109
- overflowX: context.scrollbarXEnabled ? "scroll" : "hidden",
110
- overflowY: context.scrollbarYEnabled ? "scroll" : "hidden",
111
- ...props.style
112
- },
113
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: context.onContentChange, style: { minWidth: "100%", display: "table" }, children })
114
- }
115
- )
116
- ] });
117
- }
118
- );
119
- ScrollAreaViewport.displayName = VIEWPORT_NAME;
120
- var ScrollAreaViewportStyle = reactExports.memo(
121
- ({ nonce }) => {
122
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
123
- "style",
124
- {
125
- dangerouslySetInnerHTML: {
126
- __html: `[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`
127
- },
128
- nonce
129
- }
130
- );
131
- },
132
- (prevProps, nextProps) => prevProps.nonce === nextProps.nonce
133
- );
134
- var SCROLLBAR_NAME = "ScrollAreaScrollbar";
135
- var ScrollAreaScrollbar = reactExports.forwardRef(
136
- (props, forwardedRef) => {
137
- const { forceMount, ...scrollbarProps } = props;
138
- const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
139
- const { onScrollbarXEnabledChange, onScrollbarYEnabledChange } = context;
140
- const isHorizontal = props.orientation === "horizontal";
141
- reactExports.useEffect(() => {
142
- isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);
143
- return () => {
144
- isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);
145
- };
146
- }, [isHorizontal, onScrollbarXEnabledChange, onScrollbarYEnabledChange]);
147
- return context.type === "hover" ? /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollAreaScrollbarHover, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === "scroll" ? /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollAreaScrollbarScroll, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === "auto" ? /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollAreaScrollbarAuto, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === "always" ? /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollAreaScrollbarVisible, { ...scrollbarProps, ref: forwardedRef, "data-state": "visible" }) : null;
148
- }
149
- );
150
- ScrollAreaScrollbar.displayName = SCROLLBAR_NAME;
151
- var ScrollAreaScrollbarHover = reactExports.forwardRef((props, forwardedRef) => {
152
- const { forceMount, ...scrollbarProps } = props;
153
- const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
154
- const [visible, setVisible] = reactExports.useState(false);
155
- reactExports.useEffect(() => {
156
- const scrollArea = context.scrollArea;
157
- let hideTimer = 0;
158
- if (scrollArea) {
159
- const handlePointerEnter = () => {
160
- window.clearTimeout(hideTimer);
161
- setVisible(true);
162
- };
163
- const handlePointerLeave = () => {
164
- hideTimer = window.setTimeout(() => setVisible(false), context.scrollHideDelay);
165
- };
166
- scrollArea.addEventListener("pointerenter", handlePointerEnter);
167
- scrollArea.addEventListener("pointerleave", handlePointerLeave);
168
- return () => {
169
- window.clearTimeout(hideTimer);
170
- scrollArea.removeEventListener("pointerenter", handlePointerEnter);
171
- scrollArea.removeEventListener("pointerleave", handlePointerLeave);
172
- };
173
- }
174
- }, [context.scrollArea, context.scrollHideDelay]);
175
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Presence, { present: forceMount || visible, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
176
- ScrollAreaScrollbarAuto,
177
- {
178
- "data-state": visible ? "visible" : "hidden",
179
- ...scrollbarProps,
180
- ref: forwardedRef
181
- }
182
- ) });
183
- });
184
- var ScrollAreaScrollbarScroll = reactExports.forwardRef((props, forwardedRef) => {
185
- const { forceMount, ...scrollbarProps } = props;
186
- const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
187
- const isHorizontal = props.orientation === "horizontal";
188
- const debounceScrollEnd = useDebounceCallback(() => send("SCROLL_END"), 100);
189
- const [state, send] = useStateMachine("hidden", {
190
- hidden: {
191
- SCROLL: "scrolling"
192
- },
193
- scrolling: {
194
- SCROLL_END: "idle",
195
- POINTER_ENTER: "interacting"
196
- },
197
- interacting: {
198
- SCROLL: "interacting",
199
- POINTER_LEAVE: "idle"
200
- },
201
- idle: {
202
- HIDE: "hidden",
203
- SCROLL: "scrolling",
204
- POINTER_ENTER: "interacting"
205
- }
206
- });
207
- reactExports.useEffect(() => {
208
- if (state === "idle") {
209
- const hideTimer = window.setTimeout(() => send("HIDE"), context.scrollHideDelay);
210
- return () => window.clearTimeout(hideTimer);
211
- }
212
- }, [state, context.scrollHideDelay, send]);
213
- reactExports.useEffect(() => {
214
- const viewport = context.viewport;
215
- const scrollDirection = isHorizontal ? "scrollLeft" : "scrollTop";
216
- if (viewport) {
217
- let prevScrollPos = viewport[scrollDirection];
218
- const handleScroll = () => {
219
- const scrollPos = viewport[scrollDirection];
220
- const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;
221
- if (hasScrollInDirectionChanged) {
222
- send("SCROLL");
223
- debounceScrollEnd();
224
- }
225
- prevScrollPos = scrollPos;
226
- };
227
- viewport.addEventListener("scroll", handleScroll);
228
- return () => viewport.removeEventListener("scroll", handleScroll);
229
- }
230
- }, [context.viewport, isHorizontal, send, debounceScrollEnd]);
231
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Presence, { present: forceMount || state !== "hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
232
- ScrollAreaScrollbarVisible,
233
- {
234
- "data-state": state === "hidden" ? "hidden" : "visible",
235
- ...scrollbarProps,
236
- ref: forwardedRef,
237
- onPointerEnter: composeEventHandlers(props.onPointerEnter, () => send("POINTER_ENTER")),
238
- onPointerLeave: composeEventHandlers(props.onPointerLeave, () => send("POINTER_LEAVE"))
239
- }
240
- ) });
241
- });
242
- var ScrollAreaScrollbarAuto = reactExports.forwardRef((props, forwardedRef) => {
243
- const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
244
- const { forceMount, ...scrollbarProps } = props;
245
- const [visible, setVisible] = reactExports.useState(false);
246
- const isHorizontal = props.orientation === "horizontal";
247
- const handleResize = useDebounceCallback(() => {
248
- if (context.viewport) {
249
- const isOverflowX = context.viewport.offsetWidth < context.viewport.scrollWidth;
250
- const isOverflowY = context.viewport.offsetHeight < context.viewport.scrollHeight;
251
- setVisible(isHorizontal ? isOverflowX : isOverflowY);
252
- }
253
- }, 10);
254
- useResizeObserver(context.viewport, handleResize);
255
- useResizeObserver(context.content, handleResize);
256
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Presence, { present: forceMount || visible, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
257
- ScrollAreaScrollbarVisible,
258
- {
259
- "data-state": visible ? "visible" : "hidden",
260
- ...scrollbarProps,
261
- ref: forwardedRef
262
- }
263
- ) });
264
- });
265
- var ScrollAreaScrollbarVisible = reactExports.forwardRef((props, forwardedRef) => {
266
- const { orientation = "vertical", ...scrollbarProps } = props;
267
- const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
268
- const thumbRef = reactExports.useRef(null);
269
- const pointerOffsetRef = reactExports.useRef(0);
270
- const [sizes, setSizes] = reactExports.useState({
271
- content: 0,
272
- viewport: 0,
273
- scrollbar: { size: 0, paddingStart: 0, paddingEnd: 0 }
274
- });
275
- const thumbRatio = getThumbRatio(sizes.viewport, sizes.content);
276
- const commonProps = {
277
- ...scrollbarProps,
278
- sizes,
279
- onSizesChange: setSizes,
280
- hasThumb: Boolean(thumbRatio > 0 && thumbRatio < 1),
281
- onThumbChange: (thumb) => thumbRef.current = thumb,
282
- onThumbPointerUp: () => pointerOffsetRef.current = 0,
283
- onThumbPointerDown: (pointerPos) => pointerOffsetRef.current = pointerPos
284
- };
285
- function getScrollPosition(pointerPos, dir) {
286
- return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);
287
- }
288
- if (orientation === "horizontal") {
289
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
290
- ScrollAreaScrollbarX,
291
- {
292
- ...commonProps,
293
- ref: forwardedRef,
294
- onThumbPositionChange: () => {
295
- if (context.viewport && thumbRef.current) {
296
- const scrollPos = context.viewport.scrollLeft;
297
- const offset = getThumbOffsetFromScroll(scrollPos, sizes, context.dir);
298
- thumbRef.current.style.transform = `translate3d(${offset}px, 0, 0)`;
299
- }
300
- },
301
- onWheelScroll: (scrollPos) => {
302
- if (context.viewport) context.viewport.scrollLeft = scrollPos;
303
- },
304
- onDragScroll: (pointerPos) => {
305
- if (context.viewport) {
306
- context.viewport.scrollLeft = getScrollPosition(pointerPos, context.dir);
307
- }
308
- }
309
- }
310
- );
311
- }
312
- if (orientation === "vertical") {
313
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
314
- ScrollAreaScrollbarY,
315
- {
316
- ...commonProps,
317
- ref: forwardedRef,
318
- onThumbPositionChange: () => {
319
- if (context.viewport && thumbRef.current) {
320
- const scrollPos = context.viewport.scrollTop;
321
- const offset = getThumbOffsetFromScroll(scrollPos, sizes);
322
- thumbRef.current.style.transform = `translate3d(0, ${offset}px, 0)`;
323
- }
324
- },
325
- onWheelScroll: (scrollPos) => {
326
- if (context.viewport) context.viewport.scrollTop = scrollPos;
327
- },
328
- onDragScroll: (pointerPos) => {
329
- if (context.viewport) context.viewport.scrollTop = getScrollPosition(pointerPos);
330
- }
331
- }
332
- );
333
- }
334
- return null;
335
- });
336
- var ScrollAreaScrollbarX = reactExports.forwardRef((props, forwardedRef) => {
337
- const { sizes, onSizesChange, ...scrollbarProps } = props;
338
- const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
339
- const [computedStyle, setComputedStyle] = reactExports.useState();
340
- const ref = reactExports.useRef(null);
341
- const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarXChange);
342
- reactExports.useEffect(() => {
343
- if (ref.current) setComputedStyle(getComputedStyle(ref.current));
344
- }, [ref]);
345
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
346
- ScrollAreaScrollbarImpl,
347
- {
348
- "data-orientation": "horizontal",
349
- ...scrollbarProps,
350
- ref: composeRefs,
351
- sizes,
352
- style: {
353
- bottom: 0,
354
- left: context.dir === "rtl" ? "var(--radix-scroll-area-corner-width)" : 0,
355
- right: context.dir === "ltr" ? "var(--radix-scroll-area-corner-width)" : 0,
356
- "--radix-scroll-area-thumb-width": getThumbSize(sizes) + "px",
357
- ...props.style
358
- },
359
- onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.x),
360
- onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.x),
361
- onWheelScroll: (event, maxScrollPos) => {
362
- if (context.viewport) {
363
- const scrollPos = context.viewport.scrollLeft + event.deltaX;
364
- props.onWheelScroll(scrollPos);
365
- if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {
366
- event.preventDefault();
367
- }
368
- }
369
- },
370
- onResize: () => {
371
- if (ref.current && context.viewport && computedStyle) {
372
- onSizesChange({
373
- content: context.viewport.scrollWidth,
374
- viewport: context.viewport.offsetWidth,
375
- scrollbar: {
376
- size: ref.current.clientWidth,
377
- paddingStart: toInt(computedStyle.paddingLeft),
378
- paddingEnd: toInt(computedStyle.paddingRight)
379
- }
380
- });
381
- }
382
- }
383
- }
384
- );
385
- });
386
- var ScrollAreaScrollbarY = reactExports.forwardRef((props, forwardedRef) => {
387
- const { sizes, onSizesChange, ...scrollbarProps } = props;
388
- const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
389
- const [computedStyle, setComputedStyle] = reactExports.useState();
390
- const ref = reactExports.useRef(null);
391
- const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarYChange);
392
- reactExports.useEffect(() => {
393
- if (ref.current) setComputedStyle(getComputedStyle(ref.current));
394
- }, [ref]);
395
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
396
- ScrollAreaScrollbarImpl,
397
- {
398
- "data-orientation": "vertical",
399
- ...scrollbarProps,
400
- ref: composeRefs,
401
- sizes,
402
- style: {
403
- top: 0,
404
- right: context.dir === "ltr" ? 0 : void 0,
405
- left: context.dir === "rtl" ? 0 : void 0,
406
- bottom: "var(--radix-scroll-area-corner-height)",
407
- "--radix-scroll-area-thumb-height": getThumbSize(sizes) + "px",
408
- ...props.style
409
- },
410
- onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.y),
411
- onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.y),
412
- onWheelScroll: (event, maxScrollPos) => {
413
- if (context.viewport) {
414
- const scrollPos = context.viewport.scrollTop + event.deltaY;
415
- props.onWheelScroll(scrollPos);
416
- if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {
417
- event.preventDefault();
418
- }
419
- }
420
- },
421
- onResize: () => {
422
- if (ref.current && context.viewport && computedStyle) {
423
- onSizesChange({
424
- content: context.viewport.scrollHeight,
425
- viewport: context.viewport.offsetHeight,
426
- scrollbar: {
427
- size: ref.current.clientHeight,
428
- paddingStart: toInt(computedStyle.paddingTop),
429
- paddingEnd: toInt(computedStyle.paddingBottom)
430
- }
431
- });
432
- }
433
- }
434
- }
435
- );
436
- });
437
- var [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME);
438
- var ScrollAreaScrollbarImpl = reactExports.forwardRef((props, forwardedRef) => {
439
- const {
440
- __scopeScrollArea,
441
- sizes,
442
- hasThumb,
443
- onThumbChange,
444
- onThumbPointerUp,
445
- onThumbPointerDown,
446
- onThumbPositionChange,
447
- onDragScroll,
448
- onWheelScroll,
449
- onResize,
450
- ...scrollbarProps
451
- } = props;
452
- const context = useScrollAreaContext(SCROLLBAR_NAME, __scopeScrollArea);
453
- const [scrollbar, setScrollbar] = reactExports.useState(null);
454
- const composeRefs = useComposedRefs(forwardedRef, setScrollbar);
455
- const rectRef = reactExports.useRef(null);
456
- const prevWebkitUserSelectRef = reactExports.useRef("");
457
- const viewport = context.viewport;
458
- const maxScrollPos = sizes.content - sizes.viewport;
459
- const handleWheelScroll = useCallbackRef(onWheelScroll);
460
- const handleThumbPositionChange = useCallbackRef(onThumbPositionChange);
461
- const handleResize = useDebounceCallback(onResize, 10);
462
- function handleDragScroll(event) {
463
- if (rectRef.current) {
464
- const x = event.clientX - rectRef.current.left;
465
- const y = event.clientY - rectRef.current.top;
466
- onDragScroll({ x, y });
467
- }
468
- }
469
- reactExports.useEffect(() => {
470
- const handleWheel = (event) => {
471
- const element = event.target;
472
- const isScrollbarWheel = scrollbar?.contains(element);
473
- if (isScrollbarWheel) handleWheelScroll(event, maxScrollPos);
474
- };
475
- document.addEventListener("wheel", handleWheel, { passive: false });
476
- return () => document.removeEventListener("wheel", handleWheel, { passive: false });
477
- }, [viewport, scrollbar, maxScrollPos, handleWheelScroll]);
478
- reactExports.useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);
479
- useResizeObserver(scrollbar, handleResize);
480
- useResizeObserver(context.content, handleResize);
481
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
482
- ScrollbarProvider,
483
- {
484
- scope: __scopeScrollArea,
485
- scrollbar,
486
- hasThumb,
487
- onThumbChange: useCallbackRef(onThumbChange),
488
- onThumbPointerUp: useCallbackRef(onThumbPointerUp),
489
- onThumbPositionChange: handleThumbPositionChange,
490
- onThumbPointerDown: useCallbackRef(onThumbPointerDown),
491
- children: /* @__PURE__ */ jsxRuntimeExports.jsx(
492
- Primitive.div,
493
- {
494
- ...scrollbarProps,
495
- ref: composeRefs,
496
- style: { position: "absolute", ...scrollbarProps.style },
497
- onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {
498
- const mainPointer = 0;
499
- if (event.button === mainPointer) {
500
- const element = event.target;
501
- element.setPointerCapture(event.pointerId);
502
- rectRef.current = scrollbar.getBoundingClientRect();
503
- prevWebkitUserSelectRef.current = document.body.style.webkitUserSelect;
504
- document.body.style.webkitUserSelect = "none";
505
- if (context.viewport) context.viewport.style.scrollBehavior = "auto";
506
- handleDragScroll(event);
507
- }
508
- }),
509
- onPointerMove: composeEventHandlers(props.onPointerMove, handleDragScroll),
510
- onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {
511
- const element = event.target;
512
- if (element.hasPointerCapture(event.pointerId)) {
513
- element.releasePointerCapture(event.pointerId);
514
- }
515
- document.body.style.webkitUserSelect = prevWebkitUserSelectRef.current;
516
- if (context.viewport) context.viewport.style.scrollBehavior = "";
517
- rectRef.current = null;
518
- })
519
- }
520
- )
521
- }
522
- );
523
- });
524
- var THUMB_NAME = "ScrollAreaThumb";
525
- var ScrollAreaThumb = reactExports.forwardRef(
526
- (props, forwardedRef) => {
527
- const { forceMount, ...thumbProps } = props;
528
- const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);
529
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Presence, { present: forceMount || scrollbarContext.hasThumb, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollAreaThumbImpl, { ref: forwardedRef, ...thumbProps }) });
530
- }
531
- );
532
- var ScrollAreaThumbImpl = reactExports.forwardRef(
533
- (props, forwardedRef) => {
534
- const { __scopeScrollArea, style, ...thumbProps } = props;
535
- const scrollAreaContext = useScrollAreaContext(THUMB_NAME, __scopeScrollArea);
536
- const scrollbarContext = useScrollbarContext(THUMB_NAME, __scopeScrollArea);
537
- const { onThumbPositionChange } = scrollbarContext;
538
- const composedRef = useComposedRefs(forwardedRef, scrollbarContext.onThumbChange);
539
- const removeUnlinkedScrollListenerRef = reactExports.useRef(void 0);
540
- const debounceScrollEnd = useDebounceCallback(() => {
541
- if (removeUnlinkedScrollListenerRef.current) {
542
- removeUnlinkedScrollListenerRef.current();
543
- removeUnlinkedScrollListenerRef.current = void 0;
544
- }
545
- }, 100);
546
- reactExports.useEffect(() => {
547
- const viewport = scrollAreaContext.viewport;
548
- if (viewport) {
549
- const handleScroll = () => {
550
- debounceScrollEnd();
551
- if (!removeUnlinkedScrollListenerRef.current) {
552
- const listener = addUnlinkedScrollListener(viewport, onThumbPositionChange);
553
- removeUnlinkedScrollListenerRef.current = listener;
554
- onThumbPositionChange();
555
- }
556
- };
557
- onThumbPositionChange();
558
- viewport.addEventListener("scroll", handleScroll);
559
- return () => viewport.removeEventListener("scroll", handleScroll);
560
- }
561
- }, [scrollAreaContext.viewport, debounceScrollEnd, onThumbPositionChange]);
562
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
563
- Primitive.div,
564
- {
565
- "data-state": scrollbarContext.hasThumb ? "visible" : "hidden",
566
- ...thumbProps,
567
- ref: composedRef,
568
- style: {
569
- width: "var(--radix-scroll-area-thumb-width)",
570
- height: "var(--radix-scroll-area-thumb-height)",
571
- ...style
572
- },
573
- onPointerDownCapture: composeEventHandlers(props.onPointerDownCapture, (event) => {
574
- const thumb = event.target;
575
- const thumbRect = thumb.getBoundingClientRect();
576
- const x = event.clientX - thumbRect.left;
577
- const y = event.clientY - thumbRect.top;
578
- scrollbarContext.onThumbPointerDown({ x, y });
579
- }),
580
- onPointerUp: composeEventHandlers(props.onPointerUp, scrollbarContext.onThumbPointerUp)
581
- }
582
- );
583
- }
584
- );
585
- ScrollAreaThumb.displayName = THUMB_NAME;
586
- var CORNER_NAME = "ScrollAreaCorner";
587
- var ScrollAreaCorner = reactExports.forwardRef(
588
- (props, forwardedRef) => {
589
- const context = useScrollAreaContext(CORNER_NAME, props.__scopeScrollArea);
590
- const hasBothScrollbarsVisible = Boolean(context.scrollbarX && context.scrollbarY);
591
- const hasCorner = context.type !== "scroll" && hasBothScrollbarsVisible;
592
- return hasCorner ? /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollAreaCornerImpl, { ...props, ref: forwardedRef }) : null;
593
- }
594
- );
595
- ScrollAreaCorner.displayName = CORNER_NAME;
596
- var ScrollAreaCornerImpl = reactExports.forwardRef((props, forwardedRef) => {
597
- const { __scopeScrollArea, ...cornerProps } = props;
598
- const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);
599
- const [width, setWidth] = reactExports.useState(0);
600
- const [height, setHeight] = reactExports.useState(0);
601
- const hasSize = Boolean(width && height);
602
- const { onCornerWidthChange, onCornerHeightChange } = context;
603
- useResizeObserver(context.scrollbarX, () => {
604
- const height2 = context.scrollbarX?.offsetHeight || 0;
605
- context.onCornerHeightChange(height2);
606
- setHeight(height2);
607
- });
608
- useResizeObserver(context.scrollbarY, () => {
609
- const width2 = context.scrollbarY?.offsetWidth || 0;
610
- context.onCornerWidthChange(width2);
611
- setWidth(width2);
612
- });
613
- reactExports.useEffect(() => {
614
- return () => {
615
- onCornerWidthChange(0);
616
- onCornerHeightChange(0);
617
- };
618
- }, [onCornerWidthChange, onCornerHeightChange]);
619
- return hasSize ? /* @__PURE__ */ jsxRuntimeExports.jsx(
620
- Primitive.div,
621
- {
622
- ...cornerProps,
623
- ref: forwardedRef,
624
- style: {
625
- width,
626
- height,
627
- position: "absolute",
628
- right: context.dir === "ltr" ? 0 : void 0,
629
- left: context.dir === "rtl" ? 0 : void 0,
630
- bottom: 0,
631
- ...props.style
632
- }
633
- }
634
- ) : null;
635
- });
636
- function toInt(value) {
637
- return value ? parseInt(value, 10) : 0;
638
- }
639
- function getThumbRatio(viewportSize, contentSize) {
640
- const ratio = viewportSize / contentSize;
641
- return isNaN(ratio) ? 0 : ratio;
642
- }
643
- function getThumbSize(sizes) {
644
- const ratio = getThumbRatio(sizes.viewport, sizes.content);
645
- const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;
646
- const thumbSize = (sizes.scrollbar.size - scrollbarPadding) * ratio;
647
- return Math.max(thumbSize, 18);
648
- }
649
- function getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir = "ltr") {
650
- const thumbSizePx = getThumbSize(sizes);
651
- const thumbCenter = thumbSizePx / 2;
652
- const offset = pointerOffset || thumbCenter;
653
- const thumbOffsetFromEnd = thumbSizePx - offset;
654
- const minPointerPos = sizes.scrollbar.paddingStart + offset;
655
- const maxPointerPos = sizes.scrollbar.size - sizes.scrollbar.paddingEnd - thumbOffsetFromEnd;
656
- const maxScrollPos = sizes.content - sizes.viewport;
657
- const scrollRange = dir === "ltr" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];
658
- const interpolate = linearScale([minPointerPos, maxPointerPos], scrollRange);
659
- return interpolate(pointerPos);
660
- }
661
- function getThumbOffsetFromScroll(scrollPos, sizes, dir = "ltr") {
662
- const thumbSizePx = getThumbSize(sizes);
663
- const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;
664
- const scrollbar = sizes.scrollbar.size - scrollbarPadding;
665
- const maxScrollPos = sizes.content - sizes.viewport;
666
- const maxThumbPos = scrollbar - thumbSizePx;
667
- const scrollClampRange = dir === "ltr" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];
668
- const scrollWithoutMomentum = clamp(scrollPos, scrollClampRange);
669
- const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);
670
- return interpolate(scrollWithoutMomentum);
671
- }
672
- function linearScale(input, output) {
673
- return (value) => {
674
- if (input[0] === input[1] || output[0] === output[1]) return output[0];
675
- const ratio = (output[1] - output[0]) / (input[1] - input[0]);
676
- return output[0] + ratio * (value - input[0]);
677
- };
678
- }
679
- function isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {
680
- return scrollPos > 0 && scrollPos < maxScrollPos;
681
- }
682
- var addUnlinkedScrollListener = (node, handler = () => {
683
- }) => {
684
- let prevPosition = { left: node.scrollLeft, top: node.scrollTop };
685
- let rAF = 0;
686
- (function loop() {
687
- const position = { left: node.scrollLeft, top: node.scrollTop };
688
- const isHorizontalScroll = prevPosition.left !== position.left;
689
- const isVerticalScroll = prevPosition.top !== position.top;
690
- if (isHorizontalScroll || isVerticalScroll) handler();
691
- prevPosition = position;
692
- rAF = window.requestAnimationFrame(loop);
693
- })();
694
- return () => window.cancelAnimationFrame(rAF);
695
- };
696
- function useDebounceCallback(callback, delay) {
697
- const handleCallback = useCallbackRef(callback);
698
- const debounceTimerRef = reactExports.useRef(0);
699
- reactExports.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);
700
- return reactExports.useCallback(() => {
701
- window.clearTimeout(debounceTimerRef.current);
702
- debounceTimerRef.current = window.setTimeout(handleCallback, delay);
703
- }, [handleCallback, delay]);
704
- }
705
- function useResizeObserver(element, onResize) {
706
- const handleResize = useCallbackRef(onResize);
707
- useLayoutEffect2(() => {
708
- let rAF = 0;
709
- if (element) {
710
- const resizeObserver = new ResizeObserver(() => {
711
- cancelAnimationFrame(rAF);
712
- rAF = window.requestAnimationFrame(handleResize);
713
- });
714
- resizeObserver.observe(element);
715
- return () => {
716
- window.cancelAnimationFrame(rAF);
717
- resizeObserver.unobserve(element);
718
- };
719
- }
720
- }, [element, handleResize]);
721
- }
722
- var Root = ScrollArea;
723
- var Viewport = ScrollAreaViewport;
724
- var Corner = ScrollAreaCorner;
725
- export {
726
- Corner as C,
727
- Root as R,
728
- ScrollAreaScrollbar as S,
729
- Viewport as V,
730
- ScrollAreaThumb as a
731
- };