@stigmer/react 3.12.5 → 3.12.6

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 (208) hide show
  1. package/agent/AgentDetailView.js +2 -2
  2. package/agent/AgentDetailView.js.map +1 -1
  3. package/agent/index.d.ts +0 -1
  4. package/agent/index.d.ts.map +1 -1
  5. package/agent/index.js +0 -1
  6. package/agent/index.js.map +1 -1
  7. package/agent/useUpdateAgent.d.ts +3 -3
  8. package/agent/useUpdateAgent.js +3 -3
  9. package/agent-instance/AgentInstanceDetailPanel.d.ts.map +1 -1
  10. package/agent-instance/AgentInstanceDetailPanel.js +5 -7
  11. package/agent-instance/AgentInstanceDetailPanel.js.map +1 -1
  12. package/agent-instance/useUpdateAgentInstance.d.ts +1 -1
  13. package/agent-instance/useUpdateAgentInstance.js +1 -1
  14. package/channel/AgentChannelsPanel.d.ts.map +1 -1
  15. package/channel/AgentChannelsPanel.js +10 -5
  16. package/channel/AgentChannelsPanel.js.map +1 -1
  17. package/channel/ChannelRunConfigDialog.d.ts +51 -0
  18. package/channel/ChannelRunConfigDialog.d.ts.map +1 -0
  19. package/channel/ChannelRunConfigDialog.js +121 -0
  20. package/channel/ChannelRunConfigDialog.js.map +1 -0
  21. package/channel/index.d.ts +2 -0
  22. package/channel/index.d.ts.map +1 -1
  23. package/channel/index.js +1 -0
  24. package/channel/index.js.map +1 -1
  25. package/channel/useSaveAgentChannel.d.ts.map +1 -1
  26. package/channel/useSaveAgentChannel.js +6 -3
  27. package/channel/useSaveAgentChannel.js.map +1 -1
  28. package/channel-app/ChannelAppDetailPanel.js +9 -9
  29. package/channel-app/ChannelAppDetailPanel.js.map +1 -1
  30. package/composer/ComposerToolbar.d.ts +6 -1
  31. package/composer/ComposerToolbar.d.ts.map +1 -1
  32. package/composer/ComposerToolbar.js +2 -2
  33. package/composer/ComposerToolbar.js.map +1 -1
  34. package/composer/SessionComposer.d.ts +9 -0
  35. package/composer/SessionComposer.d.ts.map +1 -1
  36. package/composer/SessionComposer.js +22 -3
  37. package/composer/SessionComposer.js.map +1 -1
  38. package/cursor-accounts/CursorAccountsConsole.d.ts.map +1 -1
  39. package/cursor-accounts/CursorAccountsConsole.js +12 -3
  40. package/cursor-accounts/CursorAccountsConsole.js.map +1 -1
  41. package/cursor-accounts/cursor-account-coverage.d.ts +30 -1
  42. package/cursor-accounts/cursor-account-coverage.d.ts.map +1 -1
  43. package/cursor-accounts/cursor-account-coverage.js +21 -0
  44. package/cursor-accounts/cursor-account-coverage.js.map +1 -1
  45. package/execution/useCreateAgentExecution.d.ts +15 -0
  46. package/execution/useCreateAgentExecution.d.ts.map +1 -1
  47. package/execution/useCreateAgentExecution.js +5 -0
  48. package/execution/useCreateAgentExecution.js.map +1 -1
  49. package/identity-account/AccountPreferencesPanel.d.ts +2 -1
  50. package/identity-account/AccountPreferencesPanel.d.ts.map +1 -1
  51. package/identity-account/AccountPreferencesPanel.js +33 -18
  52. package/identity-account/AccountPreferencesPanel.js.map +1 -1
  53. package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
  54. package/identity-provider/IdentityProviderDetailPanel.js +16 -15
  55. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  56. package/index.d.ts +4 -4
  57. package/index.d.ts.map +1 -1
  58. package/index.js +3 -3
  59. package/index.js.map +1 -1
  60. package/mcp-server/McpServerDetailView.js +2 -2
  61. package/mcp-server/McpServerDetailView.js.map +1 -1
  62. package/mcp-server/index.d.ts +0 -1
  63. package/mcp-server/index.d.ts.map +1 -1
  64. package/mcp-server/index.js +0 -1
  65. package/mcp-server/index.js.map +1 -1
  66. package/mcp-server/internal/definitionDrift.d.ts +14 -12
  67. package/mcp-server/internal/definitionDrift.d.ts.map +1 -1
  68. package/mcp-server/internal/definitionDrift.js +22 -19
  69. package/mcp-server/internal/definitionDrift.js.map +1 -1
  70. package/mcp-server/useUpdateMcpServer.d.ts +3 -3
  71. package/mcp-server/useUpdateMcpServer.js +3 -3
  72. package/models/ModelSelector.d.ts +33 -1
  73. package/models/ModelSelector.d.ts.map +1 -1
  74. package/models/ModelSelector.js +37 -4
  75. package/models/ModelSelector.js.map +1 -1
  76. package/models/index.d.ts +2 -0
  77. package/models/index.d.ts.map +1 -1
  78. package/models/index.js +1 -0
  79. package/models/index.js.map +1 -1
  80. package/models/registry.d.ts +16 -0
  81. package/models/registry.d.ts.map +1 -1
  82. package/models/registry.js +13 -0
  83. package/models/registry.js.map +1 -1
  84. package/models/thinking-mode.d.ts +27 -0
  85. package/models/thinking-mode.d.ts.map +1 -0
  86. package/models/thinking-mode.js +32 -0
  87. package/models/thinking-mode.js.map +1 -0
  88. package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
  89. package/oauth-app/OAuthAppDetailPanel.js +21 -20
  90. package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
  91. package/package.json +4 -4
  92. package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
  93. package/platform-client/PlatformClientDetailPanel.js +12 -13
  94. package/platform-client/PlatformClientDetailPanel.js.map +1 -1
  95. package/schedule/ScheduleDetailView.d.ts.map +1 -1
  96. package/schedule/ScheduleDetailView.js +21 -10
  97. package/schedule/ScheduleDetailView.js.map +1 -1
  98. package/schedule/ScheduleForm.d.ts.map +1 -1
  99. package/schedule/ScheduleForm.js +13 -3
  100. package/schedule/ScheduleForm.js.map +1 -1
  101. package/session/run-config.d.ts +9 -0
  102. package/session/run-config.d.ts.map +1 -1
  103. package/session/run-config.js +5 -0
  104. package/session/run-config.js.map +1 -1
  105. package/session/useNewSessionFlow.d.ts.map +1 -1
  106. package/session/useNewSessionFlow.js +6 -0
  107. package/session/useNewSessionFlow.js.map +1 -1
  108. package/session/useSessionConversation.d.ts +12 -1
  109. package/session/useSessionConversation.d.ts.map +1 -1
  110. package/session/useSessionConversation.js +15 -24
  111. package/session/useSessionConversation.js.map +1 -1
  112. package/session/useSessionPageFlow.d.ts.map +1 -1
  113. package/session/useSessionPageFlow.js +14 -10
  114. package/session/useSessionPageFlow.js.map +1 -1
  115. package/session/useUpdateSession.d.ts +18 -24
  116. package/session/useUpdateSession.d.ts.map +1 -1
  117. package/session/useUpdateSession.js +18 -24
  118. package/session/useUpdateSession.js.map +1 -1
  119. package/src/agent/AgentDetailView.tsx +2 -2
  120. package/src/agent/index.ts +0 -2
  121. package/src/agent/useUpdateAgent.ts +3 -3
  122. package/src/agent-instance/AgentInstanceDetailPanel.tsx +5 -7
  123. package/src/agent-instance/__tests__/AgentInstanceDetailPanel.test.tsx +75 -0
  124. package/src/agent-instance/useUpdateAgentInstance.ts +1 -1
  125. package/src/channel/AgentChannelsPanel.tsx +26 -1
  126. package/src/channel/ChannelRunConfigDialog.tsx +351 -0
  127. package/src/channel/__tests__/ChannelRunConfigDialog.test.tsx +210 -0
  128. package/src/channel/index.ts +2 -0
  129. package/src/channel/useSaveAgentChannel.ts +6 -3
  130. package/src/channel-app/ChannelAppDetailPanel.tsx +9 -9
  131. package/src/channel-app/__tests__/channelAppWhatsApp.test.tsx +2 -0
  132. package/src/channel-app/__tests__/channelAppWipeSafety.test.tsx +87 -0
  133. package/src/composer/ComposerToolbar.tsx +9 -0
  134. package/src/composer/SessionComposer.tsx +36 -2
  135. package/src/composer/__tests__/SessionComposer-thinkingMode.test.tsx +176 -0
  136. package/src/cursor-accounts/CursorAccountsConsole.tsx +40 -5
  137. package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +32 -0
  138. package/src/cursor-accounts/__tests__/cursor-account-coverage.test.ts +58 -1
  139. package/src/cursor-accounts/cursor-account-coverage.ts +55 -0
  140. package/src/execution/useCreateAgentExecution.ts +19 -0
  141. package/src/identity-account/AccountPreferencesPanel.tsx +154 -68
  142. package/src/identity-account/__tests__/AccountPreferencesPanel.test.tsx +36 -2
  143. package/src/identity-provider/IdentityProviderDetailPanel.tsx +18 -15
  144. package/src/identity-provider/__tests__/IdentityProviderDetailPanel.test.tsx +80 -0
  145. package/src/index.ts +2 -2
  146. package/src/mcp-server/McpServerDetailView.tsx +2 -2
  147. package/src/mcp-server/index.ts +0 -2
  148. package/src/mcp-server/internal/definitionDrift.ts +22 -20
  149. package/src/mcp-server/useUpdateMcpServer.ts +3 -3
  150. package/src/models/ModelSelector.tsx +94 -1
  151. package/src/models/index.ts +2 -0
  152. package/src/models/registry.ts +29 -0
  153. package/src/models/thinking-mode.ts +48 -0
  154. package/src/oauth-app/OAuthAppDetailPanel.tsx +23 -21
  155. package/src/oauth-app/__tests__/OAuthAppDetailPanel.test.tsx +94 -0
  156. package/src/platform-client/PlatformClientDetailPanel.tsx +14 -13
  157. package/src/platform-client/__tests__/PlatformClientDetailPanel.test.tsx +82 -0
  158. package/src/schedule/ScheduleDetailView.tsx +29 -4
  159. package/src/schedule/ScheduleForm.tsx +14 -1
  160. package/src/session/run-config.ts +16 -0
  161. package/src/session/useNewSessionFlow.ts +6 -0
  162. package/src/session/useSessionConversation.ts +32 -40
  163. package/src/session/useSessionPageFlow.ts +14 -11
  164. package/src/session/useUpdateSession.ts +18 -24
  165. package/src/workflow/ApprovalFormBuilder.tsx +20 -5
  166. package/src/workflow/WorkflowDetailView.tsx +2 -2
  167. package/src/workflow/__tests__/WorkflowInstanceDetailPanel.test.tsx +83 -0
  168. package/src/workflow/index.ts +0 -2
  169. package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +6 -7
  170. package/src/workflow/useUpdateWorkflow.ts +3 -3
  171. package/styles.css +1 -1
  172. package/workflow/ApprovalFormBuilder.d.ts.map +1 -1
  173. package/workflow/ApprovalFormBuilder.js +10 -8
  174. package/workflow/ApprovalFormBuilder.js.map +1 -1
  175. package/workflow/WorkflowDetailView.js +2 -2
  176. package/workflow/WorkflowDetailView.js.map +1 -1
  177. package/workflow/index.d.ts +0 -1
  178. package/workflow/index.d.ts.map +1 -1
  179. package/workflow/index.js +0 -1
  180. package/workflow/index.js.map +1 -1
  181. package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
  182. package/workflow/instance/WorkflowInstanceDetailPanel.js +6 -7
  183. package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
  184. package/workflow/useUpdateWorkflow.d.ts +3 -3
  185. package/workflow/useUpdateWorkflow.js +3 -3
  186. package/agent/internal/agentToInput.d.ts +0 -15
  187. package/agent/internal/agentToInput.d.ts.map +0 -1
  188. package/agent/internal/agentToInput.js +0 -84
  189. package/agent/internal/agentToInput.js.map +0 -1
  190. package/mcp-server/internal/mcpServerToInput.d.ts +0 -12
  191. package/mcp-server/internal/mcpServerToInput.d.ts.map +0 -1
  192. package/mcp-server/internal/mcpServerToInput.js +0 -84
  193. package/mcp-server/internal/mcpServerToInput.js.map +0 -1
  194. package/session/session-spec-converters.d.ts +0 -24
  195. package/session/session-spec-converters.d.ts.map +0 -1
  196. package/session/session-spec-converters.js +0 -72
  197. package/session/session-spec-converters.js.map +0 -1
  198. package/src/agent/internal/__tests__/agentToInput.test.ts +0 -145
  199. package/src/agent/internal/agentToInput.ts +0 -102
  200. package/src/mcp-server/__tests__/mcpServerToInput.test.ts +0 -201
  201. package/src/mcp-server/internal/mcpServerToInput.ts +0 -98
  202. package/src/session/__tests__/session-spec-converters.test.ts +0 -183
  203. package/src/session/session-spec-converters.ts +0 -86
  204. package/src/workflow/internal/workflowToInput.ts +0 -96
  205. package/workflow/internal/workflowToInput.d.ts +0 -12
  206. package/workflow/internal/workflowToInput.d.ts.map +0 -1
  207. package/workflow/internal/workflowToInput.js +0 -73
  208. package/workflow/internal/workflowToInput.js.map +0 -1
