@@ -3,6 +3,7 @@ import { CLAUDE_OAUTH_ENABLED } from '@codebuff/common/constants/claude-oauth'
33import open from 'open'
44
55import { handleAdsEnable , handleAdsDisable } from './ads'
6+ import { buildPlanPrompt , buildReviewPromptFromArgs } from './prompt-builders'
67import { useThemeStore } from '../hooks/use-theme'
78import { handleHelpCommand } from './help'
89import { handleImageCommand } from './image'
@@ -15,6 +16,7 @@ import { WEBSITE_URL } from '../login/constants'
1516import { useChatStore } from '../state/chat-store'
1617import { useFeedbackStore } from '../state/feedback-store'
1718import { useLoginStore } from '../state/login-store'
19+ import { getChatGptOAuthStatus } from '../utils/chatgpt-oauth'
1820import { AGENT_MODES , IS_FREEBUFF } from '../utils/constants'
1921import { getSystemMessage , getUserMessage } from '../utils/message-history'
2022import { capturePendingAttachments } from '../utils/pending-attachments'
@@ -508,8 +510,8 @@ const ALL_COMMANDS: CommandDefinition[] = [
508510 ...( CHATGPT_OAUTH_ENABLED
509511 ? [
510512 defineCommand ( {
511- name : 'connect:chatgpt ' ,
512- aliases : [ 'chatgpt' ] ,
513+ name : 'connect' ,
514+ aliases : [ 'connect:chatgpt' , ' chatgpt'] ,
513515 handler : ( params ) => {
514516 useChatStore . getState ( ) . setInputMode ( 'connect:chatgpt' )
515517 params . saveToHistory ( params . inputValue . trim ( ) )
@@ -527,19 +529,72 @@ const ALL_COMMANDS: CommandDefinition[] = [
527529 return { openChatHistory : true }
528530 } ,
529531 } ) ,
532+ defineCommandWithArgs ( {
533+ name : 'plan' ,
534+ handler : ( params , args ) => {
535+ // In freebuff mode, require ChatGPT connection
536+ if ( IS_FREEBUFF && ! getChatGptOAuthStatus ( ) . connected ) {
537+ params . setMessages ( ( prev ) => [
538+ ...prev ,
539+ getUserMessage ( params . inputValue . trim ( ) ) ,
540+ getSystemMessage (
541+ 'Connect your ChatGPT account to use /plan. Use /connect to get started.' ,
542+ ) ,
543+ ] )
544+ params . saveToHistory ( params . inputValue . trim ( ) )
545+ clearInput ( params )
546+ useChatStore . getState ( ) . setInputMode ( 'connect:chatgpt' )
547+ return
548+ }
549+
550+ const trimmedArgs = args . trim ( )
551+
552+ params . saveToHistory ( params . inputValue . trim ( ) )
553+ clearInput ( params )
554+
555+ // If user provided plan text directly, send it immediately
556+ if ( trimmedArgs ) {
557+ params . sendMessage ( {
558+ content : buildPlanPrompt ( trimmedArgs ) ,
559+ agentMode : params . agentMode ,
560+ } )
561+ setTimeout ( ( ) => {
562+ params . scrollToLatest ( )
563+ } , 0 )
564+ return
565+ }
566+
567+ // Otherwise enter plan mode
568+ useChatStore . getState ( ) . setInputMode ( 'plan' )
569+ } ,
570+ } ) ,
530571 defineCommandWithArgs ( {
531572 name : 'review' ,
532573 handler : ( params , args ) => {
574+ // In freebuff mode, require ChatGPT connection
575+ if ( IS_FREEBUFF && ! getChatGptOAuthStatus ( ) . connected ) {
576+ params . setMessages ( ( prev ) => [
577+ ...prev ,
578+ getUserMessage ( params . inputValue . trim ( ) ) ,
579+ getSystemMessage (
580+ 'Connect your ChatGPT account to use /review. Use /connect to get started.' ,
581+ ) ,
582+ ] )
583+ params . saveToHistory ( params . inputValue . trim ( ) )
584+ clearInput ( params )
585+ useChatStore . getState ( ) . setInputMode ( 'connect:chatgpt' )
586+ return
587+ }
588+
533589 const trimmedArgs = args . trim ( )
534590
535591 params . saveToHistory ( params . inputValue . trim ( ) )
536592 clearInput ( params )
537593
538594 // If user provided review text directly, send it immediately without showing the screen
539595 if ( trimmedArgs ) {
540- const reviewPrompt = `@thinker-gpt Please review: ${ trimmedArgs } `
541596 params . sendMessage ( {
542- content : reviewPrompt ,
597+ content : buildReviewPromptFromArgs ( trimmedArgs ) ,
543598 agentMode : params . agentMode ,
544599 } )
545600 setTimeout ( ( ) => {
0 commit comments