@tonyclaw/agent-inspector 2.0.0

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 (400) hide show
  1. package/.output/cli.js +1611 -0
  2. package/.output/nitro.json +17 -0
  3. package/.output/public/assets/CompareDrawer-CU5ZrWcL.js +1 -0
  4. package/.output/public/assets/ProxyViewerContainer-pEBqVp1d.js +101 -0
  5. package/.output/public/assets/ReplayDialog-F58yNg5j.js +1 -0
  6. package/.output/public/assets/RequestAnatomy-C9lT0qE_.js +1 -0
  7. package/.output/public/assets/ResponseView-DHJq6bnz.js +1 -0
  8. package/.output/public/assets/StreamingChunkSequence-BTgfpFUT.js +1 -0
  9. package/.output/public/assets/_sessionId-DsNRbnNm.js +1 -0
  10. package/.output/public/assets/alibaba-TTwafVwX.svg +1 -0
  11. package/.output/public/assets/index-CpWG2hFn.css +1 -0
  12. package/.output/public/assets/index-DmBV8Gve.js +1 -0
  13. package/.output/public/assets/json-viewer-CZVYLR8j.js +14 -0
  14. package/.output/public/assets/main-DHs7FBK3.js +18 -0
  15. package/.output/public/assets/minimax-BPMzvuL-.jpeg +0 -0
  16. package/.output/public/assets/qwen-CONDcHqt.png +0 -0
  17. package/.output/public/assets/zhipuai-BPNAnxo-.svg +219 -0
  18. package/.output/server/_chunks/ssr-renderer.mjs +22 -0
  19. package/.output/server/_libs/@radix-ui/react-accessible-icon+[...].mjs +1 -0
  20. package/.output/server/_libs/@radix-ui/react-dismissable-layer+[...].mjs +210 -0
  21. package/.output/server/_libs/@radix-ui/react-navigation-menu+[...].mjs +2 -0
  22. package/.output/server/_libs/@radix-ui/react-one-time-password-field+[...].mjs +2 -0
  23. package/.output/server/_libs/@radix-ui/react-password-toggle-field+[...].mjs +2 -0
  24. package/.output/server/_libs/@radix-ui/react-use-callback-ref+[...].mjs +11 -0
  25. package/.output/server/_libs/@radix-ui/react-use-controllable-state+[...].mjs +69 -0
  26. package/.output/server/_libs/@radix-ui/react-use-effect-event+[...].mjs +1 -0
  27. package/.output/server/_libs/@radix-ui/react-use-escape-keydown+[...].mjs +17 -0
  28. package/.output/server/_libs/@radix-ui/react-use-is-hydrated+[...].mjs +1 -0
  29. package/.output/server/_libs/@radix-ui/react-use-layout-effect+[...].mjs +6 -0
  30. package/.output/server/_libs/@radix-ui/react-visually-hidden+[...].mjs +34 -0
  31. package/.output/server/_libs/ajv-formats.mjs +330 -0
  32. package/.output/server/_libs/ajv.mjs +11444 -0
  33. package/.output/server/_libs/aria-hidden.mjs +122 -0
  34. package/.output/server/_libs/atomically.mjs +152 -0
  35. package/.output/server/_libs/bail.mjs +8 -0
  36. package/.output/server/_libs/cfworker__json-schema.mjs +1 -0
  37. package/.output/server/_libs/character-entities.mjs +2130 -0
  38. package/.output/server/_libs/class-variance-authority.mjs +44 -0
  39. package/.output/server/_libs/clsx.mjs +16 -0
  40. package/.output/server/_libs/comma-separated-tokens.mjs +10 -0
  41. package/.output/server/_libs/conf.mjs +635 -0
  42. package/.output/server/_libs/cookie-es.mjs +58 -0
  43. package/.output/server/_libs/core-util-is.mjs +75 -0
  44. package/.output/server/_libs/croner.mjs +1 -0
  45. package/.output/server/_libs/crossws.mjs +1 -0
  46. package/.output/server/_libs/debounce-fn.mjs +69 -0
  47. package/.output/server/_libs/decode-named-character-reference+[...].mjs +8 -0
  48. package/.output/server/_libs/dequal.mjs +27 -0
  49. package/.output/server/_libs/detect-node-es.mjs +1 -0
  50. package/.output/server/_libs/devlop.mjs +8 -0
  51. package/.output/server/_libs/diff.mjs +320 -0
  52. package/.output/server/_libs/dot-prop.mjs +265 -0
  53. package/.output/server/_libs/env-paths.mjs +57 -0
  54. package/.output/server/_libs/estree-util-is-identifier-name.mjs +11 -0
  55. package/.output/server/_libs/extend.mjs +97 -0
  56. package/.output/server/_libs/fast-deep-equal.mjs +38 -0
  57. package/.output/server/_libs/fast-uri.mjs +812 -0
  58. package/.output/server/_libs/floating-ui__core.mjs +725 -0
  59. package/.output/server/_libs/floating-ui__dom.mjs +622 -0
  60. package/.output/server/_libs/floating-ui__react-dom.mjs +292 -0
  61. package/.output/server/_libs/floating-ui__utils.mjs +320 -0
  62. package/.output/server/_libs/get-nonce.mjs +9 -0
  63. package/.output/server/_libs/h3-v2.mjs +276 -0
  64. package/.output/server/_libs/h3.mjs +408 -0
  65. package/.output/server/_libs/hast-util-to-jsx-runtime.mjs +388 -0
  66. package/.output/server/_libs/hast-util-whitespace.mjs +10 -0
  67. package/.output/server/_libs/hookable.mjs +1 -0
  68. package/.output/server/_libs/html-url-attributes.mjs +26 -0
  69. package/.output/server/_libs/immediate.mjs +74 -0
  70. package/.output/server/_libs/inherits.mjs +50 -0
  71. package/.output/server/_libs/inline-style-parser.mjs +142 -0
  72. package/.output/server/_libs/is-plain-obj.mjs +10 -0
  73. package/.output/server/_libs/isarray.mjs +14 -0
  74. package/.output/server/_libs/isbot.mjs +20 -0
  75. package/.output/server/_libs/json-schema-traverse.mjs +180 -0
  76. package/.output/server/_libs/jszip.mjs +3051 -0
  77. package/.output/server/_libs/lie.mjs +273 -0
  78. package/.output/server/_libs/lucide-react.mjs +492 -0
  79. package/.output/server/_libs/mdast-util-from-markdown.mjs +717 -0
  80. package/.output/server/_libs/mdast-util-to-hast.mjs +710 -0
  81. package/.output/server/_libs/mdast-util-to-string.mjs +38 -0
  82. package/.output/server/_libs/micromark-core-commonmark.mjs +2259 -0
  83. package/.output/server/_libs/micromark-factory-destination.mjs +94 -0
  84. package/.output/server/_libs/micromark-factory-label.mjs +63 -0
  85. package/.output/server/_libs/micromark-factory-space.mjs +24 -0
  86. package/.output/server/_libs/micromark-factory-title.mjs +65 -0
  87. package/.output/server/_libs/micromark-factory-whitespace.mjs +22 -0
  88. package/.output/server/_libs/micromark-util-character.mjs +44 -0
  89. package/.output/server/_libs/micromark-util-chunked.mjs +36 -0
  90. package/.output/server/_libs/micromark-util-classify-character+[...].mjs +12 -0
  91. package/.output/server/_libs/micromark-util-combine-extensions+[...].mjs +41 -0
  92. package/.output/server/_libs/micromark-util-decode-numeric-character-reference+[...].mjs +19 -0
  93. package/.output/server/_libs/micromark-util-decode-string.mjs +21 -0
  94. package/.output/server/_libs/micromark-util-encode.mjs +1 -0
  95. package/.output/server/_libs/micromark-util-html-tag-name.mjs +69 -0
  96. package/.output/server/_libs/micromark-util-normalize-identifier+[...].mjs +6 -0
  97. package/.output/server/_libs/micromark-util-resolve-all.mjs +15 -0
  98. package/.output/server/_libs/micromark-util-sanitize-uri.mjs +41 -0
  99. package/.output/server/_libs/micromark-util-subtokenize.mjs +346 -0
  100. package/.output/server/_libs/micromark.mjs +906 -0
  101. package/.output/server/_libs/mimic-function.mjs +47 -0
  102. package/.output/server/_libs/modelcontextprotocol__server.mjs +9738 -0
  103. package/.output/server/_libs/ocache.mjs +1 -0
  104. package/.output/server/_libs/ohash.mjs +1 -0
  105. package/.output/server/_libs/pako.mjs +4223 -0
  106. package/.output/server/_libs/process-nextick-args.mjs +48 -0
  107. package/.output/server/_libs/property-information.mjs +1209 -0
  108. package/.output/server/_libs/radix-ui.mjs +1 -0
  109. package/.output/server/_libs/radix-ui__number.mjs +6 -0
  110. package/.output/server/_libs/radix-ui__primitive.mjs +11 -0
  111. package/.output/server/_libs/radix-ui__react-accordion.mjs +1 -0
  112. package/.output/server/_libs/radix-ui__react-alert-dialog.mjs +1 -0
  113. package/.output/server/_libs/radix-ui__react-arrow.mjs +23 -0
  114. package/.output/server/_libs/radix-ui__react-aspect-ratio.mjs +1 -0
  115. package/.output/server/_libs/radix-ui__react-avatar.mjs +1 -0
  116. package/.output/server/_libs/radix-ui__react-checkbox.mjs +1 -0
  117. package/.output/server/_libs/radix-ui__react-collapsible.mjs +144 -0
  118. package/.output/server/_libs/radix-ui__react-collection.mjs +69 -0
  119. package/.output/server/_libs/radix-ui__react-compose-refs.mjs +39 -0
  120. package/.output/server/_libs/radix-ui__react-context-menu.mjs +1 -0
  121. package/.output/server/_libs/radix-ui__react-context.mjs +78 -0
  122. package/.output/server/_libs/radix-ui__react-dialog.mjs +325 -0
  123. package/.output/server/_libs/radix-ui__react-direction.mjs +9 -0
  124. package/.output/server/_libs/radix-ui__react-dropdown-menu.mjs +1 -0
  125. package/.output/server/_libs/radix-ui__react-focus-guards.mjs +29 -0
  126. package/.output/server/_libs/radix-ui__react-focus-scope.mjs +206 -0
  127. package/.output/server/_libs/radix-ui__react-form.mjs +1 -0
  128. package/.output/server/_libs/radix-ui__react-hover-card.mjs +1 -0
  129. package/.output/server/_libs/radix-ui__react-id.mjs +14 -0
  130. package/.output/server/_libs/radix-ui__react-label.mjs +1 -0
  131. package/.output/server/_libs/radix-ui__react-menu.mjs +1 -0
  132. package/.output/server/_libs/radix-ui__react-menubar.mjs +1 -0
  133. package/.output/server/_libs/radix-ui__react-popover.mjs +1 -0
  134. package/.output/server/_libs/radix-ui__react-popper.mjs +286 -0
  135. package/.output/server/_libs/radix-ui__react-portal.mjs +16 -0
  136. package/.output/server/_libs/radix-ui__react-presence.mjs +128 -0
  137. package/.output/server/_libs/radix-ui__react-primitive.mjs +42 -0
  138. package/.output/server/_libs/radix-ui__react-progress.mjs +1 -0
  139. package/.output/server/_libs/radix-ui__react-radio-group.mjs +1 -0
  140. package/.output/server/_libs/radix-ui__react-roving-focus.mjs +224 -0
  141. package/.output/server/_libs/radix-ui__react-scroll-area.mjs +721 -0
  142. package/.output/server/_libs/radix-ui__react-select.mjs +1163 -0
  143. package/.output/server/_libs/radix-ui__react-separator.mjs +28 -0
  144. package/.output/server/_libs/radix-ui__react-slider.mjs +1 -0
  145. package/.output/server/_libs/radix-ui__react-slot.mjs +99 -0
  146. package/.output/server/_libs/radix-ui__react-switch.mjs +1 -0
  147. package/.output/server/_libs/radix-ui__react-tabs.mjs +189 -0
  148. package/.output/server/_libs/radix-ui__react-toast.mjs +2 -0
  149. package/.output/server/_libs/radix-ui__react-toggle-group.mjs +1 -0
  150. package/.output/server/_libs/radix-ui__react-toggle.mjs +1 -0
  151. package/.output/server/_libs/radix-ui__react-toolbar.mjs +1 -0
  152. package/.output/server/_libs/radix-ui__react-tooltip.mjs +495 -0
  153. package/.output/server/_libs/radix-ui__react-use-previous.mjs +14 -0
  154. package/.output/server/_libs/radix-ui__react-use-size.mjs +39 -0
  155. package/.output/server/_libs/react-dom.mjs +10781 -0
  156. package/.output/server/_libs/react-markdown.mjs +147 -0
  157. package/.output/server/_libs/react-remove-scroll-bar.mjs +82 -0
  158. package/.output/server/_libs/react-remove-scroll.mjs +328 -0
  159. package/.output/server/_libs/react-style-singleton.mjs +69 -0
  160. package/.output/server/_libs/react.mjs +515 -0
  161. package/.output/server/_libs/readable-stream.mjs +1518 -0
  162. package/.output/server/_libs/remark-parse.mjs +19 -0
  163. package/.output/server/_libs/remark-rehype.mjs +21 -0
  164. package/.output/server/_libs/rou3.mjs +14 -0
  165. package/.output/server/_libs/safe-buffer.mjs +64 -0
  166. package/.output/server/_libs/semver.mjs +1938 -0
  167. package/.output/server/_libs/seroval-plugins.mjs +58 -0
  168. package/.output/server/_libs/seroval.mjs +1765 -0
  169. package/.output/server/_libs/setimmediate.mjs +152 -0
  170. package/.output/server/_libs/space-separated-tokens.mjs +6 -0
  171. package/.output/server/_libs/srvx.mjs +1029 -0
  172. package/.output/server/_libs/stubborn-fs.mjs +91 -0
  173. package/.output/server/_libs/stubborn-utils.mjs +66 -0
  174. package/.output/server/_libs/style-to-js.mjs +72 -0
  175. package/.output/server/_libs/style-to-object.mjs +38 -0
  176. package/.output/server/_libs/swr.mjs +939 -0
  177. package/.output/server/_libs/tailwind-merge.mjs +3010 -0
  178. package/.output/server/_libs/tanstack__history.mjs +217 -0
  179. package/.output/server/_libs/tanstack__react-router.mjs +1480 -0
  180. package/.output/server/_libs/tanstack__react-store.mjs +1 -0
  181. package/.output/server/_libs/tanstack__react-virtual.mjs +44 -0
  182. package/.output/server/_libs/tanstack__router-core.mjs +4827 -0
  183. package/.output/server/_libs/tanstack__store.mjs +1 -0
  184. package/.output/server/_libs/tanstack__virtual-core.mjs +1225 -0
  185. package/.output/server/_libs/tiny-invariant.mjs +12 -0
  186. package/.output/server/_libs/tiny-warning.mjs +5 -0
  187. package/.output/server/_libs/trim-lines.mjs +41 -0
  188. package/.output/server/_libs/trough.mjs +85 -0
  189. package/.output/server/_libs/tslib.mjs +1 -0
  190. package/.output/server/_libs/ufo.mjs +54 -0
  191. package/.output/server/_libs/uint8array-extras.mjs +69 -0
  192. package/.output/server/_libs/ungap__structured-clone.mjs +212 -0
  193. package/.output/server/_libs/unified.mjs +661 -0
  194. package/.output/server/_libs/unist-util-is.mjs +100 -0
  195. package/.output/server/_libs/unist-util-position.mjs +27 -0
  196. package/.output/server/_libs/unist-util-stringify-position.mjs +27 -0
  197. package/.output/server/_libs/unist-util-visit-parents.mjs +82 -0
  198. package/.output/server/_libs/unist-util-visit.mjs +24 -0
  199. package/.output/server/_libs/unstorage.mjs +1 -0
  200. package/.output/server/_libs/use-callback-ref.mjs +66 -0
  201. package/.output/server/_libs/use-sidecar.mjs +106 -0
  202. package/.output/server/_libs/use-sync-external-store.mjs +64 -0
  203. package/.output/server/_libs/util-deprecate.mjs +12 -0
  204. package/.output/server/_libs/vfile-message.mjs +138 -0
  205. package/.output/server/_libs/vfile.mjs +467 -0
  206. package/.output/server/_libs/when-exit.mjs +53 -0
  207. package/.output/server/_libs/zod.mjs +4524 -0
  208. package/.output/server/_sessionId-wMLPvC5g.mjs +123 -0
  209. package/.output/server/_ssr/CompareDrawer-BU4V0uVf.mjs +1041 -0
  210. package/.output/server/_ssr/ProxyViewerContainer-BnRwFEnn.mjs +5972 -0
  211. package/.output/server/_ssr/ReplayDialog-C7dn9pd_.mjs +322 -0
  212. package/.output/server/_ssr/RequestAnatomy-C1rWpe9-.mjs +353 -0
  213. package/.output/server/_ssr/ResponseView-hGpPaYsf.mjs +602 -0
  214. package/.output/server/_ssr/StreamingChunkSequence-BRWI1r_G.mjs +302 -0
  215. package/.output/server/_ssr/index-BKURLVPz.mjs +118 -0
  216. package/.output/server/_ssr/index.mjs +1184 -0
  217. package/.output/server/_ssr/json-viewer-BBd2DtQP.mjs +515 -0
  218. package/.output/server/_ssr/router-BcZ0D6AB.mjs +6317 -0
  219. package/.output/server/_ssr/start-HYkvq4Ni.mjs +4 -0
  220. package/.output/server/_tanstack-start-manifest_v-1y8ZVxRI.mjs +4 -0
  221. package/.output/server/index.mjs +436 -0
  222. package/.output/server/node_modules/tslib/modules/index.js +70 -0
  223. package/.output/server/node_modules/tslib/modules/package.json +3 -0
  224. package/.output/server/node_modules/tslib/package.json +47 -0
  225. package/.output/server/node_modules/tslib/tslib.js +484 -0
  226. package/.output/server/package.json +9 -0
  227. package/LICENSE +21 -0
  228. package/README.md +52 -0
  229. package/package.json +110 -0
  230. package/src/assets/favicon.svg +31 -0
  231. package/src/assets/logos/alibaba.svg +1 -0
  232. package/src/assets/logos/anthropic.svg +1 -0
  233. package/src/assets/logos/claude-code.svg +4 -0
  234. package/src/assets/logos/deepseek.svg +1 -0
  235. package/src/assets/logos/mcp.png +0 -0
  236. package/src/assets/logos/minimax.jpeg +0 -0
  237. package/src/assets/logos/openai.svg +1 -0
  238. package/src/assets/logos/opencode.svg +4 -0
  239. package/src/assets/logos/qwen.png +0 -0
  240. package/src/assets/logos/zhipuai.svg +219 -0
  241. package/src/cli/detect-tools.ts +147 -0
  242. package/src/cli/doctor.ts +521 -0
  243. package/src/cli/onboard.ts +224 -0
  244. package/src/cli/templates/command-onboard.ts +17 -0
  245. package/src/cli/templates/skill-onboard.ts +547 -0
  246. package/src/cli.ts +345 -0
  247. package/src/components/OnboardingBanner.tsx +67 -0
  248. package/src/components/ProxyViewer.tsx +545 -0
  249. package/src/components/ProxyViewerContainer.tsx +363 -0
  250. package/src/components/providers/ImportWizardDialog.tsx +349 -0
  251. package/src/components/providers/ProviderCard.tsx +474 -0
  252. package/src/components/providers/ProviderForm.tsx +494 -0
  253. package/src/components/providers/ProviderLogo.tsx +117 -0
  254. package/src/components/providers/ProvidersPanel.tsx +619 -0
  255. package/src/components/providers/SettingsDialog.tsx +202 -0
  256. package/src/components/proxy-viewer/CompareDrawer.tsx +893 -0
  257. package/src/components/proxy-viewer/ConversationGroup.tsx +107 -0
  258. package/src/components/proxy-viewer/ConversationHeader.tsx +300 -0
  259. package/src/components/proxy-viewer/LogEntry.tsx +543 -0
  260. package/src/components/proxy-viewer/LogEntryHeader.tsx +501 -0
  261. package/src/components/proxy-viewer/ReplayDialog.tsx +218 -0
  262. package/src/components/proxy-viewer/ResponseView.tsx +171 -0
  263. package/src/components/proxy-viewer/StreamingChunkSequence.tsx +188 -0
  264. package/src/components/proxy-viewer/ThreadConnector.tsx +136 -0
  265. package/src/components/proxy-viewer/TurnGroup.tsx +337 -0
  266. package/src/components/proxy-viewer/anatomy/RequestAnatomy.tsx +98 -0
  267. package/src/components/proxy-viewer/anatomy/SegmentBar.tsx +196 -0
  268. package/src/components/proxy-viewer/anatomy/tokenEstimate.ts +53 -0
  269. package/src/components/proxy-viewer/anatomy/types.ts +39 -0
  270. package/src/components/proxy-viewer/anatomy/useAnatomyJump.ts +114 -0
  271. package/src/components/proxy-viewer/cacheTrend.ts +50 -0
  272. package/src/components/proxy-viewer/diff/DiffView.tsx +321 -0
  273. package/src/components/proxy-viewer/diff/computeDiff.ts +178 -0
  274. package/src/components/proxy-viewer/diff/index.ts +3 -0
  275. package/src/components/proxy-viewer/formats/anthropic/ContentBlocks.tsx +157 -0
  276. package/src/components/proxy-viewer/formats/anthropic/ResponseView.tsx +66 -0
  277. package/src/components/proxy-viewer/formats/anthropic/thinkingExtract.ts +21 -0
  278. package/src/components/proxy-viewer/formats/index.tsx +33 -0
  279. package/src/components/proxy-viewer/formats/openai/ResponseView.tsx +170 -0
  280. package/src/components/proxy-viewer/index.ts +9 -0
  281. package/src/components/proxy-viewer/lazy.ts +37 -0
  282. package/src/components/proxy-viewer/log-formats/anthropic.ts +194 -0
  283. package/src/components/proxy-viewer/log-formats/index.ts +23 -0
  284. package/src/components/proxy-viewer/log-formats/openai.ts +167 -0
  285. package/src/components/proxy-viewer/log-formats/types.ts +40 -0
  286. package/src/components/proxy-viewer/log-formats/unknown.ts +18 -0
  287. package/src/components/proxy-viewer/logEntryVisibility.ts +39 -0
  288. package/src/components/proxy-viewer/requestDiff.ts +277 -0
  289. package/src/components/proxy-viewer/useCopyFeedback.ts +36 -0
  290. package/src/components/proxy-viewer/useKeyboardNavigation.ts +190 -0
  291. package/src/components/proxy-viewer/viewerState.ts +66 -0
  292. package/src/components/ui/badge.tsx +47 -0
  293. package/src/components/ui/button.tsx +47 -0
  294. package/src/components/ui/collapsible.tsx +21 -0
  295. package/src/components/ui/confirm-dialog.tsx +51 -0
  296. package/src/components/ui/crab-logo.tsx +95 -0
  297. package/src/components/ui/crab-variants.tsx +467 -0
  298. package/src/components/ui/dialog.tsx +129 -0
  299. package/src/components/ui/json-expansion-button.tsx +56 -0
  300. package/src/components/ui/json-viewer-bulk.ts +97 -0
  301. package/src/components/ui/json-viewer.tsx +494 -0
  302. package/src/components/ui/mcp-logo.tsx +20 -0
  303. package/src/components/ui/scroll-area.tsx +54 -0
  304. package/src/components/ui/select.tsx +178 -0
  305. package/src/components/ui/separator.tsx +28 -0
  306. package/src/components/ui/tabs.tsx +88 -0
  307. package/src/components/ui/tooltip.tsx +51 -0
  308. package/src/index.css +11 -0
  309. package/src/knowledge/candidateStore.ts +63 -0
  310. package/src/knowledge/distiller.ts +98 -0
  311. package/src/knowledge/openclawClient.ts +118 -0
  312. package/src/knowledge/redactor.ts +80 -0
  313. package/src/knowledge/types.ts +84 -0
  314. package/src/lib/apiClient.ts +49 -0
  315. package/src/lib/export-logs.ts +51 -0
  316. package/src/lib/mask.ts +4 -0
  317. package/src/lib/objectUtils.ts +22 -0
  318. package/src/lib/providerContract.ts +26 -0
  319. package/src/lib/providerTestContract.ts +107 -0
  320. package/src/lib/runtimeConfig.ts +25 -0
  321. package/src/lib/serverPort.ts +41 -0
  322. package/src/lib/sessionUrl.ts +44 -0
  323. package/src/lib/stopReason.ts +58 -0
  324. package/src/lib/useOnboarding.ts +80 -0
  325. package/src/lib/useProviders.ts +30 -0
  326. package/src/lib/useStripConfig.ts +108 -0
  327. package/src/lib/utils.ts +21 -0
  328. package/src/mcp/loopback.ts +76 -0
  329. package/src/mcp/previewExtractor.ts +166 -0
  330. package/src/mcp/server.ts +396 -0
  331. package/src/mcp/toolHandlers.ts +341 -0
  332. package/src/proxy/chunkStorage.ts +112 -0
  333. package/src/proxy/claudeCodeStrip.ts +99 -0
  334. package/src/proxy/config.ts +172 -0
  335. package/src/proxy/constants.ts +47 -0
  336. package/src/proxy/dataDir.ts +86 -0
  337. package/src/proxy/formats/anthropic/anthropicProvider.ts +75 -0
  338. package/src/proxy/formats/anthropic/handler.ts +71 -0
  339. package/src/proxy/formats/anthropic/index.ts +14 -0
  340. package/src/proxy/formats/anthropic/register.ts +4 -0
  341. package/src/proxy/formats/anthropic/schemas.ts +237 -0
  342. package/src/proxy/formats/anthropic/stream.ts +205 -0
  343. package/src/proxy/formats/handler.ts +46 -0
  344. package/src/proxy/formats/index.ts +12 -0
  345. package/src/proxy/formats/jsonSchema.ts +36 -0
  346. package/src/proxy/formats/openai/alibabaProvider.ts +38 -0
  347. package/src/proxy/formats/openai/handler.ts +96 -0
  348. package/src/proxy/formats/openai/index.ts +25 -0
  349. package/src/proxy/formats/openai/provider.ts +50 -0
  350. package/src/proxy/formats/openai/register.ts +4 -0
  351. package/src/proxy/formats/openai/schemas.ts +187 -0
  352. package/src/proxy/formats/openai/stream.ts +206 -0
  353. package/src/proxy/formats/protocol.ts +50 -0
  354. package/src/proxy/formats/providerRegistry.ts +51 -0
  355. package/src/proxy/formats/providers/index.ts +3 -0
  356. package/src/proxy/formats/registry.ts +66 -0
  357. package/src/proxy/handler.ts +334 -0
  358. package/src/proxy/logFinalizer.ts +305 -0
  359. package/src/proxy/logFinalizer.worker.ts +24 -0
  360. package/src/proxy/logIndex.ts +268 -0
  361. package/src/proxy/logger.ts +179 -0
  362. package/src/proxy/openaiOrphanToolStrip.ts +142 -0
  363. package/src/proxy/providerImporters.ts +491 -0
  364. package/src/proxy/providers.ts +613 -0
  365. package/src/proxy/schemas.ts +209 -0
  366. package/src/proxy/sessionProcess.ts +140 -0
  367. package/src/proxy/sessionRuntime.ts +85 -0
  368. package/src/proxy/sessionSupervisor.ts +283 -0
  369. package/src/proxy/sessionWorkerEntry.ts +26 -0
  370. package/src/proxy/socketTracker.ts +255 -0
  371. package/src/proxy/store.ts +412 -0
  372. package/src/proxy/upstream.ts +90 -0
  373. package/src/router.tsx +16 -0
  374. package/src/routes/__root.tsx +45 -0
  375. package/src/routes/api/config.paths.ts +14 -0
  376. package/src/routes/api/config.ts +53 -0
  377. package/src/routes/api/health.ts +15 -0
  378. package/src/routes/api/knowledge.candidates.$candidateId.promote.ts +32 -0
  379. package/src/routes/api/knowledge.candidates.ts +10 -0
  380. package/src/routes/api/knowledge.project-context.ts +18 -0
  381. package/src/routes/api/knowledge.search.ts +31 -0
  382. package/src/routes/api/knowledge.sessions.$sessionId.candidates.ts +16 -0
  383. package/src/routes/api/logs.$id.chunks.ts +36 -0
  384. package/src/routes/api/logs.$id.replay.ts +191 -0
  385. package/src/routes/api/logs.$id.ts +22 -0
  386. package/src/routes/api/logs.stream.ts +74 -0
  387. package/src/routes/api/logs.ts +59 -0
  388. package/src/routes/api/mcp.ts +25 -0
  389. package/src/routes/api/models.ts +10 -0
  390. package/src/routes/api/providers.$providerId.test.log.ts +293 -0
  391. package/src/routes/api/providers.$providerId.ts +50 -0
  392. package/src/routes/api/providers.export.ts +26 -0
  393. package/src/routes/api/providers.import.ts +47 -0
  394. package/src/routes/api/providers.scan.ts +23 -0
  395. package/src/routes/api/providers.ts +45 -0
  396. package/src/routes/api/sessions.ts +17 -0
  397. package/src/routes/index.tsx +6 -0
  398. package/src/routes/proxy/$.ts +15 -0
  399. package/src/routes/session/$sessionId.tsx +23 -0
  400. package/styles/globals.css +188 -0
