@wzrhine/agent 0.0.0-stage → 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 (360) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/LICENSE +21 -0
  3. package/README.md +29 -3
  4. package/dist/agent.css +16 -0
  5. package/dist/components/artifact/ArtifactCard.d.ts +59 -0
  6. package/dist/components/artifact/ArtifactCard.d.ts.map +1 -0
  7. package/dist/components/artifact/ArtifactCard.js +79 -0
  8. package/dist/components/artifact/ArtifactCard.js.map +1 -0
  9. package/dist/components/artifact/FilePreview.d.ts +121 -0
  10. package/dist/components/artifact/FilePreview.d.ts.map +1 -0
  11. package/dist/components/artifact/FilePreview.js +213 -0
  12. package/dist/components/artifact/FilePreview.js.map +1 -0
  13. package/dist/components/artifact/FilePreviewTabs.d.ts +51 -0
  14. package/dist/components/artifact/FilePreviewTabs.d.ts.map +1 -0
  15. package/dist/components/artifact/FilePreviewTabs.js +150 -0
  16. package/dist/components/artifact/FilePreviewTabs.js.map +1 -0
  17. package/dist/components/composer/AttachmentList.d.ts +33 -0
  18. package/dist/components/composer/AttachmentList.d.ts.map +1 -0
  19. package/dist/components/composer/AttachmentList.js +60 -0
  20. package/dist/components/composer/AttachmentList.js.map +1 -0
  21. package/dist/components/composer/Composer.d.ts +119 -0
  22. package/dist/components/composer/Composer.d.ts.map +1 -0
  23. package/dist/components/composer/Composer.js +336 -0
  24. package/dist/components/composer/Composer.js.map +1 -0
  25. package/dist/components/composer/ComposerInput.d.ts +103 -0
  26. package/dist/components/composer/ComposerInput.d.ts.map +1 -0
  27. package/dist/components/composer/ComposerInput.js +301 -0
  28. package/dist/components/composer/ComposerInput.js.map +1 -0
  29. package/dist/components/composer/ComposerNotice.d.ts +38 -0
  30. package/dist/components/composer/ComposerNotice.d.ts.map +1 -0
  31. package/dist/components/composer/ComposerNotice.js +16 -0
  32. package/dist/components/composer/ComposerNotice.js.map +1 -0
  33. package/dist/components/composer/MentionMenu.d.ts +37 -0
  34. package/dist/components/composer/MentionMenu.d.ts.map +1 -0
  35. package/dist/components/composer/MentionMenu.js +56 -0
  36. package/dist/components/composer/MentionMenu.js.map +1 -0
  37. package/dist/components/composer/MenuPanel.d.ts +49 -0
  38. package/dist/components/composer/MenuPanel.d.ts.map +1 -0
  39. package/dist/components/composer/MenuPanel.js +50 -0
  40. package/dist/components/composer/MenuPanel.js.map +1 -0
  41. package/dist/components/composer/ModelPicker.d.ts +53 -0
  42. package/dist/components/composer/ModelPicker.d.ts.map +1 -0
  43. package/dist/components/composer/ModelPicker.js +126 -0
  44. package/dist/components/composer/ModelPicker.js.map +1 -0
  45. package/dist/components/composer/PermissionPicker.d.ts +35 -0
  46. package/dist/components/composer/PermissionPicker.d.ts.map +1 -0
  47. package/dist/components/composer/PermissionPicker.js +51 -0
  48. package/dist/components/composer/PermissionPicker.js.map +1 -0
  49. package/dist/components/composer/ReferencePicker.d.ts +31 -0
  50. package/dist/components/composer/ReferencePicker.d.ts.map +1 -0
  51. package/dist/components/composer/ReferencePicker.js +50 -0
  52. package/dist/components/composer/ReferencePicker.js.map +1 -0
  53. package/dist/components/composer/SendStopButton.d.ts +73 -0
  54. package/dist/components/composer/SendStopButton.d.ts.map +1 -0
  55. package/dist/components/composer/SendStopButton.js +88 -0
  56. package/dist/components/composer/SendStopButton.js.map +1 -0
  57. package/dist/components/composer/SkillPicker.d.ts +26 -0
  58. package/dist/components/composer/SkillPicker.d.ts.map +1 -0
  59. package/dist/components/composer/SkillPicker.js +26 -0
  60. package/dist/components/composer/SkillPicker.js.map +1 -0
  61. package/dist/components/composer/SlashCommandMenu.d.ts +33 -0
  62. package/dist/components/composer/SlashCommandMenu.d.ts.map +1 -0
  63. package/dist/components/composer/SlashCommandMenu.js +43 -0
  64. package/dist/components/composer/SlashCommandMenu.js.map +1 -0
  65. package/dist/components/composer/composer-text.d.ts +10 -0
  66. package/dist/components/composer/composer-text.d.ts.map +1 -0
  67. package/dist/components/composer/composer-text.js +26 -0
  68. package/dist/components/composer/composer-text.js.map +1 -0
  69. package/dist/components/composer/composer-utils.d.ts +74 -0
  70. package/dist/components/composer/composer-utils.d.ts.map +1 -0
  71. package/dist/components/composer/composer-utils.js +133 -0
  72. package/dist/components/composer/composer-utils.js.map +1 -0
  73. package/dist/components/conversation/ConversationList.d.ts +94 -0
  74. package/dist/components/conversation/ConversationList.d.ts.map +1 -0
  75. package/dist/components/conversation/ConversationList.js +81 -0
  76. package/dist/components/conversation/ConversationList.js.map +1 -0
  77. package/dist/components/conversation/ConversationRow.d.ts +66 -0
  78. package/dist/components/conversation/ConversationRow.d.ts.map +1 -0
  79. package/dist/components/conversation/ConversationRow.js +65 -0
  80. package/dist/components/conversation/ConversationRow.js.map +1 -0
  81. package/dist/components/conversation/conversation-status.d.ts +21 -0
  82. package/dist/components/conversation/conversation-status.d.ts.map +1 -0
  83. package/dist/components/conversation/conversation-status.js +33 -0
  84. package/dist/components/conversation/conversation-status.js.map +1 -0
  85. package/dist/components/intervention/ApprovalDiff.d.ts +14 -0
  86. package/dist/components/intervention/ApprovalDiff.d.ts.map +1 -0
  87. package/dist/components/intervention/ApprovalDiff.js +25 -0
  88. package/dist/components/intervention/ApprovalDiff.js.map +1 -0
  89. package/dist/components/intervention/ApprovalPanel.d.ts +57 -0
  90. package/dist/components/intervention/ApprovalPanel.d.ts.map +1 -0
  91. package/dist/components/intervention/ApprovalPanel.js +111 -0
  92. package/dist/components/intervention/ApprovalPanel.js.map +1 -0
  93. package/dist/components/intervention/ErrorRecoveryNotice.d.ts +28 -0
  94. package/dist/components/intervention/ErrorRecoveryNotice.d.ts.map +1 -0
  95. package/dist/components/intervention/ErrorRecoveryNotice.js +31 -0
  96. package/dist/components/intervention/ErrorRecoveryNotice.js.map +1 -0
  97. package/dist/components/intervention/GrantList.d.ts +49 -0
  98. package/dist/components/intervention/GrantList.d.ts.map +1 -0
  99. package/dist/components/intervention/GrantList.js +58 -0
  100. package/dist/components/intervention/GrantList.js.map +1 -0
  101. package/dist/components/intervention/InterventionDock.d.ts +24 -0
  102. package/dist/components/intervention/InterventionDock.d.ts.map +1 -0
  103. package/dist/components/intervention/InterventionDock.js +18 -0
  104. package/dist/components/intervention/InterventionDock.js.map +1 -0
  105. package/dist/components/intervention/QuestionnaireCard.d.ts +81 -0
  106. package/dist/components/intervention/QuestionnaireCard.d.ts.map +1 -0
  107. package/dist/components/intervention/QuestionnaireCard.js +333 -0
  108. package/dist/components/intervention/QuestionnaireCard.js.map +1 -0
  109. package/dist/components/intervention/action-lock.d.ts +20 -0
  110. package/dist/components/intervention/action-lock.d.ts.map +1 -0
  111. package/dist/components/intervention/action-lock.js +65 -0
  112. package/dist/components/intervention/action-lock.js.map +1 -0
  113. package/dist/components/intervention/icons.d.ts +8 -0
  114. package/dist/components/intervention/icons.d.ts.map +1 -0
  115. package/dist/components/intervention/icons.js +11 -0
  116. package/dist/components/intervention/icons.js.map +1 -0
  117. package/dist/components/intervention/questionnaire-answers.d.ts +34 -0
  118. package/dist/components/intervention/questionnaire-answers.d.ts.map +1 -0
  119. package/dist/components/intervention/questionnaire-answers.js +97 -0
  120. package/dist/components/intervention/questionnaire-answers.js.map +1 -0
  121. package/dist/components/message/AgentMessage.d.ts +98 -0
  122. package/dist/components/message/AgentMessage.d.ts.map +1 -0
  123. package/dist/components/message/AgentMessage.js +94 -0
  124. package/dist/components/message/AgentMessage.js.map +1 -0
  125. package/dist/components/message/CitationChip.d.ts +38 -0
  126. package/dist/components/message/CitationChip.d.ts.map +1 -0
  127. package/dist/components/message/CitationChip.js +32 -0
  128. package/dist/components/message/CitationChip.js.map +1 -0
  129. package/dist/components/message/CodeBlock.d.ts +45 -0
  130. package/dist/components/message/CodeBlock.d.ts.map +1 -0
  131. package/dist/components/message/CodeBlock.js +21 -0
  132. package/dist/components/message/CodeBlock.js.map +1 -0
  133. package/dist/components/message/JumpToLatest.d.ts +27 -0
  134. package/dist/components/message/JumpToLatest.d.ts.map +1 -0
  135. package/dist/components/message/JumpToLatest.js +17 -0
  136. package/dist/components/message/JumpToLatest.js.map +1 -0
  137. package/dist/components/message/Markdown.d.ts +21 -0
  138. package/dist/components/message/Markdown.d.ts.map +1 -0
  139. package/dist/components/message/Markdown.js +21 -0
  140. package/dist/components/message/Markdown.js.map +1 -0
  141. package/dist/components/message/MessageActions.d.ts +67 -0
  142. package/dist/components/message/MessageActions.d.ts.map +1 -0
  143. package/dist/components/message/MessageActions.js +83 -0
  144. package/dist/components/message/MessageActions.js.map +1 -0
  145. package/dist/components/message/MessageList.d.ts +106 -0
  146. package/dist/components/message/MessageList.d.ts.map +1 -0
  147. package/dist/components/message/MessageList.js +327 -0
  148. package/dist/components/message/MessageList.js.map +1 -0
  149. package/dist/components/message/MessagePart.d.ts +44 -0
  150. package/dist/components/message/MessagePart.d.ts.map +1 -0
  151. package/dist/components/message/MessagePart.js +150 -0
  152. package/dist/components/message/MessagePart.js.map +1 -0
  153. package/dist/components/message/RunDetails.d.ts +26 -0
  154. package/dist/components/message/RunDetails.d.ts.map +1 -0
  155. package/dist/components/message/RunDetails.js +113 -0
  156. package/dist/components/message/RunDetails.js.map +1 -0
  157. package/dist/components/message/SkillUseList.d.ts +22 -0
  158. package/dist/components/message/SkillUseList.d.ts.map +1 -0
  159. package/dist/components/message/SkillUseList.js +20 -0
  160. package/dist/components/message/SkillUseList.js.map +1 -0
  161. package/dist/components/message/ThinkingBlock.d.ts +44 -0
  162. package/dist/components/message/ThinkingBlock.d.ts.map +1 -0
  163. package/dist/components/message/ThinkingBlock.js +34 -0
  164. package/dist/components/message/ThinkingBlock.js.map +1 -0
  165. package/dist/components/message/icons.d.ts +14 -0
  166. package/dist/components/message/icons.d.ts.map +1 -0
  167. package/dist/components/message/icons.js +16 -0
  168. package/dist/components/message/icons.js.map +1 -0
  169. package/dist/components/message/plain-text.d.ts +11 -0
  170. package/dist/components/message/plain-text.d.ts.map +1 -0
  171. package/dist/components/message/plain-text.js +58 -0
  172. package/dist/components/message/plain-text.js.map +1 -0
  173. package/dist/components/message/renderers.d.ts +30 -0
  174. package/dist/components/message/renderers.d.ts.map +1 -0
  175. package/dist/components/message/renderers.js +2 -0
  176. package/dist/components/message/renderers.js.map +1 -0
  177. package/dist/components/message/use-copy.d.ts +19 -0
  178. package/dist/components/message/use-copy.d.ts.map +1 -0
  179. package/dist/components/message/use-copy.js +67 -0
  180. package/dist/components/message/use-copy.js.map +1 -0
  181. package/dist/components/process/AgentProcess.d.ts +47 -0
  182. package/dist/components/process/AgentProcess.d.ts.map +1 -0
  183. package/dist/components/process/AgentProcess.js +78 -0
  184. package/dist/components/process/AgentProcess.js.map +1 -0
  185. package/dist/components/process/RunStatus.d.ts +60 -0
  186. package/dist/components/process/RunStatus.d.ts.map +1 -0
  187. package/dist/components/process/RunStatus.js +34 -0
  188. package/dist/components/process/RunStatus.js.map +1 -0
  189. package/dist/components/shell/AgentEmptyState.d.ts +35 -0
  190. package/dist/components/shell/AgentEmptyState.d.ts.map +1 -0
  191. package/dist/components/shell/AgentEmptyState.js +20 -0
  192. package/dist/components/shell/AgentEmptyState.js.map +1 -0
  193. package/dist/components/shell/AgentHeader.d.ts +84 -0
  194. package/dist/components/shell/AgentHeader.d.ts.map +1 -0
  195. package/dist/components/shell/AgentHeader.js +43 -0
  196. package/dist/components/shell/AgentHeader.js.map +1 -0
  197. package/dist/components/shell/AgentShell.d.ts +154 -0
  198. package/dist/components/shell/AgentShell.d.ts.map +1 -0
  199. package/dist/components/shell/AgentShell.js +210 -0
  200. package/dist/components/shell/AgentShell.js.map +1 -0
  201. package/dist/components/shell/AgentSidePane.d.ts +54 -0
  202. package/dist/components/shell/AgentSidePane.d.ts.map +1 -0
  203. package/dist/components/shell/AgentSidePane.js +26 -0
  204. package/dist/components/shell/AgentSidePane.js.map +1 -0
  205. package/dist/components/shell/ResizeHandle.d.ts +54 -0
  206. package/dist/components/shell/ResizeHandle.d.ts.map +1 -0
  207. package/dist/components/shell/ResizeHandle.js +94 -0
  208. package/dist/components/shell/ResizeHandle.js.map +1 -0
  209. package/dist/components/shell/use-controllable.d.ts +9 -0
  210. package/dist/components/shell/use-controllable.d.ts.map +1 -0
  211. package/dist/components/shell/use-controllable.js +26 -0
  212. package/dist/components/shell/use-controllable.js.map +1 -0
  213. package/dist/components/tools/ChunkPager.d.ts +48 -0
  214. package/dist/components/tools/ChunkPager.d.ts.map +1 -0
  215. package/dist/components/tools/ChunkPager.js +68 -0
  216. package/dist/components/tools/ChunkPager.js.map +1 -0
  217. package/dist/components/tools/CodeModeToolTree.d.ts +64 -0
  218. package/dist/components/tools/CodeModeToolTree.d.ts.map +1 -0
  219. package/dist/components/tools/CodeModeToolTree.js +97 -0
  220. package/dist/components/tools/CodeModeToolTree.js.map +1 -0
  221. package/dist/components/tools/DiffPreview.d.ts +83 -0
  222. package/dist/components/tools/DiffPreview.d.ts.map +1 -0
  223. package/dist/components/tools/DiffPreview.js +95 -0
  224. package/dist/components/tools/DiffPreview.js.map +1 -0
  225. package/dist/components/tools/ToolActivity.d.ts +63 -0
  226. package/dist/components/tools/ToolActivity.d.ts.map +1 -0
  227. package/dist/components/tools/ToolActivity.js +45 -0
  228. package/dist/components/tools/ToolActivity.js.map +1 -0
  229. package/dist/components/tools/ToolDetails.d.ts +118 -0
  230. package/dist/components/tools/ToolDetails.d.ts.map +1 -0
  231. package/dist/components/tools/ToolDetails.js +258 -0
  232. package/dist/components/tools/ToolDetails.js.map +1 -0
  233. package/dist/components/tools/ToolHistory.d.ts +48 -0
  234. package/dist/components/tools/ToolHistory.d.ts.map +1 -0
  235. package/dist/components/tools/ToolHistory.js +37 -0
  236. package/dist/components/tools/ToolHistory.js.map +1 -0
  237. package/dist/components/tools/ToolOutput.d.ts +61 -0
  238. package/dist/components/tools/ToolOutput.d.ts.map +1 -0
  239. package/dist/components/tools/ToolOutput.js +45 -0
  240. package/dist/components/tools/ToolOutput.js.map +1 -0
  241. package/dist/components/tools/ToolRecord.d.ts +58 -0
  242. package/dist/components/tools/ToolRecord.d.ts.map +1 -0
  243. package/dist/components/tools/ToolRecord.js +79 -0
  244. package/dist/components/tools/ToolRecord.js.map +1 -0
  245. package/dist/components/tools/shared.d.ts +93 -0
  246. package/dist/components/tools/shared.d.ts.map +1 -0
  247. package/dist/components/tools/shared.js +160 -0
  248. package/dist/components/tools/shared.js.map +1 -0
  249. package/dist/components/workspace/ActivityLedger.d.ts +44 -0
  250. package/dist/components/workspace/ActivityLedger.d.ts.map +1 -0
  251. package/dist/components/workspace/ActivityLedger.js +63 -0
  252. package/dist/components/workspace/ActivityLedger.js.map +1 -0
  253. package/dist/components/workspace/CompactionNotice.d.ts +63 -0
  254. package/dist/components/workspace/CompactionNotice.d.ts.map +1 -0
  255. package/dist/components/workspace/CompactionNotice.js +36 -0
  256. package/dist/components/workspace/CompactionNotice.js.map +1 -0
  257. package/dist/components/workspace/ContextUsage.d.ts +50 -0
  258. package/dist/components/workspace/ContextUsage.d.ts.map +1 -0
  259. package/dist/components/workspace/ContextUsage.js +106 -0
  260. package/dist/components/workspace/ContextUsage.js.map +1 -0
  261. package/dist/components/workspace/PersistentTerminal.d.ts +86 -0
  262. package/dist/components/workspace/PersistentTerminal.d.ts.map +1 -0
  263. package/dist/components/workspace/PersistentTerminal.js +155 -0
  264. package/dist/components/workspace/PersistentTerminal.js.map +1 -0
  265. package/dist/components/workspace/PinnedSummary.d.ts +43 -0
  266. package/dist/components/workspace/PinnedSummary.d.ts.map +1 -0
  267. package/dist/components/workspace/PinnedSummary.js +33 -0
  268. package/dist/components/workspace/PinnedSummary.js.map +1 -0
  269. package/dist/components/workspace/RunOverview.d.ts +29 -0
  270. package/dist/components/workspace/RunOverview.d.ts.map +1 -0
  271. package/dist/components/workspace/RunOverview.js +20 -0
  272. package/dist/components/workspace/RunOverview.js.map +1 -0
  273. package/dist/components/workspace/RunSummary.d.ts +35 -0
  274. package/dist/components/workspace/RunSummary.d.ts.map +1 -0
  275. package/dist/components/workspace/RunSummary.js +46 -0
  276. package/dist/components/workspace/RunSummary.js.map +1 -0
  277. package/dist/components/workspace/SubAgentCard.d.ts +64 -0
  278. package/dist/components/workspace/SubAgentCard.d.ts.map +1 -0
  279. package/dist/components/workspace/SubAgentCard.js +78 -0
  280. package/dist/components/workspace/SubAgentCard.js.map +1 -0
  281. package/dist/components/workspace/TerminalRow.d.ts +61 -0
  282. package/dist/components/workspace/TerminalRow.d.ts.map +1 -0
  283. package/dist/components/workspace/TerminalRow.js +65 -0
  284. package/dist/components/workspace/TerminalRow.js.map +1 -0
  285. package/dist/components/workspace/shared.d.ts +26 -0
  286. package/dist/components/workspace/shared.d.ts.map +1 -0
  287. package/dist/components/workspace/shared.js +41 -0
  288. package/dist/components/workspace/shared.js.map +1 -0
  289. package/dist/index.d.ts +136 -0
  290. package/dist/index.d.ts.map +1 -0
  291. package/dist/index.js +79 -0
  292. package/dist/index.js.map +1 -0
  293. package/dist/motion/agent-motion.d.ts +62 -0
  294. package/dist/motion/agent-motion.d.ts.map +1 -0
  295. package/dist/motion/agent-motion.js +61 -0
  296. package/dist/motion/agent-motion.js.map +1 -0
  297. package/dist/primitives/AgentSpark.d.ts +17 -0
  298. package/dist/primitives/AgentSpark.d.ts.map +1 -0
  299. package/dist/primitives/AgentSpark.js +11 -0
  300. package/dist/primitives/AgentSpark.js.map +1 -0
  301. package/dist/primitives/AgentStatus.d.ts +32 -0
  302. package/dist/primitives/AgentStatus.d.ts.map +1 -0
  303. package/dist/primitives/AgentStatus.js +13 -0
  304. package/dist/primitives/AgentStatus.js.map +1 -0
  305. package/dist/primitives/StatusGlyph.d.ts +16 -0
  306. package/dist/primitives/StatusGlyph.d.ts.map +1 -0
  307. package/dist/primitives/StatusGlyph.js +31 -0
  308. package/dist/primitives/StatusGlyph.js.map +1 -0
  309. package/dist/primitives/icons.d.ts +13 -0
  310. package/dist/primitives/icons.d.ts.map +1 -0
  311. package/dist/primitives/icons.js +55 -0
  312. package/dist/primitives/icons.js.map +1 -0
  313. package/dist/provider/AgentMessages.d.ts +61 -0
  314. package/dist/provider/AgentMessages.d.ts.map +1 -0
  315. package/dist/provider/AgentMessages.js +81 -0
  316. package/dist/provider/AgentMessages.js.map +1 -0
  317. package/dist/provider/messages/composer.d.ts +112 -0
  318. package/dist/provider/messages/composer.d.ts.map +1 -0
  319. package/dist/provider/messages/composer.js +165 -0
  320. package/dist/provider/messages/composer.js.map +1 -0
  321. package/dist/provider/messages/intervention.d.ts +136 -0
  322. package/dist/provider/messages/intervention.d.ts.map +1 -0
  323. package/dist/provider/messages/intervention.js +321 -0
  324. package/dist/provider/messages/intervention.js.map +1 -0
  325. package/dist/provider/messages/message.d.ts +119 -0
  326. package/dist/provider/messages/message.d.ts.map +1 -0
  327. package/dist/provider/messages/message.js +224 -0
  328. package/dist/provider/messages/message.js.map +1 -0
  329. package/dist/provider/messages/shell.d.ts +70 -0
  330. package/dist/provider/messages/shell.d.ts.map +1 -0
  331. package/dist/provider/messages/shell.js +109 -0
  332. package/dist/provider/messages/shell.js.map +1 -0
  333. package/dist/provider/messages/status.d.ts +21 -0
  334. package/dist/provider/messages/status.d.ts.map +1 -0
  335. package/dist/provider/messages/status.js +195 -0
  336. package/dist/provider/messages/status.js.map +1 -0
  337. package/dist/provider/messages/tools.d.ts +217 -0
  338. package/dist/provider/messages/tools.d.ts.map +1 -0
  339. package/dist/provider/messages/tools.js +496 -0
  340. package/dist/provider/messages/tools.js.map +1 -0
  341. package/dist/provider/messages/workspace.d.ts +187 -0
  342. package/dist/provider/messages/workspace.d.ts.map +1 -0
  343. package/dist/provider/messages/workspace.js +333 -0
  344. package/dist/provider/messages/workspace.js.map +1 -0
  345. package/dist/styles/artifact.css +564 -0
  346. package/dist/styles/base.css +220 -0
  347. package/dist/styles/composer.css +1001 -0
  348. package/dist/styles/conversation.css +275 -0
  349. package/dist/styles/intervention.css +929 -0
  350. package/dist/styles/message.css +917 -0
  351. package/dist/styles/process.css +207 -0
  352. package/dist/styles/shell.css +453 -0
  353. package/dist/styles/tools.css +929 -0
  354. package/dist/styles/workspace.css +1297 -0
  355. package/dist/styles/wpi-adoption.css +24 -0
  356. package/dist/utils/cx.d.ts +3 -0
  357. package/dist/utils/cx.d.ts.map +1 -0
  358. package/dist/utils/cx.js +5 -0
  359. package/dist/utils/cx.js.map +1 -0
  360. package/package.json +64 -3
