11import { BackgroundWrapper } from "@components/BackgroundWrapper" ;
22import { ErrorBoundary } from "@components/ErrorBoundary" ;
3+ import { tryExecuteTwigCommand } from "@features/message-editor/commands" ;
34import { useDraftStore } from "@features/message-editor/stores/draftStore" ;
45import { SessionView } from "@features/sessions/components/SessionView" ;
56import { getSessionService } from "@features/sessions/service/service" ;
@@ -13,13 +14,11 @@ import { WorkspaceSetupPrompt } from "@features/task-detail/components/Workspace
1314import { useWorkspaceStore } from "@features/workspace/stores/workspaceStore" ;
1415import { useConnectivity } from "@hooks/useConnectivity" ;
1516import { Box , Button , Flex , Spinner , Text } from "@radix-ui/themes" ;
16- import { track } from "@renderer/lib/analytics" ;
1717import { logger } from "@renderer/lib/logger" ;
1818import { useNavigationStore } from "@renderer/stores/navigationStore" ;
1919import { useTaskDirectoryStore } from "@renderer/stores/taskDirectoryStore" ;
2020import { trpcVanilla } from "@renderer/trpc/client" ;
2121import type { Task } from "@shared/types" ;
22- import { ANALYTICS_EVENTS , type FeedbackType } from "@shared/types/analytics" ;
2322import { useQueryClient } from "@tanstack/react-query" ;
2423import { getTaskRepository } from "@utils/repository" ;
2524import { toast } from "@utils/toast" ;
@@ -168,29 +167,19 @@ export function TaskLogsPanel({ taskId, task }: TaskLogsPanelProps) {
168167
169168 const handleSendPrompt = useCallback (
170169 async ( text : string ) => {
171- const feedbackMatch = text . match ( / ^ \/ ( g o o d | b a d | f e e d b a c k ) (?: \s + ( .* ) ) ? $ / ) ;
172- if ( feedbackMatch ) {
173- const rawType = feedbackMatch [ 1 ] ;
174- const feedbackType : FeedbackType =
175- rawType === "feedback" ? "general" : ( rawType as FeedbackType ) ;
176- const comment = feedbackMatch [ 2 ] ?. trim ( ) || undefined ;
177- track ( ANALYTICS_EVENTS . TASK_FEEDBACK , {
178- task_id : taskId ,
179- task_run_id : session ?. taskRunId ?? task . latest_run ?. id ,
180- log_url : session ?. logUrl ?? task . latest_run ?. log_url ,
181- event_count : events . length ,
182- feedback_type : feedbackType ,
183- feedback_comment : comment ,
184- } ) ;
185- const label =
186- feedbackType === "good"
187- ? "Positive"
188- : feedbackType === "bad"
189- ? "Negative"
190- : "General" ;
191- toast . success ( `${ label } feedback captured` ) ;
192- return ;
193- }
170+ const handled = await tryExecuteTwigCommand ( text , {
171+ taskId,
172+ repoPath,
173+ session : session
174+ ? {
175+ taskRunId : session . taskRunId ,
176+ logUrl : session . logUrl ,
177+ events,
178+ }
179+ : null ,
180+ taskRun : task . latest_run ?? null ,
181+ } ) ;
182+ if ( handled ) return ;
194183
195184 try {
196185 markAsViewed ( taskId ) ;
@@ -215,13 +204,12 @@ export function TaskLogsPanel({ taskId, task }: TaskLogsPanelProps) {
215204 } ,
216205 [
217206 taskId ,
207+ repoPath ,
218208 markActivity ,
219209 markAsViewed ,
220- events . length ,
221- session ?. logUrl ,
222- session ?. taskRunId ,
223- task . latest_run ?. id ,
224- task . latest_run ?. log_url ,
210+ events ,
211+ session ,
212+ task . latest_run ,
225213 ] ,
226214 ) ;
227215
0 commit comments