@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.
- package/CHANGELOG.md +40 -0
- package/LICENSE +21 -0
- package/README.md +29 -3
- package/dist/agent.css +16 -0
- package/dist/components/artifact/ArtifactCard.d.ts +59 -0
- package/dist/components/artifact/ArtifactCard.d.ts.map +1 -0
- package/dist/components/artifact/ArtifactCard.js +79 -0
- package/dist/components/artifact/ArtifactCard.js.map +1 -0
- package/dist/components/artifact/FilePreview.d.ts +121 -0
- package/dist/components/artifact/FilePreview.d.ts.map +1 -0
- package/dist/components/artifact/FilePreview.js +213 -0
- package/dist/components/artifact/FilePreview.js.map +1 -0
- package/dist/components/artifact/FilePreviewTabs.d.ts +51 -0
- package/dist/components/artifact/FilePreviewTabs.d.ts.map +1 -0
- package/dist/components/artifact/FilePreviewTabs.js +150 -0
- package/dist/components/artifact/FilePreviewTabs.js.map +1 -0
- package/dist/components/composer/AttachmentList.d.ts +33 -0
- package/dist/components/composer/AttachmentList.d.ts.map +1 -0
- package/dist/components/composer/AttachmentList.js +60 -0
- package/dist/components/composer/AttachmentList.js.map +1 -0
- package/dist/components/composer/Composer.d.ts +119 -0
- package/dist/components/composer/Composer.d.ts.map +1 -0
- package/dist/components/composer/Composer.js +336 -0
- package/dist/components/composer/Composer.js.map +1 -0
- package/dist/components/composer/ComposerInput.d.ts +103 -0
- package/dist/components/composer/ComposerInput.d.ts.map +1 -0
- package/dist/components/composer/ComposerInput.js +301 -0
- package/dist/components/composer/ComposerInput.js.map +1 -0
- package/dist/components/composer/ComposerNotice.d.ts +38 -0
- package/dist/components/composer/ComposerNotice.d.ts.map +1 -0
- package/dist/components/composer/ComposerNotice.js +16 -0
- package/dist/components/composer/ComposerNotice.js.map +1 -0
- package/dist/components/composer/MentionMenu.d.ts +37 -0
- package/dist/components/composer/MentionMenu.d.ts.map +1 -0
- package/dist/components/composer/MentionMenu.js +56 -0
- package/dist/components/composer/MentionMenu.js.map +1 -0
- package/dist/components/composer/MenuPanel.d.ts +49 -0
- package/dist/components/composer/MenuPanel.d.ts.map +1 -0
- package/dist/components/composer/MenuPanel.js +50 -0
- package/dist/components/composer/MenuPanel.js.map +1 -0
- package/dist/components/composer/ModelPicker.d.ts +53 -0
- package/dist/components/composer/ModelPicker.d.ts.map +1 -0
- package/dist/components/composer/ModelPicker.js +126 -0
- package/dist/components/composer/ModelPicker.js.map +1 -0
- package/dist/components/composer/PermissionPicker.d.ts +35 -0
- package/dist/components/composer/PermissionPicker.d.ts.map +1 -0
- package/dist/components/composer/PermissionPicker.js +51 -0
- package/dist/components/composer/PermissionPicker.js.map +1 -0
- package/dist/components/composer/ReferencePicker.d.ts +31 -0
- package/dist/components/composer/ReferencePicker.d.ts.map +1 -0
- package/dist/components/composer/ReferencePicker.js +50 -0
- package/dist/components/composer/ReferencePicker.js.map +1 -0
- package/dist/components/composer/SendStopButton.d.ts +73 -0
- package/dist/components/composer/SendStopButton.d.ts.map +1 -0
- package/dist/components/composer/SendStopButton.js +88 -0
- package/dist/components/composer/SendStopButton.js.map +1 -0
- package/dist/components/composer/SkillPicker.d.ts +26 -0
- package/dist/components/composer/SkillPicker.d.ts.map +1 -0
- package/dist/components/composer/SkillPicker.js +26 -0
- package/dist/components/composer/SkillPicker.js.map +1 -0
- package/dist/components/composer/SlashCommandMenu.d.ts +33 -0
- package/dist/components/composer/SlashCommandMenu.d.ts.map +1 -0
- package/dist/components/composer/SlashCommandMenu.js +43 -0
- package/dist/components/composer/SlashCommandMenu.js.map +1 -0
- package/dist/components/composer/composer-text.d.ts +10 -0
- package/dist/components/composer/composer-text.d.ts.map +1 -0
- package/dist/components/composer/composer-text.js +26 -0
- package/dist/components/composer/composer-text.js.map +1 -0
- package/dist/components/composer/composer-utils.d.ts +74 -0
- package/dist/components/composer/composer-utils.d.ts.map +1 -0
- package/dist/components/composer/composer-utils.js +133 -0
- package/dist/components/composer/composer-utils.js.map +1 -0
- package/dist/components/conversation/ConversationList.d.ts +94 -0
- package/dist/components/conversation/ConversationList.d.ts.map +1 -0
- package/dist/components/conversation/ConversationList.js +81 -0
- package/dist/components/conversation/ConversationList.js.map +1 -0
- package/dist/components/conversation/ConversationRow.d.ts +66 -0
- package/dist/components/conversation/ConversationRow.d.ts.map +1 -0
- package/dist/components/conversation/ConversationRow.js +65 -0
- package/dist/components/conversation/ConversationRow.js.map +1 -0
- package/dist/components/conversation/conversation-status.d.ts +21 -0
- package/dist/components/conversation/conversation-status.d.ts.map +1 -0
- package/dist/components/conversation/conversation-status.js +33 -0
- package/dist/components/conversation/conversation-status.js.map +1 -0
- package/dist/components/intervention/ApprovalDiff.d.ts +14 -0
- package/dist/components/intervention/ApprovalDiff.d.ts.map +1 -0
- package/dist/components/intervention/ApprovalDiff.js +25 -0
- package/dist/components/intervention/ApprovalDiff.js.map +1 -0
- package/dist/components/intervention/ApprovalPanel.d.ts +57 -0
- package/dist/components/intervention/ApprovalPanel.d.ts.map +1 -0
- package/dist/components/intervention/ApprovalPanel.js +111 -0
- package/dist/components/intervention/ApprovalPanel.js.map +1 -0
- package/dist/components/intervention/ErrorRecoveryNotice.d.ts +28 -0
- package/dist/components/intervention/ErrorRecoveryNotice.d.ts.map +1 -0
- package/dist/components/intervention/ErrorRecoveryNotice.js +31 -0
- package/dist/components/intervention/ErrorRecoveryNotice.js.map +1 -0
- package/dist/components/intervention/GrantList.d.ts +49 -0
- package/dist/components/intervention/GrantList.d.ts.map +1 -0
- package/dist/components/intervention/GrantList.js +58 -0
- package/dist/components/intervention/GrantList.js.map +1 -0
- package/dist/components/intervention/InterventionDock.d.ts +24 -0
- package/dist/components/intervention/InterventionDock.d.ts.map +1 -0
- package/dist/components/intervention/InterventionDock.js +18 -0
- package/dist/components/intervention/InterventionDock.js.map +1 -0
- package/dist/components/intervention/QuestionnaireCard.d.ts +81 -0
- package/dist/components/intervention/QuestionnaireCard.d.ts.map +1 -0
- package/dist/components/intervention/QuestionnaireCard.js +333 -0
- package/dist/components/intervention/QuestionnaireCard.js.map +1 -0
- package/dist/components/intervention/action-lock.d.ts +20 -0
- package/dist/components/intervention/action-lock.d.ts.map +1 -0
- package/dist/components/intervention/action-lock.js +65 -0
- package/dist/components/intervention/action-lock.js.map +1 -0
- package/dist/components/intervention/icons.d.ts +8 -0
- package/dist/components/intervention/icons.d.ts.map +1 -0
- package/dist/components/intervention/icons.js +11 -0
- package/dist/components/intervention/icons.js.map +1 -0
- package/dist/components/intervention/questionnaire-answers.d.ts +34 -0
- package/dist/components/intervention/questionnaire-answers.d.ts.map +1 -0
- package/dist/components/intervention/questionnaire-answers.js +97 -0
- package/dist/components/intervention/questionnaire-answers.js.map +1 -0
- package/dist/components/message/AgentMessage.d.ts +98 -0
- package/dist/components/message/AgentMessage.d.ts.map +1 -0
- package/dist/components/message/AgentMessage.js +94 -0
- package/dist/components/message/AgentMessage.js.map +1 -0
- package/dist/components/message/CitationChip.d.ts +38 -0
- package/dist/components/message/CitationChip.d.ts.map +1 -0
- package/dist/components/message/CitationChip.js +32 -0
- package/dist/components/message/CitationChip.js.map +1 -0
- package/dist/components/message/CodeBlock.d.ts +45 -0
- package/dist/components/message/CodeBlock.d.ts.map +1 -0
- package/dist/components/message/CodeBlock.js +21 -0
- package/dist/components/message/CodeBlock.js.map +1 -0
- package/dist/components/message/JumpToLatest.d.ts +27 -0
- package/dist/components/message/JumpToLatest.d.ts.map +1 -0
- package/dist/components/message/JumpToLatest.js +17 -0
- package/dist/components/message/JumpToLatest.js.map +1 -0
- package/dist/components/message/Markdown.d.ts +21 -0
- package/dist/components/message/Markdown.d.ts.map +1 -0
- package/dist/components/message/Markdown.js +21 -0
- package/dist/components/message/Markdown.js.map +1 -0
- package/dist/components/message/MessageActions.d.ts +67 -0
- package/dist/components/message/MessageActions.d.ts.map +1 -0
- package/dist/components/message/MessageActions.js +83 -0
- package/dist/components/message/MessageActions.js.map +1 -0
- package/dist/components/message/MessageList.d.ts +106 -0
- package/dist/components/message/MessageList.d.ts.map +1 -0
- package/dist/components/message/MessageList.js +327 -0
- package/dist/components/message/MessageList.js.map +1 -0
- package/dist/components/message/MessagePart.d.ts +44 -0
- package/dist/components/message/MessagePart.d.ts.map +1 -0
- package/dist/components/message/MessagePart.js +150 -0
- package/dist/components/message/MessagePart.js.map +1 -0
- package/dist/components/message/RunDetails.d.ts +26 -0
- package/dist/components/message/RunDetails.d.ts.map +1 -0
- package/dist/components/message/RunDetails.js +113 -0
- package/dist/components/message/RunDetails.js.map +1 -0
- package/dist/components/message/SkillUseList.d.ts +22 -0
- package/dist/components/message/SkillUseList.d.ts.map +1 -0
- package/dist/components/message/SkillUseList.js +20 -0
- package/dist/components/message/SkillUseList.js.map +1 -0
- package/dist/components/message/ThinkingBlock.d.ts +44 -0
- package/dist/components/message/ThinkingBlock.d.ts.map +1 -0
- package/dist/components/message/ThinkingBlock.js +34 -0
- package/dist/components/message/ThinkingBlock.js.map +1 -0
- package/dist/components/message/icons.d.ts +14 -0
- package/dist/components/message/icons.d.ts.map +1 -0
- package/dist/components/message/icons.js +16 -0
- package/dist/components/message/icons.js.map +1 -0
- package/dist/components/message/plain-text.d.ts +11 -0
- package/dist/components/message/plain-text.d.ts.map +1 -0
- package/dist/components/message/plain-text.js +58 -0
- package/dist/components/message/plain-text.js.map +1 -0
- package/dist/components/message/renderers.d.ts +30 -0
- package/dist/components/message/renderers.d.ts.map +1 -0
- package/dist/components/message/renderers.js +2 -0
- package/dist/components/message/renderers.js.map +1 -0
- package/dist/components/message/use-copy.d.ts +19 -0
- package/dist/components/message/use-copy.d.ts.map +1 -0
- package/dist/components/message/use-copy.js +67 -0
- package/dist/components/message/use-copy.js.map +1 -0
- package/dist/components/process/AgentProcess.d.ts +47 -0
- package/dist/components/process/AgentProcess.d.ts.map +1 -0
- package/dist/components/process/AgentProcess.js +78 -0
- package/dist/components/process/AgentProcess.js.map +1 -0
- package/dist/components/process/RunStatus.d.ts +60 -0
- package/dist/components/process/RunStatus.d.ts.map +1 -0
- package/dist/components/process/RunStatus.js +34 -0
- package/dist/components/process/RunStatus.js.map +1 -0
- package/dist/components/shell/AgentEmptyState.d.ts +35 -0
- package/dist/components/shell/AgentEmptyState.d.ts.map +1 -0
- package/dist/components/shell/AgentEmptyState.js +20 -0
- package/dist/components/shell/AgentEmptyState.js.map +1 -0
- package/dist/components/shell/AgentHeader.d.ts +84 -0
- package/dist/components/shell/AgentHeader.d.ts.map +1 -0
- package/dist/components/shell/AgentHeader.js +43 -0
- package/dist/components/shell/AgentHeader.js.map +1 -0
- package/dist/components/shell/AgentShell.d.ts +154 -0
- package/dist/components/shell/AgentShell.d.ts.map +1 -0
- package/dist/components/shell/AgentShell.js +210 -0
- package/dist/components/shell/AgentShell.js.map +1 -0
- package/dist/components/shell/AgentSidePane.d.ts +54 -0
- package/dist/components/shell/AgentSidePane.d.ts.map +1 -0
- package/dist/components/shell/AgentSidePane.js +26 -0
- package/dist/components/shell/AgentSidePane.js.map +1 -0
- package/dist/components/shell/ResizeHandle.d.ts +54 -0
- package/dist/components/shell/ResizeHandle.d.ts.map +1 -0
- package/dist/components/shell/ResizeHandle.js +94 -0
- package/dist/components/shell/ResizeHandle.js.map +1 -0
- package/dist/components/shell/use-controllable.d.ts +9 -0
- package/dist/components/shell/use-controllable.d.ts.map +1 -0
- package/dist/components/shell/use-controllable.js +26 -0
- package/dist/components/shell/use-controllable.js.map +1 -0
- package/dist/components/tools/ChunkPager.d.ts +48 -0
- package/dist/components/tools/ChunkPager.d.ts.map +1 -0
- package/dist/components/tools/ChunkPager.js +68 -0
- package/dist/components/tools/ChunkPager.js.map +1 -0
- package/dist/components/tools/CodeModeToolTree.d.ts +64 -0
- package/dist/components/tools/CodeModeToolTree.d.ts.map +1 -0
- package/dist/components/tools/CodeModeToolTree.js +97 -0
- package/dist/components/tools/CodeModeToolTree.js.map +1 -0
- package/dist/components/tools/DiffPreview.d.ts +83 -0
- package/dist/components/tools/DiffPreview.d.ts.map +1 -0
- package/dist/components/tools/DiffPreview.js +95 -0
- package/dist/components/tools/DiffPreview.js.map +1 -0
- package/dist/components/tools/ToolActivity.d.ts +63 -0
- package/dist/components/tools/ToolActivity.d.ts.map +1 -0
- package/dist/components/tools/ToolActivity.js +45 -0
- package/dist/components/tools/ToolActivity.js.map +1 -0
- package/dist/components/tools/ToolDetails.d.ts +118 -0
- package/dist/components/tools/ToolDetails.d.ts.map +1 -0
- package/dist/components/tools/ToolDetails.js +258 -0
- package/dist/components/tools/ToolDetails.js.map +1 -0
- package/dist/components/tools/ToolHistory.d.ts +48 -0
- package/dist/components/tools/ToolHistory.d.ts.map +1 -0
- package/dist/components/tools/ToolHistory.js +37 -0
- package/dist/components/tools/ToolHistory.js.map +1 -0
- package/dist/components/tools/ToolOutput.d.ts +61 -0
- package/dist/components/tools/ToolOutput.d.ts.map +1 -0
- package/dist/components/tools/ToolOutput.js +45 -0
- package/dist/components/tools/ToolOutput.js.map +1 -0
- package/dist/components/tools/ToolRecord.d.ts +58 -0
- package/dist/components/tools/ToolRecord.d.ts.map +1 -0
- package/dist/components/tools/ToolRecord.js +79 -0
- package/dist/components/tools/ToolRecord.js.map +1 -0
- package/dist/components/tools/shared.d.ts +93 -0
- package/dist/components/tools/shared.d.ts.map +1 -0
- package/dist/components/tools/shared.js +160 -0
- package/dist/components/tools/shared.js.map +1 -0
- package/dist/components/workspace/ActivityLedger.d.ts +44 -0
- package/dist/components/workspace/ActivityLedger.d.ts.map +1 -0
- package/dist/components/workspace/ActivityLedger.js +63 -0
- package/dist/components/workspace/ActivityLedger.js.map +1 -0
- package/dist/components/workspace/CompactionNotice.d.ts +63 -0
- package/dist/components/workspace/CompactionNotice.d.ts.map +1 -0
- package/dist/components/workspace/CompactionNotice.js +36 -0
- package/dist/components/workspace/CompactionNotice.js.map +1 -0
- package/dist/components/workspace/ContextUsage.d.ts +50 -0
- package/dist/components/workspace/ContextUsage.d.ts.map +1 -0
- package/dist/components/workspace/ContextUsage.js +106 -0
- package/dist/components/workspace/ContextUsage.js.map +1 -0
- package/dist/components/workspace/PersistentTerminal.d.ts +86 -0
- package/dist/components/workspace/PersistentTerminal.d.ts.map +1 -0
- package/dist/components/workspace/PersistentTerminal.js +155 -0
- package/dist/components/workspace/PersistentTerminal.js.map +1 -0
- package/dist/components/workspace/PinnedSummary.d.ts +43 -0
- package/dist/components/workspace/PinnedSummary.d.ts.map +1 -0
- package/dist/components/workspace/PinnedSummary.js +33 -0
- package/dist/components/workspace/PinnedSummary.js.map +1 -0
- package/dist/components/workspace/RunOverview.d.ts +29 -0
- package/dist/components/workspace/RunOverview.d.ts.map +1 -0
- package/dist/components/workspace/RunOverview.js +20 -0
- package/dist/components/workspace/RunOverview.js.map +1 -0
- package/dist/components/workspace/RunSummary.d.ts +35 -0
- package/dist/components/workspace/RunSummary.d.ts.map +1 -0
- package/dist/components/workspace/RunSummary.js +46 -0
- package/dist/components/workspace/RunSummary.js.map +1 -0
- package/dist/components/workspace/SubAgentCard.d.ts +64 -0
- package/dist/components/workspace/SubAgentCard.d.ts.map +1 -0
- package/dist/components/workspace/SubAgentCard.js +78 -0
- package/dist/components/workspace/SubAgentCard.js.map +1 -0
- package/dist/components/workspace/TerminalRow.d.ts +61 -0
- package/dist/components/workspace/TerminalRow.d.ts.map +1 -0
- package/dist/components/workspace/TerminalRow.js +65 -0
- package/dist/components/workspace/TerminalRow.js.map +1 -0
- package/dist/components/workspace/shared.d.ts +26 -0
- package/dist/components/workspace/shared.d.ts.map +1 -0
- package/dist/components/workspace/shared.js +41 -0
- package/dist/components/workspace/shared.js.map +1 -0
- package/dist/index.d.ts +136 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -0
- package/dist/motion/agent-motion.d.ts +62 -0
- package/dist/motion/agent-motion.d.ts.map +1 -0
- package/dist/motion/agent-motion.js +61 -0
- package/dist/motion/agent-motion.js.map +1 -0
- package/dist/primitives/AgentSpark.d.ts +17 -0
- package/dist/primitives/AgentSpark.d.ts.map +1 -0
- package/dist/primitives/AgentSpark.js +11 -0
- package/dist/primitives/AgentSpark.js.map +1 -0
- package/dist/primitives/AgentStatus.d.ts +32 -0
- package/dist/primitives/AgentStatus.d.ts.map +1 -0
- package/dist/primitives/AgentStatus.js +13 -0
- package/dist/primitives/AgentStatus.js.map +1 -0
- package/dist/primitives/StatusGlyph.d.ts +16 -0
- package/dist/primitives/StatusGlyph.d.ts.map +1 -0
- package/dist/primitives/StatusGlyph.js +31 -0
- package/dist/primitives/StatusGlyph.js.map +1 -0
- package/dist/primitives/icons.d.ts +13 -0
- package/dist/primitives/icons.d.ts.map +1 -0
- package/dist/primitives/icons.js +55 -0
- package/dist/primitives/icons.js.map +1 -0
- package/dist/provider/AgentMessages.d.ts +61 -0
- package/dist/provider/AgentMessages.d.ts.map +1 -0
- package/dist/provider/AgentMessages.js +81 -0
- package/dist/provider/AgentMessages.js.map +1 -0
- package/dist/provider/messages/composer.d.ts +112 -0
- package/dist/provider/messages/composer.d.ts.map +1 -0
- package/dist/provider/messages/composer.js +165 -0
- package/dist/provider/messages/composer.js.map +1 -0
- package/dist/provider/messages/intervention.d.ts +136 -0
- package/dist/provider/messages/intervention.d.ts.map +1 -0
- package/dist/provider/messages/intervention.js +321 -0
- package/dist/provider/messages/intervention.js.map +1 -0
- package/dist/provider/messages/message.d.ts +119 -0
- package/dist/provider/messages/message.d.ts.map +1 -0
- package/dist/provider/messages/message.js +224 -0
- package/dist/provider/messages/message.js.map +1 -0
- package/dist/provider/messages/shell.d.ts +70 -0
- package/dist/provider/messages/shell.d.ts.map +1 -0
- package/dist/provider/messages/shell.js +109 -0
- package/dist/provider/messages/shell.js.map +1 -0
- package/dist/provider/messages/status.d.ts +21 -0
- package/dist/provider/messages/status.d.ts.map +1 -0
- package/dist/provider/messages/status.js +195 -0
- package/dist/provider/messages/status.js.map +1 -0
- package/dist/provider/messages/tools.d.ts +217 -0
- package/dist/provider/messages/tools.d.ts.map +1 -0
- package/dist/provider/messages/tools.js +496 -0
- package/dist/provider/messages/tools.js.map +1 -0
- package/dist/provider/messages/workspace.d.ts +187 -0
- package/dist/provider/messages/workspace.d.ts.map +1 -0
- package/dist/provider/messages/workspace.js +333 -0
- package/dist/provider/messages/workspace.js.map +1 -0
- package/dist/styles/artifact.css +564 -0
- package/dist/styles/base.css +220 -0
- package/dist/styles/composer.css +1001 -0
- package/dist/styles/conversation.css +275 -0
- package/dist/styles/intervention.css +929 -0
- package/dist/styles/message.css +917 -0
- package/dist/styles/process.css +207 -0
- package/dist/styles/shell.css +453 -0
- package/dist/styles/tools.css +929 -0
- package/dist/styles/workspace.css +1297 -0
- package/dist/styles/wpi-adoption.css +24 -0
- package/dist/utils/cx.d.ts +3 -0
- package/dist/utils/cx.d.ts.map +1 -0
- package/dist/utils/cx.js +5 -0
- package/dist/utils/cx.js.map +1 -0
- package/package.json +64 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApprovalPanel.js","sourceRoot":"","sources":["../../../src/components/intervention/ApprovalPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { RecoveryView } from '@wzrhine/agent-core';
|
|
3
|
+
/**
|
|
4
|
+
* Error and recovery notice (atlas 34). Tells the user what was kept, what is still unconfirmed
|
|
5
|
+
* and which recovery actions are safe.
|
|
6
|
+
*
|
|
7
|
+
* - Severity follows `kind`: `retryable` / `offline` info, `save-pending` / `cancel-unconfirmed` /
|
|
8
|
+
* `timeout` / `unknown` warning, `tool-side-effects` danger, `resolved` success. Each kind also
|
|
9
|
+
* gets a fixed consequence sentence from the copy table ("停止尚未确认,工具可能仍在运行",
|
|
10
|
+
* "工具可能已产生外部影响,不会自动重放", "重试保存不会再次调用模型") so the states stay distinct.
|
|
11
|
+
* - Actions come from the view (`actions[]`, labels must name what they act on) and call
|
|
12
|
+
* `onAction(id)`. Without `onAction` no button is rendered.
|
|
13
|
+
* - `role="alert"` only for danger kinds and only when `announce` (default true): it sits on the
|
|
14
|
+
* message, not on the buttons. Everything else is static. Nothing blinks or loops.
|
|
15
|
+
* - `onDismiss` adds a close button for `resolved` notices only; the caller moves focus.
|
|
16
|
+
*/
|
|
17
|
+
export interface ErrorRecoveryNoticeProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title' | 'children'> {
|
|
18
|
+
recovery: RecoveryView;
|
|
19
|
+
onAction?: (actionId: string) => void;
|
|
20
|
+
/** Resolved notices only. */
|
|
21
|
+
onDismiss?: () => void;
|
|
22
|
+
/** Announce danger notices with `role="alert"`. Pass `false` for notices restored from history. */
|
|
23
|
+
announce?: boolean;
|
|
24
|
+
/** Ids of actions currently running (button shows busy). */
|
|
25
|
+
busyActionIds?: readonly string[];
|
|
26
|
+
}
|
|
27
|
+
export declare const ErrorRecoveryNotice: React.ForwardRefExoticComponent<ErrorRecoveryNoticeProps & React.RefAttributes<HTMLElement>>;
|
|
28
|
+
//# sourceMappingURL=ErrorRecoveryNotice.d.ts.map
|
|
@@ -0,0 +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,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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Button, IconButton } from '@wzrhine/react';
|
|
5
|
+
import { AgentStatus } from '../../primitives/AgentStatus.js';
|
|
6
|
+
import { AgentIcon } from '../../primitives/icons.js';
|
|
7
|
+
import { useAgentMessages } from '../../provider/AgentMessages.js';
|
|
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). */
|
|
10
|
+
const kindMeta = {
|
|
11
|
+
retryable: { tone: 'info', glyph: 'reconnecting' },
|
|
12
|
+
'save-pending': { tone: 'warning', glyph: 'saving' },
|
|
13
|
+
'cancel-unconfirmed': { tone: 'warning', glyph: 'stopping' },
|
|
14
|
+
'tool-side-effects': { tone: 'danger', glyph: 'failed' },
|
|
15
|
+
timeout: { tone: 'warning', glyph: 'failed' },
|
|
16
|
+
offline: { tone: 'info', glyph: 'offline' },
|
|
17
|
+
unknown: { tone: 'warning', glyph: 'unknown' },
|
|
18
|
+
resolved: { tone: 'success', glyph: 'done' },
|
|
19
|
+
};
|
|
20
|
+
const variantOf = { primary: 'primary', secondary: 'secondary', danger: 'secondary' };
|
|
21
|
+
export const ErrorRecoveryNotice = React.forwardRef(function ErrorRecoveryNotice({ recovery, onAction, onDismiss, announce = true, busyActionIds, className, ...rest }, ref) {
|
|
22
|
+
const m = useAgentMessages().intervention;
|
|
23
|
+
const id = React.useId();
|
|
24
|
+
const titleId = `${id}-title`;
|
|
25
|
+
const { kind } = recovery;
|
|
26
|
+
const meta = kindMeta[kind] ?? kindMeta.unknown;
|
|
27
|
+
const alert = meta.tone === 'danger' && announce;
|
|
28
|
+
const note = m.recoveryNote[kind];
|
|
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 }))] }));
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=ErrorRecoveryNotice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorRecoveryNotice.js","sourceRoot":"","sources":["../../../src/components/intervention/ErrorRecoveryNotice.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { AgentActionContext, AgentActionHandler, GrantView } from '@wzrhine/agent-core';
|
|
3
|
+
/**
|
|
4
|
+
* Standing permissions the user granted (session trust for a task, extra directory access…),
|
|
5
|
+
* typically in a settings pane or side panel (ADR-0011 §6, `GrantView`).
|
|
6
|
+
*
|
|
7
|
+
* Behaviour
|
|
8
|
+
* - Each row shows the target verbatim in mono, its detail, the scope label and availability.
|
|
9
|
+
* An unavailable grant shows its reason as text (never colour alone) and, when `onReselect`
|
|
10
|
+
* is given, a 「重新选择」 button so the host can let the user pick the target again.
|
|
11
|
+
* - 「撤销」 appears only when `onRevoke` is given. Every revoke emits `AgentActionContext
|
|
12
|
+
* { actionId, targetId: grant.id }`; `actionId` = stable per-row-mount id + counter (the shared
|
|
13
|
+
* intervention action lock), so double clicks never send twice and two lists never collide.
|
|
14
|
+
* - Receipts: `submitting` → the row is `aria-busy` and its button busy; `unknown` → 「结果待确认」
|
|
15
|
+
* plus 「重试撤销」 that re-sends the **same** `actionId` (from this mount or `receipt.actionId`),
|
|
16
|
+
* unless `receipt.retryable === false`; `rejected` → the reason, revoke available again;
|
|
17
|
+
* `accepted` → 「已撤销」 until the host drops the row. The host adapter is the authority.
|
|
18
|
+
* - `loading` shows a skeleton (list `aria-busy`), `error` an Alert with `onRetry`, no grants the
|
|
19
|
+
* `empty` text. `addSlot` is a host-provided chooser (e.g. a "添加目录" Button + picker) in the header.
|
|
20
|
+
*
|
|
21
|
+
* A11y: `<section aria-labelledby>`; grants are a `<ul>`; row buttons are named after their target
|
|
22
|
+
* (「撤销 npm test」) while the visible text stays short; a visually hidden `role="status"` announces
|
|
23
|
+
* revoke progress and unconfirmed results. No focus is moved.
|
|
24
|
+
*
|
|
25
|
+
* Motion: none. Rows appear and leave instantly; reduced motion changes nothing.
|
|
26
|
+
*/
|
|
27
|
+
export interface GrantListProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title' | 'children'> {
|
|
28
|
+
/** Heading (default from messages: 「会话授权」). */
|
|
29
|
+
title?: React.ReactNode;
|
|
30
|
+
grants: readonly GrantView[];
|
|
31
|
+
/** Revoke one grant. Without it no revoke button is rendered. */
|
|
32
|
+
onRevoke?: AgentActionHandler<[GrantView, AgentActionContext]>;
|
|
33
|
+
/** Unavailable grants: let the host re-select the target. */
|
|
34
|
+
onReselect?: (grant: GrantView) => void;
|
|
35
|
+
loading?: boolean;
|
|
36
|
+
/** Load failure text; shows an Alert (with 「重新读取」 when `onRetry` is given). */
|
|
37
|
+
error?: React.ReactNode;
|
|
38
|
+
onRetry?: () => void;
|
|
39
|
+
/** Text when there are no grants (default from messages). */
|
|
40
|
+
empty?: React.ReactNode;
|
|
41
|
+
/** Note under the list, e.g. what revoking does. */
|
|
42
|
+
footerNote?: React.ReactNode;
|
|
43
|
+
/** Host-provided chooser for adding a grant, shown in the header. */
|
|
44
|
+
addSlot?: React.ReactNode;
|
|
45
|
+
/** Title element level. Default 3. */
|
|
46
|
+
headingLevel?: 2 | 3 | 4;
|
|
47
|
+
}
|
|
48
|
+
export declare const GrantList: React.ForwardRefExoticComponent<GrantListProps & React.RefAttributes<HTMLElement>>;
|
|
49
|
+
//# sourceMappingURL=GrantList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrantList.d.ts","sourceRoot":"","sources":["../../../src/components/intervention/GrantList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAM7F;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACnG,+CAA+C;IAC/C,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,EAAE,kBAAkB,CAAC,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC/D,6DAA6D;IAC7D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,oDAAoD;IACpD,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,qEAAqE;IACrE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,sCAAsC;IACtC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC1B;AAkHD,eAAO,MAAM,SAAS,oFAmEpB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Alert, Button, Skeleton, StatusBadge } from '@wzrhine/react';
|
|
5
|
+
import { AgentIcon } from '../../primitives/icons.js';
|
|
6
|
+
import { useAgentMessages } from '../../provider/AgentMessages.js';
|
|
7
|
+
import { cx } from '../../utils/cx.js';
|
|
8
|
+
import { useActionLock } from './action-lock.js';
|
|
9
|
+
function GrantRow({ grant, onRevoke, onReselect }) {
|
|
10
|
+
const m = useAgentMessages().intervention;
|
|
11
|
+
const id = React.useId();
|
|
12
|
+
const detailId = `${id}-detail`;
|
|
13
|
+
const status = grant.receipt?.status ?? 'idle';
|
|
14
|
+
const lock = useActionLock(`${grant.id}:${status}:${grant.available ? 1 : 0}`);
|
|
15
|
+
const attempt = React.useRef(null);
|
|
16
|
+
const send = (ctx) => {
|
|
17
|
+
if (!onRevoke)
|
|
18
|
+
return;
|
|
19
|
+
lock.run(() => {
|
|
20
|
+
attempt.current = ctx;
|
|
21
|
+
return onRevoke(grant, ctx);
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
// The lock also holds after a sync / accepted / unknown result until the receipt changes.
|
|
25
|
+
const submitting = status === 'submitting' || lock.locked;
|
|
26
|
+
const unknown = status === 'unknown';
|
|
27
|
+
const accepted = status === 'accepted';
|
|
28
|
+
const retryId = attempt.current?.actionId ?? grant.receipt?.actionId;
|
|
29
|
+
const describedBy = grant.detail || !grant.available ? detailId : undefined;
|
|
30
|
+
const canRetry = unknown && !!onRevoke && grant.receipt?.retryable !== false && retryId !== undefined;
|
|
31
|
+
return (_jsxs("li", { className: "rl-agent-grant", "data-available": grant.available || undefined, "data-receipt": status, "aria-busy": submitting || undefined, children: [_jsxs("div", { className: "rl-agent-grant__main", children: [_jsx("code", { className: "rl-agent-grant__target", children: grant.target }), _jsxs(StatusBadge, { size: "sm", status: "neutral", appearance: "outline", className: "rl-agent-grant__scope", children: [_jsxs("span", { className: "rl-agent-sr", children: [m.grantScope, " "] }), grant.scopeLabel] })] }), (grant.detail || !grant.available) && (_jsxs("div", { id: detailId, className: "rl-agent-grant__detail", children: [grant.detail && _jsx("p", { className: "rl-agent-grant__text", children: grant.detail }), !grant.available && (_jsxs("p", { className: "rl-agent-grant__unavailable", children: [_jsx(AgentIcon, { name: "warning" }), _jsxs("span", { children: [_jsx("span", { className: "rl-agent-grant__unavailable-label", children: m.grantUnavailable }), " ", grant.reason ?? m.grantUnavailableReason] })] }))] })), unknown && (_jsxs("p", { className: "rl-agent-grant__receipt", "data-tone": "warning", children: [_jsx(AgentIcon, { name: "warning" }), _jsxs("span", { children: [_jsx("strong", { className: "rl-agent-grant__receipt-title", children: m.grantUnknownTitle }), ' ', grant.receipt?.reason ?? (grant.receipt?.retryable === false ? m.grantUnknownNotRetryable : m.grantUnknownBody)] })] })), status === 'rejected' && (_jsxs("p", { className: "rl-agent-grant__receipt", "data-tone": "danger", children: [_jsx(AgentIcon, { name: "close" }), _jsx("span", { children: grant.receipt?.reason ?? m.grantRejected })] })), accepted && (_jsxs("p", { className: "rl-agent-grant__receipt", "data-tone": "success", children: [_jsx(AgentIcon, { name: "check" }), _jsx("span", { children: m.grantRevoked })] })), !accepted && (onRevoke || (!grant.available && onReselect)) && (_jsxs("div", { className: "rl-agent-grant__actions", children: [!grant.available && onReselect && (_jsx(Button, { size: "sm", variant: "secondary", "aria-label": m.grantReselectLabel(grant.target), disabled: submitting, onClick: () => onReselect(grant), children: m.grantReselect })), onRevoke &&
|
|
32
|
+
(canRetry ? (_jsx(Button, { size: "sm", variant: "primary", loading: submitting, iconStart: _jsx(AgentIcon, { name: "retry" }), "aria-label": m.grantRetryRevokeLabel(grant.target), onClick: () => send({ actionId: retryId, targetId: grant.id }), children: m.grantRetryRevoke })) : (!unknown && (_jsx(Button, { size: "sm", variant: "secondary", loading: submitting, "aria-label": m.grantRevokeLabel(grant.target), "aria-describedby": describedBy, onClick: () => send({ actionId: lock.nextActionId(), targetId: grant.id }), children: m.grantRevoke }))))] }))] }));
|
|
33
|
+
}
|
|
34
|
+
export const GrantList = React.forwardRef(function GrantList({ title, grants, onRevoke, onReselect, loading = false, error, onRetry, empty, footerNote, addSlot, headingLevel = 3, className, ...rest }, ref) {
|
|
35
|
+
const m = useAgentMessages().intervention;
|
|
36
|
+
const id = React.useId();
|
|
37
|
+
const titleId = `${id}-title`;
|
|
38
|
+
const Heading = `h${headingLevel}`;
|
|
39
|
+
const hasError = error != null && error !== false;
|
|
40
|
+
const busy = grants.find((g) => g.receipt?.status === 'submitting');
|
|
41
|
+
const unknown = grants.find((g) => g.receipt?.status === 'unknown');
|
|
42
|
+
const sr = busy ? m.grantRevokingSr(busy.target) : unknown ? m.grantUnknownSr(unknown.target) : '';
|
|
43
|
+
let body;
|
|
44
|
+
if (loading) {
|
|
45
|
+
body = (_jsxs("div", { className: "rl-agent-grants__loading", "aria-busy": "true", children: [_jsx("p", { className: "rl-agent-grants__loading-text", children: m.grantLoading }), _jsx(Skeleton, { lines: 3 })] }));
|
|
46
|
+
}
|
|
47
|
+
else if (hasError) {
|
|
48
|
+
body = (_jsx(Alert, { tone: "danger", title: m.grantError, className: "rl-agent-grants__error", action: onRetry ? (_jsx(Button, { size: "sm", variant: "secondary", iconStart: _jsx(AgentIcon, { name: "retry" }), onClick: onRetry, children: m.grantRetry })) : undefined, children: error === true ? null : error }));
|
|
49
|
+
}
|
|
50
|
+
else if (grants.length === 0) {
|
|
51
|
+
body = _jsx("p", { className: "rl-agent-grants__empty", children: empty ?? m.grantEmpty });
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
body = (_jsx("ul", { className: "rl-agent-grants__list", children: grants.map((grant) => (_jsx(GrantRow, { grant: grant, onRevoke: onRevoke, onReselect: onReselect }, grant.id))) }));
|
|
55
|
+
}
|
|
56
|
+
return (_jsxs("section", { ...rest, ref: ref, className: cx('rl-agent-grants', className), "aria-labelledby": titleId, "aria-busy": loading || undefined, children: [_jsxs("header", { className: "rl-agent-grants__header", children: [_jsx(Heading, { id: titleId, className: "rl-agent-grants__title", children: title ?? m.grantTitle }), !loading && !hasError && grants.length > 0 && _jsx("span", { className: "rl-agent-grants__count", children: m.grantCount(grants.length) }), addSlot != null && addSlot !== false && _jsx("div", { className: "rl-agent-grants__add", children: addSlot })] }), body, footerNote != null && footerNote !== false && _jsx("p", { className: "rl-agent-grants__note", children: footerNote }), _jsx("p", { className: "rl-agent-sr", role: "status", children: sr })] }));
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=GrantList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrantList.js","sourceRoot":"","sources":["../../../src/components/intervention/GrantList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Stacks the current interventions (ApprovalPanel, QuestionnaireCard, ErrorRecoveryNotice)
|
|
4
|
+
* directly above the composer.
|
|
5
|
+
*
|
|
6
|
+
* - Children are the cards; give each a stable `key` (operation / questionnaire id). Cards that
|
|
7
|
+
* arrive after the first render enter once with `AgentEntrance kind="card"` (opacity + 8px +
|
|
8
|
+
* scale .985, `panel`); cards present on first render are static unless `animateInitial`.
|
|
9
|
+
* The entrance is frozen at mount, so status updates never replay it.
|
|
10
|
+
* - The dock opens with a CSS `grid-template-rows: 0fr → 1fr` transition on
|
|
11
|
+
* `--rl-motion-base` (zero under reduced motion: it snaps open, nothing is hidden).
|
|
12
|
+
* - `moreCount` > 0 shows 「还有 N 个待处理」 for approvals queued behind the visible one.
|
|
13
|
+
* - It is a labelled region only while it has content. It never moves focus.
|
|
14
|
+
*/
|
|
15
|
+
export interface InterventionDockProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
16
|
+
/** Number of further pending interventions not shown. */
|
|
17
|
+
moreCount?: number;
|
|
18
|
+
/** Animate cards already present on the first render. Default false (restored state). */
|
|
19
|
+
animateInitial?: boolean;
|
|
20
|
+
/** Accessible name of the region. */
|
|
21
|
+
label?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare const InterventionDock: React.ForwardRefExoticComponent<InterventionDockProps & React.RefAttributes<HTMLDivElement>>;
|
|
24
|
+
//# sourceMappingURL=InterventionDock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InterventionDock.d.ts","sourceRoot":"","sources":["../../../src/components/intervention/InterventionDock.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAsB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACjF,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,gBAAgB,8FAoC3B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { AgentEntrance } from '../../motion/agent-motion.js';
|
|
5
|
+
import { useAgentMessages } from '../../provider/AgentMessages.js';
|
|
6
|
+
import { cx } from '../../utils/cx.js';
|
|
7
|
+
export const InterventionDock = React.forwardRef(function InterventionDock({ moreCount = 0, animateInitial = false, label, className, children, ...rest }, ref) {
|
|
8
|
+
const m = useAgentMessages().intervention;
|
|
9
|
+
const items = React.Children.toArray(children).filter(React.isValidElement);
|
|
10
|
+
const open = items.length > 0;
|
|
11
|
+
const firstRender = React.useRef(true);
|
|
12
|
+
React.useEffect(() => {
|
|
13
|
+
firstRender.current = false;
|
|
14
|
+
}, []);
|
|
15
|
+
const animate = !firstRender.current || animateInitial;
|
|
16
|
+
return (_jsx("div", { ...rest, ref: ref, className: cx('rl-agent-dock', className), "data-open": open || undefined, role: open ? 'region' : undefined, "aria-label": open ? (label ?? m.dockLabel) : undefined, children: _jsx("div", { className: "rl-agent-dock__inner", children: open && (_jsxs("div", { className: "rl-agent-dock__stack", children: [moreCount > 0 && _jsx("p", { className: "rl-agent-dock__more", children: m.dockMore(moreCount) }), items.map((item) => (_jsx(AgentEntrance, { kind: "card", animate: animate, className: "rl-agent-dock__item", children: item }, item.key ?? undefined)))] })) }) }));
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=InterventionDock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InterventionDock.js","sourceRoot":"","sources":["../../../src/components/intervention/InterventionDock.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAwBvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAwC,SAAS,gBAAgB,CAC/G,EAAE,SAAS,GAAG,CAAC,EAAE,cAAc,GAAG,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAC9E,GAAG;IAEH,MAAM,CAAC,GAAG,gBAAgB,EAAE,CAAC,YAAY,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;IAC9B,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,cAAc,CAAC;IAEvD,OAAO,CACL,iBACM,IAAI,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,eAC9B,IAAI,IAAI,SAAS,EAC5B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,gBACrB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,YAErD,cAAK,SAAS,EAAC,sBAAsB,YAClC,IAAI,IAAI,CACP,eAAK,SAAS,EAAC,sBAAsB,aAClC,SAAS,GAAG,CAAC,IAAI,YAAG,SAAS,EAAC,qBAAqB,YAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAK,EAC/E,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,aAAa,IAA6B,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,qBAAqB,YACrG,IAAI,IADa,IAAI,CAAC,GAAG,IAAI,SAAS,CAEzB,CACjB,CAAC,IACE,CACP,GACG,GACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
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
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Agent → user questionnaire (atlas 21, ADR-0011 §6). Collects information only: it never grants
|
|
17
|
+
* tool permissions.
|
|
18
|
+
*
|
|
19
|
+
* Data: `questionnaire.answers` is the host's draft. The card keeps a local mirror so typing
|
|
20
|
+
* stays responsive and reports every change with `onAnswerChange(answer)` (the host persists).
|
|
21
|
+
* The mirror is replaced by the props only when `questionnaire.revision` becomes newer (or the
|
|
22
|
+
* questionnaire id changes); an older revision is ignored (`isStaleRevision`), so a late
|
|
23
|
+
* snapshot never rolls the draft back.
|
|
24
|
+
*
|
|
25
|
+
* Submitting emits `onSubmit(answers, { actionId, targetId: id, baseRevision: revision })` with
|
|
26
|
+
* normalised answers (unanswered optional questions become `skipped`). Unanswered optional
|
|
27
|
+
* questions ask for an inline confirmation (`role="alert"`); unanswered required ones block.
|
|
28
|
+
* `unknown` keeps the same answers and revision: 「重试提交相同答案」 re-sends the stored answers
|
|
29
|
+
* with the same `actionId` (after a remount it uses `receipt.actionId`).
|
|
30
|
+
* `completed` / `expired` / `interrupted` render a read-only summary. If such an ended questionnaire
|
|
31
|
+
* still has a draft the host never saved (`draftStatus` `dirty` / `error`) and `onDiscardDraft` is
|
|
32
|
+
* given, the summary adds 「放弃未保存填写」 behind an AlertDialog confirmation (focus returns to the
|
|
33
|
+
* button on cancel; a rejected promise keeps the dialog open with an error).
|
|
34
|
+
*
|
|
35
|
+
* Keyboard (form level; ignored while an IME composes):
|
|
36
|
+
* - `1`…`n` choose option n, `n+1` toggles 「其他」 (not while typing in a textarea);
|
|
37
|
+
* - `Enter` → next question, or submit on the last (not in a textarea, not on a button);
|
|
38
|
+
* - `←` / `→` page (not in a textarea); `Ctrl/⌘ + Enter` submits from anywhere;
|
|
39
|
+
* - after paging, focus moves to the first control of the new page.
|
|
40
|
+
*
|
|
41
|
+
* Motion: the question body slides in on a single axis (`x` + opacity, `fast`) from the paging
|
|
42
|
+
* direction; reduced motion switches instantly. The dock entrance belongs to the caller.
|
|
43
|
+
*/
|
|
44
|
+
export interface QuestionnaireCardHandle {
|
|
45
|
+
/** Ask the host to persist the current answers now (e.g. before closing the page). */
|
|
46
|
+
flush: () => void | Promise<void>;
|
|
47
|
+
/** Focus the first control of the current page. */
|
|
48
|
+
focus: () => void;
|
|
49
|
+
}
|
|
50
|
+
export interface QuestionnaireCardProps extends Omit<React.FormHTMLAttributes<HTMLFormElement>, 'onSubmit' | 'children' | 'title'> {
|
|
51
|
+
questionnaire: QuestionnaireView;
|
|
52
|
+
onAnswerChange?: (answer: QuestionAnswer) => void;
|
|
53
|
+
onSubmit?: AgentActionHandler<[QuestionAnswer[], AgentActionContext]>;
|
|
54
|
+
/** Shown with a failed draft save. */
|
|
55
|
+
onRetrySave?: () => void;
|
|
56
|
+
/** Called by the `flush()` handle with the current answers. */
|
|
57
|
+
onFlush?: (answers: QuestionAnswer[]) => void | Promise<void>;
|
|
58
|
+
/** Read-only summary: copy the answers as plain text (host writes the clipboard). */
|
|
59
|
+
onCopyAnswers?: (text: string) => void;
|
|
60
|
+
/**
|
|
61
|
+
* Ended questionnaire (completed / expired / interrupted) with an unsaved draft (`draftStatus`
|
|
62
|
+
* `dirty` or `error`): drop the local draft. Confirmed through an AlertDialog. Return a Promise to
|
|
63
|
+
* keep the dialog open until the host settles.
|
|
64
|
+
*/
|
|
65
|
+
onDiscardDraft?: () => void | Promise<unknown>;
|
|
66
|
+
/** Header title override (default: `questionnaire.title` or 「需要你的回答」). */
|
|
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;
|
|
74
|
+
/** Start on this page instead of the first unanswered question. */
|
|
75
|
+
initialPage?: number;
|
|
76
|
+
advanceOnSingleChoice?: boolean;
|
|
77
|
+
draftError?: React.ReactNode;
|
|
78
|
+
disabled?: boolean;
|
|
79
|
+
}
|
|
80
|
+
export declare const QuestionnaireCard: React.ForwardRefExoticComponent<QuestionnaireCardProps & React.RefAttributes<QuestionnaireCardHandle>>;
|
|
81
|
+
//# sourceMappingURL=QuestionnaireCard.d.ts.map
|
|
@@ -0,0 +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,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"}
|