@stigmer/react 0.0.42 → 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 (91) 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/internal/markdown-components.d.ts +10 -0
  36. package/internal/markdown-components.d.ts.map +1 -1
  37. package/internal/markdown-components.js +13 -0
  38. package/internal/markdown-components.js.map +1 -1
  39. package/mcp-server/ApprovalPolicyGeneratorPanel.d.ts +34 -0
  40. package/mcp-server/ApprovalPolicyGeneratorPanel.d.ts.map +1 -0
  41. package/mcp-server/ApprovalPolicyGeneratorPanel.js +55 -0
  42. package/mcp-server/ApprovalPolicyGeneratorPanel.js.map +1 -0
  43. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  44. package/mcp-server/McpServerDetailView.js +101 -2
  45. package/mcp-server/McpServerDetailView.js.map +1 -1
  46. package/mcp-server/index.d.ts +8 -0
  47. package/mcp-server/index.d.ts.map +1 -1
  48. package/mcp-server/index.js +4 -0
  49. package/mcp-server/index.js.map +1 -1
  50. package/mcp-server/useDiscoverCapabilities.d.ts +59 -0
  51. package/mcp-server/useDiscoverCapabilities.d.ts.map +1 -0
  52. package/mcp-server/useDiscoverCapabilities.js +77 -0
  53. package/mcp-server/useDiscoverCapabilities.js.map +1 -0
  54. package/mcp-server/useMcpServerCredentials.d.ts +63 -0
  55. package/mcp-server/useMcpServerCredentials.d.ts.map +1 -0
  56. package/mcp-server/useMcpServerCredentials.js +64 -0
  57. package/mcp-server/useMcpServerCredentials.js.map +1 -0
  58. package/mcp-server/useTriggerApprovalPolicySession.d.ts +42 -0
  59. package/mcp-server/useTriggerApprovalPolicySession.d.ts.map +1 -0
  60. package/mcp-server/useTriggerApprovalPolicySession.js +111 -0
  61. package/mcp-server/useTriggerApprovalPolicySession.js.map +1 -0
  62. package/package.json +4 -4
  63. package/session/__tests__/useSessionConversation.test.js +223 -2
  64. package/session/__tests__/useSessionConversation.test.js.map +1 -1
  65. package/session/useSessionConversation.d.ts +8 -1
  66. package/session/useSessionConversation.d.ts.map +1 -1
  67. package/session/useSessionConversation.js +77 -6
  68. package/session/useSessionConversation.js.map +1 -1
  69. package/skill/SkillDetailView.js +2 -2
  70. package/skill/SkillDetailView.js.map +1 -1
  71. package/src/execution/ArtifactContentRenderer.tsx +376 -0
  72. package/src/execution/ArtifactPreviewModal.tsx +22 -114
  73. package/src/execution/ExecutionPhaseBadge.tsx +1 -1
  74. package/src/execution/MessageThread.tsx +35 -3
  75. package/src/execution/SetupProgress.tsx +120 -0
  76. package/src/execution/ToolCallGroup.tsx +15 -1
  77. package/src/execution/ToolCallItem.tsx +10 -3
  78. package/src/execution/artifact-utils.ts +88 -4
  79. package/src/execution/index.ts +9 -0
  80. package/src/index.ts +16 -0
  81. package/src/internal/markdown-components.tsx +15 -0
  82. package/src/mcp-server/ApprovalPolicyGeneratorPanel.tsx +164 -0
  83. package/src/mcp-server/McpServerDetailView.tsx +428 -2
  84. package/src/mcp-server/index.ts +15 -0
  85. package/src/mcp-server/useDiscoverCapabilities.ts +117 -0
  86. package/src/mcp-server/useMcpServerCredentials.ts +108 -0
  87. package/src/mcp-server/useTriggerApprovalPolicySession.ts +161 -0
  88. package/src/session/__tests__/useSessionConversation.test.tsx +355 -2
  89. package/src/session/useSessionConversation.ts +104 -9
  90. package/src/skill/SkillDetailView.tsx +2 -2
  91. package/styles.css +1 -1
