@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.
- package/agent/AgentDetailView.js +2 -2
- package/agent/AgentDetailView.js.map +1 -1
- package/agent/index.d.ts +0 -1
- package/agent/index.d.ts.map +1 -1
- package/agent/index.js +0 -1
- package/agent/index.js.map +1 -1
- package/agent/useUpdateAgent.d.ts +3 -3
- package/agent/useUpdateAgent.js +3 -3
- package/agent-instance/AgentInstanceDetailPanel.d.ts.map +1 -1
- package/agent-instance/AgentInstanceDetailPanel.js +5 -7
- package/agent-instance/AgentInstanceDetailPanel.js.map +1 -1
- package/agent-instance/useUpdateAgentInstance.d.ts +1 -1
- package/agent-instance/useUpdateAgentInstance.js +1 -1
- package/channel/AgentChannelsPanel.d.ts.map +1 -1
- package/channel/AgentChannelsPanel.js +10 -5
- package/channel/AgentChannelsPanel.js.map +1 -1
- package/channel/ChannelRunConfigDialog.d.ts +51 -0
- package/channel/ChannelRunConfigDialog.d.ts.map +1 -0
- package/channel/ChannelRunConfigDialog.js +121 -0
- package/channel/ChannelRunConfigDialog.js.map +1 -0
- package/channel/index.d.ts +2 -0
- package/channel/index.d.ts.map +1 -1
- package/channel/index.js +1 -0
- package/channel/index.js.map +1 -1
- package/channel/useSaveAgentChannel.d.ts.map +1 -1
- package/channel/useSaveAgentChannel.js +6 -3
- package/channel/useSaveAgentChannel.js.map +1 -1
- package/channel-app/ChannelAppDetailPanel.js +9 -9
- package/channel-app/ChannelAppDetailPanel.js.map +1 -1
- package/composer/ComposerToolbar.d.ts +6 -1
- package/composer/ComposerToolbar.d.ts.map +1 -1
- package/composer/ComposerToolbar.js +2 -2
- package/composer/ComposerToolbar.js.map +1 -1
- package/composer/SessionComposer.d.ts +9 -0
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +22 -3
- package/composer/SessionComposer.js.map +1 -1
- package/cursor-accounts/CursorAccountsConsole.d.ts.map +1 -1
- package/cursor-accounts/CursorAccountsConsole.js +12 -3
- package/cursor-accounts/CursorAccountsConsole.js.map +1 -1
- package/cursor-accounts/cursor-account-coverage.d.ts +30 -1
- package/cursor-accounts/cursor-account-coverage.d.ts.map +1 -1
- package/cursor-accounts/cursor-account-coverage.js +21 -0
- package/cursor-accounts/cursor-account-coverage.js.map +1 -1
- package/execution/useCreateAgentExecution.d.ts +15 -0
- package/execution/useCreateAgentExecution.d.ts.map +1 -1
- package/execution/useCreateAgentExecution.js +5 -0
- package/execution/useCreateAgentExecution.js.map +1 -1
- package/identity-account/AccountPreferencesPanel.d.ts +2 -1
- package/identity-account/AccountPreferencesPanel.d.ts.map +1 -1
- package/identity-account/AccountPreferencesPanel.js +33 -18
- package/identity-account/AccountPreferencesPanel.js.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.js +16 -15
- package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
- package/index.d.ts +4 -4
- package/index.d.ts.map +1 -1
- package/index.js +3 -3
- package/index.js.map +1 -1
- package/mcp-server/McpServerDetailView.js +2 -2
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/index.d.ts +0 -1
- package/mcp-server/index.d.ts.map +1 -1
- package/mcp-server/index.js +0 -1
- package/mcp-server/index.js.map +1 -1
- package/mcp-server/internal/definitionDrift.d.ts +14 -12
- package/mcp-server/internal/definitionDrift.d.ts.map +1 -1
- package/mcp-server/internal/definitionDrift.js +22 -19
- package/mcp-server/internal/definitionDrift.js.map +1 -1
- package/mcp-server/useUpdateMcpServer.d.ts +3 -3
- package/mcp-server/useUpdateMcpServer.js +3 -3
- package/models/ModelSelector.d.ts +33 -1
- package/models/ModelSelector.d.ts.map +1 -1
- package/models/ModelSelector.js +37 -4
- package/models/ModelSelector.js.map +1 -1
- package/models/index.d.ts +2 -0
- package/models/index.d.ts.map +1 -1
- package/models/index.js +1 -0
- package/models/index.js.map +1 -1
- package/models/registry.d.ts +16 -0
- package/models/registry.d.ts.map +1 -1
- package/models/registry.js +13 -0
- package/models/registry.js.map +1 -1
- package/models/thinking-mode.d.ts +27 -0
- package/models/thinking-mode.d.ts.map +1 -0
- package/models/thinking-mode.js +32 -0
- package/models/thinking-mode.js.map +1 -0
- package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.js +21 -20
- package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
- package/package.json +4 -4
- package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientDetailPanel.js +12 -13
- package/platform-client/PlatformClientDetailPanel.js.map +1 -1
- package/schedule/ScheduleDetailView.d.ts.map +1 -1
- package/schedule/ScheduleDetailView.js +21 -10
- package/schedule/ScheduleDetailView.js.map +1 -1
- package/schedule/ScheduleForm.d.ts.map +1 -1
- package/schedule/ScheduleForm.js +13 -3
- package/schedule/ScheduleForm.js.map +1 -1
- package/session/run-config.d.ts +9 -0
- package/session/run-config.d.ts.map +1 -1
- package/session/run-config.js +5 -0
- package/session/run-config.js.map +1 -1
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +6 -0
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/useSessionConversation.d.ts +12 -1
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +15 -24
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +14 -10
- package/session/useSessionPageFlow.js.map +1 -1
- package/session/useUpdateSession.d.ts +18 -24
- package/session/useUpdateSession.d.ts.map +1 -1
- package/session/useUpdateSession.js +18 -24
- package/session/useUpdateSession.js.map +1 -1
- package/src/agent/AgentDetailView.tsx +2 -2
- package/src/agent/index.ts +0 -2
- package/src/agent/useUpdateAgent.ts +3 -3
- package/src/agent-instance/AgentInstanceDetailPanel.tsx +5 -7
- package/src/agent-instance/__tests__/AgentInstanceDetailPanel.test.tsx +75 -0
- package/src/agent-instance/useUpdateAgentInstance.ts +1 -1
- package/src/channel/AgentChannelsPanel.tsx +26 -1
- package/src/channel/ChannelRunConfigDialog.tsx +351 -0
- package/src/channel/__tests__/ChannelRunConfigDialog.test.tsx +210 -0
- package/src/channel/index.ts +2 -0
- package/src/channel/useSaveAgentChannel.ts +6 -3
- package/src/channel-app/ChannelAppDetailPanel.tsx +9 -9
- package/src/channel-app/__tests__/channelAppWhatsApp.test.tsx +2 -0
- package/src/channel-app/__tests__/channelAppWipeSafety.test.tsx +87 -0
- package/src/composer/ComposerToolbar.tsx +9 -0
- package/src/composer/SessionComposer.tsx +36 -2
- package/src/composer/__tests__/SessionComposer-thinkingMode.test.tsx +176 -0
- package/src/cursor-accounts/CursorAccountsConsole.tsx +40 -5
- package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +32 -0
- package/src/cursor-accounts/__tests__/cursor-account-coverage.test.ts +58 -1
- package/src/cursor-accounts/cursor-account-coverage.ts +55 -0
- package/src/execution/useCreateAgentExecution.ts +19 -0
- package/src/identity-account/AccountPreferencesPanel.tsx +154 -68
- package/src/identity-account/__tests__/AccountPreferencesPanel.test.tsx +36 -2
- package/src/identity-provider/IdentityProviderDetailPanel.tsx +18 -15
- package/src/identity-provider/__tests__/IdentityProviderDetailPanel.test.tsx +80 -0
- package/src/index.ts +2 -2
- package/src/mcp-server/McpServerDetailView.tsx +2 -2
- package/src/mcp-server/index.ts +0 -2
- package/src/mcp-server/internal/definitionDrift.ts +22 -20
- package/src/mcp-server/useUpdateMcpServer.ts +3 -3
- package/src/models/ModelSelector.tsx +94 -1
- package/src/models/index.ts +2 -0
- package/src/models/registry.ts +29 -0
- package/src/models/thinking-mode.ts +48 -0
- package/src/oauth-app/OAuthAppDetailPanel.tsx +23 -21
- package/src/oauth-app/__tests__/OAuthAppDetailPanel.test.tsx +94 -0
- package/src/platform-client/PlatformClientDetailPanel.tsx +14 -13
- package/src/platform-client/__tests__/PlatformClientDetailPanel.test.tsx +82 -0
- package/src/schedule/ScheduleDetailView.tsx +29 -4
- package/src/schedule/ScheduleForm.tsx +14 -1
- package/src/session/run-config.ts +16 -0
- package/src/session/useNewSessionFlow.ts +6 -0
- package/src/session/useSessionConversation.ts +32 -40
- package/src/session/useSessionPageFlow.ts +14 -11
- package/src/session/useUpdateSession.ts +18 -24
- package/src/workflow/ApprovalFormBuilder.tsx +20 -5
- package/src/workflow/WorkflowDetailView.tsx +2 -2
- package/src/workflow/__tests__/WorkflowInstanceDetailPanel.test.tsx +83 -0
- package/src/workflow/index.ts +0 -2
- package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +6 -7
- package/src/workflow/useUpdateWorkflow.ts +3 -3
- package/styles.css +1 -1
- package/workflow/ApprovalFormBuilder.d.ts.map +1 -1
- package/workflow/ApprovalFormBuilder.js +10 -8
- package/workflow/ApprovalFormBuilder.js.map +1 -1
- package/workflow/WorkflowDetailView.js +2 -2
- package/workflow/WorkflowDetailView.js.map +1 -1
- package/workflow/index.d.ts +0 -1
- package/workflow/index.d.ts.map +1 -1
- package/workflow/index.js +0 -1
- package/workflow/index.js.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js +6 -7
- package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
- package/workflow/useUpdateWorkflow.d.ts +3 -3
- package/workflow/useUpdateWorkflow.js +3 -3
- package/agent/internal/agentToInput.d.ts +0 -15
- package/agent/internal/agentToInput.d.ts.map +0 -1
- package/agent/internal/agentToInput.js +0 -84
- package/agent/internal/agentToInput.js.map +0 -1
- package/mcp-server/internal/mcpServerToInput.d.ts +0 -12
- package/mcp-server/internal/mcpServerToInput.d.ts.map +0 -1
- package/mcp-server/internal/mcpServerToInput.js +0 -84
- package/mcp-server/internal/mcpServerToInput.js.map +0 -1
- package/session/session-spec-converters.d.ts +0 -24
- package/session/session-spec-converters.d.ts.map +0 -1
- package/session/session-spec-converters.js +0 -72
- package/session/session-spec-converters.js.map +0 -1
- package/src/agent/internal/__tests__/agentToInput.test.ts +0 -145
- package/src/agent/internal/agentToInput.ts +0 -102
- package/src/mcp-server/__tests__/mcpServerToInput.test.ts +0 -201
- package/src/mcp-server/internal/mcpServerToInput.ts +0 -98
- package/src/session/__tests__/session-spec-converters.test.ts +0 -183
- package/src/session/session-spec-converters.ts +0 -86
- package/src/workflow/internal/workflowToInput.ts +0 -96
- package/workflow/internal/workflowToInput.d.ts +0 -12
- package/workflow/internal/workflowToInput.d.ts.map +0 -1
- package/workflow/internal/workflowToInput.js +0 -73
- 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
|
+
});
|
package/src/workflow/index.ts
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
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 `
|
|
27
|
-
* the input from a fetched workflow,
|
|
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();
|