@wzrhine/agent 0.1.0 → 0.2.0

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 (169) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/dist/agent.css +1 -0
  3. package/dist/components/artifact/ArtifactCard.d.ts +3 -0
  4. package/dist/components/artifact/ArtifactCard.d.ts.map +1 -1
  5. package/dist/components/artifact/ArtifactCard.js +4 -3
  6. package/dist/components/artifact/ArtifactCard.js.map +1 -1
  7. package/dist/components/artifact/FilePreview.d.ts +4 -0
  8. package/dist/components/artifact/FilePreview.d.ts.map +1 -1
  9. package/dist/components/artifact/FilePreview.js +8 -2
  10. package/dist/components/artifact/FilePreview.js.map +1 -1
  11. package/dist/components/composer/AttachmentList.d.ts.map +1 -1
  12. package/dist/components/composer/AttachmentList.js +7 -3
  13. package/dist/components/composer/AttachmentList.js.map +1 -1
  14. package/dist/components/composer/Composer.d.ts +7 -1
  15. package/dist/components/composer/Composer.d.ts.map +1 -1
  16. package/dist/components/composer/Composer.js +18 -9
  17. package/dist/components/composer/Composer.js.map +1 -1
  18. package/dist/components/composer/ComposerInput.d.ts +2 -0
  19. package/dist/components/composer/ComposerInput.d.ts.map +1 -1
  20. package/dist/components/composer/ComposerInput.js +3 -3
  21. package/dist/components/composer/ComposerInput.js.map +1 -1
  22. package/dist/components/composer/MentionMenu.d.ts.map +1 -1
  23. package/dist/components/composer/MentionMenu.js +2 -1
  24. package/dist/components/composer/MentionMenu.js.map +1 -1
  25. package/dist/components/composer/ModelPicker.d.ts +15 -2
  26. package/dist/components/composer/ModelPicker.d.ts.map +1 -1
  27. package/dist/components/composer/ModelPicker.js +20 -9
  28. package/dist/components/composer/ModelPicker.js.map +1 -1
  29. package/dist/components/composer/PermissionPicker.d.ts +5 -1
  30. package/dist/components/composer/PermissionPicker.d.ts.map +1 -1
  31. package/dist/components/composer/PermissionPicker.js +13 -5
  32. package/dist/components/composer/PermissionPicker.js.map +1 -1
  33. package/dist/components/composer/ReferencePicker.d.ts +31 -0
  34. package/dist/components/composer/ReferencePicker.d.ts.map +1 -0
  35. package/dist/components/composer/ReferencePicker.js +50 -0
  36. package/dist/components/composer/ReferencePicker.js.map +1 -0
  37. package/dist/components/composer/SendStopButton.d.ts +2 -0
  38. package/dist/components/composer/SendStopButton.d.ts.map +1 -1
  39. package/dist/components/composer/SendStopButton.js +3 -2
  40. package/dist/components/composer/SendStopButton.js.map +1 -1
  41. package/dist/components/composer/SkillPicker.d.ts +26 -0
  42. package/dist/components/composer/SkillPicker.d.ts.map +1 -0
  43. package/dist/components/composer/SkillPicker.js +26 -0
  44. package/dist/components/composer/SkillPicker.js.map +1 -0
  45. package/dist/components/conversation/ConversationList.d.ts +6 -0
  46. package/dist/components/conversation/ConversationList.d.ts.map +1 -1
  47. package/dist/components/conversation/ConversationList.js +4 -4
  48. package/dist/components/conversation/ConversationList.js.map +1 -1
  49. package/dist/components/intervention/ErrorRecoveryNotice.d.ts.map +1 -1
  50. package/dist/components/intervention/ErrorRecoveryNotice.js +3 -2
  51. package/dist/components/intervention/ErrorRecoveryNotice.js.map +1 -1
  52. package/dist/components/intervention/QuestionnaireCard.d.ts +22 -1
  53. package/dist/components/intervention/QuestionnaireCard.d.ts.map +1 -1
  54. package/dist/components/intervention/QuestionnaireCard.js +23 -12
  55. package/dist/components/intervention/QuestionnaireCard.js.map +1 -1
  56. package/dist/components/intervention/questionnaire-answers.d.ts +5 -0
  57. package/dist/components/intervention/questionnaire-answers.d.ts.map +1 -1
  58. package/dist/components/intervention/questionnaire-answers.js +16 -0
  59. package/dist/components/intervention/questionnaire-answers.js.map +1 -1
  60. package/dist/components/message/CitationChip.d.ts +4 -0
  61. package/dist/components/message/CitationChip.d.ts.map +1 -1
  62. package/dist/components/message/CitationChip.js +6 -4
  63. package/dist/components/message/CitationChip.js.map +1 -1
  64. package/dist/components/message/CodeBlock.d.ts.map +1 -1
  65. package/dist/components/message/CodeBlock.js +2 -2
  66. package/dist/components/message/CodeBlock.js.map +1 -1
  67. package/dist/components/message/MessageActions.d.ts +4 -0
  68. package/dist/components/message/MessageActions.d.ts.map +1 -1
  69. package/dist/components/message/MessageActions.js +3 -3
  70. package/dist/components/message/MessageActions.js.map +1 -1
  71. package/dist/components/message/MessageList.d.ts +6 -0
  72. package/dist/components/message/MessageList.d.ts.map +1 -1
  73. package/dist/components/message/MessageList.js +68 -7
  74. package/dist/components/message/MessageList.js.map +1 -1
  75. package/dist/components/message/MessagePart.d.ts.map +1 -1
  76. package/dist/components/message/MessagePart.js +8 -4
  77. package/dist/components/message/MessagePart.js.map +1 -1
  78. package/dist/components/message/use-copy.d.ts +1 -0
  79. package/dist/components/message/use-copy.d.ts.map +1 -1
  80. package/dist/components/message/use-copy.js +3 -1
  81. package/dist/components/message/use-copy.js.map +1 -1
  82. package/dist/components/shell/AgentHeader.d.ts.map +1 -1
  83. package/dist/components/shell/AgentHeader.js +6 -1
  84. package/dist/components/shell/AgentHeader.js.map +1 -1
  85. package/dist/components/shell/AgentShell.d.ts +16 -0
  86. package/dist/components/shell/AgentShell.d.ts.map +1 -1
  87. package/dist/components/shell/AgentShell.js +9 -5
  88. package/dist/components/shell/AgentShell.js.map +1 -1
  89. package/dist/components/shell/ResizeHandle.d.ts +4 -0
  90. package/dist/components/shell/ResizeHandle.d.ts.map +1 -1
  91. package/dist/components/shell/ResizeHandle.js +14 -4
  92. package/dist/components/shell/ResizeHandle.js.map +1 -1
  93. package/dist/components/shell/use-controllable.d.ts +1 -1
  94. package/dist/components/shell/use-controllable.d.ts.map +1 -1
  95. package/dist/components/tools/DiffPreview.js +2 -2
  96. package/dist/components/tools/DiffPreview.js.map +1 -1
  97. package/dist/components/tools/ToolDetails.d.ts +16 -4
  98. package/dist/components/tools/ToolDetails.d.ts.map +1 -1
  99. package/dist/components/tools/ToolDetails.js +28 -17
  100. package/dist/components/tools/ToolDetails.js.map +1 -1
  101. package/dist/components/tools/ToolRecord.d.ts +4 -0
  102. package/dist/components/tools/ToolRecord.d.ts.map +1 -1
  103. package/dist/components/tools/ToolRecord.js +4 -3
  104. package/dist/components/tools/ToolRecord.js.map +1 -1
  105. package/dist/components/tools/shared.d.ts +1 -1
  106. package/dist/components/tools/shared.d.ts.map +1 -1
  107. package/dist/components/tools/shared.js +1 -1
  108. package/dist/components/tools/shared.js.map +1 -1
  109. package/dist/components/workspace/ContextUsage.d.ts +6 -0
  110. package/dist/components/workspace/ContextUsage.d.ts.map +1 -1
  111. package/dist/components/workspace/ContextUsage.js +8 -8
  112. package/dist/components/workspace/ContextUsage.js.map +1 -1
  113. package/dist/components/workspace/RunOverview.d.ts +29 -0
  114. package/dist/components/workspace/RunOverview.d.ts.map +1 -0
  115. package/dist/components/workspace/RunOverview.js +20 -0
  116. package/dist/components/workspace/RunOverview.js.map +1 -0
  117. package/dist/components/workspace/SubAgentCard.d.ts +5 -1
  118. package/dist/components/workspace/SubAgentCard.d.ts.map +1 -1
  119. package/dist/components/workspace/SubAgentCard.js +10 -5
  120. package/dist/components/workspace/SubAgentCard.js.map +1 -1
  121. package/dist/components/workspace/TerminalRow.d.ts +13 -3
  122. package/dist/components/workspace/TerminalRow.d.ts.map +1 -1
  123. package/dist/components/workspace/TerminalRow.js +8 -5
  124. package/dist/components/workspace/TerminalRow.js.map +1 -1
  125. package/dist/components/workspace/shared.d.ts +6 -2
  126. package/dist/components/workspace/shared.d.ts.map +1 -1
  127. package/dist/components/workspace/shared.js +8 -3
  128. package/dist/components/workspace/shared.js.map +1 -1
  129. package/dist/index.d.ts +9 -3
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +5 -2
  132. package/dist/index.js.map +1 -1
  133. package/dist/primitives/StatusGlyph.d.ts +8 -2
  134. package/dist/primitives/StatusGlyph.d.ts.map +1 -1
  135. package/dist/primitives/StatusGlyph.js +2 -2
  136. package/dist/primitives/StatusGlyph.js.map +1 -1
  137. package/dist/primitives/icons.d.ts +8 -2
  138. package/dist/primitives/icons.d.ts.map +1 -1
  139. package/dist/primitives/icons.js +2 -2
  140. package/dist/primitives/icons.js.map +1 -1
  141. package/dist/provider/AgentMessages.d.ts +11 -1
  142. package/dist/provider/AgentMessages.d.ts.map +1 -1
  143. package/dist/provider/AgentMessages.js +6 -2
  144. package/dist/provider/AgentMessages.js.map +1 -1
  145. package/dist/provider/messages/composer.d.ts +27 -5
  146. package/dist/provider/messages/composer.d.ts.map +1 -1
  147. package/dist/provider/messages/composer.js +12 -2
  148. package/dist/provider/messages/composer.js.map +1 -1
  149. package/dist/provider/messages/intervention.d.ts +5 -4
  150. package/dist/provider/messages/intervention.d.ts.map +1 -1
  151. package/dist/provider/messages/intervention.js.map +1 -1
  152. package/dist/provider/messages/message.d.ts +5 -4
  153. package/dist/provider/messages/message.d.ts.map +1 -1
  154. package/dist/provider/messages/message.js.map +1 -1
  155. package/dist/provider/messages/status.d.ts +2 -1
  156. package/dist/provider/messages/status.d.ts.map +1 -1
  157. package/dist/provider/messages/status.js.map +1 -1
  158. package/dist/provider/messages/tools.d.ts +7 -0
  159. package/dist/provider/messages/tools.d.ts.map +1 -1
  160. package/dist/provider/messages/tools.js +14 -0
  161. package/dist/provider/messages/tools.js.map +1 -1
  162. package/dist/provider/messages/workspace.d.ts +12 -1
  163. package/dist/provider/messages/workspace.d.ts.map +1 -1
  164. package/dist/provider/messages/workspace.js +8 -0
  165. package/dist/provider/messages/workspace.js.map +1 -1
  166. package/dist/styles/shell.css +12 -0
  167. package/dist/styles/workspace.css +3 -0
  168. package/dist/styles/wpi-adoption.css +24 -0
  169. package/package.json +7 -7
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+ export interface ReferenceOption {
3
+ path: string;
4
+ name: string;
5
+ kind?: 'file' | 'folder';
6
+ disabled?: boolean;
7
+ }
8
+ export type ReferencePickerProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & {
9
+ value?: string;
10
+ onValueChange?: (value: string) => void;
11
+ items?: readonly ReferenceOption[];
12
+ open?: boolean;
13
+ defaultOpen?: boolean;
14
+ onOpenChange?: (open: boolean) => void;
15
+ anchor?: React.RefObject<HTMLElement | null> | HTMLElement;
16
+ hideTrigger?: boolean;
17
+ onAdd: (path: string) => Promise<boolean> | boolean;
18
+ onNavigate?: (path: string) => void;
19
+ onUp?: () => void;
20
+ onSearch?: (query: string) => void;
21
+ loading?: boolean;
22
+ error?: React.ReactNode;
23
+ truncated?: boolean;
24
+ hasMore?: boolean;
25
+ loadingMore?: boolean;
26
+ onLoadMore?: () => void;
27
+ onRetry?: () => void;
28
+ disabled?: boolean;
29
+ };
30
+ export declare function ReferencePicker({ value: valueProp, onValueChange, items, open: openProp, defaultOpen, onOpenChange, anchor, hideTrigger, onAdd, onNavigate, onUp, onSearch, loading, error, truncated, hasMore, loadingMore, onLoadMore, onRetry, disabled, className, ...rest }: ReferencePickerProps): React.JSX.Element;
31
+ //# sourceMappingURL=ReferencePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferencePicker.d.ts","sourceRoot":"","sources":["../../../src/components/composer/ReferencePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAAE;AAC9G,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAAG;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACpD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,KAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,WAAmB,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAe,EAAE,KAAK,EAAE,SAAiB,EAAE,OAAe,EAAE,WAAmB,EAAE,UAAU,EAAE,OAAO,EAAE,QAAgB,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,oBAAoB,qBA0C3V"}
@@ -0,0 +1,50 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { Button, Input, Popover } from '@wzrhine/react';
5
+ import { useAgentMessages } from '../../provider/AgentMessages.js';
6
+ import { cx } from '../../utils/cx.js';
7
+ export function ReferencePicker({ value: valueProp, onValueChange, items = [], open: openProp, defaultOpen, onOpenChange, anchor, hideTrigger = false, onAdd, onNavigate, onUp, onSearch, loading = false, error, truncated = false, hasMore = false, loadingMore = false, onLoadMore, onRetry, disabled = false, className, ...rest }) {
8
+ const m = useAgentMessages().composer;
9
+ const [issue, setIssue] = React.useState(null);
10
+ const [innerValue, setInnerValue] = React.useState(valueProp ?? '');
11
+ const [innerOpen, setInnerOpen] = React.useState(defaultOpen ?? false);
12
+ const [adding, setAdding] = React.useState(false);
13
+ const addAttempt = React.useRef(0);
14
+ const composing = React.useRef(false);
15
+ const value = valueProp ?? innerValue;
16
+ const open = openProp ?? innerOpen;
17
+ const trigger = hideTrigger ? undefined : _jsx(Button, { size: "sm", variant: "ghost", disabled: disabled, children: m.referencePicker.add });
18
+ const setOpen = (next) => { addAttempt.current += 1; setAdding(false); if (openProp === undefined)
19
+ setInnerOpen(next); onOpenChange?.(next); };
20
+ const add = async (path) => {
21
+ const candidate = path.trim();
22
+ if (disabled || adding || !candidate)
23
+ return;
24
+ const attempt = ++addAttempt.current;
25
+ setAdding(true);
26
+ setIssue(null);
27
+ try {
28
+ const ok = await onAdd(candidate);
29
+ if (addAttempt.current !== attempt)
30
+ return;
31
+ if (ok)
32
+ setOpen(false);
33
+ else
34
+ setIssue(m.referencePicker.error);
35
+ }
36
+ catch (reason) {
37
+ if (addAttempt.current !== attempt)
38
+ return;
39
+ setIssue(reason instanceof Error ? reason.message : m.referencePicker.error);
40
+ }
41
+ finally {
42
+ if (addAttempt.current === attempt)
43
+ setAdding(false);
44
+ }
45
+ };
46
+ return _jsx("div", { ...rest, className: cx('rl-agent-reference-picker', className), children: _jsx(Popover, { trigger: trigger, anchor: anchor, open: open, onOpenChange: setOpen, title: m.referencePicker.label, initialFocus: false, children: _jsxs("form", { className: "rl-agent-reference-picker__body", onSubmit: (event) => { event.preventDefault(); if (!composing.current)
47
+ void add(value); }, children: [_jsx(Input, { "aria-label": m.referencePicker.search, value: value, onValueChange: (next) => { addAttempt.current += 1; setAdding(false); if (valueProp === undefined)
48
+ setInnerValue(next); onValueChange?.(next); onSearch?.(next); }, disabled: disabled || adding, onCompositionStart: () => { composing.current = true; }, onCompositionEnd: () => { composing.current = false; } }), _jsx("div", { className: "rl-agent-reference-picker__actions", children: onUp && _jsx(Button, { size: "sm", variant: "ghost", disabled: adding, onClick: () => { addAttempt.current += 1; setAdding(false); onUp(); }, children: m.referencePicker.up }) }), _jsx(Button, { size: "sm", variant: "secondary", type: "submit", disabled: disabled || adding || value.trim() === '', children: m.referencePicker.add }), loading ? _jsx("p", { role: "status", children: m.referencePicker.loading }) : error || issue ? _jsxs("div", { role: "alert", children: [_jsx("p", { children: error || issue }), onRetry && _jsx(Button, { size: "sm", variant: "ghost", onClick: onRetry, children: m.retry })] }) : items.length === 0 ? _jsx("p", { children: m.referencePicker.empty }) : _jsx("ul", { children: items.map((item) => _jsx("li", { children: _jsx("button", { type: "button", disabled: item.disabled || adding, onClick: () => item.kind === 'folder' ? onNavigate?.(item.path) : void add(item.path), children: item.name }) }, item.path)) }), truncated && _jsx("p", { role: "status", children: m.referencePicker.truncated }), hasMore && onLoadMore && _jsx(Button, { size: "sm", variant: "ghost", loading: loadingMore, disabled: loadingMore || disabled, onClick: onLoadMore, children: m.loadMore })] }) }) });
49
+ }
50
+ //# sourceMappingURL=ReferencePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferencePicker.js","sourceRoot":"","sources":["../../../src/components/composer/ReferencePicker.tsx"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export type SendStopButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElem
22
22
  onRetry?: (kind: 'send' | 'stop', actionId: string | undefined) => void;
