@tonyclaw/agent-inspector 3.0.17 → 3.0.19

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 (99) hide show
  1. package/.output/cli.js +1255 -504
  2. package/.output/nitro.json +3 -3
  3. package/.output/public/assets/CompareDrawer-DR3WgrId.js +1 -0
  4. package/.output/public/assets/ProxyViewerContainer-B7PZaz5j.js +127 -0
  5. package/.output/public/assets/ReplayDialog-Bt9jgdvJ.js +1 -0
  6. package/.output/public/assets/RequestAnatomy-C-4630lw.js +1 -0
  7. package/.output/public/assets/ResponseView-f_JrN1iQ.js +3 -0
  8. package/.output/public/assets/StreamingChunkSequence-D8dBm1d8.js +1 -0
  9. package/.output/public/assets/_sessionId-CtoSDXDC.js +1 -0
  10. package/.output/public/assets/index-B-rVc2xu.js +12 -0
  11. package/.output/public/assets/index-B3YOj8-_.css +1 -0
  12. package/.output/public/assets/{index-DPc2wzgW.js → index-BNCySZM-.js} +1 -1
  13. package/.output/public/assets/index-BtCnkWve.js +1 -0
  14. package/.output/public/assets/json-viewer-DT6QQY81.js +1 -0
  15. package/.output/server/_chunks/ssr-renderer.mjs +18 -2
  16. package/.output/server/_libs/@radix-ui/react-dismissable-layer+[...].mjs +165 -31
  17. package/.output/server/_libs/@radix-ui/react-use-callback-ref+[...].mjs +1 -1
  18. package/.output/server/_libs/@radix-ui/react-use-controllable-state+[...].mjs +2 -2
  19. package/.output/server/_libs/@radix-ui/react-use-is-hydrated+[...].mjs +28 -1
  20. package/.output/server/_libs/mistralai__mistralai.mjs +1 -1
  21. package/.output/server/_libs/modelcontextprotocol__server.mjs +11571 -8127
  22. package/.output/server/_libs/radix-ui__primitive.mjs +1 -1
  23. package/.output/server/_libs/radix-ui__react-collapsible.mjs +1 -1
  24. package/.output/server/_libs/radix-ui__react-collection.mjs +8 -8
  25. package/.output/server/_libs/radix-ui__react-compose-refs.mjs +0 -1
  26. package/.output/server/_libs/radix-ui__react-context.mjs +4 -18
  27. package/.output/server/_libs/radix-ui__react-dialog.mjs +41 -88
  28. package/.output/server/_libs/radix-ui__react-focus-guards.mjs +15 -5
  29. package/.output/server/_libs/radix-ui__react-focus-scope.mjs +6 -2
  30. package/.output/server/_libs/radix-ui__react-id.mjs +3 -3
  31. package/.output/server/_libs/radix-ui__react-popper.mjs +62 -8
  32. package/.output/server/_libs/radix-ui__react-portal.mjs +2 -2
  33. package/.output/server/_libs/radix-ui__react-presence.mjs +50 -5
  34. package/.output/server/_libs/radix-ui__react-roving-focus.mjs +15 -4
  35. package/.output/server/_libs/radix-ui__react-scroll-area.mjs +30 -20
  36. package/.output/server/_libs/radix-ui__react-select.mjs +167 -123
  37. package/.output/server/_libs/radix-ui__react-slot.mjs +74 -41
  38. package/.output/server/_libs/radix-ui__react-tabs.mjs +6 -1
  39. package/.output/server/_libs/radix-ui__react-tooltip.mjs +6 -3
  40. package/.output/server/_libs/react-dom.mjs +13 -15
  41. package/.output/server/_libs/react.mjs +45 -45
  42. package/.output/server/_libs/srvx.mjs +409 -53
  43. package/.output/server/_libs/swr.mjs +10 -2
  44. package/.output/server/_libs/tailwind-merge.mjs +286 -41
  45. package/.output/server/_libs/tanstack__history.mjs +9 -13
  46. package/.output/server/_libs/tanstack__react-router.mjs +788 -1092
  47. package/.output/server/_libs/tanstack__react-store.mjs +1 -1
  48. package/.output/server/_libs/tanstack__react-virtual.mjs +82 -7
  49. package/.output/server/_libs/tanstack__router-core.mjs +1841 -2060
  50. package/.output/server/_libs/tanstack__virtual-core.mjs +116 -45
  51. package/.output/server/_libs/use-sync-external-store.mjs +1 -1
  52. package/.output/server/_libs/zod-to-json-schema.mjs +1 -1
  53. package/.output/server/_libs/zod.mjs +5085 -200
  54. package/.output/server/{_sessionId-DL2JQJwR.mjs → _sessionId-DbRqqzqz.mjs} +30 -32
  55. package/.output/server/_ssr/{CompareDrawer-hPTOTmyU.mjs → CompareDrawer-CVhUSZu1.mjs} +29 -31
  56. package/.output/server/_ssr/{ProxyViewerContainer-k0mFaufl.mjs → ProxyViewerContainer-BNnDYtc5.mjs} +106 -71
  57. package/.output/server/_ssr/{ReplayDialog-t6QdwnZh.mjs → ReplayDialog-DVkGajZU.mjs} +30 -32
  58. package/.output/server/_ssr/{RequestAnatomy-BnvWxyac.mjs → RequestAnatomy-_FIfVjDR.mjs} +29 -31
  59. package/.output/server/_ssr/{ResponseView-BhhozRRl.mjs → ResponseView-Bnv5ejVA.mjs} +29 -31
  60. package/.output/server/_ssr/{StreamingChunkSequence-Dl_laTbX.mjs → StreamingChunkSequence-vtwzxw7A.mjs} +29 -31
  61. package/.output/server/_ssr/empty-plugin-adapters-BFgPZ6_d.mjs +6 -0
  62. package/.output/server/_ssr/{index-D1-t1D8F.mjs → index-DFJbRoyq.mjs} +31 -33
  63. package/.output/server/_ssr/index.mjs +1102 -784
  64. package/.output/server/_ssr/{json-viewer-D5Lh2yBU.mjs → json-viewer-BkweASh3.mjs} +29 -31
  65. package/.output/server/_ssr/{router-DaLFEeWW.mjs → router-gFd3g7WM.mjs} +10 -7
  66. package/.output/server/_tanstack-start-manifest_v-DeLutIlq.mjs +4 -0
  67. package/.output/server/index.mjs +85 -103
  68. package/package.json +17 -8
  69. package/src/components/clients/ClientLogo.tsx +5 -1
  70. package/src/components/proxy-viewer/LogEntry.tsx +54 -19
  71. package/src/components/proxy-viewer/RequestToolsPanel.tsx +1 -0
  72. package/src/components/proxy-viewer/ResponseView.tsx +1 -0
  73. package/src/components/proxy-viewer/StreamingChunkSequence.tsx +1 -0
  74. package/src/components/proxy-viewer/TurnGroup.tsx +1 -0
  75. package/src/components/proxy-viewer/anatomy/SegmentBar.tsx +1 -0
  76. package/src/components/proxy-viewer/formats/anthropic/ContentBlocks.tsx +4 -0
  77. package/src/components/proxy-viewer/formats/anthropic/ResponseView.tsx +1 -0
  78. package/src/components/proxy-viewer/formats/openai/ResponseView.tsx +2 -0
  79. package/src/components/proxy-viewer/logEntryVisibility.ts +22 -0
  80. package/src/components/ui/dialog.tsx +1 -1
  81. package/src/components/ui/json-viewer.tsx +2 -0
  82. package/src/components/ui/select.tsx +1 -1
  83. package/src/router.tsx +9 -0
  84. package/.output/public/assets/CompareDrawer-Lx-WeJNC.js +0 -1
  85. package/.output/public/assets/ProxyViewerContainer-BNehwMI0.js +0 -106
  86. package/.output/public/assets/ReplayDialog-CADaXFPE.js +0 -1
  87. package/.output/public/assets/RequestAnatomy-CGoL8ACh.js +0 -1
  88. package/.output/public/assets/ResponseView-BSwM1dCH.js +0 -3
  89. package/.output/public/assets/StreamingChunkSequence-qhWtSx3D.js +0 -1
  90. package/.output/public/assets/_sessionId-2uq_HB8p.js +0 -1
  91. package/.output/public/assets/index-BHXN1Fsx.css +0 -1
  92. package/.output/public/assets/index-T0u1foYL.js +0 -1
  93. package/.output/public/assets/json-viewer-uIwLntt-.js +0 -1
  94. package/.output/public/assets/main-DuFBHsus.js +0 -18
  95. package/.output/server/_libs/@radix-ui/react-use-escape-keydown+[...].mjs +0 -17
  96. package/.output/server/_libs/cfworker__json-schema.mjs +0 -1
  97. package/.output/server/_libs/tiny-invariant.mjs +0 -12
  98. package/.output/server/_libs/tiny-warning.mjs +0 -5
  99. package/.output/server/_tanstack-start-manifest_v-DsSiD2gY.mjs +0 -4
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { I as parseJsonText, c as cn, n as TooltipProvider, o as Tooltip, p as TooltipTrigger, q as TooltipContent, b as copyTextToClipboard } from "./ProxyViewerContainer-k0mFaufl.mjs";
3
- import "./router-DaLFEeWW.mjs";
2
+ import { I as parseJsonText, c as cn, n as TooltipProvider, o as Tooltip, p as TooltipTrigger, q as TooltipContent, b as copyTextToClipboard } from "./ProxyViewerContainer-BNnDYtc5.mjs";
3
+ import "./router-gFd3g7WM.mjs";
4
4
  import "node:fs";
