@tonyclaw/agent-inspector 2.0.15 → 2.0.17
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 +399 -28
- package/.output/nitro.json +1 -1
- package/.output/public/assets/{CompareDrawer-B6WCFRJq.js → CompareDrawer-DDg7Cs4N.js} +1 -1
- package/.output/public/assets/{ProxyViewerContainer-CofGRJoO.js → ProxyViewerContainer-DbbK1y7N.js} +24 -24
- package/.output/public/assets/{ReplayDialog-O_53zkX8.js → ReplayDialog-C1zWNkoz.js} +1 -1
- package/.output/public/assets/{RequestAnatomy-CqBSMZv5.js → RequestAnatomy-DR8OICOJ.js} +1 -1
- package/.output/public/assets/{ResponseView-BvbA6zot.js → ResponseView-Dh9iSj6h.js} +1 -1
- package/.output/public/assets/{StreamingChunkSequence-Bnf6djjc.js → StreamingChunkSequence-B_xElyH3.js} +1 -1
- package/.output/public/assets/_sessionId-gv1a_NNu.js +1 -0
- package/.output/public/assets/index-u-LwDaeH.js +1 -0
- package/.output/public/assets/{main-Biir9ZGe.js → main-bwZlEXw2.js} +2 -2
- package/.output/server/{_sessionId-B77Gh4IL.mjs → _sessionId-BEuJJhqT.mjs} +2 -2
- package/.output/server/_ssr/{CompareDrawer-D4-RHFqW.mjs → CompareDrawer-yTO93GMz.mjs} +2 -2
- package/.output/server/_ssr/{ProxyViewerContainer-YP28-_2H.mjs → ProxyViewerContainer-C8qCkHGB.mjs} +72 -22
- package/.output/server/_ssr/{ReplayDialog-D9rQlrcY.mjs → ReplayDialog-DRF9PG7Z.mjs} +3 -3
- package/.output/server/_ssr/{RequestAnatomy-BXCRWD9H.mjs → RequestAnatomy-DBcuV_jV.mjs} +2 -2
- package/.output/server/_ssr/{ResponseView-DEwWMqSS.mjs → ResponseView-JJm78HZT.mjs} +2 -2
- package/.output/server/_ssr/{StreamingChunkSequence-CdrTPf5v.mjs → StreamingChunkSequence-DyGKjBYx.mjs} +2 -2
- package/.output/server/_ssr/{index-Chf1DYqT.mjs → index-T7JG28t6.mjs} +2 -2
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{router-BHXU5jWm.mjs → router-BJob8RN3.mjs} +2 -2
- package/.output/server/{_tanstack-start-manifest_v-D1dtacWy.mjs → _tanstack-start-manifest_v-CuiFi3XC.mjs} +1 -1
- package/.output/server/index.mjs +57 -57
- package/README.md +22 -5
- package/package.json +3 -3
- package/scripts/setup-agent-skills.mjs +64 -0
- package/src/cli/onboard.ts +407 -13
- package/src/cli/templates/codex-skill-onboard.ts +13 -4
- package/src/cli/templates/command-onboard.ts +12 -4
- package/src/cli/templates/skill-onboard.ts +30 -8
- package/src/components/OnboardingBanner.tsx +35 -7
- package/src/components/providers/SettingsDialog.tsx +22 -4
- package/src/lib/useOnboarding.ts +9 -1
- package/.output/public/assets/_sessionId-9ICCw6YA.js +0 -1
- package/.output/public/assets/index-DVkMYH8H.js +0 -1
- package/scripts/setup-codex-skill.mjs +0 -38
package/.output/server/_ssr/{ProxyViewerContainer-YP28-_2H.mjs → ProxyViewerContainer-C8qCkHGB.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_CAPTURE_MODE, a as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, b as DEFAULT_TIME_DISPLAY_FORMAT, c as RuntimeConfigSchema, P as ProviderConfigSchema, r as requestFormatForPath, i as createPendingProviderTestResults, j as ProviderTestResultsSchema, k as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, T as TimeDisplayFormatSchema, g as getSessionPath, f as providerHasContextMetadata, h as findProviderModelMetadata, s as safeGetOwnProperty, K as KnowledgeCandidateSchema, e as stripClaudeCodeBillingHeader, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, d as AnthropicRequestSchema, l as resolveProviderContextWindow, m as isPlainRecord } from "./router-
|
|
2
|
+
import { C as CapturedLogSchema, D as DEFAULT_CAPTURE_MODE, a as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, b as DEFAULT_TIME_DISPLAY_FORMAT, c as RuntimeConfigSchema, P as ProviderConfigSchema, r as requestFormatForPath, i as createPendingProviderTestResults, j as ProviderTestResultsSchema, k as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, T as TimeDisplayFormatSchema, g as getSessionPath, f as providerHasContextMetadata, h as findProviderModelMetadata, s as safeGetOwnProperty, K as KnowledgeCandidateSchema, e as stripClaudeCodeBillingHeader, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, d as AnthropicRequestSchema, l as resolveProviderContextWindow, m as isPlainRecord } from "./router-BJob8RN3.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";
|
|
@@ -157,13 +157,15 @@ function useOnboarding() {
|
|
|
157
157
|
);
|
|
158
158
|
const { mutate: globalMutate } = useSWRConfig();
|
|
159
159
|
const hasSeenOnboarding = response.data?.hasSeenOnboarding ?? false;
|
|
160
|
+
const captureMode = response.data?.captureMode ?? DEFAULT_CAPTURE_MODE;
|
|
160
161
|
const markSeen = async () => {
|
|
161
162
|
await globalMutate(ONBOARDING_SWR_KEY, patchRuntimeConfig({ hasSeenOnboarding: true }), {
|
|
162
163
|
optimisticData: {
|
|
163
164
|
stripClaudeCodeBillingHeader: response.data?.stripClaudeCodeBillingHeader ?? false,
|
|
164
165
|
hasSeenOnboarding: true,
|
|
165
166
|
slowResponseThresholdSeconds: response.data?.slowResponseThresholdSeconds ?? DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS,
|
|
166
|
-
timeDisplayFormat: response.data?.timeDisplayFormat ?? DEFAULT_TIME_DISPLAY_FORMAT
|
|
167
|
+
timeDisplayFormat: response.data?.timeDisplayFormat ?? DEFAULT_TIME_DISPLAY_FORMAT,
|
|
168
|
+
captureMode
|
|
167
169
|
},
|
|
168
170
|
rollbackOnError: true,
|
|
169
171
|
revalidate: false
|
|
@@ -171,13 +173,15 @@ function useOnboarding() {
|
|
|
171
173
|
};
|
|
172
174
|
return {
|
|
173
175
|
hasSeenOnboarding,
|
|
176
|
+
captureMode,
|
|
174
177
|
isLoading: response.isLoading,
|
|
175
178
|
markSeen
|
|
176
179
|
};
|
|
177
180
|
}
|
|
178
181
|
function OnboardingBanner() {
|
|
179
|
-
const { hasSeenOnboarding, isLoading, markSeen } = useOnboarding();
|
|
182
|
+
const { hasSeenOnboarding, captureMode, isLoading, markSeen } = useOnboarding();
|
|
180
183
|
if (isLoading || hasSeenOnboarding) return null;
|
|
184
|
+
const isFullMode = captureMode === "full";
|
|
181
185
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
182
186
|
"div",
|
|
183
187
|
{
|
|
@@ -186,19 +190,47 @@ function OnboardingBanner() {
|
|
|
186
190
|
className: "mx-4 mt-2 mb-1 flex items-start gap-3 rounded-md border border-amber-500/30 bg-amber-500/5 px-4 py-3 text-sm",
|
|
187
191
|
children: [
|
|
188
192
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
189
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mb-1 font-medium text-amber-600 dark:text-amber-400", children: "Agent Inspector is ready" }),
|
|
193
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mb-1 font-medium text-amber-600 dark:text-amber-400", children: isFullMode ? "Agent Inspector is ready in Full mode" : "Agent Inspector is ready in Simple mode" }),
|
|
190
194
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("ul", { className: "space-y-0.5 text-xs leading-relaxed text-muted-foreground", children: [
|
|
191
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
192
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
193
|
-
|
|
195
|
+
isFullMode ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
196
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("li", { children: [
|
|
197
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Full mode" }),
|
|
198
|
+
": raw headers, raw response, and SSE chunks are captured for diagnostics."
|
|
199
|
+
] }),
|
|
200
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("li", { children: [
|
|
201
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Daily work" }),
|
|
202
|
+
": restart with ",
|
|
203
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: "agent-inspector --mode simple" }),
|
|
204
|
+
" ",
|
|
205
|
+
"to reduce capture overhead."
|
|
206
|
+
] })
|
|
207
|
+
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
208
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("li", { children: [
|
|
209
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Simple mode" }),
|
|
210
|
+
": lightweight capture for requests, responses, tools, timing, and token usage."
|
|
211
|
+
] }),
|
|
212
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("li", { children: [
|
|
213
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Need diagnostics?" }),
|
|
214
|
+
" Restart with",
|
|
215
|
+
" ",
|
|
216
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: "agent-inspector --mode full" }),
|
|
217
|
+
" for raw headers, raw response, and SSE chunks."
|
|
218
|
+
] })
|
|
194
219
|
] }),
|
|
195
220
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("li", { children: [
|
|
196
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Replay" }),
|
|
197
|
-
":
|
|
221
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Replay and Memory" }),
|
|
222
|
+
": available in both modes for provider checks and reviewable knowledge candidates."
|
|
198
223
|
] }),
|
|
199
224
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("li", { children: [
|
|
200
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "
|
|
201
|
-
":
|
|
225
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Agent setup" }),
|
|
226
|
+
": run ",
|
|
227
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: "agent-inspector onboard --status" }),
|
|
228
|
+
", then use ",
|
|
229
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: "/agent-inspector:onboard" }),
|
|
230
|
+
" in Claude Code or ask Codex to use",
|
|
231
|
+
" ",
|
|
232
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: "agent-inspector-onboard" }),
|
|
233
|
+
"."
|
|
202
234
|
] })
|
|
203
235
|
] })
|
|
204
236
|
] }),
|
|
@@ -331,7 +363,7 @@ function useProviders() {
|
|
|
331
363
|
mutate: response.mutate
|
|
332
364
|
};
|
|
333
365
|
}
|
|
334
|
-
const version = "2.0.
|
|
366
|
+
const version = "2.0.17";
|
|
335
367
|
const packageJson = {
|
|
336
368
|
version
|
|
337
369
|
};
|
|
@@ -1392,19 +1424,19 @@ function useCopyFeedback(text) {
|
|
|
1392
1424
|
return { copied, copy };
|
|
1393
1425
|
}
|
|
1394
1426
|
const LazyCompareDrawer = reactExports.lazy(
|
|
1395
|
-
() => import("./CompareDrawer-
|
|
1427
|
+
() => import("./CompareDrawer-yTO93GMz.mjs").then((m) => ({ default: m.CompareDrawer }))
|
|
1396
1428
|
);
|
|
1397
1429
|
const LazyReplayDialog = reactExports.lazy(
|
|
1398
|
-
() => import("./ReplayDialog-
|
|
1430
|
+
() => import("./ReplayDialog-DRF9PG7Z.mjs").then((m) => ({ default: m.ReplayDialog }))
|
|
1399
1431
|
);
|
|
1400
1432
|
const LazyRequestAnatomy = reactExports.lazy(
|
|
1401
|
-
() => import("./RequestAnatomy-
|
|
1433
|
+
() => import("./RequestAnatomy-DBcuV_jV.mjs").then((m) => ({ default: m.RequestAnatomy }))
|
|
1402
1434
|
);
|
|
1403
1435
|
const LazyResponseView = reactExports.lazy(
|
|
1404
|
-
() => import("./ResponseView-
|
|
1436
|
+
() => import("./ResponseView-JJm78HZT.mjs").then((m) => ({ default: m.ResponseView }))
|
|
1405
1437
|
);
|
|
1406
1438
|
const LazyStreamingChunkSequence = reactExports.lazy(
|
|
1407
|
-
() => import("./StreamingChunkSequence-
|
|
1439
|
+
() => import("./StreamingChunkSequence-DyGKjBYx.mjs").then((m) => ({
|
|
1408
1440
|
default: m.StreamingChunkSequence
|
|
1409
1441
|
}))
|
|
1410
1442
|
);
|
|
@@ -7082,7 +7114,7 @@ function SettingsDialog() {
|
|
|
7082
7114
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { value: "proxy", children: "Proxy" }),
|
|
7083
7115
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { value: "onboarding", children: "Onboarding" })
|
|
7084
7116
|
] }),
|
|
7085
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-4 overflow-y-auto
|
|
7117
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-4 flex-1 overflow-x-hidden overflow-y-auto pr-3", children: [
|
|
7086
7118
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "providers", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7087
7119
|
ProvidersPanel,
|
|
7088
7120
|
{
|
|
@@ -7114,7 +7146,7 @@ function CopyableSetupValue({
|
|
|
7114
7146
|
onCopy
|
|
7115
7147
|
}) {
|
|
7116
7148
|
const copied = copiedId === id;
|
|
7117
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-md border border-border bg-muted/20 px-3 py-2", children: [
|
|
7149
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 rounded-md border border-border bg-muted/20 px-3 py-2", children: [
|
|
7118
7150
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mb-1 text-xs font-medium text-muted-foreground", children: label }),
|
|
7119
7151
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
7120
7152
|
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "min-w-0 flex-1 truncate font-mono text-xs text-foreground", children: value }),
|
|
@@ -7141,10 +7173,28 @@ function OnboardingSettingsTab() {
|
|
|
7141
7173
|
}, []);
|
|
7142
7174
|
const values = reactExports.useMemo(
|
|
7143
7175
|
() => [
|
|
7144
|
-
{ id: "
|
|
7176
|
+
{ id: "status", label: "Check onboarding", value: "agent-inspector onboard --status" },
|
|
7177
|
+
{
|
|
7178
|
+
id: "status-json",
|
|
7179
|
+
label: "Check onboarding JSON",
|
|
7180
|
+
value: "agent-inspector onboard --status --json"
|
|
7181
|
+
},
|
|
7182
|
+
{ id: "refresh", label: "Refresh generated files", value: "agent-inspector onboard --force" },
|
|
7183
|
+
{
|
|
7184
|
+
id: "uninstall",
|
|
7185
|
+
label: "Remove matching generated files",
|
|
7186
|
+
value: "agent-inspector onboard --uninstall"
|
|
7187
|
+
},
|
|
7188
|
+
{ id: "claude", label: "Claude Code command", value: "/agent-inspector:onboard" },
|
|
7189
|
+
{
|
|
7190
|
+
id: "codex",
|
|
7191
|
+
label: "Codex prompt",
|
|
7192
|
+
value: "Use the agent-inspector-onboard skill"
|
|
7193
|
+
},
|
|
7145
7194
|
{ id: "mcp", label: "MCP URL", value: `${origin}/api/mcp` },
|
|
7146
7195
|
{ id: "proxy", label: "Proxy URL", value: `${origin}/proxy` },
|
|
7147
|
-
{ id: "anthropic", label: "Anthropic base", value: `ANTHROPIC_BASE_URL=${origin}/proxy` }
|
|
7196
|
+
{ id: "anthropic", label: "Anthropic base", value: `ANTHROPIC_BASE_URL=${origin}/proxy` },
|
|
7197
|
+
{ id: "openai", label: "OpenAI base", value: `OPENAI_BASE_URL=${origin}/proxy` }
|
|
7148
7198
|
],
|
|
7149
7199
|
[origin]
|
|
7150
7200
|
);
|
|
@@ -7154,7 +7204,7 @@ function OnboardingSettingsTab() {
|
|
|
7154
7204
|
setTimeout(() => setCopiedId(null), 1600);
|
|
7155
7205
|
});
|
|
7156
7206
|
}, []);
|
|
7157
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [
|
|
7207
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 space-y-4", children: [
|
|
7158
7208
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
7159
7209
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Terminal, { className: "size-4 text-muted-foreground" }),
|
|
7160
7210
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-sm font-semibold", children: "Agent onboarding" })
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { u as useProviders, 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 { u as useProviders, 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-C8qCkHGB.mjs";
|
|
3
|
+
import { ResponseView } from "./ResponseView-JJm78HZT.mjs";
|
|
4
|
+
import "./router-BJob8RN3.mjs";
|
|
5
5
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
6
|
import "../_libs/jszip.mjs";
|
|
7
7
|
import { K as RotateCcw } from "../_libs/lucide-react.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { u as useProviders, p as analyzeContextIntelligence, f as formatTokens, k as TooltipProvider, c as cn, l as Tooltip, m as TooltipTrigger, n as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, q as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-
|
|
3
|
-
import "./router-
|
|
2
|
+
import { u as useProviders, p as analyzeContextIntelligence, f as formatTokens, k as TooltipProvider, c as cn, l as Tooltip, m as TooltipTrigger, n as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, q as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-C8qCkHGB.mjs";
|
|
3
|
+
import "./router-BJob8RN3.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import { ac as Info, b as ChevronDown, f as ChevronRight } from "../_libs/lucide-react.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { g as getLogFormatAdapter, f as formatTokens, c as cn, s as getStatusCategory, B as Badge, t as Collapsible, v as CollapsibleTrigger, w as CollapsibleContent, x as ScrollArea, y as JsonViewer, z as safeJsonValue } from "./ProxyViewerContainer-
|
|
3
|
-
import "./router-
|
|
2
|
+
import { g as getLogFormatAdapter, f as formatTokens, c as cn, s as getStatusCategory, B as Badge, t as Collapsible, v as CollapsibleTrigger, w as CollapsibleContent, x as ScrollArea, y as JsonViewer, z as safeJsonValue } from "./ProxyViewerContainer-C8qCkHGB.mjs";
|
|
3
|
+
import "./router-BJob8RN3.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import { Z as Zap, j as TriangleAlert, ad as CircleStop, B as Brain, b as ChevronDown, f as ChevronRight, T as Terminal } from "../_libs/lucide-react.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
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, y as JsonViewer } from "./ProxyViewerContainer-
|
|
3
|
-
import "./router-
|
|
2
|
+
import { k as TooltipProvider, l as Tooltip, m as TooltipTrigger, B as Badge, n as TooltipContent, y as JsonViewer } from "./ProxyViewerContainer-C8qCkHGB.mjs";
|
|
3
|
+
import "./router-BJob8RN3.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
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-C8qCkHGB.mjs";
|
|
2
2
|
import "../_libs/react.mjs";
|
|
3
|
-
import "./router-
|
|
3
|
+
import "./router-BJob8RN3.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-CuiFi3XC.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-BJob8RN3.mjs").then((n) => n.n);
|
|
771
771
|
const startEntry = await import("./start-HYkvq4Ni.mjs");
|
|
772
772
|
return { startEntry, routerEntry };
|
|
773
773
|
}
|
|
@@ -92,7 +92,7 @@ function RootDocument({ children }) {
|
|
|
92
92
|
] })
|
|
93
93
|
] });
|
|
94
94
|
}
|
|
95
|
-
const $$splitComponentImporter$1 = () => import("./index-
|
|
95
|
+
const $$splitComponentImporter$1 = () => import("./index-T7JG28t6.mjs");
|
|
96
96
|
const Route$r = createFileRoute("/")({
|
|
97
97
|
component: lazyRouteComponent($$splitComponentImporter$1, "component")
|
|
98
98
|
});
|
|
@@ -135,7 +135,7 @@ function decodeSessionIdFromPath(encoded) {
|
|
|
135
135
|
function getSessionPath(sessionId) {
|
|
136
136
|
return `/session/${encodeSessionIdForPath(sessionId)}`;
|
|
137
137
|
}
|
|
138
|
-
const $$splitComponentImporter = () => import("../_sessionId-
|
|
138
|
+
const $$splitComponentImporter = () => import("../_sessionId-BEuJJhqT.mjs");
|
|
139
139
|
const Route$q = createFileRoute("/session/$sessionId")({
|
|
140
140
|
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
141
141
|
parseParams: (params) => ({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/sessions", "/proxy/$", "/session/$sessionId", "/api/knowledge/candidates", "/api/knowledge/project-context", "/api/knowledge/search", "/api/knowledge/sessions/$sessionId/candidates"], "preloads": ["/assets/main-
|
|
1
|
+
const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/sessions", "/proxy/$", "/session/$sessionId", "/api/knowledge/candidates", "/api/knowledge/project-context", "/api/knowledge/search", "/api/knowledge/sessions/$sessionId/candidates"], "preloads": ["/assets/main-bwZlEXw2.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-u-LwDaeH.js", "/assets/ProxyViewerContainer-DbbK1y7N.js"] }, "/api/config": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.ts", "children": ["/api/config/paths"] }, "/api/health": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/health.ts" }, "/api/logs": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.ts", "children": ["/api/logs/$id", "/api/logs/stream"] }, "/api/mcp": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/mcp.ts" }, "/api/models": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/models.ts" }, "/api/providers": { "filePath": "C:/Users/claw/workspace/agent-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/agent-inspector/src/routes/api/sessions.ts" }, "/proxy/$": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/proxy/$.ts" }, "/session/$sessionId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/session/$sessionId.tsx", "assets": [], "preloads": ["/assets/_sessionId-gv1a_NNu.js", "/assets/ProxyViewerContainer-DbbK1y7N.js"] }, "/api/config/paths": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.paths.ts" }, "/api/knowledge/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.ts", "children": ["/api/knowledge/candidates/$candidateId"] }, "/api/knowledge/project-context": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.project-context.ts" }, "/api/knowledge/search": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.search.ts" }, "/api/logs/$id": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.ts", "children": ["/api/logs/$id/chunks", "/api/logs/$id/replay"] }, "/api/logs/stream": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.stream.ts" }, "/api/providers/$providerId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.ts", "children": ["/api/providers/$providerId/model-metadata", "/api/providers/$providerId/test"] }, "/api/providers/export": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.export.ts" }, "/api/providers/import": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.import.ts" }, "/api/providers/scan": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.scan.ts" }, "/api/knowledge/candidates/$candidateId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.ts", "children": ["/api/knowledge/candidates/$candidateId/promote"] }, "/api/logs/$id/chunks": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.chunks.ts" }, "/api/logs/$id/replay": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.replay.ts" }, "/api/providers/$providerId/model-metadata": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.model-metadata.ts" }, "/api/providers/$providerId/test": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.ts", "children": ["/api/providers/$providerId/test/log"] }, "/api/knowledge/candidates/$candidateId/promote": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.promote.ts" }, "/api/knowledge/sessions/$sessionId/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.sessions.$sessionId.candidates.ts" }, "/api/providers/$providerId/test/log": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.log.ts" } }, "clientEntry": "/assets/main-bwZlEXw2.js" });
|
|
2
2
|
export {
|
|
3
3
|
tsrStartManifest
|
|
4
4
|
};
|
package/.output/server/index.mjs
CHANGED
|
@@ -35,103 +35,103 @@ const headers = ((m) => function headersRouteRule(event) {
|
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
37
|
const assets = {
|
|
38
|
-
"/assets/index-DVkMYH8H.js": {
|
|
39
|
-
"type": "text/javascript; charset=utf-8",
|
|
40
|
-
"etag": '"74-GBmxRerueSBHr5Yf7dUOgBYydpU"',
|
|
41
|
-
"mtime": "2026-06-27T01:33:17.528Z",
|
|
42
|
-
"size": 116,
|
|
43
|
-
"path": "../public/assets/index-DVkMYH8H.js"
|
|
44
|
-
},
|
|
45
38
|
"/assets/alibaba-TTwafVwX.svg": {
|
|
46
39
|
"type": "image/svg+xml",
|
|
47
40
|
"etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
|
|
48
|
-
"mtime": "2026-06-
|
|
41
|
+
"mtime": "2026-06-27T08:05:44.395Z",
|
|
49
42
|
"size": 5915,
|
|
50
43
|
"path": "../public/assets/alibaba-TTwafVwX.svg"
|
|
51
44
|
},
|
|
52
|
-
"/assets/CompareDrawer-
|
|
45
|
+
"/assets/CompareDrawer-DDg7Cs4N.js": {
|
|
53
46
|
"type": "text/javascript; charset=utf-8",
|
|
54
|
-
"etag": '"49fe-
|
|
55
|
-
"mtime": "2026-06-
|
|
47
|
+
"etag": '"49fe-ST4mvhJApf3tK3AHGe/jnh7b8dA"',
|
|
48
|
+
"mtime": "2026-06-27T08:05:44.395Z",
|
|
56
49
|
"size": 18942,
|
|
57
|
-
"path": "../public/assets/CompareDrawer-
|
|
50
|
+
"path": "../public/assets/CompareDrawer-DDg7Cs4N.js"
|
|
58
51
|
},
|
|
59
52
|
"/assets/index-D_nZj9Vt.css": {
|
|
60
53
|
"type": "text/css; charset=utf-8",
|
|
61
54
|
"etag": '"1a275-7T1iSNG2p6BSsqLwdpfky+9evLw"',
|
|
62
|
-
"mtime": "2026-06-
|
|
55
|
+
"mtime": "2026-06-27T08:05:44.395Z",
|
|
63
56
|
"size": 107125,
|
|
64
57
|
"path": "../public/assets/index-D_nZj9Vt.css"
|
|
65
58
|
},
|
|
59
|
+
"/assets/index-u-LwDaeH.js": {
|
|
60
|
+
"type": "text/javascript; charset=utf-8",
|
|
61
|
+
"etag": '"74-boh/9GDh4CR9Flgsc4G84xDxjHg"',
|
|
62
|
+
"mtime": "2026-06-27T08:05:44.395Z",
|
|
63
|
+
"size": 116,
|
|
64
|
+
"path": "../public/assets/index-u-LwDaeH.js"
|
|
65
|
+
},
|
|
66
|
+
"/assets/ReplayDialog-C1zWNkoz.js": {
|
|
67
|
+
"type": "text/javascript; charset=utf-8",
|
|
68
|
+
"etag": '"2361-2HHZgW4drPSmavIm8hPSIOojqNs"',
|
|
69
|
+
"mtime": "2026-06-27T08:05:44.396Z",
|
|
70
|
+
"size": 9057,
|
|
71
|
+
"path": "../public/assets/ReplayDialog-C1zWNkoz.js"
|
|
72
|
+
},
|
|
73
|
+
"/assets/RequestAnatomy-DR8OICOJ.js": {
|
|
74
|
+
"type": "text/javascript; charset=utf-8",
|
|
75
|
+
"etag": '"4485-N9GhW/2QqcCw31XDu4TtvnszBGI"',
|
|
76
|
+
"mtime": "2026-06-27T08:05:44.396Z",
|
|
77
|
+
"size": 17541,
|
|
78
|
+
"path": "../public/assets/RequestAnatomy-DR8OICOJ.js"
|
|
79
|
+
},
|
|
66
80
|
"/assets/minimax-BPMzvuL-.jpeg": {
|
|
67
81
|
"type": "image/jpeg",
|
|
68
82
|
"etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
|
|
69
|
-
"mtime": "2026-06-
|
|
83
|
+
"mtime": "2026-06-27T08:05:44.395Z",
|
|
70
84
|
"size": 6918,
|
|
71
85
|
"path": "../public/assets/minimax-BPMzvuL-.jpeg"
|
|
72
86
|
},
|
|
73
|
-
"/assets/
|
|
74
|
-
"type": "text/javascript; charset=utf-8",
|
|
75
|
-
"etag": '"4485-ASH0McTixuSChPgRJXtw7959sE8"',
|
|
76
|
-
"mtime": "2026-06-27T01:33:17.528Z",
|
|
77
|
-
"size": 17541,
|
|
78
|
-
"path": "../public/assets/RequestAnatomy-CqBSMZv5.js"
|
|
79
|
-
},
|
|
80
|
-
"/assets/ReplayDialog-O_53zkX8.js": {
|
|
87
|
+
"/assets/ResponseView-Dh9iSj6h.js": {
|
|
81
88
|
"type": "text/javascript; charset=utf-8",
|
|
82
|
-
"etag": '"
|
|
83
|
-
"mtime": "2026-06-
|
|
84
|
-
"size": 9057,
|
|
85
|
-
"path": "../public/assets/ReplayDialog-O_53zkX8.js"
|
|
86
|
-
},
|
|
87
|
-
"/assets/ResponseView-BvbA6zot.js": {
|
|
88
|
-
"type": "text/javascript; charset=utf-8",
|
|
89
|
-
"etag": '"30cd-kBNUcY62rE797/1oAWUgva5ZP3E"',
|
|
90
|
-
"mtime": "2026-06-27T01:33:17.528Z",
|
|
89
|
+
"etag": '"30cd-4xMnhGLUg/50P9M4/lNZVL4lKjo"',
|
|
90
|
+
"mtime": "2026-06-27T08:05:44.396Z",
|
|
91
91
|
"size": 12493,
|
|
92
|
-
"path": "../public/assets/ResponseView-
|
|
92
|
+
"path": "../public/assets/ResponseView-Dh9iSj6h.js"
|
|
93
93
|
},
|
|
94
|
-
"/assets/
|
|
94
|
+
"/assets/zhipuai-BPNAnxo-.svg": {
|
|
95
|
+
"type": "image/svg+xml",
|
|
96
|
+
"etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
|
|
97
|
+
"mtime": "2026-06-27T08:05:44.395Z",
|
|
98
|
+
"size": 11256,
|
|
99
|
+
"path": "../public/assets/zhipuai-BPNAnxo-.svg"
|
|
100
|
+
},
|
|
101
|
+
"/assets/StreamingChunkSequence-B_xElyH3.js": {
|
|
95
102
|
"type": "text/javascript; charset=utf-8",
|
|
96
|
-
"etag": '"d5b-
|
|
97
|
-
"mtime": "2026-06-
|
|
103
|
+
"etag": '"d5b-63IZqsXb3mHwoP35jfQARaDbClI"',
|
|
104
|
+
"mtime": "2026-06-27T08:05:44.396Z",
|
|
98
105
|
"size": 3419,
|
|
99
|
-
"path": "../public/assets/StreamingChunkSequence-
|
|
106
|
+
"path": "../public/assets/StreamingChunkSequence-B_xElyH3.js"
|
|
100
107
|
},
|
|
101
|
-
"/assets/_sessionId-
|
|
108
|
+
"/assets/_sessionId-gv1a_NNu.js": {
|
|
102
109
|
"type": "text/javascript; charset=utf-8",
|
|
103
|
-
"etag": '"d2-
|
|
104
|
-
"mtime": "2026-06-
|
|
110
|
+
"etag": '"d2-atc0PPwWYseoheB1VLGM7JAiJ/A"',
|
|
111
|
+
"mtime": "2026-06-27T08:05:44.395Z",
|
|
105
112
|
"size": 210,
|
|
106
|
-
"path": "../public/assets/_sessionId-
|
|
113
|
+
"path": "../public/assets/_sessionId-gv1a_NNu.js"
|
|
107
114
|
},
|
|
108
|
-
"/assets/main-
|
|
115
|
+
"/assets/main-bwZlEXw2.js": {
|
|
109
116
|
"type": "text/javascript; charset=utf-8",
|
|
110
|
-
"etag": '"51726-
|
|
111
|
-
"mtime": "2026-06-
|
|
117
|
+
"etag": '"51726-1SJJ0BJfAuGmylFZ/0OY4VxlOhE"',
|
|
118
|
+
"mtime": "2026-06-27T08:05:44.395Z",
|
|
112
119
|
"size": 333606,
|
|
113
|
-
"path": "../public/assets/main-
|
|
114
|
-
},
|
|
115
|
-
"/assets/zhipuai-BPNAnxo-.svg": {
|
|
116
|
-
"type": "image/svg+xml",
|
|
117
|
-
"etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
|
|
118
|
-
"mtime": "2026-06-27T01:33:17.528Z",
|
|
119
|
-
"size": 11256,
|
|
120
|
-
"path": "../public/assets/zhipuai-BPNAnxo-.svg"
|
|
120
|
+
"path": "../public/assets/main-bwZlEXw2.js"
|
|
121
121
|
},
|
|
122
122
|
"/assets/qwen-CONDcHqt.png": {
|
|
123
123
|
"type": "image/png",
|
|
124
124
|
"etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
|
|
125
|
-
"mtime": "2026-06-
|
|
125
|
+
"mtime": "2026-06-27T08:05:44.395Z",
|
|
126
126
|
"size": 357059,
|
|
127
127
|
"path": "../public/assets/qwen-CONDcHqt.png"
|
|
128
128
|
},
|
|
129
|
-
"/assets/ProxyViewerContainer-
|
|
129
|
+
"/assets/ProxyViewerContainer-DbbK1y7N.js": {
|
|
130
130
|
"type": "text/javascript; charset=utf-8",
|
|
131
|
-
"etag": '"
|
|
132
|
-
"mtime": "2026-06-
|
|
133
|
-
"size":
|
|
134
|
-
"path": "../public/assets/ProxyViewerContainer-
|
|
131
|
+
"etag": '"aa779-gGe0kXBI3ePH3bRC96W2oCbRTJ4"',
|
|
132
|
+
"mtime": "2026-06-27T08:05:44.396Z",
|
|
133
|
+
"size": 698233,
|
|
134
|
+
"path": "../public/assets/ProxyViewerContainer-DbbK1y7N.js"
|
|
135
135
|
}
|
|
136
136
|
};
|
|
137
137
|
function readAsset(id) {
|
package/README.md
CHANGED
|
@@ -50,11 +50,28 @@ The onboarding command installs guided setup skills for local agents:
|
|
|
50
50
|
- Codex: `~/.codex/skills/agent-inspector-onboard/SKILL.md`, focused on connecting
|
|
51
51
|
`http://localhost:25947/api/mcp` through Codex `mcp_servers.agent-inspector`.
|
|
52
52
|
|
|
53
|
-
During npm global install, Agent Inspector also makes a best-effort
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
During npm global install, Agent Inspector also makes a best-effort onboarding skill install for
|
|
54
|
+
detected local agents. If `~/.claude` exists, it installs the Claude Code skill and slash command.
|
|
55
|
+
If `~/.codex` exists, it installs the Codex skill. Generated onboarding files are stamped with the
|
|
56
|
+
current npm package version; a later package install refreshes older generated files automatically,
|
|
57
|
+
while same-version, newer-version, or user-created files without Agent Inspector version metadata are
|
|
58
|
+
left in place.
|
|
59
|
+
|
|
60
|
+
Set `AGENT_INSPECTOR_SKIP_CLAUDE_SKILL=1` or `AGENT_INSPECTOR_SKIP_CODEX_SKILL=1` to skip either
|
|
61
|
+
postinstall step. Set `AGENT_INSPECTOR_INSTALL_CLAUDE_SKILL=1` or
|
|
62
|
+
`AGENT_INSPECTOR_INSTALL_CODEX_SKILL=1` to attempt installation even before the corresponding agent
|
|
63
|
+
home directory exists. To refresh generated onboarding files later, run
|
|
64
|
+
`agent-inspector onboard --force`.
|
|
65
|
+
|
|
66
|
+
To check what is installed, run `agent-inspector onboard --status`. It reports each generated file,
|
|
67
|
+
its stamped version, whether it is current/outdated/custom, and the suggested next command. For
|
|
68
|
+
scripts and CI checks, use `agent-inspector onboard --status --json`.
|
|
69
|
+
|
|
70
|
+
Before uninstalling the npm package, run `agent-inspector onboard --uninstall` to remove matching
|
|
71
|
+
generated onboarding files. The uninstall command only removes Agent Inspector generated files whose
|
|
72
|
+
metadata version matches the currently installed npm package. npm v7+ does not run package uninstall
|
|
73
|
+
lifecycle scripts, so `npm uninstall -g @tonyclaw/agent-inspector` alone cannot reliably clean these
|
|
74
|
+
files automatically.
|
|
58
75
|
|
|
59
76
|
For local development from source:
|
|
60
77
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tonyclaw/agent-inspector",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.17",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Agent observability and knowledge capture layer for AI coding tools.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"!src/**/__fixtures__",
|
|
40
40
|
"!src/routeTree.gen.ts",
|
|
41
41
|
"scripts/setup-windows-runtime.mjs",
|
|
42
|
-
"scripts/setup-
|
|
42
|
+
"scripts/setup-agent-skills.mjs",
|
|
43
43
|
"styles",
|
|
44
44
|
".output",
|
|
45
45
|
"!.output/*.exe"
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"start": "node .output/cli.js",
|
|
50
50
|
"build": "vite build && bun build:cli",
|
|
51
51
|
"build:cli": "npx esbuild src/cli.ts --bundle --platform=node --target=node18 --format=esm --outfile=.output/cli.js",
|
|
52
|
-
"postinstall": "node scripts/setup-windows-runtime.mjs && node scripts/setup-
|
|
52
|
+
"postinstall": "node scripts/setup-windows-runtime.mjs && node scripts/setup-agent-skills.mjs",
|
|
53
53
|
"prepublishOnly": "npm run build",
|
|
54
54
|
"typecheck": "tsc --noEmit",
|
|
55
55
|
"lint": "eslint .",
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { spawnSync } from "node:child_process";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
|
|
7
|
+
const scriptDir = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const packageRoot = dirname(scriptDir);
|
|
9
|
+
const cliEntry = join(packageRoot, ".output", "cli.js");
|
|
10
|
+
const claudeHome = process.env["CLAUDE_HOME"] ?? join(homedir(), ".claude");
|
|
11
|
+
const codexHome = process.env["CODEX_HOME"] ?? join(homedir(), ".codex");
|
|
12
|
+
|
|
13
|
+
function cliIsAvailable() {
|
|
14
|
+
return existsSync(cliEntry);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function shouldInstallClaude() {
|
|
18
|
+
if (process.env["AGENT_INSPECTOR_SKIP_CLAUDE_SKILL"] === "1") return false;
|
|
19
|
+
return existsSync(claudeHome) || process.env["AGENT_INSPECTOR_INSTALL_CLAUDE_SKILL"] === "1";
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function shouldInstallCodex() {
|
|
23
|
+
if (process.env["AGENT_INSPECTOR_SKIP_CODEX_SKILL"] === "1") return false;
|
|
24
|
+
return existsSync(codexHome) || process.env["AGENT_INSPECTOR_INSTALL_CODEX_SKILL"] === "1";
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function runOnboard(label, args) {
|
|
28
|
+
const result = spawnSync(process.execPath, [cliEntry, "onboard", ...args], {
|
|
29
|
+
stdio: "ignore",
|
|
30
|
+
windowsHide: true,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
if (result.status !== 0) {
|
|
34
|
+
console.warn(`Skipping ${label} onboard skill installation.`);
|
|
35
|
+
console.warn(`Run later: agent-inspector onboard --force`);
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
console.warn(`Agent Inspector onboard skill ready for ${label}.`);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function main() {
|
|
44
|
+
if (!cliIsAvailable()) return;
|
|
45
|
+
|
|
46
|
+
if (shouldInstallClaude()) {
|
|
47
|
+
if (runOnboard("Claude Code", ["--skip-codex-skill", "--skill-dir", claudeHome])) {
|
|
48
|
+
console.warn(`Next step for Claude Code: /agent-inspector:onboard`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (shouldInstallCodex()) {
|
|
53
|
+
if (runOnboard("Codex", ["--codex-only"])) {
|
|
54
|
+
console.warn(`Next step for Codex: ask to use the agent-inspector-onboard skill`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
try {
|
|
60
|
+
main();
|
|
61
|
+
} catch (error) {
|
|
62
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
63
|
+
console.warn(`Skipping Agent Inspector onboard skill installation: ${message}`);
|
|
64
|
+
}
|