23
23
  /** Draft save failed: the button becomes 重试保存. */
24
24
  onRetrySave?: () => void;
25
+ retryBusy?: boolean;
25
26
  /** Why sending is not possible; shown in the tooltip and linked with aria-describedby. */
26
27
  disabledReason?: string;
27
28
  /** Override labels per state. */
@@ -61,6 +62,7 @@ export declare const SendStopButton: React.ForwardRefExoticComponent<Omit<React.
61
62
  onRetry?: (kind: "send" | "stop", actionId: string | undefined) => void;
62
63
  /** Draft save failed: the button becomes 重试保存. */
63
64
  onRetrySave?: () => void;
65
+ retryBusy?: boolean;
64
66
  /** Why sending is not possible; shown in the tooltip and linked with aria-describedby. */
65
67
  disabledReason?: string;
66
68
  /** Override labels per state. */
@@ -1 +1 @@
1
- {"version":3,"file":"SendStopButton.d.ts","sourceRoot":"","sources":["../../../src/components/composer/SendStopButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAM/F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,KAAK,sBAAsB,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,sBAAsB,CAAC;AAEtI,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,GAAG,sBAAsB,CACrF,GAAG;IACF,qFAAqF;IACrF,OAAO,EAAE,OAAO,CAAC;IACjB,gGAAgG;IAChG,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IAC3C,qGAAqG;IACrG,WAAW,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IAC3C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACxE,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,YAAY,GAAG,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAOF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc;IA5CzB,qFAAqF;aAC5E,OAAO;IAChB,gGAAgG;WACzF,MAAM,GAAG,MAAM;gBACV,SAAS;IACrB,0EAA0E;kBAC5D,aAAa,GAAG,YAAY;IAC1C,qGAAqG;kBACvF,aAAa,GAAG,YAAY;kBAC5B,WAAW;aAChB,MAAM,IAAI;aACV,MAAM,IAAI;IACnB;;;OAGG;cACO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI;IACvE,kDAAkD;kBACpC,MAAM,IAAI;IACxB,0FAA0F;qBACzE,MAAM;IACvB,iCAAiC;aACxB,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,YAAY,GAAG,YAAY,EAAE,MAAM,CAAC,CAAC;gBACjE,MAAM;2CAsIlB,CAAC"}
1
+ {"version":3,"file":"SendStopButton.d.ts","sourceRoot":"","sources":["../../../src/components/composer/SendStopButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAM/F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,KAAK,sBAAsB,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,sBAAsB,CAAC;AAEtI,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,GAAG,sBAAsB,CACrF,GAAG;IACF,qFAAqF;IACrF,OAAO,EAAE,OAAO,CAAC;IACjB,gGAAgG;IAChG,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IAC3C,qGAAqG;IACrG,WAAW,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IAC3C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACxE,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,YAAY,GAAG,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAOF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc;IA7CzB,qFAAqF;aAC5E,OAAO;IAChB,gGAAgG;WACzF,MAAM,GAAG,MAAM;gBACV,SAAS;IACrB,0EAA0E;kBAC5D,aAAa,GAAG,YAAY;IAC1C,qGAAqG;kBACvF,aAAa,GAAG,YAAY;kBAC5B,WAAW;aAChB,MAAM,IAAI;aACV,MAAM,IAAI;IACnB;;;OAGG;cACO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI;IACvE,kDAAkD;kBACpC,MAAM,IAAI;gBACZ,OAAO;IACnB,0FAA0F;qBACzE,MAAM;IACvB,iCAAiC;aACxB,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,YAAY,GAAG,YAAY,EAAE,MAAM,CAAC,CAAC;gBACjE,MAAM;2CAwIlB,CAAC"}
@@ -26,7 +26,7 @@ function toReceipt(input) {
26
26
  * (`useSwapTransition`: in `base`, out `fast`); a fast toggle continues from the current
27
27
  * opacity. Reduced motion → instant swap. Press feedback matches IconButton.
28
28
  */
29
- export const SendStopButton = React.forwardRef(function SendStopButton({ canSend, mode, runStatus, sendReceipt, stopReceipt, draftStatus, onSend, onStop, onRetry, onRetrySave, disabledReason, labels, className, 'aria-describedby': describedByProp, ...rest }, ref) {
29
+ export const SendStopButton = React.forwardRef(function SendStopButton({ canSend, mode, runStatus, sendReceipt, stopReceipt, draftStatus, onSend, onStop, onRetry, onRetrySave, retryBusy = false, disabledReason, labels, className, 'aria-describedby': describedByProp, ...rest }, ref) {
30
30
  const messages = useAgentMessages().composer;
31
31
  const { enter, exit } = useSwapTransition();
32
32
  const { reduced, get } = useRhineMotion();
@@ -47,7 +47,8 @@ export const SendStopButton = React.forwardRef(function SendStopButton({ canSend
47
47
  retryable: unknown?.retryable,
48
48
  hasRetrySave: onRetrySave !== undefined,
49
49
  });
50
- const { state, enabled, action, icon } = resolved;
50
+ const { state, enabled: resolvedEnabled, action, icon } = resolved;
51
+ const enabled = retryBusy && state === 'retry-save' ? false : resolvedEnabled;
51
52
  const label = state === 'send'
52
53
  ? (labels?.send ?? messages.send)
53
54
  : state === 'sending'
@@ -1 +1 @@
1
- {"version":3,"file":"SendStopButton.js","sourceRoot":"","sources":["../../../src/components/composer/SendStopButton.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SendStopButton.js","sourceRoot":"","sources":["../../../src/components/composer/SendStopButton.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import * as React from 'react';
2
+ export interface SkillOption {
3
+ id: string;
4
+ label: string;
5
+ source?: string;
6
+ disabled?: boolean;
7
+ disabledReason?: string;
8
+ }
9
+ export type SkillPickerProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'onChange'> & {
10
+ skills: readonly SkillOption[];
11
+ selected: readonly SkillOption[];
12
+ onChange: (skills: SkillOption[]) => void;
13
+ max?: number;
14
+ open?: boolean;
15
+ defaultOpen?: boolean;
16
+ onOpenChange?: (open: boolean) => void;
17
+ anchor?: React.RefObject<HTMLElement | null> | HTMLElement;
18
+ hideTrigger?: boolean;
19
+ loading?: boolean;
20
+ error?: React.ReactNode;
21
+ onRetry?: () => void;
22
+ onLimitReached?: (max: number) => void;
23
+ disabled?: boolean;
24
+ };
25
+ export declare function SkillPicker({ skills, selected, onChange, max, open, defaultOpen, onOpenChange, anchor, hideTrigger, loading, error, onRetry, onLimitReached, disabled, className, ...rest }: SkillPickerProps): React.JSX.Element;
26
+ //# sourceMappingURL=SkillPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillPicker.d.ts","sourceRoot":"","sources":["../../../src/components/composer/SkillPicker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,WAAW;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAAE;AACzH,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;IACnG,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,WAAmB,EAAE,OAAe,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,QAAgB,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,gBAAgB,qBAuBzO"}
@@ -0,0 +1,26 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Button, Popover, Tag } from '@wzrhine/react';
4
+ import { useAgentMessages } from '../../provider/AgentMessages.js';
5
+ import { cx } from '../../utils/cx.js';
6
+ export function SkillPicker({ skills, selected, onChange, max = 4, open, defaultOpen, onOpenChange, anchor, hideTrigger = false, loading = false, error, onRetry, onLimitReached, disabled = false, className, ...rest }) {
7
+ const m = useAgentMessages().composer;
8
+ const trigger = hideTrigger ? undefined : _jsx(Button, { size: "sm", variant: "ghost", disabled: disabled, children: m.skillPicker.add });
9
+ const selectedIds = new Set(selected.map((item) => item.id));
10
+ const choose = (item) => {
11
+ if (disabled)
12
+ return;
13
+ if (selectedIds.has(item.id)) {
14
+ // An invalid/stale selection remains removable even though the option itself is disabled.
15
+ onChange(selected.filter((entry) => entry.id !== item.id));
16
+ }
17
+ else if (!item.disabled) {
18
+ if (selected.length < max)
19
+ onChange([...selected, item]);
20
+ else
21
+ onLimitReached?.(max);
22
+ }
23
+ };
24
+ return _jsxs("div", { ...rest, className: cx('rl-agent-skill-picker', className), children: [_jsxs(Popover, { trigger: trigger, anchor: anchor, open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, title: m.skillPicker.label, initialFocus: false, children: [_jsx("div", { role: "listbox", "aria-label": m.skillPicker.label, "aria-multiselectable": "true", children: loading ? _jsx("p", { role: "status", children: m.skillPicker.loading }) : error ? _jsxs("div", { role: "alert", children: [_jsx("p", { children: error === true ? m.skillPicker.error : error }), onRetry && _jsx(Button, { size: "sm", variant: "ghost", onClick: onRetry, children: m.retry })] }) : skills.length === 0 ? _jsx("p", { children: m.skillPicker.empty }) : skills.map((item) => _jsxs("button", { type: "button", role: "option", "aria-selected": selectedIds.has(item.id), "aria-disabled": item.disabled || undefined, disabled: item.disabled && !selectedIds.has(item.id), title: item.disabledReason, onClick: () => choose(item), children: [_jsx("span", { children: item.label }), item.source && _jsx("small", { children: item.source })] }, item.id)) }), _jsx("p", { className: "rl-agent-skill-picker__limit", children: m.skillPicker.limit(String(max)) })] }), selected.length > 0 && _jsx("div", { className: "rl-agent-skill-picker__selected", "aria-label": m.skillPicker.label, children: selected.map((item) => _jsx(Tag, { tone: item.disabled ? 'invalid' : 'neutral', onRemove: () => choose(item), disabled: disabled, children: item.label }, item.id)) })] });
25
+ }
26
+ //# sourceMappingURL=SkillPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillPicker.js","sourceRoot":"","sources":["../../../src/components/composer/SkillPicker.tsx"],"names":[],"mappings":"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"}
@@ -53,6 +53,9 @@ export type ConversationListProps = Omit<React.HTMLAttributes<HTMLDivElement>, '
53
53
  now?: Date;
54
54
  /** Number of skeleton rows while loading. */
55
55
  skeletonRows?: number;
56
+ collapsibleGroups?: boolean;
57
+ collapsedGroups?: readonly string[];
58
+ onCollapsedGroupsChange?: (groups: string[]) => void;
56
59
  };
57
60
  export declare const ConversationList: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "children" | "onSelect"> & {
58
61
  sections: ConversationSection[];
@@ -84,5 +87,8 @@ export declare const ConversationList: React.ForwardRefExoticComponent<Omit<Reac
84
87
  now?: Date;
85
88
  /** Number of skeleton rows while loading. */
86
89
  skeletonRows?: number;
90
+ collapsibleGroups?: boolean;
91
+ collapsedGroups?: readonly string[];
92
+ onCollapsedGroupsChange?: (groups: string[]) => void;
87
93
  } & React.RefAttributes<HTMLDivElement>>;
88
94
  //# sourceMappingURL=ConversationList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationList.d.ts","sourceRoot":"","sources":["../../../src/components/conversation/ConversationList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAKjF,OAAO,KAAK,EAA8B,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE7F;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;IACxG,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,gEAAgE;IAChE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC;IAC5D,KAAK,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC5C,iFAAiF;IACjF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC;IACjD,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,wDAAwD;IACxD,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAIF,eAAO,MAAM,gBAAgB;cAjCjB,mBAAmB,EAAE;iBAClB,MAAM;eACR,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI;IAC/B,4DAA4D;aACnD,MAAM;IACf,gCAAgC;qBACf,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;cAC9B,OAAO;IACjB,mDAAmD;YAC3C,KAAK,CAAC,SAAS;cACb,MAAM,IAAI;IACpB,gEAAgE;oBAChD,CAAC,IAAI,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS;YACnD,oBAAoB,CAAC,OAAO,CAAC;gBACzB,oBAAoB,CAAC,WAAW,CAAC;kBAC/B,oBAAoB,CAAC,aAAa,CAAC;eACtC,oBAAoB,CAAC,UAAU,CAAC;IAC3C,iFAAiF;iBACpE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO;IAChD,+DAA+D;mBAChD,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,0CAA0C;YAClC,MAAM;IACd,uEAAuE;YAC/D,KAAK,CAAC,SAAS;IACvB,wDAAwD;UAClD,IAAI;IACV,6CAA6C;mBAC9B,MAAM;wCAuMrB,CAAC"}
1
+ {"version":3,"file":"ConversationList.d.ts","sourceRoot":"","sources":["../../../src/components/conversation/ConversationList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAKjF,OAAO,KAAK,EAA8B,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE7F;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG;IACxG,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,gEAAgE;IAChE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS,CAAC;IAC5D,KAAK,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACtC,SAAS,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC5C,iFAAiF;IACjF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC;IACjD,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,wDAAwD;IACxD,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACtD,CAAC;AAIF,eAAO,MAAM,gBAAgB;cApCjB,mBAAmB,EAAE;iBAClB,MAAM;eACR,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI;IAC/B,4DAA4D;aACnD,MAAM;IACf,gCAAgC;qBACf,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;cAC9B,OAAO;IACjB,mDAAmD;YAC3C,KAAK,CAAC,SAAS;cACb,MAAM,IAAI;IACpB,gEAAgE;oBAChD,CAAC,IAAI,EAAE,gBAAgB,KAAK,KAAK,CAAC,SAAS;YACnD,oBAAoB,CAAC,OAAO,CAAC;gBACzB,oBAAoB,CAAC,WAAW,CAAC;kBAC/B,oBAAoB,CAAC,aAAa,CAAC;eACtC,oBAAoB,CAAC,UAAU,CAAC;IAC3C,iFAAiF;iBACpE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO;IAChD,+DAA+D;mBAChD,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,0CAA0C;YAClC,MAAM;IACd,uEAAuE;YAC/D,KAAK,CAAC,SAAS;IACvB,wDAAwD;UAClD,IAAI;IACV,6CAA6C;mBAC9B,MAAM;wBACD,OAAO;sBACT,SAAS,MAAM,EAAE;8BACT,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI;wCA6MpD,CAAC"}
@@ -1,14 +1,14 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
4
  import { motion } from 'motion/react';
5
- import { Alert, Button, EmptyState, Input, Skeleton } from '@wzrhine/react';
5
+ import { Alert, Button, Collapsible, EmptyState, Input, Skeleton } from '@wzrhine/react';
6
6
  import { useAgentFormat, useAgentMessages } from '../../provider/AgentMessages.js';
7
7
  import { AgentIcon } from '../../primitives/icons.js';
8
8
  import { cx } from '../../utils/cx.js';
9
9
  import { ConversationRow, ConversationRowContext } from './ConversationRow.js';
10
10
  const ROW_SELECTOR = '.rl-agent-row__main';
11
- export const ConversationList = React.forwardRef(function ConversationList({ sections, selectedId, onSelect, search, onSearchChange, loading = false, error, onRetry, renderActions, onPin, onArchive, onUnarchive, onDelete, isDisabled, headingLevel = 2, label, empty, now, skeletonRows = 5, className, ...rest }, ref) {
11
+ export const ConversationList = React.forwardRef(function ConversationList({ sections, selectedId, onSelect, search, onSearchChange, loading = false, error, onRetry, renderActions, onPin, onArchive, onUnarchive, onDelete, isDisabled, headingLevel = 2, label, empty, now, skeletonRows = 5, collapsibleGroups = false, collapsedGroups = [], onCollapsedGroupsChange, className, ...rest }, ref) {
12
12
  const shell = useAgentMessages().shell;
13
13
  const format = useAgentFormat();
14
14
  const uid = React.useId();
@@ -75,7 +75,7 @@ export const ConversationList = React.forwardRef(function ConversationList({ sec
75
75
  const errorText = error === true ? shell.error : error;
76
76
  return (_jsxs("div", { ...rest, ref: ref, className: cx('rl-agent-list', className), "data-loading": loading || undefined, children: [onSearchChange && (_jsxs("div", { className: "rl-agent-list__search", children: [_jsx("label", { htmlFor: searchId, className: "rl-agent-sr", children: shell.searchLabel }), _jsx(Input, { id: searchId, type: "search", size: "sm", value: search ?? '', placeholder: shell.searchPlaceholder, prefix: _jsx(AgentIcon, { name: "search" }), autoComplete: "off", onChange: (event) => onSearchChange(event.currentTarget.value) }), _jsx("span", { className: "rl-agent-sr", role: "status", children: query && !loading ? shell.searchResults(format.number(total)) : '' })] })), _jsxs(motion.div, { ref: viewportRef, layoutScroll: true, className: "rl-agent-list__viewport", role: "region", "aria-label": label ?? shell.listLabel, "aria-busy": loading || undefined, tabIndex: -1, onKeyDown: onKeyDown, children: [errorText != null && errorText !== false && (_jsx(Alert, { tone: "danger", className: "rl-agent-list__error", title: errorText, action: onRetry ? (_jsx(Button, { size: "sm", variant: "secondary", onClick: onRetry, children: shell.retry })) : undefined })), showSkeleton && (_jsxs("div", { className: "rl-agent-list__skeleton", children: [_jsx("span", { className: "rl-agent-sr", children: shell.loading }), Array.from({ length: skeletonRows }, (_, i) => (_jsxs("div", { className: "rl-agent-list__skeleton-row", "aria-hidden": "true", children: [_jsx(Skeleton, { shape: "circle", width: "var(--rl-icon-size-sm)" }), _jsx(Skeleton, { width: i % 2 ? '70%' : '85%' })] }, i)))] })), !showSkeleton && total === 0 && !errorText && (_jsx("div", { className: "rl-agent-list__empty", children: query ? (_jsx(EmptyState, { kind: "no-results", size: "sm", headingLevel: headingLevel, title: shell.searchEmptyTitle(query), description: shell.searchEmptyDescription })) : ((empty ?? _jsx(EmptyState, { kind: "first-use", size: "sm", headingLevel: headingLevel, title: shell.emptyTitle, description: shell.emptyDescription }))) })), _jsx(ConversationRowContext.Provider, { value: rowContext, children: visible.map((section) => {
77
77
  const headingId = `${uid}-${section.id}`;
78
- return (_jsxs("div", { className: "rl-agent-list__section", children: [_jsx(Heading, { id: headingId, className: "rl-agent-list__heading", children: section.label }), _jsx("ul", { className: "rl-agent-list__rows", "aria-labelledby": headingId, children: section.items.map((item) => (_jsx(ConversationRow, { item: item, selected: item.id === selectedId, disabled: isDisabled?.(item), onSelect: onSelect, onPin: onPin, onArchive: onArchive, onUnarchive: onUnarchive, onDelete: onDelete, actions: renderActions?.(item), now: now }, item.id))) })] }, section.id));
78
+ return (_jsxs("div", { className: "rl-agent-list__section", children: [collapsibleGroups && _jsx(Collapsible, { open: !collapsedGroups.includes(section.id), onOpenChange: (open) => onCollapsedGroupsChange?.(open ? collapsedGroups.filter((id) => id !== section.id) : [...collapsedGroups, section.id]), trigger: section.label, children: _jsx("ul", { className: "rl-agent-list__rows", "aria-label": section.label, children: section.items.map((item) => _jsx(ConversationRow, { item: item, selected: item.id === selectedId, disabled: isDisabled?.(item), onSelect: onSelect, onPin: onPin, onArchive: onArchive, onUnarchive: onUnarchive, onDelete: onDelete, actions: renderActions?.(item), now: now }, item.id)) }) }), !collapsibleGroups && _jsxs(_Fragment, { children: [_jsx(Heading, { id: headingId, className: "rl-agent-list__heading", children: section.label }), _jsx("ul", { className: "rl-agent-list__rows", "aria-labelledby": headingId, children: section.items.map((item) => (_jsx(ConversationRow, { item: item, selected: item.id === selectedId, disabled: isDisabled?.(item), onSelect: onSelect, onPin: onPin, onArchive: onArchive, onUnarchive: onUnarchive, onDelete: onDelete, actions: renderActions?.(item), now: now }, item.id))) })] })] }, section.id));
79
79
  }) })] })] }));
80
80
  });
81
81
  //# sourceMappingURL=ConversationList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationList.js","sourceRoot":"","sources":["../../../src/components/conversation/ConversationList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConversationList.js","sourceRoot":"","sources":["../../../src/components/conversation/ConversationList.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorRecoveryNotice.d.ts","sourceRoot":"","sources":["../../../src/components/intervention/ErrorRecoveryNotice.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAa,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAMpF;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC7G,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAeD,eAAO,MAAM,mBAAmB,8FAiE9B,CAAC"}
1
+ {"version":3,"file":"ErrorRecoveryNotice.d.ts","sourceRoot":"","sources":["../../../src/components/intervention/ErrorRecoveryNotice.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAA2B,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAMlG;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC7G,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAgBD,eAAO,MAAM,mBAAmB,8FAiE9B,CAAC"}
@@ -6,6 +6,7 @@ import { AgentStatus } from '../../primitives/AgentStatus.js';
6
6
  import { AgentIcon } from '../../primitives/icons.js';
7
7
  import { useAgentMessages } from '../../provider/AgentMessages.js';
8
8
  import { cx } from '../../utils/cx.js';
9
+ /** Tone + glyph per built-in kind; custom kinds fall back to the `unknown` presentation (ADR-0013 §2). */
9
10
  const kindMeta = {
10
11
  retryable: { tone: 'info', glyph: 'reconnecting' },
11
12
  'save-pending': { tone: 'warning', glyph: 'saving' },
@@ -22,9 +23,9 @@ export const ErrorRecoveryNotice = React.forwardRef(function ErrorRecoveryNotice
22
23
  const id = React.useId();
23
24
  const titleId = `${id}-title`;
24
25
  const { kind } = recovery;
25
- const meta = kindMeta[kind];
26
+ const meta = kindMeta[kind] ?? kindMeta.unknown;
26
27
  const alert = meta.tone === 'danger' && announce;
27
28
  const note = m.recoveryNote[kind];
28
- return (_jsxs("section", { ...rest, ref: ref, className: cx('rl-agent-recovery', className), "aria-labelledby": titleId, "data-kind": kind, "data-tone": meta.tone, children: [_jsxs("div", { className: "rl-agent-recovery__message", role: alert ? 'alert' : undefined, children: [_jsxs("div", { className: "rl-agent-recovery__head", children: [_jsx(AgentStatus, { glyph: meta.glyph, tone: meta.tone, label: m.recoveryKind[kind], className: "rl-agent-recovery__kind" }), recovery.code && (_jsxs("span", { className: "rl-agent-recovery__code", children: [_jsxs("span", { className: "rl-agent-sr", children: [m.recoveryCode, " "] }), _jsx("code", { children: recovery.code })] }))] }), _jsx("p", { id: titleId, className: "rl-agent-recovery__title", children: recovery.title }), recovery.message && _jsx("p", { className: "rl-agent-recovery__text", children: recovery.message }), note && _jsx("p", { className: "rl-agent-recovery__note", children: note }), recovery.preserved && recovery.preserved.length > 0 && (_jsxs("div", { className: "rl-agent-recovery__preserved", children: [_jsx("span", { className: "rl-agent-recovery__preserved-label", children: m.recoveryPreserved }), _jsx("ul", { className: "rl-agent-recovery__preserved-list", children: recovery.preserved.map((item) => (_jsxs("li", { children: [_jsx(AgentIcon, { name: "check" }), _jsx("span", { children: item })] }, item))) })] }))] }), onAction && recovery.actions && recovery.actions.length > 0 && (_jsx("div", { className: "rl-agent-recovery__actions", children: recovery.actions.map((action) => (_jsx(Button, { size: "sm", variant: variantOf[action.tone ?? 'secondary'], "data-tone": action.tone, className: "rl-agent-recovery__action", loading: busyActionIds?.includes(action.id), onClick: () => onAction(action.id), children: action.label }, action.id))) })), onDismiss && kind === 'resolved' && (_jsx(IconButton, { className: "rl-agent-recovery__dismiss", size: "sm", variant: "ghost", icon: _jsx(AgentIcon, { name: "close" }), label: m.recoveryDismiss, onClick: onDismiss }))] }));
29
+ return (_jsxs("section", { ...rest, ref: ref, className: cx('rl-agent-recovery', className), "aria-labelledby": titleId, "data-kind": kind, "data-tone": meta.tone, children: [_jsxs("div", { className: "rl-agent-recovery__message", role: alert ? 'alert' : undefined, children: [_jsxs("div", { className: "rl-agent-recovery__head", children: [_jsx(AgentStatus, { glyph: meta.glyph, tone: meta.tone, label: m.recoveryKind[kind] ?? kind, className: "rl-agent-recovery__kind" }), recovery.code && (_jsxs("span", { className: "rl-agent-recovery__code", children: [_jsxs("span", { className: "rl-agent-sr", children: [m.recoveryCode, " "] }), _jsx("code", { children: recovery.code })] }))] }), _jsx("p", { id: titleId, className: "rl-agent-recovery__title", children: recovery.title }), recovery.message && _jsx("p", { className: "rl-agent-recovery__text", children: recovery.message }), note && _jsx("p", { className: "rl-agent-recovery__note", children: note }), recovery.preserved && recovery.preserved.length > 0 && (_jsxs("div", { className: "rl-agent-recovery__preserved", children: [_jsx("span", { className: "rl-agent-recovery__preserved-label", children: m.recoveryPreserved }), _jsx("ul", { className: "rl-agent-recovery__preserved-list", children: recovery.preserved.map((item) => (_jsxs("li", { children: [_jsx(AgentIcon, { name: "check" }), _jsx("span", { children: item })] }, item))) })] }))] }), onAction && recovery.actions && recovery.actions.length > 0 && (_jsx("div", { className: "rl-agent-recovery__actions", children: recovery.actions.map((action) => (_jsx(Button, { size: "sm", variant: variantOf[action.tone ?? 'secondary'], "data-tone": action.tone, className: "rl-agent-recovery__action", loading: busyActionIds?.includes(action.id), onClick: () => onAction(action.id), children: action.label }, action.id))) })), onDismiss && kind === 'resolved' && (_jsx(IconButton, { className: "rl-agent-recovery__dismiss", size: "sm", variant: "ghost", icon: _jsx(AgentIcon, { name: "close" }), label: m.recoveryDismiss, onClick: onDismiss }))] }));
29
30
  });
30
31
  //# sourceMappingURL=ErrorRecoveryNotice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorRecoveryNotice.js","sourceRoot":"","sources":["../../../src/components/intervention/ErrorRecoveryNotice.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AA2BvC,MAAM,QAAQ,GAA8E;IAC1F,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE;IAClD,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpD,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE;IAC5D,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACxD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC7C,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;IAC3C,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IAC9C,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;CAC7C,CAAC;AAEF,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAW,CAAC;AAE/F,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,UAAU,CAAwC,SAAS,mBAAmB,CACrH,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EACrF,GAAG;IAEH,MAAM,CAAC,GAAG,gBAAgB,EAAE,CAAC,YAAY,CAAC;IAC1C,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,GAAG,EAAE,QAAQ,CAAC;IAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;IAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC;IACjD,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAElC,OAAO,CACL,sBAAa,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE,SAAS,CAAC,qBAAmB,OAAO,eAAa,IAAI,eAAa,IAAI,CAAC,IAAI,aACzI,eAAK,SAAS,EAAC,4BAA4B,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,aAC3E,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,WAAW,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAC,yBAAyB,GAAG,EACnH,QAAQ,CAAC,IAAI,IAAI,CAChB,gBAAM,SAAS,EAAC,yBAAyB,aACvC,gBAAM,SAAS,EAAC,aAAa,aAAE,CAAC,CAAC,YAAY,SAAS,EACtD,yBAAO,QAAQ,CAAC,IAAI,GAAQ,IACvB,CACR,IACG,EACN,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,0BAA0B,YACjD,QAAQ,CAAC,KAAK,GACb,EACH,QAAQ,CAAC,OAAO,IAAI,YAAG,SAAS,EAAC,yBAAyB,YAAE,QAAQ,CAAC,OAAO,GAAK,EACjF,IAAI,IAAI,YAAG,SAAS,EAAC,yBAAyB,YAAE,IAAI,GAAK,EACzD,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CACtD,eAAK,SAAS,EAAC,8BAA8B,aAC3C,eAAM,SAAS,EAAC,oCAAoC,YAAE,CAAC,CAAC,iBAAiB,GAAQ,EACjF,aAAI,SAAS,EAAC,mCAAmC,YAC9C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAChC,yBACE,KAAC,SAAS,IAAC,IAAI,EAAC,OAAO,GAAG,EAC1B,yBAAO,IAAI,GAAQ,KAFZ,IAAI,CAGR,CACN,CAAC,GACC,IACD,CACP,IACG,EACL,QAAQ,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9D,cAAK,SAAS,EAAC,4BAA4B,YACxC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAChC,KAAC,MAAM,IAEL,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,eACnC,MAAM,CAAC,IAAI,EACtB,SAAS,EAAC,2BAA2B,EACrC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,YAEjC,MAAM,CAAC,KAAK,IARR,MAAM,CAAC,EAAE,CASP,CACV,CAAC,GACE,CACP,EACA,SAAS,IAAI,IAAI,KAAK,UAAU,IAAI,CACnC,KAAC,UAAU,IAAC,SAAS,EAAC,4BAA4B,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAE,KAAC,SAAS,IAAC,IAAI,EAAC,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,OAAO,EAAE,SAAS,GAAI,CAChK,IACO,CACX,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ErrorRecoveryNotice.js","sourceRoot":"","sources":["../../../src/components/intervention/ErrorRecoveryNotice.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,17 @@
1
1
  import * as React from 'react';
2
- import type { AgentActionContext, AgentActionHandler, QuestionAnswer, QuestionnaireView } from '@wzrhine/agent-core';
2
+ import type { AgentActionContext, AgentActionHandler, QuestionAnswer, QuestionnaireView, QuestionView } from '@wzrhine/agent-core';
3
+ /** Everything a `renderQuestion` override needs: the question, its answer, and the same update
4
+ * channel the built-in controls use (ADR-0013 §4). */
5
+ export interface QuestionRenderContext {
6
+ question: QuestionView;
7
+ answer: QuestionAnswer | undefined;
8
+ /** False while the questionnaire is busy / ended / disabled; custom controls should follow it. */
9
+ editable: boolean;
10
+ /** Replace this question's answer (reports `onAnswerChange`, like the built-in controls). */
11
+ update: (next: QuestionAnswer) => void;
12
+ /** The built-in body for this question; return or wrap it to keep the default rendering. */
13
+ defaultBody: React.ReactNode;
14
+ }
3
15
  /**
4
16
  * Agent → user questionnaire (atlas 21, ADR-0011 §6). Collects information only: it never grants
5
17
  * tool permissions.
@@ -53,8 +65,17 @@ export interface QuestionnaireCardProps extends Omit<React.FormHTMLAttributes<HT
53
65
  onDiscardDraft?: () => void | Promise<unknown>;
54
66
  /** Header title override (default: `questionnaire.title` or 「需要你的回答」). */
55
67
  title?: React.ReactNode;
68
+ /**
69
+ * Custom question body (ADR-0013 §4). Called for every question; return `null` / `undefined`
70
+ * to keep the built-in body. Required for custom `kind`s beyond single / multiple / text —
71
+ * without it they fall back to a free-text answer.
72
+ */
73
+ renderQuestion?: (context: QuestionRenderContext) => React.ReactNode;
56
74
  /** Start on this page instead of the first unanswered question. */
57
75
  initialPage?: number;
76
+ advanceOnSingleChoice?: boolean;
77
+ draftError?: React.ReactNode;
78
+ disabled?: boolean;
58
79
  }
59
80
  export declare const QuestionnaireCard: React.ForwardRefExoticComponent<QuestionnaireCardProps & React.RefAttributes<QuestionnaireCardHandle>>;
60
81
  //# sourceMappingURL=QuestionnaireCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QuestionnaireCard.d.ts","sourceRoot":"","sources":["../../../src/components/intervention/QuestionnaireCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAgB,MAAM,qBAAqB,CAAC;AAUnI;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,uBAAuB;IACtC,sFAAsF;IACtF,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,mDAAmD;IACnD,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;IAChI,aAAa,EAAE,iBAAiB,CAAC;IACjC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,kBAAkB,CAAC,CAAC,cAAc,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACtE,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,qFAAqF;IACrF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,0EAA0E;IAC1E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAoHD,eAAO,MAAM,iBAAiB,wGA2e5B,CAAC"}
1
+ {"version":3,"file":"QuestionnaireCard.d.ts","sourceRoot":"","sources":["../../../src/components/intervention/QuestionnaireCard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAUnI;sDACsD;AACtD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,kGAAkG;IAClG,QAAQ,EAAE,OAAO,CAAC;IAClB,6FAA6F;IAC7F,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACvC,4FAA4F;IAC5F,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,uBAAuB;IACtC,sFAAsF;IACtF,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,mDAAmD;IACnD,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;IAChI,aAAa,EAAE,iBAAiB,CAAC;IACjC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,kBAAkB,CAAC,CAAC,cAAc,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACtE,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,qFAAqF;IACrF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,0EAA0E;IAC1E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,KAAK,CAAC,SAAS,CAAC;IACrE,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAoHD,eAAO,MAAM,iBAAiB,wGAkf5B,CAAC"}
@@ -9,7 +9,7 @@ import { AgentIcon } from '../../primitives/icons.js';
9
9
  import { useAgentMessages } from '../../provider/AgentMessages.js';
10
10
  import { cx } from '../../utils/cx.js';
11
11
  import { useActionLock } from './action-lock.js';
12
- import { answerState, answerText, isOverLimit, isQuestionOptional, normalizeAnswers } from './questionnaire-answers.js';
12
+ import { answerState, answerText, isChoiceQuestion, isOverLimit, isQuestionOptional, normalizeAnswers } from './questionnaire-answers.js';
13
13
  const CUSTOM = '__rl_agent_custom__';
14
14
  const EDITABLE = new Set(['waiting', 'drafting', 'saving']);
15
15
  const READ_ONLY = new Set(['completed', 'expired', 'interrupted']);
@@ -51,7 +51,7 @@ function firstControl(root) {
51
51
  root.querySelector('[role="radio"]:not([aria-disabled="true"]), [role="checkbox"]:not([aria-disabled="true"]), textarea:not([disabled])') ??
52
52
  root.querySelector('button:not([disabled])'));
53
53
  }
54
- export const QuestionnaireCard = React.forwardRef(function QuestionnaireCard({ questionnaire, onAnswerChange, onSubmit, onRetrySave, onFlush, onCopyAnswers, onDiscardDraft, title, initialPage, className, ...rest }, ref) {
54
+ export const QuestionnaireCard = React.forwardRef(function QuestionnaireCard({ questionnaire, onAnswerChange, onSubmit, onRetrySave, onFlush, onCopyAnswers, onDiscardDraft, title, renderQuestion, initialPage, advanceOnSingleChoice = false, draftError, disabled = false, className, ...rest }, ref) {
55
55
  const m = useAgentMessages().intervention;
56
56
  const { reduced, resolve } = useRhineMotion();
57
57
  const id = React.useId();
@@ -100,7 +100,7 @@ export const QuestionnaireCard = React.forwardRef(function QuestionnaireCard({ q
100
100
  return (_jsx(Summary, { questionnaire: questionnaire, answers: answers, title: heading, onCopyAnswers: onCopyAnswers, onDiscardDraft: onDiscardDraft, className: className, rest: rest }));
101
101
  }
102
102
  const busy = status === 'submit-pending' || questionnaire.submitStatus === 'submitting' || lock.locked;
103
- const editable = EDITABLE.has(status) && !busy && !!onAnswerChange;
103
+ const editable = EDITABLE.has(status) && !busy && !!onAnswerChange && !disabled;
104
104
  const unknown = status === 'unknown' || questionnaire.submitStatus === 'unknown';
105
105
  const question = questions[index];
106
106
  const states = questions.map((q) => answerState(q, answers.get(q.id)));
@@ -183,13 +183,17 @@ export const QuestionnaireCard = React.forwardRef(function QuestionnaireCard({ q
183
183
  // ----- question body -----
184
184
  const answer = question ? answers.get(question.id) : undefined;
185
185
  const skipped = answer?.skipped === true;
186
- const customOn = question?.kind !== 'text' && question?.allowCustom === true && typeof answer?.text === 'string';
186
+ // The custom "other" text answer exists only on choice questions.
187
+ const customOn = question !== undefined && isChoiceQuestion(question) && question.allowCustom === true && typeof answer?.text === 'string';
187
188
  const options = question?.options ?? [];
188
189
  const choose = (optionId) => {
189
190
  if (!question)
190
191
  return;
191
- if (question.kind === 'single')
192
+ if (question.kind === 'single') {
192
193
  update(question, { questionId: question.id, optionIds: [optionId] });
194
+ if (advanceOnSingleChoice && !last)
195
+ go(index + 1);
196
+ }
193
197
  else {
194
198
  const ids = answer?.optionIds ?? [];
195
199
  const nextIds = ids.includes(optionId) ? ids.filter((x) => x !== optionId) : [...ids, optionId];
@@ -207,7 +211,7 @@ export const QuestionnaireCard = React.forwardRef(function QuestionnaireCard({ q
207
211
  const setText = (text) => {
208
212
  if (!question)
209
213
  return;
210
- if (question.kind === 'text')
214
+ if (!isChoiceQuestion(question))
211
215
  update(question, { questionId: question.id, text });
212
216
  else
213
217
  update(question, { questionId: question.id, optionIds: question.kind === 'single' ? [] : (answer?.optionIds ?? []), text });
@@ -257,7 +261,7 @@ export const QuestionnaireCard = React.forwardRef(function QuestionnaireCard({ q
257
261
  go(index + 1);
258
262
  return;
259
263
  }
260
- if (!editable || skipped || question.kind === 'text' || !/^[1-9]$/.test(event.key))
264
+ if (!editable || skipped || !question || !isChoiceQuestion(question) || !/^[1-9]$/.test(event.key))
261
265
  return;
262
266
  const digit = Number(event.key);
263
267
  if (digit <= options.length) {
@@ -280,13 +284,14 @@ export const QuestionnaireCard = React.forwardRef(function QuestionnaireCard({ q
280
284
  const unansweredCount = states.filter((s) => s === 'unanswered').length;
281
285
  const requiredMissing = questions.filter((q, i) => !isQuestionOptional(q) && states[i] === 'unanswered').length;
282
286
  const kbd = (n) => (_jsx("kbd", { className: "rl-agent-question__kbd", "aria-hidden": "true", children: n }));
283
- const textInput = question && (question.kind === 'text' || customOn) && !skipped && (_jsxs("div", { className: "rl-agent-question__text", children: [_jsx(Textarea, { rows: question.kind === 'text' ? 3 : 2, autoResize: true, maxRows: 8, value: answer?.text ?? '', disabled: !editable, placeholder: m.questionPlaceholder, invalid: over, "aria-label": question.kind === 'text' ? question.title : m.questionOtherInput(question.title), "aria-describedby": [question.kind === 'text' && question.prompt ? promptId : undefined, question.maxLength != null ? countId : undefined].filter(Boolean).join(' ') || undefined, onValueChange: (value) => setText(value) }), question.maxLength != null && (_jsx("span", { id: countId, className: "rl-agent-question__count", "data-over": over || undefined, children: m.questionCount(count, question.maxLength) }))] }));
287
+ const textInput = question && (!isChoiceQuestion(question) || customOn) && !skipped && (_jsxs("div", { className: "rl-agent-question__text", children: [_jsx(Textarea, { rows: question.kind === 'text' ? 3 : 2, autoResize: true, maxRows: 8, value: answer?.text ?? '', disabled: !editable, placeholder: m.questionPlaceholder, invalid: over, "aria-label": !isChoiceQuestion(question) ? question.title : m.questionOtherInput(question.title), "aria-describedby": [!isChoiceQuestion(question) && question.prompt ? promptId : undefined, question.maxLength != null ? countId : undefined].filter(Boolean).join(' ') || undefined, onValueChange: (value) => setText(value) }), question.maxLength != null && (_jsx("span", { id: countId, className: "rl-agent-question__count", "data-over": over || undefined, children: m.questionCount(count, question.maxLength) }))] }));
284
288
  let body = null;
285
289
  if (question) {
286
290
  if (skipped) {
287
291
  body = (_jsxs("fieldset", { className: "rl-agent-question__fieldset", disabled: !editable, children: [_jsx("legend", { className: "rl-agent-question__legend", children: question.title }), question.prompt && _jsx("p", { className: "rl-agent-question__prompt", children: question.prompt }), _jsx("p", { className: "rl-agent-question__skipped", children: m.questionSkipped })] }));
288
292
  }
289
- else if (question.kind === 'text') {
293
+ else if (!isChoiceQuestion(question)) {
294
+ // Text questions and custom kinds without a `renderQuestion` share the free-text body.
290
295
  body = (_jsxs("fieldset", { className: "rl-agent-question__fieldset", children: [_jsxs("legend", { className: "rl-agent-question__legend", children: [question.title, !isQuestionOptional(question) && _jsx("span", { className: "rl-agent-question__required", children: m.questionRequired })] }), question.prompt && (_jsx("p", { id: promptId, className: "rl-agent-question__prompt", children: question.prompt })), textInput] }));
291
296
  }
292
297
  else if (question.kind === 'single') {
@@ -306,8 +311,14 @@ export const QuestionnaireCard = React.forwardRef(function QuestionnaireCard({ q
306
311
  update(question, { questionId: question.id, optionIds: nextIds, ...(nextCustom ? { text: answer?.text ?? '' } : null) });
307
312
  }, children: [options.map((option, i) => (_jsx(Checkbox, { value: option.id, label: _jsxs(_Fragment, { children: [kbd(i + 1), option.label] }), description: option.description }, option.id))), question.allowCustom && _jsx(Checkbox, { value: CUSTOM, label: _jsxs(_Fragment, { children: [kbd(options.length + 1), m.questionOther] }), description: m.questionOtherDescription })] }), textInput] }));
308
313
  }
314
+ // Custom renderers win over any built-in body; returning null keeps the default (ADR-0013 §4).
315
+ if (renderQuestion) {
316
+ const rendered = renderQuestion({ question, answer, editable, update: (next) => update(question, next), defaultBody: body });
317
+ if (rendered != null)
318
+ body = rendered;
319
+ }
309
320
  }
310
- const draftText = m.questionDraft[questionnaire.draftStatus];
321
+ const draftText = draftError ?? m.questionDraft[questionnaire.draftStatus];
311
322
  const statusMeta = busy ? { glyph: 'pending', tone: 'info', active: true } : unknown ? { glyph: 'unknown', tone: 'warning' } : { glyph: 'waiting-user', tone: 'warning' };
312
323
  return (_jsxs("form", { ...rest, ref: formRef, className: cx('rl-agent-question', className), "aria-labelledby": titleId, "aria-busy": busy || undefined, "data-status": status, noValidate: true, onSubmit: (event) => {
313
324
  event.preventDefault();
@@ -316,7 +327,7 @@ export const QuestionnaireCard = React.forwardRef(function QuestionnaireCard({ q
316
327
  ? m.questionConfirm(unansweredCount)
317
328
  : confirming === 'required'
318
329
  ? m.questionRequiredMissing(requiredMissing)
319
- : m.questionOverLimit(questions.find((q) => isOverLimit(q, answers.get(q.id)))?.title ?? '')] }), _jsxs("div", { className: "rl-agent-question__actions", children: [_jsx(Button, { ref: backRef, size: "sm", variant: "secondary", onClick: backToFirstOpen, children: m.questionBack }), confirming === 'skip' && (_jsx(Button, { size: "sm", variant: "accent", loading: busy, onClick: () => submit(true), children: m.questionSkipAndSubmit }))] })] })) : (_jsxs(_Fragment, { children: [_jsx("span", { id: hintId, className: "rl-agent-question__hint", children: question?.kind === 'text' ? m.questionHintText : m.questionHintChoice(last) }), _jsxs("div", { className: "rl-agent-question__actions", children: [question && isQuestionOptional(question) && onAnswerChange && !unknown && (_jsx(Button, { size: "sm", variant: "ghost", disabled: !editable, onClick: toggleSkip, children: skipped ? m.questionUndoSkip : m.questionSkip })), !last && (_jsx(Button, { size: "sm", variant: "secondary", onClick: () => go(index + 1), children: m.questionNext })), onSubmit &&
320
- (unknown ? (canRetry && (_jsx(Button, { type: "submit", size: "sm", variant: "primary", loading: busy, iconStart: _jsx(AgentIcon, { name: "retry" }), children: m.questionRetrySubmit }))) : (_jsx(Button, { type: "submit", size: "sm", variant: "accent", loading: busy, disabled: !EDITABLE.has(status) && !busy, children: m.questionSubmit })))] })] })) })] }));
330
+ : m.questionOverLimit(questions.find((q) => isOverLimit(q, answers.get(q.id)))?.title ?? '')] }), _jsxs("div", { className: "rl-agent-question__actions", children: [_jsx(Button, { ref: backRef, size: "sm", variant: "secondary", onClick: backToFirstOpen, children: m.questionBack }), confirming === 'skip' && (_jsx(Button, { size: "sm", variant: "accent", loading: busy, onClick: () => submit(true), children: m.questionSkipAndSubmit }))] })] })) : (_jsxs(_Fragment, { children: [_jsx("span", { id: hintId, className: "rl-agent-question__hint", children: question && isChoiceQuestion(question) ? m.questionHintChoice(last) : m.questionHintText }), _jsxs("div", { className: "rl-agent-question__actions", children: [question && isQuestionOptional(question) && onAnswerChange && !unknown && (_jsx(Button, { size: "sm", variant: "ghost", disabled: !editable, onClick: toggleSkip, children: skipped ? m.questionUndoSkip : m.questionSkip })), !last && (_jsx(Button, { size: "sm", variant: "secondary", onClick: () => go(index + 1), children: m.questionNext })), onSubmit &&
331
+ (unknown ? (canRetry && (_jsx(Button, { type: "submit", size: "sm", variant: "primary", loading: busy, iconStart: _jsx(AgentIcon, { name: "retry" }), children: m.questionRetrySubmit }))) : (_jsx(Button, { type: "submit", size: "sm", variant: "accent", loading: busy, disabled: disabled || busy || !EDITABLE.has(status), children: m.questionSubmit })))] })] })) })] }));
321
332
  });
322
333
  //# sourceMappingURL=QuestionnaireCard.js.map