@@ -0,0 +1,63 @@
1
+ import type { EnvVarInput } from "@stigmer/sdk";
2
+ import type { McpServer } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
3
+ import type { EnvVarFormVariable } from "../environment/EnvVarForm";
4
+ export interface UseMcpServerCredentialsReturn {
5
+ /**
6
+ * Variables required by the MCP server that are missing from the
7
+ * user's personal environment. Empty when all variables are present
8
+ * or the server has no `env_spec`.
9
+ *
10
+ * Suitable as direct input to {@link EnvVarForm}.
11
+ */
12
+ readonly missingVariables: EnvVarFormVariable[];
13
+ /** `true` when all required credentials are available. */
14
+ readonly isReady: boolean;
15
+ /** `true` while the personal environment is being fetched. */
16
+ readonly isLoading: boolean;
17
+ /** Error from the personal environment fetch, or `null`. */
18
+ readonly error: Error | null;
19
+ /**
20
+ * Save the provided credentials to the user's personal environment.
21
+ * Creates the personal environment if it doesn't exist yet.
22
+ */
23
+ readonly saveCredentials: (values: Record<string, EnvVarInput>) => Promise<void>;
24
+ /** `true` while a save operation is in flight. */
25
+ readonly isSaving: boolean;
26
+ /** Re-check the personal environment. */
27
+ readonly refetch: () => void;
28
+ }
29
+ /**
30
+ * Checks the user's personal environment against an MCP server's
31
+ * `env_spec` and provides a mechanism to save missing credentials.
32
+ *
33
+ * Designed for the discovery flow on the MCP server detail page:
34
+ * before triggering discovery, the UI needs to ensure all required
35
+ * environment variables (API keys, tokens) are present. This hook
36
+ * computes the missing set and exposes `saveCredentials` to persist
37
+ * them.
38
+ *
39
+ * Unlike {@link useMcpServerSetup} which manages multi-server setup
40
+ * for session creation, this hook is scoped to a single server and
41
+ * always persists to the personal environment (no one-time option).
42
+ *
43
+ * Pass `null` for `mcpServer` while loading.
44
+ *
45
+ * @example
46
+ * ```tsx
47
+ * const { missingVariables, isReady, saveCredentials, isSaving } =
48
+ * useMcpServerCredentials("acme", mcpServer);
49
+ *
50
+ * if (!isReady) {
51
+ * return (
52
+ * <EnvVarForm
53
+ * variables={missingVariables}
54
+ * onSubmit={(values) => saveCredentials(values)}
55
+ * isSubmitting={isSaving}
56
+ * hideSaveToggle
57
+ * />
58
+ * );
59
+ * }
60
+ * ```
61
+ */
62
+ export declare function useMcpServerCredentials(org: string | null, mcpServer: McpServer | null): UseMcpServerCredentialsReturn;
63
+ //# sourceMappingURL=useMcpServerCredentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMcpServerCredentials.d.ts","sourceRoot":"","sources":["../../src/mcp-server/useMcpServerCredentials.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wDAAwD,CAAC;AAGxF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,WAAW,6BAA6B;IAC5C;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IAChD,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,eAAe,EAAE,CACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAChC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,6BAA6B,CAkC/B"}
@@ -0,0 +1,64 @@
1
+ "use client";
2
+ import { useCallback, useMemo } from "react";
3
+ import { usePersonalEnvironment } from "../environment/usePersonalEnvironment";
4
+ import { diffEnvSpec } from "../environment/diffEnvSpec";
5
+ /**
6
+ * Checks the user's personal environment against an MCP server's
7
+ * `env_spec` and provides a mechanism to save missing credentials.
8
+ *
9
+ * Designed for the discovery flow on the MCP server detail page:
10
+ * before triggering discovery, the UI needs to ensure all required
11
+ * environment variables (API keys, tokens) are present. This hook
12
+ * computes the missing set and exposes `saveCredentials` to persist
13
+ * them.
14
+ *
15
+ * Unlike {@link useMcpServerSetup} which manages multi-server setup
16
+ * for session creation, this hook is scoped to a single server and
17
+ * always persists to the personal environment (no one-time option).
18
+ *
19
+ * Pass `null` for `mcpServer` while loading.
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * const { missingVariables, isReady, saveCredentials, isSaving } =
24
+ * useMcpServerCredentials("acme", mcpServer);
25
+ *
26
+ * if (!isReady) {
27
+ * return (
28
+ * <EnvVarForm
29
+ * variables={missingVariables}
30
+ * onSubmit={(values) => saveCredentials(values)}
31
+ * isSubmitting={isSaving}
32
+ * hideSaveToggle
33
+ * />
34
+ * );
35
+ * }
36
+ * ```
37
+ */
38
+ export function useMcpServerCredentials(org, mcpServer) {
39
+ const personalEnv = usePersonalEnvironment(org);
40
+ const missingVariables = useMemo(() => {
41
+ if (!mcpServer)
42
+ return [];
43
+ const envSpecData = mcpServer.spec?.envSpec?.data;
44
+ if (!envSpecData || Object.keys(envSpecData).length === 0)
45
+ return [];
46
+ const existingKeys = new Set(Object.keys(personalEnv.environment?.spec?.data ?? {}));
47
+ return diffEnvSpec(envSpecData, existingKeys);
48
+ }, [mcpServer, personalEnv.environment]);
49
+ const isReady = !personalEnv.isLoading && missingVariables.length === 0;
50
+ const saveCredentials = useCallback(async (values) => {
51
+ await personalEnv.getOrCreate();
52
+ await personalEnv.addVariables(values);
53
+ }, [personalEnv]);
54
+ return {
55
+ missingVariables,
56
+ isReady,
57
+ isLoading: personalEnv.isLoading,
58
+ error: personalEnv.error,
59
+ saveCredentials,
60
+ isSaving: personalEnv.isMutating,
61
+ refetch: personalEnv.refetch,
62
+ };
63
+ }
64
+ //# sourceMappingURL=useMcpServerCredentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMcpServerCredentials.js","sourceRoot":"","sources":["../../src/mcp-server/useMcpServerCredentials.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAG7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AA+BzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAAkB,EAClB,SAA2B;IAE3B,MAAM,WAAW,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAEhD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;QAClD,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAErE,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CACvD,CAAC;QACF,OAAO,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAEzC,MAAM,OAAO,GACX,CAAC,WAAW,CAAC,SAAS,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC;IAE1D,MAAM,eAAe,GAAG,WAAW,CACjC,KAAK,EAAE,MAAmC,EAAiB,EAAE;QAC3D,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,OAAO;QACL,gBAAgB;QAChB,OAAO;QACP,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,eAAe;QACf,QAAQ,EAAE,WAAW,CAAC,UAAU;QAChC,OAAO,EAAE,WAAW,CAAC,OAAO;KAC7B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ export interface TriggerApprovalPolicyResult {
2
+ readonly sessionId: string;
3
+ readonly executionId: string;
4
+ }
5
+ export interface UseTriggerApprovalPolicySessionReturn {
6
+ /**
7
+ * Create an agent session with the `mcp-server-creator` agent, attach the
8
+ * current MCP server YAML, and start an execution that generates approval
9
+ * policies for the discovered tools.
10
+ *
11
+ * @param mcpServerYaml - Serialized MCP server YAML to attach as input.
12
+ * @param org - Organization slug.
13
+ * @param mcpServerSlug - MCP server slug (for context in the prompt).
14
+ */
15
+ readonly trigger: (mcpServerYaml: string, org: string, mcpServerSlug: string) => Promise<TriggerApprovalPolicyResult>;
16
+ readonly isTriggering: boolean;
17
+ readonly error: Error | null;
18
+ readonly clearError: () => void;
19
+ readonly result: TriggerApprovalPolicyResult | null;
20
+ }
21
+ /**
22
+ * Orchestration hook that auto-creates a session with the `mcp-server-creator`
23
+ * agent and starts an execution with a pre-filled prompt and YAML attachment.
24
+ *
25
+ * The prompt instructs the agent to read the attached YAML, query the
26
+ * discovered tools for this MCP server, classify each tool's risk level,
27
+ * and generate `default_tool_approvals` entries with appropriate approval
28
+ * messages. The agent applies the result using the `apply_mcp_server` tool.
29
+ *
30
+ * @example
31
+ * ```tsx
32
+ * const { trigger, isTriggering, result } = useTriggerApprovalPolicySession();
33
+ *
34
+ * async function handleGenerate() {
35
+ * const yaml = serializeMcpServer(mcpServer);
36
+ * await trigger(yaml, org, slug);
37
+ * // result.sessionId and result.executionId are now available
38
+ * }
39
+ * ```
40
+ */
41
+ export declare function useTriggerApprovalPolicySession(): UseTriggerApprovalPolicySessionReturn;
42
+ //# sourceMappingURL=useTriggerApprovalPolicySession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTriggerApprovalPolicySession.d.ts","sourceRoot":"","sources":["../../src/mcp-server/useTriggerApprovalPolicySession.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,qCAAqC;IACpD;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,KAClB,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,2BAA2B,GAAG,IAAI,CAAC;CACrD;AAKD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,+BAA+B,IAAI,qCAAqC,CAmFvF"}
@@ -0,0 +1,111 @@
1
+ "use client";
2
+ import { useCallback, useState } from "react";
3
+ import { create } from "@bufbuild/protobuf";
4
+ import { UploadAttachmentRequestSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/io_pb";
5
+ import { PENDING_SUBJECT } from "@stigmer/sdk";
6
+ import { useStigmer } from "../hooks";
7
+ import { toError } from "../internal/toError";
8
+ const MCP_SERVER_CREATOR_SLUG = "mcp-server-creator";
9
+ const MCP_SERVER_CREATOR_ORG = "stigmer";
10
+ /**
11
+ * Orchestration hook that auto-creates a session with the `mcp-server-creator`
12
+ * agent and starts an execution with a pre-filled prompt and YAML attachment.
13
+ *
14
+ * The prompt instructs the agent to read the attached YAML, query the
15
+ * discovered tools for this MCP server, classify each tool's risk level,
16
+ * and generate `default_tool_approvals` entries with appropriate approval
17
+ * messages. The agent applies the result using the `apply_mcp_server` tool.
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * const { trigger, isTriggering, result } = useTriggerApprovalPolicySession();
22
+ *
23
+ * async function handleGenerate() {
24
+ * const yaml = serializeMcpServer(mcpServer);
25
+ * await trigger(yaml, org, slug);
26
+ * // result.sessionId and result.executionId are now available
27
+ * }
28
+ * ```
29
+ */
30
+ export function useTriggerApprovalPolicySession() {
31
+ const stigmer = useStigmer();
32
+ const [isTriggering, setIsTriggering] = useState(false);
33
+ const [error, setError] = useState(null);
34
+ const [result, setResult] = useState(null);
35
+ const clearError = useCallback(() => setError(null), []);
36
+ const trigger = useCallback(async (mcpServerYaml, org, mcpServerSlug) => {
37
+ setIsTriggering(true);
38
+ setError(null);
39
+ try {
40
+ const agent = await stigmer.agent.getByReference({
41
+ org: MCP_SERVER_CREATOR_ORG,
42
+ slug: MCP_SERVER_CREATOR_SLUG,
43
+ });
44
+ const defaultInstanceId = agent.status?.defaultInstanceId;
45
+ if (!defaultInstanceId) {
46
+ throw new Error(`Agent "${MCP_SERVER_CREATOR_ORG}/${MCP_SERVER_CREATOR_SLUG}" does not have a ` +
47
+ "default instance. Ensure the mcp-server-creator agent is properly set up.");
48
+ }
49
+ const session = await stigmer.session.create({
50
+ name: `approval-policy-${mcpServerSlug}-${Date.now()}`,
51
+ org,
52
+ subject: PENDING_SUBJECT,
53
+ agentInstanceId: defaultInstanceId,
54
+ });
55
+ const sessionId = session.metadata.id;
56
+ const fileName = `${mcpServerSlug}.yaml`;
57
+ const attachment = await stigmer.agentExecution.uploadAttachment(create(UploadAttachmentRequestSchema, {
58
+ filename: fileName,
59
+ content: new TextEncoder().encode(mcpServerYaml),
60
+ contentType: "application/x-yaml",
61
+ }));
62
+ const prompt = buildApprovalPolicyPrompt(mcpServerSlug, org);
63
+ const execution = await stigmer.agentExecution.create({
64
+ name: `gen-approval-policy-${Date.now()}`,
65
+ org,
66
+ sessionId,
67
+ message: prompt,
68
+ attachments: [
69
+ {
70
+ storageKey: attachment.storageKey,
71
+ filename: fileName,
72
+ },
73
+ ],
74
+ });
75
+ const triggerResult = {
76
+ sessionId,
77
+ executionId: execution.metadata.id,
78
+ };
79
+ setResult(triggerResult);
80
+ return triggerResult;
81
+ }
82
+ catch (err) {
83
+ const wrapped = toError(err);
84
+ setError(wrapped);
85
+ throw wrapped;
86
+ }
87
+ finally {
88
+ setIsTriggering(false);
89
+ }
90
+ }, [stigmer]);
91
+ return { trigger, isTriggering, error, clearError, result };
92
+ }
93
+ function buildApprovalPolicyPrompt(slug, org) {
94
+ return [
95
+ `Generate default tool approval policies for the MCP server "${org}/${slug}".`,
96
+ "",
97
+ "Instructions:",
98
+ "1. Read the attached YAML file — it contains the full MCP server definition.",
99
+ `2. Use the get_mcp_server tool to fetch the latest version of "${org}/${slug}" including its discovered capabilities.`,
100
+ "3. For each discovered tool, classify its risk level:",
101
+ " - **Low risk** (read-only queries, searches): No approval needed — do NOT add an entry.",
102
+ " - **Medium risk** (creates/modifies resources): Add an entry with a clear approval message.",
103
+ " - **High risk** (deletes, destructive operations): Add an entry with a detailed approval message including relevant parameter placeholders ({{args.field}}).",
104
+ "4. Generate the `default_tool_approvals` section in the YAML.",
105
+ "5. Apply the updated YAML using the apply_mcp_server tool.",
106
+ "",
107
+ "The approval message should be human-readable and explain what the tool will do,",
108
+ "using {{args.field}} placeholders for dynamic content where appropriate.",
109
+ ].join("\n");
110
+ }
111
+ //# sourceMappingURL=useTriggerApprovalPolicySession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTriggerApprovalPolicySession.js","sourceRoot":"","sources":["../../src/mcp-server/useTriggerApprovalPolicySession.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stigmer/react",
3
- "version": "0.0.42",
3
+ "version": "0.0.44",
4
4
  "description": "React provider and client hook for the Stigmer platform SDK",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -31,7 +31,7 @@
31
31
  "./styles.css": "./styles.css"
32
32
  },
