From 672a75086e8cd10c16aa642c1a9ced4f993050c7 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Mon, 12 Jan 2026 22:56:31 -0800 Subject: [PATCH 01/30] agent mode client and types --- src/rovo-dev/client/rovoDevApiClient.ts | 34 ++++++++++++++++++- .../client/rovoDevApiClientInterfaces.ts | 25 ++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/src/rovo-dev/client/rovoDevApiClient.ts b/src/rovo-dev/client/rovoDevApiClient.ts index b389f2585..b2e0f79fe 100644 --- a/src/rovo-dev/client/rovoDevApiClient.ts +++ b/src/rovo-dev/client/rovoDevApiClient.ts @@ -1,7 +1,12 @@ import { + AgentMode, + RovoDevAvailableModesResponse, RovoDevCancelResponse, RovoDevChatRequest, + RovoDevGetAgentModeResponse, RovoDevHealthcheckResponse, + RovoDevSetAgentModeRequest, + RovoDevSetAgentModeResponse, RovoDevStatusAPIResponse, ToolPermissionChoice, } from './rovoDevApiClientInterfaces'; @@ -41,7 +46,8 @@ export class RovoDevApiClient { private async fetchApi(restApi: string, method: 'GET'): Promise; private async fetchApi(restApi: string, method: 'POST', body?: BodyInit | null): Promise; - private async fetchApi(restApi: string, method: 'GET' | 'POST', body?: BodyInit | null): Promise { + private async fetchApi(restApi: string, method: 'PUT', body?: BodyInit | null): Promise; + private async fetchApi(restApi: string, method: 'GET' | 'POST' | 'PUT', body?: BodyInit | null): Promise { const headers: Record = { accept: 'text/event-stream', 'Content-Type': 'application/json', @@ -202,4 +208,30 @@ export class RovoDevApiClient { await this.fetchApi('/accept-mcp-terms', 'POST', JSON.stringify(message)); } + + /** Invokes the GET `/v3/agent-mode` API. + * @returns {Promise} An object representing the current agent mode. + */ + public async getAgentMode(): Promise { + const response = await this.fetchApi('/v3/agent-mode', 'GET'); + return await response.json(); + } + + /** Invokes the PUT `/v3/agent-mode` API. + * @param {AgentMode} mode The agent mode to set ('ask', 'default', or 'plan'). + * @returns {Promise} An object representing the API response. + */ + public async setAgentMode(mode: AgentMode): Promise { + const request: RovoDevSetAgentModeRequest = { mode }; + const response = await this.fetchApi('/v3/agent-mode', 'PUT', JSON.stringify(request)); + return await response.json(); + } + + /** Invokes the GET `/v3/available-modes` API. + * @returns {Promise} An object representing all available agent modes. + */ + public async getAvailableModes(): Promise { + const response = await this.fetchApi('/v3/available-modes', 'GET'); + return await response.json(); + } } diff --git a/src/rovo-dev/client/rovoDevApiClientInterfaces.ts b/src/rovo-dev/client/rovoDevApiClientInterfaces.ts index f86da3d54..8db0560fc 100644 --- a/src/rovo-dev/client/rovoDevApiClientInterfaces.ts +++ b/src/rovo-dev/client/rovoDevApiClientInterfaces.ts @@ -78,3 +78,28 @@ export interface RovoDevStatusAPIResponse { } export type ToolPermissionChoice = 'allow' | 'deny'; + +export type AgentMode = 'ask' | 'default' | 'plan'; + +export interface RovoDevGetAgentModeResponse { + mode: AgentMode; + message: string; +} + +export interface RovoDevSetAgentModeRequest { + mode: AgentMode; +} + +export interface RovoDevSetAgentModeResponse { + mode: AgentMode; + message: string; +} + +export interface RovoDevModeInfo { + mode: string; + description: string; +} + +export interface RovoDevAvailableModesResponse { + modes: RovoDevModeInfo[]; +} From 07c980b69d97f8fb099aa60bdf094aa51233f787 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Tue, 13 Jan 2026 19:22:47 -0800 Subject: [PATCH 02/30] feat: agent mode handler --- src/rovo-dev/rovoDevChatProvider.ts | 23 +++++++++++++++++++++++ src/rovo-dev/rovoDevWebviewProvider.ts | 4 ++++ src/rovo-dev/ui/rovoDevViewMessages.tsx | 2 ++ 3 files changed, 29 insertions(+) diff --git a/src/rovo-dev/rovoDevChatProvider.ts b/src/rovo-dev/rovoDevChatProvider.ts index 06ca0efda..020bd68f6 100644 --- a/src/rovo-dev/rovoDevChatProvider.ts +++ b/src/rovo-dev/rovoDevChatProvider.ts @@ -3,6 +3,7 @@ import { v4 } from 'uuid'; import { ExtensionApi } from './api/extensionApi'; import { + AgentMode, RovoDevApiClient, RovoDevChatRequest, RovoDevChatRequestContext, @@ -71,6 +72,14 @@ export class RovoDevChatProvider { } } + private _agentMode: AgentMode = 'default'; + public get agentMode() { + return this._agentMode; + } + public set agentMode(value: AgentMode) { + this._agentMode = value; + } + public fullContextMode = false; private _currentPromptId: string = ''; @@ -662,6 +671,20 @@ export class RovoDevChatProvider { } } + public async setAgentMode(mode: AgentMode) { + if (!this._rovoDevApiClient) { + return; + } + + try { + await this._rovoDevApiClient.setAgentMode(mode); + this._agentMode = mode; + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + throw new Error(`Failed to set agent mode: ${errorMessage}`); + } + } + private async executeStreamingApiWithErrorHandling( sourceApi: StreamingApi, func: (client: RovoDevApiClient) => Promise, diff --git a/src/rovo-dev/rovoDevWebviewProvider.ts b/src/rovo-dev/rovoDevWebviewProvider.ts index 527218343..65d37e68a 100644 --- a/src/rovo-dev/rovoDevWebviewProvider.ts +++ b/src/rovo-dev/rovoDevWebviewProvider.ts @@ -507,6 +507,10 @@ export class RovoDevWebviewProvider extends Disposable implements WebviewViewPro this._chatProvider.fullContextMode = e.value; break; + case RovoDevViewResponseType.AskModeToggled: + await this._chatProvider.setAgentMode(e.value ? 'ask' : 'default'); + break; + case RovoDevViewResponseType.OpenExternalLink: await env.openExternal(Uri.parse(e.href)); break; diff --git a/src/rovo-dev/ui/rovoDevViewMessages.tsx b/src/rovo-dev/ui/rovoDevViewMessages.tsx index 3c2186134..d54eabd6b 100644 --- a/src/rovo-dev/ui/rovoDevViewMessages.tsx +++ b/src/rovo-dev/ui/rovoDevViewMessages.tsx @@ -34,6 +34,7 @@ export const enum RovoDevViewResponseType { ToolPermissionChoiceSubmit = 'toolPermissionChoiceSubmit', YoloModeToggled = 'yoloModeToggled', FullContextModeToggled = 'fullContextModeToggled', + AskModeToggled = 'askModeToggled', FilterModifiedFilesByContent = 'filterModifiedFilesByContent', OpenExternalLink = 'openExternalLink', OpenRovoDevLogFile = 'openRovoDevLogFile', @@ -88,6 +89,7 @@ export type RovoDevViewResponse = > | ReducerAction | ReducerAction + | ReducerAction | ReducerAction | ReducerAction | ReducerAction From 6b8a61c4d40d7f121a4487fb98a960c9bd0deaa3 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Tue, 13 Jan 2026 19:29:57 -0800 Subject: [PATCH 03/30] init local agent mode state --- src/rovo-dev/rovoDevChatProvider.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/rovo-dev/rovoDevChatProvider.ts b/src/rovo-dev/rovoDevChatProvider.ts index 020bd68f6..85dfa3db0 100644 --- a/src/rovo-dev/rovoDevChatProvider.ts +++ b/src/rovo-dev/rovoDevChatProvider.ts @@ -108,6 +108,15 @@ export class RovoDevChatProvider { public async setReady(rovoDevApiClient: RovoDevApiClient) { this._rovoDevApiClient = rovoDevApiClient; + // Initialize agent mode from API + try { + const agentModeResp = await this._rovoDevApiClient!.getAgentMode(); + this.agentMode = agentModeResp.mode; + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + RovoDevLogger.error(new Error(`Failed to initialize agent mode: ${errorMessage}`)); + } + if (this._pendingPrompt) { const pendingPrompt = this._pendingPrompt; this._pendingPrompt = undefined; From 437480aca11acc4356dc96fb305a99f74e288a30 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Tue, 13 Jan 2026 19:34:52 -0800 Subject: [PATCH 04/30] prompt box UI --- src/rovo-dev/ui/RovoDev.css | 6 ++--- .../prompt-input/PromptInput.test.tsx | 2 ++ .../prompt-box/prompt-input/PromptInput.tsx | 24 ++++++++++++++++--- .../PromptSettingsPopup.test.tsx | 9 +++++++ .../PromptSettingsPopup.tsx | 17 ++++++++++++- 5 files changed, 51 insertions(+), 7 deletions(-) diff --git a/src/rovo-dev/ui/RovoDev.css b/src/rovo-dev/ui/RovoDev.css index 7c56a838f..27ff31660 100644 --- a/src/rovo-dev/ui/RovoDev.css +++ b/src/rovo-dev/ui/RovoDev.css @@ -882,7 +882,7 @@ body { padding-top: 4px; } -.deep-plan-indicator { +.mode-indicator { display: flex; align-items: center; gap: 4px; @@ -993,10 +993,10 @@ body { border: 2px solid var(--vscode-focusBorder); } -.vscode-high-contrast .deep-plan-indicator { +.vscode-high-contrast .mode-indicator { border: 2px solid var(--vscode-contrastBorder); } -.vscode-high-contrast .deep-plan-indicator:hover { +.vscode-high-contrast .mode-indicator:hover { border: 2px solid var(--vscode-focusBorder); } diff --git a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx index 2f15d9033..a538b43d4 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx @@ -48,9 +48,11 @@ describe('PromptInputBox', () => { isDeepPlanEnabled: false, isYoloModeEnabled: false, isFullContextEnabled: false, + isAskModeEnabled: false, onDeepPlanToggled: jest.fn(), onYoloModeToggled: jest.fn(), onFullContextToggled: jest.fn(), + onAskModeToggled: jest.fn(), onSend: jest.fn(), onCancel: jest.fn(), sendButtonDisabled: false, diff --git a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx index 6546a84ad..4af8aba79 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx @@ -4,6 +4,7 @@ import SendIcon from '@atlaskit/icon/core/arrow-up'; import CrossIcon from '@atlaskit/icon/core/cross'; import LockUnlockedIcon from '@atlaskit/icon/core/lock-unlocked'; import VideoStopOverlayIcon from '@atlaskit/icon/core/video-stop-overlay'; +import AiGenerativeRemoveSilenceIcon from '@atlaskit/icon-lab/core/ai-generative-remove-silence'; import TelescopeIcon from '@atlaskit/icon-lab/core/telescope'; import { token } from '@atlaskit/tokens'; import Tooltip from '@atlaskit/tooltip'; @@ -34,9 +35,11 @@ interface PromptInputBoxProps { isDeepPlanEnabled: boolean; isYoloModeEnabled: boolean; isFullContextEnabled: boolean; + isAskModeEnabled: boolean; onDeepPlanToggled?: () => void; onYoloModeToggled?: () => void; onFullContextToggled?: () => void; + onAskModeToggled?: () => void; onSend: (text: string) => boolean; onCancel: () => void; onAddContext: () => void; @@ -107,9 +110,11 @@ export const PromptInputBox: React.FC = ({ isDeepPlanEnabled, isYoloModeEnabled, isFullContextEnabled, + isAskModeEnabled, onDeepPlanToggled, onYoloModeToggled, onFullContextToggled, + onAskModeToggled, onSend, onCancel, onAddContext, @@ -217,6 +222,9 @@ export const PromptInputBox: React.FC = ({ [currentState], ); + console.log('isAskModeEnabled', isAskModeEnabled, 'onAskModeToggled', onAskModeToggled); + console.log('isFullContextEnabled', isFullContextEnabled, 'onFullContextToggled', onFullContextToggled); + return ( <>
@@ -246,15 +254,17 @@ export const PromptInputBox: React.FC = ({ onDeepPlanToggled={onDeepPlanToggled} onYoloModeToggled={onYoloModeToggled} onFullContextToggled={onFullContextToggled} + onAskModeToggled={onAskModeToggled} isDeepPlanEnabled={isDeepPlanEnabled} isYoloModeEnabled={isYoloModeEnabled} isFullContextEnabled={isFullContextEnabled} + isAskModeEnabled={isAskModeEnabled} onClose={() => {}} /> {isDeepPlanEnabled && onDeepPlanToggled && ( -
onDeepPlanToggled()}> +
onDeepPlanToggled()}>
@@ -262,7 +272,7 @@ export const PromptInputBox: React.FC = ({ )} {isFullContextEnabled && onFullContextToggled && ( -
onFullContextToggled()}> +
onFullContextToggled()}>
@@ -270,12 +280,20 @@ export const PromptInputBox: React.FC = ({ )}{' '} {isYoloModeEnabled && onYoloModeToggled && ( -
onYoloModeToggled()}> +
onYoloModeToggled()}>
)}{' '} + {isAskModeEnabled && onAskModeToggled && ( + +
onAskModeToggled()}> + + +
+
+ )}
{!showCancelButton && ( diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx index 3a7f757e0..229f03cb5 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx @@ -7,6 +7,7 @@ describe('PromptSettingsPopup', () => { const mockOnDeepPlanToggled = jest.fn(); const mockOnYoloModeToggled = jest.fn(); const mockOnFullContextToggled = jest.fn(); + const mockOnAskModeToggled = jest.fn(); const mockOnClose = jest.fn(); beforeEach(() => { @@ -19,9 +20,11 @@ describe('PromptSettingsPopup', () => { onDeepPlanToggled={mockOnDeepPlanToggled} onYoloModeToggled={mockOnYoloModeToggled} onFullContextToggled={mockOnFullContextToggled} + onAskModeToggled={mockOnAskModeToggled} isDeepPlanEnabled={false} isYoloModeEnabled={false} isFullContextEnabled={false} + isAskModeEnabled={false} onClose={mockOnClose} />, ); @@ -36,9 +39,11 @@ describe('PromptSettingsPopup', () => { onDeepPlanToggled={mockOnDeepPlanToggled} onYoloModeToggled={mockOnYoloModeToggled} onFullContextToggled={mockOnFullContextToggled} + onAskModeToggled={mockOnAskModeToggled} isDeepPlanEnabled={false} isYoloModeEnabled={false} isFullContextEnabled={false} + isAskModeEnabled={false} onClose={mockOnClose} />, ); @@ -58,9 +63,11 @@ describe('PromptSettingsPopup', () => { onDeepPlanToggled={mockOnDeepPlanToggled} onYoloModeToggled={mockOnYoloModeToggled} onFullContextToggled={mockOnFullContextToggled} + onAskModeToggled={mockOnAskModeToggled} isDeepPlanEnabled={false} isYoloModeEnabled={false} isFullContextEnabled={false} + isAskModeEnabled={false} onClose={mockOnClose} />, ); @@ -80,9 +87,11 @@ describe('PromptSettingsPopup', () => { onDeepPlanToggled={mockOnDeepPlanToggled} onYoloModeToggled={mockOnYoloModeToggled} onFullContextToggled={mockOnFullContextToggled} + onAskModeToggled={mockOnAskModeToggled} isDeepPlanEnabled={false} isYoloModeEnabled={false} isFullContextEnabled={false} + isAskModeEnabled={false} onClose={mockOnClose} />, ); diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx index 6e1466607..9a5002d22 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx @@ -2,6 +2,7 @@ import AiGenerativeTextSummaryIcon from '@atlaskit/icon/core/ai-generative-text- import CrossIcon from '@atlaskit/icon/core/cross'; import CustomizeIcon from '@atlaskit/icon/core/customize'; import LockUnlockedIcon from '@atlaskit/icon/core/lock-unlocked'; +import AiGenerativeRemoveSilenceIcon from '@atlaskit/icon-lab/core/ai-generative-remove-silence'; import TelescopeIcon from '@atlaskit/icon-lab/core/telescope'; import Popup, { PopupComponentProps } from '@atlaskit/popup'; import Toggle from '@atlaskit/toggle'; @@ -11,9 +12,11 @@ interface PromptSettingsPopupProps { onDeepPlanToggled?: () => void; onYoloModeToggled?: () => void; onFullContextToggled?: () => void; + onAskModeToggled?: () => void; isDeepPlanEnabled: boolean; isYoloModeEnabled: boolean; isFullContextEnabled: boolean; + isAskModeEnabled: boolean; onClose: () => void; } @@ -41,14 +44,16 @@ const PromptSettingsPopup: React.FC = ({ onDeepPlanToggled, onYoloModeToggled, onFullContextToggled, + onAskModeToggled, isDeepPlanEnabled, isYoloModeEnabled, isFullContextEnabled, + isAskModeEnabled, onClose, }) => { const [isOpen, setIsOpen] = React.useState(false); - if (!onDeepPlanToggled && !onYoloModeToggled) { + if (!onDeepPlanToggled && !onYoloModeToggled && !onAskModeToggled) { return false; } @@ -112,6 +117,16 @@ const PromptSettingsPopup: React.FC = ({ toggled={isYoloModeEnabled} /> )} + {onAskModeToggled && ( + } + label="Ask mode" + description="Ask questions without editing code" + action={onAskModeToggled} + actionType="toggle" + toggled={isAskModeEnabled} + /> + )}
)} placement="top-start" From 252a9f754c9bcf47da757e305a8c66e4f7702061 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Tue, 13 Jan 2026 19:35:27 -0800 Subject: [PATCH 05/30] add ask mode ui to webview --- src/rovo-dev/rovoDevWebviewProviderMessages.ts | 1 + src/rovo-dev/ui/rovoDevView.tsx | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/rovo-dev/rovoDevWebviewProviderMessages.ts b/src/rovo-dev/rovoDevWebviewProviderMessages.ts index 4530408c4..685b19b06 100644 --- a/src/rovo-dev/rovoDevWebviewProviderMessages.ts +++ b/src/rovo-dev/rovoDevWebviewProviderMessages.ts @@ -55,6 +55,7 @@ export interface RovoDevWebviewState { isDeepPlanToggled: boolean; isYoloModeToggled: boolean; isFullContextModeToggled: boolean; + isAskModeToggled: boolean; isAtlassianUser: boolean; promptContextCollection: RovoDevContextItem[]; } diff --git a/src/rovo-dev/ui/rovoDevView.tsx b/src/rovo-dev/ui/rovoDevView.tsx index e7ee30ce9..1e09e8653 100644 --- a/src/rovo-dev/ui/rovoDevView.tsx +++ b/src/rovo-dev/ui/rovoDevView.tsx @@ -56,6 +56,7 @@ const RovoDevView: React.FC = () => { const [isDeepPlanToggled, setIsDeepPlanToggled] = useState(false); const [isYoloModeToggled, setIsYoloModeToggled] = useState(RovodevStaticConfig.isBBY); // Yolo mode is default in Boysenberry const [isFullContextModeToggled, setIsFullContextModeToggled] = useState(false); + const [isAskModeToggled, setIsAskModeToggled] = useState(false); const [workspacePath, setWorkspacePath] = useState(''); const [homeDir, setHomeDir] = useState(''); const [history, setHistory] = useState([]); @@ -467,6 +468,9 @@ const RovoDevView: React.FC = () => { if (event.state.isFullContextModeToggled !== undefined) { setIsFullContextModeToggled(event.state.isFullContextModeToggled); } + if (event.state.isAskModeToggled !== undefined) { + setIsAskModeToggled(event.state.isAskModeToggled); + } if (event.state.isAtlassianUser !== undefined) { setIsAtlassianUser(event.state.isAtlassianUser); } @@ -526,6 +530,7 @@ const RovoDevView: React.FC = () => { isDeepPlanToggled, isYoloModeToggled, isFullContextModeToggled, + isAskModeToggled, isAtlassianUser, promptContextCollection, }); @@ -535,6 +540,7 @@ const RovoDevView: React.FC = () => { isDeepPlanToggled, isYoloModeToggled, isFullContextModeToggled, + isAskModeToggled, isAtlassianUser, promptContextCollection, setState, @@ -890,6 +896,8 @@ const RovoDevView: React.FC = () => { [setIsFullContextModeToggled], ); + const onAskModeToggled = useCallback(() => setIsAskModeToggled((prev) => !prev), [setIsAskModeToggled]); + const handleFeedbackTrigger = useCallback( (isPositive: boolean) => { setFeedbackType(isPositive ? 'like' : 'dislike'); @@ -930,6 +938,13 @@ const RovoDevView: React.FC = () => { }); }, [postMessage, isFullContextModeToggled]); + React.useEffect(() => { + postMessage({ + type: RovoDevViewResponseType.AskModeToggled, + value: isAskModeToggled, + }); + }, [postMessage, isAskModeToggled]); + const hidePromptBox = currentState.state === 'Disabled' || (currentState.state === 'Initializing' && currentState.subState === 'MCPAcceptance'); @@ -1065,6 +1080,7 @@ const RovoDevView: React.FC = () => { isDeepPlanEnabled={isDeepPlanToggled} isYoloModeEnabled={isYoloModeToggled} isFullContextEnabled={isFullContextModeToggled} + isAskModeEnabled={isAskModeToggled} onDeepPlanToggled={() => setIsDeepPlanToggled((prev) => !prev)} onYoloModeToggled={ RovodevStaticConfig.isBBY ? undefined : () => onYoloModeToggled() @@ -1074,6 +1090,7 @@ const RovoDevView: React.FC = () => { ? () => onFullContextModeToggled() : undefined } + onAskModeToggled={() => onAskModeToggled()} onSend={sendPrompt} onCancel={cancelResponse} onAddContext={onAddContext} From 6a780c59b49949a88d05be4fe8c8d6cb152fffc9 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Tue, 13 Jan 2026 19:43:35 -0800 Subject: [PATCH 06/30] fix: set ask mode state --- src/rovo-dev/ui/rovoDevView.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/rovo-dev/ui/rovoDevView.tsx b/src/rovo-dev/ui/rovoDevView.tsx index 1e09e8653..79b91e80b 100644 --- a/src/rovo-dev/ui/rovoDevView.tsx +++ b/src/rovo-dev/ui/rovoDevView.tsx @@ -471,6 +471,9 @@ const RovoDevView: React.FC = () => { if (event.state.isAskModeToggled !== undefined) { setIsAskModeToggled(event.state.isAskModeToggled); } + if (event.state.isAskModeToggled !== undefined) { + setIsAskModeToggled(event.state.isAskModeToggled); + } if (event.state.isAtlassianUser !== undefined) { setIsAtlassianUser(event.state.isAtlassianUser); } From a0ae89eb255b0b138179143921dff22693e5deed Mon Sep 17 00:00:00 2001 From: jwang19 Date: Thu, 15 Jan 2026 10:03:16 -0800 Subject: [PATCH 07/30] remove debug console --- src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx index 4af8aba79..298252cc5 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx @@ -222,9 +222,6 @@ export const PromptInputBox: React.FC = ({ [currentState], ); - console.log('isAskModeEnabled', isAskModeEnabled, 'onAskModeToggled', onAskModeToggled); - console.log('isFullContextEnabled', isFullContextEnabled, 'onFullContextToggled', onFullContextToggled); - return ( <>
From 8c77cd535a4ebf5668a3f255dbfd25bc571d6606 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Thu, 15 Jan 2026 10:04:09 -0800 Subject: [PATCH 08/30] remove duplicate state setter --- src/rovo-dev/ui/rovoDevView.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/rovo-dev/ui/rovoDevView.tsx b/src/rovo-dev/ui/rovoDevView.tsx index 79b91e80b..1e09e8653 100644 --- a/src/rovo-dev/ui/rovoDevView.tsx +++ b/src/rovo-dev/ui/rovoDevView.tsx @@ -471,9 +471,6 @@ const RovoDevView: React.FC = () => { if (event.state.isAskModeToggled !== undefined) { setIsAskModeToggled(event.state.isAskModeToggled); } - if (event.state.isAskModeToggled !== undefined) { - setIsAskModeToggled(event.state.isAskModeToggled); - } if (event.state.isAtlassianUser !== undefined) { setIsAtlassianUser(event.state.isAtlassianUser); } From a282c38118a0be8584837ad5bbd0e9e2fdf4af48 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Thu, 15 Jan 2026 10:18:42 -0800 Subject: [PATCH 09/30] ut --- src/rovo-dev/client/rovoDevApiClient.test.ts | 250 +++++++++++++++++++ 1 file changed, 250 insertions(+) diff --git a/src/rovo-dev/client/rovoDevApiClient.test.ts b/src/rovo-dev/client/rovoDevApiClient.test.ts index 6018efc05..2e006b674 100644 --- a/src/rovo-dev/client/rovoDevApiClient.test.ts +++ b/src/rovo-dev/client/rovoDevApiClient.test.ts @@ -1618,4 +1618,254 @@ describe('RovoDevApiClient', () => { ); }); }); + + describe('getAgentMode method', () => { + it('should return current agent mode successfully', async () => { + const mockAgentModeResponse = { + mode: 'ask' as const, + message: 'Agent mode is set to ask', + }; + const mockResponse = { + status: 200, + json: jest.fn().mockResolvedValue(mockAgentModeResponse), + headers: mockStandardResponseHeaders(), + } as unknown as Response; + + mockFetch.mockResolvedValue(mockResponse); + + const result = await client.getAgentMode(); + + expect(mockFetch).toHaveBeenCalledWith('http://localhost:8080/v3/agent-mode', { + method: 'GET', + headers: { + accept: 'text/event-stream', + 'Content-Type': 'application/json', + Authorization: 'Bearer sessionToken', + }, + body: undefined, + }); + expect(result).toEqual(mockAgentModeResponse); + expect(result.mode).toBe('ask'); + }); + + it('should return default mode', async () => { + const mockAgentModeResponse = { + mode: 'default' as const, + message: 'Agent mode is set to default', + }; + const mockResponse = { + status: 200, + json: jest.fn().mockResolvedValue(mockAgentModeResponse), + headers: mockStandardResponseHeaders(), + } as unknown as Response; + + mockFetch.mockResolvedValue(mockResponse); + + const result = await client.getAgentMode(); + + expect(result.mode).toBe('default'); + expect(result.message).toBe('Agent mode is set to default'); + }); + + it('should return plan mode', async () => { + const mockAgentModeResponse = { + mode: 'plan' as const, + message: 'Agent mode is set to plan', + }; + const mockResponse = { + status: 200, + json: jest.fn().mockResolvedValue(mockAgentModeResponse), + headers: mockStandardResponseHeaders(), + } as unknown as Response; + + mockFetch.mockResolvedValue(mockResponse); + + const result = await client.getAgentMode(); + + expect(result.mode).toBe('plan'); + }); + + it('should throw error when API call fails', async () => { + const mockResponse = { + status: 500, + statusText: 'Internal Server Error', + headers: mockStandardResponseHeaders(), + } as Response; + + mockFetch.mockResolvedValue(mockResponse); + + await expect(client.getAgentMode()).rejects.toThrow("Failed to fetch '/v3/agent-mode API: HTTP 500"); + }); + + it('should throw error when API returns 404', async () => { + const mockResponse = { + status: 404, + statusText: 'Not Found', + headers: mockStandardResponseHeaders(), + } as Response; + + mockFetch.mockResolvedValue(mockResponse); + + await expect(client.getAgentMode()).rejects.toThrow("Failed to fetch '/v3/agent-mode API: HTTP 404"); + }); + }); + + describe('setAgentMode method', () => { + it('should set agent mode to ask successfully', async () => { + const mockSetAgentModeResponse = { + mode: 'ask' as const, + message: 'Agent mode set to ask', + }; + const mockResponse = { + status: 200, + json: jest.fn().mockResolvedValue(mockSetAgentModeResponse), + headers: mockStandardResponseHeaders(), + } as unknown as Response; + + mockFetch.mockResolvedValue(mockResponse); + + const result = await client.setAgentMode('ask'); + + expect(mockFetch).toHaveBeenCalledWith('http://localhost:8080/v3/agent-mode', { + method: 'PUT', + headers: { + accept: 'text/event-stream', + 'Content-Type': 'application/json', + Authorization: 'Bearer sessionToken', + }, + body: JSON.stringify({ mode: 'ask' }), + }); + expect(result).toEqual(mockSetAgentModeResponse); + expect(result.mode).toBe('ask'); + }); + + it('should set agent mode to default successfully', async () => { + const mockSetAgentModeResponse = { + mode: 'default' as const, + message: 'Agent mode set to default', + }; + const mockResponse = { + status: 200, + json: jest.fn().mockResolvedValue(mockSetAgentModeResponse), + headers: mockStandardResponseHeaders(), + } as unknown as Response; + + mockFetch.mockResolvedValue(mockResponse); + + const result = await client.setAgentMode('default'); + + expect(mockFetch).toHaveBeenCalledWith('http://localhost:8080/v3/agent-mode', { + method: 'PUT', + headers: { + accept: 'text/event-stream', + 'Content-Type': 'application/json', + Authorization: 'Bearer sessionToken', + }, + body: JSON.stringify({ mode: 'default' }), + }); + expect(result.mode).toBe('default'); + }); + + it('should set agent mode to plan successfully', async () => { + const mockSetAgentModeResponse = { + mode: 'plan' as const, + message: 'Agent mode set to plan', + }; + const mockResponse = { + status: 200, + json: jest.fn().mockResolvedValue(mockSetAgentModeResponse), + headers: mockStandardResponseHeaders(), + } as unknown as Response; + + mockFetch.mockResolvedValue(mockResponse); + + const result = await client.setAgentMode('plan'); + + expect(mockFetch).toHaveBeenCalledWith('http://localhost:8080/v3/agent-mode', { + method: 'PUT', + headers: { + accept: 'text/event-stream', + 'Content-Type': 'application/json', + Authorization: 'Bearer sessionToken', + }, + body: JSON.stringify({ mode: 'plan' }), + }); + expect(result.mode).toBe('plan'); + }); + + it('should throw error when API call fails', async () => { + const mockResponse = { + status: 500, + statusText: 'Internal Server Error', + headers: mockStandardResponseHeaders(), + } as Response; + + mockFetch.mockResolvedValue(mockResponse); + + await expect(client.setAgentMode('ask')).rejects.toThrow("Failed to fetch '/v3/agent-mode API: HTTP 500"); + }); + + it('should throw error when API returns 400 (invalid mode)', async () => { + const mockResponse = { + status: 400, + statusText: 'Bad Request', + headers: mockStandardResponseHeaders(), + } as Response; + + mockFetch.mockResolvedValue(mockResponse); + + await expect(client.setAgentMode('invalid' as any)).rejects.toThrow( + "Failed to fetch '/v3/agent-mode API: HTTP 400", + ); + }); + }); + + describe('getAvailableModes method', () => { + it('should return list of available modes successfully', async () => { + const mockAvailableModesResponse = { + modes: [ + { mode: 'ask', description: 'Ask questions without editing code' }, + { mode: 'default', description: 'Default agent mode' }, + { mode: 'plan', description: 'Generate plans before executing' }, + ], + }; + const mockResponse = { + status: 200, + json: jest.fn().mockResolvedValue(mockAvailableModesResponse), + headers: mockStandardResponseHeaders(), + } as unknown as Response; + + mockFetch.mockResolvedValue(mockResponse); + + const result = await client.getAvailableModes(); + + expect(mockFetch).toHaveBeenCalledWith('http://localhost:8080/v3/available-modes', { + method: 'GET', + headers: { + accept: 'text/event-stream', + 'Content-Type': 'application/json', + Authorization: 'Bearer sessionToken', + }, + body: undefined, + }); + expect(result).toEqual(mockAvailableModesResponse); + expect(result.modes).toHaveLength(3); + expect(result.modes[0].mode).toBe('ask'); + expect(result.modes[0].description).toBe('Ask questions without editing code'); + }); + + it('should throw error when API call fails', async () => { + const mockResponse = { + status: 500, + statusText: 'Internal Server Error', + headers: mockStandardResponseHeaders(), + } as Response; + + mockFetch.mockResolvedValue(mockResponse); + + await expect(client.getAvailableModes()).rejects.toThrow( + "Failed to fetch '/v3/available-modes API: HTTP 500", + ); + }); + }); }); From c5785b2c4a0fcdabd90c4b33cfe6166bb5f0a541 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Thu, 15 Jan 2026 10:27:48 -0800 Subject: [PATCH 10/30] comment --- src/rovo-dev/client/rovoDevApiClientInterfaces.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rovo-dev/client/rovoDevApiClientInterfaces.ts b/src/rovo-dev/client/rovoDevApiClientInterfaces.ts index 8db0560fc..4aed34569 100644 --- a/src/rovo-dev/client/rovoDevApiClientInterfaces.ts +++ b/src/rovo-dev/client/rovoDevApiClientInterfaces.ts @@ -96,7 +96,7 @@ export interface RovoDevSetAgentModeResponse { } export interface RovoDevModeInfo { - mode: string; + mode: string; // Use string to allow new modes to be added on Rovo Dev side description: string; } From 5ebfe9c279b24c86bfd6e54a3d59c105051cdaa5 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Thu, 15 Jan 2026 10:34:19 -0800 Subject: [PATCH 11/30] fix: tool handler check --- .../prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx index 9a5002d22..0bb61db6f 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx @@ -53,8 +53,8 @@ const PromptSettingsPopup: React.FC = ({ }) => { const [isOpen, setIsOpen] = React.useState(false); - if (!onDeepPlanToggled && !onYoloModeToggled && !onAskModeToggled) { - return false; + if (!onDeepPlanToggled && !onYoloModeToggled && !onFullContextToggled && !onAskModeToggled) { + return null; } return ( From 969327b4e3fcafd4ce510afc8896a139b04bbd7e Mon Sep 17 00:00:00 2001 From: jwang19 Date: Thu, 15 Jan 2026 11:28:36 -0800 Subject: [PATCH 12/30] add slash style cmd for ask mode and fix the copy --- src/rovo-dev/ui/prompt-box/prompt-input/utils.tsx | 6 ++++++ .../prompt-settings-popup/PromptSettingsPopup.tsx | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/rovo-dev/ui/prompt-box/prompt-input/utils.tsx b/src/rovo-dev/ui/prompt-box/prompt-input/utils.tsx index 8a4fff2bb..da84a647a 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-input/utils.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-input/utils.tsx @@ -142,6 +142,12 @@ export const SLASH_COMMANDS: SlashCommand[] = [ description: 'Toggle tool confirmations', command: { title: 'Yolo Mode', id: 'rovo-dev.toggleYoloMode', tooltip: 'Toggle tool confirmations' }, }, + { + label: '/ask', + insertText: '/ask', + description: 'Ask a question in read-only mode (no file changes or terminal access)', + command: { title: 'Ask Mode', id: 'rovo-dev.toggleAskMode', tooltip: 'Toggle Ask mode' }, + }, ]; export const createSlashCommandProvider = (commands: SlashCommand[]): monaco.languages.CompletionItemProvider => { diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx index 0bb61db6f..12228bcaf 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx @@ -121,7 +121,7 @@ const PromptSettingsPopup: React.FC = ({ } label="Ask mode" - description="Ask questions without editing code" + description="Ask a question in read-only mode (no file changes or terminal access)." action={onAskModeToggled} actionType="toggle" toggled={isAskModeEnabled} From d7bd7cee0d6bd768a15283c3da414c1a26b4d9b8 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Fri, 16 Jan 2026 13:19:39 -0800 Subject: [PATCH 13/30] fix: support key down event --- src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx index 0c37fd46f..3218733d7 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx @@ -307,7 +307,14 @@ export const PromptInputBox: React.FC = ({ )}{' '} {isAskModeEnabled && onAskModeToggled && ( -
onAskModeToggled()}> +
onAskModeToggled()} + onKeyDown={onKeyDownHandler(onAskModeToggled)} + tabIndex={0} + role="button" + aria-label="Disable Ask mode" + >
From aafc42c9400df425703b8ca67f7b14fdff624ceb Mon Sep 17 00:00:00 2001 From: jwang19 Date: Tue, 20 Jan 2026 21:25:22 -0800 Subject: [PATCH 14/30] add agent related message handlers --- src/rovo-dev/rovoDevChatProvider.ts | 28 +++++++++++++++++++ src/rovo-dev/rovoDevWebviewProvider.ts | 24 ++++++++++++++-- .../rovoDevWebviewProviderMessages.ts | 11 ++++++-- 3 files changed, 59 insertions(+), 4 deletions(-) diff --git a/src/rovo-dev/rovoDevChatProvider.ts b/src/rovo-dev/rovoDevChatProvider.ts index 0ed06a633..aa71079f6 100644 --- a/src/rovo-dev/rovoDevChatProvider.ts +++ b/src/rovo-dev/rovoDevChatProvider.ts @@ -707,6 +707,34 @@ export class RovoDevChatProvider { } } + public async getAvailableAgentModes() { + if (!this._rovoDevApiClient) { + return; + } + + try { + const response = await this._rovoDevApiClient.getAvailableModes(); + return response.modes; + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + throw new Error(`Failed to get available agent modes: ${errorMessage}`); + } + } + + public async getCurrentAgentMode() { + if (!this._rovoDevApiClient) { + return; + } + + try { + const response = await this._rovoDevApiClient.getAgentMode(); + return response.mode; + } catch (error) { + const errorMessage = error instanceof Error ? error.message : String(error); + throw new Error(`Failed to get current agent mode: ${errorMessage}`); + } + } + private async executeStreamingApiWithErrorHandling( sourceApi: StreamingApi, func: (client: RovoDevApiClient) => Promise, diff --git a/src/rovo-dev/rovoDevWebviewProvider.ts b/src/rovo-dev/rovoDevWebviewProvider.ts index 085aac587..e3923ff26 100644 --- a/src/rovo-dev/rovoDevWebviewProvider.ts +++ b/src/rovo-dev/rovoDevWebviewProvider.ts @@ -516,8 +516,28 @@ export class RovoDevWebviewProvider extends Disposable implements WebviewViewPro this._chatProvider.fullContextMode = e.value; break; - case RovoDevViewResponseType.AskModeToggled: - await this._chatProvider.setAgentMode(e.value ? 'ask' : 'default'); + case RovoDevViewResponseType.GetAvailableAgentModes: + const modes = await this._chatProvider.getAvailableAgentModes(); + await webview.postMessage({ + type: RovoDevProviderMessageType.GetAvailableAgentModesComplete, + modes: modes || [], + }); + break; + + case RovoDevViewResponseType.GetCurrentAgentMode: + const mode = await this._chatProvider.getCurrentAgentMode(); + await webview.postMessage({ + type: RovoDevProviderMessageType.GetCurrentAgentModeComplete, + mode: mode || 'default', + }); + break; + + case RovoDevViewResponseType.SetAgentMode: + await this._chatProvider.setAgentMode(e.mode); + await webview.postMessage({ + type: RovoDevProviderMessageType.SetAgentModeComplete, + mode: e.mode, + }); break; case RovoDevViewResponseType.OpenExternalLink: diff --git a/src/rovo-dev/rovoDevWebviewProviderMessages.ts b/src/rovo-dev/rovoDevWebviewProviderMessages.ts index 4ca9719b1..7087428c0 100644 --- a/src/rovo-dev/rovoDevWebviewProviderMessages.ts +++ b/src/rovo-dev/rovoDevWebviewProviderMessages.ts @@ -1,6 +1,8 @@ import { DetailedSiteInfo, MinimalIssue } from './api/extensionApi'; import { + AgentMode, EntitlementCheckRovoDevHealthcheckResponse, + RovoDevModeInfo, RovoDevRetryPromptResponse, RovoDevTextResponse, RovoDevToolCallResponse, @@ -40,6 +42,9 @@ export const enum RovoDevProviderMessageType { RestoreState = 'restoreState', RovoDevAuthValidating = 'rovoDevAuthValidating', RovoDevAuthValidationComplete = 'rovoDevAuthValidationComplete', + GetAvailableAgentModesComplete = 'getAvailableAgentModesComplete', + GetCurrentAgentModeComplete = 'getCurrentAgentModeComplete', + SetAgentModeComplete = 'setAgentModeComplete', } export type RovoDevDisabledReason = DisabledState['subState']; @@ -62,7 +67,6 @@ export interface RovoDevWebviewState { isDeepPlanToggled: boolean; isYoloModeToggled: boolean; isFullContextModeToggled: boolean; - isAskModeToggled: boolean; isAtlassianUser: boolean; promptContextCollection: RovoDevContextItem[]; } @@ -125,4 +129,7 @@ export type RovoDevProviderMessage = | ReducerAction | ReducerAction | ReducerAction - | ReducerAction; + | ReducerAction + | ReducerAction + | ReducerAction + | ReducerAction; From ea331730287b20a2303993688991c60c304353e7 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Tue, 20 Jan 2026 21:26:02 -0800 Subject: [PATCH 15/30] use agent hook --- src/rovo-dev/hooks/useAgentModes.ts | 96 +++++++++++++++++++++++++ src/rovo-dev/ui/messagingApi.tsx | 11 ++- src/rovo-dev/ui/rovoDevViewMessages.tsx | 9 ++- 3 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 src/rovo-dev/hooks/useAgentModes.ts diff --git a/src/rovo-dev/hooks/useAgentModes.ts b/src/rovo-dev/hooks/useAgentModes.ts new file mode 100644 index 000000000..69baaea54 --- /dev/null +++ b/src/rovo-dev/hooks/useAgentModes.ts @@ -0,0 +1,96 @@ +import { useCallback, useEffect, useState } from 'react'; +import { AgentMode, RovoDevModeInfo } from 'src/rovo-dev/client/rovoDevApiClientInterfaces'; + +import { RovoDevProviderMessage, RovoDevProviderMessageType } from '../rovoDevWebviewProviderMessages'; +import { useMessagingApi } from '../ui/messagingApi'; +import { RovoDevViewResponse, RovoDevViewResponseType } from '../ui/rovoDevViewMessages'; + +interface UseAgentModesOptions { + enabled?: boolean; +} + +export function useAgentModes({ enabled = true }: UseAgentModesOptions = {}) { + const { postMessagePromise } = useMessagingApi( + () => {}, + ); + + const [currentMode, setCurrentMode] = useState(null); + const [availableModes, setAvailableModes] = useState([]); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); + + const getCurrentMode = useCallback(async () => { + setLoading(true); + setError(null); + + try { + const response = await postMessagePromise( + { type: RovoDevViewResponseType.GetCurrentAgentMode }, + RovoDevProviderMessageType.GetCurrentAgentModeComplete, + 5000, + ); + setCurrentMode(response.mode); + } catch (err) { + setError(err instanceof Error ? err.message : String(err)); + } finally { + setLoading(false); + } + }, [postMessagePromise]); + + const getAvailableModes = useCallback(async () => { + setLoading(true); + setError(null); + + try { + const response = await postMessagePromise( + { type: RovoDevViewResponseType.GetAvailableAgentModes }, + RovoDevProviderMessageType.GetAvailableAgentModesComplete, + 5000, + ); + setAvailableModes(response.modes); + } catch (err) { + setError(err instanceof Error ? err.message : String(err)); + } finally { + setLoading(false); + } + }, [postMessagePromise]); + + const setAgentMode = useCallback( + async (mode: AgentMode) => { + setLoading(true); + setError(null); + + try { + const response = await postMessagePromise( + { type: RovoDevViewResponseType.SetAgentMode, mode }, + RovoDevProviderMessageType.SetAgentModeComplete, + 5000, + ); + + setCurrentMode(response.mode); + } catch (err) { + setError(err instanceof Error ? err.message : String(err)); + } finally { + setLoading(false); + } + }, + [postMessagePromise], + ); + + useEffect(() => { + if (enabled) { + getCurrentMode(); + getAvailableModes(); + } + }, [enabled, getCurrentMode, getAvailableModes]); + + return { + currentMode, + availableModes, + loading, + error, + getCurrentMode, + getAvailableModes, + setAgentMode, + }; +} diff --git a/src/rovo-dev/ui/messagingApi.tsx b/src/rovo-dev/ui/messagingApi.tsx index 502a314b7..3fb95d35d 100644 --- a/src/rovo-dev/ui/messagingApi.tsx +++ b/src/rovo-dev/ui/messagingApi.tsx @@ -14,12 +14,21 @@ interface VsCodeApi { } declare function acquireVsCodeApi(): VsCodeApi; +let vscodeApiInstance: VsCodeApi | undefined; + +function getVsCodeApi(): VsCodeApi { + if (!vscodeApiInstance) { + vscodeApiInstance = acquireVsCodeApi(); + } + return vscodeApiInstance; +} + // This is taken from react/atlascode/messagingApi.ts, with some legacy part removed (pmf, errors) // TODO: refactor this whole implementation to make sure we're not dragging legacy code export function useMessagingApi, R extends ReducerAction>( onMessageHandler: ReceiveMessageFunc, ) { - const apiRef = useMemo(acquireVsCodeApi, [acquireVsCodeApi]); + const apiRef = useMemo(() => getVsCodeApi(), []); const postMessage = useCallback( (action: A): void => { diff --git a/src/rovo-dev/ui/rovoDevViewMessages.tsx b/src/rovo-dev/ui/rovoDevViewMessages.tsx index 15dbf1133..2dbbc0fe0 100644 --- a/src/rovo-dev/ui/rovoDevViewMessages.tsx +++ b/src/rovo-dev/ui/rovoDevViewMessages.tsx @@ -1,5 +1,6 @@ import { RovoDevContextItem, RovoDevPrompt, ToolPermissionDialogChoice } from 'src/rovo-dev/rovoDevTypes'; +import { AgentMode } from '../client'; import { ReducerAction } from '../messaging'; import { FeedbackType } from './feedback-form/FeedbackForm'; @@ -35,7 +36,9 @@ export const enum RovoDevViewResponseType { ToolPermissionChoiceSubmit = 'toolPermissionChoiceSubmit', YoloModeToggled = 'yoloModeToggled', FullContextModeToggled = 'fullContextModeToggled', - AskModeToggled = 'askModeToggled', + GetAvailableAgentModes = 'getAvailableAgentModes', + SetAgentMode = 'setAgentMode', + GetCurrentAgentMode = 'getCurrentAgentMode', FilterModifiedFilesByContent = 'filterModifiedFilesByContent', OpenExternalLink = 'openExternalLink', OpenRovoDevLogFile = 'openRovoDevLogFile', @@ -91,7 +94,9 @@ export type RovoDevViewResponse = > | ReducerAction | ReducerAction - | ReducerAction + | ReducerAction + | ReducerAction + | ReducerAction | ReducerAction | ReducerAction | ReducerAction From 81045e82a06caa9e22da9c2579d3003d4c6fc601 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Tue, 20 Jan 2026 21:26:58 -0800 Subject: [PATCH 16/30] refactor: separate prompt settings item component --- .../PromptSettingsItem.tsx | 40 +++++++++++++ .../PromptSettingsPopup.test.tsx | 9 --- .../PromptSettingsPopup.tsx | 58 ++----------------- 3 files changed, 45 insertions(+), 62 deletions(-) create mode 100644 src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsItem.tsx diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsItem.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsItem.tsx new file mode 100644 index 000000000..db8dd2934 --- /dev/null +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsItem.tsx @@ -0,0 +1,40 @@ +import Toggle from '@atlaskit/toggle'; +import React from 'react'; + +const PromptSettingsItem: React.FC<{ + icon: JSX.Element; + label: string; + description: string; + action?: () => void; + actionType?: 'toggle' | 'button'; + toggled?: boolean; + isInternalOnly?: boolean; +}> = ({ icon, label, description, action, actionType, toggled, isInternalOnly }) => { + return ( +
+
{icon}
+
+

+ {label} + {isInternalOnly && ( + + Internal only + + )} +

+

{description}

+
+ {action && ( +
+ {actionType === 'toggle' ? ( + action()} label={`${label} toggle`} /> + ) : ( +
+ )} +
+ ); +}; + +export default PromptSettingsItem; diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx index 229f03cb5..3a7f757e0 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx @@ -7,7 +7,6 @@ describe('PromptSettingsPopup', () => { const mockOnDeepPlanToggled = jest.fn(); const mockOnYoloModeToggled = jest.fn(); const mockOnFullContextToggled = jest.fn(); - const mockOnAskModeToggled = jest.fn(); const mockOnClose = jest.fn(); beforeEach(() => { @@ -20,11 +19,9 @@ describe('PromptSettingsPopup', () => { onDeepPlanToggled={mockOnDeepPlanToggled} onYoloModeToggled={mockOnYoloModeToggled} onFullContextToggled={mockOnFullContextToggled} - onAskModeToggled={mockOnAskModeToggled} isDeepPlanEnabled={false} isYoloModeEnabled={false} isFullContextEnabled={false} - isAskModeEnabled={false} onClose={mockOnClose} />, ); @@ -39,11 +36,9 @@ describe('PromptSettingsPopup', () => { onDeepPlanToggled={mockOnDeepPlanToggled} onYoloModeToggled={mockOnYoloModeToggled} onFullContextToggled={mockOnFullContextToggled} - onAskModeToggled={mockOnAskModeToggled} isDeepPlanEnabled={false} isYoloModeEnabled={false} isFullContextEnabled={false} - isAskModeEnabled={false} onClose={mockOnClose} />, ); @@ -63,11 +58,9 @@ describe('PromptSettingsPopup', () => { onDeepPlanToggled={mockOnDeepPlanToggled} onYoloModeToggled={mockOnYoloModeToggled} onFullContextToggled={mockOnFullContextToggled} - onAskModeToggled={mockOnAskModeToggled} isDeepPlanEnabled={false} isYoloModeEnabled={false} isFullContextEnabled={false} - isAskModeEnabled={false} onClose={mockOnClose} />, ); @@ -87,11 +80,9 @@ describe('PromptSettingsPopup', () => { onDeepPlanToggled={mockOnDeepPlanToggled} onYoloModeToggled={mockOnYoloModeToggled} onFullContextToggled={mockOnFullContextToggled} - onAskModeToggled={mockOnAskModeToggled} isDeepPlanEnabled={false} isYoloModeEnabled={false} isFullContextEnabled={false} - isAskModeEnabled={false} onClose={mockOnClose} />, ); diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx index 12228bcaf..ac2f25de4 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx @@ -2,21 +2,20 @@ import AiGenerativeTextSummaryIcon from '@atlaskit/icon/core/ai-generative-text- import CrossIcon from '@atlaskit/icon/core/cross'; import CustomizeIcon from '@atlaskit/icon/core/customize'; import LockUnlockedIcon from '@atlaskit/icon/core/lock-unlocked'; -import AiGenerativeRemoveSilenceIcon from '@atlaskit/icon-lab/core/ai-generative-remove-silence'; import TelescopeIcon from '@atlaskit/icon-lab/core/telescope'; import Popup, { PopupComponentProps } from '@atlaskit/popup'; -import Toggle from '@atlaskit/toggle'; import React from 'react'; +import AgentModeSection from './AgentModeSection'; +import PromptSettingsItem from './PromptSettingsItem'; + interface PromptSettingsPopupProps { onDeepPlanToggled?: () => void; onYoloModeToggled?: () => void; onFullContextToggled?: () => void; - onAskModeToggled?: () => void; isDeepPlanEnabled: boolean; isYoloModeEnabled: boolean; isFullContextEnabled: boolean; - isAskModeEnabled: boolean; onClose: () => void; } @@ -44,16 +43,14 @@ const PromptSettingsPopup: React.FC = ({ onDeepPlanToggled, onYoloModeToggled, onFullContextToggled, - onAskModeToggled, isDeepPlanEnabled, isYoloModeEnabled, isFullContextEnabled, - isAskModeEnabled, onClose, }) => { const [isOpen, setIsOpen] = React.useState(false); - if (!onDeepPlanToggled && !onYoloModeToggled && !onFullContextToggled && !onAskModeToggled) { + if (!onDeepPlanToggled && !onYoloModeToggled && !onFullContextToggled) { return null; } @@ -117,16 +114,7 @@ const PromptSettingsPopup: React.FC = ({ toggled={isYoloModeEnabled} /> )} - {onAskModeToggled && ( - } - label="Ask mode" - description="Ask a question in read-only mode (no file changes or terminal access)." - action={onAskModeToggled} - actionType="toggle" - toggled={isAskModeEnabled} - /> - )} +
)} placement="top-start" @@ -139,40 +127,4 @@ const PromptSettingsPopup: React.FC = ({ ); }; -const PromptSettingsItem: React.FC<{ - icon: JSX.Element; - label: string; - description: string; - action?: () => void; - actionType?: 'toggle' | 'button'; - toggled?: boolean; - isInternalOnly?: boolean; -}> = ({ icon, label, description, action, actionType, toggled, isInternalOnly }) => { - return ( -
-
{icon}
-
-

- {label} - {isInternalOnly && ( - - Internal only - - )} -

-

{description}

-
- {action && ( -
- {actionType === 'toggle' ? ( - action()} label={`${label} toggle`} /> - ) : ( -
- )} -
- ); -}; - export default PromptSettingsPopup; From 92578bbc6165b9065a16100c4474f558a6f9ef44 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Tue, 20 Jan 2026 21:27:15 -0800 Subject: [PATCH 17/30] agent mode section in menu --- .../prompt-box/prompt-input/PromptInput.tsx | 22 ---- .../AgentModeSection.tsx | 116 ++++++++++++++++++ src/rovo-dev/ui/rovoDevView.tsx | 36 +++--- 3 files changed, 134 insertions(+), 40 deletions(-) create mode 100644 src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx diff --git a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx index 3218733d7..0a078870a 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx @@ -4,7 +4,6 @@ import SendIcon from '@atlaskit/icon/core/arrow-up'; import CrossIcon from '@atlaskit/icon/core/cross'; import LockUnlockedIcon from '@atlaskit/icon/core/lock-unlocked'; import VideoStopOverlayIcon from '@atlaskit/icon/core/video-stop-overlay'; -import AiGenerativeRemoveSilenceIcon from '@atlaskit/icon-lab/core/ai-generative-remove-silence'; import TelescopeIcon from '@atlaskit/icon-lab/core/telescope'; import { token } from '@atlaskit/tokens'; import Tooltip from '@atlaskit/tooltip'; @@ -36,11 +35,9 @@ interface PromptInputBoxProps { isDeepPlanEnabled: boolean; isYoloModeEnabled: boolean; isFullContextEnabled: boolean; - isAskModeEnabled: boolean; onDeepPlanToggled?: () => void; onYoloModeToggled?: () => void; onFullContextToggled?: () => void; - onAskModeToggled?: () => void; onSend: (text: string) => boolean; onCancel: () => void; onAddContext: () => void; @@ -111,11 +108,9 @@ export const PromptInputBox: React.FC = ({ isDeepPlanEnabled, isYoloModeEnabled, isFullContextEnabled, - isAskModeEnabled, onDeepPlanToggled, onYoloModeToggled, onFullContextToggled, - onAskModeToggled, onSend, onCancel, onAddContext, @@ -252,11 +247,9 @@ export const PromptInputBox: React.FC = ({ onDeepPlanToggled={onDeepPlanToggled} onYoloModeToggled={onYoloModeToggled} onFullContextToggled={onFullContextToggled} - onAskModeToggled={onAskModeToggled} isDeepPlanEnabled={isDeepPlanEnabled} isYoloModeEnabled={isYoloModeEnabled} isFullContextEnabled={isFullContextEnabled} - isAskModeEnabled={isAskModeEnabled} onClose={() => {}} />
@@ -305,21 +298,6 @@ export const PromptInputBox: React.FC = ({
)}{' '} - {isAskModeEnabled && onAskModeToggled && ( - -
onAskModeToggled()} - onKeyDown={onKeyDownHandler(onAskModeToggled)} - tabIndex={0} - role="button" - aria-label="Disable Ask mode" - > - - -
-
- )}
{!showCancelButton && ( diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx new file mode 100644 index 000000000..f59f1574f --- /dev/null +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx @@ -0,0 +1,116 @@ +import { Radio } from '@atlaskit/radio'; +import Spinner from '@atlaskit/spinner'; +import React from 'react'; +import { AgentMode } from 'src/rovo-dev/client'; +import { useAgentModes } from 'src/rovo-dev/hooks/useAgentModes'; + +interface AgentModeSectionProps { + enabled?: boolean; +} + +// Map agent modes to icons - using similar icons as other settings +const getModeIcon = (mode: string) => { + // You'll need to import appropriate icons from @atlaskit/icon + // For now using placeholders - replace with actual Atlaskit icons + switch (mode) { + case 'default': + // Could use something like SettingsIcon or similar + return null; // Replace with actual icon + case 'plan': + // Could use AiGenerativeTextSummaryIcon or similar + return null; // Replace with actual icon + case 'ask': + // Could use QuestionCircleIcon or similar + return null; // Replace with actual icon + default: + return null; + } +}; + +// Format mode label for display +const formatModeLabel = (mode: string): string => { + switch (mode) { + case 'default': + return 'Default'; + case 'plan': + return 'Deep plan mode'; + case 'ask': + return 'Ask mode'; + default: + return mode; + } +}; + +const AgentModeSection: React.FC = ({ enabled = true }: AgentModeSectionProps) => { + const { currentMode, availableModes, loading, setAgentMode } = useAgentModes({ enabled }); + + const handleModeSelect = async (mode: AgentMode) => { + try { + await setAgentMode(mode); + } catch (err) { + console.error(err); + } + }; + + return ( +
+

+ Reasoning +

+ {loading ? ( +
+ +
+ ) : ( +
+ {availableModes.map((modeInfo) => { + const isSelected = currentMode === modeInfo.mode; + const modeIcon = getModeIcon(modeInfo.mode); + + return ( +
handleModeSelect(modeInfo.mode as AgentMode)} + style={{ cursor: 'pointer' }} + > + {modeIcon &&
{modeIcon}
} +
+

{formatModeLabel(modeInfo.mode)}

+

+ {modeInfo.description} +

+
+
+ handleModeSelect(modeInfo.mode as AgentMode)} + value={modeInfo.mode} + name="agentMode" + /> +
+
+ ); + })} +
+ )} +
+ ); +}; + +export default AgentModeSection; diff --git a/src/rovo-dev/ui/rovoDevView.tsx b/src/rovo-dev/ui/rovoDevView.tsx index 4da9c27f1..8cf64e4ba 100644 --- a/src/rovo-dev/ui/rovoDevView.tsx +++ b/src/rovo-dev/ui/rovoDevView.tsx @@ -7,7 +7,7 @@ import { highlightElement } from '@speed-highlight/core'; import { detectLanguage } from '@speed-highlight/core/detect'; import { useCallback, useState } from 'react'; import * as React from 'react'; -import { RovoDevToolReturnResponse } from 'src/rovo-dev/client'; +import { AgentMode, RovoDevModeInfo, RovoDevToolReturnResponse } from 'src/rovo-dev/client'; import { RovoDevContextItem, State, ToolPermissionDialogChoice } from 'src/rovo-dev/rovoDevTypes'; import { v4 } from 'uuid'; @@ -57,7 +57,6 @@ const RovoDevView: React.FC = () => { const [isDeepPlanToggled, setIsDeepPlanToggled] = useState(false); const [isYoloModeToggled, setIsYoloModeToggled] = useState(RovodevStaticConfig.isBBY); // Yolo mode is default in Boysenberry const [isFullContextModeToggled, setIsFullContextModeToggled] = useState(false); - const [isAskModeToggled, setIsAskModeToggled] = useState(false); const [features, setFeatures] = useState({}); const [workspacePath, setWorkspacePath] = useState(''); const [homeDir, setHomeDir] = useState(''); @@ -79,6 +78,11 @@ const RovoDevView: React.FC = () => { const [lastCompletedPromptId, setLastCompletedPromptId] = useState(undefined); const [isAtlassianUser, setIsAtlassianUser] = useState(false); const [feedbackType, setFeedbackType] = React.useState<'like' | 'dislike' | undefined>(undefined); + const [availableAgentModes, setAvailableAgentModes] = useState([]); + const [currentAgentMode, setCurrentAgentMode] = useState(null); + + console.log('availableAgentModes', availableAgentModes); + console.log('currentAgentMode', currentAgentMode); // Initialize atlaskit theme for proper token support React.useEffect(() => { @@ -478,9 +482,6 @@ const RovoDevView: React.FC = () => { if (event.state.isFullContextModeToggled !== undefined) { setIsFullContextModeToggled(event.state.isFullContextModeToggled); } - if (event.state.isAskModeToggled !== undefined) { - setIsAskModeToggled(event.state.isAskModeToggled); - } if (event.state.isAtlassianUser !== undefined) { setIsAtlassianUser(event.state.isAtlassianUser); } @@ -494,6 +495,18 @@ const RovoDevView: React.FC = () => { // These messages are handled by the login form component directly break; + case RovoDevProviderMessageType.GetAvailableAgentModesComplete: + setAvailableAgentModes(event.modes); + break; + + case RovoDevProviderMessageType.GetCurrentAgentModeComplete: + setCurrentAgentMode(event.mode); + break; + + case RovoDevProviderMessageType.SetAgentModeComplete: + setCurrentAgentMode(event.mode); + break; + default: // this is never supposed to happen since there aren't other type of messages handleAppendResponse({ @@ -545,7 +558,6 @@ const RovoDevView: React.FC = () => { isDeepPlanToggled, isYoloModeToggled, isFullContextModeToggled, - isAskModeToggled, isAtlassianUser, promptContextCollection, }); @@ -555,7 +567,6 @@ const RovoDevView: React.FC = () => { isDeepPlanToggled, isYoloModeToggled, isFullContextModeToggled, - isAskModeToggled, isAtlassianUser, promptContextCollection, setState, @@ -923,8 +934,6 @@ const RovoDevView: React.FC = () => { [setIsFullContextModeToggled], ); - const onAskModeToggled = useCallback(() => setIsAskModeToggled((prev) => !prev), [setIsAskModeToggled]); - const handleFeedbackTrigger = useCallback( (isPositive: boolean) => { setFeedbackType(isPositive ? 'like' : 'dislike'); @@ -965,13 +974,6 @@ const RovoDevView: React.FC = () => { }); }, [postMessage, isFullContextModeToggled]); - React.useEffect(() => { - postMessage({ - type: RovoDevViewResponseType.AskModeToggled, - value: isAskModeToggled, - }); - }, [postMessage, isAskModeToggled]); - const hidePromptBox = currentState.state === 'Disabled' || (currentState.state === 'Initializing' && currentState.subState === 'MCPAcceptance'); @@ -1110,7 +1112,6 @@ const RovoDevView: React.FC = () => { isDeepPlanEnabled={isDeepPlanToggled} isYoloModeEnabled={isYoloModeToggled} isFullContextEnabled={isFullContextModeToggled} - isAskModeEnabled={isAskModeToggled} onDeepPlanToggled={() => setIsDeepPlanToggled((prev) => !prev)} onYoloModeToggled={ RovodevStaticConfig.isBBY ? undefined : () => onYoloModeToggled() @@ -1120,7 +1121,6 @@ const RovoDevView: React.FC = () => { ? () => onFullContextModeToggled() : undefined } - onAskModeToggled={() => onAskModeToggled()} onSend={sendPrompt} onCancel={cancelResponse} onAddContext={onAddContext} From 12d5d53d57fb3495dcda2b59cf9f072b626024da Mon Sep 17 00:00:00 2001 From: jwang19 Date: Tue, 20 Jan 2026 22:04:07 -0800 Subject: [PATCH 18/30] hoist agent mode fetch call --- .../prompt-input/PromptInput.test.tsx | 3 + .../prompt-box/prompt-input/PromptInput.tsx | 10 ++ .../AgentModeSection.tsx | 96 +++++++++---------- .../PromptSettingsPopup.test.tsx | 13 +++ .../PromptSettingsPopup.tsx | 13 ++- src/rovo-dev/ui/rovoDevView.tsx | 29 +++++- 6 files changed, 110 insertions(+), 54 deletions(-) diff --git a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx index a538b43d4..20a1c5c75 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx @@ -49,6 +49,9 @@ describe('PromptInputBox', () => { isYoloModeEnabled: false, isFullContextEnabled: false, isAskModeEnabled: false, + availableAgentModes: [], + currentAgentMode: null, + onAgentModeChange: jest.fn(), onDeepPlanToggled: jest.fn(), onYoloModeToggled: jest.fn(), onFullContextToggled: jest.fn(), diff --git a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx index 0a078870a..dbfdc437d 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx @@ -10,6 +10,7 @@ import Tooltip from '@atlaskit/tooltip'; import * as monaco from 'monaco-editor'; import React from 'react'; import { RovodevStaticConfig } from 'src/rovo-dev/api/rovodevStaticConfig'; +import { AgentMode, RovoDevModeInfo } from 'src/rovo-dev/client'; import { DisabledState, State } from 'src/rovo-dev/rovoDevTypes'; import { rovoDevTextareaStyles } from '../../rovoDevViewStyles'; @@ -35,6 +36,9 @@ interface PromptInputBoxProps { isDeepPlanEnabled: boolean; isYoloModeEnabled: boolean; isFullContextEnabled: boolean; + availableAgentModes: RovoDevModeInfo[]; + currentAgentMode: AgentMode | null; + onAgentModeChange: (mode: AgentMode) => void; onDeepPlanToggled?: () => void; onYoloModeToggled?: () => void; onFullContextToggled?: () => void; @@ -108,6 +112,9 @@ export const PromptInputBox: React.FC = ({ isDeepPlanEnabled, isYoloModeEnabled, isFullContextEnabled, + availableAgentModes, + currentAgentMode, + onAgentModeChange, onDeepPlanToggled, onYoloModeToggled, onFullContextToggled, @@ -250,6 +257,9 @@ export const PromptInputBox: React.FC = ({ isDeepPlanEnabled={isDeepPlanEnabled} isYoloModeEnabled={isYoloModeEnabled} isFullContextEnabled={isFullContextEnabled} + availableAgentModes={availableAgentModes} + currentAgentMode={currentAgentMode} + onAgentModeChange={onAgentModeChange} onClose={() => {}} /> diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx index f59f1574f..ceeac6396 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx @@ -1,11 +1,11 @@ import { Radio } from '@atlaskit/radio'; -import Spinner from '@atlaskit/spinner'; import React from 'react'; -import { AgentMode } from 'src/rovo-dev/client'; -import { useAgentModes } from 'src/rovo-dev/hooks/useAgentModes'; +import { AgentMode, RovoDevModeInfo } from 'src/rovo-dev/client'; interface AgentModeSectionProps { - enabled?: boolean; + currentMode: AgentMode | null; + availableModes: RovoDevModeInfo[]; + setAgentMode: (mode: AgentMode) => void; } // Map agent modes to icons - using similar icons as other settings @@ -41,12 +41,14 @@ const formatModeLabel = (mode: string): string => { } }; -const AgentModeSection: React.FC = ({ enabled = true }: AgentModeSectionProps) => { - const { currentMode, availableModes, loading, setAgentMode } = useAgentModes({ enabled }); - - const handleModeSelect = async (mode: AgentMode) => { +const AgentModeSection: React.FC = ({ + currentMode, + availableModes, + setAgentMode, +}: AgentModeSectionProps) => { + const handleModeSelect = (mode: AgentMode) => { try { - await setAgentMode(mode); + setAgentMode(mode); } catch (err) { console.error(err); } @@ -66,49 +68,43 @@ const AgentModeSection: React.FC = ({ enabled = true }: A > Reasoning - {loading ? ( -
- -
- ) : ( -
- {availableModes.map((modeInfo) => { - const isSelected = currentMode === modeInfo.mode; - const modeIcon = getModeIcon(modeInfo.mode); +
+ {availableModes.map((modeInfo) => { + const isSelected = currentMode === modeInfo.mode; + const modeIcon = getModeIcon(modeInfo.mode); - return ( -
handleModeSelect(modeInfo.mode as AgentMode)} - style={{ cursor: 'pointer' }} - > - {modeIcon &&
{modeIcon}
} -
-

{formatModeLabel(modeInfo.mode)}

-

- {modeInfo.description} -

-
-
- handleModeSelect(modeInfo.mode as AgentMode)} - value={modeInfo.mode} - name="agentMode" - /> -
+ return ( +
handleModeSelect(modeInfo.mode as AgentMode)} + style={{ cursor: 'pointer' }} + > + {modeIcon &&
{modeIcon}
} +
+

{formatModeLabel(modeInfo.mode)}

+

+ {modeInfo.description} +

+
+
+ handleModeSelect(modeInfo.mode as AgentMode)} + value={modeInfo.mode} + name="agentMode" + />
- ); - })} -
- )} +
+ ); + })} +
); }; diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx index 3a7f757e0..96956ce0f 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx @@ -7,6 +7,7 @@ describe('PromptSettingsPopup', () => { const mockOnDeepPlanToggled = jest.fn(); const mockOnYoloModeToggled = jest.fn(); const mockOnFullContextToggled = jest.fn(); + const mockOnAgentModeChange = jest.fn(); const mockOnClose = jest.fn(); beforeEach(() => { @@ -22,6 +23,9 @@ describe('PromptSettingsPopup', () => { isDeepPlanEnabled={false} isYoloModeEnabled={false} isFullContextEnabled={false} + availableAgentModes={[]} + currentAgentMode={null} + onAgentModeChange={mockOnAgentModeChange} onClose={mockOnClose} />, ); @@ -39,6 +43,9 @@ describe('PromptSettingsPopup', () => { isDeepPlanEnabled={false} isYoloModeEnabled={false} isFullContextEnabled={false} + availableAgentModes={[]} + currentAgentMode={null} + onAgentModeChange={mockOnAgentModeChange} onClose={mockOnClose} />, ); @@ -61,6 +68,9 @@ describe('PromptSettingsPopup', () => { isDeepPlanEnabled={false} isYoloModeEnabled={false} isFullContextEnabled={false} + availableAgentModes={[]} + currentAgentMode={null} + onAgentModeChange={mockOnAgentModeChange} onClose={mockOnClose} />, ); @@ -83,6 +93,9 @@ describe('PromptSettingsPopup', () => { isDeepPlanEnabled={false} isYoloModeEnabled={false} isFullContextEnabled={false} + availableAgentModes={[]} + currentAgentMode={null} + onAgentModeChange={mockOnAgentModeChange} onClose={mockOnClose} />, ); diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx index ac2f25de4..4e3618eba 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx @@ -5,6 +5,7 @@ import LockUnlockedIcon from '@atlaskit/icon/core/lock-unlocked'; import TelescopeIcon from '@atlaskit/icon-lab/core/telescope'; import Popup, { PopupComponentProps } from '@atlaskit/popup'; import React from 'react'; +import { AgentMode, RovoDevModeInfo } from 'src/rovo-dev/client'; import AgentModeSection from './AgentModeSection'; import PromptSettingsItem from './PromptSettingsItem'; @@ -16,6 +17,9 @@ interface PromptSettingsPopupProps { isDeepPlanEnabled: boolean; isYoloModeEnabled: boolean; isFullContextEnabled: boolean; + availableAgentModes: RovoDevModeInfo[]; + currentAgentMode: AgentMode | null; + onAgentModeChange: (mode: AgentMode) => void; onClose: () => void; } @@ -46,6 +50,9 @@ const PromptSettingsPopup: React.FC = ({ isDeepPlanEnabled, isYoloModeEnabled, isFullContextEnabled, + availableAgentModes, + currentAgentMode, + onAgentModeChange, onClose, }) => { const [isOpen, setIsOpen] = React.useState(false); @@ -114,7 +121,11 @@ const PromptSettingsPopup: React.FC = ({ toggled={isYoloModeEnabled} /> )} - +
)} placement="top-start" diff --git a/src/rovo-dev/ui/rovoDevView.tsx b/src/rovo-dev/ui/rovoDevView.tsx index 8cf64e4ba..1d8213167 100644 --- a/src/rovo-dev/ui/rovoDevView.tsx +++ b/src/rovo-dev/ui/rovoDevView.tsx @@ -49,6 +49,7 @@ import { const DEFAULT_LOADING_MESSAGE: string = 'Rovo dev is working'; const RovoDevView: React.FC = () => { + const [isProviderReady, setIsProviderReady] = useState(false); const [currentState, setCurrentState] = useState({ state: 'WaitingForPrompt' }); const [pendingToolCallMessage, setPendingToolCallMessage] = useState(''); const [retryAfterErrorEnabled, setRetryAfterErrorEnabled] = useState(''); @@ -81,9 +82,6 @@ const RovoDevView: React.FC = () => { const [availableAgentModes, setAvailableAgentModes] = useState([]); const [currentAgentMode, setCurrentAgentMode] = useState(null); - console.log('availableAgentModes', availableAgentModes); - console.log('currentAgentMode', currentAgentMode); - // Initialize atlaskit theme for proper token support React.useEffect(() => { const initializeTheme = () => { @@ -336,6 +334,7 @@ const RovoDevView: React.FC = () => { break; case RovoDevProviderMessageType.ProviderReady: + setIsProviderReady(true); setWorkspacePath(event.workspacePath || ''); setHomeDir(event.homeDir || ''); if (!RovodevStaticConfig.isBBY && event.yoloMode !== undefined) { @@ -955,6 +954,13 @@ const RovoDevView: React.FC = () => { [postMessage], ); + const onAgentModeChange = useCallback( + (mode: AgentMode) => { + postMessage({ type: RovoDevViewResponseType.SetAgentMode, mode }); + }, + [postMessage], + ); + React.useEffect(() => { // the event below (YoloModeToggled) with value true automatically approves any pending confirmation if (isYoloModeToggled) { @@ -974,6 +980,20 @@ const RovoDevView: React.FC = () => { }); }, [postMessage, isFullContextModeToggled]); + React.useEffect(() => { + if (!isProviderReady) { + return; + } + + if (availableAgentModes.length === 0) { + postMessage({ type: RovoDevViewResponseType.GetAvailableAgentModes }); + } + + if (!currentAgentMode) { + postMessage({ type: RovoDevViewResponseType.GetCurrentAgentMode }); + } + }, [isProviderReady, availableAgentModes, currentAgentMode, postMessage]); + const hidePromptBox = currentState.state === 'Disabled' || (currentState.state === 'Initializing' && currentState.subState === 'MCPAcceptance'); @@ -1112,6 +1132,9 @@ const RovoDevView: React.FC = () => { isDeepPlanEnabled={isDeepPlanToggled} isYoloModeEnabled={isYoloModeToggled} isFullContextEnabled={isFullContextModeToggled} + availableAgentModes={availableAgentModes} + currentAgentMode={currentAgentMode} + onAgentModeChange={onAgentModeChange} onDeepPlanToggled={() => setIsDeepPlanToggled((prev) => !prev)} onYoloModeToggled={ RovodevStaticConfig.isBBY ? undefined : () => onYoloModeToggled() From da898c1eeaebde3854b1e93988841a202b9d159e Mon Sep 17 00:00:00 2001 From: jwang19 Date: Wed, 21 Jan 2026 09:47:29 -0800 Subject: [PATCH 19/30] fix: style --- .../prompt-settings-popup/AgentModeSection.tsx | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx index ceeac6396..dbebf903e 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx @@ -56,19 +56,8 @@ const AgentModeSection: React.FC = ({ return (
-

- Reasoning -

-
+

Reasoning

+
{availableModes.map((modeInfo) => { const isSelected = currentMode === modeInfo.mode; const modeIcon = getModeIcon(modeInfo.mode); From 9b5b47afb728114f7e995cac9fc145a17bdb4047 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Wed, 21 Jan 2026 09:59:08 -0800 Subject: [PATCH 20/30] fix: prompt settings popup max width --- .../ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx index 4e3618eba..6960f9ac4 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx @@ -34,6 +34,7 @@ const PopupContainer = React.forwardRef( borderRadius: '8px', padding: '16px', marginRight: '16px', + maxWidth: '350px', ...props.style, }} ref={ref} From e86daaf79e97aedc135e9f6ce3e2dccab44eb779 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Wed, 21 Jan 2026 11:23:31 -0800 Subject: [PATCH 21/30] fix: use atlaskit component --- package-lock.json | 2490 ++++++++++++++++- package.json | 3 +- .../AgentModeSection.tsx | 114 +- 3 files changed, 2476 insertions(+), 131 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5844673da..42f434b35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,6 +50,7 @@ "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.1.0", "@atlaskit/pragmatic-drag-and-drop-live-region": "^1.3.1", "@atlaskit/pragmatic-drag-and-drop-react-drop-indicator": "^3.2.5", + "@atlaskit/primitives": "^17.1.1", "@atlaskit/radio": "^8.3.0", "@atlaskit/renderer": "^124.1.4", "@atlaskit/section-message": "^8.5.1", @@ -483,14 +484,15 @@ } }, "node_modules/@atlaskit/app-provider": { - "version": "3.2.2", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/app-provider/-/app-provider-3.2.2.tgz", - "integrity": "sha512-vvbCEXn9jDMPx3pKHq1MNP5M1jPSsRRqv0bA+0twtVaVBAVHeypjG7wnlaYHFzpAdI2W2ZVlgRECnfe6e7Yp1A==", + "version": "3.3.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/app-provider/-/app-provider-3.3.2.tgz", + "integrity": "sha512-bppNen/XUaWKhUBFMmGHfsqv6cFDXY58hX7heyEXlT9muaiUvGWmo5vwFM5Q8yc28x4jjxqO0o5c/fGmF/fC/Q==", "license": "Apache-2.0", "dependencies": { - "@atlaskit/css": "^0.14.0", + "@atlaskit/browser-apis": "^0.0.1", + "@atlaskit/css": "^0.19.0", "@atlaskit/platform-feature-flags": "^1.1.0", - "@atlaskit/tokens": "^6.4.0", + "@atlaskit/tokens": "^10.0.0", "@babel/runtime": "^7.0.0", "bind-event-listener": "^3.0.0" }, @@ -499,14 +501,31 @@ } }, "node_modules/@atlaskit/app-provider/node_modules/@atlaskit/css": { - "version": "0.14.4", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", - "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "version": "0.19.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.19.1.tgz", + "integrity": "sha512-jnvIvXEQLGqGKHb8UZ/9F9/AFyzzmY3eA+KF5TwGssp8SB5sUggUcDPzs3gbV9aer+2bmdmwfww+B5KPEFq2RQ==", "license": "Apache-2.0", "dependencies": { - "@atlaskit/tokens": "^6.4.0", + "@atlaskit/tokens": "^10.0.0", "@babel/runtime": "^7.0.0", - "@compiled/react": "^0.18.3" + "@compiled/react": "^0.18.6" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/app-provider/node_modules/@atlaskit/tokens": { + "version": "10.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/tokens/-/tokens-10.1.0.tgz", + "integrity": "sha512-F7T551Jwqv6kDt3oY/fW0teUzKgZp4OGfWbji0ejeUSF9++suMDzSbsQ5rD8mu6Wui3D1Ru7Q6wtdX4h77k0+A==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/ds-lib": "^5.3.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.20.0", + "bind-event-listener": "^3.0.0" }, "peerDependencies": { "react": "^18.2.0" @@ -614,6 +633,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/avatar/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/badge": { "version": "18.2.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/badge/-/badge-18.2.0.tgz", @@ -631,6 +675,45 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/badge/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/badge/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/blanket": { "version": "15.0.14", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/blanket/-/blanket-15.0.14.tgz", @@ -701,6 +784,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/breadcrumbs/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/browser-apis": { "version": "0.0.1", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/browser-apis/-/browser-apis-0.0.1.tgz", @@ -771,6 +879,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/button/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/calendar": { "version": "17.1.20", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/calendar/-/calendar-17.1.20.tgz", @@ -826,6 +959,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/calendar/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/calendar/node_modules/date-fns": { "version": "2.30.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/date-fns/-/date-fns-2.30.0.tgz", @@ -1007,6 +1165,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/comment/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/css": { "version": "0.12.5", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.12.5.tgz", @@ -1230,6 +1413,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/datetime-picker/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/datetime-picker/node_modules/date-fns": { "version": "2.30.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/date-fns/-/date-fns-2.30.0.tgz", @@ -1365,6 +1573,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/dropdown-menu/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/ds-lib": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@atlaskit/ds-lib/-/ds-lib-5.3.0.tgz", @@ -1561,6 +1794,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-common/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-common/node_modules/@sentry-internal/feedback": { "version": "7.120.4", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@sentry-internal/feedback/-/feedback-7.120.4.tgz", @@ -2094,6 +2352,20 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-element-browser/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-element-browser/node_modules/@atlaskit/icon": { "version": "28.5.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/icon/-/icon-28.5.0.tgz", @@ -2111,6 +2383,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-element-browser/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-json-transformer": { "version": "8.30.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/editor-json-transformer/-/editor-json-transformer-8.30.0.tgz", @@ -3480,6 +3777,20 @@ "react-intl-next": "npm:react-intl@^5.18.1" } }, + "node_modules/@atlaskit/editor-plugin-block-controls/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-block-controls/node_modules/@atlaskit/editor-prosemirror": { "version": "7.0.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/editor-prosemirror/-/editor-prosemirror-7.0.0.tgz", @@ -3526,6 +3837,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-block-controls/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-block-controls/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -3690,6 +4026,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-block-menu/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-block-menu/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -3852,6 +4213,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-block-type/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-block-type/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -4248,6 +4634,20 @@ "react-intl-next": "npm:react-intl@^5.18.1" } }, + "node_modules/@atlaskit/editor-plugin-card/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-card/node_modules/@atlaskit/editor-prosemirror": { "version": "7.0.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/editor-prosemirror/-/editor-prosemirror-7.0.0.tgz", @@ -4294,6 +4694,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-card/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-card/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -5871,6 +6296,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-date/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-date/node_modules/date-fns": { "version": "2.30.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/date-fns/-/date-fns-2.30.0.tgz", @@ -6937,6 +7387,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-extension/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-extension/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -7248,6 +7723,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-find-replace/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-find-replace/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -7358,6 +7858,20 @@ "react-dom": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-floating-toolbar/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-floating-toolbar/node_modules/@atlaskit/editor-prosemirror": { "version": "7.0.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/editor-prosemirror/-/editor-prosemirror-7.0.0.tgz", @@ -7404,15 +7918,40 @@ "react": "^18.2.0" } }, - "node_modules/@atlaskit/editor-plugin-floating-toolbar/node_modules/prosemirror-commands": { - "version": "1.6.2", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", - "integrity": "sha512-0nDHH++qcf/BuPLYvmqZTUUsPJUCPBUXt0J1ErTcDIS369CTp773itzLGIgIXG4LJXOlwYCr44+Mh4ii6MP1QA==", - "license": "MIT", + "node_modules/@atlaskit/editor-plugin-floating-toolbar/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.10.2" + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/editor-plugin-floating-toolbar/node_modules/prosemirror-commands": { + "version": "1.6.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", + "integrity": "sha512-0nDHH++qcf/BuPLYvmqZTUUsPJUCPBUXt0J1ErTcDIS369CTp773itzLGIgIXG4LJXOlwYCr44+Mh4ii6MP1QA==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.10.2" } }, "node_modules/@atlaskit/editor-plugin-floating-toolbar/node_modules/prosemirror-dropcursor": { @@ -7933,6 +8472,20 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-help-dialog/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-help-dialog/node_modules/@atlaskit/editor-prosemirror": { "version": "7.0.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/editor-prosemirror/-/editor-prosemirror-7.0.0.tgz", @@ -7979,6 +8532,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-help-dialog/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-help-dialog/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -8137,6 +8715,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-highlight/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-highlight/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -8737,6 +9340,20 @@ "react-intl-next": "npm:react-intl@^5.18.1" } }, + "node_modules/@atlaskit/editor-plugin-insert-block/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-insert-block/node_modules/@atlaskit/editor-prosemirror": { "version": "7.0.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/editor-prosemirror/-/editor-prosemirror-7.0.0.tgz", @@ -8783,6 +9400,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-insert-block/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-insert-block/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -9114,6 +9756,20 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-limited-mode/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-limited-mode/node_modules/@atlaskit/editor-prosemirror": { "version": "7.0.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/editor-prosemirror/-/editor-prosemirror-7.0.0.tgz", @@ -9143,6 +9799,41 @@ "@babel/runtime": "^7.0.0" } }, + "node_modules/@atlaskit/editor-plugin-limited-mode/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/editor-plugin-limited-mode/node_modules/@atlaskit/primitives/node_modules/@atlaskit/platform-feature-flags": { + "version": "1.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/platform-feature-flags/-/platform-feature-flags-1.1.2.tgz", + "integrity": "sha512-PM+fVkV4Yn4/0keiN6ioAap2Y+odTyw1Z4uf+TA0zMmg3/lp/rVNJEc4a24dvd8DfVs5m9bxa/hbO1qJarhCBw==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/feature-gate-js-client": "^5.5.0", + "@babel/runtime": "^7.0.0" + } + }, "node_modules/@atlaskit/editor-plugin-limited-mode/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -10114,6 +10805,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-media-insert/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-media-insert/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -10259,6 +10975,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-media/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-media/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -12021,6 +12762,20 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-selection-extension/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-selection-extension/node_modules/@atlaskit/editor-prosemirror": { "version": "7.0.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/editor-prosemirror/-/editor-prosemirror-7.0.0.tgz", @@ -12067,26 +12822,51 @@ "react": "^18.2.0" } }, - "node_modules/@atlaskit/editor-plugin-selection-extension/node_modules/prosemirror-commands": { - "version": "1.6.2", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", - "integrity": "sha512-0nDHH++qcf/BuPLYvmqZTUUsPJUCPBUXt0J1ErTcDIS369CTp773itzLGIgIXG4LJXOlwYCr44+Mh4ii6MP1QA==", - "license": "MIT", - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.10.2" - } - }, - "node_modules/@atlaskit/editor-plugin-selection-extension/node_modules/prosemirror-dropcursor": { - "version": "1.8.1", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", - "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", - "license": "MIT", + "node_modules/@atlaskit/editor-plugin-selection-extension/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", "dependencies": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0", - "prosemirror-view": "^1.1.0" + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/editor-plugin-selection-extension/node_modules/prosemirror-commands": { + "version": "1.6.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", + "integrity": "sha512-0nDHH++qcf/BuPLYvmqZTUUsPJUCPBUXt0J1ErTcDIS369CTp773itzLGIgIXG4LJXOlwYCr44+Mh4ii6MP1QA==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.10.2" + } + }, + "node_modules/@atlaskit/editor-plugin-selection-extension/node_modules/prosemirror-dropcursor": { + "version": "1.8.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", + "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0", + "prosemirror-view": "^1.1.0" } }, "node_modules/@atlaskit/editor-plugin-selection-extension/node_modules/prosemirror-keymap": { @@ -12168,6 +12948,20 @@ "react-dom": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-selection-marker/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-selection-marker/node_modules/@atlaskit/editor-prosemirror": { "version": "7.0.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/editor-prosemirror/-/editor-prosemirror-7.0.0.tgz", @@ -12197,6 +12991,31 @@ "@babel/runtime": "^7.0.0" } }, + "node_modules/@atlaskit/editor-plugin-selection-marker/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-selection-marker/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -13182,6 +14001,20 @@ "react-intl-next": "npm:react-intl@^5.18.1" } }, + "node_modules/@atlaskit/editor-plugin-table/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-table/node_modules/@atlaskit/editor-prosemirror": { "version": "7.0.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/editor-prosemirror/-/editor-prosemirror-7.0.0.tgz", @@ -13228,6 +14061,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-table/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-table/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -13402,6 +14260,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-tasks-and-decisions/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-tasks-and-decisions/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -13562,6 +14445,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-text-color/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-text-color/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -14195,6 +15103,20 @@ "react-intl-next": "npm:react-intl@^5.18.1" } }, + "node_modules/@atlaskit/editor-plugin-type-ahead/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-type-ahead/node_modules/@atlaskit/editor-prosemirror": { "version": "7.0.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/editor-prosemirror/-/editor-prosemirror-7.0.0.tgz", @@ -14241,6 +15163,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-plugin-type-ahead/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-plugin-type-ahead/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -15263,6 +16210,41 @@ "@babel/runtime": "^7.0.0" } }, + "node_modules/@atlaskit/editor-synced-block-provider/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/editor-synced-block-provider/node_modules/@atlaskit/primitives/node_modules/@atlaskit/platform-feature-flags": { + "version": "1.1.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/platform-feature-flags/-/platform-feature-flags-1.1.2.tgz", + "integrity": "sha512-PM+fVkV4Yn4/0keiN6ioAap2Y+odTyw1Z4uf+TA0zMmg3/lp/rVNJEc4a24dvd8DfVs5m9bxa/hbO1qJarhCBw==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/feature-gate-js-client": "^5.5.0", + "@babel/runtime": "^7.0.0" + } + }, "node_modules/@atlaskit/editor-synced-block-provider/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -15499,6 +16481,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/editor-toolbar-model/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/editor-toolbar/node_modules/@atlaskit/css": { "version": "0.14.4", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", @@ -15530,7 +16537,32 @@ "react": "^18.2.0" } }, - "node_modules/@atlaskit/editor-wikimarkup-transformer": { + "node_modules/@atlaskit/editor-toolbar/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/editor-wikimarkup-transformer": { "version": "11.19.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/editor-wikimarkup-transformer/-/editor-wikimarkup-transformer-11.19.0.tgz", "integrity": "sha512-Y8Kp4HfiN0baxZkl1MOOxcLCToqwwdm9tGvP9FjlzmfZaBODcF6SK2d81DDidB41jnGt4ZhHB9VnxgkwoYsMVw==", @@ -15724,6 +16756,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/emoji/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/emoji/node_modules/uuid": { "version": "3.4.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/uuid/-/uuid-3.4.0.tgz", @@ -15753,6 +16810,45 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/empty-state/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/empty-state/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/feature-gate-js-client": { "version": "5.5.6", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/feature-gate-js-client/-/feature-gate-js-client-5.5.6.tgz", @@ -15829,6 +16925,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/flag/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/focus-ring": { "version": "3.0.5", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/focus-ring/-/focus-ring-3.0.5.tgz", @@ -15896,6 +17017,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/form/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/frontend-utilities": { "version": "3.2.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/frontend-utilities/-/frontend-utilities-3.2.0.tgz", @@ -15967,6 +17113,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/give-kudos/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/heading": { "version": "5.2.8", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/heading/-/heading-5.2.8.tgz", @@ -15997,6 +17168,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/heading/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/icon": { "version": "27.12.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/icon/-/icon-27.12.0.tgz", @@ -16382,30 +17578,6 @@ "react": "^18.2.0" } }, - "node_modules/@atlaskit/inline-edit/node_modules/@atlaskit/primitives": { - "version": "17.0.0", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-17.0.0.tgz", - "integrity": "sha512-V8uh2T7Pg70YhD/KJfLztqRTh2nZRbWhHdBLp3jHmowzg76UN5tVntrkYlVyIBGFPdtbUbuFyxAA5vxxBJClZQ==", - "license": "Apache-2.0", - "dependencies": { - "@atlaskit/analytics-next": "^11.1.0", - "@atlaskit/app-provider": "^3.2.0", - "@atlaskit/css": "^0.19.0", - "@atlaskit/ds-lib": "^5.3.0", - "@atlaskit/interaction-context": "^3.1.0", - "@atlaskit/tokens": "^9.0.0", - "@atlaskit/visually-hidden": "^3.0.0", - "@babel/runtime": "^7.0.0", - "@compiled/react": "^0.18.6", - "@emotion/react": "^11.7.1", - "@emotion/serialize": "^1.1.0", - "bind-event-listener": "^3.0.0", - "tiny-invariant": "^1.2.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, "node_modules/@atlaskit/inline-edit/node_modules/@atlaskit/tile": { "version": "1.0.3", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/tile/-/tile-1.0.3.tgz", @@ -16669,6 +17841,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/jql-editor/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/jql-editor/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -17046,6 +18243,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/link-datasource/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/link-datasource/node_modules/prosemirror-commands": { "version": "1.6.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", @@ -17234,12 +18456,37 @@ "react": "^18.2.0" } }, - "node_modules/@atlaskit/link-picker/node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "license": "MIT", - "dependencies": { + "node_modules/@atlaskit/link-picker/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/link-picker/node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "license": "MIT", + "dependencies": { "@babel/runtime": "^7.21.0" }, "engines": { @@ -17655,6 +18902,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/link/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/linking-common": { "version": "9.7.1", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/linking-common/-/linking-common-9.7.1.tgz", @@ -17774,6 +19046,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/lozenge/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/media-card": { "version": "79.5.12", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/media-card/-/media-card-79.5.12.tgz", @@ -17817,6 +19114,20 @@ "react-intl-next": "npm:react-intl@^5.18.1" } }, + "node_modules/@atlaskit/media-card/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/media-card/node_modules/@atlaskit/icon": { "version": "28.5.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/icon/-/icon-28.5.0.tgz", @@ -17834,6 +19145,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/media-card/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/media-client": { "version": "35.6.1", "resolved": "https://registry.npmjs.org/@atlaskit/media-client/-/media-client-35.6.1.tgz", @@ -18318,6 +19654,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/media-ui/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/media-viewer": { "version": "52.5.0", "resolved": "https://registry.npmjs.org/@atlaskit/media-viewer/-/media-viewer-52.5.0.tgz", @@ -18545,6 +19906,20 @@ "react-intl-next": "npm:react-intl@^5.18.1" } }, + "node_modules/@atlaskit/mention/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/mention/node_modules/@atlaskit/icon": { "version": "28.5.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/icon/-/icon-28.5.0.tgz", @@ -18562,6 +19937,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/mention/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/mention/node_modules/uuid": { "version": "3.4.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/uuid/-/uuid-3.4.0.tgz", @@ -18607,6 +20007,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/menu/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/modal-dialog": { "version": "14.4.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/modal-dialog/-/modal-dialog-14.4.2.tgz", @@ -18670,6 +20095,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/modal-dialog/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/motion": { "version": "5.3.7", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/motion/-/motion-5.3.7.tgz", @@ -18860,6 +20310,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/object/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/onboarding": { "version": "14.4.4", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/onboarding/-/onboarding-14.4.4.tgz", @@ -18907,13 +20382,38 @@ "react": "^18.2.0" } }, - "node_modules/@atlaskit/outbound-auth-flow-client": { - "version": "3.4.6", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/outbound-auth-flow-client/-/outbound-auth-flow-client-3.4.6.tgz", - "integrity": "sha512-2zIgqaCog9dhHRm3wgqvpBfmoY+Vt/B5c0DRslI/9xxNL7Pu4cPsHte7VxImxgD8YAxmjtsZAwceuU+4OnqGyg==", + "node_modules/@atlaskit/onboarding/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", "license": "Apache-2.0", "dependencies": { - "@babel/runtime": "^7.0.0" + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/outbound-auth-flow-client": { + "version": "3.4.6", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/outbound-auth-flow-client/-/outbound-auth-flow-client-3.4.6.tgz", + "integrity": "sha512-2zIgqaCog9dhHRm3wgqvpBfmoY+Vt/B5c0DRslI/9xxNL7Pu4cPsHte7VxImxgD8YAxmjtsZAwceuU+4OnqGyg==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.0.0" } }, "node_modules/@atlaskit/page": { @@ -18960,6 +20460,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/page-header/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/people-teams-ui-public": { "version": "3.4.1", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/people-teams-ui-public/-/people-teams-ui-public-3.4.1.tgz", @@ -18983,6 +20508,20 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/people-teams-ui-public/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/people-teams-ui-public/node_modules/@atlaskit/icon": { "version": "28.5.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/icon/-/icon-28.5.0.tgz", @@ -19000,6 +20539,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/people-teams-ui-public/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/platform-feature-flags": { "version": "1.1.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/platform-feature-flags/-/platform-feature-flags-1.1.2.tgz", @@ -19042,6 +20606,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/platform-feature-flags-react/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/popper": { "version": "7.1.5", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/popper/-/popper-7.1.5.tgz", @@ -19096,6 +20685,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/popup/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/portal": { "version": "5.1.8", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/portal/-/portal-5.1.8.tgz", @@ -19190,21 +20804,20 @@ } }, "node_modules/@atlaskit/primitives": { - "version": "14.15.5", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", - "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "version": "17.1.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-17.1.1.tgz", + "integrity": "sha512-xzRFvlzUI/jwmqjGmHDA270gMB3CrpWgnYziJRTcBforkKCv7Yr8J0y8r3umB9LpWo0vzruwxMnBqSnIcYAgvw==", "license": "Apache-2.0", "dependencies": { "@atlaskit/analytics-next": "^11.1.0", - "@atlaskit/app-provider": "^3.2.0", - "@atlaskit/css": "^0.14.0", - "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/app-provider": "^3.3.0", + "@atlaskit/css": "^0.19.0", + "@atlaskit/ds-lib": "^5.3.0", "@atlaskit/interaction-context": "^3.1.0", - "@atlaskit/platform-feature-flags": "^1.1.0", - "@atlaskit/tokens": "^6.4.0", + "@atlaskit/tokens": "^10.0.0", "@atlaskit/visually-hidden": "^3.0.0", "@babel/runtime": "^7.0.0", - "@compiled/react": "^0.18.3", + "@compiled/react": "^0.18.6", "@emotion/react": "^11.7.1", "@emotion/serialize": "^1.1.0", "bind-event-listener": "^3.0.0", @@ -19215,14 +20828,31 @@ } }, "node_modules/@atlaskit/primitives/node_modules/@atlaskit/css": { - "version": "0.14.4", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", - "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "version": "0.19.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.19.1.tgz", + "integrity": "sha512-jnvIvXEQLGqGKHb8UZ/9F9/AFyzzmY3eA+KF5TwGssp8SB5sUggUcDPzs3gbV9aer+2bmdmwfww+B5KPEFq2RQ==", "license": "Apache-2.0", "dependencies": { - "@atlaskit/tokens": "^6.4.0", + "@atlaskit/tokens": "^10.0.0", "@babel/runtime": "^7.0.0", - "@compiled/react": "^0.18.3" + "@compiled/react": "^0.18.6" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/primitives/node_modules/@atlaskit/tokens": { + "version": "10.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/tokens/-/tokens-10.1.0.tgz", + "integrity": "sha512-F7T551Jwqv6kDt3oY/fW0teUzKgZp4OGfWbji0ejeUSF9++suMDzSbsQ5rD8mu6Wui3D1Ru7Q6wtdX4h77k0+A==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/ds-lib": "^5.3.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.20.0", + "bind-event-listener": "^3.0.0" }, "peerDependencies": { "react": "^18.2.0" @@ -19315,6 +20945,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/profilecard/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/profilecard/node_modules/date-fns": { "version": "2.30.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/date-fns/-/date-fns-2.30.0.tgz", @@ -19655,6 +21310,20 @@ "react-dom": "^18.2.0" } }, + "node_modules/@atlaskit/react-select/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/react-select/node_modules/@atlaskit/icon": { "version": "28.5.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/icon/-/icon-28.5.0.tgz", @@ -19672,6 +21341,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/react-select/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/react-ufo": { "version": "4.11.6", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/react-ufo/-/react-ufo-4.11.6.tgz", @@ -19967,6 +21661,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/rovo-agent-components/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/rovo-triggers": { "version": "3.13.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/rovo-triggers/-/rovo-triggers-3.13.0.tgz", @@ -20034,9 +21753,34 @@ "react": "^18.2.0" } }, - "node_modules/@atlaskit/select": { - "version": "21.3.3", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/select/-/select-21.3.3.tgz", + "node_modules/@atlaskit/section-message/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/select": { + "version": "21.3.3", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/select/-/select-21.3.3.tgz", "integrity": "sha512-5Qfrf3iIgEhp6mt9ihyJiL1HcOn6mnstq3IdAklWZaLO6IeidzRgB8sGqw3DK4blCLJTFNysWy0DBKdxWulnOg==", "license": "Apache-2.0", "dependencies": { @@ -20063,6 +21807,20 @@ "react-dom": "^18.2.0" } }, + "node_modules/@atlaskit/select/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/select/node_modules/@atlaskit/icon": { "version": "28.5.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/icon/-/icon-28.5.0.tgz", @@ -20080,6 +21838,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/select/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/side-navigation": { "version": "11.0.20", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/side-navigation/-/side-navigation-11.0.20.tgz", @@ -20133,6 +21916,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/side-navigation/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/skeleton": { "version": "2.1.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/skeleton/-/skeleton-2.1.2.tgz", @@ -20275,6 +22083,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/smart-card/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/smart-card/node_modules/uuid": { "version": "3.4.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/uuid/-/uuid-3.4.0.tgz", @@ -20356,6 +22189,20 @@ "react-intl-next": "npm:react-intl@^5.18.1" } }, + "node_modules/@atlaskit/status/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/status/node_modules/@atlaskit/icon": { "version": "28.5.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/icon/-/icon-28.5.0.tgz", @@ -20373,6 +22220,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/status/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/table-tree": { "version": "12.2.9", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/table-tree/-/table-tree-12.2.9.tgz", @@ -20429,6 +22301,45 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/tabs/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/tabs/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/tag": { "version": "14.1.9", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/tag/-/tag-14.1.9.tgz", @@ -20482,6 +22393,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/tag/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/task-decision": { "version": "19.2.12", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/task-decision/-/task-decision-19.2.12.tgz", @@ -20567,6 +22503,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/teams-app-config/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/teams-app-internal-analytics": { "version": "1.13.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/teams-app-internal-analytics/-/teams-app-internal-analytics-1.13.0.tgz", @@ -20600,6 +22561,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/teams-app-internal-analytics/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/teams-app-internal-product-permissions": { "version": "1.2.3", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/teams-app-internal-product-permissions/-/teams-app-internal-product-permissions-1.2.3.tgz", @@ -20631,6 +22617,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/teams-app-internal-product-permissions/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/teams-avatar": { "version": "2.3.22", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/teams-avatar/-/teams-avatar-2.3.22.tgz", @@ -20665,18 +22676,43 @@ "react": "^18.2.0" } }, - "node_modules/@atlaskit/teams-avatar/node_modules/@atlaskit/icon": { - "version": "28.5.0", - "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/icon/-/icon-28.5.0.tgz", - "integrity": "sha512-TYaOzVHVIDUwqWsOo45NCTZ1OUTxzj1gFW2MNihUImQZgUt/IOqFM9fgM29GzWKVL3FkG7jQqWHiR7VyhFjfTg==", + "node_modules/@atlaskit/teams-avatar/node_modules/@atlaskit/icon": { + "version": "28.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/icon/-/icon-28.5.0.tgz", + "integrity": "sha512-TYaOzVHVIDUwqWsOo45NCTZ1OUTxzj1gFW2MNihUImQZgUt/IOqFM9fgM29GzWKVL3FkG7jQqWHiR7VyhFjfTg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tile": "^0.1.0", + "@atlaskit/tokens": "^6.4.0", + "@babel/register": "^7.25.9", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/teams-avatar/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", "license": "Apache-2.0", "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", "@atlaskit/platform-feature-flags": "^1.1.0", - "@atlaskit/tile": "^0.1.0", "@atlaskit/tokens": "^6.4.0", - "@babel/register": "^7.25.9", + "@atlaskit/visually-hidden": "^3.0.0", "@babel/runtime": "^7.0.0", - "@compiled/react": "^0.18.3" + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" }, "peerDependencies": { "react": "^18.2.0" @@ -20902,6 +22938,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/teams-public/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/teams-public/node_modules/graphql": { "version": "15.10.1", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/graphql/-/graphql-15.10.1.tgz", @@ -20959,6 +23020,45 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/textarea/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlaskit/textarea/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/textfield": { "version": "8.2.1", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/textfield/-/textfield-8.2.1.tgz", @@ -21090,6 +23190,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/toggle/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/tokens": { "version": "6.4.2", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/tokens/-/tokens-6.4.2.tgz", @@ -21332,6 +23457,20 @@ "react-intl-next": "npm:react-intl@^5.18.1" } }, + "node_modules/@atlaskit/user-picker/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/user-picker/node_modules/@atlaskit/icon": { "version": "28.5.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/icon/-/icon-28.5.0.tgz", @@ -21349,6 +23488,31 @@ "react": "^18.2.0" } }, + "node_modules/@atlaskit/user-picker/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlaskit/user-picker/node_modules/uuid": { "version": "3.4.0", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/uuid/-/uuid-3.4.0.tgz", @@ -21775,6 +23939,138 @@ "react-dom": "^18.2.0" } }, + "node_modules/@atlassianlabs/guipi-core-components/node_modules/@atlaskit/primitives": { + "version": "14.15.5", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-14.15.5.tgz", + "integrity": "sha512-t0ifneO2qr1meukYFMvLqJmRRQeWYBqopAQtksAYXcagt2rKNxuRaqiTAja7j3AP3SLgzP8tX2WQ0/9AebFJeg==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/analytics-next": "^11.1.0", + "@atlaskit/app-provider": "^3.2.0", + "@atlaskit/css": "^0.14.0", + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/interaction-context": "^3.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^6.4.0", + "@atlaskit/visually-hidden": "^3.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3", + "@emotion/react": "^11.7.1", + "@emotion/serialize": "^1.1.0", + "bind-event-listener": "^3.0.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlassianlabs/guipi-core-components/node_modules/@atlaskit/primitives/node_modules/@atlaskit/app-provider": { + "version": "3.3.2", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/app-provider/-/app-provider-3.3.2.tgz", + "integrity": "sha512-bppNen/XUaWKhUBFMmGHfsqv6cFDXY58hX7heyEXlT9muaiUvGWmo5vwFM5Q8yc28x4jjxqO0o5c/fGmF/fC/Q==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/browser-apis": "^0.0.1", + "@atlaskit/css": "^0.19.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@atlaskit/tokens": "^10.0.0", + "@babel/runtime": "^7.0.0", + "bind-event-listener": "^3.0.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlassianlabs/guipi-core-components/node_modules/@atlaskit/primitives/node_modules/@atlaskit/app-provider/node_modules/@atlaskit/css": { + "version": "0.19.1", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.19.1.tgz", + "integrity": "sha512-jnvIvXEQLGqGKHb8UZ/9F9/AFyzzmY3eA+KF5TwGssp8SB5sUggUcDPzs3gbV9aer+2bmdmwfww+B5KPEFq2RQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^10.0.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.6" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlassianlabs/guipi-core-components/node_modules/@atlaskit/primitives/node_modules/@atlaskit/app-provider/node_modules/@atlaskit/tokens": { + "version": "10.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/tokens/-/tokens-10.1.0.tgz", + "integrity": "sha512-F7T551Jwqv6kDt3oY/fW0teUzKgZp4OGfWbji0ejeUSF9++suMDzSbsQ5rD8mu6Wui3D1Ru7Q6wtdX4h77k0+A==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/ds-lib": "^5.3.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.20.0", + "bind-event-listener": "^3.0.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlassianlabs/guipi-core-components/node_modules/@atlaskit/primitives/node_modules/@atlaskit/css": { + "version": "0.14.4", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.14.4.tgz", + "integrity": "sha512-0RViwbSzefiKhVgSrnUKY7Gd/Qyi11wUpL0cam0y2zuu4XM2uZnUC4rDppTIwOkU+WaugczQ3YWLKP8gIjx4gQ==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/tokens": "^6.4.0", + "@babel/runtime": "^7.0.0", + "@compiled/react": "^0.18.3" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlassianlabs/guipi-core-components/node_modules/@atlaskit/primitives/node_modules/@atlaskit/ds-lib": { + "version": "5.3.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/ds-lib/-/ds-lib-5.3.0.tgz", + "integrity": "sha512-j3DLHqBACSJsG3XqSgCIwZqvJhYkpSC8i+24n/JYCRjIxYEJMsuSXOtdeu0qBajREwgzmAFP6AVfVZh1zAWG/A==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/platform-feature-flags": "^1.1.0", + "@babel/runtime": "^7.0.0", + "bind-event-listener": "^3.0.0", + "react-uid": "^2.2.0", + "tiny-invariant": "^1.2.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlassianlabs/guipi-core-components/node_modules/@atlaskit/primitives/node_modules/@atlaskit/interaction-context": { + "version": "3.1.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/interaction-context/-/interaction-context-3.1.0.tgz", + "integrity": "sha512-LB3T0ATpJ5y7/IVBndNbcjtaNmPcz/8k7+smMibzphmV7xB3HaIyJFEu2JoSmgps66qLXo0ia8Hj7v4dF9zJZw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.0.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@atlassianlabs/guipi-core-components/node_modules/@atlaskit/primitives/node_modules/@atlaskit/tokens": { + "version": "6.5.0", + "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/tokens/-/tokens-6.5.0.tgz", + "integrity": "sha512-JQU5nic5v8B2NBs6Sy3H1gxBvNq4zUygbx2Ssntf1RghBBWnnYZa1eaF2HpqjeFOJ5JNNgs70ukPT1VcqI1RYw==", + "license": "Apache-2.0", + "dependencies": { + "@atlaskit/ds-lib": "^5.1.0", + "@atlaskit/platform-feature-flags": "^1.1.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.20.0", + "bind-event-listener": "^3.0.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/@atlassianlabs/guipi-core-components/node_modules/@atlaskit/spinner": { "version": "18.0.6", "resolved": "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/spinner/-/spinner-18.0.6.tgz", diff --git a/package.json b/package.json index b781bd0aa..e56e54d6d 100644 --- a/package.json +++ b/package.json @@ -1687,6 +1687,7 @@ "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.1.0", "@atlaskit/pragmatic-drag-and-drop-live-region": "^1.3.1", "@atlaskit/pragmatic-drag-and-drop-react-drop-indicator": "^3.2.5", + "@atlaskit/primitives": "^17.1.1", "@atlaskit/radio": "^8.3.0", "@atlaskit/renderer": "^124.1.4", "@atlaskit/section-message": "^8.5.1", @@ -1915,4 +1916,4 @@ }, "jws": "^4.0.1" } -} \ No newline at end of file +} diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx index dbebf903e..d28bce604 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx @@ -1,4 +1,10 @@ -import { Radio } from '@atlaskit/radio'; +import { cssMap } from '@atlaskit/css'; +import CheckMarkIcon from '@atlaskit/icon/core/check-mark'; +import ZoomInIcon from '@atlaskit/icon/core/zoom-in'; +import AiGenerativeRemoveSilenceIcon from '@atlaskit/icon-lab/core/ai-generative-remove-silence'; +import RandomizeIcon from '@atlaskit/icon-lab/core/randomize'; +import { Box } from '@atlaskit/primitives'; +import { token } from '@atlaskit/tokens'; import React from 'react'; import { AgentMode, RovoDevModeInfo } from 'src/rovo-dev/client'; @@ -8,26 +14,19 @@ interface AgentModeSectionProps { setAgentMode: (mode: AgentMode) => void; } -// Map agent modes to icons - using similar icons as other settings const getModeIcon = (mode: string) => { - // You'll need to import appropriate icons from @atlaskit/icon - // For now using placeholders - replace with actual Atlaskit icons switch (mode) { case 'default': - // Could use something like SettingsIcon or similar - return null; // Replace with actual icon + return ; case 'plan': - // Could use AiGenerativeTextSummaryIcon or similar - return null; // Replace with actual icon + return ; case 'ask': - // Could use QuestionCircleIcon or similar - return null; // Replace with actual icon + return ; default: return null; } }; -// Format mode label for display const formatModeLabel = (mode: string): string => { switch (mode) { case 'default': @@ -41,6 +40,35 @@ const formatModeLabel = (mode: string): string => { } }; +const styles = cssMap({ + section: { + marginTop: token('space.100', '8px'), + }, + modesContainer: { + display: 'flex', + flexDirection: 'column', + gap: token('space.100', '8px'), + }, + modeItem: { + display: 'flex', + flexDirection: 'row', + alignItems: 'flex-start', + gap: token('space.100', '8px'), + padding: token('space.100', '8px'), + cursor: 'pointer', + }, + modeLogo: { + display: 'flex', + paddingTop: token('space.050', '4px'), + }, + modeContext: { + flex: 1, + }, + modeAction: { + marginLeft: 'auto', + }, +}); + const AgentModeSection: React.FC = ({ currentMode, availableModes, @@ -55,46 +83,66 @@ const AgentModeSection: React.FC = ({ }; return ( -
-

Reasoning

-
+ +

+ Reasoning +

+ {availableModes.map((modeInfo) => { const isSelected = currentMode === modeInfo.mode; const modeIcon = getModeIcon(modeInfo.mode); return ( -
handleModeSelect(modeInfo.mode as AgentMode)} - style={{ cursor: 'pointer' }} + style={{ + backgroundColor: 'var(--vscode-sideBar-background)', + borderRadius: '8px', + }} > - {modeIcon &&
{modeIcon}
} -
-

{formatModeLabel(modeInfo.mode)}

+ {modeIcon && {modeIcon}} + +

+ {formatModeLabel(modeInfo.mode)} +

{modeInfo.description}

-
-
- handleModeSelect(modeInfo.mode as AgentMode)} - value={modeInfo.mode} - name="agentMode" - /> -
-
+
+ {isSelected && ( + + + + )} +
); })} -
-
+ + ); }; From b8731fbc79639cc773f4c73a98b8bbbbf3cfc17a Mon Sep 17 00:00:00 2001 From: jwang19 Date: Wed, 21 Jan 2026 11:26:09 -0800 Subject: [PATCH 22/30] cleanup --- src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx index 20a1c5c75..75e29888b 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx @@ -48,14 +48,12 @@ describe('PromptInputBox', () => { isDeepPlanEnabled: false, isYoloModeEnabled: false, isFullContextEnabled: false, - isAskModeEnabled: false, availableAgentModes: [], currentAgentMode: null, onAgentModeChange: jest.fn(), onDeepPlanToggled: jest.fn(), onYoloModeToggled: jest.fn(), onFullContextToggled: jest.fn(), - onAskModeToggled: jest.fn(), onSend: jest.fn(), onCancel: jest.fn(), sendButtonDisabled: false, From 66feca7712510e4bc012cf7c0b4ba2b77ad4d029 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Wed, 21 Jan 2026 15:24:15 -0800 Subject: [PATCH 23/30] fix: ut --- .../prompt-input/PromptInput.test.tsx | 10 ++++++++ .../PromptSettingsPopup.test.tsx | 10 ++++++++ .../PromptSettingsPopup.tsx | 24 +++++++++++++++---- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx index 75e29888b..463e09c45 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.test.tsx @@ -34,6 +34,16 @@ jest.mock('monaco-editor', () => ({ }, })); +jest.mock('@atlaskit/css', () => ({ + cssMap: (styles: any) => { + const result: any = {}; + for (const key in styles) { + result[key] = styles[key]; + } + return result; + }, +})); + import { fireEvent, render, screen } from '@testing-library/react'; import React from 'react'; import { DisabledState, State } from 'src/rovo-dev/rovoDevTypes'; diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx index 96956ce0f..0ee4170c1 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.test.tsx @@ -1,6 +1,16 @@ import { fireEvent, render, screen } from '@testing-library/react'; import React from 'react'; +jest.mock('@atlaskit/css', () => ({ + cssMap: (styles: any) => { + const result: any = {}; + for (const key in styles) { + result[key] = styles[key]; + } + return result; + }, +})); + import PromptSettingsPopup from './PromptSettingsPopup'; describe('PromptSettingsPopup', () => { diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx index 6960f9ac4..94b43e52c 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx @@ -4,6 +4,7 @@ import CustomizeIcon from '@atlaskit/icon/core/customize'; import LockUnlockedIcon from '@atlaskit/icon/core/lock-unlocked'; import TelescopeIcon from '@atlaskit/icon-lab/core/telescope'; import Popup, { PopupComponentProps } from '@atlaskit/popup'; +import { token } from '@atlaskit/tokens'; import React from 'react'; import { AgentMode, RovoDevModeInfo } from 'src/rovo-dev/client'; @@ -91,6 +92,24 @@ const PromptSettingsPopup: React.FC = ({ )} content={() => (
+ +

+ Others +

{onDeepPlanToggled && ( } @@ -122,11 +141,6 @@ const PromptSettingsPopup: React.FC = ({ toggled={isYoloModeEnabled} /> )} -
)} placement="top-start" From c6239753655ef040c6384b230ac8f6bff3be22ba Mon Sep 17 00:00:00 2001 From: jwang19 Date: Thu, 22 Jan 2026 15:27:24 -0800 Subject: [PATCH 24/30] cleanup --- src/rovo-dev/ui/rovoDevView.tsx | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/rovo-dev/ui/rovoDevView.tsx b/src/rovo-dev/ui/rovoDevView.tsx index 1d8213167..7d9896529 100644 --- a/src/rovo-dev/ui/rovoDevView.tsx +++ b/src/rovo-dev/ui/rovoDevView.tsx @@ -49,7 +49,6 @@ import { const DEFAULT_LOADING_MESSAGE: string = 'Rovo dev is working'; const RovoDevView: React.FC = () => { - const [isProviderReady, setIsProviderReady] = useState(false); const [currentState, setCurrentState] = useState({ state: 'WaitingForPrompt' }); const [pendingToolCallMessage, setPendingToolCallMessage] = useState(''); const [retryAfterErrorEnabled, setRetryAfterErrorEnabled] = useState(''); @@ -334,7 +333,6 @@ const RovoDevView: React.FC = () => { break; case RovoDevProviderMessageType.ProviderReady: - setIsProviderReady(true); setWorkspacePath(event.workspacePath || ''); setHomeDir(event.homeDir || ''); if (!RovodevStaticConfig.isBBY && event.yoloMode !== undefined) { @@ -981,10 +979,6 @@ const RovoDevView: React.FC = () => { }, [postMessage, isFullContextModeToggled]); React.useEffect(() => { - if (!isProviderReady) { - return; - } - if (availableAgentModes.length === 0) { postMessage({ type: RovoDevViewResponseType.GetAvailableAgentModes }); } @@ -992,7 +986,7 @@ const RovoDevView: React.FC = () => { if (!currentAgentMode) { postMessage({ type: RovoDevViewResponseType.GetCurrentAgentMode }); } - }, [isProviderReady, availableAgentModes, currentAgentMode, postMessage]); + }, [availableAgentModes, currentAgentMode, postMessage]); const hidePromptBox = currentState.state === 'Disabled' || From 1fc8182bf9ed7002185d9dd8808c4e86654a6262 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Thu, 22 Jan 2026 16:00:20 -0800 Subject: [PATCH 25/30] fix: ui --- .../AgentModeSection.tsx | 28 +++++++++---------- .../PromptSettingsPopup.tsx | 2 -- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx index d28bce604..6155ad053 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx @@ -41,9 +41,6 @@ const formatModeLabel = (mode: string): string => { }; const styles = cssMap({ - section: { - marginTop: token('space.100', '8px'), - }, modesContainer: { display: 'flex', flexDirection: 'column', @@ -52,14 +49,13 @@ const styles = cssMap({ modeItem: { display: 'flex', flexDirection: 'row', - alignItems: 'flex-start', + alignItems: 'center', gap: token('space.100', '8px'), padding: token('space.100', '8px'), cursor: 'pointer', }, modeLogo: { display: 'flex', - paddingTop: token('space.050', '4px'), }, modeContext: { flex: 1, @@ -67,6 +63,10 @@ const styles = cssMap({ modeAction: { marginLeft: 'auto', }, + labelText: { + fontWeight: token('font.weight.semibold', '600'), + margin: 0, + }, }); const AgentModeSection: React.FC = ({ @@ -83,7 +83,7 @@ const AgentModeSection: React.FC = ({ }; return ( - +

= ({ color: 'var(--vscode-descriptionForeground)', margin: 0, marginBottom: token('space.100', '8px'), - textTransform: 'uppercase', - letterSpacing: '0.5px', }} > Reasoning @@ -114,16 +112,18 @@ const AgentModeSection: React.FC = ({ > {modeIcon && {modeIcon}} -

{formatModeLabel(modeInfo.mode)} -

-

+ = ({ }} > {modeInfo.description} -

+
{isSelected && ( diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx index 94b43e52c..485ed586d 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/PromptSettingsPopup.tsx @@ -104,8 +104,6 @@ const PromptSettingsPopup: React.FC = ({ color: 'var(--vscode-descriptionForeground)', margin: 0, marginBottom: token('space.100', '8px'), - textTransform: 'uppercase', - letterSpacing: '0.5px', }} > Others From 8fdaa958dbeb88bfba5cca268a95ce85870a9a48 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Fri, 23 Jan 2026 09:56:22 -0800 Subject: [PATCH 26/30] cleanup --- src/rovo-dev/hooks/useAgentModes.ts | 96 ----------------------------- 1 file changed, 96 deletions(-) delete mode 100644 src/rovo-dev/hooks/useAgentModes.ts diff --git a/src/rovo-dev/hooks/useAgentModes.ts b/src/rovo-dev/hooks/useAgentModes.ts deleted file mode 100644 index 69baaea54..000000000 --- a/src/rovo-dev/hooks/useAgentModes.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { useCallback, useEffect, useState } from 'react'; -import { AgentMode, RovoDevModeInfo } from 'src/rovo-dev/client/rovoDevApiClientInterfaces'; - -import { RovoDevProviderMessage, RovoDevProviderMessageType } from '../rovoDevWebviewProviderMessages'; -import { useMessagingApi } from '../ui/messagingApi'; -import { RovoDevViewResponse, RovoDevViewResponseType } from '../ui/rovoDevViewMessages'; - -interface UseAgentModesOptions { - enabled?: boolean; -} - -export function useAgentModes({ enabled = true }: UseAgentModesOptions = {}) { - const { postMessagePromise } = useMessagingApi( - () => {}, - ); - - const [currentMode, setCurrentMode] = useState(null); - const [availableModes, setAvailableModes] = useState([]); - const [loading, setLoading] = useState(false); - const [error, setError] = useState(null); - - const getCurrentMode = useCallback(async () => { - setLoading(true); - setError(null); - - try { - const response = await postMessagePromise( - { type: RovoDevViewResponseType.GetCurrentAgentMode }, - RovoDevProviderMessageType.GetCurrentAgentModeComplete, - 5000, - ); - setCurrentMode(response.mode); - } catch (err) { - setError(err instanceof Error ? err.message : String(err)); - } finally { - setLoading(false); - } - }, [postMessagePromise]); - - const getAvailableModes = useCallback(async () => { - setLoading(true); - setError(null); - - try { - const response = await postMessagePromise( - { type: RovoDevViewResponseType.GetAvailableAgentModes }, - RovoDevProviderMessageType.GetAvailableAgentModesComplete, - 5000, - ); - setAvailableModes(response.modes); - } catch (err) { - setError(err instanceof Error ? err.message : String(err)); - } finally { - setLoading(false); - } - }, [postMessagePromise]); - - const setAgentMode = useCallback( - async (mode: AgentMode) => { - setLoading(true); - setError(null); - - try { - const response = await postMessagePromise( - { type: RovoDevViewResponseType.SetAgentMode, mode }, - RovoDevProviderMessageType.SetAgentModeComplete, - 5000, - ); - - setCurrentMode(response.mode); - } catch (err) { - setError(err instanceof Error ? err.message : String(err)); - } finally { - setLoading(false); - } - }, - [postMessagePromise], - ); - - useEffect(() => { - if (enabled) { - getCurrentMode(); - getAvailableModes(); - } - }, [enabled, getCurrentMode, getAvailableModes]); - - return { - currentMode, - availableModes, - loading, - error, - getCurrentMode, - getAvailableModes, - setAgentMode, - }; -} From 31edc68d6b7ca67a36ec9856920a486a3373d6c0 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Fri, 23 Jan 2026 10:32:47 -0800 Subject: [PATCH 27/30] agent mode tooltip icon --- .../prompt-box/prompt-input/PromptInput.tsx | 6 ++++ .../AgentModeSection.tsx | 18 +++++++---- .../PromptSettingsPopup.tsx | 32 +++++++++++++++---- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx index d8e2b83f1..09957790b 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-input/PromptInput.tsx @@ -16,6 +16,7 @@ import { DisabledState, State } from 'src/rovo-dev/rovoDevTypes'; import { rovoDevTextareaStyles } from '../../rovoDevViewStyles'; import { onKeyDownHandler } from '../../utils'; import PromptContextPopup from '../prompt-context-popup/PromptContextPopup'; +import { getAgentModeIcon } from '../prompt-settings-popup/AgentModeSection'; import PromptSettingsPopup from '../prompt-settings-popup/PromptSettingsPopup'; import { createMonacoPromptEditor, @@ -319,6 +320,11 @@ export const PromptInputBox: React.FC = ({
)}{' '} + {currentAgentMode && currentAgentMode !== 'default' && ( + +
{getAgentModeIcon(currentAgentMode)}
+
+ )}
{!showCancelButton && ( diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx index 6155ad053..58f3fcbdd 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx @@ -14,7 +14,7 @@ interface AgentModeSectionProps { setAgentMode: (mode: AgentMode) => void; } -const getModeIcon = (mode: string) => { +export const getAgentModeIcon = (mode: string) => { switch (mode) { case 'default': return ; @@ -46,6 +46,11 @@ const styles = cssMap({ flexDirection: 'column', gap: token('space.100', '8px'), }, + sectionTitle: { + fontWeight: token('font.weight.semibold', '600'), + margin: 0, + marginBottom: token('space.100', '8px'), + }, modeItem: { display: 'flex', flexDirection: 'row', @@ -84,21 +89,20 @@ const AgentModeSection: React.FC = ({ return ( -

Reasoning -

+
{availableModes.map((modeInfo) => { const isSelected = currentMode === modeInfo.mode; - const modeIcon = getModeIcon(modeInfo.mode); + const modeIcon = getAgentModeIcon(modeInfo.mode); return ( void; onYoloModeToggled?: () => void; @@ -59,6 +69,15 @@ const PromptSettingsPopup: React.FC = ({ }) => { const [isOpen, setIsOpen] = React.useState(false); + const handleAgentModeChange = useCallback( + (mode: AgentMode) => { + onAgentModeChange(mode); + setIsOpen(false); + onClose(); + }, + [onAgentModeChange, onClose], + ); + if (!onDeepPlanToggled && !onYoloModeToggled && !onFullContextToggled) { return null; } @@ -95,19 +114,18 @@ const PromptSettingsPopup: React.FC = ({ -

Others -

+
{onDeepPlanToggled && ( } From 03e0d45b8022236b775aa7a59e4f74beac838d85 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Fri, 23 Jan 2026 10:36:44 -0800 Subject: [PATCH 28/30] minor fix --- .../prompt-settings-popup/AgentModeSection.tsx | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx index 58f3fcbdd..d4abe6a66 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx @@ -79,14 +79,6 @@ const AgentModeSection: React.FC = ({ availableModes, setAgentMode, }: AgentModeSectionProps) => { - const handleModeSelect = (mode: AgentMode) => { - try { - setAgentMode(mode); - } catch (err) { - console.error(err); - } - }; - return ( = ({ handleModeSelect(modeInfo.mode as AgentMode)} + onClick={() => setAgentMode(modeInfo.mode as AgentMode)} style={{ backgroundColor: 'var(--vscode-sideBar-background)', borderRadius: '8px', From b602cb125977d18646170d34273f2e6e61aaf2e4 Mon Sep 17 00:00:00 2001 From: jwang19 Date: Fri, 23 Jan 2026 10:41:27 -0800 Subject: [PATCH 29/30] loading status --- .../AgentModeSection.tsx | 97 +++++++++++-------- 1 file changed, 55 insertions(+), 42 deletions(-) diff --git a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx index d4abe6a66..118dea5a5 100644 --- a/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx +++ b/src/rovo-dev/ui/prompt-box/prompt-settings-popup/AgentModeSection.tsx @@ -4,6 +4,7 @@ import ZoomInIcon from '@atlaskit/icon/core/zoom-in'; import AiGenerativeRemoveSilenceIcon from '@atlaskit/icon-lab/core/ai-generative-remove-silence'; import RandomizeIcon from '@atlaskit/icon-lab/core/randomize'; import { Box } from '@atlaskit/primitives'; +import Spinner from '@atlaskit/spinner'; import { token } from '@atlaskit/tokens'; import React from 'react'; import { AgentMode, RovoDevModeInfo } from 'src/rovo-dev/client'; @@ -72,6 +73,12 @@ const styles = cssMap({ fontWeight: token('font.weight.semibold', '600'), margin: 0, }, + loadingContainer: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + padding: token('space.200', '16px'), + }, }); const AgentModeSection: React.FC = ({ @@ -92,51 +99,57 @@ const AgentModeSection: React.FC = ({ Reasoning - {availableModes.map((modeInfo) => { - const isSelected = currentMode === modeInfo.mode; - const modeIcon = getAgentModeIcon(modeInfo.mode); + {availableModes.length === 0 ? ( + + + + ) : ( + availableModes.map((modeInfo) => { + const isSelected = currentMode === modeInfo.mode; + const modeIcon = getAgentModeIcon(modeInfo.mode); - return ( - setAgentMode(modeInfo.mode as AgentMode)} - style={{ - backgroundColor: 'var(--vscode-sideBar-background)', - borderRadius: '8px', - }} - > - {modeIcon && {modeIcon}} - - - {formatModeLabel(modeInfo.mode)} - - - {modeInfo.description} + return ( + setAgentMode(modeInfo.mode as AgentMode)} + style={{ + backgroundColor: 'var(--vscode-sideBar-background)', + borderRadius: '8px', + }} + > + {modeIcon && {modeIcon}} + + + {formatModeLabel(modeInfo.mode)} + + + {modeInfo.description} + + {isSelected && ( + + + + )} - {isSelected && ( - - - - )} - - ); - })} + ); + }) + )} ); From 82157eafb5b6c3a99d82cbdc3a33d0990e1f224e Mon Sep 17 00:00:00 2001 From: jwang19 Date: Fri, 23 Jan 2026 17:13:19 -0800 Subject: [PATCH 30/30] improve pref for init agent modes fetching --- src/rovo-dev/rovoDevWebviewProvider.ts | 31 ++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/rovo-dev/rovoDevWebviewProvider.ts b/src/rovo-dev/rovoDevWebviewProvider.ts index 7e84c4815..efcdd2e27 100644 --- a/src/rovo-dev/rovoDevWebviewProvider.ts +++ b/src/rovo-dev/rovoDevWebviewProvider.ts @@ -609,6 +609,35 @@ export class RovoDevWebviewProvider extends Disposable implements WebviewViewPro await this.sendExistingJiraCredentials(); } + /** + * Fetches agent modes asynchronously and sends them to the frontend when ready. + * This is called during startup to improve initialization performance. + */ + private async fetchAndSendAgentModes(): Promise { + if (!this._chatProvider || !this._webView) { + return; + } + + try { + const [availableModes, currentAgentMode] = await Promise.all([ + this._chatProvider.getAvailableAgentModes(), + this._chatProvider.getCurrentAgentMode(), + ]); + + await this._webView.postMessage({ + type: RovoDevProviderMessageType.GetAvailableAgentModesComplete, + modes: availableModes || [], + }); + + await this._webView.postMessage({ + type: RovoDevProviderMessageType.GetCurrentAgentModeComplete, + mode: currentAgentMode || 'default', + }); + } catch (error) { + RovoDevLogger.error(error, 'Failed to fetch agent modes'); + } + } + private beginNewSession(sessionId: string | null, manuallyCreated: boolean): void { this._telemetryProvider.startNewSession(sessionId ?? v4(), manuallyCreated); } @@ -1464,6 +1493,8 @@ export class RovoDevWebviewProvider extends Disposable implements WebviewViewPro await this._chatProvider.setReady(rovoDevClient); + this.fetchAndSendAgentModes(); + if (this.isBoysenberry) { // update the isAtlassianUser flag based on Rovo Dev status response // this is intentionally not awaiting because the API is pretty slow