@ciridae/ui-agent 0.3.8 → 0.3.10

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 (193) hide show
  1. package/dist/components/agentic/agent-composer.d.ts +4 -4
  2. package/dist/components/agentic/agent-composer.js +4 -5
  3. package/dist/components/agentic/agent-context.d.ts +1 -1
  4. package/dist/components/agentic/agent-plan.js +1 -1
  5. package/dist/components/agentic/approval-request.d.ts +1 -1
  6. package/dist/components/agentic/artifact.js +1 -1
  7. package/dist/components/agentic/attachments-actions.d.ts +1 -1
  8. package/dist/components/agentic/attachments-actions.js +2 -2
  9. package/dist/components/agentic/attachments-context.d.ts +1 -1
  10. package/dist/components/agentic/attachments-context.js +1 -1
  11. package/dist/components/agentic/attachments-model.d.ts +2 -2
  12. package/dist/components/agentic/attachments-preview.d.ts +2 -2
  13. package/dist/components/agentic/attachments-preview.js +1 -1
  14. package/dist/components/agentic/attachments-types.d.ts +1 -1
  15. package/dist/components/agentic/attachments-ui.d.ts +1 -1
  16. package/dist/components/agentic/attachments-ui.js +4 -4
  17. package/dist/components/agentic/attachments.d.ts +5 -5
  18. package/dist/components/agentic/attachments.js +4 -4
  19. package/dist/components/agentic/audio-player.d.ts +1 -1
  20. package/dist/components/agentic/canvas.js +1 -1
  21. package/dist/components/agentic/code-block.js +1 -1
  22. package/dist/components/agentic/commit.js +1 -1
  23. package/dist/components/agentic/conversation.d.ts +1 -1
  24. package/dist/components/agentic/environment-variables.js +1 -1
  25. package/dist/components/agentic/message.d.ts +2 -2
  26. package/dist/components/agentic/message.js +13 -6
  27. package/dist/components/agentic/mic-selector.d.ts +1 -1
  28. package/dist/components/agentic/mic-selector.js +3 -3
  29. package/dist/components/agentic/persona.js +1 -1
  30. package/dist/components/agentic/prompt-input.d.ts +9 -9
  31. package/dist/components/agentic/prompt-input.js +8 -8
  32. package/dist/components/agentic/reasoning.js +1 -1
  33. package/dist/components/agentic/snippet.js +1 -1
  34. package/dist/components/agentic/speech-input.d.ts +1 -1
  35. package/dist/components/agentic/stack-trace.js +11 -4
  36. package/dist/components/agentic/terminal.js +1 -1
  37. package/dist/components/agentic/tool.d.ts +1 -1
  38. package/dist/components/agentic/transcription.d.ts +1 -1
  39. package/dist/components/agentic/voice-selector.d.ts +1 -1
  40. package/dist/components/agentic/voice-selector.js +2 -2
  41. package/dist/components/blocks/artifact-workbench.js +4 -4
  42. package/dist/components/blocks/tool-approval-panel.d.ts +1 -1
  43. package/dist/components/blocks/tool-approval-panel.js +2 -2
  44. package/dist/components/blocks/voice-agent-panel.d.ts +1 -1
  45. package/dist/components/blocks/voice-agent-panel.js +6 -6
  46. package/dist/components/blocks/workflow-canvas-panel.js +7 -7
  47. package/dist/entries/agent-card.d.ts +1 -1
  48. package/dist/entries/agent-card.js +1 -1
  49. package/dist/entries/agent-composer.d.ts +1 -1
  50. package/dist/entries/agent-composer.js +1 -1
  51. package/dist/entries/agent-context.d.ts +1 -1
  52. package/dist/entries/agent-context.js +1 -1
  53. package/dist/entries/agent-plan.d.ts +1 -1
  54. package/dist/entries/agent-plan.js +1 -1
  55. package/dist/entries/agent-queue.d.ts +1 -1
  56. package/dist/entries/agent-queue.js +1 -1
  57. package/dist/entries/agent-task.d.ts +1 -1
  58. package/dist/entries/agent-task.js +1 -1
  59. package/dist/entries/agentic-types.d.ts +1 -1
  60. package/dist/entries/agentic-types.js +1 -1
  61. package/dist/entries/approval-request.d.ts +1 -1
  62. package/dist/entries/approval-request.js +1 -1
  63. package/dist/entries/artifact-workbench.d.ts +1 -1
  64. package/dist/entries/artifact-workbench.js +1 -1
  65. package/dist/entries/artifact.d.ts +1 -1
  66. package/dist/entries/artifact.js +1 -1
  67. package/dist/entries/assistant-mark-icon.d.ts +1 -1
  68. package/dist/entries/assistant-mark-icon.js +1 -1
  69. package/dist/entries/attachments-actions.d.ts +1 -1
  70. package/dist/entries/attachments-actions.js +1 -1
  71. package/dist/entries/attachments-context.d.ts +1 -1
  72. package/dist/entries/attachments-context.js +1 -1
  73. package/dist/entries/attachments-model.d.ts +1 -1
  74. package/dist/entries/attachments-model.js +1 -1
  75. package/dist/entries/attachments-preview.d.ts +1 -1
  76. package/dist/entries/attachments-preview.js +1 -1
  77. package/dist/entries/attachments-types.d.ts +1 -1
  78. package/dist/entries/attachments-types.js +1 -1
  79. package/dist/entries/attachments-ui.d.ts +1 -1
  80. package/dist/entries/attachments-ui.js +1 -1
  81. package/dist/entries/attachments.d.ts +1 -1
  82. package/dist/entries/attachments.js +1 -1
  83. package/dist/entries/audio-player.d.ts +1 -1
  84. package/dist/entries/audio-player.js +1 -1
  85. package/dist/entries/breathing-grid-icon.d.ts +1 -1
  86. package/dist/entries/breathing-grid-icon.js +1 -1
  87. package/dist/entries/canvas.d.ts +1 -1
  88. package/dist/entries/canvas.js +1 -1
  89. package/dist/entries/clipboard.d.ts +1 -1
  90. package/dist/entries/clipboard.js +1 -1
  91. package/dist/entries/code-block.d.ts +1 -1
  92. package/dist/entries/code-block.js +1 -1
  93. package/dist/entries/commit.d.ts +1 -1
  94. package/dist/entries/commit.js +1 -1
  95. package/dist/entries/connection.d.ts +1 -1
  96. package/dist/entries/connection.js +1 -1
  97. package/dist/entries/controls.d.ts +1 -1
  98. package/dist/entries/controls.js +1 -1
  99. package/dist/entries/conversation.d.ts +1 -1
  100. package/dist/entries/conversation.js +1 -1
  101. package/dist/entries/edge.d.ts +1 -1
  102. package/dist/entries/edge.js +1 -1
  103. package/dist/entries/effort-selector.d.ts +1 -1
  104. package/dist/entries/effort-selector.js +1 -1
  105. package/dist/entries/environment-variables.d.ts +1 -1
  106. package/dist/entries/environment-variables.js +1 -1
  107. package/dist/entries/file-tree.d.ts +1 -1
  108. package/dist/entries/file-tree.js +1 -1
  109. package/dist/entries/image.d.ts +1 -1
  110. package/dist/entries/image.js +1 -1
  111. package/dist/entries/inline-citation.d.ts +1 -1
  112. package/dist/entries/inline-citation.js +1 -1
  113. package/dist/entries/jsx-preview.d.ts +1 -1
  114. package/dist/entries/jsx-preview.js +1 -1
  115. package/dist/entries/message-branch.d.ts +1 -1
  116. package/dist/entries/message-branch.js +1 -1
  117. package/dist/entries/message.d.ts +1 -1
  118. package/dist/entries/message.js +1 -1
  119. package/dist/entries/mic-selector.d.ts +1 -1
  120. package/dist/entries/mic-selector.js +1 -1
  121. package/dist/entries/model-selector.d.ts +1 -1
  122. package/dist/entries/model-selector.js +1 -1
  123. package/dist/entries/node.d.ts +1 -1
  124. package/dist/entries/node.js +1 -1
  125. package/dist/entries/open-in-chat.d.ts +1 -1
  126. package/dist/entries/open-in-chat.js +1 -1
  127. package/dist/entries/package-info.d.ts +1 -1
  128. package/dist/entries/package-info.js +1 -1
  129. package/dist/entries/panel.d.ts +1 -1
  130. package/dist/entries/panel.js +1 -1
  131. package/dist/entries/persona.d.ts +1 -1
  132. package/dist/entries/persona.js +1 -1
  133. package/dist/entries/prompt-input-action-menu.d.ts +1 -1
  134. package/dist/entries/prompt-input-action-menu.js +1 -1
  135. package/dist/entries/prompt-input-command.d.ts +1 -1
  136. package/dist/entries/prompt-input-command.js +1 -1
  137. package/dist/entries/prompt-input-hover-card.d.ts +1 -1
  138. package/dist/entries/prompt-input-hover-card.js +1 -1
  139. package/dist/entries/prompt-input-select.d.ts +1 -1
  140. package/dist/entries/prompt-input-select.js +1 -1
  141. package/dist/entries/prompt-input-tabs.d.ts +1 -1
  142. package/dist/entries/prompt-input-tabs.js +1 -1
  143. package/dist/entries/prompt-input.d.ts +1 -1
  144. package/dist/entries/prompt-input.js +1 -1
  145. package/dist/entries/reasoning.d.ts +1 -1
  146. package/dist/entries/reasoning.js +1 -1
  147. package/dist/entries/run-checkpoint.d.ts +1 -1
  148. package/dist/entries/run-checkpoint.js +1 -1
  149. package/dist/entries/run-trace.d.ts +1 -1
  150. package/dist/entries/run-trace.js +1 -1
  151. package/dist/entries/sandbox.d.ts +1 -1
  152. package/dist/entries/sandbox.js +1 -1
  153. package/dist/entries/schema-display.d.ts +1 -1
  154. package/dist/entries/schema-display.js +1 -1
  155. package/dist/entries/shimmer.d.ts +1 -1
  156. package/dist/entries/shimmer.js +1 -1
  157. package/dist/entries/snippet.d.ts +1 -1
  158. package/dist/entries/snippet.js +1 -1
  159. package/dist/entries/sources.d.ts +1 -1
  160. package/dist/entries/sources.js +1 -1
  161. package/dist/entries/speech-input.d.ts +1 -1
  162. package/dist/entries/speech-input.js +1 -1
  163. package/dist/entries/stack-trace.d.ts +1 -1
  164. package/dist/entries/stack-trace.js +1 -1
  165. package/dist/entries/suggestion.d.ts +1 -1
  166. package/dist/entries/suggestion.js +1 -1
  167. package/dist/entries/terminal.d.ts +1 -1
  168. package/dist/entries/terminal.js +1 -1
  169. package/dist/entries/test-results.d.ts +1 -1
  170. package/dist/entries/test-results.js +1 -1
  171. package/dist/entries/theme.d.ts +1 -1
  172. package/dist/entries/theme.js +1 -1
  173. package/dist/entries/tool-approval-panel.d.ts +1 -1
  174. package/dist/entries/tool-approval-panel.js +1 -1
  175. package/dist/entries/tool.d.ts +1 -1
  176. package/dist/entries/tool.js +1 -1
  177. package/dist/entries/toolbar.d.ts +1 -1
  178. package/dist/entries/toolbar.js +1 -1
  179. package/dist/entries/transcription.d.ts +1 -1
  180. package/dist/entries/transcription.js +1 -1
  181. package/dist/entries/types.d.ts +1 -1
  182. package/dist/entries/types.js +1 -1
  183. package/dist/entries/use-controllable-state.d.ts +1 -1
  184. package/dist/entries/use-controllable-state.js +1 -1
  185. package/dist/entries/voice-agent-panel.d.ts +1 -1
  186. package/dist/entries/voice-agent-panel.js +1 -1
  187. package/dist/entries/voice-selector.d.ts +1 -1
  188. package/dist/entries/voice-selector.js +1 -1
  189. package/dist/entries/web-preview.d.ts +1 -1
  190. package/dist/entries/web-preview.js +1 -1
  191. package/dist/entries/workflow-canvas-panel.d.ts +1 -1
  192. package/dist/entries/workflow-canvas-panel.js +1 -1
  193. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