33
33
  "dependencies": {
34
- "@stigmer/theme": "0.0.42",
34
+ "@stigmer/theme": "0.0.44",
35
35
  "react-markdown": "^10.1.0",
36
36
  "remark-gfm": "^4.0.1",
37
37
  "yaml": "^2.8.2"
@@ -39,8 +39,8 @@
39
39
  "peerDependencies": {
40
40
  "@base-ui/react": "^1.0.0",
41
41
  "@bufbuild/protobuf": "^2.0.0",
42
- "@stigmer/protos": "0.0.42",
43
- "@stigmer/sdk": "0.0.42",
42
+ "@stigmer/protos": "0.0.44",
43
+ "@stigmer/sdk": "0.0.44",
44
44
  "react": "^19.0.0",
45
45
  "react-dom": "^19.0.0"
46
46
  }
@@ -1,9 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { describe, it, expect, vi, beforeEach } from "vitest";
2
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
3
3
  import { renderHook, act, waitFor } from "@testing-library/react";
4
4
  import { create } from "@bufbuild/protobuf";
5
5
  import { AgentExecutionSchema, AgentExecutionStatusSchema, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
6
- import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
6
+ import { ApprovalAction, ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
7
+ import { PendingApprovalSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/approval_pb";
7
8
  import { SessionSchema } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
8
9
  import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
9
10
  import { StigmerContext } from "../../context";
@@ -25,6 +26,12 @@ function makeExecution(id, phase) {
25
26
  exec.status = status;
26
27
  return exec;
27
28
  }
29
+ function addPendingApproval(exec, toolCallId) {
30
+ const pa = create(PendingApprovalSchema);
31
+ pa.toolCallId = toolCallId;
32
+ pa.toolName = "test_tool";
33
+ exec.status.pendingApprovals.push(pa);
34
+ }
28
35
  /**
29
36
  * Creates a controllable async generator for streaming.
30
37
  */
@@ -205,5 +212,219 @@ describe("useSessionConversation", () => {
205
212
  expect(result.current.pendingUserMessage).toBeNull();
206
213
  });
207
214
  });
215
+ // -------------------------------------------------------------------------
216
+ // Task 3: Exponential backoff polling for missing approval data
217
+ // -------------------------------------------------------------------------
218
+ describe("approval poll backoff", () => {
219
+ beforeEach(() => {
220
+ vi.useFakeTimers();
221
+ });
222
+ afterEach(() => {
223
+ vi.useRealTimers();
224
+ });
225
+ async function renderWaitingHook(m, client, exec) {
226
+ m.listBySession.mockResolvedValue({ entries: [exec] });
227
+ const pollStream = createControllableStream();
228
+ m.subscribe.mockReturnValue(pollStream.generator);
229
+ const hook = renderHook(() => useSessionConversation("session-1", "org"), { wrapper: createWrapper(client) });
230
+ await act(async () => { });
231
+ act(() => {
232
+ pollStream.push(exec);
233
+ });
234
+ await act(async () => { });
235
+ return { ...hook, pollStream };
236
+ }
237
+ it("polls with exponential backoff when WAITING_FOR_APPROVAL with empty raw approvals", async () => {
238
+ const exec = makeExecution("e1", ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL);
239
+ const { result } = await renderWaitingHook(methods, mockStigmer, exec);
240
+ expect(result.current.activePhase).toBe(ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL);
241
+ expect(result.current.pendingApprovals).toHaveLength(0);
242
+ const baseline = methods.listBySession.mock.calls.length;
243
+ await act(async () => {
244
+ vi.advanceTimersByTime(3000);
245
+ });
246
+ expect(methods.listBySession.mock.calls.length).toBe(baseline + 1);
247
+ await act(async () => {
248
+ vi.advanceTimersByTime(6000);
249
+ });
250
+ expect(methods.listBySession.mock.calls.length).toBe(baseline + 2);
251
+ await act(async () => {
252
+ vi.advanceTimersByTime(12000);
253
+ });
254
+ expect(methods.listBySession.mock.calls.length).toBe(baseline + 3);
255
+ });
256
+ it("stops polling when raw approvals arrive via stream", async () => {
257
+ const exec = makeExecution("e1", ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL);
258
+ const { result, pollStream } = await renderWaitingHook(methods, mockStigmer, exec);
259
+ const baseline = methods.listBySession.mock.calls.length;
260
+ await act(async () => {
261
+ vi.advanceTimersByTime(3000);
262
+ });
263
+ expect(methods.listBySession.mock.calls.length).toBe(baseline + 1);
264
+ const updated = makeExecution("e1", ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL);
265
+ addPendingApproval(updated, "tc-1");
266
+ act(() => {
267
+ pollStream.push(updated);
268
+ });
269
+ await act(async () => { });
270
+ expect(result.current.pendingApprovals).toHaveLength(1);
271
+ const afterArrival = methods.listBySession.mock.calls.length;
272
+ await act(async () => {
273
+ vi.advanceTimersByTime(60000);
274
+ });
275
+ expect(methods.listBySession.mock.calls.length).toBe(afterArrival);
276
+ });
277
+ it("stops polling when phase transitions away", async () => {
278
+ const exec = makeExecution("e1", ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL);
279
+ const { pollStream } = await renderWaitingHook(methods, mockStigmer, exec);
280
+ const completed = makeExecution("e1", ExecutionPhase.EXECUTION_COMPLETED);
281
+ act(() => {
282
+ pollStream.push(completed);
283
+ });
284
+ await act(async () => { });
285
+ const afterTransition = methods.listBySession.mock.calls.length;
286
+ await act(async () => {
287
+ vi.advanceTimersByTime(60000);
288
+ });
289
+ // Terminal-phase effect fires one refetch; no further polling.
290
+ expect(methods.listBySession.mock.calls.length).toBeLessThanOrEqual(afterTransition + 1);
291
+ });
292
+ it("does not poll when raw approvals exist but are all dismissed", async () => {
293
+ const exec = makeExecution("e1", ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL);
294
+ addPendingApproval(exec, "tc-1");
295
+ const { result } = await renderWaitingHook(methods, mockStigmer, exec);
296
+ expect(result.current.pendingApprovals).toHaveLength(1);
297
+ await act(async () => {
298
+ await result.current.submitApproval("tc-1", ApprovalAction.APPROVE);
299
+ });
300
+ expect(result.current.pendingApprovals).toHaveLength(0);
301
+ const baseline = methods.listBySession.mock.calls.length;
302
+ // At 3s (poll initial delay) — should NOT fire because raw approvals
303
+ // are non-empty; only the staleness mechanism handles this case.
304
+ await act(async () => {
305
+ vi.advanceTimersByTime(3000);
306
+ });
307
+ expect(methods.listBySession.mock.calls.length).toBe(baseline);
308
+ });
309
+ it("cleans up timeout on unmount", async () => {
310
+ const exec = makeExecution("e1", ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL);
311
+ const { unmount } = await renderWaitingHook(methods, mockStigmer, exec);
312
+ const baseline = methods.listBySession.mock.calls.length;
313
+ unmount();
314
+ await act(async () => {
315
+ vi.advanceTimersByTime(60000);
316
+ });
317
+ expect(methods.listBySession.mock.calls.length).toBe(baseline);
318
+ });
319
+ });
320
+ // -------------------------------------------------------------------------
321
+ // Task 4: Staleness detection for optimistic dismissals
322
+ // -------------------------------------------------------------------------
323
+ describe("staleness detection", () => {
324
+ beforeEach(() => {
325
+ vi.useFakeTimers();
326
+ });
327
+ afterEach(() => {
328
+ vi.useRealTimers();
329
+ });
330
+ async function renderWithApproval(m, client) {
331
+ const exec = makeExecution("e1", ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL);
332
+ addPendingApproval(exec, "tc-1");
333
+ m.listBySession.mockResolvedValue({ entries: [exec] });
334
+ const testStream = createControllableStream();
335
+ m.subscribe.mockReturnValue(testStream.generator);
336
+ const hook = renderHook(() => useSessionConversation("session-1", "org"), { wrapper: createWrapper(client) });
337
+ await act(async () => { });
338
+ act(() => {
339
+ testStream.push(exec);
340
+ });
341
+ await act(async () => { });
342
+ return { ...hook, testStream, exec };
343
+ }
344
+ it("reappears dismissed approval card after staleness threshold", async () => {
345
+ const { result } = await renderWithApproval(methods, mockStigmer);
346
+ expect(result.current.pendingApprovals).toHaveLength(1);
347
+ await act(async () => {
348
+ await result.current.submitApproval("tc-1", ApprovalAction.APPROVE);
349
+ });
350
+ expect(result.current.pendingApprovals).toHaveLength(0);
351
+ expect(result.current.dismissedApprovalIds.has("tc-1")).toBe(true);
352
+ // Before threshold: card stays hidden (15s covers interval ticks at 5s, 10s, 15s)
353
+ await act(async () => {
354
+ vi.advanceTimersByTime(15000);
355
+ });
356
+ expect(result.current.pendingApprovals).toHaveLength(0);
357
+ // Past threshold: interval fires at 20s, age > 15s → stale → card reappears
358
+ await act(async () => {
359
+ vi.advanceTimersByTime(5000);
360
+ });
361
+ expect(result.current.pendingApprovals).toHaveLength(1);
362
+ expect(result.current.dismissedApprovalIds.has("tc-1")).toBe(false);
363
+ });
364
+ it("does not run staleness check when phase is not WAITING_FOR_APPROVAL", async () => {
365
+ const exec = makeExecution("e1", ExecutionPhase.EXECUTION_IN_PROGRESS);
366
+ addPendingApproval(exec, "tc-1");
367
+ methods.listBySession.mockResolvedValue({ entries: [exec] });
368
+ const testStream = createControllableStream();
369
+ methods.subscribe.mockReturnValue(testStream.generator);
370
+ const { result } = renderHook(() => useSessionConversation("session-1", "org"), { wrapper: createWrapper(mockStigmer) });
371
+ await act(async () => { });
372
+ act(() => {
373
+ testStream.push(exec);
374
+ });
375
+ await act(async () => { });
376
+ await act(async () => {
377
+ await result.current.submitApproval("tc-1", ApprovalAction.APPROVE);
378
+ });
379
+ expect(result.current.dismissedApprovalIds.has("tc-1")).toBe(true);
380
+ // Advance well past threshold — staleness detection should not run
381
+ await act(async () => {
382
+ vi.advanceTimersByTime(60000);
383
+ });
384
+ expect(result.current.dismissedApprovalIds.has("tc-1")).toBe(true);
385
+ });
386
+ it("triggers refetch when stale entries are detected", async () => {
387
+ const { result } = await renderWithApproval(methods, mockStigmer);
388
+ await act(async () => {
389
+ await result.current.submitApproval("tc-1", ApprovalAction.APPROVE);
390
+ });
391
+ const baseline = methods.listBySession.mock.calls.length;
392
+ // Advance to 20s — staleness fires, should call refetch
393
+ await act(async () => {
394
+ vi.advanceTimersByTime(20000);
395
+ });
396
+ expect(methods.listBySession.mock.calls.length).toBeGreaterThan(baseline);
397
+ });
398
+ it("dismissedApprovalIds remains a ReadonlySet<string>", async () => {
399
+ const { result } = await renderWithApproval(methods, mockStigmer);
400
+ await act(async () => {
401
+ await result.current.submitApproval("tc-1", ApprovalAction.APPROVE);
402
+ });
403
+ const ids = result.current.dismissedApprovalIds;
404
+ expect(ids).toBeInstanceOf(Set);
405
+ expect(ids.has("tc-1")).toBe(true);
406
+ expect(typeof ids.has).toBe("function");
407
+ // Verify it behaves as a Set (not a Map)
408
+ expect([...ids]).toEqual(["tc-1"]);
409
+ });
410
+ it("resets dismissed state on new execution", async () => {
411
+ const { result, testStream } = await renderWithApproval(methods, mockStigmer);
412
+ await act(async () => {
413
+ await result.current.submitApproval("tc-1", ApprovalAction.APPROVE);
414
+ });
415
+ expect(result.current.dismissedApprovalIds.size).toBe(1);
416
+ // Stream delivers terminal phase
417
+ const completed = makeExecution("e1", ExecutionPhase.EXECUTION_COMPLETED);
418
+ // Update mock so the refetch sees the completed execution — this
419
+ // causes listActiveId to clear, which changes activeExecutionId
420
+ // and triggers the dismissed-state reset effect.
421
+ methods.listBySession.mockResolvedValue({ entries: [completed] });
422
+ act(() => {
423
+ testStream.push(completed);
424
+ });
425
+ await act(async () => { });
426
+ expect(result.current.dismissedApprovalIds.size).toBe(0);
427
+ });
428
+ });
208
429
  });
209
430
  //# sourceMappingURL=useSessionConversation.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSessionConversation.test.js","sourceRoot":"","sources":["../../../src/session/__tests__/useSessionConversation.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useSessionConversation.test.js","sourceRoot":"","sources":["../../../src/session/__tests__/useSessionConversation.test.tsx"],"names":[],"mappings":"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"}