5
5
  import "node:buffer";
6
6
  import "node:path";
@@ -18,42 +18,30 @@ import "../_libs/use-sync-external-store.mjs";
18
18
  import "../_libs/dequal.mjs";
19
19
  import "../_libs/clsx.mjs";
20
20
  import "../_libs/tailwind-merge.mjs";
21
- import "../_libs/radix-ui__react-dialog.mjs";
22
- import "../_libs/radix-ui__primitive.mjs";
23
- import "../_libs/radix-ui__react-compose-refs.mjs";
24
- import "../_libs/radix-ui__react-context.mjs";
25
- import "../_libs/radix-ui__react-id.mjs";
26
- import "../_libs/@radix-ui/react-use-layout-effect+[...].mjs";
27
- import "../_libs/@radix-ui/react-use-controllable-state+[...].mjs";
28
- import "../_libs/@radix-ui/react-dismissable-layer+[...].mjs";
29
- import "../_libs/radix-ui__react-primitive.mjs";
21
+ import "../_libs/class-variance-authority.mjs";
22
+ import "../_libs/tanstack__react-virtual.mjs";
30
23
  import "../_libs/react-dom.mjs";
31
24
  import "util";
32
25
  import "async_hooks";
33
26
  import "stream";
34
- import "../_libs/radix-ui__react-slot.mjs";
35
- import "../_libs/@radix-ui/react-use-callback-ref+[...].mjs";
36
- import "../_libs/@radix-ui/react-use-escape-keydown+[...].mjs";
37
- import "../_libs/radix-ui__react-focus-scope.mjs";
38
- import "../_libs/radix-ui__react-portal.mjs";
39
- import "../_libs/radix-ui__react-presence.mjs";
40
- import "../_libs/radix-ui__react-focus-guards.mjs";
41
- import "../_libs/react-remove-scroll.mjs";
42
- import "tslib";
43
- import "../_libs/react-remove-scroll-bar.mjs";
44
- import "../_libs/react-style-singleton.mjs";
45
- import "../_libs/get-nonce.mjs";
46
- import "../_libs/use-sidecar.mjs";
47
- import "../_libs/use-callback-ref.mjs";
48
- import "../_libs/aria-hidden.mjs";
49
- import "../_libs/class-variance-authority.mjs";
50
- import "../_libs/tanstack__react-virtual.mjs";
51
27
  import "../_libs/tanstack__virtual-core.mjs";
