@tonyclaw/llm-inspector 1.19.3 → 1.20.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.
- package/.output/cli.js +478 -14
- package/.output/nitro.json +1 -1
- package/.output/public/assets/{CompareDrawer-AMCFfwDw.js → CompareDrawer-DaEfZjXJ.js} +1 -1
- package/.output/public/assets/{ProxyViewerContainer-Bi1QXDYo.js → ProxyViewerContainer-RhHgw8Ej.js} +10 -10
- package/.output/public/assets/{ReplayDialog-C1x2-73A.js → ReplayDialog-BjQGoECv.js} +1 -1
- package/.output/public/assets/{RequestAnatomy-CBNqMbxo.js → RequestAnatomy-QU9eugVN.js} +1 -1
- package/.output/public/assets/{ResponseView-BsBxYW8b.js → ResponseView-aYiH9vL2.js} +1 -1
- package/.output/public/assets/{StreamingChunkSequence-BjX20-9R.js → StreamingChunkSequence-Cpx_Qp8w.js} +1 -1
- package/.output/public/assets/_sessionId-BloLpBNK.js +1 -0
- package/.output/public/assets/index-BKzkybBt.js +1 -0
- package/.output/public/assets/{index-Bqi9RAGS.css → index-DUZVFAL8.css} +1 -1
- package/.output/public/assets/{json-viewer-CyJ5nYhX.js → json-viewer-iMGYFtiP.js} +1 -1
- package/.output/public/assets/{main-DpODUL6C.js → main-DLMLYxyQ.js} +7 -7
- package/.output/server/{_sessionId-DJ9Eab2q.mjs → _sessionId-B-zUQeOo.mjs} +2 -2
- package/.output/server/_ssr/{CompareDrawer-CZjtgISX.mjs → CompareDrawer-CX6uQvQB.mjs} +3 -3
- package/.output/server/_ssr/{ProxyViewerContainer-PjfpTAwC.mjs → ProxyViewerContainer-DsQWgvwt.mjs} +77 -10
- package/.output/server/_ssr/{ReplayDialog-OiEK8Sbt.mjs → ReplayDialog-BrMgVKb9.mjs} +4 -4
- package/.output/server/_ssr/{RequestAnatomy-DN7d-srT.mjs → RequestAnatomy-ll7Vbnl7.mjs} +2 -2
- package/.output/server/_ssr/{ResponseView-7iJG8mU_.mjs → ResponseView-CdloAejU.mjs} +3 -3
- package/.output/server/_ssr/{StreamingChunkSequence-DgtV9nLT.mjs → StreamingChunkSequence-C9LC9S8C.mjs} +3 -3
- package/.output/server/_ssr/{index-YZwFhEEr.mjs → index-DBs4Nc1G.mjs} +2 -2
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{json-viewer-0GHTWO7g.mjs → json-viewer-l1tDAk7X.mjs} +2 -2
- package/.output/server/_ssr/{router-DCW8d1sw.mjs → router-O1ouXZtT.mjs} +4 -4
- package/.output/server/{_tanstack-start-manifest_v-CxTbhyJ_.mjs → _tanstack-start-manifest_v-OkvTTh2H.mjs} +1 -1
- package/.output/server/index.mjs +69 -69
- package/package.json +1 -1
- package/src/assets/favicon.svg +13 -0
- package/src/cli/doctor.ts +530 -0
- package/src/cli.ts +6 -0
- package/src/components/ui/crab-logo.tsx +50 -0
- package/.output/public/assets/_sessionId-DE0J5YHU.js +0 -1
- package/.output/public/assets/index-DqgTchf4.js +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports } from "./_libs/react.mjs";
|
|
2
|
-
import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-
|
|
3
|
-
import { R as Route$j } from "./_ssr/router-
|
|
2
|
+
import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-DsQWgvwt.mjs";
|
|
3
|
+
import { R as Route$j } from "./_ssr/router-O1ouXZtT.mjs";
|
|
4
4
|
import "./_libs/jszip.mjs";
|
|
5
5
|
import "./_libs/modelcontextprotocol__server.mjs";
|
|
6
6
|
import "./_libs/swr.mjs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, c as cn, B as Badge, f as formatTokens } from "./ProxyViewerContainer-
|
|
3
|
-
import { JsonViewerFromString } from "./json-viewer-
|
|
4
|
-
import "./router-
|
|
2
|
+
import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, c as cn, B as Badge, f as formatTokens } from "./ProxyViewerContainer-DsQWgvwt.mjs";
|
|
3
|
+
import { JsonViewerFromString } from "./json-viewer-l1tDAk7X.mjs";
|
|
4
|
+
import "./router-O1ouXZtT.mjs";
|
|
5
5
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
6
|
import "../_libs/jszip.mjs";
|
|
7
7
|
import { X, J as Rows3, K as Columns2, m as Minus, P as Plus, l as Pencil, f as ChevronRight, N as Equal, C as Check, a as Copy } from "../_libs/lucide-react.mjs";
|
package/.output/server/_ssr/{ProxyViewerContainer-PjfpTAwC.mjs → ProxyViewerContainer-DsQWgvwt.mjs}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports, a as React } from "../_libs/react.mjs";
|
|
2
|
-
import { C as CapturedLogSchema, D as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, a as RuntimeConfigSchema, r as requestFormatForPath, c as createPendingProviderTestResults, P as ProviderTestResultsSchema, d as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, g as getSessionPath, e as ProviderConfigSchema, s as stripClaudeCodeBillingHeader, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, b as AnthropicRequestSchema } from "./router-
|
|
2
|
+
import { C as CapturedLogSchema, D as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, a as RuntimeConfigSchema, r as requestFormatForPath, c as createPendingProviderTestResults, P as ProviderTestResultsSchema, d as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, g as getSessionPath, e as ProviderConfigSchema, s as stripClaudeCodeBillingHeader, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, b as AnthropicRequestSchema } from "./router-O1ouXZtT.mjs";
|
|
3
3
|
import { u as useSWR, a as useSWRConfig } from "../_libs/swr.mjs";
|
|
4
4
|
import { J as JSZip } from "../_libs/jszip.mjs";
|
|
5
5
|
import { c as clsx } from "../_libs/clsx.mjs";
|
|
@@ -275,7 +275,7 @@ function getStatusCategory(status) {
|
|
|
275
275
|
if (status >= 500) return "server_error";
|
|
276
276
|
return "pending";
|
|
277
277
|
}
|
|
278
|
-
const version = "1.
|
|
278
|
+
const version = "1.20.0";
|
|
279
279
|
const packageJson = {
|
|
280
280
|
version
|
|
281
281
|
};
|
|
@@ -1343,27 +1343,27 @@ function useCopyFeedback(text) {
|
|
|
1343
1343
|
return { copied, copy };
|
|
1344
1344
|
}
|
|
1345
1345
|
const LazyCompareDrawer = reactExports.lazy(
|
|
1346
|
-
() => import("./CompareDrawer-
|
|
1346
|
+
() => import("./CompareDrawer-CX6uQvQB.mjs").then((m) => ({ default: m.CompareDrawer }))
|
|
1347
1347
|
);
|
|
1348
1348
|
const LazyReplayDialog = reactExports.lazy(
|
|
1349
|
-
() => import("./ReplayDialog-
|
|
1349
|
+
() => import("./ReplayDialog-BrMgVKb9.mjs").then((m) => ({ default: m.ReplayDialog }))
|
|
1350
1350
|
);
|
|
1351
1351
|
const LazyRequestAnatomy = reactExports.lazy(
|
|
1352
|
-
() => import("./RequestAnatomy-
|
|
1352
|
+
() => import("./RequestAnatomy-ll7Vbnl7.mjs").then((m) => ({ default: m.RequestAnatomy }))
|
|
1353
1353
|
);
|
|
1354
1354
|
const LazyResponseView = reactExports.lazy(
|
|
1355
|
-
() => import("./ResponseView-
|
|
1355
|
+
() => import("./ResponseView-CdloAejU.mjs").then((m) => ({ default: m.ResponseView }))
|
|
1356
1356
|
);
|
|
1357
1357
|
const LazyStreamingChunkSequence = reactExports.lazy(
|
|
1358
|
-
() => import("./StreamingChunkSequence-
|
|
1358
|
+
() => import("./StreamingChunkSequence-C9LC9S8C.mjs").then((m) => ({
|
|
1359
1359
|
default: m.StreamingChunkSequence
|
|
1360
1360
|
}))
|
|
1361
1361
|
);
|
|
1362
1362
|
const LazyJsonViewer = reactExports.lazy(
|
|
1363
|
-
() => import("./json-viewer-
|
|
1363
|
+
() => import("./json-viewer-l1tDAk7X.mjs").then((m) => ({ default: m.JsonViewer }))
|
|
1364
1364
|
);
|
|
1365
1365
|
const LazyJsonViewerFromString = reactExports.lazy(
|
|
1366
|
-
() => import("./json-viewer-
|
|
1366
|
+
() => import("./json-viewer-l1tDAk7X.mjs").then((m) => ({ default: m.JsonViewerFromString }))
|
|
1367
1367
|
);
|
|
1368
1368
|
const HIGHLIGHT_DURATION_MS = 1200;
|
|
1369
1369
|
const MAX_HIGHLIGHT_ATTEMPTS = 12;
|
|
@@ -3154,7 +3154,74 @@ function CrabLogo({ className }) {
|
|
|
3154
3154
|
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "6.5", y1: "16", x2: "4.5", y2: "19.5" }),
|
|
3155
3155
|
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "9", y1: "17.5", x2: "8", y2: "20.5" }),
|
|
3156
3156
|
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "15", y1: "17.5", x2: "16", y2: "20.5" }),
|
|
3157
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "17.5", y1: "16", x2: "19.5", y2: "19.5" })
|
|
3157
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "17.5", y1: "16", x2: "19.5", y2: "19.5" }),
|
|
3158
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("g", { children: [
|
|
3159
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3160
|
+
"path",
|
|
3161
|
+
{
|
|
3162
|
+
d: "M5.6 17.7 L8.4 15.4 L10.8 18 C9.1 18.9 7.2 18.8 5.6 17.7 Z",
|
|
3163
|
+
fill: "#2f6b3f",
|
|
3164
|
+
stroke: "none",
|
|
3165
|
+
opacity: "0.95"
|
|
3166
|
+
}
|
|
3167
|
+
),
|
|
3168
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3169
|
+
"path",
|
|
3170
|
+
{
|
|
3171
|
+
d: "M6.9 17.5 L8.4 16 L9.8 17.7 C8.9 18.1 7.8 18.1 6.9 17.5 Z",
|
|
3172
|
+
fill: "#6fb36f",
|
|
3173
|
+
stroke: "none",
|
|
3174
|
+
opacity: "0.95"
|
|
3175
|
+
}
|
|
3176
|
+
),
|
|
3177
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M8.4 16 L8.4 18.4", stroke: "#d6b45f", strokeWidth: "0.34" }),
|
|
3178
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "10.6", cy: "17.75", r: "0.36", fill: "#c2412d", stroke: "none" })
|
|
3179
|
+
] }),
|
|
3180
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("g", { children: [
|
|
3181
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3182
|
+
"path",
|
|
3183
|
+
{
|
|
3184
|
+
d: "M8 16.5 L11.9 13.6 L15.8 16.8 C13.3 18.4 10.4 18.3 8 16.5 Z",
|
|
3185
|
+
fill: "#2f6b3f",
|
|
3186
|
+
stroke: "none",
|
|
3187
|
+
opacity: "0.97"
|
|
3188
|
+
}
|
|
3189
|
+
),
|
|
3190
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3191
|
+
"path",
|
|
3192
|
+
{
|
|
3193
|
+
d: "M9.8 16.3 L11.9 14.4 L14.3 16.5 C12.8 17.4 11.3 17.4 9.8 16.3 Z",
|
|
3194
|
+
fill: "#6fb36f",
|
|
3195
|
+
stroke: "none",
|
|
3196
|
+
opacity: "0.95"
|
|
3197
|
+
}
|
|
3198
|
+
),
|
|
3199
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M11.9 14.3 L11.9 17.8", stroke: "#d6b45f", strokeWidth: "0.42" }),
|
|
3200
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M9.8 16.3 C11.2 15.8 12.9 15.9 14.3 16.5", stroke: "#9fca78", strokeWidth: "0.36" }),
|
|
3201
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "15.6", cy: "16.75", r: "0.43", fill: "#c2412d", stroke: "none" })
|
|
3202
|
+
] }),
|
|
3203
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("g", { children: [
|
|
3204
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3205
|
+
"path",
|
|
3206
|
+
{
|
|
3207
|
+
d: "M13.6 18.1 L16.2 15.7 L18.5 18.2 C17.1 19.1 15.2 19 13.6 18.1 Z",
|
|
3208
|
+
fill: "#2f6b3f",
|
|
3209
|
+
stroke: "none",
|
|
3210
|
+
opacity: "0.95"
|
|
3211
|
+
}
|
|
3212
|
+
),
|
|
3213
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3214
|
+
"path",
|
|
3215
|
+
{
|
|
3216
|
+
d: "M14.8 17.9 L16.2 16.3 L17.5 18 C16.6 18.4 15.7 18.4 14.8 17.9 Z",
|
|
3217
|
+
fill: "#6fb36f",
|
|
3218
|
+
stroke: "none",
|
|
3219
|
+
opacity: "0.95"
|
|
3220
|
+
}
|
|
3221
|
+
),
|
|
3222
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M16.2 16.3 L16.2 18.6", stroke: "#d6b45f", strokeWidth: "0.34" }),
|
|
3223
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("circle", { cx: "18.35", cy: "18.15", r: "0.36", fill: "#c2412d", stroke: "none" })
|
|
3224
|
+
] })
|
|
3158
3225
|
]
|
|
3159
3226
|
}
|
|
3160
3227
|
);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { D as Dialog, b as DialogContent, d as DialogHeader, e as DialogTitle, T as Tabs, h as TabsList, i as TabsTrigger, j as TabsContent, k as TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent, o as Button } from "./ProxyViewerContainer-
|
|
3
|
-
import { ResponseView } from "./ResponseView-
|
|
4
|
-
import "./router-
|
|
2
|
+
import { D as Dialog, b as DialogContent, d as DialogHeader, e as DialogTitle, T as Tabs, h as TabsList, i as TabsTrigger, j as TabsContent, k as TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent, o as Button } from "./ProxyViewerContainer-DsQWgvwt.mjs";
|
|
3
|
+
import { ResponseView } from "./ResponseView-CdloAejU.mjs";
|
|
4
|
+
import "./router-O1ouXZtT.mjs";
|
|
5
5
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
6
|
import "../_libs/jszip.mjs";
|
|
7
|
-
import "./json-viewer-
|
|
7
|
+
import "./json-viewer-l1tDAk7X.mjs";
|
|
8
8
|
import { s as RotateCcw } from "../_libs/lucide-react.mjs";
|
|
9
9
|
import { d as object, c as boolean, n as number, b as string } from "../_libs/zod.mjs";
|
|
10
10
|
import "../_libs/swr.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { k as TooltipProvider, f as formatTokens, c as cn, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./ProxyViewerContainer-
|
|
3
|
-
import "./router-
|
|
2
|
+
import { k as TooltipProvider, f as formatTokens, c as cn, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./ProxyViewerContainer-DsQWgvwt.mjs";
|
|
3
|
+
import "./router-O1ouXZtT.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import { Q as Info } from "../_libs/lucide-react.mjs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { g as getLogFormatAdapter, f as formatTokens, c as cn, p as getStatusCategory, B as Badge, s as safeJsonValue } from "./ProxyViewerContainer-
|
|
3
|
-
import { JsonViewer } from "./json-viewer-
|
|
4
|
-
import "./router-
|
|
2
|
+
import { g as getLogFormatAdapter, f as formatTokens, c as cn, p as getStatusCategory, B as Badge, s as safeJsonValue } from "./ProxyViewerContainer-DsQWgvwt.mjs";
|
|
3
|
+
import { JsonViewer } from "./json-viewer-l1tDAk7X.mjs";
|
|
4
|
+
import "./router-O1ouXZtT.mjs";
|
|
5
5
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
6
|
import "../_libs/jszip.mjs";
|
|
7
7
|
import { Z as Zap, i as TriangleAlert, V as CircleStop, Y as Brain, b as ChevronDown, f as ChevronRight, _ as Terminal } from "../_libs/lucide-react.mjs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { k as TooltipProvider, l as Tooltip, m as TooltipTrigger, B as Badge, n as TooltipContent } from "./ProxyViewerContainer-
|
|
3
|
-
import { JsonViewer } from "./json-viewer-
|
|
4
|
-
import "./router-
|
|
2
|
+
import { k as TooltipProvider, l as Tooltip, m as TooltipTrigger, B as Badge, n as TooltipContent } from "./ProxyViewerContainer-DsQWgvwt.mjs";
|
|
3
|
+
import { JsonViewer } from "./json-viewer-l1tDAk7X.mjs";
|
|
4
|
+
import "./router-O1ouXZtT.mjs";
|
|
5
5
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
6
|
import "../_libs/jszip.mjs";
|
|
7
7
|
import { b as ChevronDown, f as ChevronRight, L as LoaderCircle } from "../_libs/lucide-react.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { P as ProxyViewerContainer } from "./ProxyViewerContainer-
|
|
1
|
+
import { P as ProxyViewerContainer } from "./ProxyViewerContainer-DsQWgvwt.mjs";
|
|
2
2
|
import "../_libs/react.mjs";
|
|
3
|
-
import "./router-
|
|
3
|
+
import "./router-O1ouXZtT.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import "../_libs/swr.mjs";
|
|
@@ -198,7 +198,7 @@ function getResponse() {
|
|
|
198
198
|
return event.res;
|
|
199
199
|
}
|
|
200
200
|
async function getStartManifest(matchedRoutes) {
|
|
201
|
-
const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-
|
|
201
|
+
const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-OkvTTh2H.mjs");
|
|
202
202
|
const startManifest = tsrStartManifest();
|
|
203
203
|
const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
|
|
204
204
|
rootRoute.assets = rootRoute.assets || [];
|
|
@@ -767,7 +767,7 @@ let entriesPromise;
|
|
|
767
767
|
let baseManifestPromise;
|
|
768
768
|
let cachedFinalManifestPromise;
|
|
769
769
|
async function loadEntries() {
|
|
770
|
-
const routerEntry = await import("./router-
|
|
770
|
+
const routerEntry = await import("./router-O1ouXZtT.mjs").then((n) => n.f);
|
|
771
771
|
const startEntry = await import("./start-HYkvq4Ni.mjs");
|
|
772
772
|
return { startEntry, routerEntry };
|
|
773
773
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { q as parseJsonText, c as cn, k as TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./ProxyViewerContainer-
|
|
3
|
-
import "./router-
|
|
2
|
+
import { q as parseJsonText, c as cn, k as TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./ProxyViewerContainer-DsQWgvwt.mjs";
|
|
3
|
+
import "./router-O1ouXZtT.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import { C as Check, a as Copy, b as ChevronDown, f as ChevronRight, q as ChevronsDown } from "../_libs/lucide-react.mjs";
|
|
@@ -48,8 +48,8 @@ import "../_libs/debounce-fn.mjs";
|
|
|
48
48
|
import "../_libs/mimic-function.mjs";
|
|
49
49
|
import "../_libs/semver.mjs";
|
|
50
50
|
import "../_libs/uint8array-extras.mjs";
|
|
51
|
-
const faviconSvg = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%20role='img'%20aria-label='LLM%20Inspector'%3e%3crect%20width='64'%20height='64'%20rx='14'%20fill='%23111827'%20/%3e%3cg%20fill='none'%20stroke='%23f59e0b'%20stroke-width='4.2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20fill='%23f59e0b'%20d='M15%2036c0-11%207-18%2017-18s17%207%2017%2018c0%208-7%2013-17%2013s-17-5-17-13z'%20/%3e%3cpath%20d='M16%2031c-6-5-12-3-12%204%200%205%206%206%2011%202'%20/%3e%3cpath%20d='M48%2031c6-5%2012-3%2012%204%200%205-6%206-11%202'%20/%3e%3cpath%20d='M27%2019l-3-7'%20/%3e%3cpath%20d='M37%2019l3-7'%20/%3e%3cpath%20d='M19%2045l-6%209'%20/%3e%3cpath%20d='M27%2048l-3%209'%20/%3e%3cpath%20d='M37%2048l3%209'%20/%3e%3cpath%20d='M45%2045l6%209'%20/%3e%3c/g%3e%3ccircle%20cx='24'%20cy='11'%20r='3.2'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='40'%20cy='11'%20r='3.2'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='25'%20cy='34'%20r='2.1'%20fill='%23111827'%20/%3e%3ccircle%20cx='39'%20cy='34'%20r='2.1'%20fill='%23111827'%20/%3e%3c/svg%3e";
|
|
52
|
-
const appCss = "/assets/index-
|
|
51
|
+
const faviconSvg = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%20role='img'%20aria-label='LLM%20Inspector'%3e%3crect%20width='64'%20height='64'%20rx='14'%20fill='%23111827'%20/%3e%3cg%20fill='none'%20stroke='%23f59e0b'%20stroke-width='4.2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20fill='%23f59e0b'%20d='M15%2036c0-11%207-18%2017-18s17%207%2017%2018c0%208-7%2013-17%2013s-17-5-17-13z'%20/%3e%3cpath%20d='M16%2031c-6-5-12-3-12%204%200%205%206%206%2011%202'%20/%3e%3cpath%20d='M48%2031c6-5%2012-3%2012%204%200%205-6%206-11%202'%20/%3e%3cpath%20d='M27%2019l-3-7'%20/%3e%3cpath%20d='M37%2019l3-7'%20/%3e%3cpath%20d='M19%2045l-6%209'%20/%3e%3cpath%20d='M27%2048l-3%209'%20/%3e%3cpath%20d='M37%2048l3%209'%20/%3e%3cpath%20d='M45%2045l6%209'%20/%3e%3c/g%3e%3cpath%20d='M14%2047l9-8%208%209c-5%203.5-12%203-17-1z'%20fill='%232f6b3f'%20opacity='.95'%20/%3e%3cpath%20d='M18%2046l5-5%205%206c-3%201.6-7%201.4-10-1z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M23%2041v10'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='1.6'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='31'%20cy='48'%20r='1.8'%20fill='%23c2412d'%20/%3e%3cpath%20d='M24%2044l13-11%2014%2013c-8%205.8-18%205.3-27-2z'%20fill='%232f6b3f'%20opacity='.97'%20/%3e%3cpath%20d='M30%2043l7-7%209%209c-5%202.7-11%202.5-16-2z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M37%2036v14'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='2'%20stroke-linecap='round'%20/%3e%3cpath%20d='M30%2043c5-2%2011-1.5%2016%202'%20fill='none'%20stroke='%239fca78'%20stroke-width='1.8'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='51'%20cy='46'%20r='2'%20fill='%23c2412d'%20/%3e%3cpath%20d='M40%2050l8-8%207%208c-4.2%203.2-10%203-15%200z'%20fill='%232f6b3f'%20opacity='.95'%20/%3e%3cpath%20d='M43%2049l5-5%204.5%205.5c-3%201.5-6%201.2-9.5-.5z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M48%2044v9'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='1.5'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='55'%20cy='50'%20r='1.7'%20fill='%23c2412d'%20/%3e%3ccircle%20cx='24'%20cy='11'%20r='3.2'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='40'%20cy='11'%20r='3.2'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='25'%20cy='34'%20r='2.1'%20fill='%23111827'%20/%3e%3ccircle%20cx='39'%20cy='34'%20r='2.1'%20fill='%23111827'%20/%3e%3c/svg%3e";
|
|
52
|
+
const appCss = "/assets/index-DUZVFAL8.css";
|
|
53
53
|
const Route$l = createRootRoute({
|
|
54
54
|
head: () => ({
|
|
55
55
|
meta: [
|
|
@@ -76,7 +76,7 @@ function RootDocument({ children }) {
|
|
|
76
76
|
] })
|
|
77
77
|
] });
|
|
78
78
|
}
|
|
79
|
-
const $$splitComponentImporter$1 = () => import("./index-
|
|
79
|
+
const $$splitComponentImporter$1 = () => import("./index-DBs4Nc1G.mjs");
|
|
80
80
|
const Route$k = createFileRoute("/")({
|
|
81
81
|
component: lazyRouteComponent($$splitComponentImporter$1, "component")
|
|
82
82
|
});
|
|
@@ -119,7 +119,7 @@ function decodeSessionIdFromPath(encoded) {
|
|
|
119
119
|
function getSessionPath(sessionId) {
|
|
120
120
|
return `/session/${encodeSessionIdForPath(sessionId)}`;
|
|
121
121
|
}
|
|
122
|
-
const $$splitComponentImporter = () => import("../_sessionId-
|
|
122
|
+
const $$splitComponentImporter = () => import("../_sessionId-B-zUQeOo.mjs");
|
|
123
123
|
const Route$j = createFileRoute("/session/$sessionId")({
|
|
124
124
|
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
125
125
|
parseParams: (params) => ({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/sessions", "/proxy/$", "/session/$sessionId"], "preloads": ["/assets/main-
|
|
1
|
+
const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/sessions", "/proxy/$", "/session/$sessionId"], "preloads": ["/assets/main-DLMLYxyQ.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-BKzkybBt.js", "/assets/ProxyViewerContainer-RhHgw8Ej.js"] }, "/api/config": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/config.ts", "children": ["/api/config/paths"] }, "/api/health": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/health.ts" }, "/api/logs": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.ts", "children": ["/api/logs/$id", "/api/logs/stream"] }, "/api/mcp": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/mcp.ts" }, "/api/models": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/models.ts" }, "/api/providers": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.ts", "children": ["/api/providers/$providerId", "/api/providers/export", "/api/providers/import", "/api/providers/scan"] }, "/api/sessions": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/sessions.ts" }, "/proxy/$": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/proxy/$.ts" }, "/session/$sessionId": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/session/$sessionId.tsx", "assets": [], "preloads": ["/assets/_sessionId-BloLpBNK.js", "/assets/ProxyViewerContainer-RhHgw8Ej.js"] }, "/api/config/paths": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/config.paths.ts" }, "/api/logs/$id": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.$id.ts", "children": ["/api/logs/$id/chunks", "/api/logs/$id/replay"] }, "/api/logs/stream": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.stream.ts" }, "/api/providers/$providerId": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.$providerId.ts", "children": ["/api/providers/$providerId/test"] }, "/api/providers/export": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.export.ts" }, "/api/providers/import": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.import.ts" }, "/api/providers/scan": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.scan.ts" }, "/api/logs/$id/chunks": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.$id.chunks.ts" }, "/api/logs/$id/replay": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.$id.replay.ts" }, "/api/providers/$providerId/test": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.$providerId.test.ts", "children": ["/api/providers/$providerId/test/log"] }, "/api/providers/$providerId/test/log": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.$providerId.test.log.ts" } }, "clientEntry": "/assets/main-DLMLYxyQ.js" });
|
|
2
2
|
export {
|
|
3
3
|
tsrStartManifest
|
|
4
4
|
};
|
package/.output/server/index.mjs
CHANGED
|
@@ -38,107 +38,107 @@ const assets = {
|
|
|
38
38
|
"/assets/alibaba-TTwafVwX.svg": {
|
|
39
39
|
"type": "image/svg+xml",
|
|
40
40
|
"etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
|
|
41
|
-
"mtime": "2026-06-
|
|
41
|
+
"mtime": "2026-06-20T00:50:36.226Z",
|
|
42
42
|
"size": 5915,
|
|
43
43
|
"path": "../public/assets/alibaba-TTwafVwX.svg"
|
|
44
44
|
},
|
|
45
|
-
"/assets/index-
|
|
46
|
-
"type": "text/css; charset=utf-8",
|
|
47
|
-
"etag": '"177a9-QMoW/GsYu1jERI0JyFHA9CiB/o0"',
|
|
48
|
-
"mtime": "2026-06-18T09:12:22.692Z",
|
|
49
|
-
"size": 96169,
|
|
50
|
-
"path": "../public/assets/index-Bqi9RAGS.css"
|
|
51
|
-
},
|
|
52
|
-
"/assets/json-viewer-CyJ5nYhX.js": {
|
|
53
|
-
"type": "text/javascript; charset=utf-8",
|
|
54
|
-
"etag": '"1e651-ydiPWeNOTBxab1yp6aZhKmFLc9w"',
|
|
55
|
-
"mtime": "2026-06-18T09:12:22.693Z",
|
|
56
|
-
"size": 124497,
|
|
57
|
-
"path": "../public/assets/json-viewer-CyJ5nYhX.js"
|
|
58
|
-
},
|
|
59
|
-
"/assets/index-DqgTchf4.js": {
|
|
45
|
+
"/assets/index-BKzkybBt.js": {
|
|
60
46
|
"type": "text/javascript; charset=utf-8",
|
|
61
|
-
"etag": '"74-
|
|
62
|
-
"mtime": "2026-06-
|
|
47
|
+
"etag": '"74-UKYg7v7pdMJGpY8l8NZyhnJ2u0Q"',
|
|
48
|
+
"mtime": "2026-06-20T00:50:36.226Z",
|
|
63
49
|
"size": 116,
|
|
64
|
-
"path": "../public/assets/index-
|
|
50
|
+
"path": "../public/assets/index-BKzkybBt.js"
|
|
65
51
|
},
|
|
66
|
-
"/assets/CompareDrawer-
|
|
52
|
+
"/assets/CompareDrawer-DaEfZjXJ.js": {
|
|
67
53
|
"type": "text/javascript; charset=utf-8",
|
|
68
|
-
"etag": '"4a1f-
|
|
69
|
-
"mtime": "2026-06-
|
|
54
|
+
"etag": '"4a1f-37ilcIB3uwSLFBXJNBsm4srG3Cc"',
|
|
55
|
+
"mtime": "2026-06-20T00:50:36.227Z",
|
|
70
56
|
"size": 18975,
|
|
71
|
-
"path": "../public/assets/CompareDrawer-
|
|
57
|
+
"path": "../public/assets/CompareDrawer-DaEfZjXJ.js"
|
|
58
|
+
},
|
|
59
|
+
"/assets/index-DUZVFAL8.css": {
|
|
60
|
+
"type": "text/css; charset=utf-8",
|
|
61
|
+
"etag": '"1789c-0/l5ZIGy+tNwwf4kwZ1H/2P3kfw"',
|
|
62
|
+
"mtime": "2026-06-20T00:50:36.226Z",
|
|
63
|
+
"size": 96412,
|
|
64
|
+
"path": "../public/assets/index-DUZVFAL8.css"
|
|
65
|
+
},
|
|
66
|
+
"/assets/minimax-BPMzvuL-.jpeg": {
|
|
67
|
+
"type": "image/jpeg",
|
|
68
|
+
"etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
|
|
69
|
+
"mtime": "2026-06-20T00:50:36.226Z",
|
|
70
|
+
"size": 6918,
|
|
71
|
+
"path": "../public/assets/minimax-BPMzvuL-.jpeg"
|
|
72
72
|
},
|
|
73
|
-
"/assets/ReplayDialog-
|
|
73
|
+
"/assets/ReplayDialog-BjQGoECv.js": {
|
|
74
74
|
"type": "text/javascript; charset=utf-8",
|
|
75
|
-
"etag": '"11c0-
|
|
76
|
-
"mtime": "2026-06-
|
|
75
|
+
"etag": '"11c0-DPZ4iKsJsdKQk+GTMhXUmFBHY6A"',
|
|
76
|
+
"mtime": "2026-06-20T00:50:36.227Z",
|
|
77
77
|
"size": 4544,
|
|
78
|
-
"path": "../public/assets/ReplayDialog-
|
|
78
|
+
"path": "../public/assets/ReplayDialog-BjQGoECv.js"
|
|
79
79
|
},
|
|
80
|
-
"/assets/
|
|
80
|
+
"/assets/ResponseView-aYiH9vL2.js": {
|
|
81
81
|
"type": "text/javascript; charset=utf-8",
|
|
82
|
-
"etag": '"
|
|
83
|
-
"mtime": "2026-06-
|
|
84
|
-
"size":
|
|
85
|
-
"path": "../public/assets/
|
|
82
|
+
"etag": '"6e91-P7hpuUo4EEblUWZLCSgkX7iIauk"',
|
|
83
|
+
"mtime": "2026-06-20T00:50:36.227Z",
|
|
84
|
+
"size": 28305,
|
|
85
|
+
"path": "../public/assets/ResponseView-aYiH9vL2.js"
|
|
86
86
|
},
|
|
87
|
-
"/assets/
|
|
87
|
+
"/assets/json-viewer-iMGYFtiP.js": {
|
|
88
88
|
"type": "text/javascript; charset=utf-8",
|
|
89
|
-
"etag": '"
|
|
90
|
-
"mtime": "2026-06-
|
|
91
|
-
"size":
|
|
92
|
-
"path": "../public/assets/
|
|
89
|
+
"etag": '"1e651-O8VMc/GqtsPUHanLc6OI4L+iG6A"',
|
|
90
|
+
"mtime": "2026-06-20T00:50:36.227Z",
|
|
91
|
+
"size": 124497,
|
|
92
|
+
"path": "../public/assets/json-viewer-iMGYFtiP.js"
|
|
93
93
|
},
|
|
94
|
-
"/assets/
|
|
95
|
-
"type": "
|
|
96
|
-
"etag": '"
|
|
97
|
-
"mtime": "2026-06-
|
|
98
|
-
"size":
|
|
99
|
-
"path": "../public/assets/
|
|
94
|
+
"/assets/RequestAnatomy-QU9eugVN.js": {
|
|
95
|
+
"type": "text/javascript; charset=utf-8",
|
|
96
|
+
"etag": '"142a-cK+LQXqVU4PpY8HLQ9pxhI6zNn4"',
|
|
97
|
+
"mtime": "2026-06-20T00:50:36.227Z",
|
|
98
|
+
"size": 5162,
|
|
99
|
+
"path": "../public/assets/RequestAnatomy-QU9eugVN.js"
|
|
100
|
+
},
|
|
101
|
+
"/assets/StreamingChunkSequence-Cpx_Qp8w.js": {
|
|
102
|
+
"type": "text/javascript; charset=utf-8",
|
|
103
|
+
"etag": '"d81-8rV/rvQQVae+wS6nUchljhz8vEk"',
|
|
104
|
+
"mtime": "2026-06-20T00:50:36.227Z",
|
|
105
|
+
"size": 3457,
|
|
106
|
+
"path": "../public/assets/StreamingChunkSequence-Cpx_Qp8w.js"
|
|
100
107
|
},
|
|
101
108
|
"/assets/zhipuai-BPNAnxo-.svg": {
|
|
102
109
|
"type": "image/svg+xml",
|
|
103
110
|
"etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
|
|
104
|
-
"mtime": "2026-06-
|
|
111
|
+
"mtime": "2026-06-20T00:50:36.226Z",
|
|
105
112
|
"size": 11256,
|
|
106
113
|
"path": "../public/assets/zhipuai-BPNAnxo-.svg"
|
|
107
114
|
},
|
|
108
|
-
"/assets/
|
|
115
|
+
"/assets/_sessionId-BloLpBNK.js": {
|
|
109
116
|
"type": "text/javascript; charset=utf-8",
|
|
110
|
-
"etag": '"
|
|
111
|
-
"mtime": "2026-06-
|
|
112
|
-
"size":
|
|
113
|
-
"path": "../public/assets/
|
|
117
|
+
"etag": '"d2-EI9Biaib5hB2C/gxBzBJ1lNwtPI"',
|
|
118
|
+
"mtime": "2026-06-20T00:50:36.226Z",
|
|
119
|
+
"size": 210,
|
|
120
|
+
"path": "../public/assets/_sessionId-BloLpBNK.js"
|
|
121
|
+
},
|
|
122
|
+
"/assets/main-DLMLYxyQ.js": {
|
|
123
|
+
"type": "text/javascript; charset=utf-8",
|
|
124
|
+
"etag": '"51388-Wow2QJ41/NUH/FvBVlRV/w4kckI"',
|
|
125
|
+
"mtime": "2026-06-20T00:50:36.226Z",
|
|
126
|
+
"size": 332680,
|
|
127
|
+
"path": "../public/assets/main-DLMLYxyQ.js"
|
|
114
128
|
},
|
|
115
129
|
"/assets/qwen-CONDcHqt.png": {
|
|
116
130
|
"type": "image/png",
|
|
117
131
|
"etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
|
|
118
|
-
"mtime": "2026-06-
|
|
132
|
+
"mtime": "2026-06-20T00:50:36.226Z",
|
|
119
133
|
"size": 357059,
|
|
120
134
|
"path": "../public/assets/qwen-CONDcHqt.png"
|
|
121
135
|
},
|
|
122
|
-
"/assets/
|
|
136
|
+
"/assets/ProxyViewerContainer-RhHgw8Ej.js": {
|
|
123
137
|
"type": "text/javascript; charset=utf-8",
|
|
124
|
-
"etag": '"
|
|
125
|
-
"mtime": "2026-06-
|
|
126
|
-
"size":
|
|
127
|
-
"path": "../public/assets/
|
|
128
|
-
},
|
|
129
|
-
"/assets/ProxyViewerContainer-Bi1QXDYo.js": {
|
|
130
|
-
"type": "text/javascript; charset=utf-8",
|
|
131
|
-
"etag": '"76fed-g89dZRBRI198ItonW8vjcw/8gls"',
|
|
132
|
-
"mtime": "2026-06-18T09:12:22.692Z",
|
|
133
|
-
"size": 487405,
|
|
134
|
-
"path": "../public/assets/ProxyViewerContainer-Bi1QXDYo.js"
|
|
135
|
-
},
|
|
136
|
-
"/assets/_sessionId-DE0J5YHU.js": {
|
|
137
|
-
"type": "text/javascript; charset=utf-8",
|
|
138
|
-
"etag": '"d2-yTX8F3UFbyfcaXlKoGMrmxJtX0U"',
|
|
139
|
-
"mtime": "2026-06-18T09:12:22.692Z",
|
|
140
|
-
"size": 210,
|
|
141
|
-
"path": "../public/assets/_sessionId-DE0J5YHU.js"
|
|
138
|
+
"etag": '"77558-qCK8wPoq/Ji6Ahm7wVf0Yzht3us"',
|
|
139
|
+
"mtime": "2026-06-20T00:50:36.227Z",
|
|
140
|
+
"size": 488792,
|
|
141
|
+
"path": "../public/assets/ProxyViewerContainer-RhHgw8Ej.js"
|
|
142
142
|
}
|
|
143
143
|
};
|
|
144
144
|
function readAsset(id) {
|
package/package.json
CHANGED
package/src/assets/favicon.svg
CHANGED
|
@@ -11,6 +11,19 @@
|
|
|
11
11
|
<path d="M37 48l3 9" />
|
|
12
12
|
<path d="M45 45l6 9" />
|
|
13
13
|
</g>
|
|
14
|
+
<path d="M14 47l9-8 8 9c-5 3.5-12 3-17-1z" fill="#2f6b3f" opacity=".95" />
|
|
15
|
+
<path d="M18 46l5-5 5 6c-3 1.6-7 1.4-10-1z" fill="#6fb36f" opacity=".95" />
|
|
16
|
+
<path d="M23 41v10" fill="none" stroke="#d6b45f" stroke-width="1.6" stroke-linecap="round" />
|
|
17
|
+
<circle cx="31" cy="48" r="1.8" fill="#c2412d" />
|
|
18
|
+
<path d="M24 44l13-11 14 13c-8 5.8-18 5.3-27-2z" fill="#2f6b3f" opacity=".97" />
|
|
19
|
+
<path d="M30 43l7-7 9 9c-5 2.7-11 2.5-16-2z" fill="#6fb36f" opacity=".95" />
|
|
20
|
+
<path d="M37 36v14" fill="none" stroke="#d6b45f" stroke-width="2" stroke-linecap="round" />
|
|
21
|
+
<path d="M30 43c5-2 11-1.5 16 2" fill="none" stroke="#9fca78" stroke-width="1.8" stroke-linecap="round" />
|
|
22
|
+
<circle cx="51" cy="46" r="2" fill="#c2412d" />
|
|
23
|
+
<path d="M40 50l8-8 7 8c-4.2 3.2-10 3-15 0z" fill="#2f6b3f" opacity=".95" />
|
|
24
|
+
<path d="M43 49l5-5 4.5 5.5c-3 1.5-6 1.2-9.5-.5z" fill="#6fb36f" opacity=".95" />
|
|
25
|
+
<path d="M48 44v9" fill="none" stroke="#d6b45f" stroke-width="1.5" stroke-linecap="round" />
|
|
26
|
+
<circle cx="55" cy="50" r="1.7" fill="#c2412d" />
|
|
14
27
|
<circle cx="24" cy="11" r="3.2" fill="#f59e0b" />
|
|
15
28
|
<circle cx="40" cy="11" r="3.2" fill="#f59e0b" />
|
|
16
29
|
<circle cx="25" cy="34" r="2.1" fill="#111827" />
|