@stigmer/react 0.0.52 → 0.0.54
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/deployment-mode.d.ts +35 -0
- package/deployment-mode.d.ts.map +1 -0
- package/deployment-mode.js +41 -0
- package/deployment-mode.js.map +1 -0
- package/execution/ApprovalCard.d.ts +8 -6
- package/execution/ApprovalCard.d.ts.map +1 -1
- package/execution/ApprovalCard.js +34 -96
- package/execution/ApprovalCard.js.map +1 -1
- package/execution/ArtifactCard.d.ts +11 -1
- package/execution/ArtifactCard.d.ts.map +1 -1
- package/execution/ArtifactCard.js +22 -3
- package/execution/ArtifactCard.js.map +1 -1
- package/execution/ArtifactPreviewModal.d.ts.map +1 -1
- package/execution/ArtifactPreviewModal.js +1 -1
- package/execution/ArtifactPreviewModal.js.map +1 -1
- package/execution/ArtifactsWidget.d.ts +26 -19
- package/execution/ArtifactsWidget.d.ts.map +1 -1
- package/execution/ArtifactsWidget.js +24 -26
- package/execution/ArtifactsWidget.js.map +1 -1
- package/execution/McpToolDetail.d.ts +48 -0
- package/execution/McpToolDetail.d.ts.map +1 -0
- package/execution/McpToolDetail.js +159 -0
- package/execution/McpToolDetail.js.map +1 -0
- package/execution/MessageThread.d.ts +10 -1
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +19 -17
- package/execution/MessageThread.js.map +1 -1
- package/execution/SandboxContext.d.ts +32 -0
- package/execution/SandboxContext.d.ts.map +1 -0
- package/execution/SandboxContext.js +26 -0
- package/execution/SandboxContext.js.map +1 -0
- package/execution/ToolArgsView.d.ts +41 -0
- package/execution/ToolArgsView.d.ts.map +1 -0
- package/execution/ToolArgsView.js +134 -0
- package/execution/ToolArgsView.js.map +1 -0
- package/execution/ToolCallDetail.d.ts +11 -4
- package/execution/ToolCallDetail.d.ts.map +1 -1
- package/execution/ToolCallDetail.js +32 -101
- package/execution/ToolCallDetail.js.map +1 -1
- package/execution/ToolCallGroup.d.ts.map +1 -1
- package/execution/ToolCallGroup.js +3 -2
- package/execution/ToolCallGroup.js.map +1 -1
- package/execution/ToolCallItem.d.ts +2 -0
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +13 -3
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/WriteBackCard.d.ts +34 -0
- package/execution/WriteBackCard.d.ts.map +1 -0
- package/execution/WriteBackCard.js +75 -0
- package/execution/WriteBackCard.js.map +1 -0
- package/execution/WriteBacksWidget.d.ts +49 -0
- package/execution/WriteBacksWidget.d.ts.map +1 -0
- package/execution/WriteBacksWidget.js +44 -0
- package/execution/WriteBacksWidget.js.map +1 -0
- package/execution/__tests__/file-path-resolver.test.d.ts +2 -0
- package/execution/__tests__/file-path-resolver.test.d.ts.map +1 -0
- package/execution/__tests__/file-path-resolver.test.js +180 -0
- package/execution/__tests__/file-path-resolver.test.js.map +1 -0
- package/execution/file-path-resolver.d.ts +3 -3
- package/execution/file-path-resolver.d.ts.map +1 -1
- package/execution/file-path-resolver.js +23 -12
- package/execution/file-path-resolver.js.map +1 -1
- package/execution/index.d.ts +16 -1
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +9 -1
- package/execution/index.js.map +1 -1
- package/execution/sandbox-path-normalizer.d.ts +46 -0
- package/execution/sandbox-path-normalizer.d.ts.map +1 -0
- package/execution/sandbox-path-normalizer.js +73 -0
- package/execution/sandbox-path-normalizer.js.map +1 -0
- package/execution/tool-categories.d.ts +35 -8
- package/execution/tool-categories.d.ts.map +1 -1
- package/execution/tool-categories.js +76 -10
- package/execution/tool-categories.js.map +1 -1
- package/execution/tool-rendering-primitives.d.ts +61 -0
- package/execution/tool-rendering-primitives.d.ts.map +1 -0
- package/execution/tool-rendering-primitives.js +106 -0
- package/execution/tool-rendering-primitives.js.map +1 -0
- package/execution/useArtifactContent.d.ts +5 -1
- package/execution/useArtifactContent.d.ts.map +1 -1
- package/execution/useArtifactContent.js +6 -2
- package/execution/useArtifactContent.js.map +1 -1
- package/execution/useWorkspaceWriteBacks.d.ts +40 -0
- package/execution/useWorkspaceWriteBacks.d.ts.map +1 -0
- package/execution/useWorkspaceWriteBacks.js +41 -0
- package/execution/useWorkspaceWriteBacks.js.map +1 -0
- package/github/GitHubRepoPicker.d.ts +5 -2
- package/github/GitHubRepoPicker.d.ts.map +1 -1
- package/github/GitHubRepoPicker.js +133 -36
- package/github/GitHubRepoPicker.js.map +1 -1
- package/github/index.d.ts +1 -0
- package/github/index.d.ts.map +1 -1
- package/github/index.js +1 -0
- package/github/index.js.map +1 -1
- package/github/useGitHubSearch.d.ts +20 -0
- package/github/useGitHubSearch.d.ts.map +1 -0
- package/github/useGitHubSearch.js +127 -0
- package/github/useGitHubSearch.js.map +1 -0
- package/index.d.ts +9 -6
- package/index.d.ts.map +1 -1
- package/index.js +7 -3
- package/index.js.map +1 -1
- package/internal/CloudFeatureNotice.d.ts +19 -0
- package/internal/CloudFeatureNotice.d.ts.map +1 -0
- package/internal/CloudFeatureNotice.js +21 -0
- package/internal/CloudFeatureNotice.js.map +1 -0
- package/mcp-server/McpServerDetailView.d.ts +15 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +11 -3
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/package.json +4 -4
- package/provider.d.ts +14 -2
- package/provider.d.ts.map +1 -1
- package/provider.js +3 -2
- package/provider.js.map +1 -1
- package/session/index.d.ts +4 -0
- package/session/index.d.ts.map +1 -1
- package/session/index.js +2 -0
- package/session/index.js.map +1 -1
- package/session/useSessionArtifacts.d.ts +73 -0
- package/session/useSessionArtifacts.d.ts.map +1 -0
- package/session/useSessionArtifacts.js +95 -0
- package/session/useSessionArtifacts.js.map +1 -0
- package/session/useSessionWriteBacks.d.ts +56 -0
- package/session/useSessionWriteBacks.d.ts.map +1 -0
- package/session/useSessionWriteBacks.js +56 -0
- package/session/useSessionWriteBacks.js.map +1 -0
- package/src/deployment-mode.ts +46 -0
- package/src/execution/ApprovalCard.tsx +130 -283
- package/src/execution/ArtifactCard.tsx +40 -0
- package/src/execution/ArtifactPreviewModal.tsx +2 -0
- package/src/execution/ArtifactsWidget.tsx +51 -43
- package/src/execution/McpToolDetail.tsx +283 -0
- package/src/execution/MessageThread.tsx +18 -0
- package/src/execution/SandboxContext.ts +47 -0
- package/src/execution/ToolArgsView.tsx +279 -0
- package/src/execution/ToolCallDetail.tsx +54 -220
- package/src/execution/ToolCallGroup.tsx +3 -2
- package/src/execution/ToolCallItem.tsx +21 -3
- package/src/execution/WriteBackCard.tsx +210 -0
- package/src/execution/WriteBacksWidget.tsx +82 -0
- package/src/execution/__tests__/file-path-resolver.test.ts +295 -0
- package/src/execution/file-path-resolver.ts +24 -12
- package/src/execution/index.ts +38 -0
- package/src/execution/sandbox-path-normalizer.ts +80 -0
- package/src/execution/tool-categories.ts +89 -9
- package/src/execution/tool-rendering-primitives.tsx +253 -0
- package/src/execution/useArtifactContent.ts +6 -1
- package/src/execution/useWorkspaceWriteBacks.ts +56 -0
- package/src/github/GitHubRepoPicker.tsx +413 -108
- package/src/github/index.ts +5 -0
- package/src/github/useGitHubSearch.ts +162 -0
- package/src/index.ts +27 -0
- package/src/internal/CloudFeatureNotice.tsx +60 -0
- package/src/mcp-server/McpServerDetailView.tsx +24 -2
- package/src/provider.tsx +18 -2
- package/src/session/index.ts +12 -0
- package/src/session/useSessionArtifacts.ts +143 -0
- package/src/session/useSessionWriteBacks.ts +94 -0
- package/styles.css +1 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export interface ToolArgsViewProps {
|
|
2
|
+
/**
|
|
3
|
+
* Raw tool name as it appears on the ToolCall or PendingApproval.
|
|
4
|
+
* Used for category resolution and MCP metadata display.
|
|
5
|
+
*/
|
|
6
|
+
readonly toolName: string;
|
|
7
|
+
/**
|
|
8
|
+
* Parsed tool arguments — either from `ToolCall.args` or
|
|
9
|
+
* `JSON.parse(PendingApproval.argsPreview)`.
|
|
10
|
+
*/
|
|
11
|
+
readonly args: Record<string, unknown> | null;
|
|
12
|
+
/** MCP server slug for MCP tool classification and metadata. */
|
|
13
|
+
readonly mcpServerSlug?: string;
|
|
14
|
+
readonly className?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Unified tool-arguments renderer used by both {@link ApprovalCard}
|
|
18
|
+
* (pre-execution) and {@link ToolCallDetail} (post-execution).
|
|
19
|
+
*
|
|
20
|
+
* Resolves the tool category from `toolName` + `mcpServerSlug`,
|
|
21
|
+
* extracts the relevant primary argument, and dispatches to the
|
|
22
|
+
* appropriate category-specific view:
|
|
23
|
+
*
|
|
24
|
+
* - **Shell** — terminal-style command block
|
|
25
|
+
* - **File (read/write/edit/delete)** — file icon + path + optional content
|
|
26
|
+
* - **Search / List** — pattern display
|
|
27
|
+
* - **MCP** — metadata row + scalar key-value grid + collapsible JSON
|
|
28
|
+
* - **Generic / Unknown** — formatted JSON args
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```tsx
|
|
32
|
+
* // In approval card (from argsPreview string):
|
|
33
|
+
* const args = JSON.parse(pendingApproval.argsPreview);
|
|
34
|
+
* <ToolArgsView toolName={toolName} args={args} mcpServerSlug={slug} />
|
|
35
|
+
*
|
|
36
|
+
* // In detail view (from ToolCall):
|
|
37
|
+
* <ToolArgsView toolName={tc.name} args={tc.args} mcpServerSlug={tc.mcpServerSlug} />
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare function ToolArgsView({ toolName, args, mcpServerSlug, className, }: ToolArgsViewProps): import("react/jsx-runtime").JSX.Element;
|
|
41
|
+
//# sourceMappingURL=ToolArgsView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolArgsView.d.ts","sourceRoot":"","sources":["../../src/execution/ToolArgsView.tsx"],"names":[],"mappings":"AAsBA,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC9C,gEAAgE;IAChE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,IAAI,EACJ,aAAa,EACb,SAAS,GACV,EAAE,iBAAiB,2CAsBnB"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { resolveToolCategory, } from "./tool-categories";
|
|
6
|
+
import { FilePathLink } from "./FilePathLink";
|
|
7
|
+
import { McpArgsView, McpMetadataRow } from "./McpToolDetail";
|
|
8
|
+
import { useSandboxNormalize } from "./SandboxContext";
|
|
9
|
+
import { CollapsibleCode, FilePathIcon, formatJson, } from "./tool-rendering-primitives";
|
|
10
|
+
/**
|
|
11
|
+
* Unified tool-arguments renderer used by both {@link ApprovalCard}
|
|
12
|
+
* (pre-execution) and {@link ToolCallDetail} (post-execution).
|
|
13
|
+
*
|
|
14
|
+
* Resolves the tool category from `toolName` + `mcpServerSlug`,
|
|
15
|
+
* extracts the relevant primary argument, and dispatches to the
|
|
16
|
+
* appropriate category-specific view:
|
|
17
|
+
*
|
|
18
|
+
* - **Shell** — terminal-style command block
|
|
19
|
+
* - **File (read/write/edit/delete)** — file icon + path + optional content
|
|
20
|
+
* - **Search / List** — pattern display
|
|
21
|
+
* - **MCP** — metadata row + scalar key-value grid + collapsible JSON
|
|
22
|
+
* - **Generic / Unknown** — formatted JSON args
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```tsx
|
|
26
|
+
* // In approval card (from argsPreview string):
|
|
27
|
+
* const args = JSON.parse(pendingApproval.argsPreview);
|
|
28
|
+
* <ToolArgsView toolName={toolName} args={args} mcpServerSlug={slug} />
|
|
29
|
+
*
|
|
30
|
+
* // In detail view (from ToolCall):
|
|
31
|
+
* <ToolArgsView toolName={tc.name} args={tc.args} mcpServerSlug={tc.mcpServerSlug} />
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export function ToolArgsView({ toolName, args, mcpServerSlug, className, }) {
|
|
35
|
+
const categoryInfo = useMemo(() => resolveToolCategory(toolName, mcpServerSlug), [toolName, mcpServerSlug]);
|
|
36
|
+
const primaryArg = useMemo(() => extractPrimaryArgValue(args, categoryInfo), [args, categoryInfo]);
|
|
37
|
+
return (_jsx("div", { className: cn("text-xs", className), children: _jsx(CategoryArgsDispatch, { category: categoryInfo.category, toolName: toolName, args: args, primaryArg: primaryArg, mcpServerSlug: mcpServerSlug }) }));
|
|
38
|
+
}
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
// Dispatch
|
|
41
|
+
// ---------------------------------------------------------------------------
|
|
42
|
+
function CategoryArgsDispatch({ category, toolName, args, primaryArg, mcpServerSlug, }) {
|
|
43
|
+
switch (category) {
|
|
44
|
+
case "shell":
|
|
45
|
+
return primaryArg ? _jsx(ShellArgsView, { command: primaryArg }) : null;
|
|
46
|
+
case "read":
|
|
47
|
+
case "write":
|
|
48
|
+
case "edit":
|
|
49
|
+
case "delete":
|
|
50
|
+
return primaryArg ? (_jsx(FileArgsView, { path: primaryArg, category: category, args: args })) : null;
|
|
51
|
+
case "search":
|
|
52
|
+
case "list":
|
|
53
|
+
return primaryArg ? _jsx(SearchArgsView, { pattern: primaryArg }) : null;
|
|
54
|
+
case "mcp":
|
|
55
|
+
return (_jsx(McpArgsPreview, { toolName: toolName, args: args, mcpServerSlug: mcpServerSlug ?? "" }));
|
|
56
|
+
default:
|
|
57
|
+
return args && Object.keys(args).length > 0 ? (_jsx(GenericArgsView, { args: args })) : null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// Category-specific views
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
function ShellArgsView({ command }) {
|
|
64
|
+
const normalize = useSandboxNormalize();
|
|
65
|
+
return (_jsx("div", { className: "rounded-md border border-border bg-[var(--stgm-terminal-bg,#1a1a2e)] p-2.5", children: _jsxs("pre", { className: "whitespace-pre-wrap break-words font-mono text-xs text-[var(--stgm-terminal-fg,#e0e0e0)]", children: [_jsxs("span", { className: "select-none text-[var(--stgm-terminal-prompt,#6b7280)]", children: ["$", " "] }), normalize(command)] }) }));
|
|
66
|
+
}
|
|
67
|
+
function FileArgsView({ path, category, args, }) {
|
|
68
|
+
const writeContent = useMemo(() => {
|
|
69
|
+
if (category !== "write" && category !== "edit")
|
|
70
|
+
return null;
|
|
71
|
+
if (!args)
|
|
72
|
+
return null;
|
|
73
|
+
return extractWriteContentFromArgs(args);
|
|
74
|
+
}, [category, args]);
|
|
75
|
+
return (_jsxs("div", { className: "space-y-1.5", children: [_jsxs("div", { className: "flex items-center gap-1.5 text-xs", children: [_jsx(FilePathIcon, {}), _jsx(FilePathLink, { path: path, className: "text-xs" })] }), writeContent && (_jsx(CollapsibleCode, { label: "Content", content: writeContent }))] }));
|
|
76
|
+
}
|
|
77
|
+
function SearchArgsView({ pattern }) {
|
|
78
|
+
return (_jsxs("div", { className: "flex items-center gap-1.5 text-xs", children: [_jsx("span", { className: "text-muted-foreground", children: "Pattern:" }), _jsx("code", { className: "rounded bg-muted px-1.5 py-0.5 font-mono text-foreground", children: pattern })] }));
|
|
79
|
+
}
|
|
80
|
+
function McpArgsPreview({ toolName, args, mcpServerSlug, }) {
|
|
81
|
+
return (_jsxs("div", { className: "space-y-2", children: [_jsx(McpMetadataRow, { mcpServerSlug: mcpServerSlug, toolName: toolName, duration: null }), args && Object.keys(args).length > 0 && _jsx(McpArgsView, { args: args })] }));
|
|
82
|
+
}
|
|
83
|
+
function GenericArgsView({ args }) {
|
|
84
|
+
return (_jsx(CollapsibleCode, { label: "Arguments", content: formatJson(args) }));
|
|
85
|
+
}
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
// Utilities
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
const WRITE_CONTENT_FIELDS = [
|
|
90
|
+
"contents",
|
|
91
|
+
"content",
|
|
92
|
+
"file_content",
|
|
93
|
+
"new_text",
|
|
94
|
+
"new_string",
|
|
95
|
+
"replacement",
|
|
96
|
+
];
|
|
97
|
+
function extractWriteContentFromArgs(args) {
|
|
98
|
+
for (const field of WRITE_CONTENT_FIELDS) {
|
|
99
|
+
const val = args[field];
|
|
100
|
+
if (typeof val === "string" && val.length > 0)
|
|
101
|
+
return val;
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
function extractPrimaryArgValue(args, info) {
|
|
106
|
+
if (!args)
|
|
107
|
+
return null;
|
|
108
|
+
const tryField = (field) => {
|
|
109
|
+
const val = args[field];
|
|
110
|
+
if (typeof val === "string" && val.length > 0)
|
|
111
|
+
return val;
|
|
112
|
+
return null;
|
|
113
|
+
};
|
|
114
|
+
if (info.primaryArgField) {
|
|
115
|
+
const v = tryField(info.primaryArgField);
|
|
116
|
+
if (v)
|
|
117
|
+
return v;
|
|
118
|
+
}
|
|
119
|
+
for (const fb of info.fallbackArgFields) {
|
|
120
|
+
const v = tryField(fb);
|
|
121
|
+
if (v)
|
|
122
|
+
return v;
|
|
123
|
+
}
|
|
124
|
+
if (info.category === "unknown" || info.category === "mcp") {
|
|
125
|
+
const keys = Object.keys(args);
|
|
126
|
+
if (keys.length > 0) {
|
|
127
|
+
const val = args[keys[0]];
|
|
128
|
+
if (typeof val === "string")
|
|
129
|
+
return val;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=ToolArgsView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolArgsView.js","sourceRoot":"","sources":["../../src/execution/ToolArgsView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,11 +7,18 @@ export interface ToolCallDetailProps {
|
|
|
7
7
|
* Renders the detail panel for a single tool call with
|
|
8
8
|
* category-specific visual treatments.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* Arguments are rendered through the shared {@link ToolArgsView}
|
|
11
|
+
* dispatch (same component used by {@link ApprovalCard}), ensuring
|
|
12
|
+
* visual parity between pre-execution approval previews and
|
|
13
|
+
* post-execution detail views. Result/output sections are layered
|
|
14
|
+
* on top by this component.
|
|
15
|
+
*
|
|
16
|
+
* - **Shell tools**: terminal-style command + output
|
|
17
|
+
* - **File tools (read/write/edit/delete)**: file path + content + result
|
|
18
|
+
* - **Search tools (grep/glob)**: pattern + results
|
|
13
19
|
* - **Think**: muted italic thought block
|
|
14
|
-
* - **
|
|
20
|
+
* - **MCP tools**: structured args + parsed result via {@link McpToolDetail}
|
|
21
|
+
* - **Unknown tools**: generic args + result JSON rendering
|
|
15
22
|
*
|
|
16
23
|
* Used inside {@link ToolCallItem} when expanded, but also
|
|
17
24
|
* independently importable by platform builders who compose
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallDetail.d.ts","sourceRoot":"","sources":["../../src/execution/ToolCallDetail.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolCallDetail.d.ts","sourceRoot":"","sources":["../../src/execution/ToolCallDetail.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iEAAiE,CAAC;AAahG,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,mBAAmB,2CAkB1E;AAoMD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAiBf"}
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { useState } from "react";
|
|
4
3
|
import { ToolCallStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
5
4
|
import { cn } from "@stigmer/theme";
|
|
6
|
-
import { resolveToolCategory
|
|
7
|
-
import {
|
|
8
|
-
|
|
5
|
+
import { resolveToolCategory } from "./tool-categories";
|
|
6
|
+
import { McpToolDetail } from "./McpToolDetail";
|
|
7
|
+
import { useSandboxNormalize } from "./SandboxContext";
|
|
8
|
+
import { ToolArgsView } from "./ToolArgsView";
|
|
9
|
+
import { CollapsibleCode, CollapsiblePre, formatResult, } from "./tool-rendering-primitives";
|
|
9
10
|
/**
|
|
10
11
|
* Renders the detail panel for a single tool call with
|
|
11
12
|
* category-specific visual treatments.
|
|
12
13
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* Arguments are rendered through the shared {@link ToolArgsView}
|
|
15
|
+
* dispatch (same component used by {@link ApprovalCard}), ensuring
|
|
16
|
+
* visual parity between pre-execution approval previews and
|
|
17
|
+
* post-execution detail views. Result/output sections are layered
|
|
18
|
+
* on top by this component.
|
|
19
|
+
*
|
|
20
|
+
* - **Shell tools**: terminal-style command + output
|
|
21
|
+
* - **File tools (read/write/edit/delete)**: file path + content + result
|
|
22
|
+
* - **Search tools (grep/glob)**: pattern + results
|
|
16
23
|
* - **Think**: muted italic thought block
|
|
17
|
-
* - **
|
|
24
|
+
* - **MCP tools**: structured args + parsed result via {@link McpToolDetail}
|
|
25
|
+
* - **Unknown tools**: generic args + result JSON rendering
|
|
18
26
|
*
|
|
19
27
|
* Used inside {@link ToolCallItem} when expanded, but also
|
|
20
28
|
* independently importable by platform builders who compose
|
|
@@ -26,12 +34,18 @@ const TRUNCATION_LINE_LIMIT = 10;
|
|
|
26
34
|
* ```
|
|
27
35
|
*/
|
|
28
36
|
export function ToolCallDetail({ toolCall, className }) {
|
|
29
|
-
const category = resolveToolCategory(toolCall.name);
|
|
37
|
+
const category = resolveToolCategory(toolCall.name, toolCall.mcpServerSlug);
|
|
30
38
|
const isFailed = toolCall.status === ToolCallStatus.TOOL_CALL_FAILED;
|
|
31
39
|
return (_jsxs("div", { className: cn("space-y-2 text-xs", className), children: [_jsx(CategoryRenderer, { toolCall: toolCall, categoryName: category.category }), isFailed && toolCall.error && (_jsxs("div", { className: "space-y-1", children: [_jsx("span", { className: "font-medium text-destructive", children: "Error" }), _jsx("pre", { className: "whitespace-pre-wrap break-words rounded-md border border-destructive/20 bg-destructive/5 p-2 font-mono text-destructive", children: toolCall.error })] }))] }));
|
|
32
40
|
}
|
|
33
41
|
// ---------------------------------------------------------------------------
|
|
34
42
|
// Category-specific renderers
|
|
43
|
+
//
|
|
44
|
+
// Each renderer composes:
|
|
45
|
+
// MetadataRow (duration, slug) + ToolArgsView (shared args) + result section
|
|
46
|
+
//
|
|
47
|
+
// Think and MCP have fully custom rendering that doesn't fit the
|
|
48
|
+
// MetadataRow + ToolArgsView + Result pattern.
|
|
35
49
|
// ---------------------------------------------------------------------------
|
|
36
50
|
function CategoryRenderer({ toolCall, categoryName, }) {
|
|
37
51
|
switch (categoryName) {
|
|
@@ -50,70 +64,38 @@ function CategoryRenderer({ toolCall, categoryName, }) {
|
|
|
50
64
|
return _jsx(SearchToolDetail, { toolCall: toolCall });
|
|
51
65
|
case "think":
|
|
52
66
|
return _jsx(ThinkToolDetail, { toolCall: toolCall });
|
|
67
|
+
case "mcp":
|
|
68
|
+
return _jsx(McpToolDetail, { toolCall: toolCall });
|
|
53
69
|
default:
|
|
54
70
|
return _jsx(GenericToolDetail, { toolCall: toolCall });
|
|
55
71
|
}
|
|
56
72
|
}
|
|
57
|
-
/**
|
|
58
|
-
* Terminal-style rendering for shell/execute tools.
|
|
59
|
-
* Shows the command in a dark terminal block and output below.
|
|
60
|
-
*/
|
|
61
73
|
function ShellToolDetail({ toolCall }) {
|
|
62
|
-
const command = extractPrimaryArg(toolCall);
|
|
63
74
|
const duration = formatDuration(toolCall.startedAt, toolCall.completedAt);
|
|
64
|
-
|
|
75
|
+
const normalize = useSandboxNormalize();
|
|
76
|
+
return (_jsxs(_Fragment, { children: [_jsx(MetadataRow, { toolCall: toolCall, duration: duration }), _jsx(ToolArgsView, { toolName: toolCall.name, args: toolCall.args, mcpServerSlug: toolCall.mcpServerSlug }), toolCall.result && (_jsxs("div", { className: "space-y-1", children: [_jsx("span", { className: "font-medium text-muted-foreground", children: "Output" }), _jsx("div", { className: "rounded-md border border-border bg-[var(--stgm-terminal-bg,#1a1a2e)] p-2.5", children: _jsx(CollapsiblePre, { content: normalize(toolCall.result), className: "text-[var(--stgm-terminal-fg,#e0e0e0)]" }) })] }))] }));
|
|
65
77
|
}
|
|
66
78
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* For **read** mode: shows only the metadata row and a clickable
|
|
70
|
-
* path. Content is intentionally omitted — the Read tool's purpose
|
|
71
|
-
* is for the *agent* to consume the file, and the content is either
|
|
72
|
-
* truncated, omitted, or simply noise for the user. The clickable
|
|
73
|
-
* path provides direct access to the source file.
|
|
74
|
-
*
|
|
75
|
-
* For **write/edit/delete** modes: shows the clickable path followed
|
|
76
|
-
* by the content block (what was written/edited) and any result
|
|
77
|
-
* confirmation.
|
|
79
|
+
* For **read**: metadata + path only (content is noise for the user).
|
|
80
|
+
* For **write/edit/delete**: metadata + path + content (via ToolArgsView) + result.
|
|
78
81
|
*/
|
|
79
82
|
function FileToolDetail({ toolCall, mode, }) {
|
|
80
|
-
const filePath = extractPrimaryArg(toolCall);
|
|
81
83
|
const duration = formatDuration(toolCall.startedAt, toolCall.completedAt);
|
|
82
|
-
|
|
83
|
-
return (_jsxs(_Fragment, { children: [_jsx(MetadataRow, { toolCall: toolCall, duration: duration }), filePath && (_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(FilePathIcon, {}), _jsx(FilePathLink, { path: filePath, className: "text-xs" })] }))] }));
|
|
84
|
-
}
|
|
85
|
-
const contentFromArgs = mode === "write" || mode === "edit"
|
|
86
|
-
? extractWriteContent(toolCall)
|
|
87
|
-
: null;
|
|
88
|
-
const displayContent = contentFromArgs || toolCall.result;
|
|
89
|
-
return (_jsxs(_Fragment, { children: [_jsx(MetadataRow, { toolCall: toolCall, duration: duration }), filePath && (_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(FilePathIcon, {}), _jsx(FilePathLink, { path: filePath, className: "text-xs" })] })), displayContent && (_jsx(CollapsibleCode, { label: mode === "delete" ? "Result" : "Content", content: formatResult(displayContent) })), contentFromArgs && toolCall.result && (_jsx(CollapsibleCode, { label: "Result", content: formatResult(toolCall.result) }))] }));
|
|
84
|
+
return (_jsxs(_Fragment, { children: [_jsx(MetadataRow, { toolCall: toolCall, duration: duration }), _jsx(ToolArgsView, { toolName: toolCall.name, args: toolCall.args, mcpServerSlug: toolCall.mcpServerSlug }), mode !== "read" && toolCall.result && (_jsx(CollapsibleCode, { label: "Result", content: formatResult(toolCall.result) }))] }));
|
|
90
85
|
}
|
|
91
|
-
/**
|
|
92
|
-
* Search/discovery rendering for grep, glob, list tools.
|
|
93
|
-
* Shows search pattern/path and results.
|
|
94
|
-
*/
|
|
95
86
|
function SearchToolDetail({ toolCall }) {
|
|
96
|
-
const pattern = extractPrimaryArg(toolCall);
|
|
97
87
|
const duration = formatDuration(toolCall.startedAt, toolCall.completedAt);
|
|
98
|
-
return (_jsxs(_Fragment, { children: [_jsx(MetadataRow, { toolCall: toolCall, duration: duration }),
|
|
88
|
+
return (_jsxs(_Fragment, { children: [_jsx(MetadataRow, { toolCall: toolCall, duration: duration }), _jsx(ToolArgsView, { toolName: toolCall.name, args: toolCall.args, mcpServerSlug: toolCall.mcpServerSlug }), toolCall.result && (_jsx(CollapsibleCode, { label: "Results", content: formatResult(toolCall.result) }))] }));
|
|
99
89
|
}
|
|
100
|
-
/**
|
|
101
|
-
* Thought rendering. Muted, italic presentation distinct from
|
|
102
|
-
* regular tool output.
|
|
103
|
-
*/
|
|
104
90
|
function ThinkToolDetail({ toolCall }) {
|
|
105
91
|
const thought = toolCall.args?.["thought"] || toolCall.result;
|
|
106
92
|
if (!thought)
|
|
107
93
|
return null;
|
|
108
94
|
return (_jsx("div", { className: "rounded-md border border-border/50 bg-muted/20 p-3", children: _jsx(CollapsiblePre, { content: thought, className: "italic text-muted-foreground whitespace-pre-wrap" }) }));
|
|
109
95
|
}
|
|
110
|
-
/**
|
|
111
|
-
* Fallback rendering for unknown/MCP tools. Preserves the original
|
|
112
|
-
* generic args + result JSON display.
|
|
113
|
-
*/
|
|
114
96
|
function GenericToolDetail({ toolCall }) {
|
|
115
97
|
const duration = formatDuration(toolCall.startedAt, toolCall.completedAt);
|
|
116
|
-
return (_jsxs(_Fragment, { children: [_jsx(MetadataRow, { toolCall: toolCall, duration: duration }),
|
|
98
|
+
return (_jsxs(_Fragment, { children: [_jsx(MetadataRow, { toolCall: toolCall, duration: duration }), _jsx(ToolArgsView, { toolName: toolCall.name, args: toolCall.args, mcpServerSlug: toolCall.mcpServerSlug }), toolCall.result && (_jsx(CollapsibleCode, { label: "Result", content: formatResult(toolCall.result) }))] }));
|
|
117
99
|
}
|
|
118
100
|
// ---------------------------------------------------------------------------
|
|
119
101
|
// Shared sub-components
|
|
@@ -124,60 +106,9 @@ function MetadataRow({ toolCall, duration, }) {
|
|
|
124
106
|
return null;
|
|
125
107
|
return (_jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-muted-foreground", children: [toolCall.mcpServerSlug && (_jsx("span", { className: "rounded bg-muted px-1.5 py-0.5 font-mono", children: toolCall.mcpServerSlug })), duration && _jsx("span", { children: duration })] }));
|
|
126
108
|
}
|
|
127
|
-
function CollapsibleCode({ label, content, }) {
|
|
128
|
-
const lines = content.split("\n");
|
|
129
|
-
const needsTruncation = lines.length > TRUNCATION_LINE_LIMIT;
|
|
130
|
-
const [isExpanded, setIsExpanded] = useState(false);
|
|
131
|
-
const displayContent = needsTruncation && !isExpanded
|
|
132
|
-
? lines.slice(0, TRUNCATION_LINE_LIMIT).join("\n") + "\n\u2026"
|
|
133
|
-
: content;
|
|
134
|
-
return (_jsxs("div", { className: "space-y-1", children: [_jsx("span", { className: "font-medium text-muted-foreground", children: label }), _jsx("pre", { className: "max-h-80 overflow-auto whitespace-pre-wrap break-words rounded-md border border-border bg-muted/40 p-2 font-mono text-foreground", children: displayContent }), needsTruncation && (_jsx("button", { type: "button", onClick: () => setIsExpanded((v) => !v), className: "text-primary hover:text-primary/80 text-xs font-medium transition-colors", children: isExpanded
|
|
135
|
-
? "Show less"
|
|
136
|
-
: `Show all ${lines.length} lines` }))] }));
|
|
137
|
-
}
|
|
138
|
-
function CollapsiblePre({ content, className, }) {
|
|
139
|
-
const lines = content.split("\n");
|
|
140
|
-
const needsTruncation = lines.length > TRUNCATION_LINE_LIMIT;
|
|
141
|
-
const [isExpanded, setIsExpanded] = useState(false);
|
|
142
|
-
const displayContent = needsTruncation && !isExpanded
|
|
143
|
-
? lines.slice(0, TRUNCATION_LINE_LIMIT).join("\n") + "\n\u2026"
|
|
144
|
-
: content;
|
|
145
|
-
return (_jsxs(_Fragment, { children: [_jsx("pre", { className: cn("whitespace-pre-wrap break-words font-mono", className), children: displayContent }), needsTruncation && (_jsx("button", { type: "button", onClick: () => setIsExpanded((v) => !v), className: "mt-1 text-primary hover:text-primary/80 text-xs font-medium transition-colors", children: isExpanded ? "Show less" : `Show all ${lines.length} lines` }))] }));
|
|
146
|
-
}
|
|
147
|
-
function FilePathIcon() {
|
|
148
|
-
return (_jsxs("svg", { width: "10", height: "10", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round", className: "shrink-0 text-muted-foreground", "aria-hidden": "true", children: [_jsx("path", { d: "M7 1H3C2.45 1 2 1.45 2 2V10C2 10.55 2.45 11 3 11H9C9.55 11 10 10.55 10 10V4L7 1Z" }), _jsx("path", { d: "M7 1V4H10" })] }));
|
|
149
|
-
}
|
|
150
109
|
// ---------------------------------------------------------------------------
|
|
151
110
|
// Utilities
|
|
152
111
|
// ---------------------------------------------------------------------------
|
|
153
|
-
function extractWriteContent(toolCall) {
|
|
154
|
-
if (!toolCall.args)
|
|
155
|
-
return null;
|
|
156
|
-
const fields = ["contents", "content", "file_content", "new_text", "new_string", "replacement"];
|
|
157
|
-
for (const field of fields) {
|
|
158
|
-
const val = toolCall.args[field];
|
|
159
|
-
if (typeof val === "string" && val.length > 0)
|
|
160
|
-
return val;
|
|
161
|
-
}
|
|
162
|
-
return null;
|
|
163
|
-
}
|
|
164
|
-
function formatJson(obj) {
|
|
165
|
-
try {
|
|
166
|
-
return JSON.stringify(obj, null, 2);
|
|
167
|
-
}
|
|
168
|
-
catch {
|
|
169
|
-
return String(obj);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
function formatResult(result) {
|
|
173
|
-
try {
|
|
174
|
-
const parsed = JSON.parse(result);
|
|
175
|
-
return JSON.stringify(parsed, null, 2);
|
|
176
|
-
}
|
|
177
|
-
catch {
|
|
178
|
-
return result;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
112
|
/**
|
|
182
113
|
* Returns a human-readable duration string from two ISO 8601
|
|
183
114
|
* timestamps. Returns `null` when either timestamp is empty or
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallDetail.js","sourceRoot":"","sources":["../../src/execution/ToolCallDetail.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"ToolCallDetail.js","sourceRoot":"","sources":["../../src/execution/ToolCallDetail.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallGroup.d.ts","sourceRoot":"","sources":["../../src/execution/ToolCallGroup.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iEAAiE,CAAC;AAChG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kEAAkE,CAAC;AAS1G,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC3D;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,KAAK,MAAM,CAAC;IACpE;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"ToolCallGroup.d.ts","sourceRoot":"","sources":["../../src/execution/ToolCallGroup.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iEAAiE,CAAC;AAChG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kEAAkE,CAAC;AAS1G,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC3D;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,KAAK,MAAM,CAAC;IACpE;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAiGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,eAAuB,EACvB,SAAS,GACV,EAAE,kBAAkB,kDAwFpB"}
|
|
@@ -51,8 +51,9 @@ function deriveAggregateStatus(toolCalls) {
|
|
|
51
51
|
}
|
|
52
52
|
function defaultFormatSummary(toolCalls, status) {
|
|
53
53
|
if (toolCalls.length === 1) {
|
|
54
|
-
const
|
|
55
|
-
const
|
|
54
|
+
const tc = toolCalls[0];
|
|
55
|
+
const cat = resolveToolCategory(tc.name, tc.mcpServerSlug);
|
|
56
|
+
const primary = extractPrimaryArg(tc);
|
|
56
57
|
if (primary) {
|
|
57
58
|
const truncated = primary.length > 60 ? primary.slice(0, 57) + "\u2026" : primary;
|
|
58
59
|
return `${cat.label}: ${truncated}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallGroup.js","sourceRoot":"","sources":["../../src/execution/ToolCallGroup.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG7D,OAAO,EACL,cAAc,EACd,cAAc,GACf,MAAM,8DAA8D,CAAC;AACtE,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AA0B3E,SAAS,kBAAkB,CAAC,EAAY;IACtC,OAAO,CACL,EAAE,CAAC,cAAc,KAAK,cAAc,CAAC,OAAO;QAC5C,EAAE,CAAC,cAAc,KAAK,cAAc,CAAC,IAAI;QACzC,EAAE,CAAC,cAAc,KAAK,cAAc,CAAC,MAAM,CAC5C,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,SAA8B;IAC3D,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,WAAW,GAAG,IAAI,CAAC;IAEvB,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;YAClB,KAAK,cAAc,CAAC,iBAAiB;gBACnC,UAAU,GAAG,IAAI,CAAC;gBAClB,WAAW,GAAG,KAAK,CAAC;gBACpB,MAAM;YACR,KAAK,cAAc,CAAC,0BAA0B;gBAC5C,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC3B,MAAM;gBACR,CAAC;gBACD,UAAU,GAAG,IAAI,CAAC;gBAClB,WAAW,GAAG,KAAK,CAAC;gBACpB,MAAM;YACR,KAAK,cAAc,CAAC,gBAAgB;gBAClC,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,KAAK,cAAc,CAAC,mBAAmB,CAAC;YACxC,KAAK,cAAc,CAAC,iBAAiB;gBACnC,MAAM;YACR;gBACE,WAAW,GAAG,KAAK,CAAC;gBACpB,MAAM;QACV,CAAC;IACH,CAAC;IAED,IAAI,UAAU;QAAE,OAAO,SAAS,CAAC;IACjC,IAAI,UAAU;QAAE,OAAO,SAAS,CAAC;IACjC,IAAI,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC/B,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IACpC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,oBAAoB,CAC3B,SAA8B,EAC9B,MAAuB;IAEvB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"ToolCallGroup.js","sourceRoot":"","sources":["../../src/execution/ToolCallGroup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ToolCall } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
2
2
|
import type { SubAgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/subagent_pb";
|
|
3
|
+
import { type ToolCategory } from "./tool-categories";
|
|
3
4
|
export interface ToolCallItemProps {
|
|
4
5
|
readonly toolCall: ToolCall;
|
|
5
6
|
/**
|
|
@@ -36,4 +37,5 @@ export interface ToolCallItemProps {
|
|
|
36
37
|
* ```
|
|
37
38
|
*/
|
|
38
39
|
export declare function ToolCallItem({ toolCall, subAgentExecution, defaultExpanded, className, }: ToolCallItemProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
export declare const CATEGORY_ICON: Record<ToolCategory, () => React.JSX.Element>;
|
|
39
41
|
//# sourceMappingURL=ToolCallItem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallItem.d.ts","sourceRoot":"","sources":["../../src/execution/ToolCallItem.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iEAAiE,CAAC;AAChG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kEAAkE,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolCallItem.d.ts","sourceRoot":"","sources":["../../src/execution/ToolCallItem.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iEAAiE,CAAC;AAChG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kEAAkE,CAAC;AAS1G,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtD;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,iBAAiB,EACjB,eAAuB,EACvB,SAAS,GACV,EAAE,iBAAiB,2CAwInB;AAkED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAYvE,CAAC"}
|
|
@@ -7,6 +7,7 @@ import { ToolCallDetail, formatDuration } from "./ToolCallDetail";
|
|
|
7
7
|
import { SubAgentSection } from "./SubAgentSection";
|
|
8
8
|
import { FilePathLink } from "./FilePathLink";
|
|
9
9
|
import { resolveToolCategory, extractPrimaryArg, } from "./tool-categories";
|
|
10
|
+
import { useSandboxNormalize } from "./SandboxContext";
|
|
10
11
|
/**
|
|
11
12
|
* Renders a single tool call as a row in the tool call group.
|
|
12
13
|
*
|
|
@@ -34,12 +35,13 @@ export function ToolCallItem({ toolCall, subAgentExecution, defaultExpanded = fa
|
|
|
34
35
|
const StatusIcon = STATUS_ICON[status];
|
|
35
36
|
const duration = formatDuration(toolCall.startedAt, toolCall.completedAt);
|
|
36
37
|
const isSubAgent = subAgentExecution != null;
|
|
37
|
-
const categoryInfo = resolveToolCategory(toolCall.name);
|
|
38
|
+
const categoryInfo = resolveToolCategory(toolCall.name, toolCall.mcpServerSlug);
|
|
38
39
|
const CategoryIcon = CATEGORY_ICON[categoryInfo.category];
|
|
39
40
|
const primaryArg = extractPrimaryArg(toolCall);
|
|
40
41
|
const displayLabel = isSubAgent
|
|
41
42
|
? subAgentExecution.subject || subAgentExecution.name || categoryInfo.label
|
|
42
43
|
: categoryInfo.label;
|
|
44
|
+
const normalize = useSandboxNormalize();
|
|
43
45
|
const approvalBadge = getApprovalBadge(toolCall);
|
|
44
46
|
// Completed/skipped Read items are non-expandable — the clickable
|
|
45
47
|
// path in the row is the complete information. Failed reads remain
|
|
@@ -52,7 +54,11 @@ export function ToolCallItem({ toolCall, subAgentExecution, defaultExpanded = fa
|
|
|
52
54
|
if (isNonExpandableRead) {
|
|
53
55
|
return (_jsx("div", { className: cn("border-b border-border/50 last:border-b-0", className), children: _jsxs("div", { className: "flex w-full items-center gap-2 px-2.5 py-1.5 text-xs", children: [_jsx("span", { className: "shrink-0 text-muted-foreground", "aria-hidden": "true", children: _jsx(CategoryIcon, {}) }), _jsxs("span", { className: "min-w-0 flex-1 flex items-center gap-1.5 overflow-hidden", children: [_jsx("span", { className: "shrink-0 font-medium text-foreground", children: displayLabel }), primaryArg && (_jsx(FilePathLink, { path: primaryArg, className: "min-w-0 text-xs" }))] }), trailingContent] }) }));
|
|
54
56
|
}
|
|
55
|
-
const displaySubtitle = isSubAgent
|
|
57
|
+
const displaySubtitle = isSubAgent
|
|
58
|
+
? null
|
|
59
|
+
: categoryInfo.category === "shell" && primaryArg
|
|
60
|
+
? normalize(primaryArg)
|
|
61
|
+
: primaryArg;
|
|
56
62
|
return (_jsxs("div", { className: cn("border-b border-border/50 last:border-b-0", className), children: [_jsxs("button", { type: "button", "aria-expanded": expanded, onClick: () => setExpanded((v) => !v), className: cn("flex w-full items-center gap-2 px-2.5 py-1.5 text-left text-xs transition-colors", "hover:bg-muted/50", expanded && "bg-muted/30"), children: [_jsx("span", { className: "shrink-0 text-muted-foreground", "aria-hidden": "true", children: _jsx(CategoryIcon, {}) }), _jsxs("span", { className: "min-w-0 flex-1 flex items-baseline gap-1.5 overflow-hidden", children: [_jsx("span", { className: "shrink-0 font-medium text-foreground", children: displayLabel }), displaySubtitle && (_jsx("span", { className: "min-w-0 truncate text-muted-foreground font-mono", children: displaySubtitle }))] }), trailingContent, _jsx(ChevronIcon, { expanded: expanded })] }), expanded && (_jsx("div", { className: "px-2.5 pb-2.5 pt-1", children: isSubAgent ? (_jsx(SubAgentSection, { subAgentExecution: subAgentExecution })) : (_jsx(ToolCallDetail, { toolCall: toolCall })) }))] }));
|
|
57
63
|
}
|
|
58
64
|
function getApprovalBadge(toolCall) {
|
|
@@ -99,7 +105,7 @@ const STATUS_COLOR = {
|
|
|
99
105
|
// ---------------------------------------------------------------------------
|
|
100
106
|
// Category-specific icons (inline SVG, SDK pattern)
|
|
101
107
|
// ---------------------------------------------------------------------------
|
|
102
|
-
const CATEGORY_ICON = {
|
|
108
|
+
export const CATEGORY_ICON = {
|
|
103
109
|
shell: TerminalIcon,
|
|
104
110
|
read: FileIcon,
|
|
105
111
|
write: FilePenIcon,
|
|
@@ -109,6 +115,7 @@ const CATEGORY_ICON = {
|
|
|
109
115
|
list: FolderIcon,
|
|
110
116
|
think: BrainIcon,
|
|
111
117
|
"sub-agent": BotIcon,
|
|
118
|
+
mcp: McpPlugIcon,
|
|
112
119
|
unknown: WrenchIcon,
|
|
113
120
|
};
|
|
114
121
|
function TerminalIcon() {
|
|
@@ -138,6 +145,9 @@ function BotIcon() {
|
|
|
138
145
|
function WrenchIcon() {
|
|
139
146
|
return (_jsx("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M8.5 2C7.67 2 7 2.67 7 3.5C7 3.78 7.08 4.04 7.22 4.26L3.74 7.74C3.52 7.6 3.27 7.5 3 7.5C2.17 7.5 1.5 8.17 1.5 9C1.5 9.83 2.17 10.5 3 10.5C3.83 10.5 4.5 9.83 4.5 9C4.5 8.73 4.4 8.48 4.26 8.26L7.74 4.78C7.96 4.92 8.22 5 8.5 5C9.33 5 10 4.33 10 3.5C10 3.22 9.92 2.96 9.78 2.74L8.5 4L7.5 3L8.76 1.72C8.54 1.58 8.28 1.5 8 1.5" }) }));
|
|
140
147
|
}
|
|
148
|
+
function McpPlugIcon() {
|
|
149
|
+
return (_jsxs("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M4 1.5V4" }), _jsx("path", { d: "M8 1.5V4" }), _jsx("path", { d: "M2.5 4H9.5V6.5C9.5 8.43 7.93 10 6 10C4.07 10 2.5 8.43 2.5 6.5V4Z" }), _jsx("path", { d: "M6 10V11" })] }));
|
|
150
|
+
}
|
|
141
151
|
// ---------------------------------------------------------------------------
|
|
142
152
|
// Status icons
|
|
143
153
|
// ---------------------------------------------------------------------------
|