@agent-native/toolkit 0.228.0-nightly-20261111212500 → 0.228.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/agent-native.eject.json +2 -0
- package/dist/app/agentkit/react/approval-card.d.ts.map +1 -1
- package/dist/app/agentkit/react/approval-card.js +5 -3
- package/dist/app/agentkit/react/approval-card.js.map +1 -1
- package/dist/app/agentkit/react/code-block.d.ts +32 -0
- package/dist/app/agentkit/react/code-block.d.ts.map +1 -0
- package/dist/app/agentkit/react/code-block.js +125 -0
- package/dist/app/agentkit/react/code-block.js.map +1 -0
- package/dist/app/agentkit/react/components.d.ts +33 -14
- package/dist/app/agentkit/react/components.d.ts.map +1 -1
- package/dist/app/agentkit/react/components.js +843 -168
- package/dist/app/agentkit/react/components.js.map +1 -1
- package/dist/app/agentkit/react/context-usage.d.ts +45 -0
- package/dist/app/agentkit/react/context-usage.d.ts.map +1 -0
- package/dist/app/agentkit/react/context-usage.js +93 -0
- package/dist/app/agentkit/react/context-usage.js.map +1 -0
- package/dist/app/agentkit/react/context.d.ts +42 -3
- package/dist/app/agentkit/react/context.d.ts.map +1 -1
- package/dist/app/agentkit/react/context.js +46 -1
- package/dist/app/agentkit/react/context.js.map +1 -1
- package/dist/app/agentkit/react/disclosure-content.d.ts +12 -0
- package/dist/app/agentkit/react/disclosure-content.d.ts.map +1 -0
- package/dist/app/agentkit/react/disclosure-content.js +33 -0
- package/dist/app/agentkit/react/disclosure-content.js.map +1 -0
- package/dist/app/agentkit/react/duration.d.ts +6 -0
- package/dist/app/agentkit/react/duration.d.ts.map +1 -0
- package/dist/app/agentkit/react/duration.js +21 -0
- package/dist/app/agentkit/react/duration.js.map +1 -0
- package/dist/app/agentkit/react/file-change.d.ts +33 -0
- package/dist/app/agentkit/react/file-change.d.ts.map +1 -0
- package/dist/app/agentkit/react/file-change.js +83 -0
- package/dist/app/agentkit/react/file-change.js.map +1 -0
- package/dist/app/agentkit/react/file-diff.d.ts +17 -0
- package/dist/app/agentkit/react/file-diff.d.ts.map +1 -0
- package/dist/app/agentkit/react/file-diff.js +94 -0
- package/dist/app/agentkit/react/file-diff.js.map +1 -0
- package/dist/app/agentkit/react/index.d.ts +7 -0
- package/dist/app/agentkit/react/index.d.ts.map +1 -1
- package/dist/app/agentkit/react/index.js +7 -0
- package/dist/app/agentkit/react/index.js.map +1 -1
- package/dist/app/agentkit/react/question-card.d.ts +67 -0
- package/dist/app/agentkit/react/question-card.d.ts.map +1 -0
- package/dist/app/agentkit/react/question-card.js +198 -0
- package/dist/app/agentkit/react/question-card.js.map +1 -0
- package/dist/app/agentkit/react/root.d.ts +3 -2
- package/dist/app/agentkit/react/root.d.ts.map +1 -1
- package/dist/app/agentkit/react/root.js +2 -2
- package/dist/app/agentkit/react/root.js.map +1 -1
- package/dist/app/agentkit/react/roving-focus.d.ts +4 -0
- package/dist/app/agentkit/react/roving-focus.d.ts.map +1 -0
- package/dist/app/agentkit/react/roving-focus.js +75 -0
- package/dist/app/agentkit/react/roving-focus.js.map +1 -0
- package/dist/app/agentkit/react/stack-trace.d.ts +34 -0
- package/dist/app/agentkit/react/stack-trace.d.ts.map +1 -0
- package/dist/app/agentkit/react/stack-trace.js +121 -0
- package/dist/app/agentkit/react/stack-trace.js.map +1 -0
- package/dist/app/agentkit/react/stop-button.d.ts.map +1 -1
- package/dist/app/agentkit/react/stop-button.js +22 -6
- package/dist/app/agentkit/react/stop-button.js.map +1 -1
- package/dist/app/agentkit/react/styles.css +1306 -395
- package/dist/app/agentkit/react/terminal.d.ts +28 -0
- package/dist/app/agentkit/react/terminal.d.ts.map +1 -0
- package/dist/app/agentkit/react/terminal.js +84 -0
- package/dist/app/agentkit/react/terminal.js.map +1 -0
- package/dist/app/agentkit/react/trace.d.ts +31 -0
- package/dist/app/agentkit/react/trace.d.ts.map +1 -0
- package/dist/app/agentkit/react/trace.js +73 -0
- package/dist/app/agentkit/react/trace.js.map +1 -0
- package/dist/app/blocks/library/HighlightedCode.d.ts +2 -1
- package/dist/app/blocks/library/HighlightedCode.d.ts.map +1 -1
- package/dist/app/blocks/library/HighlightedCode.js +8 -111
- package/dist/app/blocks/library/HighlightedCode.js.map +1 -1
- package/dist/app/chat/AgentKitAssistantChat.d.ts.map +1 -1
- package/dist/app/chat/AgentKitAssistantChat.js +23 -245
- package/dist/app/chat/AgentKitAssistantChat.js.map +1 -1
- package/dist/app/chat/agentkit-chat/guided-questions.d.ts +15 -1
- package/dist/app/chat/agentkit-chat/guided-questions.d.ts.map +1 -1
- package/dist/app/chat/agentkit-chat/guided-questions.js +142 -2
- package/dist/app/chat/agentkit-chat/guided-questions.js.map +1 -1
- package/dist/app/chat/agentkit-chat/history.js +1 -1
- package/dist/app/chat/agentkit-chat/history.js.map +1 -1
- package/dist/app/chat/agentkit-chat/index.d.ts +1 -1
- package/dist/app/chat/agentkit-chat/index.d.ts.map +1 -1
- package/dist/app/chat/agentkit-chat/index.js +1 -1
- package/dist/app/chat/agentkit-chat/index.js.map +1 -1
- package/dist/app/chat/agentkit-chat/labels.d.ts +5 -0
- package/dist/app/chat/agentkit-chat/labels.d.ts.map +1 -0
- package/dist/app/chat/agentkit-chat/labels.js +245 -0
- package/dist/app/chat/agentkit-chat/labels.js.map +1 -0
- package/dist/app/chat/agentkit-chat/questions.d.ts +1 -1
- package/dist/app/chat/agentkit-chat/questions.d.ts.map +1 -1
- package/dist/app/chat/agentkit-chat/questions.js +1 -1
- package/dist/app/chat/agentkit-chat/questions.js.map +1 -1
- package/dist/app/chat/agentkit-chat/root.d.ts.map +1 -1
- package/dist/app/chat/agentkit-chat/root.js +5 -64
- package/dist/app/chat/agentkit-chat/root.js.map +1 -1
- package/dist/app/chat/agentkit-chat/work-step-labels.d.ts +2 -0
- package/dist/app/chat/agentkit-chat/work-step-labels.d.ts.map +1 -1
- package/dist/app/chat/agentkit-chat/work-step-labels.js +31 -0
- package/dist/app/chat/agentkit-chat/work-step-labels.js.map +1 -1
- package/dist/app/chat/chat/markdown-renderer.d.ts +2 -12
- package/dist/app/chat/chat/markdown-renderer.d.ts.map +1 -1
- package/dist/app/chat/chat/markdown-renderer.js +2 -41
- package/dist/app/chat/chat/markdown-renderer.js.map +1 -1
- package/dist/app/chat/chat/tool-call-display.d.ts.map +1 -1
- package/dist/app/chat/chat/tool-call-display.js +2 -2
- package/dist/app/chat/chat/tool-call-display.js.map +1 -1
- package/dist/app/chat/conversation/AgentConversation.d.ts.map +1 -1
- package/dist/app/chat/conversation/AgentConversation.js +2 -37
- package/dist/app/chat/conversation/AgentConversation.js.map +1 -1
- package/dist/app/chat/tool-cells/BashCell.d.ts +3 -1
- package/dist/app/chat/tool-cells/BashCell.d.ts.map +1 -1
- package/dist/app/chat/tool-cells/BashCell.js +4 -40
- package/dist/app/chat/tool-cells/BashCell.js.map +1 -1
- package/dist/app/chat/tool-cells/EditCell.d.ts.map +1 -1
- package/dist/app/chat/tool-cells/EditCell.js +5 -108
- package/dist/app/chat/tool-cells/EditCell.js.map +1 -1
- package/dist/app/chat/tool-cells/FilesChangedSummary.d.ts.map +1 -1
- package/dist/app/chat/tool-cells/FilesChangedSummary.js +23 -81
- package/dist/app/chat/tool-cells/FilesChangedSummary.js.map +1 -1
- package/dist/app/chat/tool-cells/WriteCell.d.ts.map +1 -1
- package/dist/app/chat/tool-cells/WriteCell.js +5 -24
- package/dist/app/chat/tool-cells/WriteCell.js.map +1 -1
- package/dist/app/code-highlighter.d.ts +11 -0
- package/dist/app/code-highlighter.d.ts.map +1 -0
- package/dist/app/code-highlighter.js +122 -0
- package/dist/app/code-highlighter.js.map +1 -0
- package/dist/app/context-xray/ThreadContextRing.js +3 -3
- package/dist/app/context-xray/ThreadContextRing.js.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ar-SA.js +22 -0
- package/dist/app/i18n/catalogs/ar-SA.js.map +1 -1
- package/dist/app/i18n/catalogs/de-DE.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/de-DE.js +22 -0
- package/dist/app/i18n/catalogs/de-DE.js.map +1 -1
- package/dist/app/i18n/catalogs/en-US.d.ts +22 -0
- package/dist/app/i18n/catalogs/en-US.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/en-US.js +22 -0
- package/dist/app/i18n/catalogs/en-US.js.map +1 -1
- package/dist/app/i18n/catalogs/es-ES.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/es-ES.js +22 -0
- package/dist/app/i18n/catalogs/es-ES.js.map +1 -1
- package/dist/app/i18n/catalogs/fr-FR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/fr-FR.js +22 -0
- package/dist/app/i18n/catalogs/fr-FR.js.map +1 -1
- package/dist/app/i18n/catalogs/hi-IN.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/hi-IN.js +22 -0
- package/dist/app/i18n/catalogs/hi-IN.js.map +1 -1
- package/dist/app/i18n/catalogs/ja-JP.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ja-JP.js +22 -0
- package/dist/app/i18n/catalogs/ja-JP.js.map +1 -1
- package/dist/app/i18n/catalogs/ko-KR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/ko-KR.js +22 -0
- package/dist/app/i18n/catalogs/ko-KR.js.map +1 -1
- package/dist/app/i18n/catalogs/pt-BR.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/pt-BR.js +22 -0
- package/dist/app/i18n/catalogs/pt-BR.js.map +1 -1
- package/dist/app/i18n/catalogs/zh-CN.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/zh-CN.js +22 -0
- package/dist/app/i18n/catalogs/zh-CN.js.map +1 -1
- package/dist/app/i18n/catalogs/zh-TW.d.ts.map +1 -1
- package/dist/app/i18n/catalogs/zh-TW.js +22 -0
- package/dist/app/i18n/catalogs/zh-TW.js.map +1 -1
- package/dist/app/onboarding/first-run-first-paint.d.ts +10 -0
- package/dist/app/onboarding/first-run-first-paint.d.ts.map +1 -0
- package/dist/app/onboarding/first-run-first-paint.js +22 -0
- package/dist/app/onboarding/first-run-first-paint.js.map +1 -0
- package/dist/app/onboarding/first-run-startup-gate.d.ts +3 -1
- package/dist/app/onboarding/first-run-startup-gate.d.ts.map +1 -1
- package/dist/app/onboarding/first-run-startup-gate.js +30 -6
- package/dist/app/onboarding/first-run-startup-gate.js.map +1 -1
- package/dist/app/providers/AppProviders.d.ts.map +1 -1
- package/dist/app/providers/AppProviders.js +9 -2
- package/dist/app/providers/AppProviders.js.map +1 -1
- package/dist/app/providers/BuilderSignupActivation.d.ts +2 -1
- package/dist/app/providers/BuilderSignupActivation.d.ts.map +1 -1
- package/dist/app/providers/BuilderSignupActivation.js +6 -3
- package/dist/app/providers/BuilderSignupActivation.js.map +1 -1
- package/dist/app/shared/AppShellSkeleton.d.ts.map +1 -1
- package/dist/app/shared/AppShellSkeleton.js +11 -1
- package/dist/app/shared/AppShellSkeleton.js.map +1 -1
- package/dist/app/styles/agent-native.css +2 -2
- package/dist/app/styles/tokens/agent-kit.css +20 -3
- package/dist/composer/AgentSuggestionBar.d.ts.map +1 -1
- package/dist/composer/AgentSuggestionBar.js +2 -2
- package/dist/composer/AgentSuggestionBar.js.map +1 -1
- package/dist/composer/ComposerContextMenu.js +4 -4
- package/dist/composer/ComposerContextMenu.js.map +1 -1
- package/dist/composer/ComposerContextPicker.d.ts.map +1 -1
- package/dist/composer/ComposerContextPicker.js +2 -2
- package/dist/composer/ComposerContextPicker.js.map +1 -1
- package/dist/composer/ComposerContextPickerDialog.d.ts.map +1 -1
- package/dist/composer/ComposerContextPickerDialog.js +2 -2
- package/dist/composer/ComposerContextPickerDialog.js.map +1 -1
- package/dist/composer/ComposerModePicker.d.ts.map +1 -1
- package/dist/composer/ComposerModePicker.js +2 -1
- package/dist/composer/ComposerModePicker.js.map +1 -1
- package/dist/composer/ComposerPlusMenu.js +1 -1
- package/dist/composer/ComposerPlusMenu.js.map +1 -1
- package/dist/composer/MentionChip.js +1 -1
- package/dist/composer/MentionChip.js.map +1 -1
- package/dist/composer/MentionPopover.d.ts +3 -0
- package/dist/composer/MentionPopover.d.ts.map +1 -1
- package/dist/composer/MentionPopover.js +34 -15
- package/dist/composer/MentionPopover.js.map +1 -1
- package/dist/composer/MessageQueueDrawer.d.ts.map +1 -1
- package/dist/composer/MessageQueueDrawer.js +14 -9
- package/dist/composer/MessageQueueDrawer.js.map +1 -1
- package/dist/composer/PastedTextChip.d.ts.map +1 -1
- package/dist/composer/PastedTextChip.js +14 -18
- package/dist/composer/PastedTextChip.js.map +1 -1
- package/dist/composer/PromptBar.js +1 -1
- package/dist/composer/PromptBar.js.map +1 -1
- package/dist/composer/PromptComposer.d.ts.map +1 -1
- package/dist/composer/PromptComposer.js +11 -9
- package/dist/composer/PromptComposer.js.map +1 -1
- package/dist/composer/RealtimeVoiceMode.js +2 -2
- package/dist/composer/RealtimeVoiceMode.js.map +1 -1
- package/dist/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/composer/TiptapComposer.js +52 -89
- package/dist/composer/TiptapComposer.js.map +1 -1
- package/dist/composer/VoiceButton.d.ts +3 -1
- package/dist/composer/VoiceButton.d.ts.map +1 -1
- package/dist/composer/VoiceButton.js +10 -8
- package/dist/composer/VoiceButton.js.map +1 -1
- package/dist/composer/composer-notice.js +3 -3
- package/dist/composer/composer-notice.js.map +1 -1
- package/dist/composer/extensions/FileReference.js +1 -1
- package/dist/composer/extensions/FileReference.js.map +1 -1
- package/dist/composer/extensions/SkillReference.js +1 -1
- package/dist/composer/extensions/SkillReference.js.map +1 -1
- package/dist/composer/popover-surface.d.ts +1 -1
- package/dist/composer/popover-surface.d.ts.map +1 -1
- package/dist/composer/popover-surface.js +1 -1
- package/dist/composer/popover-surface.js.map +1 -1
- package/dist/context-ui/ContextUsageRing.d.ts +1 -45
- package/dist/context-ui/ContextUsageRing.d.ts.map +1 -1
- package/dist/context-ui/ContextUsageRing.js +2 -87
- package/dist/context-ui/ContextUsageRing.js.map +1 -1
- package/dist/context-ui/index.d.ts +2 -2
- package/dist/context-ui/index.d.ts.map +1 -1
- package/dist/context-ui/index.js +2 -2
- package/dist/context-ui/index.js.map +1 -1
- package/package.json +4 -4
- package/src/app/agentkit/react/approval-card.tsx +14 -2
- package/src/app/agentkit/react/code-block.spec.tsx +154 -0
- package/src/app/agentkit/react/code-block.tsx +317 -0
- package/src/app/agentkit/react/components.interaction.spec.tsx +7 -0
- package/src/app/agentkit/react/components.papercuts.spec.tsx +143 -2
- package/src/app/agentkit/react/components.spec.tsx +40 -47
- package/src/app/agentkit/react/components.tsx +1533 -413
- package/src/app/agentkit/react/composer-context.spec.tsx +35 -0
- package/src/app/agentkit/react/context-usage.tsx +353 -0
- package/src/app/agentkit/react/context.tsx +93 -1
- package/src/app/agentkit/react/disclosure-content.ts +42 -0
- package/src/app/agentkit/react/disclosures.spec.tsx +62 -4
- package/src/app/agentkit/react/duration.ts +22 -0
- package/src/app/agentkit/react/file-change.spec.tsx +124 -0
- package/src/app/agentkit/react/file-change.tsx +228 -0
- package/src/app/agentkit/react/file-diff.ts +110 -0
- package/src/app/agentkit/react/index.ts +7 -0
- package/src/app/agentkit/react/lifecycle.spec.tsx +565 -20
- package/src/app/agentkit/react/markdown.spec.tsx +18 -8
- package/src/app/agentkit/react/message-actions.spec.tsx +55 -1
- package/src/app/agentkit/react/notices.spec.tsx +4 -4
- package/src/app/agentkit/react/optimistic-send.spec.tsx +43 -0
- package/src/app/agentkit/react/question-card.spec.tsx +276 -0
- package/src/app/agentkit/react/question-card.tsx +533 -0
- package/src/app/agentkit/react/root.tsx +4 -0
- package/src/app/agentkit/react/roving-focus.spec.tsx +114 -0
- package/src/app/agentkit/react/roving-focus.ts +82 -0
- package/src/app/agentkit/react/stack-trace.spec.tsx +177 -0
- package/src/app/agentkit/react/stack-trace.tsx +281 -0
- package/src/app/agentkit/react/stop-button.spec.tsx +40 -0
- package/src/app/agentkit/react/stop-button.tsx +22 -5
- package/src/app/agentkit/react/styles.css +1306 -395
- package/src/app/agentkit/react/subagent-step.spec.tsx +554 -0
- package/src/app/agentkit/react/terminal.spec.tsx +228 -0
- package/src/app/agentkit/react/terminal.tsx +228 -0
- package/src/app/agentkit/react/trace.spec.tsx +120 -0
- package/src/app/agentkit/react/trace.tsx +239 -0
- package/src/app/blocks/library/HighlightedCode.tsx +14 -126
- package/src/app/chat/AgentKitAssistantChat.spec.tsx +28 -12
- package/src/app/chat/AgentKitAssistantChat.tsx +27 -253
- package/src/app/chat/agentkit-chat/approval-card.spec.tsx +1 -0
- package/src/app/chat/agentkit-chat/guided-questions.flow.spec.tsx +381 -0
- package/src/app/chat/agentkit-chat/guided-questions.tsx +236 -3
- package/src/app/chat/agentkit-chat/history.tsx +1 -1
- package/src/app/chat/agentkit-chat/index.ts +2 -0
- package/src/app/chat/agentkit-chat/labels.ts +259 -0
- package/src/app/chat/agentkit-chat/questions.ts +2 -0
- package/src/app/chat/agentkit-chat/root.spec.tsx +18 -0
- package/src/app/chat/agentkit-chat/root.tsx +5 -64
- package/src/app/chat/agentkit-chat/work-step-labels.ts +42 -0
- package/src/app/chat/chat/markdown-renderer.tsx +2 -59
- package/src/app/chat/chat/tool-call-display.spec.tsx +26 -14
- package/src/app/chat/chat/tool-call-display.tsx +2 -1
- package/src/app/chat/conversation/AgentConversation.tsx +2 -50
- package/src/app/chat/tool-cells/BashCell.tsx +14 -136
- package/src/app/chat/tool-cells/EditCell.tsx +11 -248
- package/src/app/chat/tool-cells/FilesChangedSummary.spec.tsx +62 -5
- package/src/app/chat/tool-cells/FilesChangedSummary.tsx +31 -162
- package/src/app/chat/tool-cells/WriteCell.tsx +11 -121
- package/src/app/code-highlighter.ts +131 -0
- package/src/app/context-xray/ThreadContextRing.tsx +7 -7
- package/src/app/i18n/catalogs/ar-SA.ts +22 -0
- package/src/app/i18n/catalogs/de-DE.ts +22 -0
- package/src/app/i18n/catalogs/en-US.ts +22 -0
- package/src/app/i18n/catalogs/es-ES.ts +22 -0
- package/src/app/i18n/catalogs/fr-FR.ts +22 -0
- package/src/app/i18n/catalogs/hi-IN.ts +22 -0
- package/src/app/i18n/catalogs/ja-JP.ts +22 -0
- package/src/app/i18n/catalogs/ko-KR.ts +22 -0
- package/src/app/i18n/catalogs/pt-BR.ts +22 -0
- package/src/app/i18n/catalogs/zh-CN.ts +22 -0
- package/src/app/i18n/catalogs/zh-TW.ts +22 -0
- package/src/app/onboarding/first-run-first-paint.spec.ts +39 -0
- package/src/app/onboarding/first-run-first-paint.ts +24 -0
- package/src/app/onboarding/first-run-startup-gate.spec.tsx +125 -13
- package/src/app/onboarding/first-run-startup-gate.tsx +48 -5
- package/src/app/providers/AppProviders.tsx +18 -0
- package/src/app/providers/BuilderSignupActivation.tsx +8 -2
- package/src/app/shared/AppShellSkeleton.spec.tsx +60 -1
- package/src/app/shared/AppShellSkeleton.tsx +31 -1
- package/src/app/styles/agent-native.css +2 -2
- package/src/app/styles/agent-native.spec.ts +2 -2
- package/src/app/styles/tokens/agent-kit.css +20 -3
- package/src/composer/AgentSuggestionBar.spec.tsx +3 -1
- package/src/composer/AgentSuggestionBar.tsx +5 -2
- package/src/composer/ComposerContextMenu.tsx +4 -4
- package/src/composer/ComposerContextPicker.tsx +8 -2
- package/src/composer/ComposerContextPickerDialog.tsx +5 -2
- package/src/composer/ComposerModePicker.tsx +2 -1
- package/src/composer/ComposerPlusMenu.tsx +1 -1
- package/src/composer/MentionChip.tsx +1 -1
- package/src/composer/MentionPopover.spec.tsx +108 -2
- package/src/composer/MentionPopover.tsx +93 -17
- package/src/composer/MessageQueueDrawer.spec.tsx +5 -5
- package/src/composer/MessageQueueDrawer.tsx +19 -12
- package/src/composer/PastedTextChip.spec.tsx +36 -0
- package/src/composer/PastedTextChip.tsx +52 -58
- package/src/composer/PromptBar.tsx +1 -1
- package/src/composer/PromptComposer.context.spec.tsx +2 -2
- package/src/composer/PromptComposer.submission.spec.tsx +27 -0
- package/src/composer/PromptComposer.tsx +17 -9
- package/src/composer/RealtimeVoiceMode.tsx +2 -2
- package/src/composer/TiptapComposer.model-picker.spec.tsx +23 -82
- package/src/composer/TiptapComposer.tsx +68 -145
- package/src/composer/VoiceButton.tsx +12 -7
- package/src/composer/composer-notice.tsx +3 -3
- package/src/composer/extensions/FileReference.tsx +1 -1
- package/src/composer/extensions/SkillReference.tsx +1 -1
- package/src/composer/popover-surface.ts +1 -1
- package/src/context-ui/ContextUsageRing.spec.tsx +33 -8
- package/src/context-ui/ContextUsageRing.tsx +13 -348
- package/src/context-ui/index.ts +7 -1
- package/dist/composer/ModelPickerParts.d.ts +0 -20
- package/dist/composer/ModelPickerParts.d.ts.map +0 -1
- package/dist/composer/ModelPickerParts.js +0 -77
- package/dist/composer/ModelPickerParts.js.map +0 -1
- package/src/composer/ModelPickerParts.tsx +0 -188
|
@@ -668,7 +668,7 @@ export function AttachmentChip({
|
|
|
668
668
|
<div
|
|
669
669
|
role="status"
|
|
670
670
|
title={message}
|
|
671
|
-
className="agent-composer-attachment-chip group relative inline-flex max-w-[240px] items-center gap-2 rounded-
|
|
671
|
+
className="agent-composer-attachment-chip group relative inline-flex max-w-[240px] items-center gap-2 rounded-[var(--agent-kit-radius-sm,0.5rem)] border border-amber-500/40 bg-amber-500/10 px-2 py-1.5 text-xs"
|
|
672
672
|
>
|
|
673
673
|
<IconAlertTriangle className="h-4 w-4 shrink-0 text-amber-500" />
|
|
674
674
|
<span className="flex min-w-0 flex-col">
|
|
@@ -682,7 +682,7 @@ export function AttachmentChip({
|
|
|
682
682
|
name: attachment.name,
|
|
683
683
|
defaultValue: `Remove ${attachment.name}`,
|
|
684
684
|
})}
|
|
685
|
-
className="flex h-5 w-5 shrink-0 cursor-pointer items-center justify-center rounded text-muted-foreground hover:text-foreground"
|
|
685
|
+
className="relative flex h-5 w-5 shrink-0 cursor-pointer items-center justify-center rounded-[var(--agent-kit-radius-xs,0.25rem)] text-muted-foreground hover:text-foreground after:absolute after:-inset-0.5 after:content-['']"
|
|
686
686
|
>
|
|
687
687
|
<IconX className="h-3 w-3" />
|
|
688
688
|
</button>
|
|
@@ -704,7 +704,7 @@ export function AttachmentChip({
|
|
|
704
704
|
name: attachment.name,
|
|
705
705
|
defaultValue: `Preview ${attachment.name}`,
|
|
706
706
|
})}
|
|
707
|
-
className="agent-composer-attachment-image group flex h-16 min-w-16 max-w-28 cursor-zoom-in items-center justify-center overflow-hidden rounded-
|
|
707
|
+
className="agent-composer-attachment-image group flex h-16 min-w-16 max-w-28 cursor-zoom-in items-center justify-center overflow-hidden rounded-[var(--agent-kit-radius-sm,0.5rem)] border border-border bg-muted/50"
|
|
708
708
|
>
|
|
709
709
|
{src ? (
|
|
710
710
|
<img
|
|
@@ -723,7 +723,7 @@ export function AttachmentChip({
|
|
|
723
723
|
defaultValue: `Remove ${attachment.name}`,
|
|
724
724
|
})}
|
|
725
725
|
data-agent-composer-slot="attachment-remove"
|
|
726
|
-
className="absolute end-1 top-1 flex h-5 w-5 cursor-pointer items-center justify-center rounded-
|
|
726
|
+
className="absolute end-1 top-1 flex h-5 w-5 cursor-pointer items-center justify-center rounded-[var(--agent-kit-radius-xs,0.25rem)] border border-border bg-background/90 text-muted-foreground hover:text-foreground after:absolute after:-inset-0.5 after:content-['']"
|
|
727
727
|
>
|
|
728
728
|
<IconX className="h-3 w-3" />
|
|
729
729
|
</button>
|
|
@@ -732,8 +732,8 @@ export function AttachmentChip({
|
|
|
732
732
|
}
|
|
733
733
|
|
|
734
734
|
return (
|
|
735
|
-
<div className="agent-composer-attachment-chip group relative inline-flex max-w-[200px] items-center gap-2 rounded-
|
|
736
|
-
<div className="flex h-6 w-6 shrink-0 items-center justify-center rounded bg-background agent-kit-micro-copy font-semibold uppercase text-muted-foreground">
|
|
735
|
+
<div className="agent-composer-attachment-chip group relative inline-flex max-w-[200px] items-center gap-2 rounded-[var(--agent-kit-radius-sm,0.5rem)] border border-border bg-muted/50 px-2 py-1.5 text-xs">
|
|
736
|
+
<div className="flex h-6 w-6 shrink-0 items-center justify-center rounded-[var(--agent-kit-radius-xs,0.25rem)] bg-background agent-kit-micro-copy font-semibold uppercase text-muted-foreground">
|
|
737
737
|
{attachment.name.split(".").pop() ||
|
|
738
738
|
t("agentChat.composer.file", { defaultValue: "file" })}
|
|
739
739
|
</div>
|
|
@@ -746,7 +746,7 @@ export function AttachmentChip({
|
|
|
746
746
|
defaultValue: `Remove ${attachment.name}`,
|
|
747
747
|
})}
|
|
748
748
|
data-agent-composer-slot="attachment-remove"
|
|
749
|
-
className="relative flex h-5 w-5 shrink-0 cursor-pointer items-center justify-center rounded text-muted-foreground hover:text-foreground after:absolute after:-inset-0.5 after:content-['']"
|
|
749
|
+
className="relative flex h-5 w-5 shrink-0 cursor-pointer items-center justify-center rounded-[var(--agent-kit-radius-xs,0.25rem)] text-muted-foreground hover:text-foreground after:absolute after:-inset-0.5 after:content-['']"
|
|
750
750
|
>
|
|
751
751
|
<IconX className="h-3 w-3" />
|
|
752
752
|
</button>
|
|
@@ -758,8 +758,11 @@ const NO_HIDDEN_ATTACHMENTS: readonly string[] = [];
|
|
|
758
758
|
|
|
759
759
|
function PromptAttachmentStrip({
|
|
760
760
|
hiddenIds = NO_HIDDEN_ATTACHMENTS,
|
|
761
|
+
onRemoved,
|
|
761
762
|
}: {
|
|
762
763
|
hiddenIds?: readonly string[];
|
|
764
|
+
/** Runs after a chip is removed, so focus has somewhere to land. */
|
|
765
|
+
onRemoved?: () => void;
|
|
763
766
|
}) {
|
|
764
767
|
const allAttachments = useComposer((state) => state.attachments);
|
|
765
768
|
const attachments = hiddenIds.length
|
|
@@ -770,8 +773,9 @@ function PromptAttachmentStrip({
|
|
|
770
773
|
const handleRemove = useCallback(
|
|
771
774
|
(id: string) => {
|
|
772
775
|
void aui.composer().attachment({ id }).remove();
|
|
776
|
+
onRemoved?.();
|
|
773
777
|
},
|
|
774
|
-
[aui],
|
|
778
|
+
[aui, onRemoved],
|
|
775
779
|
);
|
|
776
780
|
|
|
777
781
|
if (attachments.length === 0) return null;
|
|
@@ -1100,6 +1104,7 @@ function PromptComposerInner({
|
|
|
1100
1104
|
window.dispatchEvent(new Event("agent-engine:configured-changed"));
|
|
1101
1105
|
}
|
|
1102
1106
|
}, []);
|
|
1107
|
+
const focusComposer = useCallback(() => localRef.current?.focus(), []);
|
|
1103
1108
|
const firstRunOwnsSurface = useFirstRunOnboardingGateOwnsSurface();
|
|
1104
1109
|
useEffect(() => {
|
|
1105
1110
|
if (!autoFocus || composerDisabled || firstRunOwnsSurface) return;
|
|
@@ -1210,7 +1215,10 @@ function PromptComposerInner({
|
|
|
1210
1215
|
{t("agentChat.setup.providerStatusUnavailable")}
|
|
1211
1216
|
</ComposerNotice>
|
|
1212
1217
|
) : null}
|
|
1213
|
-
<PromptAttachmentStrip
|
|
1218
|
+
<PromptAttachmentStrip
|
|
1219
|
+
hiddenIds={optimisticAttachmentIds}
|
|
1220
|
+
onRemoved={focusComposer}
|
|
1221
|
+
/>
|
|
1214
1222
|
<TiptapComposer
|
|
1215
1223
|
contextItems={contextItems}
|
|
1216
1224
|
contextMenuItems={contextMenuItems}
|
|
@@ -166,7 +166,7 @@ export function RealtimeVoiceComposerControls({
|
|
|
166
166
|
? "user"
|
|
167
167
|
: "idle"
|
|
168
168
|
}
|
|
169
|
-
className="flex h-[var(--agentkit-composer-toolbar-control-size,1.5rem)] min-w-0 shrink items-center gap-1.5 overflow-hidden rounded-
|
|
169
|
+
className="flex h-[var(--agentkit-composer-toolbar-control-size,1.5rem)] min-w-0 shrink items-center gap-1.5 overflow-hidden rounded-[var(--agent-kit-radius-xs,0.25rem)] bg-muted ps-2 pe-2.5 transition-[width,background-color] duration-150 ease-out starting:bg-transparent motion-reduce:transition-none"
|
|
170
170
|
>
|
|
171
171
|
{state === "connecting" ? (
|
|
172
172
|
<IconLoader2
|
|
@@ -270,7 +270,7 @@ export function RealtimeVoiceEndButton({
|
|
|
270
270
|
onClick={() =>
|
|
271
271
|
voice.state === "error" ? voice.dismissError() : voice.end()
|
|
272
272
|
}
|
|
273
|
-
className="agent-composer-send-button shrink-0 flex size-[var(--agentkit-composer-primary-control-size,1.75rem)] items-center justify-center rounded-
|
|
273
|
+
className="agent-composer-send-button shrink-0 flex size-[var(--agentkit-composer-primary-control-size,1.75rem)] items-center justify-center rounded-[var(--agent-kit-radius-sm,0.5rem)] bg-primary text-primary-foreground hover:opacity-90 transition-[opacity,transform] duration-150 active:scale-[0.97] disabled:opacity-30 disabled:cursor-not-allowed"
|
|
274
274
|
>
|
|
275
275
|
<span
|
|
276
276
|
key={settling ? "settling" : "end"}
|
|
@@ -264,26 +264,23 @@ describe("TiptapComposer model picker", () => {
|
|
|
264
264
|
"gpt-6-1-sol",
|
|
265
265
|
"gemini-3-1-pro",
|
|
266
266
|
"claude-sonnet-5-5",
|
|
267
|
+
// oracle-change: the model menu dropped its details card, printed digits and Recommended badges.
|
|
268
|
+
]);
|
|
269
|
+
// Digit shortcuts are announced, not printed.
|
|
270
|
+
expect(rows.map((row) => row.textContent)).toEqual([
|
|
271
|
+
"Auto",
|
|
272
|
+
"Opus 5.5",
|
|
273
|
+
"GPT-6.1 Sol",
|
|
274
|
+
"Gemini 3.1 Pro",
|
|
275
|
+
"Sonnet 5.5",
|
|
276
|
+
]);
|
|
277
|
+
expect(rows.map((row) => row.getAttribute("aria-keyshortcuts"))).toEqual([
|
|
278
|
+
"1",
|
|
279
|
+
"2",
|
|
280
|
+
"3",
|
|
281
|
+
"4",
|
|
282
|
+
"5",
|
|
267
283
|
]);
|
|
268
|
-
expect(rows[1]!.textContent).toBe("Opus 5.5" + "2");
|
|
269
|
-
expect(rows[1]!.textContent).not.toContain("Flagship capability");
|
|
270
|
-
// Auto's badge follows its name inside the label group; only the check
|
|
271
|
-
// and the shortcut sit at the far end.
|
|
272
|
-
const autoLabel = rows[0]!.firstElementChild!;
|
|
273
|
-
expect(autoLabel.firstElementChild?.textContent).toBe("Auto");
|
|
274
|
-
expect(autoLabel.lastElementChild?.textContent).toBe("Recommended");
|
|
275
|
-
expect(
|
|
276
|
-
rows.slice(1).some((row) => row.textContent?.includes("Recommended")),
|
|
277
|
-
).toBe(false);
|
|
278
|
-
// The current model's check takes its number's place in the one
|
|
279
|
-
// trailing column.
|
|
280
|
-
expect(
|
|
281
|
-
rows.map(
|
|
282
|
-
(row) =>
|
|
283
|
-
row.lastElementChild?.textContent ||
|
|
284
|
-
(row.lastElementChild?.querySelector("svg") ? "check" : ""),
|
|
285
|
-
),
|
|
286
|
-
).toEqual(["1", "2", "3", "4", "check"]);
|
|
287
284
|
const selected = rows.filter(
|
|
288
285
|
(row) => row.getAttribute("aria-checked") === "true",
|
|
289
286
|
);
|
|
@@ -425,12 +422,6 @@ describe("TiptapComposer model picker", () => {
|
|
|
425
422
|
const [row] = topLevelRows(menu);
|
|
426
423
|
expect(row!.textContent).toBe("my-fine-tune");
|
|
427
424
|
expect(row!.querySelector(".agent-kit-caption-copy")).toBeNull();
|
|
428
|
-
await act(async () => row!.focus());
|
|
429
|
-
const card = document.querySelector<HTMLElement>(
|
|
430
|
-
"[data-agent-composer-model-card]",
|
|
431
|
-
);
|
|
432
|
-
expect(card?.textContent).toContain("Context window");
|
|
433
|
-
expect(card?.querySelector('[role="meter"]')).toBeNull();
|
|
434
425
|
});
|
|
435
426
|
|
|
436
427
|
it("shows the connect choices and no model list with nothing connected", async () => {
|
|
@@ -505,14 +496,13 @@ describe("TiptapComposer model picker", () => {
|
|
|
505
496
|
expect(onModelChange).toHaveBeenCalledWith("gpt-6-1-sol", "builder");
|
|
506
497
|
expect(document.querySelector('[role="menu"]')).toBeNull();
|
|
507
498
|
|
|
508
|
-
// The current row shows a check instead of 1, and 1 still selects it.
|
|
509
499
|
const reopened = await openPicker();
|
|
510
|
-
expect(topLevelRows(reopened)[0]!.textContent).
|
|
500
|
+
expect(topLevelRows(reopened)[0]!.textContent).toBe("Auto");
|
|
511
501
|
await act(async () => keydown(topLevelRows(reopened)[0]!, "1"));
|
|
512
502
|
expect(onModelChange).toHaveBeenLastCalledWith("auto", "builder");
|
|
513
503
|
});
|
|
514
504
|
|
|
515
|
-
it("shows
|
|
505
|
+
it("shows nothing beside the menu when a model has focus", async () => {
|
|
516
506
|
act(() =>
|
|
517
507
|
root.render(
|
|
518
508
|
<Harness
|
|
@@ -527,45 +517,12 @@ describe("TiptapComposer model picker", () => {
|
|
|
527
517
|
'[data-agent-composer-model-row="claude-opus-5-5"]',
|
|
528
518
|
)!;
|
|
529
519
|
await act(async () => opus.focus());
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
)!;
|
|
533
|
-
expect(card.firstElementChild?.textContent).toBe("Opus 5.5");
|
|
534
|
-
const surface = card.closest<HTMLElement>('[role="tooltip"]')!;
|
|
535
|
-
expect(surface.className).toMatch(/\bp-4\b/);
|
|
536
|
-
expect(surface.className).toMatch(/\bw-72\b/);
|
|
537
|
-
const segments = Array.from(
|
|
538
|
-
card.querySelectorAll('[role="meter"]')[2]!.children,
|
|
539
|
-
).map((segment) => segment.className.match(/bg-\w+/)?.[0]);
|
|
540
|
-
expect(segments).toEqual([
|
|
541
|
-
"bg-ring",
|
|
542
|
-
"bg-ring",
|
|
543
|
-
"bg-muted",
|
|
544
|
-
"bg-muted",
|
|
545
|
-
"bg-muted",
|
|
546
|
-
]);
|
|
547
|
-
expect(card.textContent).toContain(
|
|
548
|
-
"Most capable Claude model for complex work",
|
|
549
|
-
);
|
|
550
|
-
expect(
|
|
551
|
-
Array.from(card.querySelectorAll('[role="meter"]')).map((meter) =>
|
|
552
|
-
meter.getAttribute("aria-label"),
|
|
553
|
-
),
|
|
554
|
-
).toEqual(["Cost 5 of 5", "Reasoning 5 of 5", "Speed 2 of 5"]);
|
|
555
|
-
expect(card.textContent).toContain("1M tokens");
|
|
556
|
-
expect(card.textContent).toContain("Uses Builder credits");
|
|
557
|
-
expect(opus.getAttribute("aria-describedby")).toBe(
|
|
558
|
-
card.closest('[role="tooltip"]')?.id,
|
|
559
|
-
);
|
|
520
|
+
expect(document.querySelector('[role="tooltip"]')).toBeNull();
|
|
521
|
+
expect(opus.hasAttribute("aria-describedby")).toBe(false);
|
|
560
522
|
expect(document.activeElement).toBe(opus);
|
|
561
|
-
|
|
562
|
-
await act(async () => opus.blur());
|
|
563
|
-
expect(
|
|
564
|
-
document.querySelector("[data-agent-composer-model-card]"),
|
|
565
|
-
).toBeNull();
|
|
566
523
|
});
|
|
567
524
|
|
|
568
|
-
it("picks effort from a submenu
|
|
525
|
+
it("picks effort from a submenu", async () => {
|
|
569
526
|
const onEffortChange = vi.fn();
|
|
570
527
|
act(() =>
|
|
571
528
|
root.render(
|
|
@@ -615,13 +572,7 @@ describe("TiptapComposer model picker", () => {
|
|
|
615
572
|
expect(
|
|
616
573
|
levels.filter((level) => level.getAttribute("aria-checked") === "true"),
|
|
617
574
|
).toEqual([levels[4]]);
|
|
618
|
-
|
|
619
|
-
expect(
|
|
620
|
-
levels.filter((level) => level.textContent?.includes("Recommended")),
|
|
621
|
-
).toEqual([levels[1]]);
|
|
622
|
-
expect(levels[1]!.firstElementChild?.lastElementChild?.textContent).toBe(
|
|
623
|
-
"Recommended",
|
|
624
|
-
);
|
|
575
|
+
expect(panel.textContent).not.toContain("Recommended");
|
|
625
576
|
expect(panel.textContent).not.toMatch(/usage/);
|
|
626
577
|
|
|
627
578
|
await act(async () => levels[2]!.click());
|
|
@@ -781,7 +732,7 @@ describe("TiptapComposer model picker", () => {
|
|
|
781
732
|
expect(document.querySelector('[role="menu"]')).not.toBeNull();
|
|
782
733
|
});
|
|
783
734
|
|
|
784
|
-
it("stacks More models in one menu on a narrow viewport
|
|
735
|
+
it("stacks More models in one menu on a narrow viewport", async () => {
|
|
785
736
|
Object.defineProperty(window, "innerWidth", {
|
|
786
737
|
configurable: true,
|
|
787
738
|
value: 390,
|
|
@@ -806,16 +757,6 @@ describe("TiptapComposer model picker", () => {
|
|
|
806
757
|
).toContain("Codex");
|
|
807
758
|
expect(topLevelRows(menu)).toHaveLength(BUILDER_MODELS.length);
|
|
808
759
|
expect(document.querySelectorAll('[role="menu"]')).toHaveLength(1);
|
|
809
|
-
await act(async () =>
|
|
810
|
-
menu
|
|
811
|
-
.querySelector<HTMLElement>(
|
|
812
|
-
'[data-agent-composer-model-row="claude-opus-5-5"]',
|
|
813
|
-
)!
|
|
814
|
-
.focus(),
|
|
815
|
-
);
|
|
816
|
-
expect(
|
|
817
|
-
document.querySelector("[data-agent-composer-model-card]"),
|
|
818
|
-
).toBeNull();
|
|
819
760
|
});
|
|
820
761
|
|
|
821
762
|
it("keeps the plain row list without a catalog", async () => {
|