52
28
  import "../_libs/diff.mjs";
29
+ import "../_libs/zod.mjs";
53
30
  import "../_libs/radix-ui__react-select.mjs";
54
31
  import "../_libs/radix-ui__number.mjs";
32
+ import "../_libs/radix-ui__primitive.mjs";
55
33
  import "../_libs/radix-ui__react-collection.mjs";
34
+ import "../_libs/radix-ui__react-context.mjs";
35
+ import "../_libs/radix-ui__react-compose-refs.mjs";
36
+ import "../_libs/radix-ui__react-slot.mjs";
56
37
  import "../_libs/radix-ui__react-direction.mjs";
38
+ import "../_libs/@radix-ui/react-dismissable-layer+[...].mjs";
39
+ import "../_libs/radix-ui__react-primitive.mjs";
40
+ import "../_libs/@radix-ui/react-use-callback-ref+[...].mjs";
41
+ import "../_libs/radix-ui__react-focus-guards.mjs";
42
+ import "../_libs/radix-ui__react-focus-scope.mjs";
43
+ import "../_libs/radix-ui__react-id.mjs";
44
+ import "../_libs/@radix-ui/react-use-layout-effect+[...].mjs";
57
45
  import "../_libs/radix-ui__react-popper.mjs";
58
46
  import "../_libs/floating-ui__react-dom.mjs";
59
47
  import "../_libs/floating-ui__dom.mjs";
@@ -61,23 +49,33 @@ import "../_libs/floating-ui__core.mjs";
61
49
  import "../_libs/floating-ui__utils.mjs";
62
50
  import "../_libs/radix-ui__react-arrow.mjs";
63
51
  import "../_libs/radix-ui__react-use-size.mjs";
52
+ import "../_libs/radix-ui__react-portal.mjs";
53
+ import "../_libs/radix-ui__react-presence.mjs";
54
+ import "../_libs/@radix-ui/react-use-controllable-state+[...].mjs";
64
55
  import "../_libs/radix-ui__react-use-previous.mjs";
65
56
  import "../_libs/@radix-ui/react-visually-hidden+[...].mjs";
66
- import "../_libs/zod.mjs";
57
+ import "../_libs/aria-hidden.mjs";
58
+ import "../_libs/react-remove-scroll.mjs";
59
+ import "tslib";
60
+ import "../_libs/react-remove-scroll-bar.mjs";
61
+ import "../_libs/react-style-singleton.mjs";
62
+ import "../_libs/get-nonce.mjs";
63
+ import "../_libs/use-sidecar.mjs";
64
+ import "../_libs/use-callback-ref.mjs";
65
+ import "../_libs/radix-ui__react-dialog.mjs";
67
66
  import "../_libs/radix-ui__react-tabs.mjs";
68
67
  import "../_libs/radix-ui__react-roving-focus.mjs";
68
+ import "../_libs/@radix-ui/react-use-is-hydrated+[...].mjs";
69
69
  import "../_libs/radix-ui__react-tooltip.mjs";
70
70
  import "../_libs/radix-ui__react-collapsible.mjs";
71
71
  import "../_libs/radix-ui__react-scroll-area.mjs";
72
72
  import "../_libs/tanstack__react-router.mjs";
73
- import "../_libs/tiny-warning.mjs";
74
73
  import "../_libs/tanstack__router-core.mjs";
75
74
  import "../_libs/cookie-es.mjs";
76
75
  import "../_libs/seroval.mjs";
77
76
  import "../_libs/seroval-plugins.mjs";
78
77
  import "node:stream";
79
78
  import "../_libs/tanstack__history.mjs";
80
- import "../_libs/tiny-invariant.mjs";
81
79
  import "node:stream/web";
82
80
  import "../_libs/isbot.mjs";
83
81
  import "node:fs/promises";
@@ -16,15 +16,13 @@ import { Worker } from "node:worker_threads";
16
16
  import { M as McpServer, W as WebStandardStreamableHTTPServerTransport, R as ResourceTemplate } from "../_libs/modelcontextprotocol__server.mjs";
17
17
  import { J as JSZip } from "../_libs/jszip.mjs";
18
18
  import { homedir } from "node:os";
19
- import { d as object, b as string, a as array, n as number, r as record, _ as _enum, u as union, c as boolean, e as unknown, l as literal, h as _null, k as lazy, g as discriminatedUnion } from "../_libs/zod.mjs";
20
- import "../_libs/tiny-warning.mjs";
19
+ import { o as object, b as string, e as array, n as number, r as record, _ as _enum, u as union, d as boolean, a as unknown, l as literal, h as _null, j as lazy, g as discriminatedUnion } from "../_libs/zod.mjs";
21
20
  import "../_libs/tanstack__router-core.mjs";
22
21
  import "../_libs/cookie-es.mjs";
23
22
  import "../_libs/seroval.mjs";
24
23
  import "../_libs/seroval-plugins.mjs";
25
24
  import "node:stream";
26
25
  import "../_libs/tanstack__history.mjs";
27
- import "../_libs/tiny-invariant.mjs";
28
26
  import "node:stream/web";
29
27
  import "../_libs/react-dom.mjs";
30
28
  import "util";
@@ -66,7 +64,7 @@ import "../_libs/immediate.mjs";
66
64
  import "../_libs/setimmediate.mjs";
67
65
  import "../_libs/pako.mjs";
