@stigmer/react 3.0.3 → 3.0.5

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 (36) hide show
  1. package/agent/AgentDetailView.d.ts +1 -11
  2. package/agent/AgentDetailView.d.ts.map +1 -1
  3. package/agent/AgentDetailView.js +3 -6
  4. package/agent/AgentDetailView.js.map +1 -1
  5. package/iam-policy/useCheckPermission.d.ts +3 -1
  6. package/iam-policy/useCheckPermission.d.ts.map +1 -1
  7. package/iam-policy/useCheckPermission.js +11 -15
  8. package/iam-policy/useCheckPermission.js.map +1 -1
  9. package/library/ResourceVisibilityControl.d.ts +35 -0
  10. package/library/ResourceVisibilityControl.d.ts.map +1 -0
  11. package/library/ResourceVisibilityControl.js +52 -0
  12. package/library/ResourceVisibilityControl.js.map +1 -0
  13. package/library/VisibilityToggle.d.ts +11 -0
  14. package/library/VisibilityToggle.d.ts.map +1 -1
  15. package/library/VisibilityToggle.js +11 -0
  16. package/library/VisibilityToggle.js.map +1 -1
  17. package/library/index.d.ts +3 -1
  18. package/library/index.d.ts.map +1 -1
  19. package/library/index.js +2 -1
  20. package/library/index.js.map +1 -1
  21. package/package.json +4 -4
  22. package/skill/SkillDetailView.d.ts +1 -11
  23. package/skill/SkillDetailView.d.ts.map +1 -1
  24. package/skill/SkillDetailView.js +3 -6
  25. package/skill/SkillDetailView.js.map +1 -1
  26. package/src/agent/AgentDetailView.tsx +9 -35
  27. package/src/iam-policy/useCheckPermission.ts +10 -15
  28. package/src/library/ResourceVisibilityControl.tsx +99 -0
  29. package/src/library/VisibilityToggle.tsx +33 -0
  30. package/src/library/index.ts +4 -1
  31. package/src/skill/SkillDetailView.tsx +9 -35
  32. package/src/workflow/WorkflowDetailView.tsx +9 -34
  33. package/workflow/WorkflowDetailView.d.ts +1 -10
  34. package/workflow/WorkflowDetailView.d.ts.map +1 -1
  35. package/workflow/WorkflowDetailView.js +3 -6
  36. package/workflow/WorkflowDetailView.js.map +1 -1
@@ -5,12 +5,10 @@ import Markdown from "react-markdown";
5
5
  import { cn } from "@stigmer/theme";
6
6
  import { timestampDate } from "@bufbuild/protobuf/wkt";
7
7
  import { SkillState } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/status_pb";
8
- import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
9
8
  import { useSkill } from "./useSkill";
10
9
  import { SkillFileBrowser } from "./SkillFileBrowser";
11
10
  import { ErrorMessage } from "../error/ErrorMessage";
12
- import { VisibilityToggle } from "../library/VisibilityToggle";
13
- import { PermissionGate } from "../iam-policy/PermissionGate";
11
+ import { ResourceVisibilityControl } from "../library/ResourceVisibilityControl";
14
12
  import { MARKDOWN_COMPONENTS, REMARK_PLUGINS, stripFrontmatter } from "../internal/markdown-components";
15
13
  import { ResourceDetailShell } from "../resource-detail/ResourceDetailShell";
16
14
  import { Section } from "../resource-detail/Section";
@@ -50,7 +48,7 @@ const VERSIONS_TAB = { id: "versions", label: "Versions" };
50
48
  * <SkillDetailView org="acme" slug="code-style-guide" version="stable" />
