@stigmer/react 0.0.36
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 +248 -0
- package/agent/components/AgentCard.d.ts +9 -0
- package/agent/components/AgentCard.d.ts.map +1 -0
- package/agent/components/AgentCard.js +26 -0
- package/agent/components/AgentCard.js.map +1 -0
- package/agent/components/AgentOverview.d.ts +7 -0
- package/agent/components/AgentOverview.d.ts.map +1 -0
- package/agent/components/AgentOverview.js +36 -0
- package/agent/components/AgentOverview.js.map +1 -0
- package/agent/components/AgentPicker.d.ts +17 -0
- package/agent/components/AgentPicker.d.ts.map +1 -0
- package/agent/components/AgentPicker.js +86 -0
- package/agent/components/AgentPicker.js.map +1 -0
- package/agent/hooks/useAgentSearch.d.ts +28 -0
- package/agent/hooks/useAgentSearch.d.ts.map +1 -0
- package/agent/hooks/useAgentSearch.js +63 -0
- package/agent/hooks/useAgentSearch.js.map +1 -0
- package/agent/index.d.ts +9 -0
- package/agent/index.d.ts.map +1 -0
- package/agent/index.js +7 -0
- package/agent/index.js.map +1 -0
- package/agent-execution/components/ApprovalControls.d.ts +10 -0
- package/agent-execution/components/ApprovalControls.d.ts.map +1 -0
- package/agent-execution/components/ApprovalControls.js +19 -0
- package/agent-execution/components/ApprovalControls.js.map +1 -0
- package/agent-execution/components/ExecutionStatus.d.ts +8 -0
- package/agent-execution/components/ExecutionStatus.d.ts.map +1 -0
- package/agent-execution/components/ExecutionStatus.js +14 -0
- package/agent-execution/components/ExecutionStatus.js.map +1 -0
- package/agent-execution/components/ExecutionStream.d.ts +16 -0
- package/agent-execution/components/ExecutionStream.d.ts.map +1 -0
- package/agent-execution/components/ExecutionStream.js +39 -0
- package/agent-execution/components/ExecutionStream.js.map +1 -0
- package/agent-execution/components/MessageEntry.d.ts +17 -0
- package/agent-execution/components/MessageEntry.d.ts.map +1 -0
- package/agent-execution/components/MessageEntry.js +36 -0
- package/agent-execution/components/MessageEntry.js.map +1 -0
- package/agent-execution/components/MessageInput.d.ts +10 -0
- package/agent-execution/components/MessageInput.d.ts.map +1 -0
- package/agent-execution/components/MessageInput.js +27 -0
- package/agent-execution/components/MessageInput.js.map +1 -0
- package/agent-execution/components/OutputBlock.d.ts +9 -0
- package/agent-execution/components/OutputBlock.d.ts.map +1 -0
- package/agent-execution/components/OutputBlock.js +15 -0
- package/agent-execution/components/OutputBlock.js.map +1 -0
- package/agent-execution/components/SubAgentCard.d.ts +11 -0
- package/agent-execution/components/SubAgentCard.d.ts.map +1 -0
- package/agent-execution/components/SubAgentCard.js +19 -0
- package/agent-execution/components/SubAgentCard.js.map +1 -0
- package/agent-execution/components/ToolCallCard.d.ts +11 -0
- package/agent-execution/components/ToolCallCard.d.ts.map +1 -0
- package/agent-execution/components/ToolCallCard.js +25 -0
- package/agent-execution/components/ToolCallCard.js.map +1 -0
- package/agent-execution/helpers.d.ts +35 -0
- package/agent-execution/helpers.d.ts.map +1 -0
- package/agent-execution/helpers.js +157 -0
- package/agent-execution/helpers.js.map +1 -0
- package/agent-execution/hooks/useAgentExecution.d.ts +21 -0
- package/agent-execution/hooks/useAgentExecution.d.ts.map +1 -0
- package/agent-execution/hooks/useAgentExecution.js +99 -0
- package/agent-execution/hooks/useAgentExecution.js.map +1 -0
- package/agent-execution/hooks/useApproval.d.ts +12 -0
- package/agent-execution/hooks/useApproval.d.ts.map +1 -0
- package/agent-execution/hooks/useApproval.js +32 -0
- package/agent-execution/hooks/useApproval.js.map +1 -0
- package/agent-execution/index.d.ts +14 -0
- package/agent-execution/index.d.ts.map +1 -0
- package/agent-execution/index.js +15 -0
- package/agent-execution/index.js.map +1 -0
- package/catalog/components/ResourceSearchCard.d.ts +23 -0
- package/catalog/components/ResourceSearchCard.d.ts.map +1 -0
- package/catalog/components/ResourceSearchCard.js +36 -0
- package/catalog/components/ResourceSearchCard.js.map +1 -0
- package/catalog/index.d.ts +4 -0
- package/catalog/index.d.ts.map +1 -0
- package/catalog/index.js +5 -0
- package/catalog/index.js.map +1 -0
- package/catalog/internal/time.d.ts +13 -0
- package/catalog/internal/time.d.ts.map +1 -0
- package/catalog/internal/time.js +41 -0
- package/catalog/internal/time.js.map +1 -0
- package/context.d.ts +12 -0
- package/context.d.ts.map +1 -0
- package/context.js +13 -0
- package/context.js.map +1 -0
- package/hooks.d.ts +19 -0
- package/hooks.d.ts.map +1 -0
- package/hooks.js +28 -0
- package/hooks.js.map +1 -0
- package/index.d.ts +4 -0
- package/index.d.ts.map +1 -0
- package/index.js +6 -0
- package/index.js.map +1 -0
- package/internal/badge.d.ts +8 -0
- package/internal/badge.d.ts.map +1 -0
- package/internal/badge.js +34 -0
- package/internal/badge.js.map +1 -0
- package/internal/button.d.ts +9 -0
- package/internal/button.d.ts.map +1 -0
- package/internal/button.js +36 -0
- package/internal/button.js.map +1 -0
- package/internal/collapsible.d.ts +6 -0
- package/internal/collapsible.d.ts.map +1 -0
- package/internal/collapsible.js +14 -0
- package/internal/collapsible.js.map +1 -0
- package/internal/section.d.ts +8 -0
- package/internal/section.d.ts.map +1 -0
- package/internal/section.js +6 -0
- package/internal/section.js.map +1 -0
- package/internal/textarea.d.ts +4 -0
- package/internal/textarea.d.ts.map +1 -0
- package/internal/textarea.js +9 -0
- package/internal/textarea.js.map +1 -0
- package/mcp-server/hooks/useMcpServerSearch.d.ts +25 -0
- package/mcp-server/hooks/useMcpServerSearch.d.ts.map +1 -0
- package/mcp-server/hooks/useMcpServerSearch.js +57 -0
- package/mcp-server/hooks/useMcpServerSearch.js.map +1 -0
- package/mcp-server/index.d.ts +3 -0
- package/mcp-server/index.d.ts.map +1 -0
- package/mcp-server/index.js +3 -0
- package/mcp-server/index.js.map +1 -0
- package/package.json +75 -0
- package/provider.d.ts +55 -0
- package/provider.d.ts.map +1 -0
- package/provider.js +34 -0
- package/provider.js.map +1 -0
- package/session/components/AgentSessionHistory.d.ts +8 -0
- package/session/components/AgentSessionHistory.d.ts.map +1 -0
- package/session/components/AgentSessionHistory.js +11 -0
- package/session/components/AgentSessionHistory.js.map +1 -0
- package/session/components/SessionCard.d.ts +8 -0
- package/session/components/SessionCard.d.ts.map +1 -0
- package/session/components/SessionCard.js +57 -0
- package/session/components/SessionCard.js.map +1 -0
- package/session/hooks/useAgentSessionList.d.ts +21 -0
- package/session/hooks/useAgentSessionList.d.ts.map +1 -0
- package/session/hooks/useAgentSessionList.js +90 -0
- package/session/hooks/useAgentSessionList.js.map +1 -0
- package/session/index.d.ts +7 -0
- package/session/index.d.ts.map +1 -0
- package/session/index.js +6 -0
- package/session/index.js.map +1 -0
- package/skill/hooks/useSkillSearch.d.ts +25 -0
- package/skill/hooks/useSkillSearch.d.ts.map +1 -0
- package/skill/hooks/useSkillSearch.js +57 -0
- package/skill/hooks/useSkillSearch.js.map +1 -0
- package/skill/index.d.ts +3 -0
- package/skill/index.d.ts.map +1 -0
- package/skill/index.js +3 -0
- package/skill/index.js.map +1 -0
- package/src/agent/components/AgentCard.tsx +125 -0
- package/src/agent/components/AgentOverview.tsx +209 -0
- package/src/agent/components/AgentPicker.tsx +255 -0
- package/src/agent/hooks/useAgentSearch.ts +94 -0
- package/src/agent/index.ts +17 -0
- package/src/agent-execution/components/ApprovalControls.tsx +99 -0
- package/src/agent-execution/components/ExecutionStatus.tsx +33 -0
- package/src/agent-execution/components/ExecutionStream.tsx +148 -0
- package/src/agent-execution/components/MessageEntry.tsx +125 -0
- package/src/agent-execution/components/MessageInput.tsx +70 -0
- package/src/agent-execution/components/OutputBlock.tsx +43 -0
- package/src/agent-execution/components/SubAgentCard.tsx +138 -0
- package/src/agent-execution/components/ToolCallCard.tsx +153 -0
- package/src/agent-execution/helpers.ts +193 -0
- package/src/agent-execution/hooks/useAgentExecution.ts +147 -0
- package/src/agent-execution/hooks/useApproval.ts +56 -0
- package/src/agent-execution/index.ts +46 -0
- package/src/catalog/components/ResourceSearchCard.tsx +137 -0
- package/src/catalog/index.ts +6 -0
- package/src/catalog/internal/time.ts +40 -0
- package/src/context.ts +15 -0
- package/src/hooks.ts +32 -0
- package/src/index.ts +6 -0
- package/src/internal/badge.tsx +52 -0
- package/src/internal/button.tsx +60 -0
- package/src/internal/collapsible.tsx +21 -0
- package/src/internal/section.tsx +18 -0
- package/src/internal/textarea.tsx +23 -0
- package/src/mcp-server/hooks/useMcpServerSearch.ts +79 -0
- package/src/mcp-server/index.ts +6 -0
- package/src/provider.tsx +73 -0
- package/src/session/components/AgentSessionHistory.tsx +109 -0
- package/src/session/components/SessionCard.tsx +113 -0
- package/src/session/hooks/useAgentSessionList.ts +117 -0
- package/src/session/index.ts +13 -0
- package/src/skill/hooks/useSkillSearch.ts +79 -0
- package/src/skill/index.ts +6 -0
- package/src/styles.css +72 -0
- package/styles.css +2 -0
|
@@ -0,0 +1,11 @@
|
|
|
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
|
+
onApproval?: (toolCallId: string, action: ApprovalAction, comment?: string) => Promise<void>;
|
|
6
|
+
isApprovalSubmitting?: boolean;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function ToolCallCard({ toolCall, onApproval, isApprovalSubmitting, className, }: ToolCallCardProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ToolCallCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolCallCard.d.ts","sourceRoot":"","sources":["../../../src/agent-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,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,2CAiGnB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
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/badge";
|
|
5
|
+
import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "../../internal/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?.(toolCall.id, action, comment);
|
|
19
|
+
}, [onApproval, toolCall.id]);
|
|
20
|
+
return (_jsx(Collapsible, { open: open || isWaitingApproval, onOpenChange: setOpen, children: _jsxs("div", { className: cn("bg-card text-card-foreground rounded-lg border text-sm", isWaitingApproval && "border-primary/40 ring-primary/20 ring-1", className), children: [_jsxs(CollapsibleTrigger, { className: "hover:bg-muted/50 flex w-full items-center gap-2 rounded-t-lg px-3 py-2 text-left transition-colors", children: [_jsx(ChevronRight, { className: cn("text-muted-foreground size-3.5 shrink-0 transition-transform", (open || isWaitingApproval) && "rotate-90") }), isRunning ? (_jsx(Loader2, { className: "text-muted-foreground size-3.5 shrink-0 animate-spin" })) : (_jsx(Wrench, { className: "text-muted-foreground size-3.5 shrink-0" })), _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: "text-muted-foreground shrink-0 text-[10px]", children: duration }))] }), _jsxs(CollapsibleContent, { children: [_jsxs("div", { className: "space-y-2 border-t px-3 py-2", children: [toolCall.args && Object.keys(toolCall.args).length > 0 && (_jsx(ToolCallSection, { label: "Arguments", children: _jsx("pre", { className: "bg-muted overflow-x-auto rounded p-2 text-[11px] leading-relaxed", children: JSON.stringify(toolCall.args, null, 2) }) })), toolCall.result && (_jsx(ToolCallSection, { label: "Result", children: _jsx("pre", { className: "bg-muted overflow-x-auto rounded p-2 text-[11px] leading-relaxed whitespace-pre-wrap", children: toolCall.result }) })), toolCall.error && (_jsx(ToolCallSection, { label: "Error", children: _jsx("p", { className: "text-destructive text-xs", children: toolCall.error }) })), toolCall.isStreaming && !toolCall.result && (_jsxs("div", { className: "text-muted-foreground flex items-center gap-1.5 text-xs", 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 || `Execute tool: ${displayName}`, onSubmit: handleApproval, isSubmitting: isApprovalSubmitting }) }))] })] }) }));
|
|
21
|
+
}
|
|
22
|
+
function ToolCallSection({ label, children, }) {
|
|
23
|
+
return (_jsxs("div", { children: [_jsx("p", { className: "text-muted-foreground mb-1 text-[10px] font-medium tracking-wider uppercase", children: label }), children] }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ToolCallCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolCallCard.js","sourceRoot":"","sources":["../../../src/agent-execution/components/ToolCallCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
|
20
|
+
* invocation, enabling O(1) lookup when rendering tool calls that represent
|
|
21
|
+
* sub-agent delegations.
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildSubAgentIndex(execution: AgentExecution): Map<string, SubAgentExecution>;
|
|
24
|
+
/**
|
|
25
|
+
* Format a qualified tool name: "mcp-server/tool-name" when an MCP server
|
|
26
|
+
* slug is present, or just "tool-name" for built-in sandbox tools.
|
|
27
|
+
*/
|
|
28
|
+
export declare function qualifiedToolName(name: string, mcpServerSlug: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Format elapsed time between two ISO timestamps as a human-readable duration.
|
|
31
|
+
* Returns null if either timestamp is missing.
|
|
32
|
+
*/
|
|
33
|
+
export declare function formatDuration(startedAt: string, completedAt: string): string | null;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/agent-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,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;AAcxE,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;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,cAAc,GACxB,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAIhC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAG7E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAUf"}
|
|
@@ -0,0 +1,157 @@
|
|
|
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
|
+
return PHASE_LABELS[phase] ?? "Unknown";
|
|
27
|
+
}
|
|
28
|
+
const PHASE_VARIANTS = {
|
|
29
|
+
[ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED]: "outline",
|
|
30
|
+
[ExecutionPhase.EXECUTION_PENDING]: "outline",
|
|
31
|
+
[ExecutionPhase.EXECUTION_IN_PROGRESS]: "default",
|
|
32
|
+
[ExecutionPhase.EXECUTION_COMPLETED]: "secondary",
|
|
33
|
+
[ExecutionPhase.EXECUTION_FAILED]: "destructive",
|
|
34
|
+
[ExecutionPhase.EXECUTION_CANCELLED]: "outline",
|
|
35
|
+
[ExecutionPhase.EXECUTION_TERMINATED]: "destructive",
|
|
36
|
+
[ExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL]: "default",
|
|
37
|
+
[ExecutionPhase.EXECUTION_PAUSED]: "outline",
|
|
38
|
+
};
|
|
39
|
+
export function phaseVariant(phase) {
|
|
40
|
+
return PHASE_VARIANTS[phase] ?? "outline";
|
|
41
|
+
}
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// Tool call status utilities
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
const TOOL_CALL_STATUS_LABELS = {
|
|
46
|
+
[ToolCallStatus.TOOL_CALL_STATUS_UNSPECIFIED]: "Unknown",
|
|
47
|
+
[ToolCallStatus.TOOL_CALL_PENDING]: "Pending",
|
|
48
|
+
[ToolCallStatus.TOOL_CALL_RUNNING]: "Running",
|
|
49
|
+
[ToolCallStatus.TOOL_CALL_COMPLETED]: "Completed",
|
|
50
|
+
[ToolCallStatus.TOOL_CALL_FAILED]: "Failed",
|
|
51
|
+
[ToolCallStatus.TOOL_CALL_WAITING_APPROVAL]: "Awaiting Approval",
|
|
52
|
+
[ToolCallStatus.TOOL_CALL_SKIPPED]: "Skipped",
|
|
53
|
+
};
|
|
54
|
+
export function toolCallStatusLabel(status) {
|
|
55
|
+
return TOOL_CALL_STATUS_LABELS[status] ?? "Unknown";
|
|
56
|
+
}
|
|
57
|
+
const TOOL_CALL_STATUS_VARIANTS = {
|
|
58
|
+
[ToolCallStatus.TOOL_CALL_STATUS_UNSPECIFIED]: "outline",
|
|
59
|
+
[ToolCallStatus.TOOL_CALL_PENDING]: "outline",
|
|
60
|
+
[ToolCallStatus.TOOL_CALL_RUNNING]: "default",
|
|
61
|
+
[ToolCallStatus.TOOL_CALL_COMPLETED]: "secondary",
|
|
62
|
+
[ToolCallStatus.TOOL_CALL_FAILED]: "destructive",
|
|
63
|
+
[ToolCallStatus.TOOL_CALL_WAITING_APPROVAL]: "default",
|
|
64
|
+
[ToolCallStatus.TOOL_CALL_SKIPPED]: "outline",
|
|
65
|
+
};
|
|
66
|
+
export function toolCallStatusVariant(status) {
|
|
67
|
+
return TOOL_CALL_STATUS_VARIANTS[status] ?? "outline";
|
|
68
|
+
}
|
|
69
|
+
export function isToolCallTerminal(status) {
|
|
70
|
+
return (status === ToolCallStatus.TOOL_CALL_COMPLETED ||
|
|
71
|
+
status === ToolCallStatus.TOOL_CALL_FAILED ||
|
|
72
|
+
status === ToolCallStatus.TOOL_CALL_SKIPPED);
|
|
73
|
+
}
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
// Sub-agent status utilities
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
const SUB_AGENT_STATUS_LABELS = {
|
|
78
|
+
[SubAgentStatus.SUB_AGENT_STATUS_UNSPECIFIED]: "Unknown",
|
|
79
|
+
[SubAgentStatus.SUB_AGENT_PENDING]: "Pending",
|
|
80
|
+
[SubAgentStatus.SUB_AGENT_IN_PROGRESS]: "Running",
|
|
81
|
+
[SubAgentStatus.SUB_AGENT_COMPLETED]: "Completed",
|
|
82
|
+
[SubAgentStatus.SUB_AGENT_FAILED]: "Failed",
|
|
83
|
+
[SubAgentStatus.SUB_AGENT_CANCELLED]: "Cancelled",
|
|
84
|
+
};
|
|
85
|
+
export function subAgentStatusLabel(status) {
|
|
86
|
+
return SUB_AGENT_STATUS_LABELS[status] ?? "Unknown";
|
|
87
|
+
}
|
|
88
|
+
const SUB_AGENT_STATUS_VARIANTS = {
|
|
89
|
+
[SubAgentStatus.SUB_AGENT_STATUS_UNSPECIFIED]: "outline",
|
|
90
|
+
[SubAgentStatus.SUB_AGENT_PENDING]: "outline",
|
|
91
|
+
[SubAgentStatus.SUB_AGENT_IN_PROGRESS]: "default",
|
|
92
|
+
[SubAgentStatus.SUB_AGENT_COMPLETED]: "secondary",
|
|
93
|
+
[SubAgentStatus.SUB_AGENT_FAILED]: "destructive",
|
|
94
|
+
[SubAgentStatus.SUB_AGENT_CANCELLED]: "outline",
|
|
95
|
+
};
|
|
96
|
+
export function subAgentStatusVariant(status) {
|
|
97
|
+
return SUB_AGENT_STATUS_VARIANTS[status] ?? "outline";
|
|
98
|
+
}
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
// Message type utilities
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
export function isHumanMessage(type) {
|
|
103
|
+
return type === MessageType.MESSAGE_HUMAN;
|
|
104
|
+
}
|
|
105
|
+
export function isAiMessage(type) {
|
|
106
|
+
return type === MessageType.MESSAGE_AI;
|
|
107
|
+
}
|
|
108
|
+
export function isToolMessage(type) {
|
|
109
|
+
return type === MessageType.MESSAGE_TOOL;
|
|
110
|
+
}
|
|
111
|
+
export function isSystemMessage(type) {
|
|
112
|
+
return type === MessageType.MESSAGE_SYSTEM;
|
|
113
|
+
}
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
115
|
+
// Execution-level helpers
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
/**
|
|
118
|
+
* Build an index of sub-agent executions keyed by their ID.
|
|
119
|
+
* The sub-agent ID matches the tool call ID from the parent's "task" tool
|
|
120
|
+
* invocation, enabling O(1) lookup when rendering tool calls that represent
|
|
121
|
+
* sub-agent delegations.
|
|
122
|
+
*/
|
|
123
|
+
export function buildSubAgentIndex(execution) {
|
|
124
|
+
const subAgents = execution.status?.subAgentExecutions;
|
|
125
|
+
if (!subAgents || subAgents.length === 0)
|
|
126
|
+
return new Map();
|
|
127
|
+
return new Map(subAgents.map((sa) => [sa.id, sa]));
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Format a qualified tool name: "mcp-server/tool-name" when an MCP server
|
|
131
|
+
* slug is present, or just "tool-name" for built-in sandbox tools.
|
|
132
|
+
*/
|
|
133
|
+
export function qualifiedToolName(name, mcpServerSlug) {
|
|
134
|
+
if (mcpServerSlug)
|
|
135
|
+
return `${mcpServerSlug}/${name}`;
|
|
136
|
+
return name;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Format elapsed time between two ISO timestamps as a human-readable duration.
|
|
140
|
+
* Returns null if either timestamp is missing.
|
|
141
|
+
*/
|
|
142
|
+
export function formatDuration(startedAt, completedAt) {
|
|
143
|
+
if (!startedAt || !completedAt)
|
|
144
|
+
return null;
|
|
145
|
+
const ms = new Date(completedAt).getTime() - new Date(startedAt).getTime();
|
|
146
|
+
if (ms < 0)
|
|
147
|
+
return null;
|
|
148
|
+
if (ms < 1000)
|
|
149
|
+
return `${ms}ms`;
|
|
150
|
+
const seconds = ms / 1000;
|
|
151
|
+
if (seconds < 60)
|
|
152
|
+
return `${seconds.toFixed(1)}s`;
|
|
153
|
+
const minutes = Math.floor(seconds / 60);
|
|
154
|
+
const remainingSeconds = Math.round(seconds % 60);
|
|
155
|
+
return `${minutes}m ${remainingSeconds}s`;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/agent-execution/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
export interface CreateExecutionInput {
|
|
4
|
+
agentId?: string;
|
|
5
|
+
sessionId?: string;
|
|
6
|
+
message: string;
|
|
7
|
+
org: string;
|
|
8
|
+
}
|
|
9
|
+
export interface UseAgentExecutionOptions {
|
|
10
|
+
executionId?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface UseAgentExecutionReturn {
|
|
13
|
+
execution: AgentExecution | null;
|
|
14
|
+
phase: ExecutionPhase;
|
|
15
|
+
isConnected: boolean;
|
|
16
|
+
error: string | null;
|
|
17
|
+
start: (input: CreateExecutionInput) => Promise<void>;
|
|
18
|
+
cancel: (reason?: string) => Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export declare function useAgentExecution(options?: UseAgentExecutionOptions): UseAgentExecutionReturn;
|
|
21
|
+
//# sourceMappingURL=useAgentExecution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAgentExecution.d.ts","sourceRoot":"","sources":["../../../src/agent-execution/hooks/useAgentExecution.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,8DAA8D,CAAC;AAM9F,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC;IACjC,KAAK,EAAE,cAAc,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,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,CAkHzB"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
3
|
+
import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
4
|
+
import { create } from "@bufbuild/protobuf";
|
|
5
|
+
import { CancelAgentExecutionInputSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/io_pb";
|
|
6
|
+
import { useStigmer } from "../../hooks";
|
|
7
|
+
import { isTerminalPhase } from "../helpers";
|
|
8
|
+
export function useAgentExecution(options) {
|
|
9
|
+
const stigmer = useStigmer();
|
|
10
|
+
const [execution, setExecution] = useState(null);
|
|
11
|
+
const [isConnected, setIsConnected] = useState(false);
|
|
12
|
+
const [error, setError] = useState(null);
|
|
13
|
+
const activeExecutionIdRef = useRef(options?.executionId ?? null);
|
|
14
|
+
const abortRef = useRef(null);
|
|
15
|
+
const subscribe = useCallback((executionId) => {
|
|
16
|
+
abortRef.current?.abort();
|
|
17
|
+
const controller = new AbortController();
|
|
18
|
+
abortRef.current = controller;
|
|
19
|
+
activeExecutionIdRef.current = executionId;
|
|
20
|
+
setIsConnected(true);
|
|
21
|
+
setError(null);
|
|
22
|
+
(async () => {
|
|
23
|
+
try {
|
|
24
|
+
const stream = stigmer.agentExecution.subscribe(executionId, controller.signal);
|
|
25
|
+
for await (const update of stream) {
|
|
26
|
+
if (controller.signal.aborted)
|
|
27
|
+
break;
|
|
28
|
+
setExecution(update);
|
|
29
|
+
const phase = update.status?.phase ??
|
|
30
|
+
ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED;
|
|
31
|
+
if (isTerminalPhase(phase)) {
|
|
32
|
+
setIsConnected(false);
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
if (controller.signal.aborted)
|
|
39
|
+
return;
|
|
40
|
+
const message = err instanceof Error ? err.message : "Stream disconnected";
|
|
41
|
+
setError(message);
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
if (!controller.signal.aborted) {
|
|
45
|
+
setIsConnected(false);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
})();
|
|
49
|
+
}, [stigmer]);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (options?.executionId) {
|
|
52
|
+
subscribe(options.executionId);
|
|
53
|
+
}
|
|
54
|
+
return () => {
|
|
55
|
+
abortRef.current?.abort();
|
|
56
|
+
};
|
|
57
|
+
}, [options?.executionId, subscribe]);
|
|
58
|
+
const start = useCallback(async (input) => {
|
|
59
|
+
setError(null);
|
|
60
|
+
setExecution(null);
|
|
61
|
+
try {
|
|
62
|
+
const created = await stigmer.agentExecution.create({
|
|
63
|
+
name: "",
|
|
64
|
+
org: input.org,
|
|
65
|
+
agentId: input.agentId,
|
|
66
|
+
sessionId: input.sessionId,
|
|
67
|
+
message: input.message,
|
|
68
|
+
});
|
|
69
|
+
const executionId = created.metadata?.id;
|
|
70
|
+
if (!executionId) {
|
|
71
|
+
throw new Error("Created execution missing metadata.id");
|
|
72
|
+
}
|
|
73
|
+
setExecution(created);
|
|
74
|
+
subscribe(executionId);
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
const message = err instanceof Error ? err.message : "Failed to create execution";
|
|
78
|
+
setError(message);
|
|
79
|
+
}
|
|
80
|
+
}, [stigmer, subscribe]);
|
|
81
|
+
const cancel = useCallback(async (reason) => {
|
|
82
|
+
const id = activeExecutionIdRef.current;
|
|
83
|
+
if (!id)
|
|
84
|
+
return;
|
|
85
|
+
try {
|
|
86
|
+
await stigmer.agentExecution.cancel(create(CancelAgentExecutionInputSchema, {
|
|
87
|
+
id,
|
|
88
|
+
reason: reason ?? "",
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
const message = err instanceof Error ? err.message : "Failed to cancel execution";
|
|
93
|
+
setError(message);
|
|
94
|
+
}
|
|
95
|
+
}, [stigmer]);
|
|
96
|
+
const phase = execution?.status?.phase ?? ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED;
|
|
97
|
+
return { execution, phase, isConnected, error, start, cancel };
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=useAgentExecution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAgentExecution.js","sourceRoot":"","sources":["../../../src/agent-execution/hooks/useAgentExecution.ts"],"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
|
+
export interface UseApprovalOptions {
|
|
3
|
+
executionId: string;
|
|
4
|
+
}
|
|
5
|
+
export interface UseApprovalReturn {
|
|
6
|
+
submit: (toolCallId: string, action: ApprovalAction, comment?: string) => Promise<void>;
|
|
7
|
+
isSubmitting: boolean;
|
|
8
|
+
error: string | null;
|
|
9
|
+
clearError: () => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function useApproval(options: UseApprovalOptions): UseApprovalReturn;
|
|
12
|
+
//# sourceMappingURL=useApproval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useApproval.d.ts","sourceRoot":"","sources":["../../../src/agent-execution/hooks/useApproval.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8DAA8D,CAAC;AAKnG,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,CACN,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CAgC1E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useState } from "react";
|
|
3
|
+
import { create } from "@bufbuild/protobuf";
|
|
4
|
+
import { SubmitApprovalInputSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/io_pb";
|
|
5
|
+
import { useStigmer } from "../../hooks";
|
|
6
|
+
export function useApproval(options) {
|
|
7
|
+
const stigmer = useStigmer();
|
|
8
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
9
|
+
const [error, setError] = useState(null);
|
|
10
|
+
const submit = useCallback(async (toolCallId, action, comment) => {
|
|
11
|
+
setIsSubmitting(true);
|
|
12
|
+
setError(null);
|
|
13
|
+
try {
|
|
14
|
+
await stigmer.agentExecution.submitApproval(create(SubmitApprovalInputSchema, {
|
|
15
|
+
agentExecutionId: options.executionId,
|
|
16
|
+
toolCallId,
|
|
17
|
+
action,
|
|
18
|
+
comment: comment ?? "",
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
const message = err instanceof Error ? err.message : "Failed to submit approval";
|
|
23
|
+
setError(message);
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
setIsSubmitting(false);
|
|
27
|
+
}
|
|
28
|
+
}, [stigmer, options.executionId]);
|
|
29
|
+
const clearError = useCallback(() => setError(null), []);
|
|
30
|
+
return { submit, isSubmitting, error, clearError };
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=useApproval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useApproval.js","sourceRoot":"","sources":["../../../src/agent-execution/hooks/useApproval.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4DAA4D,CAAC;AACvG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAiBzC,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,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,EAAE,UAAkB,EAAE,MAAsB,EAAE,OAAgB,EAAE,EAAE;QACrE,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,cAAc,CAAC,cAAc,CACzC,MAAM,CAAC,yBAAyB,EAAE;gBAChC,gBAAgB,EAAE,OAAO,CAAC,WAAW;gBACrC,UAAU;gBACV,MAAM;gBACN,OAAO,EAAE,OAAO,IAAI,EAAE;aACvB,CAAC,CACH,CAAC;QACJ,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,14 @@
|
|
|
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, CreateExecutionInput, } from "./hooks/useAgentExecution";
|
|
11
|
+
export { useApproval } from "./hooks/useApproval";
|
|
12
|
+
export type { UseApprovalOptions, UseApprovalReturn, } from "./hooks/useApproval";
|
|
13
|
+
export { isTerminalPhase, phaseLabel, phaseVariant, toolCallStatusLabel, toolCallStatusVariant, isToolCallTerminal, subAgentStatusLabel, subAgentStatusVariant, isHumanMessage, isAiMessage, isToolMessage, isSystemMessage, buildSubAgentIndex, qualifiedToolName, formatDuration, } from "./helpers";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-execution/index.ts"],"names":[],"mappings":"AACA,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,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EACV,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAG7B,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,15 @@
|
|
|
1
|
+
// Components
|
|
2
|
+
export { ExecutionStream } from "./components/ExecutionStream";
|
|
3
|
+
export { ExecutionStatus } from "./components/ExecutionStatus";
|
|
4
|
+
export { OutputBlock } from "./components/OutputBlock";
|
|
5
|
+
export { ToolCallCard } from "./components/ToolCallCard";
|
|
6
|
+
export { ApprovalControls } from "./components/ApprovalControls";
|
|
7
|
+
export { SubAgentCard } from "./components/SubAgentCard";
|
|
8
|
+
export { MessageInput } from "./components/MessageInput";
|
|
9
|
+
export { MessageEntry, HumanMessageBubble, SystemMessageBlock, } from "./components/MessageEntry";
|
|
10
|
+
// Hooks
|
|
11
|
+
export { useAgentExecution } from "./hooks/useAgentExecution";
|
|
12
|
+
export { useApproval } from "./hooks/useApproval";
|
|
13
|
+
// Helpers
|
|
14
|
+
export { isTerminalPhase, phaseLabel, phaseVariant, toolCallStatusLabel, toolCallStatusVariant, isToolCallTerminal, subAgentStatusLabel, subAgentStatusVariant, isHumanMessage, isAiMessage, isToolMessage, isSystemMessage, buildSubAgentIndex, qualifiedToolName, formatDuration, } from "./helpers";
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent-execution/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,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,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,QAAQ;AACR,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAO9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMlD,UAAU;AACV,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,23 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { SearchResult } from "@stigmer/protos/ai/stigmer/search/v1/io_pb";
|
|
3
|
+
export interface ResourceSearchCardProps {
|
|
4
|
+
/** The search result to display. */
|
|
5
|
+
result: SearchResult;
|
|
6
|
+
/** When provided, the card renders as an `<a>` element with this URL. */
|
|
7
|
+
href?: string;
|
|
8
|
+
/** Click handler for SPA navigation or custom actions. */
|
|
9
|
+
onClick?: () => void;
|
|
10
|
+
/** Override the auto-detected icon derived from `result.kind`. */
|
|
11
|
+
icon?: ReactNode;
|
|
12
|
+
/** Additional CSS class names on the root element. */
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A card component for displaying any Stigmer resource search result
|
|
17
|
+
* (agent, skill, MCP server) in a grid catalog layout.
|
|
18
|
+
*
|
|
19
|
+
* Auto-selects the icon based on `result.kind`. Renders as an `<a>` tag
|
|
20
|
+
* when `href` is provided, otherwise as a `<div>`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function ResourceSearchCard({ result, href, onClick, icon, className, }: ResourceSearchCardProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
//# sourceMappingURL=ResourceSearchCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourceSearchCard.d.ts","sourceRoot":"","sources":["../../../src/catalog/components/ResourceSearchCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAkB/E,MAAM,WAAW,uBAAuB;IACtC,oCAAoC;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kEAAkE;IAClE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,SAAS,GACV,EAAE,uBAAuB,2CA2FzB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
3
|
+
import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
|
|
4
|
+
import { Bot, FileCode2, Server, Globe, Box } from "lucide-react";
|
|
5
|
+
import { cn } from "@stigmer/theme";
|
|
6
|
+
import { Badge } from "../../internal/badge";
|
|
7
|
+
import { formatRelativeTime, toDate } from "../internal/time";
|
|
8
|
+
const KIND_ICON = {
|
|
9
|
+
[ApiResourceKind.agent]: _jsx(Bot, { className: "text-muted-foreground size-4" }),
|
|
10
|
+
[ApiResourceKind.skill]: _jsx(FileCode2, { className: "text-muted-foreground size-4" }),
|
|
11
|
+
[ApiResourceKind.mcp_server]: _jsx(Server, { className: "text-muted-foreground size-4" }),
|
|
12
|
+
};
|
|
13
|
+
const FALLBACK_ICON = _jsx(Box, { className: "text-muted-foreground size-4" });
|
|
14
|
+
/**
|
|
15
|
+
* A card component for displaying any Stigmer resource search result
|
|
16
|
+
* (agent, skill, MCP server) in a grid catalog layout.
|
|
17
|
+
*
|
|
18
|
+
* Auto-selects the icon based on `result.kind`. Renders as an `<a>` tag
|
|
19
|
+
* when `href` is provided, otherwise as a `<div>`.
|
|
20
|
+
*/
|
|
21
|
+
export function ResourceSearchCard({ result, href, onClick, icon, className, }) {
|
|
22
|
+
const isPublic = result.visibility === ApiResourceVisibility.visibility_public;
|
|
23
|
+
const resolvedIcon = icon ?? KIND_ICON[result.kind] ?? FALLBACK_ICON;
|
|
24
|
+
const Tag = href ? "a" : "div";
|
|
25
|
+
const interactive = !!(onClick || href);
|
|
26
|
+
return (_jsxs(Tag, { href: href, onClick: onClick, role: interactive ? "button" : undefined, tabIndex: interactive ? 0 : undefined, onKeyDown: interactive
|
|
27
|
+
? (e) => {
|
|
28
|
+
if (onClick && (e.key === "Enter" || e.key === " ")) {
|
|
29
|
+
e.preventDefault();
|
|
30
|
+
onClick();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
: undefined, className: cn("bg-card text-card-foreground flex flex-col rounded-xl border p-4", interactive &&
|
|
34
|
+
"hover:bg-accent/50 focus-visible:ring-ring cursor-pointer transition-colors focus-visible:ring-2 focus-visible:outline-none", className), children: [_jsxs("div", { className: "flex items-start gap-3", children: [_jsx("div", { className: "bg-muted flex size-9 shrink-0 items-center justify-center rounded-lg", children: resolvedIcon }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "truncate text-sm font-semibold", children: result.name }), isPublic && (_jsxs(Badge, { variant: "outline", className: "shrink-0 text-[10px]", children: [_jsx(Globe, { className: "size-2.5" }), "Public"] }))] }), _jsx("p", { className: "text-muted-foreground truncate font-mono text-[11px]", children: result.qualifiedSlug })] })] }), result.description && (_jsx("p", { className: "text-muted-foreground mt-2 line-clamp-2 text-xs leading-relaxed", children: result.description })), _jsxs("div", { className: "mt-3 flex items-end justify-between gap-2", children: [result.tags.length > 0 ? (_jsxs("div", { className: "flex min-w-0 flex-wrap gap-1", children: [result.tags.slice(0, 3).map((tag) => (_jsx(Badge, { variant: "secondary", className: "text-[10px]", children: tag }, tag))), result.tags.length > 3 && (_jsxs("span", { className: "text-muted-foreground self-center text-[10px]", children: ["+", result.tags.length - 3] }))] })) : (_jsx("div", {})), result.createdAt && (_jsx("time", { dateTime: toDate(result.createdAt)?.toISOString() ?? "", className: "text-muted-foreground shrink-0 text-[10px]", children: formatRelativeTime(result.createdAt) }))] })] }));
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=ResourceSearchCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourceSearchCard.js","sourceRoot":"","sources":["../../../src/catalog/components/ResourceSearchCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/catalog/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,YAAY,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAG/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC"}
|
package/catalog/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/catalog/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGrE,YAAY;AACZ,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
2
|
+
/**
|
|
3
|
+
* Convert a protobuf Timestamp to a JS Date.
|
|
4
|
+
* Returns null if the timestamp is undefined or has no seconds.
|
|
5
|
+
*/
|
|
6
|
+
export declare function toDate(ts: Timestamp | undefined): Date | null;
|
|
7
|
+
/**
|
|
8
|
+
* Format a protobuf Timestamp as a human-readable relative time string.
|
|
9
|
+
*
|
|
10
|
+
* Examples: "just now", "2m ago", "3h ago", "yesterday", "Mar 12"
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatRelativeTime(ts: Timestamp | undefined): string;
|
|
13
|
+
//# sourceMappingURL=time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/catalog/internal/time.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAK7D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAqBpE"}
|