@tonyclaw/agent-inspector 3.0.16 → 3.0.18
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/nitro.json +1 -1
- package/.output/public/assets/{CompareDrawer-BJmxAiM0.js → CompareDrawer-Daj03-RL.js} +1 -1
- package/.output/public/assets/ProxyViewerContainer-BLCRQtU_.js +106 -0
- package/.output/public/assets/{ReplayDialog-CkLdOMJr.js → ReplayDialog-5FR5crdo.js} +1 -1
- package/.output/public/assets/{RequestAnatomy-DemOFfSc.js → RequestAnatomy-DF0hHdQY.js} +1 -1
- package/.output/public/assets/{ResponseView-9LhpuDo7.js → ResponseView-BwkMSsUa.js} +2 -2
- package/.output/public/assets/{StreamingChunkSequence-RRWYBOdz.js → StreamingChunkSequence-CKeUd58x.js} +1 -1
- package/.output/public/assets/{_sessionId-CWEh2Jsn.js → _sessionId-CThgXa41.js} +1 -1
- package/.output/public/assets/index-BHXN1Fsx.css +1 -0
- package/.output/public/assets/{index-Lwir70Rs.js → index-ClQ7Vi3J.js} +1 -1
- package/.output/public/assets/{index-hjNWJZGE.js → index-gm3A0idN.js} +1 -1
- package/.output/public/assets/{json-viewer-D8gvbDlB.js → json-viewer-BA-W-PZq.js} +1 -1
- package/.output/public/assets/{main-ovrz0tyD.js → main-BnRC1932.js} +2 -2
- package/.output/server/_libs/@opentelemetry/semantic-conventions+[...].mjs +2658 -0
- package/.output/server/_libs/agent-base.mjs +234 -0
- package/.output/server/_libs/anthropic-ai__sdk.mjs +6042 -0
- package/.output/server/_libs/atomically.mjs +3 -0
- package/.output/server/_libs/base64-js.mjs +102 -0
- package/.output/server/_libs/bignumber.js.mjs +1353 -0
- package/.output/server/_libs/buffer-equal-constant-time.mjs +38 -0
- package/.output/server/_libs/data-uri-to-buffer.mjs +39 -0
- package/.output/server/_libs/debug.mjs +547 -0
- package/.output/server/_libs/ecdsa-sig-formatter.mjs +162 -0
- package/.output/server/_libs/extend.mjs +2 -1
- package/.output/server/_libs/fetch-blob.mjs +287 -0
- package/.output/server/_libs/formdata-polyfill.mjs +88 -0
- package/.output/server/_libs/gaxios.mjs +927 -0
- package/.output/server/_libs/gcp-metadata.mjs +322 -0
- package/.output/server/_libs/google-auth-library.mjs +6339 -0
- package/.output/server/_libs/google-logging-utils.mjs +385 -0
- package/.output/server/_libs/google__genai.mjs +18034 -0
- package/.output/server/_libs/has-flag.mjs +16 -0
- package/.output/server/_libs/https-proxy-agent.mjs +280 -0
- package/.output/server/_libs/json-bigint.mjs +413 -0
- package/.output/server/_libs/jwa.mjs +233 -0
- package/.output/server/_libs/jws.mjs +298 -0
- package/.output/server/_libs/lucide-react.mjs +261 -226
- package/.output/server/_libs/mariozechner__pi-agent-core.mjs +824 -0
- package/.output/server/_libs/mariozechner__pi-ai.mjs +22889 -0
- package/.output/server/_libs/mistralai__mistralai.mjs +32045 -0
- package/.output/server/_libs/ms.mjs +120 -0
- package/.output/server/_libs/node-domexception.mjs +17 -0
- package/.output/server/_libs/node-fetch.mjs +1578 -0
- package/.output/server/_libs/ohash.mjs +1 -1
- package/.output/server/_libs/openai.mjs +6766 -0
- package/.output/server/_libs/opentelemetry__api.mjs +1678 -0
- package/.output/server/_libs/p-retry.mjs +87 -0
- package/.output/server/_libs/partial-json.mjs +244 -0
- package/.output/server/_libs/react-dom.mjs +5 -5
- package/.output/server/_libs/react-markdown.mjs +2 -2
- package/.output/server/_libs/react.mjs +30 -0
- package/.output/server/_libs/readable-stream.mjs +5 -5
- package/.output/server/_libs/retry.mjs +236 -0
- package/.output/server/_libs/safe-buffer.mjs +63 -1
- package/.output/server/_libs/srvx.mjs +2 -2
- package/.output/server/_libs/supports-color.mjs +108 -0
- package/.output/server/_libs/tanstack__router-core.mjs +1 -1
- package/.output/server/_libs/typebox.mjs +6596 -0
- package/.output/server/_libs/util-deprecate.mjs +2 -2
- package/.output/server/_libs/vfile.mjs +2 -2
- package/.output/server/_libs/web-streams-polyfill.mjs +4282 -0
- package/.output/server/_libs/ws.mjs +3715 -0
- package/.output/server/_libs/zod-to-json-schema.mjs +1207 -0
- package/.output/server/_libs/zod.mjs +597 -9
- package/.output/server/{_sessionId-zI_GFX_7.mjs → _sessionId-Bi3ZIrqT.mjs} +14 -13
- package/.output/server/_ssr/{CompareDrawer-Ckcx1RVu.mjs → CompareDrawer-BYZS_hCR.mjs} +14 -13
- package/.output/server/_ssr/{ProxyViewerContainer-BgXewlIr.mjs → ProxyViewerContainer-BE4umfVs.mjs} +205 -106
- package/.output/server/_ssr/{ReplayDialog-wx3nDtZn.mjs → ReplayDialog-BlID2ZH4.mjs} +15 -14
- package/.output/server/_ssr/{RequestAnatomy-DN80zt0G.mjs → RequestAnatomy-CGJ2lkzT.mjs} +14 -13
- package/.output/server/_ssr/{ResponseView-DD7rTu_l.mjs → ResponseView-DDjcGf7M.mjs} +14 -13
- package/.output/server/_ssr/{StreamingChunkSequence-DAgz6Vvw.mjs → StreamingChunkSequence-G7B8M5G2.mjs} +14 -13
- package/.output/server/_ssr/{index-dcTjp8du.mjs → index-ClQ9FvRJ.mjs} +13 -12
- package/.output/server/_ssr/index.mjs +4 -4
- package/.output/server/_ssr/{json-viewer-N2cuzGWR.mjs → json-viewer-CFbpkiBJ.mjs} +14 -13
- package/.output/server/_ssr/{router-BfQ0QsD5.mjs → router-Cq8LEvhE.mjs} +523 -97
- package/.output/server/_tanstack-start-manifest_v-p7J0QCMh.mjs +4 -0
- package/.output/server/index.mjs +75 -75
- package/package.json +4 -1
- package/src/components/ProxyViewer.tsx +3 -0
- package/src/components/pi-agent/PiAgentPanel.tsx +204 -0
- package/src/components/proxy-viewer/LogEntry.tsx +54 -19
- package/src/components/proxy-viewer/logEntryVisibility.ts +22 -0
- package/src/lib/piAgentContract.ts +21 -0
- package/src/routes/api/pi-agent.ts +29 -0
- package/src/services/piAgent.ts +390 -0
- package/.output/public/assets/ProxyViewerContainer-C40Nig73.js +0 -106
- package/.output/public/assets/index-HRfrFVYw.css +0 -1
- package/.output/server/_tanstack-start-manifest_v-BXnYrbcJ.mjs +0 -4
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports, r as reactExports } from "./_libs/react.mjs";
|
|
2
|
-
import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-
|
|
3
|
-
import { R as Route$
|
|
2
|
+
import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-BE4umfVs.mjs";
|
|
3
|
+
import { R as Route$K } from "./_ssr/router-Cq8LEvhE.mjs";
|
|
4
4
|
import "./_libs/jszip.mjs";
|
|
5
|
+
import "node:fs";
|
|
6
|
+
import "node:buffer";
|
|
7
|
+
import "node:path";
|
|
8
|
+
import "node:crypto";
|
|
9
|
+
import "node:child_process";
|
|
10
|
+
import "node:url";
|
|
11
|
+
import "crypto";
|
|
12
|
+
import "node:util";
|
|
5
13
|
import "./_libs/modelcontextprotocol__server.mjs";
|
|
14
|
+
import "node:os";
|
|
6
15
|
import "./_libs/swr.mjs";
|
|
7
16
|
import "./_libs/use-sync-external-store.mjs";
|
|
8
17
|
import "./_libs/dequal.mjs";
|
|
@@ -21,7 +30,6 @@ import "./_libs/react-dom.mjs";
|
|
|
21
30
|
import "util";
|
|
22
31
|
import "async_hooks";
|
|
23
32
|
import "stream";
|
|
24
|
-
import "crypto";
|
|
25
33
|
import "./_libs/radix-ui__react-slot.mjs";
|
|
26
34
|
import "./_libs/@radix-ui/react-use-callback-ref+[...].mjs";
|
|
27
35
|
import "./_libs/@radix-ui/react-use-escape-keydown+[...].mjs";
|
|
@@ -67,27 +75,20 @@ import "./_libs/tanstack__router-core.mjs";
|
|
|
67
75
|
import "./_libs/cookie-es.mjs";
|
|
68
76
|
import "./_libs/seroval.mjs";
|
|
69
77
|
import "./_libs/seroval-plugins.mjs";
|
|
78
|
+
import "node:stream";
|
|
70
79
|
import "./_libs/tanstack__history.mjs";
|
|
71
80
|
import "./_libs/tiny-invariant.mjs";
|
|
72
81
|
import "node:stream/web";
|
|
73
|
-
import "node:stream";
|
|
74
82
|
import "./_libs/isbot.mjs";
|
|
75
|
-
import "node:fs";
|
|
76
83
|
import "node:fs/promises";
|
|
77
84
|
import "node:readline";
|
|
78
|
-
import "node:buffer";
|
|
79
|
-
import "node:path";
|
|
80
|
-
import "node:crypto";
|
|
81
|
-
import "node:child_process";
|
|
82
|
-
import "node:url";
|
|
83
85
|
import "./_libs/conf.mjs";
|
|
84
|
-
import "node:util";
|
|
85
86
|
import "node:process";
|
|
86
87
|
import "node:assert";
|
|
87
88
|
import "./_libs/dot-prop.mjs";
|
|
88
89
|
import "./_libs/env-paths.mjs";
|
|
89
|
-
import "node:os";
|
|
90
90
|
import "./_libs/atomically.mjs";
|
|
91
|
+
import "node:events";
|
|
91
92
|
import "./_libs/stubborn-fs.mjs";
|
|
92
93
|
import "./_libs/stubborn-utils.mjs";
|
|
93
94
|
import "./_libs/when-exit.mjs";
|
|
@@ -118,7 +119,7 @@ import "./_libs/pako.mjs";
|
|
|
118
119
|
function SessionViewerRoute() {
|
|
119
120
|
const {
|
|
120
121
|
sessionId
|
|
121
|
-
} = Route$
|
|
122
|
+
} = Route$K.useParams();
|
|
122
123
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(ClientOnlySessionViewer, { sessionId });
|
|
123
124
|
}
|
|
124
125
|
function ClientOnlySessionViewer({
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, c as cn, B as Badge, f as formatTokens, b as copyTextToClipboard, L as LazyJsonViewerFromString } from "./ProxyViewerContainer-
|
|
3
|
-
import "./router-
|
|
2
|
+
import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, c as cn, B as Badge, f as formatTokens, b as copyTextToClipboard, L as LazyJsonViewerFromString } from "./ProxyViewerContainer-BE4umfVs.mjs";
|
|
3
|
+
import "./router-Cq8LEvhE.mjs";
|
|
4
|
+
import "node:fs";
|
|
5
|
+
import "node:buffer";
|
|
6
|
+
import "node:path";
|
|
7
|
+
import "node:crypto";
|
|
8
|
+
import "node:child_process";
|
|
9
|
+
import "node:url";
|
|
10
|
+
import "crypto";
|
|
11
|
+
import "node:util";
|
|
4
12
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
13
|
import "../_libs/jszip.mjs";
|
|
6
|
-
import
|
|
14
|
+
import "node:os";
|
|
15
|
+
import { X, az as Rows3, aA as Columns2, a8 as Minus, e as Plus, a2 as Pencil, k as ChevronRight, aB as Equal, b as Check, h as Copy } from "../_libs/lucide-react.mjs";
|
|
7
16
|
import "../_libs/swr.mjs";
|
|
8
17
|
import "../_libs/use-sync-external-store.mjs";
|
|
9
18
|
import "../_libs/dequal.mjs";
|
|
@@ -22,7 +31,6 @@ import "../_libs/react-dom.mjs";
|
|
|
22
31
|
import "util";
|
|
23
32
|
import "async_hooks";
|
|
24
33
|
import "stream";
|
|
25
|
-
import "crypto";
|
|
26
34
|
import "../_libs/radix-ui__react-slot.mjs";
|
|
27
35
|
import "../_libs/@radix-ui/react-use-callback-ref+[...].mjs";
|
|
28
36
|
import "../_libs/@radix-ui/react-use-escape-keydown+[...].mjs";
|
|
@@ -67,27 +75,20 @@ import "../_libs/tanstack__router-core.mjs";
|
|
|
67
75
|
import "../_libs/cookie-es.mjs";
|
|
68
76
|
import "../_libs/seroval.mjs";
|
|
69
77
|
import "../_libs/seroval-plugins.mjs";
|
|
78
|
+
import "node:stream";
|
|
70
79
|
import "../_libs/tanstack__history.mjs";
|
|
71
80
|
import "../_libs/tiny-invariant.mjs";
|
|
72
81
|
import "node:stream/web";
|
|
73
|
-
import "node:stream";
|
|
74
82
|
import "../_libs/isbot.mjs";
|
|
75
|
-
import "node:fs";
|
|
76
83
|
import "node:fs/promises";
|
|
77
84
|
import "node:readline";
|
|
78
|
-
import "node:buffer";
|
|
79
|
-
import "node:path";
|
|
80
|
-
import "node:crypto";
|
|
81
|
-
import "node:child_process";
|
|
82
|
-
import "node:url";
|
|
83
85
|
import "../_libs/conf.mjs";
|
|
84
|
-
import "node:util";
|
|
85
86
|
import "node:process";
|
|
86
87
|
import "node:assert";
|
|
87
88
|
import "../_libs/dot-prop.mjs";
|
|
88
89
|
import "../_libs/env-paths.mjs";
|
|
89
|
-
import "node:os";
|
|
90
90
|
import "../_libs/atomically.mjs";
|
|
91
|
+
import "node:events";
|
|
91
92
|
import "../_libs/stubborn-fs.mjs";
|
|
92
93
|
import "../_libs/stubborn-utils.mjs";
|
|
93
94
|
import "../_libs/when-exit.mjs";
|
package/.output/server/_ssr/{ProxyViewerContainer-BgXewlIr.mjs → ProxyViewerContainer-BE4umfVs.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,
|
|
2
|
+
import { C as CapturedLogSchema, q as DeleteInspectorGroupsResponseSchema, D as DEFAULT_CAPTURE_MODE, a as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, b as DEFAULT_PROVIDER_TEST_TIMEOUT_SECONDS, c as DEFAULT_TIME_DISPLAY_FORMAT, d as RuntimeConfigSchema, m as extractStopReason, p as packageJson, P as ProviderConfigSchema, i as apiFormatForPath, r as GroupEvidenceExportResultSchema, t as DeleteInspectorGroupResponseSchema, N as PiAgentResponseSchema, l as isTurnBoundary, n as AlertSummarySchema, o as AlertListResponseSchema, I as InspectorGroupsListResponseSchema, G as GroupEvidenceReadResponseSchema, E as createPendingProviderTestResults, F as ProviderTestResultsSchema, H as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, J as MAX_PROVIDER_TEST_TIMEOUT_SECONDS, T as TimeDisplayFormatSchema, v as maskApiKey, x as PATH_V1_MESSAGES, y as PATH_V1_CHAT_COMPLETIONS, z as PATH_V1_RESPONSES, u as providerHasContextMetadata, f as parseOpenAIResponse, g as parseOpenAIResponsesResponse, O as OpenAIRequestSchema, h as OpenAIResponsesRequestSchema, A as AnthropicResponseSchema$1, e as AnthropicRequestSchema, s as safeGetOwnProperty, Q as resolveProviderContextWindow, j as getSessionPath, w as findProviderModelMetadata, B as previewUpstreamUrl, K as KnowledgeCandidateSchema, S as isPlainRecord, k as stripClaudeCodeBillingHeader, L as LogBodyChunkSchema } from "./router-Cq8LEvhE.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";
|
|
@@ -9,7 +9,7 @@ import { c as cva } from "../_libs/class-variance-authority.mjs";
|
|
|
9
9
|
import { u as useWindowVirtualizer, a as useVirtualizer } from "../_libs/tanstack__react-virtual.mjs";
|
|
10
10
|
import { d as diffJson, a as diffLines } from "../_libs/diff.mjs";
|
|
11
11
|
import { R as Root2, T as Trigger, I as Icon, V as Value, P as Portal, C as Content2, a as Viewport, b as Item, c as ItemIndicator, d as ItemText, S as ScrollUpButton, e as ScrollDownButton } from "../_libs/radix-ui__react-select.mjs";
|
|
12
|
-
import { T as TriangleAlert, C as CircleCheck, X, I as Info, a as ChevronDown, b as Check, P as PanelRightOpen, c as PanelRightClose, S as Search, U as Upload, D as Download, F as FileBraces, R as RefreshCw, d as Trash2, e as Plus,
|
|
12
|
+
import { T as TriangleAlert, C as CircleCheck, X, I as Info, a as ChevronDown, b as Check, P as PanelRightOpen, c as PanelRightClose, S as Search, U as Upload, D as Download, F as FileBraces, R as RefreshCw, d as Trash2, e as Plus, B as BrainCircuit, L as LoaderCircle, f as Send, A as ArrowLeft, g as ChevronUp, h as Copy, i as ChevronsLeft, j as ChevronLeft, k as ChevronRight, l as ChevronsRight, m as Clapperboard, n as Flag, o as Siren, p as Timer, G as Gauge, q as Layers, r as FlaskConical, s as Sparkles, t as Activity, u as Beaker, N as Network, v as Terminal, w as Settings, M as Monitor, x as Rocket, y as PackageCheck, H as History, z as Scan, E as CircleAlert, J as ArrowUpRight, K as ArrowDownRight, O as Cpu, Q as FolderOpen, V as Bell, W as Clock3, Y as ShieldAlert, Z as EyeOff, _ as Eye, $ as ExternalLink, a0 as Clock, a1 as RotateCw, a2 as Pencil, a3 as MessageSquare, a4 as Zap, a5 as Wrench, a6 as Brain, a7 as CircleCheckBig, a8 as Minus, a9 as CircleQuestionMark, aa as Server, ab as Lock, ac as Wifi, ad as WifiOff, ae as CircleX, af as ShieldCheck, ag as Save, ah as FileSearch, ai as CloudUpload, aj as OctagonAlert, ak as Radio, al as Globe, am as FileTerminal, an as ChevronsUp, ao as ChevronsDown, ap as FileDiff, aq as RotateCcw, ar as GitCompareArrows, as as ArrowUp, at as ArrowDown, au as Ellipsis, av as CodeXml, aw as Blocks, ax as MousePointerClick, ay as FileText, az as Rows3, aA as Columns2 } from "../_libs/lucide-react.mjs";
|
|
13
13
|
import { u as union, d as object, a as array, l as literal, n as number, c as boolean, b as string, _ as _enum } from "../_libs/zod.mjs";
|
|
14
14
|
import { S as Slot } from "../_libs/radix-ui__react-slot.mjs";
|
|
15
15
|
import { R as Root2$1, L as List, T as Trigger$2, C as Content$1 } from "../_libs/radix-ui__react-tabs.mjs";
|
|
@@ -389,12 +389,12 @@ async function fetchStreamingChunks(logId, signal) {
|
|
|
389
389
|
return null;
|
|
390
390
|
}
|
|
391
391
|
}
|
|
392
|
-
function isRecord
|
|
392
|
+
function isRecord(value) {
|
|
393
393
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
394
394
|
}
|
|
395
395
|
function redactValue(value) {
|
|
396
396
|
if (Array.isArray(value)) return value.map((item) => redactValue(item));
|
|
397
|
-
if (!isRecord
|
|
397
|
+
if (!isRecord(value)) return value;
|
|
398
398
|
const result = {};
|
|
399
399
|
for (const [key, item] of Object.entries(value)) {
|
|
400
400
|
result[key] = SECRET_KEY_PATTERN.test(key) ? REDACTED : redactValue(item);
|
|
@@ -563,82 +563,6 @@ function formatTimestamp$2(iso, format) {
|
|
|
563
563
|
function formatTimestampRange(startedAt, endedAt, format) {
|
|
564
564
|
return `${formatTimestamp$2(startedAt, format)} - ${formatTimestamp$2(endedAt, format)}`;
|
|
565
565
|
}
|
|
566
|
-
function isRecord(value) {
|
|
567
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
568
|
-
}
|
|
569
|
-
function normalizeAnthropicStopReason(value) {
|
|
570
|
-
switch (value) {
|
|
571
|
-
case "end_turn":
|
|
572
|
-
case "tool_use":
|
|
573
|
-
return value;
|
|
574
|
-
case "max_tokens":
|
|
575
|
-
return "length";
|
|
576
|
-
default:
|
|
577
|
-
return null;
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
function normalizeOpenAIFinishReason(value) {
|
|
581
|
-
switch (value) {
|
|
582
|
-
case "stop":
|
|
583
|
-
case "length":
|
|
584
|
-
return value;
|
|
585
|
-
case "max_tokens":
|
|
586
|
-
return "length";
|
|
587
|
-
default:
|
|
588
|
-
return null;
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
function isResponsesLengthLimitReason(value) {
|
|
592
|
-
switch (value) {
|
|
593
|
-
case "max_output_tokens":
|
|
594
|
-
case "max_tokens":
|
|
595
|
-
return true;
|
|
596
|
-
default:
|
|
597
|
-
return false;
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
function extractStopReason(log) {
|
|
601
|
-
if (log.responseText === null) return null;
|
|
602
|
-
try {
|
|
603
|
-
let json = JSON.parse(log.responseText);
|
|
604
|
-
if (typeof json === "string") {
|
|
605
|
-
json = JSON.parse(json);
|
|
606
|
-
}
|
|
607
|
-
if (!isRecord(json)) return null;
|
|
608
|
-
if (typeof json.stop_reason === "string") {
|
|
609
|
-
return normalizeAnthropicStopReason(json.stop_reason);
|
|
610
|
-
}
|
|
611
|
-
if (Array.isArray(json.choices)) {
|
|
612
|
-
for (const choice of json.choices) {
|
|
613
|
-
if (!isRecord(choice) || typeof choice.finish_reason !== "string") continue;
|
|
614
|
-
const reason = normalizeOpenAIFinishReason(choice.finish_reason);
|
|
615
|
-
if (reason !== null) return reason;
|
|
616
|
-
}
|
|
617
|
-
}
|
|
618
|
-
if (Array.isArray(json.output)) {
|
|
619
|
-
for (const item of json.output) {
|
|
620
|
-
if (isRecord(item) && item.type === "function_call") {
|
|
621
|
-
return "tool_use";
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
if (json.status === "completed") {
|
|
625
|
-
return "stop";
|
|
626
|
-
}
|
|
627
|
-
}
|
|
628
|
-
if (json.status === "incomplete" && isRecord(json.incomplete_details)) {
|
|
629
|
-
const reason = json.incomplete_details.reason;
|
|
630
|
-
if (typeof reason === "string" && isResponsesLengthLimitReason(reason)) {
|
|
631
|
-
return "length";
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
|
-
return null;
|
|
635
|
-
} catch {
|
|
636
|
-
return null;
|
|
637
|
-
}
|
|
638
|
-
}
|
|
639
|
-
function isTurnBoundary(stopReason) {
|
|
640
|
-
return stopReason === "end_turn" || stopReason === "stop" || stopReason === "length";
|
|
641
|
-
}
|
|
642
566
|
function cn(...inputs) {
|
|
643
567
|
return twMerge(clsx(inputs));
|
|
644
568
|
}
|
|
@@ -2546,27 +2470,27 @@ function useCopyFeedback(text) {
|
|
|
2546
2470
|
return { copied, copy };
|
|
2547
2471
|
}
|
|
2548
2472
|
const LazyCompareDrawer = reactExports.lazy(
|
|
2549
|
-
() => import("./CompareDrawer-
|
|
2473
|
+
() => import("./CompareDrawer-BYZS_hCR.mjs").then((m) => ({ default: m.CompareDrawer }))
|
|
2550
2474
|
);
|
|
2551
2475
|
const LazyReplayDialog = reactExports.lazy(
|
|
2552
|
-
() => import("./ReplayDialog-
|
|
2476
|
+
() => import("./ReplayDialog-BlID2ZH4.mjs").then((m) => ({ default: m.ReplayDialog }))
|
|
2553
2477
|
);
|
|
2554
2478
|
const LazyRequestAnatomy = reactExports.lazy(
|
|
2555
|
-
() => import("./RequestAnatomy-
|
|
2479
|
+
() => import("./RequestAnatomy-CGJ2lkzT.mjs").then((m) => ({ default: m.RequestAnatomy }))
|
|
2556
2480
|
);
|
|
2557
2481
|
const LazyResponseView = reactExports.lazy(
|
|
2558
|
-
() => import("./ResponseView-
|
|
2482
|
+
() => import("./ResponseView-DDjcGf7M.mjs").then((m) => ({ default: m.ResponseView }))
|
|
2559
2483
|
);
|
|
2560
2484
|
const LazyStreamingChunkSequence = reactExports.lazy(
|
|
2561
|
-
() => import("./StreamingChunkSequence-
|
|
2485
|
+
() => import("./StreamingChunkSequence-G7B8M5G2.mjs").then((m) => ({
|
|
2562
2486
|
default: m.StreamingChunkSequence
|
|
2563
2487
|
}))
|
|
2564
2488
|
);
|
|
2565
2489
|
const LazyJsonViewer = reactExports.lazy(
|
|
2566
|
-
() => import("./json-viewer-
|
|
2490
|
+
() => import("./json-viewer-CFbpkiBJ.mjs").then((m) => ({ default: m.JsonViewer }))
|
|
2567
2491
|
);
|
|
2568
2492
|
const LazyJsonViewerFromString = reactExports.lazy(
|
|
2569
|
-
() => import("./json-viewer-
|
|
2493
|
+
() => import("./json-viewer-CFbpkiBJ.mjs").then((m) => ({ default: m.JsonViewerFromString }))
|
|
2570
2494
|
);
|
|
2571
2495
|
const HIGHLIGHT_DURATION_MS = 1200;
|
|
2572
2496
|
const MAX_HIGHLIGHT_ATTEMPTS = 12;
|
|
@@ -3692,6 +3616,12 @@ function shouldShowRawRequestTab(apiFormat, viewMode, strip) {
|
|
|
3692
3616
|
function shouldShowHeadersDiffButton(viewMode, hasRawHeaders) {
|
|
3693
3617
|
return viewMode === "full" && hasRawHeaders;
|
|
3694
3618
|
}
|
|
3619
|
+
function shouldShowRawHeadersTab(viewMode, hasRawHeaders) {
|
|
3620
|
+
return viewMode === "full" && hasRawHeaders;
|
|
3621
|
+
}
|
|
3622
|
+
function shouldShowHeadersTab(viewMode, hasHeaders) {
|
|
3623
|
+
return viewMode === "full" && hasHeaders;
|
|
3624
|
+
}
|
|
3695
3625
|
function shouldShowRequestDiffButton(apiFormat, viewMode, strip, hasRawRequest) {
|
|
3696
3626
|
return apiFormat === "anthropic" && viewMode === "full" && strip && hasRawRequest;
|
|
3697
3627
|
}
|
|
@@ -4049,21 +3979,36 @@ const LogEntry = reactExports.memo(function({
|
|
|
4049
3979
|
onToggle: rawRequestExpansion.toggle
|
|
4050
3980
|
} : null
|
|
4051
3981
|
},
|
|
4052
|
-
|
|
4053
|
-
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
3982
|
+
// Tab-level actions mirror the visibility rules in logEntryVisibility:
|
|
3983
|
+
// when the corresponding tab is hidden because the log has no captured
|
|
3984
|
+
// headers, the header bar must not surface a Copy button either. We
|
|
3985
|
+
// therefore omit the key entirely (header renders no actions) instead
|
|
3986
|
+
// of returning a bundle with `copyText: null`.
|
|
3987
|
+
...shouldShowHeadersTab(
|
|
3988
|
+
viewMode,
|
|
3989
|
+
displayLog.headers !== void 0 && Object.keys(displayLog.headers).length > 0
|
|
3990
|
+
) ? {
|
|
3991
|
+
headers: {
|
|
3992
|
+
copyLabel: "Copy headers",
|
|
3993
|
+
copyText: headersText,
|
|
3994
|
+
copyCopied: headersCopy.copied,
|
|
3995
|
+
onCopy: headersCopy.copy,
|
|
3996
|
+
// Headers are a flat dict, no JSON tree to expand.
|
|
3997
|
+
expansion: null
|
|
3998
|
+
}
|
|
3999
|
+
} : {},
|
|
4000
|
+
...shouldShowRawHeadersTab(
|
|
4001
|
+
viewMode,
|
|
4002
|
+
displayLog.rawHeaders !== void 0 && Object.keys(displayLog.rawHeaders).length > 0
|
|
4003
|
+
) ? {
|
|
4004
|
+
"raw-headers": {
|
|
4005
|
+
copyLabel: "Copy raw headers",
|
|
4006
|
+
copyText: rawHeadersText,
|
|
4007
|
+
copyCopied: rawHeadersCopy.copied,
|
|
4008
|
+
onCopy: rawHeadersCopy.copy,
|
|
4009
|
+
expansion: null
|
|
4010
|
+
}
|
|
4011
|
+
} : {},
|
|
4067
4012
|
raw: {
|
|
4068
4013
|
copyLabel: responsePreviewIsActive ? "Copy loaded response preview" : "Copy response",
|
|
4069
4014
|
copyText: responseTextForView,
|
|
@@ -4304,8 +4249,14 @@ const LogEntry = reactExports.memo(function({
|
|
|
4304
4249
|
variant: "line",
|
|
4305
4250
|
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",
|
|
4306
4251
|
children: [
|
|
4307
|
-
|
|
4308
|
-
|
|
4252
|
+
shouldShowRawHeadersTab(
|
|
4253
|
+
viewMode,
|
|
4254
|
+
displayLog.rawHeaders !== void 0 && Object.keys(displayLog.rawHeaders).length > 0
|
|
4255
|
+
) && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { className: TAB_TRIGGER_CLASS, value: "raw-headers", children: "Raw Headers" }),
|
|
4256
|
+
shouldShowHeadersTab(
|
|
4257
|
+
viewMode,
|
|
4258
|
+
displayLog.headers !== void 0 && Object.keys(displayLog.headers).length > 0
|
|
4259
|
+
) && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { className: TAB_TRIGGER_CLASS, value: "headers", children: "Headers" }),
|
|
4309
4260
|
anatomySegments !== null && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { className: TAB_TRIGGER_CLASS, value: "anatomy", children: "Context" }),
|
|
4310
4261
|
shouldShowRawRequestTab(resolvedFormat, viewMode, strip) && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { className: TAB_TRIGGER_CLASS, value: "raw-request", children: "Raw Request" }),
|
|
4311
4262
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { className: TAB_TRIGGER_CLASS, value: "request", children: "Request" }),
|
|
@@ -4403,7 +4354,10 @@ const LogEntry = reactExports.memo(function({
|
|
|
4403
4354
|
onSegmentActivate: jumpToAnatomySegment
|
|
4404
4355
|
}
|
|
4405
4356
|
) }) }) }),
|
|
4406
|
-
|
|
4357
|
+
shouldShowHeadersTab(
|
|
4358
|
+
viewMode,
|
|
4359
|
+
displayLog.headers !== void 0 && Object.keys(displayLog.headers).length > 0
|
|
4360
|
+
) && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "headers", children: activeTab === "headers" && /* @__PURE__ */ jsxRuntimeExports.jsxs(ExpandedPanel, { children: [
|
|
4407
4361
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-end gap-2 mb-2", children: shouldShowHeadersDiffButton(
|
|
4408
4362
|
viewMode,
|
|
4409
4363
|
displayLog.rawHeaders !== void 0 && Object.keys(displayLog.rawHeaders).length > 0
|
|
@@ -4426,7 +4380,10 @@ const LogEntry = reactExports.memo(function({
|
|
|
4426
4380
|
}
|
|
4427
4381
|
) : /* @__PURE__ */ jsxRuntimeExports.jsx(HeaderRows, { headers: displayLog.headers, emptyLabel: "No headers captured" })
|
|
4428
4382
|
] }) }),
|
|
4429
|
-
|
|
4383
|
+
shouldShowRawHeadersTab(
|
|
4384
|
+
viewMode,
|
|
4385
|
+
displayLog.rawHeaders !== void 0 && Object.keys(displayLog.rawHeaders).length > 0
|
|
4386
|
+
) && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "raw-headers", children: activeTab === "raw-headers" && /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandedPanel, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
4430
4387
|
HeaderRows,
|
|
4431
4388
|
{
|
|
4432
4389
|
headers: displayLog.rawHeaders,
|
|
@@ -11777,6 +11734,147 @@ function AgentLabDialog({ currentSessionId, logCount }) {
|
|
|
11777
11734
|
] })
|
|
11778
11735
|
] });
|
|
11779
11736
|
}
|
|
11737
|
+
const DEFAULT_QUESTION = "Analyze the current Inspector session. What looks abnormal, slow, or likely to hang?";
|
|
11738
|
+
function providerSupportsPiAgent(provider) {
|
|
11739
|
+
return provider.openaiResponsesBaseUrl !== void 0 || provider.openaiBaseUrl !== void 0 || provider.anthropicBaseUrl !== void 0;
|
|
11740
|
+
}
|
|
11741
|
+
function providerProtocolLabel(provider) {
|
|
11742
|
+
if (provider.openaiResponsesBaseUrl !== void 0 && provider.openaiResponsesBaseUrl !== "") {
|
|
11743
|
+
return "Responses";
|
|
11744
|
+
}
|
|
11745
|
+
if (provider.openaiBaseUrl !== void 0 && provider.openaiBaseUrl !== "") {
|
|
11746
|
+
return "Chat";
|
|
11747
|
+
}
|
|
11748
|
+
return "Anthropic";
|
|
11749
|
+
}
|
|
11750
|
+
function sortProviderBySource(providers) {
|
|
11751
|
+
return providers.toSorted((left, right) => {
|
|
11752
|
+
const leftCompanyRank = left.source === "company" ? 0 : 1;
|
|
11753
|
+
const rightCompanyRank = right.source === "company" ? 0 : 1;
|
|
11754
|
+
if (leftCompanyRank !== rightCompanyRank) return leftCompanyRank - rightCompanyRank;
|
|
11755
|
+
return left.name.localeCompare(right.name);
|
|
11756
|
+
});
|
|
11757
|
+
}
|
|
11758
|
+
function PiAgentPanel({ currentSessionId, logCount }) {
|
|
11759
|
+
const { providers } = useProviders();
|
|
11760
|
+
const piProviders = reactExports.useMemo(
|
|
11761
|
+
() => sortProviderBySource(providers.filter(providerSupportsPiAgent)),
|
|
11762
|
+
[providers]
|
|
11763
|
+
);
|
|
11764
|
+
const [question, setQuestion] = reactExports.useState(DEFAULT_QUESTION);
|
|
11765
|
+
const [providerId, setProviderId] = reactExports.useState("__auto__");
|
|
11766
|
+
const [model, setModel] = reactExports.useState("__auto__");
|
|
11767
|
+
const [answer, setAnswer] = reactExports.useState("");
|
|
11768
|
+
const [status, setStatus] = reactExports.useState("");
|
|
11769
|
+
const [loading, setLoading] = reactExports.useState(false);
|
|
11770
|
+
const selectedProvider = piProviders.find((provider) => provider.id === providerId);
|
|
11771
|
+
const modelOptions = selectedProvider?.models ?? [];
|
|
11772
|
+
const canAsk = question.trim() !== "" && piProviders.length > 0 && !loading;
|
|
11773
|
+
const handleQuestionChange = (event) => {
|
|
11774
|
+
setQuestion(event.currentTarget.value);
|
|
11775
|
+
};
|
|
11776
|
+
const handleProviderChange = (value) => {
|
|
11777
|
+
setProviderId(value);
|
|
11778
|
+
setModel("__auto__");
|
|
11779
|
+
};
|
|
11780
|
+
const askPiAgent = () => {
|
|
11781
|
+
if (!canAsk) return;
|
|
11782
|
+
setLoading(true);
|
|
11783
|
+
setStatus("");
|
|
11784
|
+
setAnswer("");
|
|
11785
|
+
const body = {
|
|
11786
|
+
question: question.trim(),
|
|
11787
|
+
...currentSessionId !== null ? { sessionId: currentSessionId } : {},
|
|
11788
|
+
...providerId !== "__auto__" ? { providerId } : {},
|
|
11789
|
+
...model !== "__auto__" ? { model } : {},
|
|
11790
|
+
logLimit: 24
|
|
11791
|
+
};
|
|
11792
|
+
void fetch("/api/pi-agent", {
|
|
11793
|
+
method: "POST",
|
|
11794
|
+
headers: { "content-type": "application/json" },
|
|
11795
|
+
body: JSON.stringify(body)
|
|
11796
|
+
}).then(async (response) => {
|
|
11797
|
+
const raw = await response.text();
|
|
11798
|
+
if (!response.ok) {
|
|
11799
|
+
setStatus(`Pi Agent failed: HTTP ${String(response.status)}`);
|
|
11800
|
+
setAnswer(raw);
|
|
11801
|
+
return;
|
|
11802
|
+
}
|
|
11803
|
+
const parsedJson = JSON.parse(raw);
|
|
11804
|
+
const parsed = PiAgentResponseSchema.safeParse(parsedJson);
|
|
11805
|
+
if (!parsed.success) {
|
|
11806
|
+
setStatus("Pi Agent returned an unexpected response.");
|
|
11807
|
+
setAnswer(raw);
|
|
11808
|
+
return;
|
|
11809
|
+
}
|
|
11810
|
+
setStatus(
|
|
11811
|
+
`${parsed.data.providerName} / ${parsed.data.model} / ${parsed.data.protocol} / ${String(
|
|
11812
|
+
parsed.data.logCount
|
|
11813
|
+
)} logs`
|
|
11814
|
+
);
|
|
11815
|
+
setAnswer(parsed.data.answer);
|
|
11816
|
+
}).catch((err) => {
|
|
11817
|
+
setStatus(err instanceof Error ? err.message : "Pi Agent request failed.");
|
|
11818
|
+
}).finally(() => {
|
|
11819
|
+
setLoading(false);
|
|
11820
|
+
});
|
|
11821
|
+
};
|
|
11822
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "rounded-md bg-black/20 px-3 py-3 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.045)]", children: [
|
|
11823
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
11824
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(BrainCircuit, { className: "size-4 text-cyan-200" }),
|
|
11825
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
11826
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-xs font-semibold text-foreground", children: "Pi Agent" }),
|
|
11827
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-[11px] text-muted-foreground", children: currentSessionId === null ? "Inspector-wide analysis" : "Session analysis" })
|
|
11828
|
+
] })
|
|
11829
|
+
] }),
|
|
11830
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-3 grid grid-cols-2 gap-2", children: [
|
|
11831
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(Select, { value: providerId, onValueChange: handleProviderChange, children: [
|
|
11832
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger, { className: "h-8 border-0 bg-black/25 text-xs shadow-[inset_0_0_0_1px_rgba(255,255,255,0.06)]", children: /* @__PURE__ */ jsxRuntimeExports.jsx(SelectValue, { placeholder: "Provider" }) }),
|
|
11833
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(SelectContent, { children: [
|
|
11834
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "__auto__", children: "Auto provider" }),
|
|
11835
|
+
piProviders.map((provider) => /* @__PURE__ */ jsxRuntimeExports.jsxs(SelectItem, { value: provider.id, children: [
|
|
11836
|
+
provider.name,
|
|
11837
|
+
" / ",
|
|
11838
|
+
providerProtocolLabel(provider)
|
|
11839
|
+
] }, provider.id))
|
|
11840
|
+
] })
|
|
11841
|
+
] }),
|
|
11842
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(Select, { value: model, onValueChange: setModel, children: [
|
|
11843
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger, { className: "h-8 border-0 bg-black/25 text-xs shadow-[inset_0_0_0_1px_rgba(255,255,255,0.06)]", children: /* @__PURE__ */ jsxRuntimeExports.jsx(SelectValue, { placeholder: "Model" }) }),
|
|
11844
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(SelectContent, { children: [
|
|
11845
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "__auto__", children: "Auto model" }),
|
|
11846
|
+
modelOptions.map((modelName) => /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: modelName, children: modelName }, modelName))
|
|
11847
|
+
] })
|
|
11848
|
+
] })
|
|
11849
|
+
] }),
|
|
11850
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
11851
|
+
"textarea",
|
|
11852
|
+
{
|
|
11853
|
+
value: question,
|
|
11854
|
+
onChange: handleQuestionChange,
|
|
11855
|
+
className: "mt-2 min-h-24 w-full resize-y rounded-md bg-black/25 px-3 py-2 text-xs leading-5 text-foreground outline-none shadow-[inset_0_0_0_1px_rgba(255,255,255,0.06)] transition-colors placeholder:text-muted-foreground focus-visible:ring-1 focus-visible:ring-ring",
|
|
11856
|
+
placeholder: "Ask Pi Agent about this session..."
|
|
11857
|
+
}
|
|
11858
|
+
),
|
|
11859
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
11860
|
+
"button",
|
|
11861
|
+
{
|
|
11862
|
+
type: "button",
|
|
11863
|
+
onClick: askPiAgent,
|
|
11864
|
+
disabled: !canAsk,
|
|
11865
|
+
className: "mt-2 inline-flex h-8 w-full items-center justify-center gap-2 rounded-md bg-cyan-400/12 px-3 text-xs font-medium text-cyan-100 shadow-[inset_0_0_0_1px_rgba(103,232,249,0.18)] transition-colors hover:bg-cyan-400/18 disabled:cursor-not-allowed disabled:opacity-50",
|
|
11866
|
+
children: [
|
|
11867
|
+
loading ? /* @__PURE__ */ jsxRuntimeExports.jsx(LoaderCircle, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Send, { className: "size-3.5" }),
|
|
11868
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: loading ? "Thinking..." : "Ask Pi" })
|
|
11869
|
+
]
|
|
11870
|
+
}
|
|
11871
|
+
),
|
|
11872
|
+
piProviders.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-2 text-[11px] leading-5 text-muted-foreground", children: "Configure a Provider with Responses, Chat, or Anthropic URL to enable Pi Agent." }),
|
|
11873
|
+
status !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-2 break-words font-mono text-[10px] text-cyan-100/70", children: status }),
|
|
11874
|
+
answer !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-3 max-h-64 overflow-y-auto whitespace-pre-wrap rounded-md bg-black/25 p-3 text-xs leading-5 text-foreground shadow-[inset_0_0_0_1px_rgba(255,255,255,0.05)]", children: answer }),
|
|
11875
|
+
logCount === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-2 text-[11px] leading-5 text-muted-foreground", children: "No logs are visible in this scope yet; Pi Agent can still answer Provider setup questions." })
|
|
11876
|
+
] });
|
|
11877
|
+
}
|
|
11780
11878
|
function computeCacheTrends(groups) {
|
|
11781
11879
|
const result = /* @__PURE__ */ new Map();
|
|
11782
11880
|
for (const group of groups) {
|
|
@@ -15110,6 +15208,7 @@ function ProxyViewer({
|
|
|
15110
15208
|
),
|
|
15111
15209
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 text-[11px] text-muted-foreground", children: isPinnedSessionPage ? "Session workspace" : "Live workspace" })
|
|
15112
15210
|
] }) }),
|
|
15211
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(PiAgentPanel, { currentSessionId: labSessionId, logCount: logs.length }),
|
|
15113
15212
|
hasSessionContext && sessionContextScope !== null && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
15114
15213
|
SessionContextBar,
|
|
15115
15214
|
{
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { u as useProviders, d as fetchJsonWithTimeout, D as Dialog, e as DialogContent, h as DialogHeader, i as DialogTitle, T as Tabs, j as TabsList, k as TabsTrigger, l as TabsContent, m as Button, n as TooltipProvider, o as Tooltip, p as TooltipTrigger, q as TooltipContent, s as dispatchLogFocusRequest, A as ApiTimeoutError } from "./ProxyViewerContainer-
|
|
3
|
-
import { ResponseView } from "./ResponseView-
|
|
4
|
-
import { C as CapturedLogSchema } from "./router-
|
|
2
|
+
import { u as useProviders, d as fetchJsonWithTimeout, D as Dialog, e as DialogContent, h as DialogHeader, i as DialogTitle, T as Tabs, j as TabsList, k as TabsTrigger, l as TabsContent, m as Button, n as TooltipProvider, o as Tooltip, p as TooltipTrigger, q as TooltipContent, s as dispatchLogFocusRequest, A as ApiTimeoutError } from "./ProxyViewerContainer-BE4umfVs.mjs";
|
|
3
|
+
import { ResponseView } from "./ResponseView-DDjcGf7M.mjs";
|
|
4
|
+
import { C as CapturedLogSchema } from "./router-Cq8LEvhE.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
|
+
import "node:fs";
|
|
7
|
+
import "node:buffer";
|
|
8
|
+
import "node:path";
|
|
9
|
+
import "node:crypto";
|
|
10
|
+
import "node:child_process";
|
|
11
|
+
import "node:url";
|
|
12
|
+
import "crypto";
|
|
13
|
+
import "node:util";
|
|
6
14
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
7
|
-
import
|
|
15
|
+
import "node:os";
|
|
16
|
+
import { aq as RotateCcw, aC as Braces, aD as Minimize2 } from "../_libs/lucide-react.mjs";
|
|
8
17
|
import { d as object, n as number, a as array, c as boolean, b as string } from "../_libs/zod.mjs";
|
|
9
18
|
import "../_libs/swr.mjs";
|
|
10
19
|
import "../_libs/use-sync-external-store.mjs";
|
|
@@ -24,7 +33,6 @@ import "../_libs/react-dom.mjs";
|
|
|
24
33
|
import "util";
|
|
25
34
|
import "async_hooks";
|
|
26
35
|
import "stream";
|
|
27
|
-
import "crypto";
|
|
28
36
|
import "../_libs/radix-ui__react-slot.mjs";
|
|
29
37
|
import "../_libs/@radix-ui/react-use-callback-ref+[...].mjs";
|
|
30
38
|
import "../_libs/@radix-ui/react-use-escape-keydown+[...].mjs";
|
|
@@ -69,27 +77,20 @@ import "../_libs/tanstack__router-core.mjs";
|
|
|
69
77
|
import "../_libs/cookie-es.mjs";
|
|
70
78
|
import "../_libs/seroval.mjs";
|
|
71
79
|
import "../_libs/seroval-plugins.mjs";
|
|
80
|
+
import "node:stream";
|
|
72
81
|
import "../_libs/tanstack__history.mjs";
|
|
73
82
|
import "../_libs/tiny-invariant.mjs";
|
|
74
83
|
import "node:stream/web";
|
|
75
|
-
import "node:stream";
|
|
76
84
|
import "../_libs/isbot.mjs";
|
|
77
|
-
import "node:fs";
|
|
78
85
|
import "node:fs/promises";
|
|
79
86
|
import "node:readline";
|
|
80
|
-
import "node:buffer";
|
|
81
|
-
import "node:path";
|
|
82
|
-
import "node:crypto";
|
|
83
|
-
import "node:child_process";
|
|
84
|
-
import "node:url";
|
|
85
87
|
import "../_libs/conf.mjs";
|
|
86
|
-
import "node:util";
|
|
87
88
|
import "node:process";
|
|
88
89
|
import "node:assert";
|
|
89
90
|
import "../_libs/dot-prop.mjs";
|
|
90
91
|
import "../_libs/env-paths.mjs";
|
|
91
|
-
import "node:os";
|
|
92
92
|
import "../_libs/atomically.mjs";
|
|
93
|
+
import "node:events";
|
|
93
94
|
import "../_libs/stubborn-fs.mjs";
|
|
94
95
|
import "../_libs/stubborn-utils.mjs";
|
|
95
96
|
import "../_libs/when-exit.mjs";
|