51
49
  * ```
52
50
  */
53
- export function SkillDetailView({ org, slug, version, onResourceLoad, onVisibilityChange, isVisibilityPending, primaryAction, actions, additionalTabs, activeTab, onTabChange, defaultTab, onVersionSelect, editable = false, onResourceUpdated, className, }) {
51
+ export function SkillDetailView({ org, slug, version, onResourceLoad, primaryAction, actions, additionalTabs, activeTab, onTabChange, defaultTab, onVersionSelect, editable = false, onResourceUpdated, className, }) {
54
52
  const { skill, isLoading, error, refetch } = useSkill(org, slug, version);
55
53
  const { versions, isEmpty: noVersions, getArtifactKey } = useSkillVersions(org, slug);
56
54
  const [diffState, setDiffState] = useState(null);
@@ -105,8 +103,7 @@ export function SkillDetailView({ org, slug, version, onResourceLoad, onVisibili
105
103
  status: status ? skillStateToPhase(status.state) : undefined,
106
104
  statusLabel: status ? skillStateLabel(status.state) : undefined,
107
105
  };
108
- const visibilityBadge = meta?.visibility === ApiResourceVisibility.visibility_public ? (_jsx("span", { className: "shrink-0 rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground", children: "Public" })) : undefined;
109
- const visibilityControl = onVisibilityChange && meta ? (_jsx(PermissionGate, { resource: { kind: "skill", id: meta.id }, relation: "can_edit", fallback: visibilityBadge, children: _jsx(VisibilityToggle, { visibility: meta.visibility, onVisibilityChange: onVisibilityChange, isPending: isVisibilityPending }) })) : visibilityBadge;
106
+ const visibilityControl = meta ? (_jsx(ResourceVisibilityControl, { kind: "skill", resourceId: meta.id, visibility: meta.visibility, onChanged: refetch })) : undefined;
110
107
  let tabContent;
111
108
  if (activeAdditionalTab) {
112
109
  tabContent = activeAdditionalTab.content;
@@ -1 +1 @@
1
- {"version":3,"file":"SkillDetailView.js","sourceRoot":"","sources":["../../src/skill/SkillDetailView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SkillDetailView.js","sourceRoot":"","sources":["../../src/skill/SkillDetailView.tsx"],"names":[],"mappings":"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"}
@@ -10,13 +10,11 @@ import type {
10
10
  import type { ApiResourceReference } from "@stigmer/protos/ai/stigmer/commons/apiresource/io_pb";
11
11
  import type { EnvVarDeclaration } from "@stigmer/protos/ai/stigmer/agentic/environment/v1/spec_pb";
12
12
  import type { AgentInstance } from "@stigmer/protos/ai/stigmer/agentic/agentinstance/v1/api_pb";
13
- import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
14
13
  import { useAgent } from "./useAgent";
15
14
  import { useUpdateAgent } from "./useUpdateAgent";
16
15
  import { agentToInput } from "./internal/agentToInput";
17
16
  import { ErrorMessage } from "../error/ErrorMessage";
18
- import { VisibilityToggle } from "../library/VisibilityToggle";
19
- import { PermissionGate } from "../iam-policy/PermissionGate";
17
+ import { ResourceVisibilityControl } from "../library/ResourceVisibilityControl";
20
18
  import { ResourceDetailShell } from "../resource-detail/ResourceDetailShell";
21
19
  import { Section } from "../resource-detail/Section";
22
20
  import { useDetailTabs } from "../resource-detail/useDetailTabs";
@@ -65,15 +63,6 @@ export interface AgentDetailViewProps {
65
63
  * Not called on error or not-found states.
66
64
  */
67
65
  readonly onResourceLoad?: (meta: { name: string; id: string }) => void;
68
- /**
69
- * Called when the user toggles visibility via the inline control.
70
- * When provided, the header renders an interactive
71
- * {@link VisibilityToggle} instead of a read-only badge.
72
- * When omitted, visibility is displayed as a static "Public" pill.
73
- */
74
- readonly onVisibilityChange?: (v: ApiResourceVisibility) => void;
75
- /** `true` while a visibility update RPC is in flight. */
76
- readonly isVisibilityPending?: boolean;
77
66
  /**
78
67
  * Primary action rendered as a visible button in the header area.
79
68
  * Typically "Edit" for agent detail pages.
@@ -205,8 +194,6 @@ export function AgentDetailView({
205
194
  onMcpServerClick,
206
195
  onSkillClick,
207
196
  onResourceLoad,
208
- onVisibilityChange,
209
- isVisibilityPending,
210
197
  primaryAction,
211
198
  actions,
212
199
  additionalTabs,
@@ -325,27 +312,14 @@ export function AgentDetailView({
325
312
  updatedAt: specAudit?.updatedAt ? timestampDate(specAudit.updatedAt) : null,
326
313
  };
327
314
 
328
- const visibilityBadge =
329
- meta?.visibility === ApiResourceVisibility.visibility_public ? (
330
- <span className="shrink-0 rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground">
331
- Public
332
- </span>
333
- ) : undefined;
334
-
335
- const visibilityControl =
336
- onVisibilityChange && meta ? (
337
- <PermissionGate
338
- resource={{ kind: "agent", id: meta.id }}
339
- relation="can_edit"
340
- fallback={visibilityBadge}
341
- >
342
- <VisibilityToggle
343
- visibility={meta.visibility}
344
- onVisibilityChange={onVisibilityChange}
345
- isPending={isVisibilityPending}
346
- />
347
- </PermissionGate>
348
- ) : visibilityBadge;
315
+ const visibilityControl = meta ? (
316
+ <ResourceVisibilityControl
317
+ kind="agent"
318
+ resourceId={meta.id}
319
+ visibility={meta.visibility}
320
+ onChanged={refetch}
321
+ />
322
+ ) : undefined;
349
323
 
350
324
  let tabContent: React.ReactNode;
351
325
  if (activeAdditionalTab) {
@@ -3,10 +3,9 @@
3
3
  import { useEffect, useMemo, useRef, useState } from "react";
4
4
  import { create } from "@bufbuild/protobuf";
5
5
  import {
6
- CheckAuthorizationInputSchema,
6
+ CheckMyPermissionInputSchema,
7
7
  } from "@stigmer/protos/ai/stigmer/iam/iampolicy/v1/io_pb";
8
8
  import {
9
- IamPolicySpecSchema,
10
9
  ApiResourceRefSchema,
11
10
  } from "@stigmer/protos/ai/stigmer/iam/iampolicy/v1/spec_pb";
12
11
  import { useStigmer } from "../hooks";
@@ -33,7 +32,9 @@ export interface UseCheckPermissionReturn {
33
32
  * Hook that checks whether the current user has a specific permission
34
33
  * on a resource.
35
34
  *
36
- * Wraps `iamPolicy.checkAuthorization()` with caching and graceful
35
+ * Wraps `iamPolicy.checkMyPermission()` the dedicated self-check RPC
36
+ * where the server derives the principal from the authenticated token
37
+ * (the client never names a principal) — with caching and graceful
37
38
  * degradation. When the server does not support authorization checks
38
39
  * (OSS edition where the IAM service is not registered), the hook
39
40
  * returns `allowed: true` — ensuring all UI is visible in single-user
@@ -88,22 +89,16 @@ export function useCheckPermission(
88
89
  let cancelled = false;
89
90
  setIsLoading(true);
90
91
 
91
- const input = create(CheckAuthorizationInputSchema, {
92
- policy: create(IamPolicySpecSchema, {
93
- principal: create(ApiResourceRefSchema, {
94
- kind: "identity_account",
95
- id: "_self",
96
- }),
97
- resource: create(ApiResourceRefSchema, {
98
- kind: resource.kind,
99
- id: resource.id,
100
- }),
101
- relation,
92
+ const input = create(CheckMyPermissionInputSchema, {
93
+ resource: create(ApiResourceRefSchema, {
94
+ kind: resource.kind,
95
+ id: resource.id,
102
96
  }),
97
+ relation,
103
98
  });
104
99
 
105
100
  stigmer.iamPolicy
106
- .checkAuthorization(input)
101
+ .checkMyPermission(input)
107
102
  .then((result) => {
108
103
  if (cancelled) return;
109
104
  const isAllowed = result.isAuthorized;
@@ -0,0 +1,99 @@
1
+ "use client";
2
+
3
+ import { useCallback } from "react";
4
+ import type { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
5
+ import { PermissionGate } from "../iam-policy/PermissionGate";
6
+ import { VisibilityBadge, VisibilityToggle } from "./VisibilityToggle";
7
+ import {
8
+ useUpdateVisibility,
9
+ type VisibilityResourceKind,
10
+ } from "./useUpdateVisibility";
11
+
12
+ /**
13
+ * Maps a {@link VisibilityResourceKind} (which mirrors the SDK method namespace,
14
+ * e.g. `mcpServer`) to the FGA object type used in authorization checks
15
+ * (e.g. `mcp_server`). For the three blueprints these coincide, but the mapping
16
+ * keeps the control correct for every kind it may serve.
17
+ */
18
+ const FGA_KIND: Record<VisibilityResourceKind, string> = {
19
+ agent: "agent",
20
+ workflow: "workflow",
21
+ skill: "skill",
22
+ mcpServer: "mcp_server",
23
+ agentInstance: "agent_instance",
24
+ workflowInstance: "workflow_instance",
25
+ };
26
+
27
+ /** Props for {@link ResourceVisibilityControl}. */
28
+ export interface ResourceVisibilityControlProps {
29
+ /** Resource kind, selecting both the updateVisibility RPC and the FGA type. */
30
+ readonly kind: VisibilityResourceKind;
31
+ /** Id of the resource whose visibility is shown/edited. */
32
+ readonly resourceId: string;
33
+ /** Current visibility of the resource. */
34
+ readonly visibility: ApiResourceVisibility;
35
+ /**
36
+ * Called after a successful visibility change so the host can refresh the
37
+ * resource (e.g. `refetch`) and reflect the new state.
38
+ */
39
+ readonly onChanged?: () => void;
40
+ /** Additional CSS classes applied to the root element. */
41
+ readonly className?: string;
42
+ }
43
+
44
+ /**
45
+ * Single source of truth for the resource-visibility control in detail headers.
46
+ *
47
+ * Behavior:
48
+ * - Always renders a legible state: a read-only {@link VisibilityBadge}
49
+ * (Private/Public) is shown to viewers without `can_edit` and while the
50
+ * permission check is in flight — never a silent blank.
51
+ * - Upgrades to the interactive {@link VisibilityToggle} for users with
52
+ * `can_edit`, persisting changes via {@link useUpdateVisibility} and invoking
53
+ * {@link ResourceVisibilityControlProps.onChanged} on success.
54
+ *
55
+ * Blueprints (agent/workflow/skill/mcp_server) expose Private/Public; the toggle
56
+ * intentionally offers only those two levels (org-scoped sharing for instances is
57
+ * handled by `InstanceVisibilitySelector`).
58
+ */
59
+ export function ResourceVisibilityControl({
60
+ kind,
61
+ resourceId,
62
+ visibility,
63
+ onChanged,
64
+ className,
65
+ }: ResourceVisibilityControlProps) {
66
+ const { updateVisibility, isPending } = useUpdateVisibility(kind, resourceId);
67
+
68
+ const handleChange = useCallback(
69
+ async (next: ApiResourceVisibility) => {
70
+ try {
71
+ await updateVisibility(next);
72
+ onChanged?.();
73
+ } catch {
74
+ // The RPC error is captured in useUpdateVisibility's `error` state;
75
+ // swallow here so the toggle's promise settles without an unhandled
76
+ // rejection. Surfacing a toast is the host app's concern.
77
+ }
78
+ },
79
+ [updateVisibility, onChanged],
80
+ );
81
+
82
+ const badge = <VisibilityBadge visibility={visibility} className={className} />;
83
+
84
+ return (
85
+ <PermissionGate
86
+ resource={{ kind: FGA_KIND[kind], id: resourceId }}
87
+ relation="can_edit"
88
+ fallback={badge}
89
+ loading={badge}
90
+ >
91
+ <VisibilityToggle
92
+ visibility={visibility}
93
+ onVisibilityChange={handleChange}
94
+ isPending={isPending}
95
+ className={className}
96
+ />
97
+ </PermissionGate>
98
+ );
99
+ }
@@ -205,6 +205,39 @@ export function VisibilityToggle({
205
205
  );
206
206
  }
207
207
 
208
+ /**
209
+ * Read-only visibility indicator (Private / Public) with a matching icon.
210
+ *
211
+ * Rendered wherever the interactive {@link VisibilityToggle} is not available —
212
+ * for viewers who lack `can_edit`, and while a permission check is in flight —
213
+ * so a resource's visibility is always legible rather than silently blank.
214
+ */
215
+ export function VisibilityBadge({
216
+ visibility,
217
+ className,
218
+ }: {
219
+ readonly visibility: ApiResourceVisibility;
220
+ readonly className?: string;
221
+ }) {
222
+ const isPublic =
223
+ visibility === ApiResourceVisibility.visibility_public;
224
+ return (
225
+ <span
226
+ className={cn(
227
+ "inline-flex shrink-0 items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground",
228
+ className,
229
+ )}
230
+ >
231
+ {isPublic ? (
232
+ <GlobeIcon className="size-2.5" />
233
+ ) : (
234
+ <LockIcon className="size-2.5" />
235
+ )}
236
+ {isPublic ? "Public" : "Private"}
237
+ </span>
238
+ );
239
+ }
240
+
208
241
  // ---------------------------------------------------------------------------
209
242
  // Icons — inline SVGs following the SDK pattern (no icon library dependency)
210
243
  // ---------------------------------------------------------------------------
@@ -68,9 +68,12 @@ export type {
68
68
  export { ImportResourceDialog } from "./ImportResourceDialog";
69
69
  export type { ImportResourceDialogProps } from "./ImportResourceDialog";
70
70
 
71
- export { VisibilityToggle } from "./VisibilityToggle";
71
+ export { VisibilityToggle, VisibilityBadge } from "./VisibilityToggle";
72
72
  export type { VisibilityToggleProps } from "./VisibilityToggle";
73
73
 
74
+ export { ResourceVisibilityControl } from "./ResourceVisibilityControl";
75
+ export type { ResourceVisibilityControlProps } from "./ResourceVisibilityControl";
76
+
74
77
  export { useUpdateVisibility } from "./useUpdateVisibility";
75
78
  export type {
76
79
  VisibilityResourceKind,
@@ -7,12 +7,10 @@ import { timestampDate } from "@bufbuild/protobuf/wkt";
7
7
  import type { Skill } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/api_pb";
8
8
  import type { GitProvenance } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/status_pb";
9
9
  import { SkillState } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/status_pb";
10
- import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
11
10
  import { useSkill } from "./useSkill";
12
11
  import { SkillFileBrowser } from "./SkillFileBrowser";
13
12
  import { ErrorMessage } from "../error/ErrorMessage";
14
- import { VisibilityToggle } from "../library/VisibilityToggle";
15
- import { PermissionGate } from "../iam-policy/PermissionGate";
13
+ import { ResourceVisibilityControl } from "../library/ResourceVisibilityControl";
16
14
  import { MARKDOWN_COMPONENTS, REMARK_PLUGINS, stripFrontmatter } from "../internal/markdown-components";
17
15
  import { ResourceDetailShell } from "../resource-detail/ResourceDetailShell";
18
16
  import { Section } from "../resource-detail/Section";
@@ -46,15 +44,6 @@ export interface SkillDetailViewProps {
46
44
  * Not called on error or not-found states.
47
45
  */
48
46
  readonly onResourceLoad?: (meta: { name: string; id: string }) => void;
49
- /**
50
- * Called when the user toggles visibility via the inline control.
51
- * When provided, the header renders an interactive
52
- * {@link VisibilityToggle} instead of a read-only badge.
53
- * When omitted, visibility is displayed as a static "Public" pill.
54
- */
55
- readonly onVisibilityChange?: (v: ApiResourceVisibility) => void;
56
- /** `true` while a visibility update RPC is in flight. */
57
- readonly isVisibilityPending?: boolean;
58
47
  /**
59
48
  * Primary action rendered as a visible button in the header area.
60
49
  */
@@ -153,8 +142,6 @@ export function SkillDetailView({
153
142
  slug,
154
143
  version,
155
144
  onResourceLoad,
156
- onVisibilityChange,
157
- isVisibilityPending,
158
145
  primaryAction,
159
146
  actions,
160
147
  additionalTabs,
@@ -243,27 +230,14 @@ export function SkillDetailView({
243
230
  statusLabel: status ? skillStateLabel(status.state) : undefined,
244
231
  };
245
232
 
246
- const visibilityBadge =
247
- meta?.visibility === ApiResourceVisibility.visibility_public ? (
248
- <span className="shrink-0 rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground">
249
- Public
250
- </span>
251
- ) : undefined;
252
-
253
- const visibilityControl =
254
- onVisibilityChange && meta ? (
255
- <PermissionGate
256
- resource={{ kind: "skill", id: meta.id }}
257
- relation="can_edit"
258
- fallback={visibilityBadge}
259
- >
260
- <VisibilityToggle
261
- visibility={meta.visibility}
262
- onVisibilityChange={onVisibilityChange}
263
- isPending={isVisibilityPending}
264
- />
265
- </PermissionGate>
266
- ) : visibilityBadge;
233
+ const visibilityControl = meta ? (
234
+ <ResourceVisibilityControl
235
+ kind="skill"
236
+ resourceId={meta.id}
237
+ visibility={meta.visibility}
238
+ onChanged={refetch}
239
+ />
240
+ ) : undefined;
267
241
 
268
242
  let tabContent: React.ReactNode;
269
243
  if (activeAdditionalTab) {
@@ -5,7 +5,6 @@ import { cn } from "@stigmer/theme";
5
5
  import { timestampDate } from "@bufbuild/protobuf/wkt";
6
6
  import type { Workflow } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
7
7
  import type { WorkflowInstance } from "@stigmer/protos/ai/stigmer/agentic/workflowinstance/v1/api_pb";
8
- import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
9
8
  import { ValidationState } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/serverless/validation_pb";
10
9
  import type { WorkflowInput } from "@stigmer/sdk";
11
10
  import { useWorkflow } from "./useWorkflow";
@@ -23,9 +22,8 @@ import { WorkflowInstanceList } from "./instance/WorkflowInstanceList";
23
22
  import { WorkflowVersionsTab } from "./WorkflowVersionsTab";
24
23
  import { useWorkflowVersions } from "./useWorkflowVersions";
25
24
  import { ErrorMessage } from "../error/ErrorMessage";
26
- import { VisibilityToggle } from "../library/VisibilityToggle";
25
+ import { ResourceVisibilityControl } from "../library/ResourceVisibilityControl";
27
26
  import { formatDurationSec } from "./format-utils";
28
- import { PermissionGate } from "../iam-policy/PermissionGate";
29
27
  import { ResourceDetailShell } from "../resource-detail/ResourceDetailShell";
30
28
  import { Section } from "../resource-detail/Section";
31
29
  import { useDetailTabs } from "../resource-detail/useDetailTabs";
@@ -53,14 +51,6 @@ export interface WorkflowDetailViewProps {
53
51
  * Provides the resource display name for breadcrumbs, document titles, etc.
54
52
  */
55
53
  readonly onResourceLoad?: (meta: { name: string; id: string }) => void;
56
- /**
57
- * Called when the user toggles visibility via the inline control.
58
- * When provided, the header renders an interactive
59
- * {@link VisibilityToggle} instead of a read-only badge.
60
- */
61
- readonly onVisibilityChange?: (v: ApiResourceVisibility) => void;
62
- /** `true` while a visibility update RPC is in flight. */
63
- readonly isVisibilityPending?: boolean;
64
54
  /**
65
55
  * Primary action rendered as a visible button in the header area.
66
56
  */
@@ -158,8 +148,6 @@ export function WorkflowDetailView({
158
148
  org,
159
149
  slug,
160
150
  onResourceLoad,
161
- onVisibilityChange,
162
- isVisibilityPending,
163
151
  primaryAction,
164
152
  actions,
165
153
  additionalTabs,
@@ -269,27 +257,14 @@ export function WorkflowDetailView({
269
257
  <ValidationIndicator state={validationState} />
270
258
  ) : undefined;
271
259
 
272
- const visibilityBadge =
273
- meta?.visibility === ApiResourceVisibility.visibility_public ? (
274
- <span className="shrink-0 rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground">
275
- Public
276
- </span>
277
- ) : undefined;
278
-
279
- const visibilityControl =
280
- onVisibilityChange && meta ? (
281
- <PermissionGate
282
- resource={{ kind: "workflow", id: meta.id }}
283
- relation="can_edit"
284
- fallback={visibilityBadge}
285
- >
286
- <VisibilityToggle
287
- visibility={meta.visibility}
288
- onVisibilityChange={onVisibilityChange}
289
- isPending={isVisibilityPending}
290
- />
291
- </PermissionGate>
292
- ) : visibilityBadge;
260
+ const visibilityControl = meta ? (
261
+ <ResourceVisibilityControl
262
+ kind="workflow"
263
+ resourceId={meta.id}
264
+ visibility={meta.visibility}
265
+ onChanged={refetch}
266
+ />
267
+ ) : undefined;
293
268
 
294
269
  let tabContent: React.ReactNode;
295
270
  if (activeAdditionalTab) {
@@ -1,6 +1,5 @@
1
1
  import type { Workflow } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
2
2
  import type { WorkflowInstance } from "@stigmer/protos/ai/stigmer/agentic/workflowinstance/v1/api_pb";
3
- import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
4
3
  import type { AdditionalTab, DetailAction } from "../resource-detail/types";
5
4
  /** Props for {@link WorkflowDetailView}. */
6
5
  export interface WorkflowDetailViewProps {
@@ -16,14 +15,6 @@ export interface WorkflowDetailViewProps {
16
15
  name: string;
17
16
  id: string;
18
17
  }) => void;
19
- /**
20
- * Called when the user toggles visibility via the inline control.
21
- * When provided, the header renders an interactive
22
- * {@link VisibilityToggle} instead of a read-only badge.
23
- */
24
- readonly onVisibilityChange?: (v: ApiResourceVisibility) => void;
25
- /** `true` while a visibility update RPC is in flight. */
26
- readonly isVisibilityPending?: boolean;
27
18
  /**
28
19
  * Primary action rendered as a visible button in the header area.
29
20
  */
@@ -116,5 +107,5 @@ export interface WorkflowDetailViewProps {
116
107
  * <WorkflowDetailView org="acme" slug="onboard-user" />
117
108
  * ```
