@xopcai/xopc 0.0.66 → 0.0.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agents-JiJR38n1.js → agents-CmhOU0fB.js} +2 -2
- package/dist/gateway/static/root/assets/{agents-JiJR38n1.js.map → agents-CmhOU0fB.js.map} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-aBDyr7Im.js → apps-page-CzS9A_6L.js} +2 -2
- package/dist/gateway/static/root/assets/{apps-page-aBDyr7Im.js.map → apps-page-CzS9A_6L.js.map} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-DXxfgG4N.js → channels-settings-Bn0YSztA.js} +2 -2
- package/dist/gateway/static/root/assets/{channels-settings-DXxfgG4N.js.map → channels-settings-Bn0YSztA.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-dreaming-jobs-3--QJSP5.js → cron-dreaming-jobs-bAYsiHdF.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-dreaming-jobs-3--QJSP5.js.map → cron-dreaming-jobs-bAYsiHdF.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-page-CCn-JwBy.js → cron-page-CKqDtScu.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-page-CCn-JwBy.js.map → cron-page-CKqDtScu.js.map} +1 -1
- package/dist/gateway/static/root/assets/{dist-BS-cwfHQ.js → dist-CUMhnSuX.js} +2 -2
- package/dist/gateway/static/root/assets/{dist-BS-cwfHQ.js.map → dist-CUMhnSuX.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-M8JS4Jid.js → extension-debug-page-BDls5xp3.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-debug-page-M8JS4Jid.js.map → extension-debug-page-BDls5xp3.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-C8gjVE_t.js → extension-page-BSfv53OO.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-page-C8gjVE_t.js.map → extension-page-BSfv53OO.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DeY2M2di.js → extension-settings-page-B0nkVsLi.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-settings-page-DeY2M2di.js.map → extension-settings-page-B0nkVsLi.js.map} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-DWmeyjyR.js → heartbeat-config-api-P5zdbIBw.js} +2 -2
- package/dist/gateway/static/root/assets/{heartbeat-config-api-DWmeyjyR.js.map → heartbeat-config-api-P5zdbIBw.js.map} +1 -1
- package/dist/gateway/static/root/assets/{index-Cc57jhuG.js → index-DAglRwh4.js} +5 -5
- package/dist/gateway/static/root/assets/{index-Cc57jhuG.js.map → index-DAglRwh4.js.map} +1 -1
- package/dist/gateway/static/root/assets/index-DHj3Cf9B.css +1 -0
- package/dist/gateway/static/root/assets/{logs-page-kIsSDMqb.js → logs-page-CfGDv4k7.js} +2 -2
- package/dist/gateway/static/root/assets/{logs-page-kIsSDMqb.js.map → logs-page-CfGDv4k7.js.map} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-Da9gjMh7.js → sessions-page-DoGE8N-O.js} +2 -2
- package/dist/gateway/static/root/assets/{sessions-page-Da9gjMh7.js.map → sessions-page-DoGE8N-O.js.map} +1 -1
- package/dist/gateway/static/root/assets/settings-page-C5VrwDoO.js +3 -0
- package/dist/gateway/static/root/assets/settings-page-C5VrwDoO.js.map +1 -0
- package/dist/gateway/static/root/assets/{skills-page-B_msZcLx.js → skills-page-ADUi69Fa.js} +2 -2
- package/dist/gateway/static/root/assets/{skills-page-B_msZcLx.js.map → skills-page-ADUi69Fa.js.map} +1 -1
- package/dist/gateway/static/root/assets/{use-image-provider-credentials-Bs8xl2E3.js → use-image-provider-credentials-C4x4dNv2.js} +2 -2
- package/dist/gateway/static/root/assets/{use-image-provider-credentials-Bs8xl2E3.js.map → use-image-provider-credentials-C4x4dNv2.js.map} +1 -1
- package/dist/gateway/static/root/index.html +2 -2
- package/dist/package.js +1 -1
- package/dist/src/cli/commands/tunnel.js +69 -8
- package/dist/src/cli/commands/tunnel.js.map +1 -1
- package/dist/src/config/schema.d.ts +2 -0
- package/dist/src/config/schema.js +2 -0
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +2 -5
- package/dist/src/gateway/hono/lib/config-payload.js +3 -5
- package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
- package/dist/src/gateway/hono/routes/tunnel.js +12 -10
- package/dist/src/gateway/hono/routes/tunnel.js.map +1 -1
- package/dist/src/tunnel/acme-client.d.ts +11 -0
- package/dist/src/tunnel/acme-client.js +54 -10
- package/dist/src/tunnel/acme-client.js.map +1 -1
- package/dist/src/tunnel/env.d.ts +14 -3
- package/dist/src/tunnel/env.js +34 -5
- package/dist/src/tunnel/env.js.map +1 -1
- package/dist/src/tunnel/frpc-binary.d.ts +6 -1
- package/dist/src/tunnel/frpc-binary.js +66 -40
- package/dist/src/tunnel/frpc-binary.js.map +1 -1
- package/dist/src/tunnel/frpc-extract.d.ts +10 -0
- package/dist/src/tunnel/frpc-extract.js +129 -0
- package/dist/src/tunnel/frpc-extract.js.map +1 -0
- package/dist/src/tunnel/gateway-lifecycle.d.ts +3 -1
- package/dist/src/tunnel/gateway-lifecycle.js +6 -4
- package/dist/src/tunnel/gateway-lifecycle.js.map +1 -1
- package/dist/src/tunnel/index.d.ts +3 -1
- package/dist/src/tunnel/index.js +2 -2
- package/dist/src/tunnel/tls-server.js +5 -0
- package/dist/src/tunnel/tls-server.js.map +1 -1
- package/dist/src/tunnel/tunnel-config.js +11 -1
- package/dist/src/tunnel/tunnel-config.js.map +1 -1
- package/dist/src/tunnel/tunnel-e2e-config.d.ts +4 -1
- package/dist/src/tunnel/tunnel-e2e-config.js +10 -3
- package/dist/src/tunnel/tunnel-e2e-config.js.map +1 -1
- package/dist/src/tunnel/tunnel-service.d.ts +4 -0
- package/dist/src/tunnel/tunnel-service.js +66 -5
- package/dist/src/tunnel/tunnel-service.js.map +1 -1
- package/dist/src/tunnel/tunnel-types.d.ts +16 -0
- package/package.json +3 -3
- package/dist/gateway/static/root/assets/index-B5gp15_q.css +0 -1
- package/dist/gateway/static/root/assets/settings-page-B0spIRVS.js +0 -3
- package/dist/gateway/static/root/assets/settings-page-B0spIRVS.js.map +0 -1
package/dist/gateway/static/root/assets/{cron-page-CCn-JwBy.js.map → cron-page-CKqDtScu.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron-page-CCn-JwBy.js","names":["Dialog","Button","MessageBundle","CronCopy","CronConfirmActionDialogProps","open","onOpenChange","action","c","onDismiss","onConfirm","CronConfirmActionDialog","t0","$","_c","t1","Symbol","for","t2","delete","runNow","t3","t4","confirmDelete","confirmRun","t5","t6","cancel","t7","undefined","t8","t9","t10","t11","t12","t13","formControlBorderFocusClass","nativeSelectMaxWidthClass","selectControlBaseClass","cn","RUN_HISTORY_FETCH_LIMIT","DEFAULT_SCHEDULE","RECENT_WD_STORAGE_KEY","RECENT_WD_MAX","startOfLocalDay","d","Date","x","setHours","startOfLocalWeekMonday","day","getDay","diff","setDate","getDate","startOfLocalMonth","getFullYear","getMonth","navigateToSessionChat","sessionKey","sk","trim","window","dispatchEvent","CustomEvent","detail","bubbles","pushRecentWorkspaceDirForCron","path","t","raw","localStorage","getItem","parsed","JSON","parse","prev","Array","isArray","filter","length","next","p","slice","setItem","stringify","inputClassName","disabled","selectClassName","cronRecipientSelectClass","cronToolbarSelectClass","Dialog","Loader2","X","MarkdownView","Button","CronJob","CronJobExecution","cronJobBodyText","navigateToSessionChat","execStatusLabel","formatDeliveryToSummary","formatDuration","formatNextRun","formatTime","truncate","MessageBundle","cn","CronCopy","CronJobDetailDrawerProps","open","onDismiss","detailJob","detailLoading","detailHistory","c","chatWorkingDirNotSet","statusLabels","running","success","failed","cancelled","CronJobDetailDrawer","t0","$","_c","t1","next","t2","Symbol","for","t3","t4","id","name","trim","t5","t6","t7","close","t8","t9","agentProfile","agentProfileDefault","channelLocal","colChat","colDetail","colDuration","colStarted","deliveryLocalOnly","deliveryTarget","deliveryTargetLocalChannel","detailRunHistory","disabled","enabled","messageLabel","mode","modeAgentOption","modeDirectOption","nextRun","noRunsYet","openChat","openChatTitle","scheduleLabel","status","timeLabels","workingDirectoryLabel","schedule","sessionTarget","agentId","workingDirectory","delivery","channel","to","next_run","length","map","row","startedAt","duration","summary","error","sessionKey","t10","t11","undefined","t12","Dialog","Eye","FolderInput","RefreshCw","SquarePen","X","MarkdownEditor","MarkdownView","Button","ChatAgentOption","ModelSelector","folderDisplayName","WorkingDirectoryPickerModal","ChannelStatus","SessionChatId","CronSchedulePicker","formatRecipientOptionLabel","cronRecipientSelectClass","inputClassName","selectClassName","agentListDisplayName","MessageBundle","cn","interaction","CronCopy","CronJobFormDialogProps","open","onRequestClose","c","chatM","agentsMessages","isDark","channels","sessionChatIds","cronAgentSelectOptions","hasElectronFolderPicker","openNativeFolderPicker","Promise","applyWorkingDirectory","path","wdModalOpen","onWdModalOpenChange","defaultModelResolver","formMode","formJobId","formName","onFormNameChange","v","formSchedule","onFormScheduleChange","formSubmitting","formSessionTarget","onFormSessionTargetChange","target","defaultModelFallback","currentModel","formAgentLocalOnly","onFormAgentLocalOnlyChange","formModel","onFormModelUserChange","id","formAgentId","onFormAgentIdChange","formWorkingDirectory","onFormWorkingDirectoryChange","formChannel","onFormChannelChange","channel","formChatId","onFormChatIdChange","formMessage","onFormMessageChange","formMessageMdMode","onSetMessageMdMode","mode","messageEditorNonce","needsDeliveryChat","showChannelPicker","canSubmit","onSubmit","onRefreshRecipients","CronJobFormDialog","props","$","_c","t0","o","t1","Symbol","for","t2","editJob","addJob","t3","t4","t5","close","t6","t7","name","t8","t9","e_0","e","value","t10","namePlaceholder","t11","t12","schedulePicker","t13","t14","t15","e_1","trim","t16","modeDirectOption","t17","modeAgentOption","t18","t19","modeDirect","modeAgent","t20","t21","t22","agentLocalOnly","agentLocalOnlyHint","agentProfile","agentProfileDefault","agentProfileHint","model","workingDirectoryHint","workingDirectoryLabel","workingDirectoryReset","modelPlaceholder","modelSearchPlaceholder","modelNoMatches","e_2","map","ag","transition","focusRingPanel","workingDirectory","chooseFolder","selectWorkingDirectory","e_3","stopPropagation","picked","notSet","e_4","checked","t23","channelLocal","enterManuallyOrSelect","lastActiveLabels","noRecentChats","noRecentChatsOption","recipient","recipientPlaceholder","refreshList","refreshRecipientHint","selectRecipient","e_5","v_0","_temp2","e_6","e_7","v_1","length","item","chatId","t24","message","t25","t26","t27","t28","t29","messageEdit","t30","t31","t32","t33","t34","messagePreview","t35","t36","t37","t38","t39","messagePlaceholder","t40","t41","messageMarkdownHint","t42","t43","t44","cancel","t45","t46","loading","save","create","t47","t48","t49","_temp","t50","t51","undefined","p","t52","ch","enabled","preventDefault","segmentedThumbActiveClassName","segmentedThumbBaseClassName","segmentedTrackClassName","CronJob","cronToolbarSelectClass","MessageBundle","cn","CronCopy","CronMainToolbarProps","c","mainTab","onMainTabChange","tab","jobSort","onJobSortChange","sort","historyRange","onHistoryRangeChange","range","historyJobFilter","onHistoryJobFilterChange","jobId","historyStatusFilter","onHistoryStatusFilterChange","status","jobs","CronMainToolbar","t0","$","_c","t1","title","t2","t3","t4","t5","t6","tabMyTasks","t7","t8","t9","t10","t11","tabSystemTasks","t12","t13","t14","t15","t16","tabRunHistory","t17","t18","t19","t20","sortCreatedAsc","sortCreatedDesc","e","target","value","t21","execStatusCancelled","execStatusFailed","execStatusRunning","execStatusSuccess","filterAllStatuses","filterAllTasks","historyRangeDay","historyRangeMonth","historyRangeWeek","runHistoryTitle","const","map","r","e_0","_temp","e_1","t22","t23","j","id","name","LayoutTemplate","Plus","RefreshCw","Button","MessageBundle","cn","CronCopy","CronPageHeaderActionsProps","c","loading","runHistoryLoading","onRefresh","onOpenTemplatePicker","onAddJob","CronPageHeaderActions","t0","$","_c","busy","t1","refresh","t2","t3","t4","t5","t6","t7","t8","Symbol","for","t9","fromTemplate","t10","t11","addJob","t12","Clock","Loader2","RefreshCw","Button","CronJob","CronRunHistoryRow","navigateToSessionChat","execStatusLabel","formatDuration","formatTime","truncate","MessageBundle","cn","CronCopy","CronRunHistorySectionProps","c","runHistoryLoading","runHistory","filteredRunHistory","jobs","onRefreshHistory","onOpenJobDetail","job","statusLabels","running","success","failed","cancelled","CronRunHistorySection","t0","$","_c","t1","tabRunHistory","t2","runHistoryHint","t3","t4","refresh","t5","t6","t7","t8","t9","t10","t11","t12","colChat","colDetail","colDuration","colJob","colStarted","emptyHistoryHint","emptyHistoryTitle","noRunsYet","openChat","openChatTitle","status","length","map","row","id","startedAt","some","j_0","j","jobId","find","x","jobName","duration","summary","error","sessionKey","trim","t13","DropdownMenu","Clock","MoreVertical","MarkdownView","Button","MutableRefObject","CronJob","cronJobBodyText","formatScheduleBadge","MessageBundle","cn","CronCopy","CronJobCardProps","job","c","localeTag","scheduleBadgeLabels","absorbCardClickJobIdRef","scheduleAbsorbNextMenuCardClick","jobId","onOpenDetail","onToggle","enabled","onEdit","onRunNow","onDelete","CronJobCard","t0","$","_c","t1","Symbol","for","t2","t3","current","id","e","key","preventDefault","t4","t5","t6","t7","e_0","stopPropagation","t8","t9","t10","t11","jobCardMenuAria","_temp","t12","t13","edit","t14","t15","runNow","t16","t17","delete","t18","_temp2","t19","t20","t21","name","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","e_2","e_1","ChevronRight","Info","Loader2","MutableRefObject","Link","Button","CronJob","CronJobCard","HeartbeatSettingsState","formatIntervalMsLabel","messages","MessageBundle","StoredLanguage","cn","CronCopy","CronSystemTasksPanelProps","c","language","localeTag","scheduleBadgeLabels","loading","sortedSystemJobs","heartbeat","keepAwake","wakeSupported","onWakeUnsupportedClick","onKeepAwakeToggle","absorbCardClickJobIdRef","scheduleAbsorbNextMenuCardClick","jobId","onOpenDetail","job","onToggle","enabled","onEdit","onRunNow","onDelete","CronSystemTasksPanel","t0","$","_c","t1","t10","t11","t12","t2","t3","t4","t5","t6","t7","t8","t9","disabled","systemHeartbeatEvery","systemHeartbeatHint","systemHeartbeatInterval","systemHeartbeatSettingsLink","systemHeartbeatStatus","systemHeartbeatTitle","systemTasksIntro","tabSystemTasks","wakeBanner","wakeLockUnavailable","intervalMs","hbInterval","heartbeatSettings","intervalPresets","t13","Symbol","for","t14","t15","t16","t17","undefined","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","replace","systemDreamingTitle","systemDreamingSettingsLink","systemDreamingHint","length","systemDreamingEmpty","map","id","MessageBundle","CronTemplateCopy","title","description","prompt","getCronTemplateCopy","cron","templateId","raw","templates","undefined","row","Record","trim","CRON_TEMPLATE_CATEGORIES","const","CronTemplateCategory","CronJobTemplateDef","templateId","category","defaultSchedule","defaultSessionTarget","CRON_JOB_TEMPLATES","CronTemplateId","cronTemplateById","id","find","t","Button","MessageBundle","cn","getCronTemplateCopy","CRON_JOB_TEMPLATES","CRON_TEMPLATE_CATEGORIES","CronTemplateCategory","formatScheduleBadge","ScheduleBadgeLabels","CronTemplateFilter","Props","cron","localeTag","scheduleBadgeLabels","categoryFilter","onCategoryFilterChange","next","onSelectTemplate","templateId","CronTemplateLibrary","props","$","_c","t0","filtered","filter","t","category","t1","fromTemplate","t2","t3","t4","templateFilterAll","t5","templateCategories","map","cat","t6","length","templatesEmptyHint","t_0","copy","badge","schedule","defaultSchedule","timezone","undefined","next_run","title","description","Info","Loader2","MutableRefObject","Button","CronJob","CronJobCard","CronTemplateFilter","CronTemplateLibrary","MessageBundle","cn","CronCopy","CronTasksPanelProps","c","localeTag","scheduleBadgeLabels","loading","jobsCount","sortedJobs","templateCategoryFilter","onTemplateCategoryFilterChange","v","onSelectTemplate","templateId","keepAwake","wakeSupported","onWakeUnsupportedClick","onKeepAwakeToggle","absorbCardClickJobIdRef","scheduleAbsorbNextMenuCardClick","jobId","onOpenDetail","job","onToggle","enabled","onEdit","onAddJob","onRunNow","onDelete","CronTasksPanel","t0","$","_c","t1","tabMyTasks","t2","Symbol","for","t3","wakeBanner","t4","t5","t6","wakeLockUnavailable","undefined","t7","t8","t9","t10","t11","t12","t13","t14","t15","emptyStateCta","map","id","j","j_0","en","t16","Dialog","X","Button","CronTemplateFilter","CronTemplateLibrary","MessageBundle","CronCopy","CronTemplatePickerDialogProps","open","onOpenChange","c","localeTag","scheduleBadgeLabels","categoryFilter","onCategoryFilterChange","v","onSelectTemplate","templateId","CronTemplatePickerDialog","t0","$","_c","t1","Symbol","for","t2","fromTemplate","t3","t4","close","t5","t6","t7","_temp","t8","e","preventDefault","useCallback","useEffect","useMemo","useRef","useState","ChatAgentOption","cronJobBodyText","getSessionChatIds","ChannelStatus","CronJob","SessionChatId","DEFAULT_SCHEDULE","pushRecentWorkspaceDirForCron","getCronTemplateCopy","cronTemplateById","messages","makeMessages","FormMode","FormSessionTarget","FormMessageMdMode","useCronJobForm","opts","$","_c","m","defaultModelForForm","channels","chatAgents","formOpen","setFormOpen","formMode","setFormMode","formJobId","setFormJobId","formName","setFormName","formSchedule","setFormSchedule","formChannel","setFormChannel","formChatId","setFormChatId","formMessage","setFormMessage","formMessageMdMode","setFormMessageMdMode","messageEditorNonce","setMessageEditorNonce","formSessionTarget","setFormSessionTarget","formAgentId","setFormAgentId","formAgentLocalOnly","setFormAgentLocalOnly","formWorkingDirectory","setFormWorkingDirectory","formWdModalOpen","setFormWdModalOpen","formModel","setFormModel","formSubmitting","setFormSubmitting","t0","Symbol","for","sessionChatIds","setSessionChatIds","formModelUserTouched","t1","Set","map","_temp","ids","out","t2","trim","toLowerCase","extra","has","t3","id","push","cronAgentSelectOptions","needsDeliveryChat","showChannelPicker","Boolean","canSubmit","t4","current","next","t5","t6","valid","_temp2","t7","cancelled","then","ids_0","t8","t9","job","name","schedule","String","bodyText","sessionTarget","agentId","workingDirectory","fromPayload","payload","kind","model","stored","hasLocalChannel","delivery","channel","agentLocalOnly","to","mode","parts","split","knownChannels","length","includes","slice","join","_temp3","openForm","t10","_temp4","setMessageMdMode","t11","cron","templateId","def","copy","undefined","title","defaultSchedule","prompt","defaultSessionTarget","_temp5","applyCronTemplate","t12","closeForm","t13","target","defaultModelFallback","currentModel","handleFormSessionTargetChange","t14","v","handleFormChannelChange","t15","handleFormModelUserChange","t16","refreshRecipientsList","t17","path","t","applyWorkingDirectory","t18","n_1","n","n_0","x","a","useCallback","useEffect","useRef","useState","isElectronCronDisplayWakeAvailable","WakeMode","useCronKeepAwake","opts","onUnavailable","keepAwake","setKeepAwake","wakeLockRef","WakeLockSentinel","wakeModeRef","keepAwakeRef","wakeSupported","navigator","featureAvailable","releaseWakeLock","current","window","electronAPI","cron","setDisplaySleepPrevented","release","acquireWakeLock","electronWake","undefined","sentinel","wakeLock","request","addEventListener","onVis","document","visibilityState","removeEventListener","useCallback","useEffect","useMemo","useState","fetchChatAgents","ChatAgentOption","getAllRunsHistory","getChannels","getConfig","getModels","listJobs","ChannelStatus","CronJob","CronRunHistoryRow","isDreamingManagedCronJob","RUN_HISTORY_FETCH_LIMIT","startOfLocalDay","startOfLocalMonth","startOfLocalWeekMonday","fetchGatewayConfigSwrResponse","normalizeHeartbeatFromConfig","FailMessages","failedToLoadJobs","HistoryRange","JobSort","useCronPageData","opts","hasToken","failMessages","isHistoryTab","jobs","setJobs","channels","setChannels","availableModels","setAvailableModels","id","name","provider","defaultModel","setDefaultModel","chatAgents","setChatAgents","gatewayConfigRaw","setGatewayConfigRaw","runHistory","setRunHistory","runHistoryLoading","setRunHistoryLoading","loading","setLoading","error","setError","loadJobs","list","e","Error","message","loadAux","ch","mods","cfg","cfgFull","agentsPayload","Promise","all","catch","model","payload","config","items","loadRunHistoryOnly","rows","onReload","then","r","window","addEventListener","removeEventListener","userCronJobs","filter","j","systemCronJobs","heartbeatFromConfig","refreshAll","sortJobsByCreated","arr","sort","next","a","b","ta","Date","created_at","getTime","tb","filterRunHistory","range","jobFilter","statusFilter","now","from","row","startedAt","jobId","status","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","useLocation","addJob","getHistory","getJob","removeJob","runJob","toggleJob","updateJob","CronDelivery","CronJob","CronJobExecution","CronPayload","CronConfirmActionDialog","CronJobDetailDrawer","CronJobFormDialog","CronMainToolbar","CronPageHeaderActions","CronRunHistorySection","CronSystemTasksPanel","CronTasksPanel","CronTemplateFilter","CronTemplatePickerDialog","useCronJobForm","useCronKeepAwake","filterRunHistory","sortJobsByCreated","useCronPageData","HistoryRange","JobSort","messages","useGatewayStore","useLocaleStore","usePageHeaderStore","useThemeStore","CronPage","language","s","m","c","cron","chatM","chat","token","st","hasToken","Boolean","resolvedTheme","resolved","isDark","localeTag","mainTab","setMainTab","jobSort","setJobSort","historyRange","setHistoryRange","historyJobFilter","setHistoryJobFilter","historyStatusFilter","setHistoryStatusFilter","data","failMessages","failedToLoadJobs","isHistoryTab","setError","keepAwakeHook","onUnavailable","wakeLockUnavailable","defaultModelForForm","defaultModel","availableModels","length","id","form","channels","chatAgents","detailOpen","setDetailOpen","detailJob","setDetailJob","detailHistory","setDetailHistory","detailLoading","setDetailLoading","confirmOpen","setConfirmOpen","confirmAction","setConfirmAction","confirmJobId","setConfirmJobId","templatePickerOpen","setTemplatePickerOpen","templateCategoryFilter","setTemplateCategoryFilter","absorbCardClickJobIdRef","scheduleAbsorbNextMenuCardClick","jobId","current","window","setTimeout","hasElectronFolderPicker","electronAPI","file","openDirectory","openNativeFolderPickerCron","Promise","api","undefined","onSelectTemplate","templateId","ok","applyCronTemplate","submitForm","formName","trim","nameRequired","formSchedule","formMessage","scheduleRequired","needsDeliveryChat","formChatId","chatIdRequired","setFormSubmitting","message","delivery","formSessionTarget","formAgentLocalOnly","mode","formChannel","channel","to","payload","kind","formModel","model","text","modelTrimmed","agentIdTrim","formAgentId","toLowerCase","agentIdForEdit","wdTrim","formWorkingDirectory","jobData","name","schedule","sessionTarget","formMode","agentId","workingDirectory","formJobId","sched","rest","closeForm","loadJobs","loadAux","e","Error","failedToUpdateJob","failedToCreateJob","openDetail","job","full","onToggle","enabled","failedToToggleJob","runConfirm","action","loadRunHistoryOnly","actionFailed","onKey","KeyboardEvent","key","formOpen","document","addEventListener","removeEventListener","statusLabels","running","execStatusRunning","success","execStatusSuccess","failed","execStatusFailed","cancelled","execStatusCancelled","sortedUserJobs","userCronJobs","sortedSystemJobs","systemCronJobs","filteredRunHistory","runHistory","scheduleBadgeLabels","scheduleBadge","setPageHeader","clearPageHeader","pathname","inSettingsShell","startsWith","cronHeaderEnd","loading","runHistoryLoading","refreshAll","openForm","startExtra","main","end","needToken","error","title","subtitle","jobs","keepAwake","featureAvailable","setKeepAwake","v","j","en","heartbeatFromConfig","agentsSettings","sessionChatIds","cronAgentSelectOptions","applyWorkingDirectory","formWdModalOpen","setFormWdModalOpen","setFormName","setFormSchedule","formSubmitting","handleFormSessionTargetChange","setFormAgentLocalOnly","handleFormModelUserChange","setFormAgentId","setFormWorkingDirectory","handleFormChannelChange","setFormChatId","setFormMessage","formMessageMdMode","setMessageMdMode","messageEditorNonce","showChannelPicker","canSubmit","refreshRecipientsList","openNext","notSet"],"sources":["../../../../../web/src/features/cron/cron-confirm-action-dialog.tsx","../../../../../web/src/features/cron/cron-page-lib.ts","../../../../../web/src/features/cron/cron-job-detail-drawer.tsx","../../../../../web/src/features/cron/cron-job-form-dialog.tsx","../../../../../web/src/features/cron/cron-main-toolbar.tsx","../../../../../web/src/features/cron/cron-page-header-actions.tsx","../../../../../web/src/features/cron/cron-run-history-section.tsx","../../../../../web/src/features/cron/cron-job-card.tsx","../../../../../web/src/features/cron/cron-system-tasks-panel.tsx","../../../../../web/src/features/cron/cron-template-i18n.ts","../../../../../web/src/features/cron/cron-templates.ts","../../../../../web/src/features/cron/cron-template-library.tsx","../../../../../web/src/features/cron/cron-tasks-panel.tsx","../../../../../web/src/features/cron/cron-template-picker-dialog.tsx","../../../../../web/src/features/cron/use-cron-job-form.ts","../../../../../web/src/features/cron/use-cron-keep-awake.ts","../../../../../web/src/features/cron/use-cron-page-data.ts","../../../../../web/src/features/cron/cron-page.tsx"],"sourcesContent":["import * as Dialog from '@radix-ui/react-dialog';\n\nimport { Button } from '@/components/ui/button';\nimport type { MessageBundle } from '@/i18n/messages';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronConfirmActionDialogProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n action: 'delete' | 'run' | null;\n c: CronCopy;\n onDismiss: () => void;\n onConfirm: () => void;\n};\n\nexport function CronConfirmActionDialog({\n open,\n onOpenChange,\n action,\n c,\n onDismiss,\n onConfirm,\n}: CronConfirmActionDialogProps) {\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-[70] bg-scrim\" />\n <div className=\"fixed inset-0 z-[70] flex items-center justify-center p-4 pointer-events-none\">\n <Dialog.Content className=\"xopc-dialog-content-pane pointer-events-auto relative w-full max-w-md rounded-xl border border-edge bg-surface-panel p-4 shadow-popover dark:border-edge\">\n <Dialog.Title className=\"text-base font-semibold text-fg\">\n {action === 'delete' ? c.delete : c.runNow}\n </Dialog.Title>\n <p className=\"mt-2 text-sm text-fg-muted\">\n {action === 'delete' ? c.confirmDelete : c.confirmRun}\n </p>\n <div className=\"mt-4 flex justify-end gap-2\">\n <Button type=\"button\" variant=\"secondary\" onClick={onDismiss}>\n {c.cancel}\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n className={action === 'delete' ? 'bg-red-600 hover:bg-red-700' : undefined}\n onClick={() => void onConfirm()}\n >\n {action === 'delete' ? c.delete : c.runNow}\n </Button>\n </div>\n </Dialog.Content>\n </div>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import {\n formControlBorderFocusClass,\n nativeSelectMaxWidthClass,\n selectControlBaseClass,\n} from '@/lib/form-field-width';\nimport { cn } from '@/lib/cn';\n\nexport const RUN_HISTORY_FETCH_LIMIT = 400;\n\nexport const DEFAULT_SCHEDULE = '*/5 * * * *';\n\n/** Same storage key as chat composer so recent folders stay in sync. */\nexport const RECENT_WD_STORAGE_KEY = 'xopc.recentWorkspaceDirs.v1';\nexport const RECENT_WD_MAX = 10;\n\nexport function startOfLocalDay(d: Date): Date {\n const x = new Date(d);\n x.setHours(0, 0, 0, 0);\n return x;\n}\n\n/** Week starts on Monday (local). */\nexport function startOfLocalWeekMonday(d: Date): Date {\n const x = startOfLocalDay(d);\n const day = x.getDay();\n const diff = day === 0 ? -6 : 1 - day;\n x.setDate(x.getDate() + diff);\n return x;\n}\n\nexport function startOfLocalMonth(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), 1, 0, 0, 0, 0);\n}\n\nexport function navigateToSessionChat(sessionKey: string | undefined | null): void {\n const sk = sessionKey?.trim();\n if (!sk) return;\n window.dispatchEvent(\n new CustomEvent('navigate-to-chat', { detail: { sessionKey: sk }, bubbles: true }),\n );\n}\n\nexport function pushRecentWorkspaceDirForCron(path: string): void {\n const t = path.trim();\n if (!t) return;\n try {\n const raw = localStorage.getItem(RECENT_WD_STORAGE_KEY);\n const parsed = raw ? (JSON.parse(raw) as unknown) : [];\n const prev = Array.isArray(parsed)\n ? parsed.filter((x): x is string => typeof x === 'string' && x.trim().length > 0)\n : [];\n const next = [t, ...prev.filter((p) => p !== t)].slice(0, RECENT_WD_MAX);\n localStorage.setItem(RECENT_WD_STORAGE_KEY, JSON.stringify(next));\n } catch {\n /* ignore */\n }\n}\n\nexport function inputClassName(disabled?: boolean): string {\n return cn(\n 'w-full rounded-md border border-edge bg-surface-base px-3 py-2 text-sm text-fg placeholder:text-fg-disabled',\n formControlBorderFocusClass,\n disabled && 'cursor-not-allowed opacity-60',\n );\n}\n\nexport function selectClassName(): string {\n return cn(selectControlBaseClass, nativeSelectMaxWidthClass);\n}\n\nexport const cronRecipientSelectClass = cn(\n selectControlBaseClass,\n 'w-full text-xs sm:w-auto sm:min-w-[11rem] sm:max-w-[17rem] sm:shrink-0',\n);\n\n/** Toolbar filters: avoid `w-full` from {@link nativeSelectMaxWidthClass} so Day/Week/Month + selects stay one row. */\nexport const cronToolbarSelectClass = cn(\n selectControlBaseClass,\n 'w-auto min-w-[9rem] max-w-[14rem] shrink-0 text-xs',\n);\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { Loader2, X } from 'lucide-react';\n\nimport { MarkdownView } from '@/components/markdown/markdown-view';\nimport { Button } from '@/components/ui/button';\nimport type { CronJob, CronJobExecution } from '@/features/cron/cron-api';\nimport { cronJobBodyText } from '@/features/cron/cron-api';\nimport { navigateToSessionChat } from '@/features/cron/cron-page-lib';\nimport {\n execStatusLabel,\n formatDeliveryToSummary,\n formatDuration,\n formatNextRun,\n formatTime,\n truncate,\n} from '@/features/cron/cron-utils';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronJobDetailDrawerProps = {\n open: boolean;\n onDismiss: () => void;\n detailJob: CronJob | null;\n detailLoading: boolean;\n detailHistory: CronJobExecution[];\n c: CronCopy;\n chatWorkingDirNotSet: string;\n statusLabels: {\n running: string;\n success: string;\n failed: string;\n cancelled: string;\n };\n};\n\nexport function CronJobDetailDrawer({\n open,\n onDismiss,\n detailJob,\n detailLoading,\n detailHistory,\n c,\n chatWorkingDirNotSet,\n statusLabels,\n}: CronJobDetailDrawerProps) {\n return (\n <Dialog.Root\n open={open}\n onOpenChange={(next) => {\n if (!next) onDismiss();\n }}\n >\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-[60] bg-scrim\" />\n <Dialog.Content\n className={cn(\n 'xopc-drawer-right fixed right-0 top-0 z-[60] flex size-full max-w-lg flex-col border-l border-edge bg-surface-panel shadow-popover outline-none',\n 'dark:border-edge',\n )}\n aria-describedby={undefined}\n >\n <div className=\"flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3\">\n <Dialog.Title className=\"min-w-0 truncate text-base font-semibold text-fg\">\n {detailJob?.name?.trim() || detailJob?.id || '—'}\n </Dialog.Title>\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"size-9 shrink-0 p-0\" aria-label={c.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-3\">\n {detailLoading ? (\n <div className=\"flex justify-center py-16\">\n <Loader2 className=\"size-8 animate-spin text-accent\" strokeWidth={1.75} />\n </div>\n ) : detailJob ? (\n <>\n <dl className=\"space-y-3 text-sm\">\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.scheduleLabel}</dt>\n <dd className=\"mt-1 font-mono text-fg\">\n <code>{detailJob.schedule}</code>\n </dd>\n </div>\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.messageLabel}</dt>\n <dd className=\"mt-1 min-w-0 break-words text-fg\">\n <MarkdownView content={cronJobBodyText(detailJob)} compact className=\"text-sm\" />\n </dd>\n </div>\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.mode}</dt>\n <dd className=\"mt-1 text-fg\">\n {detailJob.sessionTarget === 'isolated' ? c.modeAgentOption : c.modeDirectOption}\n </dd>\n </div>\n {detailJob.sessionTarget === 'isolated' ? (\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.agentProfile}</dt>\n <dd className=\"mt-1 font-mono text-sm text-fg\">\n {detailJob.agentId?.trim() ? detailJob.agentId.trim() : c.agentProfileDefault}\n </dd>\n </div>\n ) : null}\n {detailJob.sessionTarget === 'isolated' ? (\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.workingDirectoryLabel}</dt>\n <dd className=\"mt-1 break-all font-mono text-xs text-fg\">\n {detailJob.workingDirectory?.trim()\n ? detailJob.workingDirectory.trim()\n : chatWorkingDirNotSet}\n </dd>\n </div>\n ) : null}\n {detailJob.delivery?.channel === 'local' ||\n (detailJob.sessionTarget === 'isolated' && !detailJob.delivery?.to) ? (\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.deliveryTarget}</dt>\n <dd className=\"mt-1 text-fg\">\n {detailJob.delivery?.channel === 'local'\n ? c.deliveryTargetLocalChannel\n : c.deliveryLocalOnly}\n </dd>\n </div>\n ) : detailJob.delivery?.to ? (\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.deliveryTarget}</dt>\n <dd className=\"mt-1 break-words text-fg\">\n <code className=\"text-xs\">{detailJob.delivery?.channel ?? ''}</code>\n {' → '}\n {formatDeliveryToSummary(detailJob, c.channelLocal)}\n </dd>\n </div>\n ) : null}\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.status}</dt>\n <dd className=\"mt-1 text-fg\">{detailJob.enabled ? c.enabled : c.disabled}</dd>\n </div>\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.nextRun}</dt>\n <dd className=\"mt-1 text-fg\">\n {detailJob.next_run ? formatNextRun(detailJob.next_run, c.timeLabels) : '—'}\n </dd>\n </div>\n </dl>\n <h3 className=\"mt-6 text-sm font-semibold text-fg\">{c.detailRunHistory}</h3>\n {detailHistory.length === 0 ? (\n <p className=\"mt-2 text-sm text-fg-muted\">{c.noRunsYet}</p>\n ) : (\n <div className=\"mt-2 overflow-x-auto\">\n <table className=\"w-full border-collapse text-left text-xs\">\n <thead>\n <tr className=\"border-b border-edge text-fg-muted\">\n <th className=\"py-1.5 pr-2 font-medium\">{c.colStarted}</th>\n <th className=\"py-1.5 pr-2 font-medium\">{c.status}</th>\n <th className=\"py-1.5 pr-2 font-medium\">{c.colDuration}</th>\n <th className=\"py-1.5 pr-2 font-medium\">{c.colDetail}</th>\n <th className=\"py-1.5 font-medium\">{c.colChat}</th>\n </tr>\n </thead>\n <tbody>\n {detailHistory.map((row) => (\n <tr key={row.id} className=\"border-b border-edge/60\">\n <td className=\"whitespace-nowrap py-1.5 pr-2 text-fg\">\n <time dateTime={row.startedAt}>{formatTime(row.startedAt)}</time>\n </td>\n <td className=\"py-1.5 pr-2\">\n <span\n className={cn(\n 'inline-flex rounded px-1.5 py-0.5 font-medium',\n row.status === 'success' &&\n 'bg-emerald-500/15 text-emerald-800 dark:text-emerald-300',\n row.status === 'failed' && 'bg-red-500/15 text-red-800 dark:text-red-300',\n )}\n >\n {execStatusLabel(row.status, statusLabels)}\n </span>\n </td>\n <td className=\"py-1.5 pr-2 text-fg-muted\">{formatDuration(row.duration)}</td>\n <td\n className=\"max-w-[8rem] truncate py-1.5 pr-2 text-fg-muted\"\n title={row.summary || row.error || ''}\n >\n {truncate(row.summary || row.error, 120)}\n </td>\n <td className=\"whitespace-nowrap py-1.5\">\n {row.sessionKey?.trim() ? (\n <button\n type=\"button\"\n className=\"text-xs font-medium text-accent hover:underline\"\n title={c.openChatTitle}\n aria-label={c.openChatTitle}\n onClick={() => navigateToSessionChat(row.sessionKey)}\n >\n {c.openChat}\n </button>\n ) : (\n <span className=\"text-fg-disabled\">—</span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </>\n ) : null}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { Eye, FolderInput, RefreshCw, SquarePen, X } from 'lucide-react';\n\nimport { MarkdownEditor } from '@/components/markdown/markdown-editor';\nimport { MarkdownView } from '@/components/markdown/markdown-view';\nimport { Button } from '@/components/ui/button';\nimport type { ChatAgentOption } from '@/features/chat/chat-agents-api';\nimport { ModelSelector } from '@/features/chat/model-selector';\nimport { folderDisplayName } from '@/features/chat/session-working-directory-control';\nimport { WorkingDirectoryPickerModal } from '@/features/chat/working-directory-picker-modal';\nimport type { ChannelStatus, SessionChatId } from '@/features/cron/cron-api';\nimport { CronSchedulePicker } from '@/features/cron/cron-schedule-form';\nimport { formatRecipientOptionLabel } from '@/features/cron/cron-utils';\nimport {\n cronRecipientSelectClass,\n inputClassName,\n selectClassName,\n} from '@/features/cron/cron-page-lib';\nimport { agentListDisplayName } from '@/features/settings/agents/agent-display-names';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronJobFormDialogProps = {\n open: boolean;\n onRequestClose: () => void;\n c: CronCopy;\n chatM: MessageBundle['chat'];\n agentsMessages: MessageBundle['agentsSettings'];\n isDark: boolean;\n channels: ChannelStatus[];\n sessionChatIds: SessionChatId[];\n cronAgentSelectOptions: ChatAgentOption[];\n hasElectronFolderPicker: boolean;\n openNativeFolderPicker: () => Promise<string | null>;\n applyWorkingDirectory: (path: string) => Promise<void>;\n wdModalOpen: boolean;\n onWdModalOpenChange: (open: boolean) => void;\n defaultModelResolver: () => string;\n formMode: 'add' | 'edit';\n formJobId: string | null;\n formName: string;\n onFormNameChange: (v: string) => void;\n formSchedule: string;\n onFormScheduleChange: (v: string) => void;\n formSubmitting: boolean;\n formSessionTarget: 'main' | 'isolated';\n onFormSessionTargetChange: (\n target: 'main' | 'isolated',\n defaultModelFallback: () => string,\n currentModel: string,\n ) => void;\n formAgentLocalOnly: boolean;\n onFormAgentLocalOnlyChange: (v: boolean) => void;\n formModel: string;\n onFormModelUserChange: (id: string) => void;\n formAgentId: string;\n onFormAgentIdChange: (v: string) => void;\n formWorkingDirectory: string;\n onFormWorkingDirectoryChange: (v: string) => void;\n formChannel: string;\n onFormChannelChange: (channel: string) => void;\n formChatId: string;\n onFormChatIdChange: (v: string) => void;\n formMessage: string;\n onFormMessageChange: (v: string) => void;\n formMessageMdMode: 'edit' | 'preview';\n onSetMessageMdMode: (mode: 'edit' | 'preview') => void;\n messageEditorNonce: number;\n needsDeliveryChat: boolean;\n showChannelPicker: boolean;\n canSubmit: boolean;\n onSubmit: () => void;\n onRefreshRecipients: () => void;\n};\n\nexport function CronJobFormDialog(props: CronJobFormDialogProps) {\n const {\n open,\n onRequestClose,\n c,\n chatM,\n agentsMessages,\n isDark,\n channels,\n sessionChatIds,\n cronAgentSelectOptions,\n hasElectronFolderPicker,\n openNativeFolderPicker,\n applyWorkingDirectory,\n wdModalOpen,\n onWdModalOpenChange,\n defaultModelResolver,\n formMode,\n formJobId,\n formName,\n onFormNameChange,\n formSchedule,\n onFormScheduleChange,\n formSubmitting,\n formSessionTarget,\n onFormSessionTargetChange,\n formAgentLocalOnly,\n onFormAgentLocalOnlyChange,\n formModel,\n onFormModelUserChange,\n formAgentId,\n onFormAgentIdChange,\n formWorkingDirectory,\n onFormWorkingDirectoryChange,\n formChannel,\n onFormChannelChange,\n formChatId,\n onFormChatIdChange,\n formMessage,\n onFormMessageChange,\n formMessageMdMode,\n onSetMessageMdMode,\n messageEditorNonce,\n needsDeliveryChat,\n showChannelPicker,\n canSubmit,\n onSubmit,\n onRefreshRecipients,\n } = props;\n\n return (\n <>\n <Dialog.Root open={open} onOpenChange={(o) => !o && onRequestClose()}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-[60] bg-scrim\" />\n <div className=\"fixed inset-0 z-[60] flex items-center justify-center p-4 pointer-events-none\">\n <Dialog.Content\n className=\"xopc-dialog-content-pane pointer-events-auto relative flex max-h-[min(90vh,800px)] w-full max-w-md flex-col rounded-xl border border-edge bg-surface-panel shadow-popover outline-none sm:max-w-lg lg:max-w-xl dark:border-edge\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <div className=\"flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3\">\n <Dialog.Title className=\"text-base font-semibold text-fg\">\n {formMode === 'edit' ? c.editJob : c.addJob}\n </Dialog.Title>\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"size-9 shrink-0 p-0\" aria-label={c.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-3\">\n <div className=\"flex flex-col gap-3\">\n <label className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.name}</span>\n <input\n type=\"text\"\n className={inputClassName()}\n value={formName}\n onChange={(e) => onFormNameChange(e.target.value)}\n placeholder={c.namePlaceholder}\n />\n </label>\n <CronSchedulePicker\n value={formSchedule}\n onChange={onFormScheduleChange}\n disabled={formSubmitting}\n labels={c.schedulePicker}\n />\n <label className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.mode}</span>\n <select\n className={selectClassName()}\n value={formSessionTarget}\n onChange={(e) => {\n const v = e.target.value as 'main' | 'isolated';\n onFormSessionTargetChange(v, defaultModelResolver, formModel.trim());\n }}\n >\n <option value=\"main\">{c.modeDirectOption}</option>\n <option value=\"isolated\">{c.modeAgentOption}</option>\n </select>\n <p className=\"text-xs text-fg-muted\">\n {formSessionTarget === 'main' ? c.modeDirect : c.modeAgent}\n </p>\n </label>\n {formSessionTarget === 'isolated' ? (\n <>\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.model}</span>\n <ModelSelector\n value={formModel}\n placeholder={chatM.modelPlaceholder}\n searchPlaceholder={chatM.modelSearchPlaceholder}\n noMatches={chatM.modelNoMatches}\n className=\"w-full max-w-none min-w-0\"\n popoverContentClassName=\"z-[70]\"\n onChange={onFormModelUserChange}\n />\n </div>\n <label className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.agentProfile}</span>\n <select\n className={selectClassName()}\n value={formAgentId}\n disabled={formSubmitting}\n onChange={(e) => onFormAgentIdChange(e.target.value)}\n >\n <option value=\"\">{c.agentProfileDefault}</option>\n {cronAgentSelectOptions.map((ag) => (\n <option key={ag.id} value={ag.id}>\n {`${ag.id} — ${agentListDisplayName(ag, agentsMessages)}`}\n </option>\n ))}\n </select>\n <p className=\"text-xs text-fg-muted\">{c.agentProfileHint}</p>\n </label>\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.workingDirectoryLabel}</span>\n <div className=\"flex flex-wrap items-center gap-2\">\n <button\n type=\"button\"\n disabled={formSubmitting}\n className={cn(\n 'inline-flex min-h-8 max-w-[min(16rem,48vw)] min-w-0 shrink-0 items-center gap-1 rounded-lg px-2 py-1 text-xs',\n 'border border-edge-subtle/80 bg-surface-hover/40 dark:border-edge-subtle',\n interaction.transition,\n interaction.focusRingPanel,\n 'cursor-pointer hover:bg-surface-hover/70 dark:hover:bg-surface-hover/50',\n formSubmitting && 'cursor-not-allowed opacity-60',\n )}\n title={\n formWorkingDirectory.trim()\n ? `${formWorkingDirectory.trim()}\\n${chatM.workingDirectory.chooseFolder}`\n : `${c.workingDirectoryHint}\\n${chatM.workingDirectory.selectWorkingDirectory}`\n }\n onClick={(e) => {\n e.stopPropagation();\n if (formSubmitting) return;\n if (hasElectronFolderPicker) {\n void (async () => {\n const picked = await openNativeFolderPicker();\n if (picked) void applyWorkingDirectory(picked);\n })();\n } else {\n onWdModalOpenChange(true);\n }\n }}\n >\n <FolderInput className=\"size-3.5 shrink-0 text-fg-muted\" aria-hidden />\n <span className=\"min-w-0 truncate text-left font-medium text-fg\">\n {formWorkingDirectory.trim()\n ? folderDisplayName(formWorkingDirectory.trim())\n : chatM.workingDirectory.notSet}\n </span>\n </button>\n {formWorkingDirectory.trim() ? (\n <button\n type=\"button\"\n disabled={formSubmitting}\n className=\"text-xs font-medium text-accent hover:underline disabled:opacity-50\"\n onClick={() => onFormWorkingDirectoryChange('')}\n >\n {c.workingDirectoryReset}\n </button>\n ) : null}\n </div>\n <p className=\"text-xs text-fg-muted\">{c.workingDirectoryHint}</p>\n </div>\n <label className=\"flex cursor-pointer items-start gap-2 rounded-md bg-surface-hover/45 px-3 py-2 dark:bg-surface-hover/30\">\n <input\n type=\"checkbox\"\n className={cn('ui-checkbox', 'mt-0.5')}\n checked={formAgentLocalOnly}\n onChange={(e) => onFormAgentLocalOnlyChange(e.target.checked)}\n aria-label={c.agentLocalOnly}\n />\n <span>\n <span className=\"text-sm font-medium text-fg\">{c.agentLocalOnly}</span>\n <p className=\"mt-1 text-xs text-fg-muted\">{c.agentLocalOnlyHint}</p>\n </span>\n </label>\n </>\n ) : null}\n {showChannelPicker ? (\n <>\n <label className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.channel}</span>\n <select\n className={selectClassName()}\n value={formChannel}\n onChange={(e) => {\n const v = e.target.value;\n onFormChannelChange(v);\n }}\n >\n <option value=\"local\">{c.channelLocal}</option>\n {channels.map((ch) => (\n <option key={ch.name} value={ch.name} disabled={!ch.enabled}>\n {ch.name} {!ch.enabled ? '(disabled)' : ''}\n </option>\n ))}\n </select>\n </label>\n {needsDeliveryChat ? (\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.recipient}</span>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-7 gap-1 px-2 text-xs\"\n title={c.refreshRecipientHint}\n onClick={() => void onRefreshRecipients()}\n >\n <RefreshCw className=\"size-3.5\" strokeWidth={1.75} />\n {c.refreshList}\n </Button>\n </div>\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-stretch sm:gap-2\">\n <input\n type=\"text\"\n className={cn(inputClassName(), 'min-w-0 w-full sm:flex-1')}\n value={formChatId}\n onChange={(e) => onFormChatIdChange(e.target.value)}\n placeholder={c.recipientPlaceholder}\n />\n <select\n className={cronRecipientSelectClass}\n value={formChatId}\n onChange={(e) => {\n const v = e.target.value;\n if (v) onFormChatIdChange(v);\n }}\n >\n <option value=\"\">{c.selectRecipient}</option>\n {sessionChatIds.length > 0 ? (\n sessionChatIds.map((item) => (\n <option key={`${item.channel}-${item.chatId}`} value={item.chatId}>\n {formatRecipientOptionLabel(item, c.lastActiveLabels)}\n </option>\n ))\n ) : (\n <option value=\"\" disabled>\n {c.noRecentChatsOption}\n </option>\n )}\n </select>\n </div>\n <p className=\"text-xs text-fg-muted\">\n {sessionChatIds.length > 0 ? c.enterManuallyOrSelect : c.noRecentChats}\n </p>\n </div>\n ) : null}\n </>\n ) : null}\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.message}</span>\n <div className=\"inline-flex rounded-lg border border-edge bg-surface-base p-0.5 dark:border-edge\">\n <button\n type=\"button\"\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-md px-2.5 py-1.5 text-xs font-medium',\n formMessageMdMode === 'edit'\n ? 'bg-accent-soft text-accent-fg'\n : 'text-fg-muted hover:bg-surface-hover',\n )}\n onClick={() => onSetMessageMdMode('edit')}\n >\n <SquarePen className=\"size-3.5 shrink-0\" strokeWidth={1.75} aria-hidden />\n {c.messageEdit}\n </button>\n <button\n type=\"button\"\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-md px-2.5 py-1.5 text-xs font-medium',\n formMessageMdMode === 'preview'\n ? 'bg-accent-soft text-accent-fg'\n : 'text-fg-muted hover:bg-surface-hover',\n )}\n onClick={() => onSetMessageMdMode('preview')}\n >\n <Eye className=\"size-3.5 shrink-0\" strokeWidth={1.75} aria-hidden />\n {c.messagePreview}\n </button>\n </div>\n </div>\n <div\n className={cn(\n 'overflow-hidden rounded-md border border-edge bg-surface-base dark:border-edge',\n formSubmitting && 'pointer-events-none opacity-60',\n )}\n >\n {formMessageMdMode === 'edit' ? (\n <MarkdownEditor\n key={`cron-msg-${formJobId ?? 'new'}-${messageEditorNonce}`}\n initialContent={formMessage}\n onChange={onFormMessageChange}\n isDark={isDark}\n className=\"h-[min(18rem,40vh)] min-h-[12rem]\"\n />\n ) : (\n <div className=\"h-[min(18rem,40vh)] min-h-[12rem] max-h-[min(24rem,50vh)] overflow-y-auto px-3 py-2\">\n {formMessage.trim() ? (\n <MarkdownView content={formMessage} compact className=\"text-sm\" />\n ) : (\n <p className=\"text-sm text-fg-muted\">{c.messagePlaceholder}</p>\n )}\n </div>\n )}\n </div>\n <p className=\"text-xs text-fg-muted\">{c.messageMarkdownHint}</p>\n </div>\n </div>\n </div>\n <div className=\"flex shrink-0 justify-end gap-2 border-t border-edge px-4 py-3\">\n <Button type=\"button\" variant=\"secondary\" onClick={onRequestClose}>\n {c.cancel}\n </Button>\n <Button type=\"button\" variant=\"primary\" disabled={formSubmitting || !canSubmit} onClick={onSubmit}>\n {formSubmitting ? c.loading : formMode === 'edit' ? c.save : c.create}\n </Button>\n </div>\n </Dialog.Content>\n </div>\n </Dialog.Portal>\n </Dialog.Root>\n\n {!hasElectronFolderPicker ? (\n <WorkingDirectoryPickerModal\n open={wdModalOpen}\n onOpenChange={onWdModalOpenChange}\n initialAbsolutePath={formWorkingDirectory.trim() || undefined}\n onConfirm={async (p) => {\n await applyWorkingDirectory(p);\n onWdModalOpenChange(false);\n }}\n wd={chatM.workingDirectory}\n />\n ) : null}\n </>\n );\n}\n","import {\n segmentedThumbActiveClassName,\n segmentedThumbBaseClassName,\n segmentedTrackClassName,\n} from '@/components/ui/segmented-styles';\nimport type { CronJob } from '@/features/cron/cron-api';\nimport { cronToolbarSelectClass } from '@/features/cron/cron-page-lib';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronMainToolbarProps = {\n c: CronCopy;\n mainTab: 'myTasks' | 'systemTasks' | 'history';\n onMainTabChange: (tab: 'myTasks' | 'systemTasks' | 'history') => void;\n jobSort: 'created_desc' | 'created_asc';\n onJobSortChange: (sort: 'created_desc' | 'created_asc') => void;\n historyRange: 'day' | 'week' | 'month';\n onHistoryRangeChange: (range: 'day' | 'week' | 'month') => void;\n historyJobFilter: string;\n onHistoryJobFilterChange: (jobId: string) => void;\n historyStatusFilter: string;\n onHistoryStatusFilterChange: (status: string) => void;\n jobs: CronJob[];\n};\n\nexport function CronMainToolbar({\n c,\n mainTab,\n onMainTabChange,\n jobSort,\n onJobSortChange,\n historyRange,\n onHistoryRangeChange,\n historyJobFilter,\n onHistoryJobFilterChange,\n historyStatusFilter,\n onHistoryStatusFilterChange,\n jobs,\n}: CronMainToolbarProps) {\n return (\n <div className=\"flex flex-col gap-3 border-b border-edge-subtle pb-3 sm:flex-row sm:items-center sm:justify-between dark:border-edge-subtle\">\n <div className=\"flex gap-1\" role=\"tablist\" aria-label={c.title}>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={mainTab === 'myTasks'}\n className={cn(\n 'rounded-md px-3 py-2 text-sm font-medium transition-colors',\n mainTab === 'myTasks' ? 'text-fg' : 'text-fg-muted hover:text-fg',\n )}\n onClick={() => onMainTabChange('myTasks')}\n >\n {c.tabMyTasks}\n </button>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={mainTab === 'systemTasks'}\n className={cn(\n 'rounded-md px-3 py-2 text-sm font-medium transition-colors',\n mainTab === 'systemTasks' ? 'text-fg' : 'text-fg-muted hover:text-fg',\n )}\n onClick={() => onMainTabChange('systemTasks')}\n >\n {c.tabSystemTasks}\n </button>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={mainTab === 'history'}\n className={cn(\n 'rounded-md px-3 py-2 text-sm font-medium transition-colors',\n mainTab === 'history' ? 'text-fg' : 'text-fg-muted hover:text-fg',\n )}\n onClick={() => onMainTabChange('history')}\n >\n {c.tabRunHistory}\n </button>\n </div>\n <div\n className={cn(\n 'flex min-w-0 items-center gap-2',\n mainTab === 'history'\n ? 'flex-nowrap overflow-x-auto pb-0.5 sm:justify-end'\n : 'flex-wrap sm:justify-end',\n )}\n >\n {mainTab === 'myTasks' || mainTab === 'systemTasks' ? (\n <select\n className={cronToolbarSelectClass}\n value={jobSort}\n onChange={(e) => onJobSortChange(e.target.value as 'created_desc' | 'created_asc')}\n aria-label={c.sortCreatedDesc}\n >\n <option value=\"created_desc\">{c.sortCreatedDesc}</option>\n <option value=\"created_asc\">{c.sortCreatedAsc}</option>\n </select>\n ) : null}\n {mainTab === 'history' ? (\n <>\n <div className={cn(segmentedTrackClassName, 'shrink-0')} role=\"group\" aria-label={c.runHistoryTitle}>\n {(['day', 'week', 'month'] as const).map((r) => (\n <button\n key={r}\n type=\"button\"\n className={cn(\n segmentedThumbBaseClassName,\n 'px-2.5 py-1',\n historyRange === r && segmentedThumbActiveClassName,\n historyRange === r && 'text-fg',\n )}\n onClick={() => onHistoryRangeChange(r)}\n >\n {r === 'day' ? c.historyRangeDay : r === 'week' ? c.historyRangeWeek : c.historyRangeMonth}\n </button>\n ))}\n </div>\n <select\n className={cronToolbarSelectClass}\n value={historyJobFilter}\n onChange={(e) => onHistoryJobFilterChange(e.target.value)}\n aria-label={c.filterAllTasks}\n >\n <option value=\"\">{c.filterAllTasks}</option>\n {jobs.map((j) => (\n <option key={j.id} value={j.id}>\n {j.name || j.id}\n </option>\n ))}\n </select>\n <select\n className={cronToolbarSelectClass}\n value={historyStatusFilter}\n onChange={(e) => onHistoryStatusFilterChange(e.target.value)}\n aria-label={c.filterAllStatuses}\n >\n <option value=\"\">{c.filterAllStatuses}</option>\n <option value=\"success\">{c.execStatusSuccess}</option>\n <option value=\"failed\">{c.execStatusFailed}</option>\n <option value=\"cancelled\">{c.execStatusCancelled}</option>\n <option value=\"running\">{c.execStatusRunning}</option>\n </select>\n </>\n ) : null}\n </div>\n </div>\n );\n}\n","import { LayoutTemplate, Plus, RefreshCw } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronPageHeaderActionsProps = {\n c: CronCopy;\n loading: boolean;\n runHistoryLoading: boolean;\n onRefresh: () => void;\n onOpenTemplatePicker: () => void;\n onAddJob: () => void;\n};\n\nexport function CronPageHeaderActions({\n c,\n loading,\n runHistoryLoading,\n onRefresh,\n onOpenTemplatePicker,\n onAddJob,\n}: CronPageHeaderActionsProps) {\n const busy = loading || runHistoryLoading;\n return (\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center justify-end gap-2\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"size-9 shrink-0 p-0\"\n disabled={busy}\n title={c.refresh}\n aria-label={c.refresh}\n onClick={() => void onRefresh()}\n >\n <RefreshCw className={cn('size-4', busy && 'animate-spin')} strokeWidth={1.75} />\n </Button>\n <Button type=\"button\" variant=\"secondary\" className=\"gap-2\" onClick={onOpenTemplatePicker}>\n <LayoutTemplate className=\"size-4\" strokeWidth={1.75} />\n {c.fromTemplate}\n </Button>\n <Button type=\"button\" variant=\"primary\" className=\"gap-2\" onClick={onAddJob}>\n <Plus className=\"size-4\" strokeWidth={1.75} />\n {c.addJob}\n </Button>\n </div>\n );\n}\n","import { Clock, Loader2, RefreshCw } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { CronJob, CronRunHistoryRow } from '@/features/cron/cron-api';\nimport { navigateToSessionChat } from '@/features/cron/cron-page-lib';\nimport {\n execStatusLabel,\n formatDuration,\n formatTime,\n truncate,\n} from '@/features/cron/cron-utils';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronRunHistorySectionProps = {\n c: CronCopy;\n runHistoryLoading: boolean;\n runHistory: CronRunHistoryRow[];\n filteredRunHistory: CronRunHistoryRow[];\n jobs: CronJob[];\n onRefreshHistory: () => void;\n onOpenJobDetail: (job: CronJob) => void;\n statusLabels: {\n running: string;\n success: string;\n failed: string;\n cancelled: string;\n };\n};\n\nexport function CronRunHistorySection({\n c,\n runHistoryLoading,\n runHistory,\n filteredRunHistory,\n jobs,\n onRefreshHistory,\n onOpenJobDetail,\n statusLabels,\n}: CronRunHistorySectionProps) {\n return (\n <section aria-labelledby=\"cron-history-panel\" className=\"flex flex-col gap-3\">\n <div className=\"flex items-start justify-between gap-2\">\n <div>\n <h2 id=\"cron-history-panel\" className=\"sr-only\">\n {c.tabRunHistory}\n </h2>\n <p className=\"text-xs text-fg-muted\">{c.runHistoryHint}</p>\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"size-9 shrink-0 p-0\"\n disabled={runHistoryLoading}\n title={c.refresh}\n aria-label={c.refresh}\n onClick={() => void onRefreshHistory()}\n >\n <RefreshCw className={cn('size-4', runHistoryLoading && 'animate-spin')} strokeWidth={1.75} />\n </Button>\n </div>\n {runHistoryLoading && runHistory.length === 0 ? (\n <div className=\"flex justify-center py-16\">\n <Loader2 className=\"size-8 animate-spin text-accent\" strokeWidth={1.75} />\n </div>\n ) : filteredRunHistory.length === 0 ? (\n <div className=\"flex flex-col items-center rounded-2xl border border-dashed border-edge-subtle px-6 py-16 text-center dark:border-edge-subtle\">\n <Clock className=\"mb-4 size-14 text-fg-disabled\" strokeWidth={1.1} aria-hidden />\n <h3 className=\"text-base font-semibold text-fg\">\n {runHistory.length === 0 ? c.emptyHistoryTitle : c.noRunsYet}\n </h3>\n <p className=\"mt-2 max-w-sm text-sm text-fg-muted\">\n {runHistory.length === 0 ? c.emptyHistoryHint : c.runHistoryHint}\n </p>\n </div>\n ) : (\n <div className=\"overflow-x-auto rounded-xl border border-edge-subtle bg-surface-base dark:border-edge-subtle\">\n <table className=\"w-full min-w-[700px] border-collapse text-left text-sm\">\n <thead>\n <tr className=\"border-b border-edge text-xs font-medium text-fg-muted\">\n <th className=\"px-3 py-2.5 font-medium\">{c.colStarted}</th>\n <th className=\"px-3 py-2.5 font-medium\">{c.colJob}</th>\n <th className=\"px-3 py-2.5 font-medium\">{c.status}</th>\n <th className=\"px-3 py-2.5 font-medium\">{c.colDuration}</th>\n <th className=\"px-3 py-2.5 font-medium\">{c.colDetail}</th>\n <th className=\"px-3 py-2.5 font-medium\">{c.colChat}</th>\n </tr>\n </thead>\n <tbody>\n {filteredRunHistory.map((row) => (\n <tr key={row.id} className=\"border-b border-edge/60 last:border-0\">\n <td className=\"whitespace-nowrap px-3 py-2.5 text-fg\">\n <time dateTime={row.startedAt}>{formatTime(row.startedAt)}</time>\n </td>\n <td className=\"max-w-[10rem] truncate px-3 py-2.5\">\n {jobs.some((j) => j.id === row.jobId) ? (\n <button\n type=\"button\"\n className=\"text-left text-accent hover:underline\"\n onClick={() => {\n const j = jobs.find((x) => x.id === row.jobId);\n if (j) void onOpenJobDetail(j);\n }}\n >\n {row.jobName || row.jobId}\n </button>\n ) : (\n <span className=\"text-fg-muted\">{row.jobName || row.jobId}</span>\n )}\n </td>\n <td className=\"px-3 py-2.5\">\n <span\n className={cn(\n 'inline-flex rounded-md px-2 py-0.5 text-xs font-medium',\n row.status === 'success' && 'bg-emerald-500/15 text-emerald-800 dark:text-emerald-300',\n row.status === 'failed' && 'bg-red-500/15 text-red-800 dark:text-red-300',\n row.status === 'running' && 'bg-accent/15 text-accent',\n row.status === 'cancelled' && 'bg-surface-hover text-fg-muted',\n )}\n >\n {execStatusLabel(row.status, statusLabels)}\n </span>\n </td>\n <td className=\"whitespace-nowrap px-3 py-2.5 text-fg-muted\">\n {formatDuration(row.duration)}\n </td>\n <td\n className=\"max-w-xs truncate px-3 py-2.5 text-fg-muted\"\n title={row.summary || row.error || ''}\n >\n {truncate(row.summary || row.error, 96)}\n </td>\n <td className=\"whitespace-nowrap px-3 py-2.5\">\n {row.sessionKey?.trim() ? (\n <button\n type=\"button\"\n className=\"text-xs font-medium text-accent hover:underline\"\n title={c.openChatTitle}\n aria-label={c.openChatTitle}\n onClick={() => navigateToSessionChat(row.sessionKey)}\n >\n {c.openChat}\n </button>\n ) : (\n <span className=\"text-fg-disabled\">—</span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </section>\n );\n}\n","import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { Clock, MoreVertical } from 'lucide-react';\n\nimport { MarkdownView } from '@/components/markdown/markdown-view';\nimport { Button } from '@/components/ui/button';\nimport type { MutableRefObject } from 'react';\n\nimport type { CronJob } from '@/features/cron/cron-api';\nimport { cronJobBodyText } from '@/features/cron/cron-api';\nimport { formatScheduleBadge } from '@/features/cron/cron-utils';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronJobCardProps = {\n job: CronJob;\n c: CronCopy;\n localeTag: string;\n scheduleBadgeLabels: CronCopy['scheduleBadge'];\n absorbCardClickJobIdRef: MutableRefObject<string | null>;\n scheduleAbsorbNextMenuCardClick: (jobId: string) => void;\n onOpenDetail: (job: CronJob) => void;\n onToggle: (job: CronJob, enabled: boolean) => void;\n onEdit: (job: CronJob) => void;\n onRunNow: (job: CronJob) => void;\n onDelete: (job: CronJob) => void;\n};\n\nexport function CronJobCard({\n job,\n c,\n localeTag,\n scheduleBadgeLabels,\n absorbCardClickJobIdRef,\n scheduleAbsorbNextMenuCardClick,\n onOpenDetail,\n onToggle,\n onEdit,\n onRunNow,\n onDelete,\n}: CronJobCardProps) {\n return (\n <article\n role=\"button\"\n tabIndex={0}\n className={cn(\n 'flex cursor-pointer flex-col rounded-xl border border-edge-subtle bg-surface-base text-left transition-colors duration-150 ease-out dark:border-edge-subtle',\n 'hover:bg-surface-hover',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel',\n )}\n onClick={() => {\n if (absorbCardClickJobIdRef.current === job.id) {\n absorbCardClickJobIdRef.current = null;\n return;\n }\n void onOpenDetail(job);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (absorbCardClickJobIdRef.current === job.id) {\n absorbCardClickJobIdRef.current = null;\n return;\n }\n void onOpenDetail(job);\n }\n }}\n >\n <div className=\"flex items-start justify-between gap-2 px-4 pt-3\">\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={job.enabled}\n className={cn(\n 'inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-edge p-0.5 transition-colors',\n job.enabled ? 'justify-end bg-accent' : 'justify-start bg-surface-hover',\n )}\n onClick={(e) => {\n e.stopPropagation();\n void onToggle(job, !job.enabled);\n }}\n >\n <span className=\"size-4 rounded-full bg-surface-panel shadow-surface ring-1 ring-edge/40 dark:ring-edge/55\" />\n </button>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"size-8 shrink-0 p-0\"\n aria-label={c.jobCardMenuAria}\n onClick={(e) => e.stopPropagation()}\n >\n <MoreVertical className=\"size-4\" strokeWidth={1.75} />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n className=\"z-50 min-w-[10rem] rounded-xl border border-edge-subtle bg-surface-panel p-1 shadow-elevated dark:border-edge-subtle\"\n sideOffset={4}\n align=\"end\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n <DropdownMenu.Item\n className=\"cursor-pointer select-none rounded-lg px-2 py-1.5 text-sm text-fg outline-none data-highlighted:bg-surface-hover\"\n onSelect={() => {\n scheduleAbsorbNextMenuCardClick(job.id);\n onEdit(job);\n }}\n >\n {c.edit}\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"cursor-pointer select-none rounded-lg px-2 py-1.5 text-sm text-fg outline-none data-highlighted:bg-surface-hover\"\n onSelect={() => {\n scheduleAbsorbNextMenuCardClick(job.id);\n onRunNow(job);\n }}\n >\n {c.runNow}\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"cursor-pointer select-none rounded-lg px-2 py-1.5 text-sm text-red-600 outline-none data-highlighted:bg-red-500/10 dark:text-red-400\"\n onSelect={() => {\n scheduleAbsorbNextMenuCardClick(job.id);\n onDelete(job);\n }}\n >\n {c.delete}\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n </div>\n <div className=\"flex flex-1 flex-col gap-2 px-4 pb-3 pt-2\">\n <h3 className=\"line-clamp-2 font-semibold text-fg\">{job.name || job.id}</h3>\n <div\n className=\"max-h-[4.5rem] overflow-hidden text-sm text-fg-muted [&_.markdown-body]:text-sm [&_.markdown-body]:leading-snug\"\n title={cronJobBodyText(job)}\n >\n <MarkdownView content={cronJobBodyText(job)} compact />\n </div>\n </div>\n <div className=\"flex items-center gap-1.5 border-t border-edge-subtle/90 px-4 py-2.5 text-xs text-fg-muted dark:border-edge-subtle\">\n <Clock className=\"size-3.5 shrink-0\" strokeWidth={1.75} aria-hidden />\n <span className=\"min-w-0 truncate\">{formatScheduleBadge(job, localeTag, scheduleBadgeLabels)}</span>\n </div>\n </article>\n );\n}\n","import { ChevronRight, Info, Loader2 } from 'lucide-react';\nimport type { MutableRefObject } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { Button } from '@/components/ui/button';\nimport type { CronJob } from '@/features/cron/cron-api';\nimport { CronJobCard } from '@/features/cron/cron-job-card';\nimport type { HeartbeatSettingsState } from '@/features/settings/heartbeat-settings.types';\nimport { formatIntervalMsLabel } from '@/features/scheduling/interval/format-interval-label';\nimport { messages, type MessageBundle } from '@/i18n/messages';\nimport type { StoredLanguage } from '@/lib/storage';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronSystemTasksPanelProps = {\n c: CronCopy;\n language: StoredLanguage;\n localeTag: string;\n scheduleBadgeLabels: CronCopy['scheduleBadge'];\n loading: boolean;\n sortedSystemJobs: CronJob[];\n heartbeat: HeartbeatSettingsState;\n keepAwake: boolean;\n wakeSupported: boolean;\n onWakeUnsupportedClick: () => void;\n onKeepAwakeToggle: () => void;\n absorbCardClickJobIdRef: MutableRefObject<string | null>;\n scheduleAbsorbNextMenuCardClick: (jobId: string) => void;\n onOpenDetail: (job: CronJob) => void;\n onToggle: (job: CronJob, enabled: boolean) => void;\n onEdit: (job: CronJob) => void;\n onRunNow: (job: CronJob) => void;\n onDelete: (job: CronJob) => void;\n};\n\nexport function CronSystemTasksPanel({\n c,\n language,\n localeTag,\n scheduleBadgeLabels,\n loading,\n sortedSystemJobs,\n heartbeat,\n keepAwake,\n wakeSupported,\n onWakeUnsupportedClick,\n onKeepAwakeToggle,\n absorbCardClickJobIdRef,\n scheduleAbsorbNextMenuCardClick,\n onOpenDetail,\n onToggle,\n onEdit,\n onRunNow,\n onDelete,\n}: CronSystemTasksPanelProps) {\n const hbInterval = formatIntervalMsLabel(\n heartbeat.intervalMs,\n localeTag,\n messages(language).heartbeatSettings.intervalPresets,\n );\n\n return (\n <section aria-labelledby=\"cron-system-tasks-panel\" className=\"flex flex-col gap-4\">\n <h2 id=\"cron-system-tasks-panel\" className=\"sr-only\">\n {c.tabSystemTasks}\n </h2>\n <p className=\"text-sm text-fg-muted\">{c.systemTasksIntro}</p>\n\n <div className=\"flex flex-col gap-3 rounded-xl border border-accent/25 bg-accent/5 px-4 py-3 dark:border-accent/30 dark:bg-accent/10 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex gap-3 text-sm text-fg\">\n <Info className=\"mt-0.5 size-4 shrink-0 text-accent\" strokeWidth={1.75} aria-hidden />\n <p className=\"text-pretty text-fg-muted\">{c.wakeBanner}</p>\n </div>\n <div className=\"flex shrink-0 items-center gap-2 sm:pl-4\">\n <span className=\"text-sm text-fg\">{c.keepAwake}</span>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={keepAwake}\n disabled={!wakeSupported}\n title={!wakeSupported ? c.wakeLockUnavailable : undefined}\n className={cn(\n 'inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-edge p-0.5 transition-colors',\n keepAwake ? 'justify-end bg-accent' : 'justify-start bg-surface-hover',\n !wakeSupported && 'cursor-not-allowed opacity-50',\n )}\n onClick={() => {\n if (!wakeSupported) onWakeUnsupportedClick();\n else onKeepAwakeToggle();\n }}\n >\n <span className=\"size-4 rounded-full bg-surface-panel shadow-surface ring-1 ring-edge/40 dark:ring-edge/55\" />\n </button>\n </div>\n </div>\n\n <div className=\"rounded-xl border border-edge bg-surface-base p-4 dark:bg-surface-hover/20\">\n <div className=\"flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold text-fg\">{c.systemHeartbeatTitle}</h3>\n <p className=\"mt-1 text-xs text-fg-muted\">{c.systemHeartbeatHint}</p>\n </div>\n <Button type=\"button\" variant=\"ghost\" className=\"shrink-0 gap-1 self-start px-2 py-1.5 text-xs\" asChild>\n <Link to=\"/settings/heartbeat\">\n {c.systemHeartbeatSettingsLink}\n <ChevronRight className=\"size-3.5 opacity-70\" aria-hidden />\n </Link>\n </Button>\n </div>\n <dl className=\"mt-3 grid gap-2 text-sm sm:grid-cols-2\">\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.systemHeartbeatStatus}</dt>\n <dd className=\"text-fg\">{heartbeat.enabled ? c.enabled : c.disabled}</dd>\n </div>\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.systemHeartbeatInterval}</dt>\n <dd className=\"text-fg\">{c.systemHeartbeatEvery.replace(/\\{\\{value\\}\\}/g, hbInterval)}</dd>\n </div>\n </dl>\n </div>\n\n <div>\n <div className=\"mb-2 flex flex-col gap-1 sm:flex-row sm:items-center sm:justify-between\">\n <h3 className=\"text-sm font-semibold text-fg\">{c.systemDreamingTitle}</h3>\n <Button type=\"button\" variant=\"ghost\" className=\"shrink-0 gap-1 self-start px-2 py-1.5 text-xs\" asChild>\n <Link to=\"/settings/dreams\">\n {c.systemDreamingSettingsLink}\n <ChevronRight className=\"size-3.5 opacity-70\" aria-hidden />\n </Link>\n </Button>\n </div>\n <p className=\"mb-3 text-xs text-fg-muted\">{c.systemDreamingHint}</p>\n {loading && sortedSystemJobs.length === 0 ? (\n <div className=\"flex justify-center py-12\" aria-busy=\"true\">\n <Loader2 className=\"size-8 animate-spin text-accent\" strokeWidth={1.75} />\n </div>\n ) : sortedSystemJobs.length === 0 ? (\n <p className=\"rounded-lg border border-edge-subtle bg-surface-hover/30 px-3 py-4 text-sm text-fg-muted dark:border-edge-subtle\">\n {c.systemDreamingEmpty}\n </p>\n ) : (\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {sortedSystemJobs.map((job) => (\n <CronJobCard\n key={job.id}\n job={job}\n c={c}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n absorbCardClickJobIdRef={absorbCardClickJobIdRef}\n scheduleAbsorbNextMenuCardClick={scheduleAbsorbNextMenuCardClick}\n onOpenDetail={onOpenDetail}\n onToggle={onToggle}\n onEdit={onEdit}\n onRunNow={onRunNow}\n onDelete={onDelete}\n />\n ))}\n </div>\n )}\n </div>\n </section>\n );\n}\n","import type { MessageBundle } from '@/i18n/messages';\n\nexport type CronTemplateCopy = {\n title: string;\n description: string;\n prompt: string;\n};\n\nexport function getCronTemplateCopy(\n cron: MessageBundle['cron'],\n templateId: string,\n): CronTemplateCopy | undefined {\n const raw = cron.templates;\n if (!raw || typeof raw !== 'object') return undefined;\n const row = (raw as Record<string, { title?: string; description?: string; prompt?: string } | undefined>)[\n templateId\n ];\n if (!row || typeof row !== 'object') return undefined;\n const title = row.title?.trim();\n const prompt = row.prompt?.trim();\n if (!title || !prompt) return undefined;\n return {\n title,\n description: (row.description ?? '').trim(),\n prompt,\n };\n}\n","/** Non-display fields for scheduled-task templates; copy lives in i18n `cron.templates`. */\n\nexport const CRON_TEMPLATE_CATEGORIES = ['daily', 'monitoring', 'reports', 'automation'] as const;\nexport type CronTemplateCategory = (typeof CRON_TEMPLATE_CATEGORIES)[number];\n\nexport interface CronJobTemplateDef {\n templateId: string;\n category: CronTemplateCategory;\n defaultSchedule: string;\n defaultSessionTarget: 'isolated';\n}\n\n/** Grouped like common scheduled-task UIs: daily rhythm, external monitoring, periodic reports, repo automation. */\nexport const CRON_JOB_TEMPLATES = [\n // Daily\n {\n templateId: 'morning_briefing',\n category: 'daily',\n defaultSchedule: '0 7 * * 1-5',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'standup_prep',\n category: 'daily',\n defaultSchedule: '0 8 * * 1-5',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'end_of_day_wrap_up',\n category: 'daily',\n defaultSchedule: '0 18 * * 1-5',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'inbox_triage',\n category: 'daily',\n defaultSchedule: '30 8 * * 1-5',\n defaultSessionTarget: 'isolated',\n },\n // Monitoring\n {\n templateId: 'competitor_watch',\n category: 'monitoring',\n defaultSchedule: '0 9 * * 1',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'trending_topics_monitor',\n category: 'monitoring',\n defaultSchedule: '0 10 * * 1-5',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'tech_radar_stack',\n category: 'monitoring',\n defaultSchedule: '0 11 * * 3',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'dependency_check_audit',\n category: 'monitoring',\n defaultSchedule: '0 9 * * 0',\n defaultSessionTarget: 'isolated',\n },\n // Reports\n {\n templateId: 'weekly_review',\n category: 'reports',\n defaultSchedule: '0 17 * * 5',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'code_quality_report',\n category: 'reports',\n defaultSchedule: '0 14 * * 1',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'git_activity_summary',\n category: 'reports',\n defaultSchedule: '0 9 * * 1',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'user_feedback_digest',\n category: 'reports',\n defaultSchedule: '0 16 * * 5',\n defaultSessionTarget: 'isolated',\n },\n // Automation\n {\n templateId: 'stale_todo_or_issue_sweep',\n category: 'automation',\n defaultSchedule: '0 10 * * 2',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'release_notes_or_changelog_draft',\n category: 'automation',\n defaultSchedule: '0 10 * * 4',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'workspace_cleanup_suggestions',\n category: 'automation',\n defaultSchedule: '30 18 * * 5',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'smoke_or_ci_health_reminder',\n category: 'automation',\n defaultSchedule: '0 8 * * 1',\n defaultSessionTarget: 'isolated',\n },\n] as const satisfies readonly CronJobTemplateDef[];\n\nexport type CronTemplateId = (typeof CRON_JOB_TEMPLATES)[number]['templateId'];\n\nexport function cronTemplateById(id: string): (typeof CRON_JOB_TEMPLATES)[number] | undefined {\n return CRON_JOB_TEMPLATES.find((t) => t.templateId === id);\n}\n","import { Button } from '@/components/ui/button';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\nimport { getCronTemplateCopy } from '@/features/cron/cron-template-i18n';\nimport { CRON_JOB_TEMPLATES, CRON_TEMPLATE_CATEGORIES, type CronTemplateCategory } from '@/features/cron/cron-templates';\nimport { formatScheduleBadge, type ScheduleBadgeLabels } from '@/features/cron/cron-utils';\n\nexport type CronTemplateFilter = 'all' | CronTemplateCategory;\n\ntype Props = {\n cron: MessageBundle['cron'];\n localeTag: string;\n scheduleBadgeLabels: ScheduleBadgeLabels;\n categoryFilter: CronTemplateFilter;\n onCategoryFilterChange: (next: CronTemplateFilter) => void;\n onSelectTemplate: (templateId: string) => void;\n};\n\nexport function CronTemplateLibrary(props: Props) {\n const { cron, localeTag, scheduleBadgeLabels, categoryFilter, onCategoryFilterChange, onSelectTemplate } = props;\n\n const filtered =\n categoryFilter === 'all'\n ? [...CRON_JOB_TEMPLATES]\n : CRON_JOB_TEMPLATES.filter((t) => t.category === categoryFilter);\n\n return (\n <div className=\"flex w-full flex-col gap-4\">\n <div className=\"flex flex-wrap gap-2\" role=\"group\" aria-label={cron.fromTemplate}>\n <Button\n type=\"button\"\n variant={categoryFilter === 'all' ? 'secondary' : 'ghost'}\n className=\"h-8 rounded-full px-3 py-1.5 text-xs\"\n onClick={() => onCategoryFilterChange('all')}\n >\n {cron.templateFilterAll}\n </Button>\n {CRON_TEMPLATE_CATEGORIES.map((cat) => (\n <Button\n key={cat}\n type=\"button\"\n variant={categoryFilter === cat ? 'secondary' : 'ghost'}\n className=\"h-8 rounded-full px-3 py-1.5 text-xs\"\n onClick={() => onCategoryFilterChange(cat)}\n >\n {cron.templateCategories[cat]}\n </Button>\n ))}\n </div>\n {filtered.length === 0 ? (\n <p className=\"text-center text-sm text-fg-muted\">{cron.templatesEmptyHint}</p>\n ) : (\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3\">\n {filtered.map((t) => {\n const copy = getCronTemplateCopy(cron, t.templateId);\n if (!copy) return null;\n const badge = formatScheduleBadge(\n { schedule: t.defaultSchedule, timezone: undefined, next_run: undefined },\n localeTag,\n scheduleBadgeLabels,\n );\n return (\n <button\n key={t.templateId}\n type=\"button\"\n className={cn(\n 'flex flex-col gap-1.5 rounded-xl border border-edge-subtle bg-surface-base p-4 text-left transition-colors',\n 'hover:border-accent/40 hover:bg-surface-hover',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel',\n )}\n onClick={() => onSelectTemplate(t.templateId)}\n aria-label={`${cron.templateCategories[t.category]} — ${copy.title}`}\n >\n <span className=\"font-semibold text-fg\">{copy.title}</span>\n <span className=\"line-clamp-2 text-sm text-fg-muted\">{copy.description}</span>\n <span className=\"mt-1 flex items-center gap-1 text-xs text-fg-muted\">\n <span className=\"tabular-nums\">{badge}</span>\n </span>\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n","import { Info, Loader2 } from 'lucide-react';\nimport type { MutableRefObject } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport type { CronJob } from '@/features/cron/cron-api';\nimport { CronJobCard } from '@/features/cron/cron-job-card';\nimport type { CronTemplateFilter } from '@/features/cron/cron-template-library';\nimport { CronTemplateLibrary } from '@/features/cron/cron-template-library';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronTasksPanelProps = {\n c: CronCopy;\n localeTag: string;\n scheduleBadgeLabels: CronCopy['scheduleBadge'];\n loading: boolean;\n jobsCount: number;\n sortedJobs: CronJob[];\n templateCategoryFilter: CronTemplateFilter;\n onTemplateCategoryFilterChange: (v: CronTemplateFilter) => void;\n onSelectTemplate: (templateId: string) => void;\n keepAwake: boolean;\n wakeSupported: boolean;\n onWakeUnsupportedClick: () => void;\n onKeepAwakeToggle: () => void;\n absorbCardClickJobIdRef: MutableRefObject<string | null>;\n scheduleAbsorbNextMenuCardClick: (jobId: string) => void;\n onOpenDetail: (job: CronJob) => void;\n onToggle: (job: CronJob, enabled: boolean) => void;\n onEdit: (job: CronJob) => void;\n onAddJob: () => void;\n onRunNow: (job: CronJob) => void;\n onDelete: (job: CronJob) => void;\n};\n\nexport function CronTasksPanel({\n c,\n localeTag,\n scheduleBadgeLabels,\n loading,\n jobsCount,\n sortedJobs,\n templateCategoryFilter,\n onTemplateCategoryFilterChange,\n onSelectTemplate,\n keepAwake,\n wakeSupported,\n onWakeUnsupportedClick,\n onKeepAwakeToggle,\n absorbCardClickJobIdRef,\n scheduleAbsorbNextMenuCardClick,\n onOpenDetail,\n onToggle,\n onEdit,\n onAddJob,\n onRunNow,\n onDelete,\n}: CronTasksPanelProps) {\n return (\n <section aria-labelledby=\"cron-tasks-panel\" className=\"flex flex-col gap-4\">\n <h2 id=\"cron-tasks-panel\" className=\"sr-only\">\n {c.tabMyTasks}\n </h2>\n <div className=\"flex flex-col gap-3 rounded-xl border border-accent/25 bg-accent/5 px-4 py-3 dark:border-accent/30 dark:bg-accent/10 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex gap-3 text-sm text-fg\">\n <Info className=\"mt-0.5 size-4 shrink-0 text-accent\" strokeWidth={1.75} aria-hidden />\n <p className=\"text-pretty text-fg-muted\">{c.wakeBanner}</p>\n </div>\n <div className=\"flex shrink-0 items-center gap-2 sm:pl-4\">\n <span className=\"text-sm text-fg\">{c.keepAwake}</span>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={keepAwake}\n disabled={!wakeSupported}\n title={!wakeSupported ? c.wakeLockUnavailable : undefined}\n className={cn(\n 'inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-edge p-0.5 transition-colors',\n keepAwake ? 'justify-end bg-accent' : 'justify-start bg-surface-hover',\n !wakeSupported && 'cursor-not-allowed opacity-50',\n )}\n onClick={() => {\n if (!wakeSupported) onWakeUnsupportedClick();\n else onKeepAwakeToggle();\n }}\n >\n <span className=\"size-4 rounded-full bg-surface-panel shadow-surface ring-1 ring-edge/40 dark:ring-edge/55\" />\n </button>\n </div>\n </div>\n\n {loading && jobsCount === 0 ? (\n <div className=\"flex justify-center py-16\" aria-busy=\"true\">\n <Loader2 className=\"size-8 animate-spin text-accent\" strokeWidth={1.75} />\n </div>\n ) : jobsCount === 0 ? (\n <div className=\"flex flex-col gap-6 rounded-2xl bg-surface-base px-4 py-8 dark:bg-surface-hover/25 sm:px-6 sm:py-10\">\n <div className=\"w-full max-w-6xl\">\n <CronTemplateLibrary\n cron={c}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n categoryFilter={templateCategoryFilter}\n onCategoryFilterChange={onTemplateCategoryFilterChange}\n onSelectTemplate={onSelectTemplate}\n />\n </div>\n <div className=\"flex justify-center\">\n <Button type=\"button\" variant=\"primary\" onClick={onAddJob}>\n {c.emptyStateCta}\n </Button>\n </div>\n </div>\n ) : (\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {sortedJobs.map((job) => (\n <CronJobCard\n key={job.id}\n job={job}\n c={c}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n absorbCardClickJobIdRef={absorbCardClickJobIdRef}\n scheduleAbsorbNextMenuCardClick={scheduleAbsorbNextMenuCardClick}\n onOpenDetail={(j) => void onOpenDetail(j)}\n onToggle={(j, en) => void onToggle(j, en)}\n onEdit={onEdit}\n onRunNow={onRunNow}\n onDelete={onDelete}\n />\n ))}\n </div>\n )}\n </section>\n );\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { CronTemplateFilter } from '@/features/cron/cron-template-library';\nimport { CronTemplateLibrary } from '@/features/cron/cron-template-library';\nimport type { MessageBundle } from '@/i18n/messages';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronTemplatePickerDialogProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n c: CronCopy;\n localeTag: string;\n scheduleBadgeLabels: CronCopy['scheduleBadge'];\n categoryFilter: CronTemplateFilter;\n onCategoryFilterChange: (v: CronTemplateFilter) => void;\n onSelectTemplate: (templateId: string) => void;\n};\n\nexport function CronTemplatePickerDialog({\n open,\n onOpenChange,\n c,\n localeTag,\n scheduleBadgeLabels,\n categoryFilter,\n onCategoryFilterChange,\n onSelectTemplate,\n}: CronTemplatePickerDialogProps) {\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-[62] bg-scrim\" />\n <div className=\"fixed inset-0 z-[62] flex items-center justify-center p-4 pointer-events-none\">\n <Dialog.Content\n className=\"xopc-dialog-content-pane pointer-events-auto relative flex max-h-[min(90vh,840px)] w-full max-w-lg flex-col rounded-xl border border-edge bg-surface-panel shadow-popover outline-none sm:max-w-2xl dark:border-edge\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <div className=\"flex shrink-0 items-center justify-end border-b border-edge px-4 py-3\">\n <Dialog.Title className=\"sr-only\">{c.fromTemplate}</Dialog.Title>\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"size-9 shrink-0 p-0\" aria-label={c.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto p-4\">\n <CronTemplateLibrary\n cron={c}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n categoryFilter={categoryFilter}\n onCategoryFilterChange={onCategoryFilterChange}\n onSelectTemplate={onSelectTemplate}\n />\n </div>\n </Dialog.Content>\n </div>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { type ChatAgentOption } from '@/features/chat/chat-agents-api';\nimport {\n cronJobBodyText,\n getSessionChatIds,\n type ChannelStatus,\n type CronJob,\n type SessionChatId,\n} from '@/features/cron/cron-api';\nimport { DEFAULT_SCHEDULE, pushRecentWorkspaceDirForCron } from '@/features/cron/cron-page-lib';\nimport { getCronTemplateCopy } from '@/features/cron/cron-template-i18n';\nimport { cronTemplateById } from '@/features/cron/cron-templates';\nimport type { messages as makeMessages } from '@/i18n/messages';\n\nexport type FormMode = 'add' | 'edit';\nexport type FormSessionTarget = 'main' | 'isolated';\nexport type FormMessageMdMode = 'edit' | 'preview';\n\nexport function useCronJobForm(opts: {\n m: ReturnType<typeof makeMessages>;\n defaultModelForForm: () => string;\n channels: ChannelStatus[];\n chatAgents: ChatAgentOption[];\n}) {\n const { m, defaultModelForForm, channels, chatAgents } = opts;\n\n const [formOpen, setFormOpen] = useState(false);\n const [formMode, setFormMode] = useState<FormMode>('add');\n const [formJobId, setFormJobId] = useState<string | null>(null);\n const [formName, setFormName] = useState('');\n const [formSchedule, setFormSchedule] = useState(DEFAULT_SCHEDULE);\n const [formChannel, setFormChannel] = useState('local');\n const [formChatId, setFormChatId] = useState('');\n const [formMessage, setFormMessage] = useState('');\n const [formMessageMdMode, setFormMessageMdMode] = useState<FormMessageMdMode>('edit');\n const [messageEditorNonce, setMessageEditorNonce] = useState(0);\n const [formSessionTarget, setFormSessionTarget] = useState<FormSessionTarget>('main');\n const [formAgentId, setFormAgentId] = useState('');\n const [formAgentLocalOnly, setFormAgentLocalOnly] = useState(false);\n const [formWorkingDirectory, setFormWorkingDirectory] = useState('');\n const [formWdModalOpen, setFormWdModalOpen] = useState(false);\n const [formModel, setFormModel] = useState('');\n const [formSubmitting, setFormSubmitting] = useState(false);\n const [sessionChatIds, setSessionChatIds] = useState<SessionChatId[]>([]);\n const formModelUserTouched = useRef(false);\n\n const cronAgentSelectOptions = useMemo(() => {\n const ids = new Set(chatAgents.map((a) => a.id));\n const out: ChatAgentOption[] = [...chatAgents];\n const extra = formAgentId.trim().toLowerCase();\n if (extra && !ids.has(extra)) {\n out.push({ id: extra });\n }\n return out;\n }, [chatAgents, formAgentId]);\n\n const needsDeliveryChat =\n formChannel !== 'local' && (formSessionTarget === 'main' || (formSessionTarget === 'isolated' && !formAgentLocalOnly));\n\n const showChannelPicker =\n formSessionTarget === 'main' || (formSessionTarget === 'isolated' && !formAgentLocalOnly);\n\n const canSubmit =\n Boolean(formName.trim()) &&\n Boolean(formSchedule.trim()) &&\n Boolean(formMessage.trim()) &&\n (!needsDeliveryChat || Boolean(formChatId.trim()));\n\n useEffect(() => {\n if (!formOpen || formMode !== 'add' || formModelUserTouched.current) return;\n const next = defaultModelForForm();\n if (next) setFormModel(next);\n }, [formOpen, formMode, defaultModelForForm]);\n\n useEffect(() => {\n if (!formOpen || formMode !== 'add') return;\n const valid = new Set(['local', ...channels.map((x) => x.name)]);\n if (!valid.has(formChannel)) setFormChannel('local');\n }, [channels, formChannel, formMode, formOpen]);\n\n useEffect(() => {\n if (formChannel === 'local') {\n setSessionChatIds([]);\n return;\n }\n let cancelled = false;\n void getSessionChatIds(formChannel).then((ids) => {\n if (!cancelled) setSessionChatIds(ids);\n });\n return () => {\n cancelled = true;\n };\n }, [formChannel, formOpen]);\n\n const openForm = useCallback(\n (job?: CronJob) => {\n formModelUserTouched.current = false;\n setFormOpen(true);\n setFormMode(job ? 'edit' : 'add');\n setFormJobId(job?.id ?? null);\n\n if (job) {\n setFormName(job.name || '');\n setFormSchedule((job.schedule && String(job.schedule).trim()) || DEFAULT_SCHEDULE);\n const bodyText = cronJobBodyText(job);\n setFormMessage(bodyText ?? '');\n setFormSessionTarget(job.sessionTarget || 'main');\n setFormAgentId(\n (job.sessionTarget || 'main') === 'isolated' && job.agentId?.trim()\n ? job.agentId.trim().toLowerCase()\n : '',\n );\n setFormWorkingDirectory(\n (job.sessionTarget || 'main') === 'isolated' && job.workingDirectory?.trim()\n ? job.workingDirectory.trim()\n : '',\n );\n const fromPayload =\n job.payload?.kind === 'agentTurn' && job.payload.model?.trim() ? job.payload.model.trim() : '';\n const stored = job.model?.trim() || fromPayload;\n setFormModel(stored || defaultModelForForm());\n const hasLocalChannel = job.delivery?.channel === 'local';\n const agentLocalOnly =\n (job.sessionTarget || 'main') === 'isolated' &&\n !hasLocalChannel &&\n (!job.delivery?.to || job.delivery.mode === 'none');\n setFormAgentLocalOnly(agentLocalOnly);\n\n if (hasLocalChannel) {\n setFormChannel('local');\n setFormChatId('');\n } else if (job.delivery && job.delivery.mode !== 'none' && job.delivery.to) {\n setFormChannel(job.delivery.channel || 'telegram');\n setFormChatId(job.delivery.to || '');\n } else if (!agentLocalOnly) {\n const parts = bodyText.split(':');\n const knownChannels = ['telegram', 'cli', 'gateway', 'local'];\n if (parts.length >= 3 && knownChannels.includes(parts[0])) {\n setFormChannel(parts[0]);\n setFormChatId(parts[1]);\n setFormMessage(parts.slice(2).join(':'));\n } else {\n setFormChannel('telegram');\n setFormChatId('');\n }\n } else {\n setFormChannel('telegram');\n setFormChatId('');\n }\n } else {\n setFormName('');\n setFormSchedule(DEFAULT_SCHEDULE);\n setFormChannel('local');\n setFormChatId('');\n setFormMessage('');\n setFormSessionTarget('main');\n setFormAgentId('');\n setFormWorkingDirectory('');\n setFormAgentLocalOnly(false);\n setFormModel(defaultModelForForm());\n }\n setFormMessageMdMode('edit');\n setMessageEditorNonce((n) => n + 1);\n },\n [defaultModelForForm],\n );\n\n const setMessageMdMode = useCallback((mode: FormMessageMdMode) => {\n setFormMessageMdMode(mode);\n if (mode === 'edit') setMessageEditorNonce((n) => n + 1);\n }, []);\n\n const applyCronTemplate = useCallback(\n (templateId: string): boolean => {\n const def = cronTemplateById(templateId);\n const copy = def ? getCronTemplateCopy(m.cron, templateId) : undefined;\n if (!def || !copy) return false;\n formModelUserTouched.current = false;\n setFormMode('add');\n setFormJobId(null);\n setFormName(copy.title);\n setFormSchedule(def.defaultSchedule);\n setFormMessage(copy.prompt);\n setFormSessionTarget(def.defaultSessionTarget);\n setFormChannel('local');\n setFormChatId('');\n setFormAgentLocalOnly(false);\n setFormAgentId('');\n setFormWorkingDirectory('');\n setFormModel(defaultModelForForm());\n setFormMessageMdMode('edit');\n setMessageEditorNonce((n) => n + 1);\n setFormOpen(true);\n return true;\n },\n [defaultModelForForm, m.cron],\n );\n\n const closeForm = useCallback(() => {\n setFormOpen(false);\n setFormMode('add');\n setFormJobId(null);\n setFormName('');\n setFormSchedule(DEFAULT_SCHEDULE);\n setFormChannel('local');\n setFormChatId('');\n setFormMessage('');\n setFormSessionTarget('main');\n setFormAgentId('');\n setFormWorkingDirectory('');\n setFormWdModalOpen(false);\n setFormAgentLocalOnly(false);\n setFormModel('');\n setFormMessageMdMode('edit');\n formModelUserTouched.current = false;\n }, []);\n\n const handleFormSessionTargetChange = useCallback(\n (target: FormSessionTarget, defaultModelFallback: () => string, currentModel: string) => {\n setFormSessionTarget(target);\n if (target === 'main') {\n setFormAgentLocalOnly(false);\n setFormAgentId('');\n setFormWorkingDirectory('');\n } else if (target === 'isolated' && !currentModel) setFormModel(defaultModelFallback());\n },\n [],\n );\n\n const handleFormChannelChange = useCallback((v: string) => {\n setFormChannel(v);\n if (v === 'local') setFormAgentLocalOnly(false);\n setFormChatId('');\n }, []);\n\n const handleFormModelUserChange = useCallback((id: string) => {\n formModelUserTouched.current = true;\n setFormModel(id);\n }, []);\n\n const refreshRecipientsList = useCallback(() => {\n void getSessionChatIds(formChannel).then(setSessionChatIds);\n }, [formChannel]);\n\n const applyWorkingDirectory = useCallback(async (path: string) => {\n const t = path.trim();\n if (!t) return;\n pushRecentWorkspaceDirForCron(t);\n setFormWorkingDirectory(t);\n }, []);\n\n return {\n // state\n formOpen,\n formMode,\n formJobId,\n formName,\n formSchedule,\n formChannel,\n formChatId,\n formMessage,\n formMessageMdMode,\n messageEditorNonce,\n formSessionTarget,\n formAgentId,\n formAgentLocalOnly,\n formWorkingDirectory,\n formWdModalOpen,\n formModel,\n formSubmitting,\n sessionChatIds,\n // setters\n setFormName,\n setFormSchedule,\n setFormChatId,\n setFormMessage,\n setFormAgentId,\n setFormAgentLocalOnly,\n setFormWorkingDirectory,\n setFormWdModalOpen,\n setFormSubmitting,\n // derived\n canSubmit,\n needsDeliveryChat,\n showChannelPicker,\n cronAgentSelectOptions,\n // handlers\n openForm,\n closeForm,\n applyCronTemplate,\n setMessageMdMode,\n handleFormSessionTargetChange,\n handleFormChannelChange,\n handleFormModelUserChange,\n refreshRecipientsList,\n applyWorkingDirectory,\n };\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { isElectronCronDisplayWakeAvailable } from '@/lib/electron-env';\n\ntype WakeMode = 'none' | 'electron' | 'navigator';\n\nexport function useCronKeepAwake(opts: { onUnavailable: () => void }) {\n const { onUnavailable } = opts;\n const [keepAwake, setKeepAwake] = useState(false);\n const wakeLockRef = useRef<WakeLockSentinel | null>(null);\n const wakeModeRef = useRef<WakeMode>('none');\n const keepAwakeRef = useRef(keepAwake);\n const wakeSupported = typeof navigator !== 'undefined' && 'wakeLock' in navigator;\n const featureAvailable = wakeSupported || isElectronCronDisplayWakeAvailable();\n\n const releaseWakeLock = useCallback(async () => {\n if (wakeModeRef.current === 'electron') {\n try {\n await window.electronAPI?.cron?.setDisplaySleepPrevented?.(false);\n } catch {\n /* ignore */\n }\n wakeModeRef.current = 'none';\n return;\n }\n try {\n await wakeLockRef.current?.release();\n } catch {\n /* ignore */\n }\n wakeLockRef.current = null;\n wakeModeRef.current = 'none';\n }, []);\n\n const acquireWakeLock = useCallback(async () => {\n const electronWake =\n typeof window !== 'undefined' ? window.electronAPI?.cron?.setDisplaySleepPrevented : undefined;\n if (electronWake) {\n try {\n await electronWake(true);\n wakeModeRef.current = 'electron';\n return;\n } catch {\n onUnavailable();\n setKeepAwake(false);\n return;\n }\n }\n if (!wakeSupported) return;\n try {\n const sentinel = await navigator.wakeLock.request('screen');\n wakeLockRef.current = sentinel;\n wakeModeRef.current = 'navigator';\n sentinel.addEventListener('release', () => {\n wakeLockRef.current = null;\n wakeModeRef.current = 'none';\n });\n } catch {\n onUnavailable();\n setKeepAwake(false);\n }\n }, [onUnavailable, wakeSupported]);\n\n keepAwakeRef.current = keepAwake;\n\n useEffect(() => {\n if (!keepAwake) {\n void releaseWakeLock();\n return;\n }\n void acquireWakeLock();\n const onVis = () => {\n if (document.visibilityState === 'visible' && keepAwakeRef.current) void acquireWakeLock();\n };\n document.addEventListener('visibilitychange', onVis);\n return () => {\n document.removeEventListener('visibilitychange', onVis);\n void releaseWakeLock();\n };\n }, [keepAwake, acquireWakeLock, releaseWakeLock]);\n\n return { keepAwake, setKeepAwake, featureAvailable };\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { fetchChatAgents, type ChatAgentOption } from '@/features/chat/chat-agents-api';\nimport {\n getAllRunsHistory,\n getChannels,\n getConfig,\n getModels,\n listJobs,\n type ChannelStatus,\n type CronJob,\n type CronRunHistoryRow,\n} from '@/features/cron/cron-api';\nimport { isDreamingManagedCronJob } from '@/features/cron/cron-dreaming-jobs';\nimport {\n RUN_HISTORY_FETCH_LIMIT,\n startOfLocalDay,\n startOfLocalMonth,\n startOfLocalWeekMonday,\n} from '@/features/cron/cron-page-lib';\nimport { fetchGatewayConfigSwrResponse } from '@/features/gateway/gateway-config-swr';\nimport { normalizeHeartbeatFromConfig } from '@/features/settings/heartbeat-config-api';\n\ntype FailMessages = {\n failedToLoadJobs: string;\n};\n\nexport type HistoryRange = 'day' | 'week' | 'month';\nexport type JobSort = 'created_desc' | 'created_asc';\n\nexport function useCronPageData(opts: {\n hasToken: boolean;\n failMessages: FailMessages;\n isHistoryTab: boolean;\n}) {\n const { hasToken, failMessages, isHistoryTab } = opts;\n\n const [jobs, setJobs] = useState<CronJob[]>([]);\n const [channels, setChannels] = useState<ChannelStatus[]>([]);\n const [availableModels, setAvailableModels] = useState<{ id: string; name: string; provider: string }[]>([]);\n const [defaultModel, setDefaultModel] = useState('');\n const [chatAgents, setChatAgents] = useState<ChatAgentOption[]>([]);\n const [gatewayConfigRaw, setGatewayConfigRaw] = useState<unknown>(null);\n const [runHistory, setRunHistory] = useState<CronRunHistoryRow[]>([]);\n const [runHistoryLoading, setRunHistoryLoading] = useState(false);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const loadJobs = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const list = await listJobs();\n setJobs(list);\n } catch (e) {\n setError(e instanceof Error ? e.message : failMessages.failedToLoadJobs);\n } finally {\n setLoading(false);\n }\n }, [failMessages.failedToLoadJobs]);\n\n const loadAux = useCallback(async () => {\n try {\n const [ch, mods, cfg, cfgFull, agentsPayload] = await Promise.all([\n getChannels(),\n getModels(),\n getConfig(),\n fetchGatewayConfigSwrResponse(),\n fetchChatAgents().catch(() => null),\n ]);\n setChannels(ch);\n setAvailableModels(mods);\n setDefaultModel(cfg.model || '');\n setGatewayConfigRaw(cfgFull.payload?.config ?? null);\n if (agentsPayload) setChatAgents(agentsPayload.items);\n } catch {\n /* non-fatal */\n }\n }, []);\n\n const loadRunHistoryOnly = useCallback(async () => {\n setRunHistoryLoading(true);\n try {\n const rows = await getAllRunsHistory(RUN_HISTORY_FETCH_LIMIT);\n setRunHistory(rows);\n } catch {\n /* ignore */\n } finally {\n setRunHistoryLoading(false);\n }\n }, []);\n\n useEffect(() => {\n if (!hasToken) return;\n void loadJobs();\n void loadAux();\n }, [hasToken, loadJobs, loadAux]);\n\n useEffect(() => {\n if (!hasToken) return;\n const onReload = () => {\n void fetchGatewayConfigSwrResponse().then((r) => {\n setGatewayConfigRaw(r.payload?.config ?? null);\n });\n };\n window.addEventListener('config-reload', onReload);\n return () => window.removeEventListener('config-reload', onReload);\n }, [hasToken]);\n\n useEffect(() => {\n if (!hasToken || !isHistoryTab) return;\n void loadRunHistoryOnly();\n }, [hasToken, isHistoryTab, loadRunHistoryOnly]);\n\n const userCronJobs = useMemo(() => jobs.filter((j) => !isDreamingManagedCronJob(j)), [jobs]);\n const systemCronJobs = useMemo(() => jobs.filter((j) => isDreamingManagedCronJob(j)), [jobs]);\n\n const heartbeatFromConfig = useMemo(() => normalizeHeartbeatFromConfig(gatewayConfigRaw), [gatewayConfigRaw]);\n\n const refreshAll = useCallback(() => {\n void loadJobs();\n void loadAux();\n void loadRunHistoryOnly();\n }, [loadJobs, loadAux, loadRunHistoryOnly]);\n\n return {\n jobs,\n channels,\n availableModels,\n defaultModel,\n chatAgents,\n gatewayConfigRaw,\n runHistory,\n runHistoryLoading,\n loading,\n error,\n setError,\n userCronJobs,\n systemCronJobs,\n heartbeatFromConfig,\n loadJobs,\n loadAux,\n loadRunHistoryOnly,\n refreshAll,\n };\n}\n\nexport function sortJobsByCreated(arr: CronJob[], sort: JobSort): CronJob[] {\n const next = [...arr];\n next.sort((a, b) => {\n const ta = new Date(a.created_at).getTime();\n const tb = new Date(b.created_at).getTime();\n return sort === 'created_desc' ? tb - ta : ta - tb;\n });\n return next;\n}\n\nexport function filterRunHistory(\n runHistory: CronRunHistoryRow[],\n range: HistoryRange,\n jobFilter: string,\n statusFilter: string,\n): CronRunHistoryRow[] {\n const now = new Date();\n const from =\n range === 'day' ? startOfLocalDay(now) : range === 'week' ? startOfLocalWeekMonday(now) : startOfLocalMonth(now);\n return runHistory.filter((row) => {\n if (new Date(row.startedAt) < from) return false;\n if (jobFilter && row.jobId !== jobFilter) return false;\n if (statusFilter && row.status !== statusFilter) return false;\n return true;\n });\n}\n","import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport {\n addJob,\n getHistory,\n getJob,\n removeJob,\n runJob,\n toggleJob,\n updateJob,\n type CronDelivery,\n type CronJob,\n type CronJobExecution,\n type CronPayload,\n} from '@/features/cron/cron-api';\nimport { CronConfirmActionDialog } from '@/features/cron/cron-confirm-action-dialog';\nimport { CronJobDetailDrawer } from '@/features/cron/cron-job-detail-drawer';\nimport { CronJobFormDialog } from '@/features/cron/cron-job-form-dialog';\nimport { CronMainToolbar } from '@/features/cron/cron-main-toolbar';\nimport { CronPageHeaderActions } from '@/features/cron/cron-page-header-actions';\nimport { CronRunHistorySection } from '@/features/cron/cron-run-history-section';\nimport { CronSystemTasksPanel } from '@/features/cron/cron-system-tasks-panel';\nimport { CronTasksPanel } from '@/features/cron/cron-tasks-panel';\nimport type { CronTemplateFilter } from '@/features/cron/cron-template-library';\nimport { CronTemplatePickerDialog } from '@/features/cron/cron-template-picker-dialog';\nimport { useCronJobForm } from '@/features/cron/use-cron-job-form';\nimport { useCronKeepAwake } from '@/features/cron/use-cron-keep-awake';\nimport {\n filterRunHistory,\n sortJobsByCreated,\n useCronPageData,\n type HistoryRange,\n type JobSort,\n} from '@/features/cron/use-cron-page-data';\nimport { messages } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\nimport { usePageHeaderStore } from '@/stores/page-header-store';\nimport { useThemeStore } from '@/stores/theme-store';\n\nexport function CronPage() {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const c = m.cron;\n const chatM = m.chat;\n const token = useGatewayStore((st) => st.token);\n const hasToken = Boolean(token);\n const resolvedTheme = useThemeStore((s) => s.resolved);\n const isDark = resolvedTheme === 'dark';\n const localeTag = language === 'zh' ? 'zh-CN' : 'en-US';\n\n const [mainTab, setMainTab] = useState<'myTasks' | 'systemTasks' | 'history'>('myTasks');\n const [jobSort, setJobSort] = useState<JobSort>('created_desc');\n const [historyRange, setHistoryRange] = useState<HistoryRange>('day');\n const [historyJobFilter, setHistoryJobFilter] = useState('');\n const [historyStatusFilter, setHistoryStatusFilter] = useState('');\n\n const data = useCronPageData({\n hasToken,\n failMessages: { failedToLoadJobs: c.failedToLoadJobs },\n isHistoryTab: mainTab === 'history',\n });\n const { setError } = data;\n\n const keepAwakeHook = useCronKeepAwake({ onUnavailable: () => setError(c.wakeLockUnavailable) });\n\n const defaultModelForForm = useCallback(\n () => data.defaultModel || (data.availableModels.length > 0 ? data.availableModels[0].id : ''),\n [data.defaultModel, data.availableModels],\n );\n\n const form = useCronJobForm({\n m,\n defaultModelForForm,\n channels: data.channels,\n chatAgents: data.chatAgents,\n });\n\n const [detailOpen, setDetailOpen] = useState(false);\n const [detailJob, setDetailJob] = useState<CronJob | null>(null);\n const [detailHistory, setDetailHistory] = useState<CronJobExecution[]>([]);\n const [detailLoading, setDetailLoading] = useState(false);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const [confirmAction, setConfirmAction] = useState<'delete' | 'run' | null>(null);\n const [confirmJobId, setConfirmJobId] = useState<string | null>(null);\n\n const [templatePickerOpen, setTemplatePickerOpen] = useState(false);\n const [templateCategoryFilter, setTemplateCategoryFilter] = useState<CronTemplateFilter>('all');\n\n const absorbCardClickJobIdRef = useRef<string | null>(null);\n\n const scheduleAbsorbNextMenuCardClick = useCallback((jobId: string) => {\n absorbCardClickJobIdRef.current = jobId;\n window.setTimeout(() => {\n if (absorbCardClickJobIdRef.current === jobId) {\n absorbCardClickJobIdRef.current = null;\n }\n }, 400);\n }, []);\n\n const hasElectronFolderPicker =\n typeof window !== 'undefined' && Boolean(window.electronAPI?.file?.openDirectory);\n\n const openNativeFolderPickerCron = useCallback(async (): Promise<string | null> => {\n const api = typeof window !== 'undefined' ? window.electronAPI?.file?.openDirectory : undefined;\n if (api) return api();\n return null;\n }, []);\n\n const onSelectTemplate = useCallback(\n (templateId: string) => {\n const ok = form.applyCronTemplate(templateId);\n if (ok) setTemplatePickerOpen(false);\n },\n [form],\n );\n\n const submitForm = async () => {\n if (!form.formName.trim()) {\n setError(c.nameRequired);\n return;\n }\n if (!form.formSchedule.trim() || !form.formMessage.trim()) {\n setError(c.scheduleRequired);\n return;\n }\n if (form.needsDeliveryChat && !form.formChatId.trim()) {\n setError(c.chatIdRequired);\n return;\n }\n\n form.setFormSubmitting(true);\n setError(null);\n try {\n const message = form.formMessage.trim();\n let delivery: CronDelivery;\n if (form.formSessionTarget === 'isolated' && form.formAgentLocalOnly) {\n delivery = { mode: 'none' };\n } else if (form.formChannel === 'local') {\n delivery = { mode: 'direct', channel: 'local' };\n } else {\n delivery = { mode: 'direct', channel: form.formChannel, to: form.formChatId.trim() };\n }\n\n const payload: CronPayload =\n form.formSessionTarget === 'isolated'\n ? {\n kind: 'agentTurn',\n message,\n ...(form.formModel.trim() ? { model: form.formModel.trim() } : {}),\n }\n : { kind: 'systemEvent', text: message };\n\n const modelTrimmed = form.formModel.trim();\n const agentIdTrim = form.formAgentId.trim().toLowerCase();\n const agentIdForEdit = form.formSessionTarget === 'main' ? null : agentIdTrim || null;\n const wdTrim = form.formWorkingDirectory.trim();\n const jobData = {\n name: form.formName.trim(),\n schedule: form.formSchedule.trim(),\n sessionTarget: form.formSessionTarget,\n model: form.formSessionTarget === 'isolated' && modelTrimmed ? modelTrimmed : undefined,\n delivery,\n payload,\n ...(form.formMode === 'edit'\n ? {\n agentId: agentIdForEdit,\n workingDirectory: form.formSessionTarget === 'isolated' ? wdTrim || null : null,\n }\n : {\n ...(form.formSessionTarget === 'isolated' && agentIdTrim ? { agentId: agentIdTrim } : {}),\n ...(form.formSessionTarget === 'isolated' && wdTrim ? { workingDirectory: wdTrim } : {}),\n }),\n };\n\n if (form.formMode === 'edit' && form.formJobId) {\n await updateJob(form.formJobId, jobData);\n } else {\n const { schedule: sched, agentId, workingDirectory, ...rest } = jobData;\n await addJob(sched, {\n ...rest,\n ...(agentId != null ? { agentId } : {}),\n ...(workingDirectory ? { workingDirectory } : {}),\n });\n }\n form.closeForm();\n await data.loadJobs();\n await data.loadAux();\n } catch (e) {\n setError(\n e instanceof Error\n ? e.message\n : form.formMode === 'edit'\n ? c.failedToUpdateJob\n : c.failedToCreateJob,\n );\n } finally {\n form.setFormSubmitting(false);\n }\n };\n\n const openDetail = async (job: CronJob) => {\n setDetailOpen(true);\n setDetailJob(job);\n setDetailLoading(true);\n setDetailHistory([]);\n try {\n const full = await getJob(job.id);\n if (full) {\n setDetailJob(full);\n setDetailHistory(await getHistory(job.id, 20));\n }\n } catch {\n /* keep partial */\n } finally {\n setDetailLoading(false);\n }\n };\n\n const onToggle = async (job: CronJob, enabled: boolean) => {\n try {\n await toggleJob(job.id, enabled);\n await data.loadJobs();\n await data.loadAux();\n } catch (e) {\n setError(e instanceof Error ? e.message : c.failedToToggleJob);\n }\n };\n\n const runConfirm = async () => {\n if (!confirmJobId || !confirmAction) return;\n const id = confirmJobId;\n const action = confirmAction;\n setConfirmOpen(false);\n setConfirmJobId(null);\n setConfirmAction(null);\n try {\n if (action === 'run') {\n await runJob(id);\n } else {\n await removeJob(id);\n if (detailJob?.id === id) {\n setDetailOpen(false);\n setDetailJob(null);\n }\n }\n await data.loadJobs();\n await data.loadAux();\n await data.loadRunHistoryOnly();\n } catch (e) {\n setError(e instanceof Error ? e.message : c.actionFailed);\n }\n };\n\n useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (e.key !== 'Escape') return;\n if (form.formOpen) form.closeForm();\n else if (detailOpen) {\n setDetailOpen(false);\n setDetailJob(null);\n }\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [form, detailOpen]);\n\n const statusLabels = useMemo(\n () => ({\n running: c.execStatusRunning,\n success: c.execStatusSuccess,\n failed: c.execStatusFailed,\n cancelled: c.execStatusCancelled,\n }),\n [c.execStatusCancelled, c.execStatusFailed, c.execStatusRunning, c.execStatusSuccess],\n );\n\n const sortedUserJobs = useMemo(() => sortJobsByCreated(data.userCronJobs, jobSort), [data.userCronJobs, jobSort]);\n const sortedSystemJobs = useMemo(() => sortJobsByCreated(data.systemCronJobs, jobSort), [data.systemCronJobs, jobSort]);\n\n const filteredRunHistory = useMemo(\n () => filterRunHistory(data.runHistory, historyRange, historyJobFilter, historyStatusFilter),\n [data.runHistory, historyRange, historyJobFilter, historyStatusFilter],\n );\n\n const scheduleBadgeLabels = c.scheduleBadge;\n\n const setPageHeader = usePageHeaderStore((s) => s.setPageHeader);\n const clearPageHeader = usePageHeaderStore((s) => s.clearPageHeader);\n const { pathname } = useLocation();\n const inSettingsShell = pathname.startsWith('/settings/');\n\n const cronHeaderEnd = useMemo(\n () => (\n <CronPageHeaderActions\n c={c}\n loading={data.loading}\n runHistoryLoading={data.runHistoryLoading}\n onRefresh={data.refreshAll}\n onOpenTemplatePicker={() => {\n setTemplateCategoryFilter('all');\n setTemplatePickerOpen(true);\n }}\n onAddJob={() => form.openForm()}\n />\n ),\n [c, data.loading, data.runHistoryLoading, data.refreshAll, form],\n );\n\n useLayoutEffect(() => {\n if (!hasToken || inSettingsShell) {\n clearPageHeader();\n return () => clearPageHeader();\n }\n setPageHeader({\n startExtra: null,\n main: null,\n end: cronHeaderEnd,\n });\n return () => clearPageHeader();\n }, [clearPageHeader, cronHeaderEnd, hasToken, inSettingsShell, setPageHeader]);\n\n if (!hasToken) {\n return (\n <div className=\"mx-auto w-full max-w-app-main px-4 py-16 text-center text-sm text-fg-muted sm:px-8\">{c.needToken}</div>\n );\n }\n\n return (\n <div className=\"flex min-h-0 min-w-0 flex-1 flex-col bg-surface-panel\">\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-6 sm:px-8\">\n {data.error ? (\n <div\n className=\"rounded-xl border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-800 dark:border-red-900/50 dark:bg-red-950/40 dark:text-red-200\"\n role=\"alert\"\n >\n {data.error}\n </div>\n ) : null}\n\n <header className=\"flex flex-col gap-4\">\n <div className=\"min-w-0\">\n <h1 className=\"text-xl font-semibold tracking-tight text-fg\">{c.title}</h1>\n <p className=\"mt-1 max-w-2xl text-sm text-fg-muted\">{c.subtitle}</p>\n </div>\n </header>\n\n {inSettingsShell ? (\n <div className=\"flex flex-wrap items-center justify-end gap-2 border-b border-edge-subtle pb-3 dark:border-edge-subtle\">\n {cronHeaderEnd}\n </div>\n ) : null}\n\n <CronMainToolbar\n c={c}\n mainTab={mainTab}\n onMainTabChange={setMainTab}\n jobSort={jobSort}\n onJobSortChange={setJobSort}\n historyRange={historyRange}\n onHistoryRangeChange={setHistoryRange}\n historyJobFilter={historyJobFilter}\n onHistoryJobFilterChange={setHistoryJobFilter}\n historyStatusFilter={historyStatusFilter}\n onHistoryStatusFilterChange={setHistoryStatusFilter}\n jobs={data.jobs}\n />\n\n {mainTab === 'myTasks' ? (\n <CronTasksPanel\n c={c}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n loading={data.loading}\n jobsCount={data.userCronJobs.length}\n sortedJobs={sortedUserJobs}\n templateCategoryFilter={templateCategoryFilter}\n onTemplateCategoryFilterChange={setTemplateCategoryFilter}\n onSelectTemplate={onSelectTemplate}\n keepAwake={keepAwakeHook.keepAwake}\n wakeSupported={keepAwakeHook.featureAvailable}\n onWakeUnsupportedClick={() => setError(c.wakeLockUnavailable)}\n onKeepAwakeToggle={() => keepAwakeHook.setKeepAwake((v) => !v)}\n absorbCardClickJobIdRef={absorbCardClickJobIdRef}\n scheduleAbsorbNextMenuCardClick={scheduleAbsorbNextMenuCardClick}\n onOpenDetail={(j) => void openDetail(j)}\n onToggle={(j, en) => void onToggle(j, en)}\n onEdit={(j) => form.openForm(j)}\n onAddJob={() => form.openForm()}\n onRunNow={(j) => {\n setConfirmAction('run');\n setConfirmJobId(j.id);\n setConfirmOpen(true);\n }}\n onDelete={(j) => {\n setConfirmAction('delete');\n setConfirmJobId(j.id);\n setConfirmOpen(true);\n }}\n />\n ) : mainTab === 'systemTasks' ? (\n <CronSystemTasksPanel\n c={c}\n language={language}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n loading={data.loading}\n sortedSystemJobs={sortedSystemJobs}\n heartbeat={data.heartbeatFromConfig}\n keepAwake={keepAwakeHook.keepAwake}\n wakeSupported={keepAwakeHook.featureAvailable}\n onWakeUnsupportedClick={() => setError(c.wakeLockUnavailable)}\n onKeepAwakeToggle={() => keepAwakeHook.setKeepAwake((v) => !v)}\n absorbCardClickJobIdRef={absorbCardClickJobIdRef}\n scheduleAbsorbNextMenuCardClick={scheduleAbsorbNextMenuCardClick}\n onOpenDetail={(j) => void openDetail(j)}\n onToggle={(j, en) => void onToggle(j, en)}\n onEdit={(j) => form.openForm(j)}\n onRunNow={(j) => {\n setConfirmAction('run');\n setConfirmJobId(j.id);\n setConfirmOpen(true);\n }}\n onDelete={(j) => {\n setConfirmAction('delete');\n setConfirmJobId(j.id);\n setConfirmOpen(true);\n }}\n />\n ) : (\n <CronRunHistorySection\n c={c}\n runHistoryLoading={data.runHistoryLoading}\n runHistory={data.runHistory}\n filteredRunHistory={filteredRunHistory}\n jobs={data.jobs}\n onRefreshHistory={() => void data.loadRunHistoryOnly()}\n onOpenJobDetail={(j) => void openDetail(j)}\n statusLabels={statusLabels}\n />\n )}\n </div>\n\n <CronJobFormDialog\n open={form.formOpen}\n onRequestClose={form.closeForm}\n c={c}\n chatM={chatM}\n agentsMessages={m.agentsSettings}\n isDark={isDark}\n channels={data.channels}\n sessionChatIds={form.sessionChatIds}\n cronAgentSelectOptions={form.cronAgentSelectOptions}\n hasElectronFolderPicker={hasElectronFolderPicker}\n openNativeFolderPicker={openNativeFolderPickerCron}\n applyWorkingDirectory={form.applyWorkingDirectory}\n wdModalOpen={form.formWdModalOpen}\n onWdModalOpenChange={form.setFormWdModalOpen}\n defaultModelResolver={defaultModelForForm}\n formMode={form.formMode}\n formJobId={form.formJobId}\n formName={form.formName}\n onFormNameChange={form.setFormName}\n formSchedule={form.formSchedule}\n onFormScheduleChange={form.setFormSchedule}\n formSubmitting={form.formSubmitting}\n formSessionTarget={form.formSessionTarget}\n onFormSessionTargetChange={form.handleFormSessionTargetChange}\n formAgentLocalOnly={form.formAgentLocalOnly}\n onFormAgentLocalOnlyChange={form.setFormAgentLocalOnly}\n formModel={form.formModel}\n onFormModelUserChange={form.handleFormModelUserChange}\n formAgentId={form.formAgentId}\n onFormAgentIdChange={form.setFormAgentId}\n formWorkingDirectory={form.formWorkingDirectory}\n onFormWorkingDirectoryChange={form.setFormWorkingDirectory}\n formChannel={form.formChannel}\n onFormChannelChange={form.handleFormChannelChange}\n formChatId={form.formChatId}\n onFormChatIdChange={form.setFormChatId}\n formMessage={form.formMessage}\n onFormMessageChange={form.setFormMessage}\n formMessageMdMode={form.formMessageMdMode}\n onSetMessageMdMode={form.setMessageMdMode}\n messageEditorNonce={form.messageEditorNonce}\n needsDeliveryChat={form.needsDeliveryChat}\n showChannelPicker={form.showChannelPicker}\n canSubmit={form.canSubmit}\n onSubmit={() => void submitForm()}\n onRefreshRecipients={form.refreshRecipientsList}\n />\n\n <CronTemplatePickerDialog\n open={templatePickerOpen}\n onOpenChange={(openNext) => {\n setTemplatePickerOpen(openNext);\n if (openNext) setTemplateCategoryFilter('all');\n }}\n c={c}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n categoryFilter={templateCategoryFilter}\n onCategoryFilterChange={setTemplateCategoryFilter}\n onSelectTemplate={onSelectTemplate}\n />\n\n <CronJobDetailDrawer\n open={detailOpen}\n onDismiss={() => {\n setDetailOpen(false);\n setDetailJob(null);\n }}\n detailJob={detailJob}\n detailLoading={detailLoading}\n detailHistory={detailHistory}\n c={c}\n chatWorkingDirNotSet={chatM.workingDirectory.notSet}\n statusLabels={statusLabels}\n />\n\n <CronConfirmActionDialog\n open={confirmOpen}\n onOpenChange={setConfirmOpen}\n action={confirmAction}\n c={c}\n onDismiss={() => {\n setConfirmOpen(false);\n setConfirmJobId(null);\n setConfirmAction(null);\n }}\n onConfirm={runConfirm}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cron-page-CKqDtScu.js","names":["Dialog","Button","MessageBundle","CronCopy","CronConfirmActionDialogProps","open","onOpenChange","action","c","onDismiss","onConfirm","CronConfirmActionDialog","t0","$","_c","t1","Symbol","for","t2","delete","runNow","t3","t4","confirmDelete","confirmRun","t5","t6","cancel","t7","undefined","t8","t9","t10","t11","t12","t13","formControlBorderFocusClass","nativeSelectMaxWidthClass","selectControlBaseClass","cn","RUN_HISTORY_FETCH_LIMIT","DEFAULT_SCHEDULE","RECENT_WD_STORAGE_KEY","RECENT_WD_MAX","startOfLocalDay","d","Date","x","setHours","startOfLocalWeekMonday","day","getDay","diff","setDate","getDate","startOfLocalMonth","getFullYear","getMonth","navigateToSessionChat","sessionKey","sk","trim","window","dispatchEvent","CustomEvent","detail","bubbles","pushRecentWorkspaceDirForCron","path","t","raw","localStorage","getItem","parsed","JSON","parse","prev","Array","isArray","filter","length","next","p","slice","setItem","stringify","inputClassName","disabled","selectClassName","cronRecipientSelectClass","cronToolbarSelectClass","Dialog","Loader2","X","MarkdownView","Button","CronJob","CronJobExecution","cronJobBodyText","navigateToSessionChat","execStatusLabel","formatDeliveryToSummary","formatDuration","formatNextRun","formatTime","truncate","MessageBundle","cn","CronCopy","CronJobDetailDrawerProps","open","onDismiss","detailJob","detailLoading","detailHistory","c","chatWorkingDirNotSet","statusLabels","running","success","failed","cancelled","CronJobDetailDrawer","t0","$","_c","t1","next","t2","Symbol","for","t3","t4","id","name","trim","t5","t6","t7","close","t8","t9","agentProfile","agentProfileDefault","channelLocal","colChat","colDetail","colDuration","colStarted","deliveryLocalOnly","deliveryTarget","deliveryTargetLocalChannel","detailRunHistory","disabled","enabled","messageLabel","mode","modeAgentOption","modeDirectOption","nextRun","noRunsYet","openChat","openChatTitle","scheduleLabel","status","timeLabels","workingDirectoryLabel","schedule","sessionTarget","agentId","workingDirectory","delivery","channel","to","next_run","length","map","row","startedAt","duration","summary","error","sessionKey","t10","t11","undefined","t12","Dialog","Eye","FolderInput","RefreshCw","SquarePen","X","MarkdownEditor","MarkdownView","Button","ChatAgentOption","ModelSelector","folderDisplayName","WorkingDirectoryPickerModal","ChannelStatus","SessionChatId","CronSchedulePicker","formatRecipientOptionLabel","cronRecipientSelectClass","inputClassName","selectClassName","agentListDisplayName","MessageBundle","cn","interaction","CronCopy","CronJobFormDialogProps","open","onRequestClose","c","chatM","agentsMessages","isDark","channels","sessionChatIds","cronAgentSelectOptions","hasElectronFolderPicker","openNativeFolderPicker","Promise","applyWorkingDirectory","path","wdModalOpen","onWdModalOpenChange","defaultModelResolver","formMode","formJobId","formName","onFormNameChange","v","formSchedule","onFormScheduleChange","formSubmitting","formSessionTarget","onFormSessionTargetChange","target","defaultModelFallback","currentModel","formAgentLocalOnly","onFormAgentLocalOnlyChange","formModel","onFormModelUserChange","id","formAgentId","onFormAgentIdChange","formWorkingDirectory","onFormWorkingDirectoryChange","formChannel","onFormChannelChange","channel","formChatId","onFormChatIdChange","formMessage","onFormMessageChange","formMessageMdMode","onSetMessageMdMode","mode","messageEditorNonce","needsDeliveryChat","showChannelPicker","canSubmit","onSubmit","onRefreshRecipients","CronJobFormDialog","props","$","_c","t0","o","t1","Symbol","for","t2","editJob","addJob","t3","t4","t5","close","t6","t7","name","t8","t9","e_0","e","value","t10","namePlaceholder","t11","t12","schedulePicker","t13","t14","t15","e_1","trim","t16","modeDirectOption","t17","modeAgentOption","t18","t19","modeDirect","modeAgent","t20","t21","t22","agentLocalOnly","agentLocalOnlyHint","agentProfile","agentProfileDefault","agentProfileHint","model","workingDirectoryHint","workingDirectoryLabel","workingDirectoryReset","modelPlaceholder","modelSearchPlaceholder","modelNoMatches","e_2","map","ag","transition","focusRingPanel","workingDirectory","chooseFolder","selectWorkingDirectory","e_3","stopPropagation","picked","notSet","e_4","checked","t23","channelLocal","enterManuallyOrSelect","lastActiveLabels","noRecentChats","noRecentChatsOption","recipient","recipientPlaceholder","refreshList","refreshRecipientHint","selectRecipient","e_5","v_0","_temp2","e_6","e_7","v_1","length","item","chatId","t24","message","t25","t26","t27","t28","t29","messageEdit","t30","t31","t32","t33","t34","messagePreview","t35","t36","t37","t38","t39","messagePlaceholder","t40","t41","messageMarkdownHint","t42","t43","t44","cancel","t45","t46","loading","save","create","t47","t48","t49","_temp","t50","t51","undefined","p","t52","ch","enabled","preventDefault","segmentedThumbActiveClassName","segmentedThumbBaseClassName","segmentedTrackClassName","CronJob","cronToolbarSelectClass","MessageBundle","cn","CronCopy","CronMainToolbarProps","c","mainTab","onMainTabChange","tab","jobSort","onJobSortChange","sort","historyRange","onHistoryRangeChange","range","historyJobFilter","onHistoryJobFilterChange","jobId","historyStatusFilter","onHistoryStatusFilterChange","status","jobs","CronMainToolbar","t0","$","_c","t1","title","t2","t3","t4","t5","t6","tabMyTasks","t7","t8","t9","t10","t11","tabSystemTasks","t12","t13","t14","t15","t16","tabRunHistory","t17","t18","t19","t20","sortCreatedAsc","sortCreatedDesc","e","target","value","t21","execStatusCancelled","execStatusFailed","execStatusRunning","execStatusSuccess","filterAllStatuses","filterAllTasks","historyRangeDay","historyRangeMonth","historyRangeWeek","runHistoryTitle","const","map","r","e_0","_temp","e_1","t22","t23","j","id","name","LayoutTemplate","Plus","RefreshCw","Button","MessageBundle","cn","CronCopy","CronPageHeaderActionsProps","c","loading","runHistoryLoading","onRefresh","onOpenTemplatePicker","onAddJob","CronPageHeaderActions","t0","$","_c","busy","t1","refresh","t2","t3","t4","t5","t6","t7","t8","Symbol","for","t9","fromTemplate","t10","t11","addJob","t12","Clock","Loader2","RefreshCw","Button","CronJob","CronRunHistoryRow","navigateToSessionChat","execStatusLabel","formatDuration","formatTime","truncate","MessageBundle","cn","CronCopy","CronRunHistorySectionProps","c","runHistoryLoading","runHistory","filteredRunHistory","jobs","onRefreshHistory","onOpenJobDetail","job","statusLabels","running","success","failed","cancelled","CronRunHistorySection","t0","$","_c","t1","tabRunHistory","t2","runHistoryHint","t3","t4","refresh","t5","t6","t7","t8","t9","t10","t11","t12","colChat","colDetail","colDuration","colJob","colStarted","emptyHistoryHint","emptyHistoryTitle","noRunsYet","openChat","openChatTitle","status","length","map","row","id","startedAt","some","j_0","j","jobId","find","x","jobName","duration","summary","error","sessionKey","trim","t13","DropdownMenu","Clock","MoreVertical","MarkdownView","Button","MutableRefObject","CronJob","cronJobBodyText","formatScheduleBadge","MessageBundle","cn","CronCopy","CronJobCardProps","job","c","localeTag","scheduleBadgeLabels","absorbCardClickJobIdRef","scheduleAbsorbNextMenuCardClick","jobId","onOpenDetail","onToggle","enabled","onEdit","onRunNow","onDelete","CronJobCard","t0","$","_c","t1","Symbol","for","t2","t3","current","id","e","key","preventDefault","t4","t5","t6","t7","e_0","stopPropagation","t8","t9","t10","t11","jobCardMenuAria","_temp","t12","t13","edit","t14","t15","runNow","t16","t17","delete","t18","_temp2","t19","t20","t21","name","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","e_2","e_1","ChevronRight","Info","Loader2","MutableRefObject","Link","Button","CronJob","CronJobCard","HeartbeatSettingsState","formatIntervalMsLabel","messages","MessageBundle","StoredLanguage","cn","CronCopy","CronSystemTasksPanelProps","c","language","localeTag","scheduleBadgeLabels","loading","sortedSystemJobs","heartbeat","keepAwake","wakeSupported","onWakeUnsupportedClick","onKeepAwakeToggle","absorbCardClickJobIdRef","scheduleAbsorbNextMenuCardClick","jobId","onOpenDetail","job","onToggle","enabled","onEdit","onRunNow","onDelete","CronSystemTasksPanel","t0","$","_c","t1","t10","t11","t12","t2","t3","t4","t5","t6","t7","t8","t9","disabled","systemHeartbeatEvery","systemHeartbeatHint","systemHeartbeatInterval","systemHeartbeatSettingsLink","systemHeartbeatStatus","systemHeartbeatTitle","systemTasksIntro","tabSystemTasks","wakeBanner","wakeLockUnavailable","intervalMs","hbInterval","heartbeatSettings","intervalPresets","t13","Symbol","for","t14","t15","t16","t17","undefined","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","replace","systemDreamingTitle","systemDreamingSettingsLink","systemDreamingHint","length","systemDreamingEmpty","map","id","MessageBundle","CronTemplateCopy","title","description","prompt","getCronTemplateCopy","cron","templateId","raw","templates","undefined","row","Record","trim","CRON_TEMPLATE_CATEGORIES","const","CronTemplateCategory","CronJobTemplateDef","templateId","category","defaultSchedule","defaultSessionTarget","CRON_JOB_TEMPLATES","CronTemplateId","cronTemplateById","id","find","t","Button","MessageBundle","cn","getCronTemplateCopy","CRON_JOB_TEMPLATES","CRON_TEMPLATE_CATEGORIES","CronTemplateCategory","formatScheduleBadge","ScheduleBadgeLabels","CronTemplateFilter","Props","cron","localeTag","scheduleBadgeLabels","categoryFilter","onCategoryFilterChange","next","onSelectTemplate","templateId","CronTemplateLibrary","props","$","_c","t0","filtered","filter","t","category","t1","fromTemplate","t2","t3","t4","templateFilterAll","t5","templateCategories","map","cat","t6","length","templatesEmptyHint","t_0","copy","badge","schedule","defaultSchedule","timezone","undefined","next_run","title","description","Info","Loader2","MutableRefObject","Button","CronJob","CronJobCard","CronTemplateFilter","CronTemplateLibrary","MessageBundle","cn","CronCopy","CronTasksPanelProps","c","localeTag","scheduleBadgeLabels","loading","jobsCount","sortedJobs","templateCategoryFilter","onTemplateCategoryFilterChange","v","onSelectTemplate","templateId","keepAwake","wakeSupported","onWakeUnsupportedClick","onKeepAwakeToggle","absorbCardClickJobIdRef","scheduleAbsorbNextMenuCardClick","jobId","onOpenDetail","job","onToggle","enabled","onEdit","onAddJob","onRunNow","onDelete","CronTasksPanel","t0","$","_c","t1","tabMyTasks","t2","Symbol","for","t3","wakeBanner","t4","t5","t6","wakeLockUnavailable","undefined","t7","t8","t9","t10","t11","t12","t13","t14","t15","emptyStateCta","map","id","j","j_0","en","t16","Dialog","X","Button","CronTemplateFilter","CronTemplateLibrary","MessageBundle","CronCopy","CronTemplatePickerDialogProps","open","onOpenChange","c","localeTag","scheduleBadgeLabels","categoryFilter","onCategoryFilterChange","v","onSelectTemplate","templateId","CronTemplatePickerDialog","t0","$","_c","t1","Symbol","for","t2","fromTemplate","t3","t4","close","t5","t6","t7","_temp","t8","e","preventDefault","useCallback","useEffect","useMemo","useRef","useState","ChatAgentOption","cronJobBodyText","getSessionChatIds","ChannelStatus","CronJob","SessionChatId","DEFAULT_SCHEDULE","pushRecentWorkspaceDirForCron","getCronTemplateCopy","cronTemplateById","messages","makeMessages","FormMode","FormSessionTarget","FormMessageMdMode","useCronJobForm","opts","$","_c","m","defaultModelForForm","channels","chatAgents","formOpen","setFormOpen","formMode","setFormMode","formJobId","setFormJobId","formName","setFormName","formSchedule","setFormSchedule","formChannel","setFormChannel","formChatId","setFormChatId","formMessage","setFormMessage","formMessageMdMode","setFormMessageMdMode","messageEditorNonce","setMessageEditorNonce","formSessionTarget","setFormSessionTarget","formAgentId","setFormAgentId","formAgentLocalOnly","setFormAgentLocalOnly","formWorkingDirectory","setFormWorkingDirectory","formWdModalOpen","setFormWdModalOpen","formModel","setFormModel","formSubmitting","setFormSubmitting","t0","Symbol","for","sessionChatIds","setSessionChatIds","formModelUserTouched","t1","Set","map","_temp","ids","out","t2","trim","toLowerCase","extra","has","t3","id","push","cronAgentSelectOptions","needsDeliveryChat","showChannelPicker","Boolean","canSubmit","t4","current","next","t5","t6","valid","_temp2","t7","cancelled","then","ids_0","t8","t9","job","name","schedule","String","bodyText","sessionTarget","agentId","workingDirectory","fromPayload","payload","kind","model","stored","hasLocalChannel","delivery","channel","agentLocalOnly","to","mode","parts","split","knownChannels","length","includes","slice","join","_temp3","openForm","t10","_temp4","setMessageMdMode","t11","cron","templateId","def","copy","undefined","title","defaultSchedule","prompt","defaultSessionTarget","_temp5","applyCronTemplate","t12","closeForm","t13","target","defaultModelFallback","currentModel","handleFormSessionTargetChange","t14","v","handleFormChannelChange","t15","handleFormModelUserChange","t16","refreshRecipientsList","t17","path","t","applyWorkingDirectory","t18","n_1","n","n_0","x","a","useCallback","useEffect","useRef","useState","isElectronCronDisplayWakeAvailable","WakeMode","useCronKeepAwake","opts","onUnavailable","keepAwake","setKeepAwake","wakeLockRef","WakeLockSentinel","wakeModeRef","keepAwakeRef","wakeSupported","navigator","featureAvailable","releaseWakeLock","current","window","electronAPI","cron","setDisplaySleepPrevented","release","acquireWakeLock","electronWake","undefined","sentinel","wakeLock","request","addEventListener","onVis","document","visibilityState","removeEventListener","useCallback","useEffect","useMemo","useState","fetchChatAgents","ChatAgentOption","getAllRunsHistory","getChannels","getConfig","getModels","listJobs","ChannelStatus","CronJob","CronRunHistoryRow","isDreamingManagedCronJob","RUN_HISTORY_FETCH_LIMIT","startOfLocalDay","startOfLocalMonth","startOfLocalWeekMonday","fetchGatewayConfigSwrResponse","normalizeHeartbeatFromConfig","FailMessages","failedToLoadJobs","HistoryRange","JobSort","useCronPageData","opts","hasToken","failMessages","isHistoryTab","jobs","setJobs","channels","setChannels","availableModels","setAvailableModels","id","name","provider","defaultModel","setDefaultModel","chatAgents","setChatAgents","gatewayConfigRaw","setGatewayConfigRaw","runHistory","setRunHistory","runHistoryLoading","setRunHistoryLoading","loading","setLoading","error","setError","loadJobs","list","e","Error","message","loadAux","ch","mods","cfg","cfgFull","agentsPayload","Promise","all","catch","model","payload","config","items","loadRunHistoryOnly","rows","onReload","then","r","window","addEventListener","removeEventListener","userCronJobs","filter","j","systemCronJobs","heartbeatFromConfig","refreshAll","sortJobsByCreated","arr","sort","next","a","b","ta","Date","created_at","getTime","tb","filterRunHistory","range","jobFilter","statusFilter","now","from","row","startedAt","jobId","status","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","useLocation","addJob","getHistory","getJob","removeJob","runJob","toggleJob","updateJob","CronDelivery","CronJob","CronJobExecution","CronPayload","CronConfirmActionDialog","CronJobDetailDrawer","CronJobFormDialog","CronMainToolbar","CronPageHeaderActions","CronRunHistorySection","CronSystemTasksPanel","CronTasksPanel","CronTemplateFilter","CronTemplatePickerDialog","useCronJobForm","useCronKeepAwake","filterRunHistory","sortJobsByCreated","useCronPageData","HistoryRange","JobSort","messages","useGatewayStore","useLocaleStore","usePageHeaderStore","useThemeStore","CronPage","language","s","m","c","cron","chatM","chat","token","st","hasToken","Boolean","resolvedTheme","resolved","isDark","localeTag","mainTab","setMainTab","jobSort","setJobSort","historyRange","setHistoryRange","historyJobFilter","setHistoryJobFilter","historyStatusFilter","setHistoryStatusFilter","data","failMessages","failedToLoadJobs","isHistoryTab","setError","keepAwakeHook","onUnavailable","wakeLockUnavailable","defaultModelForForm","defaultModel","availableModels","length","id","form","channels","chatAgents","detailOpen","setDetailOpen","detailJob","setDetailJob","detailHistory","setDetailHistory","detailLoading","setDetailLoading","confirmOpen","setConfirmOpen","confirmAction","setConfirmAction","confirmJobId","setConfirmJobId","templatePickerOpen","setTemplatePickerOpen","templateCategoryFilter","setTemplateCategoryFilter","absorbCardClickJobIdRef","scheduleAbsorbNextMenuCardClick","jobId","current","window","setTimeout","hasElectronFolderPicker","electronAPI","file","openDirectory","openNativeFolderPickerCron","Promise","api","undefined","onSelectTemplate","templateId","ok","applyCronTemplate","submitForm","formName","trim","nameRequired","formSchedule","formMessage","scheduleRequired","needsDeliveryChat","formChatId","chatIdRequired","setFormSubmitting","message","delivery","formSessionTarget","formAgentLocalOnly","mode","formChannel","channel","to","payload","kind","formModel","model","text","modelTrimmed","agentIdTrim","formAgentId","toLowerCase","agentIdForEdit","wdTrim","formWorkingDirectory","jobData","name","schedule","sessionTarget","formMode","agentId","workingDirectory","formJobId","sched","rest","closeForm","loadJobs","loadAux","e","Error","failedToUpdateJob","failedToCreateJob","openDetail","job","full","onToggle","enabled","failedToToggleJob","runConfirm","action","loadRunHistoryOnly","actionFailed","onKey","KeyboardEvent","key","formOpen","document","addEventListener","removeEventListener","statusLabels","running","execStatusRunning","success","execStatusSuccess","failed","execStatusFailed","cancelled","execStatusCancelled","sortedUserJobs","userCronJobs","sortedSystemJobs","systemCronJobs","filteredRunHistory","runHistory","scheduleBadgeLabels","scheduleBadge","setPageHeader","clearPageHeader","pathname","inSettingsShell","startsWith","cronHeaderEnd","loading","runHistoryLoading","refreshAll","openForm","startExtra","main","end","needToken","error","title","subtitle","jobs","keepAwake","featureAvailable","setKeepAwake","v","j","en","heartbeatFromConfig","agentsSettings","sessionChatIds","cronAgentSelectOptions","applyWorkingDirectory","formWdModalOpen","setFormWdModalOpen","setFormName","setFormSchedule","formSubmitting","handleFormSessionTargetChange","setFormAgentLocalOnly","handleFormModelUserChange","setFormAgentId","setFormWorkingDirectory","handleFormChannelChange","setFormChatId","setFormMessage","formMessageMdMode","setMessageMdMode","messageEditorNonce","showChannelPicker","canSubmit","refreshRecipientsList","openNext","notSet"],"sources":["../../../../../web/src/features/cron/cron-confirm-action-dialog.tsx","../../../../../web/src/features/cron/cron-page-lib.ts","../../../../../web/src/features/cron/cron-job-detail-drawer.tsx","../../../../../web/src/features/cron/cron-job-form-dialog.tsx","../../../../../web/src/features/cron/cron-main-toolbar.tsx","../../../../../web/src/features/cron/cron-page-header-actions.tsx","../../../../../web/src/features/cron/cron-run-history-section.tsx","../../../../../web/src/features/cron/cron-job-card.tsx","../../../../../web/src/features/cron/cron-system-tasks-panel.tsx","../../../../../web/src/features/cron/cron-template-i18n.ts","../../../../../web/src/features/cron/cron-templates.ts","../../../../../web/src/features/cron/cron-template-library.tsx","../../../../../web/src/features/cron/cron-tasks-panel.tsx","../../../../../web/src/features/cron/cron-template-picker-dialog.tsx","../../../../../web/src/features/cron/use-cron-job-form.ts","../../../../../web/src/features/cron/use-cron-keep-awake.ts","../../../../../web/src/features/cron/use-cron-page-data.ts","../../../../../web/src/features/cron/cron-page.tsx"],"sourcesContent":["import * as Dialog from '@radix-ui/react-dialog';\n\nimport { Button } from '@/components/ui/button';\nimport type { MessageBundle } from '@/i18n/messages';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronConfirmActionDialogProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n action: 'delete' | 'run' | null;\n c: CronCopy;\n onDismiss: () => void;\n onConfirm: () => void;\n};\n\nexport function CronConfirmActionDialog({\n open,\n onOpenChange,\n action,\n c,\n onDismiss,\n onConfirm,\n}: CronConfirmActionDialogProps) {\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-[70] bg-scrim\" />\n <div className=\"fixed inset-0 z-[70] flex items-center justify-center p-4 pointer-events-none\">\n <Dialog.Content className=\"xopc-dialog-content-pane pointer-events-auto relative w-full max-w-md rounded-xl border border-edge bg-surface-panel p-4 shadow-popover dark:border-edge\">\n <Dialog.Title className=\"text-base font-semibold text-fg\">\n {action === 'delete' ? c.delete : c.runNow}\n </Dialog.Title>\n <p className=\"mt-2 text-sm text-fg-muted\">\n {action === 'delete' ? c.confirmDelete : c.confirmRun}\n </p>\n <div className=\"mt-4 flex justify-end gap-2\">\n <Button type=\"button\" variant=\"secondary\" onClick={onDismiss}>\n {c.cancel}\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n className={action === 'delete' ? 'bg-red-600 hover:bg-red-700' : undefined}\n onClick={() => void onConfirm()}\n >\n {action === 'delete' ? c.delete : c.runNow}\n </Button>\n </div>\n </Dialog.Content>\n </div>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import {\n formControlBorderFocusClass,\n nativeSelectMaxWidthClass,\n selectControlBaseClass,\n} from '@/lib/form-field-width';\nimport { cn } from '@/lib/cn';\n\nexport const RUN_HISTORY_FETCH_LIMIT = 400;\n\nexport const DEFAULT_SCHEDULE = '*/5 * * * *';\n\n/** Same storage key as chat composer so recent folders stay in sync. */\nexport const RECENT_WD_STORAGE_KEY = 'xopc.recentWorkspaceDirs.v1';\nexport const RECENT_WD_MAX = 10;\n\nexport function startOfLocalDay(d: Date): Date {\n const x = new Date(d);\n x.setHours(0, 0, 0, 0);\n return x;\n}\n\n/** Week starts on Monday (local). */\nexport function startOfLocalWeekMonday(d: Date): Date {\n const x = startOfLocalDay(d);\n const day = x.getDay();\n const diff = day === 0 ? -6 : 1 - day;\n x.setDate(x.getDate() + diff);\n return x;\n}\n\nexport function startOfLocalMonth(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), 1, 0, 0, 0, 0);\n}\n\nexport function navigateToSessionChat(sessionKey: string | undefined | null): void {\n const sk = sessionKey?.trim();\n if (!sk) return;\n window.dispatchEvent(\n new CustomEvent('navigate-to-chat', { detail: { sessionKey: sk }, bubbles: true }),\n );\n}\n\nexport function pushRecentWorkspaceDirForCron(path: string): void {\n const t = path.trim();\n if (!t) return;\n try {\n const raw = localStorage.getItem(RECENT_WD_STORAGE_KEY);\n const parsed = raw ? (JSON.parse(raw) as unknown) : [];\n const prev = Array.isArray(parsed)\n ? parsed.filter((x): x is string => typeof x === 'string' && x.trim().length > 0)\n : [];\n const next = [t, ...prev.filter((p) => p !== t)].slice(0, RECENT_WD_MAX);\n localStorage.setItem(RECENT_WD_STORAGE_KEY, JSON.stringify(next));\n } catch {\n /* ignore */\n }\n}\n\nexport function inputClassName(disabled?: boolean): string {\n return cn(\n 'w-full rounded-md border border-edge bg-surface-base px-3 py-2 text-sm text-fg placeholder:text-fg-disabled',\n formControlBorderFocusClass,\n disabled && 'cursor-not-allowed opacity-60',\n );\n}\n\nexport function selectClassName(): string {\n return cn(selectControlBaseClass, nativeSelectMaxWidthClass);\n}\n\nexport const cronRecipientSelectClass = cn(\n selectControlBaseClass,\n 'w-full text-xs sm:w-auto sm:min-w-[11rem] sm:max-w-[17rem] sm:shrink-0',\n);\n\n/** Toolbar filters: avoid `w-full` from {@link nativeSelectMaxWidthClass} so Day/Week/Month + selects stay one row. */\nexport const cronToolbarSelectClass = cn(\n selectControlBaseClass,\n 'w-auto min-w-[9rem] max-w-[14rem] shrink-0 text-xs',\n);\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { Loader2, X } from 'lucide-react';\n\nimport { MarkdownView } from '@/components/markdown/markdown-view';\nimport { Button } from '@/components/ui/button';\nimport type { CronJob, CronJobExecution } from '@/features/cron/cron-api';\nimport { cronJobBodyText } from '@/features/cron/cron-api';\nimport { navigateToSessionChat } from '@/features/cron/cron-page-lib';\nimport {\n execStatusLabel,\n formatDeliveryToSummary,\n formatDuration,\n formatNextRun,\n formatTime,\n truncate,\n} from '@/features/cron/cron-utils';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronJobDetailDrawerProps = {\n open: boolean;\n onDismiss: () => void;\n detailJob: CronJob | null;\n detailLoading: boolean;\n detailHistory: CronJobExecution[];\n c: CronCopy;\n chatWorkingDirNotSet: string;\n statusLabels: {\n running: string;\n success: string;\n failed: string;\n cancelled: string;\n };\n};\n\nexport function CronJobDetailDrawer({\n open,\n onDismiss,\n detailJob,\n detailLoading,\n detailHistory,\n c,\n chatWorkingDirNotSet,\n statusLabels,\n}: CronJobDetailDrawerProps) {\n return (\n <Dialog.Root\n open={open}\n onOpenChange={(next) => {\n if (!next) onDismiss();\n }}\n >\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-[60] bg-scrim\" />\n <Dialog.Content\n className={cn(\n 'xopc-drawer-right fixed right-0 top-0 z-[60] flex size-full max-w-lg flex-col border-l border-edge bg-surface-panel shadow-popover outline-none',\n 'dark:border-edge',\n )}\n aria-describedby={undefined}\n >\n <div className=\"flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3\">\n <Dialog.Title className=\"min-w-0 truncate text-base font-semibold text-fg\">\n {detailJob?.name?.trim() || detailJob?.id || '—'}\n </Dialog.Title>\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"size-9 shrink-0 p-0\" aria-label={c.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-3\">\n {detailLoading ? (\n <div className=\"flex justify-center py-16\">\n <Loader2 className=\"size-8 animate-spin text-accent\" strokeWidth={1.75} />\n </div>\n ) : detailJob ? (\n <>\n <dl className=\"space-y-3 text-sm\">\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.scheduleLabel}</dt>\n <dd className=\"mt-1 font-mono text-fg\">\n <code>{detailJob.schedule}</code>\n </dd>\n </div>\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.messageLabel}</dt>\n <dd className=\"mt-1 min-w-0 break-words text-fg\">\n <MarkdownView content={cronJobBodyText(detailJob)} compact className=\"text-sm\" />\n </dd>\n </div>\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.mode}</dt>\n <dd className=\"mt-1 text-fg\">\n {detailJob.sessionTarget === 'isolated' ? c.modeAgentOption : c.modeDirectOption}\n </dd>\n </div>\n {detailJob.sessionTarget === 'isolated' ? (\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.agentProfile}</dt>\n <dd className=\"mt-1 font-mono text-sm text-fg\">\n {detailJob.agentId?.trim() ? detailJob.agentId.trim() : c.agentProfileDefault}\n </dd>\n </div>\n ) : null}\n {detailJob.sessionTarget === 'isolated' ? (\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.workingDirectoryLabel}</dt>\n <dd className=\"mt-1 break-all font-mono text-xs text-fg\">\n {detailJob.workingDirectory?.trim()\n ? detailJob.workingDirectory.trim()\n : chatWorkingDirNotSet}\n </dd>\n </div>\n ) : null}\n {detailJob.delivery?.channel === 'local' ||\n (detailJob.sessionTarget === 'isolated' && !detailJob.delivery?.to) ? (\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.deliveryTarget}</dt>\n <dd className=\"mt-1 text-fg\">\n {detailJob.delivery?.channel === 'local'\n ? c.deliveryTargetLocalChannel\n : c.deliveryLocalOnly}\n </dd>\n </div>\n ) : detailJob.delivery?.to ? (\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.deliveryTarget}</dt>\n <dd className=\"mt-1 break-words text-fg\">\n <code className=\"text-xs\">{detailJob.delivery?.channel ?? ''}</code>\n {' → '}\n {formatDeliveryToSummary(detailJob, c.channelLocal)}\n </dd>\n </div>\n ) : null}\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.status}</dt>\n <dd className=\"mt-1 text-fg\">{detailJob.enabled ? c.enabled : c.disabled}</dd>\n </div>\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.nextRun}</dt>\n <dd className=\"mt-1 text-fg\">\n {detailJob.next_run ? formatNextRun(detailJob.next_run, c.timeLabels) : '—'}\n </dd>\n </div>\n </dl>\n <h3 className=\"mt-6 text-sm font-semibold text-fg\">{c.detailRunHistory}</h3>\n {detailHistory.length === 0 ? (\n <p className=\"mt-2 text-sm text-fg-muted\">{c.noRunsYet}</p>\n ) : (\n <div className=\"mt-2 overflow-x-auto\">\n <table className=\"w-full border-collapse text-left text-xs\">\n <thead>\n <tr className=\"border-b border-edge text-fg-muted\">\n <th className=\"py-1.5 pr-2 font-medium\">{c.colStarted}</th>\n <th className=\"py-1.5 pr-2 font-medium\">{c.status}</th>\n <th className=\"py-1.5 pr-2 font-medium\">{c.colDuration}</th>\n <th className=\"py-1.5 pr-2 font-medium\">{c.colDetail}</th>\n <th className=\"py-1.5 font-medium\">{c.colChat}</th>\n </tr>\n </thead>\n <tbody>\n {detailHistory.map((row) => (\n <tr key={row.id} className=\"border-b border-edge/60\">\n <td className=\"whitespace-nowrap py-1.5 pr-2 text-fg\">\n <time dateTime={row.startedAt}>{formatTime(row.startedAt)}</time>\n </td>\n <td className=\"py-1.5 pr-2\">\n <span\n className={cn(\n 'inline-flex rounded px-1.5 py-0.5 font-medium',\n row.status === 'success' &&\n 'bg-emerald-500/15 text-emerald-800 dark:text-emerald-300',\n row.status === 'failed' && 'bg-red-500/15 text-red-800 dark:text-red-300',\n )}\n >\n {execStatusLabel(row.status, statusLabels)}\n </span>\n </td>\n <td className=\"py-1.5 pr-2 text-fg-muted\">{formatDuration(row.duration)}</td>\n <td\n className=\"max-w-[8rem] truncate py-1.5 pr-2 text-fg-muted\"\n title={row.summary || row.error || ''}\n >\n {truncate(row.summary || row.error, 120)}\n </td>\n <td className=\"whitespace-nowrap py-1.5\">\n {row.sessionKey?.trim() ? (\n <button\n type=\"button\"\n className=\"text-xs font-medium text-accent hover:underline\"\n title={c.openChatTitle}\n aria-label={c.openChatTitle}\n onClick={() => navigateToSessionChat(row.sessionKey)}\n >\n {c.openChat}\n </button>\n ) : (\n <span className=\"text-fg-disabled\">—</span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </>\n ) : null}\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { Eye, FolderInput, RefreshCw, SquarePen, X } from 'lucide-react';\n\nimport { MarkdownEditor } from '@/components/markdown/markdown-editor';\nimport { MarkdownView } from '@/components/markdown/markdown-view';\nimport { Button } from '@/components/ui/button';\nimport type { ChatAgentOption } from '@/features/chat/chat-agents-api';\nimport { ModelSelector } from '@/features/chat/model-selector';\nimport { folderDisplayName } from '@/features/chat/session-working-directory-control';\nimport { WorkingDirectoryPickerModal } from '@/features/chat/working-directory-picker-modal';\nimport type { ChannelStatus, SessionChatId } from '@/features/cron/cron-api';\nimport { CronSchedulePicker } from '@/features/cron/cron-schedule-form';\nimport { formatRecipientOptionLabel } from '@/features/cron/cron-utils';\nimport {\n cronRecipientSelectClass,\n inputClassName,\n selectClassName,\n} from '@/features/cron/cron-page-lib';\nimport { agentListDisplayName } from '@/features/settings/agents/agent-display-names';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { interaction } from '@/lib/interaction';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronJobFormDialogProps = {\n open: boolean;\n onRequestClose: () => void;\n c: CronCopy;\n chatM: MessageBundle['chat'];\n agentsMessages: MessageBundle['agentsSettings'];\n isDark: boolean;\n channels: ChannelStatus[];\n sessionChatIds: SessionChatId[];\n cronAgentSelectOptions: ChatAgentOption[];\n hasElectronFolderPicker: boolean;\n openNativeFolderPicker: () => Promise<string | null>;\n applyWorkingDirectory: (path: string) => Promise<void>;\n wdModalOpen: boolean;\n onWdModalOpenChange: (open: boolean) => void;\n defaultModelResolver: () => string;\n formMode: 'add' | 'edit';\n formJobId: string | null;\n formName: string;\n onFormNameChange: (v: string) => void;\n formSchedule: string;\n onFormScheduleChange: (v: string) => void;\n formSubmitting: boolean;\n formSessionTarget: 'main' | 'isolated';\n onFormSessionTargetChange: (\n target: 'main' | 'isolated',\n defaultModelFallback: () => string,\n currentModel: string,\n ) => void;\n formAgentLocalOnly: boolean;\n onFormAgentLocalOnlyChange: (v: boolean) => void;\n formModel: string;\n onFormModelUserChange: (id: string) => void;\n formAgentId: string;\n onFormAgentIdChange: (v: string) => void;\n formWorkingDirectory: string;\n onFormWorkingDirectoryChange: (v: string) => void;\n formChannel: string;\n onFormChannelChange: (channel: string) => void;\n formChatId: string;\n onFormChatIdChange: (v: string) => void;\n formMessage: string;\n onFormMessageChange: (v: string) => void;\n formMessageMdMode: 'edit' | 'preview';\n onSetMessageMdMode: (mode: 'edit' | 'preview') => void;\n messageEditorNonce: number;\n needsDeliveryChat: boolean;\n showChannelPicker: boolean;\n canSubmit: boolean;\n onSubmit: () => void;\n onRefreshRecipients: () => void;\n};\n\nexport function CronJobFormDialog(props: CronJobFormDialogProps) {\n const {\n open,\n onRequestClose,\n c,\n chatM,\n agentsMessages,\n isDark,\n channels,\n sessionChatIds,\n cronAgentSelectOptions,\n hasElectronFolderPicker,\n openNativeFolderPicker,\n applyWorkingDirectory,\n wdModalOpen,\n onWdModalOpenChange,\n defaultModelResolver,\n formMode,\n formJobId,\n formName,\n onFormNameChange,\n formSchedule,\n onFormScheduleChange,\n formSubmitting,\n formSessionTarget,\n onFormSessionTargetChange,\n formAgentLocalOnly,\n onFormAgentLocalOnlyChange,\n formModel,\n onFormModelUserChange,\n formAgentId,\n onFormAgentIdChange,\n formWorkingDirectory,\n onFormWorkingDirectoryChange,\n formChannel,\n onFormChannelChange,\n formChatId,\n onFormChatIdChange,\n formMessage,\n onFormMessageChange,\n formMessageMdMode,\n onSetMessageMdMode,\n messageEditorNonce,\n needsDeliveryChat,\n showChannelPicker,\n canSubmit,\n onSubmit,\n onRefreshRecipients,\n } = props;\n\n return (\n <>\n <Dialog.Root open={open} onOpenChange={(o) => !o && onRequestClose()}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-[60] bg-scrim\" />\n <div className=\"fixed inset-0 z-[60] flex items-center justify-center p-4 pointer-events-none\">\n <Dialog.Content\n className=\"xopc-dialog-content-pane pointer-events-auto relative flex max-h-[min(90vh,800px)] w-full max-w-md flex-col rounded-xl border border-edge bg-surface-panel shadow-popover outline-none sm:max-w-lg lg:max-w-xl dark:border-edge\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <div className=\"flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3\">\n <Dialog.Title className=\"text-base font-semibold text-fg\">\n {formMode === 'edit' ? c.editJob : c.addJob}\n </Dialog.Title>\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"size-9 shrink-0 p-0\" aria-label={c.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto px-4 py-3\">\n <div className=\"flex flex-col gap-3\">\n <label className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.name}</span>\n <input\n type=\"text\"\n className={inputClassName()}\n value={formName}\n onChange={(e) => onFormNameChange(e.target.value)}\n placeholder={c.namePlaceholder}\n />\n </label>\n <CronSchedulePicker\n value={formSchedule}\n onChange={onFormScheduleChange}\n disabled={formSubmitting}\n labels={c.schedulePicker}\n />\n <label className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.mode}</span>\n <select\n className={selectClassName()}\n value={formSessionTarget}\n onChange={(e) => {\n const v = e.target.value as 'main' | 'isolated';\n onFormSessionTargetChange(v, defaultModelResolver, formModel.trim());\n }}\n >\n <option value=\"main\">{c.modeDirectOption}</option>\n <option value=\"isolated\">{c.modeAgentOption}</option>\n </select>\n <p className=\"text-xs text-fg-muted\">\n {formSessionTarget === 'main' ? c.modeDirect : c.modeAgent}\n </p>\n </label>\n {formSessionTarget === 'isolated' ? (\n <>\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.model}</span>\n <ModelSelector\n value={formModel}\n placeholder={chatM.modelPlaceholder}\n searchPlaceholder={chatM.modelSearchPlaceholder}\n noMatches={chatM.modelNoMatches}\n className=\"w-full max-w-none min-w-0\"\n popoverContentClassName=\"z-[70]\"\n onChange={onFormModelUserChange}\n />\n </div>\n <label className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.agentProfile}</span>\n <select\n className={selectClassName()}\n value={formAgentId}\n disabled={formSubmitting}\n onChange={(e) => onFormAgentIdChange(e.target.value)}\n >\n <option value=\"\">{c.agentProfileDefault}</option>\n {cronAgentSelectOptions.map((ag) => (\n <option key={ag.id} value={ag.id}>\n {`${ag.id} — ${agentListDisplayName(ag, agentsMessages)}`}\n </option>\n ))}\n </select>\n <p className=\"text-xs text-fg-muted\">{c.agentProfileHint}</p>\n </label>\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.workingDirectoryLabel}</span>\n <div className=\"flex flex-wrap items-center gap-2\">\n <button\n type=\"button\"\n disabled={formSubmitting}\n className={cn(\n 'inline-flex min-h-8 max-w-[min(16rem,48vw)] min-w-0 shrink-0 items-center gap-1 rounded-lg px-2 py-1 text-xs',\n 'border border-edge-subtle/80 bg-surface-hover/40 dark:border-edge-subtle',\n interaction.transition,\n interaction.focusRingPanel,\n 'cursor-pointer hover:bg-surface-hover/70 dark:hover:bg-surface-hover/50',\n formSubmitting && 'cursor-not-allowed opacity-60',\n )}\n title={\n formWorkingDirectory.trim()\n ? `${formWorkingDirectory.trim()}\\n${chatM.workingDirectory.chooseFolder}`\n : `${c.workingDirectoryHint}\\n${chatM.workingDirectory.selectWorkingDirectory}`\n }\n onClick={(e) => {\n e.stopPropagation();\n if (formSubmitting) return;\n if (hasElectronFolderPicker) {\n void (async () => {\n const picked = await openNativeFolderPicker();\n if (picked) void applyWorkingDirectory(picked);\n })();\n } else {\n onWdModalOpenChange(true);\n }\n }}\n >\n <FolderInput className=\"size-3.5 shrink-0 text-fg-muted\" aria-hidden />\n <span className=\"min-w-0 truncate text-left font-medium text-fg\">\n {formWorkingDirectory.trim()\n ? folderDisplayName(formWorkingDirectory.trim())\n : chatM.workingDirectory.notSet}\n </span>\n </button>\n {formWorkingDirectory.trim() ? (\n <button\n type=\"button\"\n disabled={formSubmitting}\n className=\"text-xs font-medium text-accent hover:underline disabled:opacity-50\"\n onClick={() => onFormWorkingDirectoryChange('')}\n >\n {c.workingDirectoryReset}\n </button>\n ) : null}\n </div>\n <p className=\"text-xs text-fg-muted\">{c.workingDirectoryHint}</p>\n </div>\n <label className=\"flex cursor-pointer items-start gap-2 rounded-md bg-surface-hover/45 px-3 py-2 dark:bg-surface-hover/30\">\n <input\n type=\"checkbox\"\n className={cn('ui-checkbox', 'mt-0.5')}\n checked={formAgentLocalOnly}\n onChange={(e) => onFormAgentLocalOnlyChange(e.target.checked)}\n aria-label={c.agentLocalOnly}\n />\n <span>\n <span className=\"text-sm font-medium text-fg\">{c.agentLocalOnly}</span>\n <p className=\"mt-1 text-xs text-fg-muted\">{c.agentLocalOnlyHint}</p>\n </span>\n </label>\n </>\n ) : null}\n {showChannelPicker ? (\n <>\n <label className=\"flex flex-col gap-1\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.channel}</span>\n <select\n className={selectClassName()}\n value={formChannel}\n onChange={(e) => {\n const v = e.target.value;\n onFormChannelChange(v);\n }}\n >\n <option value=\"local\">{c.channelLocal}</option>\n {channels.map((ch) => (\n <option key={ch.name} value={ch.name} disabled={!ch.enabled}>\n {ch.name} {!ch.enabled ? '(disabled)' : ''}\n </option>\n ))}\n </select>\n </label>\n {needsDeliveryChat ? (\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.recipient}</span>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-7 gap-1 px-2 text-xs\"\n title={c.refreshRecipientHint}\n onClick={() => void onRefreshRecipients()}\n >\n <RefreshCw className=\"size-3.5\" strokeWidth={1.75} />\n {c.refreshList}\n </Button>\n </div>\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-stretch sm:gap-2\">\n <input\n type=\"text\"\n className={cn(inputClassName(), 'min-w-0 w-full sm:flex-1')}\n value={formChatId}\n onChange={(e) => onFormChatIdChange(e.target.value)}\n placeholder={c.recipientPlaceholder}\n />\n <select\n className={cronRecipientSelectClass}\n value={formChatId}\n onChange={(e) => {\n const v = e.target.value;\n if (v) onFormChatIdChange(v);\n }}\n >\n <option value=\"\">{c.selectRecipient}</option>\n {sessionChatIds.length > 0 ? (\n sessionChatIds.map((item) => (\n <option key={`${item.channel}-${item.chatId}`} value={item.chatId}>\n {formatRecipientOptionLabel(item, c.lastActiveLabels)}\n </option>\n ))\n ) : (\n <option value=\"\" disabled>\n {c.noRecentChatsOption}\n </option>\n )}\n </select>\n </div>\n <p className=\"text-xs text-fg-muted\">\n {sessionChatIds.length > 0 ? c.enterManuallyOrSelect : c.noRecentChats}\n </p>\n </div>\n ) : null}\n </>\n ) : null}\n <div className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <span className=\"text-xs font-medium text-fg-muted\">{c.message}</span>\n <div className=\"inline-flex rounded-lg border border-edge bg-surface-base p-0.5 dark:border-edge\">\n <button\n type=\"button\"\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-md px-2.5 py-1.5 text-xs font-medium',\n formMessageMdMode === 'edit'\n ? 'bg-accent-soft text-accent-fg'\n : 'text-fg-muted hover:bg-surface-hover',\n )}\n onClick={() => onSetMessageMdMode('edit')}\n >\n <SquarePen className=\"size-3.5 shrink-0\" strokeWidth={1.75} aria-hidden />\n {c.messageEdit}\n </button>\n <button\n type=\"button\"\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-md px-2.5 py-1.5 text-xs font-medium',\n formMessageMdMode === 'preview'\n ? 'bg-accent-soft text-accent-fg'\n : 'text-fg-muted hover:bg-surface-hover',\n )}\n onClick={() => onSetMessageMdMode('preview')}\n >\n <Eye className=\"size-3.5 shrink-0\" strokeWidth={1.75} aria-hidden />\n {c.messagePreview}\n </button>\n </div>\n </div>\n <div\n className={cn(\n 'overflow-hidden rounded-md border border-edge bg-surface-base dark:border-edge',\n formSubmitting && 'pointer-events-none opacity-60',\n )}\n >\n {formMessageMdMode === 'edit' ? (\n <MarkdownEditor\n key={`cron-msg-${formJobId ?? 'new'}-${messageEditorNonce}`}\n initialContent={formMessage}\n onChange={onFormMessageChange}\n isDark={isDark}\n className=\"h-[min(18rem,40vh)] min-h-[12rem]\"\n />\n ) : (\n <div className=\"h-[min(18rem,40vh)] min-h-[12rem] max-h-[min(24rem,50vh)] overflow-y-auto px-3 py-2\">\n {formMessage.trim() ? (\n <MarkdownView content={formMessage} compact className=\"text-sm\" />\n ) : (\n <p className=\"text-sm text-fg-muted\">{c.messagePlaceholder}</p>\n )}\n </div>\n )}\n </div>\n <p className=\"text-xs text-fg-muted\">{c.messageMarkdownHint}</p>\n </div>\n </div>\n </div>\n <div className=\"flex shrink-0 justify-end gap-2 border-t border-edge px-4 py-3\">\n <Button type=\"button\" variant=\"secondary\" onClick={onRequestClose}>\n {c.cancel}\n </Button>\n <Button type=\"button\" variant=\"primary\" disabled={formSubmitting || !canSubmit} onClick={onSubmit}>\n {formSubmitting ? c.loading : formMode === 'edit' ? c.save : c.create}\n </Button>\n </div>\n </Dialog.Content>\n </div>\n </Dialog.Portal>\n </Dialog.Root>\n\n {!hasElectronFolderPicker ? (\n <WorkingDirectoryPickerModal\n open={wdModalOpen}\n onOpenChange={onWdModalOpenChange}\n initialAbsolutePath={formWorkingDirectory.trim() || undefined}\n onConfirm={async (p) => {\n await applyWorkingDirectory(p);\n onWdModalOpenChange(false);\n }}\n wd={chatM.workingDirectory}\n />\n ) : null}\n </>\n );\n}\n","import {\n segmentedThumbActiveClassName,\n segmentedThumbBaseClassName,\n segmentedTrackClassName,\n} from '@/components/ui/segmented-styles';\nimport type { CronJob } from '@/features/cron/cron-api';\nimport { cronToolbarSelectClass } from '@/features/cron/cron-page-lib';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronMainToolbarProps = {\n c: CronCopy;\n mainTab: 'myTasks' | 'systemTasks' | 'history';\n onMainTabChange: (tab: 'myTasks' | 'systemTasks' | 'history') => void;\n jobSort: 'created_desc' | 'created_asc';\n onJobSortChange: (sort: 'created_desc' | 'created_asc') => void;\n historyRange: 'day' | 'week' | 'month';\n onHistoryRangeChange: (range: 'day' | 'week' | 'month') => void;\n historyJobFilter: string;\n onHistoryJobFilterChange: (jobId: string) => void;\n historyStatusFilter: string;\n onHistoryStatusFilterChange: (status: string) => void;\n jobs: CronJob[];\n};\n\nexport function CronMainToolbar({\n c,\n mainTab,\n onMainTabChange,\n jobSort,\n onJobSortChange,\n historyRange,\n onHistoryRangeChange,\n historyJobFilter,\n onHistoryJobFilterChange,\n historyStatusFilter,\n onHistoryStatusFilterChange,\n jobs,\n}: CronMainToolbarProps) {\n return (\n <div className=\"flex flex-col gap-3 border-b border-edge-subtle pb-3 sm:flex-row sm:items-center sm:justify-between dark:border-edge-subtle\">\n <div className=\"flex gap-1\" role=\"tablist\" aria-label={c.title}>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={mainTab === 'myTasks'}\n className={cn(\n 'rounded-md px-3 py-2 text-sm font-medium transition-colors',\n mainTab === 'myTasks' ? 'text-fg' : 'text-fg-muted hover:text-fg',\n )}\n onClick={() => onMainTabChange('myTasks')}\n >\n {c.tabMyTasks}\n </button>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={mainTab === 'systemTasks'}\n className={cn(\n 'rounded-md px-3 py-2 text-sm font-medium transition-colors',\n mainTab === 'systemTasks' ? 'text-fg' : 'text-fg-muted hover:text-fg',\n )}\n onClick={() => onMainTabChange('systemTasks')}\n >\n {c.tabSystemTasks}\n </button>\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={mainTab === 'history'}\n className={cn(\n 'rounded-md px-3 py-2 text-sm font-medium transition-colors',\n mainTab === 'history' ? 'text-fg' : 'text-fg-muted hover:text-fg',\n )}\n onClick={() => onMainTabChange('history')}\n >\n {c.tabRunHistory}\n </button>\n </div>\n <div\n className={cn(\n 'flex min-w-0 items-center gap-2',\n mainTab === 'history'\n ? 'flex-nowrap overflow-x-auto pb-0.5 sm:justify-end'\n : 'flex-wrap sm:justify-end',\n )}\n >\n {mainTab === 'myTasks' || mainTab === 'systemTasks' ? (\n <select\n className={cronToolbarSelectClass}\n value={jobSort}\n onChange={(e) => onJobSortChange(e.target.value as 'created_desc' | 'created_asc')}\n aria-label={c.sortCreatedDesc}\n >\n <option value=\"created_desc\">{c.sortCreatedDesc}</option>\n <option value=\"created_asc\">{c.sortCreatedAsc}</option>\n </select>\n ) : null}\n {mainTab === 'history' ? (\n <>\n <div className={cn(segmentedTrackClassName, 'shrink-0')} role=\"group\" aria-label={c.runHistoryTitle}>\n {(['day', 'week', 'month'] as const).map((r) => (\n <button\n key={r}\n type=\"button\"\n className={cn(\n segmentedThumbBaseClassName,\n 'px-2.5 py-1',\n historyRange === r && segmentedThumbActiveClassName,\n historyRange === r && 'text-fg',\n )}\n onClick={() => onHistoryRangeChange(r)}\n >\n {r === 'day' ? c.historyRangeDay : r === 'week' ? c.historyRangeWeek : c.historyRangeMonth}\n </button>\n ))}\n </div>\n <select\n className={cronToolbarSelectClass}\n value={historyJobFilter}\n onChange={(e) => onHistoryJobFilterChange(e.target.value)}\n aria-label={c.filterAllTasks}\n >\n <option value=\"\">{c.filterAllTasks}</option>\n {jobs.map((j) => (\n <option key={j.id} value={j.id}>\n {j.name || j.id}\n </option>\n ))}\n </select>\n <select\n className={cronToolbarSelectClass}\n value={historyStatusFilter}\n onChange={(e) => onHistoryStatusFilterChange(e.target.value)}\n aria-label={c.filterAllStatuses}\n >\n <option value=\"\">{c.filterAllStatuses}</option>\n <option value=\"success\">{c.execStatusSuccess}</option>\n <option value=\"failed\">{c.execStatusFailed}</option>\n <option value=\"cancelled\">{c.execStatusCancelled}</option>\n <option value=\"running\">{c.execStatusRunning}</option>\n </select>\n </>\n ) : null}\n </div>\n </div>\n );\n}\n","import { LayoutTemplate, Plus, RefreshCw } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronPageHeaderActionsProps = {\n c: CronCopy;\n loading: boolean;\n runHistoryLoading: boolean;\n onRefresh: () => void;\n onOpenTemplatePicker: () => void;\n onAddJob: () => void;\n};\n\nexport function CronPageHeaderActions({\n c,\n loading,\n runHistoryLoading,\n onRefresh,\n onOpenTemplatePicker,\n onAddJob,\n}: CronPageHeaderActionsProps) {\n const busy = loading || runHistoryLoading;\n return (\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center justify-end gap-2\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"size-9 shrink-0 p-0\"\n disabled={busy}\n title={c.refresh}\n aria-label={c.refresh}\n onClick={() => void onRefresh()}\n >\n <RefreshCw className={cn('size-4', busy && 'animate-spin')} strokeWidth={1.75} />\n </Button>\n <Button type=\"button\" variant=\"secondary\" className=\"gap-2\" onClick={onOpenTemplatePicker}>\n <LayoutTemplate className=\"size-4\" strokeWidth={1.75} />\n {c.fromTemplate}\n </Button>\n <Button type=\"button\" variant=\"primary\" className=\"gap-2\" onClick={onAddJob}>\n <Plus className=\"size-4\" strokeWidth={1.75} />\n {c.addJob}\n </Button>\n </div>\n );\n}\n","import { Clock, Loader2, RefreshCw } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { CronJob, CronRunHistoryRow } from '@/features/cron/cron-api';\nimport { navigateToSessionChat } from '@/features/cron/cron-page-lib';\nimport {\n execStatusLabel,\n formatDuration,\n formatTime,\n truncate,\n} from '@/features/cron/cron-utils';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronRunHistorySectionProps = {\n c: CronCopy;\n runHistoryLoading: boolean;\n runHistory: CronRunHistoryRow[];\n filteredRunHistory: CronRunHistoryRow[];\n jobs: CronJob[];\n onRefreshHistory: () => void;\n onOpenJobDetail: (job: CronJob) => void;\n statusLabels: {\n running: string;\n success: string;\n failed: string;\n cancelled: string;\n };\n};\n\nexport function CronRunHistorySection({\n c,\n runHistoryLoading,\n runHistory,\n filteredRunHistory,\n jobs,\n onRefreshHistory,\n onOpenJobDetail,\n statusLabels,\n}: CronRunHistorySectionProps) {\n return (\n <section aria-labelledby=\"cron-history-panel\" className=\"flex flex-col gap-3\">\n <div className=\"flex items-start justify-between gap-2\">\n <div>\n <h2 id=\"cron-history-panel\" className=\"sr-only\">\n {c.tabRunHistory}\n </h2>\n <p className=\"text-xs text-fg-muted\">{c.runHistoryHint}</p>\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"size-9 shrink-0 p-0\"\n disabled={runHistoryLoading}\n title={c.refresh}\n aria-label={c.refresh}\n onClick={() => void onRefreshHistory()}\n >\n <RefreshCw className={cn('size-4', runHistoryLoading && 'animate-spin')} strokeWidth={1.75} />\n </Button>\n </div>\n {runHistoryLoading && runHistory.length === 0 ? (\n <div className=\"flex justify-center py-16\">\n <Loader2 className=\"size-8 animate-spin text-accent\" strokeWidth={1.75} />\n </div>\n ) : filteredRunHistory.length === 0 ? (\n <div className=\"flex flex-col items-center rounded-2xl border border-dashed border-edge-subtle px-6 py-16 text-center dark:border-edge-subtle\">\n <Clock className=\"mb-4 size-14 text-fg-disabled\" strokeWidth={1.1} aria-hidden />\n <h3 className=\"text-base font-semibold text-fg\">\n {runHistory.length === 0 ? c.emptyHistoryTitle : c.noRunsYet}\n </h3>\n <p className=\"mt-2 max-w-sm text-sm text-fg-muted\">\n {runHistory.length === 0 ? c.emptyHistoryHint : c.runHistoryHint}\n </p>\n </div>\n ) : (\n <div className=\"overflow-x-auto rounded-xl border border-edge-subtle bg-surface-base dark:border-edge-subtle\">\n <table className=\"w-full min-w-[700px] border-collapse text-left text-sm\">\n <thead>\n <tr className=\"border-b border-edge text-xs font-medium text-fg-muted\">\n <th className=\"px-3 py-2.5 font-medium\">{c.colStarted}</th>\n <th className=\"px-3 py-2.5 font-medium\">{c.colJob}</th>\n <th className=\"px-3 py-2.5 font-medium\">{c.status}</th>\n <th className=\"px-3 py-2.5 font-medium\">{c.colDuration}</th>\n <th className=\"px-3 py-2.5 font-medium\">{c.colDetail}</th>\n <th className=\"px-3 py-2.5 font-medium\">{c.colChat}</th>\n </tr>\n </thead>\n <tbody>\n {filteredRunHistory.map((row) => (\n <tr key={row.id} className=\"border-b border-edge/60 last:border-0\">\n <td className=\"whitespace-nowrap px-3 py-2.5 text-fg\">\n <time dateTime={row.startedAt}>{formatTime(row.startedAt)}</time>\n </td>\n <td className=\"max-w-[10rem] truncate px-3 py-2.5\">\n {jobs.some((j) => j.id === row.jobId) ? (\n <button\n type=\"button\"\n className=\"text-left text-accent hover:underline\"\n onClick={() => {\n const j = jobs.find((x) => x.id === row.jobId);\n if (j) void onOpenJobDetail(j);\n }}\n >\n {row.jobName || row.jobId}\n </button>\n ) : (\n <span className=\"text-fg-muted\">{row.jobName || row.jobId}</span>\n )}\n </td>\n <td className=\"px-3 py-2.5\">\n <span\n className={cn(\n 'inline-flex rounded-md px-2 py-0.5 text-xs font-medium',\n row.status === 'success' && 'bg-emerald-500/15 text-emerald-800 dark:text-emerald-300',\n row.status === 'failed' && 'bg-red-500/15 text-red-800 dark:text-red-300',\n row.status === 'running' && 'bg-accent/15 text-accent',\n row.status === 'cancelled' && 'bg-surface-hover text-fg-muted',\n )}\n >\n {execStatusLabel(row.status, statusLabels)}\n </span>\n </td>\n <td className=\"whitespace-nowrap px-3 py-2.5 text-fg-muted\">\n {formatDuration(row.duration)}\n </td>\n <td\n className=\"max-w-xs truncate px-3 py-2.5 text-fg-muted\"\n title={row.summary || row.error || ''}\n >\n {truncate(row.summary || row.error, 96)}\n </td>\n <td className=\"whitespace-nowrap px-3 py-2.5\">\n {row.sessionKey?.trim() ? (\n <button\n type=\"button\"\n className=\"text-xs font-medium text-accent hover:underline\"\n title={c.openChatTitle}\n aria-label={c.openChatTitle}\n onClick={() => navigateToSessionChat(row.sessionKey)}\n >\n {c.openChat}\n </button>\n ) : (\n <span className=\"text-fg-disabled\">—</span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </section>\n );\n}\n","import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { Clock, MoreVertical } from 'lucide-react';\n\nimport { MarkdownView } from '@/components/markdown/markdown-view';\nimport { Button } from '@/components/ui/button';\nimport type { MutableRefObject } from 'react';\n\nimport type { CronJob } from '@/features/cron/cron-api';\nimport { cronJobBodyText } from '@/features/cron/cron-api';\nimport { formatScheduleBadge } from '@/features/cron/cron-utils';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronJobCardProps = {\n job: CronJob;\n c: CronCopy;\n localeTag: string;\n scheduleBadgeLabels: CronCopy['scheduleBadge'];\n absorbCardClickJobIdRef: MutableRefObject<string | null>;\n scheduleAbsorbNextMenuCardClick: (jobId: string) => void;\n onOpenDetail: (job: CronJob) => void;\n onToggle: (job: CronJob, enabled: boolean) => void;\n onEdit: (job: CronJob) => void;\n onRunNow: (job: CronJob) => void;\n onDelete: (job: CronJob) => void;\n};\n\nexport function CronJobCard({\n job,\n c,\n localeTag,\n scheduleBadgeLabels,\n absorbCardClickJobIdRef,\n scheduleAbsorbNextMenuCardClick,\n onOpenDetail,\n onToggle,\n onEdit,\n onRunNow,\n onDelete,\n}: CronJobCardProps) {\n return (\n <article\n role=\"button\"\n tabIndex={0}\n className={cn(\n 'flex cursor-pointer flex-col rounded-xl border border-edge-subtle bg-surface-base text-left transition-colors duration-150 ease-out dark:border-edge-subtle',\n 'hover:bg-surface-hover',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel',\n )}\n onClick={() => {\n if (absorbCardClickJobIdRef.current === job.id) {\n absorbCardClickJobIdRef.current = null;\n return;\n }\n void onOpenDetail(job);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (absorbCardClickJobIdRef.current === job.id) {\n absorbCardClickJobIdRef.current = null;\n return;\n }\n void onOpenDetail(job);\n }\n }}\n >\n <div className=\"flex items-start justify-between gap-2 px-4 pt-3\">\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={job.enabled}\n className={cn(\n 'inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-edge p-0.5 transition-colors',\n job.enabled ? 'justify-end bg-accent' : 'justify-start bg-surface-hover',\n )}\n onClick={(e) => {\n e.stopPropagation();\n void onToggle(job, !job.enabled);\n }}\n >\n <span className=\"size-4 rounded-full bg-surface-panel shadow-surface ring-1 ring-edge/40 dark:ring-edge/55\" />\n </button>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"size-8 shrink-0 p-0\"\n aria-label={c.jobCardMenuAria}\n onClick={(e) => e.stopPropagation()}\n >\n <MoreVertical className=\"size-4\" strokeWidth={1.75} />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n className=\"z-50 min-w-[10rem] rounded-xl border border-edge-subtle bg-surface-panel p-1 shadow-elevated dark:border-edge-subtle\"\n sideOffset={4}\n align=\"end\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n <DropdownMenu.Item\n className=\"cursor-pointer select-none rounded-lg px-2 py-1.5 text-sm text-fg outline-none data-highlighted:bg-surface-hover\"\n onSelect={() => {\n scheduleAbsorbNextMenuCardClick(job.id);\n onEdit(job);\n }}\n >\n {c.edit}\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"cursor-pointer select-none rounded-lg px-2 py-1.5 text-sm text-fg outline-none data-highlighted:bg-surface-hover\"\n onSelect={() => {\n scheduleAbsorbNextMenuCardClick(job.id);\n onRunNow(job);\n }}\n >\n {c.runNow}\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"cursor-pointer select-none rounded-lg px-2 py-1.5 text-sm text-red-600 outline-none data-highlighted:bg-red-500/10 dark:text-red-400\"\n onSelect={() => {\n scheduleAbsorbNextMenuCardClick(job.id);\n onDelete(job);\n }}\n >\n {c.delete}\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n </div>\n <div className=\"flex flex-1 flex-col gap-2 px-4 pb-3 pt-2\">\n <h3 className=\"line-clamp-2 font-semibold text-fg\">{job.name || job.id}</h3>\n <div\n className=\"max-h-[4.5rem] overflow-hidden text-sm text-fg-muted [&_.markdown-body]:text-sm [&_.markdown-body]:leading-snug\"\n title={cronJobBodyText(job)}\n >\n <MarkdownView content={cronJobBodyText(job)} compact />\n </div>\n </div>\n <div className=\"flex items-center gap-1.5 border-t border-edge-subtle/90 px-4 py-2.5 text-xs text-fg-muted dark:border-edge-subtle\">\n <Clock className=\"size-3.5 shrink-0\" strokeWidth={1.75} aria-hidden />\n <span className=\"min-w-0 truncate\">{formatScheduleBadge(job, localeTag, scheduleBadgeLabels)}</span>\n </div>\n </article>\n );\n}\n","import { ChevronRight, Info, Loader2 } from 'lucide-react';\nimport type { MutableRefObject } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { Button } from '@/components/ui/button';\nimport type { CronJob } from '@/features/cron/cron-api';\nimport { CronJobCard } from '@/features/cron/cron-job-card';\nimport type { HeartbeatSettingsState } from '@/features/settings/heartbeat-settings.types';\nimport { formatIntervalMsLabel } from '@/features/scheduling/interval/format-interval-label';\nimport { messages, type MessageBundle } from '@/i18n/messages';\nimport type { StoredLanguage } from '@/lib/storage';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronSystemTasksPanelProps = {\n c: CronCopy;\n language: StoredLanguage;\n localeTag: string;\n scheduleBadgeLabels: CronCopy['scheduleBadge'];\n loading: boolean;\n sortedSystemJobs: CronJob[];\n heartbeat: HeartbeatSettingsState;\n keepAwake: boolean;\n wakeSupported: boolean;\n onWakeUnsupportedClick: () => void;\n onKeepAwakeToggle: () => void;\n absorbCardClickJobIdRef: MutableRefObject<string | null>;\n scheduleAbsorbNextMenuCardClick: (jobId: string) => void;\n onOpenDetail: (job: CronJob) => void;\n onToggle: (job: CronJob, enabled: boolean) => void;\n onEdit: (job: CronJob) => void;\n onRunNow: (job: CronJob) => void;\n onDelete: (job: CronJob) => void;\n};\n\nexport function CronSystemTasksPanel({\n c,\n language,\n localeTag,\n scheduleBadgeLabels,\n loading,\n sortedSystemJobs,\n heartbeat,\n keepAwake,\n wakeSupported,\n onWakeUnsupportedClick,\n onKeepAwakeToggle,\n absorbCardClickJobIdRef,\n scheduleAbsorbNextMenuCardClick,\n onOpenDetail,\n onToggle,\n onEdit,\n onRunNow,\n onDelete,\n}: CronSystemTasksPanelProps) {\n const hbInterval = formatIntervalMsLabel(\n heartbeat.intervalMs,\n localeTag,\n messages(language).heartbeatSettings.intervalPresets,\n );\n\n return (\n <section aria-labelledby=\"cron-system-tasks-panel\" className=\"flex flex-col gap-4\">\n <h2 id=\"cron-system-tasks-panel\" className=\"sr-only\">\n {c.tabSystemTasks}\n </h2>\n <p className=\"text-sm text-fg-muted\">{c.systemTasksIntro}</p>\n\n <div className=\"flex flex-col gap-3 rounded-xl border border-accent/25 bg-accent/5 px-4 py-3 dark:border-accent/30 dark:bg-accent/10 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex gap-3 text-sm text-fg\">\n <Info className=\"mt-0.5 size-4 shrink-0 text-accent\" strokeWidth={1.75} aria-hidden />\n <p className=\"text-pretty text-fg-muted\">{c.wakeBanner}</p>\n </div>\n <div className=\"flex shrink-0 items-center gap-2 sm:pl-4\">\n <span className=\"text-sm text-fg\">{c.keepAwake}</span>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={keepAwake}\n disabled={!wakeSupported}\n title={!wakeSupported ? c.wakeLockUnavailable : undefined}\n className={cn(\n 'inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-edge p-0.5 transition-colors',\n keepAwake ? 'justify-end bg-accent' : 'justify-start bg-surface-hover',\n !wakeSupported && 'cursor-not-allowed opacity-50',\n )}\n onClick={() => {\n if (!wakeSupported) onWakeUnsupportedClick();\n else onKeepAwakeToggle();\n }}\n >\n <span className=\"size-4 rounded-full bg-surface-panel shadow-surface ring-1 ring-edge/40 dark:ring-edge/55\" />\n </button>\n </div>\n </div>\n\n <div className=\"rounded-xl border border-edge bg-surface-base p-4 dark:bg-surface-hover/20\">\n <div className=\"flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold text-fg\">{c.systemHeartbeatTitle}</h3>\n <p className=\"mt-1 text-xs text-fg-muted\">{c.systemHeartbeatHint}</p>\n </div>\n <Button type=\"button\" variant=\"ghost\" className=\"shrink-0 gap-1 self-start px-2 py-1.5 text-xs\" asChild>\n <Link to=\"/settings/heartbeat\">\n {c.systemHeartbeatSettingsLink}\n <ChevronRight className=\"size-3.5 opacity-70\" aria-hidden />\n </Link>\n </Button>\n </div>\n <dl className=\"mt-3 grid gap-2 text-sm sm:grid-cols-2\">\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.systemHeartbeatStatus}</dt>\n <dd className=\"text-fg\">{heartbeat.enabled ? c.enabled : c.disabled}</dd>\n </div>\n <div>\n <dt className=\"text-xs font-medium text-fg-muted\">{c.systemHeartbeatInterval}</dt>\n <dd className=\"text-fg\">{c.systemHeartbeatEvery.replace(/\\{\\{value\\}\\}/g, hbInterval)}</dd>\n </div>\n </dl>\n </div>\n\n <div>\n <div className=\"mb-2 flex flex-col gap-1 sm:flex-row sm:items-center sm:justify-between\">\n <h3 className=\"text-sm font-semibold text-fg\">{c.systemDreamingTitle}</h3>\n <Button type=\"button\" variant=\"ghost\" className=\"shrink-0 gap-1 self-start px-2 py-1.5 text-xs\" asChild>\n <Link to=\"/settings/dreams\">\n {c.systemDreamingSettingsLink}\n <ChevronRight className=\"size-3.5 opacity-70\" aria-hidden />\n </Link>\n </Button>\n </div>\n <p className=\"mb-3 text-xs text-fg-muted\">{c.systemDreamingHint}</p>\n {loading && sortedSystemJobs.length === 0 ? (\n <div className=\"flex justify-center py-12\" aria-busy=\"true\">\n <Loader2 className=\"size-8 animate-spin text-accent\" strokeWidth={1.75} />\n </div>\n ) : sortedSystemJobs.length === 0 ? (\n <p className=\"rounded-lg border border-edge-subtle bg-surface-hover/30 px-3 py-4 text-sm text-fg-muted dark:border-edge-subtle\">\n {c.systemDreamingEmpty}\n </p>\n ) : (\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {sortedSystemJobs.map((job) => (\n <CronJobCard\n key={job.id}\n job={job}\n c={c}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n absorbCardClickJobIdRef={absorbCardClickJobIdRef}\n scheduleAbsorbNextMenuCardClick={scheduleAbsorbNextMenuCardClick}\n onOpenDetail={onOpenDetail}\n onToggle={onToggle}\n onEdit={onEdit}\n onRunNow={onRunNow}\n onDelete={onDelete}\n />\n ))}\n </div>\n )}\n </div>\n </section>\n );\n}\n","import type { MessageBundle } from '@/i18n/messages';\n\nexport type CronTemplateCopy = {\n title: string;\n description: string;\n prompt: string;\n};\n\nexport function getCronTemplateCopy(\n cron: MessageBundle['cron'],\n templateId: string,\n): CronTemplateCopy | undefined {\n const raw = cron.templates;\n if (!raw || typeof raw !== 'object') return undefined;\n const row = (raw as Record<string, { title?: string; description?: string; prompt?: string } | undefined>)[\n templateId\n ];\n if (!row || typeof row !== 'object') return undefined;\n const title = row.title?.trim();\n const prompt = row.prompt?.trim();\n if (!title || !prompt) return undefined;\n return {\n title,\n description: (row.description ?? '').trim(),\n prompt,\n };\n}\n","/** Non-display fields for scheduled-task templates; copy lives in i18n `cron.templates`. */\n\nexport const CRON_TEMPLATE_CATEGORIES = ['daily', 'monitoring', 'reports', 'automation'] as const;\nexport type CronTemplateCategory = (typeof CRON_TEMPLATE_CATEGORIES)[number];\n\nexport interface CronJobTemplateDef {\n templateId: string;\n category: CronTemplateCategory;\n defaultSchedule: string;\n defaultSessionTarget: 'isolated';\n}\n\n/** Grouped like common scheduled-task UIs: daily rhythm, external monitoring, periodic reports, repo automation. */\nexport const CRON_JOB_TEMPLATES = [\n // Daily\n {\n templateId: 'morning_briefing',\n category: 'daily',\n defaultSchedule: '0 7 * * 1-5',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'standup_prep',\n category: 'daily',\n defaultSchedule: '0 8 * * 1-5',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'end_of_day_wrap_up',\n category: 'daily',\n defaultSchedule: '0 18 * * 1-5',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'inbox_triage',\n category: 'daily',\n defaultSchedule: '30 8 * * 1-5',\n defaultSessionTarget: 'isolated',\n },\n // Monitoring\n {\n templateId: 'competitor_watch',\n category: 'monitoring',\n defaultSchedule: '0 9 * * 1',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'trending_topics_monitor',\n category: 'monitoring',\n defaultSchedule: '0 10 * * 1-5',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'tech_radar_stack',\n category: 'monitoring',\n defaultSchedule: '0 11 * * 3',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'dependency_check_audit',\n category: 'monitoring',\n defaultSchedule: '0 9 * * 0',\n defaultSessionTarget: 'isolated',\n },\n // Reports\n {\n templateId: 'weekly_review',\n category: 'reports',\n defaultSchedule: '0 17 * * 5',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'code_quality_report',\n category: 'reports',\n defaultSchedule: '0 14 * * 1',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'git_activity_summary',\n category: 'reports',\n defaultSchedule: '0 9 * * 1',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'user_feedback_digest',\n category: 'reports',\n defaultSchedule: '0 16 * * 5',\n defaultSessionTarget: 'isolated',\n },\n // Automation\n {\n templateId: 'stale_todo_or_issue_sweep',\n category: 'automation',\n defaultSchedule: '0 10 * * 2',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'release_notes_or_changelog_draft',\n category: 'automation',\n defaultSchedule: '0 10 * * 4',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'workspace_cleanup_suggestions',\n category: 'automation',\n defaultSchedule: '30 18 * * 5',\n defaultSessionTarget: 'isolated',\n },\n {\n templateId: 'smoke_or_ci_health_reminder',\n category: 'automation',\n defaultSchedule: '0 8 * * 1',\n defaultSessionTarget: 'isolated',\n },\n] as const satisfies readonly CronJobTemplateDef[];\n\nexport type CronTemplateId = (typeof CRON_JOB_TEMPLATES)[number]['templateId'];\n\nexport function cronTemplateById(id: string): (typeof CRON_JOB_TEMPLATES)[number] | undefined {\n return CRON_JOB_TEMPLATES.find((t) => t.templateId === id);\n}\n","import { Button } from '@/components/ui/button';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\nimport { getCronTemplateCopy } from '@/features/cron/cron-template-i18n';\nimport { CRON_JOB_TEMPLATES, CRON_TEMPLATE_CATEGORIES, type CronTemplateCategory } from '@/features/cron/cron-templates';\nimport { formatScheduleBadge, type ScheduleBadgeLabels } from '@/features/cron/cron-utils';\n\nexport type CronTemplateFilter = 'all' | CronTemplateCategory;\n\ntype Props = {\n cron: MessageBundle['cron'];\n localeTag: string;\n scheduleBadgeLabels: ScheduleBadgeLabels;\n categoryFilter: CronTemplateFilter;\n onCategoryFilterChange: (next: CronTemplateFilter) => void;\n onSelectTemplate: (templateId: string) => void;\n};\n\nexport function CronTemplateLibrary(props: Props) {\n const { cron, localeTag, scheduleBadgeLabels, categoryFilter, onCategoryFilterChange, onSelectTemplate } = props;\n\n const filtered =\n categoryFilter === 'all'\n ? [...CRON_JOB_TEMPLATES]\n : CRON_JOB_TEMPLATES.filter((t) => t.category === categoryFilter);\n\n return (\n <div className=\"flex w-full flex-col gap-4\">\n <div className=\"flex flex-wrap gap-2\" role=\"group\" aria-label={cron.fromTemplate}>\n <Button\n type=\"button\"\n variant={categoryFilter === 'all' ? 'secondary' : 'ghost'}\n className=\"h-8 rounded-full px-3 py-1.5 text-xs\"\n onClick={() => onCategoryFilterChange('all')}\n >\n {cron.templateFilterAll}\n </Button>\n {CRON_TEMPLATE_CATEGORIES.map((cat) => (\n <Button\n key={cat}\n type=\"button\"\n variant={categoryFilter === cat ? 'secondary' : 'ghost'}\n className=\"h-8 rounded-full px-3 py-1.5 text-xs\"\n onClick={() => onCategoryFilterChange(cat)}\n >\n {cron.templateCategories[cat]}\n </Button>\n ))}\n </div>\n {filtered.length === 0 ? (\n <p className=\"text-center text-sm text-fg-muted\">{cron.templatesEmptyHint}</p>\n ) : (\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3\">\n {filtered.map((t) => {\n const copy = getCronTemplateCopy(cron, t.templateId);\n if (!copy) return null;\n const badge = formatScheduleBadge(\n { schedule: t.defaultSchedule, timezone: undefined, next_run: undefined },\n localeTag,\n scheduleBadgeLabels,\n );\n return (\n <button\n key={t.templateId}\n type=\"button\"\n className={cn(\n 'flex flex-col gap-1.5 rounded-xl border border-edge-subtle bg-surface-base p-4 text-left transition-colors',\n 'hover:border-accent/40 hover:bg-surface-hover',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-panel',\n )}\n onClick={() => onSelectTemplate(t.templateId)}\n aria-label={`${cron.templateCategories[t.category]} — ${copy.title}`}\n >\n <span className=\"font-semibold text-fg\">{copy.title}</span>\n <span className=\"line-clamp-2 text-sm text-fg-muted\">{copy.description}</span>\n <span className=\"mt-1 flex items-center gap-1 text-xs text-fg-muted\">\n <span className=\"tabular-nums\">{badge}</span>\n </span>\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n","import { Info, Loader2 } from 'lucide-react';\nimport type { MutableRefObject } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport type { CronJob } from '@/features/cron/cron-api';\nimport { CronJobCard } from '@/features/cron/cron-job-card';\nimport type { CronTemplateFilter } from '@/features/cron/cron-template-library';\nimport { CronTemplateLibrary } from '@/features/cron/cron-template-library';\nimport type { MessageBundle } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronTasksPanelProps = {\n c: CronCopy;\n localeTag: string;\n scheduleBadgeLabels: CronCopy['scheduleBadge'];\n loading: boolean;\n jobsCount: number;\n sortedJobs: CronJob[];\n templateCategoryFilter: CronTemplateFilter;\n onTemplateCategoryFilterChange: (v: CronTemplateFilter) => void;\n onSelectTemplate: (templateId: string) => void;\n keepAwake: boolean;\n wakeSupported: boolean;\n onWakeUnsupportedClick: () => void;\n onKeepAwakeToggle: () => void;\n absorbCardClickJobIdRef: MutableRefObject<string | null>;\n scheduleAbsorbNextMenuCardClick: (jobId: string) => void;\n onOpenDetail: (job: CronJob) => void;\n onToggle: (job: CronJob, enabled: boolean) => void;\n onEdit: (job: CronJob) => void;\n onAddJob: () => void;\n onRunNow: (job: CronJob) => void;\n onDelete: (job: CronJob) => void;\n};\n\nexport function CronTasksPanel({\n c,\n localeTag,\n scheduleBadgeLabels,\n loading,\n jobsCount,\n sortedJobs,\n templateCategoryFilter,\n onTemplateCategoryFilterChange,\n onSelectTemplate,\n keepAwake,\n wakeSupported,\n onWakeUnsupportedClick,\n onKeepAwakeToggle,\n absorbCardClickJobIdRef,\n scheduleAbsorbNextMenuCardClick,\n onOpenDetail,\n onToggle,\n onEdit,\n onAddJob,\n onRunNow,\n onDelete,\n}: CronTasksPanelProps) {\n return (\n <section aria-labelledby=\"cron-tasks-panel\" className=\"flex flex-col gap-4\">\n <h2 id=\"cron-tasks-panel\" className=\"sr-only\">\n {c.tabMyTasks}\n </h2>\n <div className=\"flex flex-col gap-3 rounded-xl border border-accent/25 bg-accent/5 px-4 py-3 dark:border-accent/30 dark:bg-accent/10 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex gap-3 text-sm text-fg\">\n <Info className=\"mt-0.5 size-4 shrink-0 text-accent\" strokeWidth={1.75} aria-hidden />\n <p className=\"text-pretty text-fg-muted\">{c.wakeBanner}</p>\n </div>\n <div className=\"flex shrink-0 items-center gap-2 sm:pl-4\">\n <span className=\"text-sm text-fg\">{c.keepAwake}</span>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={keepAwake}\n disabled={!wakeSupported}\n title={!wakeSupported ? c.wakeLockUnavailable : undefined}\n className={cn(\n 'inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-edge p-0.5 transition-colors',\n keepAwake ? 'justify-end bg-accent' : 'justify-start bg-surface-hover',\n !wakeSupported && 'cursor-not-allowed opacity-50',\n )}\n onClick={() => {\n if (!wakeSupported) onWakeUnsupportedClick();\n else onKeepAwakeToggle();\n }}\n >\n <span className=\"size-4 rounded-full bg-surface-panel shadow-surface ring-1 ring-edge/40 dark:ring-edge/55\" />\n </button>\n </div>\n </div>\n\n {loading && jobsCount === 0 ? (\n <div className=\"flex justify-center py-16\" aria-busy=\"true\">\n <Loader2 className=\"size-8 animate-spin text-accent\" strokeWidth={1.75} />\n </div>\n ) : jobsCount === 0 ? (\n <div className=\"flex flex-col gap-6 rounded-2xl bg-surface-base px-4 py-8 dark:bg-surface-hover/25 sm:px-6 sm:py-10\">\n <div className=\"w-full max-w-6xl\">\n <CronTemplateLibrary\n cron={c}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n categoryFilter={templateCategoryFilter}\n onCategoryFilterChange={onTemplateCategoryFilterChange}\n onSelectTemplate={onSelectTemplate}\n />\n </div>\n <div className=\"flex justify-center\">\n <Button type=\"button\" variant=\"primary\" onClick={onAddJob}>\n {c.emptyStateCta}\n </Button>\n </div>\n </div>\n ) : (\n <div className=\"grid gap-4 sm:grid-cols-2\">\n {sortedJobs.map((job) => (\n <CronJobCard\n key={job.id}\n job={job}\n c={c}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n absorbCardClickJobIdRef={absorbCardClickJobIdRef}\n scheduleAbsorbNextMenuCardClick={scheduleAbsorbNextMenuCardClick}\n onOpenDetail={(j) => void onOpenDetail(j)}\n onToggle={(j, en) => void onToggle(j, en)}\n onEdit={onEdit}\n onRunNow={onRunNow}\n onDelete={onDelete}\n />\n ))}\n </div>\n )}\n </section>\n );\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { CronTemplateFilter } from '@/features/cron/cron-template-library';\nimport { CronTemplateLibrary } from '@/features/cron/cron-template-library';\nimport type { MessageBundle } from '@/i18n/messages';\n\ntype CronCopy = MessageBundle['cron'];\n\nexport type CronTemplatePickerDialogProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n c: CronCopy;\n localeTag: string;\n scheduleBadgeLabels: CronCopy['scheduleBadge'];\n categoryFilter: CronTemplateFilter;\n onCategoryFilterChange: (v: CronTemplateFilter) => void;\n onSelectTemplate: (templateId: string) => void;\n};\n\nexport function CronTemplatePickerDialog({\n open,\n onOpenChange,\n c,\n localeTag,\n scheduleBadgeLabels,\n categoryFilter,\n onCategoryFilterChange,\n onSelectTemplate,\n}: CronTemplatePickerDialogProps) {\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"xopc-dialog-overlay fixed inset-0 z-[62] bg-scrim\" />\n <div className=\"fixed inset-0 z-[62] flex items-center justify-center p-4 pointer-events-none\">\n <Dialog.Content\n className=\"xopc-dialog-content-pane pointer-events-auto relative flex max-h-[min(90vh,840px)] w-full max-w-lg flex-col rounded-xl border border-edge bg-surface-panel shadow-popover outline-none sm:max-w-2xl dark:border-edge\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <div className=\"flex shrink-0 items-center justify-end border-b border-edge px-4 py-3\">\n <Dialog.Title className=\"sr-only\">{c.fromTemplate}</Dialog.Title>\n <Dialog.Close asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"size-9 shrink-0 p-0\" aria-label={c.close}>\n <X className=\"size-5\" strokeWidth={1.75} />\n </Button>\n </Dialog.Close>\n </div>\n <div className=\"min-h-0 flex-1 overflow-y-auto p-4\">\n <CronTemplateLibrary\n cron={c}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n categoryFilter={categoryFilter}\n onCategoryFilterChange={onCategoryFilterChange}\n onSelectTemplate={onSelectTemplate}\n />\n </div>\n </Dialog.Content>\n </div>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { type ChatAgentOption } from '@/features/chat/chat-agents-api';\nimport {\n cronJobBodyText,\n getSessionChatIds,\n type ChannelStatus,\n type CronJob,\n type SessionChatId,\n} from '@/features/cron/cron-api';\nimport { DEFAULT_SCHEDULE, pushRecentWorkspaceDirForCron } from '@/features/cron/cron-page-lib';\nimport { getCronTemplateCopy } from '@/features/cron/cron-template-i18n';\nimport { cronTemplateById } from '@/features/cron/cron-templates';\nimport type { messages as makeMessages } from '@/i18n/messages';\n\nexport type FormMode = 'add' | 'edit';\nexport type FormSessionTarget = 'main' | 'isolated';\nexport type FormMessageMdMode = 'edit' | 'preview';\n\nexport function useCronJobForm(opts: {\n m: ReturnType<typeof makeMessages>;\n defaultModelForForm: () => string;\n channels: ChannelStatus[];\n chatAgents: ChatAgentOption[];\n}) {\n const { m, defaultModelForForm, channels, chatAgents } = opts;\n\n const [formOpen, setFormOpen] = useState(false);\n const [formMode, setFormMode] = useState<FormMode>('add');\n const [formJobId, setFormJobId] = useState<string | null>(null);\n const [formName, setFormName] = useState('');\n const [formSchedule, setFormSchedule] = useState(DEFAULT_SCHEDULE);\n const [formChannel, setFormChannel] = useState('local');\n const [formChatId, setFormChatId] = useState('');\n const [formMessage, setFormMessage] = useState('');\n const [formMessageMdMode, setFormMessageMdMode] = useState<FormMessageMdMode>('edit');\n const [messageEditorNonce, setMessageEditorNonce] = useState(0);\n const [formSessionTarget, setFormSessionTarget] = useState<FormSessionTarget>('main');\n const [formAgentId, setFormAgentId] = useState('');\n const [formAgentLocalOnly, setFormAgentLocalOnly] = useState(false);\n const [formWorkingDirectory, setFormWorkingDirectory] = useState('');\n const [formWdModalOpen, setFormWdModalOpen] = useState(false);\n const [formModel, setFormModel] = useState('');\n const [formSubmitting, setFormSubmitting] = useState(false);\n const [sessionChatIds, setSessionChatIds] = useState<SessionChatId[]>([]);\n const formModelUserTouched = useRef(false);\n\n const cronAgentSelectOptions = useMemo(() => {\n const ids = new Set(chatAgents.map((a) => a.id));\n const out: ChatAgentOption[] = [...chatAgents];\n const extra = formAgentId.trim().toLowerCase();\n if (extra && !ids.has(extra)) {\n out.push({ id: extra });\n }\n return out;\n }, [chatAgents, formAgentId]);\n\n const needsDeliveryChat =\n formChannel !== 'local' && (formSessionTarget === 'main' || (formSessionTarget === 'isolated' && !formAgentLocalOnly));\n\n const showChannelPicker =\n formSessionTarget === 'main' || (formSessionTarget === 'isolated' && !formAgentLocalOnly);\n\n const canSubmit =\n Boolean(formName.trim()) &&\n Boolean(formSchedule.trim()) &&\n Boolean(formMessage.trim()) &&\n (!needsDeliveryChat || Boolean(formChatId.trim()));\n\n useEffect(() => {\n if (!formOpen || formMode !== 'add' || formModelUserTouched.current) return;\n const next = defaultModelForForm();\n if (next) setFormModel(next);\n }, [formOpen, formMode, defaultModelForForm]);\n\n useEffect(() => {\n if (!formOpen || formMode !== 'add') return;\n const valid = new Set(['local', ...channels.map((x) => x.name)]);\n if (!valid.has(formChannel)) setFormChannel('local');\n }, [channels, formChannel, formMode, formOpen]);\n\n useEffect(() => {\n if (formChannel === 'local') {\n setSessionChatIds([]);\n return;\n }\n let cancelled = false;\n void getSessionChatIds(formChannel).then((ids) => {\n if (!cancelled) setSessionChatIds(ids);\n });\n return () => {\n cancelled = true;\n };\n }, [formChannel, formOpen]);\n\n const openForm = useCallback(\n (job?: CronJob) => {\n formModelUserTouched.current = false;\n setFormOpen(true);\n setFormMode(job ? 'edit' : 'add');\n setFormJobId(job?.id ?? null);\n\n if (job) {\n setFormName(job.name || '');\n setFormSchedule((job.schedule && String(job.schedule).trim()) || DEFAULT_SCHEDULE);\n const bodyText = cronJobBodyText(job);\n setFormMessage(bodyText ?? '');\n setFormSessionTarget(job.sessionTarget || 'main');\n setFormAgentId(\n (job.sessionTarget || 'main') === 'isolated' && job.agentId?.trim()\n ? job.agentId.trim().toLowerCase()\n : '',\n );\n setFormWorkingDirectory(\n (job.sessionTarget || 'main') === 'isolated' && job.workingDirectory?.trim()\n ? job.workingDirectory.trim()\n : '',\n );\n const fromPayload =\n job.payload?.kind === 'agentTurn' && job.payload.model?.trim() ? job.payload.model.trim() : '';\n const stored = job.model?.trim() || fromPayload;\n setFormModel(stored || defaultModelForForm());\n const hasLocalChannel = job.delivery?.channel === 'local';\n const agentLocalOnly =\n (job.sessionTarget || 'main') === 'isolated' &&\n !hasLocalChannel &&\n (!job.delivery?.to || job.delivery.mode === 'none');\n setFormAgentLocalOnly(agentLocalOnly);\n\n if (hasLocalChannel) {\n setFormChannel('local');\n setFormChatId('');\n } else if (job.delivery && job.delivery.mode !== 'none' && job.delivery.to) {\n setFormChannel(job.delivery.channel || 'telegram');\n setFormChatId(job.delivery.to || '');\n } else if (!agentLocalOnly) {\n const parts = bodyText.split(':');\n const knownChannels = ['telegram', 'cli', 'gateway', 'local'];\n if (parts.length >= 3 && knownChannels.includes(parts[0])) {\n setFormChannel(parts[0]);\n setFormChatId(parts[1]);\n setFormMessage(parts.slice(2).join(':'));\n } else {\n setFormChannel('telegram');\n setFormChatId('');\n }\n } else {\n setFormChannel('telegram');\n setFormChatId('');\n }\n } else {\n setFormName('');\n setFormSchedule(DEFAULT_SCHEDULE);\n setFormChannel('local');\n setFormChatId('');\n setFormMessage('');\n setFormSessionTarget('main');\n setFormAgentId('');\n setFormWorkingDirectory('');\n setFormAgentLocalOnly(false);\n setFormModel(defaultModelForForm());\n }\n setFormMessageMdMode('edit');\n setMessageEditorNonce((n) => n + 1);\n },\n [defaultModelForForm],\n );\n\n const setMessageMdMode = useCallback((mode: FormMessageMdMode) => {\n setFormMessageMdMode(mode);\n if (mode === 'edit') setMessageEditorNonce((n) => n + 1);\n }, []);\n\n const applyCronTemplate = useCallback(\n (templateId: string): boolean => {\n const def = cronTemplateById(templateId);\n const copy = def ? getCronTemplateCopy(m.cron, templateId) : undefined;\n if (!def || !copy) return false;\n formModelUserTouched.current = false;\n setFormMode('add');\n setFormJobId(null);\n setFormName(copy.title);\n setFormSchedule(def.defaultSchedule);\n setFormMessage(copy.prompt);\n setFormSessionTarget(def.defaultSessionTarget);\n setFormChannel('local');\n setFormChatId('');\n setFormAgentLocalOnly(false);\n setFormAgentId('');\n setFormWorkingDirectory('');\n setFormModel(defaultModelForForm());\n setFormMessageMdMode('edit');\n setMessageEditorNonce((n) => n + 1);\n setFormOpen(true);\n return true;\n },\n [defaultModelForForm, m.cron],\n );\n\n const closeForm = useCallback(() => {\n setFormOpen(false);\n setFormMode('add');\n setFormJobId(null);\n setFormName('');\n setFormSchedule(DEFAULT_SCHEDULE);\n setFormChannel('local');\n setFormChatId('');\n setFormMessage('');\n setFormSessionTarget('main');\n setFormAgentId('');\n setFormWorkingDirectory('');\n setFormWdModalOpen(false);\n setFormAgentLocalOnly(false);\n setFormModel('');\n setFormMessageMdMode('edit');\n formModelUserTouched.current = false;\n }, []);\n\n const handleFormSessionTargetChange = useCallback(\n (target: FormSessionTarget, defaultModelFallback: () => string, currentModel: string) => {\n setFormSessionTarget(target);\n if (target === 'main') {\n setFormAgentLocalOnly(false);\n setFormAgentId('');\n setFormWorkingDirectory('');\n } else if (target === 'isolated' && !currentModel) setFormModel(defaultModelFallback());\n },\n [],\n );\n\n const handleFormChannelChange = useCallback((v: string) => {\n setFormChannel(v);\n if (v === 'local') setFormAgentLocalOnly(false);\n setFormChatId('');\n }, []);\n\n const handleFormModelUserChange = useCallback((id: string) => {\n formModelUserTouched.current = true;\n setFormModel(id);\n }, []);\n\n const refreshRecipientsList = useCallback(() => {\n void getSessionChatIds(formChannel).then(setSessionChatIds);\n }, [formChannel]);\n\n const applyWorkingDirectory = useCallback(async (path: string) => {\n const t = path.trim();\n if (!t) return;\n pushRecentWorkspaceDirForCron(t);\n setFormWorkingDirectory(t);\n }, []);\n\n return {\n // state\n formOpen,\n formMode,\n formJobId,\n formName,\n formSchedule,\n formChannel,\n formChatId,\n formMessage,\n formMessageMdMode,\n messageEditorNonce,\n formSessionTarget,\n formAgentId,\n formAgentLocalOnly,\n formWorkingDirectory,\n formWdModalOpen,\n formModel,\n formSubmitting,\n sessionChatIds,\n // setters\n setFormName,\n setFormSchedule,\n setFormChatId,\n setFormMessage,\n setFormAgentId,\n setFormAgentLocalOnly,\n setFormWorkingDirectory,\n setFormWdModalOpen,\n setFormSubmitting,\n // derived\n canSubmit,\n needsDeliveryChat,\n showChannelPicker,\n cronAgentSelectOptions,\n // handlers\n openForm,\n closeForm,\n applyCronTemplate,\n setMessageMdMode,\n handleFormSessionTargetChange,\n handleFormChannelChange,\n handleFormModelUserChange,\n refreshRecipientsList,\n applyWorkingDirectory,\n };\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { isElectronCronDisplayWakeAvailable } from '@/lib/electron-env';\n\ntype WakeMode = 'none' | 'electron' | 'navigator';\n\nexport function useCronKeepAwake(opts: { onUnavailable: () => void }) {\n const { onUnavailable } = opts;\n const [keepAwake, setKeepAwake] = useState(false);\n const wakeLockRef = useRef<WakeLockSentinel | null>(null);\n const wakeModeRef = useRef<WakeMode>('none');\n const keepAwakeRef = useRef(keepAwake);\n const wakeSupported = typeof navigator !== 'undefined' && 'wakeLock' in navigator;\n const featureAvailable = wakeSupported || isElectronCronDisplayWakeAvailable();\n\n const releaseWakeLock = useCallback(async () => {\n if (wakeModeRef.current === 'electron') {\n try {\n await window.electronAPI?.cron?.setDisplaySleepPrevented?.(false);\n } catch {\n /* ignore */\n }\n wakeModeRef.current = 'none';\n return;\n }\n try {\n await wakeLockRef.current?.release();\n } catch {\n /* ignore */\n }\n wakeLockRef.current = null;\n wakeModeRef.current = 'none';\n }, []);\n\n const acquireWakeLock = useCallback(async () => {\n const electronWake =\n typeof window !== 'undefined' ? window.electronAPI?.cron?.setDisplaySleepPrevented : undefined;\n if (electronWake) {\n try {\n await electronWake(true);\n wakeModeRef.current = 'electron';\n return;\n } catch {\n onUnavailable();\n setKeepAwake(false);\n return;\n }\n }\n if (!wakeSupported) return;\n try {\n const sentinel = await navigator.wakeLock.request('screen');\n wakeLockRef.current = sentinel;\n wakeModeRef.current = 'navigator';\n sentinel.addEventListener('release', () => {\n wakeLockRef.current = null;\n wakeModeRef.current = 'none';\n });\n } catch {\n onUnavailable();\n setKeepAwake(false);\n }\n }, [onUnavailable, wakeSupported]);\n\n keepAwakeRef.current = keepAwake;\n\n useEffect(() => {\n if (!keepAwake) {\n void releaseWakeLock();\n return;\n }\n void acquireWakeLock();\n const onVis = () => {\n if (document.visibilityState === 'visible' && keepAwakeRef.current) void acquireWakeLock();\n };\n document.addEventListener('visibilitychange', onVis);\n return () => {\n document.removeEventListener('visibilitychange', onVis);\n void releaseWakeLock();\n };\n }, [keepAwake, acquireWakeLock, releaseWakeLock]);\n\n return { keepAwake, setKeepAwake, featureAvailable };\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { fetchChatAgents, type ChatAgentOption } from '@/features/chat/chat-agents-api';\nimport {\n getAllRunsHistory,\n getChannels,\n getConfig,\n getModels,\n listJobs,\n type ChannelStatus,\n type CronJob,\n type CronRunHistoryRow,\n} from '@/features/cron/cron-api';\nimport { isDreamingManagedCronJob } from '@/features/cron/cron-dreaming-jobs';\nimport {\n RUN_HISTORY_FETCH_LIMIT,\n startOfLocalDay,\n startOfLocalMonth,\n startOfLocalWeekMonday,\n} from '@/features/cron/cron-page-lib';\nimport { fetchGatewayConfigSwrResponse } from '@/features/gateway/gateway-config-swr';\nimport { normalizeHeartbeatFromConfig } from '@/features/settings/heartbeat-config-api';\n\ntype FailMessages = {\n failedToLoadJobs: string;\n};\n\nexport type HistoryRange = 'day' | 'week' | 'month';\nexport type JobSort = 'created_desc' | 'created_asc';\n\nexport function useCronPageData(opts: {\n hasToken: boolean;\n failMessages: FailMessages;\n isHistoryTab: boolean;\n}) {\n const { hasToken, failMessages, isHistoryTab } = opts;\n\n const [jobs, setJobs] = useState<CronJob[]>([]);\n const [channels, setChannels] = useState<ChannelStatus[]>([]);\n const [availableModels, setAvailableModels] = useState<{ id: string; name: string; provider: string }[]>([]);\n const [defaultModel, setDefaultModel] = useState('');\n const [chatAgents, setChatAgents] = useState<ChatAgentOption[]>([]);\n const [gatewayConfigRaw, setGatewayConfigRaw] = useState<unknown>(null);\n const [runHistory, setRunHistory] = useState<CronRunHistoryRow[]>([]);\n const [runHistoryLoading, setRunHistoryLoading] = useState(false);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const loadJobs = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const list = await listJobs();\n setJobs(list);\n } catch (e) {\n setError(e instanceof Error ? e.message : failMessages.failedToLoadJobs);\n } finally {\n setLoading(false);\n }\n }, [failMessages.failedToLoadJobs]);\n\n const loadAux = useCallback(async () => {\n try {\n const [ch, mods, cfg, cfgFull, agentsPayload] = await Promise.all([\n getChannels(),\n getModels(),\n getConfig(),\n fetchGatewayConfigSwrResponse(),\n fetchChatAgents().catch(() => null),\n ]);\n setChannels(ch);\n setAvailableModels(mods);\n setDefaultModel(cfg.model || '');\n setGatewayConfigRaw(cfgFull.payload?.config ?? null);\n if (agentsPayload) setChatAgents(agentsPayload.items);\n } catch {\n /* non-fatal */\n }\n }, []);\n\n const loadRunHistoryOnly = useCallback(async () => {\n setRunHistoryLoading(true);\n try {\n const rows = await getAllRunsHistory(RUN_HISTORY_FETCH_LIMIT);\n setRunHistory(rows);\n } catch {\n /* ignore */\n } finally {\n setRunHistoryLoading(false);\n }\n }, []);\n\n useEffect(() => {\n if (!hasToken) return;\n void loadJobs();\n void loadAux();\n }, [hasToken, loadJobs, loadAux]);\n\n useEffect(() => {\n if (!hasToken) return;\n const onReload = () => {\n void fetchGatewayConfigSwrResponse().then((r) => {\n setGatewayConfigRaw(r.payload?.config ?? null);\n });\n };\n window.addEventListener('config-reload', onReload);\n return () => window.removeEventListener('config-reload', onReload);\n }, [hasToken]);\n\n useEffect(() => {\n if (!hasToken || !isHistoryTab) return;\n void loadRunHistoryOnly();\n }, [hasToken, isHistoryTab, loadRunHistoryOnly]);\n\n const userCronJobs = useMemo(() => jobs.filter((j) => !isDreamingManagedCronJob(j)), [jobs]);\n const systemCronJobs = useMemo(() => jobs.filter((j) => isDreamingManagedCronJob(j)), [jobs]);\n\n const heartbeatFromConfig = useMemo(() => normalizeHeartbeatFromConfig(gatewayConfigRaw), [gatewayConfigRaw]);\n\n const refreshAll = useCallback(() => {\n void loadJobs();\n void loadAux();\n void loadRunHistoryOnly();\n }, [loadJobs, loadAux, loadRunHistoryOnly]);\n\n return {\n jobs,\n channels,\n availableModels,\n defaultModel,\n chatAgents,\n gatewayConfigRaw,\n runHistory,\n runHistoryLoading,\n loading,\n error,\n setError,\n userCronJobs,\n systemCronJobs,\n heartbeatFromConfig,\n loadJobs,\n loadAux,\n loadRunHistoryOnly,\n refreshAll,\n };\n}\n\nexport function sortJobsByCreated(arr: CronJob[], sort: JobSort): CronJob[] {\n const next = [...arr];\n next.sort((a, b) => {\n const ta = new Date(a.created_at).getTime();\n const tb = new Date(b.created_at).getTime();\n return sort === 'created_desc' ? tb - ta : ta - tb;\n });\n return next;\n}\n\nexport function filterRunHistory(\n runHistory: CronRunHistoryRow[],\n range: HistoryRange,\n jobFilter: string,\n statusFilter: string,\n): CronRunHistoryRow[] {\n const now = new Date();\n const from =\n range === 'day' ? startOfLocalDay(now) : range === 'week' ? startOfLocalWeekMonday(now) : startOfLocalMonth(now);\n return runHistory.filter((row) => {\n if (new Date(row.startedAt) < from) return false;\n if (jobFilter && row.jobId !== jobFilter) return false;\n if (statusFilter && row.status !== statusFilter) return false;\n return true;\n });\n}\n","import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport {\n addJob,\n getHistory,\n getJob,\n removeJob,\n runJob,\n toggleJob,\n updateJob,\n type CronDelivery,\n type CronJob,\n type CronJobExecution,\n type CronPayload,\n} from '@/features/cron/cron-api';\nimport { CronConfirmActionDialog } from '@/features/cron/cron-confirm-action-dialog';\nimport { CronJobDetailDrawer } from '@/features/cron/cron-job-detail-drawer';\nimport { CronJobFormDialog } from '@/features/cron/cron-job-form-dialog';\nimport { CronMainToolbar } from '@/features/cron/cron-main-toolbar';\nimport { CronPageHeaderActions } from '@/features/cron/cron-page-header-actions';\nimport { CronRunHistorySection } from '@/features/cron/cron-run-history-section';\nimport { CronSystemTasksPanel } from '@/features/cron/cron-system-tasks-panel';\nimport { CronTasksPanel } from '@/features/cron/cron-tasks-panel';\nimport type { CronTemplateFilter } from '@/features/cron/cron-template-library';\nimport { CronTemplatePickerDialog } from '@/features/cron/cron-template-picker-dialog';\nimport { useCronJobForm } from '@/features/cron/use-cron-job-form';\nimport { useCronKeepAwake } from '@/features/cron/use-cron-keep-awake';\nimport {\n filterRunHistory,\n sortJobsByCreated,\n useCronPageData,\n type HistoryRange,\n type JobSort,\n} from '@/features/cron/use-cron-page-data';\nimport { messages } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\nimport { usePageHeaderStore } from '@/stores/page-header-store';\nimport { useThemeStore } from '@/stores/theme-store';\n\nexport function CronPage() {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const c = m.cron;\n const chatM = m.chat;\n const token = useGatewayStore((st) => st.token);\n const hasToken = Boolean(token);\n const resolvedTheme = useThemeStore((s) => s.resolved);\n const isDark = resolvedTheme === 'dark';\n const localeTag = language === 'zh' ? 'zh-CN' : 'en-US';\n\n const [mainTab, setMainTab] = useState<'myTasks' | 'systemTasks' | 'history'>('myTasks');\n const [jobSort, setJobSort] = useState<JobSort>('created_desc');\n const [historyRange, setHistoryRange] = useState<HistoryRange>('day');\n const [historyJobFilter, setHistoryJobFilter] = useState('');\n const [historyStatusFilter, setHistoryStatusFilter] = useState('');\n\n const data = useCronPageData({\n hasToken,\n failMessages: { failedToLoadJobs: c.failedToLoadJobs },\n isHistoryTab: mainTab === 'history',\n });\n const { setError } = data;\n\n const keepAwakeHook = useCronKeepAwake({ onUnavailable: () => setError(c.wakeLockUnavailable) });\n\n const defaultModelForForm = useCallback(\n () => data.defaultModel || (data.availableModels.length > 0 ? data.availableModels[0].id : ''),\n [data.defaultModel, data.availableModels],\n );\n\n const form = useCronJobForm({\n m,\n defaultModelForForm,\n channels: data.channels,\n chatAgents: data.chatAgents,\n });\n\n const [detailOpen, setDetailOpen] = useState(false);\n const [detailJob, setDetailJob] = useState<CronJob | null>(null);\n const [detailHistory, setDetailHistory] = useState<CronJobExecution[]>([]);\n const [detailLoading, setDetailLoading] = useState(false);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const [confirmAction, setConfirmAction] = useState<'delete' | 'run' | null>(null);\n const [confirmJobId, setConfirmJobId] = useState<string | null>(null);\n\n const [templatePickerOpen, setTemplatePickerOpen] = useState(false);\n const [templateCategoryFilter, setTemplateCategoryFilter] = useState<CronTemplateFilter>('all');\n\n const absorbCardClickJobIdRef = useRef<string | null>(null);\n\n const scheduleAbsorbNextMenuCardClick = useCallback((jobId: string) => {\n absorbCardClickJobIdRef.current = jobId;\n window.setTimeout(() => {\n if (absorbCardClickJobIdRef.current === jobId) {\n absorbCardClickJobIdRef.current = null;\n }\n }, 400);\n }, []);\n\n const hasElectronFolderPicker =\n typeof window !== 'undefined' && Boolean(window.electronAPI?.file?.openDirectory);\n\n const openNativeFolderPickerCron = useCallback(async (): Promise<string | null> => {\n const api = typeof window !== 'undefined' ? window.electronAPI?.file?.openDirectory : undefined;\n if (api) return api();\n return null;\n }, []);\n\n const onSelectTemplate = useCallback(\n (templateId: string) => {\n const ok = form.applyCronTemplate(templateId);\n if (ok) setTemplatePickerOpen(false);\n },\n [form],\n );\n\n const submitForm = async () => {\n if (!form.formName.trim()) {\n setError(c.nameRequired);\n return;\n }\n if (!form.formSchedule.trim() || !form.formMessage.trim()) {\n setError(c.scheduleRequired);\n return;\n }\n if (form.needsDeliveryChat && !form.formChatId.trim()) {\n setError(c.chatIdRequired);\n return;\n }\n\n form.setFormSubmitting(true);\n setError(null);\n try {\n const message = form.formMessage.trim();\n let delivery: CronDelivery;\n if (form.formSessionTarget === 'isolated' && form.formAgentLocalOnly) {\n delivery = { mode: 'none' };\n } else if (form.formChannel === 'local') {\n delivery = { mode: 'direct', channel: 'local' };\n } else {\n delivery = { mode: 'direct', channel: form.formChannel, to: form.formChatId.trim() };\n }\n\n const payload: CronPayload =\n form.formSessionTarget === 'isolated'\n ? {\n kind: 'agentTurn',\n message,\n ...(form.formModel.trim() ? { model: form.formModel.trim() } : {}),\n }\n : { kind: 'systemEvent', text: message };\n\n const modelTrimmed = form.formModel.trim();\n const agentIdTrim = form.formAgentId.trim().toLowerCase();\n const agentIdForEdit = form.formSessionTarget === 'main' ? null : agentIdTrim || null;\n const wdTrim = form.formWorkingDirectory.trim();\n const jobData = {\n name: form.formName.trim(),\n schedule: form.formSchedule.trim(),\n sessionTarget: form.formSessionTarget,\n model: form.formSessionTarget === 'isolated' && modelTrimmed ? modelTrimmed : undefined,\n delivery,\n payload,\n ...(form.formMode === 'edit'\n ? {\n agentId: agentIdForEdit,\n workingDirectory: form.formSessionTarget === 'isolated' ? wdTrim || null : null,\n }\n : {\n ...(form.formSessionTarget === 'isolated' && agentIdTrim ? { agentId: agentIdTrim } : {}),\n ...(form.formSessionTarget === 'isolated' && wdTrim ? { workingDirectory: wdTrim } : {}),\n }),\n };\n\n if (form.formMode === 'edit' && form.formJobId) {\n await updateJob(form.formJobId, jobData);\n } else {\n const { schedule: sched, agentId, workingDirectory, ...rest } = jobData;\n await addJob(sched, {\n ...rest,\n ...(agentId != null ? { agentId } : {}),\n ...(workingDirectory ? { workingDirectory } : {}),\n });\n }\n form.closeForm();\n await data.loadJobs();\n await data.loadAux();\n } catch (e) {\n setError(\n e instanceof Error\n ? e.message\n : form.formMode === 'edit'\n ? c.failedToUpdateJob\n : c.failedToCreateJob,\n );\n } finally {\n form.setFormSubmitting(false);\n }\n };\n\n const openDetail = async (job: CronJob) => {\n setDetailOpen(true);\n setDetailJob(job);\n setDetailLoading(true);\n setDetailHistory([]);\n try {\n const full = await getJob(job.id);\n if (full) {\n setDetailJob(full);\n setDetailHistory(await getHistory(job.id, 20));\n }\n } catch {\n /* keep partial */\n } finally {\n setDetailLoading(false);\n }\n };\n\n const onToggle = async (job: CronJob, enabled: boolean) => {\n try {\n await toggleJob(job.id, enabled);\n await data.loadJobs();\n await data.loadAux();\n } catch (e) {\n setError(e instanceof Error ? e.message : c.failedToToggleJob);\n }\n };\n\n const runConfirm = async () => {\n if (!confirmJobId || !confirmAction) return;\n const id = confirmJobId;\n const action = confirmAction;\n setConfirmOpen(false);\n setConfirmJobId(null);\n setConfirmAction(null);\n try {\n if (action === 'run') {\n await runJob(id);\n } else {\n await removeJob(id);\n if (detailJob?.id === id) {\n setDetailOpen(false);\n setDetailJob(null);\n }\n }\n await data.loadJobs();\n await data.loadAux();\n await data.loadRunHistoryOnly();\n } catch (e) {\n setError(e instanceof Error ? e.message : c.actionFailed);\n }\n };\n\n useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (e.key !== 'Escape') return;\n if (form.formOpen) form.closeForm();\n else if (detailOpen) {\n setDetailOpen(false);\n setDetailJob(null);\n }\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [form, detailOpen]);\n\n const statusLabels = useMemo(\n () => ({\n running: c.execStatusRunning,\n success: c.execStatusSuccess,\n failed: c.execStatusFailed,\n cancelled: c.execStatusCancelled,\n }),\n [c.execStatusCancelled, c.execStatusFailed, c.execStatusRunning, c.execStatusSuccess],\n );\n\n const sortedUserJobs = useMemo(() => sortJobsByCreated(data.userCronJobs, jobSort), [data.userCronJobs, jobSort]);\n const sortedSystemJobs = useMemo(() => sortJobsByCreated(data.systemCronJobs, jobSort), [data.systemCronJobs, jobSort]);\n\n const filteredRunHistory = useMemo(\n () => filterRunHistory(data.runHistory, historyRange, historyJobFilter, historyStatusFilter),\n [data.runHistory, historyRange, historyJobFilter, historyStatusFilter],\n );\n\n const scheduleBadgeLabels = c.scheduleBadge;\n\n const setPageHeader = usePageHeaderStore((s) => s.setPageHeader);\n const clearPageHeader = usePageHeaderStore((s) => s.clearPageHeader);\n const { pathname } = useLocation();\n const inSettingsShell = pathname.startsWith('/settings/');\n\n const cronHeaderEnd = useMemo(\n () => (\n <CronPageHeaderActions\n c={c}\n loading={data.loading}\n runHistoryLoading={data.runHistoryLoading}\n onRefresh={data.refreshAll}\n onOpenTemplatePicker={() => {\n setTemplateCategoryFilter('all');\n setTemplatePickerOpen(true);\n }}\n onAddJob={() => form.openForm()}\n />\n ),\n [c, data.loading, data.runHistoryLoading, data.refreshAll, form],\n );\n\n useLayoutEffect(() => {\n if (!hasToken || inSettingsShell) {\n clearPageHeader();\n return () => clearPageHeader();\n }\n setPageHeader({\n startExtra: null,\n main: null,\n end: cronHeaderEnd,\n });\n return () => clearPageHeader();\n }, [clearPageHeader, cronHeaderEnd, hasToken, inSettingsShell, setPageHeader]);\n\n if (!hasToken) {\n return (\n <div className=\"mx-auto w-full max-w-app-main px-4 py-16 text-center text-sm text-fg-muted sm:px-8\">{c.needToken}</div>\n );\n }\n\n return (\n <div className=\"flex min-h-0 min-w-0 flex-1 flex-col bg-surface-panel\">\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-6 sm:px-8\">\n {data.error ? (\n <div\n className=\"rounded-xl border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-800 dark:border-red-900/50 dark:bg-red-950/40 dark:text-red-200\"\n role=\"alert\"\n >\n {data.error}\n </div>\n ) : null}\n\n <header className=\"flex flex-col gap-4\">\n <div className=\"min-w-0\">\n <h1 className=\"text-xl font-semibold tracking-tight text-fg\">{c.title}</h1>\n <p className=\"mt-1 max-w-2xl text-sm text-fg-muted\">{c.subtitle}</p>\n </div>\n </header>\n\n {inSettingsShell ? (\n <div className=\"flex flex-wrap items-center justify-end gap-2 border-b border-edge-subtle pb-3 dark:border-edge-subtle\">\n {cronHeaderEnd}\n </div>\n ) : null}\n\n <CronMainToolbar\n c={c}\n mainTab={mainTab}\n onMainTabChange={setMainTab}\n jobSort={jobSort}\n onJobSortChange={setJobSort}\n historyRange={historyRange}\n onHistoryRangeChange={setHistoryRange}\n historyJobFilter={historyJobFilter}\n onHistoryJobFilterChange={setHistoryJobFilter}\n historyStatusFilter={historyStatusFilter}\n onHistoryStatusFilterChange={setHistoryStatusFilter}\n jobs={data.jobs}\n />\n\n {mainTab === 'myTasks' ? (\n <CronTasksPanel\n c={c}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n loading={data.loading}\n jobsCount={data.userCronJobs.length}\n sortedJobs={sortedUserJobs}\n templateCategoryFilter={templateCategoryFilter}\n onTemplateCategoryFilterChange={setTemplateCategoryFilter}\n onSelectTemplate={onSelectTemplate}\n keepAwake={keepAwakeHook.keepAwake}\n wakeSupported={keepAwakeHook.featureAvailable}\n onWakeUnsupportedClick={() => setError(c.wakeLockUnavailable)}\n onKeepAwakeToggle={() => keepAwakeHook.setKeepAwake((v) => !v)}\n absorbCardClickJobIdRef={absorbCardClickJobIdRef}\n scheduleAbsorbNextMenuCardClick={scheduleAbsorbNextMenuCardClick}\n onOpenDetail={(j) => void openDetail(j)}\n onToggle={(j, en) => void onToggle(j, en)}\n onEdit={(j) => form.openForm(j)}\n onAddJob={() => form.openForm()}\n onRunNow={(j) => {\n setConfirmAction('run');\n setConfirmJobId(j.id);\n setConfirmOpen(true);\n }}\n onDelete={(j) => {\n setConfirmAction('delete');\n setConfirmJobId(j.id);\n setConfirmOpen(true);\n }}\n />\n ) : mainTab === 'systemTasks' ? (\n <CronSystemTasksPanel\n c={c}\n language={language}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n loading={data.loading}\n sortedSystemJobs={sortedSystemJobs}\n heartbeat={data.heartbeatFromConfig}\n keepAwake={keepAwakeHook.keepAwake}\n wakeSupported={keepAwakeHook.featureAvailable}\n onWakeUnsupportedClick={() => setError(c.wakeLockUnavailable)}\n onKeepAwakeToggle={() => keepAwakeHook.setKeepAwake((v) => !v)}\n absorbCardClickJobIdRef={absorbCardClickJobIdRef}\n scheduleAbsorbNextMenuCardClick={scheduleAbsorbNextMenuCardClick}\n onOpenDetail={(j) => void openDetail(j)}\n onToggle={(j, en) => void onToggle(j, en)}\n onEdit={(j) => form.openForm(j)}\n onRunNow={(j) => {\n setConfirmAction('run');\n setConfirmJobId(j.id);\n setConfirmOpen(true);\n }}\n onDelete={(j) => {\n setConfirmAction('delete');\n setConfirmJobId(j.id);\n setConfirmOpen(true);\n }}\n />\n ) : (\n <CronRunHistorySection\n c={c}\n runHistoryLoading={data.runHistoryLoading}\n runHistory={data.runHistory}\n filteredRunHistory={filteredRunHistory}\n jobs={data.jobs}\n onRefreshHistory={() => void data.loadRunHistoryOnly()}\n onOpenJobDetail={(j) => void openDetail(j)}\n statusLabels={statusLabels}\n />\n )}\n </div>\n\n <CronJobFormDialog\n open={form.formOpen}\n onRequestClose={form.closeForm}\n c={c}\n chatM={chatM}\n agentsMessages={m.agentsSettings}\n isDark={isDark}\n channels={data.channels}\n sessionChatIds={form.sessionChatIds}\n cronAgentSelectOptions={form.cronAgentSelectOptions}\n hasElectronFolderPicker={hasElectronFolderPicker}\n openNativeFolderPicker={openNativeFolderPickerCron}\n applyWorkingDirectory={form.applyWorkingDirectory}\n wdModalOpen={form.formWdModalOpen}\n onWdModalOpenChange={form.setFormWdModalOpen}\n defaultModelResolver={defaultModelForForm}\n formMode={form.formMode}\n formJobId={form.formJobId}\n formName={form.formName}\n onFormNameChange={form.setFormName}\n formSchedule={form.formSchedule}\n onFormScheduleChange={form.setFormSchedule}\n formSubmitting={form.formSubmitting}\n formSessionTarget={form.formSessionTarget}\n onFormSessionTargetChange={form.handleFormSessionTargetChange}\n formAgentLocalOnly={form.formAgentLocalOnly}\n onFormAgentLocalOnlyChange={form.setFormAgentLocalOnly}\n formModel={form.formModel}\n onFormModelUserChange={form.handleFormModelUserChange}\n formAgentId={form.formAgentId}\n onFormAgentIdChange={form.setFormAgentId}\n formWorkingDirectory={form.formWorkingDirectory}\n onFormWorkingDirectoryChange={form.setFormWorkingDirectory}\n formChannel={form.formChannel}\n onFormChannelChange={form.handleFormChannelChange}\n formChatId={form.formChatId}\n onFormChatIdChange={form.setFormChatId}\n formMessage={form.formMessage}\n onFormMessageChange={form.setFormMessage}\n formMessageMdMode={form.formMessageMdMode}\n onSetMessageMdMode={form.setMessageMdMode}\n messageEditorNonce={form.messageEditorNonce}\n needsDeliveryChat={form.needsDeliveryChat}\n showChannelPicker={form.showChannelPicker}\n canSubmit={form.canSubmit}\n onSubmit={() => void submitForm()}\n onRefreshRecipients={form.refreshRecipientsList}\n />\n\n <CronTemplatePickerDialog\n open={templatePickerOpen}\n onOpenChange={(openNext) => {\n setTemplatePickerOpen(openNext);\n if (openNext) setTemplateCategoryFilter('all');\n }}\n c={c}\n localeTag={localeTag}\n scheduleBadgeLabels={scheduleBadgeLabels}\n categoryFilter={templateCategoryFilter}\n onCategoryFilterChange={setTemplateCategoryFilter}\n onSelectTemplate={onSelectTemplate}\n />\n\n <CronJobDetailDrawer\n open={detailOpen}\n onDismiss={() => {\n setDetailOpen(false);\n setDetailJob(null);\n }}\n detailJob={detailJob}\n detailLoading={detailLoading}\n detailHistory={detailHistory}\n c={c}\n chatWorkingDirNotSet={chatM.workingDirectory.notSet}\n statusLabels={statusLabels}\n />\n\n <CronConfirmActionDialog\n open={confirmOpen}\n onOpenChange={setConfirmOpen}\n action={confirmAction}\n c={c}\n onDismiss={() => {\n setConfirmOpen(false);\n setConfirmJobId(null);\n setConfirmAction(null);\n }}\n onConfirm={runConfirm}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|