@stigmer/react 0.0.43 → 0.0.45
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/execution/ArtifactContentRenderer.d.ts +58 -0
- package/execution/ArtifactContentRenderer.d.ts.map +1 -0
- package/execution/ArtifactContentRenderer.js +163 -0
- package/execution/ArtifactContentRenderer.js.map +1 -0
- package/execution/ArtifactPreviewModal.d.ts +3 -2
- package/execution/ArtifactPreviewModal.d.ts.map +1 -1
- package/execution/ArtifactPreviewModal.js +11 -62
- package/execution/ArtifactPreviewModal.js.map +1 -1
- package/execution/ExecutionPhaseBadge.js +1 -1
- package/execution/ExecutionPhaseBadge.js.map +1 -1
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +21 -2
- package/execution/MessageThread.js.map +1 -1
- package/execution/SetupProgress.d.ts +35 -0
- package/execution/SetupProgress.d.ts.map +1 -0
- package/execution/SetupProgress.js +65 -0
- package/execution/SetupProgress.js.map +1 -0
- package/execution/ToolCallGroup.d.ts.map +1 -1
- package/execution/ToolCallGroup.js +9 -1
- package/execution/ToolCallGroup.js.map +1 -1
- package/execution/ToolCallItem.js +8 -3
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/artifact-utils.d.ts +50 -0
- package/execution/artifact-utils.d.ts.map +1 -1
- package/execution/artifact-utils.js +67 -5
- package/execution/artifact-utils.js.map +1 -1
- package/execution/index.d.ts +6 -1
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +3 -1
- package/execution/index.js.map +1 -1
- package/index.d.ts +4 -4
- package/index.d.ts.map +1 -1
- package/index.js +2 -2
- package/index.js.map +1 -1
- package/mcp-server/ApprovalPolicyGeneratorPanel.d.ts +34 -0
- package/mcp-server/ApprovalPolicyGeneratorPanel.d.ts.map +1 -0
- package/mcp-server/ApprovalPolicyGeneratorPanel.js +55 -0
- package/mcp-server/ApprovalPolicyGeneratorPanel.js.map +1 -0
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +101 -2
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/index.d.ts +8 -0
- package/mcp-server/index.d.ts.map +1 -1
- package/mcp-server/index.js +4 -0
- package/mcp-server/index.js.map +1 -1
- package/mcp-server/useDiscoverCapabilities.d.ts +59 -0
- package/mcp-server/useDiscoverCapabilities.d.ts.map +1 -0
- package/mcp-server/useDiscoverCapabilities.js +77 -0
- package/mcp-server/useDiscoverCapabilities.js.map +1 -0
- package/mcp-server/useMcpServerCredentials.d.ts +63 -0
- package/mcp-server/useMcpServerCredentials.d.ts.map +1 -0
- package/mcp-server/useMcpServerCredentials.js +64 -0
- package/mcp-server/useMcpServerCredentials.js.map +1 -0
- package/mcp-server/useTriggerApprovalPolicySession.d.ts +42 -0
- package/mcp-server/useTriggerApprovalPolicySession.d.ts.map +1 -0
- package/mcp-server/useTriggerApprovalPolicySession.js +111 -0
- package/mcp-server/useTriggerApprovalPolicySession.js.map +1 -0
- package/package.json +4 -4
- package/session/__tests__/useSessionConversation.test.js +223 -2
- package/session/__tests__/useSessionConversation.test.js.map +1 -1
- package/session/useSessionConversation.d.ts +8 -1
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +77 -6
- package/session/useSessionConversation.js.map +1 -1
- package/src/execution/ArtifactContentRenderer.tsx +376 -0
- package/src/execution/ArtifactPreviewModal.tsx +22 -114
- package/src/execution/ExecutionPhaseBadge.tsx +1 -1
- package/src/execution/MessageThread.tsx +35 -3
- package/src/execution/SetupProgress.tsx +120 -0
- package/src/execution/ToolCallGroup.tsx +15 -1
- package/src/execution/ToolCallItem.tsx +10 -3
- package/src/execution/artifact-utils.ts +88 -4
- package/src/execution/index.ts +9 -0
- package/src/index.ts +16 -0
- package/src/mcp-server/ApprovalPolicyGeneratorPanel.tsx +164 -0
- package/src/mcp-server/McpServerDetailView.tsx +428 -2
- package/src/mcp-server/index.ts +15 -0
- package/src/mcp-server/useDiscoverCapabilities.ts +117 -0
- package/src/mcp-server/useMcpServerCredentials.ts +108 -0
- package/src/mcp-server/useTriggerApprovalPolicySession.ts +161 -0
- package/src/session/__tests__/useSessionConversation.test.tsx +355 -2
- package/src/session/useSessionConversation.ts +104 -9
- package/styles.css +1 -1
package/src/index.ts
CHANGED
|
@@ -76,6 +76,7 @@ export {
|
|
|
76
76
|
aggregateUsage,
|
|
77
77
|
useSubmitApproval,
|
|
78
78
|
ExecutionPhaseBadge,
|
|
79
|
+
SetupProgress,
|
|
79
80
|
ExecutionProgress,
|
|
80
81
|
ExecutionCostSummary,
|
|
81
82
|
ToolCallGroup,
|
|
@@ -88,6 +89,7 @@ export {
|
|
|
88
89
|
FollowUpInput,
|
|
89
90
|
ApprovalCard,
|
|
90
91
|
ArtifactCard,
|
|
92
|
+
ArtifactContentRenderer,
|
|
91
93
|
ArtifactPreviewModal,
|
|
92
94
|
ArtifactsWidget,
|
|
93
95
|
FilePathLink,
|
|
@@ -103,6 +105,8 @@ export {
|
|
|
103
105
|
isArtifactExpired,
|
|
104
106
|
formatArtifactSize,
|
|
105
107
|
getArtifactExtension,
|
|
108
|
+
getFileExtension,
|
|
109
|
+
getArtifactRenderMode,
|
|
106
110
|
} from "./execution";
|
|
107
111
|
export type {
|
|
108
112
|
CreateAgentExecutionInput,
|
|
@@ -112,6 +116,7 @@ export type {
|
|
|
112
116
|
UseExecutionUsageReturn,
|
|
113
117
|
UseSubmitApprovalReturn,
|
|
114
118
|
ExecutionPhaseBadgeProps,
|
|
119
|
+
SetupProgressProps,
|
|
115
120
|
ExecutionProgressProps,
|
|
116
121
|
ExecutionCostSummaryProps,
|
|
117
122
|
ToolCallGroupProps,
|
|
@@ -123,6 +128,8 @@ export type {
|
|
|
123
128
|
FollowUpInputProps,
|
|
124
129
|
ApprovalCardProps,
|
|
125
130
|
ArtifactCardProps,
|
|
131
|
+
ArtifactContentRendererProps,
|
|
132
|
+
ArtifactRenderMode,
|
|
126
133
|
ArtifactPreviewModalProps,
|
|
127
134
|
ArtifactsWidgetProps,
|
|
128
135
|
FilePathLinkProps,
|
|
@@ -176,10 +183,14 @@ export {
|
|
|
176
183
|
useMcpServerList,
|
|
177
184
|
useMcpServerSearch,
|
|
178
185
|
useMcpServerSetup,
|
|
186
|
+
useDiscoverCapabilities,
|
|
187
|
+
useMcpServerCredentials,
|
|
188
|
+
useTriggerApprovalPolicySession,
|
|
179
189
|
McpServerPicker,
|
|
180
190
|
McpServerConfigPanel,
|
|
181
191
|
McpServerDetailView,
|
|
182
192
|
McpToolSelector,
|
|
193
|
+
ApprovalPolicyGeneratorPanel,
|
|
183
194
|
toServerKey,
|
|
184
195
|
} from "./mcp-server";
|
|
185
196
|
export type {
|
|
@@ -201,6 +212,11 @@ export type {
|
|
|
201
212
|
McpServerCredentialsProps,
|
|
202
213
|
McpServerDetailViewProps,
|
|
203
214
|
McpToolSelectorProps,
|
|
215
|
+
UseDiscoverCapabilitiesReturn,
|
|
216
|
+
UseMcpServerCredentialsReturn,
|
|
217
|
+
UseTriggerApprovalPolicySessionReturn,
|
|
218
|
+
TriggerApprovalPolicyResult,
|
|
219
|
+
ApprovalPolicyGeneratorPanelProps,
|
|
204
220
|
} from "./mcp-server";
|
|
205
221
|
|
|
206
222
|
// Skill — data hook, count hook, list hook, search hook, picker, and detail view component
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useRef } from "react";
|
|
4
|
+
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
6
|
+
import { useExecutionStream } from "../execution/useExecutionStream";
|
|
7
|
+
import { MessageThread } from "../execution/MessageThread";
|
|
8
|
+
import { ExecutionProgress } from "../execution/ExecutionProgress";
|
|
9
|
+
import { isTerminalPhase } from "../execution/execution-phases";
|
|
10
|
+
|
|
11
|
+
export interface ApprovalPolicyGeneratorPanelProps {
|
|
12
|
+
/** The execution ID to stream. */
|
|
13
|
+
readonly executionId: string;
|
|
14
|
+
/** Called when the user clicks the close/dismiss button. */
|
|
15
|
+
readonly onClose: () => void;
|
|
16
|
+
/** Called once when the execution reaches a terminal phase. */
|
|
17
|
+
readonly onComplete?: () => void;
|
|
18
|
+
/** Additional CSS classes for the root container. */
|
|
19
|
+
readonly className?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Inline panel that streams the approval policy generation execution.
|
|
24
|
+
*
|
|
25
|
+
* Composes {@link useExecutionStream}, {@link MessageThread}, and
|
|
26
|
+
* {@link ExecutionProgress} to show real-time agent progress: thinking,
|
|
27
|
+
* tool calls, generated YAML, and applied changes.
|
|
28
|
+
*
|
|
29
|
+
* When the execution reaches a terminal phase, the `onComplete`
|
|
30
|
+
* callback fires once so the parent can refetch the MCP server to
|
|
31
|
+
* display newly applied policies.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* {result && (
|
|
36
|
+
* <ApprovalPolicyGeneratorPanel
|
|
37
|
+
* executionId={result.executionId}
|
|
38
|
+
* onClose={() => setResult(null)}
|
|
39
|
+
* onComplete={() => refetch()}
|
|
40
|
+
* />
|
|
41
|
+
* )}
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export function ApprovalPolicyGeneratorPanel({
|
|
45
|
+
executionId,
|
|
46
|
+
onClose,
|
|
47
|
+
onComplete,
|
|
48
|
+
className,
|
|
49
|
+
}: ApprovalPolicyGeneratorPanelProps) {
|
|
50
|
+
const { execution, phase, isStreaming, error, reconnect } =
|
|
51
|
+
useExecutionStream(executionId);
|
|
52
|
+
|
|
53
|
+
const isComplete = isTerminalPhase(phase);
|
|
54
|
+
|
|
55
|
+
const completeFiredRef = useRef(false);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
if (isComplete && onComplete && !completeFiredRef.current) {
|
|
58
|
+
completeFiredRef.current = true;
|
|
59
|
+
onComplete();
|
|
60
|
+
}
|
|
61
|
+
}, [isComplete, onComplete]);
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
<div
|
|
65
|
+
className={cn(
|
|
66
|
+
"flex flex-col overflow-hidden rounded-lg border border-border bg-background",
|
|
67
|
+
className,
|
|
68
|
+
)}
|
|
69
|
+
>
|
|
70
|
+
{/* Header */}
|
|
71
|
+
<div className="flex items-center justify-between border-b border-border px-4 py-3">
|
|
72
|
+
<div className="flex items-center gap-2">
|
|
73
|
+
<SparklesIcon className="size-4 text-muted-foreground" />
|
|
74
|
+
<h4 className="text-sm font-medium text-foreground">
|
|
75
|
+
Generating Approval Policies
|
|
76
|
+
</h4>
|
|
77
|
+
</div>
|
|
78
|
+
<div className="flex items-center gap-2">
|
|
79
|
+
{execution && (
|
|
80
|
+
<ExecutionProgress execution={execution} className="text-xs" />
|
|
81
|
+
)}
|
|
82
|
+
<button
|
|
83
|
+
type="button"
|
|
84
|
+
onClick={onClose}
|
|
85
|
+
className="rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
86
|
+
aria-label="Close panel"
|
|
87
|
+
>
|
|
88
|
+
<CloseIcon className="size-4" />
|
|
89
|
+
</button>
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
{/* Stream content */}
|
|
94
|
+
<div className="flex-1 overflow-hidden">
|
|
95
|
+
{error ? (
|
|
96
|
+
<div className="flex flex-col items-center gap-2 p-6 text-center">
|
|
97
|
+
<p className="text-sm text-destructive">{error.message}</p>
|
|
98
|
+
<button
|
|
99
|
+
type="button"
|
|
100
|
+
onClick={reconnect}
|
|
101
|
+
className="rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90"
|
|
102
|
+
>
|
|
103
|
+
Retry
|
|
104
|
+
</button>
|
|
105
|
+
</div>
|
|
106
|
+
) : (
|
|
107
|
+
<MessageThread
|
|
108
|
+
executions={[]}
|
|
109
|
+
activeStreamExecution={execution}
|
|
110
|
+
/>
|
|
111
|
+
)}
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
{/* Footer */}
|
|
115
|
+
{isComplete && (
|
|
116
|
+
<div className="border-t border-border px-4 py-3">
|
|
117
|
+
<p className="text-xs text-muted-foreground">
|
|
118
|
+
{phase === ExecutionPhase.EXECUTION_COMPLETED
|
|
119
|
+
? "Approval policies have been generated and applied. The detail view will refresh to show the changes."
|
|
120
|
+
: "Policy generation did not complete successfully. You can retry from the detail page."}
|
|
121
|
+
</p>
|
|
122
|
+
</div>
|
|
123
|
+
)}
|
|
124
|
+
</div>
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// ---------------------------------------------------------------------------
|
|
129
|
+
// Inline SVG icons
|
|
130
|
+
// ---------------------------------------------------------------------------
|
|
131
|
+
|
|
132
|
+
function SparklesIcon({ className }: { readonly className?: string }) {
|
|
133
|
+
return (
|
|
134
|
+
<svg
|
|
135
|
+
className={className}
|
|
136
|
+
viewBox="0 0 16 16"
|
|
137
|
+
fill="none"
|
|
138
|
+
stroke="currentColor"
|
|
139
|
+
strokeWidth="1.5"
|
|
140
|
+
strokeLinecap="round"
|
|
141
|
+
strokeLinejoin="round"
|
|
142
|
+
aria-hidden="true"
|
|
143
|
+
>
|
|
144
|
+
<path d="M8 1v2M8 13v2M1 8h2M13 8h2M3.05 3.05l1.41 1.41M11.54 11.54l1.41 1.41M3.05 12.95l1.41-1.41M11.54 4.46l1.41-1.41" />
|
|
145
|
+
</svg>
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function CloseIcon({ className }: { readonly className?: string }) {
|
|
150
|
+
return (
|
|
151
|
+
<svg
|
|
152
|
+
className={className}
|
|
153
|
+
viewBox="0 0 16 16"
|
|
154
|
+
fill="none"
|
|
155
|
+
stroke="currentColor"
|
|
156
|
+
strokeWidth="1.5"
|
|
157
|
+
strokeLinecap="round"
|
|
158
|
+
strokeLinejoin="round"
|
|
159
|
+
aria-hidden="true"
|
|
160
|
+
>
|
|
161
|
+
<path d="m4 4 8 8M12 4l-8 8" />
|
|
162
|
+
</svg>
|
|
163
|
+
);
|
|
164
|
+
}
|