118
109
  */
119
- export declare function WorkflowDetailView({ org, slug, onResourceLoad, onVisibilityChange, isVisibilityPending, primaryAction, actions, additionalTabs, activeTab, onTabChange, defaultTab, onExecutionClick, onCreateInstanceClick, onInstanceClick, onInstanceRunClick, onInstanceDeleteClick, instancesRefreshKey, editable, onResourceUpdated, onOpenInEditor, onViewLatestRun, className, }: WorkflowDetailViewProps): import("react/jsx-runtime").JSX.Element;
110
+ export declare function WorkflowDetailView({ org, slug, onResourceLoad, primaryAction, actions, additionalTabs, activeTab, onTabChange, defaultTab, onExecutionClick, onCreateInstanceClick, onInstanceClick, onInstanceRunClick, onInstanceDeleteClick, instancesRefreshKey, editable, onResourceUpdated, onOpenInEditor, onViewLatestRun, className, }: WorkflowDetailViewProps): import("react/jsx-runtime").JSX.Element;
120
111
  //# sourceMappingURL=WorkflowDetailView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowDetailView.d.ts","sourceRoot":"","sources":["../../src/workflow/WorkflowDetailView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkflowDetailView.d.ts","sourceRoot":"","sources":["../../src/workflow/WorkflowDetailView.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uDAAuD,CAAC;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+DAA+D,CAAC;AA0BtG,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAsB,MAAM,0BAA0B,CAAC;AAUhG,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,gDAAgD;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACvE;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC;IACtC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACnD,gCAAgC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,qCAAqC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5C;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAChE;;OAEG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACnE;;OAEG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACtE;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC1D;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,qDAAqD;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,GAAG,EACH,IAAI,EACJ,cAAc,EACd,aAAa,EACb,OAAO,EACP,cAAc,EACd,SAAS,EACT,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,QAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,SAAS,GACV,EAAE,uBAAuB,2CA8JzB"}