68
66
  const faviconSvg = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20role='img'%20aria-label='Agent%20Inspector'%3e%3cg%20fill='none'%20stroke='%23f59e0b'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'%20%3e%3cpath%20d='M5%2013%20C5%209%208%207%2012%207%20C16%207%2019%209%2019%2013%20C19%2016%2016%2018%2012%2018%20C8%2018%205%2016%205%2013%20Z'%20/%3e%3cpath%20d='M5%2011%20C3.5%209.5%201.5%2010%202%2012.5%20C2.5%2014%204%2013.5%205%2012.5'%20/%3e%3cpath%20d='M19%2011%20C20.5%209.5%2022.5%2010%2022%2012.5%20C21.5%2014%2020%2013.5%2019%2012.5'%20/%3e%3cline%20x1='10'%20y1='7'%20x2='9.5'%20y2='5'%20/%3e%3cline%20x1='14'%20y1='7'%20x2='14.5'%20y2='5'%20/%3e%3cline%20x1='6.5'%20y1='16'%20x2='4.5'%20y2='19.5'%20/%3e%3cline%20x1='9'%20y1='17.5'%20x2='8'%20y2='20.5'%20/%3e%3cline%20x1='15'%20y1='17.5'%20x2='16'%20y2='20.5'%20/%3e%3cline%20x1='17.5'%20y1='16'%20x2='19.5'%20y2='19.5'%20/%3e%3c/g%3e%3ccircle%20cx='9.5'%20cy='4.5'%20r='0.9'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='14.5'%20cy='4.5'%20r='0.9'%20fill='%23f59e0b'%20/%3e%3c/svg%3e";
69
- const appCss = "/assets/index-BHXN1Fsx.css";
67
+ const appCss = "/assets/index-B3YOj8-_.css";
70
68
  const CHUNK_LOAD_RELOAD_AT_KEY = "agent-inspector.chunkLoadReloadAt";
71
69
  const CHUNK_LOAD_RELOAD_WINDOW_MS = 15e3;
72
70
  const CHUNK_LOAD_FAILURE_PATTERNS = [
@@ -178,7 +176,7 @@ function RootDocument({ children }) {
178
176
  ] })
179
177
  ] });
180
178
  }