@@ -0,0 +1,258 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { lineDiff } from '@wzrhine/agent-core';
5
+ import { useAgentFormat, useAgentMessages } from '../../provider/AgentMessages.js';
6
+ import { AgentSpark } from '../../primitives/AgentSpark.js';
7
+ import { cx } from '../../utils/cx.js';
8
+ import { DiffPreview, MultiFileDiff } from './DiffPreview.js';
9
+ import { ChunkPager } from './ChunkPager.js';
10
+ import { ToolOutput } from './ToolOutput.js';
11
+ import { ActionButton, CodeView, CopyButton, MetaList, Notice, Pill, toDisplayJson } from './shared.js';
12
+ function Section({ title, children, className }) {
13
+ return (_jsxs("div", { className: cx('rl-agent-detail__section', className), children: [title != null && _jsx("p", { className: "rl-agent-detail__title", children: title }), children] }));
14
+ }
15
+ function fileName(path) {
16
+ const parts = path.split(/[\\/]/);
17
+ return parts[parts.length - 1] || path;
18
+ }
19
+ /** FileReadDetail (atlas 37): path, range, preview with line numbers from `range.start`, real result info. */
20
+ export function FileReadDetail({ detail, onReadMore, className, ...rest }) {
21
+ const m = useAgentMessages().tools;
22
+ const fmt = useAgentFormat();
23
+ const unit = detail.nextOffsetUnit ?? detail.range?.unit ?? 'lines';
24
+ const startLine = detail.range?.unit === 'lines' ? detail.range.start : detail.range ? undefined : 1;
25
+ // Only facts the runtime reported; nothing is inferred (no "next offset" without `nextOffset`).
26
+ const facts = [
27
+ detail.eof === true && m.readEof,
28
+ detail.eof === false && (detail.nextOffset != null ? m.readContinue(detail.nextOffset, unit) : m.readNotEof),
29
+ detail.eof === undefined && detail.nextOffset != null && m.readContinue(detail.nextOffset, unit),
30
+ detail.totalLines != null && m.readTotalLines(fmt.number(detail.totalLines)),
31
+ detail.bytes != null && m.readBytes(fmt.bytes(detail.bytes)),
32
+ ].filter((x) => typeof x === 'string');
33
+ return (_jsxs("div", { ...rest, className: cx('rl-agent-detail', className), "data-kind": "file-read", children: [_jsx(MetaList, { items: [
34
+ { label: m.path, value: detail.path, mono: true },
35
+ detail.version != null && { label: m.currentVersion, value: detail.version, mono: true },
36
+ detail.range && {
37
+ label: m.editRange,
38
+ value: m.readRange(detail.range.start, detail.range.end, detail.range.unit),
39
+ },
40
+ ] }), detail.error ? (_jsx(Notice, { tone: detail.error === 'not-found' ? 'warning' : 'danger', children: m.readError[detail.error](fileName(detail.path)) })) : (detail.preview != null && _jsx(CodeView, { code: detail.preview, label: m.readPreview(detail.path), startLine: startLine })), !detail.error && facts.length > 0 && (_jsx("ul", { className: "rl-agent-detail__facts", "aria-label": m.readResult, children: facts.map((fact, i) => (_jsx("li", { children: fact }, i))) })), detail.nextOffset != null && onReadMore && (_jsx("div", { className: "rl-agent-detail__actions", children: _jsx(ActionButton, { icon: "arrow-down", onClick: () => onReadMore(detail.nextOffset), children: m.readMore }) }))] }));
41
+ }
42
+ /** FileWriteDetail (atlas 38): target, write mode, expected vs current version, proposal diff. */
43
+ export function FileWriteDetail({ detail, onReload, onViewFull, beforeActions, display = 'diff', className, ...rest }) {
44
+ const m = useAgentMessages().tools;
45
+ const fmt = useAgentFormat();
46
+ const conflict = detail.expectedVersion != null && detail.currentVersion != null && detail.expectedVersion !== detail.currentVersion;
47
+ return (_jsxs("div", { ...rest, className: cx('rl-agent-detail', className), "data-kind": "file-write", children: [_jsx(MetaList, { items: [
48
+ { label: m.writeTarget, value: detail.path, mono: true },
49
+ { label: m.writeModeLabel, value: m.writeMode[detail.mode] },
50
+ detail.diff?.created && { label: m.writeCreated, value: m.writeCreated },
51
+ detail.diff?.observedBytes !== undefined && { label: m.writeObservedBytes(fmt.bytes(detail.diff.observedBytes)), value: fmt.bytes(detail.diff.observedBytes), mono: true },
52
+ detail.expectedVersion != null && {
53
+ label: m.expectedVersion,
54
+ value: detail.expectedVersion,
55
+ mono: true,
56
+ },
57
+ detail.currentVersion != null && {
58
+ label: m.currentVersion,
59
+ value: detail.currentVersion,
60
+ mono: true,
61
+ },
62
+ ] }), conflict && (_jsx(Notice, { tone: "warning", action: onReload && (_jsx(ActionButton, { icon: "retry", onClick: onReload, children: m.reloadFile })), children: m.versionConflict(detail.expectedVersion, detail.currentVersion) })), detail.materialReady === false && _jsx(Notice, { tone: "info", children: m.materialPending }), detail.diff?.statsReliable === false && _jsx(Notice, { tone: "info", children: m.writeStatsUnreliable }), detail.diff?.before && _jsx(ChunkPager, { page: detail.diff.before, label: m.expectedVersion, canGoBack: false, ...beforeActions }), detail.diff && display === 'verbatim' && _jsx(CodeView, { code: detail.diff.hunks.flatMap((hunk) => hunk.lines.filter((line) => line.kind !== 'meta').map((line) => line.text)).join('\n'), label: m.writeTarget }), detail.diff && display === 'diff' && (_jsx(DiffPreview, { diff: conflict && !detail.diff.status ? { ...detail.diff, status: 'conflict' } : detail.diff, onReload: conflict ? undefined : onReload, onViewFull: onViewFull }))] }));
63
+ }
64
+ /** EditFileDetail (atlas 39): every edit as 「编辑 N」 with range, strategy and a before/after diff. */
65
+ export function EditFileDetail({ detail, pageActions, display = 'diff', className, ...rest }) {
66
+ const m = useAgentMessages().tools;
67
+ return (_jsxs("div", { ...rest, className: cx('rl-agent-detail', className), "data-kind": "file-edit", children: [_jsx(MetaList, { items: [
68
+ { label: m.path, value: detail.path, mono: true },
69
+ detail.expectedVersion != null && {
70
+ label: m.expectedVersion,
71
+ value: detail.expectedVersion,
72
+ mono: true,
73
+ },
74
+ ] }), detail.materialReady === false && _jsx(Notice, { tone: "info", children: m.materialPending }), detail.replacementCount !== undefined && _jsx("p", { className: "rl-agent-detail__aside", children: m.editTitle(detail.replacementCount) }), detail.complete === false && _jsx(Notice, { tone: "info", children: m.editTruncated }), detail.page && _jsx(ChunkPager, { page: detail.page, label: m.editRange, canGoBack: false, ...pageActions }), _jsx("ol", { className: "rl-agent-detail__edits", children: detail.edits.map((edit, i) => {
75
+ const result = lineDiff(edit.before, edit.after);
76
+ const offset = edit.range?.unit === 'lines' ? edit.range.start - 1 : 0;
77
+ const lines = result.hunk.lines.map((line) => ({
78
+ ...line,
79
+ oldLine: line.oldLine != null ? line.oldLine + offset : undefined,
80
+ newLine: line.newLine != null ? line.newLine + offset : undefined,
81
+ }));
82
+ return (_jsxs("li", { className: "rl-agent-detail__edit", children: [_jsxs("p", { className: "rl-agent-detail__title", children: [m.editTitle(i + 1), edit.range && (_jsx("span", { className: "rl-agent-detail__aside", children: m.readRange(edit.range.start, edit.range.end, edit.range.unit) })), edit.strategy && (_jsxs("span", { className: "rl-agent-detail__aside", children: [m.editStrategy, " \u00B7 ", edit.strategy] }))] }), display === 'verbatim' ? _jsxs(_Fragment, { children: [_jsx(CodeView, { code: edit.before, label: m.expectedVersion }), _jsx(CodeView, { code: edit.after, label: m.currentVersion })] }) : _jsx(DiffPreview, { hideHeader: true, diff: {
83
+ path: `${detail.path} · ${m.editTitle(i + 1)}`,
84
+ change: 'update',
85
+ hunks: [{ ...result.hunk, id: `${edit.id}-h`, lines }],
86
+ truncated: edit.truncated || result.truncated,
87
+ } })] }, edit.id));
88
+ }) })] }));
89
+ }
90
+ /** ApplyPatchDetail (atlas 40): per-file change and status; a conflict names its files. */
91
+ export function ApplyPatchDetail({ detail, onReload, onViewFull, rawActions, className, ...rest }) {
92
+ const m = useAgentMessages().tools;
93
+ const conflicts = detail.files.filter((f) => f.status === 'conflict').map((f) => f.path);
94
+ return (_jsxs("div", { ...rest, className: cx('rl-agent-detail', className), "data-kind": "patch", children: [detail.revision && _jsx("p", { className: "rl-agent-detail__aside", children: m.revision(detail.revision) }), detail.baseVersion && _jsxs("p", { className: "rl-agent-detail__aside", children: [m.expectedVersion, " ", detail.baseVersion] }), detail.raw && _jsx(ChunkPager, { page: detail.raw, label: m.patchFiles, canGoBack: false, ...rawActions }), conflicts.length > 0 && _jsx(Notice, { tone: "warning", children: m.patchConflict(conflicts.join(', ')) }), detail.materialReady === false && _jsx(Notice, { tone: "info", children: m.materialPending }), detail.hunksAvailable === false ? _jsx("ul", { "aria-label": m.patchFiles, children: detail.files.map((file) => _jsx("li", { children: file.path }, file.path)) }) : _jsx(MultiFileDiff, { files: detail.files, label: m.patchFiles, onReload: onReload, onViewFull: onViewFull })] }));
95
+ }
96
+ const opStatusMeta = {
97
+ pending: { glyph: 'pending', tone: 'neutral' },
98
+ completed: { glyph: 'done', tone: 'success' },
99
+ failed: { glyph: 'failed', tone: 'danger' },
100
+ conflict: { glyph: 'failed', tone: 'warning' },
101
+ };
102
+ /** ManageFilesDetail (atlas 41): operation table; delete rows carry 「不能自动恢复」 in text. */
103
+ export function ManageFilesDetail({ detail, onLoadMore, loadingMore, pageActions, className, ...rest }) {
104
+ const m = useAgentMessages().tools;
105
+ return (_jsxs("div", { ...rest, className: cx('rl-agent-detail', className), "data-kind": "manage-files", children: [detail.materialReady === false && _jsx(Notice, { tone: "info", children: m.materialPending }), detail.counts && _jsx("dl", { className: "rl-agent-detail__counts", children: Object.entries(detail.counts).map(([kind, count]) => _jsxs("div", { children: [_jsx("dt", { children: m.manageOp[kind] }), _jsx("dd", { children: count })] }, kind)) }), detail.total !== undefined && _jsx("p", { className: "rl-agent-detail__aside", children: detail.total }), detail.page && _jsx(ChunkPager, { page: detail.page, label: m.manageList, canGoBack: false, ...pageActions }), _jsx("div", { className: "rl-agent-detail__table-scroll", role: "region", tabIndex: 0, "aria-label": m.codeRegion(m.manageList), children: _jsxs("table", { className: "rl-agent-ops", children: [_jsx("caption", { className: "rl-agent-sr", children: m.manageList }), _jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: m.manageColumns.type }), _jsx("th", { scope: "col", children: m.manageColumns.path }), _jsx("th", { scope: "col", children: m.manageColumns.status })] }) }), _jsx("tbody", { children: detail.operations.map((op) => {
106
+ const danger = op.type === 'delete';
107
+ return (_jsxs("tr", { "data-danger": danger || undefined, children: [_jsx("th", { scope: "row", className: "rl-agent-ops__type", children: m.manageOp[op.type] }), _jsxs("td", { className: "rl-agent-ops__path", children: [_jsx("code", { children: op.source }), op.target && (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": "true", children: " \u2192 " }), _jsxs("span", { className: "rl-agent-sr", children: [" ", m.manageTarget, " "] }), _jsx("code", { children: op.target })] })), (op.recursive || danger || op.reason) && (_jsxs("span", { className: "rl-agent-ops__notes", children: [op.recursive && _jsx("span", { children: m.manageRecursive }), danger && _jsx("span", { className: "rl-agent-ops__danger", children: m.manageIrreversible }), op.reason && _jsx("span", { children: op.reason })] }))] }), _jsx("td", { children: op.status && _jsx(Pill, { ...opStatusMeta[op.status], label: m.manageStatus[op.status] }) })] }, op.id));
108
+ }) })] }) }), detail.hasMore && onLoadMore && (_jsx("div", { className: "rl-agent-detail__actions", children: _jsx(ActionButton, { icon: "arrow-down", onClick: onLoadMore, busy: loadingMore, children: m.manageLoadMore }) }))] }));
109
+ }
110
+ const executionMeta = {
111
+ pending: { glyph: 'pending', tone: 'neutral', active: true },
112
+ running: { glyph: 'terminal', tone: 'accent', active: true },
113
+ returned: { glyph: 'done', tone: 'neutral' },
114
+ background: { glyph: 'terminal', tone: 'info', active: true },
115
+ 'timed-out': { glyph: 'failed', tone: 'warning' },
116
+ 'cancel-unconfirmed': { glyph: 'stopping', tone: 'warning', active: true },
117
+ };
118
+ /** RunCommandDetail (atlas 42): command, cwd, shell, timeout, execution state, exit code, terminal output. */
119
+ export function RunCommandDetail({ detail, onOpenTerminal, outputProps, onCopyText, className, ...rest }) {
120
+ const m = useAgentMessages().tools;
121
+ const fmt = useAgentFormat();
122
+ const failed = detail.exitCode != null && detail.exitCode !== 0;
123
+ return (_jsxs("div", { ...rest, className: cx('rl-agent-detail', className), "data-kind": "command", children: [_jsxs("div", { className: "rl-agent-command", children: [_jsx("span", { className: "rl-agent-command__prompt", "aria-hidden": "true", children: "$" }), _jsx("div", { className: "rl-agent-command__scroll", role: "region", tabIndex: 0, "aria-label": m.commandLabel, children: _jsx("code", { className: "rl-agent-command__text", children: detail.command }) }), _jsx(CopyButton, { text: detail.command, label: m.copyCommand, onCopyText: onCopyText })] }), _jsx(MetaList, { items: [
124
+ detail.cwd && { label: m.commandCwd, value: detail.cwd, mono: true },
125
+ detail.shell && {
126
+ label: m.commandShell,
127
+ value: detail.shell,
128
+ mono: true,
129
+ },
130
+ detail.timeoutMs != null && {
131
+ label: m.commandTimeout,
132
+ value: fmt.duration(detail.timeoutMs),
133
+ mono: true,
134
+ },
135
+ ] }), _jsxs("div", { className: "rl-agent-detail__row", children: [detail.execution && _jsx(Pill, { ...executionMeta[detail.execution], label: m.commandExecution[detail.execution] }), detail.exitCode != null ? (_jsx("span", { className: "rl-agent-command__exit", "data-failed": failed || undefined, children: failed ? m.exitCodeFailed(detail.exitCode) : m.exitCode(detail.exitCode) })) : (detail.execution &&
136
+ detail.execution !== 'running' &&
137
+ detail.execution !== 'pending' &&
138
+ detail.execution !== 'background' && _jsx("span", { className: "rl-agent-command__exit", children: m.exitCodeMissing })), detail.terminalId && onOpenTerminal && (_jsx(ActionButton, { icon: "terminal", onClick: () => onOpenTerminal(detail.terminalId), children: m.openTerminal }))] }), detail.sandboxed === false && _jsx(Notice, { tone: "warning", children: m.unsandboxed }), detail.output && (_jsx(ToolOutput, { output: {
139
+ ...detail.output,
140
+ kind: detail.output.kind === 'text' ? 'terminal' : detail.output.kind,
141
+ }, label: m.commandOutput, ...outputProps }))] }));
142
+ }
143
+ const remoteMeta = {
144
+ pending: { glyph: 'pending', tone: 'info', active: true },
145
+ completed: { glyph: 'done', tone: 'success' },
146
+ failed: { glyph: 'failed', tone: 'danger' },
147
+ unknown: { glyph: 'unknown', tone: 'warning' },
148
+ };
149
+ /** MCPExecuteDetail (atlas 43): server, tool, endpoint, catalog revision, full arguments, remote status. */
150
+ export function MCPExecuteDetail({ detail, onReconcile, outputProps, className, ...rest }) {
151
+ const m = useAgentMessages().tools;
152
+ return (_jsxs("div", { ...rest, className: cx('rl-agent-detail', className), "data-kind": "mcp", children: [_jsx(MetaList, { items: [
153
+ { label: m.mcpServer, value: detail.server, mono: true },
154
+ { label: m.mcpTool, value: detail.tool, mono: true },
155
+ detail.endpoint && {
156
+ label: m.mcpEndpoint,
157
+ value: detail.endpoint,
158
+ mono: true,
159
+ },
160
+ detail.catalogRevision && {
161
+ label: m.mcpCatalog,
162
+ value: detail.catalogRevision,
163
+ mono: true,
164
+ },
165
+ ] }), detail.catalogStale && _jsx(Notice, { tone: "warning", children: m.mcpCatalogStale }), detail.remote === 'unknown' ? (_jsx(Notice, { tone: "warning", action: onReconcile && (_jsx(ActionButton, { icon: "retry", onClick: onReconcile, children: m.mcpReconcile })), children: m.mcpRemote.unknown })) : (detail.remote && (_jsx("div", { className: "rl-agent-detail__row", children: _jsx(Pill, { ...remoteMeta[detail.remote], label: m.mcpRemote[detail.remote] }) }))), detail.arguments !== undefined && (_jsx(ToolOutput, { output: { kind: 'json', content: toDisplayJson(detail.arguments) }, label: m.mcpArguments })), detail.output && _jsx(ToolOutput, { output: detail.output, ...outputProps })] }));
166
+ }
167
+ const saveMeta = {
168
+ pending: { glyph: 'pending', tone: 'neutral' },
169
+ saving: { glyph: 'saving', tone: 'info', active: true },
170
+ saved: { glyph: 'done', tone: 'success' },
171
+ partial: { glyph: 'unknown', tone: 'warning' },
172
+ failed: { glyph: 'failed', tone: 'danger' },
173
+ };
174
+ /** NativeModelDetail (atlas 44): provider · model, purpose, inputs, params, results and save state. */
175
+ export function NativeModelDetail({ detail, running, onRetrySave, retrying, className, ...rest }) {
176
+ const m = useAgentMessages().tools;
177
+ const fmt = useAgentFormat();
178
+ const hintId = React.useId();
179
+ const params = detail.params ? Object.entries(detail.params) : [];
180
+ const canRetry = (detail.save === 'partial' || detail.save === 'failed' || detail.saveRetry === true) && onRetrySave;
181
+ return (_jsxs("div", { ...rest, className: cx('rl-agent-detail', className), "data-kind": "model", children: [_jsx(MetaList, { items: [
182
+ {
183
+ label: m.modelProvider,
184
+ value: m.modelTitle(detail.provider, detail.model),
185
+ mono: true,
186
+ },
187
+ detail.purpose && { label: m.modelPurpose, value: detail.purpose },
188
+ detail.endpoint && { label: m.mcpEndpoint, value: detail.endpoint, mono: true },
189
+ detail.route && { label: m.modelRoute, value: detail.route, mono: true },
190
+ detail.timeoutMs !== undefined && { label: m.commandTimeout, value: fmt.duration(detail.timeoutMs) },
191
+ detail.sha256 && { label: m.modelHash, value: detail.sha256, mono: true },
192
+ detail.stopReason && { label: m.modelStopReason, value: detail.stopReason },
193
+ detail.remote !== undefined && { label: m.modelRemote, value: String(detail.remote) },
194
+ ] }), detail.arguments !== undefined && _jsx(ToolOutput, { output: { kind: 'json', content: toDisplayJson(detail.arguments) }, label: m.mcpArguments }), detail.saveError && _jsx(Notice, { tone: "danger", children: detail.saveError }), running && (_jsxs("p", { className: "rl-agent-detail__activity", role: "status", children: [_jsx(AgentSpark, { phase: "executing" }), _jsx("span", { children: m.modelRunning })] })), detail.inputs && detail.inputs.length > 0 && (_jsx(Section, { title: m.modelInputs, children: _jsx("ul", { className: "rl-agent-detail__list", children: detail.inputs.map((input) => (_jsxs("li", { children: [_jsx("span", { className: "rl-agent-detail__item-label", children: input.label }), [
195
+ input.mimeType,
196
+ input.size != null ? fmt.bytes(input.size) : undefined,
197
+ input.destination ? m.modelDestination(input.destination) : undefined,
198
+ ]
199
+ .filter(Boolean)
200
+ .map((part, i) => (_jsx("span", { className: "rl-agent-detail__aside", children: part }, i)))] }, input.id))) }) })), params.length > 0 && (_jsx(Section, { title: m.modelParams, children: _jsx(MetaList, { items: params.map(([k, v]) => ({
201
+ label: k,
202
+ value: String(v),
203
+ mono: true,
204
+ })) }) })), detail.results && detail.results.length > 0 && (_jsx(Section, { title: m.modelResults, children: _jsx("ul", { className: "rl-agent-detail__results", children: detail.results.map((r) => (_jsxs("li", { className: "rl-agent-detail__result-item", children: [r.preview && _jsx("img", { className: "rl-agent-detail__thumb", src: r.preview, alt: r.alt ?? r.label }), _jsx("span", { className: "rl-agent-detail__item-label", children: r.label }), _jsx(Pill, { glyph: r.saved ? 'done' : 'unknown', tone: r.saved ? 'success' : 'warning', label: r.saved ? m.modelResultSaved : m.modelResultUnsaved })] }, r.id))) }) })), detail.save && (_jsxs("div", { className: "rl-agent-detail__row", children: [_jsx(Pill, { ...saveMeta[detail.save], label: m.modelSave[detail.save] }), canRetry && (_jsxs(_Fragment, { children: [_jsx(ActionButton, { icon: "retry", onClick: onRetrySave, busy: retrying, describedBy: hintId, children: m.modelRetrySave }), _jsx("span", { id: hintId, className: "rl-agent-detail__aside", children: m.modelRetrySaveHint })] }))] })), detail.costNotice && _jsx(Notice, { tone: "info", children: detail.costNotice })] }));
205
+ }
206
+ /** QuestionToolDetail: question count and each answer (or 「已跳过」). */
207
+ export function QuestionToolDetail({ detail, className, ...rest }) {
208
+ const m = useAgentMessages().tools;
209
+ return (_jsxs("div", { ...rest, className: cx('rl-agent-detail', className), "data-kind": "question", children: [_jsx("p", { className: "rl-agent-detail__aside", children: m.questionCount(detail.count) }), detail.answers && detail.answers.length > 0 ? (_jsx("dl", { className: "rl-agent-detail__answers", "aria-label": m.questionAnswers, children: detail.answers.map((a, i) => (_jsxs("div", { className: "rl-agent-detail__answer", children: [_jsx("dt", { children: a.question }), _jsx("dd", { "data-skipped": a.skipped || undefined, children: a.skipped || a.answer == null ? m.questionSkipped : a.answer })] }, i))) })) : (_jsx("p", { className: "rl-agent-detail__aside", children: m.questionNoAnswers }))] }));
210
+ }
211
+ /** SubagentToolDetail: sub-task name, task and a link to the child conversation. */
212
+ export function SubagentToolDetail({ detail, onOpenChild, className, ...rest }) {
213
+ const m = useAgentMessages().tools;
214
+ return (_jsxs("div", { ...rest, className: cx('rl-agent-detail', className), "data-kind": "agent", children: [_jsx(MetaList, { items: [{ label: m.agentName, value: detail.agentName }, detail.task && { label: m.agentTask, value: detail.task }] }), detail.childConversationId && onOpenChild && (_jsx("div", { className: "rl-agent-detail__actions", children: _jsx(ActionButton, { icon: "external", onClick: () => onOpenChild(detail.childConversationId), children: m.openChild }) }))] }));
215
+ }
216
+ /** GenericToolDetail: any tool without a special view — input JSON + output. */
217
+ export function GenericToolDetail({ detail, outputProps, className, ...rest }) {
218
+ const m = useAgentMessages().tools;
219
+ return (_jsxs("div", { ...rest, className: cx('rl-agent-detail', className), "data-kind": "generic", children: [detail.input !== undefined && _jsx(ToolOutput, { output: { kind: 'json', content: toDisplayJson(detail.input) }, label: m.inputLabel }), detail.output && _jsx(ToolOutput, { output: detail.output, ...outputProps }), detail.input === undefined && !detail.output && _jsx("p", { className: "rl-agent-detail__aside", children: m.noDetails })] }));
220
+ }
221
+ /** Render the built-in detail view for `detail.kind` (or the generic one). */
222
+ export function ToolDetail({ tool, detail = tool.detail, ...actions }) {
223
+ if (!detail)
224
+ return null;
225
+ const outputProps = {
226
+ onLoadMore: actions.onLoadMoreOutput ? () => actions.onLoadMoreOutput(tool) : undefined,
227
+ onOpenFull: actions.onOpenFullOutput ? () => actions.onOpenFullOutput(tool) : undefined,
228
+ onCopyText: actions.onCopyText,
229
+ };
230
+ switch (detail.kind) {
231
+ case 'file-read':
232
+ return _jsx(FileReadDetail, { detail: detail, onReadMore: actions.onReadMore ? (n) => actions.onReadMore(tool, n) : undefined });
233
+ case 'file-write':
234
+ return (_jsx(FileWriteDetail, { detail: detail, onReload: actions.onReload ? () => actions.onReload(tool, detail.path) : undefined, onViewFull: actions.onViewFull ? () => actions.onViewFull(tool, detail.path) : undefined, beforeActions: actions.beforeActions }));
235
+ case 'file-edit':
236
+ return _jsx(EditFileDetail, { detail: detail, pageActions: actions.pageActions });
237
+ case 'patch':
238
+ return (_jsx(ApplyPatchDetail, { detail: detail, onReload: actions.onReload ? (p) => actions.onReload(tool, p) : undefined, onViewFull: actions.onViewFull ? (p) => actions.onViewFull(tool, p) : undefined, rawActions: actions.rawActions }));
239
+ case 'manage-files':
240
+ return (_jsx(ManageFilesDetail, { detail: detail, onLoadMore: actions.onLoadMoreOperations ? () => actions.onLoadMoreOperations(tool) : undefined, loadingMore: actions.loadingMore, pageActions: actions.pageActions }));
241
+ case 'command':
242
+ return (_jsx(RunCommandDetail, { detail: detail, onCopyText: actions.onCopyText, outputProps: outputProps, onOpenTerminal: actions.onOpenTerminal ? (id) => actions.onOpenTerminal(id, tool) : undefined }));
243
+ case 'mcp':
244
+ return (_jsx(MCPExecuteDetail, { detail: detail, outputProps: outputProps, onReconcile: actions.onReconcile ? () => actions.onReconcile(tool) : undefined }));
245
+ case 'model':
246
+ return (_jsx(NativeModelDetail, { detail: detail, running: tool.status === 'running' || tool.status === 'queued', onRetrySave: actions.onRetrySave ? () => actions.onRetrySave(tool) : undefined, retrying: actions.retrying }));
247
+ case 'question':
248
+ return _jsx(QuestionToolDetail, { detail: detail });
249
+ case 'agent':
250
+ return _jsx(SubagentToolDetail, { detail: detail, onOpenChild: actions.onOpenChild ? (id) => actions.onOpenChild(id, tool) : undefined });
251
+ case 'generic':
252
+ return _jsx(GenericToolDetail, { detail: detail, outputProps: outputProps });
253
+ default:
254
+ // Future variants: never drop them silently.
255
+ return _jsx(GenericToolDetail, { detail: { kind: 'generic', input: detail } });
256
+ }
257
+ }
258
+ //# sourceMappingURL=ToolDetails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolDetails.js","sourceRoot":"","sources":["../../../src/components/tools/ToolDetails.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import * as React from 'react';
2
+ import type { ToolCallView } from '@wzrhine/agent-core';
3
+ import type { ToolRowSharedProps } from './ToolActivity.js';
4
+ /**
5
+ * Append-only order for paged history: rows already shown keep their position; new ids are
6
+ * appended (sorted by `sequence` among themselves). Duplicates — the same id on two pages, or a
7
+ * live row replayed into history — are dropped; the latest data for a known id replaces its
8
+ * content but not its place.
9
+ */
10
+ export declare function useStableOrder(items: readonly ToolCallView[]): ToolCallView[];
11
+ /**
12
+ * ToolHistory (atlas 46): 「完整工具记录」 disclosure listing every loaded page. Rows are
13
+ * deduped by id across pages and never reordered once read; a load error keeps the loaded rows
14
+ * and offers 「加载更多」 again (no retry loop). The count says how many are loaded (and the total
15
+ * when the adapter knows it). Rows mount without entrance motion (history is restored, not new).
16
+ * `onOpenOperation` adds a 「在对话中定位」 button beside each row.
17
+ */
18
+ export type ToolHistoryProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & ToolRowSharedProps & {
19
+ /** All loaded rows (pages concatenated; duplicates allowed, they are dropped here). */
20
+ items: readonly ToolCallView[];
21
+ total?: number;
22
+ hasMore?: boolean;
23
+ loading?: boolean;
24
+ error?: React.ReactNode;
25
+ onLoadMore?: () => void;
26
+ onOpenOperation?: (id: string) => void;
27
+ expanded?: boolean;
28
+ defaultExpanded?: boolean;
29
+ onExpandedChange?: (expanded: boolean) => void;
30
+ title?: React.ReactNode;
31
+ };
32
+ export declare const ToolHistory: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLDivElement>, "children"> & Pick<import("./ToolRecord.js").ToolRecordProps, "onLoadDetails" | "renderDetail" | "detailActions"> & {
33
+ detailsErrors?: Readonly<Record<string, React.ReactNode>>;
34
+ } & {
35
+ /** All loaded rows (pages concatenated; duplicates allowed, they are dropped here). */
36
+ items: readonly ToolCallView[];
37
+ total?: number;
38
+ hasMore?: boolean;
39
+ loading?: boolean;
40
+ error?: React.ReactNode;
41
+ onLoadMore?: () => void;
42
+ onOpenOperation?: (id: string) => void;
43
+ expanded?: boolean;
44
+ defaultExpanded?: boolean;
45
+ onExpandedChange?: (expanded: boolean) => void;
46
+ title?: React.ReactNode;
47
+ } & React.RefAttributes<HTMLDivElement>>;
48
+ //# sourceMappingURL=ToolHistory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolHistory.d.ts","sourceRoot":"","sources":["../../../src/components/tools/ToolHistory.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG5D;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,YAAY,EAAE,CAY7E;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GACnF,kBAAkB,GAAG;IACnB,uFAAuF;IACvF,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB,CAAC;AAEJ,eAAO,MAAM,WAAW;;;IAdpB,uFAAuF;WAChF,SAAS,YAAY,EAAE;YACtB,MAAM;cACJ,OAAO;cACP,OAAO;YACT,KAAK,CAAC,SAAS;iBACV,MAAM,IAAI;sBACL,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI;eAC3B,OAAO;sBACA,OAAO;uBACN,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI;YACtC,KAAK,CAAC,SAAS;wCAsFzB,CAAC"}
@@ -0,0 +1,37 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { Collapsible } from '@wzrhine/react';
5
+ import { useAgentMessages } from '../../provider/AgentMessages.js';
6
+ import { cx } from '../../utils/cx.js';
7
+ import { ToolRecord } from './ToolRecord.js';
8
+ import { ActionButton, Notice } from './shared.js';
9
+ /**
10
+ * Append-only order for paged history: rows already shown keep their position; new ids are
11
+ * appended (sorted by `sequence` among themselves). Duplicates — the same id on two pages, or a
12
+ * live row replayed into history — are dropped; the latest data for a known id replaces its
13
+ * content but not its place.
14
+ */
15
+ export function useStableOrder(items) {
16
+ const order = React.useRef([]);
17
+ const latest = new Map();
18
+ for (const item of items)
19
+ if (!latest.has(item.id))
20
+ latest.set(item.id, item);
21
+ const known = new Set(order.current);
22
+ const added = [...latest.values()].filter((t) => !known.has(t.id));
23
+ if (added.every((t) => typeof t.sequence === 'number'))
24
+ added.sort((a, b) => a.sequence - b.sequence);
25
+ const ids = [...order.current.filter((id) => latest.has(id)), ...added.map((t) => t.id)];
26
+ React.useEffect(() => {
27
+ order.current = ids;
28
+ });
29
+ return ids.map((id) => latest.get(id));
30
+ }
31
+ export const ToolHistory = React.forwardRef(function ToolHistory({ items, total, hasMore, loading, error, onLoadMore, onOpenOperation, expanded, defaultExpanded = false, onExpandedChange, title, onLoadDetails, renderDetail, detailActions, detailsErrors, className, ...rest }, ref) {
32
+ const m = useAgentMessages().tools;
33
+ const rows = useStableOrder(items);
34
+ const countText = total != null ? m.historyTotal(rows.length, total) : m.historyLoaded(rows.length);
35
+ return (_jsx("div", { ...rest, ref: ref, className: cx('rl-agent-history', className), children: _jsx(Collapsible, { open: expanded, defaultOpen: defaultExpanded, onOpenChange: onExpandedChange, trigger: _jsxs("span", { className: "rl-agent-history__header", children: [_jsx("span", { className: "rl-agent-history__title", children: title ?? m.historyTitle }), _jsx("span", { className: "rl-agent-history__count", children: countText })] }), triggerProps: { className: 'rl-agent-history__trigger' }, children: _jsxs("div", { className: "rl-agent-history__body", "aria-busy": loading || undefined, children: [rows.length === 0 && !loading && !error && _jsx("p", { className: "rl-agent-detail__aside", children: m.historyEmpty }), rows.length > 0 && (_jsx("ul", { className: "rl-agent-tool-list", "aria-label": m.historyList, children: rows.map((tool) => (_jsx("li", { className: "rl-agent-tool-list__item", children: _jsx(ToolRecord, { tool: tool, onLoadDetails: onLoadDetails, detailsError: detailsErrors?.[tool.id], renderDetail: renderDetail, detailActions: detailActions, actions: onOpenOperation && (_jsx("button", { type: "button", className: "rl-agent-tool-button", "aria-label": `${m.openOperation} · ${tool.displayName ?? tool.name}${tool.subject ? ` ${tool.subject}` : ''}`, onClick: () => onOpenOperation(tool.id), children: _jsx("span", { className: "rl-agent-tool-button__text", children: m.openOperation }) })) }) }, tool.id))) })), _jsx("p", { className: "rl-agent-history__status", role: "status", children: loading ? m.historyLoading : '' }), error != null && error !== false && _jsx(Notice, { tone: "danger", children: error === true ? m.historyError : error }), hasMore && onLoadMore && (_jsx("div", { className: "rl-agent-detail__actions", children: _jsx(ActionButton, { icon: "arrow-down", onClick: onLoadMore, busy: loading, children: m.historyLoadMore }) }))] }) }) }));
36
+ });
37
+ //# sourceMappingURL=ToolHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolHistory.js","sourceRoot":"","sources":["../../../src/components/tools/ToolHistory.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import * as React from 'react';
2
+ import type { MaterialPageView, ToolOutputView } from '@wzrhine/agent-core';
3
+ import type { ChunkPagerActions } from './ChunkPager.js';
4
+ /**
5
+ * ToolOutput (atlas 45): bounded preview of one tool output. The body never grows past
6
+ * `--rl-agent-output-max-height`; it scrolls inside a focusable, named region so keyboard users
7
+ * can scroll it and the page never overflows. Text stays selectable; the copy button copies the
8
+ * loaded portion only.
9
+ *
10
+ * Truncation is never conflated (ADR-0011 §5):
11
+ * - `display` → 「仅显示部分输出」 + `onLoadMore` / `onOpenFull` (only rendered when given);
12
+ * - `execution` → 「工具输出已达上限,结果本身被截断」: nothing more exists to load.
13
+ *
14
+ * `status: 'loading'` shows a skeleton inside an `aria-busy` container; `unavailable` says so
15
+ * instead of pretending the output is empty. With `page` (stored material read page by page) the
16
+ * body is a `ChunkPager` instead of the inline preview; `pager` carries its callbacks.
17
+ * No motion of its own.
18
+ */
19
+ export type ToolOutputProps = Omit<React.HTMLAttributes<HTMLElement>, 'children'> & {
20
+ output: ToolOutputView;
21
+ /** Heading text; defaults to the kind label (「终端输出」, 「JSON」…). */
22
+ label?: React.ReactNode;
23
+ /** Name of the scroll region; defaults to the label text. */
24
+ regionLabel?: string;
25
+ /** Load the next display chunk (`truncated: 'display'`). */
26
+ onLoadMore?: () => void;
27
+ /** Open the full output elsewhere (`truncated: 'display'`). */
28
+ onOpenFull?: () => void;
29
+ /** Busy state for `onLoadMore`. */
30
+ loadingMore?: boolean;
31
+ /** Replace the clipboard write (tests, host clipboards). */
32
+ onCopyText?: (text: string) => void | Promise<void>;
33
+ /** Hide the copy button. */
34
+ copyable?: boolean;
35
+ /** One page of the stored output; replaces the inline body with a `ChunkPager`. */
36
+ page?: MaterialPageView;
37
+ /** Paging callbacks for `page` (`canGoBack` defaults to false). */
38
+ pager?: Partial<ChunkPagerActions>;
39
+ };
40
+ export declare const ToolOutput: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLElement>, "children"> & {
41
+ output: ToolOutputView;
42
+ /** Heading text; defaults to the kind label (「终端输出」, 「JSON」…). */
43
+ label?: React.ReactNode;
44
+ /** Name of the scroll region; defaults to the label text. */
45
+ regionLabel?: string;
46
+ /** Load the next display chunk (`truncated: 'display'`). */
47
+ onLoadMore?: () => void;
48
+ /** Open the full output elsewhere (`truncated: 'display'`). */
49
+ onOpenFull?: () => void;
50
+ /** Busy state for `onLoadMore`. */
51
+ loadingMore?: boolean;
52
+ /** Replace the clipboard write (tests, host clipboards). */
53
+ onCopyText?: (text: string) => void | Promise<void>;
54
+ /** Hide the copy button. */
55
+ copyable?: boolean;
56
+ /** One page of the stored output; replaces the inline body with a `ChunkPager`. */
57
+ page?: MaterialPageView;
58
+ /** Paging callbacks for `page` (`canGoBack` defaults to false). */
59
+ pager?: Partial<ChunkPagerActions>;
60
+ } & React.RefAttributes<HTMLElement>>;
61
+ //# sourceMappingURL=ToolOutput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolOutput.d.ts","sourceRoot":"","sources":["../../../src/components/tools/ToolOutput.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGzD;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,GAAG;IAClF,MAAM,EAAE,cAAc,CAAC;IACvB,kEAAkE;IAClE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,mCAAmC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mFAAmF;IACnF,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,UAAU;YArBb,cAAc;IACtB,kEAAkE;YAC1D,KAAK,CAAC,SAAS;IACvB,6DAA6D;kBAC/C,MAAM;IACpB,4DAA4D;iBAC/C,MAAM,IAAI;IACvB,+DAA+D;iBAClD,MAAM,IAAI;IACvB,mCAAmC;kBACrB,OAAO;IACrB,4DAA4D;iBAC/C,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IACnD,4BAA4B;eACjB,OAAO;IAClB,mFAAmF;WAC5E,gBAAgB;IACvB,mEAAmE;YAC3D,OAAO,CAAC,iBAAiB,CAAC;qCA8GlC,CAAC"}
@@ -0,0 +1,45 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { Skeleton } from '@wzrhine/react';
5
+ import { useAgentFormat, useAgentMessages } from '../../provider/AgentMessages.js';
6
+ import { cx } from '../../utils/cx.js';
7
+ import { ChunkPager } from './ChunkPager.js';
8
+ import { ActionButton, CopyButton, Notice, prettyJson } from './shared.js';
9
+ export const ToolOutput = React.forwardRef(function ToolOutput({ output, label, regionLabel, onLoadMore, onOpenFull, loadingMore, onCopyText, copyable = true, page, pager, className, ...rest }, ref) {
10
+ const m = useAgentMessages().tools;
11
+ const fmt = useAgentFormat();
12
+ const noticeId = React.useId();
13
+ const kind = output.kind;
14
+ const heading = label ?? (kind === 'empty' ? m.outputLabel : m.outputKind[kind]);
15
+ const name = regionLabel ?? (typeof heading === 'string' ? heading : m.outputLabel);
16
+ const loading = output.status === 'loading';
17
+ const unavailable = output.status === 'unavailable';
18
+ const raw = output.content ?? '';
19
+ const text = kind === 'json' ? prettyJson(raw) : raw;
20
+ const empty = kind === 'empty' || (!loading && !unavailable && raw === '' && !output.error);
21
+ let body;
22
+ if (page) {
23
+ body = _jsx(ChunkPager, { ...pager, page: page, label: name, canGoBack: pager?.canGoBack ?? false });
24
+ }
25
+ else if (loading) {
26
+ body = (_jsxs("div", { className: "rl-agent-output__loading", "aria-busy": "true", children: [_jsx(Skeleton, { shape: "text", lines: 3 }), _jsx("span", { className: "rl-agent-sr", children: m.outputLoading })] }));
27
+ }
28
+ else if (unavailable) {
29
+ body = _jsx("p", { className: "rl-agent-output__placeholder", children: output.error ?? m.outputUnavailable });
30
+ }
31
+ else if (empty) {
32
+ body = _jsx("p", { className: "rl-agent-output__placeholder", children: m.emptyOutput });
33
+ }
34
+ else if (kind === 'list') {
35
+ const items = text.split('\n').filter((line) => line.trim() !== '');
36
+ body = (_jsx("div", { className: "rl-agent-output__scroll", role: "region", tabIndex: 0, "aria-label": name, children: _jsx("ul", { className: "rl-agent-output__list", children: items.map((item, i) => (_jsx("li", { children: item }, i))) }) }));
37
+ }
38
+ else {
39
+ body = (_jsxs("div", { className: "rl-agent-output__scroll", role: "region", tabIndex: 0, "aria-label": name, children: [kind === 'error' && output.error && _jsx("p", { className: "rl-agent-output__error", children: output.error }), text !== '' && (_jsx("pre", { className: "rl-agent-output__pre", "data-wrap": kind === 'text' || kind === 'error' || undefined, children: _jsx("code", { children: text }) }))] }));
40
+ }
41
+ const showCopy = copyable && !loading && !unavailable && !empty && text !== '' && !page;
42
+ const pageText = page?.status === 'ready' ? (page.content ?? '') : '';
43
+ return (_jsxs("div", { ...rest, ref: ref, role: "group", className: cx('rl-agent-output', className), "data-kind": kind, "data-status": output.status, "data-truncated": output.truncated, "aria-label": name, children: [_jsxs("header", { className: "rl-agent-output__header", children: [_jsx("span", { className: "rl-agent-output__kind", children: heading }), output.summary && _jsx("span", { className: "rl-agent-output__summary", children: output.summary }), output.total != null && output.totalUnit && (_jsx("span", { className: "rl-agent-output__total", children: m.outputTotal(fmt.number(output.total), output.totalUnit) })), output.status === 'partial' && !output.truncated && _jsx("span", { className: "rl-agent-output__total", children: m.outputStreaming }), showCopy && _jsx(CopyButton, { text: text, onCopyText: onCopyText, className: "rl-agent-output__copy" }), copyable && page && pageText !== '' && _jsx(CopyButton, { text: pageText, onCopyText: onCopyText, className: "rl-agent-output__copy" })] }), kind !== 'error' && output.error && !unavailable && _jsx(Notice, { tone: "danger", children: output.error }), body, !page && output.truncated === 'display' && (_jsx(Notice, { tone: "info", id: noticeId, action: (onLoadMore || onOpenFull) && (_jsxs(_Fragment, { children: [onLoadMore && (_jsx(ActionButton, { icon: "arrow-down", onClick: onLoadMore, busy: loadingMore, describedBy: noticeId, children: m.loadMore })), onOpenFull && (_jsx(ActionButton, { icon: "external", onClick: onOpenFull, describedBy: noticeId, children: m.openFull }))] })), children: m.truncatedDisplay })), output.truncated === 'execution' && _jsx(Notice, { tone: "warning", children: m.truncatedExecution })] }));
44
+ });
45
+ //# sourceMappingURL=ToolOutput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolOutput.js","sourceRoot":"","sources":["../../../src/components/tools/ToolOutput.tsx"],"names":[],"mappings":"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"}