@@ -3,7 +3,6 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
3
3
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { timestampDate } from "@bufbuild/protobuf/wkt";
6
- import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
7
6
  import { ValidationState } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/serverless/validation_pb";
8
7
  import { useWorkflow } from "./useWorkflow";
9
8
  import { useUpdateWorkflow } from "./useUpdateWorkflow";
@@ -20,9 +19,8 @@ import { WorkflowInstanceList } from "./instance/WorkflowInstanceList";
20
19
  import { WorkflowVersionsTab } from "./WorkflowVersionsTab";
21
20
  import { useWorkflowVersions } from "./useWorkflowVersions";
22
21
  import { ErrorMessage } from "../error/ErrorMessage";
23
- import { VisibilityToggle } from "../library/VisibilityToggle";
22
+ import { ResourceVisibilityControl } from "../library/ResourceVisibilityControl";
24
23
  import { formatDurationSec } from "./format-utils";
25
- import { PermissionGate } from "../iam-policy/PermissionGate";
26
24
  import { ResourceDetailShell } from "../resource-detail/ResourceDetailShell";
27
25
  import { Section } from "../resource-detail/Section";
28
26
  import { useDetailTabs } from "../resource-detail/useDetailTabs";
@@ -52,7 +50,7 @@ const DESCRIPTION_COLLAPSED_HEIGHT = "8rem";
52
50
  * <WorkflowDetailView org="acme" slug="onboard-user" />