@@ -0,0 +1,83 @@
1
+ import { describe, it, expect, vi, afterEach } from "vitest";
2
+ import { cleanup, fireEvent, render, screen, waitFor } from "@testing-library/react";
3
+ import { create } from "@bufbuild/protobuf";
4
+ import {
5
+ WorkflowInstanceSchema,
6
+ type WorkflowInstance,
7
+ } from "@stigmer/protos/ai/stigmer/agentic/workflowinstance/v1/api_pb";
8
+ import { WorkflowExecutionVisibility } from "@stigmer/protos/ai/stigmer/agentic/workflowinstance/v1/spec_pb";
9
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
10
+ import type { WorkflowInstanceInput } from "@stigmer/sdk";
11
+ import { StigmerContext } from "../../context";
12
+ import { WorkflowInstanceDetailPanel } from "../instance/WorkflowInstanceDetailPanel";
13
+
14
+ /**
15
+ * Regression suite for the full-spec-replace wipe bug: before the
16
+ * generated-mapper migration, saving environment edits in this panel
17
+ * silently reset `execution_visibility` (run observability, which has its
18
+ * own dedicated updateExecutionVisibility RPC and control). The panel
19
+ * must spread `toWorkflowInstanceUpdateInput` and override only the
20
+ * environment refs.
21
+ */
22
+
23
+ const INSTANCE: WorkflowInstance = create(WorkflowInstanceSchema, {
24
+ metadata: {
25
+ id: "wfi-1",
26
+ name: "Nightly Triage",
27
+ slug: "nightly-triage",
28
+ org: "acme",
29
+ },
30
+ spec: {
31
+ workflowId: "wf-1",
32
+ description: "Runs every night.",
33
+ environmentRefs: [
34
+ { org: "acme", slug: "prod", kind: ApiResourceKind.environment },
35
+ ],
36
+ executionVisibility: WorkflowExecutionVisibility.organization,
37
+ },
38
+ });
39
+
40
+ function renderPanel(update: ReturnType<typeof vi.fn>) {
41
+ const client = {
42
+ workflowInstance: { update },
43
+ iamPolicy: {
44
+ checkMyPermission: vi.fn(async () => ({ isAuthorized: true })),
45
+ },
46
+ environment: {
47
+ list: vi.fn(async () => ({ items: [], totalCount: 0 })),
48
+ },
49
+ } as never;
50
+ return render(
51
+ <StigmerContext.Provider value={client}>
52
+ <WorkflowInstanceDetailPanel instance={INSTANCE} org="acme" onClose={() => {}} />
53
+ </StigmerContext.Provider>,
54
+ );
55
+ }
56
+
57
+ afterEach(cleanup);
58
+
59
+ describe("WorkflowInstanceDetailPanel save payload", () => {
60
+ it("round-trips execution_visibility on an environments-only save (the wipe bug)", async () => {
61
+ const update = vi.fn(async (_input: WorkflowInstanceInput) => INSTANCE);
62
+ renderPanel(update);
63
+
64
+ fireEvent.click(await screen.findByRole("button", { name: "Edit" }));
65
+ fireEvent.click(screen.getByRole("button", { name: "Save" }));
66
+
67
+ await waitFor(() => expect(update).toHaveBeenCalledTimes(1));
68
+ const input = update.mock.calls[0]![0];
69
+
70
+ // The wipe-bug guard: run visibility is edited elsewhere and must
71
+ // survive an environment save untouched.
72
+ expect(input.executionVisibility).toBe(
73
+ WorkflowExecutionVisibility.organization,
74
+ );
75
+ expect(input.workflowId).toBe("wf-1");
76
+ expect(input.description).toBe("Runs every night.");
77
+ // The form-owned field.
78
+ expect(input.environmentRefs).toEqual([{ org: "acme", slug: "prod" }]);
79
+ // Addressing fields.
80
+ expect(input.org).toBe("acme");
81
+ expect(input.slug).toBe("nightly-triage");
82
+ });
83
+ });
@@ -481,8 +481,6 @@ export {
481
481
  type UseUpdateWorkflowReturn,
482
482
  } from "./useUpdateWorkflow.js";