@@ -0,0 +1,58 @@
1
+ function splitSetCookieString(cookiesString) {
2
+ if (Array.isArray(cookiesString)) {
3
+ return cookiesString.flatMap((c) => splitSetCookieString(c));
4
+ }
5
+ if (typeof cookiesString !== "string") {
6
+ return [];
7
+ }
8
+ const cookiesStrings = [];
9
+ let pos = 0;
10
+ let start;
11
+ let ch;
12
+ let lastComma;
13
+ let nextStart;
14
+ let cookiesSeparatorFound;
15
+ const skipWhitespace = () => {
16
+ while (pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))) {
17
+ pos += 1;
18
+ }
19
+ return pos < cookiesString.length;
20
+ };
21
+ const notSpecialChar = () => {
22
+ ch = cookiesString.charAt(pos);
23
+ return ch !== "=" && ch !== ";" && ch !== ",";
24
+ };
25
+ while (pos < cookiesString.length) {
26
+ start = pos;
27
+ cookiesSeparatorFound = false;
28
+ while (skipWhitespace()) {
29
+ ch = cookiesString.charAt(pos);
30
+ if (ch === ",") {
31
+ lastComma = pos;
32
+ pos += 1;
33
+ skipWhitespace();
34
+ nextStart = pos;
35
+ while (pos < cookiesString.length && notSpecialChar()) {
36
+ pos += 1;
37
+ }
38
+ if (pos < cookiesString.length && cookiesString.charAt(pos) === "=") {
39
+ cookiesSeparatorFound = true;
40
+ pos = nextStart;
41
+ cookiesStrings.push(cookiesString.slice(start, lastComma));
42
+ start = pos;
43
+ } else {
44
+ pos = lastComma + 1;
45
+ }
46
+ } else {
47
+ pos += 1;
48
+ }
49
+ }
50
+ if (!cookiesSeparatorFound || pos >= cookiesString.length) {
51
+ cookiesStrings.push(cookiesString.slice(start));
52
+ }
53
+ }
54
+ return cookiesStrings;
55
+ }
56
+ export {
57
+ splitSetCookieString as s
58
+ };
@@ -0,0 +1,75 @@
1
+ import require$$0 from "buffer";
2
+ var util = {};
3
+ var hasRequiredUtil;
4
+ function requireUtil() {
5
+ if (hasRequiredUtil) return util;
6
+ hasRequiredUtil = 1;
7
+ function isArray(arg) {
8
+ if (Array.isArray) {
9
+ return Array.isArray(arg);
10
+ }
11
+ return objectToString(arg) === "[object Array]";
12
+ }
13
+ util.isArray = isArray;
14
+ function isBoolean(arg) {
15
+ return typeof arg === "boolean";
16
+ }
17
+ util.isBoolean = isBoolean;
18
+ function isNull(arg) {
19
+ return arg === null;
20
+ }
21
+ util.isNull = isNull;
22
+ function isNullOrUndefined(arg) {
23
+ return arg == null;
24
+ }
25
+ util.isNullOrUndefined = isNullOrUndefined;
26
+ function isNumber(arg) {
27
+ return typeof arg === "number";
28
+ }
29
+ util.isNumber = isNumber;
30
+ function isString(arg) {
31
+ return typeof arg === "string";
32
+ }
33
+ util.isString = isString;
34
+ function isSymbol(arg) {
35
+ return typeof arg === "symbol";
36
+ }
37
+ util.isSymbol = isSymbol;
38
+ function isUndefined(arg) {
39
+ return arg === void 0;
40
+ }
41
+ util.isUndefined = isUndefined;
42
+ function isRegExp(re) {
43
+ return objectToString(re) === "[object RegExp]";
44
+ }
45
+ util.isRegExp = isRegExp;
46
+ function isObject(arg) {
47
+ return typeof arg === "object" && arg !== null;
48
+ }
49
+ util.isObject = isObject;
50
+ function isDate(d) {
51
+ return objectToString(d) === "[object Date]";
52
+ }
53
+ util.isDate = isDate;
54
+ function isError(e) {
55
+ return objectToString(e) === "[object Error]" || e instanceof Error;
56
+ }
57
+ util.isError = isError;
58
+ function isFunction(arg) {
59
+ return typeof arg === "function";
60
+ }
61
+ util.isFunction = isFunction;
62
+ function isPrimitive(arg) {
63
+ return arg === null || typeof arg === "boolean" || typeof arg === "number" || typeof arg === "string" || typeof arg === "symbol" || // ES6 symbol
64
+ typeof arg === "undefined";
65
+ }
66
+ util.isPrimitive = isPrimitive;
67
+ util.isBuffer = require$$0.Buffer.isBuffer;
68
+ function objectToString(o) {
69
+ return Object.prototype.toString.call(o);
70
+ }
71
+ return util;
72
+ }
73
+ export {
74
+ requireUtil as r
75
+ };
@@ -0,0 +1 @@
1
+
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,69 @@
1
+ import { m as mimicFunction } from "./mimic-function.mjs";
2
+ const debounceFunction = (inputFunction, options = {}) => {
3
+ if (typeof inputFunction !== "function") {
4
+ throw new TypeError(`Expected the first argument to be a function, got \`${typeof inputFunction}\``);
5
+ }
6
+ const {
7
+ wait = 0,
8
+ maxWait = Number.POSITIVE_INFINITY,
9
+ before = false,
10
+ after = true
11
+ } = options;
12
+ if (wait < 0 || maxWait < 0) {
13
+ throw new RangeError("`wait` and `maxWait` must not be negative.");
14
+ }
15
+ if (!before && !after) {
16
+ throw new Error("Both `before` and `after` are false, function wouldn't be called.");
17
+ }
18
+ let timeout;
19
+ let maxTimeout;
20
+ let result;
21
+ const debouncedFunction = function(...arguments_) {
22
+ const context = this;
23
+ const later = () => {
24
+ timeout = void 0;
25
+ if (maxTimeout) {
26
+ clearTimeout(maxTimeout);
27
+ maxTimeout = void 0;
28
+ }
29
+ if (after) {
30
+ result = inputFunction.apply(context, arguments_);
31
+ }
32
+ };
33
+ const maxLater = () => {
34
+ maxTimeout = void 0;
35
+ if (timeout) {
36
+ clearTimeout(timeout);
37
+ timeout = void 0;
38
+ }
39
+ if (after) {
40
+ result = inputFunction.apply(context, arguments_);
41
+ }
42
+ };
43
+ const shouldCallNow = before && !timeout;
44
+ clearTimeout(timeout);
45
+ timeout = setTimeout(later, wait);
46
+ if (maxWait > 0 && maxWait !== Number.POSITIVE_INFINITY && !maxTimeout) {
47
+ maxTimeout = setTimeout(maxLater, maxWait);
48
+ }
49
+ if (shouldCallNow) {
50
+ result = inputFunction.apply(context, arguments_);
51
+ }
52
+ return result;
53
+ };
54
+ mimicFunction(debouncedFunction, inputFunction);
55
+ debouncedFunction.cancel = () => {
56
+ if (timeout) {
57
+ clearTimeout(timeout);
58
+ timeout = void 0;
59
+ }
60
+ if (maxTimeout) {
61
+ clearTimeout(maxTimeout);
62
+ maxTimeout = void 0;
63
+ }
64
+ };
65
+ return debouncedFunction;
66
+ };
67
+ export {
68
+ debounceFunction as d
69
+ };
@@ -0,0 +1,8 @@
1
+ import { c as characterEntities } from "./character-entities.mjs";
2
+ const own = {}.hasOwnProperty;
3
+ function decodeNamedCharacterReference(value) {
4
+ return own.call(characterEntities, value) ? characterEntities[value] : false;
5
+ }
6
+ export {
7
+ decodeNamedCharacterReference as d
8
+ };
@@ -0,0 +1,27 @@
1
+ var has = Object.prototype.hasOwnProperty;
2
+ function dequal(foo, bar) {
3
+ var ctor, len;
4
+ if (foo === bar) return true;
5
+ if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
6
+ if (ctor === Date) return foo.getTime() === bar.getTime();
7
+ if (ctor === RegExp) return foo.toString() === bar.toString();
8
+ if (ctor === Array) {
9
+ if ((len = foo.length) === bar.length) {
10
+ while (len-- && dequal(foo[len], bar[len])) ;
11
+ }
12
+ return len === -1;
13
+ }
14
+ if (!ctor || typeof foo === "object") {
15
+ len = 0;
16
+ for (ctor in foo) {
17
+ if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
18
+ if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;
19
+ }
20
+ return Object.keys(bar).length === len;
21
+ }
22
+ }
23
+ return foo !== foo && bar !== bar;
24
+ }
25
+ export {
26
+ dequal as d
27
+ };
@@ -0,0 +1,8 @@
1
+ function ok() {
2
+ }
3
+ function unreachable() {
4
+ }
5
+ export {
6
+ ok as o,
7
+ unreachable as u
8
+ };
@@ -0,0 +1,320 @@
1
+ class Diff {
2
+ diff(oldStr, newStr, options = {}) {
3
+ let callback;
4
+ if (typeof options === "function") {
5
+ callback = options;
6
+ options = {};
7
+ } else if ("callback" in options) {
8
+ callback = options.callback;
9
+ }
10
+ const oldString = this.castInput(oldStr, options);
11
+ const newString = this.castInput(newStr, options);
12
+ const oldTokens = this.removeEmpty(this.tokenize(oldString, options));
13
+ const newTokens = this.removeEmpty(this.tokenize(newString, options));
14
+ return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);
15
+ }
16
+ diffWithOptionsObj(oldTokens, newTokens, options, callback) {
17
+ var _a;
18
+ const done = (value) => {
19
+ value = this.postProcess(value, options);
20
+ if (callback) {
21
+ setTimeout(function() {
22
+ callback(value);
23
+ }, 0);
24
+ return void 0;
25
+ } else {
26
+ return value;
27
+ }
28
+ };
29
+ const newLen = newTokens.length, oldLen = oldTokens.length;
30
+ let editLength = 1;
31
+ let maxEditLength = newLen + oldLen;
32
+ if (options.maxEditLength != null) {
33
+ maxEditLength = Math.min(maxEditLength, options.maxEditLength);
34
+ }
35
+ const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;
36
+ const abortAfterTimestamp = Date.now() + maxExecutionTime;
37
+ const bestPath = [{ oldPos: -1, lastComponent: void 0 }];
38
+ let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);
39
+ if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {
40
+ return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));
41
+ }
42
+ let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;
43
+ const execEditLength = () => {
44
+ for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {
45
+ let basePath;
46
+ const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];
47
+ if (removePath) {
48
+ bestPath[diagonalPath - 1] = void 0;
49
+ }
50
+ let canAdd = false;
51
+ if (addPath) {
52
+ const addPathNewPos = addPath.oldPos - diagonalPath;
53
+ canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;
54
+ }
55
+ const canRemove = removePath && removePath.oldPos + 1 < oldLen;
56
+ if (!canAdd && !canRemove) {
57
+ bestPath[diagonalPath] = void 0;
58
+ continue;
59
+ }
60
+ if (!canRemove || canAdd && removePath.oldPos < addPath.oldPos) {
61
+ basePath = this.addToPath(addPath, true, false, 0, options);
62
+ } else {
63
+ basePath = this.addToPath(removePath, false, true, 1, options);
64
+ }
65
+ newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);
66
+ if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {
67
+ return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;
68
+ } else {
69
+ bestPath[diagonalPath] = basePath;
70
+ if (basePath.oldPos + 1 >= oldLen) {
71
+ maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);
72
+ }
73
+ if (newPos + 1 >= newLen) {
74
+ minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);
75
+ }
76
+ }
77
+ }
78
+ editLength++;
79
+ };
80
+ if (callback) {
81
+ (function exec() {
82
+ setTimeout(function() {
83
+ if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {
84
+ return callback(void 0);
85
+ }
86
+ if (!execEditLength()) {
87
+ exec();
88
+ }
89
+ }, 0);
90
+ })();
91
+ } else {
92
+ while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {
93
+ const ret = execEditLength();
94
+ if (ret) {
95
+ return ret;
96
+ }
97
+ }
98
+ }
99
+ }
100
+ addToPath(path, added, removed, oldPosInc, options) {
101
+ const last = path.lastComponent;
102
+ if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) {
103
+ return {
104
+ oldPos: path.oldPos + oldPosInc,
105
+ lastComponent: { count: last.count + 1, added, removed, previousComponent: last.previousComponent }
106
+ };
107
+ } else {
108
+ return {
109
+ oldPos: path.oldPos + oldPosInc,
110
+ lastComponent: { count: 1, added, removed, previousComponent: last }
111
+ };
112
+ }
113
+ }
114
+ extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {
115
+ const newLen = newTokens.length, oldLen = oldTokens.length;
116
+ let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;
117
+ while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {
118
+ newPos++;
119
+ oldPos++;
120
+ commonCount++;
121
+ if (options.oneChangePerToken) {
122
+ basePath.lastComponent = { count: 1, previousComponent: basePath.lastComponent, added: false, removed: false };
123
+ }
124
+ }
125
+ if (commonCount && !options.oneChangePerToken) {
126
+ basePath.lastComponent = { count: commonCount, previousComponent: basePath.lastComponent, added: false, removed: false };
127
+ }
128
+ basePath.oldPos = oldPos;
129
+ return newPos;
130
+ }
131
+ equals(left, right, options) {
132
+ if (options.comparator) {
133
+ return options.comparator(left, right);
134
+ } else {
135
+ return left === right || !!options.ignoreCase && left.toLowerCase() === right.toLowerCase();
136
+ }
137
+ }
138
+ removeEmpty(array) {
139
+ const ret = [];
140
+ for (let i = 0; i < array.length; i++) {
141
+ if (array[i]) {
142
+ ret.push(array[i]);
143
+ }
144
+ }
145
+ return ret;
146
+ }
147
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
148
+ castInput(value, options) {
149
+ return value;
150
+ }
151
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
152
+ tokenize(value, options) {
153
+ return Array.from(value);
154
+ }
155
+ join(chars) {
156
+ return chars.join("");
157
+ }
158
+ postProcess(changeObjects, options) {
159
+ return changeObjects;
160
+ }
161
+ get useLongestToken() {
162
+ return false;
163
+ }
164
+ buildValues(lastComponent, newTokens, oldTokens) {
165
+ const components = [];
166
+ let nextComponent;
167
+ while (lastComponent) {
168
+ components.push(lastComponent);
169
+ nextComponent = lastComponent.previousComponent;
170
+ delete lastComponent.previousComponent;
171
+ lastComponent = nextComponent;
172
+ }
173
+ components.reverse();
174
+ const componentLen = components.length;
175
+ let componentPos = 0, newPos = 0, oldPos = 0;
176
+ for (; componentPos < componentLen; componentPos++) {
177
+ const component = components[componentPos];
178
+ if (!component.removed) {
179
+ if (!component.added && this.useLongestToken) {
180
+ let value = newTokens.slice(newPos, newPos + component.count);
181
+ value = value.map(function(value2, i) {
182
+ const oldValue = oldTokens[oldPos + i];
183
+ return oldValue.length > value2.length ? oldValue : value2;
184
+ });
185
+ component.value = this.join(value);
186
+ } else {
187
+ component.value = this.join(newTokens.slice(newPos, newPos + component.count));
188
+ }
189
+ newPos += component.count;
190
+ if (!component.added) {
191
+ oldPos += component.count;
192
+ }
193
+ } else {
194
+ component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));
195
+ oldPos += component.count;
196
+ }
197
+ }
198
+ return components;
199
+ }
200
+ }
201
+ class LineDiff extends Diff {
202
+ constructor() {
203
+ super(...arguments);
204
+ this.tokenize = tokenize;
205
+ }
206
+ equals(left, right, options) {
207
+ if (options.ignoreWhitespace) {
208
+ if (!options.newlineIsToken || !left.includes("\n")) {
209
+ left = left.trim();
210
+ }
211
+ if (!options.newlineIsToken || !right.includes("\n")) {
212
+ right = right.trim();
213
+ }
214
+ } else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {
215
+ if (left.endsWith("\n")) {
216
+ left = left.slice(0, -1);
217
+ }
218
+ if (right.endsWith("\n")) {
219
+ right = right.slice(0, -1);
220
+ }
221
+ }
222
+ return super.equals(left, right, options);
223
+ }
224
+ }
225
+ const lineDiff = new LineDiff();
226
+ function diffLines(oldStr, newStr, options) {
227
+ return lineDiff.diff(oldStr, newStr, options);
228
+ }
229
+ function tokenize(value, options) {
230
+ if (options.stripTrailingCr) {
231
+ value = value.replace(/\r\n/g, "\n");
232
+ }
233
+ const retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/);
234
+ if (!linesAndNewlines[linesAndNewlines.length - 1]) {
235
+ linesAndNewlines.pop();
236
+ }
237
+ for (let i = 0; i < linesAndNewlines.length; i++) {
238
+ const line = linesAndNewlines[i];
239
+ if (i % 2 && !options.newlineIsToken) {
240
+ retLines[retLines.length - 1] += line;
241
+ } else {
242
+ retLines.push(line);
243
+ }
244
+ }
245
+ return retLines;
246
+ }
247
+ class JsonDiff extends Diff {
248
+ constructor() {
249
+ super(...arguments);
250
+ this.tokenize = tokenize;
251
+ }
252
+ get useLongestToken() {
253
+ return true;
254
+ }
255
+ castInput(value, options) {
256
+ const { undefinedReplacement, stringifyReplacer = (k, v) => typeof v === "undefined" ? undefinedReplacement : v } = options;
257
+ return typeof value === "string" ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), null, " ");
258
+ }
259
+ equals(left, right, options) {
260
+ return super.equals(left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1"), options);
261
+ }
262
+ }
263
+ const jsonDiff = new JsonDiff();
264
+ function diffJson(oldStr, newStr, options) {
265
+ return jsonDiff.diff(oldStr, newStr, options);
266
+ }
267
+ function canonicalize(obj, stack, replacementStack, replacer, key) {
268
+ stack = stack || [];
269
+ replacementStack = replacementStack || [];
270
+ if (replacer) {
271
+ obj = replacer(key === void 0 ? "" : key, obj);
272
+ }
273
+ let i;
274
+ for (i = 0; i < stack.length; i += 1) {
275
+ if (stack[i] === obj) {
276
+ return replacementStack[i];
277
+ }
278
+ }
279
+ let canonicalizedObj;
280
+ if ("[object Array]" === Object.prototype.toString.call(obj)) {
281
+ stack.push(obj);
282
+ canonicalizedObj = new Array(obj.length);
283
+ replacementStack.push(canonicalizedObj);
284
+ for (i = 0; i < obj.length; i += 1) {
285
+ canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, String(i));
286
+ }
287
+ stack.pop();
288
+ replacementStack.pop();
289
+ return canonicalizedObj;
290
+ }
291
+ if (obj && obj.toJSON) {
292
+ obj = obj.toJSON();
293
+ }
294
+ if (typeof obj === "object" && obj !== null) {
295
+ stack.push(obj);
296
+ canonicalizedObj = {};
297
+ replacementStack.push(canonicalizedObj);
298
+ const sortedKeys = [];
299
+ let key2;
300
+ for (key2 in obj) {
301
+ if (Object.prototype.hasOwnProperty.call(obj, key2)) {
302
+ sortedKeys.push(key2);
303
+ }
304
+ }
305
+ sortedKeys.sort();
306
+ for (i = 0; i < sortedKeys.length; i += 1) {
307
+ key2 = sortedKeys[i];
308
+ canonicalizedObj[key2] = canonicalize(obj[key2], stack, replacementStack, replacer, key2);
309
+ }
310
+ stack.pop();
311
+ replacementStack.pop();
312
+ } else {
313
+ canonicalizedObj = obj;
314
+ }
315
+ return canonicalizedObj;
316
+ }
317
+ export {
318
+ diffLines as a,
319
+ diffJson as d
320
+ };