181
- const $$splitComponentImporter$1 = () => import("./index-D1-t1D8F.mjs");
179
+ const $$splitComponentImporter$1 = () => import("./index-DFJbRoyq.mjs");
182
180
  const Route$L = createFileRoute("/")({
183
181
  ssr: false,
184
182
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
@@ -222,7 +220,7 @@ function decodeSessionIdFromPath(encoded) {
222
220
  function getSessionPath(sessionId) {
223
221
  return `/session/${encodeSessionIdForPath(sessionId)}`;
224
222
  }
225
- const $$splitComponentImporter = () => import("../_sessionId-DL2JQJwR.mjs");
223
+ const $$splitComponentImporter = () => import("../_sessionId-DbRqqzqz.mjs");
226
224
  const Route$K = createFileRoute("/session/$sessionId")({
227
225
  ssr: false,
228
226
  component: lazyRouteComponent($$splitComponentImporter, "component"),
@@ -2504,6 +2502,7 @@ class SessionProcess {
2504
2502
  constructor(sessionId) {
2505
2503
  this.sessionId = sessionId;
2506
2504
  }
2505
+ sessionId;
2507
2506
  child = null;
2508
2507
  pending = /* @__PURE__ */ new Map();
2509
2508
  nextId = 0;
@@ -9688,7 +9687,7 @@ const Route$E = createFileRoute("/api/models")({
9688
9687
  }
9689
9688
  });
9690
9689
  const name = "@tonyclaw/agent-inspector";
9691
- const version = "3.0.17";
9690
+ const version = "3.0.19";
9692
9691
  const packageJson = {
9693
9692
  name,
9694
9693
  version
@@ -10137,6 +10136,8 @@ class LoopbackTimeoutError extends Error {
10137
10136
  this.timeoutMs = timeoutMs;
10138
10137
  this.name = "LoopbackTimeoutError";
10139
10138
  }
10139
+ path;
10140
+ timeoutMs;
10140
10141
  }
10141
10142
  async function callApi(path2, options = {}) {
10142
10143
  if (!path2.startsWith("/")) {
@@ -18451,6 +18452,8 @@ function getRouter() {
18451
18452
  return router2;
18452
18453
  }
18453
18454
  function attachServerSsrStoreCompatibility(router2) {
18455
+ const stateDesc = Object.getOwnPropertyDescriptor(router2, "state");
18456
+ if (stateDesc === void 0) return;
18454
18457
  const existingStores = Object.getOwnPropertyDescriptor(router2, "stores");
18455
18458
  if (existingStores !== void 0) return;
18456
18459
  Object.defineProperty(router2, "stores", {
@@ -0,0 +1,4 @@
1
+ const tsrStartManifest = () => ({ routes: { __root__: { filePath: "C:/Users/claw/workspace/agent-inspector/src/routes/__root.tsx", children: ["/", "/api/alerts", "/api/config", "/api/groups", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/pi-agent", "/api/providers", "/api/runs", "/api/sessions", "/proxy/$", "/session/$sessionId", "/api/ecosystem/packages", "/api/ecosystem/tasks", "/api/knowledge/candidates", "/api/knowledge/project-context", "/api/knowledge/search", "/api/ecosystem/recipes/$recipeId/run", "/api/knowledge/sessions/$sessionId/candidates"], preloads: ["/assets/index-B-rVc2xu.js"], scripts: [{ attrs: { type: "module", async: true, src: "/assets/index-B-rVc2xu.js" } }] }, "/": { filePath: "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", children: void 0, preloads: ["/assets/index-BtCnkWve.js", "/assets/ProxyViewerContainer-B7PZaz5j.js"] }, "/session/$sessionId": { filePath: "C:/Users/claw/workspace/agent-inspector/src/routes/session/$sessionId.tsx", children: void 0, preloads: ["/assets/_sessionId-CtoSDXDC.js", "/assets/ProxyViewerContainer-B7PZaz5j.js"] } } });
2
+ export {
3
+ tsrStartManifest
4
+ };
@@ -1,5 +1,5 @@
1
1
  globalThis.__nitro_main__ = import.meta.url;
2
- import { N as NodeResponse, s as serve } from "./_libs/srvx.mjs";
2
+ import { c as NodeResponse, s as serve } from "./_libs/srvx.mjs";
3
3
  import { d as defineHandler, H as HTTPError, t as toEventHandler, a as defineLazyEventHandler, b as H3Core } from "./_libs/h3.mjs";
4
4
  import { d as decodePath, w as withLeadingSlash, a as withoutTrailingSlash, j as joinURL } from "./_libs/ufo.mjs";
5
5
  import { promises } from "node:fs";
@@ -11,148 +11,130 @@ import "node:stream/promises";
11
11
  import "node:https";
12
12
  import "node:http2";
13
13
  import "./_libs/rou3.mjs";
14
- function lazyService(loader) {
15
- let promise, mod;
16
- return {
17
- fetch(req) {
18
- if (mod) {
19
- return mod.fetch(req);
20
- }
21
- if (!promise) {
22
- promise = loader().then((_mod) => mod = _mod.default || _mod);
23
- }
24
- return promise.then((mod2) => mod2.fetch(req));
25
- }
26
- };
27
- }
28
- const services = {
29
- ["ssr"]: lazyService(() => import("./_ssr/index.mjs"))
30
- };
31
- globalThis.__nitro_vite_envs__ = services;
32
14
  const headers = ((m) => function headersRouteRule(event) {
33
15
  for (const [key2, value] of Object.entries(m.options || {})) {
34
16
  event.res.headers.set(key2, value);
35
17
  }
36
18
  });
37
19
  const assets = {
20
+ "/assets/CompareDrawer-DR3WgrId.js": {
21
+ "type": "text/javascript; charset=utf-8",
22
+ "etag": '"4bc4-g9wGCVQQ0+DTCWBtzf5/WQzC1ms"',
23
+ "mtime": "2026-07-09T03:01:37.217Z",
24
+ "size": 19396,
25
+ "path": "../public/assets/CompareDrawer-DR3WgrId.js"
26
+ },
38
27
  "/assets/alibaba-TTwafVwX.svg": {
39
28
  "type": "image/svg+xml",
40
29
  "etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
41
- "mtime": "2026-07-08T08:28:44.111Z",
30
+ "mtime": "2026-07-09T03:01:37.217Z",
42
31
  "size": 5915,
43
32
  "path": "../public/assets/alibaba-TTwafVwX.svg"
44
33
  },
45
- "/assets/agent-inspector-58K1_MsC.ico": {
46
- "type": "image/vnd.microsoft.icon",
47
- "etag": '"38fa-ZD8kPABHYjPIkcH82FMY6iZM7fI"',
48
- "mtime": "2026-07-08T08:28:44.111Z",
49
- "size": 14586,
50
- "path": "../public/assets/agent-inspector-58K1_MsC.ico"
51
- },
52
- "/assets/CompareDrawer-Lx-WeJNC.js": {
34
+ "/assets/index-BNCySZM-.js": {
53
35
  "type": "text/javascript; charset=utf-8",
54
- "etag": '"4bc3-tbu6Xh1vBvYDoKpIc4DM4rksx3Y"',
55
- "mtime": "2026-07-08T08:28:44.111Z",
56
- "size": 19395,
57
- "path": "../public/assets/CompareDrawer-Lx-WeJNC.js"
36
+ "etag": '"1cd2d-ANSOo1HmeEqtriGBeldBUquTNnk"',
37
+ "mtime": "2026-07-09T03:01:37.219Z",
38
+ "size": 118061,
39
+ "path": "../public/assets/index-BNCySZM-.js"
58
40
  },
59
- "/assets/index-T0u1foYL.js": {
41
+ "/assets/index-BtCnkWve.js": {
60
42
  "type": "text/javascript; charset=utf-8",
61
- "etag": '"264-h0V4RQjClTku18FOwNfcV0YtjQQ"',
62
- "mtime": "2026-07-08T08:28:44.111Z",
63
- "size": 612,
64
- "path": "../public/assets/index-T0u1foYL.js"
65
- },
66
- "/assets/json-viewer-uIwLntt-.js": {
67
- "type": "text/javascript; charset=utf-8",
68
- "etag": '"1ae6-cD2tWuizuTOPAPpUEGSuMcAzEZE"',
69
- "mtime": "2026-07-08T08:28:44.112Z",
70
- "size": 6886,
71
- "path": "../public/assets/json-viewer-uIwLntt-.js"
43
+ "etag": '"265-sEh/TwYI3EgJbVaR+VUN3hntyS8"',
44
+ "mtime": "2026-07-09T03:01:37.217Z",
45
+ "size": 613,
46
+ "path": "../public/assets/index-BtCnkWve.js"
72
47
  },
73
48
  "/assets/minimax-BPMzvuL-.jpeg": {
74
49
  "type": "image/jpeg",
75
50
  "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
76
- "mtime": "2026-07-08T08:28:44.111Z",
51
+ "mtime": "2026-07-09T03:01:37.217Z",
77
52
  "size": 6918,
78
53
  "path": "../public/assets/minimax-BPMzvuL-.jpeg"
79
54
  },
80
- "/assets/index-BHXN1Fsx.css": {
81
- "type": "text/css; charset=utf-8",
82
- "etag": '"25b0d-UyzOlNKIaucQXEUHv/FUiQk9+WM"',
83
- "mtime": "2026-07-08T08:28:44.111Z",
84
- "size": 154381,
85
- "path": "../public/assets/index-BHXN1Fsx.css"
86
- },
87
- "/assets/RequestAnatomy-CGoL8ACh.js": {
55
+ "/assets/json-viewer-DT6QQY81.js": {
88
56
  "type": "text/javascript; charset=utf-8",
89
- "etag": '"43f2-3yCxwsYxkh4fRuvNcu0N2yWYmoA"',
90
- "mtime": "2026-07-08T08:28:44.112Z",
91
- "size": 17394,
92
- "path": "../public/assets/RequestAnatomy-CGoL8ACh.js"
57
+ "etag": '"1ae7-RiK2CqjzqBcc3r3qhTcOUeHnVT0"',
58
+ "mtime": "2026-07-09T03:01:37.219Z",
59
+ "size": 6887,
60
+ "path": "../public/assets/json-viewer-DT6QQY81.js"
93
61
  },
94
- "/assets/index-DPc2wzgW.js": {
95
- "type": "text/javascript; charset=utf-8",
96
- "etag": '"1cd2c-UeDYk+i1ETjZJB+kOwGwo0jEFlw"',
97
- "mtime": "2026-07-08T08:28:44.112Z",
98
- "size": 118060,
99
- "path": "../public/assets/index-DPc2wzgW.js"
100
- },
101
- "/assets/ResponseView-BSwM1dCH.js": {
102
- "type": "text/javascript; charset=utf-8",
103
- "etag": '"47fc-bpQkn8z+vA/JeSQA6o3uVrTteds"',
104
- "mtime": "2026-07-08T08:28:44.112Z",
105
- "size": 18428,
106
- "path": "../public/assets/ResponseView-BSwM1dCH.js"
62
+ "/assets/agent-inspector-58K1_MsC.ico": {
63
+ "type": "image/vnd.microsoft.icon",
64
+ "etag": '"38fa-ZD8kPABHYjPIkcH82FMY6iZM7fI"',
65
+ "mtime": "2026-07-09T03:01:37.217Z",
66
+ "size": 14586,
67
+ "path": "../public/assets/agent-inspector-58K1_MsC.ico"
107
68
  },
108
- "/assets/ReplayDialog-CADaXFPE.js": {
69
+ "/assets/ReplayDialog-Bt9jgdvJ.js": {
109
70
  "type": "text/javascript; charset=utf-8",
110
- "etag": '"3347-uFrVkOUPbpSqnn4P2cQiRQFg5dM"',
111
- "mtime": "2026-07-08T08:28:44.112Z",
112
- "size": 13127,
113
- "path": "../public/assets/ReplayDialog-CADaXFPE.js"
71
+ "etag": '"3348-WtWDGmK5jybK+cuTpwIgPOGFwd4"',
72
+ "mtime": "2026-07-09T03:01:37.217Z",
73
+ "size": 13128,
74
+ "path": "../public/assets/ReplayDialog-Bt9jgdvJ.js"
114
75
  },
115
- "/assets/StreamingChunkSequence-qhWtSx3D.js": {
76
+ "/assets/RequestAnatomy-C-4630lw.js": {
116
77
  "type": "text/javascript; charset=utf-8",
117
- "etag": '"e95-sxTbAxYB6Grs18w+Xyj04D+BxcY"',
118
- "mtime": "2026-07-08T08:28:44.112Z",
119
- "size": 3733,
120
- "path": "../public/assets/StreamingChunkSequence-qhWtSx3D.js"
78
+ "etag": '"43f3-fgvl7dr+n5X7ytjRQEqDqOFrZb4"',
79
+ "mtime": "2026-07-09T03:01:37.219Z",
80
+ "size": 17395,
81
+ "path": "../public/assets/RequestAnatomy-C-4630lw.js"
121
82
  },
122
- "/assets/main-DuFBHsus.js": {
83
+ "/assets/ResponseView-f_JrN1iQ.js": {
123
84
  "type": "text/javascript; charset=utf-8",
124
- "etag": '"51754-FUzKCD1aGZx7Uxl165jF/GgKtcQ"',
125
- "mtime": "2026-07-08T08:28:44.111Z",
126
- "size": 333652,
127
- "path": "../public/assets/main-DuFBHsus.js"
85
+ "etag": '"47fe-Cr70ks/fq7wCCjGwBxxd8BVAcZU"',
86
+ "mtime": "2026-07-09T03:01:37.219Z",
87
+ "size": 18430,
88
+ "path": "../public/assets/ResponseView-f_JrN1iQ.js"
128
89
  },
129
90
  "/assets/zhipuai-BPNAnxo-.svg": {
130
91
  "type": "image/svg+xml",
131
92
  "etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
132
- "mtime": "2026-07-08T08:28:44.111Z",
93
+ "mtime": "2026-07-09T03:01:37.217Z",
133
94
  "size": 11256,
134
95
  "path": "../public/assets/zhipuai-BPNAnxo-.svg"
135
96
  },
97
+ "/assets/StreamingChunkSequence-D8dBm1d8.js": {
98
+ "type": "text/javascript; charset=utf-8",
99
+ "etag": '"e96-AN1j5BG971yE+OvQe2JDt7ZgrdI"',
100
+ "mtime": "2026-07-09T03:01:37.219Z",
101
+ "size": 3734,
102
+ "path": "../public/assets/StreamingChunkSequence-D8dBm1d8.js"
103
+ },
104
+ "/assets/_sessionId-CtoSDXDC.js": {
105
+ "type": "text/javascript; charset=utf-8",
106
+ "etag": '"36d-MA+Cf4ijIFGfW0n0A0CkOZUFU/4"',
107
+ "mtime": "2026-07-09T03:01:37.217Z",
108
+ "size": 877,
109
+ "path": "../public/assets/_sessionId-CtoSDXDC.js"
110
+ },
111
+ "/assets/index-B3YOj8-_.css": {
112
+ "type": "text/css; charset=utf-8",
113
+ "etag": '"25d7e-wT0HU4Abt/tuojN/MHx6/a/L3BA"',
114
+ "mtime": "2026-07-09T03:01:37.217Z",
115
+ "size": 155006,
116
+ "path": "../public/assets/index-B3YOj8-_.css"
117
+ },
118
+ "/assets/index-B-rVc2xu.js": {
119
+ "type": "text/javascript; charset=utf-8",
120
+ "etag": '"5231f-IxjASzSyrrUSlC4lxQL2r/KbijU"',
121
+ "mtime": "2026-07-09T03:01:37.217Z",
122
+ "size": 336671,
123
+ "path": "../public/assets/index-B-rVc2xu.js"
124
+ },
136
125
  "/assets/qwen-CONDcHqt.png": {
137
126
  "type": "image/png",
138
127
  "etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
139
- "mtime": "2026-07-08T08:28:44.111Z",
128
+ "mtime": "2026-07-09T03:01:37.217Z",
140
129
  "size": 357059,
141
130
  "path": "../public/assets/qwen-CONDcHqt.png"
142
131
  },
143
- "/assets/_sessionId-2uq_HB8p.js": {
144
- "type": "text/javascript; charset=utf-8",
145
- "etag": '"36c-Twr2jkpHT9aKqPmu9XD0Wj/28/U"',
146
- "mtime": "2026-07-08T08:28:44.111Z",
147
- "size": 876,
148
- "path": "../public/assets/_sessionId-2uq_HB8p.js"
149
- },
150
- "/assets/ProxyViewerContainer-BNehwMI0.js": {
132
+ "/assets/ProxyViewerContainer-B7PZaz5j.js": {
151
133
  "type": "text/javascript; charset=utf-8",
152
- "etag": '"bab5c-reTrPPm/VKGtnINOhj+7T+0rbb4"',
153
- "mtime": "2026-07-08T08:28:44.112Z",
154
- "size": 764764,
155
- "path": "../public/assets/ProxyViewerContainer-BNehwMI0.js"
134
+ "etag": '"bd773-O18dWHbUpwNcPJ1CJIocyfAmfPA"',
135
+ "mtime": "2026-07-09T03:01:37.219Z",
136
+ "size": 776051,
137
+ "path": "../public/assets/ProxyViewerContainer-B7PZaz5j.js"
156
138
  }
157
139
  };
158
140
  function readAsset(id) {
@@ -180,7 +162,7 @@ const EncodingMap = {
180
162
  br: ".br",
181
163
  zstd: ".zst"
182
164
  };
183
- const _aYWmx5 = defineHandler((event) => {
165
+ const _TahAqH = defineHandler((event) => {
184
166
  if (event.req.method && !METHODS.has(event.req.method)) {
185
167
  return;
186
168
  }
@@ -252,15 +234,15 @@ const findRouteRules = /* @__PURE__ */ (() => {
252
234
  return r;
253
235
  };
254
236
  })();
255
- const _lazy_bRSXJB = defineLazyEventHandler(() => import("./_chunks/ssr-renderer.mjs"));
237
+ const _lazy_9A6hFz = defineLazyEventHandler(() => import("./_chunks/ssr-renderer.mjs"));
256
238
  const findRoute = /* @__PURE__ */ (() => {
257
- const data = { route: "/**", handler: _lazy_bRSXJB };
239
+ const data = { route: "/**", handler: _lazy_9A6hFz };
258
240
  return ((_m, p) => {
259
241
  return { data, params: { "_": p.slice(1) } };
260
242
  });
261
243
  })();
262
244
  const globalMiddleware = [
263
- toEventHandler(_aYWmx5)
245
+ toEventHandler(_TahAqH)
264
246
  ].filter(Boolean);
265
247
  const errorHandler$1 = (error, event) => {
266
248
  const res = defaultHandler(error, event);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tonyclaw/agent-inspector",
3
- "version": "3.0.17",
3
+ "version": "3.0.19",
4
4
  "type": "module",
5
5
  "description": "Agent observability and knowledge capture layer for AI coding tools.",
6
6
  "license": "MIT",
@@ -71,10 +71,7 @@
71
71
  "dependencies": {
72
72
  "@mariozechner/pi-agent-core": "^0.73.1",
73
73
  "@mariozechner/pi-ai": "^0.73.1",
74
- "@mariozechner/pi-coding-agent": "^0.73.1",
75
74
  "@modelcontextprotocol/server": "^2.0.0-alpha.2",
76
- "@radix-ui/react-dialog": "^1.1.14",
77
- "@radix-ui/react-select": "^2.2.6",
78
75
  "@tailwindcss/typography": "^0.5.19",
79
76
  "@tanstack/react-router": "^1.160.2",
80
77
  "@tanstack/react-start": "^1.161.0",
@@ -104,24 +101,36 @@
104
101
  "@eslint/js": "^10.0.1",
105
102
  "@ladle/react": "^5.1.1",
106
103
  "@tailwindcss/vite": "^4.1.18",
107
- "@types/bun": "latest",
104
+ "@types/bun": "1.3.8",
108
105
  "@types/react": "^19",
109
106
  "@types/react-dom": "^19",
110
107
  "@typescript-eslint/eslint-plugin": "^8.55.0",
111
108
  "@typescript-eslint/parser": "^8.55.0",
112
109
  "@vitejs/plugin-react": "^5.1.4",
113
- "esbuild": "^0.25.0",
110
+ "esbuild": "^0.28.1",
114
111
  "eslint": "^9.32.0",
115
112
  "eslint-plugin-eslint-comments": "^3.2.0",
116
113
  "eslint-plugin-functional": "^9.0.2",
117
114
  "eslint-plugin-unicorn": "^63.0.0",
118
115
  "husky": "^9.1.7",
119
116
  "knip": "^5.83.1",
120
- "nitro": "^3.0.260603-beta",
117
+ "nitro": "^3.0.260610-beta",
121
118
  "playwright": "^1.60.0",
122
119
  "tailwindcss": "^4.1.11",
123
120
  "typescript": "^5.9.3",
124
- "vite": "^7.3.1",
121
+ "vite": "^7.3.6",
125
122
  "vite-tsconfig-paths": "^6.1.1"
123
+ },
124
+ "overrides": {
125
+ "undici": ">=7.24.0 <8.0.0",
126
+ "rollup": ">=4.59.0 <5.0.0",
127
+ "postcss": ">=8.5.10 <9.0.0",
128
+ "js-yaml": ">=4.1.2 <5.0.0",
129
+ "flatted": ">=3.4.0 <4.0.0",
130
+ "smol-toml": ">=1.6.1 <2.0.0",
131
+ "koa": ">=2.16.4 <3.0.0",
132
+ "@babel/core": ">=7.29.1 <8.0.0",
133
+ "@typescript-eslint/typescript-estree": "^8.63.0",
134
+ "vite": "^7.3.6"
126
135
  }
127
136
  }
@@ -51,7 +51,11 @@ export function detectClientApp(input: ClientAppDetectionInput): ClientApp {
51
51
  }
52
52
  if (matchesAny(haystack, ["mimocode", "mimo-code", "mimo code"])) return "mimo-code";
53
53
  if (matchesAny(haystack, ["opencode", "open-code", "open code"])) return "opencode";
54
- if (matchesAny(haystack, ["claude-code", "claude code", "claudecode"])) return "claude-code";
54
+ if (
55
+ matchesAny(haystack, ["claude-code", "claude code", "claudecode", "claude-cli", "claude cli"])
56
+ ) {
57
+ return "claude-code";
58
+ }
55
59
  if (matchesAny(haystack, ["codex desktop", "codex-cli", "openai-codex", "codex"])) {
56
60
  return "codex";
57
61
  }
@@ -41,6 +41,8 @@ import { getLogFormatAdapter, resolveLogFormat } from "./log-formats";
41
41
  import { LOG_FOCUS_REQUEST_EVENT, readLogFocusRequest, type LogFocusTab } from "./logFocus";
42
42
  import {
43
43
  shouldShowHeadersDiffButton,
44
+ shouldShowHeadersTab,
45
+ shouldShowRawHeadersTab,
44
46
  shouldShowRawRequestTab,
45
47
  shouldShowRequestDiffButton,
46
48
  } from "./logEntryVisibility";
@@ -568,21 +570,40 @@ export const LogEntry = memo(function ({
568
570
  }
569
571
  : null,
570
572
  },
571
- headers: {
572
- copyLabel: "Copy headers",
573
- copyText: headersText,
574
- copyCopied: headersCopy.copied,
575
- onCopy: headersCopy.copy,
576
- // Headers are a flat dict, no JSON tree to expand.
577
- expansion: null,
578
- },
579
- "raw-headers": {
580
- copyLabel: "Copy raw headers",
581
- copyText: rawHeadersText,
582
- copyCopied: rawHeadersCopy.copied,
583
- onCopy: rawHeadersCopy.copy,
584
- expansion: null,
585
- },
573
+ // Tab-level actions mirror the visibility rules in logEntryVisibility:
574
+ // when the corresponding tab is hidden because the log has no captured
575
+ // headers, the header bar must not surface a Copy button either. We
576
+ // therefore omit the key entirely (header renders no actions) instead
577
+ // of returning a bundle with `copyText: null`.
578
+ ...(shouldShowHeadersTab(
579
+ viewMode,
580
+ displayLog.headers !== undefined && Object.keys(displayLog.headers).length > 0,
581
+ )
582
+ ? {
583
+ headers: {
584
+ copyLabel: "Copy headers",
585
+ copyText: headersText,
586
+ copyCopied: headersCopy.copied,
587
+ onCopy: headersCopy.copy,
588
+ // Headers are a flat dict, no JSON tree to expand.
589
+ expansion: null,
590
+ },
591
+ }
592
+ : {}),
593
+ ...(shouldShowRawHeadersTab(
594
+ viewMode,
595
+ displayLog.rawHeaders !== undefined && Object.keys(displayLog.rawHeaders).length > 0,
596
+ )
597
+ ? {
598
+ "raw-headers": {
599
+ copyLabel: "Copy raw headers",
600
+ copyText: rawHeadersText,
601
+ copyCopied: rawHeadersCopy.copied,
602
+ onCopy: rawHeadersCopy.copy,
603
+ expansion: null,
604
+ },
605
+ }
606
+ : {}),
586
607
  raw: {
587
608
  copyLabel: responsePreviewIsActive ? "Copy loaded response preview" : "Copy response",
588
609
  copyText: responseTextForView,
@@ -842,12 +863,19 @@ export const LogEntry = memo(function ({
842
863
  variant="line"
843
864
  className="bg-white/[0.04] inspector-scrollbar relative mx-3 h-auto w-[calc(100%-1.5rem)] justify-start overflow-x-auto rounded-[8px] p-1"
844
865
  >
845
- {viewMode === "full" && (
866
+ {shouldShowRawHeadersTab(
867
+ viewMode,
868
+ displayLog.rawHeaders !== undefined &&
869
+ Object.keys(displayLog.rawHeaders).length > 0,
870
+ ) && (
846
871
  <TabsTrigger className={TAB_TRIGGER_CLASS} value="raw-headers">
847
872
  Raw Headers
848
873
  </TabsTrigger>
849
874
  )}
850
- {viewMode === "full" && (
875
+ {shouldShowHeadersTab(
876
+ viewMode,
877
+ displayLog.headers !== undefined && Object.keys(displayLog.headers).length > 0,
878
+ ) && (
851
879
  <TabsTrigger className={TAB_TRIGGER_CLASS} value="headers">
852
880
  Headers
853
881
  </TabsTrigger>
@@ -999,7 +1027,10 @@ export const LogEntry = memo(function ({
999
1027
  </TabsContent>
1000
1028
  )}
1001
1029
 
1002
- {viewMode === "full" && (
1030
+ {shouldShowHeadersTab(
1031
+ viewMode,
1032
+ displayLog.headers !== undefined && Object.keys(displayLog.headers).length > 0,
1033
+ ) && (
1003
1034
  <TabsContent value="headers">
1004
1035
  {activeTab === "headers" && (
1005
1036
  <ExpandedPanel>
@@ -1033,7 +1064,11 @@ export const LogEntry = memo(function ({
1033
1064
  </TabsContent>
1034
1065
  )}
1035
1066
 
1036
- {viewMode === "full" && (
1067
+ {shouldShowRawHeadersTab(
1068
+ viewMode,
1069
+ displayLog.rawHeaders !== undefined &&
1070
+ Object.keys(displayLog.rawHeaders).length > 0,
1071
+ ) && (
1037
1072
  <TabsContent value="raw-headers">
1038
1073
  {activeTab === "raw-headers" && (
1039
1074
  <ExpandedPanel>
@@ -183,6 +183,7 @@ function matchesQuery(tool: RequestToolDefinition, query: string): boolean {
183
183
  return haystack.includes(query);
184
184
  }
185
185
 
186
+ // eslint-disable-next-line @typescript-eslint/no-shadow -- named function gives React DevTools a readable displayName
186
187
  export const RequestTools = memo(function RequestTools({
187
188
  summary,
188
189
  calledToolNames,