@stigmer/react 0.0.43 → 0.0.44

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.
Files changed (83) hide show
  1. package/execution/ArtifactContentRenderer.d.ts +58 -0
  2. package/execution/ArtifactContentRenderer.d.ts.map +1 -0
  3. package/execution/ArtifactContentRenderer.js +163 -0
  4. package/execution/ArtifactContentRenderer.js.map +1 -0
  5. package/execution/ArtifactPreviewModal.d.ts +3 -2
  6. package/execution/ArtifactPreviewModal.d.ts.map +1 -1
  7. package/execution/ArtifactPreviewModal.js +11 -62
  8. package/execution/ArtifactPreviewModal.js.map +1 -1
  9. package/execution/ExecutionPhaseBadge.js +1 -1
  10. package/execution/ExecutionPhaseBadge.js.map +1 -1
  11. package/execution/MessageThread.d.ts.map +1 -1
  12. package/execution/MessageThread.js +21 -2
  13. package/execution/MessageThread.js.map +1 -1
  14. package/execution/SetupProgress.d.ts +35 -0
  15. package/execution/SetupProgress.d.ts.map +1 -0
  16. package/execution/SetupProgress.js +65 -0
  17. package/execution/SetupProgress.js.map +1 -0
  18. package/execution/ToolCallGroup.d.ts.map +1 -1
  19. package/execution/ToolCallGroup.js +9 -1
  20. package/execution/ToolCallGroup.js.map +1 -1
  21. package/execution/ToolCallItem.js +8 -3
  22. package/execution/ToolCallItem.js.map +1 -1
  23. package/execution/artifact-utils.d.ts +50 -0
  24. package/execution/artifact-utils.d.ts.map +1 -1
  25. package/execution/artifact-utils.js +67 -5
  26. package/execution/artifact-utils.js.map +1 -1
  27. package/execution/index.d.ts +6 -1
  28. package/execution/index.d.ts.map +1 -1
  29. package/execution/index.js +3 -1
  30. package/execution/index.js.map +1 -1
  31. package/index.d.ts +4 -4
  32. package/index.d.ts.map +1 -1
  33. package/index.js +2 -2
  34. package/index.js.map +1 -1
  35. package/mcp-server/ApprovalPolicyGeneratorPanel.d.ts +34 -0
  36. package/mcp-server/ApprovalPolicyGeneratorPanel.d.ts.map +1 -0
  37. package/mcp-server/ApprovalPolicyGeneratorPanel.js +55 -0
  38. package/mcp-server/ApprovalPolicyGeneratorPanel.js.map +1 -0
  39. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  40. package/mcp-server/McpServerDetailView.js +101 -2
  41. package/mcp-server/McpServerDetailView.js.map +1 -1
  42. package/mcp-server/index.d.ts +8 -0
  43. package/mcp-server/index.d.ts.map +1 -1
  44. package/mcp-server/index.js +4 -0
  45. package/mcp-server/index.js.map +1 -1
  46. package/mcp-server/useDiscoverCapabilities.d.ts +59 -0
  47. package/mcp-server/useDiscoverCapabilities.d.ts.map +1 -0
  48. package/mcp-server/useDiscoverCapabilities.js +77 -0
  49. package/mcp-server/useDiscoverCapabilities.js.map +1 -0
  50. package/mcp-server/useMcpServerCredentials.d.ts +63 -0
  51. package/mcp-server/useMcpServerCredentials.d.ts.map +1 -0
  52. package/mcp-server/useMcpServerCredentials.js +64 -0
  53. package/mcp-server/useMcpServerCredentials.js.map +1 -0
  54. package/mcp-server/useTriggerApprovalPolicySession.d.ts +42 -0
  55. package/mcp-server/useTriggerApprovalPolicySession.d.ts.map +1 -0
  56. package/mcp-server/useTriggerApprovalPolicySession.js +111 -0
  57. package/mcp-server/useTriggerApprovalPolicySession.js.map +1 -0
  58. package/package.json +4 -4
  59. package/session/__tests__/useSessionConversation.test.js +223 -2
  60. package/session/__tests__/useSessionConversation.test.js.map +1 -1
  61. package/session/useSessionConversation.d.ts +8 -1
  62. package/session/useSessionConversation.d.ts.map +1 -1
  63. package/session/useSessionConversation.js +77 -6
  64. package/session/useSessionConversation.js.map +1 -1
  65. package/src/execution/ArtifactContentRenderer.tsx +376 -0
  66. package/src/execution/ArtifactPreviewModal.tsx +22 -114
  67. package/src/execution/ExecutionPhaseBadge.tsx +1 -1
  68. package/src/execution/MessageThread.tsx +35 -3
  69. package/src/execution/SetupProgress.tsx +120 -0
  70. package/src/execution/ToolCallGroup.tsx +15 -1
  71. package/src/execution/ToolCallItem.tsx +10 -3
  72. package/src/execution/artifact-utils.ts +88 -4
  73. package/src/execution/index.ts +9 -0
  74. package/src/index.ts +16 -0
  75. package/src/mcp-server/ApprovalPolicyGeneratorPanel.tsx +164 -0
  76. package/src/mcp-server/McpServerDetailView.tsx +428 -2
  77. package/src/mcp-server/index.ts +15 -0
  78. package/src/mcp-server/useDiscoverCapabilities.ts +117 -0
  79. package/src/mcp-server/useMcpServerCredentials.ts +108 -0
  80. package/src/mcp-server/useTriggerApprovalPolicySession.ts +161 -0
  81. package/src/session/__tests__/useSessionConversation.test.tsx +355 -2
  82. package/src/session/useSessionConversation.ts +104 -9
  83. 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
+ }