@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.
Files changed (190) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +248 -0
  3. package/agent/components/AgentCard.d.ts +9 -0
  4. package/agent/components/AgentCard.d.ts.map +1 -0
  5. package/agent/components/AgentCard.js +26 -0
  6. package/agent/components/AgentCard.js.map +1 -0
  7. package/agent/components/AgentOverview.d.ts +7 -0
  8. package/agent/components/AgentOverview.d.ts.map +1 -0
  9. package/agent/components/AgentOverview.js +36 -0
  10. package/agent/components/AgentOverview.js.map +1 -0
  11. package/agent/components/AgentPicker.d.ts +17 -0
  12. package/agent/components/AgentPicker.d.ts.map +1 -0
  13. package/agent/components/AgentPicker.js +86 -0
  14. package/agent/components/AgentPicker.js.map +1 -0
  15. package/agent/hooks/useAgentSearch.d.ts +28 -0
  16. package/agent/hooks/useAgentSearch.d.ts.map +1 -0
  17. package/agent/hooks/useAgentSearch.js +63 -0
  18. package/agent/hooks/useAgentSearch.js.map +1 -0
  19. package/agent/index.d.ts +9 -0
  20. package/agent/index.d.ts.map +1 -0
  21. package/agent/index.js +7 -0
  22. package/agent/index.js.map +1 -0
  23. package/agent-execution/components/ApprovalControls.d.ts +10 -0
  24. package/agent-execution/components/ApprovalControls.d.ts.map +1 -0
  25. package/agent-execution/components/ApprovalControls.js +19 -0
  26. package/agent-execution/components/ApprovalControls.js.map +1 -0
  27. package/agent-execution/components/ExecutionStatus.d.ts +8 -0
  28. package/agent-execution/components/ExecutionStatus.d.ts.map +1 -0
  29. package/agent-execution/components/ExecutionStatus.js +14 -0
  30. package/agent-execution/components/ExecutionStatus.js.map +1 -0
  31. package/agent-execution/components/ExecutionStream.d.ts +16 -0
  32. package/agent-execution/components/ExecutionStream.d.ts.map +1 -0
  33. package/agent-execution/components/ExecutionStream.js +39 -0
  34. package/agent-execution/components/ExecutionStream.js.map +1 -0
  35. package/agent-execution/components/MessageEntry.d.ts +17 -0
  36. package/agent-execution/components/MessageEntry.d.ts.map +1 -0
  37. package/agent-execution/components/MessageEntry.js +36 -0
  38. package/agent-execution/components/MessageEntry.js.map +1 -0
  39. package/agent-execution/components/MessageInput.d.ts +10 -0
  40. package/agent-execution/components/MessageInput.d.ts.map +1 -0
  41. package/agent-execution/components/MessageInput.js +27 -0
  42. package/agent-execution/components/MessageInput.js.map +1 -0
  43. package/agent-execution/components/OutputBlock.d.ts +9 -0
  44. package/agent-execution/components/OutputBlock.d.ts.map +1 -0
  45. package/agent-execution/components/OutputBlock.js +15 -0
  46. package/agent-execution/components/OutputBlock.js.map +1 -0
  47. package/agent-execution/components/SubAgentCard.d.ts +11 -0
  48. package/agent-execution/components/SubAgentCard.d.ts.map +1 -0
  49. package/agent-execution/components/SubAgentCard.js +19 -0
  50. package/agent-execution/components/SubAgentCard.js.map +1 -0
  51. package/agent-execution/components/ToolCallCard.d.ts +11 -0
  52. package/agent-execution/components/ToolCallCard.d.ts.map +1 -0
  53. package/agent-execution/components/ToolCallCard.js +25 -0
  54. package/agent-execution/components/ToolCallCard.js.map +1 -0
  55. package/agent-execution/helpers.d.ts +35 -0
  56. package/agent-execution/helpers.d.ts.map +1 -0
  57. package/agent-execution/helpers.js +157 -0
  58. package/agent-execution/helpers.js.map +1 -0
  59. package/agent-execution/hooks/useAgentExecution.d.ts +21 -0
  60. package/agent-execution/hooks/useAgentExecution.d.ts.map +1 -0
  61. package/agent-execution/hooks/useAgentExecution.js +99 -0
  62. package/agent-execution/hooks/useAgentExecution.js.map +1 -0
  63. package/agent-execution/hooks/useApproval.d.ts +12 -0
  64. package/agent-execution/hooks/useApproval.d.ts.map +1 -0
  65. package/agent-execution/hooks/useApproval.js +32 -0
  66. package/agent-execution/hooks/useApproval.js.map +1 -0
  67. package/agent-execution/index.d.ts +14 -0
  68. package/agent-execution/index.d.ts.map +1 -0
  69. package/agent-execution/index.js +15 -0
  70. package/agent-execution/index.js.map +1 -0
  71. package/catalog/components/ResourceSearchCard.d.ts +23 -0
  72. package/catalog/components/ResourceSearchCard.d.ts.map +1 -0
  73. package/catalog/components/ResourceSearchCard.js +36 -0
  74. package/catalog/components/ResourceSearchCard.js.map +1 -0
  75. package/catalog/index.d.ts +4 -0
  76. package/catalog/index.d.ts.map +1 -0
  77. package/catalog/index.js +5 -0
  78. package/catalog/index.js.map +1 -0
  79. package/catalog/internal/time.d.ts +13 -0
  80. package/catalog/internal/time.d.ts.map +1 -0
  81. package/catalog/internal/time.js +41 -0
  82. package/catalog/internal/time.js.map +1 -0
  83. package/context.d.ts +12 -0
  84. package/context.d.ts.map +1 -0
  85. package/context.js +13 -0
  86. package/context.js.map +1 -0
  87. package/hooks.d.ts +19 -0
  88. package/hooks.d.ts.map +1 -0
  89. package/hooks.js +28 -0
  90. package/hooks.js.map +1 -0
  91. package/index.d.ts +4 -0
  92. package/index.d.ts.map +1 -0
  93. package/index.js +6 -0
  94. package/index.js.map +1 -0
  95. package/internal/badge.d.ts +8 -0
  96. package/internal/badge.d.ts.map +1 -0
  97. package/internal/badge.js +34 -0
  98. package/internal/badge.js.map +1 -0
  99. package/internal/button.d.ts +9 -0
  100. package/internal/button.d.ts.map +1 -0
  101. package/internal/button.js +36 -0
  102. package/internal/button.js.map +1 -0
  103. package/internal/collapsible.d.ts +6 -0
  104. package/internal/collapsible.d.ts.map +1 -0
  105. package/internal/collapsible.js +14 -0
  106. package/internal/collapsible.js.map +1 -0
  107. package/internal/section.d.ts +8 -0
  108. package/internal/section.d.ts.map +1 -0
  109. package/internal/section.js +6 -0
  110. package/internal/section.js.map +1 -0
  111. package/internal/textarea.d.ts +4 -0
  112. package/internal/textarea.d.ts.map +1 -0
  113. package/internal/textarea.js +9 -0
  114. package/internal/textarea.js.map +1 -0
  115. package/mcp-server/hooks/useMcpServerSearch.d.ts +25 -0
  116. package/mcp-server/hooks/useMcpServerSearch.d.ts.map +1 -0
  117. package/mcp-server/hooks/useMcpServerSearch.js +57 -0
  118. package/mcp-server/hooks/useMcpServerSearch.js.map +1 -0
  119. package/mcp-server/index.d.ts +3 -0
  120. package/mcp-server/index.d.ts.map +1 -0
  121. package/mcp-server/index.js +3 -0
  122. package/mcp-server/index.js.map +1 -0
  123. package/package.json +75 -0
  124. package/provider.d.ts +55 -0
  125. package/provider.d.ts.map +1 -0
  126. package/provider.js +34 -0
  127. package/provider.js.map +1 -0
  128. package/session/components/AgentSessionHistory.d.ts +8 -0
  129. package/session/components/AgentSessionHistory.d.ts.map +1 -0
  130. package/session/components/AgentSessionHistory.js +11 -0
  131. package/session/components/AgentSessionHistory.js.map +1 -0
  132. package/session/components/SessionCard.d.ts +8 -0
  133. package/session/components/SessionCard.d.ts.map +1 -0
  134. package/session/components/SessionCard.js +57 -0
  135. package/session/components/SessionCard.js.map +1 -0
  136. package/session/hooks/useAgentSessionList.d.ts +21 -0
  137. package/session/hooks/useAgentSessionList.d.ts.map +1 -0
  138. package/session/hooks/useAgentSessionList.js +90 -0
  139. package/session/hooks/useAgentSessionList.js.map +1 -0
  140. package/session/index.d.ts +7 -0
  141. package/session/index.d.ts.map +1 -0
  142. package/session/index.js +6 -0
  143. package/session/index.js.map +1 -0
  144. package/skill/hooks/useSkillSearch.d.ts +25 -0
  145. package/skill/hooks/useSkillSearch.d.ts.map +1 -0
  146. package/skill/hooks/useSkillSearch.js +57 -0
  147. package/skill/hooks/useSkillSearch.js.map +1 -0
  148. package/skill/index.d.ts +3 -0
  149. package/skill/index.d.ts.map +1 -0
  150. package/skill/index.js +3 -0
  151. package/skill/index.js.map +1 -0
  152. package/src/agent/components/AgentCard.tsx +125 -0
  153. package/src/agent/components/AgentOverview.tsx +209 -0
  154. package/src/agent/components/AgentPicker.tsx +255 -0
  155. package/src/agent/hooks/useAgentSearch.ts +94 -0
  156. package/src/agent/index.ts +17 -0
  157. package/src/agent-execution/components/ApprovalControls.tsx +99 -0
  158. package/src/agent-execution/components/ExecutionStatus.tsx +33 -0
  159. package/src/agent-execution/components/ExecutionStream.tsx +148 -0
  160. package/src/agent-execution/components/MessageEntry.tsx +125 -0
  161. package/src/agent-execution/components/MessageInput.tsx +70 -0
  162. package/src/agent-execution/components/OutputBlock.tsx +43 -0
  163. package/src/agent-execution/components/SubAgentCard.tsx +138 -0
  164. package/src/agent-execution/components/ToolCallCard.tsx +153 -0
  165. package/src/agent-execution/helpers.ts +193 -0
  166. package/src/agent-execution/hooks/useAgentExecution.ts +147 -0
  167. package/src/agent-execution/hooks/useApproval.ts +56 -0
  168. package/src/agent-execution/index.ts +46 -0
  169. package/src/catalog/components/ResourceSearchCard.tsx +137 -0
  170. package/src/catalog/index.ts +6 -0
  171. package/src/catalog/internal/time.ts +40 -0
  172. package/src/context.ts +15 -0
  173. package/src/hooks.ts +32 -0
  174. package/src/index.ts +6 -0
  175. package/src/internal/badge.tsx +52 -0
  176. package/src/internal/button.tsx +60 -0
  177. package/src/internal/collapsible.tsx +21 -0
  178. package/src/internal/section.tsx +18 -0
  179. package/src/internal/textarea.tsx +23 -0
  180. package/src/mcp-server/hooks/useMcpServerSearch.ts +79 -0
  181. package/src/mcp-server/index.ts +6 -0
  182. package/src/provider.tsx +73 -0
  183. package/src/session/components/AgentSessionHistory.tsx +109 -0
  184. package/src/session/components/SessionCard.tsx +113 -0
  185. package/src/session/hooks/useAgentSessionList.ts +117 -0
  186. package/src/session/index.ts +13 -0
  187. package/src/skill/hooks/useSkillSearch.ts +79 -0
  188. package/src/skill/index.ts +6 -0
  189. package/src/styles.css +72 -0
  190. 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,4 @@
1
+ export { ResourceSearchCard } from "./components/ResourceSearchCard";
2
+ export type { ResourceSearchCardProps } from "./components/ResourceSearchCard";
3
+ export { formatRelativeTime, toDate } from "./internal/time";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -0,0 +1,5 @@
1
+ // Components
2
+ export { ResourceSearchCard } from "./components/ResourceSearchCard";
3
+ // Utilities
4
+ export { formatRelativeTime, toDate } from "./internal/time";
5
+ //# sourceMappingURL=index.js.map
@@ -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"}