1
  import * as React from "react";
2
- import { type AgenticAttachment, type AttachmentError } from "./attachments";
3
- import { type EffortSelectorValue } from "./effort-selector";
4
- import { type PromptInputMessage } from "./prompt-input";
5
- import type { AgenticChatStatus } from "./types";
2
+ import { type AgenticAttachment, type AttachmentError } from "./attachments.js";
3
+ import { type EffortSelectorValue } from "./effort-selector.js";
4
+ import { type PromptInputMessage } from "./prompt-input.js";
5
+ import type { AgenticChatStatus } from "./types.js";
6
6
  type AgentComposerModel = {
7
7
  description?: string;
8
8
  group?: string;
@@ -1,11 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /* eslint-disable max-lines, max-lines-per-function, react/jsx-max-depth */
3
2
  import { CheckIcon, ChevronsUpDownIcon } from "lucide-react";
4
3
  import * as React from "react";
5
- import { AttachmentList, useAttachments, } from "./attachments";
6
- import { EffortSelector } from "./effort-selector";
7
- import { ModelSelector, ModelSelectorContent, ModelSelectorEmpty, ModelSelectorGroup, ModelSelectorInput, ModelSelectorItem, ModelSelectorList, ModelSelectorLogo, ModelSelectorName, ModelSelectorShortcut, ModelSelectorTrigger, } from "./model-selector";
8
- import { PromptInput, PromptInputActionAddAttachments, PromptInputBody, PromptInputProvider, PromptInputSubmit, PromptInputTextarea, PromptInputTools, } from "./prompt-input";
4
+ import { AttachmentList, useAttachments, } from "./attachments.js";
5
+ import { EffortSelector } from "./effort-selector.js";
6
+ import { ModelSelector, ModelSelectorContent, ModelSelectorEmpty, ModelSelectorGroup, ModelSelectorInput, ModelSelectorItem, ModelSelectorList, ModelSelectorLogo, ModelSelectorName, ModelSelectorShortcut, ModelSelectorTrigger, } from "./model-selector.js";
7
+ import { PromptInput, PromptInputActionAddAttachments, PromptInputBody, PromptInputProvider, PromptInputSubmit, PromptInputTextarea, PromptInputTools, } from "./prompt-input.js";
9
8
  import { Button } from "@ciridae/ui/button";
10
9
  import { cn } from "@ciridae/ui/utils";
11
10
  function AgentComposer({ accept, attachments, className, defaultAttachments, defaultValue, disabled, effort, focusHint, globalDrop, maxAttachmentSizeMb = 25, maxAttachments = 4, model, models, multiple = true, onAttachmentError, onAttachmentsChange, onEffortChange, onModelChange, onStop, onSubmit, onValueChange, placeholder = "Ask anything", status = "idle", value, ...props }) {
@@ -1,5 +1,5 @@
1
1
  import type * as React from "react";
2
- import type { AgenticContextUsage } from "./types";
2
+ import type { AgenticContextUsage } from "./types.js";
3
3
  import { Button } from "@ciridae/ui/button";
4
4
  import { HoverCard, HoverCardContent } from "@ciridae/ui/hover-card";
5
5
  type AgentContextProps = React.ComponentProps<typeof HoverCard> & AgenticContextUsage;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { ChevronsUpDownIcon } from "lucide-react";
3
3
  import { createContext, useContext, useMemo } from "react";
4
- import { Shimmer } from "./shimmer";
4
+ import { Shimmer } from "./shimmer.js";
5
5
  import { Button } from "@ciridae/ui/button";
6
6
  import { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@ciridae/ui/card";
7
7
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@ciridae/ui/collapsible";
@@ -1,5 +1,5 @@
1
1
  import type * as React from "react";
2
- import type { AgenticApproval, AgenticToolState } from "./types";
2
+ import type { AgenticApproval, AgenticToolState } from "./types.js";
3
3
  import { Button } from "@ciridae/ui/button";
4
4
  type ApprovalRequestProps = React.ComponentProps<"div"> & {
5
5
  approval?: AgenticApproval;
@@ -4,7 +4,7 @@ import { useState } from "react";
4
4
  import { Button } from "@ciridae/ui/button";
5
5
  import { cn } from "@ciridae/ui/utils";
6
6
  import { css } from "@ciridae/ui/styled-system/css";
7
- import { copyToClipboard } from "./clipboard";
7
+ import { copyToClipboard } from "./clipboard.js";
8
8
  const artifactClassName = css({
9
9
  backgroundColor: "card",
10
10
  borderColor: "border",
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { AttachmentActionAddFilesProps, AttachmentActionAddScreenshotProps, AttachmentRemoveProps } from "./attachments-types";
2
+ import type { AttachmentActionAddFilesProps, AttachmentActionAddScreenshotProps, AttachmentRemoveProps } from "./attachments-types.js";
3
3
  declare function AttachmentRemove({ attachmentId, children, className, label, onClick, size, type, variant: buttonVariant, ...props }: AttachmentRemoveProps): React.JSX.Element | null;
4
4
  declare function AttachmentActionAddFiles({ children, className, label, onClick, renderAs, size, tooltip, type, variant, ...props }: AttachmentActionAddFilesProps): React.JSX.Element;
5
5
  declare function AttachmentActionAddScreenshot({ children, className, disabled, label, onClick, renderAs, size, status, tooltip, type, variant, ...props }: AttachmentActionAddScreenshotProps): React.JSX.Element;
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /* eslint-disable react-refresh/only-export-components */
3
3
  import { CameraIcon, PaperclipIcon, XIcon } from "lucide-react";
4
4
  import * as React from "react";
5
- import { AttachmentItemContext, useAttachments, useOptionalAttachments, } from "./attachments-context";
6
- import { getAttachmentRemoveSize, getScreenshotLabel } from "./attachments-model";
5
+ import { AttachmentItemContext, useAttachments, useOptionalAttachments, } from "./attachments-context.js";
6
+ import { getAttachmentRemoveSize, getScreenshotLabel } from "./attachments-model.js";
7
7
  import { Button } from "@ciridae/ui/button";
8
8
  import { DropdownMenuItem } from "@ciridae/ui/dropdown-menu";
9
9
  import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@ciridae/ui/tooltip";
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { AttachmentControllerContextValue, AttachmentData, AttachmentMediaCategory, AttachmentProviderProps, AttachmentVariant } from "./attachments-types";
2
+ import type { AttachmentControllerContextValue, AttachmentData, AttachmentMediaCategory, AttachmentProviderProps, AttachmentVariant } from "./attachments-types.js";
3
3
  declare const AttachmentControllerContext: React.Context<AttachmentControllerContextValue | null>;
4
4
  declare const AttachmentsContext: React.Context<{
5
5
  variant: AttachmentVariant;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /* eslint-disable react-refresh/only-export-components */
3
3
  import * as React from "react";
4
- import { captureBrowserScreenshot, fileToAttachment, getAttachmentError, getInitialScreenshotStatus, isScreenshotSupported, isIgnoredScreenshotError, revokeObjectUrls, revokeOwnedObjectUrls, revokeRemovedObjectUrls, } from "./attachments-model";
4
+ import { captureBrowserScreenshot, fileToAttachment, getAttachmentError, getInitialScreenshotStatus, isScreenshotSupported, isIgnoredScreenshotError, revokeObjectUrls, revokeOwnedObjectUrls, revokeRemovedObjectUrls, } from "./attachments-model.js";
5
5
  const AttachmentControllerContext = React.createContext(null);
6
6
  const AttachmentsContext = React.createContext(null);
7
7
  const AttachmentItemContext = React.createContext(null);
@@ -1,5 +1,5 @@
1
- import type { AgenticPromptAttachmentKind } from "./types";
2
- import type { AgenticAttachment, AttachmentData, AttachmentError, AttachmentMediaCategory, AttachmentProviderProps, AttachmentScreenshotStatus, AttachmentVariant } from "./attachments-types";
1
+ import type { AgenticPromptAttachmentKind } from "./types.js";
2
+ import type { AgenticAttachment, AttachmentData, AttachmentError, AttachmentMediaCategory, AttachmentProviderProps, AttachmentScreenshotStatus, AttachmentVariant } from "./attachments-types.js";
3
3
  export declare function prepareAttachmentsForSubmit(attachments: AgenticAttachment[]): Promise<AgenticAttachment[]>;
4
4
  export declare function fileToAttachment(file: File, kind?: AgenticPromptAttachmentKind): AgenticAttachment;
5
5
  export declare function getMediaCategory(data: AttachmentData): AttachmentMediaCategory;
@@ -1,5 +1,5 @@
1
- import type { AgenticPromptAttachmentStatus } from "./types";
2
- import type { AttachmentData, AttachmentMediaCategory, AttachmentVariant } from "./attachments-types";
1
+ import type { AgenticPromptAttachmentStatus } from "./types.js";
2
+ import type { AttachmentData, AttachmentMediaCategory, AttachmentVariant } from "./attachments-types.js";
3
3
  declare function renderAttachmentPreview(data: AttachmentData, mediaCategory: AttachmentMediaCategory, variant: AttachmentVariant): import("@types/react").JSX.Element | null;
4
4
  declare function AttachmentStatus({ status }: {
5
5
  status?: AgenticPromptAttachmentStatus;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  /* eslint-disable react-refresh/only-export-components */
3
3
  import { CheckIcon, CircleAlertIcon } from "lucide-react";
4
- import { getAttachmentLabel } from "./attachments-model";
4
+ import { getAttachmentLabel } from "./attachments-model.js";
5
5
  import { Spinner } from "@ciridae/ui/spinner";
6
6
  import { cn } from "@ciridae/ui/utils";
7
7
  function renderAttachmentPreview(data, mediaCategory, variant) {
@@ -1,5 +1,5 @@
1
1
  import type * as React from "react";
2
- import type { AgenticPromptAttachment, AgenticPromptAttachmentKind } from "./types";
2
+ import type { AgenticPromptAttachment, AgenticPromptAttachmentKind } from "./types.js";
3
3
  import type { Button } from "@ciridae/ui/button";
4
4
  import type { HoverCard, HoverCardContent, HoverCardTrigger } from "@ciridae/ui/hover-card";
5
5
  export type AgenticAttachment = AgenticPromptAttachment & {
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { AttachmentEmptyProps, AttachmentHoverCardContentProps, AttachmentHoverCardProps, AttachmentHoverCardTriggerProps, AttachmentInfoProps, AttachmentListProps, AttachmentMetaProps, AttachmentNameProps, AttachmentPreviewProps, AttachmentProps, AttachmentsProps } from "./attachments-types";
2
+ import type { AttachmentEmptyProps, AttachmentHoverCardContentProps, AttachmentHoverCardProps, AttachmentHoverCardTriggerProps, AttachmentInfoProps, AttachmentListProps, AttachmentMetaProps, AttachmentNameProps, AttachmentPreviewProps, AttachmentProps, AttachmentsProps } from "./attachments-types.js";
3
3
  declare function Attachments({ variant, className, children, ...props }: AttachmentsProps): React.JSX.Element | null;
4
4
  declare function AttachmentList({ variant, ...props }: AttachmentListProps): React.JSX.Element;
5
5
  declare function Attachment({ attachment, children, className, data, onRemove, ...props }: AttachmentProps): React.JSX.Element | null;
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { FileTextIcon, GlobeIcon, ImageIcon, Music2Icon, PaperclipIcon, VideoIcon, } from "lucide-react";
3
3
  import * as React from "react";
4
- import { AttachmentRemove } from "./attachments-actions";
5
- import { AttachmentStatus, renderAttachmentPreview } from "./attachments-preview";
6
- import { AttachmentItemContext, AttachmentsContext, useAttachmentContext, useAttachmentsContext, useOptionalAttachments, } from "./attachments-context";
7
- import { getAttachmentLabel, getAttachmentMeta, getMediaCategory } from "./attachments-model";
4
+ import { AttachmentRemove } from "./attachments-actions.js";
5
+ import { AttachmentStatus, renderAttachmentPreview } from "./attachments-preview.js";
6
+ import { AttachmentItemContext, AttachmentsContext, useAttachmentContext, useAttachmentsContext, useOptionalAttachments, } from "./attachments-context.js";
7
+ import { getAttachmentLabel, getAttachmentMeta, getMediaCategory } from "./attachments-model.js";
8
8
  import { HoverCard, HoverCardContent, HoverCardTrigger } from "@ciridae/ui/hover-card";
9
9
  import { cn } from "@ciridae/ui/utils";
10
10
  const mediaCategoryIcons = {
@@ -1,5 +1,5 @@
1
- export { AttachmentActionAddFiles, AttachmentActionAddScreenshot, AttachmentRemove, useAttachmentDropTarget, } from "./attachments-actions";
2
- export { AttachmentProvider, useAttachmentContext, useAttachments, useAttachmentsContext, useOptionalAttachments, } from "./attachments-context";
3
- export { captureBrowserScreenshot, fileToAttachment, getAttachmentLabel, getMediaCategory, prepareAttachmentsForSubmit, } from "./attachments-model";
4
- export { Attachment, AttachmentEmpty, AttachmentHoverCard, AttachmentHoverCardContent, AttachmentHoverCardTrigger, AttachmentInfo, AttachmentList, AttachmentMeta, AttachmentName, AttachmentPreview, Attachments, } from "./attachments-ui";
5
- export type { AgenticAttachment, AttachmentActionAddFilesProps, AttachmentActionAddScreenshotProps, AttachmentAddOptions, AttachmentControllerContextValue as AttachmentContextValue, AttachmentData, AttachmentEmptyProps, AttachmentError, AttachmentErrorCode, AttachmentHoverCardContentProps, AttachmentHoverCardProps, AttachmentHoverCardTriggerProps, AttachmentInfoProps, AttachmentListProps, AttachmentMediaCategory, AttachmentMetaProps, AttachmentNameProps, AttachmentPreviewProps, AttachmentProps, AttachmentProviderProps, AttachmentRemoveProps, AttachmentScreenshotStatus, AttachmentVariant, AttachmentsProps, } from "./attachments-types";
1
+ export { AttachmentActionAddFiles, AttachmentActionAddScreenshot, AttachmentRemove, useAttachmentDropTarget, } from "./attachments-actions.js";
2
+ export { AttachmentProvider, useAttachmentContext, useAttachments, useAttachmentsContext, useOptionalAttachments, } from "./attachments-context.js";
3
+ export { captureBrowserScreenshot, fileToAttachment, getAttachmentLabel, getMediaCategory, prepareAttachmentsForSubmit, } from "./attachments-model.js";
4
+ export { Attachment, AttachmentEmpty, AttachmentHoverCard, AttachmentHoverCardContent, AttachmentHoverCardTrigger, AttachmentInfo, AttachmentList, AttachmentMeta, AttachmentName, AttachmentPreview, Attachments, } from "./attachments-ui.js";
5
+ export type { AgenticAttachment, AttachmentActionAddFilesProps, AttachmentActionAddScreenshotProps, AttachmentAddOptions, AttachmentControllerContextValue as AttachmentContextValue, AttachmentData, AttachmentEmptyProps, AttachmentError, AttachmentErrorCode, AttachmentHoverCardContentProps, AttachmentHoverCardProps, AttachmentHoverCardTriggerProps, AttachmentInfoProps, AttachmentListProps, AttachmentMediaCategory, AttachmentMetaProps, AttachmentNameProps, AttachmentPreviewProps, AttachmentProps, AttachmentProviderProps, AttachmentRemoveProps, AttachmentScreenshotStatus, AttachmentVariant, AttachmentsProps, } from "./attachments-types.js";
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable react-refresh/only-export-components */
2
- export { AttachmentActionAddFiles, AttachmentActionAddScreenshot, AttachmentRemove, useAttachmentDropTarget, } from "./attachments-actions";
3
- export { AttachmentProvider, useAttachmentContext, useAttachments, useAttachmentsContext, useOptionalAttachments, } from "./attachments-context";
4
- export { captureBrowserScreenshot, fileToAttachment, getAttachmentLabel, getMediaCategory, prepareAttachmentsForSubmit, } from "./attachments-model";
5
- export { Attachment, AttachmentEmpty, AttachmentHoverCard, AttachmentHoverCardContent, AttachmentHoverCardTrigger, AttachmentInfo, AttachmentList, AttachmentMeta, AttachmentName, AttachmentPreview, Attachments, } from "./attachments-ui";
2
+ export { AttachmentActionAddFiles, AttachmentActionAddScreenshot, AttachmentRemove, useAttachmentDropTarget, } from "./attachments-actions.js";
3
+ export { AttachmentProvider, useAttachmentContext, useAttachments, useAttachmentsContext, useOptionalAttachments, } from "./attachments-context.js";
4
+ export { captureBrowserScreenshot, fileToAttachment, getAttachmentLabel, getMediaCategory, prepareAttachmentsForSubmit, } from "./attachments-model.js";
5
+ export { Attachment, AttachmentEmpty, AttachmentHoverCard, AttachmentHoverCardContent, AttachmentHoverCardTrigger, AttachmentInfo, AttachmentList, AttachmentMeta, AttachmentName, AttachmentPreview, Attachments, } from "./attachments-ui.js";
@@ -1,5 +1,5 @@
1
1
  import type * as React from "react";
2
- import type { AgenticAudioSource, AgenticPreviewState } from "./types";
2
+ import type { AgenticAudioSource, AgenticPreviewState } from "./types.js";
3
3
  type AudioPlayerProps = React.ComponentProps<"div"> & AgenticAudioSource & {
4
4
  state?: AgenticPreviewState;
5
5
  };
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Background, BackgroundVariant, ReactFlow, } from "@xyflow/react";
3
3
  import "@xyflow/react/dist/style.css";
4
- import { useAgenticTheme } from "./theme";
4
+ import { useAgenticTheme } from "./theme.js";
5
5
  import { cn } from "@ciridae/ui/utils";
6
6
  const defaultDeleteKeyCode = ["Backspace", "Delete"];
7
7
  const workflowEdgeColor = "color-mix(in oklch, var(--foreground) 72%, transparent)";
@@ -6,7 +6,7 @@ import { Button } from "@ciridae/ui/button";
6
6
  import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@ciridae/ui/select";
7
7
  import { cn } from "@ciridae/ui/utils";
8
8
  import { css } from "@ciridae/ui/styled-system/css";
9
- import { copyToClipboard } from "./clipboard";
9
+ import { copyToClipboard } from "./clipboard.js";
10
10
  const CodeBlockContext = createContext({ code: "" });
11
11
  const codeBlockContainerClassName = css({
12
12
  backgroundColor: "card",
@@ -5,7 +5,7 @@ import { Avatar, AvatarFallback, AvatarImage } from "@ciridae/ui/avatar";
5
5
  import { Button } from "@ciridae/ui/button";
6
6
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@ciridae/ui/collapsible";
7
7
  import { cn } from "@ciridae/ui/utils";
8
- import { copyToClipboard } from "./clipboard";
8
+ import { copyToClipboard } from "./clipboard.js";
9
9
  const CommitContext = createContext({ hash: "" });
10
10
  function Commit({ children, className, defaultOpen = true, hash = "", ...props }) {
11
11
  const contextValue = useMemo(() => ({ hash }), [hash]);
@@ -1,6 +1,6 @@
1
1
  import type * as React from "react";
2
2
  import { StickToBottom } from "use-stick-to-bottom";
3
- import type { AgenticMessage } from "./types";
3
+ import type { AgenticMessage } from "./types.js";
4
4
  import { Button } from "@ciridae/ui/button";
5
5
  type ConversationProps = React.ComponentProps<typeof StickToBottom>;
6
6
  type ConversationContentProps = React.ComponentProps<typeof StickToBottom.Content>;
@@ -5,7 +5,7 @@ import { Badge } from "@ciridae/ui/badge";
5
5
  import { Button } from "@ciridae/ui/button";
6
6
  import { Switch } from "@ciridae/ui/switch";
7
7
  import { cn } from "@ciridae/ui/utils";
8
- import { copyToClipboard } from "./clipboard";
8
+ import { copyToClipboard } from "./clipboard.js";
9
9
  const EnvironmentVariablesContext = createContext(null);
10
10
  const EnvironmentVariableContext = createContext({ value: "" });
11
11
  function useEnvironmentVariables() {
@@ -1,7 +1,7 @@
1
1
  import type * as React from "react";
2
2
  import { Streamdown } from "streamdown";
3
- import { MessageBranch, MessageBranchContent, MessageBranchNext, MessageBranchPage, MessageBranchPrevious, MessageBranchSelector, type MessageBranchContentProps, type MessageBranchNextProps, type MessageBranchPageProps, type MessageBranchPreviousProps, type MessageBranchProps, type MessageBranchSelectorProps } from "./message-branch";
4
- import type { AgenticMessageRole } from "./types";
3
+ import { MessageBranch, MessageBranchContent, MessageBranchNext, MessageBranchPage, MessageBranchPrevious, MessageBranchSelector, type MessageBranchContentProps, type MessageBranchNextProps, type MessageBranchPageProps, type MessageBranchPreviousProps, type MessageBranchProps, type MessageBranchSelectorProps } from "./message-branch.js";
4
+ import type { AgenticMessageRole } from "./types.js";
5
5
  import "./message-response.css";
6
6
  import { Button } from "@ciridae/ui/button";
7
7
  type MessageProps = React.ComponentProps<"div"> & {
@@ -6,8 +6,8 @@ import { mermaid } from "@streamdown/mermaid";
6
6
  import { createContext, memo, useContext, useEffect, useMemo, useState } from "react";
7
7
  import { bundledLanguages } from "shiki";
8
8
  import { Streamdown, useIsCodeFenceIncomplete, } from "streamdown";
9
- import { CodeBlock, CodeBlockContent, CodeBlockCopyButton, CodeBlockHeader, CodeBlockTitle, } from "./code-block";
10
- import { MessageBranch, MessageBranchContent, MessageBranchNext, MessageBranchPage, MessageBranchPrevious, MessageBranchSelector, } from "./message-branch";
9
+ import { CodeBlock, CodeBlockContent, CodeBlockCopyButton, CodeBlockHeader, CodeBlockTitle, } from "./code-block.js";
10
+ import { MessageBranch, MessageBranchContent, MessageBranchNext, MessageBranchPage, MessageBranchPrevious, MessageBranchSelector, } from "./message-branch.js";
11
11
  import "./message-response.css";
12
12
  import { Button } from "@ciridae/ui/button";
13
13
  import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@ciridae/ui/tooltip";
@@ -196,7 +196,7 @@ function createMermaidMarkdown(code, meta) {
196
196
  return `${fence}${info}\n${code}\n${fence}`;
197
197
  }
198
198
  function getCodeLanguage(className) {
199
- const language = className?.match(/language-([^\s]+)/)?.[1];
199
+ const language = className?.match(/language-(\S+)/)?.[1];
200
200
  if (language && isBundledLanguage(language))
201
201
  return language;
202
202
  return "tsx";
@@ -213,12 +213,19 @@ function getCodeText(children) {
213
213
  return children.map(getCodeText).join("");
214
214
  return "";
215
215
  }
216
+ // Undefined wherever the query cannot be asked: no window under react-dom/server, no
217
+ // matchMedia under jsdom. Callers treat that as "no stated preference".
218
+ function prefersReducedMotionQuery() {
219
+ if (typeof window === "undefined")
220
+ return undefined;
221
+ return window.matchMedia?.("(prefers-reduced-motion: reduce)");
222
+ }
216
223
  function usePrefersReducedMotion() {
217
- const [prefersReducedMotion, setPrefersReducedMotion] = useState(() => typeof window !== "undefined" && window.matchMedia("(prefers-reduced-motion: reduce)").matches);
224
+ const [prefersReducedMotion, setPrefersReducedMotion] = useState(() => prefersReducedMotionQuery()?.matches ?? false);
218
225
  useEffect(() => {
219
- if (typeof window === "undefined")
226
+ const mediaQuery = prefersReducedMotionQuery();
227
+ if (!mediaQuery)
220
228
  return;
221
- const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
222
229
  const handleChange = (event) => setPrefersReducedMotion(event.matches);
223
230
  mediaQuery.addEventListener("change", handleChange);
224
231
  return () => mediaQuery.removeEventListener("change", handleChange);
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { AgenticMicOption } from "./types";
2
+ import type { AgenticMicOption } from "./types.js";
3
3
  import { CommandEmpty, CommandInput, CommandItem, CommandList } from "@ciridae/ui/command";
4
4
  import { Popover, PopoverContent, PopoverTrigger } from "@ciridae/ui/popover";
5
5
  type MicSelectorContextValue = {
@@ -1,13 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /* eslint-disable max-lines, react-refresh/only-export-components */
2
+ /* eslint-disable react-refresh/only-export-components */
3
3
  import { ChevronsUpDownIcon } from "lucide-react";
4
4
  import * as React from "react";
5
5
  import { Button } from "@ciridae/ui/button";
6
6
  import { Command, CommandEmpty, CommandInput, CommandItem, CommandList } from "@ciridae/ui/command";
7
7
  import { Popover, PopoverContent, PopoverTrigger } from "@ciridae/ui/popover";
8
8
  import { cn } from "@ciridae/ui/utils";
9
- import { useControllableState } from "./use-controllable-state";
10
- const deviceIdRegex = /\(([\da-fA-F]{4}:[\da-fA-F]{4})\)$/;
9
+ import { useControllableState } from "./use-controllable-state.js";
10
+ const deviceIdRegex = /\(([\da-f]{4}:[\da-f]{4})\)$/i;
11
11
  const MicSelectorContext = React.createContext(null);
12
12
  function MicSelector({ children, defaultOpen = false, defaultValue, mics, onOpenChange, onValueChange, open: openProp, value: valueProp, ...props }) {
13
13
  const [value, setValue] = useControllableState({
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useRive, useStateMachineInput, useViewModel, useViewModelInstance, useViewModelInstanceColor, } from "@rive-app/react-webgl2";
3
3
  import { memo, useEffect, useMemo, useRef, useState } from "react";
4
- import { useAgenticTheme } from "./theme";
4
+ import { useAgenticTheme } from "./theme.js";
5
5
  import { cn } from "@ciridae/ui/utils";
6
6
  const HALO_SOURCE = "/assets/persona/halo-2.0.riv";
7
7
  const STATE_MACHINE = "default";
@@ -1,13 +1,13 @@
1
1
  import * as React from "react";
2
- export { AttachmentActionAddFiles as PromptInputActionAddAttachments, AttachmentActionAddScreenshot as PromptInputActionAddScreenshot, } from "./attachments";
3
- export type { AttachmentActionAddFilesProps as PromptInputActionAddAttachmentsProps, AttachmentActionAddScreenshotProps as PromptInputActionAddScreenshotProps, } from "./attachments";
4
- export * from "./prompt-input-action-menu";
5
- export * from "./prompt-input-command";
6
- export * from "./prompt-input-hover-card";
7
- export * from "./prompt-input-select";
8
- export * from "./prompt-input-tabs";
9
- import { type AgenticAttachment, type AttachmentProviderProps } from "./attachments";
10
- import type { AgenticChatStatus } from "./types";
2
+ export { AttachmentActionAddFiles as PromptInputActionAddAttachments, AttachmentActionAddScreenshot as PromptInputActionAddScreenshot, } from "./attachments.js";
3
+ export type { AttachmentActionAddFilesProps as PromptInputActionAddAttachmentsProps, AttachmentActionAddScreenshotProps as PromptInputActionAddScreenshotProps, } from "./attachments.js";
4
+ export * from "./prompt-input-action-menu.js";
5
+ export * from "./prompt-input-command.js";
6
+ export * from "./prompt-input-hover-card.js";
7
+ export * from "./prompt-input-select.js";
8
+ export * from "./prompt-input-tabs.js";
9
+ import { type AgenticAttachment, type AttachmentProviderProps } from "./attachments.js";
10
+ import type { AgenticChatStatus } from "./types.js";
11
11
  import { Button } from "@ciridae/ui/button";
12
12
  import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupTextarea } from "@ciridae/ui/input-group";
13
13
  type PromptInputMessage = {
@@ -1,14 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /* eslint-disable max-lines, react-refresh/only-export-components */
2
+ /* eslint-disable react-refresh/only-export-components */
3
3
  import { ArrowUpIcon, SquareIcon } from "lucide-react";
4
4
  import * as React from "react";
5
- export { AttachmentActionAddFiles as PromptInputActionAddAttachments, AttachmentActionAddScreenshot as PromptInputActionAddScreenshot, } from "./attachments";
6
- export * from "./prompt-input-action-menu";
7
- export * from "./prompt-input-command";
8
- export * from "./prompt-input-hover-card";
9
- export * from "./prompt-input-select";
10
- export * from "./prompt-input-tabs";
11
- import { AttachmentProvider, prepareAttachmentsForSubmit, useAttachmentDropTarget, useAttachments, useOptionalAttachments, } from "./attachments";
5
+ export { AttachmentActionAddFiles as PromptInputActionAddAttachments, AttachmentActionAddScreenshot as PromptInputActionAddScreenshot, } from "./attachments.js";
6
+ export * from "./prompt-input-action-menu.js";
7
+ export * from "./prompt-input-command.js";
8
+ export * from "./prompt-input-hover-card.js";
9
+ export * from "./prompt-input-select.js";
10
+ export * from "./prompt-input-tabs.js";
11
+ import { AttachmentProvider, prepareAttachmentsForSubmit, useAttachmentDropTarget, useAttachments, useOptionalAttachments, } from "./attachments.js";
12
12
  import { Button } from "@ciridae/ui/button";
13
13
  import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupTextarea, } from "@ciridae/ui/input-group";
14
14
  import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@ciridae/ui/tooltip";
@@ -6,7 +6,7 @@ import { mermaid } from "@streamdown/mermaid";
6
6
  import { BrainIcon, ChevronDownIcon } from "lucide-react";
7
7
  import { createContext, memo, useCallback, useContext, useEffect, useMemo, useRef, useState, } from "react";
8
8
  import { Streamdown } from "streamdown";
9
- import { Shimmer } from "./shimmer";
9
+ import { Shimmer } from "./shimmer.js";
10
10
  import "./message-response.css";
11
11
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@ciridae/ui/collapsible";
12
12
  import { cn } from "@ciridae/ui/utils";
@@ -3,7 +3,7 @@ import { CheckIcon, CopyIcon } from "lucide-react";
3
3
  import { createContext, useContext, useMemo, useState } from "react";
4
4
  import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, } from "@ciridae/ui/input-group";
5
5
  import { cn } from "@ciridae/ui/utils";
6
- import { copyToClipboard } from "./clipboard";
6
+ import { copyToClipboard } from "./clipboard.js";
7
7
  const SnippetContext = createContext({ value: "" });
8
8
  function useSnippet() {
9
9
  return useContext(SnippetContext);
@@ -1,5 +1,5 @@
1
1
  import type * as React from "react";
2
- import type { AgenticSpeechStatus } from "./types";
2
+ import type { AgenticSpeechStatus } from "./types.js";
3
3
  import { Button } from "@ciridae/ui/button";
4
4
  type SpeechInputProps = React.ComponentProps<"div"> & {
5
5
  disabled?: boolean;
@@ -4,7 +4,7 @@ import { createContext, useContext, useMemo, useState } from "react";
4
4
  import { Button } from "@ciridae/ui/button";
5
5
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@ciridae/ui/collapsible";
6
6
  import { cn } from "@ciridae/ui/utils";
7
- import { copyToClipboard } from "./clipboard";
7
+ import { copyToClipboard } from "./clipboard.js";
8
8
  const StackTraceContext = createContext(null);
9
9
  function useStackTrace() {
10
10
  const context = useContext(StackTraceContext);
@@ -63,10 +63,17 @@ function parseStackFrames(stack) {
63
63
  }
64
64
  function parseStackLine(line) {
65
65
  const trimmed = line.trim().replace(/^at\s+/, "");
66
- const match = /^(?:(.+?)\s+\()?(.+):(\d+):(\d+)\)?$/.exec(trimmed);
67
- if (!match)
66
+ const location = /:(\d+):(\d+)\)?$/.exec(trimmed);
67
+ if (!location)
68
68
  return null;
69
- return { column: match[4], file: match[2], line: match[3], method: match[1] };
69
+ const locationPrefix = trimmed.slice(0, location.index);
70
+ const methodSeparator = locationPrefix.lastIndexOf(" (");
71
+ return {
72
+ column: location[2],
73
+ file: methodSeparator === -1 ? locationPrefix : locationPrefix.slice(methodSeparator + 2),
74
+ line: location[1],
75
+ method: methodSeparator === -1 ? undefined : locationPrefix.slice(0, methodSeparator),
76
+ };
70
77
  }
71
78
  function formatLocation(frame) {
72
79
  if (!frame.line)
@@ -3,7 +3,7 @@ import { CheckIcon, CopyIcon, SquareIcon, XIcon } from "lucide-react";
3
3
  import { createContext, useContext, useMemo, useState } from "react";
4
4
  import { Button } from "@ciridae/ui/button";
5
5
  import { cn } from "@ciridae/ui/utils";
6
- import { copyToClipboard } from "./clipboard";
6
+ import { copyToClipboard } from "./clipboard.js";
7
7
  const TerminalContext = createContext({ output: "" });
8
8
  const statusLabel = { error: "error", idle: "idle", running: "running", success: "success" };
9
9
  const statusClass = {
@@ -1,5 +1,5 @@
1
1
  import type * as React from "react";
2
- import type { AgenticToolState } from "./types";
2
+ import type { AgenticToolState } from "./types.js";
3
3
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@ciridae/ui/collapsible";
4
4
  type ToolProps = React.ComponentProps<typeof Collapsible>;
5
5
  type ToolHeaderProps = Omit<React.ComponentProps<typeof CollapsibleTrigger>, "type"> & {
@@ -1,5 +1,5 @@
1
1
  import type * as React from "react";
2
- import type { AgenticTranscriptSegment } from "./types";
2
+ import type { AgenticTranscriptSegment } from "./types.js";
3
3
  type TranscriptionProps = React.ComponentProps<"div"> & {
4
4
  segments?: AgenticTranscriptSegment[];
5
5
  };
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { AgenticVoiceOption } from "./types";
2
+ import type { AgenticVoiceOption } from "./types.js";
3
3
  import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut } from "@ciridae/ui/command";
4
4
  import { Dialog, DialogContent, DialogTrigger } from "@ciridae/ui/dialog";
5
5
  type VoiceSelectorContextValue = {
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /* eslint-disable max-lines, react-refresh/only-export-components */
2
+ /* eslint-disable react-refresh/only-export-components */
3
3
  import { CircleSmallIcon, MarsIcon, PauseIcon, PlayIcon, TransgenderIcon, VenusAndMarsIcon, VenusIcon, } from "lucide-react";
4
4
  import * as React from "react";
5
5
  import { Button } from "@ciridae/ui/button";
@@ -7,7 +7,7 @@ import { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, Comma
7
7
  import { Dialog, DialogContent, DialogTitle, DialogTrigger } from "@ciridae/ui/dialog";
8
8
  import { Spinner } from "@ciridae/ui/spinner";
9
9
  import { cn } from "@ciridae/ui/utils";
10
- import { useControllableState } from "./use-controllable-state";
10
+ import { useControllableState } from "./use-controllable-state.js";
11
11
  const VoiceSelectorContext = React.createContext(null);
12
12
  function VoiceSelector({ children, defaultOpen = false, defaultValue, onOpenChange, onValueChange, open: openProp, value: valueProp, voices = [], ...props }) {
13
13
  const [value, setValue] = useControllableState({
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Artifact, ArtifactContent, ArtifactDescription, ArtifactHeader, ArtifactTitle, } from "../agentic/artifact";
3
- import { CodeBlock, CodeBlockContent, CodeBlockCopyButton, CodeBlockHeader, CodeBlockTitle, } from "../agentic/code-block";
4
- import { Sandbox, SandboxContent, SandboxHeader, SandboxTabContent, SandboxTabs, SandboxTabsBar, SandboxTabsList, SandboxTabsTrigger, } from "../agentic/sandbox";
5
- import { WebPreview, WebPreviewBody, WebPreviewNavigation, WebPreviewNavigationButton, WebPreviewUrl, } from "../agentic/web-preview";
2
+ import { Artifact, ArtifactContent, ArtifactDescription, ArtifactHeader, ArtifactTitle, } from "../agentic/artifact.js";
3
+ import { CodeBlock, CodeBlockContent, CodeBlockCopyButton, CodeBlockHeader, CodeBlockTitle, } from "../agentic/code-block.js";
4
+ import { Sandbox, SandboxContent, SandboxHeader, SandboxTabContent, SandboxTabs, SandboxTabsBar, SandboxTabsList, SandboxTabsTrigger, } from "../agentic/sandbox.js";
5
+ import { WebPreview, WebPreviewBody, WebPreviewNavigation, WebPreviewNavigationButton, WebPreviewUrl, } from "../agentic/web-preview.js";
6
6
  import { cn } from "@ciridae/ui/utils";
7
7
  function ArtifactWorkbench({ className, code, previewUrl, title, ...props }) {
8
8
  return (_jsxs("div", { "data-slot": "artifact-workbench", className: cn("grid w-full gap-4 lg:grid-cols-[minmax(0,1fr)_minmax(18rem,24rem)]", className), ...props, children: [_jsx(ArtifactWorkbenchPreviewPane, { previewUrl: previewUrl, title: title }), _jsx(ArtifactWorkbenchSourcePane, { code: code })] }));
@@ -1,5 +1,5 @@
1
1
  import type * as React from "react";
2
- import type { AgenticApproval, AgenticToolPart } from "../agentic/types";
2
+ import type { AgenticApproval, AgenticToolPart } from "../agentic/types.js";
3
3
  type ToolApprovalPanelProps = React.ComponentProps<"div"> & {
4
4
  approval?: AgenticApproval;
5
5
  onApprove?: () => void;
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ApprovalRequest, ApprovalRequestAction, ApprovalRequestActions, ApprovalRequestDescription, ApprovalRequestPending, ApprovalRequestTitle, } from "../agentic/approval-request";
3
- import { Tool, ToolContent, ToolHeader, ToolInput, ToolOutput } from "../agentic/tool";
2
+ import { ApprovalRequest, ApprovalRequestAction, ApprovalRequestActions, ApprovalRequestDescription, ApprovalRequestPending, ApprovalRequestTitle, } from "../agentic/approval-request.js";
3
+ import { Tool, ToolContent, ToolHeader, ToolInput, ToolOutput } from "../agentic/tool.js";
4
4
  import { cn } from "@ciridae/ui/utils";
5
5
  function ToolApprovalPanel({ approval, className, onApprove, onReject, tool, ...props }) {
6
6
  return (_jsx("div", { "data-slot": "tool-approval-panel", className: cn("grid gap-3", className), ...props, children: _jsxs(Tool, { defaultOpen: true, children: [_jsx(ToolHeader, { state: tool.state, title: tool.toolName, type: tool.type }), _jsxs(ToolContent, { children: [_jsx(ToolInput, { input: tool.input }), _jsx(ToolApprovalPanelRequest, { approval: approval, onApprove: onApprove, onReject: onReject, state: tool.state }), _jsx(ToolOutput, { errorText: tool.errorText, output: tool.output })] })] }) }));
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { AgenticAudioSource, AgenticMicOption, AgenticSpeechStatus, AgenticTranscriptSegment, AgenticVoiceOption } from "../agentic/types";
2
+ import type { AgenticAudioSource, AgenticMicOption, AgenticSpeechStatus, AgenticTranscriptSegment, AgenticVoiceOption } from "../agentic/types.js";
3
3
  type VoiceAgentPanelProps = React.ComponentProps<"div"> & {
4
4
  audio?: AgenticAudioSource;
5
5
  mics?: AgenticMicOption[];
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import { AudioPlayer } from "../agentic/audio-player";
4
- import { MicSelector } from "../agentic/mic-selector";
5
- import { Persona } from "../agentic/persona";
6
- import { SpeechInput } from "../agentic/speech-input";
7
- import { Transcription } from "../agentic/transcription";
8
- import { VoiceSelector } from "../agentic/voice-selector";
3
+ import { AudioPlayer } from "../agentic/audio-player.js";
4
+ import { MicSelector } from "../agentic/mic-selector.js";
5
+ import { Persona } from "../agentic/persona.js";
6
+ import { SpeechInput } from "../agentic/speech-input.js";
7
+ import { Transcription } from "../agentic/transcription.js";
8
+ import { VoiceSelector } from "../agentic/voice-selector.js";
9
9
  import { Badge } from "@ciridae/ui/badge";
10
10
  import { cn } from "@ciridae/ui/utils";
11
11
  const defaultMics = [