483
483
 
484
- export { workflowToInput } from "./internal/workflowToInput.js";
485
-
486
484
  // Starter YAML template for new workflow creation
487
485
  export { STARTER_WORKFLOW_YAML } from "./starter-workflow-yaml.js";
488
486
 
@@ -9,7 +9,7 @@ import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apires
9
9
  import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
10
10
  import { WorkflowExecutionVisibility } from "@stigmer/protos/ai/stigmer/agentic/workflowinstance/v1/spec_pb";
11
11
  import type { ResourceRef } from "@stigmer/sdk";
12
- import { getUserMessage } from "@stigmer/sdk";
12
+ import { getUserMessage, toWorkflowInstanceUpdateInput } from "@stigmer/sdk";
13
13
  import { useUpdateWorkflowInstance } from "./useUpdateWorkflowInstance.js";
14
14
  import { useDeleteWorkflowInstance } from "./useDeleteWorkflowInstance.js";
15
15
  import { RunVisibilityControl } from "./RunVisibilityControl.js";
@@ -104,20 +104,19 @@ export function WorkflowInstanceDetailPanel({
104
104
 
105
105
  const handleSaveEnvs = useCallback(async () => {
106
106
  try {
107
+ // Full-spec-replace safety: spread the complete mapped input so
108
+ // unlisted spec fields (e.g. execution_visibility, which has its
109
+ // own dedicated control above) survive an environment-only save.
107
110
  await update({
108
- name: meta?.name ?? "",
109
- org: meta?.org ?? org,
110
- workflowId: spec?.workflowId ?? "",
111
- description: spec?.description,
111
+ ...toWorkflowInstanceUpdateInput(instance),
112
112
  environmentRefs: editEnvRefs,
113
- visibility: meta?.visibility,
114
113
  });
115
114
  setIsEditingEnvs(false);
116
115
  onUpdated?.();
117
116
  } catch {
118
117
  // error displayed by hook
119
118
  }
120
- }, [update, meta, spec, org, editEnvRefs, onUpdated]);
119
+ }, [update, instance, editEnvRefs, onUpdated]);
121
120
 
122
121
  const handleDelete = useCallback(async () => {
123
122
  setDeleteError(null);
@@ -23,9 +23,9 @@ export interface UseUpdateWorkflowReturn {
23
23
  *
24
24
  * Wraps `stigmer.workflow.update(input)` with loading and error state.
25
25
  * The caller must provide a **complete** `WorkflowInput` -- the backend
26
- * performs full spec replacement. Use `workflowToInput()` to reconstruct
27
- * the input from a fetched workflow, modify the desired field, and pass
28
- * the result here.
26
+ * performs full spec replacement. Use `toWorkflowUpdateInput()` (from
27
+ * `@stigmer/sdk`) to reconstruct the input from a fetched workflow,
28
+ * modify the desired field, and pass the result here.
29
29
  */
30
30
  export function useUpdateWorkflow(): UseUpdateWorkflowReturn {
31
31
  const stigmer = useStigmer();