@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
|
@@ -83,8 +83,8 @@ describe("ContextUsageRingView", () => {
|
|
|
83
83
|
)!;
|
|
84
84
|
expect(button.getAttribute("aria-label")).toBe("Context 78% used");
|
|
85
85
|
expect(button.dataset.warning).toBeUndefined();
|
|
86
|
-
expect(button.querySelector("svg")?.getAttribute("class")).
|
|
87
|
-
"
|
|
86
|
+
expect(button.querySelector("svg")?.getAttribute("class")).toBe(
|
|
87
|
+
"agentkit-context-ring",
|
|
88
88
|
);
|
|
89
89
|
});
|
|
90
90
|
|
|
@@ -95,8 +95,10 @@ describe("ContextUsageRingView", () => {
|
|
|
95
95
|
)!;
|
|
96
96
|
expect(button.dataset.warning).toBe("true");
|
|
97
97
|
expect(
|
|
98
|
-
button
|
|
99
|
-
|
|
98
|
+
button
|
|
99
|
+
.querySelector("[data-context-ring-fill]")
|
|
100
|
+
?.getAttribute("data-warning"),
|
|
101
|
+
).toBe("true");
|
|
100
102
|
});
|
|
101
103
|
|
|
102
104
|
it("shows at any usage and fills the ring by the true share", () => {
|
|
@@ -133,7 +135,7 @@ describe("ContextUsagePanelView", () => {
|
|
|
133
135
|
const view = container.querySelector("[data-context-usage-panel]")!;
|
|
134
136
|
const header = view.firstElementChild!;
|
|
135
137
|
expect(header.children[0]?.textContent).toBe("Context window");
|
|
136
|
-
expect(header.children[0]?.className).
|
|
138
|
+
expect(header.children[0]?.className).toBe("agentkit-context-usage-title");
|
|
137
139
|
expect(header.children[1]?.textContent).toBe("779.8k / 1M (78%)");
|
|
138
140
|
expect(
|
|
139
141
|
Array.from(view.querySelectorAll("[data-context-usage-segment]")).map(
|
|
@@ -202,13 +204,14 @@ describe("ContextUsagePanelView", () => {
|
|
|
202
204
|
cells: ["Conversation", "199.8k", "20.0%"],
|
|
203
205
|
},
|
|
204
206
|
{
|
|
207
|
+
// Free space takes the bar's own empty track color.
|
|
205
208
|
kind: "free-space",
|
|
206
|
-
swatch:
|
|
209
|
+
swatch: undefined,
|
|
207
210
|
cells: ["Free space", "220.2k", "22.0%"],
|
|
208
211
|
},
|
|
209
212
|
]);
|
|
210
213
|
const bar = view.querySelector<HTMLElement>("[data-context-usage-bar]")!;
|
|
211
|
-
expect(bar.className).
|
|
214
|
+
expect(bar.className).toBe("agentkit-context-usage-bar");
|
|
212
215
|
expect(
|
|
213
216
|
Array.from(bar.children).map(
|
|
214
217
|
(segment) => segment.className.match(/bg-[\w-]+/)?.[0],
|
|
@@ -220,6 +223,28 @@ describe("ContextUsagePanelView", () => {
|
|
|
220
223
|
expect(list.hidden).toBe(true);
|
|
221
224
|
});
|
|
222
225
|
|
|
226
|
+
it("colors segments and swatches with a CSS color", () => {
|
|
227
|
+
act(() =>
|
|
228
|
+
root.render(
|
|
229
|
+
panel({
|
|
230
|
+
segments: [
|
|
231
|
+
{ kind: "System", label: "System", tokens: 80_000, color: "red" },
|
|
232
|
+
],
|
|
233
|
+
}),
|
|
234
|
+
),
|
|
235
|
+
);
|
|
236
|
+
const view = container.querySelector("[data-context-usage-panel]")!;
|
|
237
|
+
expect(
|
|
238
|
+
view.querySelector<HTMLElement>('[data-context-usage-segment="System"]')
|
|
239
|
+
?.style.background,
|
|
240
|
+
).toBe("red");
|
|
241
|
+
expect(
|
|
242
|
+
view.querySelector<HTMLElement>(
|
|
243
|
+
'[data-context-usage-row="System"] [data-context-usage-swatch]',
|
|
244
|
+
)?.style.background,
|
|
245
|
+
).toBe("red");
|
|
246
|
+
});
|
|
247
|
+
|
|
223
248
|
it.each<[ContextCompactState, (view: Element) => void]>([
|
|
224
249
|
[
|
|
225
250
|
{ state: "running" },
|
|
@@ -236,7 +261,7 @@ describe("ContextUsagePanelView", () => {
|
|
|
236
261
|
(view) => {
|
|
237
262
|
const alert = view.querySelector('[role="alert"]')!;
|
|
238
263
|
expect(alert.textContent).toBe("No model credentials");
|
|
239
|
-
expect(alert.
|
|
264
|
+
expect(alert.getAttribute("data-warning")).toBe("true");
|
|
240
265
|
expect(alert.className).not.toContain("destructive");
|
|
241
266
|
},
|
|
242
267
|
],
|
|
@@ -1,348 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
TooltipProvider,
|
|
15
|
-
TooltipTrigger,
|
|
16
|
-
} from "../ui/tooltip.js";
|
|
17
|
-
import { cn } from "../utils.js";
|
|
18
|
-
import { fallbackContextTranslate, type ContextTranslate } from "./types.js";
|
|
19
|
-
|
|
20
|
-
/** At or above this share of the window the ring turns amber. */
|
|
21
|
-
export const CONTEXT_USAGE_WARNING_FRACTION = 0.8;
|
|
22
|
-
|
|
23
|
-
/** The bar's empty track, which is also the free-space swatch. */
|
|
24
|
-
const CONTEXT_USAGE_TRACK_CLASS = "bg-muted";
|
|
25
|
-
|
|
26
|
-
export interface ContextUsageSegmentView {
|
|
27
|
-
kind: string;
|
|
28
|
-
label: string;
|
|
29
|
-
tokens: number;
|
|
30
|
-
/** A class from `contextGroupColor`, shared with the X-Ray treemap. */
|
|
31
|
-
colorClass: string;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export type ContextCompactState =
|
|
35
|
-
| { state: "idle" }
|
|
36
|
-
| { state: "running" }
|
|
37
|
-
| { state: "done"; message: string }
|
|
38
|
-
| { state: "error"; message: string };
|
|
39
|
-
|
|
40
|
-
/** 779.8k, 1M, 1.05M: the window's own unit, never "1000k". */
|
|
41
|
-
export function formatContextWindowTokens(tokens: number): string {
|
|
42
|
-
const value = Math.max(0, Math.round(tokens));
|
|
43
|
-
if (value >= 1_000_000) return `${Number((value / 1_000_000).toFixed(2))}M`;
|
|
44
|
-
if (value >= 1000) return `${Number((value / 1000).toFixed(1))}k`;
|
|
45
|
-
return String(value);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export function contextUsagePercent(
|
|
49
|
-
usedTokens: number,
|
|
50
|
-
windowTokens: number,
|
|
51
|
-
): number {
|
|
52
|
-
return Math.round((usedTokens / windowTokens) * 100);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function formatWindowShare(tokens: number, windowTokens: number): string {
|
|
56
|
-
return `${((Math.max(0, tokens) / windowTokens) * 100).toFixed(1)}%`;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const CONTEXT_RING_RADIUS = 7;
|
|
60
|
-
const CONTEXT_RING_CIRCUMFERENCE = 2 * Math.PI * CONTEXT_RING_RADIUS;
|
|
61
|
-
|
|
62
|
-
/** Dash offset that fills `fraction` of the ring, clamped to [0, 1]. */
|
|
63
|
-
export function contextRingDashOffset(fraction: number): number {
|
|
64
|
-
const share = Math.min(1, Math.max(0, fraction));
|
|
65
|
-
return CONTEXT_RING_CIRCUMFERENCE * (1 - share);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// A thick track with a colored fill from 12 o'clock at the true share. Never
|
|
69
|
-
// pad a small share up to a visible minimum or round the caps: a short dark
|
|
70
|
-
// dash on a light track is what a loading spinner looks like.
|
|
71
|
-
function ContextRing({
|
|
72
|
-
fraction,
|
|
73
|
-
warning,
|
|
74
|
-
}: {
|
|
75
|
-
fraction: number;
|
|
76
|
-
warning: boolean;
|
|
77
|
-
}) {
|
|
78
|
-
return (
|
|
79
|
-
<svg
|
|
80
|
-
aria-hidden="true"
|
|
81
|
-
viewBox="0 0 20 20"
|
|
82
|
-
className="size-5 -rotate-90"
|
|
83
|
-
data-context-ring=""
|
|
84
|
-
>
|
|
85
|
-
<circle
|
|
86
|
-
cx="10"
|
|
87
|
-
cy="10"
|
|
88
|
-
r={CONTEXT_RING_RADIUS}
|
|
89
|
-
fill="none"
|
|
90
|
-
strokeWidth="3"
|
|
91
|
-
className="stroke-muted-foreground/25"
|
|
92
|
-
data-context-ring-track=""
|
|
93
|
-
/>
|
|
94
|
-
<circle
|
|
95
|
-
cx="10"
|
|
96
|
-
cy="10"
|
|
97
|
-
r={CONTEXT_RING_RADIUS}
|
|
98
|
-
fill="none"
|
|
99
|
-
strokeWidth="3"
|
|
100
|
-
strokeLinecap="butt"
|
|
101
|
-
strokeDasharray={CONTEXT_RING_CIRCUMFERENCE}
|
|
102
|
-
strokeDashoffset={contextRingDashOffset(fraction)}
|
|
103
|
-
className={cn(
|
|
104
|
-
"transition-[stroke-dashoffset] duration-300 motion-reduce:transition-none",
|
|
105
|
-
warning
|
|
106
|
-
? "stroke-[hsl(var(--agent-kit-warning))]"
|
|
107
|
-
: "stroke-blue-500 dark:stroke-blue-400",
|
|
108
|
-
)}
|
|
109
|
-
data-context-ring-fill=""
|
|
110
|
-
/>
|
|
111
|
-
</svg>
|
|
112
|
-
);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export function ContextUsageRingView({
|
|
116
|
-
usedTokens,
|
|
117
|
-
windowTokens,
|
|
118
|
-
open,
|
|
119
|
-
onOpenChange,
|
|
120
|
-
children,
|
|
121
|
-
translate = fallbackContextTranslate,
|
|
122
|
-
}: {
|
|
123
|
-
usedTokens: number;
|
|
124
|
-
windowTokens: number;
|
|
125
|
-
open: boolean;
|
|
126
|
-
onOpenChange: (open: boolean) => void;
|
|
127
|
-
children: ReactNode;
|
|
128
|
-
translate?: ContextTranslate;
|
|
129
|
-
}) {
|
|
130
|
-
const fraction = usedTokens / windowTokens;
|
|
131
|
-
const warning = fraction >= CONTEXT_USAGE_WARNING_FRACTION;
|
|
132
|
-
const label = translate("agentChat.contextRing.usedLabel", {
|
|
133
|
-
defaultValue: "Context {{percent}}% used",
|
|
134
|
-
percent: contextUsagePercent(usedTokens, windowTokens),
|
|
135
|
-
});
|
|
136
|
-
return (
|
|
137
|
-
<TooltipProvider delayDuration={200}>
|
|
138
|
-
<Popover open={open} onOpenChange={onOpenChange}>
|
|
139
|
-
<Tooltip>
|
|
140
|
-
<TooltipTrigger asChild>
|
|
141
|
-
<PopoverTrigger asChild>
|
|
142
|
-
<button
|
|
143
|
-
type="button"
|
|
144
|
-
aria-label={label}
|
|
145
|
-
data-agent-composer-slot="context-ring"
|
|
146
|
-
data-warning={warning ? "true" : undefined}
|
|
147
|
-
className={cn(
|
|
148
|
-
"flex size-6 shrink-0 items-center justify-center rounded-[var(--agentkit-composer-control-radius,var(--radius-md))] text-muted-foreground hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
149
|
-
open && "bg-accent/60",
|
|
150
|
-
)}
|
|
151
|
-
>
|
|
152
|
-
<ContextRing fraction={fraction} warning={warning} />
|
|
153
|
-
</button>
|
|
154
|
-
</PopoverTrigger>
|
|
155
|
-
</TooltipTrigger>
|
|
156
|
-
<TooltipContent>{label}</TooltipContent>
|
|
157
|
-
</Tooltip>
|
|
158
|
-
<PopoverContent
|
|
159
|
-
side="top"
|
|
160
|
-
align="end"
|
|
161
|
-
sideOffset={6}
|
|
162
|
-
collisionPadding={8}
|
|
163
|
-
data-agent-native-composer-popover="true"
|
|
164
|
-
className="w-[min(calc(100vw-2rem),22rem)] p-3"
|
|
165
|
-
>
|
|
166
|
-
{children}
|
|
167
|
-
</PopoverContent>
|
|
168
|
-
</Popover>
|
|
169
|
-
</TooltipProvider>
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
export function ContextUsagePanelView({
|
|
174
|
-
usedTokens,
|
|
175
|
-
windowTokens,
|
|
176
|
-
segments,
|
|
177
|
-
tokensUntilAutoCompact,
|
|
178
|
-
compact,
|
|
179
|
-
onCompact,
|
|
180
|
-
translate = fallbackContextTranslate,
|
|
181
|
-
}: {
|
|
182
|
-
usedTokens: number;
|
|
183
|
-
windowTokens: number;
|
|
184
|
-
segments: readonly ContextUsageSegmentView[];
|
|
185
|
-
/** Omitted when no automatic threshold applies or it could not be read. */
|
|
186
|
-
tokensUntilAutoCompact?: number | undefined;
|
|
187
|
-
compact: ContextCompactState;
|
|
188
|
-
onCompact?: (() => void) | undefined;
|
|
189
|
-
translate?: ContextTranslate;
|
|
190
|
-
}) {
|
|
191
|
-
const [expanded, setExpanded] = useState(false);
|
|
192
|
-
const breakdownId = useId();
|
|
193
|
-
const percent = contextUsagePercent(usedTokens, windowTokens);
|
|
194
|
-
const warning = usedTokens / windowTokens >= CONTEXT_USAGE_WARNING_FRACTION;
|
|
195
|
-
const barTotal = Math.max(usedTokens, windowTokens);
|
|
196
|
-
const rows = [
|
|
197
|
-
...segments,
|
|
198
|
-
{
|
|
199
|
-
kind: "free-space",
|
|
200
|
-
label: translate("agentChat.contextRing.freeSpace", {
|
|
201
|
-
defaultValue: "Free space",
|
|
202
|
-
}),
|
|
203
|
-
tokens: Math.max(0, windowTokens - usedTokens),
|
|
204
|
-
colorClass: CONTEXT_USAGE_TRACK_CLASS,
|
|
205
|
-
},
|
|
206
|
-
];
|
|
207
|
-
return (
|
|
208
|
-
<div className="flex flex-col gap-3" data-context-usage-panel="">
|
|
209
|
-
<div className="flex items-center gap-2">
|
|
210
|
-
<span className="min-w-0 flex-1 truncate text-sm text-muted-foreground">
|
|
211
|
-
{translate("agentChat.contextRing.title", {
|
|
212
|
-
defaultValue: "Context window",
|
|
213
|
-
})}
|
|
214
|
-
</span>
|
|
215
|
-
<span className="shrink-0 text-sm tabular-nums text-foreground">
|
|
216
|
-
{translate("agentChat.contextRing.usage", {
|
|
217
|
-
defaultValue: "{{used}} / {{window}} ({{percent}}%)",
|
|
218
|
-
used: formatContextWindowTokens(usedTokens),
|
|
219
|
-
window: formatContextWindowTokens(windowTokens),
|
|
220
|
-
percent,
|
|
221
|
-
})}
|
|
222
|
-
</span>
|
|
223
|
-
<Button
|
|
224
|
-
type="button"
|
|
225
|
-
variant="ghost"
|
|
226
|
-
size="icon-xs"
|
|
227
|
-
className="-me-1 shrink-0"
|
|
228
|
-
aria-label={translate("agentChat.contextRing.breakdown", {
|
|
229
|
-
defaultValue: "Breakdown",
|
|
230
|
-
})}
|
|
231
|
-
aria-expanded={expanded}
|
|
232
|
-
aria-controls={breakdownId}
|
|
233
|
-
onClick={() => setExpanded((current) => !current)}
|
|
234
|
-
>
|
|
235
|
-
{expanded ? (
|
|
236
|
-
<IconChevronDown aria-hidden="true" className="size-4" />
|
|
237
|
-
) : (
|
|
238
|
-
<IconChevronRight aria-hidden="true" className="size-4" />
|
|
239
|
-
)}
|
|
240
|
-
</Button>
|
|
241
|
-
</div>
|
|
242
|
-
<div
|
|
243
|
-
role="img"
|
|
244
|
-
aria-label={segments
|
|
245
|
-
.map(
|
|
246
|
-
(segment) =>
|
|
247
|
-
`${segment.label} ${formatContextWindowTokens(segment.tokens)}`,
|
|
248
|
-
)
|
|
249
|
-
.join(", ")}
|
|
250
|
-
className={cn(
|
|
251
|
-
"flex h-2 w-full overflow-hidden rounded-full",
|
|
252
|
-
CONTEXT_USAGE_TRACK_CLASS,
|
|
253
|
-
)}
|
|
254
|
-
data-context-usage-bar=""
|
|
255
|
-
>
|
|
256
|
-
{segments.map((segment) => (
|
|
257
|
-
<span
|
|
258
|
-
key={segment.kind}
|
|
259
|
-
data-context-usage-segment={segment.kind}
|
|
260
|
-
className={cn("h-full", segment.colorClass)}
|
|
261
|
-
style={{ width: `${(segment.tokens / barTotal) * 100}%` }}
|
|
262
|
-
/>
|
|
263
|
-
))}
|
|
264
|
-
</div>
|
|
265
|
-
<div
|
|
266
|
-
id={breakdownId}
|
|
267
|
-
hidden={!expanded}
|
|
268
|
-
className="-my-1 max-h-48 overflow-y-auto"
|
|
269
|
-
data-context-usage-breakdown=""
|
|
270
|
-
>
|
|
271
|
-
<table className="w-full table-fixed text-sm">
|
|
272
|
-
<tbody>
|
|
273
|
-
{rows.map((row) => (
|
|
274
|
-
<tr key={row.kind} data-context-usage-row={row.kind}>
|
|
275
|
-
<td className="w-4 py-0.5 align-middle">
|
|
276
|
-
<span
|
|
277
|
-
aria-hidden="true"
|
|
278
|
-
data-context-usage-swatch=""
|
|
279
|
-
className={cn("block size-2 rounded-[2px]", row.colorClass)}
|
|
280
|
-
/>
|
|
281
|
-
</td>
|
|
282
|
-
<td className="truncate py-0.5 text-foreground">{row.label}</td>
|
|
283
|
-
<td className="w-20 py-0.5 ps-3 text-end tabular-nums text-muted-foreground">
|
|
284
|
-
{formatContextWindowTokens(row.tokens)}
|
|
285
|
-
</td>
|
|
286
|
-
<td className="w-16 py-0.5 ps-3 text-end tabular-nums text-foreground">
|
|
287
|
-
{formatWindowShare(row.tokens, windowTokens)}
|
|
288
|
-
</td>
|
|
289
|
-
</tr>
|
|
290
|
-
))}
|
|
291
|
-
</tbody>
|
|
292
|
-
</table>
|
|
293
|
-
</div>
|
|
294
|
-
{tokensUntilAutoCompact !== undefined ? (
|
|
295
|
-
<p
|
|
296
|
-
className={cn(
|
|
297
|
-
"agent-kit-caption-copy",
|
|
298
|
-
warning ? "agent-kit-tone-warning" : "text-muted-foreground",
|
|
299
|
-
)}
|
|
300
|
-
>
|
|
301
|
-
{translate("agentChat.contextRing.untilAutoCompact", {
|
|
302
|
-
defaultValue: "{{tokens}} until auto-compact",
|
|
303
|
-
tokens: formatContextWindowTokens(tokensUntilAutoCompact),
|
|
304
|
-
})}
|
|
305
|
-
</p>
|
|
306
|
-
) : null}
|
|
307
|
-
{compact.state === "done" ? (
|
|
308
|
-
<p
|
|
309
|
-
role="status"
|
|
310
|
-
className="agent-kit-caption-copy text-muted-foreground"
|
|
311
|
-
>
|
|
312
|
-
{compact.message}
|
|
313
|
-
</p>
|
|
314
|
-
) : null}
|
|
315
|
-
{compact.state === "error" ? (
|
|
316
|
-
<p
|
|
317
|
-
role="alert"
|
|
318
|
-
className="flex items-start gap-1.5 agent-kit-caption-copy agent-kit-tone-warning"
|
|
319
|
-
>
|
|
320
|
-
<IconAlertTriangle
|
|
321
|
-
aria-hidden="true"
|
|
322
|
-
className="mt-px size-4 shrink-0"
|
|
323
|
-
/>
|
|
324
|
-
<span className="min-w-0">{compact.message}</span>
|
|
325
|
-
</p>
|
|
326
|
-
) : null}
|
|
327
|
-
{onCompact ? (
|
|
328
|
-
<div className="flex justify-end">
|
|
329
|
-
<Button
|
|
330
|
-
type="button"
|
|
331
|
-
variant="outline"
|
|
332
|
-
size="xs"
|
|
333
|
-
disabled={compact.state === "running"}
|
|
334
|
-
aria-busy={compact.state === "running" || undefined}
|
|
335
|
-
onClick={onCompact}
|
|
336
|
-
>
|
|
337
|
-
{compact.state === "running" ? (
|
|
338
|
-
<Spinner className="size-3" />
|
|
339
|
-
) : null}
|
|
340
|
-
{translate("agentChat.contextRing.compactNow", {
|
|
341
|
-
defaultValue: "Compact now",
|
|
342
|
-
})}
|
|
343
|
-
</Button>
|
|
344
|
-
</div>
|
|
345
|
-
) : null}
|
|
346
|
-
</div>
|
|
347
|
-
);
|
|
348
|
-
}
|
|
1
|
+
// These names stay for existing `@agent-native/toolkit/context-ui` imports.
|
|
2
|
+
export {
|
|
3
|
+
CONTEXT_USAGE_WARNING_FRACTION,
|
|
4
|
+
ContextUsagePanel,
|
|
5
|
+
ContextUsagePanel as ContextUsagePanelView,
|
|
6
|
+
ContextUsageRing,
|
|
7
|
+
ContextUsageRing as ContextUsageRingView,
|
|
8
|
+
contextRingDashOffset,
|
|
9
|
+
contextUsagePercent,
|
|
10
|
+
formatContextWindowTokens,
|
|
11
|
+
type ContextCompactState,
|
|
12
|
+
type ContextUsageSegmentView,
|
|
13
|
+
} from "../app/agentkit/react/context-usage.js";
|
package/src/context-ui/index.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export { ContextMeterView } from "./ContextMeter.js";
|
|
2
2
|
export {
|
|
3
3
|
CONTEXT_USAGE_WARNING_FRACTION,
|
|
4
|
+
ContextUsagePanel,
|
|
4
5
|
ContextUsagePanelView,
|
|
6
|
+
ContextUsageRing,
|
|
5
7
|
ContextUsageRingView,
|
|
6
8
|
contextUsagePercent,
|
|
7
9
|
formatContextWindowTokens,
|
|
@@ -14,7 +16,11 @@ export {
|
|
|
14
16
|
} from "./ContextSegmentRow.js";
|
|
15
17
|
export { ContextTreemapView } from "./ContextTreemap.js";
|
|
16
18
|
export { ContextXRayPanelView, contextGroupLabel } from "./ContextXRayPanel.js";
|
|
17
|
-
export {
|
|
19
|
+
export {
|
|
20
|
+
contextGroupColor,
|
|
21
|
+
contextGroupFill,
|
|
22
|
+
formatContextTokens,
|
|
23
|
+
} from "./format.js";
|
|
18
24
|
export type {
|
|
19
25
|
ContextManifestViewData,
|
|
20
26
|
ContextSegmentStatus,
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { ComposerModelDescription, ComposerTranslate } from "./runtime-adapters.js";
|
|
2
|
-
export declare function RecommendedBadge({ t }: {
|
|
3
|
-
t: ComposerTranslate;
|
|
4
|
-
}): import("react").JSX.Element;
|
|
5
|
-
export declare function localizedModelDescription(t: ComposerTranslate, description: ComposerModelDescription | undefined): string | undefined;
|
|
6
|
-
export declare function modelBillingLabel(t: ComposerTranslate, description: ComposerModelDescription | undefined): string | undefined;
|
|
7
|
-
/** Whether the hover card has anything to say beyond the row's own name. */
|
|
8
|
-
export declare function hasModelDetails(description: ComposerModelDescription | undefined): description is ComposerModelDescription;
|
|
9
|
-
export declare function ModelRatingMeter({ label, value, t, }: {
|
|
10
|
-
label: string;
|
|
11
|
-
value: number;
|
|
12
|
-
t: ComposerTranslate;
|
|
13
|
-
}): import("react").JSX.Element;
|
|
14
|
-
export declare function ModelDetailsCard({ name, description, t, formatNumber, }: {
|
|
15
|
-
name: string;
|
|
16
|
-
description: ComposerModelDescription;
|
|
17
|
-
t: ComposerTranslate;
|
|
18
|
-
formatNumber: (value: number, options?: Intl.NumberFormatOptions) => string;
|
|
19
|
-
}): import("react").JSX.Element;
|
|
20
|
-
//# sourceMappingURL=ModelPickerParts.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModelPickerParts.d.ts","sourceRoot":"","sources":["../../src/composer/ModelPickerParts.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE;IAAE,CAAC,EAAE,iBAAiB,CAAA;CAAE,+BAY/D;AAED,wBAAgB,yBAAyB,CACvC,CAAC,EAAE,iBAAiB,EACpB,WAAW,EAAE,wBAAwB,GAAG,SAAS,GAChD,MAAM,GAAG,SAAS,CAOpB;AAED,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,iBAAiB,EACpB,WAAW,EAAE,wBAAwB,GAAG,SAAS,GAChD,MAAM,GAAG,SAAS,CAmBpB;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAC7B,WAAW,EAAE,wBAAwB,GAAG,SAAS,GAChD,WAAW,IAAI,wBAAwB,CAQzC;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,KAAK,EACL,CAAC,GACF,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,iBAAiB,CAAC;CACtB,+BA6BA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,WAAW,EACX,CAAC,EACD,YAAY,GACb,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,wBAAwB,CAAC;IACtC,CAAC,EAAE,iBAAiB,CAAC;IACrB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,KAAK,MAAM,CAAC;CAC7E,+BAiEA"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Badge } from "../ui/badge.js";
|
|
3
|
-
import { Separator } from "../ui/separator.js";
|
|
4
|
-
import { cn } from "../utils.js";
|
|
5
|
-
export function RecommendedBadge({ t }) {
|
|
6
|
-
return (_jsx(Badge, { variant: "outline", size: "sm", className: "shrink-0 text-muted-foreground", children: t("agentChat.composer.effortDefaultBadge", {
|
|
7
|
-
defaultValue: "Recommended",
|
|
8
|
-
}) }));
|
|
9
|
-
}
|
|
10
|
-
export function localizedModelDescription(t, description) {
|
|
11
|
-
if (!description?.description)
|
|
12
|
-
return undefined;
|
|
13
|
-
return description.catalogId
|
|
14
|
-
? t(`agentChat.composer.modelDescription.${description.catalogId}`, {
|
|
15
|
-
defaultValue: description.description,
|
|
16
|
-
})
|
|
17
|
-
: description.description;
|
|
18
|
-
}
|
|
19
|
-
export function modelBillingLabel(t, description) {
|
|
20
|
-
const billing = description?.billing;
|
|
21
|
-
if (!billing)
|
|
22
|
-
return undefined;
|
|
23
|
-
switch (billing.kind) {
|
|
24
|
-
case "builder-credits":
|
|
25
|
-
return t("agentChat.composer.billingBuilderCredits", {
|
|
26
|
-
defaultValue: "Uses Builder credits",
|
|
27
|
-
});
|
|
28
|
-
case "provider-key":
|
|
29
|
-
return t("agentChat.composer.billingProviderKey", {
|
|
30
|
-
defaultValue: "Billed to your {{provider}} key",
|
|
31
|
-
provider: billing.provider,
|
|
32
|
-
});
|
|
33
|
-
case "subscription":
|
|
34
|
-
return t("agentChat.composer.billingSubscription", {
|
|
35
|
-
defaultValue: "Uses your {{plan}} plan",
|
|
36
|
-
plan: billing.plan,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/** Whether the hover card has anything to say beyond the row's own name. */
|
|
41
|
-
export function hasModelDetails(description) {
|
|
42
|
-
return Boolean(description &&
|
|
43
|
-
(description.description ||
|
|
44
|
-
description.ratings ||
|
|
45
|
-
description.contextWindow !== undefined ||
|
|
46
|
-
description.billing));
|
|
47
|
-
}
|
|
48
|
-
const RATING_SEGMENTS = [1, 2, 3, 4, 5];
|
|
49
|
-
export function ModelRatingMeter({ label, value, t, }) {
|
|
50
|
-
return (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-sm text-muted-foreground", children: label }), _jsx("span", { role: "meter", "aria-valuemin": 1, "aria-valuemax": 5, "aria-valuenow": value, "aria-label": t("agentChat.composer.modelRatingAria", {
|
|
51
|
-
defaultValue: "{{label}} {{value}} of 5",
|
|
52
|
-
label,
|
|
53
|
-
value,
|
|
54
|
-
}), className: "flex items-center justify-end gap-1", children: RATING_SEGMENTS.map((segment) => (_jsx("span", { "aria-hidden": "true", className: cn("h-1.5 w-5 rounded-full", segment <= value ? "bg-ring" : "bg-muted") }, segment))) })] }));
|
|
55
|
-
}
|
|
56
|
-
export function ModelDetailsCard({ name, description, t, formatNumber, }) {
|
|
57
|
-
const summary = localizedModelDescription(t, description);
|
|
58
|
-
const billing = modelBillingLabel(t, description);
|
|
59
|
-
const ratings = description.ratings;
|
|
60
|
-
const contextWindow = description.contextWindow;
|
|
61
|
-
return (_jsxs("div", { "data-agent-composer-model-card": "", children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: name }), summary ? (_jsx("p", { className: "mt-1 text-sm text-muted-foreground", children: summary })) : null, ratings ? (_jsxs(_Fragment, { children: [_jsx(Separator, { className: "my-3" }), _jsxs("div", { className: "grid grid-cols-[1fr_auto] items-center gap-x-4 gap-y-2.5", children: [_jsx(ModelRatingMeter, { t: t, label: t("agentChat.composer.modelCost", {
|
|
62
|
-
defaultValue: "Cost",
|
|
63
|
-
}), value: ratings.cost }), _jsx(ModelRatingMeter, { t: t, label: t("agentChat.composer.modelReasoning", {
|
|
64
|
-
defaultValue: "Reasoning",
|
|
65
|
-
}), value: ratings.reasoning }), _jsx(ModelRatingMeter, { t: t, label: t("agentChat.composer.modelSpeed", {
|
|
66
|
-
defaultValue: "Speed",
|
|
67
|
-
}), value: ratings.speed })] })] })) : null, contextWindow !== undefined ? (_jsxs(_Fragment, { children: [_jsx(Separator, { className: "my-3" }), _jsxs("div", { className: "flex items-center justify-between gap-4 text-sm", children: [_jsx("span", { className: "text-muted-foreground", children: t("agentChat.composer.contextWindow", {
|
|
68
|
-
defaultValue: "Context window",
|
|
69
|
-
}) }), _jsx("span", { className: "text-foreground tabular-nums", children: t("agentChat.composer.tokenCount", {
|
|
70
|
-
defaultValue: "{{count}} tokens",
|
|
71
|
-
count: formatNumber(contextWindow, {
|
|
72
|
-
notation: "compact",
|
|
73
|
-
maximumFractionDigits: 2,
|
|
74
|
-
}),
|
|
75
|
-
}) })] })] })) : null, billing ? (_jsx("p", { className: "mt-2 text-xs text-muted-foreground", children: billing })) : null] }));
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=ModelPickerParts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModelPickerParts.js","sourceRoot":"","sources":["../../src/composer/ModelPickerParts.tsx"],"names":[],"mappings":"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"}
|