53
51
  * ```
54
52
  */
55
- export function WorkflowDetailView({ org, slug, onResourceLoad, onVisibilityChange, isVisibilityPending, primaryAction, actions, additionalTabs, activeTab, onTabChange, defaultTab, onExecutionClick, onCreateInstanceClick, onInstanceClick, onInstanceRunClick, onInstanceDeleteClick, instancesRefreshKey, editable = false, onResourceUpdated, onOpenInEditor, onViewLatestRun, className, }) {
53
+ export function WorkflowDetailView({ org, slug, onResourceLoad, primaryAction, actions, additionalTabs, activeTab, onTabChange, defaultTab, onExecutionClick, onCreateInstanceClick, onInstanceClick, onInstanceRunClick, onInstanceDeleteClick, instancesRefreshKey, editable = false, onResourceUpdated, onOpenInEditor, onViewLatestRun, className, }) {
56
54
  const { workflow, isLoading, error, refetch } = useWorkflow(org, slug);
57
55
  const { update, isUpdating } = useUpdateWorkflow();
58
56
  const { versions } = useWorkflowVersions(isLoading ? null : org, isLoading ? null : slug);
@@ -119,8 +117,7 @@ export function WorkflowDetailView({ org, slug, onResourceLoad, onVisibilityChan
119
117
  };
120
118
  const validationState = workflow.status?.serverlessWorkflowValidation?.state;
121
119
  const headerMetaExtra = validationState ? (_jsx(ValidationIndicator, { state: validationState })) : undefined;
122
- const visibilityBadge = meta?.visibility === ApiResourceVisibility.visibility_public ? (_jsx("span", { className: "shrink-0 rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground", children: "Public" })) : undefined;
123
- const visibilityControl = onVisibilityChange && meta ? (_jsx(PermissionGate, { resource: { kind: "workflow", id: meta.id }, relation: "can_edit", fallback: visibilityBadge, children: _jsx(VisibilityToggle, { visibility: meta.visibility, onVisibilityChange: onVisibilityChange, isPending: isVisibilityPending }) })) : visibilityBadge;
120
+ const visibilityControl = meta ? (_jsx(ResourceVisibilityControl, { kind: "workflow", resourceId: meta.id, visibility: meta.visibility, onChanged: refetch })) : undefined;
124
121
  let tabContent;
125
122
  if (activeAdditionalTab) {
126
123
  tabContent = activeAdditionalTab.content;