@stigmer/react-ui 0.0.34
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/LICENSE +190 -0
- package/README.md +70 -0
- package/execution/components/ApprovalControls.d.ts +10 -0
- package/execution/components/ApprovalControls.d.ts.map +1 -0
- package/execution/components/ApprovalControls.js +19 -0
- package/execution/components/ApprovalControls.js.map +1 -0
- package/execution/components/ExecutionStatus.d.ts +8 -0
- package/execution/components/ExecutionStatus.d.ts.map +1 -0
- package/execution/components/ExecutionStatus.js +13 -0
- package/execution/components/ExecutionStatus.js.map +1 -0
- package/execution/components/ExecutionStream.d.ts +16 -0
- package/execution/components/ExecutionStream.d.ts.map +1 -0
- package/execution/components/ExecutionStream.js +47 -0
- package/execution/components/ExecutionStream.js.map +1 -0
- package/execution/components/MessageEntry.d.ts +17 -0
- package/execution/components/MessageEntry.d.ts.map +1 -0
- package/execution/components/MessageEntry.js +44 -0
- package/execution/components/MessageEntry.js.map +1 -0
- package/execution/components/MessageInput.d.ts +10 -0
- package/execution/components/MessageInput.d.ts.map +1 -0
- package/execution/components/MessageInput.js +28 -0
- package/execution/components/MessageInput.js.map +1 -0
- package/execution/components/OutputBlock.d.ts +9 -0
- package/execution/components/OutputBlock.d.ts.map +1 -0
- package/execution/components/OutputBlock.js +15 -0
- package/execution/components/OutputBlock.js.map +1 -0
- package/execution/components/SubAgentCard.d.ts +11 -0
- package/execution/components/SubAgentCard.d.ts.map +1 -0
- package/execution/components/SubAgentCard.js +19 -0
- package/execution/components/SubAgentCard.js.map +1 -0
- package/execution/components/ToolCallCard.d.ts +12 -0
- package/execution/components/ToolCallCard.d.ts.map +1 -0
- package/execution/components/ToolCallCard.js +26 -0
- package/execution/components/ToolCallCard.js.map +1 -0
- package/execution/helpers.d.ts +34 -0
- package/execution/helpers.d.ts.map +1 -0
- package/execution/helpers.js +163 -0
- package/execution/helpers.js.map +1 -0
- package/execution/hooks/useAgentExecution.d.ts +24 -0
- package/execution/hooks/useAgentExecution.d.ts.map +1 -0
- package/execution/hooks/useAgentExecution.js +112 -0
- package/execution/hooks/useAgentExecution.js.map +1 -0
- package/execution/hooks/useApproval.d.ts +16 -0
- package/execution/hooks/useApproval.d.ts.map +1 -0
- package/execution/hooks/useApproval.js +25 -0
- package/execution/hooks/useApproval.js.map +1 -0
- package/execution/hooks/useExecutionService.d.ts +8 -0
- package/execution/hooks/useExecutionService.d.ts.map +1 -0
- package/execution/hooks/useExecutionService.js +14 -0
- package/execution/hooks/useExecutionService.js.map +1 -0
- package/execution/index.d.ts +17 -0
- package/execution/index.d.ts.map +1 -0
- package/execution/index.js +26 -0
- package/execution/index.js.map +1 -0
- package/execution/services/execution-service.d.ts +23 -0
- package/execution/services/execution-service.d.ts.map +1 -0
- package/execution/services/execution-service.js +70 -0
- package/execution/services/execution-service.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.d.ts.map +1 -0
- package/index.js +2 -0
- package/index.js.map +1 -0
- package/internal/ui/badge.d.ts +8 -0
- package/internal/ui/badge.d.ts.map +1 -0
- package/internal/ui/badge.js +46 -0
- package/internal/ui/badge.js.map +1 -0
- package/internal/ui/button.d.ts +9 -0
- package/internal/ui/button.d.ts.map +1 -0
- package/internal/ui/button.js +48 -0
- package/internal/ui/button.js.map +1 -0
- package/internal/ui/collapsible.d.ts +6 -0
- package/internal/ui/collapsible.d.ts.map +1 -0
- package/internal/ui/collapsible.js +28 -0
- package/internal/ui/collapsible.js.map +1 -0
- package/internal/ui/textarea.d.ts +4 -0
- package/internal/ui/textarea.d.ts.map +1 -0
- package/internal/ui/textarea.js +19 -0
- package/internal/ui/textarea.js.map +1 -0
- package/package.json +54 -0
- package/src/execution/components/ApprovalControls.tsx +99 -0
- package/src/execution/components/ExecutionStatus.tsx +36 -0
- package/src/execution/components/ExecutionStream.tsx +167 -0
- package/src/execution/components/MessageEntry.tsx +143 -0
- package/src/execution/components/MessageInput.tsx +70 -0
- package/src/execution/components/OutputBlock.tsx +47 -0
- package/src/execution/components/SubAgentCard.tsx +135 -0
- package/src/execution/components/ToolCallCard.tsx +155 -0
- package/src/execution/helpers.ts +199 -0
- package/src/execution/hooks/useAgentExecution.ts +126 -0
- package/src/execution/hooks/useApproval.ts +55 -0
- package/src/execution/hooks/useExecutionService.ts +15 -0
- package/src/execution/index.ts +53 -0
- package/src/execution/services/execution-service.ts +125 -0
- package/src/index.ts +1 -0
- package/src/internal/ui/badge.tsx +52 -0
- package/src/internal/ui/button.tsx +60 -0
- package/src/internal/ui/collapsible.tsx +21 -0
- package/src/internal/ui/textarea.tsx +18 -0
- package/src/styles.css +43 -0
- package/styles.css +2 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { Badge } from "../../internal/ui/badge";
|
|
5
|
+
import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "../../internal/ui/collapsible";
|
|
6
|
+
import { OutputBlock } from "./OutputBlock";
|
|
7
|
+
import { ToolCallCard } from "./ToolCallCard";
|
|
8
|
+
import { subAgentStatusLabel, subAgentStatusVariant, formatDuration, isAiMessage, } from "../helpers";
|
|
9
|
+
import { SubAgentStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
10
|
+
import { cn } from "@stigmer/theme";
|
|
11
|
+
import { ChevronRight, Bot, Loader2 } from "lucide-react";
|
|
12
|
+
export function SubAgentCard({ subAgent, onApproval, isApprovalSubmitting = false, className, }) {
|
|
13
|
+
const [open, setOpen] = useState(false);
|
|
14
|
+
const isActive = subAgent.status === SubAgentStatus.SUB_AGENT_IN_PROGRESS;
|
|
15
|
+
const duration = formatDuration(subAgent.startedAt, subAgent.completedAt);
|
|
16
|
+
const aiMessages = subAgent.messages.filter((m) => isAiMessage(m.type));
|
|
17
|
+
return (_jsx(Collapsible, { open: open, onOpenChange: setOpen, children: _jsxs("div", { className: cn("rounded-lg border border-dashed bg-card text-card-foreground text-sm", className), children: [_jsxs(CollapsibleTrigger, { className: "flex w-full items-center gap-2 px-3 py-2 text-left hover:bg-muted/50 transition-colors rounded-t-lg", children: [_jsx(ChevronRight, { className: cn("size-3.5 shrink-0 text-muted-foreground transition-transform", open && "rotate-90") }), isActive ? (_jsx(Loader2, { className: "size-3.5 shrink-0 animate-spin text-muted-foreground" })) : (_jsx(Bot, { className: "size-3.5 shrink-0 text-muted-foreground" })), _jsx("span", { className: "truncate font-medium text-xs", children: subAgent.subject || subAgent.name }), _jsx(Badge, { variant: subAgentStatusVariant(subAgent.status), className: "ml-auto shrink-0 text-[10px]", children: subAgentStatusLabel(subAgent.status) }), duration && (_jsx("span", { className: "shrink-0 text-[10px] text-muted-foreground", children: duration })), subAgent.toolCalls.length > 0 && (_jsxs("span", { className: "shrink-0 text-[10px] text-muted-foreground", children: [subAgent.toolCalls.length, " tool", subAgent.toolCalls.length !== 1 && "s"] }))] }), _jsx(CollapsibleContent, { children: _jsxs("div", { className: "border-t px-3 py-2 space-y-3", children: [subAgent.input && (_jsxs("div", { children: [_jsx("p", { className: "mb-1 text-[10px] font-medium uppercase tracking-wider text-muted-foreground", children: "Task" }), _jsx("p", { className: "text-xs text-muted-foreground", children: subAgent.input })] })), aiMessages.map((msg, i) => (_jsx(OutputBlock, { content: msg.content, isStreaming: msg.isStreaming, model: msg.model }, i))), subAgent.toolCalls.map((tc) => (_jsx(ToolCallCard, { toolCall: tc, onApproval: onApproval, isApprovalSubmitting: isApprovalSubmitting }, tc.id))), subAgent.error && (_jsx("p", { className: "text-xs text-destructive", children: subAgent.error })), subAgent.output && (_jsxs("div", { children: [_jsx("p", { className: "mb-1 text-[10px] font-medium uppercase tracking-wider text-muted-foreground", children: "Result" }), _jsx("pre", { className: "overflow-x-auto rounded bg-muted p-2 text-[11px] leading-relaxed whitespace-pre-wrap", children: subAgent.output })] }))] }) })] }) }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=SubAgentCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubAgentCard.js","sourceRoot":"","sources":["../../../src/execution/components/SubAgentCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
2
|
+
import type { ToolCall } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
3
|
+
interface ToolCallCardProps {
|
|
4
|
+
toolCall: ToolCall;
|
|
5
|
+
/** Callback for approval submission. Only required when tool is awaiting approval. */
|
|
6
|
+
onApproval?: (toolCallId: string, action: ApprovalAction, comment?: string) => Promise<void>;
|
|
7
|
+
isApprovalSubmitting?: boolean;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function ToolCallCard({ toolCall, onApproval, isApprovalSubmitting, className, }: ToolCallCardProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=ToolCallCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolCallCard.d.ts","sourceRoot":"","sources":["../../../src/execution/components/ToolCallCard.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8DAA8D,CAAC;AACnG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iEAAiE,CAAC;AAIhG,UAAU,iBAAiB;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,sFAAsF;IACtF,UAAU,CAAC,EAAE,CACX,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,UAAU,EACV,oBAA4B,EAC5B,SAAS,GACV,EAAE,iBAAiB,2CAkGnB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useCallback } from "react";
|
|
4
|
+
import { Badge } from "../../internal/ui/badge";
|
|
5
|
+
import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "../../internal/ui/collapsible";
|
|
6
|
+
import { ApprovalControls } from "./ApprovalControls";
|
|
7
|
+
import { toolCallStatusLabel, toolCallStatusVariant, qualifiedToolName, formatDuration, } from "../helpers";
|
|
8
|
+
import { ToolCallStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
9
|
+
import { cn } from "@stigmer/theme";
|
|
10
|
+
import { ChevronRight, Wrench, Loader2 } from "lucide-react";
|
|
11
|
+
export function ToolCallCard({ toolCall, onApproval, isApprovalSubmitting = false, className, }) {
|
|
12
|
+
const [open, setOpen] = useState(false);
|
|
13
|
+
const isWaitingApproval = toolCall.status === ToolCallStatus.TOOL_CALL_WAITING_APPROVAL;
|
|
14
|
+
const isRunning = toolCall.status === ToolCallStatus.TOOL_CALL_RUNNING;
|
|
15
|
+
const duration = formatDuration(toolCall.startedAt, toolCall.completedAt);
|
|
16
|
+
const displayName = qualifiedToolName(toolCall.name, toolCall.mcpServerSlug);
|
|
17
|
+
const handleApproval = useCallback(async (action, comment) => {
|
|
18
|
+
await (onApproval === null || onApproval === void 0 ? void 0 : onApproval(toolCall.id, action, comment));
|
|
19
|
+
}, [onApproval, toolCall.id]);
|
|
20
|
+
return (_jsx(Collapsible, { open: open || isWaitingApproval, onOpenChange: setOpen, children: _jsxs("div", { className: cn("rounded-lg border bg-card text-card-foreground text-sm", isWaitingApproval && "border-primary/40 ring-1 ring-primary/20", className), children: [_jsxs(CollapsibleTrigger, { className: "flex w-full items-center gap-2 px-3 py-2 text-left hover:bg-muted/50 transition-colors rounded-t-lg", children: [_jsx(ChevronRight, { className: cn("size-3.5 shrink-0 text-muted-foreground transition-transform", (open || isWaitingApproval) && "rotate-90") }), isRunning ? (_jsx(Loader2, { className: "size-3.5 shrink-0 animate-spin text-muted-foreground" })) : (_jsx(Wrench, { className: "size-3.5 shrink-0 text-muted-foreground" })), _jsx("span", { className: "truncate font-mono text-xs", children: displayName }), _jsx(Badge, { variant: toolCallStatusVariant(toolCall.status), className: "ml-auto shrink-0 text-[10px]", children: toolCallStatusLabel(toolCall.status) }), duration && (_jsx("span", { className: "shrink-0 text-[10px] text-muted-foreground", children: duration }))] }), _jsxs(CollapsibleContent, { children: [_jsxs("div", { className: "border-t px-3 py-2 space-y-2", children: [toolCall.args && Object.keys(toolCall.args).length > 0 && (_jsx(ToolCallSection, { label: "Arguments", children: _jsx("pre", { className: "overflow-x-auto rounded bg-muted p-2 text-[11px] leading-relaxed", children: JSON.stringify(toolCall.args, null, 2) }) })), toolCall.result && (_jsx(ToolCallSection, { label: "Result", children: _jsx("pre", { className: "overflow-x-auto rounded bg-muted p-2 text-[11px] leading-relaxed whitespace-pre-wrap", children: toolCall.result }) })), toolCall.error && (_jsx(ToolCallSection, { label: "Error", children: _jsx("p", { className: "text-xs text-destructive", children: toolCall.error }) })), toolCall.isStreaming && !toolCall.result && (_jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [_jsx(Loader2, { className: "size-3 animate-spin" }), "Executing..."] }))] }), isWaitingApproval && onApproval && (_jsx("div", { className: "border-t px-3 py-2", children: _jsx(ApprovalControls, { approvalMessage: toolCall.approvalMessage ||
|
|
21
|
+
`Execute tool: ${displayName}`, onSubmit: handleApproval, isSubmitting: isApprovalSubmitting }) }))] })] }) }));
|
|
22
|
+
}
|
|
23
|
+
function ToolCallSection({ label, children, }) {
|
|
24
|
+
return (_jsxs("div", { children: [_jsx("p", { className: "mb-1 text-[10px] font-medium uppercase tracking-wider text-muted-foreground", children: label }), children] }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=ToolCallCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolCallCard.js","sourceRoot":"","sources":["../../../src/execution/components/ToolCallCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ExecutionPhase, ToolCallStatus, SubAgentStatus, MessageType } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
2
|
+
import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
3
|
+
import type { SubAgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/subagent_pb";
|
|
4
|
+
export declare function isTerminalPhase(phase: ExecutionPhase): boolean;
|
|
5
|
+
export declare function phaseLabel(phase: ExecutionPhase): string;
|
|
6
|
+
type BadgeVariant = "default" | "secondary" | "destructive" | "outline";
|
|
7
|
+
export declare function phaseVariant(phase: ExecutionPhase): BadgeVariant;
|
|
8
|
+
export declare function toolCallStatusLabel(status: ToolCallStatus): string;
|
|
9
|
+
export declare function toolCallStatusVariant(status: ToolCallStatus): BadgeVariant;
|
|
10
|
+
export declare function isToolCallTerminal(status: ToolCallStatus): boolean;
|
|
11
|
+
export declare function subAgentStatusLabel(status: SubAgentStatus): string;
|
|
12
|
+
export declare function subAgentStatusVariant(status: SubAgentStatus): BadgeVariant;
|
|
13
|
+
export declare function isHumanMessage(type: MessageType): boolean;
|
|
14
|
+
export declare function isAiMessage(type: MessageType): boolean;
|
|
15
|
+
export declare function isToolMessage(type: MessageType): boolean;
|
|
16
|
+
export declare function isSystemMessage(type: MessageType): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Build an index of sub-agent executions keyed by their ID.
|
|
19
|
+
* The sub-agent ID matches the tool call ID from the parent's "task" tool invocation,
|
|
20
|
+
* enabling O(1) lookup when rendering tool calls that represent sub-agent delegations.
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildSubAgentIndex(execution: AgentExecution): Map<string, SubAgentExecution>;
|
|
23
|
+
/**
|
|
24
|
+
* Format a qualified tool name: "mcp-server/tool-name" when an MCP server
|
|
25
|
+
* slug is present, or just "tool-name" for built-in sandbox tools.
|
|
26
|
+
*/
|
|
27
|
+
export declare function qualifiedToolName(name: string, mcpServerSlug: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Format elapsed time between two ISO timestamps as a human-readable duration.
|
|
30
|
+
* Returns null if either timestamp is missing.
|
|
31
|
+
*/
|
|
32
|
+
export declare function formatDuration(startedAt: string, completedAt: string): string | null;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/execution/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,WAAW,EACZ,MAAM,8DAA8D,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAClG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kEAAkE,CAAC;AAa1G,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAE9D;AAcD,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAExD;AAED,KAAK,YAAY,GACb,SAAS,GACT,WAAW,GACX,aAAa,GACb,SAAS,CAAC;AAcd,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,CAEhE;AAgBD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAElE;AAYD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAE1E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAMlE;AAeD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAElE;AAWD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CAE1E;AAMD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAEzD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAEtD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAExD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAE1D;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,cAAc,GACxB,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAIhC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GACpB,MAAM,CAGR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAUf"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { ExecutionPhase, ToolCallStatus, SubAgentStatus, MessageType, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Execution phase utilities
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
const TERMINAL_PHASES = new Set([
|
|
6
|
+
ExecutionPhase.EXECUTION_COMPLETED,
|
|
7
|
+
ExecutionPhase.EXECUTION_FAILED,
|
|
8
|
+
ExecutionPhase.EXECUTION_CANCELLED,
|
|
9
|
+
ExecutionPhase.EXECUTION_TERMINATED,
|
|
10
|
+
]);
|
|
11
|
+
export function isTerminalPhase(phase) {
|
|
12
|
+
return TERMINAL_PHASES.has(phase);
|
|
13
|
+
}
|
|
14
|
+
const PHASE_LABELS = {
|
|
15
|
+
[ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED]: "Unknown",
|
|
16
|
+
[ExecutionPhase.EXECUTION_PENDING]: "Pending",
|
|
17
|
+
[ExecutionPhase.EXECUTION_IN_PROGRESS]: "Running",
|
|
18
|
+
[ExecutionPhase.EXECUTION_COMPLETED]: "Completed",
|
|
19
|
+
[ExecutionPhase.EXECUTION_FAILED]: "Failed",
|
|
20
|
+
[ExecutionPhase.EXECUTION_CANCELLED]: "Cancelled",
|
|
21
|
+
[ExecutionPhase.EXECUTION_TERMINATED]: "Terminated",
|
|
22
|
+
[ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL]: "Waiting for Approval",
|
|
23
|
+
[ExecutionPhase.EXECUTION_PAUSED]: "Paused",
|
|
24
|
+
};
|
|
25
|
+
export function phaseLabel(phase) {
|
|
26
|
+
var _a;
|
|
27
|
+
return (_a = PHASE_LABELS[phase]) !== null && _a !== void 0 ? _a : "Unknown";
|
|
28
|
+
}
|
|
29
|
+
const PHASE_VARIANTS = {
|
|
30
|
+
[ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED]: "outline",
|
|
31
|
+
[ExecutionPhase.EXECUTION_PENDING]: "outline",
|
|
32
|
+
[ExecutionPhase.EXECUTION_IN_PROGRESS]: "default",
|
|
33
|
+
[ExecutionPhase.EXECUTION_COMPLETED]: "secondary",
|
|
34
|
+
[ExecutionPhase.EXECUTION_FAILED]: "destructive",
|
|
35
|
+
[ExecutionPhase.EXECUTION_CANCELLED]: "outline",
|
|
36
|
+
[ExecutionPhase.EXECUTION_TERMINATED]: "destructive",
|
|
37
|
+
[ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL]: "default",
|
|
38
|
+
[ExecutionPhase.EXECUTION_PAUSED]: "outline",
|
|
39
|
+
};
|
|
40
|
+
export function phaseVariant(phase) {
|
|
41
|
+
var _a;
|
|
42
|
+
return (_a = PHASE_VARIANTS[phase]) !== null && _a !== void 0 ? _a : "outline";
|
|
43
|
+
}
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// Tool call status utilities
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
const TOOL_CALL_STATUS_LABELS = {
|
|
48
|
+
[ToolCallStatus.TOOL_CALL_STATUS_UNSPECIFIED]: "Unknown",
|
|
49
|
+
[ToolCallStatus.TOOL_CALL_PENDING]: "Pending",
|
|
50
|
+
[ToolCallStatus.TOOL_CALL_RUNNING]: "Running",
|
|
51
|
+
[ToolCallStatus.TOOL_CALL_COMPLETED]: "Completed",
|
|
52
|
+
[ToolCallStatus.TOOL_CALL_FAILED]: "Failed",
|
|
53
|
+
[ToolCallStatus.TOOL_CALL_WAITING_APPROVAL]: "Awaiting Approval",
|
|
54
|
+
[ToolCallStatus.TOOL_CALL_SKIPPED]: "Skipped",
|
|
55
|
+
};
|
|
56
|
+
export function toolCallStatusLabel(status) {
|
|
57
|
+
var _a;
|
|
58
|
+
return (_a = TOOL_CALL_STATUS_LABELS[status]) !== null && _a !== void 0 ? _a : "Unknown";
|
|
59
|
+
}
|
|
60
|
+
const TOOL_CALL_STATUS_VARIANTS = {
|
|
61
|
+
[ToolCallStatus.TOOL_CALL_STATUS_UNSPECIFIED]: "outline",
|
|
62
|
+
[ToolCallStatus.TOOL_CALL_PENDING]: "outline",
|
|
63
|
+
[ToolCallStatus.TOOL_CALL_RUNNING]: "default",
|
|
64
|
+
[ToolCallStatus.TOOL_CALL_COMPLETED]: "secondary",
|
|
65
|
+
[ToolCallStatus.TOOL_CALL_FAILED]: "destructive",
|
|
66
|
+
[ToolCallStatus.TOOL_CALL_WAITING_APPROVAL]: "default",
|
|
67
|
+
[ToolCallStatus.TOOL_CALL_SKIPPED]: "outline",
|
|
68
|
+
};
|
|
69
|
+
export function toolCallStatusVariant(status) {
|
|
70
|
+
var _a;
|
|
71
|
+
return (_a = TOOL_CALL_STATUS_VARIANTS[status]) !== null && _a !== void 0 ? _a : "outline";
|
|
72
|
+
}
|
|
73
|
+
export function isToolCallTerminal(status) {
|
|
74
|
+
return (status === ToolCallStatus.TOOL_CALL_COMPLETED ||
|
|
75
|
+
status === ToolCallStatus.TOOL_CALL_FAILED ||
|
|
76
|
+
status === ToolCallStatus.TOOL_CALL_SKIPPED);
|
|
77
|
+
}
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
// Sub-agent status utilities
|
|
80
|
+
// ---------------------------------------------------------------------------
|
|
81
|
+
const SUB_AGENT_STATUS_LABELS = {
|
|
82
|
+
[SubAgentStatus.SUB_AGENT_STATUS_UNSPECIFIED]: "Unknown",
|
|
83
|
+
[SubAgentStatus.SUB_AGENT_PENDING]: "Pending",
|
|
84
|
+
[SubAgentStatus.SUB_AGENT_IN_PROGRESS]: "Running",
|
|
85
|
+
[SubAgentStatus.SUB_AGENT_COMPLETED]: "Completed",
|
|
86
|
+
[SubAgentStatus.SUB_AGENT_FAILED]: "Failed",
|
|
87
|
+
[SubAgentStatus.SUB_AGENT_CANCELLED]: "Cancelled",
|
|
88
|
+
};
|
|
89
|
+
export function subAgentStatusLabel(status) {
|
|
90
|
+
var _a;
|
|
91
|
+
return (_a = SUB_AGENT_STATUS_LABELS[status]) !== null && _a !== void 0 ? _a : "Unknown";
|
|
92
|
+
}
|
|
93
|
+
const SUB_AGENT_STATUS_VARIANTS = {
|
|
94
|
+
[SubAgentStatus.SUB_AGENT_STATUS_UNSPECIFIED]: "outline",
|
|
95
|
+
[SubAgentStatus.SUB_AGENT_PENDING]: "outline",
|
|
96
|
+
[SubAgentStatus.SUB_AGENT_IN_PROGRESS]: "default",
|
|
97
|
+
[SubAgentStatus.SUB_AGENT_COMPLETED]: "secondary",
|
|
98
|
+
[SubAgentStatus.SUB_AGENT_FAILED]: "destructive",
|
|
99
|
+
[SubAgentStatus.SUB_AGENT_CANCELLED]: "outline",
|
|
100
|
+
};
|
|
101
|
+
export function subAgentStatusVariant(status) {
|
|
102
|
+
var _a;
|
|
103
|
+
return (_a = SUB_AGENT_STATUS_VARIANTS[status]) !== null && _a !== void 0 ? _a : "outline";
|
|
104
|
+
}
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// Message type utilities
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
export function isHumanMessage(type) {
|
|
109
|
+
return type === MessageType.MESSAGE_HUMAN;
|
|
110
|
+
}
|
|
111
|
+
export function isAiMessage(type) {
|
|
112
|
+
return type === MessageType.MESSAGE_AI;
|
|
113
|
+
}
|
|
114
|
+
export function isToolMessage(type) {
|
|
115
|
+
return type === MessageType.MESSAGE_TOOL;
|
|
116
|
+
}
|
|
117
|
+
export function isSystemMessage(type) {
|
|
118
|
+
return type === MessageType.MESSAGE_SYSTEM;
|
|
119
|
+
}
|
|
120
|
+
// ---------------------------------------------------------------------------
|
|
121
|
+
// Execution-level helpers
|
|
122
|
+
// ---------------------------------------------------------------------------
|
|
123
|
+
/**
|
|
124
|
+
* Build an index of sub-agent executions keyed by their ID.
|
|
125
|
+
* The sub-agent ID matches the tool call ID from the parent's "task" tool invocation,
|
|
126
|
+
* enabling O(1) lookup when rendering tool calls that represent sub-agent delegations.
|
|
127
|
+
*/
|
|
128
|
+
export function buildSubAgentIndex(execution) {
|
|
129
|
+
var _a;
|
|
130
|
+
const subAgents = (_a = execution.status) === null || _a === void 0 ? void 0 : _a.subAgentExecutions;
|
|
131
|
+
if (!subAgents || subAgents.length === 0)
|
|
132
|
+
return new Map();
|
|
133
|
+
return new Map(subAgents.map((sa) => [sa.id, sa]));
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Format a qualified tool name: "mcp-server/tool-name" when an MCP server
|
|
137
|
+
* slug is present, or just "tool-name" for built-in sandbox tools.
|
|
138
|
+
*/
|
|
139
|
+
export function qualifiedToolName(name, mcpServerSlug) {
|
|
140
|
+
if (mcpServerSlug)
|
|
141
|
+
return `${mcpServerSlug}/${name}`;
|
|
142
|
+
return name;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Format elapsed time between two ISO timestamps as a human-readable duration.
|
|
146
|
+
* Returns null if either timestamp is missing.
|
|
147
|
+
*/
|
|
148
|
+
export function formatDuration(startedAt, completedAt) {
|
|
149
|
+
if (!startedAt || !completedAt)
|
|
150
|
+
return null;
|
|
151
|
+
const ms = new Date(completedAt).getTime() - new Date(startedAt).getTime();
|
|
152
|
+
if (ms < 0)
|
|
153
|
+
return null;
|
|
154
|
+
if (ms < 1000)
|
|
155
|
+
return `${ms}ms`;
|
|
156
|
+
const seconds = ms / 1000;
|
|
157
|
+
if (seconds < 60)
|
|
158
|
+
return `${seconds.toFixed(1)}s`;
|
|
159
|
+
const minutes = Math.floor(seconds / 60);
|
|
160
|
+
const remainingSeconds = Math.round(seconds % 60);
|
|
161
|
+
return `${minutes}m ${remainingSeconds}s`;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/execution/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
2
|
+
import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
3
|
+
import type { CreateExecutionInput } from "../services/execution-service";
|
|
4
|
+
export type { CreateExecutionInput };
|
|
5
|
+
export interface UseAgentExecutionOptions {
|
|
6
|
+
/** Subscribe to an existing execution on mount. */
|
|
7
|
+
executionId?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface UseAgentExecutionReturn {
|
|
10
|
+
/** The latest execution state from the stream. Null before subscription starts. */
|
|
11
|
+
execution: AgentExecution | null;
|
|
12
|
+
/** Convenience accessor — the current phase (defaults to UNSPECIFIED when no execution). */
|
|
13
|
+
phase: ExecutionPhase;
|
|
14
|
+
/** True while the subscription stream is open and receiving updates. */
|
|
15
|
+
isConnected: boolean;
|
|
16
|
+
/** Error message from creation, subscription, or cancellation. Null when healthy. */
|
|
17
|
+
error: string | null;
|
|
18
|
+
/** Create a new execution and auto-subscribe to its stream. */
|
|
19
|
+
start: (input: CreateExecutionInput) => Promise<void>;
|
|
20
|
+
/** Gracefully cancel the current execution. */
|
|
21
|
+
cancel: (reason?: string) => Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
export declare function useAgentExecution(options?: UseAgentExecutionOptions): UseAgentExecutionReturn;
|
|
24
|
+
//# sourceMappingURL=useAgentExecution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAgentExecution.d.ts","sourceRoot":"","sources":["../../../src/execution/hooks/useAgentExecution.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,8DAA8D,CAAC;AAG9F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAErC,MAAM,WAAW,wBAAwB;IACvC,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,mFAAmF;IACnF,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC;IACjC,4FAA4F;IAC5F,KAAK,EAAE,cAAc,CAAC;IACtB,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;IACrB,qFAAqF;IACrF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,+DAA+D;IAC/D,KAAK,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,+CAA+C;IAC/C,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,wBAAwB,GACjC,uBAAuB,CA4FzB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
3
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
4
|
+
var m = o[Symbol.asyncIterator], i;
|
|
5
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
6
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
7
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
8
|
+
};
|
|
9
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
10
|
+
import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
11
|
+
import { useExecutionService } from "./useExecutionService";
|
|
12
|
+
import { isTerminalPhase } from "../helpers";
|
|
13
|
+
export function useAgentExecution(options) {
|
|
14
|
+
var _a, _b, _c;
|
|
15
|
+
const service = useExecutionService();
|
|
16
|
+
const [execution, setExecution] = useState(null);
|
|
17
|
+
const [isConnected, setIsConnected] = useState(false);
|
|
18
|
+
const [error, setError] = useState(null);
|
|
19
|
+
const activeExecutionIdRef = useRef((_a = options === null || options === void 0 ? void 0 : options.executionId) !== null && _a !== void 0 ? _a : null);
|
|
20
|
+
const abortRef = useRef(null);
|
|
21
|
+
const subscribe = useCallback((executionId) => {
|
|
22
|
+
var _a;
|
|
23
|
+
(_a = abortRef.current) === null || _a === void 0 ? void 0 : _a.abort();
|
|
24
|
+
const controller = new AbortController();
|
|
25
|
+
abortRef.current = controller;
|
|
26
|
+
activeExecutionIdRef.current = executionId;
|
|
27
|
+
setIsConnected(true);
|
|
28
|
+
setError(null);
|
|
29
|
+
(async () => {
|
|
30
|
+
var _a, e_1, _b, _c;
|
|
31
|
+
var _d, _e;
|
|
32
|
+
try {
|
|
33
|
+
const stream = service.subscribeToExecution(executionId, controller.signal);
|
|
34
|
+
try {
|
|
35
|
+
for (var _f = true, stream_1 = __asyncValues(stream), stream_1_1; stream_1_1 = await stream_1.next(), _a = stream_1_1.done, !_a; _f = true) {
|
|
36
|
+
_c = stream_1_1.value;
|
|
37
|
+
_f = false;
|
|
38
|
+
const update = _c;
|
|
39
|
+
if (controller.signal.aborted)
|
|
40
|
+
break;
|
|
41
|
+
setExecution(update);
|
|
42
|
+
const phase = (_e = (_d = update.status) === null || _d === void 0 ? void 0 : _d.phase) !== null && _e !== void 0 ? _e : ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED;
|
|
43
|
+
if (isTerminalPhase(phase)) {
|
|
44
|
+
setIsConnected(false);
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
50
|
+
finally {
|
|
51
|
+
try {
|
|
52
|
+
if (!_f && !_a && (_b = stream_1.return)) await _b.call(stream_1);
|
|
53
|
+
}
|
|
54
|
+
finally { if (e_1) throw e_1.error; }
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
if (controller.signal.aborted)
|
|
59
|
+
return;
|
|
60
|
+
const message = err instanceof Error ? err.message : "Stream disconnected";
|
|
61
|
+
setError(message);
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
if (!controller.signal.aborted) {
|
|
65
|
+
setIsConnected(false);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
})();
|
|
69
|
+
}, [service]);
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
if (options === null || options === void 0 ? void 0 : options.executionId) {
|
|
72
|
+
subscribe(options.executionId);
|
|
73
|
+
}
|
|
74
|
+
return () => {
|
|
75
|
+
var _a;
|
|
76
|
+
(_a = abortRef.current) === null || _a === void 0 ? void 0 : _a.abort();
|
|
77
|
+
};
|
|
78
|
+
}, [options === null || options === void 0 ? void 0 : options.executionId, subscribe]);
|
|
79
|
+
const start = useCallback(async (input) => {
|
|
80
|
+
var _a;
|
|
81
|
+
setError(null);
|
|
82
|
+
setExecution(null);
|
|
83
|
+
try {
|
|
84
|
+
const created = await service.createExecution(input);
|
|
85
|
+
const executionId = (_a = created.metadata) === null || _a === void 0 ? void 0 : _a.id;
|
|
86
|
+
if (!executionId) {
|
|
87
|
+
throw new Error("Created execution missing metadata.id");
|
|
88
|
+
}
|
|
89
|
+
setExecution(created);
|
|
90
|
+
subscribe(executionId);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
const message = err instanceof Error ? err.message : "Failed to create execution";
|
|
94
|
+
setError(message);
|
|
95
|
+
}
|
|
96
|
+
}, [service, subscribe]);
|
|
97
|
+
const cancel = useCallback(async (reason) => {
|
|
98
|
+
const id = activeExecutionIdRef.current;
|
|
99
|
+
if (!id)
|
|
100
|
+
return;
|
|
101
|
+
try {
|
|
102
|
+
await service.cancelExecution(id, reason);
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
const message = err instanceof Error ? err.message : "Failed to cancel execution";
|
|
106
|
+
setError(message);
|
|
107
|
+
}
|
|
108
|
+
}, [service]);
|
|
109
|
+
const phase = (_c = (_b = execution === null || execution === void 0 ? void 0 : execution.status) === null || _b === void 0 ? void 0 : _b.phase) !== null && _c !== void 0 ? _c : ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED;
|
|
110
|
+
return { execution, phase, isConnected, error, start, cancel };
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=useAgentExecution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAgentExecution.js","sourceRoot":"","sources":["../../../src/execution/hooks/useAgentExecution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
2
|
+
export interface UseApprovalOptions {
|
|
3
|
+
executionId: string;
|
|
4
|
+
}
|
|
5
|
+
export interface UseApprovalReturn {
|
|
6
|
+
/** Submit an approval decision for a specific tool call. */
|
|
7
|
+
submit: (toolCallId: string, action: ApprovalAction, comment?: string) => Promise<void>;
|
|
8
|
+
/** True while an approval request is in flight. */
|
|
9
|
+
isSubmitting: boolean;
|
|
10
|
+
/** Error message from the last failed submission. Null when healthy. */
|
|
11
|
+
error: string | null;
|
|
12
|
+
/** Clear the current error state. */
|
|
13
|
+
clearError: () => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function useApproval(options: UseApprovalOptions): UseApprovalReturn;
|
|
16
|
+
//# sourceMappingURL=useApproval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useApproval.d.ts","sourceRoot":"","sources":["../../../src/execution/hooks/useApproval.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8DAA8D,CAAC;AAGnG,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,MAAM,EAAE,CACN,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAC;IACtB,wEAAwE;IACxE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qCAAqC;IACrC,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CA6B1E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useState } from "react";
|
|
3
|
+
import { useExecutionService } from "./useExecutionService";
|
|
4
|
+
export function useApproval(options) {
|
|
5
|
+
const service = useExecutionService();
|
|
6
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
7
|
+
const [error, setError] = useState(null);
|
|
8
|
+
const submit = useCallback(async (toolCallId, action, comment) => {
|
|
9
|
+
setIsSubmitting(true);
|
|
10
|
+
setError(null);
|
|
11
|
+
try {
|
|
12
|
+
await service.submitApproval(options.executionId, toolCallId, action, comment);
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
const message = err instanceof Error ? err.message : "Failed to submit approval";
|
|
16
|
+
setError(message);
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
setIsSubmitting(false);
|
|
20
|
+
}
|
|
21
|
+
}, [service, options.executionId]);
|
|
22
|
+
const clearError = useCallback(() => setError(null), []);
|
|
23
|
+
return { submit, isSubmitting, error, clearError };
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=useApproval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useApproval.js","sourceRoot":"","sources":["../../../src/execution/hooks/useApproval.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAqB5D,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EACH,UAAkB,EAClB,MAAsB,EACtB,OAAgB,EAChB,EAAE;QACF,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GACX,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC;YACnE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,eAAe,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,EACD,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAC/B,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ExecutionService } from "../services/execution-service";
|
|
2
|
+
/**
|
|
3
|
+
* Returns an {@link ExecutionService} bound to the transport from
|
|
4
|
+
* {@link StigmerTransportProvider}. The service instance is memoized
|
|
5
|
+
* for the lifetime of the transport.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useExecutionService(): ExecutionService;
|
|
8
|
+
//# sourceMappingURL=useExecutionService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useExecutionService.d.ts","sourceRoot":"","sources":["../../../src/execution/hooks/useExecutionService.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAE9F;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAGtD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { useStigmerTransport } from "@stigmer/rpc-client";
|
|
4
|
+
import { createExecutionService } from "../services/execution-service";
|
|
5
|
+
/**
|
|
6
|
+
* Returns an {@link ExecutionService} bound to the transport from
|
|
7
|
+
* {@link StigmerTransportProvider}. The service instance is memoized
|
|
8
|
+
* for the lifetime of the transport.
|
|
9
|
+
*/
|
|
10
|
+
export function useExecutionService() {
|
|
11
|
+
const transport = useStigmerTransport();
|
|
12
|
+
return useMemo(() => createExecutionService(transport), [transport]);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=useExecutionService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useExecutionService.js","sourceRoot":"","sources":["../../../src/execution/hooks/useExecutionService.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAyB,MAAM,+BAA+B,CAAC;AAE9F;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { ExecutionStream } from "./components/ExecutionStream";
|
|
2
|
+
export { ExecutionStatus } from "./components/ExecutionStatus";
|
|
3
|
+
export { OutputBlock } from "./components/OutputBlock";
|
|
4
|
+
export { ToolCallCard } from "./components/ToolCallCard";
|
|
5
|
+
export { ApprovalControls } from "./components/ApprovalControls";
|
|
6
|
+
export { SubAgentCard } from "./components/SubAgentCard";
|
|
7
|
+
export { MessageInput } from "./components/MessageInput";
|
|
8
|
+
export { MessageEntry, HumanMessageBubble, SystemMessageBlock } from "./components/MessageEntry";
|
|
9
|
+
export { useAgentExecution } from "./hooks/useAgentExecution";
|
|
10
|
+
export type { UseAgentExecutionOptions, UseAgentExecutionReturn } from "./hooks/useAgentExecution";
|
|
11
|
+
export { useApproval } from "./hooks/useApproval";
|
|
12
|
+
export type { UseApprovalOptions, UseApprovalReturn } from "./hooks/useApproval";
|
|
13
|
+
export { useExecutionService } from "./hooks/useExecutionService";
|
|
14
|
+
export { createExecutionService } from "./services/execution-service";
|
|
15
|
+
export type { ExecutionService, CreateExecutionInput, ListExecutionsBySessionOptions } from "./services/execution-service";
|
|
16
|
+
export { isTerminalPhase, phaseLabel, phaseVariant, toolCallStatusLabel, toolCallStatusVariant, isToolCallTerminal, subAgentStatusLabel, subAgentStatusVariant, isHumanMessage, isAiMessage, isToolMessage, isSystemMessage, buildSubAgentIndex, qualifiedToolName, formatDuration, } from "./helpers";
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAMjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEnG,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAMlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAM3H,OAAO,EACL,eAAe,EACf,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,WAAW,EACX,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Components
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
export { ExecutionStream } from "./components/ExecutionStream";
|
|
5
|
+
export { ExecutionStatus } from "./components/ExecutionStatus";
|
|
6
|
+
export { OutputBlock } from "./components/OutputBlock";
|
|
7
|
+
export { ToolCallCard } from "./components/ToolCallCard";
|
|
8
|
+
export { ApprovalControls } from "./components/ApprovalControls";
|
|
9
|
+
export { SubAgentCard } from "./components/SubAgentCard";
|
|
10
|
+
export { MessageInput } from "./components/MessageInput";
|
|
11
|
+
export { MessageEntry, HumanMessageBubble, SystemMessageBlock } from "./components/MessageEntry";
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Hooks
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
export { useAgentExecution } from "./hooks/useAgentExecution";
|
|
16
|
+
export { useApproval } from "./hooks/useApproval";
|
|
17
|
+
export { useExecutionService } from "./hooks/useExecutionService";
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Services (for non-React usage or custom wiring)
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
export { createExecutionService } from "./services/execution-service";
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Helpers
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
export { isTerminalPhase, phaseLabel, phaseVariant, toolCallStatusLabel, toolCallStatusVariant, isToolCallTerminal, subAgentStatusLabel, subAgentStatusVariant, isHumanMessage, isAiMessage, isToolMessage, isSystemMessage, buildSubAgentIndex, qualifiedToolName, formatDuration, } from "./helpers";
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEjG,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,8EAA8E;AAC9E,kDAAkD;AAClD,8EAA8E;AAE9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAGtE,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,OAAO,EACL,eAAe,EACf,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,WAAW,EACX,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,WAAW,CAAC"}
|